/* 「此生」A+C 混合定稿 · 设计令牌（唯一来源）。所有组件只引用这里的变量。 */
:root{
  /* 颜色 · 底色（星尘） */
  --c-space:#04060D;       /* 太空底 */
  --c-ink:#0A1020;         /* 面板底 */
  --c-surface:#ffffff0b;   /* 玻璃面 */
  --c-line:#ffffff1a;      /* 分隔线 */
  --c-text:#F2EEE6;        /* 正文 */
  --c-mut:#9AA3B5;         /* 次要文字（在 --c-space 上对比度 8.0:1） */
  /* 颜色 · 纸面（长卷 / 护照） */
  --c-paper:#F4EADA; --c-paper-2:#E8D9BF; --c-paper-ink:#1B1715; --c-paper-mut:#6E604D;
  /* 颜色 · 三色因果（全站语义固定） */
  --c-origin:#3CC8B0;      /* 出身 */
  --c-luck:#9B8CFF;        /* 运气 */
  --c-choice:#F4B942;      /* 选择 */
  /* 颜色 · 仪式 */
  --c-ritual:#E2532F;      /* 分享 / 海报强调 */
  --c-stamp:#C8442F;       /* 邮戳红，只用在护照 */
  --c-wax:#9C1E24;
  /* 字体 */
  --f-display:"Noto Serif CJK SC","Instrument Serif",serif;
  --f-latin:"Instrument Serif","Noto Serif CJK SC",serif;
  --f-body:Inter,"Noto Sans CJK SC",system-ui,sans-serif;
  --f-mono:"DM Mono","Noto Sans CJK SC",monospace;
  --f-bn:"Noto Serif Bengali","Noto Sans Bengali",serif;
  /* 字号（手机基准；桌面 ×1.15–1.5 见 app.css） */
  --t-12:12px; --t-14:14px; --t-16:16px; --t-20:20px; --t-28:28px; --t-40:40px; --t-64:64px; --t-120:120px;
  /* 间距 · 4 点网格 */
  --s-1:4px; --s-2:8px; --s-3:12px; --s-4:16px; --s-5:20px; --s-6:24px; --s-8:32px; --s-12:48px; --s-16:64px;
  /* 圆角 */
  --r-s:10px; --r-m:16px; --r-l:24px; --r-pill:999px;
  /* 触控 */
  --tap-min:48px; --thumb-h:64px; --dock-h:148px; --tab-h:60px;
  /* 动效曲线 */
  --ease-out:cubic-bezier(.16,1,.3,1);      /* 进入、揭晓 */
  --ease-inout:cubic-bezier(.65,0,.35,1);   /* 镜头推进、页面切换 */
  --ease-spring:cubic-bezier(.34,1.56,.64,1);/* 卡片回弹、印章落下 */
  --ease-in:cubic-bezier(.55,0,1,.45);      /* 卡片飞出 */
  /* 动效时长 */
  --d-micro:120ms; --d-short:240ms; --d-med:480ms; --d-long:900ms; --d-ritual:1600ms;
  --hold-ms:650ms;                           /* 关键抉择长按时长 */
}
/* 柔和模式 / 系统减少动态：所有时长压到极短，仪式改为淡入淡出 */
html[data-soft="1"]{--d-short:1ms;--d-med:160ms;--d-long:240ms;--d-ritual:300ms}
@media (prefers-reduced-motion:reduce){:root{--d-short:1ms;--d-med:160ms;--d-long:240ms;--d-ritual:300ms}}

*{box-sizing:border-box}html{color-scheme:dark;scroll-behavior:smooth}body{margin:0;background:var(--c-space);color:var(--c-text);font:16px/1.7 var(--f-body)}a{color:inherit;text-underline-offset:5px}button,input,select,textarea{font:inherit}button,a,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.45}a,button,summary,input,textarea{touch-action:manipulation}:focus-visible{outline:3px solid var(--c-choice);outline-offset:5px}[hidden]{display:none!important}.icon{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.5;flex:none}.skip{position:absolute;left:16px;top:-100px;z-index:40;background:var(--c-paper);color:var(--c-paper-ink);padding:12px}.skip:focus{top:10px}.globe{position:absolute;right:0;top:60px;width:65%;height:min(740px,90vh);z-index:-1;pointer-events:none;opacity:.9}.bar{display:flex;justify-content:space-between;align-items:center;padding:18px 32px;gap:24px;min-height:80px}.brand{text-decoration:none;font:600 26px var(--f-display);white-space:nowrap}.bar nav{display:flex;gap:24px}.bar nav a{display:flex;align-items:center;gap:8px;color:var(--c-mut);text-decoration:none;font-size:14px}.bar nav a[aria-current]{color:var(--c-choice)}.tools{display:flex;gap:8px;align-items:center}.tools button,.languages summary{display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--c-line);background:var(--c-ink);border-radius:var(--r-pill);min-height:48px;min-width:48px}.languages{position:relative}.languages summary{cursor:pointer;list-style:none;padding:0 12px}.languages>div{position:absolute;z-index:30;right:0;top:58px;background:var(--c-ink);border:1px solid var(--c-line);border-radius:16px;padding:12px;width:230px;max-height:65vh;overflow:auto}.languages a{display:block;padding:10px;text-decoration:none}.languages a:hover{background:var(--c-surface)}main{min-height:72vh}.hero{min-height:660px;display:flex;align-items:center;max-width:1120px;margin:auto;padding:60px 0;position:relative}.hero-content{max-width:520px}.hero h1{font:400 clamp(34px,4vw,58px)/1.25 var(--f-display);max-width:580px;margin:20px 0}.hero .poem{font:400 clamp(42px,5vw,72px)/1.1 var(--f-display);color:#ffdc93;margin:18px 0}.muted,.kicker{color:var(--c-mut)}.kicker{font-size:13px}.hero p{max-width:46ch}.cta{display:inline-flex;align-items:center;justify-content:center;gap:12px;background:var(--c-choice);color:#21190a;border:0;border-radius:999px;padding:15px 32px;text-decoration:none;font-weight:600;min-height:58px}.hero .cta{width:360px;max-width:100%;margin-top:24px;font-family:var(--f-display);font-size:20px}.mode{display:flex;gap:10px;margin:16px 0;flex-wrap:wrap}.mode button,.pill{border:1px solid var(--c-line);border-radius:999px;min-height:48px;padding:8px 16px;background:var(--c-ink);color:var(--c-mut);text-decoration:none}.mode button[aria-checked=true],.pill[aria-selected=true]{color:var(--c-choice);border-color:#8a6724;background:#f4b94212}.content{max-width:880px;padding:48px 24px;margin:auto}.content.wide{max-width:1120px}.content h1{font:400 clamp(32px,5vw,54px)/1.3 var(--f-display)}.content h2{font:400 30px/1.35 var(--f-display);margin-top:48px}.content p{max-width:76ch}.content li{margin:10px 0}.paper{background:var(--c-paper);color:var(--c-paper-ink);border-radius:24px;padding:32px}.paper .muted{color:var(--c-paper-mut)}.paper h2{margin-top:0}.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.feature-grid article{padding:24px 0;border-top:1px solid var(--c-line)}.country-list{list-style:none;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px 40px}.country-list li{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid var(--c-line);padding:10px 0;margin:0}.country-list small{color:var(--c-mut)}details.faq{border-bottom:1px solid var(--c-line);padding:16px 0}details.faq summary{cursor:pointer;min-height:48px;align-content:center;font-size:18px}.ad-space{min-height:320px;display:grid;align-content:start;max-width:1120px;margin:48px auto;padding:16px}.ad-space .content-ad{margin:0!important;min-height:280px!important}table{width:100%;border-collapse:collapse;font-size:14px}td,th{padding:16px 12px;border-bottom:1px solid var(--c-line);text-align:left;vertical-align:top;overflow-wrap:anywhere}.table-wrap{overflow:auto}.empty{padding:48px 24px;border:1px solid var(--c-line);border-radius:24px;text-align:center;margin:24px 0}.notice{padding:12px 16px;border-left:2px solid var(--c-origin);background:var(--c-surface);font-size:14px}footer{display:flex;justify-content:center;gap:24px;flex-wrap:wrap;padding:40px 24px;color:var(--c-mut);font-size:13px;border-top:1px solid var(--c-line);margin-top:80px}textarea{display:block;width:100%;min-height:120px;background:var(--c-ink);color:var(--c-text);border:1px solid var(--c-line);border-radius:10px;padding:16px}.screen-shell{min-height:650px;padding:32px 24px;text-align:center}.screen-shell>p{margin-inline:auto}.screen-shell h2{font:400 40px/1.3 var(--f-display)}@media(max-width:900px){.bar{padding:12px 16px;flex-wrap:wrap;gap:10px}.bar nav{order:3;width:100%;justify-content:space-between;gap:10px}.bar nav a{min-height:44px;font-size:13px}.bar nav .icon{width:18px}.tools{gap:4px}.tools button{min-width:40px;min-height:44px}.languages summary{min-height:44px;padding:0 10px}.brand{font-size:22px}.globe{width:100%;height:530px;top:140px;opacity:.5}.hero{padding:80px 24px 40px;min-height:660px;align-items:flex-start}.hero-content{max-width:540px}.hero h1{font-size:34px}.hero .poem{font-size:56px;margin-top:32px}.hero .cta{width:100%}.feature-grid{grid-template-columns:1fr;gap:0}.country-list{grid-template-columns:1fr}.content{padding:32px 24px}.paper{padding:24px}footer{gap:16px}.languages>div{right:0}.ad-space{min-height:330px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}html[data-soft="1"]{scroll-behavior:auto}

.volume-tools label{display:block;margin:8px 0}.volume-tools input{display:block;width:100%;accent-color:var(--c-choice);min-height:44px}.volume-tools summary{min-width:44px}.tools{flex-wrap:wrap}dialog{max-width:min(92vw,640px);max-height:85dvh;overflow:auto;border:1px solid var(--c-line)}dialog::backdrop{background:#04060dcc;backdrop-filter:blur(8px)}

.hero h1{font:400 26px/1.5 var(--f-display);color:var(--c-text);margin:18px 0}.hero .poem{font-size:64px}.hero{min-height:680px;padding-block:48px}.hero .mode{gap:8px}.hero .mode button{font-size:14px}@media(max-width:900px){.hero{padding-top:42px;min-height:650px}.hero h1{font-size:22px}.hero .poem{font-size:48px;margin-top:24px}.hero .cta{margin-top:16px}.tools{max-width:100%}}

h2[tabindex="-1"]:focus{outline:none}.hero .mode{display:grid;grid-template-columns:1fr 1fr}.hero .mode button{padding-inline:10px}@media(max-width:600px){.bar{column-gap:8px}.brand{font-size:18px}.tools{gap:2px}.tools button,.volume-tools summary{min-width:40px}.languages summary{padding-inline:8px}.volume-tools summary{padding-inline:0}.hero .mode button{font-size:13px}}

html[data-soft="1"] *,html[data-soft="1"] *::before,html[data-soft="1"] *::after{animation-duration:.01ms!important;transition-duration:.01ms!important}

.bar .brand,.languages a,footer a,.codex-item>a{display:inline-flex;align-items:center;min-height:48px}.languages a{display:flex}.country-list a{display:inline-flex;align-items:center;min-height:48px}

.volume-tools input{min-height:48px}

/* All pointer surfaces, including tablet breakpoints. */
.bar nav a,.bar .tools button,.bar .languages summary{min-width:48px;min-height:48px}.bar nav a{justify-content:center}.play-heading{padding-bottom:0}.play-heading>p:not([data-fallback]){margin-bottom:0}html[data-game-active="1"] .play-heading{padding-block:8px}html[data-game-active="1"] .play-heading h1{font-size:18px;margin:0}html[data-game-active="1"] .play-heading>p:not([data-fallback]){display:none}

/* 组件与页面。只引用 tokens.css 变量。手机 390 优先，≥900px 为桌面布局。 */
*{box-sizing:border-box;margin:0;padding:0}
html,body{overflow-x:hidden;background:var(--c-space);color:var(--c-text);font-family:var(--f-body);font-size:var(--t-16);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
:focus-visible{outline:2px solid var(--c-choice);outline-offset:3px;border-radius:6px}
[hidden]{display:none!important}
.skip{position:fixed;left:8px;top:-60px;z-index:99;background:var(--c-choice);color:#000;padding:8px 12px;border-radius:8px}.skip:focus{top:8px}
.sample{display:inline-block;font:500 var(--t-12)/1 var(--f-mono);color:var(--c-mut);border:1px solid var(--c-line);border-radius:var(--r-pill);padding:3px 8px;letter-spacing:.04em}
.kicker{font:500 var(--t-12)/1.4 var(--f-mono);letter-spacing:.12em;color:var(--c-mut);text-transform:uppercase}.center{text-align:center}
.t-o{color:var(--c-origin)}.t-l{color:var(--c-luck)}.t-c{color:var(--c-choice)}

/* 背景层 */
.globe{position:fixed;inset:0;width:100%;height:100%;z-index:0;transition:opacity var(--d-long) var(--ease-out)}
.crib{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:0;transition:opacity var(--d-ritual) var(--ease-out);display:grid;place-items:center}
.crib div{width:120vmax;height:120vmax;background:radial-gradient(circle,rgba(244,185,66,.22),rgba(226,83,47,.06) 30%,transparent 55%)}
body.s-birth .crib.on,body.s-play .crib,body.s-ending .crib{opacity:1}
.flash{position:fixed;inset:0;z-index:30;background:#FFF4DA;opacity:0;pointer-events:none}
.flash.go{animation:flash 900ms var(--ease-out)}@keyframes flash{0%{opacity:0}12%{opacity:.95}100%{opacity:0}}
html[data-soft="1"] .flash.go{animation:none}

/* 顶栏 */
.bar{position:fixed;top:0;left:0;right:0;z-index:20;height:56px;display:flex;align-items:center;justify-content:space-between;padding:0 var(--s-4);padding-top:env(safe-area-inset-top)}
.brand{font:600 var(--t-20)/1 var(--f-display);letter-spacing:.2em;min-height:var(--tap-min)}
.bar-r{display:flex;gap:6px;align-items:center}
.pill{min-height:36px;padding:0 12px;border-radius:var(--r-pill);border:1px solid var(--c-line);background:#0A1020b3;backdrop-filter:blur(8px);font-size:var(--t-12);color:var(--c-mut);transition:all var(--d-short)}
.pill b{color:var(--c-choice);font-weight:600;margin-left:2px}
.pill[aria-pressed="true"]{color:var(--c-text);border-color:#ffffff40}
#softBtn[aria-pressed="true"]{color:#04060D;background:var(--c-origin);border-color:var(--c-origin)}
.age-chip{font:500 var(--t-12)/1 var(--f-mono);color:var(--c-choice);padding:0 6px}

/* 屏幕 */
main{position:relative;z-index:2}
.screen{display:none;min-height:100dvh;position:relative}
.screen.on{display:block;animation:enter var(--d-med) var(--ease-out)}
@keyframes enter{from{opacity:0}to{opacity:1}}

/* 底部操作区（单一主按钮 + 次要） */
.dock{position:fixed;left:0;right:0;bottom:0;z-index:10;display:flex;flex-direction:column;align-items:center;gap:var(--s-2);padding:var(--s-8) var(--s-5) calc(var(--s-5) + env(safe-area-inset-bottom));background:linear-gradient(to top,var(--c-space) 62%,transparent)}
.cta{position:relative;overflow:hidden;width:100%;max-width:360px;min-height:56px;border-radius:var(--r-pill);background:var(--c-choice);color:#1A1204;font:700 var(--t-16)/1 var(--f-display);letter-spacing:.3em;box-shadow:0 10px 40px -10px rgba(244,185,66,.6);transition:transform var(--d-micro) var(--ease-out)}
.cta:active{transform:scale(.97)}
.cta::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.55) 50%,transparent 70%);transform:translateX(-120%);animation:shine 3.2s var(--ease-inout) infinite 1s}
@keyframes shine{0%,70%{transform:translateX(-120%)}100%{transform:translateX(120%)}}
html[data-soft="1"] .cta::after{display:none}
.ghost{min-height:44px;padding:0 18px;white-space:nowrap;color:var(--c-mut);font-size:var(--t-14);border-radius:var(--r-pill)}
.ghost:hover{color:var(--c-text)}
.mini{min-height:32px;padding:0 12px;border-radius:var(--r-pill);background:#ffffff14;font-size:var(--t-12);color:var(--c-text);margin-left:8px}

/* 1 首页 */
.home-hero{position:relative;z-index:2;padding:88px var(--s-5) 0;text-align:center;pointer-events:none}
.home-hero .lead{margin-top:var(--s-5);font:400 var(--t-20)/1.3 var(--f-display);color:#E9E2D4}
.slot{height:1.25em;overflow:hidden;font:600 52px/1.25 var(--f-display);margin-top:var(--s-1);mask:linear-gradient(transparent,#000 22%,#000 78%,transparent);-webkit-mask:linear-gradient(transparent,#000 22%,#000 78%,transparent)}
.slot-in{transition:transform 520ms var(--ease-spring)}
.slot-in div{height:1.25em;background:linear-gradient(180deg,#FFF6E3,#F4B942);-webkit-background-clip:text;background-clip:text;color:transparent}
.slot-in div small{font-size:.38em;letter-spacing:.06em;-webkit-text-fill-color:var(--c-mut);margin-left:6px;font-family:var(--f-body)}
.meta{margin-top:var(--s-3);display:flex;flex-wrap:wrap;gap:6px 14px;justify-content:center;font-size:var(--t-12);color:var(--c-mut)}.meta b{color:var(--c-text);font-family:var(--f-mono)}
.daily{width:100%;max-width:360px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;text-align:left;padding:10px 14px;border-radius:var(--r-m);border:1px solid #9B8CFF55;background:#9B8CFF14;min-height:var(--tap-min)}
.daily-k{font:600 var(--t-12)/1 var(--f-display);color:var(--c-luck);letter-spacing:.1em;writing-mode:horizontal-tb}
.daily-t{font-size:var(--t-12);color:#D6D2F5;line-height:1.4}.daily-t b{color:#fff;font-family:var(--f-mono)}
.daily-go{color:var(--c-luck)}

/* 2 出生 */
.alt{position:fixed;top:64px;pointer-events:none;left:var(--s-5);z-index:3;font-family:var(--f-mono);transition:opacity var(--d-med)}
.alt-l{display:block;font-size:var(--t-12);color:var(--c-mut);letter-spacing:.12em}
.alt-v{display:block;font-size:var(--t-28);color:var(--c-text);margin-top:2px}
.rail{display:flex;gap:6px;margin-top:10px}.rail span{font-size:var(--t-12);padding:3px 8px;border-radius:var(--r-pill);border:1px solid var(--c-line);color:var(--c-mut);transition:all var(--d-short)}
.rail span.on{color:#1A1204;background:var(--c-choice);border-color:var(--c-choice)}
.coord{position:fixed;left:0;right:0;top:56%;text-align:center;z-index:3;font:500 var(--t-12)/1 var(--f-mono);color:var(--c-choice);letter-spacing:.1em;opacity:0;transition:opacity var(--d-med)}
.coord.on{opacity:1}
.fate-deck{position:relative;z-index:3;display:flex;justify-content:center;gap:10px;padding:max(190px,calc(44dvh - 150px)) var(--s-4) 0;perspective:900px}
.fate{width:108px;height:172px;position:relative;transform-style:preserve-3d;transition:transform var(--d-long) var(--ease-out),opacity var(--d-med);opacity:0;transform:translateY(40px) rotateY(180deg)}
.fate.dealt{opacity:1;transform:translateY(0) rotateY(180deg)}
.fate.open{transform:translateY(0) rotateY(0)}
.fate>div{position:absolute;inset:0;border-radius:12px;backface-visibility:hidden;-webkit-backface-visibility:hidden;overflow:hidden}
.fate .back{transform:rotateY(180deg);background:#140F1E;border:1px solid #F4B94255}
.fate .back svg{width:100%;height:100%}
.fate .front{background:var(--c-paper);color:var(--c-paper-ink);padding:10px 9px;display:flex;flex-direction:column;border:1px solid #fff6}
.fate .n{font:400 var(--t-12)/1 var(--f-latin);color:var(--c-paper-mut);display:flex;justify-content:space-between}
.fate .art{flex:1;margin:6px 0;border-radius:8px;overflow:hidden}
.fate .art svg{width:100%;height:100%;display:block}
.fate .t{font:600 var(--t-12)/1 var(--f-mono);letter-spacing:.14em}
.fate .a{font:700 13px/1.25 var(--f-display);margin-top:4px}
.fate .b{font-size:11px;line-height:1.3;color:var(--c-paper-mut);margin-top:2px}
.fate[data-attr=o] .t{color:#0E6B5C}.fate[data-attr=l] .t{color:#5B4BC9}
.birth-name{position:relative;z-index:3;text-align:center;margin-top:var(--s-6);padding:0 var(--s-5);opacity:0;transform:translateY(12px);transition:all var(--d-long) var(--ease-out)}
.birth-name.on{opacity:1;transform:none}
.where{font:500 var(--t-12)/1 var(--f-mono);color:var(--c-mut);letter-spacing:.1em}
.nm{font:400 46px/1.1 var(--f-latin);margin-top:10px;min-height:1.1em;letter-spacing:.01em}
.nm span{display:inline-block;opacity:0;transform:translateY(.3em);animation:let var(--d-med) var(--ease-out) forwards}
@keyframes let{to{opacity:1;transform:none}}
.native{margin-top:8px;font-size:var(--t-14);color:#D9D2C4}.native [lang=bn]{font-family:var(--f-bn);font-size:var(--t-16)}
.birth-dock .cta{opacity:0;pointer-events:none;transition:opacity var(--d-med)}
.birth-dock.ready .cta{opacity:1;pointer-events:auto}

/* 3 人生进行中 */
#s-play.on{display:flex;flex-direction:column;height:100dvh;padding-top:56px;overflow:hidden}
.cause{padding:4px var(--s-5) 0;position:relative;z-index:3}
.cause-bar{display:flex;height:8px;border-radius:var(--r-pill);overflow:hidden;background:#ffffff12;gap:2px}
.cause-bar i{display:block;height:100%;transition:width var(--d-long) var(--ease-out)}
.cause-bar .o{background:var(--c-origin)}.cause-bar .l{background:var(--c-luck)}.cause-bar .c{background:var(--c-choice)}
.cause-lg{display:flex;justify-content:space-between;margin-top:6px;font:500 var(--t-12)/1 var(--f-mono)}
.cause-lg b{font-weight:500}
.cause.big .cause-bar{height:12px}
.chapline{display:flex;justify-content:space-between;align-items:center;padding:12px var(--s-5) 0 56px;font:600 var(--t-12)/1 var(--f-mono);letter-spacing:.12em;color:var(--c-text);position:relative;z-index:3}
.dots{display:flex;gap:4px}.dots i{width:14px;height:3px;border-radius:2px;background:#ffffff22}.dots i.done{background:var(--c-choice)}.dots i.cur{background:#fff}
.river{position:absolute;left:8px;top:120px;bottom:calc(var(--tab-h) + 12px);width:40px;z-index:2}
.river svg{width:100%;height:100%;overflow:visible}
.chapnum{position:absolute;right:-6px;top:96px;z-index:1;pointer-events:none;font:900 150px/1 var(--f-display);color:transparent;-webkit-text-stroke:1px #F4B94233;letter-spacing:-.04em;writing-mode:vertical-rl;max-height:62%;overflow:hidden}
.chapnum span{display:inline-block;transition:opacity var(--d-med),transform var(--d-long) var(--ease-out)}
.chapnum span.swap{opacity:0;transform:translateY(-30px)}
.panel{flex:1;min-height:0;position:relative;z-index:3;display:flex;flex-direction:column}
#tp-story{flex:1;min-height:0;display:flex;flex-direction:column}
.stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:18px 16px 8px 56px}
.stack{position:relative;width:100%;max-width:340px;height:100%;max-height:400px}
.card{position:absolute;inset:0;border-radius:var(--r-l);background:var(--c-paper);color:var(--c-paper-ink);padding:18px 18px 14px;display:flex;flex-direction:column;box-shadow:0 30px 60px -20px #000c,0 0 0 1px #ffffff30 inset;touch-action:none;user-select:none;will-change:transform;transition:transform var(--d-med) var(--ease-spring),opacity var(--d-med)}
.card.drag{transition:none}
.card.out{transition:transform 380ms var(--ease-in),opacity 380ms}
.card.b1{transform:translateY(-12px) scale(.95);background:#CDBFA6;filter:brightness(.75)}
.card.b2{transform:translateY(-24px) scale(.9);background:#A89A82;filter:brightness(.55)}
.card.b1 *,.card.b2 *{visibility:hidden}
.card.nudge{animation:nudge 2.8s var(--ease-inout) infinite 1.2s}
@keyframes nudge{0%,70%,100%{transform:none}78%{transform:translateX(-10px) rotate(-1.5deg)}88%{transform:translateX(10px) rotate(1.5deg)}}
html[data-soft="1"] .card.nudge{animation:none}
.card-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.age{font:400 var(--t-28)/1 var(--f-latin)}.age small{font:500 var(--t-12) var(--f-body);color:var(--c-paper-mut);margin-left:4px}
.tag{font:600 11px/1 var(--f-mono);letter-spacing:.1em;padding:5px 9px;border-radius:var(--r-pill);color:#fff}
.tag.o{background:#0E6B5C}.tag.l{background:#5B4BC9}.tag.c{background:#8A5D00}
.key{margin-top:10px;font:600 11px/1 var(--f-mono);letter-spacing:.12em;color:var(--c-ritual);display:flex;align-items:center;gap:6px}
.key::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--c-ritual);box-shadow:0 0 0 4px #E2532F33}
.card h3{font:700 var(--t-28)/1.2 var(--f-display);margin-top:12px}
.card p.tx{font-size:15px;line-height:1.65;color:#3A3128;margin-top:10px}
.card .wm{position:absolute;right:10px;bottom:34px;font:900 96px/1 var(--f-display);color:transparent;-webkit-text-stroke:1.2px var(--wc);opacity:.32;letter-spacing:-.04em;pointer-events:none;background:linear-gradient(0deg,var(--wc) 0 var(--wf,0%),transparent var(--wf,0%));-webkit-background-clip:text;background-clip:text;transition:--wf 1s}
.card.front .wm{animation:wmfill 1.2s var(--ease-out) .25s both}@keyframes wmfill{from{clip-path:inset(100% 0 0 0)}to{clip-path:inset(0 0 0 0)}}
.card[data-t=o]{--wc:#0E6B5C}.card[data-t=l]{--wc:#5B4BC9}.card[data-t=c]{--wc:#8A5D00}
.card .echo{margin-top:10px;display:inline-flex;gap:6px;align-items:center;align-self:flex-start;font:600 11px/1 var(--f-mono);color:#5B4BC9;background:#9B8CFF22;border:1px solid #9B8CFF66;padding:5px 9px;border-radius:var(--r-pill)}
.card.front.pending{box-shadow:0 30px 60px -20px #000c,0 0 0 3px var(--c-ritual),0 0 40px -6px var(--c-ritual)}
.card .src{position:relative;z-index:1;margin-top:auto;padding-top:10px;border-top:1px dashed #6E604D55;font:500 11px/1.4 var(--f-mono);color:var(--c-paper-mut)}
.card .lbl{position:absolute;top:44%;padding:8px 12px;border-radius:10px;font:700 var(--t-14)/1.3 var(--f-display);border:2px solid;max-width:62%;opacity:0;pointer-events:none;background:#F4EADAee}
.card .lbl.left{left:12px;color:#0E6B5C;transform:rotate(-6deg)}.card .lbl.right{right:12px;color:#8A5D00;transform:rotate(6deg)}.card .lbl.up{left:50%;top:30%;transform:translateX(-50%);color:#5B4BC9}
.thumbs{display:grid;gap:8px;padding:6px 16px 0 56px}
.thumb{position:relative;overflow:hidden;min-height:var(--thumb-h);border-radius:var(--r-m);background:#0F1626;border:1px solid var(--c-line);padding:8px 8px;text-align:left;display:flex;flex-direction:column;justify-content:center;gap:3px;transition:border-color var(--d-short),transform var(--d-micro)}
.thumb:active{transform:scale(.97)}
.thumb .ar{font:500 var(--t-12)/1 var(--f-mono);color:var(--c-mut)}
.thumb .lb{font:600 13px/1.3 var(--f-display);color:var(--c-text)}
.thumb .fx{font:500 11px/1.2 var(--f-mono);color:var(--c-mut)}
.thumb.hot{border-color:var(--c-choice);background:#F4B94218}
.thumb .fill{position:absolute;left:0;bottom:0;height:3px;width:0;background:var(--c-ritual)}
.thumb.hold .fill{width:100%;transition:width var(--hold-ms) linear}
.thumb.keyb .ar::after{content:" · 长按";color:var(--c-ritual)}
.hint{text-align:center;font-size:var(--t-12);color:var(--c-mut);padding:8px 16px 0 56px;min-height:26px}
.tabs{flex:none;height:calc(var(--tab-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--c-line);background:#04060Df0;position:relative;z-index:5;margin-top:10px}
.tabs button{font:500 var(--t-14)/1 var(--f-display);color:var(--c-mut);position:relative}
.tabs button[aria-selected="true"]{color:var(--c-text)}
.tabs button[aria-selected="true"]::before{content:"";position:absolute;top:-1px;left:30%;right:30%;height:2px;background:var(--c-choice)}
.tabpane:not(#tp-story){flex:1;overflow:auto;padding:16px 20px 16px 56px}
.tabpane h4{font:600 var(--t-12)/1 var(--f-mono);letter-spacing:.12em;color:var(--c-mut);margin:4px 0 12px}
.person{display:grid;grid-template-columns:40px 1fr;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--c-line)}
.person .av{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font:600 var(--t-16) var(--f-latin);background:#ffffff10;color:var(--c-choice)}
.person b{font-weight:600}.person .bn{font-family:var(--f-bn);color:var(--c-mut);margin-left:6px;font-size:var(--t-14)}.person p{font-size:var(--t-12);color:var(--c-mut);margin-top:2px}
.memrow{display:grid;grid-template-columns:44px 10px 1fr;gap:10px;align-items:start;padding:8px 0}
.memrow .y{font:400 var(--t-20)/1 var(--f-latin);text-align:right}
.memrow .dt{width:10px;height:10px;border-radius:50%;margin-top:5px}
.memrow p{font-size:var(--t-14);line-height:1.5}.memrow p small{display:block;color:var(--c-mut);font-size:var(--t-12)}
.datarow{padding:10px 0;border-bottom:1px solid var(--c-line);font-size:var(--t-14);line-height:1.5}.datarow small{display:block;color:var(--c-mut);font:500 var(--t-12)/1.4 var(--f-mono)}

/* 4 结局 */
#s-ending .end-wrap{padding:64px var(--s-5) calc(var(--dock-h) + env(safe-area-inset-bottom) + 24px)}
.poster-col{display:flex;flex-direction:column;align-items:center;gap:10px}
.poster{width:min(300px,78vw);aspect-ratio:9/16;border-radius:18px;position:relative;overflow:hidden;box-shadow:0 0 0 1px #ffffff00;transition:box-shadow var(--d-long)}
.poster.done{box-shadow:0 40px 80px -30px #000,0 0 0 1px #ffffff26}
.poster canvas{width:100%;height:100%;display:block}
.fmt{display:flex;gap:6px}.fmt button{min-height:32px;padding:0 10px;border-radius:var(--r-pill);border:1px solid var(--c-line);font-size:var(--t-12);color:var(--c-mut)}.fmt .on{color:var(--c-text);border-color:#ffffff55}
.end-txt{max-width:440px;margin:28px auto 0;opacity:0;transform:translateY(10px);transition:all var(--d-long) var(--ease-out)}
.end-txt.on{opacity:1;transform:none}
.end-h{font:700 var(--t-28)/1.25 var(--f-display);margin-top:8px}
.epi{margin-top:12px;font:400 var(--t-20)/1.5 var(--f-display);color:var(--c-choice)}
.end-txt .cause{padding:0;margin-top:18px}
.end-stats{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px}
.end-stats li{padding:10px 12px;border-radius:var(--r-s);background:var(--c-surface);font-size:var(--t-12);color:var(--c-mut);line-height:1.4}.end-stats b{display:block;color:var(--c-text);font:400 var(--t-20)/1.2 var(--f-latin)}
.challenge{margin-top:16px;padding:14px;border-radius:var(--r-m);border:1px dashed #9B8CFF66;background:#9B8CFF0f}
.ch-k{font:600 var(--t-12)/1 var(--f-mono);color:var(--c-luck);letter-spacing:.1em}
.ch-u{margin-top:8px;font:500 var(--t-16)/1 var(--f-mono);display:flex;align-items:center;flex-wrap:wrap}
.ch-d{margin-top:8px;font-size:var(--t-12);color:var(--c-mut);line-height:1.5}
.end-dock{flex-direction:row;justify-content:center}.end-dock .cta{max-width:260px;flex:1;letter-spacing:.12em}

/* 5 护照夹 */
#s-passport{padding:72px 0 calc(var(--dock-h) + 20px)}
.pp-head{padding:0 var(--s-5)}
.pp-h{font:700 var(--t-20)/1.3 var(--f-display);margin-top:8px}
.pp-prog{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:8px;font-size:var(--t-12);color:var(--c-mut)}
.pp-shelf{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;padding:20px var(--s-5) 10px;scrollbar-width:none}
.pp-shelf::-webkit-scrollbar{display:none}
.pp{flex:none;width:300px;scroll-snap-align:center;border-radius:14px;background:var(--c-paper);color:var(--c-paper-ink);padding:16px;position:relative;box-shadow:0 30px 60px -25px #000,inset 0 0 0 1px #0000000f;background-image:repeating-linear-gradient(0deg,transparent 0 22px,#6E604D10 22px 23px)}
.pp.new{outline:2px solid var(--c-choice);outline-offset:4px}
.pp-top{display:flex;justify-content:space-between;font:600 11px/1 var(--f-mono);letter-spacing:.14em;color:var(--c-paper-mut)}
.pp-name{font:400 26px/1.1 var(--f-latin);margin-top:14px}.pp-place{font-size:var(--t-12);color:var(--c-paper-mut);margin-top:4px}
.pp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}
.stamp{aspect-ratio:1;display:grid;place-items:center;align-content:center;text-align:center;color:var(--sc,var(--c-stamp));border:2.5px solid currentColor;font-family:var(--f-mono);font-weight:500;letter-spacing:.04em;mix-blend-mode:multiply;opacity:.9;line-height:1.1;padding:4px;
 -webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence baseFrequency='.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.2 1.6'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>");mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence baseFrequency='.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.2 1.6'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>")}
.stamp b{font:400 22px/1 var(--f-latin)}.stamp span{font-size:11px;font-family:var(--f-display);font-weight:700;margin-top:2px}.stamp small{font-size:9px;opacity:.85;margin-top:1px}
.stamp.round{border-radius:50%}.stamp.rect{border-radius:6px}.stamp.oct{border-radius:28%}
.stamp.o{--sc:#0E6B5C}.stamp.l{--sc:#5B4BC9}.stamp.c{--sc:#B4560F}
.stamp.slam{animation:slam 420ms var(--ease-spring) both}
@keyframes slam{0%{opacity:0;transform:scale(1.9) rotate(var(--rot))}60%{opacity:.95}100%{opacity:.9;transform:scale(1) rotate(var(--rot))}}
.stamp{transform:rotate(var(--rot))}
html[data-soft="1"] .stamp.slam{animation:fadein var(--d-med) both}@keyframes fadein{from{opacity:0}}
.mrz{margin-top:14px;font:500 10px/1.5 var(--f-mono);letter-spacing:.12em;color:#6E604D;word-break:break-all}
.seal{position:absolute;right:-10px;top:-12px;width:62px;height:62px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#C8424A,var(--c-wax) 60%,#5E1015);display:grid;place-items:center;font:700 var(--t-16)/1 var(--f-display);color:#F6D7B8;box-shadow:0 6px 14px -4px #000a;transform:rotate(-12deg)}
.pp-dock{flex-direction:row;justify-content:center}.pp-dock .cta{max-width:220px}

.toast{position:fixed;left:50%;top:70px;transform:translate(-50%,-10px);z-index:40;max-width:min(92vw,420px);padding:10px 16px;border-radius:var(--r-m);background:#141B2Cf2;border:1px solid #F4B94255;font-size:var(--t-14);line-height:1.45;opacity:0;pointer-events:none;transition:all var(--d-short) var(--ease-out)}
.toast.on{opacity:1;transform:translate(-50%,0)}
.toast.echo{border-color:var(--c-luck);color:#E5E1FF}

/* ≥900px 桌面 */
@media (min-width:900px){
 .pp-h{font-size:var(--t-28)}
 .bar{padding:0 32px;height:64px}
 .home-hero{text-align:left;padding:190px 0 0 8vw;max-width:calc(8vw + 600px)}.slot{font-size:88px}.home-hero .lead{font-size:var(--t-28)}.meta{justify-content:flex-start}
 .home-dock{left:8vw;right:auto;top:520px;bottom:auto;width:380px;align-items:stretch;padding:0;background:none}
 .alt{top:88px;left:40px}.alt-v{font-size:var(--t-40)}
 .fate-deck{padding-top:120px;gap:22px}.fate{width:180px;height:270px}.fate .a{font-size:var(--t-16)}.fate .b{font-size:var(--t-12)}.fate .front{padding:14px}
 .nm{font-size:72px}
 #s-play.on{padding-top:64px;display:grid;grid-template-columns:260px 1fr 360px;grid-template-rows:auto auto 1fr;column-gap:32px;padding-left:40px;padding-right:40px}
 .cause{grid-column:1/4;padding:6px 0 0}
 .chapline{grid-column:1/4;padding:14px 0 0}
 .river{position:relative;left:auto;top:auto;bottom:auto;grid-column:1;grid-row:3;width:100%;height:calc(100dvh - 190px);margin-top:20px}
 .chapnum{right:auto;left:300px;top:150px;font-size:220px}
 .panel{grid-column:2/4;grid-row:3;min-height:0;height:calc(100dvh - 150px);display:grid;grid-template-columns:1fr 360px;column-gap:32px}
 #tp-story{grid-column:1;grid-row:1}
 .panel .tabpane:not(#tp-story){grid-column:2;grid-row:1;padding:92px 4px 24px 0;overflow:auto}
 .stage{padding:24px 0 8px}.stack{max-width:400px;max-height:430px}
 .thumbs{padding:6px 0 0;max-width:520px;margin:0 auto;width:100%}.hint{padding:8px 0 0}
 .tabs{grid-column:3;grid-row:3;align-self:start;margin-top:24px;z-index:6;border:1px solid var(--c-line);border-radius:var(--r-m);height:52px;padding:0}
 .card{padding:24px}.card h3{font-size:32px}.card p.tx{font-size:var(--t-16)}
 #s-ending .end-wrap{display:flex;gap:64px;justify-content:center;align-items:center;padding:84px 40px 120px;min-height:100dvh}
 .poster{width:320px}.end-txt{margin:0}
 .end-dock{left:auto;right:40px;bottom:24px;background:none;padding:0;width:auto}
 .pp-head{padding:0 40px;text-align:center}.pp-prog{justify-content:center}
 .pp-shelf{justify-content:center;overflow:visible;padding:28px 40px}.pp{width:340px}
 .pp-dock{background:none}
}

/* ===== v4 小说层 ===== */
.mode{display:flex;gap:6px;margin-top:4px}
.mode button{min-height:36px;padding:0 12px;border-radius:var(--r-pill);border:1px solid var(--c-line);font-size:var(--t-12);color:var(--c-mut)}
.mode button[aria-checked=true]{color:var(--c-text);border-color:#F4B94288;background:#F4B9421a}
/* 人生愿望 */
#s-wish{padding:76px var(--s-5) calc(var(--dock-h) + 16px)}
.wish-wrap{max-width:520px;margin:0 auto}
.wish-h{font:700 var(--t-28)/1.25 var(--f-display);margin-top:10px}
.wish-sub{margin-top:10px;font-size:var(--t-14);line-height:1.7;color:var(--c-mut)}
.wishes{display:grid;gap:12px;margin-top:20px}
.wish{position:relative;text-align:left;border-radius:var(--r-l);padding:16px 18px;background:var(--c-paper);color:var(--c-paper-ink);display:grid;gap:6px;border:2px solid transparent;transition:transform var(--d-short) var(--ease-spring),border-color var(--d-short),box-shadow var(--d-short);box-shadow:0 20px 40px -24px #000}
.wish.on{border-color:var(--c-choice);transform:translateY(-2px);box-shadow:0 0 0 4px #F4B94233,0 20px 40px -20px #000}
.wish.on::after{content:"已许愿";position:absolute;right:14px;top:14px;font:600 11px/1 var(--f-mono);color:#8A5D00;letter-spacing:.1em}
.w-k{font:600 11px/1 var(--f-mono);letter-spacing:.14em;color:#8A5D00}
.w-t{font:700 var(--t-20)/1.3 var(--f-display)}
.w-d{font:400 var(--t-14)/1.6 var(--f-display);color:#3A3128}
.w-h{display:flex;justify-content:space-between;gap:8px;font:500 var(--t-12)/1.4 var(--f-body);color:var(--c-paper-mut);padding-top:6px;border-top:1px dashed #6E604D55}
.w-lv{font-family:var(--f-mono);color:#8A5D00;white-space:nowrap}
.wish-note{margin-top:14px;font:500 var(--t-12)/1.4 var(--f-mono);color:var(--c-mut)}
.cta:disabled{opacity:.35;pointer-events:none}
/* 全屏覆盖层：章节标题卡、章末钩子 */
.ov{position:fixed;inset:0;z-index:30;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 28px;background:radial-gradient(120% 80% at 50% 40%,#0E1528 0%,var(--c-space) 70%);opacity:0;transition:opacity var(--d-long) var(--ease-out)}
.ov.in{opacity:1}.ov.out{opacity:0;transition-duration:var(--d-med)}
.tc-k{font:600 var(--t-12)/1 var(--f-mono);letter-spacing:.3em;color:var(--c-choice);opacity:0;transform:translateY(8px)}
.tc-t{margin-top:18px;font:700 clamp(30px,9vw,56px)/1.25 var(--f-display);letter-spacing:.04em;opacity:0;transform:translateY(12px)}
.tc-s{margin-top:12px;font:500 var(--t-12)/1 var(--f-mono);color:var(--c-mut);letter-spacing:.2em;opacity:0}
.tc-e{margin-top:34px;min-height:1.8em;font:400 var(--t-16)/1.8 var(--f-display);color:#D9D2C4}
.tc-tap{position:absolute;bottom:calc(36px + env(safe-area-inset-bottom));font:500 var(--t-12)/1 var(--f-mono);color:#ffffff55;letter-spacing:.2em}
.ov.in .tc-k,.ov.in .tc-t,.ov.in .tc-s{opacity:1;transform:none;transition:opacity 900ms var(--ease-out),transform 900ms var(--ease-out)}
.ov.in .tc-t{transition-delay:150ms}.ov.in .tc-s{transition-delay:350ms}
.title-card::before{content:"";position:absolute;left:50%;top:calc(50% - 120px);width:1px;height:56px;background:linear-gradient(transparent,#F4B94288)}
.hook{justify-content:flex-start;padding-top:22vh;background:radial-gradient(100% 70% at 50% 30%,#1A1020 0%,var(--c-space) 70%)}
.hk-in{max-width:520px}
.hk-k{font:600 var(--t-12)/1.6 var(--f-mono);letter-spacing:.2em;color:var(--c-mut)}
.hk-t{margin-top:26px;min-height:6em;font:500 clamp(20px,5.6vw,28px)/1.75 var(--f-display);color:var(--c-text);text-align:left}
.hk-t::after{content:"";display:inline-block;width:2px;height:1em;margin-left:3px;vertical-align:-2px;background:var(--c-ritual);animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.hk-type{margin-top:18px;font:500 var(--t-12)/1 var(--f-mono);color:#E2532Fcc;letter-spacing:.14em;text-align:left}
.hk-dock{background:linear-gradient(to top,var(--c-space) 70%,transparent)}
.hk-dock .cta{font-size:var(--t-16);letter-spacing:.06em}
/* 读页：完整模式里的「小说页」 */
.reader{flex:1;min-height:0;overflow-y:auto;margin:14px 16px 6px 56px;border-radius:var(--r-l);background:var(--c-paper);color:var(--c-paper-ink);box-shadow:0 30px 60px -20px #000c;scrollbar-width:thin;-webkit-overflow-scrolling:touch}
.rd-page{padding:22px 20px 28px;background-image:linear-gradient(90deg,#6E604D14 1px,transparent 1px);background-size:100% 100%}
.rd-wi{font:600 var(--t-12)/1.5 var(--f-mono);color:#5B4BC9;background:#9B8CFF1f;border:1px solid #9B8CFF66;border-radius:10px;padding:8px 10px;margin-bottom:12px}
.rd-k{font:600 11px/1 var(--f-mono);letter-spacing:.16em;color:#8A5D00}
.rd-h{font:700 var(--t-24,24px)/1.3 var(--f-display);margin:10px 0 14px}
.rd-p{font:400 16.5px/1.95 var(--f-display);color:#2A231D;margin-top:12px;text-indent:2em;opacity:0;transform:translateY(6px);transition:opacity 700ms var(--ease-out),transform 700ms var(--ease-out)}
.rd-p.in{opacity:1;transform:none}
.rd-voice,.rd-echo,.rd-glow,.rd-pick{text-indent:0;padding:10px 12px;border-radius:10px}
.rd-voice{border-left:3px solid #5B4BC9;background:#9B8CFF14;font-style:italic;color:#3B2F86}
.rd-echo{border:1px solid #9B8CFF66;background:#9B8CFF1c;color:#3B2F86}
.rd-voice span,.rd-echo span,.rd-glow span{display:block;font:600 11px/1.4 var(--f-mono);font-style:normal;letter-spacing:.12em;margin-bottom:4px;color:#5B4BC9}
.rd-glow{background:#F4B94226;border-left:3px solid #C99A2E}.rd-glow span{color:#8A5D00}
.rd-pick{background:#1B1715;color:#F4EADA;font-weight:600}
.rd-last{font-weight:700;color:#9C1E24}
.rd-sep{text-align:center;letter-spacing:.6em;color:#6E604D;margin:18px 0 0}
.rd-src{margin-top:16px;padding-top:10px;border-top:1px dashed #6E604D55;font:500 11px/1.4 var(--f-mono);color:var(--c-paper-mut)}
.rd-next{display:block;margin:22px auto 0;min-height:48px;padding:0 22px;border-radius:var(--r-pill);background:#1B1715;color:#F4EADA;font:600 var(--t-14)/1 var(--f-body);letter-spacing:.1em;opacity:0;transition:opacity var(--d-med)}
.rd-next.in{opacity:1}
#tp-story.reading .thumbs .lb{font-size:var(--t-12)}
.thumbs.wait{opacity:.35;pointer-events:none;transition:opacity var(--d-med)}
/* 结局新增 */
.wishr{margin-top:18px;padding:14px;border-radius:var(--r-m);background:var(--c-paper);color:var(--c-paper-ink)}
.wishr .ch-k{color:#8A5D00}
.wr-t{font:700 var(--t-20)/1.3 var(--f-display);margin-top:6px}
.wr-s{margin-top:6px;font:400 22px/1 var(--f-mono);color:#C99A2E;letter-spacing:.08em}.wr-s small{font:500 var(--t-12) var(--f-body);color:var(--c-paper-mut);letter-spacing:0;margin-left:6px}
.wr-l{list-style:none;margin-top:10px;display:grid;gap:6px;font-size:var(--t-14);line-height:1.5}
.wr-l b{font:600 11px/1 var(--f-mono);margin-right:8px;padding:3px 6px;border-radius:6px}
.wr-l .ok b{background:#0E6B5C;color:#fff}.wr-l .no b{background:#6E604D33;color:#6E604D}
.unlock{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.ending-code,.thread{padding:12px;border-radius:var(--r-m);background:var(--c-surface);border:1px solid var(--c-line)}
.ending-code b,.thread b{display:block;margin-top:6px;font:700 var(--t-16)/1.35 var(--f-display)}
.ending-code small,.thread small{display:block;margin-top:6px;font-size:var(--t-12);line-height:1.5;color:var(--c-mut)}
.ending-code{border-color:#E2532F66}.ending-code .ch-k{color:var(--c-ritual)}
.thread{border-color:#9B8CFF66;background:#9B8CFF12}
.whatif{margin-top:10px}
.wi-btn{width:100%;display:grid;grid-template-columns:auto 1fr;gap:2px 12px;text-align:left;padding:12px 14px;border-radius:var(--r-m);border:1px dashed #F4B94288;background:#F4B9420f;min-height:var(--tap-min)}
.wi-k{grid-row:1/3;align-self:center;font:700 var(--t-16)/1 var(--f-display);color:var(--c-choice)}
.wi-t{font:600 var(--t-14)/1.3 var(--f-body)}.wi-d{font-size:var(--t-12);color:var(--c-mut)}
.nextlife{margin-top:14px}.nextlife .ch-k{color:var(--c-origin)}
#nextLives{display:grid;gap:8px;margin-top:8px}
.nl{display:grid;gap:4px;text-align:left;padding:12px 14px;border-radius:var(--r-m);border:1px solid var(--c-line);background:var(--c-surface);min-height:var(--tap-min)}
.nl:first-child{border-color:#3CC8B088;background:#3CC8B014}
.nl-k{font:600 11px/1 var(--f-mono);letter-spacing:.12em;color:var(--c-origin)}
.nl-n{font:400 var(--t-20)/1.2 var(--f-latin)}.nl-n small{font:500 var(--t-12) var(--f-body);color:var(--c-mut);margin-left:8px}
.nl-d{font-size:var(--t-12);line-height:1.5;color:#C9C3B6}
@media (min-width:900px){
 #s-wish{padding-top:110px}.wishes{grid-template-columns:repeat(3,1fr)}.wish-wrap{max-width:980px;text-align:center}.wish{min-height:230px;align-content:start}
 .wish-dock{background:none}
 .reader{margin:20px 0 6px;max-width:620px;width:100%;align-self:center}
 .rd-page{padding:32px 40px 40px}.rd-p{font-size:18px}
 .hook{padding-top:24vh}.hk-dock{flex-direction:row;justify-content:center;background:none}
 #s-ending .end-wrap{align-items:flex-start;padding-top:96px}.poster-col{position:sticky;top:96px}
 .end-txt{max-width:520px}
}
.rd-p.pend{display:none}
@media (min-width:900px){.end-dock{left:0;right:0;bottom:0;justify-content:flex-end;padding:28px 40px 20px;background:linear-gradient(to top,var(--c-space) 55%,transparent)}}
/* v4 图鉴入口 */
.pill-a{display:inline-flex;align-items:center;text-decoration:none}
.codex-link{display:inline-flex;align-items:center;min-height:36px;margin-top:8px;font-size:var(--t-12);color:var(--c-choice);text-decoration:none;border-bottom:1px solid #F4B94266}
.pp-codex{display:inline-flex;align-items:center;min-height:40px;margin-top:10px;padding:0 14px;border-radius:var(--r-pill);border:1px solid #F4B94266;color:var(--c-choice);font-size:var(--t-12);text-decoration:none}

/* 结局图鉴独立页。只引用 tokens.css 变量；手机 390 优先，≥900px 桌面。 */
.cx-body{background:radial-gradient(120% 60% at 50% 0%,#141B33 0%,var(--c-space) 60%) fixed}
.cx-bar{background:linear-gradient(to bottom,var(--c-space) 40%,transparent)}
.cx-bar a{color:inherit;text-decoration:none;display:inline-flex;align-items:center}
.pill.on{color:var(--c-text);border-color:#ffffff40;display:inline-flex;align-items:center}
.cx{position:relative;z-index:2;max-width:1180px;margin:0 auto;padding:72px var(--s-4) var(--s-16)}
.cx-head .kicker{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.cx-h{margin-top:var(--s-3);font:600 var(--t-28)/1.25 var(--f-display)}
.cx-h b{color:var(--c-choice);font-weight:700}.cx-of{color:var(--c-mut);font-size:var(--t-20)}
.cx-world{margin-top:var(--s-4);padding:var(--s-4);border-radius:var(--r-m);background:var(--c-surface);border:1px solid var(--c-line)}
.dots{display:grid;grid-template-columns:repeat(22,1fr);gap:4px}
.dots i{aspect-ratio:1;border-radius:50%;background:#ffffff14}
.dots i.on{background:var(--c-choice);box-shadow:0 0 8px #F4B94299}.dots i.cur{outline:2px solid var(--c-text);outline-offset:1px}
.regions{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s-2);margin-top:var(--s-4)}
.regions li{font-size:var(--t-12);color:var(--c-mut);display:flex;flex-direction:column;gap:2px}
.regions b{font:600 var(--t-20)/1 var(--f-latin);color:var(--c-text)}.regions b+small{display:inline}
.regions li b,.regions li small{display:inline}
.cx-tabs{position:sticky;top:56px;z-index:5;display:flex;gap:4px;margin:var(--s-6) calc(-1*var(--s-4)) 0;padding:var(--s-2) var(--s-4);background:#04060Dee;backdrop-filter:blur(10px);border-bottom:1px solid var(--c-line)}
.cx-tabs button{flex:1;min-height:var(--tap-min);border-radius:var(--r-pill);font:600 var(--t-16)/1 var(--f-display);color:var(--c-mut);transition:all var(--d-short)}
.cx-tabs button span{font:500 var(--t-12)/1 var(--f-mono);margin-left:4px;opacity:.8}
.cx-tabs button[aria-selected=true]{background:var(--c-paper);color:var(--c-paper-ink)}
.cx-countries{display:flex;gap:var(--s-2);overflow-x:auto;padding:var(--s-4) 0 var(--s-1);scrollbar-width:none}
.cty{flex:0 0 auto;min-height:var(--tap-min);padding:8px 14px;border-radius:var(--r-m);border:1px solid var(--c-line);background:var(--c-surface);text-align:left;display:flex;flex-direction:column;gap:2px}
.cty b{font:600 var(--t-14)/1.2 var(--f-display)}.cty small{font:500 var(--t-12)/1 var(--f-mono);color:var(--c-mut)}
.cty.on{border-color:var(--c-choice);background:#F4B9421a}.cty.on small{color:var(--c-choice)}
.cty.lock{opacity:.5;border-style:dashed}
.cx-sub{display:flex;flex-direction:column;gap:6px;margin:var(--s-4) 0 var(--s-3)}
.cx-sub h2{font:600 var(--t-20)/1.35 var(--f-display);margin-top:4px}.cx-life{font-size:var(--t-12);color:var(--c-mut)}
.tiers{display:flex;flex-wrap:wrap;gap:6px 14px;margin-bottom:var(--s-4);font:500 var(--t-12)/1 var(--f-mono);color:var(--c-mut)}
.tier i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:6px;background:var(--rc);vertical-align:0}
.r1{--rc:#9AA3B5}.r2{--rc:var(--c-origin)}.r3{--rc:var(--c-ritual)}.r4{--rc:var(--c-choice)}
.r1t{color:#9AA3B5}.r2t{color:var(--c-origin)}.r3t{color:var(--c-ritual)}.r4t{color:var(--c-choice)}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-3)}
.ecard{position:relative;text-align:left;border-radius:var(--r-m);overflow:hidden;background:var(--c-ink);border:1px solid var(--c-line);display:flex;flex-direction:column;transition:transform var(--d-short) var(--ease-out),border-color var(--d-short)}
.ecard:active{transform:scale(.98)}
.ecard::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--rc);opacity:.9;z-index:1}
.ecard.got{grid-column:1/-1;border-color:#E2532F80;box-shadow:0 18px 50px -24px #E2532F99}
.ecard .art svg{display:block;width:100%;height:auto}
.e-tx{padding:12px 12px 14px;display:flex;flex-direction:column;gap:6px}
.rar{font:500 var(--t-12)/1 var(--f-mono);letter-spacing:.06em;color:var(--rc)}
.ecard b{font:700 var(--t-16)/1.3 var(--f-display)}.ecard.got b{font-size:var(--t-20)}
.ecard small{font-size:var(--t-12);line-height:1.5;color:var(--c-mut)}
.ecard.got small{font:italic var(--t-14)/1.5 var(--f-display);color:var(--c-paper-2)}
.how{font-size:var(--t-12);color:var(--c-choice);margin-top:2px}
.sil-art{aspect-ratio:16/10;display:grid;place-items:center;background:repeating-linear-gradient(135deg,#ffffff06 0 6px,transparent 6px 12px),linear-gradient(#0E1428,#070A14)}
.sil-q{font:400 40px/1 var(--f-latin);color:var(--rc);opacity:.45;text-shadow:0 0 24px var(--rc)}
.hid i{display:block;height:14px;max-width:100%;border-radius:4px;background:#ffffff1f}
.ecard.sil.r4{border-color:#F4B94255}.ecard.sil.r4 .sil-art{background:radial-gradient(circle at 50% 50%,#F4B94222,transparent 60%),linear-gradient(#0E1428,#070A14)}
/* 人物 */
.pgrid{display:grid;grid-template-columns:1fr;gap:var(--s-3)}
.person{display:flex;gap:12px;padding:14px;border-radius:var(--r-m);background:var(--c-surface);border:1px solid var(--c-line)}
.pa{flex:0 0 48px;height:48px;border-radius:50%;display:grid;place-items:center;font:600 var(--t-20)/1 var(--f-latin);background:var(--c-paper);color:var(--c-paper-ink);box-shadow:0 0 0 2px var(--pk)}
.k-o{--pk:var(--c-origin)}.k-l{--pk:var(--c-luck)}.k-c{--pk:var(--c-choice)}
.person b{font:600 var(--t-16)/1.2 var(--f-display)}.person .bn{font:400 var(--t-14)/1 var(--f-bn);color:var(--c-mut);margin-left:8px}
.person small{display:block;font-size:var(--t-12);color:var(--c-mut);margin-top:4px}
.person p{margin-top:8px;font:var(--t-14)/1.55 var(--f-display);color:var(--c-paper-2)}
.person .at{display:block;margin-top:6px;font:500 var(--t-12)/1 var(--f-mono);color:var(--c-mut)}
.person.sil{border-style:dashed;opacity:.75}.person.sil .pa{background:#ffffff10;color:var(--c-mut);box-shadow:none}.person.sil p{color:var(--c-mut)}
/* 丝线 */
.slots{display:flex;gap:var(--s-2);margin-bottom:var(--s-4)}
.slot{flex:1;min-height:44px;display:grid;place-items:center;border-radius:var(--r-s);border:1px dashed var(--c-line);font-size:var(--t-12);color:var(--c-mut)}
.slot.on{border:1px solid #9B8CFF99;background:#9B8CFF1f;color:var(--c-text);font-family:var(--f-display);font-size:var(--t-14)}
.tlist{display:grid;gap:var(--s-3)}
.tcard{padding:16px;border-radius:var(--r-m);background:var(--c-surface);border:1px solid var(--c-line)}
.tcard.got{border-color:#9B8CFF66;background:#9B8CFF12}.tcard.sil{opacity:.7;border-style:dashed}
.t-top{display:flex;justify-content:space-between;align-items:baseline}.t-top b{font:700 var(--t-20)/1.2 var(--f-display)}
.t-n{font:600 var(--t-16)/1 var(--f-mono);color:var(--c-luck)}
.seg{display:flex;gap:3px;margin:12px 0}.seg i{flex:1;height:6px;border-radius:2px;background:#ffffff14}.seg i.on{background:var(--c-luck);box-shadow:0 0 8px #9B8CFF}
.tcard p{font-size:var(--t-14);line-height:1.6;color:var(--c-mut)}.tcard.got p:first-of-type{color:var(--c-text)}
.t-from{margin-top:8px;font:500 var(--t-12)/1.4 var(--f-mono)!important}.t-next{margin-top:4px;color:var(--c-luck)!important;font-size:var(--t-12)!important}
/* 提示抽屉 */
.sheet-bg{position:fixed;inset:0;z-index:40;background:#000a;opacity:0;transition:opacity var(--d-short)}.sheet-bg.on{opacity:1}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:41;max-height:88dvh;overflow:auto;padding:10px var(--s-5) calc(var(--s-5) + env(safe-area-inset-bottom));border-radius:var(--r-l) var(--r-l) 0 0;background:var(--c-ink);border-top:1px solid var(--c-line);transform:translateY(100%);transition:transform var(--d-med) var(--ease-out)}
.sheet.on{transform:none}
.sh-grab{width:40px;height:4px;border-radius:2px;background:#ffffff33;margin:0 auto 14px}
.sheet h3{font:700 var(--t-28)/1.25 var(--f-display);margin:8px 0 14px}
.sh-art svg{display:block;width:100%;border-radius:var(--r-m)}
.sh-q{margin:12px 0 18px;font:italic var(--t-16)/1.5 var(--f-display);color:var(--c-paper-2)}
.ch-k{font:500 var(--t-12)/1.4 var(--f-mono);letter-spacing:.1em;color:var(--c-mut)}
.how-l{list-style:none;margin-top:10px;display:grid;gap:8px;counter-reset:h}
.how-l li{display:grid;grid-template-columns:52px 1fr auto;gap:10px;align-items:center;padding:10px 12px;border-radius:var(--r-s);background:var(--c-surface);border-left:3px solid var(--c-choice);font-size:var(--t-14)}
.how-l .ha{font:600 var(--t-14)/1 var(--f-mono);color:var(--c-choice)}.how-l small{font-size:var(--t-12);color:var(--c-mut)}
.sh-when{margin-top:12px;font:500 var(--t-12)/1.4 var(--f-mono);color:var(--c-mut)}
.sh-sil{height:140px;border-radius:var(--r-m);display:grid;place-items:center;background:repeating-linear-gradient(135deg,#ffffff06 0 6px,transparent 6px 12px),#070A14;border:1px dashed var(--c-line)}
.sh-sil span{font:400 64px/1 var(--f-latin);color:var(--c-ritual);opacity:.5}
.sh-hint{margin-top:16px;font:600 var(--t-20)/1.5 var(--f-display);color:var(--c-paper)}
.sh-note{margin-top:8px;font-size:var(--t-14);line-height:1.6;color:var(--c-mut)}
.sh-clue{display:flex;align-items:center;gap:6px;margin-top:14px;font:500 var(--t-12)/1 var(--f-mono);color:var(--c-mut)}
.sh-clue i{width:28px;height:6px;border-radius:2px;background:#ffffff1a}.sh-clue i.on{background:var(--c-ritual)}
.sh-act{display:flex;flex-direction:column;align-items:center;gap:6px;margin-top:20px}
.sh-act .cta{display:grid;place-items:center;text-decoration:none;letter-spacing:.12em}.sh-act a.ghost{display:inline-grid;place-items:center;text-decoration:none}
@media (min-width:900px){
 .cx{padding:96px 40px 80px}
 .cx-head{display:grid;grid-template-columns:1fr 520px;gap:40px;align-items:end}
 .cx-head .cx-world{grid-column:2;grid-row:1/3;margin-top:0}
 .cx-h{font-size:var(--t-40)}
 .dots{grid-template-columns:repeat(29,1fr)}
 .cx-tabs{top:64px;margin:var(--s-8) 0 0;padding:var(--s-2);border:1px solid var(--c-line);border-radius:var(--r-pill);max-width:520px}
 .cx-sub{flex-direction:row;justify-content:space-between;align-items:flex-end}
 .grid{grid-template-columns:repeat(4,1fr);gap:var(--s-4)}
 .ecard.got{grid-column:span 2;grid-row:span 2}
 .ecard.got .e-tx{padding:18px}
 .pgrid{grid-template-columns:repeat(3,1fr)}
 .tlist{grid-template-columns:1fr 1fr}.tcard.got{grid-column:1/-1}
 .slots{max-width:560px}
 .sheet{left:50%;right:auto;bottom:auto;top:50%;width:520px;border-radius:var(--r-l);border:1px solid var(--c-line);transform:translate(-50%,-46%) scale(.98);opacity:0;transition:all var(--d-med) var(--ease-out)}
 .sheet.on{transform:translate(-50%,-50%);opacity:1}.sh-grab{display:none}
}
/* 修正：点阵与数字 */
.dots{grid-template-columns:repeat(22,minmax(0,1fr))}
.dots i{display:block;width:100%;height:auto;aspect-ratio:1/1;align-self:start}
.regions b{font:600 var(--t-20)/1 var(--f-mono)}
.sh-sil span{color:var(--rc)}
@media (min-width:900px){.dots{grid-template-columns:repeat(29,minmax(0,1fr))}}

/* Source geometry: handoff/design/ui-v4. Adapters only for real engine data,
   multi-page SEO, native controls and the required 48px interaction targets. */
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip-path:inset(50%);white-space:nowrap;border:0!important}
body{line-height:1.5}main{position:relative;z-index:1}body:has(#s-home) main{pointer-events:none}body:has(#s-home) main a,body:has(#s-home) main button,body:has(#s-home) main .content{pointer-events:auto}
.bar{min-height:0;gap:8px;flex-wrap:nowrap}.brand{display:flex;align-items:center;font-size:20px}.bar nav{display:none}.bar-r{margin-left:auto}.bar-r>.pill,.bar-r>details>summary{display:flex;align-items:center;justify-content:center;min-height:36px;position:relative;text-decoration:none}.bar-r>.pill:before,.bar-r>details>summary:before{content:"";position:absolute;inset:-6px 0}
.bar-r .languages>div{top:46px}.bar-r .languages summary{background:#0A1020b3;border:1px solid var(--c-line);border-radius:999px;min-width:0;min-height:36px;font-size:12px;padding:0 12px;color:var(--c-mut)}.bar-r .languages .icon{width:16px;height:16px}.bar-r .languages button{display:flex;align-items:center;gap:12px;min-height:48px;width:100%}.bar-r .languages label{display:block;font-size:12px}.bar-r input{min-height:48px;width:100%}.bar-r .settings-nav{border-top:1px solid var(--c-line);margin-top:12px;padding-top:8px}.bar-r .settings-nav a{min-height:48px}
.hero#s-home{min-height:100dvh;max-width:none;margin:0;padding:0;display:block}.hero .home-hero{max-width:none}.hero .home-hero h1{font:400 20px/1.3 var(--f-display);margin:20px 0 0;max-width:none}.hero .home-hero .kicker{max-width:none}.hero .slot{height:1.25em}.hero .slot-in>div{white-space:nowrap}.hero .meta{max-width:none}.hero .cta{margin:0;font-size:16px;max-width:360px;width:100%;line-height:1.3}.hero .mode{display:flex;margin:4px 0 0;gap:6px;flex-wrap:nowrap;justify-content:center}.hero .mode button{font-size:12px;line-height:1.4;min-height:48px;padding:0 12px}.home-dock .daily{text-decoration:none;min-height:48px}.home-dock #resume-link:empty{display:none}.home-dock #resume-link{margin:0}.home-dock #resume-link a{display:block;text-align:center;min-height:48px;align-content:center}.home-dock .notice{font-size:12px}.globe{pointer-events:none;opacity:1}.content{position:relative}.content p{margin:16px 0}.content h1{margin-bottom:16px}.content h2{margin-top:48px}.content h3{margin-top:18px}.content a:not(.cta,.pill){text-underline-offset:4px}.content details p{line-height:1.7}footer{position:relative;z-index:1}
html[data-page=play] .play-heading{padding-top:80px}html[data-game-active="1"] .play-heading{position:absolute;clip-path:inset(50%);width:1px;height:1px;overflow:hidden;padding:0}html[data-game-active="1"] #game{padding:0;min-height:100dvh;text-align:left;max-width:none;margin:0}html[data-game-active="1"] .screen-shell h2{font:inherit}#game .screen{min-height:100dvh}
body[data-scene=title] .bar,body[data-scene=hook] .bar{visibility:hidden}
#s-birth{position:relative;overflow:hidden}#s-birth .birth-camera{position:absolute;inset:0;z-index:-1;height:100%;opacity:.2;pointer-events:none}#s-birth .birth-globe{width:100%;height:100%}#s-birth .birth-door{display:none}#s-birth .birth-caption{position:absolute;top:80px;width:100%;text-align:center;font:12px var(--f-mono);color:var(--c-mut)}#s-birth .fate-deck{margin:0;max-width:none;display:flex;transition:opacity 600ms}#s-birth .fate-deck article{padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;color:var(--c-paper-ink)}#s-birth .fate-deck .fate{opacity:0;transform:translateY(40px) rotateY(180deg)}.birth-dealing #s-birth .fate{opacity:1}.birth-dealing #s-birth .fate.revealed,.birth-complete #s-birth .fate.revealed{opacity:1;transform:none}#s-birth .birth-name{opacity:1;transform:none}#s-birth .nm{font:600 46px/1.1 var(--f-latin);margin:12px 0;color:var(--c-text)}#s-birth .where{font:12px/1.5 var(--f-mono)}.birth-preparing #s-birth .birth-name{opacity:0}#s-birth .birth-dock .cta{opacity:1}#s-birth .birth-dock .ghost{min-height:48px}#s-birth .fate .art svg{width:100%;height:100%;max-height:160px}
#s-wish .wish-options{max-width:none}#s-wish .wish-h{font:700 28px/1.25 var(--f-display)}#s-wish .wish{min-height:112px;width:100%;margin:0}#s-wish .wish:after{content:none}
#s-title .tc-t{font:700 clamp(30px,9vw,56px)/1.25 var(--f-display)}#s-title .tc-tap{background:none;max-width:none;min-height:48px;border-radius:0;padding:0 20px;letter-spacing:.2em;color:var(--c-mut)}#s-hook .hk-t{font:500 clamp(20px,5.6vw,28px)/1.75 var(--f-display)}#s-hook .hk-type{line-height:1.7}#s-hook .ghost{min-height:48px;text-decoration:none;align-content:center}
#s-play .cause-lg{font-size:12px}#s-play .chapline .dots{display:flex;gap:4px}#s-play .chapline .dots i{width:14px;height:3px;background:var(--c-line)}#s-play .chapline .dots i.on{background:var(--c-choice)}#s-play .reading.reader,#s-play .reader{max-width:none;width:auto;padding:0;text-align:left;max-height:none}#s-play .rd-page>h2{font:700 24px/1.3 var(--f-display);margin:10px 0 14px}#s-play .rd-page .rd-p{font:400 16.5px/1.95 var(--f-display)}#s-play .reader-actions{display:flex;gap:8px;flex-wrap:wrap;padding-top:12px}#s-play .reader-actions .rd-next{flex:1;min-width:100px;letter-spacing:0}#s-play .rd-echo{margin-top:16px}#s-play .rd-echo p{font:400 15px/1.8 var(--f-display)}#s-play .rd-echo b{font-size:12px}#s-play .rd-echo{color:#3B2F86}#s-play .stage .choice-card{max-width:none;margin:0;overflow:auto;display:flex;flex-direction:column;gap:16px;text-align:left}#s-play .choice-card h2{font:700 clamp(22px,5vw,32px)/1.3 var(--f-display)}#s-play .choice-card p{font:400 16px/1.7 var(--f-display)}#s-play .choice-context{margin:0}#s-play .swipe-zone{min-height:48px;padding:10px;background:#1B171508;display:flex;gap:8px;align-items:center;font-size:12px;touch-action:none;margin-top:auto}#s-play .swipe-zone .icon{width:16px}#s-play .choice-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;max-width:none}#s-play .choice-options .choice{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:6px;min-height:94px;padding:10px 6px;border-radius:16px;border:1px solid var(--c-line);background:#0A1020b3;text-align:center;color:var(--c-text);overflow:hidden;position:relative}#s-play .choice .ar{font:12px var(--f-mono);color:var(--c-choice);background:none;width:auto;height:auto}#s-play .choice .lb{font:500 13px/1.4 var(--f-display)}#s-play .choice-options .key-choice .ar{color:var(--c-ritual)}#s-play .choice-options .holding{border-color:var(--c-ritual)}#s-play .hint{margin:0;min-height:32px;font:11px/1.4 var(--f-body);color:var(--c-mut)}#s-play .thread-choices{padding-top:12px}#s-play .thread-choices h3{font-size:14px}#s-play .thread-choices button{min-height:48px;color:var(--c-paper-ink)}#s-play .reference-facts{padding:24px 20px;overflow:auto;font-size:14px}#s-play .reference-facts h3{font:700 22px var(--f-display);margin-bottom:20px}#s-play .reference-facts p{padding:12px 0;border-bottom:1px solid var(--c-line)}#s-play .reference-facts .life-facts{display:block}#s-play .tabs button{min-height:48px}
#s-ending .end-h{font:700 28px/1.3 var(--f-display)}#s-ending .poster canvas{width:100%;height:auto;display:block}#s-ending .wish-review{padding:0;border:0;background:none;color:var(--c-paper-ink)}#s-ending .wish-review p{font-size:14px;margin:12px 0}#s-ending .wish-review small{color:var(--c-paper-mut)}#s-ending .ending-decisions{font-size:13px;line-height:1.8;margin-top:20px}#s-ending .end-actions{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0}#s-ending .end-actions .pill{min-height:48px;align-content:center}#s-ending .relay{margin:20px 0;border:0;padding:0}#s-ending .relay h3{font:600 12px var(--f-mono);color:var(--c-mut)}#s-ending .relay>p{font-size:12px;color:var(--c-mut);margin:8px 0}#s-ending .relay-options{display:grid;gap:8px}#s-ending .relay-options button{border-radius:16px;min-height:64px;text-align:left;line-height:1.5}#s-ending .wi-btn{min-height:72px;width:100%;padding:16px;text-align:left;border:1px solid #F4B94266;background:#F4B94214;border-radius:16px}#s-ending .end-dock .ghost{min-height:48px;text-decoration:none;align-content:center}
.reference-collection{padding:80px 20px 168px}.reference-collection>h1{font:700 28px/1.3 var(--f-display)}.reference-collection #collection .pp-shelf{margin-inline:-20px}.passport-page.pp{border:0;box-shadow:0 22px 44px -20px #000a}.passport-page.pp h2{font:600 34px/1.1 var(--f-latin);margin:18px 0 8px}.passport-page.pp p{margin:0}.passport-page.pp .lineage-note{font-size:11px;margin:10px 0}.pp-stamps{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:18px}.pp-stamps .pp-stamp{min-height:70px;border:1px solid #6E604D55;border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;font:11px/1.5 var(--f-mono);transform:rotate(-4deg);color:#8F3025}.pp-stamp b{font-size:20px}.pp-stamps .pp-stamp:nth-child(3n){transform:rotate(5deg);color:#0E6B5C}.pp-stamps .pp-stamp:nth-child(3n + 2){color:#5B4BC9}.reference-collection .collection-tabs{margin-top:24px;display:flex;gap:4px}.reference-collection .collection-tabs button{flex:1;min-height:48px}.reference-collection .collection-grid{margin-top:20px}.reference-collection .codex-item{padding:20px;min-width:0;border-radius:16px}.reference-collection .codex-item h3{font:700 22px/1.3 var(--f-display);margin-top:0}.reference-collection .codex-item p{font-size:14px}.reference-collection .codex-item.locked{opacity:1;background:repeating-linear-gradient(135deg,#ffffff03 0 1px,transparent 1px 6px);color:var(--c-mut)}.reference-collection #collection-panel>h2{font-size:24px}.reference-collection .passport-transfer{margin-top:32px}.reference-collection .passport-transfer summary{min-height:48px;align-content:center}
@media(min-width:900px){.hero .home-hero{max-width:calc(8vw + 600px)}.hero .home-hero h1{font-size:28px}.hero .mode{justify-content:flex-start}.bar{height:64px}.reference-collection{max-width:1180px;padding:96px 40px 168px}.reference-collection>h1{font-size:40px}#s-birth .nm{font-size:72px}#s-play .reader{margin:24px 0 8px}#s-play .tabs{position:relative;left:auto;right:auto;bottom:auto;display:flex}#s-play .panel .tabpane:not(#tp-story){padding-top:92px}#s-play .panel #tp-people{display:block!important}#s-play .panel:has(#tp-mem:not([hidden])) #tp-people,#s-play .panel:has(#tp-data:not([hidden])) #tp-people{display:none!important}#s-play .panel #tp-story[hidden]{display:flex!important}#s-play .reference-facts{grid-column:2;grid-row:1}#s-play .hint{text-align:center}#s-ending .relay-options{grid-template-columns:repeat(3,1fr)}#s-ending .relay-options button{font-size:12px;padding:12px}#s-ending .end-txt{max-width:520px}#s-ending .end-dock{flex-direction:row;align-items:center}#s-ending .end-dock .cta{width:260px}.reference-collection .pp-shelf{flex-wrap:wrap}}
@media(max-width:899px){.bar-r{gap:5px}.bar-r>.pill,.bar-r>details>summary{padding-inline:10px;font-size:11px}.brand{font-size:18px;letter-spacing:.12em}.hero .home-hero{padding-top:88px}.hero .home-dock{padding:28px 20px 12px}.hero .mode{width:100%}.hero .mode button{flex:1;padding-inline:6px;font-size:11px}.hero .home-hero .meta{padding:0 24px}#s-play .reader{margin-top:14px}#s-ending .end-wrap{padding-bottom:160px}.reference-collection{padding-top:76px}.reference-collection .collection-tabs{flex-wrap:wrap}.reference-collection .collection-tabs button{flex:1 1 40%;font-size:13px}}
@media(prefers-reduced-motion:reduce){.hk-t::after{animation:none}.slot-in{transition:none!important}}

.hero .home-hero .kicker h1{font:inherit;color:inherit;margin:0;letter-spacing:inherit;max-width:none}

#s-birth .birth-dock .cta:not(:disabled){pointer-events:auto}
#s-birth .fate-deck article{display:block;min-height:0;transition-delay:0s}
.birth-preparing #s-birth .fate-deck{opacity:0}.birth-dealing #s-birth .fate-deck,.birth-complete #s-birth .fate-deck{opacity:1}
.choice>span{position:relative;z-index:1}.choice i{position:absolute;inset:0;transform:scaleX(0);transform-origin:left;background:#f4b94266;pointer-events:none}.choice.holding i{transform:scaleX(1);transition:transform 650ms linear}
.collection-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:24px 0}.codex-item{background:var(--c-ink);border:1px solid var(--c-line)}.codex-item.got{grid-column:span 2}.codex-item .ea{height:120px;border-radius:12px;overflow:hidden;margin-bottom:16px}.codex-item .ea svg{width:100%;height:100%;object-fit:cover}
.passport-page .pill{min-height:48px;display:flex;align-items:center;justify-content:center;color:var(--c-paper-ink);background:transparent;margin-top:16px}.passport-page .pp-grid .stamp{font-size:12px}.passport-page .lineage-note{overflow-wrap:anywhere}.passport-page.pp{margin-block:0}
@media(min-width:900px){.collection-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}

#s-play .choice-options .choice{min-height:var(--thumb-h);padding:8px;gap:3px;text-align:left;align-items:flex-start;line-height:1.3}#s-play .choice-options .lb{font-weight:600;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}#s-play .hint{min-height:26px;font-size:12px;line-height:1.4}#s-play .reference-facts .person p{border:0;padding:0}#s-play .memrow p{border:0;padding:0}#s-play .person b{font-size:16px}
.cx-world .dots i.lit{background:var(--c-choice)}.reference-collection .cx-world .dots{grid-template-columns:repeat(10,minmax(0,1fr))}.reference-collection .cx-world .dots i{max-width:12px}.reference-collection .cx-world p{font-size:12px;color:var(--c-mut)}.reference-collection .cty[aria-pressed=true]{border-color:var(--c-choice);color:var(--c-choice)}

body[data-scene=title] .bar,body[data-scene=hook] .bar{display:none}
.collection-intro{margin-top:32px}.collection-intro summary{min-height:48px;align-content:center;color:var(--c-mut);font-size:12px}.reference-collection:has(.pp-head)>#collection{margin-top:0}.reference-collection .pp-head{padding:0;text-align:left}.reference-collection .pp-head h1{font:700 20px/1.3 var(--f-display);margin:8px 0 0}.reference-collection .pp-head .kicker{margin:0}.reference-collection .pp-codex{display:block;min-height:48px;align-content:center;margin-top:14px}.reference-collection .pp-shelf{padding-top:20px}.reference-collection .cx-head{align-items:end}.reference-collection .cx-head .kicker{margin:0}.reference-collection .cx-head h1{font:600 28px/1.25 var(--f-display);margin:12px 0 0}.reference-collection .cx-world{margin:0;min-height:160px}.reference-collection .cx-world p{margin:12px 0 0}.reference-collection .cx-world .ghost{min-height:48px}.reference-collection .collection-tabs{flex-wrap:nowrap}.reference-collection .collection-tabs button{flex:1}
@media(min-width:900px){.reference-collection .cx-head{display:grid;grid-template-columns:1fr 520px;gap:40px}.reference-collection .cx-world{grid-column:2;grid-row:1;min-height:200px}.reference-collection .cx-head h1{font-size:40px}.reference-collection .pp-head{text-align:center}.reference-collection .pp-head h1{font-size:28px}}

#s-birth .crib{opacity:1;z-index:-1}.birth-preparing #s-birth .crib{opacity:0}.birth-zooming #s-birth .crib{opacity:1}.bar-r .passport-label{max-width:100px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.bar-r>.pill:before,.bar-r>details>summary:before{inset:-6px -3px}.reference-collection .codex-item.sil{padding:0}.reference-collection .codex-item.sil h3,.reference-collection .codex-item.sil p{margin:12px}.reference-collection .codex-item.sil h3{font-size:16px}.reference-collection .codex-item.got .ea{height:220px}.reference-collection .sil-art{min-height:120px}
@media(max-width:360px){.bar-r .passport-label{max-width:60px}.bar-r>.pill,.bar-r>details>summary{padding-inline:8px}.bar .brand{font-size:16px;letter-spacing:.04em}}

#s-play .choice-card>.kicker{color:var(--c-paper-mut)}#s-ending .fmt{font:12px var(--f-mono);color:var(--c-mut);min-height:32px;align-items:center}#s-ending .end-history{margin-top:20px}#s-ending .end-history summary{min-height:48px;align-content:center;font:12px var(--f-mono);color:var(--c-mut)}#s-ending .end-history .ending-decisions{margin:0}#s-ending .wr-t{font:700 20px/1.3 var(--f-display);margin-top:6px}
@media(min-width:900px){#s-ending .end-txt{width:520px;flex:none;padding-top:26px}#s-ending .poster-col{width:320px;flex:none}}

.hero .mode button{position:relative;min-height:36px}.hero .mode button:before{content:"";position:absolute;inset:-6px 0}.bar-r .codex-top{max-width:72px;line-height:1.2;text-align:center}
@media(max-width:899px){.hero .home-dock{padding:32px 20px 20px}.hero .mode{width:auto}.hero .mode button{flex:none}.bar-r .codex-top{padding-inline:8px;font-size:11px}}
@media(max-width:600px){html:not([data-locale=zh-cn]):not([data-locale=zh-tw]) .bar-r .passport-label{max-width:64px}.bar-r .codex-top{max-width:56px;overflow-wrap:anywhere}.bar-r{gap:4px}}
@media(max-width:360px){.bar-r .passport-label{max-width:42px}.bar-r .codex-top{max-width:48px}.bar-r>.pill,.bar-r>details>summary{padding-inline:7px}.bar .brand{font-size:15px}}

.reference-collection .pp-codex{position:relative;min-height:40px;margin-top:10px}.reference-collection .pp-codex:before{content:"";position:absolute;inset:-4px 0}

.reference-collection #collection{min-height:100dvh}.reference-collection #collection.empty{border:0;margin:0;padding:0;text-align:left}.reference-collection .pp-unit{width:300px;flex:none}.reference-collection .pp-unit .pp{width:100%}.reference-collection .passport-page.pp h2{font:400 26px/1.1 var(--f-latin);margin:14px 0 4px}.reference-collection .pp-place{display:block}.reference-collection .pp-details{margin-top:12px;font-size:12px;max-width:100%}.reference-collection .pp-details summary{min-height:48px;align-content:center;color:var(--c-mut)}.reference-collection .pp-details p{margin:8px 0}.reference-collection .pp-details .pill{display:block;min-height:48px;align-content:center;padding:8px 14px}.reference-collection .pp-grid{margin-top:14px}.reference-collection .cx-head{min-height:200px}html[data-page=codex] body{background:radial-gradient(120% 60% at 50% 0%,#141B33 0%,var(--c-space) 60%) fixed}
@media(min-width:900px){.reference-collection .pp-unit{width:340px}}

#s-play .tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}#s-birth .nm{font-weight:400}.birth-complete #s-birth .birth-caption{visibility:hidden}#s-birth .birth-dock .cta:disabled{opacity:0}

/* Required native fallback disclosure: visible above the English story, with
   reserved space. The en/zh-CN reference layouts are unaffected. */
.fallback-status{position:fixed;z-index:21;top:56px;left:20px;right:20px;margin:0;padding:6px 10px;background:var(--c-space);border:1px solid var(--c-line);border-radius:10px;color:var(--c-mut);font:12px/1.4 var(--f-body)}
html[data-story-fallback="1"]{--fallback-h:46px}
html[data-game-active="1"][data-story-fallback="1"] #s-play.on{padding-top:calc(56px + var(--fallback-h))}
html[data-story-fallback="1"] #s-wish{padding-top:calc(76px + var(--fallback-h))}
html[data-story-fallback="1"] #s-birth .birth-caption{top:calc(80px + var(--fallback-h))}
html[data-story-fallback="1"] #s-ending .end-wrap{padding-top:calc(64px + var(--fallback-h))}
body[data-scene=title] .fallback-status,body[data-scene=hook] .fallback-status{visibility:hidden}
@media(max-width:899px){html[data-story-fallback="1"] #s-play .river{top:calc(120px + var(--fallback-h))}}
@media(min-width:900px){.fallback-status{top:64px;left:40px;right:40px}html[data-game-active="1"][data-story-fallback="1"] #s-play.on{padding-top:calc(64px + var(--fallback-h))}html[data-story-fallback="1"] #s-play .panel{height:calc(100dvh - 150px - var(--fallback-h))}html[data-story-fallback="1"] #s-play .river{height:calc(100dvh - 190px - var(--fallback-h))}html[data-story-fallback="1"] #s-wish{padding-top:calc(110px + var(--fallback-h))}html[data-story-fallback="1"] #s-ending .end-wrap{padding-top:calc(96px + var(--fallback-h))}}

html[data-story-fallback="1"]:not([data-game-active="1"]) .play-heading{padding-top:calc(80px + var(--fallback-h))}

/* Long native labels must never collapse into a vertical, overlapping header.
   Compact controls use the supplied V1 symbols and retain their native names. */
.bar-r>.pill>.icon,.bar-r>button>.icon,.bar-r>.volume-tools>summary>.icon{display:none}
.bar-r .codex-top{white-space:nowrap;overflow-wrap:normal;flex-shrink:0}
@media(max-width:600px){
 html:not([data-locale=zh-cn]):not([data-locale=zh-tw]) .bar .brand{font-size:16px;letter-spacing:.04em}
 html:not([data-locale=zh-cn]):not([data-locale=zh-tw]) .bar-r .passport-label{max-width:48px}
 html:not([data-locale=zh-cn]):not([data-locale=zh-tw]) .bar-r .codex-top{min-width:42px;width:42px;max-width:42px;padding:0;flex-shrink:0}
 html:not([data-locale=zh-cn]):not([data-locale=zh-tw]) .bar-r .codex-top>.icon{display:block;width:18px;height:18px}
 html:not([data-locale=zh-cn]):not([data-locale=zh-tw]) .bar-r .codex-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
}
@media(max-width:360px){
 html:not([data-locale=zh-cn]):not([data-locale=zh-tw]) .bar{padding-inline:12px}
 html:not([data-locale=zh-cn]):not([data-locale=zh-tw]) .bar .brand{font-size:15px}
 html:not([data-locale=zh-cn]):not([data-locale=zh-tw]) .bar-r>.pill,html:not([data-locale=zh-cn]):not([data-locale=zh-tw]) .bar-r>button,html:not([data-locale=zh-cn]):not([data-locale=zh-tw]) .bar-r>.volume-tools>summary{min-width:42px;width:42px;max-width:42px;padding:0;flex-shrink:0;gap:2px}
 html:not([data-locale=zh-cn]):not([data-locale=zh-tw]) .bar-r>.pill>.icon,html:not([data-locale=zh-cn]):not([data-locale=zh-tw]) .bar-r>button>.icon,html:not([data-locale=zh-cn]):not([data-locale=zh-tw]) .bar-r>.volume-tools>summary>.icon{display:block;width:18px;height:18px}
 html:not([data-locale=zh-cn]):not([data-locale=zh-tw]) .bar-r .passport-label,html:not([data-locale=zh-cn]):not([data-locale=zh-tw]) .bar-r>.pill .codex-label,html:not([data-locale=zh-cn]):not([data-locale=zh-tw]) .bar-r .tool-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
}

/* Audit corrections retain the supplied ui-v4 palette and component grammar. */
.cx-count,.pp-count{color:var(--c-mut);font:14px/1.5 var(--f-mono);margin:12px 0}.reference-collection .pp-head .kicker{text-align:center}.reference-collection .pp-codex{display:inline-flex;align-items:center;justify-content:center;width:auto;padding:10px 18px;border:1px solid var(--c-line);border-radius:var(--r-pill)}html[data-page=passport] main{padding-bottom:148px}.reference-collection .pp-grid small{font-size:10px;max-width:100%;overflow-wrap:anywhere}.reference-collection .cty small{display:block;font:11px var(--f-mono)}.tab-count{font:11px var(--f-mono);color:var(--c-mut);white-space:nowrap}.reference-collection .cx-world{padding:18px}.reference-collection .regions{margin:18px 0 0;padding:0;grid-template-columns:repeat(3,minmax(0,1fr))}.reference-collection .regions li{min-width:0}.reference-collection .regions b{margin-top:4px;font-size:17px}.reference-collection .regions small{font-size:11px}.reference-collection .tiers{line-height:1.6}.screen-shell:not(.game-active)>.mode{justify-content:center;margin-inline:auto}.bar .age{color:var(--c-choice);font:12px var(--f-mono);white-space:nowrap}.bar .primary-nav{display:flex;align-items:center;gap:14px}.primary-nav a{font-size:12px;text-decoration:none;min-height:48px;display:inline-flex;align-items:center;gap:4px}.primary-nav .icon{display:none}.site-menu{display:none}.site-menu nav{display:grid;grid-template-columns:1fr 1fr}.site-menu nav a{font-size:13px;gap:6px}.site-menu .menu-languages{border-top:1px solid var(--c-line);display:grid;grid-template-columns:1fr 1fr}.bar .locale-switch summary{font-size:11px;gap:4px}.bar .locale-switch summary .icon{width:16px;height:16px}
@media(max-width:1100px){.bar .primary-nav,.bar .locale-switch{display:none}.bar .site-menu{display:block}.bar .site-menu summary{min-width:42px;min-height:42px;padding:0}.bar-r>a.pill{display:none}.bar .site-menu>div{width:min(340px,calc(100vw - 32px));top:48px}.reference-collection .cx-head h1{font-size:32px}}

.comparison-table{min-width:760px}.comparison-table caption{text-align:left;padding-bottom:16px;color:var(--c-mut)}.comparison-table thead th{color:var(--c-choice)}

#s-ending .poster.square{aspect-ratio:1}#s-ending .fmt{display:flex;justify-content:center;gap:12px}#s-ending .fmt button{min-width:48px;min-height:48px;border:1px solid var(--c-line);background:var(--c-ink);color:var(--c-mut);border-radius:var(--r-pill)}#s-ending .fmt button[aria-pressed=true]{color:var(--c-choice);border-color:var(--c-choice)}.poster-challenge{display:inline-flex;align-items:center;min-height:48px;color:var(--c-choice);font-size:12px}

/* An independent language window is available at every viewport width. */
.language-window>p{font-size:14px;margin:4px 10px 10px;color:var(--c-text)}.language-window a[aria-current=true]{color:var(--c-choice);background:var(--c-choice-a)}
@media(max-width:1100px){.bar .locale-switch{display:block}.bar .locale-switch summary{min-width:42px;width:42px;min-height:42px;padding:0}.bar .locale-switch .locale-code{display:none}.bar .age{position:absolute;left:16px;top:35px;font-size:10px}.bar .language-window{top:48px;right:-48px;width:min(280px,calc(100vw - 32px))}}
@media(max-width:360px){.bar .brand{font-size:13px!important}.bar .age{left:12px}}

.collection-tabs [aria-selected=true] .tab-count{color:inherit}

.reference-collection .pp-head>p{margin-inline:auto;text-align:center}

.reference-collection .pp-head>.kicker{max-width:none;margin-inline:auto}

.reference-collection .cx-count,.reference-collection .pp-count{min-height:42px}.reference-collection .cx-world>p,.reference-collection .pp-prog{min-height:34px}.reference-collection .regions b{min-height:21px}

/* N5: the footer must remain visually above every fixed action dock. */
body:has(.dock)>footer{padding-bottom:calc(var(--dock-h,148px) + 24px)}
.pp-dock .cta{white-space:nowrap;width:auto;min-width:220px;padding-inline:28px;letter-spacing:.04em}
@media(max-width:600px){.pp-dock .cta{min-width:0;flex:1;padding-inline:20px;letter-spacing:normal;font-size:14px}}

.cause-summary{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;font:12px/1.5 var(--f-mono);color:var(--c-mut)}

/* Persistent, native-language status for the three sound/motion controls. */
.control-state{font-size:11px;line-height:1.3;white-space:nowrap;color:var(--c-mut)}
[data-state=on]>.control-state{color:var(--c-choice)}
button[data-soft][data-state=on]{background:var(--c-origin);color:var(--c-space);border-color:var(--c-origin)}
button[data-soft][data-state=on]>.control-state{color:inherit}
.volume-tools button[data-audio]{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;text-align:left;padding:10px 12px}
.volume-tools button[data-audio]>.control-state{margin-left:auto}
.control-switch{width:32px;height:18px;border:1px solid var(--c-mut);border-radius:20px;flex-shrink:0;padding:3px}
.control-switch i{display:block;width:10px;height:10px;border-radius:50%;background:var(--c-mut);transform:translateX(0)}
[aria-pressed=true]>.control-switch{border-color:var(--c-choice)}
[aria-pressed=true]>.control-switch i{background:var(--c-choice);transform:translateX(13px)}
[data-state=muted]>.control-switch{border-style:dashed}
.audio-soft-note{font-size:12px;line-height:1.6;padding:0 12px;color:var(--c-mut);max-width:29ch}
.bar-r>button[data-soft],.volume-tools>summary{gap:7px}
@media(max-width:1100px){.bar-r>.volume-tools>summary>.control-state,.bar-r>button[data-soft]>.control-state{display:none}.bar-r>button[data-soft],.volume-tools>summary{position:relative}.bar-r>button[data-soft]::after,.volume-tools>summary::after{content:"";position:absolute;right:4px;bottom:4px;width:6px;height:6px;border:1px solid var(--c-mut);border-radius:50%}.bar-r>button[data-soft][data-state=on]::after,.volume-tools>summary[data-state=on]::after{background:var(--c-choice);border-color:var(--c-choice)}.volume-tools>summary[data-state=muted]::after{border-style:dashed}}

/* Three presentation-only birth openings converge on the same fate cards. */
.birth-effect-label{position:absolute;top:62px;inset-inline:16px;text-align:center;font-size:11px;color:var(--c-choice);letter-spacing:.08em}
[data-birth-effect=stars] #s-birth .birth-camera{opacity:.75}
[data-birth-effect=stars].birth-zooming #s-birth .birth-camera canvas{opacity:.7}
[data-birth-effect=cards] #s-birth .birth-camera{opacity:.08}
[data-birth-effect=cards].birth-preparing #s-birth .fate-deck{opacity:1}
[data-birth-effect=cards] #s-birth .fate.dealt:not(.revealed){opacity:1;transform:translateX(calc((2 - var(--card-i))*46px)) rotateY(180deg) rotateZ(calc((var(--card-i) - 2)*-12deg))}
[data-birth-effect=cards] #s-birth .fate:nth-child(1){--card-i:1}
[data-birth-effect=cards] #s-birth .fate:nth-child(2){--card-i:2}
[data-birth-effect=cards] #s-birth .fate:nth-child(3){--card-i:3}
[data-birth-effect=cards].birth-shuffled #s-birth .fate.dealt:not(.revealed){transform:rotateY(180deg)}
.birth-moments{position:absolute;inset:128px max(20px,calc((100% - 700px)/2)) auto;height:min(42dvh,330px);z-index:2;overflow:hidden;border-radius:16px;pointer-events:none;transition:opacity 500ms}
.birth-moments img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 650ms}
.birth-moments img.on{opacity:1}
.birth-moments.leaving{opacity:0}
.birth-complete .birth-effect-label{opacity:.6}
@media(max-width:600px){.birth-moments{top:120px;height:38dvh}.birth-effect-label{top:62px}}

.reveal-letter{display:inline-block;white-space:pre;opacity:0;animation:letter-arrive 200ms ease-out forwards}.reveal-done .reveal-letter{opacity:1;animation:none}@keyframes letter-arrive{from{opacity:0;transform:translateY(.16em)}to{opacity:1;transform:none}}
.birth-viewport{position:absolute;top:114px;left:24px;z-index:3;font:12px/1.6 var(--f-mono);color:var(--c-mut);pointer-events:none}.birth-coordinates{font-size:11px}.birth-viewport.close-view{color:var(--c-choice)}.birth-complete .birth-viewport{display:none}.birth-flash{position:fixed;inset:0;pointer-events:none;z-index:15;background:#fff4da;opacity:0}.birth-flash.go{animation:birth-light 750ms ease-out forwards}@keyframes birth-light{0%,100%{opacity:0}15%{opacity:.3}}html[data-soft="1"] .birth-flash{display:none}.stamp-activate{display:block;margin:12px auto}.pp-grid .stamp{animation-delay:0ms}

.birth-view-label{font:11px/1.5 var(--f-body);color:var(--c-choice)}[data-birth-effect=moments] .birth-moments{top:176px;height:min(36dvh,300px)}[data-birth-effect=moments] .birth-viewport{top:108px}

.reveal-accessible{user-select:none}

/* The lobby canvas must never survive a same-document page transition. */
html:not([data-page="home"]) #globe{display:none!important}
