/* ==========================================================================
   konst - Main Stylesheet
   Inspired by bookluck.jp — visual rhythm, generous space, poetic tone
   ========================================================================== */

:root {
	/* ブランド緑 #009868 (white 背景に対し 3.13:1)。
	   WCAG A 運用 (テキストコントラスト基準なし) でブランド色を保ち、
	   AA 以上を必要とする低視力ユーザーは画面右下の Color トグルから
	   黒モード (#000, 21:1 AAA) に切替可能。 */
	--color-text: #009868;
	--color-text-light: #009868;
	--color-text-muted: #009868;
	--color-bg: #fff;
	--color-bg-warm: #fff;
	--color-bg-accent: #f0f0ee;
	--color-green: #009868;
	--color-green-light: #e5f5ef;
	--color-border: #c0e0d2;
}

/* ==========================================================================
   COLOR MODE TOGGLE — 色覚配慮: 緑 (#009868) → 黒 (#000) の切替
   <html> に .color-mode-mono が付いている間、緑系変数を黒系に上書きする。
   状態は localStorage('konst-color-mode') に保存。
   ========================================================================== */
html.color-mode-mono {
	--color-text: #000;
	--color-text-light: #1a1a1a;
	--color-text-muted: #444;
	--color-green: #000;
	--color-green-light: #f1f1f1;
	--color-border: #d0d0d0;
	/* 無彩色のごく薄いグレー (純白との差は最小限に) */
	--color-bg: #fafafa;
	--color-bg-warm: #fafafa;
	--color-bg-accent: #f0f0f0;
}
/* .site-header は rgba(255,255,255,0.92) がハードコードされているため
   mono 時だけ薄グレーに差し替え (backdrop-filter も維持) */
html.color-mode-mono .site-header::before {
	background: rgba(250, 250, 250, 0.92);
}
/* logo-green.svg は fill="#009868" がハードコードされているため、
   filter: brightness(0) で黒に転換。ヘッダ nav とフロントページ hero の両方を対象 */
html.color-mode-mono .site-logo-img,
html.color-mode-mono .opening-logo {
	filter: brightness(0);
}

/* 切替トグル: 緑/黒 の 2 色スウォッチを横並びに並べた segmented control。
   navbar の中央線と垂直中心を揃えつつ、Contact の外側 (nav の右パディング内) に置く。
   Contact 右端まで 48px の gutter しかないため、ボタン幅を抑えて可能な限り余白を確保する */
.color-toggle {
	position: fixed;
	/* 親指が届きやすい位置。iPhone/iPad のホームインジケーターと被らないよう safe-area を加算。
	   footer 出現時は JS が更に上へ追従する。 */
	bottom: calc(4rem + env(safe-area-inset-bottom, 0px));
	right: var(--px); /* navbar 右パディングと揃える */
	z-index: 1100;
	transition: bottom 0.25s ease, opacity 0.3s ease;
	display: flex;
	align-items: center; /* 選択中 swatch を上下にはみ出させるため stretch を解除 */
	padding: 0;
	background: rgba(255, 255, 255, 0.92);
	border: 1px solid var(--color-text);
	/* overflow: hidden を外し、選択中 swatch を枠の上下に突き出させる */
}
/* "Color" キャプション (button): 何のためのコントロールか初見でも分かるように。
   左に目アイコンを添える。
   クリックで折り畳み <-> 展開をトグルする (.is-expanded class)。
   WCAG 2.5.5 AAA: hit area を 44x44 以上確保する。 */
.color-toggle-label {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	padding: 0 0.6rem 0 0.55rem;
	min-height: 44px;
	font-family: var(--font-en);
	font-weight: var(--en-weight);
	font-size: 0.875rem;
	letter-spacing: var(--en-spacing);
	color: var(--color-text);
	background: transparent;
	border: 0;
	cursor: pointer;
	user-select: none;
	-webkit-appearance: none;
	appearance: none;
}
.color-toggle-label:hover { opacity: 0.7; }
.color-toggle-icon {
	flex-shrink: 0;
	display: block;
}
/* 折り畳み (デフォルト): スウォッチと "Color" テキストを隠し、
   目アイコンだけ表示してコンテンツ閲覧を妨げない */
.color-toggle:not(.is-expanded) .color-toggle-option,
.color-toggle:not(.is-expanded) .color-toggle-label-text {
	display: none;
}
.color-toggle:not(.is-expanded) .color-toggle-label {
	/* 折り畳み状態でも 44x44 の hit area を確保するため min-width を追加 */
	padding: 0.5rem 0.6rem;
	min-width: 44px;
	justify-content: center;
}
@media (max-width: 600px) {
	.color-toggle-label { font-size: 0.875rem; padding: 0 0.75rem 0 0.65rem; }
	/* モバイル時は CSS 側で右下固定 (JS は footer 追従計算を無効化する)。
	   iOS のホームインジケーター領域に被らないよう safe-area を加算。 */
	.color-toggle {
		bottom: calc(1rem + env(safe-area-inset-bottom, 0px));
	}
}
/* WCAG 2.5.5 AAA 準拠: 各ボタンの hit area を 44x44 確保。
   見た目の色ブロックは内側 .color-toggle-swatch に分離し小さく保つ */
.color-toggle-option {
	position: relative;
	width: 44px;
	height: 44px;
	padding: 0;
	margin: 0;
	border: 0;
	background: transparent;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	transition: opacity 0.2s ease;
	-webkit-appearance: none;
	appearance: none;
}
.color-toggle-option:not(.is-selected) { opacity: 0.3; }
.color-toggle-option.is-selected { opacity: 1; }
.color-toggle-option:hover { opacity: 0.65; }
.color-toggle-option.is-selected:hover { opacity: 1; }
.color-toggle-option:focus-visible {
	outline: 2px solid var(--color-text);
	outline-offset: 2px;
	z-index: 1;
}
/* 内側 swatch: 視覚的な色ブロック (8x18) */
.color-toggle-swatch {
	display: block;
	width: 8px;
	height: 18px;
	transition: height 0.2s ease;
}
.color-toggle-option[data-mode="green"] .color-toggle-swatch { background: #009868; }
.color-toggle-option[data-mode="mono"] .color-toggle-swatch { background: #000; }
/* 選択中 swatch をすこし大きくしてタブ感を出す */
.color-toggle-option.is-selected .color-toggle-swatch {
	height: 32px;
}

@media (max-width: 600px) {
	/* スマホ: コンテンツ表示エリアを侵食しないよう "Color" 文字を非表示にして
	   横幅を圧縮。アイコン + 2 swatches だけ残す。
	   hit area は WCAG 2.5.5 AAA の 44x44 を維持し、見た目の swatch だけ小さく保つ。
	   位置は右下角に固定 (footer 追従の JS は desktop のみ動作) */
	.color-toggle { right: 1rem; bottom: 1rem; }
	.color-toggle-swatch { width: 10px; height: 18px; }
	.color-toggle-label-text { display: none; }
	.color-toggle-label { padding: 0 0.5rem; min-width: 44px; justify-content: center; }
}

/* 初回訪問時のワンショット吹き出し。色切替に気付いてもらうための導線。
   表示は localStorage で 1 回のみ。タップで即消し、5 秒で自動フェードアウト。
   親 .color-toggle が 44px 幅なので width:max-content で内容分だけ広げる。 */
.color-toggle-tip {
	position: absolute;
	bottom: calc(100% + 10px);
	right: 0;
	width: max-content;
	max-width: min(calc(100vw - 2rem), 260px);
	padding: 0.5rem 0.75rem;
	background: rgba(30, 30, 30, 0.92);
	color: #fff;
	font-family: var(--font-body);
	font-size: 0.75rem;
	line-height: 1.5;
	border-radius: 3px;
	box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
	white-space: normal;
	cursor: pointer;
	opacity: 0;
	transform: translateY(4px);
	transition: opacity 0.3s ease, transform 0.3s ease;
	z-index: 1101;
	user-select: none;
}
.color-toggle-tip.is-visible {
	opacity: 1;
	transform: translateY(0);
}
.color-toggle-tip::after {
	content: '';
	position: absolute;
	bottom: -5px;
	right: 20px;
	width: 0;
	height: 0;
	border-left: 5px solid transparent;
	border-right: 5px solid transparent;
	border-top: 5px solid rgba(30, 30, 30, 0.92);
}
@media (prefers-reduced-motion: reduce) {
	.color-toggle-tip { transition: opacity 0.2s linear; transform: none; }
	.color-toggle-tip.is-visible { transform: none; }
}

:root {
	/* ===== システムフォント版 (Google Fonts 撤去テスト) =====
	   macOS/iOS: Hiragino Sans / Hiragino Mincho ProN (日本語最高品質)
	   Windows:   Yu Gothic / Yu Mincho (Meiryo は古い Windows 用 fallback)
	   Android:   Noto Sans JP / Noto Serif CJK JP (OS 同梱)
	   これで Google Fonts 依存を撤去でき、LCP も大きく改善するはず。 */
	--font-body: -apple-system, BlinkMacSystemFont, 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', 'Noto Sans JP', 'Yu Gothic', YuGothic, Meiryo, 'Helvetica Neue', Helvetica, Arial, sans-serif;
	--font-heading: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', 'Yu Gothic', YuGothic, Meiryo, Helvetica, Arial, sans-serif;
	--font-serif: 'Hiragino Mincho ProN', 'Hiragino Mincho Pro', 'YuMincho', 'Yu Mincho', 'Noto Serif JP', 'MS Mincho', serif;
	/* --font-en は英字主体のラベル / メタ / ボタン類に使う。
	   Helvetica 系は日本語を持たないので、混在したときの日本語 fallback として
	   Hiragino Sans / Yu Gothic 等の日本語ゴシックを明示。これがないと OS 任せ
	   で Hiragino Mincho に落ちるケースがある。 */
	--font-en: 'Helvetica Neue', 'Helvetica', 'Arial', 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', 'Yu Gothic', YuGothic, Meiryo, sans-serif;
	--en-weight: 500;
	--en-spacing: 0.12em;
	--ease: 0.5s cubic-bezier(0.25, 0.1, 0.25, 1);
	--space-section: clamp(5rem, 12vw, 10rem);
	--space-block: clamp(3rem, 8vw, 6rem);
	--px: clamp(1.25rem, 5vw, 3rem);
}

*,
*::before,
*::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
	/* サイト全体の日本語デフォルト = 明朝体 (Noto Serif JP)。
	   ボタン / 記事リスト / 画像キャプション / name-host チップ等は
	   個別の selector で var(--font-en) または var(--font-heading) で
	   ゴシックに上書きする */
	font-family: var(--font-serif);
	font-weight: 400;
	font-size: clamp(15px, 1.1vw + 10px, 17px);
	line-height: 2.1;
	color: var(--color-text);
	background: var(--color-bg);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	overflow-x: hidden;
}
/* グローバル figcaption は常にゴシック (画像キャプション = ユーザー要件) */
figcaption {
	font-family: var(--font-en);
}

a { color: inherit; text-decoration: none; transition: opacity var(--ease); }
a:hover { opacity: 0.55; color: inherit; }

img { max-width: 100%; height: auto; display: block; }

/* ---------- Typography ---------- */
h1,
h2,
h3,
h4,
h5,
h6 {
	font-family: var(--font-heading);
	font-weight: 400;
	line-height: 1.4;
}

.section-label {
	font-family: var(--font-en);
	font-size: clamp(0.9rem, 1.2vw, 1.1rem);
	font-weight: var(--en-weight);
	letter-spacing: var(--en-spacing);
	color: var(--color-text-muted);
	margin-bottom: var(--space-block);
}

.link-arrow {
	font-family: var(--font-en);
	font-size: 0.9rem;
	font-weight: var(--en-weight);
	letter-spacing: var(--en-spacing);
	display: inline-block;
	padding-bottom: 2px;
	border-bottom: 1px solid var(--color-border);
	transition: border-color var(--ease);
}
.link-arrow:hover { border-bottom-color: var(--color-text); opacity: 1; }

/* ---------- Header ---------- */
/* backdrop-filter は ::before に分離。.site-header 本体に掛けると position:fixed
   子孫 (モバイルの .navbar-collapse.show) の containing block がヘッダに縮退し、
   フルスクリーンメニューが上端ストリップに潰れる (CSS 仕様)。 */
.site-header {
	position: fixed;
	top: 0; left: 0; right: 0;
	z-index: 1000;
}
.site-header::before {
	content: '';
	position: absolute;
	inset: 0;
	z-index: -1;
	background: rgba(255,255,255,0.92);
	backdrop-filter: blur(12px);
	-webkit-backdrop-filter: blur(12px);
}

/* On front page, hide header initially, show on scroll */
/* ヘッダーは PC / iPad / iPhone いずれでも常時表示する。
   以前ホーム時のみ initial-hidden → スクロール後フェードインする挙動があったが、
   モバイル/タブレットで最初に「メニューが見えない」という混乱を招くため撤廃。 */

/* ホームページだけヘッダロゴとヒーロー中央のロゴが重複して見えるため、
   ヒーローが画面内にある間はヘッダ側のロゴ (.navbar-brand) をフェードアウトさせる。
   ハンバーガー / nav リンクは常時表示のまま (JS で body.home.opening-scrolled を切替)。 */
body.home .site-header .navbar-brand {
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.4s ease;
}
body.home.opening-scrolled .site-header .navbar-brand {
	opacity: 1;
	pointer-events: auto;
}

.site-header .navbar { padding: 1.1rem 0; }

.site-logo-img {
	height: 22px;
	width: auto;
}

.navbar-brand:hover { opacity: 1; }

.nav-link {
	font-family: var(--font-en) !important;
	font-size: 0.9rem !important;
	font-weight: var(--en-weight);
	letter-spacing: var(--en-spacing);
	color: var(--color-text) !important;
	/* WCAG 2.5.5 準拠: 24×24 CSS px 以上の hit area。
	   font-size 0.9rem (14.4px) + vertical padding 0.6rem × 2 = 33.6px 確保。 */
	padding: 0.6rem 0 !important;
}
.nav-link:hover { opacity: 0.45; }
/* disclosure 親項目 (href="#" / aria-haspopup) はリンクではなくカテゴリラベルなので、
   "クリックで遷移できそう" と誤解させる hover フィードバックを無効化。
   カーソルもデフォルトに戻し「ここは押しても行き先なし」と視覚で示す。 */
.nav-link[aria-haspopup="true"][href="#"] {
	cursor: default;
}
.nav-link[aria-haspopup="true"][href="#"]:hover,
.nav-link[aria-haspopup="true"][href="#"]:focus {
	opacity: 1;
}
/* 現在ページの nav リンク: 認知障害・スクリーンリーダー両対応で
   aria-current + 視覚的下線で「今ここ」を明示 */
.nav-link[aria-current="page"] {
	text-decoration: underline;
	text-decoration-thickness: 1.5px;
	text-underline-offset: 4px;
}
/* Contact (緑塗り) は下線が背景に埋もれるので白の inset shadow で代替 */
.navbar-nav .nav-item a.nav-link[href*="/contact"][aria-current="page"] {
	text-decoration: none;
	box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.55);
}
.navbar-toggler:focus { box-shadow: none; }

/* ---------- Contact CTA button in header nav ---------- */
.navbar-nav {
	align-items: center;
}
.navbar-nav .nav-item a.nav-link[href*="/contact"] {
	background: var(--color-green);
	color: #fff !important;
	padding: 0.4rem 1.1rem !important;
	border-radius: 2px;
	line-height: 1;
	transition: opacity var(--ease);
}
.navbar-nav .nav-item a.nav-link[href*="/contact"]:hover {
	opacity: 0.8;
}

/* ==========================================================================
   OPENING — type-driven, no hero image
   ========================================================================== */
.opening {
	background: var(--color-bg);
	padding: clamp(8rem, 22vh, 16rem) var(--px) clamp(5rem, 14vh, 12rem);
	padding-left: clamp(3rem, 10vw, 12rem);
	min-height: 85svh;
	display: flex;
	flex-direction: column;
	justify-content: center;
}

.opening-logo {
	width: clamp(200px, 40vw, 400px);
	height: auto;
	margin-bottom: clamp(2rem, 6vw, 5rem);
}

.opening-headline {
	font-family: var(--font-serif);
	font-size: clamp(1.8rem, 4.5vw + 4px, 3.4rem);
	font-weight: 400;
	line-height: 2;
	letter-spacing: 0.04em;
	margin-bottom: clamp(2rem, 6vw, 4.5rem);
	/* 日本語見出しの禁則処理: 句読点が行頭に来ないように (CJK ブラウザ標準挙動を明示) */
	line-break: strict;
	/* 横スクロールを絶対に起こさないため、幅を超える単語 (英字のブランド名等) は強制改行可。 */
	overflow-wrap: anywhere;
	/* iPhone のアクセシビリティで「さらに大きな文字」を有効にしたユーザー向けに、
	   水平オーバーフローの保険を噛ませる。 */
	max-width: 100%;
}

.opening-sub {
	font-family: var(--font-en);
	font-size: clamp(1.2rem, 2.5vw + 4px, 1.8rem);
	font-weight: var(--en-weight);
	letter-spacing: var(--en-spacing);
	line-height: 1.8;
	color: var(--color-text);
	max-width: 600px;
	margin-top: clamp(1.5rem, 4vw, 3rem);
}

/* ==========================================================================
   NARRATIVE (bookluck-style flowing text blocks)
   ========================================================================== */
.narrative {
	padding: var(--space-section) var(--px);
}

.narrative--closing {
	padding-top: clamp(5rem, 12vw, 10rem);
	padding-bottom: clamp(5rem, 12vw, 10rem);
}

.narrative-text {
	max-width: 560px;
}

/* 404 / 検索結果 0 件など、本文を中央寄せにしたい場面で使う modifier */
.narrative-text--center {
	text-align: center;
}

/* 404 内の「Home / Works / News」など補助リンク行に使う上余白 */
.narrative-text-actions {
	margin-top: 1.5rem;
}

.narrative-text p {
	font-family: var(--font-serif);
	font-size: clamp(1.2rem, 2vw + 4px, 1.6rem);
	line-height: 2.6;
	margin-bottom: clamp(1.5rem, 4vw, 2.5rem);
	letter-spacing: 0.03em;
}

.narrative-en {
	font-family: var(--font-en) !important;
	font-weight: var(--en-weight) !important;
	letter-spacing: var(--en-spacing) !important;
	font-size: clamp(1.2rem, 2vw + 4px, 1.6rem) !important;
	line-height: 2 !important;
}

.narrative-large {
	font-size: clamp(1.6rem, 3.5vw + 4px, 2.6rem) !important;
	line-height: 2 !important;
	font-weight: 400;
}

/* Random offset positions — like a hand-placed collage */
.narrative:nth-child(odd) { padding-left: clamp(2rem, 8vw, 10rem); }
.narrative:nth-child(even) { padding-left: clamp(2rem, 25vw, 30rem); }
.narrative--closing { padding-left: clamp(2rem, 15vw, 20rem); }

.video-break {
	overflow: hidden;
	max-width: 70vw;
	margin-left: 5vw;
}

.video-break video {
	width: 100%;
	/* iOS Safari は <video preload="none"> で src 未設定だと要素が 0 高さに潰れ、
	   poster 画像が見えなくなる。aspect-ratio を与えて領域を確保しておく。
	   実動画も 1920×1080 = 16:9 なのでズレはない。 */
	aspect-ratio: 16 / 9;
	object-fit: cover;
	display: block;
	border-radius: 3px;
	/* poster 画像が読み込まれる前に薄背景を置いておく (CLS 防止) */
	background: var(--color-bg-accent);
}

.photo-break {
	overflow: hidden;
	max-width: 55vw;
	padding: 0;
}

.photo-break img {
	width: 100%;
	display: block;
	border-radius: 3px;
}

.photo-caption {
	font-family: var(--font-serif);
	font-size: clamp(1rem, 1.4vw, 1.2rem);
	font-weight: 400;
	letter-spacing: 0.06em;
	color: var(--color-text);
	margin-top: 1.2rem;
	text-align: center;
}

/* Stagger photo positions like a collage */
.photo-break:nth-of-type(1) { margin-left: 5vw; }
.photo-break:nth-of-type(2) { margin-left: auto; margin-right: 8vw; }
.photo-break:nth-of-type(3) { margin-left: 20vw; }
.photo-break:nth-of-type(4) { margin-left: auto; margin-right: 5vw; }
.photo-break:nth-of-type(5) { margin-left: 10vw; }

.photo-pair {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: clamp(1rem, 2vw, 2rem);
	max-width: 50vw;
	margin-left: auto;
	margin-right: 10vw;
	padding: 0;
}

.photo-pair-item img {
	width: 100%;
	aspect-ratio: 1;
	object-fit: cover;
	border-radius: 3px;
}

@media (max-width: 767.98px) {
	.video-break { max-width: 92vw; margin-left: 4vw; }
	.photo-break { max-width: 85vw; }
	.photo-break:nth-of-type(1) { margin-left: 3vw; }
	.photo-break:nth-of-type(2) { margin-left: auto; margin-right: 3vw; }
	.photo-break:nth-of-type(3) { margin-left: 8vw; }
	.photo-break:nth-of-type(4) { margin-left: auto; margin-right: 3vw; }
	.photo-pair { grid-template-columns: 1fr; max-width: 75vw; margin-left: 5vw; }
	.narrative:nth-child(odd) { padding-left: var(--px); }
	.narrative:nth-child(even) { padding-left: clamp(2rem, 10vw, 5rem); }
}





/* ==========================================================================
   WORKS
   ========================================================================== */
.works-section { padding: var(--space-section) 0; }

.works-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: clamp(1.5rem, 3vw, 3rem);
}

.works-more,
.news-more {
	margin-top: clamp(2rem, 4vw, 3rem);
	text-align: center;
}

.work-card { position: relative; overflow: hidden; }
.work-card a { display: block; }

.work-card-image {
	aspect-ratio: 1 / 1;
	overflow: hidden;
	border-radius: 3px;
}

.work-card-image img {
	width: 100%; height: 100%;
	object-fit: cover;
	transition: transform 0.7s cubic-bezier(0.25, 0.1, 0.25, 1);
}

.work-card.has-link:hover .work-card-image img { transform: scale(1.04); }
.work-card.has-link { cursor: pointer; }

.work-card-info { padding: 1rem 0 0; }

.work-card-title {
	font-family: var(--font-en);
	font-size: clamp(1rem, 1.3vw, 1.3rem);
	font-weight: var(--en-weight);
	letter-spacing: var(--en-spacing);
	font-weight: 400;
	margin-bottom: 0.15rem;
}

.work-card-category {
	font-size: 0.9rem;
	font-weight: var(--en-weight);
	letter-spacing: var(--en-spacing);
	color: var(--color-text-muted);
}

/* ==========================================================================
   ABOUT section (top page) — text + photo rhythm like bookluck
   ========================================================================== */


.about-more,
.link-arrow {
	font-family: var(--font-en);
	font-size: 0.9rem;
	font-weight: var(--en-weight);
	letter-spacing: 0.04em;
	display: inline-block;
	margin-top: 2.5rem;
	padding-bottom: 2px;
	border-bottom: 1px solid var(--color-border);
	transition: border-color var(--ease);
}
.about-more:hover,
.link-arrow:hover { border-bottom-color: var(--color-text); opacity: 1; }

/* ==========================================================================
   MEMBERS (top page)
   ========================================================================== */





/* ==========================================================================
   CONTACT section (top page)
   ========================================================================== */

.contact-email {
	font-family: var(--font-serif);
	font-size: 1.1rem;
	font-style: italic;
}

/* ==========================================================================
   SINGLE WORK
   ========================================================================== */
.single-work-header {
	padding-top: 8rem;
	padding-bottom: 3rem;
}

.single-work-title {
	font-family: var(--font-en);
	font-size: clamp(1.4rem, 3vw, 2.2rem);
	font-weight: var(--en-weight);
	letter-spacing: var(--en-spacing);
	margin-bottom: 0.75rem;
}

.single-work-meta {
	font-family: var(--font-en);
	font-size: 0.9rem;
	font-weight: var(--en-weight);
	letter-spacing: var(--en-spacing);
	color: var(--color-text-muted);
}

.single-work-meta span + span::before {
	content: '·';
	margin: 0 0.75rem;
	color: var(--color-border);
}

/* Role は konst の仕事内容のクレジット表記。
   editorial トーンを強めるため明朝 (Noto Serif / Hiragino Mincho) で差別化。
   Client / Year の英数ゴシックと対比で静かに目立つ。 */
.single-work-meta__role {
	font-family: var(--font-serif);
	letter-spacing: 0.02em;
}

.single-work-featured { margin-bottom: var(--space-block); }
.single-work-featured img { width: 100%; border-radius: 3px; }

.single-work-content {
	max-width: 680px;
	margin: 0 auto;
	padding: 0 var(--px) var(--space-section);
}

.single-work-content p {
	/* リード段落サイズ。明朝で読ませる editorial トーン */
	font-size: 1.05rem;
	line-height: 2.15;
	margin-bottom: 2rem;
}

/* 本文内のリスト (メッセージ一覧 / 宛先セグメント等) も同じトーンで揃える */
.single-work-content ul,
.single-work-content ol {
	font-size: 1.05rem;
	line-height: 2.15;
	margin: 0 0 2rem;
	padding-left: 1.25em;
}
.single-work-content li {
	margin-bottom: 0.3rem;
}

/* 本文内の見出し (H2): 明朝、下段の本文とのあいだに大きな余白を取って
   セクション区切りとして機能させる。 */
.single-work-content h2,
.single-work-content .wp-block-heading {
	font-family: var(--font-serif);
	font-size: clamp(1.3rem, 2.5vw, 1.7rem);
	font-weight: 400;
	line-height: 2;
	letter-spacing: 0.04em;
	margin-top: clamp(4rem, 8vw, 6rem);
	margin-bottom: clamp(2.5rem, 5vw, 3.5rem);
}
/* コンテンツ先頭の見出しは editorial hero として、通常 H2 より一段大きく、
   ただし大きすぎず控えめにドラマチックに。本文への余白は広めに。 */
.single-work-content > h2:first-child,
.single-work-content > .wp-block-heading:first-child {
	font-size: clamp(1.55rem, 3.25vw + 4px, 2.25rem);
	line-height: 1.85;
	margin-top: 0;
	margin-bottom: clamp(2.75rem, 5.5vw, 4.25rem);
}

/* ---------- Single Work: 本文内のブロック画像 / ギャラリーの align ---------- */
/* 本文テキストは 680px 幅を保って読みやすく、画像は alignwide (1100px) /
   alignfull (100vw) で突き抜けて見せる editorial レイアウト。
   ユーザはブロックエディタの画像ブロックで「ワイド幅 / 全幅」を選択するだけ。 */

/* 画像ブロック: デフォルト (幅設定なし) は親コンテナ幅 (680px) に収まる */
.single-work-content .wp-block-image,
.single-work-content .wp-block-gallery {
	margin: 3rem auto;
}
.single-work-content .wp-block-image img {
	width: 100%;
	height: auto;
	display: block;
	border-radius: 3px;
}
.single-work-content .wp-block-image figcaption {
	margin-top: 0.75rem;
	font-size: 0.82rem;
	color: var(--color-text-muted);
	text-align: center;
	line-height: 1.7;
}

/* alignwide: 〜1100px (viewport が広い時のみ突き抜ける) */
.single-work-content .wp-block-image.alignwide,
.single-work-content .wp-block-gallery.alignwide,
.single-work-content .alignwide {
	width: min(1100px, calc(100vw - 2 * var(--px)));
	max-width: none;
	margin-left: calc((100% - min(1100px, calc(100vw - 2 * var(--px)))) / 2);
	margin-right: calc((100% - min(1100px, calc(100vw - 2 * var(--px)))) / 2);
}

/* alignfull: viewport 全幅 (padding も無視して端まで) */
.single-work-content .wp-block-image.alignfull,
.single-work-content .wp-block-gallery.alignfull,
.single-work-content .alignfull {
	width: 100vw;
	max-width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
}
/* alignfull の画像は画面端まで張り出す想定なので角丸は外す */
.single-work-content .wp-block-image.alignfull img,
.single-work-content .alignfull img {
	border-radius: 0;
}

/* ==========================================================================
   WORKS ARCHIVE
   ========================================================================== */
.works-archive {
	padding-top: 8rem;
	padding-bottom: var(--space-section);
}

.works-archive-title {
	font-family: var(--font-en);
	font-size: clamp(1.2rem, 2vw, 1.6rem);
	font-weight: var(--en-weight);
	letter-spacing: var(--en-spacing);
	color: var(--color-text-muted);
	margin-bottom: var(--space-block);
}

/* ==========================================================================
   PAGE: ABOUT
   ========================================================================== */









.about-member-link .about-more { margin-top: 1rem; }

.about-info {
	margin-top: var(--space-section);
	padding-top: var(--space-block);
	border-top: 1px solid var(--color-border);
}

.about-info dt {
	font-family: var(--font-en);
	font-size: 0.9rem;
	font-weight: var(--en-weight);
	color: var(--color-text-muted);
	margin-bottom: 0.4rem;
}

.about-info dd {
	font-size: 0.88rem;
	margin-bottom: 2rem;
}

/* ==========================================================================
   PAGE: CONTACT
   ========================================================================== */


.contact-form label {
	font-family: var(--font-en);
	font-size: 0.9rem;
	font-weight: var(--en-weight);
	letter-spacing: var(--en-spacing);
	margin-bottom: 0.4rem;
}

.contact-form .form-control {
	border: none;
	border-bottom: 1px solid var(--color-border);
	border-radius: 0;
	padding: 0.75rem 0;
	/* iOS Safari は <input>/<textarea> の font-size が 16px 未満だとタップ時に画面を自動拡大する。
	   それを防ぐため PC/タブレットも 16px (1rem) に固定する。文字が大きくなるがフォーム体験優先。 */
	font-size: 1rem;
	background: transparent;
	color: var(--color-text);
}

.contact-form .form-control:focus {
	box-shadow: none;
	border-bottom-color: var(--color-green);
}

.contact-form textarea.form-control { min-height: 140px; }

.btn-konst {
	font-family: var(--font-en);
	font-size: 0.875rem;
	font-weight: 600;
	letter-spacing: var(--en-spacing);
	background: var(--color-green);
	color: #fff;
	border: none;
	padding: 0.85rem 3rem;
	border-radius: 2px;
	transition: opacity var(--ease);
}
.btn-konst:hover { background: var(--color-green); color: #fff; opacity: 0.75; }

/* ==========================================================================
   PAGE: VISION — poetic, visual, rhythmic
   ========================================================================== */
.page-vision {
	padding-top: 0;
	padding-bottom: 0;
}

.vision-hero {
	background: var(--color-bg-warm);
	padding: clamp(8rem, 20vh, 14rem) var(--px) clamp(4rem, 10vh, 8rem);
}

.vision-lead {
	font-family: var(--font-serif);
	font-size: clamp(1.5rem, 3.5vw + 2px, 2.4rem);
	font-weight: 400;
	line-height: 2;
	max-width: 600px;
	margin: 0 auto;
	text-align: center;
}

.vision-hero {
	display: flex;
	align-items: center;
	justify-content: center;
}

.vision-photo {
	width: 100%;
	overflow: hidden;
}

.vision-photo img {
	width: 100%;
	display: block;
}

.vision-text-block {
	padding: var(--space-section) var(--px);
	max-width: 640px;
	margin: 0 auto;
	text-align: center;
}

.vision-text-block p {
	font-family: var(--font-serif);
	font-size: clamp(1rem, 1.3vw + 6px, 1.2rem);
	line-height: 2.6;
	margin-bottom: 2rem;
}

.vision-text-block--wide {
	max-width: 100%;
}

.vision-bg-warm {
	background: var(--color-bg-warm);
}

.vision-structure {
	padding: var(--space-section) var(--px);
}

.vision-flow {
	display: flex;
	flex-direction: column;
	gap: clamp(2rem, 5vw, 3.5rem);
	max-width: 560px;
}

.vision-flow-item {
	display: flex;
	gap: 1.5rem;
	align-items: flex-start;
}

.vision-flow-num {
	font-family: var(--font-serif);
	font-size: 1.5rem;
	font-style: italic;
	color: var(--color-text-muted);
	flex-shrink: 0;
	line-height: 1;
	padding-top: 0.2rem;
}

.vision-flow-item h3 {
	font-family: var(--font-body);
	font-size: 0.95rem;
	font-weight: 500;
	letter-spacing: 0.06em;
	margin-bottom: 0.5rem;
}

.vision-flow-item p {
	font-size: 0.875rem;
	line-height: 2;
	color: var(--color-text-light);
	margin-bottom: 0;
}

.vision-services {
	padding: var(--space-section) var(--px);
	background: var(--color-bg-warm);
}

.vision-service-list {
	display: grid;
	grid-template-columns: 1fr;
	gap: clamp(2rem, 5vw, 3rem);
	max-width: 560px;
}

.vision-service-item dt {
	font-family: var(--font-serif);
	font-size: 1rem;
	font-style: italic;
	margin-bottom: 0.6rem;
}

.vision-service-item dd {
	font-size: 0.875rem;
	line-height: 2;
	color: var(--color-text-light);
	margin-left: 0;
}

/* ==========================================================================
   SINGLE MEMBER
   ========================================================================== */











.external-icon { font-size: 0.7em; opacity: 0.4; margin-left: 0.2em; }

/* ==========================================================================
   SINGLE POST CONTENT
   ========================================================================== */
.single-post-content p {
	font-size: clamp(1rem, 1.3vw + 4px, 1.15rem);
	line-height: 2.4;
	margin-bottom: 2.5rem;
}

.single-post-content h2,
.single-post-content h3,
.single-post-content h4 {
	font-family: var(--font-serif);
	font-weight: 400;
	line-height: 1.8;
	margin-top: clamp(3rem, 6vw, 5rem);
	margin-bottom: clamp(1.5rem, 3vw, 2.5rem);
}

.single-post-content h2 {
	font-size: clamp(1.3rem, 2.2vw + 4px, 1.7rem);
}

.single-post-content h3 {
	font-size: clamp(1.15rem, 1.8vw + 4px, 1.4rem);
}

.single-post-content img {
	border-radius: 3px;
	margin: clamp(2rem, 5vw, 4rem) 0;
}

.single-post-content a {
	border-bottom: 1px solid var(--color-border);
	padding-bottom: 1px;
	transition: border-color var(--ease);
}

.single-post-content a:hover {
	border-bottom-color: var(--color-text);
	opacity: 1;
}

.single-post-content ul,
.single-post-content ol {
	margin-bottom: 2rem;
	padding-left: 1.5em;
}

.single-post-content li {
	margin-bottom: 0.5rem;
	line-height: 2.2;
}

.single-post-content blockquote {
	border-left: 3px solid var(--color-green);
	padding-left: 1.5rem;
	margin: 2.5rem 0;
	font-style: italic;
}

.single-post-content strong {
	font-weight: 500;
}

.single-post-content iframe {
	max-width: 100%;
	margin: 2rem 0;
	border-radius: 3px;
}

.single-post-content figure {
	margin: clamp(2rem, 5vw, 4rem) 0;
}

.single-post-content figcaption {
	font-size: 0.875rem;
	margin-top: 0.75rem;
}

/* ==========================================================================
   NEWS
   ========================================================================== */
.news-section {
	padding: var(--space-section) 0;
}

.news-list {
	list-style: none;
	padding: 0;
	margin: 0;
	max-width: 700px;
}

.news-item {
	display: flex;
	gap: clamp(1rem, 3vw, 2rem);
	align-items: baseline;
	padding: clamp(0.8rem, 1.5vw, 1.2rem) 0;
	border-bottom: 1px solid var(--color-border);
}

.news-item:first-child {
	border-top: 1px solid var(--color-border);
}

.news-date {
	font-family: var(--font-en);
	font-size: 0.9rem;
	font-weight: var(--en-weight);
	letter-spacing: var(--en-spacing);
	flex-shrink: 0;
	white-space: nowrap;
}

.news-title {
	font-family: var(--font-serif); /* 記事リストのタイトル = 明朝 */
	font-size: clamp(0.9rem, 1.2vw, 1.05rem);
	line-height: 1.7;
}

@media (max-width: 767.98px) {
	.news-item {
		flex-direction: column;
		gap: 0.3rem;
	}
}

/* ==========================================================================
   FOOTER
   ========================================================================== */
.site-footer { border-top: 1px solid var(--color-border); }

.footer-copy { font-family: var(--font-en); font-size: 0.9rem; font-weight: var(--en-weight); letter-spacing: var(--en-spacing); color: var(--color-text-muted); }

.footer-social a,
.footer-links a {
	font-family: var(--font-en);
	font-size: 0.9rem;
	font-weight: var(--en-weight);
	letter-spacing: var(--en-spacing);
	color: var(--color-text-muted);
	text-decoration: none;
}
.footer-links a + a {
	margin-left: 1.5rem;
}
.footer-links a:hover {
	opacity: 0.7;
}
/* 現在ページ (例: /privacy-policy/) への footer リンクに下線で「今ここ」を示す */
.footer-links a[aria-current="page"] {
	text-decoration: underline;
	text-decoration-thickness: 1.5px;
	text-underline-offset: 4px;
}

/* ==========================================================================
   ANIMATIONS
   ========================================================================== */
.fade-in {
	opacity: 0;
	transform: translateY(24px);
	transition: opacity 0.9s ease, transform 0.9s ease;
}
.fade-in.visible {
	opacity: 1;
	transform: translateY(0);
}

/* stagger children */
.fade-in:nth-child(2) { transition-delay: 0.1s; }
.fade-in:nth-child(3) { transition-delay: 0.2s; }
.fade-in:nth-child(4) { transition-delay: 0.25s; }
.fade-in:nth-child(5) { transition-delay: 0.3s; }
.fade-in:nth-child(6) { transition-delay: 0.35s; }

/* ==========================================================================
   PLACEHOLDER (dev)
   ========================================================================== */
.placeholder-img {
	background: var(--color-bg-accent);
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--color-text-muted);
	font-size: 0.875rem;
	border-radius: 3px;
}

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */
/* iPad (820/1180) までは .navbar-expand-xl でハンバーガーになる。
   タップ時は全画面オーバーレイで項目を中央揃え表示する。 */
@media (max-width: 1199.98px) {
	.site-header .navbar { padding: 0.8rem 0; }

	/* ハンバーガーボタンをオーバーレイより上に置いて、開いた状態でも×として再タップできるように */
	.navbar-toggler {
		position: relative;
		z-index: 10;
	}

	/* .collapse が閉じている間は Bootstrap の display:none が効くので何もしない。
	   .show / .collapsing どちらでも全画面モードに切替える。
	   ※ .collapsing は Bootstrap が height を 0 → scrollHeight にインラインで animate する
	     中間状態で、ここに .show 用スタイルを当てないと「小さな navbar が展開 → 全画面に
	     切替」と 2 段階に見える (ユーザー報告のバグ)。両方に同じスタイルを当て、さらに
	     Bootstrap がインラインで設定する height / transition を !important で打ち消して、
	     開閉を一発で全画面化する。 */
	.navbar-collapse.show,
	.navbar-collapse.collapsing {
		position: fixed;
		inset: 0;
		z-index: 1; /* .site-header の内部 stacking で toggler (z:10) より下に */
		background: rgba(255, 255, 255, 0.98);
		backdrop-filter: blur(12px);
		padding: 5rem 1.5rem 2rem;
		display: flex !important;
		flex-direction: column;
		align-items: center;
		justify-content: center !important; /* Bootstrap の .justify-content-end 上書き */
		height: auto !important; /* Bootstrap のインライン height: 0/scrollHeight を無効化 */
	}
	.navbar-collapse.collapsing {
		transition: none !important; /* 高さ animation を殺して全画面へ即切替 */
	}

	/* リストブロック自体を画面中央 (横方向) に配置し、中の各項目も中央揃え。
	   font / padding / gap / width を同じ比率 (≒ 0.75) で縮めて、
	   以前のバランスを保ちつつ周囲に余白が生まれるようにする。
	   縦方向は完全中央だと下寄りに見えるので、少し上にオフセットする
	   (横は画面幅ごとのブレが目立つのでオフセットしない)。 */
	.navbar-collapse.show .navbar-nav,
	.navbar-collapse.collapsing .navbar-nav {
		flex-direction: column;
		align-items: center;
		gap: 0.3rem;
		text-align: center;
		width: 60%;
		max-width: 280px;
		margin-top: -3rem;
	}

	.navbar-collapse.show .nav-link,
	.navbar-collapse.collapsing .nav-link {
		font-size: 1.15rem !important;
		padding: 0.35rem 0 !important;
	}

	/* 全画面ナビ内の子メニュー: 左縦線 / 左インデントを外して中央寄せにし、
	   親項目より一段小さいフォントで視覚的に階層を示す。 */
	.navbar-collapse.show .sub-menu,
	.navbar-collapse.collapsing .sub-menu {
		border: none;
		padding: 0;
		text-align: center;
	}
	.navbar-collapse.show .sub-menu .nav-link,
	.navbar-collapse.collapsing .sub-menu .nav-link {
		font-size: 0.9rem !important;
		/* WCAG 2.5.5 タッチターゲット: font 14.4px + padding 0.65rem×2 = 35.2px
		   指でタップしやすい縦スペースを確保 (24×24 CSS px 下限を大きく上回る)。 */
		padding: 0.65rem 0 !important;
		text-align: center;
	}

	/* ハンバーガーを × に変形 (開いたとき) */
	.navbar-toggler[aria-expanded="true"] .navbar-toggler-icon {
		background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23009868' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M7 7l16 16M23 7L7 23'/%3e%3c%2fsvg%3e") !important;
	}
}

/* メニュー開放中: 背面のスクロールを止め、色モードトグル (z-index 1100) も一時的に隠す */
body.menu-open {
	overflow: hidden;
}
body.menu-open .color-toggle {
	display: none;
}

/* 単記事の前後ナビ (Prev / All / Next) が viewport に入ったら、
   色トグルを半透明にして pointer-events を無効化。
   Next → ボタンと fixed 位置の色トグルが指タップ範囲で重なる干渉を回避。 */
.color-toggle.is-yielding {
	opacity: 0;
	pointer-events: none;
}

@media (max-width: 767.98px) {
	.works-grid { grid-template-columns: 1fr; gap: 2.5rem; }

	.opening { min-height: 70svh; }

	.works-section { padding: clamp(4rem, 10vw, 6rem) 0; }

	.vision-flow-num { font-size: 1.2rem; }

	.vision-service-list { grid-template-columns: 1fr; }
}

@media (min-width: 768px) and (max-width: 991.98px) {
	.works-grid { gap: 2rem; }
}

/* iPad ランドスケープ / 小型ラップトップ (992-1199px) でも 3 カラム化。
   2 カラムだとカードが巨大 (~330×330px) になり密度不足のため。 */
@media (min-width: 992px) {
	.works-grid { grid-template-columns: repeat(3, 1fr); gap: 2rem; }
}

@media (min-width: 1200px) {
	.works-grid { gap: clamp(1.5rem, 3vw, 3rem); }
	.vision-service-list { grid-template-columns: repeat(2, 1fr); }
}


/* ==========================================================================
   PAGE: ABOUT — Member Profile (inline style migration)
   ========================================================================== */

/* Member section overrides */
.narrative--member {
    padding-top: clamp(2rem, 5vw, 4rem);
    padding-bottom: clamp(2rem, 5vw, 4rem);
    padding-left: clamp(2rem, 8vw, 10rem) !important;
}

.narrative-text--member {
    max-width: 900px;
}

/* Member profile card */
.member-profile--about {
    display: flex;
    gap: 2.5rem;
    align-items: flex-start;
    margin-bottom: 2.5rem;
    flex-wrap: wrap;
}

.member-photo--circle {
    flex: 0 0 auto;
}


.member-info--about {
    flex: 1;
    min-width: 220px;
}

.member-info-name {
    font-family: var(--font-serif);
    font-size: clamp(1.5rem, 2.2vw, 2rem);
    line-height: 1.4;
    margin-bottom: 0.4rem;
}

.member-info-title {
    font-size: 0.875rem;
    color: var(--color-text-muted);
    letter-spacing: var(--en-spacing);
    margin-bottom: 1rem;
}

/* Profile bio — same font-size as news single post body */
.member-info-bio {
    font-size: clamp(1rem, 1.3vw + 4px, 1.15rem);
    line-height: 2.4;
}

.member-info-bio p {
    font-size: inherit;
    font-family: var(--font-serif);
    letter-spacing: normal;
    margin-bottom: 1rem;
    line-height: 2.4;
}

/* Member works sub-section */

.member-links {
    list-style: none;
    padding: 0;
    margin: 1.2rem 0 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem 1.4rem;
    font-family: var(--font-en);
    font-size: 0.875rem;
    letter-spacing: var(--en-spacing);
}
.member-links a {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    color: var(--color-text);
    border-bottom: 1px solid transparent;
    padding-bottom: 2px;
    transition: border-color var(--ease), opacity var(--ease);
}
.member-links a:hover {
    border-bottom-color: var(--color-text);
    opacity: 0.75;
}
.member-link-icon {
    flex: 0 0 auto;
    vertical-align: middle;
}


.works-grid--member {
    margin-top: 0;
    grid-template-columns: repeat(4, 1fr);
    gap: clamp(1rem, 2vw, 1.8rem);
}

@media (max-width: 991.98px) {
    .works-grid--member { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 575.98px) {
    .works-grid--member { grid-template-columns: repeat(2, 1fr); }
}

/* Members 見出し: 大きく + 上下余白を圧縮 */
.narrative--members {
    padding-top: clamp(2rem, 4vw, 3rem) !important;
    padding-bottom: clamp(0.5rem, 1.5vw, 1rem) !important;
}
.section-label--members {
    font-size: clamp(1.5rem, 2.5vw, 2rem);
    color: var(--color-text);
    text-transform: none;
    letter-spacing: 0.04em;
}

.placeholder-img--4x3 {
    width: 100%;
    height: 100%;
    aspect-ratio: 4 / 3;
}

/* Organization info services list */
.org-info-services {
    font-size: 0.875rem;
    line-height: 2.2;
}

/* ==========================================================================
   SINGLE WORK — bottom CTA (類似事例へのお問い合わせ受け皿)
   ========================================================================== */

.work-cta {
	margin-top: 0;
	padding: 0 0 clamp(3rem, 6vw, 5rem);
}
.work-cta-wrap {
	border-top: 1px solid var(--color-border);
	padding-top: clamp(2rem, 4vw, 3.5rem);
}

.work-cta-inner {
	max-width: 640px;
	margin: 0 auto;
	text-align: center;
}

.work-cta-label {
	font-family: var(--font-en);
	font-size: 0.875rem;
	font-weight: var(--en-weight);
	letter-spacing: var(--en-spacing);
	color: var(--color-text-muted);
	margin-bottom: 1.2rem;
}

.work-cta-heading {
	font-family: var(--font-serif); /* CTA は呼びかけの文言なので明朝で柔らかく */
	font-size: clamp(1.1rem, 2vw, 1.5rem);
	font-weight: 500;
	line-height: 1.7;
	margin-bottom: 1.2rem;
}

.work-cta-text {
	font-size: 0.95rem;
	line-height: 1.9;
	color: var(--color-text-muted);
	margin-bottom: clamp(1.8rem, 3vw, 2.5rem);
}

.contact-ref-note {
	font-size: 0.9rem;
	color: var(--color-text-muted);
	text-align: center;
	padding: 1rem 0;
}
.contact-ref-label {
	font-family: var(--font-en);
	font-size: 0.875rem;
	letter-spacing: var(--en-spacing);
	color: var(--color-text-muted);
	margin-right: 0.6rem;
	padding-right: 0.6rem;
	border-right: 1px solid var(--color-border);
}
.contact-ref-note a {
	color: var(--color-text);
	border-bottom: 1px solid var(--color-border);
	padding-bottom: 1px;
}
.contact-ref-note a:hover { border-bottom-color: var(--color-text); }

/* ==========================================================================
   PAGINATION — works archive & other archives
   ========================================================================== */

.pagination {
	margin-top: clamp(3rem, 6vw, 5rem);
	display: flex;
	justify-content: center;
}

.pagination .nav-links {
	display: flex;
	align-items: center;
	gap: 0.4rem;
	flex-wrap: wrap;
	justify-content: center;
}

.pagination .screen-reader-text { display: none; }

.pagination .page-numbers {
	font-family: var(--font-en);
	font-size: 0.875rem;
	font-weight: var(--en-weight);
	letter-spacing: var(--en-spacing);
	min-width: 2.2rem;
	height: 2.2rem;
	padding: 0 0.6rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--color-text);
	border-bottom: 1px solid transparent;
	transition: border-color var(--ease), opacity var(--ease);
}

.pagination a.page-numbers:hover {
	border-bottom-color: var(--color-text);
	opacity: 0.75;
}

.pagination .page-numbers.current {
	border-bottom-color: var(--color-text);
	font-weight: 600;
}

.pagination .page-numbers.dots {
	border-bottom: none;
	color: var(--color-text-muted);
}

.pagination .prev,
.pagination .next {
	font-size: 1rem;
	border-bottom: none;
}

/* ==========================================================================
   SINGLE POST (NEWS) — inline style migration
   ========================================================================== */

.opening--news {
    min-height: 0;
    padding-top: clamp(5rem, 14vh, 10rem);
    padding-bottom: clamp(1rem, 2vh, 2rem);
}
.opening--news .opening-headline {
    font-family: var(--font-serif); /* news 単記事のエントリータイトル = 明朝 */
    font-weight: 400;
    letter-spacing: 0.04em;
    margin-bottom: 0.5rem; /* news 単記事ではタイトル下マージンも詰める */
}
/* News 単記事: タイトル直下 (or 写真直下) と本文の隙間を縮める。
   .narrative の標準 padding-top (5-10rem) はここでは過剰なため上書き */
.opening--news + .narrative,
.opening--news + .photo-break + .narrative {
    padding-top: clamp(0.5rem, 1.5vw, 1.5rem);
}
/* 本文先頭の段落のブラウザ既定 margin-top を打ち消す */
.opening--news + .narrative .narrative-text--single > .single-post-content > *:first-child,
.opening--news + .photo-break + .narrative .narrative-text--single > .single-post-content > *:first-child {
    margin-top: 0;
}

.news-date--single {
    display: block;
    margin-bottom: 1.5rem;
}

.opening-headline--news {
    font-size: clamp(1.3rem, 2.5vw, 1.8rem);
}

.narrative-text--single {
    max-width: 640px;
}

.narrative--no-top {
    padding-top: 0;
}

/* ==========================================================================
   INLINE STYLE MIGRATION — extracted from PHP templates
   ========================================================================== */

/* --- Shared page openings (min-height variants) --- */
.opening--member {
    min-height: 50svh;
}

/* Contact: フォームがファーストビューに入るよう opening を圧縮 */
.opening--contact {
    min-height: 0;
    padding-top: clamp(5rem, 14vh, 10rem);
    padding-bottom: clamp(1rem, 2vh, 2rem);
}

/* ref_work 経由: さらに圧縮 + reference note を表示 */
.opening--contact-referred {
    padding-bottom: clamp(0.5rem, 1vh, 1.5rem);
}
.opening--contact-referred .contact-ref-note {
    margin-bottom: 1rem;
    text-align: left;
}

/* Contact opening 直後の narrative の上余白も詰める */
.opening--contact + .narrative {
    padding-top: clamp(1.5rem, 3vw, 3rem);
}

/* --- Page headline font-size (contact, home/news, organization) --- */
.opening-headline--page {
    font-size: clamp(1.4rem, 3vw, 2rem);
}

/* --- Contact opening の小さな注記 (営業・勧誘お断り等) --- */
.opening-note {
    font-size: 0.8rem;
    line-height: 1.8;
    color: var(--color-text-muted);
    max-width: 38em;
    margin-top: -1rem;
    margin-bottom: 0;
}

/* 英語タイトルはゴシック (Helvetica Neue) で出す。
   日本語タイトルは親 .opening-headline の明朝を維持。
   News / Organization / Page Not Found 等、ブロック lang="en" が付いた
   見出しに適用される。 */
.opening-headline[lang="en"],
.opening-headline--page[lang="en"] {
    font-family: var(--font-en);
    font-weight: var(--en-weight);
    letter-spacing: var(--en-spacing);
}

/* --- Member single headline --- */
.opening-headline--member {
    font-size: clamp(1.6rem, 3.5vw, 2.4rem);
}

/* --- News section: no top padding (home.php) --- */
.news-section--top-none {
    padding-top: 0;
}

/* --- Contact form wrapper --- */
.contact-form-wrap {
    max-width: 480px;
    margin: 0 auto;
    width: 100%;
}

/* --- Single work nav (prev/next) --- */
.single-work-nav {
    border-top: 1px solid var(--color-border);
}

/* --- Section sublabel (small muted label below section-label) --- */
.section-sublabel {
    font-size: 0.8em;
    opacity: 0.7;
    margin-top: 0.2em;
}

/* ==========================================================================
   PAGE: ORGANIZATION
   ========================================================================== */

/* Opening section */
.opening--organization {
    min-height: 0;
    padding-top: clamp(5rem, 14vh, 10rem);
    padding-bottom: clamp(1rem, 2vh, 2rem);
}

/* Info section wrapper */
.org-info-section {
    padding: clamp(1.5rem, 3vw, 3rem) var(--px) clamp(4rem, 8vw, 8rem);
}

.org-info-section > div {
    max-width: 860px;
}

/* Table */
.org-table {
    width: 100%;
    border-collapse: collapse;
    font-size: clamp(0.88rem, 1.1vw + 6px, 1rem);
    line-height: 2.2;
}

.org-table tr {
    border-top: 1px solid var(--color-border);
}

.org-table tr:last-child {
    border-bottom: 1px solid var(--color-border);
}

.org-table th {
    padding: 1.8rem 2rem 1.8rem 0;
    font-family: var(--font-en);
    font-size: 0.875rem;
    font-weight: 500;
    letter-spacing: 0.1em;
    white-space: nowrap;
    vertical-align: top;
    color: var(--color-text-muted);
    width: auto;
}

.org-table th:first-child {
    width: 12em;
}

.org-table td {
    padding: 1.8rem 0;
}

/* Inline link inside org table */
.org-table-link {
    border-bottom: 1px solid var(--color-border);
    padding-bottom: 1px;
}

/* Services list inside org table */
.org-services-list {
    margin-top: 1rem;
    padding-left: 0;
    list-style: none;
}


/* ==========================================================================
   ADDITIONAL RESPONSIVE STYLES
   ========================================================================== */

/* Hamburger menu 3-line color (green) */
.navbar-toggler-icon {
	background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23009868' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c%2fsvg%3e") !important;
}

/* Mobile + iPad: Contact ボタン (= 最終トップレベル項目) を上の Organization から離す。
   ハンバーガー全画面ナビと揃える breakpoint = 1199.98px。
   sub-menu 内の最後の <li> にもマッチしないよう、必ず直接子セレクタを使う。 */
@media (max-width: 1199.98px) {
	.navbar-nav > .nav-item:last-child {
		margin-top: 1.5rem;
	}
}

@media (max-width: 767.98px) {
	/* vision page opening text smaller on mobile */
	.vision-lead {
		font-size: clamp(1.1rem, 4vw + 2px, 1.8rem);
	}

	/* about/vision page opening headline smaller on mobile */
	.opening-headline {
		font-size: clamp(1.3rem, 4vw + 2px, 2.4rem);
	}
}


/* ============================================================
   Supporter Items (サポートデザイナー / スペシャルサポーター)
   ============================================================ */

.narrative--supporters {
    padding-top: var(--space-section);
    padding-bottom: 0;
}

.narrative--supporter-list {
    padding-top: 1.5rem;
    padding-bottom: var(--space-section);
}

.supporter-item {
    margin-bottom: 2.5rem;
    padding-bottom: 2.5rem;
    border-bottom: 1px solid var(--color-border, #e8e8e8);
}

.supporter-item:last-child {
    border-bottom: none;
    margin-bottom: 0;
    padding-bottom: 0;
}

.supporter-item-en {
    font-size: 0.824rem !important;
    letter-spacing: var(--en-spacing);
    color: var(--color-text-muted);
    margin-bottom: 0.3rem;

}

.supporter-item-name {
    font-family: var(--font-serif);
    font-size: clamp(1.1rem, 1.6vw, 1.4rem);
    font-weight: normal;
    line-height: 1.4;
    margin-bottom: 0.8rem;
}

.supporter-item-desc {
    font-size: 1.082rem !important;
    line-height: 2;
    margin-bottom: 0.8rem;
}

.supporter-item-bio {
    font-size: 1.082rem !important;
    color: var(--color-text-muted);
    line-height: 2;
    margin-bottom: 1rem;
}

/* Support Designer section: compact header spacing */
.narrative--supporters-first {
    padding-bottom: 0;
}

.narrative--supporters-first + .narrative--supporter-list {
    padding-top: 0.5rem;
}

/* Smaller text for supporter roles and descriptions */
.supporter-item-en--small {
    font-size: 0.824rem !important;
}

.supporter-item-desc--small {
    font-size: 1.082rem !important;
    line-height: 1.9;
}


/* ==========================================================================
   VIDEO — mute/unmute button
   ========================================================================== */
.video-wrap {
  position: relative;
  display: inline-block;
  width: 100%;
  /* inline-block 既定の vertical-align: baseline は <video> 直下に行ボックス
     ぶんの空間を残し video-break の下端に約 12px の隙間を作る。top に揃えて解消。 */
  vertical-align: top;
}

.video-mute-btn {
  position: absolute;
  bottom: 1rem;
  right: 1rem;
  /* Apple HIG の Minimum Touch Target 44×44pt を満たす */
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1px solid var(--color-green);
  background: var(--color-green);
  color: #fff;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background var(--ease), opacity var(--ease);
  padding: 0;
  z-index: 10;
}

.video-mute-btn:hover {
  background: #007a52;
  opacity: 1;
}

.video-mute-btn .icon-unmuted {
  display: none;
}

.video-mute-btn.is-unmuted .icon-muted {
  display: none;
}

.video-mute-btn.is-unmuted .icon-unmuted {
  display: block;
}


/* ==========================================================================
   VIDEO SEEKBAR
   ========================================================================== */
.video-seekbar-wrap {
  max-width: 70vw;
  margin-left: 5vw;
  margin-top: 0.75rem;
  display: flex;
  align-items: center;
  gap: 1rem;
}

/* 見た目は細線 (3px) のままに保ちつつ、タッチ領域を WCAG 2.5.5 準拠の 24px に拡張する。
   透明 padding 帯で上下に hit area を確保し、中の子 ::after が視覚的な実バー。 */
.video-seekbar-track {
  flex: 1;
  height: 24px;                     /* hit area 24px (WCAG 2.5.5) */
  background: transparent;
  position: relative;
  cursor: pointer;
  /* Safari/iOS でタッチジェスチャが拾われないように */
  touch-action: none;
}
/* 見た目の細バー (中央 3px) を疑似要素で描画 */
.video-seekbar-track::before {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  height: 3px;
  background: var(--color-border);
  border-radius: 2px;
  transition: height var(--ease);
}

.video-seekbar-wrap:hover .video-seekbar-track::before {
  height: 5px;
}

/* 再生進捗バー: 親 (.video-seekbar-track) が 24px hit area のため、
   視覚的には中央 3px 線に揃えて top/bottom で中央寄せする。 */
.video-seekbar-progress {
  position: absolute;
  top: 50%;
  left: 0;
  transform: translateY(-50%);
  height: 3px;
  width: 0%;
  background: var(--color-green);
  border-radius: 2px;
  transition: width 0.1s linear, height var(--ease);
  pointer-events: none;
}
.video-seekbar-wrap:hover .video-seekbar-progress {
  height: 5px;
}

.video-seekbar-time {
  font-family: var(--font-en);
  font-size: 0.875rem;
  font-weight: var(--en-weight);
  letter-spacing: var(--en-spacing);
  color: var(--color-text-muted);
  white-space: nowrap;
  flex-shrink: 0;
  min-width: 6rem;
  text-align: right;
}

@media (max-width: 767.98px) {
  .video-seekbar-wrap {
    max-width: 92vw;
    margin-left: 4vw;
  }
}

/* ==========================================================================
   BLOCK EDITOR — image width fix (single post / news)
   ========================================================================== */
.single-post-content .wp-block-image,
.single-post-content .wp-block-image figure {
  max-width: 100%;
}

.single-post-content .wp-block-image img {
  max-width: 100%;
  height: auto;
  display: block;
}

/* alignwide / alignfull を親コンテナ内に収める */
.single-post-content .wp-block-image.alignwide,
.single-post-content .wp-block-image.alignfull,
.single-post-content .alignwide,
.single-post-content .alignfull {
  max-width: 100%;
  width: 100%;
  margin-left: 0;
  margin-right: 0;
}

/* ---------- External Link Icon ---------- */
a[target="_blank"]::after {
	content: '';
	display: inline-block;
	width: 0.7em;
	height: 0.7em;
	margin-left: 0.25em;
	vertical-align: middle;
	background-color: currentColor;
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3Cpolyline points='15 3 21 3 21 9'/%3E%3Cline x1='10' y1='14' x2='21' y2='3'/%3E%3C/svg%3E");
	-webkit-mask-size: contain;
	-webkit-mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3Cpolyline points='15 3 21 3 21 9'/%3E%3Cline x1='10' y1='14' x2='21' y2='3'/%3E%3C/svg%3E");
	mask-size: contain;
	mask-repeat: no-repeat;
	mask-position: center;
}
/* 画像リンク・フッターリンクは除外 */
.work-card-image a::after,
.footer-social a::after,
.footer-links a::after {
	display: none;
}


/* ==========================================================================
   PAGE: BOOK (Nordic Modern Design)
   書籍ページ & 往復書簡 記事ページ
   ========================================================================== */

/* ---------- Book Top Page: .page-nordicmoderndesign ---------- */

.page-nordicmoderndesign .opening {
	background: var(--color-bg);
	padding-top: 0;
	padding-bottom: 0;
	padding-left: 0;
	padding-right: 0;
	min-height: unset;
	display: block;
}

/* 表紙画像ブロック */
.page-nordicmoderndesign .opening > .container-fluid:first-child {
	background: var(--color-bg-accent);
	padding-top: clamp(4rem, 8vw, 8rem);
	padding-bottom: clamp(3rem, 6vw, 6rem);
}

.page-nordicmoderndesign .opening > .container-fluid:first-child img {
	box-shadow: 0 8px 40px rgba(0, 152, 104, 0.1), 0 2px 12px rgba(0, 0, 0, 0.08);
	border-radius: 2px;
}

/* タイトル・書誌情報ブロック */
.page-nordicmoderndesign .opening > .container-fluid:nth-child(2) {
	padding-top: clamp(3rem, 6vw, 6rem);
	padding-bottom: clamp(3rem, 6vw, 6rem);
	border-bottom: 1px solid var(--color-border);
}

.page-nordicmoderndesign .opening .h2 {
	font-family: var(--font-serif);
	font-size: clamp(1.4rem, 2.5vw, 2rem);
	font-weight: 400;
	letter-spacing: 0.06em;
	line-height: 1.8;
	margin-bottom: 0.5rem;
}

.page-nordicmoderndesign .opening .h3 {
	font-family: var(--font-heading);
	font-size: clamp(1rem, 1.8vw, 1.3rem);
	font-weight: 400;
	letter-spacing: var(--en-spacing);
}

.page-nordicmoderndesign .opening .small {
	font-size: clamp(0.75rem, 1vw, 0.85rem);
	line-height: 2;
	color: var(--color-text);
	opacity: 0.6;
}

/* Amazon購入ボタン */
.page-nordicmoderndesign .opening a[href*="amzn"] {
	display: inline-block;
	border: 1.5px solid var(--color-green);
	padding: 0.6em 1.8em;
	border-radius: 2px;
	font-family: var(--font-heading);
	font-size: clamp(0.9rem, 1.2vw, 1rem);
	letter-spacing: var(--en-spacing);
	font-weight: 400;
	transition: background var(--ease), color var(--ease);
	opacity: 1;
}

.page-nordicmoderndesign .opening a[href*="amzn"]:hover {
	background: var(--color-green);
	color: #fff;
	opacity: 1;
}

/* エディトリアルテキストブロック */
.page-nordicmoderndesign .opening .text-right {
	font-style: italic;
	opacity: 0.7;
	font-size: clamp(0.85rem, 1.1vw, 0.95rem);
}

/* コラムリスト */
.page-nordicmoderndesign .nordicmoderndesign-list {
	list-style: none;
	padding: 0;
	margin: 0;
	margin-top: clamp(1.5rem, 3vw, 3rem);
}

.page-nordicmoderndesign .nordicmoderndesign-list li {
	border-top: 1px solid var(--color-border);
}

.page-nordicmoderndesign .nordicmoderndesign-list li:last-child {
	border-bottom: 1px solid var(--color-border);
}

.page-nordicmoderndesign .nordicmoderndesign-list li a {
	display: block;
	padding: 1.1em 0.2em;
	font-size: clamp(0.9rem, 1.2vw, 1rem);
	line-height: 1.6;
	letter-spacing: 0.02em;
	color: var(--color-text);
	opacity: 1;
	transition: padding-left var(--ease), opacity var(--ease);
}

.page-nordicmoderndesign .nordicmoderndesign-list li a:hover {
	padding-left: 0.8em;
	opacity: 0.6;
}

/* セクションタイトル（往復書簡）*/
.page-nordicmoderndesign .section-title {
	font-family: var(--font-serif);
	font-size: clamp(1rem, 1.8vw, 1.25rem);
	font-weight: 400;
	letter-spacing: 0.04em;
	color: var(--color-text);
	margin-bottom: 0;
}

/* 書店向けセクション */
.page-nordicmoderndesign section:last-child {
	background: transparent;
}

.page-nordicmoderndesign section:last-child p {
	font-size: clamp(0.85rem, 1.1vw, 0.95rem);
	line-height: 2.2;
	max-width: 640px;
	margin-left: auto;
	margin-right: auto;
}

/* ---------- Book Article Pages: .container-fluid.nordicmoderndesign ---------- */

/* 記事ヘッダー */
.container-fluid.nordicmoderndesign {
	padding-top: clamp(5rem, 8vw, 7rem);
}

.container-fluid.nordicmoderndesign .container {
	max-width: 900px;
}

.container-fluid.nordicmoderndesign h2.section-title {
	font-family: var(--font-serif);
	font-size: clamp(0.75rem, 1vw, 0.85rem);
	font-weight: 400;
	letter-spacing: 0.08em;
	color: var(--color-text);
	opacity: 0.55;
	margin-bottom: 1.5rem;
}

.container-fluid.nordicmoderndesign h2.section-title a {
	color: inherit;
	opacity: 1;
}

.container-fluid.nordicmoderndesign h2.section-title a:hover {
	opacity: 0.7;
}

/* アイキャッチ画像 */
/* アイキャッチ画像（ヘッダーエリア）のみ */
.container-fluid.nordicmoderndesign .row.pt-5 img.img-fluid {
	width: 100%;
	max-height: 480px;
	object-fit: cover;
	border-radius: 2px;
}

/* 本文中の画像（entry-content内）はリセット */
.container-fluid.nordicmoderndesign .entry-content img,
.container-fluid.nordicmoderndesign .entry-content figure img {
	width: auto;
	max-width: 100%;
	max-height: none;
	height: auto;
	object-fit: unset;
	border-radius: 0;
}

/* 記事タイトル */
.container-fluid.nordicmoderndesign .entry-title {
	font-family: var(--font-serif);
	font-size: clamp(1.3rem, 2.5vw, 1.9rem);
	font-weight: 400;
	letter-spacing: 0.04em;
	line-height: 1.7;
	margin-top: 1.5rem;
	margin-bottom: 0.3rem;
}

/* 投稿日 */
.container-fluid.nordicmoderndesign .list-date,
.list-date {
	font-family: var(--font-en);
	font-size: clamp(0.75rem, 1vw, 0.85rem);
	letter-spacing: var(--en-spacing);
	font-weight: var(--en-weight);
	color: var(--color-text);
	opacity: 0.45;
	margin-bottom: 2.5rem;
}

/* 本文エリア */
.entry-content {
	font-family: var(--font-serif);
	font-size: clamp(0.95rem, 1.3vw, 1.05rem);
	line-height: 2.4;
	color: var(--color-text);
}

.entry-content p {
	margin-bottom: 1.8em;
}

/* 発言者バッジ: 須長 / 池上 / 渡部 + Interview 用 generic (host/guest) */
.name-sunaga,
.name-ikegami,
.name-watanabe,
.name-host,
.name-guest {
	display: inline-block;
	font-family: var(--font-heading);
	font-size: clamp(0.75rem, 0.95vw, 0.85rem);
	font-weight: 400;
	letter-spacing: 0.12em;
	padding: 0.25em 0.9em;
	margin-bottom: 0.6rem;
	margin-top: 2rem;
	border-radius: 1px;
	line-height: 1.6;
}

.name-sunaga,
.name-watanabe,
.name-host {
	background: var(--color-green);
	color: #fff;
}

.name-ikegami,
.name-guest {
	border: 1.5px solid var(--color-green);
	color: var(--color-green);
	background: transparent;
}

/* ---------- その他の記事リスト（記事ページ下部）---------- */

.container.py-5 .section-title,
.container.py-5 h3 {
	font-family: var(--font-serif);
	font-size: clamp(0.8rem, 1.1vw, 0.95rem);
	font-weight: 400;
	letter-spacing: 0.06em;
	opacity: 0.55;
	margin-bottom: 1rem;
}

.nordicmoderndesign-list {
	list-style: none;
	padding: 0;
	margin: 0;
}

.nordicmoderndesign-list li {
	border-top: 1px solid var(--color-border);
}

.nordicmoderndesign-list li:last-child {
	border-bottom: 1px solid var(--color-border);
}

.nordicmoderndesign-list li a {
	display: block;
	padding: 0.9em 0.2em;
	font-size: clamp(0.85rem, 1.1vw, 0.95rem);
	letter-spacing: 0.02em;
	line-height: 1.6;
	color: var(--color-text);
	opacity: 1;
	transition: padding-left var(--ease), opacity var(--ease);
}

.nordicmoderndesign-list li a:hover {
	padding-left: 0.6em;
	opacity: 0.6;
}

/* ---------- Responsive: Book Pages ---------- */

@media (max-width: 767.98px) {
	.container-fluid.nordicmoderndesign img.img-fluid {
		max-height: 280px;
	}

	.name-sunaga,
.name-ikegami,
.name-watanabe,
.name-host,
.name-guest {
		margin-top: 1.5rem;
	}

	.page-nordicmoderndesign .opening a[href*="amzn"] {
		font-size: 0.9rem;
		padding: 0.6em 1.4em;
	}
}


/* ---------- 著者プロフィールボックス ---------- */

.border.nordicmoderndesign {
	border-color: var(--color-border) !important;
	background: var(--color-bg-accent);
	border-radius: 2px;
	padding: clamp(1.5rem, 3vw, 2.5rem) !important;
}

.border.nordicmoderndesign img {
	max-width: 200px;
	border-radius: 1px;
}

.border.nordicmoderndesign strong {
	font-family: var(--font-heading);
	font-size: clamp(0.9rem, 1.2vw, 1rem);
	letter-spacing: var(--en-spacing);
	font-weight: 400;
}

.border.nordicmoderndesign .small {
	font-size: clamp(0.8rem, 1vw, 0.9rem);
	line-height: 2;
	opacity: 0.75;
}

/* 書籍トップ: コラムリストタイトル (h2.section-title) */
.page-nordicmoderndesign section.py-5 h2.section-title {
	font-family: var(--font-serif);
	font-size: clamp(0.85rem, 1.2vw, 1rem);
	font-weight: 400;
	letter-spacing: 0.06em;
	opacity: 0.55;
	margin-bottom: 0;
	text-align: center;
}

/* 書籍説明テキストセクション (py-5内のp) */
.page-nordicmoderndesign section.py-5 p {
	font-size: clamp(0.9rem, 1.3vw, 1rem);
	line-height: 2.3;
	max-width: 560px;
	margin-left: auto;
	margin-right: auto;
}

.page-nordicmoderndesign section.py-5 p.text-right {
	text-align: right;
	opacity: 0.6;
	font-size: clamp(0.8rem, 1.1vw, 0.9rem);
	font-style: italic;
}

/* ---------- 本文中の図版 (entry-content内のfigure) ---------- */

.entry-content figure {
	margin: clamp(2rem, 4vw, 3rem) auto;
	text-align: center;
}

.entry-content figure img {
	display: inline-block;
	max-width: 100%;
	height: auto;
	width: auto !important;
}

.entry-content figcaption {
	margin-top: 0.6rem;
	font-family: var(--font-en);
	font-size: clamp(0.7rem, 0.9vw, 0.8rem);
	letter-spacing: var(--en-spacing);
	font-weight: var(--en-weight);
	opacity: 0.5;
	line-height: 1.6;
}

/* blockquote */
.entry-content blockquote {
	border-left: 2px solid var(--color-border);
	padding-left: 1.5em;
	margin-left: 0;
	margin-right: 0;
	font-style: italic;
	opacity: 0.75;
}


/* ==========================================================================
   BOOK PAGE ADDITIONS — Nordic Modern Design（書籍）書籍ページ追加スタイル
   ========================================================================== */

/* ---------- アイキャッチ背景画像 ----------
   フォールバック用の絶対 URL は置かない。ページに post_thumbnail がある場合は
   page-nordicmoderndesign.php がインライン style で正しいホストの URL を差し込む。
   ない場合は無地背景でレンダリングし、環境跨ぎで画像リンク切れを起こさない。 */
.page-nordicmoderndesign .book-hero-bg {
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    position: relative;
}

/* ---------- 書籍内部画像ブロック ---------- */
.book-inside-images {
    display: flex;
    gap: clamp(1rem, 2vw, 2rem);
    margin: clamp(2rem, 4vw, 3rem) 0;
    justify-content: center;
    align-items: flex-start;
}

.book-inside-images img {
    width: calc(50% - 1rem);
    max-width: 320px;
    border-radius: 2px;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
}

@media (max-width: 767.98px) {
    .book-inside-images {
        flex-direction: column;
        align-items: center;
    }
    .book-inside-images img {
        width: 80%;
        max-width: 280px;
    }
}

/* ---------- セクションタイトル サイズ修正 ---------- */
/* 書籍トップページのsection-titleを大きく */
.page-nordicmoderndesign .section-title {
    font-family: var(--font-serif);
    font-size: clamp(1.2rem, 2vw, 1.7rem) !important;
    font-weight: 400;
    letter-spacing: 0.04em;
    opacity: 1 !important;
    margin-bottom: clamp(1.5rem, 3vw, 2.5rem) !important;
    color: var(--color-text);
}

/* 書籍トップページのsection内のsection-title (py-5内のh2) */
.page-nordicmoderndesign section.py-5 h2.section-title,
.page-nordicmoderndesign section.nordicmoderndesign-list-section h2.section-title {
    font-size: clamp(1.2rem, 2vw, 1.7rem) !important;
    opacity: 1 !important;
    margin-bottom: clamp(1.5rem, 3vw, 2.5rem) !important;
}

/* ---------- ページ左余白の修正 ---------- */
/* .page-nordicmoderndesign の左寄り問題を修正 */
.page-nordicmoderndesign .container-fluid.book-hero-bg .row,
.page-nordicmoderndesign .opening .container-fluid .row {
    margin-left: 0;
    margin-right: 0;
}

/* ---------- コラムリスト下余白 ---------- */
.page-nordicmoderndesign .nordicmoderndesign-list-section {
    padding-bottom: clamp(4rem, 8vw, 7rem) !important;
}

/* 記事ページの往復書簡リスト下余白も修正 */
.container.py-5 {
    padding-bottom: clamp(4rem, 8vw, 7rem) !important;
}

/* ---------- 書籍紹介テキストセクション（100年前から...）の余白 ---------- */
.page-nordicmoderndesign section.bg-gray.py-5 {
    padding-top: clamp(3rem, 6vw, 5rem) !important;
    padding-bottom: clamp(3rem, 6vw, 5rem) !important;
}


/* ==========================================================================
   NM ARTICLE — 対談者プロフィールエリア（サイトトーンに合わせた改善版）
   ========================================================================== */

.nm-profile-section {
    margin-top: clamp(2rem, 4vw, 3.5rem);
    padding-top: clamp(2rem, 4vw, 3.5rem);
    border-top: 1px solid var(--color-border);
}

.nm-profile-item {
    display: flex;
    gap: clamp(1.5rem, 3vw, 3rem);
    align-items: flex-start;
    padding-bottom: clamp(2rem, 4vw, 3rem);
    margin-bottom: clamp(2rem, 4vw, 3rem);
    border-bottom: 1px solid var(--color-border);
}

.nm-profile-item:last-child {
    border-bottom: none;
    margin-bottom: 0;
    padding-bottom: 0;
}

.nm-profile-photo {
    flex: 0 0 auto;
}

.nm-profile-photo img {
    width: clamp(80px, 12vw, 120px);
    height: clamp(80px, 12vw, 120px);
    object-fit: cover;
    border-radius: 50%;
    display: block;
}

.nm-profile-body {
    flex: 1;
    min-width: 0;
}

.nm-profile-name {
    font-family: var(--font-serif);
    font-size: clamp(1rem, 1.4vw, 1.2rem);
    font-weight: 400;
    letter-spacing: 0.04em;
    line-height: 1.6;
    margin-bottom: 0.6rem;
    color: var(--color-text);
}

.nm-profile-bio {
    font-family: var(--font-serif);
    font-size: clamp(0.85rem, 1.1vw, 0.95rem);
    line-height: 2.2;
    color: var(--color-text);
    opacity: 0.75;
    margin-bottom: 0;
}

@media (max-width: 575.98px) {
    .nm-profile-item {
        flex-direction: column;
        align-items: center;
        text-align: center;
    }
    .nm-profile-photo img {
        width: 100px;
        height: 100px;
    }
}


/* ---------- Nordic Modern Design 追加スタイル ---------- */

/* 明朝体 */
.font-mincho {
    font-family: 'Noto Serif JP', 'Hiragino Mincho ProN', 'Yu Mincho', 'YuMincho', serif;
    line-height: 2.0;
}

/* 緑ボタン */
.btn-konst-green {
    display: inline-block;
    padding: 0.75rem 2.5rem;
    background-color: var(--color-green);
    color: #fff;
    border: 2px solid var(--color-green);
    font-family: var(--font-en); /* ボタンは常にゴシック */
    border-radius: 2px;
    text-decoration: none;
    font-size: 1rem;
    letter-spacing: 0.08em;
    transition: opacity 0.3s ease;
}

/* ヘッダ右上 Contact ボタンと同じく、塗りを保ったまま opacity だけで弱める */
.btn-konst-green:hover {
    opacity: 0.8;
    background-color: var(--color-green);
    color: #fff;
}

/* 書籍内部画像 大サイズ（3倍） */
.book-inside-images img.book-inside-img-large {
    width: 100% !important;
    max-width: 960px !important;
    flex: none !important;
}


/* ---------- Dropdown submenu for Works ---------- */
.menu-item-has-children {
    position: relative;
}

.menu-item-has-children > a::after {
    content: '';
    display: inline-block;
    width: 0;
    height: 0;
    margin-left: 0.4em;
    vertical-align: 0.1em;
    border-top: 0.3em solid currentColor;
    border-right: 0.3em solid transparent;
    border-left: 0.3em solid transparent;
    opacity: 0.6;
    transition: transform 0.2s ease;
}

.menu-item-has-children:hover > a::after,
.menu-item-has-children:focus-within > a::after {
    transform: rotate(180deg);
}

.sub-menu {
    display: none;
    position: absolute;
    top: 100%;
    left: 50%;
    transform: translateX(-50%);
    min-width: 200px;
    background: #fff;
    border: 1px solid var(--color-border);
    border-radius: 2px;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
    padding: 0;
    list-style: none;
    margin: 0;
    z-index: 1000;
    }

/* Bridge to prevent hover gap */
.sub-menu::before {
    content: '';
    display: block;
    position: absolute;
    top: -0.75rem;
    left: 0;
    right: 0;
    height: 0.75rem;
}

/* Submenu はマウスホバー と キーボードフォーカス の両方で開く (WCAG 2.1.1 キーボード対応) */
.menu-item-has-children:hover > .sub-menu,
.menu-item-has-children:focus-within > .sub-menu {
    display: block;
}

.sub-menu .nav-item {
    padding: 0;
}

.sub-menu .nav-link {
    display: block;
    padding: 0.6rem 1.25rem !important;
    font-size: 0.9rem !important;
    white-space: nowrap;
    color: var(--color-text) !important;
    text-align: left;
}

.sub-menu .nav-link:hover {
    opacity: 1 !important;
    background-color: var(--color-border);
}

/* Mobile + iPad: show submenu inline (ハンバーガー全画面ナビと揃える breakpoint = 1199.98px) */
@media (max-width: 1199.98px) {
    .sub-menu {
        display: block;
        position: static;
        transform: none;
        box-shadow: none;
        border: none;
        border-left: 2px solid var(--color-border);
        padding: 0 0 0 1rem;
        margin: 0.25rem 0 0.5rem 0;
        background: transparent;
        min-width: unset;
    }

    .menu-item-has-children > a::after {
        display: none;
    }
}


/* ---------- Interviews ---------- */

/* Index: archive layout mirrors .works-archive */
.interviews-archive {
    padding-top: 8rem;
    padding-bottom: var(--space-section);
}
.interviews-lead {
    font-family: var(--font-serif);
    font-size: clamp(0.95rem, 1.1vw + 2px, 1.05rem);
    line-height: 2.2;
    max-width: 760px;
    margin: 0 0 clamp(2.5rem, 5vw, 4.5rem);
    color: var(--color-text);
    /* 日本語の改行を文節境界で行い、変な位置で折れないようにする */
    word-break: auto-phrase;
    line-break: strict;
    text-wrap: pretty;
}
/* グリッドを max-width で抑え、2 件のときも 1 枚 1 枚が画面いっぱいにならないように */
.interviews-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: clamp(1.5rem, 3vw, 3rem);
    max-width: 1100px;
}
@media (max-width: 600px) {
    .interviews-grid { grid-template-columns: 1fr; }
}

/* Card: mirrors .work-card */
.interview-card {
    position: relative;
    overflow: hidden;
}
.interview-card a {
    display: block;
    text-decoration: none;
    color: inherit;
}
.interview-card-image {
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border-radius: 3px;
}
.interview-card-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.7s cubic-bezier(0.25, 0.1, 0.25, 1);
}
.interview-card:hover .interview-card-image img {
    transform: scale(1.04);
}
.interview-card-info {
    padding: 1.25rem 0 0;
}
/* カードタイトル: 明朝・大きく・太字でメリハリを強める。
   このテーマは body 含めすべて --color-text = #009868 (緑) で統一されており
   色での contrast がつけられないため、size / weight / opacity で差別化する */
.interviews-grid .interview-card-title {
    font-family: var(--font-serif);
    font-size: clamp(1.15rem, 1.6vw, 1.45rem);
    font-weight: 500;
    line-height: 1.7;
    margin-bottom: 0.75rem;
    letter-spacing: 0.04em;
}
/* 概要文: 細字 + opacity で背景に下げ、title を前に出す
   福祉アクセシビリティ配慮として、weight は 400 以上 / size は 14px 以上を維持 */
.interviews-grid .interview-card-excerpt {
    font-family: var(--font-serif);
    font-size: 0.9rem;
    font-weight: 400;
    line-height: 2;
    margin-bottom: 1.25rem;
    opacity: 0.7;
    word-break: auto-phrase;
    line-break: strict;
    text-wrap: pretty;
}
/* カード内の「詳細を見る」ボタン: btn-konst-green を slimmer にしたバリアント */
.interview-card-detail-btn {
    margin-top: 0.5rem;
    padding: 0.5rem 1.5rem;
    font-size: 0.875rem;
}

/* Article page */
/* Interview 詳細ページのヘッダ・アイキャッチ・セクションラベルを NM 記事ページ (.col-12 = 900px) と同じ幅で中央寄せ */
.interview-article .single-work-header,
.interview-article .single-work-featured,
.interview-article .interview-section-label {
    max-width: 900px;
    margin-left: auto;
    margin-right: auto;
}
/* セクションラベル "Interview" (アイキャッチ上のゴシック見出し)
   /works/ の .works-archive-title と同じ書体・サイズ感に揃える */
.interview-section-label {
    font-family: var(--font-en);
    font-weight: var(--en-weight);
    font-size: clamp(1.2rem, 2vw, 1.6rem);
    letter-spacing: var(--en-spacing);
    text-transform: none;
    text-align: center;
    color: var(--color-text-muted);
    margin: 6rem 0 1.5rem;
}
/* タイトル: NM 記事ページと同じ Noto Serif JP / clamp(1.3rem, 2.5vw, 1.9rem) / line-height 1.7 */
.interview-article .single-work-title {
    font-family: var(--font-serif);
    font-size: clamp(1.3rem, 2.5vw, 1.9rem);
    font-weight: 400;
    letter-spacing: 0.04em;
    line-height: 1.7;
}
/* アイキャッチとタイトルの余白を圧縮 (featured 下マージン + header 上パディングの両方) */
.interview-article .single-work-featured {
    margin-bottom: 1rem;
}
.interview-article .single-work-header {
    padding-top: 0;
    padding-bottom: 2rem;
}
/* 末尾「Interview」一覧へ戻るボタンをゴシックに */
.interview-back-link .btn-konst-green {
    font-family: var(--font-en);
    letter-spacing: var(--en-spacing);
}
/* 話者チップ: body p (.interview-content p) の font-size/line-height/family を上書きして
   NM 記事のチップ (Helvetica / 13.6px / line-height 1.6) と同じサイズ感に揃える */
.interview-content .name-host,
.interview-content .name-guest,
.interview-content .name-sunaga,
.interview-content .name-watanabe,
.interview-content .name-ikegami {
    font-family: var(--font-heading);
    font-size: clamp(0.75rem, 0.95vw, 0.85rem);
    line-height: 1.6;
    margin-bottom: 0.6rem;
    margin-top: 2rem;
}
/* Content area: reuse .single-work-content styles */
.interview-content {
    max-width: 680px;
    margin: 0 auto;
    padding: 0 var(--px) var(--space-section);
}
.interview-content p {
    font-family: var(--font-serif);
    font-size: 1.05rem;
    line-height: 2.4;
    margin-bottom: 1.5rem;
}
.interview-content h2 {
    font-family: var(--font-serif);
    font-size: clamp(1.25rem, 1.8vw, 1.5rem);
    font-weight: 400;
    letter-spacing: 0.06em;
    line-height: 1.7;
    margin: 3.5rem 0 1.5rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid var(--color-border);
}
/* インライン Bootstrap 風 .h4 (例: "お話をお聞かせいただいた方") を本文 p の 1.05rem より大きく */
.interview-content p.h4 {
    font-size: clamp(1.1rem, 1.4vw, 1.3rem);
    line-height: 1.8;
}
.interview-content hr {
    border: none;
    border-top: 1px solid var(--color-border);
    margin: 2.5rem 0;
}
.interview-content figure {
    margin: 2rem 0 2.5rem;
}
.interview-content figure img {
    width: 100%;
    border-radius: 3px;
}
.interview-content figcaption {
    font-size: 0.875rem;
    color: var(--color-text-muted);
    margin-top: 0.5rem;
    text-align: center;
}
.interview-content .border {
    border: 1px solid var(--color-border) !important;
    border-radius: 3px;
    padding: 1.5rem !important;
    background: var(--color-bg-warm) !important;
    margin-bottom: 1.5rem;
    font-size: 0.9rem;
    line-height: 2;
}
.interview-back-link {
    text-align: center;
    margin-top: 4rem;
    padding-top: 2rem;
    border-top: 1px solid var(--color-border);
}


/* ---------- Members ---------- */


/* ===== Supporters Section ===== */

/* "Supporters" heading — same size as "Members" */
.section-label--supporters {
    font-size: clamp(1.5rem, 2.5vw, 2rem);
}

/* Compact vertical spacing for supporter blocks */
/* Override nth-child alternating padding to align all 3 supporters on the same left edge */
.narrative--supporter {
    padding-top: clamp(1rem, 2vw, 1.5rem);
    padding-bottom: clamp(1rem, 2vw, 1.5rem);
    padding-left: clamp(2rem, 8vw, 10rem) !important;
}

.supporter-name {
    font-family: var(--font-serif);
    font-size: clamp(1.25rem, 1.8vw, 1.6rem);
    font-weight: 400;
    line-height: 1.5;
    margin-bottom: 0.4rem;
    letter-spacing: 0.02em;
}

.supporter-role,
p.supporter-role {
    font-size: 0.875rem !important;
    color: var(--color-text-muted);
    letter-spacing: 0.03em;
    line-height: 1.6;
    margin-bottom: 0.8rem;
}

.narrative--supporter .member-info-bio {
    font-size: clamp(0.875rem, 1.1vw + 2px, 1rem);
    line-height: 2.2;
}

.narrative--supporter .member-info-bio p {
    font-size: inherit;
}

.narrative--supporter .member-links {
    margin-top: 0.6rem;
}

/* 最後の Supporter ブロックとフッタの間に余白 */
.narrative--supporter:last-of-type {
    padding-bottom: var(--space-section);
}

/* ==========================================================================
   GENERIC PAGE (page.php) — 規約/ポリシー等の散文ページ
   .opening / .narrative / .narrative-text--single を再利用しつつ、
   多段の見出し・リスト・リンクを含む長文を読みやすく組むための上書き
   ========================================================================== */
/* opening は標準だと min-height: 85svh + clamp(8rem,22vh,16rem) と大きいため
   organization 等の static page と同様に控えめに圧縮 */
.opening--page {
    min-height: 0;
    padding-top: clamp(3rem, 6vh, 5rem);
    padding-bottom: clamp(0.5rem, 1vh, 1rem);
}
/* タイトル: news ページと同様に明朝→ゴシックに差し替え + 下マージンも縮める */
.opening--page .opening-headline {
    font-family: var(--font-en);
    font-weight: var(--en-weight);
    letter-spacing: var(--en-spacing);
    margin-bottom: 1rem;
}
/* .narrative-text p のデフォルトは clamp(1.2rem, 2vw+4px, 1.6rem) と
   かなり大きいため、ポリシーや規約のような長い散文では一段抑える */
.narrative-text--page p {
    font-size: clamp(0.95rem, 1.1vw + 2px, 1.05rem);
    line-height: 2.2;
    margin-bottom: 1.5rem;
    letter-spacing: 0.03em;
}
.narrative-text--page h2,
.narrative-text--page h3,
.narrative-text--page h4 {
    font-family: var(--font-serif);
    font-weight: 500;
    line-height: 1.6;
    letter-spacing: 0.04em;
}
.narrative-text--page h2 {
    font-size: clamp(1.15rem, 1.6vw, 1.35rem);
    margin: 3rem 0 1rem;
}
.narrative-text--page h3 {
    font-size: clamp(1rem, 1.3vw, 1.15rem);
    margin: 2.5rem 0 0.75rem;
}
.narrative-text--page h4 {
    font-size: 1rem;
    margin: 2rem 0 0.5rem;
}
.narrative-text--page ul,
.narrative-text--page ol {
    margin: 0 0 1.5rem 1.5em;
    padding: 0;
    font-size: clamp(0.9rem, 1vw + 2px, 1rem);
    line-height: 2;
}
.narrative-text--page li {
    margin-bottom: 0.3rem;
}
.narrative-text--page a {
    color: var(--color-text);
    text-decoration: underline;
    text-underline-offset: 3px;
}
.narrative-text--page a:hover {
    opacity: 0.7;
}

/* ==========================================================================
   PREFERS-REDUCED-MOTION — 前庭疾患 / てんかん感受性 / 自閉スペクトラム特性等の
   ユーザーが OS 設定で "視覚効果を減らす" を指定している場合、
   全アニメーション・トランジションを実質ゼロにする。
   .fade-in は opacity: 0 の初期値が intersection observer 経由で 1 に
   なる仕組みなので、observer が遅延した場合でも見えるよう保険として
   opacity: 1 / transform: none を強制する。
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
    *,
*::before,
*::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
    html { scroll-behavior: auto; }
    .fade-in,
.fade-in.visible {
        opacity: 1 !important;
        transform: none !important;
    }
    /* hover 時の拡大も止める (work-card / interview-card / color-toggle 等) */
    .work-card.has-link:hover .work-card-image img,
.interview-card:hover .interview-card-image img,
.color-toggle-option:hover {
        transform: none !important;
    }
}

/* ==========================================================================
   FOCUS-VISIBLE — キーボードユーザー向けの統一 focus indicator
   全フォーカス可能要素に :focus-visible (キーボード操作時のみ発火) で
   2px outline を表示。--color-text を使うので緑/黒モード両方で見える。
   既存の専用 focus 定義 (.color-toggle-option / .contact-form .form-control 等)
   は specificity が高いのでこちらが上書きされ、動作はそのまま維持される。
   ========================================================================== */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible {
    outline: 2px solid var(--color-text);
    outline-offset: 2px;
}

/* ==========================================================================
   SKIP-TO-CONTENT — キーボード/スクリーンリーダーユーザーが
   毎ページ nav を読み飛ばせるショートカット。
   .screen-reader-text (WP 標準) で通常時は視覚非表示、focus 時のみ可視化。
   WP インラインの .screen-reader-text:focus が source order で勝つ場合が
   あるため、可視化に必要なプロパティは !important で上書きする。
   ========================================================================== */
.skip-link:focus {
    clip: auto !important;
    clip-path: none !important;
    width: auto !important;
    height: auto !important;
    margin: 0 !important;
    overflow: visible !important;
    background: var(--color-bg) !important;
    color: var(--color-text) !important;
    border: 2px solid var(--color-text) !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    font-family: var(--font-en) !important;
    font-weight: var(--en-weight);
    font-size: 0.9rem !important;
    letter-spacing: var(--en-spacing);
    text-decoration: none !important;
    padding: 0.75rem 1.25rem !important;
    top: 0.75rem !important;
    left: 0.75rem !important;
    z-index: 100001 !important;
}

/* ==========================================================================
   CONTACT FORM ACCESSIBILITY — 必須マーク / status メッセージ
   ========================================================================== */
.contact-form-note {
    font-family: var(--font-en);
    font-size: 0.875rem;
    color: var(--color-text-muted);
    margin-bottom: 2rem;
}
.contact-required-mark {
    color: var(--color-text);
    margin-left: 0.15em;
    font-weight: 600;
}
.contact-optional-mark {
    color: var(--color-text-muted);
    margin-left: 0.4em;
    font-size: 0.85em;
    opacity: 0.7;
}
.contact-status {
    padding: 1rem 1.25rem;
    margin-bottom: 2rem;
    border: 1px solid var(--color-border);
    font-size: 0.95rem;
    line-height: 1.7;
}
.contact-status--success {
    border-color: var(--color-text);
}
.contact-status--error {
    /* 白背景に border のみで控えめに警告。色は brand 緑 / 黒モードどちらでも視認できる */
    border-color: var(--color-text);
    background: #fff;
}
/* 各フィールド下の補助説明 (aria-describedby で input と関連付け) */
.contact-field-help {
    display: block;
    margin-top: 0.5rem;
    /* iCloud / キャリアメールでの不達を警告する重要情報。
       以前 opacity 0.85 を乗せていたが、緑モード (#009868) で 2.86:1 まで落ちて
       プロジェクト基準の 3:1 すら割るため除去。muted カラーは維持する。 */
    font-size: 0.875rem;
    line-height: 1.7;
    color: var(--color-text-muted);
}
/* 入力最下部 (確認ボタン直前) のメール到達不能注意。
   各フィールド直下の help と違いやや目立たせるため上下余白を広めに取る */
.contact-email-help--bottom {
    margin: 2rem 0 1rem;
    line-height: 1.85;
}

/* Send 直前のプライバシーポリシー同意文 */
.contact-privacy-note {
    margin: 2.5rem 0 0;
    text-align: center;
    font-size: 0.875rem;
    color: var(--color-text-muted);
}
.contact-privacy-note a {
    color: var(--color-text);
    text-decoration: underline;
    text-underline-offset: 3px;
}
.contact-privacy-note a:hover {
    opacity: 0.7;
}

/* ---------- Contact form: エラーフィールドの赤枠 / メッセージ ---------- */
.contact-form .form-control.is-invalid {
    border-bottom-color: #b00020;
    border-bottom-width: 2px;
}
.contact-field-error {
    margin: 0.4rem 0 0;
    color: #b00020;
    font-size: 0.875rem;
    line-height: 1.6;
}

/* ---------- Honeypot (人間には非表示、bot がうっかり埋めると silent drop) ---------- */
.contact-hp-wrap {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
    opacity: 0;
    pointer-events: none;
}

/* ---------- Contact 確認画面: 入力内容の一覧 ---------- */
.contact-confirm-lead {
    margin: 0 0 2rem;
    line-height: 2;
}
.contact-confirm-list {
    margin: 0 0 2.5rem;
    padding: 0;
}
.contact-confirm-list dt {
    margin-top: 1.5rem;
    margin-bottom: 0.25rem;
    font-family: var(--font-en);
    font-size: 0.8rem;
    font-weight: var(--en-weight);
    letter-spacing: var(--en-spacing);
    color: var(--color-text-muted);
}
.contact-confirm-list dt:first-child {
    margin-top: 0;
}
.contact-confirm-list dd {
    margin: 0;
    padding: 0 0 1rem;
    border-bottom: 1px solid var(--color-border);
    line-height: 1.9;
    word-break: break-word;
}

/* 確認画面の 2 つのボタン (修正 / 送信) を横並び中央寄せ */
.contact-confirm-actions {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-wrap: wrap;
    gap: 1rem;
    margin-top: 1rem;
}

/* Outline 版 btn-konst (確認画面の「修正する」用) */
.btn-konst-outline {
    font-family: var(--font-en);
    font-size: 0.875rem;
    font-weight: 600;
    letter-spacing: var(--en-spacing);
    background: transparent;
    color: var(--color-text);
    padding: 0.75rem 2rem;
    border: 1px solid var(--color-text);
    border-radius: 2px;
    cursor: pointer;
    transition: opacity var(--ease);
    text-decoration: none;
    display: inline-block;
    line-height: 1;
}
.btn-konst-outline:hover {
    opacity: 0.6;
}

/* ---------- Contact 完了画面 ---------- */
.contact-complete-note {
    font-size: 0.9rem;
    line-height: 1.95;
    color: var(--color-text-muted);
    margin: 0 0 1rem;
}
.contact-complete-note a {
    color: var(--color-text);
    border-bottom: 1px solid var(--color-border);
}
.contact-complete-note a:hover {
    border-bottom-color: var(--color-text);
}

/* ==========================================================================
   PRINT — 印刷・PDF 書き出し向け (福祉系サイトなので冊子配布や
   リーフレット印刷も想定)。ヘッダ/フッタ/色切替/動画/装飾は伏せ、
   本文を高コントラストで可読に出す。
   ========================================================================== */
@media print {
    /* 装飾・UI 要素は非表示 */
    .site-header,
    .site-footer,
    .color-toggle,
    .color-toggle-tip,
    .navbar-toggler,
    .skip-link,
    .video-break,
    .video-seekbar-wrap,
    .fade-in { /* opacity 0 の初期状態を引きずらない */
        opacity: 1 !important;
    }
    .site-header,
    .site-footer,
    .color-toggle,
    .color-toggle-tip,
    .navbar-toggler,
    .skip-link,
    .video-break,
    .video-seekbar-wrap {
        display: none !important;
    }

    /* 本文は白地に黒文字で高コントラストに */
    html, body {
        background: #fff !important;
        color: #000 !important;
        font-size: 11pt;
        line-height: 1.7;
    }
    a {
        color: #000 !important;
        text-decoration: underline;
    }
    /* 外部リンクは印刷物でも辿れるよう URL を併記 (href が # / mailto は除外) */
    a[href^="http"]::after {
        content: " (" attr(href) ")";
        font-size: 0.85em;
        color: #555;
    }

    /* 画像は幅を印刷域に収める */
    img {
        max-width: 100% !important;
        height: auto !important;
        page-break-inside: avoid;
    }

    /* セクション見出しはページまたぎを避ける */
    h1, h2, h3 {
        page-break-after: avoid;
        page-break-inside: avoid;
    }

    /* 余白は OS の標準マージンに任せる */
    main, .site-main {
        padding: 0 !important;
        margin: 0 !important;
    }
}
