:root{
  --bg:#070d16; --bg2:#0b1524; --card:#101d31; --card2:#152740; --line:#1f3350;
  --teal:#2dd4bf; --cyan:#38bdf8; --gold:#d4af37; --gold2:#f0d78c;
  --rose:#f43f5e; --amber:#f59e0b; --violet:#a78bfa; --green:#22c55e;
  --text:#e9f0fa; --mute:#93a3b8; --dim:#64748b;
  --mono:"JetBrains Mono","SF Mono",Consolas,Menlo,monospace;
  --sans:-apple-system,"PingFang SC","Microsoft YaHei","Segoe UI",sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:var(--sans);line-height:1.65;
  -webkit-font-smoothing:antialiased;min-height:100vh}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}

/* ── 导航 ── */
.nav{position:sticky;top:0;z-index:50;background:rgba(7,13,22,.88);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line)}
.nav-in{max-width:1400px;margin:0 auto;padding:0 24px;height:60px;display:flex;align-items:center;gap:28px}
.logo{display:flex;align-items:center;gap:10px;font-weight:700;font-size:16px;white-space:nowrap}
.logo img,.logo-img{height:32px;width:auto;display:block}
.logo-mark{height:32px;width:auto;display:block}
.brand-logo{display:block;height:52px;width:auto;margin:0 auto 14px}
.nav-links{display:flex;gap:4px;flex:1}
.nav-links a{padding:7px 13px;border-radius:7px;font-size:14px;color:var(--mute);transition:.15s}
.nav-links a:hover{color:var(--text);background:var(--card)}
.nav-links a.on{color:var(--teal);background:rgba(45,212,191,.1)}
.nav-status{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--dim);font-family:var(--mono)}
.dot{width:7px;height:7px;border-radius:50%;background:var(--dim)}
.dot.ok{background:var(--green);box-shadow:0 0 8px rgba(34,197,94,.6)}
.dot.bad{background:var(--rose)}

/* ── 导航右侧的账号区 ── */
.who{display:flex;align-items:center;gap:9px}
.who a{display:flex;align-items:center;gap:7px;padding:4px 9px 4px 4px;border-radius:20px;
  background:var(--card);border:1px solid var(--line);transition:.15s}
.who a:hover{border-color:var(--teal)}
.ava{width:24px;height:24px;border-radius:50%;background:var(--teal);color:var(--bg);
  display:grid;place-items:center;font-size:12px;font-weight:700;flex:0 0 auto}
.who .nm{font-size:13px;font-weight:600;max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lo{background:transparent;border:1px solid var(--line);border-radius:7px;padding:5px 10px;
  font-size:12px;color:var(--mute);cursor:pointer;transition:.15s}
.lo:hover{border-color:var(--rose);color:var(--rose)}
@media(max-width:1000px){.who .nm,.who .tag{display:none}}

.wrap{max-width:1400px;margin:0 auto;padding:28px 24px 80px}
.narrow{max-width:1000px}

/* ── 通用块 ── */
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px}
.card.tight{padding:15px}
.card.alt{background:var(--card2)}
h1{font-size:30px;font-weight:700;letter-spacing:-.4px;margin-bottom:8px}
h2{font-size:20px;font-weight:700;margin-bottom:14px}
h3{font-size:15px;font-weight:700;margin-bottom:9px}
.sub{color:var(--mute);font-size:14px}
.kicker{font-size:11px;letter-spacing:2px;color:var(--teal);font-weight:700;margin-bottom:7px}
.mono{font-family:var(--mono)}
.muted{color:var(--mute)}.dim{color:var(--dim)}
.grid{display:grid;gap:14px}
.g2{grid-template-columns:repeat(2,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
@media(max-width:1000px){.g2,.g3,.g4{grid-template-columns:1fr}.nav-links{display:none}}

.btn{background:var(--teal);color:#04121a;border:0;border-radius:9px;padding:11px 20px;
  font-weight:700;font-size:14px;cursor:pointer;transition:.15s}
.btn:hover:not(:disabled){filter:brightness(1.1)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.ghost{background:transparent;color:var(--text);border:1px solid var(--line)}
.btn.ghost:hover:not(:disabled){border-color:var(--teal);color:var(--teal)}
.btn.sm{padding:7px 13px;font-size:13px}

textarea,select,
input[type=text],input[type=password],input[type=email],input[type=number],input:not([type]){
  width:100%;background:var(--bg2);border:1px solid var(--line);color:var(--text);
  border-radius:9px;padding:11px 13px;font-size:14px;outline:none;transition:.15s}
textarea:focus,input:focus,select:focus{border-color:var(--teal)}
input:disabled,textarea:disabled{opacity:.5;cursor:not-allowed}
/* 覆盖浏览器自动填充的白底 */
input:-webkit-autofill,input:-webkit-autofill:focus{
  -webkit-text-fill-color:var(--text);
  -webkit-box-shadow:0 0 0 1000px var(--bg2) inset;
  caret-color:var(--text)}
textarea{resize:vertical;min-height:190px;line-height:1.7}
label{display:block;font-size:12px;color:var(--mute);margin-bottom:6px;font-weight:600}

.tag{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:20px;
  font-size:11px;font-weight:600;background:var(--card2);color:var(--mute);white-space:nowrap}
.tag.teal{background:rgba(45,212,191,.14);color:var(--teal)}
.tag.gold{background:rgba(212,175,55,.14);color:var(--gold2)}
.tag.rose{background:rgba(244,63,94,.14);color:var(--rose)}
.tag.amber{background:rgba(245,158,11,.14);color:var(--amber)}
.tag.green{background:rgba(34,197,94,.14);color:var(--green)}
.tag.violet{background:rgba(167,139,250,.14);color:var(--violet)}

/* ── 统计数字 ── */
.stat{text-align:center;padding:16px 10px}
.stat .n{font-size:30px;font-weight:700;font-family:var(--mono);color:var(--teal);line-height:1.15}
.stat .l{font-size:11.5px;color:var(--mute);margin-top:5px}

/* ── 阶段流水线 ── */
.stages{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}
.stg{flex:1;min-width:130px;background:var(--bg2);border:1px solid var(--line);border-radius:9px;
  padding:9px 11px;transition:.25s;opacity:.42}
.stg.act{opacity:1;border-color:var(--teal);background:rgba(45,212,191,.07)}
.stg.done{opacity:1;border-color:var(--line)}
.stg .c{font-family:var(--mono);font-size:10px;color:var(--teal);font-weight:700}
.stg .t{font-size:12.5px;margin-top:2px;font-weight:600}
.stg .ms{font-size:10px;color:var(--dim);font-family:var(--mono)}

/* ── 概率条 ── */
.hyp{margin-bottom:11px}
.hyp-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:5px}
.hyp-label{font-size:13.5px;font-weight:600}
.hyp-pct{font-family:var(--mono);font-size:13px;font-weight:700}
.bar{height:7px;background:var(--bg2);border-radius:4px;overflow:hidden}
.bar i{display:block;height:100%;border-radius:4px;transition:width .5s ease}

/* ── 表格 ── */
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{padding:9px 11px;text-align:left;border-bottom:1px solid var(--line)}
th{color:var(--teal);font-weight:700;font-size:12px;background:var(--card2)}
tr:last-child td{border-bottom:0}
td.num,th.num{text-align:right;font-family:var(--mono)}

/* ── 校准盒 ── */
.calib{background:linear-gradient(135deg,rgba(212,175,55,.09),rgba(212,175,55,.03));
  border:1px solid rgba(212,175,55,.32);border-radius:12px;padding:16px}
.calib h3{color:var(--gold2)}
.ba{display:grid;grid-template-columns:1fr auto 1fr;gap:14px;align-items:center;margin:12px 0}
.ba .side{background:var(--bg2);border-radius:9px;padding:13px}
.ba .side .h{font-size:11.5px;color:var(--mute);margin-bottom:7px;font-weight:700}
.ba .side .v{font-family:var(--mono);font-size:19px;font-weight:700}
.ba .arw{font-size:22px;color:var(--gold)}
@media(max-width:700px){.ba{grid-template-columns:1fr}.ba .arw{transform:rotate(90deg)}}

.warn{background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.3);
  border-radius:9px;padding:11px 13px;font-size:12.5px;color:var(--amber)}
.err{background:rgba(244,63,94,.08);border:1px solid rgba(244,63,94,.32);
  border-radius:9px;padding:12px 14px;font-size:13px;color:var(--rose)}
.note{background:var(--card2);border-radius:9px;padding:12px 14px;font-size:12.5px;color:var(--mute)}

pre{background:var(--bg2);border:1px solid var(--line);border-radius:9px;padding:13px;
  overflow-x:auto;font-family:var(--mono);font-size:12px;line-height:1.65;color:#cfe0f2}
code{font-family:var(--mono);font-size:12.5px;background:var(--bg2);padding:1px 5px;border-radius:4px}

.spin{display:inline-block;width:13px;height:13px;border:2px solid rgba(45,212,191,.28);
  border-top-color:var(--teal);border-radius:50%;animation:sp .8s linear infinite;vertical-align:-2px}
@keyframes sp{to{transform:rotate(360deg)}}
.fade{animation:fi .35s ease both}
@keyframes fi{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}

details{border:1px solid var(--line);border-radius:9px;padding:11px 13px;background:var(--bg2)}
details+details{margin-top:8px}
summary{cursor:pointer;font-size:13.5px;font-weight:600;list-style:none}
summary::-webkit-details-marker{display:none}
summary::before{content:"▸ ";color:var(--teal)}
details[open] summary::before{content:"▾ "}

.foot{border-top:1px solid var(--line);margin-top:56px;padding:22px 24px;text-align:center;
  color:var(--dim);font-size:12px}
