/* 中枢体检 —— 沿用总览页的设计变量,不另起一套配色。
   ★ 颜色只当辅助:每个状态都同时有**文字**,不靠色觉分辨(实测对比度不足以承担一级状态)。

   v0.0.0.2:这里原本自带一套**深色优先、和总览页完全不同**的配色 —— 名义上"沿用",
   实际是站内第二套设计系统。整合时并入与 index.html / agent-governance.css 同一套令牌,
   由 tests/status-control-plane/unit/test_design_tokens_shared.py 逐值比对,防止再次分叉。
   浅色为默认、深色跟随系统,并支持 [data-theme] 手动覆盖(hub.html 里那段内联脚本会读
   localStorage 的 theme,和另外两个页面共用同一个键)。 */
:root{
  --bg:#f4f7fb; --card:#ffffff; --soft:#f8fafc; --surface-3:#eef3f9;
  --line:#d9e2ed; --line2:#c6d3e2;
  --t1:#172033; --t2:#46546a; --t3:#667386;
  --accent:#245fe5; --accent-bg:#eaf1ff; --accent-t:#10284a;
  --navy:#10284a; --navy-2:#1d4378;
  --pro:#6f42c1; --pro-bg:#f1ebff; --pro-t:#3f2478;
  --ok:#087c5a; --ok-bg:#e7f6f0; --warn:#8f5708; --warn-bg:#fff4dc;
  --danger:#c5324b; --danger-bg:#ffedf0;
  --slate:#596579; --slate-bg:#edf1f5;
  --shadow:0 1px 2px rgba(22,35,60,.05),0 8px 28px rgba(22,35,60,.08);
  --shadow-lift:0 2px 6px rgba(22,35,60,.08),0 14px 36px rgba(22,35,60,.12);
  --focus:0 0 0 3px rgba(36,95,229,.24);
  --r:16px; --r-sm:10px; --ease:cubic-bezier(.22,.61,.36,1);
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#0c1220; --card:#131c2c; --soft:#192438; --surface-3:#223049;
    --line:#2d3d57; --line2:#3a4d6d;
    --t1:#f1f5fb; --t2:#c2ccda; --t3:#9dacbf;
    --accent:#75a4ff; --accent-bg:#172b50; --accent-t:#cfe0ff;
    --navy:#0c1e39; --navy-2:#183c6b;
    --pro:#b99cff; --pro-bg:#2b2350; --pro-t:#e2d8ff;
    --ok:#62d4ab; --ok-bg:#10352c; --warn:#f2be67; --warn-bg:#3a2c15;
    --danger:#ff8195; --danger-bg:#43202a;
    --slate:#b9c5d5; --slate-bg:#263349;
    --shadow:0 1px 2px rgba(0,0,0,.32),0 8px 28px rgba(0,0,0,.34);
    --shadow-lift:0 2px 6px rgba(0,0,0,.38),0 16px 40px rgba(0,0,0,.44);
    --focus:0 0 0 3px rgba(117,164,255,.32);
  }
}
:root[data-theme="light"]{
  --bg:#f4f7fb; --card:#ffffff; --soft:#f8fafc; --surface-3:#eef3f9;
  --line:#d9e2ed; --line2:#c6d3e2;
  --t1:#172033; --t2:#46546a; --t3:#667386;
  --accent:#245fe5; --accent-bg:#eaf1ff; --accent-t:#10284a;
  --navy:#10284a; --navy-2:#1d4378;
  --pro:#6f42c1; --pro-bg:#f1ebff; --pro-t:#3f2478;
  --ok:#087c5a; --ok-bg:#e7f6f0; --warn:#8f5708; --warn-bg:#fff4dc;
  --danger:#c5324b; --danger-bg:#ffedf0;
  --slate:#596579; --slate-bg:#edf1f5;
  --shadow:0 1px 2px rgba(22,35,60,.05),0 8px 28px rgba(22,35,60,.08);
  --shadow-lift:0 2px 6px rgba(22,35,60,.08),0 14px 36px rgba(22,35,60,.12);
  --focus:0 0 0 3px rgba(36,95,229,.24);
}
:root[data-theme="dark"]{
  --bg:#0c1220; --card:#131c2c; --soft:#192438; --surface-3:#223049;
  --line:#2d3d57; --line2:#3a4d6d;
  --t1:#f1f5fb; --t2:#c2ccda; --t3:#9dacbf;
  --accent:#75a4ff; --accent-bg:#172b50; --accent-t:#cfe0ff;
  --navy:#0c1e39; --navy-2:#183c6b;
  --pro:#b99cff; --pro-bg:#2b2350; --pro-t:#e2d8ff;
  --ok:#62d4ab; --ok-bg:#10352c; --warn:#f2be67; --warn-bg:#3a2c15;
  --danger:#ff8195; --danger-bg:#43202a;
  --slate:#b9c5d5; --slate-bg:#263349;
  --shadow:0 1px 2px rgba(0,0,0,.32),0 8px 28px rgba(0,0,0,.34);
  --shadow-lift:0 2px 6px rgba(0,0,0,.38),0 16px 40px rgba(0,0,0,.44);
  --focus:0 0 0 3px rgba(117,164,255,.32);
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--t1);
     font:15px/1.6 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}
.bar{display:flex;align-items:center;gap:14px;padding:14px 20px;
     border-bottom:1px solid var(--line);background:var(--card);flex-wrap:wrap}
.bar h1{font-size:16px;margin:0;font-weight:600}
.back{color:var(--t2);text-decoration:none;font-size:13.5px}
.back:hover{color:var(--t1)}
.at{margin-left:auto;color:var(--t3);font-size:12.5px}
.wrap{max-width:1040px;margin:0 auto;padding:22px 20px 60px}
.lede{color:var(--t2);font-size:14px;margin:0 0 26px}
.lede b{color:var(--t1)}
section{margin:0 0 34px}
h2{font-size:15.5px;margin:0 0 10px;display:flex;align-items:center;gap:9px}
h2 .n{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;
      border-radius:6px;background:var(--line);color:var(--t2);font-size:12.5px;font-weight:600}
.hint{color:var(--t3);font-size:12.5px;margin:0 0 12px}
.hint b{color:var(--t2)}
code{background:var(--line);padding:1px 5px;border-radius:4px;font-size:12px}

.cards{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(168px,1fr))}
.c{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px}
.c .k{color:var(--t3);font-size:12px;margin-bottom:6px}
.c .v{font-size:24px;font-weight:650;letter-spacing:-.02em}
.c .s{color:var(--t2);font-size:12px;margin-top:5px}
.c.attn{border-color:var(--warn)}
.c.attn .v{color:var(--warn)}

.checks{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.checks li{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:13px 14px}
.checks .top{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap}
/* 状态用「字形 + 文字」双重编码,不依赖颜色 */
.tag{font-size:11.5px;font-weight:650;padding:2px 8px;border-radius:999px;white-space:nowrap}
.tag.pass{color:var(--ok);background:var(--ok-bg)}
.tag.fail{color:var(--danger);background:var(--danger-bg)}
.tag.unk{color:var(--t2);background:var(--line)}
.checks .ttl{font-size:14px;font-weight:550}
.checks .why{color:var(--t3);font-size:12.5px;margin-top:6px}
.checks .why b{color:var(--t2);font-weight:550}

.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:10px;background:var(--card)}
table{border-collapse:collapse;width:100%;min-width:460px;font-size:13.5px}
th,td{text-align:left;padding:10px 13px;border-bottom:1px solid var(--line)}
th{color:var(--t3);font-size:12px;font-weight:600}
tbody tr:last-child td{border-bottom:none}
td.num{font-variant-numeric:tabular-nums}
.foot{color:var(--t3);font-size:12px;margin-top:30px;border-top:1px solid var(--line);padding-top:14px}
.err{background:var(--danger-bg);border:1px solid var(--danger);border-radius:10px;padding:14px;color:var(--t1)}
@media (prefers-reduced-motion:no-preference){.c,.checks li{transition:border-color .15s ease}}
