/* StageScope 视觉：ZLW 品牌（墨 #15171C / 金 #F5B82E / 深金 #C9881A）+ 存真量化首页同一套设计变量。
   配色三态：不写 data-theme = 跟随系统；data-theme="light"/"dark" = 用户显式选择（theme.js 早于首绘落属性）。
   字体自托管（大陆访问不到 Google Fonts）：Outfit / IBM Plex Mono 拉丁子集；中文走系统字体。 */
@font-face{font-family:"Outfit";font-style:normal;font-weight:400 700;font-display:swap;src:url("/assets/fonts/Outfit-var.6c18d579fd.woff2") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url("/assets/fonts/IBMPlexMono-400.08949f728d.woff2") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url("/assets/fonts/IBMPlexMono-500.01d2854474.woff2") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:600;font-display:swap;src:url("/assets/fonts/IBMPlexMono-600.0d1f0b8d07.woff2") format("woff2")}

:root{
  --gold:#F5B82E; --gold-deep:#C4901A; --gold-wash:#F5B82E14;
  --ground:#FBFAF7; --surface:#FFFFFF; --surface-2:#F4F1EB;
  --hair:#E4DFD3; --hair-strong:#D2CBBA;
  --text:#14161A; --text-2:#4E4A42; --muted:#807A6E;
  --gain:#2E7D5B; --loss:#B4412F; --warn:#8A6410; --warn-wash:#8A641014;
  --nav-on:#0C0D10; --nav-on-text:#FBFAF7;
  --shadow:0 1px 2px #0c0d1008, 0 8px 24px #0c0d100a;
  --logo-bg:#FFFFFF; --logo-stroke:#15171C; --logo-gold:#F5B82E; --logo-gold-shadow:#C9881A;
  --s0:#9A9488; --s1:#C4901A; --s2:#2E7D5B; --s3:#D0702A; --s4:#B4412F;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --gold:#F5C24E; --gold-deep:#F5B82E; --gold-wash:#F5B82E1A;
  --ground:#0C0D10; --surface:#15171C; --surface-2:#1C1F26;
  --hair:#292D35; --hair-strong:#3A3F49;
  --text:#EDEAE3; --text-2:#B4AEA3; --muted:#837D72;
  --gain:#4FB786; --loss:#E0675A; --warn:#D9A94A; --warn-wash:#D9A94A18;
  --nav-on:#F5B82E; --nav-on-text:#0C0D10;
  --shadow:0 1px 2px #00000040, 0 10px 30px #00000030;
  --logo-bg:#15171C; --logo-stroke:#FFFFFF;
  --s0:#6F6A60; --s1:#F5C24E; --s2:#4FB786; --s3:#E8914A; --s4:#E0675A;
  color-scheme:dark;
}}
:root[data-theme="dark"]{
  --gold:#F5C24E; --gold-deep:#F5B82E; --gold-wash:#F5B82E1A;
  --ground:#0C0D10; --surface:#15171C; --surface-2:#1C1F26;
  --hair:#292D35; --hair-strong:#3A3F49;
  --text:#EDEAE3; --text-2:#B4AEA3; --muted:#837D72;
  --gain:#4FB786; --loss:#E0675A; --warn:#D9A94A; --warn-wash:#D9A94A18;
  --nav-on:#F5B82E; --nav-on-text:#0C0D10;
  --shadow:0 1px 2px #00000040, 0 10px 30px #00000030;
  --logo-bg:#15171C; --logo-stroke:#FFFFFF;
  --s0:#6F6A60; --s1:#F5C24E; --s2:#4FB786; --s3:#E8914A; --s4:#E0675A;
  color-scheme:dark;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{background:var(--ground);color:var(--text);margin:0;
  font:400 15px/1.75 "Outfit","PingFang SC","Hiragino Sans GB","Noto Sans SC","Microsoft YaHei",system-ui,sans-serif;
  -webkit-font-smoothing:antialiased}
.mono,code{font-family:"IBM Plex Mono",ui-monospace,monospace;font-variant-numeric:tabular-nums}
h1,h2,h3{font-family:"Outfit","PingFang SC","Noto Sans SC","Microsoft YaHei",system-ui,sans-serif;letter-spacing:-.015em}
a{color:var(--gold-deep);text-decoration:none}a:hover{text-decoration:underline}
.shell{max-width:1080px;margin:0 auto;padding:0 22px 40px}

/* ── 顶栏 ── */
header.top{border-bottom:1px solid var(--hair)}
.bar{display:flex;align-items:center;gap:24px;padding:14px 22px;max-width:1080px;margin:0 auto;flex-wrap:wrap}
.mark{display:flex;align-items:center;gap:10px;color:inherit}
.mark:hover{text-decoration:none}
.mark svg{display:block;flex:none}
.wordmark{display:flex;flex-direction:column;gap:3px}
.wordmark b{font:700 16px/1 "Outfit","PingFang SC","Noto Sans SC","Microsoft YaHei",sans-serif;letter-spacing:.03em;color:var(--text)}
.wordmark em{font:500 9.5px/1 "Outfit",sans-serif;font-style:normal;letter-spacing:.2em;color:var(--muted);text-transform:uppercase}
.bar nav{display:flex;gap:2px;margin-left:auto;flex-wrap:wrap;align-items:center}
.bar nav a{font-size:13.5px;color:var(--text-2);text-decoration:none;padding:7px 12px;border-radius:6px}
.bar nav a:hover{background:var(--surface-2);color:var(--text)}
.bar nav a.on{background:var(--nav-on);color:var(--nav-on-text)}
.bar nav a.lang{font:500 12px/1 "IBM Plex Mono",monospace;color:var(--muted);border:1px solid var(--hair);margin-left:6px;padding:8px 10px}
.themetoggle{appearance:none;display:inline-grid;place-items:center;flex:none;width:30px;height:30px;margin-left:8px;padding:0;cursor:pointer;
  color:var(--muted);background:var(--ground);border:1px solid var(--hair);border-radius:999px}
.themetoggle:hover{color:var(--text)}
.themetoggle:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
.themetoggle svg{display:none}
.themetoggle[data-show="sun"] .i-sun{display:block}
.themetoggle[data-show="moon"] .i-moon{display:block}
.themetoggle:not([data-show]) .i-moon{display:block}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .themetoggle:not([data-show]) .i-moon{display:none}
  :root:not([data-theme="light"]) .themetoggle:not([data-show]) .i-sun{display:block}}
:root[data-theme="dark"] .themetoggle:not([data-show]) .i-moon{display:none}
:root[data-theme="dark"] .themetoggle:not([data-show]) .i-sun{display:block}
.asofbar{max-width:1080px;margin:0 auto;padding:0 22px 12px;font-size:12px;color:var(--muted)}
.asofbar b{color:var(--text-2);font-weight:600}

/* ── 首屏 ── */
.hero{padding:44px 0 4px}
.lede{font:600 11px/1 "IBM Plex Mono",monospace;letter-spacing:.14em;color:var(--gold-deep);text-transform:uppercase}
.hero h1{margin:16px 0 14px;font-size:40px;font-weight:600;line-height:1.2;text-wrap:balance}
.hero h1 em{font-style:normal;color:var(--gold-deep)}
.hero p.sub{margin:0 0 8px;font-size:16px;line-height:1.8;color:var(--text-2);max-width:46em}
.hero p.sub b{color:var(--text)}
@media (max-width:620px){.hero h1{font-size:29px}}
.caps{display:flex;margin:26px 0 0;border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);flex-wrap:wrap}
.cap{padding:18px 26px 18px 0;margin-right:26px;border-right:1px solid var(--hair);display:flex;flex-direction:column;gap:5px;min-width:0}
.cap:last-child{border-right:0;margin-right:0}
.cap b{font:600 30px/1 "IBM Plex Mono",monospace;font-variant-numeric:tabular-nums}
.cap span{font-size:12px;color:var(--muted);line-height:1.5}
.cap i{font-style:normal;font-size:10.5px;line-height:1.45;color:var(--muted);opacity:.8}
.cap.key b{color:var(--gold-deep)}
.cap.b0 b,.cap.b1 b,.cap.b2 b,.cap.b3 b,.cap.b4 b{color:var(--bc)}
.cap b .mut{font-weight:400;padding:0 2px}
main h2{font-size:21px;font-weight:600;margin:0 0 10px}
section+section,main>h2{margin-top:34px}
@media (max-width:620px){.cap{border-right:0;margin-right:0;width:50%;padding-right:12px}.cap b{font-size:24px}}

/* ── 通用段 ── */
main{padding:0}
section{padding:40px 0 0}
section>h2,h1.page{margin:0 0 6px;font-size:23px;font-weight:600}
h1.page{font-size:28px;margin-top:34px}
.sec-sub{margin:0 0 18px;font-size:13.5px;color:var(--muted)}
h3{font-size:15px;margin:14px 0 8px;font-weight:600}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:760px){.grid{grid-template-columns:1fr}}
.card{background:var(--surface);border:1px solid var(--hair);border-radius:10px;padding:16px 18px;min-width:0;box-shadow:var(--shadow)}
.card>h3:first-child,.card>h2:first-child{margin-top:0}
.blk-asof{font:400 11px/1.6 "IBM Plex Mono",monospace;color:var(--muted);margin-top:10px}
.stagebig{margin:6px 0 4px}
.stagebig .badge{font-size:15px;padding:4px 12px}
.mut{color:var(--muted)}.small{font-size:13px}.neg{color:var(--loss)}.pos{color:var(--gain)}
.banner{background:var(--warn-wash);border-left:3px solid var(--warn);border-radius:0 8px 8px 0;padding:12px 16px;margin:14px 0 0;
  font-size:13px;line-height:1.7;color:var(--text-2);font-weight:600}
.banner[hidden]{display:none}

/* 阶段徽章：色板内的柔和药丸 */
.badge{display:inline-block;padding:1px 9px;border-radius:999px;font:600 12px/1.6 "Outfit","PingFang SC","Noto Sans SC",sans-serif;white-space:nowrap;
  color:var(--bc);background:var(--surface-2);background:color-mix(in srgb,var(--bc) 13%,transparent);border:1px solid color-mix(in srgb,var(--bc) 38%,transparent)}
.b0{--bc:var(--s0)}.b1{--bc:var(--s1)}.b2{--bc:var(--s2)}.b3{--bc:var(--s3)}.b4{--bc:var(--s4)}
.fill.b0,.fill.b1,.fill.b2,.fill.b3,.fill.b4{background:var(--bc);border:0}
.tag{display:inline-block;padding:1px 8px;border-radius:6px;font:500 11px/1.6 "IBM Plex Mono",monospace;border:1px solid var(--hair-strong);color:var(--muted);vertical-align:middle}
.tag.gold{border-color:var(--gold);color:var(--gold-deep);background:var(--gold-wash)}

/* 宽度横条 */
.bars .row{display:grid;grid-template-columns:118px 1fr 58px;align-items:center;gap:10px;margin:6px 0 0;font-size:14px}
.bars .row b{font:600 14px/1 "IBM Plex Mono",monospace;text-align:right}
.bars .track{height:10px;background:var(--surface-2);border-radius:6px;overflow:hidden}
.bars .fill{height:100%;border-radius:6px}
.bars .prev{font:400 11px/1.4 "IBM Plex Mono",monospace;color:var(--muted);margin:2px 0 4px 128px}
@media (max-width:420px){.bars .row{grid-template-columns:96px 1fr 52px}.bars .prev{margin-left:106px}}

/* 表格 */
.tw{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;background:var(--surface);border:1px solid var(--hair);border-radius:10px}
table{border-collapse:collapse;width:100%;font-size:13px}
th,td{padding:8px 12px;border-bottom:1px solid var(--hair);text-align:right;white-space:nowrap}
tr:last-child td{border-bottom:0}
td{font-family:"IBM Plex Mono",ui-monospace,monospace;font-variant-numeric:tabular-nums}
td.l,th.l,th:first-child,td:first-child{text-align:left}
td.l b,td b{font-family:"Outfit",sans-serif}
th{font:600 11px/1.4 "IBM Plex Mono",monospace;letter-spacing:.06em;color:var(--muted);background:var(--surface-2);text-transform:uppercase}
th.sort{cursor:pointer}th.sort:after{content:" ↕";opacity:.45}
tbody tr:hover td{background:var(--gold-wash)}

/* 信号 */
.sig{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media (max-width:760px){.sig{grid-template-columns:1fr}}
.sig .card{border-top:3px solid var(--s2)}.sig .card.short{border-top-color:var(--s4)}
.sigitem{border-top:1px solid var(--hair);padding:10px 0}.sigitem:first-of-type{border-top:0}
.sigitem .sym{font:600 17px/1.2 "Outfit",sans-serif}
.sigitem .rule{font-size:12.5px;color:var(--muted);margin-top:2px}
.sigitem .nums{font:400 12.5px/1.7 "IBM Plex Mono",monospace;color:var(--text-2)}
.sigitem .sid{font:400 10.5px/1.6 "IBM Plex Mono",monospace;color:var(--muted)}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}
.tabs button{font:500 13px/1 "Outfit","PingFang SC","Noto Sans SC",sans-serif;padding:9px 14px;border:1px solid var(--hair);background:var(--surface);color:var(--text-2);border-radius:8px;cursor:pointer}
.tabs button.on{background:var(--nav-on);color:var(--nav-on-text);border-color:var(--nav-on)}
.pane[hidden]{display:none}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}@media (max-width:520px){.stats{grid-template-columns:repeat(2,1fr)}}
.stats div{background:var(--surface-2);border:1px solid var(--hair);border-radius:8px;padding:8px 10px}
.stats b{display:block;font:600 17px/1.3 "IBM Plex Mono",monospace}.stats span{font-size:11.5px;color:var(--muted)}
svg{max-width:100%;height:auto;display:block}svg text{fill:var(--muted);font:400 11px "IBM Plex Mono",monospace}
.filters{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:10px 0}
.filters label{font-size:13px;display:flex;align-items:center;gap:5px;border:1px solid var(--hair);border-radius:8px;padding:4px 9px;background:var(--surface);cursor:pointer}
.filters input{accent-color:var(--gold-deep)}
ul.plain{padding-left:18px;margin:6px 0}ul.plain li{margin:5px 0;color:var(--text-2)}
.prose{max-width:46em}
.anchor-hit{outline:2px solid var(--gold);outline-offset:4px;border-radius:6px}

footer{margin-top:52px;border-top:1px solid var(--hair)}
footer .shell{padding-top:18px;padding-bottom:48px;font-size:12px;line-height:1.85;color:var(--muted)}
footer b{color:var(--text-2)}
footer p{margin:0 0 8px}
@media (prefers-reduced-motion:no-preference){.bar nav a,.tabs button,.themetoggle{transition:background-color .15s,color .15s}}
