:root{
  --fg:#1a1f29; --muted:#667085; --accent:#2563eb; --line:#d8dce3;
  --card:#ffffff; --bg:#f5f7fb; --ok:#15803d; --warn:#b45309; --err:#b91c1c;
}
*{box-sizing:border-box}
body{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Helvetica Neue",sans-serif;
  color:var(--fg); margin:0; background:var(--bg); line-height:1.65;}
a{color:var(--accent); text-decoration:none}
a:hover{text-decoration:underline}
header.site{background:#101828; color:#e6ebf5; padding:14px 20px;}
header.site .brand{font-weight:700; letter-spacing:.04em}
header.site .brand span{color:#7dd3fc}
nav.tabs{display:flex; flex-wrap:wrap; gap:4px; margin-top:8px}
nav.tabs a{color:#cbd5e1; font-size:13.5px; padding:5px 12px; border-radius:99px; border:1px solid transparent}
nav.tabs a:hover{background:#1e293b; text-decoration:none}
nav.tabs a.cur{background:#1d4ed8; color:#fff}
main{max-width:1040px; margin:0 auto; padding:24px 18px 60px}
h1{font-size:24px; margin:8px 0 6px}
h2{font-size:17px; margin:26px 0 8px; padding-bottom:6px; border-bottom:1px solid var(--line)}
.sub{color:var(--muted); font-size:14px; margin:0 0 18px}
.card{background:var(--card); border:1px solid var(--line); border-radius:12px; padding:18px 20px; margin:14px 0}
.honest{border-left:4px solid var(--warn); background:#fffbeb; padding:12px 16px; border-radius:0 8px 8px 0; font-size:13.5px; margin:14px 0}
.simtag{display:inline-block; font-size:11px; font-weight:700; padding:2px 9px; border-radius:99px;
  background:#e0edff; color:#1d4ed8; vertical-align:middle}
table{border-collapse:collapse; width:100%; font-size:13px; margin-top:8px}
th,td{border:1px solid var(--line); padding:7px 10px; text-align:left}
th{background:#f1f5f9; font-weight:600}
td.num{font-variant-numeric:tabular-nums; font-family:ui-monospace,Menlo,monospace}
button.cta{font-size:16px; font-weight:700; color:#fff; background:var(--accent); border:0;
  border-radius:10px; padding:12px 26px; cursor:pointer}
button.cta:disabled{background:#9db4e8; cursor:not-allowed}
button.ghost{font-size:13px; border:1px solid var(--line); background:#fff; border-radius:8px; padding:7px 14px; cursor:pointer}
button.danger{border-color:#fecaca; color:var(--err)}
canvas{background:#0b1220; border-radius:10px; display:block; max-width:100%}
.muted{color:var(--muted); font-size:12.5px}
.mono{font-family:ui-monospace,Menlo,monospace; font-size:12px; word-break:break-all}
.pill{display:inline-block; font-size:11px; padding:1px 8px; border-radius:99px; font-weight:700}
.pill.official{background:#dcfce7; color:var(--ok)}
.pill.ok{background:#dcfce7; color:var(--ok)}
.pill.bad{background:#fee2e2; color:var(--err)}
.pill.fail{background:#fee2e2; color:var(--err)}
.grid2{display:grid; grid-template-columns:1fr 1fr; gap:14px}
progress{width:100%; height:14px}
.log{background:#0b1220; color:#a7f3d0; font-family:ui-monospace,Menlo,monospace; font-size:12px;
  padding:12px; border-radius:8px; white-space:pre-wrap; max-height:300px; overflow:auto}
footer{border-top:1px solid var(--line); margin-top:30px; padding-top:14px; font-size:12px; color:var(--muted)}
@media (max-width:560px){
  main{padding:16px 12px 48px}
  .grid2{grid-template-columns:1fr}
  nav.tabs a{font-size:12.5px; padding:5px 9px}
  table{font-size:12px} th,td{padding:6px 7px}
}

/* 工具类（替代内联 style，满足 CSP style-src 'self'） */
.h2-flat{margin-top:0}
.cta-inline{display:inline-block}
.mt10{margin-top:10px}
.row-flex{margin:12px 0; display:flex; gap:10px; flex-wrap:wrap; align-items:center}
.row-flex-tight{margin:10px 0; display:flex; gap:10px; align-items:center; flex-wrap:wrap}
.slider-flex{flex:1; min-width:200px}
.metrics-pre{max-height:260px; overflow:auto}
.mono-sm{font-size:12.5px}
.card-kvs{margin:8px 0}
