/*!-- Theme.CSS
- テーマや共通のスタイルを定義
--------------------------------------------------!*/
/* =========================
   Header
========================= */
.secHeader {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 1000;
	/* 初期は透明：HERO優先 */
	background: transparent;
	transition: background 180ms ease;
	/* 追加：擬似要素の基準＋スタック順の土台 */
	isolation: isolate;
	overflow: visible;
}
/* 背景レイヤー（Headerの高さ分だけ） */
.secHeader::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 100%;
	background: transparent;
	pointer-events: none;
	transition: background 180ms ease;
	z-index: 0;
}
/* スクロール後：白背景＋blurはここに乗せる */
.secHeader.is-scrolled::before {
	background: rgba(255, 255, 255, 0.95);
	backdrop-filter: blur(10px);
	-webkit-backdrop-filter: blur(10px);
}
.secHeader__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	height: 5rem; /* 80px */
	padding-inline: var(--space-6);
	position: relative;
	z-index: 1;
}
.secHeader__logo {
	line-height: 1;
}
.secHeader__logoLink {
	display: inline-flex;
	align-items: center;
	padding-block: var(--space-2);
	text-decoration: none;
	color: inherit;
}
.secHeader__logoImg {
	width: auto;
	height: 1.75rem; /* 見た目の品位を保つ最小 */
}
/* HERO上 かつ 背景がまだ透明なときだけ白化 */
.secHeader.is-hero:not(.is-scrolled) .secHeader__logoImg {
	filter: brightness(0) invert(1);
}
/* ハンバーガーも同条件 */
.secHeader.is-hero:not(.is-scrolled) .secHeader__toggleIcon::before, .secHeader.is-hero:not(.is-scrolled) .secHeader__toggleIcon::after {
	background: var(--text-white);
}
.secHeader.is-hero:not(.is-scrolled) .secHeader__toggleIcon {
	background: linear-gradient(to bottom, transparent 0, transparent calc(50% - 1px), var(--text-white) calc(50% - 1px), var(--text-white) calc(50% + 1px), transparent calc(50% + 1px), transparent 100%);
}
.secHeader__toggle {
	appearance: none;
	border: 0;
	background: transparent;
	padding: 0;
	/* タップ領域確保 */
	width: 2.75rem;
	height: 2.75rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}
.secHeader__toggleIcon {
	position: relative;
	display: block;
	width: 1.375rem; /* 22px */
	height: 0.875rem;
}
.secHeader__toggleIcon::before, .secHeader__toggleIcon::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	height: 0.125rem; /* 2px */
	background: var(--gray-heading);
	border-radius: 999px;
	opacity: 0.9;
}
.secHeader__toggleIcon::before {
	top: 0;
}
.secHeader__toggleIcon::after {
	bottom: 0;
}
/* 真ん中の線 */
.secHeader__toggleIcon {
	background: linear-gradient(to bottom, transparent 0, transparent calc(50% - 1px), var(--gray-heading) calc(50% - 1px), var(--gray-heading) calc(50% + 1px), transparent calc(50% + 1px), transparent 100%);
	background-repeat: no-repeat;
	background-size: 100% 100%;
	border-radius: 999px;
	opacity: 0.9;
}
.secHeader__nav {
	position: fixed;
	top: 0;
	left: 0;
	inset: 0;
	z-index: 1100;
	/* 初期は非表示（要JSで .is-open を付与） */
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	background: var(--bg-dark);
	transition: opacity 200ms ease, visibility 0ms linear 200ms;
	overflow: hidden;
}
/* Open */
.secHeader.is-open .secHeader__nav {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	transition: opacity 200ms ease, visibility 0ms;
}
/* Close button */
.secHeader__close {
	z-index: 3;
	position: fixed;
	position: absolute;
	top: var(--space-6);
	right: var(--space-6);
	appearance: none;
	border: 0;
	background: transparent;
	width: 2.75rem;
	height: 2.75rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}
.secHeader__closeIcon {
	position: relative;
	display: block;
	width: 1.25rem;
	height: 1.25rem;
}
.secHeader__closeIcon::before, .secHeader__closeIcon::after {
	content: "";
	position: absolute;
	inset: 50% 0 auto 0;
	height: 0.125rem;
	background: var(--text-white);
	opacity: 0.9;
	transform-origin: center;
}
.secHeader__closeIcon::before {
	transform: translateY(-50%) rotate(45deg);
}
.secHeader__closeIcon::after {
	transform: translateY(-50%) rotate(-45deg);
}
/* Center layout */
.secHeader__navInner {
	position: relative;
	z-index: 1;
	height: 100%;
	display: grid;
	align-content: start; /* 縦中央をやめる */
	justify-items: center; /* 横は中央維持 */
	padding-top: clamp(4rem, 12vh, 7rem);
	padding-inline: var(--space-6);
	padding-bottom: calc(var(--space-8) + env(safe-area-inset-bottom));
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
}
/* 中央軸（カンプの縦ライン） */
.secHeader__axis {
	display: none;
}
/* menu */
.secHeader__menu {
	display: grid;
	gap: var(--space-6);
	text-align: center;
}
.secHeader__link {
	display: inline-grid;
	gap: var(--space-2);
	text-decoration: none;
	color: var(--text-white);
}
.secHeader__num {
	font-family: var(--font-oswald);
	font-size: var(--fs-xs);
	font-feature-settings: "lnum";
	letter-spacing: var(--ls-number);
	color: var(--accent);
	opacity: 0.9;
}
.secHeader__label {
	font-family: var(--font-serif);
	font-weight: var(--fw-serif-strong);
	font-size: var(--fs-xl);
	letter-spacing: var(--ls-tight);
	line-height: var(--lh-tight);
}
/* hover/active = 金アクセント（カンプに合わせて静かに） */
.secHeader__link:hover .secHeader__label, .secHeader__link:focus-visible .secHeader__label {
	color: rgba(179, 134, 45, 0.95);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.3em;
	text-decoration-color: rgba(179, 134, 45, 0.85);
}
/* Contact Buttons */
.secHeader__contact {
	margin-top: var(--space-8);
	width: min(60rem, 100%);
}
.secHeader__contactRow {
	display: grid;
	gap: var(--space-4);
}
.secHeader__contactBtn {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: var(--space-4) calc(var(--space-6) + 0.75rem) var(--space-4) var(--space-5);
	background: var(--cta-bg);
	color: rgba(255, 255, 255, 0.92);
	text-decoration: none;
	border-radius: var(--radius-1);
	border: 1px solid rgba(255, 255, 255, 0.15);
	font-family: var(--font-sans);
	font-weight: var(--fw-bold);
	font-size: var(--fs-sm);
	letter-spacing: var(--ls-base);
	transition: background 180ms ease, border-color 180ms ease;
}
/* 矢印（CSSのみ） */
.secHeader__contactBtn::after {
	content: "";
	position: absolute;
	right: var(--space-4);
	top: 50%;
	width: 0.5rem;
	height: 0.5rem;
	border-top: 2px solid var(--accent);
	border-right: 2px solid var(--accent);
	transform: translateY(-50%) rotate(45deg);
}
/* --- Breakpoints --- */
@media (min-width: 48rem) {
	.secHeader__navInner {
		/* ここが重要：コンテナとしての高さを保証 */
		height: 100%;
		min-height: 100vh;
		/* “塊”を中央へ */
		display: grid;
		place-content: center; /* ← 天地中央の決定打 */
		justify-items: center; /* 横方向の見た目を中央に */
		/* SP用の下げ指定を確実に打ち消す */
		padding-top: 0;
		padding-inline: var(--space-6);
		padding-bottom: calc(var(--space-8) + env(safe-area-inset-bottom));
		/* 高さ足りない時の保険は残す */
		overflow-y: auto;
		-webkit-overflow-scrolling: touch;
	}
	.secHeader__logoImg {
		height: 2rem;
	}
	.secHeader__close {
		top: var(--space-8);
		right: var(--space-8);
	}
	.secHeader__contactRow {
		grid-template-columns: repeat(3, 1fr);
	}
	.secHeader__contactBtn:hover, .secHeader__contactBtn:focus-visible {
		border-color: var(--accent);
	}
	.secHeader__axis {
		display: block;
		position: absolute;
		top: 5%;
		left: 50%;
		transform: translateX(-50%);
		width: 1px;
		height: 5rem;
		background: rgba(179, 134, 45, 0.35);
		pointer-events: none
	}
	.secHeader__axis.lastline {
		top: inherit;
		bottom: 5%;
	}
}
/* =========================
   Footer
========================= */
.secFooter {
	background: #070707; /* 黒系：要件優先（navy/white/grey禁止） */
	color: var(--text-white);
	padding-block: var(--space-10);
}
.secFooter__inner {
	width: min(100%, var(--container-pc));
	margin-inline: auto;
	padding-inline: var(--space-6);
}
/* ---------- Head (label + rule) ---------- */
.secFooter__head {
	display: flex;
	align-items: center;
	gap: var(--space-6);
	margin-bottom: var(--space-9);
}
.secFooter__label {
	font-size: var(--fs-sm); /* カンプ：見出しというより“ラベル” */
	letter-spacing: 0.08em;
	font-weight: var(--fw-regular);
	color: rgba(255, 255, 255, 0.78);
	white-space: nowrap;
}
.secFooter__rule {
	flex: 1;
	border-top: 1px solid rgba(179, 134, 45, 0.28); /* accent系の薄い線 */
}
/* ---------- Grid ---------- */
.secFooter__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--space-9);
	position: relative;
}
/* SP：拠点間を“余白＋薄線”で区切る（縦ラインはPC以降） */
.secFooter__loc + .secFooter__loc {
	padding-top: var(--space-9);
	border-top: 1px solid rgba(179, 134, 45, 0.22);
}
/* ---------- Location block ---------- */
.secFooter__locTitle {
	font-size: var(--fs-2xl);
	line-height: var(--lh-normal);
	font-weight: var(--fw-serif-strong);
	letter-spacing: var(--ls-tight);
	margin-bottom: var(--space-7);
	color: rgba(255, 255, 255, 0.92);
}
.secFooter__note {
	font-size: var(--fs-sm);
	line-height: var(--lh-relaxed);
	color: rgba(179, 134, 45, 0.92); /* accent */
	margin-bottom: var(--space-6);
	padding-left: var(--space-4);
	position: relative;
}
/* 注意書きの縦バー（カンプの“控えめな強調”） */
.secFooter__note::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.25em;
	width: 0.125rem;
	height: 1.25em;
	background: rgba(179, 134, 45, 0.9);
}
/* NOTE: 大阪院の“空スロット”は高さだけ残して不可視化（バーも消す） */
.secFooter__note--ghost {
	display: none;
}
.secFooter__address {
	font-style: normal;
	font-size: var(--fs-sm);
	line-height: var(--lh-relaxed);
	color: rgba(255, 255, 255, 0.66);
	margin-bottom: var(--space-8);
}
.secFooter__zip {
	display: inline-block;
	margin-bottom: var(--space-2);
	color: rgba(255, 255, 255, 0.62);
}
/* ---------- Map link ---------- */
/* ボタン化しない：フッターは誘導ではなく情報提示 */
.secFooter__mapLink {
	display: inline-flex;
	align-items: center;
	gap: var(--space-4);
	font-size: var(--fs-sm);
	letter-spacing: 0.06em;
	color: rgba(179, 134, 45, 0.95);
	text-decoration: none;
	padding-block: var(--space-2);
}
/* 左の短いライン（カンプの記号的アクセント） */
.secFooter__mapLink::before {
	content: "";
	width: 1.5rem;
	height: 1px;
	background: rgba(179, 134, 45, 0.9);
}
/* hoverは控えめ（誇張しない） */
.secFooter__mapLink:hover {
	color: rgba(179, 134, 45, 1);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.25em;
}
/* ---------- Bottom area ---------- */
.secFooter__bottomRule {
	margin-top: var(--space-10);
	border-top: 1px solid rgba(179, 134, 45, 0.18);
}
.secFooter__copyright {
	display: block;
	margin-top: var(--space-6);
	font-size: var(--fs-xs);
	letter-spacing: 0.06em;
	color: rgba(255, 255, 255, 0.48);
}
/* ---------- Breakpoints ---------- */
@media (min-width: 48rem) {
	.secFooter__grid {
		grid-template-columns: 1fr 1fr;
		gap: var(--space-10);
	}
	/* PC：SPの区切り線は不要（中央縦ラインで分割） */
	.secFooter__loc + .secFooter__loc {
		padding-top: 0;
		border-top: 0;
	}
	/* 中央縦ライン（カンプの“構造を語る線”） */
	.secFooter__grid::before {
		content: "";
		position: absolute;
		left: 50%;
		top: 0;
		transform: translateX(-50%);
		width: 1px;
		height: 100%;
		background: rgba(179, 134, 45, 0.22);
	}
	/* 各拠点を縦フレックス化 */
	.secFooter__loc {
		display: flex;
		flex-direction: column;
	}
	/* NOTE: 大阪院の“空スロット”は高さだけ残して不可視化（バーも消す） */
	.secFooter__note--ghost {
		display: block;
		visibility: hidden; /* レイアウトは残す */
	}
	.secFooter__note--ghost::before {
		display: none;
	}
	/* 住所ブロックを伸ばして地図リンクを最下部へ */
	.secFooter__address {
		flex-grow: 1;
	}
	/* 地図リンクを常に下端へ */
	.secFooter__mapLink {
		margin-top: auto;
	}
}
/* =========================
   Floating Menu (SP only)
========================= */
.floatMenu {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 50;
	/* iOSのセーフエリア対応 */
	padding-bottom: env(safe-area-inset-bottom);
	background: rgba(7, 7, 7, 0.92);
	border-top: 1px solid rgba(179, 134, 45, 0.22);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
}
.floatMenu__list {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	width: min(100%, var(--container-sp));
	margin-inline: auto;
	padding-inline: var(--space-4);
}
.floatMenu__item {
	min-height: 3.5rem; /* タップ領域確保 */
	display: flex;
}
.floatMenu__link {
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: var(--space-2);
	padding-block: var(--space-3);
	color: rgba(255, 255, 255, 0.9);
	text-decoration: none;
	letter-spacing: 0.06em;
	font-size: var(--fs-sm);
}
.floatMenu__icon {
	display: inline-flex;
	color: rgba(179, 134, 45, 0.95); /* アクセントで“機能”を示す */
	line-height: 0;
}
.floatMenu__text {
	display: inline-block;
}
.floatMenu__link:focus-visible {
	outline: 0.1875rem solid rgba(179, 134, 45, 0.55);
	outline-offset: 0.1875rem;
}
/* 3分割の境界（控えめ） */
.floatMenu__item + .floatMenu__item {
	border-left: 1px solid rgba(255, 255, 255, 0.08);
}
.pageTop {
	display: none;
}
/* ---------- Breakpoints ---------- */
@media (min-width: 60rem) {
	.floatMenu {
		display: none;
	}
	.pageTop {
		position: fixed;
		right: var(--space-6);
		bottom: var(--space-6);
		z-index: 60;
		width: 3.25rem;
		height: 3.25rem;
		display: flex;
		align-items: center;
		justify-content: center;
		background: rgba(7, 7, 7, 0.92);
		color: rgba(179, 134, 45, 0.95);
		border: 1px solid rgba(179, 134, 45, 0.35);
		border-radius: 50%;
		backdrop-filter: blur(6px);
		-webkit-backdrop-filter: blur(6px);
		cursor: pointer;
	}
	.pageTop__icon {
		display: inline-flex;
	}
	/* hoverは控えめ */
	.pageTop:hover {
		background: rgba(7, 7, 7, 1);
		color: rgba(179, 134, 45, 1);
	}
}