/* ============================================================
   一般社団法人 鳳鳴舘 ｜ 情報の道筋
   シネマティック・スクロール × Lenis smooth scroll
   配色：深いネイビー／オフホワイト・アイボリー／ゴールド
   ============================================================ */

:root {
  --ink:      #06111f;   /* 最も深いネイビー（キャンバス背景・本文背景） */
  --ink-2:    #0a1a30;   /* 深いネイビー */
  --navy:     #0c2140;   /* ネイビー面 */
  --navy-3:   #12325f;   /* 明るめネイビー */
  --royal:    #23539c;   /* アクセント青（リンク等・淡背景上） */
  --head-navy:#0c2b57;   /* 明背景上の見出しネイビー */
  --ivory:    #f5f2ea;   /* オフホワイト（制度セクション背景） */
  --ivory-2:  #efeadd;   /* アイボリー（面替え） */
  --ivory-edge:#e4dcca;  /* アイボリーの境界 */
  --pearl:    #f3f1ea;   /* 明色テキスト（暗背景上） */
  --silver:   #c4ccd8;   /* やわらかな明グレー */
  --mute:     #99a2b1;   /* ミュートグレー（暗背景上の補助） */
  --slate:    #3b4757;   /* 明背景上の本文 */
  --slate-2:  #5b6675;   /* 明背景上の補助テキスト */
  --gold:     #c2a052;   /* ブランドゴールド */
  --gold-2:   #cdae63;
  --gold-bright:#e6cd8a;  /* ゴールドの輝き */
  --gold-deep:#9b7d34;
  --serif: "Shippori Mincho", "Yu Mincho", "Hiragino Mincho ProN", "Noto Serif JP", serif;
  --sans: "Zen Kaku Gothic New", "Yu Gothic Medium", "Yu Gothic", "Hiragino Kaku Gothic ProN", "Noto Sans JP", sans-serif;
  --ease: cubic-bezier(.22, .8, .3, 1);
  --maxw: 1120px;
}

* { margin: 0; padding: 0; box-sizing: border-box; }

html { scroll-behavior: auto; }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }

body {
  font-family: var(--sans);
  font-weight: 300;
  background: var(--ink);
  color: var(--pearl);
  line-height: 2;
  letter-spacing: .06em;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
  line-break: strict;
  word-break: normal;
  overflow-wrap: break-word;
}
h1, h2, h3, .hero__headline { line-break: strict; }

::selection { background: rgba(194, 160, 82, .32); color: var(--pearl); }

/* スキップリンク */
.skiplink {
  position: fixed; top: -60px; left: 1rem; z-index: 200;
  background: var(--ivory); color: var(--head-navy);
  padding: .7rem 1.2rem; border-radius: 4px;
  font-size: .78rem; letter-spacing: .1em; text-decoration: none;
  transition: top .3s var(--ease);
}
.skiplink:focus { top: 1rem; outline: 2px solid var(--gold); }

/* フォーカスの可視化（キーボード操作） */
a:focus-visible, button:focus-visible,
input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: 2px solid var(--gold-bright);
  outline-offset: 3px;
  border-radius: 3px;
}

/* ---------- ローディング ---------- */
.loader {
  position: fixed; inset: 0; z-index: 100;
  background: radial-gradient(120% 100% at 50% 30%, #0b1a33 0%, var(--ink) 70%);
  display: flex; align-items: center; justify-content: center;
  transition: opacity 1.3s var(--ease), visibility 1.3s;
}
.loader.is-done { opacity: 0; visibility: hidden; pointer-events: none; }
.loader__inner { text-align: center; }
.loader__mark {
  width: 62px; height: auto; display: block; margin: 0 auto 1.6rem;
  padding: 14px; border-radius: 50%;
  background: radial-gradient(circle at 50% 42%, #fbfaf5, #ece5d4 78%);
  box-shadow: 0 14px 46px rgba(4,10,20,.55), inset 0 1px 0 rgba(255,255,255,.6);
  animation: loaderFloat 3.6s ease-in-out infinite;
}
@keyframes loaderFloat { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-6px)} }
.loader__brand {
  font-family: var(--serif); font-weight: 600;
  font-size: clamp(1.1rem, 2.6vw, 1.45rem);
  letter-spacing: .42em; text-indent: .42em;
  color: var(--pearl);
}
.loader__bar {
  width: min(220px, 56vw); height: 1px;
  background: rgba(245, 243, 239, .14);
  margin: 1.8rem auto 1.2rem; overflow: hidden;
}
.loader__bar span {
  display: block; width: 0%; height: 100%;
  background: linear-gradient(90deg, var(--gold), var(--gold-bright));
  transition: width .5s var(--ease);
}
.loader__text {
  font-size: .68rem; letter-spacing: .3em; text-indent: .3em; color: var(--mute);
}

/* ---------- 背景キャンバス・演出レイヤー ---------- */
.seq {
  position: fixed; inset: 0;
  width: 100vw; height: 100vh; height: 100svh;
  z-index: 0; background: var(--ink);
}
.veil {
  position: fixed; inset: 0; z-index: 1; pointer-events: none;
  background:
    linear-gradient(180deg, rgba(6,17,31,.5) 0%, rgba(6,17,31,0) 24%, rgba(6,17,31,0) 60%, rgba(6,17,31,.6) 100%);
  transition: background 1.2s ease;
}
.bloom {
  position: fixed; inset: -20%; z-index: 1; pointer-events: none;
  background:
    radial-gradient(38% 30% at 72% 20%, rgba(214, 227, 245, .10), transparent 70%),
    radial-gradient(30% 26% at 22% 78%, rgba(198, 165, 90, .08), transparent 70%);
  mix-blend-mode: screen;
  animation: bloomDrift 28s ease-in-out infinite alternate;
}
@keyframes bloomDrift {
  from { transform: translate3d(-1.5%, -1%, 0) scale(1); opacity: .8; }
  to   { transform: translate3d(1.5%, 1.2%, 0) scale(1.06); opacity: 1; }
}
.grain {
  position: fixed; inset: -60px; z-index: 2; pointer-events: none; opacity: .045;
  background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation: grainShift 1.1s steps(4) infinite;
}
@keyframes grainShift {
  0%{transform:translate(0,0)} 25%{transform:translate(-14px,9px)}
  50%{transform:translate(10px,-12px)} 75%{transform:translate(-8px,-7px)} 100%{transform:translate(0,0)}
}

/* ---------- ナビゲーション ---------- */
.nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 50;
  display: flex; align-items: center; justify-content: space-between;
  padding: 1rem clamp(1.1rem, 4vw, 3rem);
  background: linear-gradient(180deg, rgba(6,17,31,.36), rgba(6,17,31,0));
  transition: background .8s ease, box-shadow .8s ease, backdrop-filter .8s ease;
}
.nav.is-stuck {
  background: rgba(7, 18, 33, .74);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  box-shadow: 0 1px 0 rgba(255,255,255,.05);
}
.nav__logo {
  display: flex; align-items: center; gap: .7rem;
  text-decoration: none; white-space: nowrap;
}
.nav__seal {
  display: grid; place-items: center;
  width: 38px; height: 38px; border-radius: 10px;
  background: radial-gradient(circle at 50% 40%, #fbfaf5, #ece5d4 85%);
  box-shadow: 0 4px 16px rgba(4,10,20,.4), inset 0 1px 0 rgba(255,255,255,.5);
  flex: none;
}
.nav__seal img { width: 22px; height: auto; display: block; }
.nav__word {
  font-family: var(--serif); font-weight: 600;
  font-size: 1.02rem; letter-spacing: .26em;
  color: var(--pearl); display: flex; align-items: baseline; gap: .5em;
}
.nav__word small {
  font-family: var(--sans); font-weight: 400;
  font-size: .52rem; letter-spacing: .28em; color: var(--gold-2);
}
.nav__links { display: flex; gap: clamp(1rem, 2.4vw, 2.1rem); align-items: center; }
.nav__links a {
  position: relative; font-size: .74rem; letter-spacing: .18em;
  color: rgba(243, 241, 234, .82); text-decoration: none; padding: .3rem 0;
  transition: color .4s;
}
.nav__links a::after {
  content: ""; position: absolute; left: 0; bottom: -2px;
  width: 100%; height: 1px; background: var(--gold);
  transform: scaleX(0); transform-origin: right; transition: transform .5s var(--ease);
}
.nav__links a:hover { color: var(--pearl); }
.nav__links a:hover::after { transform: scaleX(1); transform-origin: left; }
.nav__consult {
  border: 1px solid rgba(194, 160, 82, .55);
  padding: .44rem 1.15rem !important; border-radius: 999px; color: var(--gold-bright) !important;
  transition: border-color .4s, background .4s, color .4s;
}
.nav__consult::after { display: none; }
.nav__consult:hover { border-color: var(--gold); background: rgba(194, 160, 82, .12); }
.nav__toggle { display: none; }

/* ライトテーマ区間（制度セクション）：ナビを濃色文字に */
body[data-theme="light"] .nav.is-stuck { background: rgba(245, 242, 234, .82); box-shadow: 0 1px 0 rgba(12,43,87,.08); }
body[data-theme="light"] .nav__word { color: var(--head-navy); }
body[data-theme="light"] .nav__links a { color: rgba(30, 42, 60, .8); }
body[data-theme="light"] .nav__links a:hover { color: var(--head-navy); }
body[data-theme="light"] .nav__consult { color: var(--gold-deep) !important; border-color: rgba(155,125,52,.6); }
body[data-theme="light"] .nav__toggle span { background: var(--head-navy); }

/* ---------- 情報の道筋 インジケーター ---------- */
.journey {
  position: fixed; right: clamp(.9rem, 2.4vw, 2rem); top: 50%; z-index: 40;
  transform: translateY(-50%); text-align: right; pointer-events: none;
  transition: opacity .9s ease;
}
.journey.is-past { opacity: 0; }
.journey__title {
  writing-mode: vertical-rl; font-family: var(--serif);
  font-size: .68rem; letter-spacing: .42em; color: rgba(243, 241, 234, .5);
  margin: 0 .15rem 1.1rem auto;
}
.journey__steps { list-style: none; display: flex; flex-direction: column; gap: 1.05rem; }
.journey__steps li {
  display: flex; align-items: center; justify-content: flex-end; gap: .7rem;
  font-size: .66rem; letter-spacing: .22em; color: rgba(243, 241, 234, .5);
  transition: color .7s ease;
  text-shadow: 0 1px 10px rgba(6, 13, 24, .85), 0 0 2px rgba(6, 13, 24, .7);
}
.journey__title { text-shadow: 0 1px 10px rgba(6, 13, 24, .85); }
.journey__steps li i {
  order: 2; width: 6px; height: 6px; border-radius: 50%;
  background: rgba(243, 241, 234, .3); position: relative;
  transition: background .7s, box-shadow .7s, transform .7s;
}
.journey__steps li.is-active { color: var(--pearl); }
.journey__steps li.is-active i {
  background: var(--gold-bright); transform: scale(1.25);
  box-shadow: 0 0 12px rgba(230, 205, 138, .85);
}
.journey__steps li.is-done i { background: rgba(194,160,82,.55); }
body[data-theme="light"] .journey__title { color: rgba(30, 42, 60, .55); }
body[data-theme="light"] .journey__steps li { color: rgba(30, 42, 60, .42); }
body[data-theme="light"] .journey__steps li i { background: rgba(30, 42, 60, .3); }
body[data-theme="light"] .journey__steps li.is-active { color: var(--head-navy); }
body[data-theme="light"] .journey__steps li.is-active i { background: var(--gold-deep); box-shadow: 0 0 12px rgba(155,125,52,.7); }
body[data-theme="light"] .journey__steps li.is-done i { background: rgba(155,125,52,.5); }

/* ---------- チャプター（映像セクション）共通 ---------- */
main { position: relative; z-index: 10; }
.chapter { position: relative; height: 240vh; }
.chapter--tall { height: 300vh; }
.chapter__pin {
  position: sticky; top: 0; height: 100vh; height: 100svh;
  display: flex; align-items: center; overflow: hidden;
}
.content {
  position: relative; width: min(var(--maxw), 88vw); margin: 0 auto;
  padding: 0 clamp(0rem, 2vw, 1rem);
}
/* 文字背面のスクリム（--scrim はJSがテキスト出現と同期） */
.content::before {
  content: ""; position: absolute; inset: -20% -24%; z-index: -1; pointer-events: none;
  opacity: var(--scrim, 0);
  background: radial-gradient(60% 64% at 50% 50%, rgba(6, 13, 24, .62), rgba(6, 13, 24, 0) 76%);
}
.chapter[data-theme="warm"] .content::before {
  background: radial-gradient(60% 64% at 50% 50%, rgba(20, 15, 9, .58), rgba(20, 15, 9, 0) 76%);
}

.reveal { opacity: 0; transform: translateY(26px); will-change: opacity, transform; }

/* 見出し・アイブロウ */
.eyebrow {
  font-size: .68rem; letter-spacing: .42em; text-indent: .42em;
  color: var(--gold-2); margin-bottom: 1.5rem;
}
h1, h2, h3 { font-family: var(--serif); font-weight: 500; }
h2 {
  font-size: clamp(1.5rem, 3.5vw, 2.5rem); line-height: 1.85; letter-spacing: .09em;
  color: var(--pearl); text-shadow: 0 2px 30px rgba(6, 13, 24, .5);
}
[data-theme="light"] h2 { color: var(--head-navy); text-shadow: none; }
[data-theme="warm"] h2 { text-shadow: 0 2px 34px rgba(16, 12, 7, .55); }

/* ---------- ボタン ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 54px; padding: .8rem 2.2rem;
  font-family: var(--sans); font-size: .8rem; letter-spacing: .2em; text-indent: .2em;
  text-decoration: none; cursor: pointer; border-radius: 999px;
  transition: background .5s, color .5s, border-color .5s, box-shadow .5s, transform .4s var(--ease);
}
.btn--primary {
  background: linear-gradient(180deg, var(--gold-2), var(--gold));
  color: #1a1406; border: 1px solid var(--gold);
  box-shadow: 0 8px 30px rgba(194, 160, 82, .28);
}
.btn--primary:hover { transform: translateY(-2px); box-shadow: 0 12px 40px rgba(194, 160, 82, .42); }
.btn--ghost {
  background: rgba(255,255,255,.04); color: var(--pearl);
  border: 1px solid rgba(243, 241, 234, .4);
  -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
}
.btn--ghost:hover { border-color: var(--gold-bright); color: #fff; transform: translateY(-2px); }
[data-theme="light"] .btn--ghost { color: var(--head-navy); border-color: rgba(12,43,87,.34); }
[data-theme="light"] .btn--ghost:hover { border-color: var(--gold-deep); color: var(--head-navy); }

/* ---------- 1. ヒーロー ---------- */
.content--hero { text-align: center; }
.hero__seal {
  width: 128px; height: 128px; border-radius: 50%; margin: 0 auto 1.9rem;
  display: grid; place-items: center;
  background: radial-gradient(circle at 50% 42%, #fbfaf5, #ece4d2 80%);
  border: 1px solid rgba(194, 160, 82, .5);
  box-shadow: 0 18px 60px rgba(4,10,20,.55), inset 0 1px 0 rgba(255,255,255,.6);
}
.hero__seal img { width: 58%; height: auto; display: block; }
.hero__name {
  font-size: clamp(1.7rem, 5vw, 3rem); font-weight: 600;
  letter-spacing: .16em; text-indent: .16em; line-height: 1.3; color: var(--pearl);
  text-shadow: 0 4px 50px rgba(6, 13, 24, .55);
}
.hero__en {
  margin-top: 1rem; font-size: clamp(.66rem, 1.5vw, .8rem);
  letter-spacing: .18em; color: var(--silver);
  display: flex; flex-wrap: wrap; gap: .5rem 1rem; justify-content: center; align-items: center;
}
.hero__abbr {
  font-family: var(--serif); letter-spacing: .3em; color: var(--gold-2);
  border: 1px solid rgba(194,160,82,.4); border-radius: 999px; padding: .05rem .7rem; font-size: .64rem;
}
.hero__headline {
  font-family: var(--serif); font-weight: 500;
  font-size: clamp(1.15rem, 3vw, 1.9rem); line-height: 1.75; letter-spacing: .1em;
  margin-top: 2rem; color: var(--pearl); text-shadow: 0 2px 40px rgba(6,13,24,.6);
}
.hero__note {
  font-size: clamp(.76rem, 1.6vw, .88rem); letter-spacing: .1em;
  color: rgba(228, 232, 238, .92); margin-top: 1.6rem; line-height: 2.1;
  text-shadow: 0 1px 20px rgba(6,13,24,.7);
}
.hero__cta { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; margin-top: 2.6rem; }
.hero__founded {
  margin-top: 2rem; font-size: .72rem; letter-spacing: .24em; color: var(--gold-2);
}
.hero__founded span {
  color: var(--silver); margin-right: .8rem; padding-right: .8rem;
  border-right: 1px solid rgba(196,204,216,.3); letter-spacing: .2em;
}
.hero__scrollcue {
  position: absolute; left: 50%; bottom: 3.6vh; transform: translateX(-50%);
  display: flex; flex-direction: column; align-items: center; gap: .8rem;
}
.hero__scrollline { width: 1px; height: 52px; background: linear-gradient(180deg, transparent, rgba(243,241,239,.7)); overflow: hidden; position: relative; }
.hero__scrollline::after { content: ""; position: absolute; left: 0; top: -100%; width: 100%; height: 100%; background: var(--gold-bright); animation: scrollDrop 2.6s var(--ease) infinite; }
@keyframes scrollDrop { 0%{top:-100%} 60%{top:100%} 100%{top:100%} }
.hero__scrolltext { font-size: .6rem; letter-spacing: .28em; color: var(--mute); }

/* ---------- 2. 社会課題 ＋ 数値 ---------- */
.content--issue { max-width: 940px; }
.issue__lines { margin-top: 2.2rem; display: flex; flex-direction: column; gap: 1.5rem; }
.issue__lines p { font-size: clamp(.84rem, 1.8vw, .98rem); letter-spacing: .08em; color: rgba(243,241,234,.94); text-shadow: 0 1px 20px rgba(6,13,24,.65); }
.issue__lines .lead { font-family: var(--serif); font-size: clamp(.95rem, 2vw, 1.16rem); color: var(--pearl); line-height: 1.9; }
.stats {
  list-style: none; margin-top: 2.8rem;
  display: grid; grid-template-columns: repeat(4, 1fr); gap: .8rem;
}
.stat {
  padding: 1.5rem 1rem; text-align: center; border-radius: 6px;
  background: rgba(7, 14, 27, .55); border: 1px solid rgba(243, 241, 234, .14);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
}
.stat__num {
  display: block; font-family: var(--serif); font-weight: 600;
  font-size: clamp(1.9rem, 4.6vw, 2.9rem); line-height: 1; letter-spacing: .02em;
  color: var(--gold-bright); text-shadow: 0 2px 20px rgba(194,160,82,.3);
}
.stat__label { display: block; margin-top: 1rem; font-size: .72rem; letter-spacing: .06em; line-height: 1.75; color: rgba(228,232,238,.9); }
.stats__src { margin-top: 1.6rem; font-size: .68rem; letter-spacing: .08em; color: var(--mute); }
.stats__srcnote { display: block; margin-top: .3rem; font-size: .64rem; color: rgba(153,162,177,.75); }

/* ---------- 3. 情報基盤の欠落 ---------- */
.content--gap { max-width: 960px; }
.gap__items { margin-top: 2.6rem; display: grid; grid-template-columns: 1fr 1fr; gap: 1.1rem; }
.gapitem {
  padding: 2rem 1.8rem; border-radius: 6px;
  background: rgba(7, 14, 27, .56); border: 1px solid rgba(243, 241, 234, .14);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
}
.gapitem__num { font-family: var(--serif); font-weight: 700; font-size: clamp(2rem, 5vw, 3rem); line-height: 1; color: var(--gold-bright); letter-spacing: .02em; }
.gapitem__num span { display: inline-block; }
.gapitem__title { margin-top: 1rem; font-size: 1rem; letter-spacing: .1em; color: var(--pearl); }
.gapitem__title::after { content: ""; display: block; width: 26px; height: 1px; background: var(--gold); margin: .9rem 0 0; }
.gapitem__body { margin-top: 1rem; font-size: .78rem; letter-spacing: .06em; line-height: 2; color: rgba(228,232,238,.88); }

/* ---------- 4. 鳳鳴舘の役割 ---------- */
.content--role { max-width: 860px; }
.role__lines { margin-top: 2.4rem; display: flex; flex-direction: column; gap: 1.8rem; }
.role__lines p { font-size: clamp(.84rem, 1.8vw, .98rem); letter-spacing: .08em; color: rgba(243,241,234,.94); text-shadow: 0 1px 20px rgba(6,13,24,.65); }
.role__pillars { display: flex; flex-wrap: wrap; gap: .4rem 1.4rem; font-family: var(--serif); }
.role__pillars span { position: relative; font-size: clamp(.95rem,2vw,1.18rem); color: var(--gold-bright); letter-spacing: .06em; }

/* ---------- 5. 3つのビジョン ---------- */
.content--vision { max-width: var(--maxw); text-align: center; }
.visions { margin-top: 3rem; display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.1rem; }
.vcard {
  padding: 2.4rem 1.6rem 2.6rem; text-align: left; border-radius: 6px;
  background: rgba(7, 14, 27, .54); border: 1px solid rgba(243, 241, 234, .16);
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
  transition: border-color .6s, transform .6s var(--ease), background .6s;
}
.vcard:hover { border-color: rgba(194, 160, 82, .5); transform: translateY(-5px); background: rgba(10,20,38,.5); }
.vcard__idx { font-family: var(--serif); font-size: .9rem; letter-spacing: .1em; color: var(--gold-2); }
.vcard h3 { margin-top: 1rem; font-size: 1.08rem; letter-spacing: .1em; color: var(--pearl); line-height: 1.6; }
.vcard h3::after { content: ""; display: block; width: 30px; height: 1px; background: var(--gold); margin: 1.1rem 0; opacity: .85; }
.vcard p { font-size: .78rem; letter-spacing: .05em; line-height: 2.05; color: rgba(228,232,238,.9); }

/* ---------- 幕間（暗↔明の移行） ---------- */
.actbreak { position: relative; z-index: 10; height: 22vh; }
.actbreak--tolight { background: linear-gradient(180deg, rgba(6,17,31,0) 0%, rgba(20,30,45,.5) 40%, var(--ivory) 100%); }
.actbreak--todark  { background: linear-gradient(180deg, var(--ivory) 0%, rgba(20,30,45,.5) 60%, rgba(6,17,31,1) 100%); }

/* ---------- 制度セクション（オフホワイト） ---------- */
.panel {
  position: relative; z-index: 10; background: var(--ivory);
  padding: clamp(4rem, 10vh, 7rem) 6vw;
}
.panel--alt { background: var(--ivory-2); }
.panel__inner { max-width: var(--maxw); margin: 0 auto; }
.panel .eyebrow { color: var(--gold-deep); }
.panel h2 { margin-bottom: .4rem; }
.panel__note { margin-top: 2rem; font-size: .72rem; letter-spacing: .06em; color: var(--slate-2); }

/* 事業内容 行 */
.biz { margin-top: 2.6rem; display: flex; flex-direction: column; gap: 1.1rem; }
.biz__row {
  display: grid; grid-template-columns: 300px 1fr; gap: 1.5rem 2.4rem;
  padding: 2.2rem 2rem; background: #fff; border: 1px solid var(--ivory-edge);
  border-radius: 8px; box-shadow: 0 14px 40px rgba(12, 30, 60, .05);
}
.biz__head { display: flex; flex-direction: column; gap: .7rem; }
.biz__no { font-family: var(--serif); font-size: .8rem; letter-spacing: .1em; color: var(--gold-deep); }
.biz__head h3 { font-size: 1.16rem; letter-spacing: .08em; color: var(--head-navy); line-height: 1.5; }
.biz__head h3 em { display: block; font-style: normal; margin-top: .5rem; font-family: var(--sans); font-weight: 500; font-size: .68rem; letter-spacing: .24em; color: var(--gold-deep); }
.biz__body { display: flex; flex-direction: column; gap: 1rem; }
.biz__body p { font-size: .86rem; letter-spacing: .04em; line-height: 2.1; color: var(--slate); }
.biz__list { list-style: none; display: flex; flex-direction: column; gap: .7rem; }
.biz__list li { position: relative; padding-left: 1.4rem; font-size: .86rem; letter-spacing: .04em; color: var(--slate); }
.biz__list li::before { content: ""; position: absolute; left: 0; top: .75em; width: 7px; height: 7px; border-radius: 50%; background: var(--gold); }

/* ---------- 9. 組織体制 ---------- */
.org { margin-top: 3rem; }
.org__chart { display: flex; flex-direction: column; align-items: center; }
.orgnode {
  width: 100%; max-width: 560px; padding: 1.4rem 1.6rem; border-radius: 8px;
  background: #fff; border: 1px solid var(--ivory-edge); text-align: center;
  box-shadow: 0 12px 34px rgba(12, 30, 60, .06);
}
.orgnode--top { border-top: 3px solid var(--gold); }
.orgnode__role { font-family: var(--serif); font-size: 1.1rem; letter-spacing: .12em; color: var(--head-navy); }
.orgnode__desc { margin-top: .7rem; font-size: .78rem; letter-spacing: .04em; line-height: 1.9; color: var(--slate-2); }
.org__connector { width: 1px; height: 34px; background: linear-gradient(180deg, var(--gold), rgba(194,160,82,.2)); margin: .3rem 0; }
.org__pair { display: grid; grid-template-columns: 1fr 1fr; gap: 1.1rem; width: 100%; max-width: 760px; }
.orgnode--audit { border-left: 3px solid var(--royal); }
.org__subhead { margin-top: 3.6rem; font-size: 1rem; letter-spacing: .18em; color: var(--head-navy); text-align: center; }
.org__subhead::after { content: ""; display: block; width: 34px; height: 1px; background: var(--gold); margin: 1rem auto 0; }
.tiers { margin-top: 2rem; display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.1rem; }
.tier { padding: 1.8rem 1.5rem; background: #fff; border: 1px solid var(--ivory-edge); border-radius: 8px; text-align: center; box-shadow: 0 12px 34px rgba(12,30,60,.05); }
.tier__name { font-family: var(--serif); font-size: 1.05rem; letter-spacing: .14em; color: var(--head-navy); }
.tier__name::after { content: ""; display: block; width: 24px; height: 1px; background: var(--gold); margin: .9rem auto; }
.tier__desc { font-size: .8rem; letter-spacing: .04em; line-height: 1.95; color: var(--slate-2); }

/* ---------- 10. ロードマップ ---------- */
.roadmap { list-style: none; margin-top: 3rem; display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.2rem; counter-reset: phase; }
.phase { position: relative; padding: 2.2rem 1.8rem 2rem; background: #fff; border: 1px solid var(--ivory-edge); border-radius: 8px; box-shadow: 0 12px 34px rgba(12,30,60,.05); overflow: hidden; }
.phase__line { position: absolute; top: 0; left: 0; height: 3px; width: 100%; background: linear-gradient(90deg, var(--gold), rgba(194,160,82,.15)); }
.phase__tag { font-family: var(--serif); font-size: .8rem; letter-spacing: .16em; color: var(--gold-deep); }
.phase__title { margin-top: .5rem; font-size: 1.2rem; letter-spacing: .1em; color: var(--head-navy); }
.phase__time { margin-top: .5rem; font-size: .72rem; letter-spacing: .12em; color: var(--slate-2); }
.phase__list { list-style: none; margin-top: 1.4rem; display: flex; flex-direction: column; gap: .75rem; }
.phase__list li { position: relative; padding-left: 1.3rem; font-size: .82rem; letter-spacing: .03em; line-height: 1.85; color: var(--slate); }
.phase__list li::before { content: ""; position: absolute; left: 0; top: .7em; width: 6px; height: 6px; border-radius: 50%; background: var(--gold); }

/* ---------- 11. 社会的インパクト ---------- */
.content--impact { max-width: var(--maxw); text-align: center; }
.impacts { margin-top: 3rem; display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.1rem; }
.impact { padding: 2.4rem 1.6rem; border-radius: 6px; text-align: left; background: rgba(7,14,27,.55); border: 1px solid rgba(243,241,234,.16); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }
.impact h3 { font-size: 1.04rem; letter-spacing: .09em; color: var(--pearl); line-height: 1.6; }
.impact h3::after { content: ""; display: block; width: 28px; height: 1px; background: var(--gold); margin: 1rem 0; opacity: .85; }
.impact p { font-size: .8rem; letter-spacing: .05em; line-height: 2.05; color: rgba(228,232,238,.9); }

/* ---------- 12. 最終CTA ---------- */
.content--cta { text-align: center; max-width: 820px; }
.cta__seal { width: 72px; height: auto; margin: 0 auto 1.6rem; display: block; padding: 12px; border-radius: 50%; background: radial-gradient(circle at 50% 42%, #fbfaf5, #ece4d2 80%); box-shadow: 0 12px 40px rgba(4,10,20,.5); }
.cta__lead { margin-top: 1.6rem; font-size: clamp(.82rem, 1.8vw, .96rem); letter-spacing: .07em; line-height: 2.15; color: rgba(243,241,234,.95); text-shadow: 0 1px 22px rgba(16,12,7,.6); }
.cta__buttons { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; margin-top: 2.6rem; }
.cta__sub { margin-top: 1.6rem; font-size: .74rem; letter-spacing: .1em; }
.cta__sub a { color: var(--gold-bright); text-decoration: none; border-bottom: 1px solid rgba(230,205,138,.4); padding-bottom: .1rem; }
.cta__sub a:hover { color: #fff; }

/* ---------- 問い合わせフォーム ---------- */
.contact {
  position: relative; z-index: 10;
  padding: clamp(5rem, 12vh, 8rem) 6vw clamp(4rem, 9vh, 7rem);
  background: linear-gradient(180deg, rgba(6,17,31,.9), var(--ink) 26%);
}
.contact__inner { max-width: 640px; margin: 0 auto; }
.contact__eyebrow { font-size: .66rem; letter-spacing: .4em; text-indent: .4em; color: var(--gold-2); margin-bottom: 1rem; }
.contact__title { font-size: clamp(1.4rem, 3.2vw, 2rem); letter-spacing: .12em; color: var(--pearl); }
.contact__lead { margin-top: 1.6rem; font-size: .82rem; letter-spacing: .06em; line-height: 2; color: rgba(228,232,238,.88); }
#contactForm { margin-top: 3.2rem; display: flex; flex-direction: column; gap: 1.7rem; }
.field label { display: flex; align-items: center; gap: .7rem; font-size: .74rem; letter-spacing: .18em; color: var(--silver); margin-bottom: .8rem; }
.field__req { font-size: .56rem; letter-spacing: .14em; color: var(--gold-2); border: 1px solid rgba(194,160,82,.5); padding: .1rem .5rem; border-radius: 999px; }
.field input, .field select, .field textarea {
  width: 100%; font-family: var(--sans); font-size: .92rem; letter-spacing: .04em; color: var(--pearl);
  background: rgba(255,255,255,.05); border: 1px solid rgba(243,241,234,.18); border-radius: 4px;
  padding: 1rem 1.15rem; transition: border-color .5s, background .5s, box-shadow .5s;
  appearance: none; -webkit-appearance: none;
}
.field input::placeholder, .field textarea::placeholder { color: rgba(153,162,177,.6); }
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: rgba(194,160,82,.7); background: rgba(255,255,255,.07); box-shadow: 0 0 0 3px rgba(194,160,82,.14); }
.field select { cursor: pointer; }
.field select:invalid { color: rgba(153,162,177,.85); }
.field__select { position: relative; }
.field__select::after { content: ""; position: absolute; right: 1.15rem; top: 50%; width: 7px; height: 7px; border-right: 1px solid var(--silver); border-bottom: 1px solid var(--silver); transform: translateY(-70%) rotate(45deg); pointer-events: none; }
textarea { resize: vertical; min-height: 130px; }
.form__error { color: #e2a3a3; font-size: .76rem; letter-spacing: .08em; }
.form__notice { font-size: .72rem; letter-spacing: .04em; line-height: 1.8; color: var(--mute); padding: .9rem 1.1rem; border-left: 2px solid rgba(194,160,82,.5); background: rgba(194,160,82,.05); border-radius: 0 4px 4px 0; }
.btn--submit { align-self: center; min-width: min(320px, 100%); margin-top: .4rem; }
.form__done { margin-top: 2rem; text-align: center; padding: 3rem 1.6rem; border: 1px solid rgba(194,160,82,.3); border-radius: 8px; background: rgba(194,160,82,.06); animation: doneFade 1.1s var(--ease) both; }
@keyframes doneFade { from{opacity:0;transform:translateY(14px)} to{opacity:1;transform:none} }
.form__donetitle { font-family: var(--serif); font-size: 1.1rem; letter-spacing: .16em; color: var(--pearl); margin-bottom: 1rem; }
.form__donetext { font-size: .8rem; letter-spacing: .06em; line-height: 1.9; color: var(--silver); }

/* ---------- フッター ---------- */
.footer { position: relative; z-index: 10; text-align: center; padding: 3.6rem 6vw 3.4rem; background: var(--ink); border-top: 1px solid rgba(243,241,234,.07); }
.footer__brand { display: inline-flex; align-items: center; gap: .9rem; text-align: left; }
.footer__mark { width: 40px; height: auto; padding: 8px; border-radius: 50%; background: radial-gradient(circle at 50% 42%, #fbfaf5, #ece4d2 82%); flex: none; }
.footer__name { font-family: var(--serif); font-weight: 600; font-size: 1rem; letter-spacing: .2em; color: var(--pearl); }
.footer__en { font-size: .6rem; letter-spacing: .12em; color: var(--mute); margin-top: .3rem; }
.footer__tag { margin-top: 1.6rem; font-size: .72rem; letter-spacing: .16em; color: var(--silver); }
.footer__founded { margin-top: .8rem; font-size: .68rem; letter-spacing: .2em; color: var(--gold-2); }
.footer__copy { display: block; margin-top: 1.8rem; font-size: .6rem; letter-spacing: .16em; color: rgba(153,162,177,.55); }

/* ---------- レスポンシブ ---------- */
.pc { display: inline; }
.sp { display: none; }
@media (max-width: 900px) {
  body { line-height: 2.02; }
  .pc { display: none; }
  .sp { display: inline; }

  .nav { padding: .85rem 1.2rem; }
  .nav__word { font-size: .92rem; letter-spacing: .2em; }
  .nav__seal { width: 34px; height: 34px; }
  .nav__toggle { display: flex; flex-direction: column; gap: 7px; background: none; border: none; cursor: pointer; padding: .5rem .2rem; position: relative; z-index: 60; }
  .nav__toggle span { width: 26px; height: 1px; background: var(--pearl); transition: transform .5s var(--ease), opacity .4s; }
  .nav.is-open .nav__toggle span:nth-child(1) { transform: translateY(4px) rotate(20deg); }
  .nav.is-open .nav__toggle span:nth-child(2) { transform: translateY(-4px) rotate(-20deg); }
  .nav__links {
    position: fixed; inset: 0; flex-direction: column; justify-content: center; gap: 2rem;
    background: rgba(6, 15, 28, .96); -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px);
    opacity: 0; visibility: hidden; transition: opacity .5s ease, visibility .5s;
  }
  .nav.is-open .nav__links { opacity: 1; visibility: visible; }
  .nav__links a { font-size: 1rem; letter-spacing: .24em; color: rgba(243,241,234,.9); }
  .nav__consult { border-color: rgba(230,205,138,.5); }

  /* 情報の道筋：画面下部の横型 */
  .journey { right: auto; top: auto; left: 50%; bottom: calc(.8rem + env(safe-area-inset-bottom)); transform: translateX(-50%); display: flex; align-items: center; gap: .7rem; background: rgba(6,15,28,.5); padding: .5rem .9rem; border-radius: 999px; -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
  body[data-theme="light"] .journey { background: rgba(245,242,234,.72); }
  .journey__title { writing-mode: horizontal-tb; margin: 0; font-size: .58rem; letter-spacing: .2em; white-space: nowrap; }
  .journey__steps { flex-direction: row; gap: .8rem; }
  .journey__steps li { flex-direction: column-reverse; gap: .4rem; font-size: .54rem; letter-spacing: .06em; }
  .journey__steps li i { order: 0; }
  .journey__steps li span { white-space: nowrap; opacity: .55; transform: translateY(2px); transition: opacity .5s, transform .5s; }
  .journey__steps li.is-active span { opacity: 1; transform: none; }

  .chapter { height: 210vh; }
  .chapter--tall { height: 250vh; }
  h2 { letter-spacing: .06em; font-size: clamp(1.28rem, 5.6vw, 1.9rem); line-height: 1.75; }
  .content { width: 90vw; }

  .hero__seal { width: 104px; height: 104px; }
  .hero__cta { flex-direction: column; align-items: center; margin-top: 2.2rem; }
  .hero__cta .btn { width: min(340px, 84vw); }
  .hero__scrollcue { display: none; }

  .stats { grid-template-columns: 1fr 1fr; gap: .7rem; }
  .stat { padding: 1.3rem .8rem; }
  .gap__items { grid-template-columns: 1fr; gap: .9rem; }
  .role__pillars { flex-direction: column; gap: .5rem; }
  .visions { grid-template-columns: 1fr; gap: .8rem; }
  .vcard { padding: 1.8rem 1.5rem; }

  .actbreak { height: 14vh; }
  .panel { padding: 3.4rem 7vw; }
  .biz__row { grid-template-columns: 1fr; gap: 1.1rem; padding: 1.7rem 1.4rem; }
  .biz__head h3 { font-size: 1.08rem; }

  .org__pair { grid-template-columns: 1fr; gap: .9rem; max-width: 560px; }
  .org__connector { height: 26px; }
  .tiers { grid-template-columns: 1fr; gap: .8rem; }
  .roadmap { grid-template-columns: 1fr; gap: 1rem; }

  .impacts { grid-template-columns: 1fr; gap: .8rem; }
  .impact { padding: 1.8rem 1.5rem; }

  .cta__buttons { flex-direction: column; align-items: center; }
  .cta__buttons .btn { width: min(340px, 84vw); }

  .contact { padding-bottom: 8rem; }
  .footer__brand { flex-direction: column; text-align: center; gap: .6rem; }
}

@media (max-width: 480px) {
  .content { width: 92vw; }
  .stat__num { font-size: clamp(1.7rem, 9vw, 2.3rem); }
}

/* ---------- 動きを控えたい環境（prefers-reduced-motion） ---------- */
@media (prefers-reduced-motion: reduce) {
  .grain, .bloom, .hero__scrollline::after, .loader__mark { animation: none !important; }
  * { scroll-behavior: auto !important; }
  .reveal { transition: opacity .3s ease !important; }
}
