/* ==========================================================================
   ATELIER OMOTESANDO LP - SP Styles (375px base)
   ========================================================================== */

/* ---------- Photo placeholder shared ---------- */
.p-labeled-section__photo > span,
.p-labeled-section__hero > span,
.p-photo-gallery__item span,
.p-photo-strip__item span,
.p-plan__card-photo span,
.p-footer__photo span {
	display: flex;
	align-items: center;
	width: 100%;
	height: 100%;
	font-size: 0.4rem;
	color: #393A34;
	letter-spacing: 0.1em;
	font-family: var(--font-en);
}

[class*="__photo"] img,
[class*="__hero"] img,
.p-photo-gallery__item img,
.p-photo-strip__item img,
.p-plan__card-photo img,
.p-concept__image img,
.p-footer__photo img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* ---------- BG movie layer ---------- */
.bg-movie {
	position: fixed;
	z-index: 0;
	inset: 0;
	width: 100%;
	height: 100%;
	overflow: hidden;
}

.bg-movie__image {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: 50% 30%;
	opacity: 0;
	transform: scale(1.15);
	transition: opacity 1.5s ease, transform 8s linear;
}

.bg-movie__image.is-active {
	opacity: 1;
	transform: scale(1);
}

/* ==========================================================================
   Header + Burger Menu
   ========================================================================== */
.c-site-header {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	margin: 0 auto;
	width: 100%;
	padding: 0.625rem;
	z-index: 220;
	/* background: rgba(243, 243, 241, 0.58); */
	transition: background-color 0.25s ease;
}

@media (max-width: 1023.98px) {
	.c-site-header {
		transform: translateY(-100%);
		opacity: 0;
		pointer-events: none;
		transition:
			transform 0.4s ease,
			opacity 0.3s ease,
			background-color 0.25s ease;
	}

	.c-site-header.is-header-visible {
		transform: translateY(0);
		opacity: 1;
		pointer-events: auto;
		background-color: rgba(255, 255, 255, 0.7);
	}
}

.c-site-header__inner {
	height: 2.8125rem;
	display: flex;
	align-items: center;
	justify-content: center;
	position: relative;
}

.c-site-header__logo {
	position: relative;
	display: block;
	line-height: 0;
}

.c-site-header__logo-image {
	display: block;
	width: auto;
	max-height: 2.8125rem;
	height: auto;
}

.c-site-header__logo-image--black {
	display: none;
}

body.is-menu-open .c-site-header__logo-image--default {
	display: none;
}

body.is-menu-open .c-site-header__logo-image--black {
	display: block;
}

@media (max-width: 1023.98px) {
	body.is-menu-open .c-site-header__inner {
		justify-content: center;
	}
}

.c-site-header__actions {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	position: absolute;
	top: 50%;
	right: 0;
	transform: translateY(-50%);
}

.c-site-header__icon-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.375rem;
	height: 1.375rem;
	padding: 0;
	border: none;
	background: transparent;
	color: #393a34;
}

.c-site-header__icon-btn svg {
	display: block;
	width: 100%;
	height: 100%;
}

.c-site-header__menu-btn {
	flex-direction: column;
	gap: 0.25rem;
}

.c-site-header__menu-line {
	display: block;
	width: 1rem;
	height: 1px;
	background: #000000;
	transform-origin: center;
	transition: transform 0.25s ease, opacity 0.2s ease;
}

body.is-menu-open .c-site-header__menu-line {
	background: #393A34;
}

body.is-menu-open .c-site-header__icon-btn--map  {
	display: none;
}

body.is-menu-open .c-site-header__menu-line:nth-child(1) {
	transform: translateY(0.3125rem) rotate(45deg);
}

body.is-menu-open .c-site-header__menu-line:nth-child(2) {
	opacity: 0;
}

body.is-menu-open .c-site-header__menu-line:nth-child(3) {
	transform: translateY(-0.3125rem) rotate(-45deg);
}

.c-site-menu {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	margin: 0 auto;
	width: 100%;
	height: 100dvh;
	z-index: 210;
	background: #fff;
	overflow: hidden;
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.3s ease;
}

.c-site-menu[hidden] {
	display: none;
}

.c-site-menu.is-open {
	opacity: 1;
	pointer-events: auto;
}

.c-site-menu__panel {
	height: 100dvh;
	padding: 5.25rem 1.1875rem 1.75rem;
	background: #fff;
	display: flex;
	flex-direction: column;
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
	overscroll-behavior-y: contain;
}

.c-site-menu__nav {
	padding-left: 1.3125rem;
}

.c-site-menu__list {
	display: grid;
	gap: 1.0rem;
}

.c-site-menu__link {
	display: inline-flex;
	flex-direction: column;
	color: #2e2e2a;
}

.c-site-menu__en {
	font-family: var(--font-forum);
	font-size: 1.05rem;
	letter-spacing: 0.2em;
	line-height: 1;
}

.c-site-menu__ja {
	margin-top: 0.175rem;
	font-family: var(--font-ja);
	font-size: 0.625rem;
	color: #696969;
	letter-spacing: 0.18em;
	line-height: 1.2;
}

.c-site-menu__cta {
	margin-top: auto;
	display: grid;
	justify-items: center;
	align-content: center;
	flex-shrink: 0;
	position: relative;
	height: 2.875rem;
	border-radius: 999px;
	background: var(--color-accent);
	color: #fff;
	text-align: center;
	margin-top: 2rem;
}

.c-site-menu__cta-main {
	font-family: var(--font-ja);
	font-size: 0.875rem;
	letter-spacing: 0.16em;
	line-height: 1.1;
}

.c-site-menu__cta-sub {
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	letter-spacing: 0.16em;
	line-height: 1.1;
	margin-top: 0.125rem;
}

.c-site-menu__cta-arrow {
	position: absolute;
	right: 0.9375rem;
	top: 50%;
	transform: translateY(-50%);
	font-size: 1.625rem;
	line-height: 1;
}

.c-fixed-cta {
	position: fixed;
	left: 50%;
	bottom: calc(env(safe-area-inset-bottom, 0px) + 0.5rem);
	transform: translateX(-50%);
	display: grid;
	place-items: center;
	width: min(calc(100% - 6.5rem), 16rem);
	min-height: 2.875rem;
	padding: 0.4375rem 2.5rem 0.4375rem;
	border-radius: 999px;
	background: #C8B682;
	color: #fff;
	text-align: center;
	z-index: 205;
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition:
		opacity 0.35s ease,
		transform 0.35s ease,
		visibility 0s linear 0.35s;
}

.c-fixed-cta.is-visible {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	transition:
		opacity 0.35s ease,
		transform 0.35s ease,
		visibility 0s linear 0s;
}

body.is-menu-open .c-fixed-cta {
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
}

.c-fixed-cta__text {
	display: block;
}

.c-fixed-cta__main,
.c-fixed-cta__sub {
	display: block;
	font-family: var(--font-ja);
	font-weight: 400;
	letter-spacing: 0.15rem;
	line-height: 0.9375rem;
}

.c-fixed-cta__main {
	font-size: 0.75rem;
}

.c-fixed-cta__sub {
	font-size: var(--font-size-xs);
}

.c-fixed-cta__arrow {
	position: absolute;
	right: 0.9375rem;
	top: 50%;
	width: 0.5rem;
	height: 0.5rem;
	border-top: 1px solid #fff;
	border-right: 1px solid #fff;
	transform: translateY(-50%) rotate(45deg);
}

@media (max-width: 1023.98px) {
	body.is-menu-open {
		overflow: hidden;
	}
}

/* ==========================================================================
   Modal
   ========================================================================== */
.c-modal {
	position: fixed;
	inset: 0;
	z-index: 300;
	display: flex;
	align-items: flex-start;
	justify-content: center;
	padding: 0;
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.3s ease;
}

.c-modal[hidden] {
	display: none;
}

.c-modal.is-open {
	opacity: 1;
	pointer-events: auto;
}

.c-modal__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, 0.5);
}

.c-modal__frame {
	position: relative;
	width: 335px;
	max-width: calc(100vw - 2.5rem);
	margin-top: 3.875rem;
	padding: 1.6875rem 0 4.0625rem;
	background: rgba(255, 255, 255, 0);
}

.c-modal__dialog {
	position: relative;
	background: #fff;
	/* min-height: 31.3125rem; */
	max-height: calc(100dvh - 8rem);
	padding: 0;
	display: flex;
	flex-direction: column;
	overflow: visible;
}

.c-modal__scroll {
	flex: 1 1 auto;
	min-height: 0;
	overflow-x: hidden;
	overflow-y: auto;
	overscroll-behavior: contain;
	-webkit-overflow-scrolling: touch;
	padding: 1.875rem;
}

.c-modal__close {
	position: absolute;
	top: -0.375rem;
	right: -0.375rem;
	width: 1.4375rem;
	height: 1.4375rem;
	border: none;
	border-radius: 50%;
	background: #2e2e2a;
	color: #fff;
	font-size: 1.25rem;
	line-height: 1;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	z-index: 1;
}

.c-modal__title {
	font-family: var(--font-ja);
	font-size: 0.75rem;
	font-weight: 400;
	letter-spacing: 0.2em;
	line-height: 1.6667;
	margin: 0;
	text-align: center;
	color: #2e2e2a;
}

.c-modal__subtitle {
	margin-top: 0.625rem;
	font-family: var(--font-ja);
	font-size: 0.5625rem;
	letter-spacing: 0.18em;
	line-height: 2.8889;
	text-align: center;
	color: #2e2e2a;
}

.c-modal__divider {
	display: block;
	width: min(17.875rem, 100%);
	height: 1px;
	margin: 1.125rem auto 1.5rem;
	background: var(--color-accent);
}

.c-modal__body {
	font-family: var(--font-ja);
	font-size: 0.5625rem;
	line-height: 2;
	letter-spacing: -0.02em;
	color: #000;
	margin: 0;
	flex: 0 0 auto;
	overflow: visible;
	width: min(17.3125rem, 100%);
	margin-inline: auto;
	padding-right: 0;
}

.c-modal__body-copy {
	margin: 0;
}

.c-modal__body-copy + .c-modal__body-copy {
	margin-top: 1.4375rem;
}

body.is-modal-open {
	overflow: hidden;
}

/* PLAN modal variant */
/* Direction modal */
.c-modal--direction .c-modal__frame {
	padding: 0;
	background: transparent;
}

.c-modal--direction .c-modal__dialog {
	min-height: 0;
}

.c-modal--direction .c-modal__scroll {
	padding: 3.6875rem 1.875rem 3.625rem;
}

.c-modal__direction-en {
	font-family: var(--font-forum);
	font-size: 1.375rem;
	font-weight: 400;
	letter-spacing: 0.2em;
	line-height: 1;
	color: #2e2e2a;
	text-align: center;
	margin: 0;
}

.c-modal__direction-ja {
	font-family: var(--font-ja);
	font-size: 0.6875rem;
	letter-spacing: 0.2em;
	line-height: 1;
	color: #2e2e2a;
	text-align: center;
	margin: 0.3125rem 0 0;
}

.c-modal__direction-photo {
	width: 12.8125rem;
	aspect-ratio: 205 / 263;
	overflow: hidden;
	margin: 1.5rem auto 0;
}

.c-modal__direction-photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.c-modal__direction-role {
	font-family: var(--font-forum);
	font-size: var(--font-size-xs);
	letter-spacing: 0.2em;
	line-height: 1;
	color: #2e2e2a;
	text-align: center;
	margin: 1.5625rem 0 0;
}

.c-modal__direction-name {
	font-family: var(--font-forum);
	font-size: 0.875rem;
	letter-spacing: 0.2em;
	line-height: 1.25rem;
	color: #2e2e2a;
	text-align: center;
	margin: 0.25rem 0 0;
}

.c-modal__body--direction {
	letter-spacing: 0.2em;
	text-align: center;
	width: auto;
	flex: 0 0 auto;
	overflow: visible;
	margin: 1.0625rem 0 0;
}

.c-modal--plan .c-modal__frame {
	width: 335px;
	max-width: calc(100vw - 2.5rem);
	margin-top: 3.5rem;
	padding: 0;
	background: transparent;
}

.c-modal--plan .c-modal__dialog {
	min-height: 0;
	max-height: calc(100dvh - 7rem);
	height: min(31.3125rem, calc(100dvh - 7rem));
	padding: 0;
	display: block;
}

.c-modal--plan .c-modal__scroll {
	height: 100%;
	padding: 1.125rem;
}

.c-modal__close--plan {
	top: -0.375rem;
	right: -0.375rem;
	width: 1.4375rem;
	height: 1.4375rem;
	font-size: 1rem;
}

.p-plan-modal__header {
	position: relative;
	padding-left: 0.5625rem;
	margin-bottom: 0.9375rem;
}

.p-plan-modal__header::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0;
	width: 2px;
	height: 1.25rem;
	background: #393a34;
}

.p-plan-modal__heading-row {
	display: flex;
	align-items: baseline;
	gap: 0.5rem;
}

.p-plan-modal__plan-no {
	display: block;
	position: relative;
	top: 0.3125rem;
	font-family: var(--font-forum);
	font-size: 0.625rem;
	line-height: 1;
	vertical-align: baseline;
	letter-spacing: 0.1em;
	color: #2e2e2a;
}

.p-plan-modal__title {
	display: block;
	font-family: var(--font-forum);
	font-size: 1.125rem;
	line-height: 1;
	font-weight: 400;
	letter-spacing: 0;
	vertical-align: baseline;
	color: #2e2e2a;
}

.p-plan-modal__title-sub {
	font-size: 0.625rem;
	letter-spacing: 0.1em;
}

.p-plan-modal__summary-row {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 0.75rem;
	margin-top: 0.75rem;
}

.p-plan-modal__subtitle {
	margin-top: 0;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	line-height: 2.2222;
	color: #2e2e2a;
	white-space: nowrap;
}

.p-plan-modal__price {
	margin-left: auto;
	flex: 0 0 auto;
	font-family: var(--font-forum);
	font-size: 1.375rem;
	line-height: 1;
	letter-spacing: 0;
	color: #1a1a1a;
}

.p-plan-modal__price span {
	font-family: var(--font-ja);
	font-size: 0.5rem;
	margin-left: 0;
}

.p-plan-modal__feature-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 0.625rem 0.375rem;
	margin-bottom: 0.6875rem;
}

.p-plan-modal__feature-grid li {
	text-align: center;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	line-height: 1.44;
	color: #2e2e2a;
}

.p-plan-modal__icon {
	width: 2.5rem;
	height: 2.5rem;
	margin: 0 auto 0.3125rem;
	display: flex;
	align-items: center;
	justify-content: center;
}

.p-plan-modal__icon img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.p-plan-modal__list-wrap {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 0.625rem;
}

.p-plan-modal__list li {
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	line-height: 1.67;
	color: #000;
}

.p-plan-modal__list li::before {
	content: "・";
}

.p-plan-modal__line {
	display: block;
	height: 1px;
	background: #2e2e2a;
	margin: 0.6875rem 0 0.625rem;
}

.p-plan-modal__note {
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	line-height: 1.67;
	color: #2e2e2a;
}

/* ==========================================================================
   1. FV (First View)
   ========================================================================== */
.p-fv {
	position: relative;
	width: 100%;
	min-height: 100vh;
	height: 100svh;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
}

@supports (height: 100dvh) {
	.p-fv {
		height: 100dvh;
	}
}

.p-fv__content {
	position: relative;
	z-index: 2;
	text-align: center;
	margin-top: 6rem;
}

.p-fv__title {
	font-family: var(--font-forum);
	font-size: 1.875rem;
	font-weight: 400;
	color: #fff;
	letter-spacing: 0.375rem;
	line-height: 1;
	text-shadow: 0 0 10px rgba(0, 0, 0, 0.25);
}

.p-fv__logo {
	margin-top: 1rem;
	display: flex;
	justify-content: center;
}

.p-fv__logo img {
	width: 9.3rem;
	height: auto;
	filter: brightness(0) invert(1) drop-shadow(0 0 4px rgba(0, 0, 0, 0.25));
}

.p-fv__lead {
	margin-top: 1.0625rem;
	color: #fff;
	text-align: center;
	text-shadow: 0 0 3.6px rgba(0, 0, 0, 0.5);
	font-family: "Noto Sans JP", sans-serif;
	font-size: 0.625rem;
	font-weight: 400;
	line-height: 1.25rem;
	letter-spacing: 0.125rem;
}

.p-fv__scroll {
	position: absolute;
	bottom: 1rem;
	left: 50%;
	transform: translateX(-50%);
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.25rem;
	z-index: 2;
}

.p-fv__scroll img {
	height: 2rem;
	width: auto;
}

/* ==========================================================================
   2. CONCEPT
   ========================================================================== */
/* sticky--concept: concept セクションをピン固定して次セクションが下からスライドアップ */
.sticky--concept .sticky__layer--sticky {
	background-color: transparent;
	/* background: var(--color-bg-white); */
}

.p-concept {
	position: relative;
	padding: 3.875rem var(--content-padding) 4rem;
	background: transparent;
	/* background-image:
		linear-gradient(to bottom, rgba(255, 255, 255, 0) 74%, #fff 95%),
		url("../images/concept-bg.webp"); */
	background-size: cover, cover;
	background-repeat: no-repeat, no-repeat;
	background-position: center top, center top;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
}

/* p-signatures-block: concept 下からスライドアップするカードエフェクト */
.p-signatures-block-wrap {
	position: relative;
	z-index: 2; /* concept の sticky layer より上に表示 */
}

.p-signatures-block-wrap::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: -3.875rem;
	height: 3.875rem;
	background: linear-gradient(
		180deg,
		rgba(255, 255, 255, 0) 0%,
		rgba(255, 255, 255, 0.15) 28%,
		rgba(255, 255, 255, 0.45) 52%,
		rgba(255, 255, 255, 0.78) 78%,
		#fff 100%
	);
	pointer-events: none;
	z-index: 0;
}

.p-signatures-block {
	position: relative;
	z-index: 1;
	background: var(--color-bg-white);
	/* border-radius: 1rem 1rem 0 0; */
	overflow: clip;
}

.p-concept__panel {
	position: relative;
	z-index: 1;
	width: 100%;
	max-height: 100%;
	padding: 2.6875rem 1.375rem 2.8125rem;
	background: rgba(255, 255, 255, 0.86);
	text-align: center;
	display: flex;
	flex-direction: column;
	align-items: center;
}

.p-concept__header {
	margin-bottom: 1.5rem;
}

.p-concept__header-en {
	font-family: var(--font-forum);
	font-size: 1.375rem;
	font-weight: 400;
	color: #2e2e2a;
	letter-spacing: 0.2em;
	line-height: 1;
	text-align: center;
}

.p-concept__header-ja {
	display: block;
	font-family: var(--font-ja);
	font-size: 0.6875rem;
	font-weight: 400;
	color: #2e2e2a;
	letter-spacing: 0.2em;
	line-height: 1.5;
	margin-top: 0.5rem;
	text-align: center;
}

.p-concept__catch {
	font-family: var(--font-ja-serif);
	font-size: 0.75rem;
	font-weight: 400;
	color: #2e2e2a;
	letter-spacing: 0.2em;
	line-height: 1.667;
	text-align: center;
	margin-bottom: 0.75rem;
}

.p-concept__subtitle {
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	font-weight: 400;
	color: #2e2e2a;
	letter-spacing: 0.2em;
	line-height: 2.222;
	text-align: center;
	margin-bottom: 1.125rem;
}

.p-concept__image {
	width: min(12.8125rem, 100%);
	aspect-ratio: 205 / 239;
	background: #d8d8d6;
	margin: 0 auto 1rem;
	flex-shrink: 1;
	min-height: 0;
	overflow: hidden;
}

.p-concept__body {
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	font-weight: 400;
	color: #2e2e2a;
	letter-spacing: 0.2em;
	line-height: 2.222;
	text-align: center;
	margin-bottom: 1.3125rem;
}

.p-concept__more {
	display: inline-flex;
	vertical-align: bottom;
	align-items: center;
	justify-content: center;
	gap: 0.625rem;
	min-width: 5rem;
	height: 1.25rem;
	padding-left: 1.4375rem;
	padding-right: 0.375rem;
	border: 1px solid #2e2e2a;
	border-radius: 999px;
	color: #2e2e2a;
	text-decoration: none;
}

.p-concept__more-label {
	font-family: var(--font-forum);
	font-size: var(--font-size-xs);
	font-weight: 400;
	letter-spacing: 0.2em;
	line-height: 1;
}

.p-concept__more-arrow {
	font-family: var(--font-en-serif);
	font-size: 0.5875rem;
	line-height: 1;
}

.p-grand-open-campaign {
	position: relative;
	display: block;
	width: 100%;
	margin-top: 3rem;
	padding: 0.875rem 0;
	background: var(--color-text-dark);
	color: var(--color-text-white);
	font-family: var(--font-forum);
	text-align: center;
	text-decoration: none;
	overflow: hidden;
	flex-shrink: 0;
	cursor: pointer;
}

.p-grand-open-campaign__title {
	font-size: 1.125rem;
	font-weight: 400;
	line-height: 1.1;
	letter-spacing: 0.2em;
	white-space: nowrap;
}

.p-grand-open-campaign__offer {
	display: inline-flex;
	align-items: baseline;
	justify-content: center;
	min-height: 2.25rem;
	margin-top: 0.625rem;
	padding: 0.1875rem 0.875rem 0.3125rem;
	border-radius: 999px;
	background: var(--color-accent);
	line-height: 1;
	white-space: nowrap;
}

.p-grand-open-campaign__offer-sub {
	font-size: 0.9375rem;
	font-weight: 400;
}

.p-grand-open-campaign__offer-main {
	font-size: 1.75rem;
	font-weight: 400;
	line-height: 0.9;
}

.p-grand-open-campaign__offer-unit {
	font-size: 1.1875rem;
	font-weight: 400;
}

.p-grand-open-campaign__offer-sub + .p-grand-open-campaign__offer-main,
.p-grand-open-campaign__offer-unit + .p-grand-open-campaign__offer-sub {
	margin-left: 0.25rem;
}

.p-grand-open-campaign__date {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.25rem;
	margin-top: 0.625rem;
	font-weight: 400;
	line-height: 1;
	white-space: nowrap;
}

.p-grand-open-campaign__year {
	font-size: 0.75rem;
	letter-spacing: 0.2em;
}

.p-grand-open-campaign__day {
	font-size: 1.375rem;
	letter-spacing: 0.1em;
}

.p-grand-open-campaign__week {
	display: inline-flex;
	justify-content: center;
	min-width: 1.625rem;
	height: 1rem;
	margin-left: -0.125rem;
	border: 1px solid currentColor;
	border-radius: 0.1875rem;
	font-size: 0.8125rem;
	line-height: 1;
}

.p-grand-open-campaign__dash {
	margin: 0 0.125rem;
	font-size: 1.375rem;
	line-height: 1;
}

.p-grand-open-campaign__arrow {
	position: absolute;
	right: 0.875rem;
	bottom: 1.0625rem;
	width: 0.4375rem;
	height: 0.4375rem;
	border-top: 1px solid currentColor;
	border-right: 1px solid currentColor;
	transform: rotate(45deg);
}

@media (max-width: 350px) {
	.p-grand-open-campaign {
		height: 7rem;
		padding-top: 0.75rem;
	}

	.p-grand-open-campaign__title {
		font-size: 1rem;
	}

	.p-grand-open-campaign__offer {
		width: calc(100% - 3rem);
		margin-top: 0.5625rem;
		padding-left: 0.625rem;
		padding-right: 0.625rem;
	}

	.p-grand-open-campaign__offer-sub {
		font-size: 0.8125rem;
	}

	.p-grand-open-campaign__offer-main {
		font-size: 1.5rem;
	}

	.p-grand-open-campaign__offer-unit {
		font-size: 1rem;
	}

	.p-grand-open-campaign__date {
		gap: 0.1875rem;
		margin-top: 0.5625rem;
	}

	.p-grand-open-campaign__year {
		margin-right: 0.3125rem;
		font-size: 0.6875rem;
	}

	.p-grand-open-campaign__day,
	.p-grand-open-campaign__dash {
		font-size: 1.1875rem;
	}

	.p-grand-open-campaign__week {
		min-width: 1.4375rem;
		height: 0.9375rem;
		font-size: 0.6875rem;
	}
}

.p-campaign-modal__header {
	text-align: center;
}

.p-campaign-modal__title {
	display: flex;
	flex-direction: column;
	font-family: var(--font-forum);
	font-size: 1.375rem;
	font-weight: 400;
	line-height: 1.318;
	letter-spacing: 0.2em;
	color: #2e2e2a;
}

.p-campaign-modal__subtitle {
	margin-top: 0;
	font-family: var(--font-ja);
	font-size: 0.6875rem;
	font-weight: 400;
	line-height: 1.5;
	letter-spacing: 0.2em;
	color: #2e2e2a;
}

.p-campaign-modal__date {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.25rem;
	margin-top: 1.875rem;
	font-family: var(--font-forum);
	line-height: 1;
	color: #000;
	white-space: nowrap;
}

.p-campaign-modal__year {
	margin-right: 0.375rem;
	font-size: 0.75rem;
	letter-spacing: 0.2em;
}

.p-campaign-modal__day {
	font-size: 1.375rem;
	letter-spacing: 0.1em;
}

.p-campaign-modal__week {
	display: inline-flex;
	justify-content: center;
	min-width: 1.625rem;
	height: 1rem;
	margin-left: -0.125rem;
	border: 1px solid currentColor;
	border-radius: 0.1875rem;
	font-size: 0.8125rem;
	line-height: 1;
}

.p-campaign-modal__dash {
	margin-inline: 0.125rem;
	font-size: 1.375rem;
	line-height: 1;
}

.p-campaign-modal__section {
	margin-top: 2.4375rem;
	text-align: center;
}

.p-campaign-modal__section--free {
	margin-top: 2.875rem;
}

.p-campaign-modal__label {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.1875rem;
	font-family: var(--font-forum);
	font-size: 1.125rem;
	font-weight: 400;
	line-height: 1;
	letter-spacing: 0.1em;
	color: var(--color-accent);
}

.p-campaign-modal__label::before,
.p-campaign-modal__label::after {
	content: "";
	position: absolute;
	left: 0;
	width: 100%;
	height: 1px;
	background: var(--color-accent);
}

.p-campaign-modal__label::before {
	top: -0.6875rem;
}

.p-campaign-modal__label::after {
	bottom: -0.6875rem;
}

.p-campaign-modal__label span {
	font-size: 0.75rem;
	letter-spacing: 0.1em;
}

.p-campaign-modal__lead {
	margin-top: 1.25rem;
	font-family: var(--font-ja);
	font-size: 0.6875rem;
	font-weight: 400;
	line-height: 1.5;
	letter-spacing: 0.1em;
	color: #000;
}

.p-campaign-modal__offer--discount {
	display: flex;
	align-items: center;
	justify-content: center;
	margin-top: 0.25rem;
	color: #000;
}

.p-campaign-modal__discount {
	display: flex;
	align-items: baseline;
	justify-content: center;
	font-family: var(--font-forum);
	line-height: 1;
	white-space: nowrap;
}

.p-campaign-modal__discount-dress {
	font-size: 1.5625rem;
}

.p-campaign-modal__discount-number {
	margin-left: 0.3875rem;
	font-size: 3.4875rem;
	letter-spacing: -0.03em;
}

.p-campaign-modal__discount-unit {
	font-size: 2.5rem;
}

.p-campaign-modal__badge {
	display: inline-flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	width: 3.125rem;
	height: 3.125rem;
	margin-left: 0.4875rem;
	border-radius: 50%;
	background: #000;
	color: #fff;
	font-family: var(--font-ja);
	font-size: 0.6875rem;
	font-weight: 500;
	line-height: 1.25;
	letter-spacing: 0.02em;
}

.p-campaign-modal__badge-row {
	display: inline-flex;
	align-items: baseline;
	justify-content: center;
	white-space: nowrap;
}

.p-campaign-modal__badge-row span {
	font-size: 0.875rem;
}

.p-campaign-modal__free {
	margin-top: 0.625rem;
	font-family: var(--font-forum);
	font-size: 2.744125rem;
	line-height: 1.05;
	color: #000;
	white-space: nowrap;
}

.p-campaign-modal__free-number {
	font-size: 3.2014375rem;
}

.p-campaign-modal__free-unit {
	font-size: 1.829375rem;
}

.p-campaign-modal__condition {
	margin-top: 0.5625rem;
	font-family: var(--font-ja);
	font-size: 0.6875rem;
	font-weight: 400;
	line-height: 1.5;
	letter-spacing: 0.1em;
	color: #000;
	white-space: nowrap;
}

.p-campaign-modal__note {
	margin-top: 2.375rem;
	font-family: var(--font-ja);
	font-size: 0.625rem;
	font-weight: 400;
	line-height: 2;
	letter-spacing: 0.15em;
	color: #2e2e2a;
}

.p-campaign-modal__note li::before {
	content: "・";
}

@media (max-width: 350px) {
	.p-campaign-modal__discount-number {
		font-size: 3rem;
	}

	.p-campaign-modal__discount-unit {
		font-size: 2.125rem;
	}

	.p-campaign-modal__free {
		font-size: 2.25rem;
	}

	.p-campaign-modal__free-number {
		font-size: 2.75rem;
	}

	.p-campaign-modal__free-unit {
		font-size: 1.5rem;
	}

	.p-campaign-modal__condition {
		font-size: 0.625rem;
		letter-spacing: 0.06em;
	}
}

/* ==========================================================================
   3. OUR 5 SIGNATURES (Section Divider)
   ========================================================================== */
.p-section-divider {
	padding: 1.5rem var(--content-padding);
	text-align: center;
	background: transparent;
}

.p-section-divider__en {
	font-family: var(--font-forum);
	font-size: 1.375rem;
	font-weight: 400;
	color: var(--color-text-dark);
	letter-spacing: 0.2em;
}

.p-section-divider__ja {
	display: block;
	font-family: var(--font-ja);
	font-size: 0.6875rem;
	color: var(--color-text-dark);
	letter-spacing: 0.2em;
	margin-top: 0.125rem;
}

/* ==========================================================================
   4-8. Labeled Group (共通サイドバー + 5セクション)
   ========================================================================== */
.p-labeled-group {
	display: flex;
	width: 100%;
}

.p-labeled-group__sidebar {
	width: 40px;
	flex-shrink: 0;
	background: #393a34;
	transition: background-color 0.3s ease;
}

.p-labeled-group__sidebar-inner {
	position: -webkit-sticky;
	position: sticky;
	top: 0;
	height: 100dvh;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: space-between;
	padding: 5.4375rem 0 1.75rem;
}

.p-labeled-group__sidebar-title {
	font-family: var(--font-forum);
	font-size: 0.9375rem;
	font-weight: 400;
	color: #fff;
	letter-spacing: 0.2em;
	writing-mode: vertical-rl;
	text-orientation: mixed;
	white-space: nowrap;
	transition: opacity 0.3s ease;
}

.p-labeled-group__sidebar-title-sub {
	font-size: 0.6875rem;
	letter-spacing: 0.1em;
	padding-top: 0.625rem;
}

/* Dot navigation */
.p-labeled-group__nav {
	display: block;
}

.p-labeled-group__nav-list {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.5625rem;
	list-style: none;
	margin: 0;
	padding: 0;
}

.p-labeled-group__nav-item {
	line-height: 0;
}

.p-labeled-group__dot {
	display: block;
	width: 0.5rem;
	height: 0.5rem;
	position: relative;
}

.p-labeled-group__dot span {
	display: block;
	width: 0.5rem;
	height: 0.5rem;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.4);
	transition: background 0.3s ease;
}

.p-labeled-group__dot.is-active span {
	background: #fff;
}

.p-labeled-group__body {
	flex: 1;
	min-width: 0;
}

.p-labeled-group__stage {
	display: none;
}

.p-labeled-panel {
	position: relative;
	z-index: 1;
	scroll-margin-top: 40vh;
}

#hannam {
	z-index: 0;
}

/* ==========================================================================
   Sticky parallax (#hannam)
   ========================================================================== */
:root {
	--svh: 1svh;
}

.sticky {
	display: grid;
	grid-auto-rows: 1fr;
	grid-template-areas: "sticky_content";
	grid-template-columns: 1fr;
	grid-template-rows: auto;
	position: relative;
	isolation: isolate;
	--sticky-under-next-distance: calc(100 * var(--svh));
}

.sticky__layer {
	align-self: start;
	grid-area: sticky_content;
	min-width: 0;
	position: relative;
}

.sticky__layer--sticky {
	contain: content;
	position: -webkit-sticky;
	position: sticky;
	top: 0;
	z-index: 0;
	-webkit-transform: translateZ(0);
	transform: translateZ(0);
}

.sticky__layer--scroll {
	z-index: 1;
}

.sticky__spacer {
	height: calc(100 * var(--svh));
}

.sticky--under-next {
	margin-bottom: calc(var(--sticky-under-next-distance) * -1);
	position: relative;
}

.sticky--under-next::after {
	content: "";
	display: block;
	height: var(--sticky-under-next-distance);
}


.sticky--full-height,
.sticky--full-height .sticky__layer {
	min-height: calc(100 * var(--svh));
}

.sticky--full-height .sticky__layer--sticky {
	height: calc(100 * var(--svh));
	overflow: clip;
}

@supports (height: 100svh) {
	.sticky {
		--sticky-under-next-distance: 100svh;
	}

	.sticky__spacer {
		height: 100svh;
	}

	.sticky__layer--sticky {
		height: 100svh;
	}
}

@media (max-width: 1023.98px) {
	.p-labeled-group__sidebar-inner {
		height: calc(100 * var(--svh));
	}

	.p-labeled-panel .sticky__spacer {
		height: calc(100 * var(--svh));
	}

	.p-labeled-panel .sticky__layer--sticky {
		top: 0;
		height: calc(100 * var(--svh));
	}

	.p-labeled-panel .sticky {
		--sticky-under-next-distance: calc(100 * var(--svh));
	}
}

/* Shared Sticky Stage (SP/PC 共通) */
.p-labeled-group.is-shared-sticky .p-labeled-group__body {
	position: relative;
}

.p-labeled-group.is-shared-sticky .p-labeled-group__stage {
	display: block;
	position: -webkit-sticky;
	position: sticky;
	top: 0;
	height: calc(100 * var(--svh));
	margin-bottom: calc(-100 * var(--svh));
	z-index: 0;
	pointer-events: none;
}

.p-labeled-group.is-shared-sticky .p-labeled-group__stage-inner {
	position: relative;
	height: 100%;
	overflow: hidden;
}

.p-labeled-group.is-shared-sticky .p-labeled-group__stage-item {
	position: absolute;
	inset: 0;
	z-index: 0;
	opacity: 0;
	visibility: hidden;
	transition:
		opacity 0.35s ease,
		visibility 0s linear 0.55s;
}

.p-labeled-group.is-shared-sticky .p-labeled-group__stage-item.is-active {
	z-index: 1;
	opacity: 1;
	visibility: visible;
	transition:
		opacity 0.55s ease,
		visibility 0s linear 0s;
}

.p-labeled-group.is-shared-sticky .p-labeled-group__stage-item .sticky__layer--sticky {
	display: block;
	position: relative;
	top: auto;
	height: 100%;
	contain: none;
	-webkit-transform: none;
	transform: none;
}

.p-labeled-group.is-shared-sticky .p-labeled-panel .sticky {
	display: block;
	margin-bottom: 0;
}

.p-labeled-group.is-shared-sticky .p-labeled-panel .sticky::after {
	display: none;
}

.p-labeled-group.is-shared-sticky .p-labeled-panel .sticky__layer {
	display: block;
}

.p-labeled-group.is-shared-sticky .p-labeled-panel .sticky__layer--sticky {
	display: none;
}

.p-labeled-group.is-shared-sticky .p-labeled-panel .sticky__layer--scroll {
	position: relative;
	z-index: 1;
}

.p-labeled-group.is-shared-sticky .p-labeled-panel .sticky__spacer {
	height: calc(100 * var(--svh));
}

.p-labeled-group.is-shared-sticky .p-labeled-group__stage-item.has-sidebar-fade .p-labeled-section__hero-overlay {
	opacity: 0;
	transition: opacity 0.9s ease;
}

.p-labeled-group.is-shared-sticky .p-labeled-group__stage-item.has-sidebar-fade .p-labeled-section__hero-copy {
	opacity: 0;
	transform: translate3d(0, 1.5rem, 0);
	transition:
		opacity 0.9s ease 0.14s,
		transform 0.9s ease 0.14s;
	will-change: opacity, transform;
}

.p-labeled-group.is-shared-sticky .p-labeled-group__stage-item.has-sidebar-fade.is-fade-visible .p-labeled-section__hero-overlay,
.p-labeled-group.is-shared-sticky .p-labeled-group__stage-item.has-sidebar-fade.is-fade-visible .p-labeled-section__hero-copy {
	opacity: 1;
}

.p-labeled-group.is-shared-sticky .p-labeled-group__stage-item.has-sidebar-fade.is-fade-visible .p-labeled-section__hero-copy {
	transform: translate3d(0, 0, 0);
}

@media (prefers-reduced-motion: reduce) {
	.p-labeled-group.is-shared-sticky .p-labeled-group__stage-item,
	.p-labeled-group.is-shared-sticky .p-labeled-group__stage-item.is-active,
	.p-labeled-group.is-shared-sticky .p-labeled-group__stage-item.has-sidebar-fade .p-labeled-section__hero-overlay,
	.p-labeled-group.is-shared-sticky .p-labeled-group__stage-item.has-sidebar-fade .p-labeled-section__hero-copy {
		transition: none;
	}
}

@supports (-webkit-touch-callout: none) {
	/* iOS Safari: sticky と contain の相性対策（iPad含む全iOS端末） */
	.sticky__layer--sticky {
		contain: none;
	}
}


/* Hero block (top image per section) */
.p-labeled-section__hero {
	width: 100%;
	aspect-ratio: 335 / 717;
	background-color: #cdcdcd;
	display: flex;
	align-items: center;
	justify-content: center;
	position: relative;
}

/* sticky 内の hero は画面1枚分に拡張 */
.sticky__layer--sticky .p-labeled-section__hero {
	aspect-ratio: auto;
	height: 100%;
}

.p-labeled-section__hero-text {
	font-family: var(--font-ja);
	font-size: 0.625rem;
	font-weight: 400;
	color: var(--color-text-dark);
	letter-spacing: 0.15em;
	line-height: 1.6;
	padding: 2rem 1rem;
	text-align: center;
}

[class*="__hero"].p-labeled-section__hero-media {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}



/* Content below hero */
.p-labeled-section__content {
	padding: 1.25rem 0.75rem 1.5rem;
	background: var(--color-bg-white);
}

.p-labeled-section__lead {
	font-family: var(--font-ja);
	font-size: 0.625rem;
	color: var(--color-text-medium);
	letter-spacing: 0.2em;
	text-align: center;
	margin-bottom: 1rem;
}

.p-labeled-section__desc {
	font-family: var(--font-ja);
	font-size: 0.625rem;
	font-weight: 300;
	color: var(--color-text-medium);
	letter-spacing: 0.15em;
	line-height: 2;
	margin-bottom: 1.25rem;
}

/* Gallery grids inside labeled sections */
.p-labeled-section__gallery {
	display: grid;
	gap: 3px;
}

.p-labeled-section__gallery--2col {
	grid-template-columns: repeat(2, 1fr);
}

.p-labeled-section__gallery--mixed {
	display: grid;
	grid-template-columns: 1.35fr 1fr;
	padding: 0.5rem;
	background: var(--color-bg-white);
}

.p-labeled-section__gallery--mixed > * {
	min-width: 0;
}

.p-labeled-section__photo {
	background: #ffffff;
	aspect-ratio: 4 / 3;
}

.p-labeled-section__photo img {
	width: 100%;
	height: 100%;
	display: block;
	object-fit: cover;
}

.p-labeled-section__photo--large {
	aspect-ratio: 254 / 169;
}

.p-labeled-section__photo--medium {
	aspect-ratio: 190 / 125;
}

.p-labeled-section__photo--portrait {
	aspect-ratio: 3 / 4;
}

.p-labeled-section__photo--offset {
	width: 61.5%;
	margin-left: auto;
	aspect-ratio: 200 / 260;
	margin-bottom: 1rem;
}

/* Hannam */
.p-labeled-section__hero--hannam {
	align-items: flex-start;
	justify-content: flex-start;
	overflow: hidden;
	background: #f4f1ea;
}

.p-labeled-section__hero-media--hannam {
	position: absolute;
	inset: 0;
}

.p-labeled-section__hero-overlay--hannam {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(255, 255, 255, 0.8) 31.28%, rgba(255, 255, 255, 0) 48.94%);
}

.p-labeled-section__hero-copy--hannam {
	position: relative;
	z-index: 1;
	padding: 3.75rem 0 0  1.25rem;
	color: #2e2e2a;
}

.p-labeled-section__hero-kicker {
	display: flex;
	flex-direction: column;
	gap: 0;
	margin: 0;
	font-family: var(--font-ja);
	font-weight: 500;
	letter-spacing: 0.1875rem;
	color: #2e2e2a;
	text-rendering: geometricPrecision;
	-webkit-font-smoothing: antialiased;
	font-feature-settings: "palt" 1;
}

.p-labeled-section__hero-kicker span {
	display: block;
	white-space: nowrap;
	font-family: var(--font-ja-serif);
	font-size: 1.125rem;
	font-weight: 500;
	line-height: 1.5625rem;
	letter-spacing: 0.1625rem;
}

.p-labeled-section__hero-kicker span.p-labeled-section__hero-kicker-sub {
	font-family: var(--font-ja-serif);
	font-size: 0.9375rem;
	letter-spacing: 0.1375rem;
}

.p-labeled-section__hero-text--hannam {
	margin-top: 1.0625rem;
	padding: 0;
	font-size: var(--font-size-xs);
	font-weight: 400;
	line-height: 2;
	letter-spacing: 0;
	text-align: left;
	color: #2e2e2a;
	text-rendering: geometricPrecision;
	-webkit-font-smoothing: antialiased;
}

.p-labeled-section__content--hannam {
	padding: 3.125rem 1.25rem 3.125rem;
	background: #fff;
}

.p-labeled-section__desc--hannam {
	margin: 3rem 0 0;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	font-weight: 300;
	line-height: 2.2222;
	letter-spacing: 0.08em;
	text-align: center;
	color: #2e2e2a;
}

.p-labeled-section__gallery--hannam {
	grid-template-columns: 47.46% 45.76%;
	column-gap: 6.78%;
	row-gap: 0;
	padding: 0;
	background: transparent;
	align-items: start;
}

.p-labeled-section__photo--hannam-small {
	grid-column: 1;
	grid-row: 1;
	aspect-ratio: 140 / 191;
}

.p-labeled-section__photo--hannam-small img {
	object-position: 18% 50%;
}

.p-labeled-section__photo--hannam-portrait {
	grid-column: 2;
	grid-row: 1;
	margin-top: clamp(8.25rem, 35vw, 8.5625rem);
	aspect-ratio: 135 / 173;
	z-index: 1;
}

.p-labeled-section__photo--hannam-portrait img {
	object-position: 82% 44%;
}

.p-labeled-section__photo--hannam-wide {
	grid-column: 1 / span 2;
	grid-row: 2;
	width: 79.66%;
	margin-top: clamp(-1.5rem, -5vw, -0.75rem);
	aspect-ratio: 235 / 163;
}

.p-labeled-section__photo--hannam-wide img {
	object-position: 51% 46%;
}

.p-labeled-section__photo--hannam-bottom {
	grid-column: 1 / span 2;
	grid-row: 3;
	width: 86.44%;
	margin-top: clamp(2.875rem, 12vw, 3.125rem);
	margin-left: auto;
	aspect-ratio: 255 / 187;
}

.p-labeled-section__photo--hannam-bottom img {
	object-position: 37% 44%;
}

.p-labeled-section__more--hannam {
	width: fit-content;
	min-width: 6.34375rem;
	height: 1.25rem;
	margin: 3rem auto 0;
	padding: 0 0.375rem 0 1.4375rem;
	border: 1px solid #2e2e2a;
	border-radius: 999px;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.625rem;
	font-family: var(--font-en);
	font-size: var(--font-size-xs);
	line-height: 1;
	letter-spacing: 0.2em;
	color: #2e2e2a;
	text-decoration: none;
}

.p-labeled-section__more--hannam span:last-child {
	font-size: 0.6875rem;
	line-height: 1;
}

/* Dress */
.p-labeled-section__hero--dress {
	align-items: flex-start;
	justify-content: flex-start;
	overflow: hidden;
	background: #f7f4ef;
}

.p-labeled-section__hero-media--dress {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
	object-position: 44% 50%;
}

.p-labeled-section__hero-copy--dress {
	position: relative;
	z-index: 1;
	padding: 4.375rem 0 0 1.25rem;
	width: 100%;
	color: #2e2e2a;
}

.p-labeled-section__hero-kicker--dress {
	display: flex;
	flex-direction: column;
	gap: 0;
	margin: 0;
	font-family: var(--font-ja);
	font-weight: 500;
	letter-spacing: 0.187rem;
	color: #2e2e2a;
	text-rendering: geometricPrecision;
	-webkit-font-smoothing: antialiased;
}

.p-labeled-section__hero-kicker--dress span {
	display: block;
}

.p-labeled-section__hero-kicker--dress span:first-child {
	font-size: 0.9375rem;
	line-height: 1.8153;
}

.p-labeled-section__hero-kicker--dress span:nth-child(2) {
	font-size: 0.6875rem;
	line-height: 1.8153;
}

.p-labeled-section__hero-kicker--dress span:last-child {
	font-size: 1.125rem;
	line-height: 1.92;
}

.p-labeled-section__content--dress {
	padding: 3.125rem 1.25rem 3.25rem;
	background: #fff;
}

.p-labeled-section__dress-destiny {
	width: 100%;
	padding: 0 1.25rem 1.0625rem;
	/* background: #f0f0f0; */
	text-align: center;
}

.p-labeled-section__dress-destiny-copy {
	display: flex;
	flex-direction: column;
	gap: 0;
	margin: 0;
	font-family: var(--font-ja);
	font-weight: 500;
	color: #2e2e2a;
}

.p-labeled-section__dress-destiny-copy span:first-child {
	font-size: 0.75rem;
	line-height: 2.083;
}

.p-labeled-section__dress-destiny-copy span:last-child {
	font-size: var(--font-size-xs);
	line-height: 2.556;
}

.p-labeled-section__dress-destiny-logo {
	width: 6.9375rem;
	height: 5.5625rem;
	margin: 0 auto 0;
}

.p-labeled-section__dress-destiny-logo img {
	width: 100%;
	height: 100%;
	display: block;
	object-fit: contain;
}

.p-labeled-section__dress-destiny-note {
	margin: 1rem auto 0;
	max-width: 15.9375rem;
	font-family: var(--font-ja-serif);
	font-size: 0.75rem;
	font-weight: 400;
	line-height: 2;
	letter-spacing: 0;
	color: #2e2e2a;
	text-align: center;
}

.p-labeled-section__dress-brand-block {
	margin-top: 2.5rem;
}

.p-labeled-section__dress-brand-heading {
	margin: 0;
	font-family: var(--font-forum);
	font-size: 1.047625rem;
	font-weight: 400;
	line-height: 1;
	letter-spacing: 0;
	color: #393a34;
	text-align: center;
}

.p-labeled-section__dress-brand-logos {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 0.5625rem 0.3125rem;
	list-style: none;
	margin: 1.125rem 0 0;
	padding: 0;
}

.p-labeled-section__dress-brand-logo {
	height: 3rem;
}

.p-labeled-section__dress-brand-tab {
	width: 100%;
	height: 100%;
	padding: 0;
	border: 1px solid #f0f0f0;
	border-radius: 0.3125rem;
	background: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	transition:
		border-color 0.2s ease,
		box-shadow 0.2s ease,
		background-color 0.2s ease;
}

.p-labeled-section__dress-brand-tab.is-active {
	background: #F0F0F0;
}

.p-labeled-section__dress-brand-tab:focus-visible {
	outline: 2px solid #c8b682;
	outline-offset: 2px;
}

.p-labeled-section__dress-brand-logo img {
	max-width: calc(100% - 0.75rem);
	max-height: calc(100% - 0.375rem);
	display: block;
	object-fit: contain;
}

.p-labeled-section__dress-feature {
	margin-top: 0.9375rem;
}

.p-labeled-section__dress-feature-panels {
	margin-top: 1.875rem;
}

.p-labeled-section__dress-feature-panels [data-tab-panel]:not([hidden]) {
	animation: dressFeatureFadeIn 0.35s ease;
}

@keyframes dressFeatureFadeIn {
	from { opacity: 0; }
	to   { opacity: 1; }
}

.p-labeled-section__dress-brand-stop {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.1875rem;
	width: 1.25rem;
	height: 1.25rem;
	margin: 0.625rem auto 0;
	padding: 0;
	border: 1px solid #c8b682;
	border-radius: 50%;
	background: transparent;
	color: #c8b682;
	cursor: pointer;
	transition: opacity 0.2s ease;
}

.p-labeled-section__dress-brand-stop::before,
.p-labeled-section__dress-brand-stop::after {
	content: '';
	display: block;
	width: 0.1875rem;
	height: 0.5rem;
	background: currentColor;
	border-radius: 1px;
}

.p-labeled-section__dress-brand-stop[hidden] {
	display: none;
}

.p-labeled-section__dress-brand-block > .p-labeled-section__dress-feature-panels > .p-labeled-section__dress-feature {
	margin-top: 0;
}

.p-labeled-section__dress-feature-head {
	display: flex;
	align-items: flex-start;
	gap: 0.4375rem;
}

.p-labeled-section__dress-feature-bar {
	flex: 0 0 0.125rem;
	width: 0.125rem;
	height: 2rem;
	background: #393a34;
	opacity: 0.2;
}

.p-labeled-section__dress-feature-title p {
	margin: 0;
	color: #2e2e2a;
}

.p-labeled-section__dress-feature-title p:first-child {
	font-family: var(--font-forum);
	font-size: 0.9375rem;
	line-height: 1.2;
}

.p-labeled-section__dress-feature-title p:last-child {
	margin-top: 0.125rem;
	font-family: var(--font-ja);
	font-size: 0.625rem;
	line-height: 1.8;
}

.p-labeled-section__dress-feature-logo {
	width: 8.25rem;
	height: 2.125rem;
	margin: 0;
	display: flex;
	align-items: center;
}

.p-labeled-section__dress-feature-logo img {
	max-width: 100%;
	max-height: 100%;
	display: block;
	object-fit: contain;
}

.p-labeled-section__dress-feature-text {
	margin: 0.75rem 0 0;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	font-weight: 400;
	line-height: 2.2192;
	letter-spacing: 0;
	color: #2e2e2a;
}

.p-labeled-section__dress-look-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 0.625rem 0.5625rem;
	margin-top: 0.8125rem;
}

.p-labeled-section__dress-credit {
	margin-top: 0.5rem;
	font-family: var(--font-ja);
	font-size: 0.5rem;
	font-weight: 400;
	color: #999;
	text-align: center;
	letter-spacing: 0;
}

.p-labeled-section__dress-look {
	position: relative;
	overflow: hidden;
	background: #f0f0f0;
	aspect-ratio: 92 / 117;
}

.p-labeled-section__dress-look img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	display: block;
	object-fit: cover;
}

.p-labeled-section__dress-look--1 img {
	object-position: 50% 18%;
}

.p-labeled-section__dress-look--2 img {
	object-position: 48% 14%;
}

.p-labeled-section__dress-look--3 img {
	object-position: 49% 14%;
}

.p-labeled-section__dress-look--4 img {
	object-position: 49% 38%;
}

.p-labeled-section__dress-look--5 img {
	object-position: 47% 24%;
}

.p-labeled-section__dress-look--6 img {
	object-position: 50% 14%;
}

/* Beauty */
.p-labeled-section__hero--beauty {
	align-items: flex-start;
	justify-content: flex-start;
	overflow: hidden;
	background: #1b1b1b;
}

.p-labeled-section__hero-media--beauty {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
	object-position: center top;
}

.p-labeled-section__hero-copy--beauty {
	position: absolute;
	z-index: 1;
	left: 0;
	right: 0;
	bottom: 5.125rem;
	width: 100%;
	padding: 0 0 0 1.25rem;
	color: #fff;
}

.p-labeled-section__hero-kicker--beauty {
	display: flex;
	flex-direction: column;
	gap: 0;
	margin: 0;
	font-family: var(--font-ja);
	font-weight: 500;
	letter-spacing: 0.1875rem;
	color: #fff;
	text-rendering: geometricPrecision;
	-webkit-font-smoothing: antialiased;
}

.p-labeled-section__hero-kicker--beauty span {
	display: block;
	font-size: 1.125rem;
	line-height: 1.9231;
}

.p-labeled-section__hero-text--beauty {
	margin-top: 1rem;
	padding: 0;
	font-size: var(--font-size-xs);
	font-weight: 400;
	line-height: 2;
	letter-spacing: 0;
	text-align: left;
	color: #fff;
	text-rendering: geometricPrecision;
	-webkit-font-smoothing: antialiased;
}

.p-labeled-section__content--beauty {
	padding: 6.5rem 0 6.25rem;
	background: #fff;
	display: flex;
	justify-content: center;
}

.p-labeled-section__feature-slider {
	width: 14.0625rem;
	max-width: 100%;
}

.p-labeled-section__feature-slider .splide__track {
	overflow: hidden;
}

.p-labeled-section__feature-slider .splide__list {
	align-items: flex-start;
}

.p-labeled-section__feature-slider .splide__slide {
	flex: 0 0 100%;
	width: 100%;
}

.p-labeled-section__feature-card {
	width: 100%;
}

.p-labeled-section__feature-photo {
	margin: 0;
	position: relative;
	width: 100%;
	aspect-ratio: 225 / 378.25;
	overflow: hidden;
	background: #f0f0f0;
}

.p-labeled-section__feature-photo img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	display: block;
	object-fit: cover;
}

.p-labeled-section__feature-photo--beauty img {
	object-position: 52% 46%;
}

.p-labeled-section__feature-photo--professional img {
	object-position: 22% 24%;
}

.p-labeled-section__feature-copy {
	margin-top: 0.8125rem;
	color: #2e2e2a;
}

.p-labeled-section__feature-title {
	margin: 0;
	font-family: var(--font-ja);
	font-size: 0.6875rem;
	font-weight: 700;
	line-height: 1.8182;
	letter-spacing: 0;
}

.p-labeled-section__feature-text {
	margin: 0.375rem 0 0;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	font-weight: 300;
	line-height: 2.2222;
	letter-spacing: 0;
	color: #2e2e2a;
}

.p-labeled-section__feature-slider .splide__pagination {
	bottom: auto;
	top: 22.75rem;
	left: 50%;
	right: auto;
	display: flex;
	align-items: center;
	width: 10.5rem;
	height: 0.125rem;
	margin: 0;
	padding: 0;
	justify-content: space-between;
	list-style: none;
	line-height: 0;
	transform: translateX(-50%);
}

.p-labeled-section__feature-slider .splide__pagination li {
	display: block;
	width: 3.125rem;
	height: 0.125rem;
	margin: 0;
	padding: 0;
	line-height: 0;
}

.p-labeled-section__feature-slider .splide__pagination__page {
	display: block;
	width: 3.125rem;
	height: 0.125rem;
	margin: 0;
	padding: 0;
	min-width: 0;
	border-radius: 0;
	background: #f0f0f0;
	opacity: 1;
	transform: none;
}

.p-labeled-section__feature-slider .splide__pagination__page.is-active {
	background: #696969;
	transform: none;
}

/* Professional */
.p-labeled-section__hero--professional {
	align-items: flex-start;
	justify-content: flex-start;
	overflow: hidden;
	background: #e9e3db;
}

.p-labeled-section__hero-media--professional {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
	object-position: 57% 44%;
}

.p-labeled-section__hero-overlay--professional {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(255, 255, 255, 0.8) 26.966%, rgba(255, 255, 255, 0) 40.89%);
}

.p-labeled-section__hero-copy--professional {
	position: relative;
	z-index: 1;
	width: 100%;
	padding: 4.3125rem 0 0 1.3125rem;
	color: #2e2e2a;
}

.p-labeled-section__hero-kicker--professional {
	display: flex;
	flex-direction: column;
	gap: 0;
	margin: 0;
	font-family: var(--font-ja);
	font-weight: 500;
	letter-spacing: 0.1625rem;
	color: #2e2e2a;
	text-rendering: geometricPrecision;
	-webkit-font-smoothing: antialiased;
}

.p-labeled-section__hero-kicker--professional span {
	display: block;
	font-size: 1.125rem;
	line-height: 1.9205;
}

.p-labeled-section__hero-text--professional {
	margin-top: 0.8125rem;
	padding: 0;
	font-size: var(--font-size-xs);
	font-weight: 300;
	line-height: 2.2222;
	letter-spacing: 0;
	text-align: left;
	color: #2e2e2a;
	text-rendering: geometricPrecision;
	-webkit-font-smoothing: antialiased;
}

.p-labeled-section__content--professional {
	padding: 6.5rem 0 6.25rem;
	background: #fff;
	display: flex;
	justify-content: center;
}

/* Luxury */
.p-labeled-section__hero--luxury {
	align-items: flex-start;
	justify-content: flex-start;
	overflow: hidden;
	background: #1f1d1a;
}

.p-labeled-section__hero-media--luxury {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
	object-position: center center;
}

.p-labeled-section__hero-overlay--luxury {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(32, 32, 32, 0.64) 0%, rgba(32, 32, 32, 0) 58%);
}

.p-labeled-section__hero-copy--luxury {
	position: relative;
	z-index: 1;
	width: 100%;
	padding: 4.3125rem 0 0 1.3125rem;
	color: #fff;
}

.p-labeled-section__hero-kicker--luxury {
	display: flex;
	flex-direction: column;
	gap: 0;
	margin: 0;
	font-family: var(--font-ja);
	font-weight: 500;
	letter-spacing: 0.1625rem;
	color: #fff;
	text-rendering: geometricPrecision;
	-webkit-font-smoothing: antialiased;
}

.p-labeled-section__hero-kicker--luxury span {
	display: block;
	font-size: 0.9375rem;
	line-height: 1.9231;
}

.p-labeled-section__hero-text--luxury {
	margin-top: 0.5625rem;
	padding: 0;
	font-size: var(--font-size-xs);
	font-weight: 400;
	line-height: 2.2222;
	letter-spacing: 0;
	text-align: left;
	color: #fff;
	text-rendering: geometricPrecision;
	-webkit-font-smoothing: antialiased;
}

.p-labeled-section__content--luxury {
	padding: 3.125rem 1.25rem 3.125rem;
	background: #fff;
}

.p-labeled-section__luxury-inner {
	width: min(100%, 19.0625rem);
	margin: 0 auto;
}

.p-labeled-section__luxury-intro {
	color: #2e2e2a;
}

.p-labeled-section__luxury-intro-strong,
.p-labeled-section__luxury-intro-text,
.p-labeled-section__luxury-text {
	margin: 0;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	line-height: 2.2222;
	letter-spacing: 0;
	color: #2e2e2a;
}

.p-labeled-section__luxury-intro-strong {
	font-weight: 500;
}

.p-labeled-section__luxury-intro-text {
	margin-top: 0.125rem;
	font-weight: 300;
}

.p-labeled-section__luxury-list {
	display: flex;
	flex-direction: column;
	gap: 3.125rem;
	margin-top: 3.5rem;
}

.p-labeled-section__luxury-item {
	position: relative;
}

.p-labeled-section__luxury-top,
.p-labeled-section__luxury-item--meeting,
.p-labeled-section__luxury-item--dress,
.p-labeled-section__luxury-item--lunch,
.p-labeled-section__luxury-item--family {
	display: flex;
	align-items: flex-start;
	gap: 0;
}

.p-labeled-section__luxury-copy {
	position: relative;
	z-index: 2;
	flex-shrink: 0;
}

.p-labeled-section__luxury-item--meeting,
.p-labeled-section__luxury-item--hair,
.p-labeled-section__luxury-item--dress,
.p-labeled-section__luxury-item--location {
	width: 18.4375rem;
}

.p-labeled-section__luxury-item--lunch {
	width: 18.75rem;
}

.p-labeled-section__luxury-item--family {
	width: 19.0625rem;
}

.p-labeled-section__luxury-title {
	display: inline-block;
	margin: 0;
	font-family: var(--font-forum);
	font-size: 0.9375rem;
	font-weight: 400;
	line-height: 1.6;
	letter-spacing: 0.2em;
	color: #2e2e2a;
	width: max-content;
	max-width: none;
}

.p-labeled-section__luxury-title:not(.p-labeled-section__luxury-title--stack) {
	white-space: nowrap;
}

.p-labeled-section__luxury-title--stack span {
	display: block;
}

.p-labeled-section__luxury-text {
	margin-top: 0.1875rem;
	font-weight: 300;
}

.p-labeled-section__luxury-main,
.p-labeled-section__luxury-sub {
	position: relative;
	margin: 0;
	overflow: hidden;
	background: #efefef;
}

.p-labeled-section__luxury-main {
	z-index: 1;
	flex: 0 0 11.875rem;
	width: 11.875rem;
	height: 11.875rem;
}

.p-labeled-section__luxury-main img,
.p-labeled-section__luxury-sub img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	display: block;
	object-fit: cover;
}

.p-labeled-section__luxury-main--fade-left::after,
.p-labeled-section__luxury-main--fade-right::after,
.p-labeled-section__luxury-main--fade-right-lunch::after,
.p-labeled-section__luxury-main--fade-right-family::after {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
}

.p-labeled-section__luxury-main--fade-left::after {
	background: linear-gradient(45deg, #fff 7.18%, rgba(255, 255, 255, 0.5) 37.45%, rgba(255, 255, 255, 0) 98.7%);
}

.p-labeled-section__luxury-main--fade-right::after {
	background: linear-gradient(309deg, #fff 7.18%, rgba(255, 255, 255, 0.5) 37.45%, rgba(255, 255, 255, 0) 98.7%);
}

.p-labeled-section__luxury-main--fade-right-lunch::after {
	background: linear-gradient(316deg, rgba(255, 255, 255, 0.8) 42.25%, rgba(255, 255, 255, 0.3) 68.41%, rgba(255, 255, 255, 0.2) 102.75%);
}

.p-labeled-section__luxury-main--fade-right-family::after {
	background: linear-gradient(309deg, #fff 7.18%, rgba(255, 255, 255, 0.5) 27.07%, rgba(255, 255, 255, 0) 66.34%);
}

.p-labeled-section__luxury-main--meeting img {
	object-position: 28% 48%;
}

.p-labeled-section__luxury-main--hair img {
	object-position: 27% 46%;
}

.p-labeled-section__luxury-main--dress img {
	object-position: 40% 24%;
}

.p-labeled-section__luxury-main--lunch img {
	object-position: 34% 44%;
}

.p-labeled-section__luxury-main--location img {
	object-position: 49% 20%;
}

.p-labeled-section__luxury-main--family img {
	object-position: 24% 24%;
}

.p-labeled-section__luxury-copy--meeting {
	width: 12.8125rem;
	margin-right: -6.25rem;
	padding-top: 6.8125rem;
}

.p-labeled-section__luxury-copy--hair {
	width: 12.5rem;
	margin-left: -5.5rem;
	padding-top: 4.6875rem;
}

.p-labeled-section__luxury-copy--dress {
	width: 11.5rem;
	margin-right: -4.9375rem;
	padding-top: 5.3125rem;
}

.p-labeled-section__luxury-copy--lunch {
	width: 13rem;
	margin-left: -6.125rem;
	padding-top: 5.75rem;
}

.p-labeled-section__luxury-copy--location {
	width: 13.125rem;
	margin-right: -5.3125rem;
	padding-top: 4.875rem;
}

.p-labeled-section__luxury-copy--family {
	width: 12.1875rem;
	margin-left: -5rem;
	padding-top: 7.625rem;
}

.p-labeled-section__luxury-subrow {
	display: flex;
	width: fit-content;
}

.p-labeled-section__luxury-item--hair {
	margin-top: 0.75rem;
}

.p-labeled-section__luxury-subrow--hair {
	margin-top: 1.625rem;
	width: 18.4375rem;
	gap: 1.3125rem;
}

.p-labeled-section__luxury-sub--hair-left {
	width: 8.625rem;
	height: 11.6875rem;
	margin-top: 3.5625rem;
}

.p-labeled-section__luxury-sub--hair-left img {
	object-position: 47% 18%;
}

.p-labeled-section__luxury-sub--hair-right {
	width: 8.5rem;
	height: 8.5rem;
}

.p-labeled-section__luxury-sub--hair-right img {
	object-position: 23% 50%;
}

.p-labeled-section__luxury-item--lunch {
	margin-top: 0.25rem;
}

.p-labeled-section__luxury-item--location {
	margin-top: 0.75rem;
}

.p-labeled-section__luxury-subrow--location {
	margin-top: 1.3125rem;
	width: 16.125rem;
}

.p-labeled-section__luxury-sub--location-left {
	width: 8.125rem;
	height: 12.1875rem;
}

.p-labeled-section__luxury-sub--location-left img {
	object-position: 44% 40%;
}

.p-labeled-section__luxury-sub--location-right {
	width: 9.375rem;
	height: 6.25rem;
	margin-left: -1.4375rem;
	margin-top: 8.5rem;
}

.p-labeled-section__luxury-sub--location-right img {
	object-position: 28% 26%;
}

.p-labeled-section__luxury-item--family {
	margin-top: 0.5rem;
}

/* Divider pair (Beauty section) */
.p-labeled-section__divider-pair {
	display: flex;
	gap: 0.75rem;
	justify-content: center;
	margin-bottom: 1rem;
}

.p-labeled-section__line {
	width: 2.3rem;
	height: 1px;
	background: var(--color-accent);
}

/* Brands row (Dress section) */
.p-labeled-section__brands {
	display: flex;
	gap: 0.5rem;
	justify-content: center;
	margin-top: 1rem;
}

.p-labeled-section__brand {
	width: 5.625rem;
	height: 7.375rem;
	background: #d0d0d0;
}

/* Staff (Professional section) */
.p-labeled-section__staff {
	display: flex;
	gap: 1.25rem;
}

.p-labeled-section__staff-item {
	text-align: center;
}

.p-labeled-section__staff-photo {
	width: 5rem;
	height: 5rem;
	background: #d0d0d0;
	border-radius: 50%;
	margin-bottom: 0.5rem;
}

.p-labeled-section__staff-name {
	font-size: 0.5rem;
	color: var(--color-text-medium);
	letter-spacing: 0.15em;
	line-height: 1.6;
}

/* ==========================================================================
   9. PHOTO GALLERY (Dark Background)
   ========================================================================== */
.p-photo-gallery {
	position: relative;
	padding: 3.125rem 1.25rem;
	background-color: #696969;
}

.p-photo-gallery__header {
	text-align: center;
	margin-bottom: 1.6875rem;
}

.p-photo-gallery__header-en {
	font-family: var(--font-forum);
	font-size: 1.375rem;
	font-weight: 400;
	color: #fff;
	letter-spacing: 0.2em;
}

.p-photo-gallery__header-ja {
	display: block;
	font-family: var(--font-ja);
	font-size: 0.6875rem;
	color: #fff;
	letter-spacing: 0.2em;
	margin-top: 0;
}

.p-photo-gallery__body {
	margin: 0 auto;
	/* padding-bottom: 3.0625rem; */
}

.p-photo-gallery__body.is-collapsed::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 100%;
	height: 20.5625rem;
	background: linear-gradient(180deg, rgba(217, 217, 217, 0) 0%, #333333 75.962%);
	pointer-events: none;
}

.p-photo-gallery__grid {
	display: grid;
	grid-template-columns: repeat(6, minmax(0, 1fr));
	gap: 0.9375rem 0.625rem;
	/* CLS対策: JS読み込み前に高さを確保（14件分の概算） */
	min-height: 80rem;
}

.p-photo-gallery__grid:not(:empty) {
	min-height: auto;
}

.p-photo-gallery__item {
	background: #555;
	overflow: hidden;
	cursor: pointer;
	margin: 0;
	position: relative;
}

.p-photo-gallery__item span {
	color: #888;
}

.p-photo-gallery__item:focus-visible {
	outline: 2px solid #fff;
	outline-offset: -2px;
}

.p-photo-gallery__item.is-expanded {
	animation: galleryExpand 0.35s ease-out both;
}

@keyframes galleryExpand {
	from {
		opacity: 0;
		transform: translateY(0.5rem);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

.p-photo-gallery__item img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.p-photo-gallery__item--hero {
	grid-column: 1 / span 6;
	height: 13.1875rem;
}

.p-photo-gallery__item--small {
	grid-column: span 2;
	height: 8.5625rem;
}

.p-photo-gallery__item--tall-right {
	grid-column: 3 / span 4;
	grid-row: span 2;
	height: 17.9375rem;
}

.p-photo-gallery__item--wide-left {
	grid-column: 1 / span 4;
	height: 8.5625rem;
}

.p-photo-gallery__item--wide-right {
	grid-column: 3 / span 4;
	height: 8.5625rem;
}

.p-photo-gallery__item--tall-col1 {
	grid-column: 1 / span 3;
	height: 12.875rem;
}

.p-photo-gallery__item--wide-right-sm {
	grid-column: 4 / span 3;
	height: 8.375rem;
	align-self: start;
}

.p-photo-gallery__item--sm-col1 {
	grid-column: 1 / span 3;
	height: 8.375rem;
	align-self: start;
}

.p-photo-gallery__item--wide-right-tall {
	grid-column: 4 / span 3;
	height: 12.875rem;
	margin-top: -4.5rem;
}

.p-photo-gallery__item--top-left-bride img {
	object-position: 50% 15%;
}

.p-photo-gallery__item--mid-left-cake img {
	object-position: 50% 0;
}

.p-photo-gallery__more {
	position: absolute;
	left: 50%;
	transform: translateX(-50%);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.625rem;
	width: 4.625rem;
	height: 1.25rem;
	border: 1px solid #fff;
	border-radius: 999px;
	font-family: var(--font-forum);
	font-size: var(--font-size-xs);
	line-height: 2.2222;
	color: #fff;
	letter-spacing: 0.2em;
	text-decoration: none;
	z-index: 2;
}

.p-photo-gallery__more-plus {
	position: absolute;
    right: 0.375rem;
    font-size: 0.9rem;
	line-height: 1;
}

/* ==========================================================================
   10. PLAN
   ========================================================================== */
.p-plan {
	padding: 3.125rem var(--content-padding);
	background: #ffffff;
}

.p-plan__header {
	text-align: center;
	margin-bottom: 1.5rem;
}

.p-plan__header-en {
	font-family: var(--font-forum);
	font-size: 1.375rem;
	font-weight: 400;
	color: #2e2e2a;
	letter-spacing: 0.2em;
}

.p-plan__header-ja {
	display: block;
	font-family: var(--font-ja);
	font-size: 0.6875rem;
	color: #2e2e2a;
	letter-spacing: 0.2em;
	margin-top: 0;
}

.p-plan__desc {
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	font-weight: 400;
	color: #2e2e2a;
	letter-spacing: 0;
	line-height: 1;
	text-align: center;
	margin-bottom: 1rem;
}

.p-plan__desc span {
	display: block;
}

.p-plan__desc span + span {
	margin-top: 0.5625rem;
}

.p-plan__tabs {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0.75rem 0.375rem;
	margin: 0 auto 1.375rem;
	max-width: 20.9375rem;
}

.p-plan__tabs li {
	list-style: none;
}

.p-plan__tab {
	width: 100%;
	height: 1.875rem;
	border: 1px solid #2e2e2a;
	border-radius: 999px;
	background: transparent;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.375rem;
	color: #2e2e2a;
	font-family: var(--font-forum);
	font-size: var(--font-size-xs);
	letter-spacing: 0.1em;
	line-height: 1;
	white-space: nowrap;
	cursor: pointer;
	padding: 0;
}

.p-plan__tab span {
	font-size: 0.8125rem;
	letter-spacing: 0.1em;
}

.p-plan__tab .p-plan__detail-name-sub {
	font-size: 0.625rem;
	letter-spacing: 0.1em;
}

.p-plan__tab.is-active {
	background: #f0f0f0;
}

.p-plan__tab:focus-visible {
	outline: 2px solid #2e2e2a;
	outline-offset: 1px;
}

.p-plan__panels [data-tab-panel][hidden] {
	display: none;
}

.p-plan__detail {
	margin: 0 auto;
}

.p-plan__detail-card {
	background: #f0f0f0;
	padding: 1.5625rem 1.3125rem 1.5625rem;
	min-height: 27.25rem;
}

.p-plan__detail-header {
	position: relative;
	padding-left: 0.5625rem;
	margin-bottom: 0.875rem;
}

.p-plan__detail-header::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.0625rem;
	width: 2px;
	height: 1.25rem;
	background: #2e2e2a;
}

.p-plan__detail-plan-no {
	font-family: var(--font-forum);
	font-size: 0.625rem;
	color: #2e2e2a;
	letter-spacing: 0.1em;
	display: inline-block;
	margin-right: 0.4375rem;
	line-height: 1;
}

.p-plan__detail-name {
	display: inline-block;
	font-family: var(--font-forum);
	font-size: 1.125rem;
	font-weight: 400;
	letter-spacing: 0.1em;
	color: #2e2e2a;
	line-height: 1;
}

.p-plan__detail-name-sub {
	font-size: 0.625rem;
	letter-spacing: 0.1em;
}

.p-plan__detail-subtitle {
	margin-top: 1.125rem;
	font-family: "Helvetica Neue", var(--font-ja);
	font-size: var(--font-size-xs);
	color: #2e2e2a;
	letter-spacing: 0;
	line-height: 2.2222;
	font-weight: 500;
}

.p-plan__detail-content {
	display: flex;
	gap: 1.375rem;
	align-items: flex-start;
}

.p-plan__photo {
	flex: 0 0 9.625rem;
	width: 8.8125rem;
	height: 15.375rem;
	margin: 0;
	background: #ccc;
	overflow: hidden;
}

.p-plan__photo img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}

.p-plan__meta {
	flex: 1;
	min-width: 0;
}

.p-plan__meta-copy {
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	font-weight: 300;
	line-height: 2.2222;
	color: #2e2e2a;
	margin-bottom: 1.125rem;
}

.p-plan__price {
	font-family: var(--font-forum);
	font-size: 1.375rem;
	letter-spacing: 0;
	color: #1a1a1a;
	line-height: 1;
	margin-bottom: 1.125rem;
}

.p-plan__price span {
	font-family: var(--font-ja);
	font-size: 0.5rem;
	font-weight: 400;
	margin-left: 0.125rem;
}

.p-plan__feature-list {
	display: grid;
	gap: 0.5rem;
}

.p-plan__feature-list li {
	display: grid;
	grid-template-columns: 1.5625rem 1fr;
	align-items: start;
	column-gap: 0.5rem;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	line-height: 1.4444;
	color: #2e2e2a;
}

.p-plan__feature-list li img {
	width: 1.5625rem;
	height: 1.5625rem;
	display: block;
}

.p-plan__feature-list li span {
	display: block;
}

.p-plan__caption {
	margin-top: 1.5rem;
	text-align: center;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	line-height: 1.6667;
	color: #2e2e2a;
}

.p-plan__more {
	margin: 0.8125rem auto 0;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 11.25rem;
	height: 1.5rem;
	border: 1px solid #2e2e2a;
	border-radius: 999px;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	color: #2e2e2a;
	letter-spacing: 0;
	text-decoration: none;
}

.p-plan__pager {
	width: min(100%, 16.875rem);
	margin: 1.6875rem auto 0;
	display: flex;
	align-items: center;
	justify-content: space-between;
}

.p-plan__pager-arrow {
	width: 0.5625rem;
	height: 1.125rem;
	padding: 0;
	border: 0;
	background: transparent;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
}

.p-plan__pager-arrow img {
	display: block;
	width: 100%;
	height: 100%;
}

.p-plan__pager-arrow--prev img {
	transform: scaleX(-1);
}

.p-plan__pager-list {
	display: flex;
	align-items: flex-start;
	gap: 1.625rem;
	padding-top: 0.375rem;
}

.p-plan__pager-tab {
	padding: 0 0 0.375rem;
	border: 0;
	border-bottom: 1px solid transparent;
	background: transparent;
	font-family: var(--font-forum);
	font-size: var(--font-size-xs);
	line-height: 1;
	letter-spacing: 0.1em;
	color: #1a1a1a;
	cursor: pointer;
}

.p-plan__pager-tab.is-active {
	border-bottom-color: #393a34;
	color: #2e2e2a;
}

/* ==========================================================================
   11. HOSPITALITY
   ========================================================================== */
.p-hospitality {
	padding: 3.125rem var(--content-padding) 3.25rem;
	background: var(--color-bg-white);
	color: #2e2e2a;
}

.p-hospitality__header {
	text-align: center;
	margin-bottom: 0.9375rem;
}

.p-hospitality__header-en {
	font-family: var(--font-forum);
	font-size: 1.375rem;
	font-weight: 400;
	color: #2e2e2a;
	letter-spacing: 0.2em;
}

.p-hospitality__header-ja {
	display: block;
	font-family: var(--font-ja);
	font-size: 0.6875rem;
	color: #2e2e2a;
	letter-spacing: 0.2em;
	margin-top: 0;
}

.p-hospitality__lead,
.p-hospitality__catch {
	font-family: var(--font-ja-serif);
	font-size: 0.9375rem;
	font-weight: 400;
	line-height: 1.35;
	color: #2e2e2a;
	letter-spacing: 0;
}

.p-hospitality__intro-visual {
	width: min(16.375rem, 69.87vw);
	margin: 1.75rem auto 0;
	overflow: hidden;
}

.p-hospitality__intro-visual img {
	display: block;
	width: 100%;
	height: auto;
	object-fit: cover;
}

.p-hospitality__lead {
	margin-top: 1.75rem;
	text-align: left;
}

.p-hospitality__catch {
	margin-top: 0.1875rem;
	text-align: left;
}

.p-hospitality__intro {
	margin-top: 0.875rem;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	font-weight: 400;
	line-height: 2.222;
	letter-spacing: 0;
	color: #2e2e2a;
}

.p-hospitality__list {
	width: min(100%, 26rem);
	margin: 1.375rem auto 0;
	display: flex;
	flex-direction: column;
	gap: clamp(2.875rem, 8vw, 3.5rem);
}

.p-hospitality-card__top {
	display: flex;
	align-items: flex-start;
	gap: 0;
	position: relative;
}

.p-hospitality-card--reverse .p-hospitality-card__top {
	flex-direction: row-reverse;
}

.p-hospitality-card__main {
	position: relative;
	flex: 0 0 45.1%;
	aspect-ratio: 151 / 211;
	margin: 0;
	overflow: hidden;
	background: #ffffff;
	z-index: 1;
}

.p-hospitality-card__main::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(270deg, rgba(255, 255, 255, 0.8) 10%, rgba(255, 255, 255, 0) 74%);
	pointer-events: none;
}

.p-hospitality-card__main img,
.p-hospitality-card__sub img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.p-hospitality-card__text {
	position: relative;
	z-index: 2;
	flex: 1 1 auto;
	min-width: 0;
	padding-top: clamp(0.375rem, 1.6vw, 0.5rem);
	display: flex;
	flex-direction: column;
}

.p-hospitality-card__title-wrap {
	position: relative;
	padding-left: 0.8125rem;
}

.p-hospitality-card__title-wrap::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.0625rem;
	width: 2px;
	height: 2.1875rem;
	background: rgba(57, 58, 52, 0.85);
}

.p-hospitality-card__title-en {
	font-family: var(--font-forum);
	font-size: 1rem;
	font-weight: 400;
	color: #2e2e2a;
	letter-spacing: 0.1em;
	line-height: 1.1;
}

.p-hospitality-card__title-en-small {
	font-size: 0.625rem;
	letter-spacing: 0.08em;
}

.p-hospitality-card__title-ja {
	margin-top: 0.125rem;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	font-weight: 400;
	line-height: 1.667;
	letter-spacing: 0;
	color: #2e2e2a;
}

.p-hospitality-card__body {
	margin-top: 0.5rem;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	font-weight: 400;
	line-height: 2.222;
	letter-spacing: 0;
	color: #2e2e2a;
}

.p-hospitality-card__gallery {
	display: flex;
	align-items: flex-start;
	gap: clamp(0.5rem, 2.2vw, 0.75rem);
	margin-top: clamp(-0.8125rem, -2vw, -0.375rem);
	width: 100%;
}

.p-hospitality-card__sub {
	margin: 0;
	overflow: hidden;
	flex: 0 0 39.4%;
	aspect-ratio: 132 / 173;
}

.p-hospitality-card__sub--wide {
	flex: 0 0 66%;
	aspect-ratio: 221 / 167;
}

.p-hospitality-card__sub--tall {
	flex: 0 0 39.4%;
	aspect-ratio: 132 / 173;
	margin-top: 0;
	position: relative;
	z-index: 2;
}

.p-hospitality-card--strings .p-hospitality-card__main::after {
	background: linear-gradient(270deg, rgba(255, 255, 255, 0.82) 9%, rgba(255, 255, 255, 0) 73%);
}

.p-hospitality-card--strings .p-hospitality-card__text {
	padding-top: clamp(1rem, 4vw, 1.4375rem);
	margin-left: clamp(-0.9375rem, -3vw, -0.625rem);
}

.p-hospitality-card--strings .p-hospitality-card__gallery {
	gap: 0;
	margin-top: clamp(3.25rem, 12vw, 3.9375rem);
}

.p-hospitality-card--strings .p-hospitality-card__sub--tall {
	margin-top: clamp(-6.375rem, -16vw, -4.875rem);
	margin-left: clamp(-1.125rem, -3vw, -0.625rem);
}

.p-hospitality-card--planner .p-hospitality-card__main {
	flex-basis: 69.6%;
	aspect-ratio: 233 / 169;
}

.p-hospitality-card--planner .p-hospitality-card__main::after {
	background: linear-gradient(90deg, rgba(255, 255, 255, 0.5) 9%, rgba(255, 255, 255, 0) 70%);
}

.p-hospitality-card--planner .p-hospitality-card__text {
	padding-top: clamp(1.5rem, 6vw, 2.25rem);
	position: absolute;
	left: 0;
}

.p-hospitality-card--planner .p-hospitality-card__gallery {
	gap: clamp(1rem, 4vw, 1.4375rem);
	margin-top: clamp(2.25rem, 8vw, 2.875rem);
}

.p-hospitality-card--planner .p-hospitality-card__sub--right {
	flex: 0 0 38.5%;
	aspect-ratio: 129 / 199;
	margin-top: clamp(3.375rem, 11vw, 4.375rem);
}

.p-hospitality-card--bridal .p-hospitality-card__main::after {
	background: linear-gradient(270deg, rgba(255, 255, 255, 0.8) 13%, rgba(255, 255, 255, 0) 76%);
}

.p-hospitality-card--bridal .p-hospitality-card__text {
	padding-top: clamp(1rem, 4vw, 1.4375rem);
	margin-left: clamp(-0.9375rem, -3vw, -0.625rem);
}

.p-hospitality-card--bridal .p-hospitality-card__gallery {
	flex-direction: row-reverse;
	justify-content: flex-end;
	margin-top: clamp(3.5rem, 13vw, 4.5rem);
	gap: 0;
}

.p-hospitality-card--bridal .p-hospitality-card__sub--tall {
	margin-top: clamp(-7.625rem, -19vw, -5.875rem);
	margin-left: clamp(-1.125rem, -3vw, -0.625rem);
}

.p-hospitality-card--bridal .p-hospitality-card__sub--tall img {
	object-position: center top;
}

.p-hospitality-card--guestroom .p-hospitality-card__main {
	flex-basis: 64.5%;
	aspect-ratio: 216 / 169;
}

.p-hospitality-card--guestroom .p-hospitality-card__main::after {
	background: linear-gradient(90deg, rgba(255, 255, 255, 0.82) 9%, rgba(255, 255, 255, 0) 86%);
}

.p-hospitality-card--guestroom .p-hospitality-card__text {
	padding-top: clamp(1.25rem, 5vw, 1.9375rem);
	position: absolute;
	left: 0;
}

.p-hospitality-card--guestroom .p-hospitality-card__title-wrap::before {
	height: 3.3125rem;
}

.p-hospitality-card__gallery--guestroom {
	display: grid;
	grid-template-columns: 57.6% 1fr;
	gap: 0.75rem;
	margin-top: clamp(1.875rem, 7vw, 2.4375rem);
}

.p-hospitality-card__sub--guestroom-left {
	grid-column: 1;
	grid-row: 1 / span 2;
	aspect-ratio: 193 / 173;
}

.p-hospitality-card__gallery-text {
	grid-column: 2;
	grid-row: 1;
	align-self: end;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	font-weight: 400;
	color: #2e2e2a;
	line-height: 2.2222;
	letter-spacing: 0;
	padding-top: 1.875rem;
	padding-left: 1.6875rem;
}

.p-hospitality-card__sub--guestroom-right {
	grid-column: 2;
	grid-row: 2;
	aspect-ratio: 126 / 190;
}

@media (max-width: 350px) {
	.p-hospitality-card__top {
		gap: 0.5rem;
	}

	.p-hospitality-card__title-en {
		font-size: 0.9375rem;
	}
}

/* ==========================================================================
   13. VOICE
   ========================================================================== */
.p-voice {
	padding: 3.125rem 0 2.8125rem;
	background: #f0f0f0;
}

.p-voice__header {
	text-align: center;
	margin-bottom: 1.5rem;
	padding: 0 var(--content-padding);
}

.p-voice__header-en {
	font-family: var(--font-forum);
	font-size: 1.375rem;
	font-weight: 400;
	color: #2e2e2a;
	letter-spacing: 0.2em;
}

.p-voice__header-ja {
	display: block;
	font-family: var(--font-ja);
	font-size: 0.6875rem;
	color: #2e2e2a;
	letter-spacing: 0.2em;
	margin-top: 0;
}

.p-voice__slider {
	width: 100%;
	padding: 0;
}

.p-voice__track {
	overflow: hidden;
}

.p-voice__list {
	align-items: stretch;
}

.p-voice__slide {
	list-style: none;
	width: min(80vw, 21rem);
	margin: 0;
}

.p-voice__card {
	width: 100%;
	background: #fff;
	padding: clamp(1.25rem, 4vw, 1.5rem) clamp(1.25rem, 5vw, 1.875rem) 1rem;
}

.p-voice__card-photo {
	width: 100%;
	aspect-ratio: 240 / 159;
	height: auto;
	margin: 0;
	background: #e5e5e5;
	overflow: hidden;
}

.p-voice__card-photo img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.p-voice__card-quote {
	margin-top: 0.9375rem;
	font-size: 0.75rem;
	font-weight: 400;
	color: #393a34;
	letter-spacing: 0.02em;
	line-height: 1.5;
}

.p-voice__card-divider {
	width: 1.75rem;
	height: 1px;
	background: #c8b682;
	margin: 0.9375rem 0 0.5rem;
}

.p-voice__card-plan {
	font-size: var(--font-size-xs);
	color: #2e2e2a;
	letter-spacing: 0.02em;
	margin-bottom: 0.25rem;
}

.p-voice__card-name {
	font-size: 0.75rem;
	color: #666;
	letter-spacing: 0.02em;
}

.p-voice__slider .splide__pagination {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 0.8125rem;
	margin-top: 1.5625rem;
	position: static;
	padding: 0;
}

.p-voice__slider .splide__pagination__page {
	width: 2.625rem;
	height: 0.1875rem;
	margin: 0;
	border-radius: 0;
	background: #393a34;
	opacity: 1;
	transform: none;
}

.p-voice__slider .splide__pagination__page.is-active {
	background: #c8b682;
	transform: none;
}

/* ==========================================================================
   14. Photo Strip
   ========================================================================== */
.p-photo-strip {
	padding: 5rem 0;
	background: var(--color-bg-white);
}

.p-photo-strip__slides {
	position: relative;
}

.p-photo-strip__slide {
	opacity: 0;
	transition: opacity 1.5s ease;
	position: absolute;
	inset: 0;
	pointer-events: none;
}

.p-photo-strip__slide:first-child {
	position: relative;
}

.p-photo-strip__slide.is-active {
	opacity: 1;
	pointer-events: auto;
}

.p-photo-strip__inner {
	margin: 0 auto;
}

.p-photo-strip__top {
	display: flex;
	align-items: flex-start;
	gap: 7.7%;
}

.p-photo-strip__item {
	margin: 0;
	background: #d0d0d0;
	overflow: hidden;
}

.p-photo-strip__item--top-left {
	flex: 0 0 46%;
	aspect-ratio: 173 / 177;
}

.p-photo-strip__item--top-right {
	flex: 0 0 40.7%;
	aspect-ratio: 153 / 205;
	margin-top: 6.6875rem;
}

.p-photo-strip__item--bottom {
	width: 89.1%;
	aspect-ratio: 335 / 194;
	margin-top: 1.4375rem;
	margin-left: auto;
}

.p-photo-strip__item--top-left img {
	object-position: 44% 24%;
}

.p-photo-strip__item--top-right img {
	object-position: 48% 18%;
}

.p-photo-strip__item--bottom img {
	object-position: 48% 36%;
}

/* ==========================================================================
   15. SHOP & LOCATION
   ========================================================================== */
.p-shop-location {
	padding: 3.0625rem var(--content-padding) 2.8125rem;
	background: #393a34;
	color: #fff;
}

.p-shop-location__header {
	text-align: center;
}

.p-shop-location__header-en {
	font-family: var(--font-forum);
	font-size: 0.75rem;
	font-weight: 400;
	line-height: 1.25rem;
	color: #fff;
}

.p-shop-location__header-ja {
	display: block;
	margin-top: 0.0625rem;
	font-family: var(--font-ja);
	font-size: 0.6875rem;
	letter-spacing: 0.2em;
	color: #fff;
}

.p-shop-location__catch {
	margin-top: 2.5rem;
	text-align: center;
	font-family: var(--font-ja-serif);
	font-size: 0.75rem;
	letter-spacing: 0.2em;
	color: #fff;
}

.p-shop-location__intro {
	margin-top: 1.4375rem;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	line-height: 2.2222;
	letter-spacing: 0;
	color: #fff;
}

.p-shop-location__hero {
	margin-top: 1.875rem;
}

.p-shop-location__hero img {
	display: block;
	width: 100%;
	aspect-ratio: 335 / 213;
	object-fit: cover;
}

.p-shop-location__detail {
	margin-top: 1.0625rem;
}

.p-shop-location__venue {
	font-family: var(--font-ja);
	font-size: 0.75rem;
	font-weight: 400;
	line-height: 1.1667;
	color: #fff;
}

.p-shop-location__venue-sub {
	font-size: var(--font-size-xs);
	line-height: 1.25rem;
}

.p-shop-location__address {
	margin-top: 0.625rem;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	line-height: 1.222;
	letter-spacing: 0;
	color: #fff;
}

.p-shop-location__meta {
	margin-top: 1rem;
	border-top: 1px solid rgba(200, 182, 130, 0.55);
}

.p-shop-location__meta-row {
	display: block;
	padding: 1rem 0 0.875rem;
	border-bottom: 1px solid rgba(200, 182, 130, 0.55);
}

.p-shop-location__meta-row dt,
.p-shop-location__meta-row dd {
	margin: 0;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	line-height: 0.9375rem;
	letter-spacing: 0;
	color: #fff;
}

.p-shop-location__meta-row dd {
	margin-top: 0.375rem;
}

.p-shop-location__map {
	margin-top: 0.625rem;
	overflow: hidden;
	background: #d9d9d9;
	aspect-ratio: 335 / 180;
}

.p-shop-location__map img,
.p-shop-location__map iframe {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.p-shop-location__map iframe {
	border: 0;
}

.p-shop-location__access,
.p-shop-location__parking {
	margin-top: 1rem;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	line-height: 1.25rem;
	letter-spacing: 0;
	color: #fff;
}

.p-shop-location__label {
	margin-bottom: 0.125rem;
	font-size: var(--font-size-xs);
	line-height: 2.2222;
}

/* ==========================================================================
   16. FAQ
   ========================================================================== */
.p-faq {
	padding: 3.4375rem var(--content-padding) 3.125rem;
	background: #f0f0f0;
}

.p-faq__header {
	text-align: center;
	margin-bottom: 2.5rem;
}

.p-faq__header-en {
	font-family: var(--font-forum);
	font-size: 1.375rem;
	font-weight: 400;
	color: #2e2e2a;
	letter-spacing: 0.2em;
}

.p-faq__header-ja {
	display: block;
	font-family: var(--font-ja);
	font-size: 0.6875rem;
	color: #2e2e2a;
	letter-spacing: 0.2em;
	margin-top: 0;
}

/* dl/dt/dd リセット（見た目を変えない） */
.p-faq__list dt {
	font-weight: inherit;
}

.p-faq__list dd {
	margin: 0;
}

.p-faq__list {
	width: min(100%, 20.9375rem);
	margin: 0 auto;
	border-top: 1px solid #e5e1d7;
	border-bottom: 1px solid #e5e1d7;
}

.p-faq__item {
	border-bottom: 1px solid #e5e1d7;
	padding: 0;
}

.p-faq__item:last-child {
	border-bottom: none;
}

.p-faq__question {
	appearance: none;
	-webkit-appearance: none;
	background: none;
	border: 0;
	padding: 1.375rem 2.1875rem 1.3125rem 0.1875rem;
	width: 100%;
	display: flex;
	align-items: flex-start;
	gap: 0.4375rem;
	text-align: left;
	color: inherit;
	font: inherit;
	cursor: pointer;
	position: relative;
}

.p-faq__question::after {
	content: "";
	position: absolute;
	right: 0.8125rem;
	top: 50%;
	width: 0.5rem;
	height: 0.5rem;
	border-right: 1px solid #2e2e2a;
	border-bottom: 1px solid #2e2e2a;
	transform: translateY(-50%) rotate(45deg);
	transform-origin: center;
}

.p-faq__item.is-open .p-faq__question::after {
	transform: translateY(-50%) rotate(-135deg);
}

.p-faq__q {
	font-family: var(--font-ja);
	font-size: 0.75rem;
	font-weight: 400;
	color: #c8b682;
	flex-shrink: 0;
	line-height: 1.1667;
}

.p-faq__qt {
	font-family: var(--font-ja);
	font-size: 0.75rem;
	color: #393a34;
	line-height: 1.25rem;
	letter-spacing: 0;
}

.p-faq__answer {
	padding: 0 2.25rem 0 1.5rem;
	display: grid;
	grid-template-rows: 0fr;
	opacity: 0;
	transition: grid-template-rows 280ms ease, opacity 200ms ease, padding-bottom 280ms ease;
}

.p-faq__answer-inner {
	margin: 0;
	min-height: 0;
	overflow: hidden;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	font-weight: 400;
	color: #393A34;
	line-height: 0.9375rem;
	letter-spacing: 0;
	/* text-indent: -1em;
	padding-left: 1em; */
}

.p-faq__item.is-open .p-faq__answer {
	grid-template-rows: 1fr;
	opacity: 1;
	padding-bottom: 0.875rem;
}

@media (prefers-reduced-motion: reduce) {
	.p-faq__answer {
		transition: none;
	}
}

/* ==========================================================================
   12. RESERVATION
   ========================================================================== */
.p-reservation {
	padding: 3.125rem var(--content-padding) 3rem;
	background: #fff;
}

.p-reservation__header {
	text-align: center;
	margin-bottom: 2.0625rem;
}

.p-reservation__header-en {
	font-family: var(--font-forum);
	font-size: 1.375rem;
	font-weight: 400;
	color: #2e2e2a;
	letter-spacing: 0.2em;
}

.p-reservation__header-ja {
	display: block;
	font-family: var(--font-ja);
	font-size: 0.6875rem;
	color: #2e2e2a;
	letter-spacing: 0.2em;
	margin-top: 0;
}

.p-reservation__timeline {
	margin: 0 auto;
	padding: 0;
	list-style: none;
	position: relative;
}

.p-reservation__timeline::before {
	content: "";
	position: absolute;
	left: 0.5625rem;
	top: 0.4375rem;
	width: 1px;
	height: calc(var(--scroll-progress, 0) / 100 * var(--scroll-progress-height, 100%));
	background: #c8b682;
	z-index: 1;
}

.p-reservation__step {
	position: relative;
	padding-left: 2.4375rem;
}

.p-reservation__step:not(:last-child) {
	padding-bottom: 3rem;
}

.p-reservation__step:not(:last-child)::after {
	content: "";
	position: absolute;
	left: 0.5625rem;
	top: 0.875rem;
	bottom: 0;
	width: 1px;
	background: #e0e0e0;
}

.p-reservation__step-dot {
	position: absolute;
	left: 0.125rem;
	top: 0;
	width: 0.875rem;
	height: 0.875rem;
	border-radius: 50%;
	border: 1px solid #969696;
	background: #fff;
}

.p-reservation__step-dot::after {
	content: "";
	position: absolute;
	inset: 0.1875rem;
	border-radius: 50%;
	background: #f0f0f0;
	transition: background-color 0.4s ease;
}

.p-reservation__step-dot.is-passed::after {
	background: #c8b682;
}

.p-reservation__step-body {
	color: #2e2e2a;
}

.p-reservation__step-no {
	font-family: var(--font-forum);
	font-size: 0;
	letter-spacing: 0.125rem;
	color: #c8b682;
	line-height: 1;
}

.p-reservation__step-no span {
	font-size: 0.75rem;
}

.p-reservation__step-no strong {
	font-size: 0.9375rem;
	font-weight: 400;
}

.p-reservation__step-title {
	font-family: var(--font-ja);
	font-size: 0.75rem;
	font-weight: 500;
	line-height: 1.6667;
	color: #1a1a1a;
	margin-top: 0.1875rem;
}

.p-reservation__step-title-sub {
	margin-top: 0.0625rem;
	font-family: var(--font-ja);
	font-size: 0.625rem;
	font-weight: 500;
	line-height: 1.8;
	color: #1a1a1a;
}

.p-reservation__step-text {
	margin-top: 0.875rem;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	line-height: 2.2222;
	letter-spacing: 0;
	color: #2e2e2a;
}

.p-reservation__photo {
	margin-top: 0.8125rem;
}

.p-reservation__photo img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.p-reservation__photo--single {
	width: 10.625rem;
	aspect-ratio: 170 / 116;
	height: auto;
}

.p-reservation__consult-row {
	display: grid;
	grid-template-columns: minmax(0, 9.5rem) 8.375rem;
	gap: 0.5625rem;
	margin-top: 1.25rem;
}

.p-reservation__consult-label {
	margin-top: 0;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	font-weight: 700;
	line-height: 2.2222;
	color: #2e2e2a;
}

.p-reservation__consult-label + .p-reservation__step-text {
	margin-top: 0;
}

.p-reservation__consult-label:not(:first-child) {
	margin-top: 0.75rem;
}

.p-reservation__consult-text .p-reservation__step-text {
	margin-top: 0;
}

.p-reservation__consult-photos {
	display: grid;
	gap: 1.25rem;
	align-content: start;
}

.p-reservation__consult-photos .p-reservation__photo {
	width: 8.375rem;
	aspect-ratio: 134 / 109;
	height: auto;
	margin-top: 0;
}

.p-reservation__photo-row {
	display: grid;
	grid-template-columns: 10.625rem 7.3125rem;
	gap: 0.5625rem;
	margin-top: 0.8125rem;
}

.p-reservation__photo--wide {
	width: 10.625rem;
	aspect-ratio: 170 / 116;
	height: auto;
	margin-top: 0;
}

.p-reservation__photo--narrow {
	width: 7.3125rem;
	aspect-ratio: 117 / 116;
	height: auto;
	margin-top: 0;
}

.p-reservation__note {
	width: min(100%, 20.9375rem);
	margin: 2.5625rem auto 0;
	font-family: var(--font-ja);
	font-size: 0.75rem;
	line-height: 2.0833;
	text-align: center;
	color: #2e2e2a;
	letter-spacing: 0;
}

.p-reservation-cta {
	padding: 3.125rem var(--content-padding) 3.375rem;
	background: #393A34;
	text-align: center;
}

.p-reservation-cta__en {
	font-family: var(--font-forum);
	font-size: 1.375rem;
	font-weight: 400;
	letter-spacing: 0.2em;
	color: #fff;
}

.p-reservation-cta__ja {
	margin-top: 0;
	font-family: var(--font-ja);
	font-size: 0.6875rem;
	letter-spacing: 0.2em;
	color: #fff;
}

.p-reservation-cta__lead {
	margin-top: 1.4375rem;
	font-family: var(--font-ja);
	font-size: 0.75rem;
	line-height: 1.6667;
	letter-spacing: 0;
	color: #fff;
}

.p-reservation-cta__list {
	display: grid;
	gap: 0.75rem;
	width: fit-content;
	margin: 1.625rem auto 0;
	text-align: left;
}

.p-reservation-cta__list li {
	position: relative;
	padding-left: 1rem;
	font-family: var(--font-ja);
	font-size: 0.625rem;
	line-height: 1.2;
	letter-spacing: 0;
	color: #fff;
}

.p-reservation-cta__list li::before {
	content: "✓";
	position: absolute;
	left: 0;
	top: 0;
	color: #c8b682;
	font-size: 0.6875rem;
	line-height: 1;
}

.p-reservation-cta__btn {
	position: relative;
	display: block;
	width: min(100%, 20.9375rem);
	margin: 1.875rem auto 0;
	padding: 0.4375rem 2.5rem 0.625rem;
	border: 1px solid rgba(255, 255, 255, 0.8);
	border-radius: 999px;
	color: #fff;
	text-align: center;
}

.p-reservation-cta__btn-main {
	display: block;
	font-family: var(--font-ja);
	font-size: 0.75rem;
	letter-spacing: 0.2em;
	line-height: 1.6667;
}

.p-reservation-cta__btn-sub {
	display: block;
	margin-top: -0.0625rem;
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	letter-spacing: 0.1em;
	line-height: 1.6667;
}

.p-reservation-cta__btn-arrow {
	position: absolute;
	right: 0.9375rem;
	top: 50%;
	transform: translateY(-60%);
	font-size: 1.5rem;
	line-height: 1;
	font-weight: 300;
}

.p-footer {
	background: #f0f0f0;
	text-align: center;
	/* padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 4.625rem); */
	/* background-image: linear-gradient(#f0f0f0, #f0f0f0), linear-gradient(#696969, #696969); */
	background-size: 100% calc(100% - (env(safe-area-inset-bottom, 0px) + 4.625rem)), 100% calc(env(safe-area-inset-bottom, 0px) + 4.625rem);
	background-position: top, bottom;
	background-repeat: no-repeat;
}

.p-footer__brand {
	padding: 1.5rem var(--content-padding) 1.25rem;
}

.p-footer__label {
	font-family: var(--font-ja);
	font-size: var(--font-size-xs);
	font-weight: 400;
	line-height: 1.222;
	color: #2e2e2a;
	letter-spacing: 0;
}

.p-footer__company {
	margin-top: 0.3125rem;
	font-family: var(--font-ja);
	font-size: 0.625rem;
	font-weight: 500;
	line-height: 1.4;
	color: #2e2e2a;
	letter-spacing: 0;
}

.p-footer__description {
	margin-top: 0.625rem;
	font-family: var(--font-ja);
	font-size: 0.5rem;
	font-weight: 400;
	line-height: 1.625;
	color: #2e2e2a;
	letter-spacing: 0;
}

.p-footer__links {
	margin-top: 0.75rem;
	font-family: var(--font-ja);
	font-size: 0.5rem;
	font-weight: 400;
	color: #2e2e2a;
	letter-spacing: 0;
}

.p-footer__link {
	color: #2e2e2a;
	text-decoration: none;
}

.p-footer__links-sep {
	margin: 0 0.5em;
}

.p-footer__address {
	margin-top: 0.625rem;
	font-family: var(--font-ja);
	font-size: 0.5rem;
	font-style: normal;
	font-weight: 400;
	color: #2e2e2a;
	letter-spacing: 0.05em;
	line-height: 1.2;
}

.p-footer__copy {
	padding: 0.4375rem 0 0.375rem;
	font-family: var(--font-ja);
	font-size: 0.5rem;
	color: #fff;
	letter-spacing: 0;
	background: #696969;
}

/* ==========================================================================
   Scroll Animation: セクションヘッダー共通
   ========================================================================== */
/* EN: フェードイン */
[data-scroll-anim] > [class$="__header-en"],
[data-scroll-anim] > [class$="__en"] {
	opacity: 0;
	transition: opacity 1s ease-out;
}

/* JA: 0.2s 遅延でフェードイン */
[data-scroll-anim] > [class$="__header-ja"],
[data-scroll-anim] > [class$="__ja"] {
	opacity: 0;
	transition: opacity 1s ease-out 0.2s;
}

/* 発火後 */
[data-scroll-anim].is-animated > [class$="__header-en"],
[data-scroll-anim].is-animated > [class$="__en"],
[data-scroll-anim].is-animated > [class$="__header-ja"],
[data-scroll-anim].is-animated > [class$="__ja"] {
	opacity: 1;
}

/* ==========================================================================
   PC LAYOUT (min-width: 1024px)
   ========================================================================== */

/* Mobile: PC専用要素は非表示 */
.l-pc-split__hero {
	display: none;
}

.p-fv-pc__photo {
	display: none;
}

@media (min-width: 1024px) {

	/* ── 3カラムグリッド：左ヒーロー(残り幅 or 最大50vw) ｜ SPコンテンツ(480px) ｜ 右ストリップ(260px) ── */
	.l-pc-split {
		display: grid;
		grid-template-columns: min(calc(50vw + 135px), calc(100% - 740px)) 480px 260px;
		column-gap: 0;
		min-height: 100vh;
		background: #D9D9D9;
	}

	/* ── 左カラム：ヒーロー画像（sticky） ── */
	.l-pc-split__hero {
		display: block;
		position: sticky;
		top: 0;
		height: 100vh;
		overflow: hidden;
		margin: 0;
		margin-right: 135px;
	}

	.l-pc-split__hero-img {
		position: absolute;
		inset: 0;
		width: 100%;
		height: 100%;
		object-fit: cover;
		object-position: center;
		opacity: 0;
		transition: opacity 1s ease;
	}

	.l-pc-split__hero-img.is-active {
		opacity: 1;
	}

	/* ── 中カラム：#page（SPデザインそのまま） ── */
	#page {
		position: relative;
		max-width: 480px;
		padding-bottom: 0;
	}

	/* ── bg-movie：#page（50vw〜50vw+480px）に重ねて固定 ── */
	.bg-movie {
		position: fixed;
		top: 0;
		right: auto;
		left: auto;
		bottom: auto;
		width: 480px;
		height: 100dvh;
	}

	/* ── 右ストリップ：ヘッダーを縦配置 ── */
	.c-site-header {
		position: fixed;
		top: 0;
		right: calc(var(--fancybox-body-margin, 0px) + var(--fancybox-scrollbar-compensate, 0px));
		left: auto;
		width: 260px;
		height: 100vh;
		padding: 1.5rem 1rem;
		background: #D9D9D9;
	}

	.c-site-header__inner {
		height: 100%;
		flex-direction: column;
		align-items: center;
		justify-content: flex-start;
		position: relative;
		padding-top: 50px;
	}

	.is-menu-open .c-site-header__inner {
		padding-top: 0;
	}

	.c-fixed-cta {
		display: grid;
		left: auto;
		right: calc(var(--fancybox-body-margin, 0px) + var(--fancybox-scrollbar-compensate, 0px) + 1rem);
		bottom: 1.5rem;
		transform: none;
		width: 8rem;
		min-height: 2.875rem;
		padding: 0.4375rem 0 0.4375rem;
		border-radius: 0.5625rem;
		z-index: 221;
		display: none;
	}

	.c-fixed-cta__arrow {
		right: 0.4375rem;
	}

	.c-site-header__actions {
		position: absolute;
		top: 0;
		right: 0;
		transform: none;
	}

	.c-site-header__logo-image {
		max-height: none;
		width: 10rem;
	}

	.c-site-header__logo {
		position: relative;
		top: auto;
		left: auto;
		transform: none;
	}

	.c-site-header__logo-image--default {
		display: none;
	}

	.c-site-header__logo-image--black {
		display: block;
	}

	.c-site-menu {
		right: 0;
		width: 480px;
		left: initial;
		z-index: 221;
	}

	.c-site-menu__panel {
		padding-top: 14.3125rem;
	}

	body.is-menu-open .c-site-header {
		top: 0;
		right: 0;
		width: 480px;
		height: auto;
		padding: 1.5rem 1.5rem 0;
		background: transparent;
		z-index: 222;
	}

	body.is-menu-open .c-site-header__inner {
		height: auto;
		flex-direction: row;
		align-items: flex-start;
		justify-content: space-between;
	}

	body.is-menu-open .c-site-header__logo-image {
		width: 9.5rem;
	}

	body.is-menu-open .c-site-header__actions {
		position: static;
		transform: none;
	}

	.c-site-header__menu-line {
		background: #393a34;
	}

	.c-site-header__icon-btn--map {
		display: none;
	}
}

/* ==========================================================================
   TABLET LAYOUT (min-width: 768px and max-width: 1023.98px)
   ========================================================================== */
@media (min-width: 768px) and (max-width: 1023.98px) {
	.l-pc-split {
        background: #D9D9D9;
    }

	#page {
		position: relative;
		max-width: 375px;
		margin: auto;
	}

	/* ベースの fixed + inset:0 + width:100% を上書きし、#page と同じ 375px カラムに収める */
	.bg-movie {
		inset: auto;
		left: calc(50% - 187.5px);
		right: auto;
		top: 0;
		width: 375px;
		height: 100dvh;
	}

	.c-site-header {
		width: 375px;
	}
}
