@charset "utf-8";
/* =============================================================================
   ルミアと始まりの海 ｜ TapNow コラボ 期間限定IP 資料サイト
   トークンと規則は ../DESIGN.md が正典。ここは実装のみ。
   タイムライン定数は main.js の TIMELINE と _brief/TIMELINE.md を正とする。

   規約（DESIGN §2.1）:
   - --cast-* はキャラクター文脈でのみ使う。参照してよいのは .cast-card / .rail-card /
     .swatch / .deep-cast の 4 箇所だけで、許諾・警告・特典などの汎用アクセントに転用しない。
   - 明朝見出しの字送りは --ls-display、ラベルは --ls-label / --ls-label-tight の 3 値のみ。
     生の em 値をセレクタに直接書かない。
   ========================================================================== */

/* --- Latin ディスプレイ体（自己ホスト・CDN 依存なし） --------------------- */
@font-face {
  font-family: "Cormorant Garamond";
  /* file:// でも動くよう data URI で埋め込む（Chrome は file:// のフォント取得を
     CORS で拒否する）。原本は assets/font/cormorant-garamond-latin.woff2 に保全。
     SIL Open Font License 1.1 / Cormorant Garamond latin サブセット・可変ウェイト。 */
  src: url("data:font/woff2;base64,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") format("woff2");
  font-weight: 300 700;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
                 U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122,
                 U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ============================ 1. Tokens ================================== */
:root {
  /* Canvas & Abyss */
  --abyss-950:#020A10; --abyss-900:#030F16; --abyss-850:#06171F;
  --abyss-800:#0B232D; --abyss-700:#12323E; --abyss-600:#194857;
  --abyss-500:#2D697A; --abyss-400:#568B98; --abyss-300:#8FB2BC;
  /* Brand */
  --brand-600:#1994CC; --brand-500:#3FBBCE; --brand-400:#78C7E6;
  --brand-300:#ABE1F1; --brand-200:#DCF4F9;
  /* Dawn */
  --dawn-500:#969089; --dawn-400:#CDB8AB; --dawn-300:#E4CDBD;
  --dawn-200:#F1E0CF; --dawn-100:#FAF1E8;
  /* Cast accents */
  --cast-lumia:#3FBBCE; --cast-pukuri:#FB9C45; --cast-powan:#9A92AE; --cast-kururu:#F1B716;
  /* Semantic */
  --canvas: var(--abyss-850);
  --surface: var(--abyss-700);
  --surface-raised:#16404F;
  --hairline: var(--abyss-600);
  --ink: var(--dawn-100);
  --ink-muted: var(--abyss-300);
  --ink-faint: var(--abyss-400);
  --accent: var(--brand-500);
  --accent-strong: var(--brand-300);
  --focus-ring: var(--brand-300);
  /* テキストは画面幅の 43% にしか無い。右 42% は素の絵を見せる（夜明けの暖色を殺さない）。
     可読性の不足分は板ではなく文字側の text-shadow で取る。 */
  --panel-scrim: linear-gradient(96deg,
      rgba(3,15,22,.90) 0%, rgba(3,15,22,.74) 24%, rgba(3,15,22,.26) 44%, rgba(3,15,22,0) 58%);
  --copy-shadow: 0 1px 12px rgba(2,10,16,.7), 0 0 3px rgba(2,10,16,.5);

  /* Type */
  --font-display-jp: "Hiragino Mincho ProN", "Yu Mincho", YuMincho, "Noto Serif JP", "Songti SC", serif;
  --font-display-la: "Cormorant Garamond", "Optima", "Iowan Old Style", Palatino, Georgia, serif;
  --font-ui: "Hiragino Sans", "Yu Gothic", YuGothic, "Noto Sans JP", -apple-system, "Segoe UI", system-ui, sans-serif;
  --font-mono: "SF Mono", "JetBrains Mono", ui-monospace, monospace;
  --t-hero: clamp(3rem, 10.5vw, 8.5rem);
  /* ヒーロー > 章見出し の序列を守る。--t-tagline(52px) > --t-display(56px→章) は
     章見出しを下げて、タグラインを上げることで回復させている。 */
  --t-display: clamp(1.75rem, 4.6vw, 3.5rem);
  --t-tagline: clamp(1.75rem, 3.9vw, 3.25rem);
  --t-title: clamp(1.5rem, 3.4vw, 2.5rem);
  --t-lead: clamp(1.0625rem, 1.5vw, 1.25rem);
  --t-body: 1rem;
  --t-caption: .8125rem;
  --t-label: .6875rem;
  /* 字送りはこの 3 値だけ。実装に散らさない（DESIGN §2.2） */
  --ls-display: .06em;
  --ls-label: .22em;
  --ls-label-tight: .16em;

  /* Space / radius / elevation */
  --s-1:4px; --s-2:8px; --s-3:12px; --s-4:16px; --s-5:24px;
  --s-6:32px; --s-7:48px; --s-8:64px; --s-9:96px; --s-10:128px;
  --r-sm:4px; --r-md:8px; --r-lg:14px; --r-pill:999px;
  --e-1: 0 1px 0 rgba(171,225,241,.08) inset;
  --e-2: 0 18px 40px -24px rgba(2,10,16,.9);
  --e-3: 0 40px 80px -40px rgba(2,10,16,.95);

  /* Motion */
  --dur-fast:180ms; --dur-base:420ms; --dur-slow:900ms; --dur-cine:1400ms;
  --ease-out: cubic-bezier(.16,1,.3,1);
  --ease-cine: cubic-bezier(.65,.05,.36,1);

  /* z-index bands (DESIGN §2.5) */
  --z-world:1; --z-grade:12; --z-copy:22; --z-rail:26; --z-chrome:32; --z-modal:44;

  /* Layout */
  --header-h:56px;
  --gutter: clamp(20px, 5vw, 72px);
  --measure-jp: 34em;

  /* --- scroll-engine outputs (main.js が書き換える) --- */
  --p:0;            /* 0..1 正規化スクロール進捗 */
  --push:0;         /* カメラ押し込み */
  --split:0;        /* 水面の分離 */
  --dive:0;         /* 夜明け→深海 */
  --deep-push:0;    /* 深海側の押し込み */
  --deep-blur:0px;  /* 焦点移動（同時1要素・上限10px） */
  --deep-tint:0;
  --hero-op:1; --deep-op:0;
  --intro-op:1; --intro-y:0px;
  --a-op:0; --a-y:18px; --a-scrim:0;
  --b-op:0; --b-y:18px; --b-scrim:0;
  --rail-op:0; --rail-y:26vh; --rail-ctl:0;
  --mid-op:0; --mid-push:0;
  --loc-a:0; --loc-b:0; --loc-c:0;
  --float-op:0; --float-y:34px;
  --mx:0; --my:0;   /* -1..1 のポインタ位置（粗いポインタ・reduced-motion では常に 0） */
}

/* ============================ 2. Reset / base ============================ */
*,*::before,*::after{ box-sizing:border-box; }
html{
  overflow-x:clip;
  /* 和文の約物処理。palt は見出し側で個別に入れる（本文はベタのほうが読みやすい）。 */
  hanging-punctuation: allow-end;
  text-autospace: normal;
  scroll-behavior:smooth;
  scroll-padding-top: calc(var(--header-h) + 12px);
  background: var(--canvas);
  -webkit-text-size-adjust:100%;
}
body{
  margin:0;
  overflow-x:clip;
  background: var(--canvas);
  color: var(--ink);
  font-family: var(--font-ui);
  font-size: var(--t-body);
  line-height:1.9;
  letter-spacing:.02em;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img,video{ max-width:100%; }
/* sticky ヘッダのぶんだけ本文を引き上げ、ヒーローをフルブリードのまま保つ。
   ヘッダは z-index で上に乗るので、見た目は fixed ヘッダと同じになる。 */
#main{ margin-top: calc(-1 * var(--header-h)); }
h1,h2,h3,h4,p,ul,ol,dl,dd,figure,pre{ margin:0; }
/* 日本語見出しの禁則。auto-phrase で文節を割らず、balance で行長を揃え、
   1文字だけ次行に落ちる孤立行（「…廃墟」の「墟」）を防ぐ。
   未対応ブラウザは normal / wrap にフォールバックするだけで壊れない。 */
h1,h2,h3,h4{
  word-break: auto-phrase;
  line-break: strict;
  text-wrap: balance;
}
/* 本文・リード・キャプションも文節で折り返す。balance ではなく pretty
   （本文で均等割りすると行長がばらつく。守りたいのは最終行の孤立だけ）。 */
p,li,dd,figcaption,
.lead,.rail-line,.film-desc,.cast-line,.cta-note,.join-lead,.term-note,.spec dd{
  word-break: auto-phrase;
  line-break: strict;
  text-wrap: pretty;
}
/* 明朝ディスプレイ体はすべて palt + カーニング。詰まりすぎるぶんは字送りで戻す。 */
.tagline,.brand-jp,.panel-title,.rail-title,.rail-name,.sheet-title,.cast-name,
.film-title,.plate-name,.join-h,.step-h,.footer-title,.term h4,.term dt,
.why30 h4,.reward-who,.deadline-date,.loc-name,.spec dt,.inv-table th,.inv-table td:first-child{
  font-feature-settings: "palt" 1;
  font-kerning: normal;
}
ul,ol{ padding:0; list-style:none; }
a{ color: var(--accent-strong); }
button{ font:inherit; color:inherit; }

:where(a,button,video,[tabindex]):focus-visible{
  outline:2px solid var(--focus-ring);
  outline-offset:3px;
  border-radius: var(--r-sm);
}

.anchor-mark{ position:absolute; width:0; height:0; }
.visually-hidden{
  position:absolute!important; width:1px; height:1px; margin:-1px;
  padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap;
}
/* フォーカス時だけ現れる。transform だけに頼らず opacity と pointer-events でも
   確実に消す（transform が別ルールで打ち消されても露出しないようにするため）。 */
.skip-link{
  position:fixed; top:8px; left:8px; z-index:var(--z-modal);
  transform:translateY(-200%);
  opacity:0; pointer-events:none;
  background:var(--surface-raised); color:var(--ink);
  padding:10px 16px; border-radius:var(--r-md);
  box-shadow:var(--e-2); text-decoration:none;
  transition:transform var(--dur-fast) var(--ease-out), opacity var(--dur-fast) var(--ease-out);
}
.skip-link:focus,
.skip-link:focus-visible{ transform:none; opacity:1; pointer-events:auto; }

.label{
  display:flex; align-items:baseline; gap:var(--s-3);
  font-size:var(--t-label); line-height:1; letter-spacing:var(--ls-label);
  color:var(--ink-muted);
}
.label-la{
  font-family:var(--font-display-la); letter-spacing:var(--ls-label);
  text-transform:uppercase; color:var(--abyss-400);
}
.label-la::before{ content:"／"; margin-right:var(--s-3); letter-spacing:0; }
.lead{
  font-size:var(--t-lead); color:var(--dawn-300);
  max-width:var(--measure-jp); line-height:1.85;
}
b{ color:var(--dawn-100); font-weight:600; }

/* ============================ 3. Chrome ================================= */
/* sticky にして通常フローに参加させる（fixed だと文書フローから外れ、
   ページ全体キャプチャや印刷でセクション見出しの上に落ちてくる）。
   ステージは負のマージンでヘッダの下に潜らせ、見た目のフルブリードは維持する。 */
.site-header{
  position:sticky; top:0; z-index:var(--z-chrome);
  height:var(--header-h);
  display:flex; align-items:center; gap:var(--s-5);
  padding:0 var(--gutter);
  padding-top: env(safe-area-inset-top, 0px);
  background: var(--abyss-900);
  border-bottom:1px solid color-mix(in srgb, var(--hairline) 60%, transparent);
}
@supports ((backdrop-filter: blur(14px)) or (-webkit-backdrop-filter: blur(14px))){
  .site-header{
    background: rgba(6,23,31,.72);
    -webkit-backdrop-filter: blur(14px);
    backdrop-filter: blur(14px);
  }
}
/* ヘッダはロゴ画像ではなく文字組にする。ロゴPNGは 1279×549 の二段組みで、
   56px のヘッダ内では潰れて判読できないため（DESIGN §6 はロゴ画像の改変を禁じており、
   縮小して潰すのも実質的な劣化にあたる）。 */
.brand{
  display:flex; flex-direction:column; justify-content:center;
  height:100%; flex:none; text-decoration:none; color:inherit; gap:1px;
}
.brand-jp{
  font-family:var(--font-display-jp); font-weight:600;
  font-size:.98rem; line-height:1.2; letter-spacing:var(--ls-display); color:var(--ink);
}
.brand-la{
  font-family:var(--font-display-la); font-size:.6rem; line-height:1;
  letter-spacing:.2em; color:var(--ink-muted);
}
@media (max-width:640px){ .brand-la{ display:none; } .brand-jp{ font-size:.9rem; } }
/* 帯の重心。ブランドの右に小さな刻印を置き、51% の空白を埋める */
.brand-stamp{
  display:flex; align-items:center; gap:var(--s-2);
  margin-left:var(--s-5); padding-left:var(--s-5);
  border-left:1px solid color-mix(in srgb,var(--hairline) 80%,transparent);
  font-size:var(--t-label); letter-spacing:var(--ls-label); line-height:1.2;
  color:var(--abyss-300); white-space:nowrap;
}
.brand-stamp span{ color:var(--abyss-400); }
.brand-stamp span::before{ content:"／"; margin-right:var(--s-2); }
@media (max-width:1180px){ .brand-stamp{ display:none; } }

.site-nav{ margin-left:auto; display:flex; align-items:center; gap:clamp(12px,1.8vw,24px); }
.site-nav ul{ display:flex; gap:clamp(10px,2.2vw,26px); align-items:center; }
.site-nav a{
  display:block; padding:6px 2px;
  font-size:var(--t-caption); letter-spacing:.1em; line-height:1;
  color:var(--dawn-300); text-decoration:none;
  border-bottom:1px solid transparent;
  transition:color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);
}
.nav-la{ display:none; }
@media (hover:hover){ .site-nav a:not(.nav-cta):hover{ color:var(--ink); border-bottom-color:var(--accent); } }
.site-nav a:not(.nav-cta)[aria-current="true"]{ color:var(--ink); border-bottom-color:var(--accent); }

/* 締切は本サイト最大の用件。常時可視にする */
.nav-deadline{
  display:flex; align-items:baseline; gap:var(--s-2);
  font-size:var(--t-label); letter-spacing:var(--ls-label-tight); line-height:1;
  color:var(--brand-300); white-space:nowrap;
}
.nav-deadline span{ color:var(--abyss-300); }
.nav-deadline time{ font-variant-numeric:tabular-nums; }
@media (max-width:1080px){ .nav-deadline{ display:none; } }

/* 参加導線は pill に格上げする（他 4 項目と等価なテキストにしない） */
.nav-cta{
  padding:8px 18px!important; border-radius:var(--r-pill);
  background:var(--accent); color:var(--abyss-950)!important;
  font-weight:600; letter-spacing:.06em; border-bottom:0!important;
  transition:background var(--dur-fast) var(--ease-out);
}
@media (hover:hover){ .nav-cta:hover{ background:var(--accent-strong); } }

/* ハンバーガー（760px 以下でのみ出す。44×44 を確保） */
.nav-toggle{
  display:none; margin-left:auto;
  width:44px; height:44px; padding:0; flex:none;
  background:transparent; border:1px solid color-mix(in srgb,var(--hairline) 80%,transparent);
  border-radius:var(--r-md); cursor:pointer;
  place-items:center; color:var(--dawn-200);
}
.nav-toggle-bars,.nav-toggle-bars::before,.nav-toggle-bars::after{
  display:block; width:18px; height:1.5px; background:currentColor; border-radius:2px;
  transition:transform var(--dur-fast) var(--ease-out), opacity var(--dur-fast) var(--ease-out);
}
.nav-toggle-bars{ position:relative; }
.nav-toggle-bars::before,.nav-toggle-bars::after{ content:""; position:absolute; left:0; }
.nav-toggle-bars::before{ top:-6px; }
.nav-toggle-bars::after{ top:6px; }
.nav-toggle[aria-expanded="true"] .nav-toggle-bars{ background:transparent; }
.nav-toggle[aria-expanded="true"] .nav-toggle-bars::before{ transform:translateY(6px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] .nav-toggle-bars::after{ transform:translateY(-6px) rotate(-45deg); }
.nav-scrim{ display:none; }

/* 進捗レール（DESIGN §3.7） */
.progress-rail{
  position:fixed; right:14px; top:50%; translate:0 -50%;
  z-index:var(--z-chrome); height:min(62vh,540px); width:2px;
}
.pr-track{ position:absolute; inset:0; background:color-mix(in srgb,var(--hairline) 70%,transparent); }
.pr-fill{
  position:absolute; inset:0 0 auto 0; transform-origin:top;
  height:100%; background:var(--accent);
  transform:scaleY(var(--doc-p,0));
}
.pr-marks{ position:absolute; inset:0; }
.pr-marks li{ position:absolute; top:var(--at); left:0; translate:0 -50%; }
.pr-mark{
  display:block; width:22px; height:22px; margin-left:-10px;
  padding:0; background:none; border:0; cursor:pointer;
  text-decoration:none; position:relative;
}
.pr-mark::before{
  content:""; position:absolute; left:50%; top:50%; translate:-50% -50%;
  width:6px; height:6px; border-radius:var(--r-pill);
  background:var(--abyss-500);
  transition:background var(--dur-fast) var(--ease-out), scale var(--dur-fast) var(--ease-out);
}
.pr-mark span{
  position:absolute; right:calc(100% + 8px); top:50%; translate:0 -50%;
  writing-mode:vertical-rl; text-orientation:upright;
  font-family:var(--font-display-jp); font-size:var(--t-label);
  letter-spacing:var(--ls-label-tight); line-height:1;
  color:var(--dawn-200); text-shadow:0 1px 6px rgba(2,10,16,.9);
  padding:4px 3px; border-radius:var(--r-sm);
  background:rgba(3,15,22,.72);
  opacity:0; pointer-events:none; white-space:nowrap;
  transition:opacity var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);
}
@media (hover:hover){ .pr-mark:hover::before{ background:var(--accent); scale:1.5; } }
.pr-mark:hover span,.pr-mark:focus-visible span{ opacity:1; }
.pr-mark[data-active]::before{ background:var(--accent-strong); scale:1.5; }
/* 現在地の章名だけを縦組みで出す＝「章名が縦に並ぶ深度計」。
   全マーカーを常時表示すると 9 本の縦ラベルが衝突するため、可視は 1 本に絞る。 */
.pr-mark[data-active] span{ opacity:1; color:var(--accent-strong); }
@media (max-width:1023px){ .progress-rail{ display:none; } }

/* ============================ 4. Footer ================================= */
.site-footer{
  padding: var(--s-9) var(--gutter) calc(var(--s-8) + env(safe-area-inset-bottom,0px));
  border-top:1px solid color-mix(in srgb,var(--hairline) 60%,transparent);
}
.footer-title{ font-family:var(--font-display-jp); font-size:clamp(1.1rem,2.4vw,1.5rem); line-height:1.28; letter-spacing:var(--ls-display); }
.footer-line{ margin-top:var(--s-3); color:var(--dawn-300); max-width:var(--measure-jp); }
.footer-grid{
  display:grid; gap:var(--s-7);
  grid-template-columns:1.4fr 1fr 1fr;
  max-width:1380px; margin:0 auto;
}
@media (max-width:900px){ .footer-grid{ grid-template-columns:1fr; gap:var(--s-6); } }
.footer-meta{
  margin-top:var(--s-5); display:flex; flex-wrap:wrap; gap:var(--s-2) var(--s-4);
  font-size:var(--t-caption); color:var(--ink-muted);
}
.footer-meta span:not(:last-child)::after{ content:"／"; margin-left:var(--s-4); color:var(--abyss-600); }
.footer-h{
  font-size:var(--t-label); letter-spacing:var(--ls-label); line-height:1;
  color:var(--dawn-300); padding-bottom:var(--s-3);
  border-bottom:1px solid color-mix(in srgb,var(--hairline) 60%,transparent);
}
.footer-h--sp{ margin-top:var(--s-6); }
.footer-nav{ margin-top:var(--s-4); display:grid; gap:var(--s-3); }
.footer-nav a{
  font-size:var(--t-caption); color:var(--dawn-300); text-decoration:none;
  border-bottom:1px solid transparent;
}
@media (hover:hover){ .footer-nav a:hover{ color:var(--ink); border-bottom-color:var(--accent); } }
.footer-note{ margin-top:var(--s-4); font-size:var(--t-caption); line-height:1.8; color:var(--ink-muted); }
.footer-note a{ color:var(--accent-strong); text-decoration:none; border-bottom:1px solid color-mix(in srgb,var(--accent) 45%,transparent); }
.footer-rights:empty{ display:none; }

/* ============================ 5. Cinematic stage ========================= */
/* 仮想タイムライン高。main.js の TIMELINE.travel と一致させること。 */
.cinematic-scroll{ --travel:3100px; height:var(--travel); position:relative; }
@media (max-width:1024px){ .cinematic-scroll{ --travel:2700px; } }
@media (max-width:640px){ .cinematic-scroll{ --travel:2200px; } }

.stage{
  position:sticky; top:0;
  height:100vh; height:100svh;
  overflow:clip; isolation:isolate;
  background:var(--abyss-900);
}
@supports not (overflow:clip){ .stage{ overflow:hidden; } }

/* --- worlds ------------------------------------------------------------- */
.world{
  position:absolute; inset:-40px;   /* ブラーの縁とキャンバス端を逃がすブリード */
  z-index:var(--z-world);
  will-change:transform,opacity;
}
.world[data-off]{ visibility:hidden; }
.world--hero{
  opacity:var(--hero-op);
  transform: translate3d(0, calc(var(--dive) * -14vh), 0) scale(calc(1 + var(--dive) * .10));
}
.world--mid{
  opacity:var(--mid-op);
  transform: translate3d(0, calc(var(--mid-push) * -6vh), 0) scale(calc(1 + var(--mid-push) * .06));
}
.world--deep{
  opacity:var(--deep-op);
  transform: translate3d(0, calc((1 - var(--dive)) * 18vh), 0) scale(calc(1.045 - var(--dive) * .045));
  filter: blur(var(--deep-blur));   /* 焦点移動。同時適用はこの1要素のみ・上限10px */
}

.layer{ position:absolute; inset:0; display:block; }
.layer img{
  width:100%; height:100%; display:block;
  object-fit:cover; object-position:50% 50%;
  transform: translate3d(var(--tx,0px), var(--ty,0px), 0) scale(var(--sc,1.1));
  transform-origin: var(--org, 50% 50%);
}

/* 移動量は 遠 < 中 < 近（DESIGN §3.2）。ポインタ視差は遠近で符号反転。 */
[data-layer="sky"] img{
  --org:50% 20%; --sc:calc(1.10 + var(--push) * .03);
  --tx:calc(var(--mx) * -7px);
  --ty:calc(var(--push) * -22px + var(--my) * -5px);
}
[data-layer="city"] img{
  --org:50% 78%; --sc:calc(1.10 + var(--push) * .09);
  --tx:calc(var(--mx) * 11px);
  --ty:calc(var(--push) * -58px + var(--my) * 7px);
}
.layer--water img{
  --org:50% 100%; --sc:calc(1.10 + var(--push) * .20);
  --ty:calc(var(--push) * 26px + var(--my) * 12px + var(--split) * 9vh);
}
/* 水面の分離。split=0 のときは羽根幅 0 の完全な相補クリップになり、継ぎ目が出ない。
   split が進むほど内側の縁を羽根ぼかしして、直線的な「切り口」ではなく
   水が退いていくように見せる。 */
.layer--water{ --feather: calc(var(--split) * 150px); }
.water--l{
  -webkit-mask-image: linear-gradient(to right, #000 calc(50% - var(--feather)), transparent 50%);
          mask-image: linear-gradient(to right, #000 calc(50% - var(--feather)), transparent 50%);
}
.water--r{
  -webkit-mask-image: linear-gradient(to left, #000 calc(50% - var(--feather)), transparent 50%);
          mask-image: linear-gradient(to left, #000 calc(50% - var(--feather)), transparent 50%);
}
.water--l img{ --tx:calc(var(--mx) * 18px + var(--split) * -68%); }
.water--r img{ --tx:calc(var(--mx) * 18px + var(--split) * 68%); }

[data-layer="deep-bg"] img{
  --org:50% 18%; --sc:calc(1.10 + var(--deep-push) * .02);
  --tx:calc(var(--mx) * -7px);
  --ty:calc(var(--deep-push) * -16px + var(--my) * -5px);
}
[data-layer="deep-walls"] img{
  --org:50% 60%; --sc:calc(1.10 + var(--deep-push) * .07);
  --tx:calc(var(--mx) * 11px);
  --ty:calc(var(--deep-push) * -40px + var(--my) * 7px);
}
[data-layer="deep-fore"] img{
  --org:50% 100%; --sc:calc(1.10 + var(--deep-push) * .16);
  --tx:calc(var(--mx) * 18px);
  --ty:calc(var(--deep-push) * 30px + var(--my) * 12px);
}

/* 昼の中間ワールド。移動量比は hero と同じ 遠<中<近 を保つ */
[data-layer="mid-sky"] img{
  --org:50% 20%; --sc:calc(1.10 + var(--mid-push) * .03);
  --tx:calc(var(--mx) * -7px);
  --ty:calc(var(--mid-push) * -22px + var(--my) * -5px);
}
[data-layer="mid-town"] img{
  --org:50% 72%; --sc:calc(1.10 + var(--mid-push) * .09);
  --tx:calc(var(--mx) * 11px);
  --ty:calc(var(--mid-push) * -52px + var(--my) * 7px);
}
[data-layer="mid-water"] img{
  --org:50% 100%; --sc:calc(1.10 + var(--mid-push) * .18);
  --tx:calc(var(--mx) * 18px);
  --ty:calc(var(--mid-push) * 26px + var(--my) * 12px);
}

/* --- hero figure（DESIGN §3.2 の視差 0.42。作品の顔をファーストビューに立たせる） --- */
.layer--figure{
  position:absolute; inset:0; pointer-events:none;
  --fig-h: clamp(260px, 50svh, 560px);
  --fig-x: 76%;
  --fig-bottom: 10.5svh;
  transform: translate3d(calc(var(--mx) * 22px), calc(var(--push) * 42px + var(--my) * 15px), 0);
  transform-origin:50% 100%;
}
/* .layer img（width/height 100% + cover）に負けないよう、同じ詳細度で上書きする */
.layer--figure img{
  position:absolute; left:var(--fig-x); bottom:var(--fig-bottom);
  height:var(--fig-h); width:auto; max-width:none;
  object-fit:contain;
  transform:none; transform-origin:50% 100%;
}
.layer--figure .figure-art{
  translate:-50% 0;
  filter:drop-shadow(0 24px 48px rgba(2,10,16,.55));
}
/* 足元の接地。水面に立っていることを一枚の楕円で示す */
.layer--figure::after{
  content:""; position:absolute;
  left:var(--fig-x); bottom:calc(var(--fig-bottom) - 6px);
  width:calc(var(--fig-h) * .30); height:calc(var(--fig-h) * .055);
  translate:-50% 0;
  border-radius:50%;
  background:radial-gradient(closest-side, rgba(171,225,241,.34), rgba(171,225,241,0) 78%);
}
/* 水面反射。同じ画像を反転して足元から下へ流し、離れるほど消す */
.layer--figure .figure-echo{
  translate:-50% 100%; scale:1 -1;
  opacity:.26; filter:blur(1.4px);
  -webkit-mask-image:linear-gradient(to bottom, rgba(0,0,0,0) 30%, #000 100%);
          mask-image:linear-gradient(to bottom, rgba(0,0,0,0) 30%, #000 100%);
}

/* --- 深海の4体（レール直前に「そろった絵」を一度作る） -------------------- */
.deep-cast{
  position:absolute; inset:0; z-index:calc(var(--z-copy) - 1);
  pointer-events:none;
  opacity:var(--float-op);
  transform:translate3d(0,var(--float-y),0);
  will-change:transform,opacity;
}
.deep-cast[data-off]{ visibility:hidden; }
.dc{ position:absolute; width:auto; max-width:none; filter:drop-shadow(0 18px 34px rgba(2,10,16,.62)); }
.dc--lumia { height:clamp(190px,31svh,350px); right:11%; bottom:22svh; }
.dc--kururu{ height:clamp(84px,12.5svh,142px); right:31%; bottom:46svh; }
.dc--powan { height:clamp(76px,11svh,124px);   right:29%; bottom:13svh; }
.dc--pukuri{ height:clamp(70px,10svh,112px);   right:46%; bottom:33svh; }

/* --- ロケーション字幕（無言の区間を作らないための1行） -------------------- */
.loc{
  position:absolute; left:var(--gutter); bottom:clamp(48px,9vh,96px);
  z-index:var(--z-copy); margin:0; pointer-events:none;
}
.loc[data-loc="a"]{ opacity:var(--loc-a); transform:translate3d(0,calc((1 - var(--loc-a)) * 14px),0); }
.loc[data-loc="b"]{ opacity:var(--loc-b); transform:translate3d(0,calc((1 - var(--loc-b)) * 14px),0); }
.loc[data-loc="c"]{ opacity:var(--loc-c); transform:translate3d(0,calc((1 - var(--loc-c)) * 14px),0); }
.loc figcaption{
  display:grid; grid-template-columns:auto 1fr; gap:3px var(--s-4);
  padding-left:var(--s-4); border-left:1px solid var(--accent);
}
.loc-id{
  grid-row:1/3; align-self:center;
  font-family:var(--font-display-la); font-size:1.7rem; line-height:1; color:var(--accent);
}
.loc-name{
  font-family:var(--font-display-jp); font-weight:600;
  font-size:clamp(1.05rem,1.7vw,1.35rem); line-height:1.28; letter-spacing:var(--ls-display);
  color:var(--ink); text-shadow:var(--copy-shadow);
}
.loc-time{
  grid-column:2; font-size:var(--t-label); letter-spacing:var(--ls-label);
  color:var(--brand-300); text-shadow:var(--copy-shadow);
}

/* --- grade（ティント・ヴィネット） -------------------------------------- */
.grade{
  position:absolute; inset:0; z-index:var(--z-grade); pointer-events:none;
  background:
    radial-gradient(128% 92% at 50% 40%, transparent 42%, rgba(2,10,16,.52) 100%),
    linear-gradient(to bottom, rgba(2,10,16,.42), transparent 22%, transparent 74%, rgba(2,10,16,.5));
}
.grade::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(to bottom, rgba(6,23,31,.55), rgba(3,15,22,.72));
  opacity:var(--deep-tint);
}

/* --- 読み込みベール（フラッシュ防止）。critical layer の decode 後に外れる --- */
.stage-veil{
  position:absolute; inset:0; z-index:var(--z-modal);
  background:var(--abyss-900); pointer-events:none;
  opacity:1; visibility:visible;
  transition:opacity 700ms var(--ease-out), visibility 0s linear 700ms;
}
html.is-ready .stage-veil{ opacity:0; visibility:hidden; }

/* --- intro -------------------------------------------------------------- */
.intro{
  position:absolute; inset:0; z-index:var(--z-copy);
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:var(--s-4); padding:var(--header-h) var(--gutter) var(--s-8);
  text-align:center; pointer-events:none;
  opacity:var(--intro-op);
  transform:translate3d(0,var(--intro-y),0);
  will-change:transform,opacity;
}
/* 夜明けの陽の靄。ロゴ背後を白く潰さないよう、範囲をコピー帯だけに絞り不透明度を落とす。
   地は下端 46% の暗いグラデーションで作り、明るい空はそのまま残す。 */
.intro::before{
  content:""; position:absolute; inset:0; z-index:-1; pointer-events:none;
  background:
    radial-gradient(72% 34% at 50% 64%, rgba(250,241,232,.24), rgba(250,241,232,0) 76%),
    linear-gradient(to top, rgba(2,10,16,.62), rgba(2,10,16,0) 46%);
}
.hero-title{ font-size:var(--t-hero); line-height:0; margin:0 0 var(--s-4); }
.hero-title img{
  width:clamp(260px, 42vw, 580px); height:auto; display:block;
  filter: drop-shadow(0 10px 30px rgba(2,10,16,.28));
}
/* 黒＋白ハローをやめて反転する。作品美術のコントラストを殺さない。 */
.tagline{
  font-family:var(--font-display-jp); font-weight:600;
  font-size:var(--t-tagline); line-height:1.32; letter-spacing:calc(var(--ls-display) + .02em);
  color:var(--dawn-100);
  text-shadow:0 2px 20px rgba(2,10,16,.6), 0 0 3px rgba(2,10,16,.45);
  max-width:14em;
}
@media (min-width:900px){
  .intro{ padding-right: clamp(200px, 24vw, 400px); }
}
.hero-latin{
  font-family:var(--font-display-la); font-weight:500;
  font-size:clamp(.8rem,1.35vw,1.05rem); letter-spacing:.32em;
  color:var(--dawn-200); line-height:1.3;
  text-shadow:0 1px 10px rgba(2,10,16,.7);
}
.scroll-hint{
  margin-top:var(--s-6);
  font-size:var(--t-caption); letter-spacing:var(--ls-label); line-height:1;
  color:var(--dawn-200); font-weight:600;
  text-shadow:0 1px 10px rgba(2,10,16,.75);
}
.scroll-hint span{ position:relative; display:inline-block; padding-bottom:26px; }
.scroll-hint span::after{
  content:""; position:absolute; left:50%; bottom:0; width:1px; height:18px;
  background:linear-gradient(to bottom, var(--dawn-200), transparent);
  animation: hint 2.6s var(--ease-cine) infinite;
}
@keyframes hint{ 0%,100%{ transform:translateY(0); opacity:.25 } 45%{ transform:translateY(6px); opacity:1 } }

/* --- narrative panels（DESIGN §3.3） ------------------------------------ */
.panel{
  position:absolute; inset:0; z-index:var(--z-copy);
  display:flex; flex-direction:column; justify-content:center;
  padding: calc(var(--header-h) + var(--s-6)) var(--gutter) var(--s-8);
  pointer-events:none;
}
.panel::before{
  content:""; position:absolute; inset:0; z-index:-1;
  background:var(--panel-scrim);
}
.panel > *{ position:relative; max-width:min(var(--measure-jp), 52vw); }
.panel--a::before{ opacity:var(--a-scrim); }
.panel--b::before{ opacity:var(--b-scrim); }
.panel--a{ opacity:var(--a-op); transform:translate3d(0,var(--a-y),0); }
.panel--b{ opacity:var(--b-op); transform:translate3d(0,var(--b-y),0); }
.panel-title{
  margin-top:var(--s-3);
  font-family:var(--font-display-jp); font-weight:600;
  font-size:var(--t-title); line-height:1.28; letter-spacing:var(--ls-display);
  color:var(--ink);
  text-shadow:var(--copy-shadow);
}
.panel .label{ text-shadow:var(--copy-shadow); }
.panel-body{ margin-top:var(--s-5); color:var(--dawn-200); text-shadow:var(--copy-shadow); }
.panel-body p + p{ margin-top:var(--s-3); }
.gap-list{ margin-top:var(--s-4); counter-reset:g; }
.gap-list li{
  counter-increment:g; position:relative;
  padding-left:var(--s-6); margin-top:var(--s-4);
  font-size:clamp(.9rem,1.1vw,1rem); line-height:1.8;
}
.gap-list li::before{
  content:counter(g,decimal-leading-zero);
  position:absolute; left:0; top:.55em;
  font-family:var(--font-display-la); font-size:.8rem; letter-spacing:.1em;
  color:var(--accent);
}

/* --- cast rail（DESIGN §3.6）。scale された world の外側にあるため逆補正は不要 --- */
.cast-rail{
  position:absolute; inset:auto 0 0 0; z-index:var(--z-rail);
  padding:var(--s-8) 0 clamp(20px,4vh,44px);
  opacity:var(--rail-op);
  transform:translate3d(0,var(--rail-y),0);
  will-change:transform,opacity;
}
/* レール帯の可読性を守る（明るい光芒の上に来ても見出しが沈まないように） */
.cast-rail::before{
  content:""; position:absolute; inset:0; z-index:-1; pointer-events:none;
  background:linear-gradient(to top, rgba(2,10,16,.9), rgba(2,10,16,.62) 55%, transparent);
}
.rail-head{ padding:0 var(--gutter) var(--s-4); }
.rail-title{
  margin-top:var(--s-2);
  font-family:var(--font-display-jp); font-weight:600;
  font-size:clamp(1.05rem,2.2vw,1.6rem); line-height:1.28; letter-spacing:var(--ls-display);
  text-shadow:var(--copy-shadow);
}
.rail-head .label{ text-shadow:var(--copy-shadow); }
/* scroll-snap は使わない。カード4枚でオーバーフロー量が 1 ストライド未満になる幅が存在し、
   mandatory スナップだと末尾位置に到達できず「押しても動かない次へボタン」になるため。
   自由スクロール＋1ストライド単位の scrollBy が全幅で決定的に動く。 */
.rail-viewport{
  overflow-x:auto; overflow-y:hidden;
  scroll-snap-type:none;
  scrollbar-width:none;
  padding:var(--s-2) 0 var(--s-4);
  cursor:grab;
}
.rail-viewport::-webkit-scrollbar{ display:none; }
.rail-viewport[data-dragging]{ cursor:grabbing; }
/* 末尾のガター。Chrome は flex オーバーフロー時にコンテナの padding-right を
   scrollable overflow に含めないため、実体のあるフレックスアイテムで確保する。 */
.rail-track{ display:flex; gap:var(--s-4); padding-inline-start:var(--gutter); }
.rail-track::after{ content:""; flex:0 0 var(--gutter); }
/* 横長リストではなく縦位置ポスター。773×1445 の原寸素材を使い切り、
   浮上のクライマックスを切手サイズで終わらせない。 */
.rail-card{ flex:0 0 clamp(200px, 22vw, 318px); display:flex; }
.rail-card > a{
  flex:1; display:block; position:relative; aspect-ratio:3/4;
  padding:0; overflow:hidden;
  background:color-mix(in srgb, var(--surface) 76%, transparent);
  border:1px solid color-mix(in srgb, var(--hairline) 70%, transparent);
  border-left:2px solid var(--cast);
  border-radius:var(--r-lg);
  box-shadow:var(--e-2);
  text-decoration:none; color:inherit;
  transition:transform var(--dur-base) var(--ease-out), background var(--dur-base) var(--ease-out);
}
/* 立ち絵の縦横比がキャラごとに大きく違う（ルミア 0.53 / プクリ 0.98）ので contain。
   枠いっぱいに、下端接地で立たせる。 */
.rail-figure{ position:absolute; inset:0; display:block; }
.rail-figure img{
  width:100%; height:100%; display:block;
  object-fit:contain; object-position:bottom center;
  filter:drop-shadow(0 10px 20px rgba(2,10,16,.6));
  transition:transform var(--dur-base) var(--ease-out);
}
/* 名前・読み・紹介文は下部に重ねる。行数差でベースラインがずれないよう
   紹介文は 2 行ぶんを確保して固定する（DESIGN §3.6 / 揃えるべき場所を揃える）。 */
.rail-meta{
  position:absolute; inset:auto 0 0 0; z-index:1;
  display:grid; align-content:start; gap:1px;
  padding:var(--s-6) var(--s-4) var(--s-4);
  background:linear-gradient(to top, rgba(2,10,16,.94), rgba(2,10,16,.55) 55%, transparent);
}
.rail-name{ display:block; font-family:var(--font-display-jp); font-size:1.15rem; line-height:1.28; letter-spacing:var(--ls-display); text-shadow:0 1px 8px rgba(2,10,16,.9); }
.rail-latin{ display:block; font-family:var(--font-display-la); font-size:.8rem; letter-spacing:var(--ls-label-tight); color:var(--cast); line-height:1.4; text-shadow:0 1px 6px rgba(2,10,16,.95); }
.rail-line{
  display:block; margin-top:var(--s-2); font-size:.75rem; line-height:1.7;
  color:var(--dawn-300); min-height:calc(1.7em * 2);
  text-shadow:0 1px 6px rgba(2,10,16,.9);
}
@media (hover:hover){
  .rail-card > a:hover{ background:color-mix(in srgb, var(--surface-raised) 86%, transparent); }
  .rail-card > a:hover .rail-figure img{ transform:translateY(-6px) scale(1.03); }
}
@media (max-height:780px){ .rail-card{ flex-basis:clamp(168px,17vw,246px); } }
.rail-card > a:active{ transform:scale(.995); }
.rail-controls{
  display:flex; align-items:center; gap:var(--s-3);
  padding:0 var(--gutter);
  opacity:var(--rail-ctl);
  pointer-events:none;
}
.rail-controls[data-on]{ pointer-events:auto; }
.rail-btn{
  display:grid; place-items:center; width:38px; height:38px;
  border:1px solid var(--hairline); border-radius:var(--r-pill);
  background:color-mix(in srgb, var(--abyss-800) 82%, transparent);
  color:var(--dawn-200); cursor:pointer;
  transition:background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);
}
.rail-btn[disabled]{ opacity:.35; cursor:default; }
@media (hover:hover){ .rail-btn:not([disabled]):hover{ background:var(--surface-raised); color:var(--ink); } }
.rail-status{ font-size:var(--t-caption); letter-spacing:var(--ls-label-tight); color:var(--dawn-300); }
.rail-help{
  padding:var(--s-2) var(--gutter) 0;
  font-size:var(--t-label); letter-spacing:var(--ls-label-tight); color:var(--ink-muted);
  opacity:var(--rail-ctl);
}

/* ============================ 6. Act 2 sheets ============================ */
/* セクションの地は --canvas 一色のまま。面の差は実写プレートで作る
   （DESIGN §6 が禁じているのは「背景“色”を変えること」で、実写プレートは代替欄の指定手段）。 */
.sheet{
  position:relative; isolation:isolate;
  padding: clamp(72px,11vh,140px) var(--gutter);
  max-width:1380px; margin:0 auto;
}
.sheet::before,.sheet::after{
  content:""; position:absolute; pointer-events:none;
}
/* プレートは「章の頭に敷く一枚絵」として原寸比のまま幅にフィットさせる。
   セクション全高に cover で引き伸ばすと 4000px 級の拡大になるため使わない。 */
.sheet::before{
  z-index:-2; inset:0 calc(50% - 50vw) auto;
  height:min(720px, 68vh);
  background:var(--sheet-plate) top center / 100% auto no-repeat;
  opacity:.46; filter:saturate(.9);
  -webkit-mask-image:linear-gradient(to bottom, #000 0%, #000 46%, rgba(0,0,0,0) 96%);
          mask-image:linear-gradient(to bottom, #000 0%, #000 46%, rgba(0,0,0,0) 96%);
}
.sheet::after{
  z-index:-1; inset:0 calc(50% - 50vw);
  background:linear-gradient(rgba(6,23,31,.58), rgba(6,23,31,.86) 34%, rgba(6,23,31,.96) 62%);
}
/* 章プレートは 46% 不透明＋暗い被せの下でしか見えないので、専用の軽量版を使う
   （配信版 1600px をそのまま敷くと初期転送が 500KB 増える）。 */
#cast{ --sheet-plate:url(assets/plates/plate_04_sheet.webp); }
#world{ --sheet-plate:url(assets/plates/plate_02_sheet.webp); }
#film{ --sheet-plate:url(assets/plates/plate_05_sheet.webp); }
#join{ --sheet-plate:url(assets/plates/plate_A_sheet.webp); }
.sheet + .sheet{ border-top:1px solid color-mix(in srgb, var(--hairline) 45%, transparent); }
.sheet-head{ max-width:min(1100px,100%); transform:translate3d(0,var(--sec-y,0px),0); }
/* 見出し右の空白に重心を渡す。数字ではなく立ち絵の高さ比で 3:1 を語る図版を置く。 */
.sheet-head--split{
  max-width:100%;
  display:grid; gap:var(--s-7);
  grid-template-columns:minmax(0,1fr) minmax(260px,360px);
  align-items:end;
}
.sheet-head-copy{ max-width:min(1100px,100%); }
@media (max-width:900px){
  .sheet-head--split{ grid-template-columns:1fr; }
  .scale-fig{ justify-self:start; }
}
.scale-fig{ margin:0; display:grid; gap:var(--s-4); }
.scale-row{
  display:flex; align-items:flex-end; gap:var(--s-6);
  padding-bottom:var(--s-3);
  border-bottom:1px solid var(--accent);
}
.scale-item{ display:grid; justify-items:center; gap:var(--s-2); }
.scale-item img{ display:block; width:auto; object-fit:contain; object-position:bottom center; }
/* 140 : 50 = 2.8 : 1。高さをそのまま比率にする。 */
.scale-item--lumia img{ height:196px; }
.scale-item--mascot img{ height:70px; }
.scale-cap{ display:grid; justify-items:center; gap:2px; text-align:center; }
.scale-cap b{ font-size:var(--t-label); letter-spacing:var(--ls-label-tight); color:var(--dawn-200); font-weight:400; }
.scale-cap i{ font-style:normal; font-family:var(--font-display-la); font-size:.95rem; color:var(--accent-strong); }
.scale-fig figcaption{ font-size:var(--t-caption); line-height:1.7; color:var(--ink-muted); }
.sheet-title{
  margin-top:var(--s-3);
  font-family:var(--font-display-jp); font-weight:600;
  font-size:var(--t-display); line-height:1.28; letter-spacing:var(--ls-display);
  max-width:min(15em,100%);   /* 15文字前後で折り返す。ビューポートより広げない */
  word-break:auto-phrase; line-break:strict; text-wrap:balance;
}
.sheet-head .lead{ margin-top:var(--s-5); }
.notice{
  margin-top:var(--s-5); padding:var(--s-4) var(--s-5);
  border:1px solid color-mix(in srgb, var(--accent) 40%, transparent);
  border-left:2px solid var(--accent);
  border-radius:var(--r-md);
  background:color-mix(in srgb, var(--abyss-800) 70%, transparent);
  font-size:.9rem; color:var(--dawn-200);
}

/* --- cast cards（DESIGN §3.4） ----------------------------------------- */
/* 立ち絵をカード枠に縦フルブリードで置き、名前・読み・一行紹介をその上に重ねる。
   属性表（身長・モチーフ・声）は重ねると過密になるので、枠の下に小さく置く。
   カードの幅比はサイズ正典 3:1 を素直に反映させ、ルミアを一番大きく扱う。 */
.cast-grid{
  margin-top:var(--s-9);
  display:grid; gap:var(--s-5);
  grid-template-columns:1.6fr 1fr 1fr 1fr;
  /* 下端で揃える。ルミアが高く、マスコット3体がその足元に並ぶ形になり、
     カード配置そのものがサイズ正典 3:1 を語る。 */
  align-items:end;
}
@media (max-width:1024px){ .cast-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ .cast-grid{ grid-template-columns:1fr; } }

.cast-card{
  display:flex; flex-direction:column;
  padding:var(--s-3) var(--s-3) var(--s-5);
  background:var(--surface);
  border-radius:var(--r-lg);
  border-left:2px solid color-mix(in srgb, var(--cast) 55%, transparent);
  box-shadow:var(--e-2);
  scroll-margin-top:calc(var(--header-h) + 24px);
}

/* 立ち絵の枠。--cast をごく薄く敷いた縦グラデーションを地にする（DESIGN §6:
   単一キャンバス原則を壊さないよう、彩度は 12% 前後に抑える）。 */
.cast-frame{
  position:relative; isolation:isolate;
  aspect-ratio:.92;
  border-radius:calc(var(--r-lg) - 4px);
  overflow:hidden;
  background:
    linear-gradient(to bottom,
      color-mix(in srgb, var(--cast) 13%, transparent),
      color-mix(in srgb, var(--cast) 4%, transparent) 46%,
      transparent 72%),
    var(--abyss-800);
}
.cast-card--lead .cast-frame{ aspect-ratio:.66; }
/* 2 カラムに落ちたら、リードも 1 カラム内に収める。全幅に伸ばすと横長の枠に
   縦長の立ち絵が浮くだけの空きマスになる。 */
@media (max-width:1024px){
  .cast-card--lead .cast-frame{ aspect-ratio:.72; }
}
/* 1 カラムでは枠が伸びすぎるのでカード幅を絞る（縦フルブリードは維持） */
@media (max-width:560px){
  .cast-card{ width:min(100%, 420px); }
}

.cast-art{
  position:absolute; inset:0;
  width:100%; height:100%; display:block;
  object-fit:contain; object-position:bottom center;
  filter:drop-shadow(0 14px 26px rgba(2,10,16,.55));
  transform-origin:50% 100%;
  transition:transform var(--dur-base) var(--ease-out);
}

/* スクリムは枠の下 52% までに留め、顔と上半身に掛からないようにする。 */
.cast-over{
  position:absolute; inset:auto 0 0 0; z-index:1;
  padding:var(--s-8) var(--s-4) var(--s-4);
  background:linear-gradient(to top,
    rgba(3,15,22,.94), rgba(3,15,22,.66) 45%, transparent);
}
/* --cast は立ち絵本体と同系色になることがある（プクリのオレンジ等）。
   影を敷いて、絵の上でもラベルが沈まないようにする。 */
.cast-over .cast-latin{
  font-family:var(--font-display-la); font-size:.8rem; letter-spacing:var(--ls-label-tight);
  color:var(--cast); line-height:1.2;
  text-shadow:0 1px 3px rgba(2,10,16,.95), 0 0 10px rgba(2,10,16,.9);
}
.cast-name{
  margin-top:2px;
  font-family:var(--font-display-jp); font-weight:600;
  font-size:clamp(1.3rem,2.2vw,1.75rem); line-height:1.28; letter-spacing:var(--ls-display);
  color:var(--ink);
  text-shadow:0 2px 12px rgba(2,10,16,.8);
}
.cast-line{
  margin-top:var(--s-2); font-size:.82rem; line-height:1.7; color:var(--dawn-200);
  text-shadow:0 1px 8px rgba(2,10,16,.85);
}
@media (hover:hover){
  .cast-card:hover .cast-art{ transform:translateY(-6px) scale(1.02); }
}
.cast-card:focus-within .cast-art,
.cast-card:target .cast-art{ transform:translateY(-6px) scale(1.02); }

/* 「こんなことを言う」——設定表よりも先に、そのキャラの声を聞かせる。
   キャラ固有色の縦罫で、どの子の声かを色だけで見分けられるようにする。 */
.cast-voice{
  margin:var(--s-4) 0 0; padding:var(--s-3) 0 var(--s-3) var(--s-4);
  border-left:2px solid color-mix(in srgb, var(--cast) 70%, transparent);
}
.cast-voice-h{
  margin:0 0 var(--s-3);
  font-size:var(--t-label); letter-spacing:.2em; color:var(--ink-muted);
}
.cast-voice p:not(.cast-voice-h){
  margin:0; padding:3px 0;
  font-family:var(--font-display-jp);
  font-size:1rem; line-height:1.65; color:var(--dawn-100);
  word-break:auto-phrase; line-break:strict;
}
.cast-voice-note{
  margin-left:.5em;
  font-family:var(--font-ui); font-size:var(--t-caption); color:var(--ink-faint);
  letter-spacing:.04em;
}
.cast-card--lead .cast-voice p:not(.cast-voice-h){ font-size:1.125rem; }

.cast-spec{ margin-top:var(--s-4); padding:0 var(--s-2); font-size:var(--t-caption); line-height:1.7; }
.cast-spec > div{ display:grid; grid-template-columns:5.5em 1fr; gap:var(--s-3); padding:5px 0; border-top:1px solid color-mix(in srgb,var(--hairline) 50%,transparent); }
/* マスコットのカードは幅が狭く、2カラムだと本文が1〜2語ずつに割れて読めなくなる。
   主役カード以外はラベルを上に積んで、本文にカード幅を丸ごと渡す。 */
.cast-card:not(.cast-card--lead) .cast-spec > div{ grid-template-columns:1fr; gap:2px; }
.cast-spec dd{ word-break:auto-phrase; line-break:strict; text-wrap:pretty; }
.cast-spec dt{ color:var(--ink-muted); letter-spacing:.08em; }
.cast-spec dd{ margin:0; color:var(--dawn-200); }
.swatch{ display:inline-block; width:9px; height:9px; border-radius:2px; background:var(--cast); margin-right:6px; vertical-align:baseline; }
.cast-note{ margin-top:var(--s-4); padding:0 var(--s-2); font-size:var(--t-caption); line-height:1.8; color:var(--ink-muted); }

/* --- plates ------------------------------------------------------------- */
.plate-grid{
  margin-top:var(--s-9);
  display:grid; gap:var(--s-5);
  grid-template-columns:repeat(auto-fit, minmax(300px,1fr));
}
.plate-card--wide{ grid-column:1/-1; }
.plate-card figure{
  position:relative; overflow:hidden;
  border-radius:var(--r-lg); border:1px solid color-mix(in srgb,var(--hairline) 55%,transparent);
  background:var(--abyss-900); box-shadow:var(--e-2);
}
.plate-card img{
  width:100%; height:100%; display:block; object-fit:cover;
  aspect-ratio:16/9;
  transition:transform var(--dur-slow) var(--ease-cine);
}
.plate-card--wide img{ aspect-ratio:2.4/1; }
@media (hover:hover){ .plate-card figure:hover img{ transform:scale(1.03); } }
.plate-card figcaption{
  position:absolute; inset:auto 0 0 0;
  display:grid; grid-template-columns:auto 1fr; gap:2px var(--s-3);
  padding:var(--s-6) var(--s-5) var(--s-4);
  background:linear-gradient(to top, rgba(2,10,16,.92), rgba(2,10,16,.65) 55%, transparent);
}
.plate-id{ grid-row:1/3; align-self:center; font-family:var(--font-display-la); font-size:1.5rem; color:var(--accent); line-height:1; }
.plate-name{ font-family:var(--font-display-jp); font-size:1.05rem; line-height:1.28; letter-spacing:var(--ls-display); }
.plate-time{ grid-column:2; font-size:var(--t-label); letter-spacing:var(--ls-label); color:var(--accent-strong); line-height:1.4; }
.plate-tex{ grid-column:2; font-size:var(--t-caption); color:var(--dawn-300); line-height:1.6; }

/* --- films（DESIGN §3.5） ---------------------------------------------- */
.film-grid{
  margin-top:var(--s-9);
  display:grid; gap:var(--s-5);
  grid-template-columns:repeat(auto-fit, minmax(320px,1fr));
}
.film-card{
  display:flex; flex-direction:column;
  background:var(--surface); border-radius:var(--r-lg);
  border:1px solid color-mix(in srgb,var(--hairline) 55%,transparent);
  box-shadow:var(--e-2); overflow:hidden;
}
/* ブラウザ標準の再生 UI を出さない。OS のシステム UI が作品の絵を横切るのを防ぐ。
   押されたら JS が controls を付けて再生する（DESIGN §3.5 の「同時再生禁止」は据え置き）。 */
.film-media{ position:relative; display:block; }
.film-card video{
  width:100%; height:auto; display:block; aspect-ratio:16/9;
  background:var(--abyss-950);
}
.film-play{
  position:absolute; inset:0; display:grid; place-items:center;
  padding:0; border:0; background:transparent; cursor:pointer;
  transition:opacity var(--dur-fast) var(--ease-out);
}
.film-play[hidden]{ display:none; }
.film-play-dot{
  display:grid; place-items:center; width:64px; height:64px;
  border-radius:var(--r-pill);
  background:color-mix(in srgb, var(--abyss-950) 55%, transparent);
  border:1px solid var(--brand-300);
  color:var(--dawn-100);
  -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px);
  transition:transform var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out);
}
.film-play-dot svg{ margin-left:3px; }
@media (hover:hover){
  .film-play:hover .film-play-dot{ background:color-mix(in srgb, var(--accent) 72%, transparent); color:var(--abyss-950); transform:scale(1.06); }
}
.film-play:focus-visible{ outline:2px solid var(--focus-ring); outline-offset:-4px; }
.film-body{ padding:var(--s-5); display:flex; flex-direction:column; gap:var(--s-3); flex:1; }
.film-title{
  font-family:var(--font-display-jp); font-weight:600;
  font-size:1.15rem; line-height:1.28; letter-spacing:var(--ls-display);
  display:flex; flex-wrap:wrap; align-items:baseline; gap:var(--s-3);
}
/* 等幅体はコード表示（.credit / .tag-breakdown）専用。ラベルはラテンディスプレイ体に統一する */
.film-id{
  font-family:var(--font-display-la); font-size:var(--t-label);
  letter-spacing:var(--ls-label); text-transform:uppercase;
  color:var(--accent); font-weight:600;
}
.film-desc{ font-size:var(--t-caption); line-height:1.8; color:var(--dawn-300); }
.film-meta{ display:flex; flex-wrap:wrap; gap:var(--s-2); margin-top:auto; }
.film-meta .num{ letter-spacing:0; font-variant-numeric:tabular-nums; }
.film-meta span{
  font-size:var(--t-label); letter-spacing:var(--ls-label-tight); line-height:1;
  padding:5px 9px; border-radius:var(--r-pill);
  border:1px solid color-mix(in srgb,var(--hairline) 80%,transparent);
  color:var(--ink-muted);
}

/* --- 許諾条項 ----------------------------------------------------------- */
/* できる／できない を対にして 1 行目、正典とクレジットを全幅の 2・3 行目に置く。
   auto-fit + span だと 1 行目に空きマスができるため列数を固定する。 */
.terms{
  margin-top:var(--s-6);
  display:grid; gap:var(--s-5);
  grid-template-columns:repeat(2,1fr);
  align-items:start;
}
.term{
  padding:var(--s-6); border-radius:var(--r-lg);
  background:var(--surface); box-shadow:var(--e-2);
  border-top:2px solid var(--term-accent, var(--hairline));
}
/* --cast-* はキャラクター文脈（.cast-card / .rail-card / .swatch / .deep-cast）でのみ使う。
   許諾セクションの意味色に転用しない（DESIGN §2.1 使用規則）。 */
.term--ok{ --term-accent: var(--brand-500); }
.term--canon{ --term-accent: var(--brand-300); grid-column:1/-1; }
.term--ng{ --term-accent: var(--dawn-400); border-top-width:3px; }
.term--credit{ --term-accent: var(--dawn-400); grid-column:1/-1; }
@media (max-width:760px){ .terms{ grid-template-columns:1fr; } }
.term h4{
  font-family:var(--font-display-jp); font-weight:600;
  font-size:1.25rem; line-height:1.28; letter-spacing:var(--ls-display);
}
.term ul{ margin-top:var(--s-4); }
.term li{ position:relative; padding-left:var(--s-5); margin-top:var(--s-3); font-size:.9rem; line-height:1.8; color:var(--dawn-200); }
.term li::before{
  content:""; position:absolute; left:0; top:.85em;
  width:8px; height:1px; background:var(--term-accent);
}
.term dl{ margin-top:var(--s-4); font-size:.875rem; }
.term--canon dl{ display:grid; gap:0 var(--s-6); grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); }
.term dl > div{ padding:var(--s-3) 0; border-top:1px solid color-mix(in srgb,var(--hairline) 50%,transparent); }
.term dt{ font-family:var(--font-display-jp); font-size:1rem; letter-spacing:var(--ls-display); color:var(--ink); }
.term dd{ margin:var(--s-1) 0 0; line-height:1.8; color:var(--dawn-300); }
.term-note{ margin-top:var(--s-4); font-size:var(--t-caption); line-height:1.8; color:var(--ink-muted); }
.term--credit p{ margin-top:var(--s-3); font-size:.875rem; line-height:1.8; color:var(--dawn-300); }
.credit{
  margin-top:var(--s-4); padding:var(--s-4);
  border-radius:var(--r-md); background:var(--abyss-900);
  border:1px solid color-mix(in srgb,var(--hairline) 60%,transparent);
  overflow-x:auto;
}
.credit code{ font-family:var(--font-mono); font-size:.75rem; color:var(--brand-300); white-space:pre-wrap; overflow-wrap:anywhere; }
.copy-btn{
  margin-top:var(--s-4); padding:11px 20px;
  border:1px solid var(--accent); border-radius:var(--r-pill);
  background:transparent; color:var(--accent-strong);
  font-size:var(--t-caption); letter-spacing:.12em; cursor:pointer;
  transition:background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);
}
@media (hover:hover){ .copy-btn:hover{ background:var(--accent); color:var(--abyss-950); } }
.copy-status{ margin-top:var(--s-2); font-size:var(--t-caption); color:var(--accent-strong); min-height:1.6em; }

.dl{
  display:flex; align-items:center; justify-content:space-between; gap:var(--s-4);
  padding:var(--s-3) var(--s-4);
  border:1px solid color-mix(in srgb,var(--hairline) 70%,transparent);
  border-radius:var(--r-md);
  background:color-mix(in srgb, var(--abyss-800) 65%, transparent);
  color:var(--dawn-100); text-decoration:none;
  font-size:.875rem; line-height:1.5;
  transition:border-color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out);
}
.dl::after{ content:"↓"; margin-left:auto; color:var(--accent); font-size:.9rem; }
.dl-size{ font-size:var(--t-label); letter-spacing:.1em; color:var(--ink-muted); white-space:nowrap; }
@media (hover:hover){ .dl:hover{ border-color:var(--accent); background:var(--surface); } }
.film-body .dl{ margin-top:var(--s-2); }
/* --- 参加する ／ JOIN --------------------------------------------------- */
/* 後から手順スクリーンショットを差し込むための空きコンテナ。
   中身が無い間は完全に消える（壊れた画像や空枠を出さない）。 */
.slot:empty{ display:none; }
.slot{ margin-top:var(--s-5); display:grid; gap:var(--s-4); }
.slot--shots{ grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); }
.slot img{
  width:100%; height:auto; display:block;
  border-radius:var(--r-md);
  border:1px solid color-mix(in srgb,var(--hairline) 60%,transparent);
}
/* 手順スクリーンショット。UI キャプチャは明るいので、周囲に藍を敷いて
   単一キャンバス（DESIGN §2.1）から浮かないようにする。 */
.shot{ margin:0; display:grid; gap:var(--s-3); }
.shot img{
  background:var(--abyss-900);
  box-shadow:var(--e-2);
}
.shot figcaption{
  font-size:var(--t-caption); line-height:1.85; color:var(--ink-muted);
  word-break:auto-phrase; line-break:strict; text-wrap:pretty;
}
.shot figcaption b{ color:var(--dawn-200); font-weight:600; }
/* 参加条件1の2枚は手順①②なので、狭い画面でも順序が崩れないよう1列に落とす */
@media (max-width:640px){ .slot--shots{ grid-template-columns:1fr; } }

/* 導線ブロック。締切とボタンを 1 枚の面にまとめ、サイズと位置で強調する。 */
.cta-block{
  margin-top:var(--s-7);
  padding:var(--s-6) clamp(20px,3.4vw,44px) var(--s-7);
  border-radius:var(--r-lg);
  background:var(--surface);
  border-top:2px solid var(--accent);
  box-shadow:var(--e-3);
}
/* OS のカラー絵文字は使わない（色相が浮き、字形も端末ごとに変わる）。
   ラベル → 罫 → 日付 の縦積みにして、DESIGN §2.3 の「線で層を示す」語彙に揃える。 */
.deadline{
  display:grid; gap:var(--s-2);
  padding-bottom:var(--s-5);
  border-bottom:1px solid color-mix(in srgb,var(--hairline) 60%,transparent);
}
.deadline-label{
  justify-self:start;
  padding-bottom:var(--s-2); border-bottom:1px solid var(--accent);
  font-size:var(--t-label); letter-spacing:var(--ls-label); line-height:1;
  color:var(--dawn-300);
}
.deadline-date{
  font-family:var(--font-display-jp); font-weight:600;
  font-size:clamp(1.5rem,3.6vw,2.75rem); line-height:1.28; letter-spacing:.02em;
  color:var(--accent-strong);
  font-variant-numeric:proportional-nums;
}
.deadline-note{ font-size:var(--t-caption); color:var(--dawn-300); }

.cta-row{ margin-top:var(--s-6); display:flex; flex-wrap:wrap; gap:var(--s-4); }
.btn{
  display:inline-flex; align-items:center; gap:var(--s-3);
  padding:15px clamp(20px,2.4vw,32px);
  border-radius:var(--r-pill);
  font-size:clamp(.95rem,1.2vw,1.0625rem); font-weight:600; letter-spacing:.06em;
  line-height:1.4; text-decoration:none;
  border:1px solid transparent;
  transition:transform var(--dur-fast) var(--ease-out),
             background var(--dur-fast) var(--ease-out),
             color var(--dur-fast) var(--ease-out),
             border-color var(--dur-fast) var(--ease-out);
}
.btn--primary{ background:var(--accent); color:var(--abyss-950); box-shadow:var(--e-2); }
.btn--ghost{ border-color:var(--accent); color:var(--accent-strong); background:transparent; }
.btn--sm{ margin-top:var(--s-4); padding:10px 20px; font-size:var(--t-caption); font-weight:400; }
.btn .ext{ flex:none; opacity:.85; }
@media (hover:hover){
  .btn--primary:hover{ background:var(--accent-strong); transform:translateY(-2px); }
  .btn--ghost:hover{ background:color-mix(in srgb,var(--accent) 16%,transparent); color:var(--ink); }
}
.btn:active{ transform:translateY(0) scale(.995); }
.cta-note{ margin-top:var(--s-5); font-size:var(--t-caption); line-height:1.8; color:var(--dawn-300); max-width:var(--measure-jp); }

/* 各ブロック */
.join-block{ margin-top:var(--s-9); }
.join-h{
  padding-bottom:var(--s-3);
  border-bottom:1px solid color-mix(in srgb,var(--hairline) 55%,transparent);
  font-family:var(--font-display-jp); font-weight:600;
  font-size:clamp(1.35rem,3vw,2rem); line-height:1.28; letter-spacing:var(--ls-display);
  word-break:auto-phrase; line-break:strict; text-wrap:balance;
}
.join-lead{ margin-top:var(--s-5); font-size:var(--t-lead); line-height:1.85; color:var(--dawn-300); max-width:var(--measure-jp); }
.join-note{ margin-top:var(--s-5); font-size:.9rem; line-height:1.8; color:var(--ink-muted); max-width:var(--measure-jp); }

.why30{
  margin-top:var(--s-5);
  padding:var(--s-5) var(--s-6);
  border-left:2px solid var(--accent);
  border-radius:0 var(--r-md) var(--r-md) 0;
  background:color-mix(in srgb, var(--abyss-800) 70%, transparent);
  max-width:min(var(--measure-jp), 100%);
}
.why30 h4{
  font-family:var(--font-display-jp); font-weight:600;
  font-size:1.1rem; line-height:1.28; letter-spacing:var(--ls-display);
}
.why30 p{ margin-top:var(--s-3); font-size:.9rem; line-height:1.9; color:var(--dawn-200); }

.terms--pair{ grid-template-columns:repeat(2,1fr); }
.terms--pair .term{ grid-column:auto; }
@media (max-width:760px){ .terms--pair{ grid-template-columns:1fr; } }
.term--intro,.term-intro{ margin-top:var(--s-3); font-size:.875rem; line-height:1.8; color:var(--dawn-300); }

/* 参加条件の3ステップ */
.steps{ margin-top:var(--s-6); counter-reset:step; display:grid; gap:var(--s-5); }
.step{
  counter-increment:step; position:relative;
  padding:var(--s-6) var(--s-6) var(--s-6) clamp(64px,6vw,84px);
  border-radius:var(--r-lg);
  background:var(--surface); box-shadow:var(--e-2);
  border-top:2px solid var(--accent);
}
.step::before{
  content:counter(step);
  position:absolute; left:clamp(20px,2.4vw,28px); top:var(--s-6);
  width:34px; height:34px; display:grid; place-items:center;
  border-radius:var(--r-pill);
  border:1px solid var(--accent);
  color:var(--accent-strong);
  font-family:var(--font-display-la); font-size:1.05rem; line-height:1;
}
.step-h{
  font-family:var(--font-display-jp); font-weight:600;
  font-size:clamp(1.1rem,2vw,1.35rem); line-height:1.4; letter-spacing:var(--ls-display);
  word-break:auto-phrase; line-break:strict; text-wrap:balance;
}
.step-p{
  margin-top:var(--s-3); font-size:.9rem; line-height:1.9; color:var(--dawn-200);
  max-width:var(--measure-jp);
  /* 文節で折り返し、「い。」のような1〜2字の孤立行を防ぐ */
  word-break:auto-phrase; line-break:strict; text-wrap:pretty;
}
.caution{
  margin-top:var(--s-5); padding:var(--s-4) var(--s-5);
  border:1px solid color-mix(in srgb,var(--dawn-400) 45%,transparent);
  border-left:3px solid var(--dawn-400);
  border-radius:var(--r-md);
  background:color-mix(in srgb, var(--abyss-800) 70%, transparent);
  font-size:.9rem; line-height:1.8; color:var(--dawn-200);
}
.step .credit{ max-width:var(--measure-jp); }
/* メンションとハッシュタグの内訳。何が「2つのメンション」で何が「1つのハッシュタグ」かを分離して示す */
.tag-breakdown{
  margin-top:var(--s-4); display:grid; gap:var(--s-2);
  max-width:var(--measure-jp);
  border-top:1px solid var(--hairline); padding-top:var(--s-4);
}
.tag-breakdown > div{ display:flex; gap:var(--s-4); align-items:baseline; flex-wrap:wrap; }
.tag-breakdown dt{
  flex:0 0 8.6em;            /* 「ハッシュタグ」が字送り込みで1行に収まる幅 */
  font-size:var(--t-label); letter-spacing:var(--ls-label-tight); color:var(--ink-muted);
  white-space:nowrap;
}
.tag-breakdown dd{ margin:0; display:flex; gap:var(--s-3); flex-wrap:wrap; }
.tag-breakdown code{
  font-family:var(--font-mono); font-size:.8rem; color:var(--brand-300);
  padding:2px 8px; border-radius:var(--r-sm);
  background:color-mix(in srgb, var(--abyss-800) 80%, transparent);
  border:1px solid color-mix(in srgb, var(--brand-500) 24%, transparent);
}
@media (max-width:560px){
  .tag-breakdown dt{ flex-basis:100%; }
}

/* 特典 */
.rewards{
  margin-top:var(--s-6);
  display:grid; gap:var(--s-5);
  grid-template-columns:repeat(2,1fr);
}
@media (max-width:760px){ .rewards{ grid-template-columns:1fr; } }
.reward{
  padding:var(--s-6);
  border-radius:var(--r-lg);
  background:var(--surface); box-shadow:var(--e-2);
  border-top:2px solid var(--hairline);
}
.reward--top{ border-top-color:var(--accent-strong); border-top-width:3px; }
.reward-who{
  font-family:var(--font-display-jp); font-weight:600;
  font-size:1.1rem; line-height:1.4; letter-spacing:var(--ls-display);
  display:flex; flex-wrap:wrap; align-items:baseline; gap:var(--s-3);
}
.reward-who span{
  font-family:var(--font-ui); font-weight:400;
  font-size:var(--t-label); letter-spacing:var(--ls-label-tight); color:var(--ink-muted);
}
.reward-what{
  margin-top:var(--s-4);
  font-family:var(--font-display-la); font-weight:600;
  font-size:clamp(2.25rem,5vw,3.5rem); line-height:1; letter-spacing:.01em;
  color:var(--accent-strong);
  display:flex; align-items:baseline; gap:var(--s-3);
  /* Cormorant は既定がオールドスタイル数字。桁が揃わず 10,000 が読みにくいので
     ライニング数字を明示する。 */
  font-variant-numeric: lining-nums tabular-nums;
  font-feature-settings: "lnum" 1, "tnum" 1;
}
.reward--top .reward-what{ color:var(--dawn-100); }
.reward-what span{
  font-family:var(--font-ui); font-weight:400;
  font-size:var(--t-caption); letter-spacing:var(--ls-label-tight); color:var(--dawn-300);
}
.reward-sub{ margin-top:var(--s-2); font-size:var(--t-caption); color:var(--ink-muted); }

.update-note{ margin-top:var(--s-8); font-size:var(--t-caption); color:var(--ink-muted); max-width:var(--measure-jp); }

/* --- 作品スペック / 公開素材一覧 / 更新履歴 ------------------------------ */
.num{ letter-spacing:0; font-variant-numeric:tabular-nums; }

.spec{
  margin-top:var(--s-5);
  display:grid; gap:0 var(--s-6);
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  max-width:900px;
}
.spec > div{
  display:grid; grid-template-columns:7em 1fr; gap:var(--s-3);
  padding:var(--s-3) 0;
  border-top:1px solid color-mix(in srgb,var(--hairline) 50%,transparent);
  font-size:var(--t-caption); line-height:1.7;
}
.spec dt{ color:var(--ink-muted); letter-spacing:.08em; }
.spec dd{ margin:0; color:var(--dawn-200); }

.inv-wrap{ margin-top:var(--s-6); overflow-x:auto; }
.inv-table{
  width:100%; border-collapse:collapse;
  font-size:.875rem; line-height:1.7; min-width:560px;
}
.inv-table th,.inv-table td{
  text-align:left; padding:var(--s-3) var(--s-4);
  border-bottom:1px solid color-mix(in srgb,var(--hairline) 50%,transparent);
  vertical-align:top;
}
.inv-table thead th{
  font-size:var(--t-label); letter-spacing:var(--ls-label); font-weight:400;
  color:var(--ink-muted); border-bottom-color:var(--hairline);
}
.inv-table tbody th{
  font-family:var(--font-display-jp); font-weight:600; letter-spacing:var(--ls-display);
  color:var(--ink); white-space:nowrap;
}
.inv-table tbody td{ color:var(--dawn-300); }
.inv-table tbody td:first-of-type{ color:var(--accent-strong); font-variant-numeric:tabular-nums; }
.cta-row--inline{ margin-top:var(--s-6); }

.changelog{ margin-top:var(--s-6); display:grid; gap:0; max-width:var(--measure-jp); }
.changelog > div{
  display:grid; grid-template-columns:11em 1fr; gap:var(--s-4);
  padding:var(--s-3) 0;
  border-top:1px solid color-mix(in srgb,var(--hairline) 50%,transparent);
  font-size:var(--t-caption); line-height:1.8;
}
.changelog dt{ color:var(--brand-300); font-variant-numeric:tabular-nums; letter-spacing:.06em; }
.changelog dd{ margin:0; color:var(--dawn-200); }
@media (max-width:560px){ .changelog > div{ grid-template-columns:1fr; gap:2px; } }

/* ============================ 7. Responsive ============================== */
@media (max-width:900px){
  :root{ --header-h:48px; }
  .rail-card{ flex:0 0 min(78vw, 300px); }
}
/* 760px 以下は横並びナビを捨て、ハンバーガー（44×44）＋全画面ドロワーにする。
   10.5px の文字と 22px のタップ領域に潰すより、隠して潰さないほうが正しい。 */
@media (max-width:760px){
  /* backdrop-filter は fixed 子孫の包含ブロックを作ってしまい、全画面ドロワーが
     ヘッダの 48px の箱に閉じ込められる。モバイルでは不透明ヘッダにして無効化する。 */
  .site-header{
    padding-inline:16px; gap:var(--s-3);
    background:var(--abyss-900);
    -webkit-backdrop-filter:none; backdrop-filter:none;
  }
  .nav-toggle{ display:grid; position:relative; z-index:calc(var(--z-modal) + 1); }
  .site-nav{
    position:fixed; inset:0; z-index:var(--z-modal);
    margin:0; flex-direction:column; align-items:stretch; justify-content:flex-start;
    gap:0;
    padding:calc(var(--header-h) + env(safe-area-inset-top,0px) + var(--s-6)) 24px
            calc(var(--s-8) + env(safe-area-inset-bottom,0px));
    background:var(--abyss-900);
    overflow-y:auto;
    opacity:0; visibility:hidden; translate:0 -8px;
    transition:opacity var(--dur-base) var(--ease-out), visibility 0s linear var(--dur-base), translate var(--dur-base) var(--ease-out);
  }
  .site-nav[data-open]{ opacity:1; visibility:visible; translate:0 0; transition-delay:0s; }
  .site-nav ul{ display:grid; gap:0; }
  .site-nav li + li{ border-top:1px solid color-mix(in srgb,var(--hairline) 55%,transparent); }
  .site-nav a:not(.nav-cta){
    display:grid; gap:3px; padding:16px 2px; min-height:56px; align-content:center;
    font-size:1.05rem; letter-spacing:.12em; border-bottom:0;
    color:var(--ink);
  }
  .nav-la{
    display:block; font-family:var(--font-display-la);
    font-size:var(--t-label); letter-spacing:var(--ls-label);
    text-transform:uppercase; color:var(--abyss-300);
  }
  .site-nav a:not(.nav-cta)[aria-current="true"]{ color:var(--accent-strong); border-bottom:0; }
  .nav-deadline{
    display:flex; margin-top:var(--s-6); padding-top:var(--s-5);
    border-top:1px solid color-mix(in srgb,var(--hairline) 55%,transparent);
    font-size:var(--t-caption);
  }
  .nav-cta{
    margin-top:var(--s-4); text-align:center; min-height:48px;
    display:grid; place-items:center; font-size:1rem;
  }
  html[data-nav-open]{ overflow:hidden; }
}
@media (max-width:420px){
  .brand-jp{ font-size:.86rem; }
}
@media (max-width:640px){
  .panel > *{ max-width:100%; }
  /* 上半分の空の暖色を残したまま、下半分にだけテキストの地を作る。
     全面を均一に沈めると、実写プレートが灰色の泥になる。 */
  .panel::before{
    background:linear-gradient(to bottom,
      rgba(3,15,22,0) 0%, rgba(3,15,22,.30) 20%, rgba(3,15,22,.86) 44%, rgba(3,15,22,.92) 100%);
  }
  .panel{ justify-content:flex-end; padding-bottom:var(--s-9); }
  /* モバイルは縦長すぎてパノラマが持たない。焦点を上（空と都市の帯）へ寄せる。 */
  [data-layer="sky"] img,[data-layer="city"] img{ object-position:50% 34%; }
  .layer--water img{ object-position:50% 82%; }
  [data-layer="mid-sky"] img,[data-layer="mid-town"] img{ object-position:50% 38%; }
  [data-layer="mid-water"] img{ object-position:50% 88%; }
  [data-layer="deep-bg"] img{ object-position:50% 34%; }
  [data-layer="deep-walls"] img,[data-layer="deep-fore"] img{ object-position:50% 60%; }
  /* ヒーロー下部の死に領域（y=560〜830）をルミアで埋め、画面下端の重心にする */
  .layer--figure{ --fig-h:clamp(210px,31svh,320px); --fig-x:50%; --fig-bottom:2svh; }
  .intro{ justify-content:flex-start; padding-top:calc(var(--header-h) + 8svh); }
  .loc{ bottom:auto; top:calc(var(--header-h) + 4svh); }
  .rail-head,.rail-viewport,.rail-controls,.rail-help{ --gutter:20px; }
  .rail-card{ flex:0 0 min(52vw,208px); }
  .dc--lumia{ height:22svh; right:4%; bottom:22svh; }
  .dc--kururu{ height:9svh; right:34%; bottom:40svh; }
  .dc--powan{ height:8svh; right:26%; bottom:12svh; }
  .dc--pukuri{ height:7svh; right:44%; bottom:30svh; }
  .sheet::before{ opacity:.24; }
  /* 見出しは 1 行 12〜13 文字。balance は auto-phrase と競合するので外す。 */
  :root{ --t-display:clamp(1.75rem,6.4vw,4.5rem); }
  .sheet-title,.join-h,.step-h{ text-wrap:initial; }
}

/* 粗いポインタでは視差を無効化（DESIGN §3.8） */
@media (hover:none),(pointer:coarse){
  :root{ --mx:0!important; --my:0!important; }
}

/* ============================ 8. Reduced motion ========================== */
/* A4: 慣性・ポインタ視差・大ズーム/ブラー/横移動をすべて止め、
   静的ヒーロー＋通常フロー文書に切り替える。情報と操作は全て残す。 */
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:.001ms!important; animation-iteration-count:1!important; transition-duration:.001ms!important; }

  .cinematic-scroll{ height:auto!important; }
  .stage{
    position:static; height:auto; overflow:visible;
    display:flex; flex-direction:column; gap:var(--s-8);
    padding-bottom:var(--s-8);
  }
  .world{
    position:relative; inset:auto; order:1;
    height:min(58svh,460px); overflow:hidden;
    opacity:1!important; transform:none!important; filter:none!important;
    visibility:visible!important;
  }
  .world--mid{ order:5; }
  .world--deep{ order:8; }
  .layer img{ transform:none!important; }
  /* 立ち絵はフローに入れず、ワールド内で静止させる */
  .layer--figure{ transform:none!important; --fig-h:clamp(180px,26svh,300px); --fig-bottom:6%; }
  .figure-echo{ display:none; }
  .deep-cast{ display:none; }
  .loc{
    position:static; opacity:1!important; transform:none!important;
    padding:0 var(--gutter);
  }
  .loc[data-loc="a"]{ order:3; }
  .loc[data-loc="b"]{ order:6; }
  .loc[data-loc="c"]{ order:7; }
  .water--l,.water--r{ clip-path:none; }
  .water--r{ display:none; }          /* 分割の必要がないので 1 枚に戻す */
  .grade{ display:none; }
  .stage-veil{ display:none; }

  .intro{
    position:static; order:2; opacity:1!important; transform:none!important;
    padding:var(--s-7) var(--gutter) 0; pointer-events:auto;
  }
  /* 夜明けの空の上でコピーを読ませるための靄。--canvas 上では灰色のシミになるので消す */
  .intro::before{ display:none; }
  .hero-latin,.tagline,.scroll-hint{ color:var(--ink); text-shadow:none; }
  .hero-latin{ color:var(--ink-muted); }
  .scroll-hint{ display:none; }
  .hero-title img{ width:clamp(240px,52vw,520px); }

  .panel{
    position:static; opacity:1!important; transform:none!important;
    padding:0 var(--gutter); pointer-events:auto;
  }
  .panel--a{ order:4; }
  .panel--b{ order:9; }
  .panel::before{ display:none; }
  .panel > *{ max-width:var(--measure-jp); }

  .cast-rail{
    position:static; order:10; opacity:1!important; transform:none!important;
    padding:0;
  }
  .cast-rail::before{ display:none; }
  /* JS がインラインで書いたスタッガ値を打ち消す */
  .rail-card{ opacity:1!important; transform:none!important; }
  .rail-controls,.rail-help{ opacity:1!important; pointer-events:auto; }
  /* ドロワーは開閉のみ。アニメーションは全体ルールで既に無効化されている */
  .site-nav{ translate:none!important; }
}

/* ------------------------------ BGM トグル -------------------------------
   ヘッダ右側、ナビの手前に置く。再生中はイコライザ4本が動く。
   prefers-reduced-motion では棒を静止させる（音は止めない）。            */
.bgm-toggle{
  display:inline-flex; align-items:center; gap:var(--s-2);
  margin-left:auto;
  padding:6px 12px 6px 10px;
  border:1px solid color-mix(in srgb, var(--brand-500) 34%, transparent);
  border-radius:var(--r-pill);
  background:color-mix(in srgb, var(--abyss-900) 55%, transparent);
  color:var(--ink-muted);
  font-family:var(--font-ui); font-size:var(--t-label); letter-spacing:.18em;
  cursor:pointer;
  transition:color var(--dur-fast) var(--ease-out),
             border-color var(--dur-fast) var(--ease-out),
             background var(--dur-fast) var(--ease-out);
}
.bgm-toggle:hover{ color:var(--ink); border-color:color-mix(in srgb, var(--brand-400) 60%, transparent); }
.bgm-toggle:focus-visible{ outline:2px solid var(--focus-ring); outline-offset:3px; }
.bgm-toggle[data-playing="true"]{
  color:var(--accent-strong);
  border-color:color-mix(in srgb, var(--brand-400) 70%, transparent);
  background:color-mix(in srgb, var(--brand-600) 14%, transparent);
}

.bgm-bars{ display:inline-flex; align-items:flex-end; gap:2px; height:12px; }
.bgm-bars i{
  width:2px; height:4px; border-radius:1px;
  background:currentColor; opacity:.75;
  transform-origin:50% 100%;
}
.bgm-toggle[data-playing="true"] .bgm-bars i{ animation:bgm-eq 900ms ease-in-out infinite; opacity:1; }
.bgm-toggle[data-playing="true"] .bgm-bars i:nth-child(2){ animation-duration:640ms; }
.bgm-toggle[data-playing="true"] .bgm-bars i:nth-child(3){ animation-duration:1120ms; }
.bgm-toggle[data-playing="true"] .bgm-bars i:nth-child(4){ animation-duration:780ms; }
@keyframes bgm-eq{ 0%,100%{ height:4px } 50%{ height:12px } }

/* 停止中は「消音」を示す斜線を重ねる（色だけに頼らない） */
.bgm-toggle[data-playing="false"] .bgm-bars{ position:relative; }
.bgm-toggle[data-playing="false"] .bgm-bars::after{
  content:""; position:absolute; inset:auto 0 50% 0;
  height:1px; background:currentColor; opacity:.85;
  transform:rotate(-38deg);
}

@media (prefers-reduced-motion: reduce){
  .bgm-toggle[data-playing="true"] .bgm-bars i{ animation:none; height:9px; }
}
@media (max-width:760px){
  .bgm-toggle{ margin-left:auto; padding:5px 10px 5px 8px; }
  .bgm-label{ display:none; }   /* 狭い画面ではアイコンのみ */
}

/* --------------------------- キャラクターボイス ---------------------------
   「こんなことを言う」の先頭に置く。実際に声が入っている行だけ再生ボタンが付く。 */
.cast-voice .voiced{
  display:flex; flex-wrap:wrap; align-items:center; gap:var(--s-3);
  margin:0 0 var(--s-2) !important;
}
.voice-btn{
  display:inline-flex; align-items:center; gap:8px;
  padding:6px 14px 6px 11px;
  border:1px solid color-mix(in srgb, var(--cast) 55%, transparent);
  border-radius:var(--r-pill);
  background:color-mix(in srgb, var(--cast) 12%, transparent);
  color:var(--dawn-100);
  font-family:var(--font-ui); font-size:var(--t-caption); letter-spacing:.1em;
  cursor:pointer; white-space:nowrap;
  transition:background var(--dur-fast) var(--ease-out),
             border-color var(--dur-fast) var(--ease-out);
}
.voice-btn:hover{ background:color-mix(in srgb, var(--cast) 22%, transparent); border-color:var(--cast); }
.voice-btn:focus-visible{ outline:2px solid var(--focus-ring); outline-offset:3px; }
.voice-btn[data-playing="true"]{ background:color-mix(in srgb, var(--cast) 28%, transparent); border-color:var(--cast); }

/* 停止中は三角の再生マーク、再生中は動く3本バー */
.voice-ico{ display:inline-flex; align-items:flex-end; gap:2px; width:11px; height:11px; }
.voice-ico i{ width:2px; height:3px; border-radius:1px; background:var(--cast); transition:height var(--dur-fast) var(--ease-out); }
.voice-btn[data-playing="false"] .voice-ico{
  width:0; height:0; gap:0;
  border-left:8px solid var(--cast);
  border-top:5px solid transparent; border-bottom:5px solid transparent;
  margin-right:2px;
}
.voice-btn[data-playing="false"] .voice-ico i{ display:none; }
.voice-btn[data-playing="true"] .voice-ico i{ animation:voice-eq 620ms ease-in-out infinite; }
.voice-btn[data-playing="true"] .voice-ico i:nth-child(2){ animation-duration:460ms; }
.voice-btn[data-playing="true"] .voice-ico i:nth-child(3){ animation-duration:800ms; }
@keyframes voice-eq{ 0%,100%{ height:3px } 50%{ height:11px } }
@media (prefers-reduced-motion: reduce){
  .voice-btn[data-playing="true"] .voice-ico i{ animation:none; height:8px; }
}

#lumia-voice-line{
  font-family:var(--font-display-jp);
  font-size:1.125rem; line-height:1.6; color:var(--dawn-100);
  word-break:auto-phrase; line-break:strict;
}

/* 特典はセクションの冒頭（フック）に置くので、他の join-block より前に出す。
   罫線ではなく面で持ち上げ、リード文からの視線をそのまま受け止める。 */
.join-block--rewards{
  margin-top:var(--s-6);
  padding:var(--s-6) var(--s-6) var(--s-5);
  border:1px solid color-mix(in srgb, var(--brand-500) 26%, transparent);
  border-radius:var(--r-lg);
  background:
    radial-gradient(120% 160% at 12% 0%, color-mix(in srgb, var(--brand-600) 12%, transparent), transparent 62%),
    color-mix(in srgb, var(--abyss-800) 82%, transparent);
  box-shadow:var(--e-2);
}
.join-block--rewards > .join-h{ margin-top:0; }
@media (max-width:640px){ .join-block--rewards{ padding:var(--s-5) var(--s-4) var(--s-4); } }

/* --------------------------- X 作品ギャラリー -----------------------------
   自然な高さの masonry（CSS columns）。列は幅340pxを下限に最大3列で自動調整。
   固定表示（主催の元投稿）は先頭タイル＝左上に置き、カード内上部のチップで示す。 */
.x-grid{
  margin-top:var(--s-6);
  columns:3 340px;
  column-gap:var(--s-4);
}
.x-card{
  break-inside:avoid;
  margin:0 0 var(--s-4);
  border:1px solid color-mix(in srgb,var(--hairline) 60%,transparent);
  border-radius:var(--r-md);
  background:var(--surface);
  box-shadow:var(--e-1);
  padding:2px;
}
.x-card--pinned{
  border-color:color-mix(in srgb, var(--brand-500) 46%, transparent);
  box-shadow:var(--e-2);
}
/* 主催チップは埋め込みの上に「載せず」、カード内の帯として置く（何も隠さない） */
.x-badge{
  margin:8px 8px 2px;
  display:inline-flex; align-items:center; gap:6px;
  padding:4px 12px;
  border-radius:var(--r-pill);
  background:color-mix(in srgb, var(--brand-600) 22%, transparent);
  color:var(--accent-strong);
  font-size:var(--t-label); letter-spacing:.18em;
}
.x-badge::before{
  content:""; width:6px; height:6px; border-radius:50%;
  background:var(--accent-strong);
}
.x-card .twitter-tweet{ margin:0 !important; }
.x-card iframe{ max-width:100% !important; display:block; }
.x-card .twitter-tweet:not(.twitter-tweet-rendered){
  padding:var(--s-6) var(--s-5);
}
.x-card .twitter-tweet:not(.twitter-tweet-rendered) a{
  color:var(--accent-strong); text-decoration:underline; text-underline-offset:3px;
}

/* 参加条件冒頭の「まず配信を見る」案内。手順(ol.steps)と混ざらないよう aside の面で分ける */
.briefing{
  margin:var(--s-5) 0 var(--s-6);
  padding:var(--s-5) var(--s-5) var(--s-4);
  border:1px solid color-mix(in srgb, var(--brand-500) 28%, transparent);
  border-left:3px solid var(--accent);
  border-radius:var(--r-md);
  background:color-mix(in srgb, var(--abyss-800) 72%, transparent);
}
.briefing .label{ margin-bottom:var(--s-2); }
.briefing-t{
  margin:0 0 var(--s-2);
  font-family:var(--font-display-jp);
  font-size:1.25rem; line-height:1.5; color:var(--dawn-100);
  word-break:auto-phrase; line-break:strict;
}
.briefing-p{
  margin:0 0 var(--s-4);
  font-size:var(--t-body); line-height:1.9; color:var(--ink-muted); max-width:38em;
}
.briefing .btn{ max-width:100%; }
.briefing .btn span:first-child{
  white-space:normal; text-align:left; line-height:1.5;
}
