:root{
  --bg:#f6f7f9; --panel:#ffffff; --panel2:#fbfcfd; --line:#e3e7ec; --line2:#eef1f5;
  --tx:#1b2027; --tx2:#5a6472; --tx3:#8b95a3;
  --acc:#2563eb; --acc-bg:rgba(37,99,235,.09);
  --ok:#16a34a; --warn:#c2410c; --warn-bg:rgba(194,65,12,.10);
  --priv:#a21caf; --priv-bg:rgba(162,28,175,.10);
  --shadow:0 1px 2px rgba(16,24,40,.05), 0 8px 24px rgba(16,24,40,.06);
  --radius:12px;
}
html[data-theme="dark"]{
  --bg:#0d1117; --panel:#151b23; --panel2:#1a222c; --line:#263140; --line2:#1e2733;
  --tx:#e6edf3; --tx2:#9aa7b6; --tx3:#6b7889;
  --acc:#58a6ff; --acc-bg:rgba(88,166,255,.14);
  --ok:#3fb950; --warn:#ff8b5e; --warn-bg:rgba(255,139,94,.14);
  --priv:#d2a8ff; --priv-bg:rgba(210,168,255,.14);
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 8px 24px rgba(0,0,0,.35);
}
*{box-sizing:border-box}
body{
  margin:0; background:var(--bg); color:var(--tx);
  font:14px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  -webkit-font-smoothing:antialiased;
}
.wrap{max-width:1560px;margin:0 auto;padding:24px 20px 80px}

/* header */
header{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:20px}
h1{font-size:22px;margin:0 0 6px;letter-spacing:-.01em}
.sub{color:var(--tx2);font-size:13px}
.sub a{color:var(--acc);text-decoration:none}
.sub a:hover{text-decoration:underline}
.spacer{flex:1}
#themeBtn{
  background:var(--panel);border:1px solid var(--line);color:var(--tx);
  border-radius:8px;padding:7px 12px;cursor:pointer;font-size:13px;font-family:inherit;
}
#themeBtn:hover{border-color:var(--acc);color:var(--acc)}

/* stats strip */
.strip{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 14px;min-width:104px}
.stat b{display:block;font-size:19px;line-height:1.2}
.stat span{color:var(--tx3);font-size:12px}

/* tabs */
.tabs{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap}
.tab{
  background:var(--panel);border:1px solid var(--line);color:var(--tx2);
  border-radius:10px;padding:9px 16px;cursor:pointer;font-size:14px;font-family:inherit;
}
.tab:hover{border-color:var(--acc);color:var(--acc)}
.tab.on{background:var(--acc);border-color:var(--acc);color:#fff;font-weight:600}
.panel{display:none}
.panel.on{display:block}

/* search + sortbar */
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.search{
  background:var(--panel);border:1px solid var(--line);color:var(--tx);
  border-radius:8px;padding:8px 12px;font-size:13px;width:230px;font-family:inherit;
}
.search:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px var(--acc-bg)}
.hint{color:var(--tx3);font-size:12px}

.sortbar{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.sortbar-label{color:var(--tx3);font-size:12px;margin-right:2px}
.chip{
  background:var(--panel);border:1px solid var(--line);color:var(--tx2);
  border-radius:20px;padding:6px 13px;cursor:pointer;font-size:12.5px;font-family:inherit;white-space:nowrap;
}
.chip:hover{border-color:var(--acc);color:var(--acc)}
.chip.on{background:var(--acc-bg);border-color:var(--acc);color:var(--acc);font-weight:600}
.chip .arrow{margin-left:4px;font-weight:700}

/* table */
.tablewrap{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  overflow:auto;box-shadow:var(--shadow);max-height:none;
}
table.mt{border-collapse:separate;border-spacing:0;width:100%;font-size:13px}
table.mt th{
  position:sticky;top:0;z-index:3;background:var(--panel2);
  border-bottom:1px solid var(--line);padding:10px 10px;text-align:left;
  font-size:12px;color:var(--tx2);font-weight:600;white-space:nowrap;
}
table.mt th.bh{cursor:help;border-bottom:1px dashed var(--line)}
table.mt td{padding:9px 10px;border-bottom:1px solid var(--line2);vertical-align:top}
table.mt tbody tr.row{cursor:pointer}
table.mt tbody tr.row:hover{background:var(--acc-bg)}
table.mt tbody tr.row.opened{background:var(--acc-bg)}
table.mt tbody tr.row.dep{opacity:.55}
table.mt tbody tr.row.top0 .mname{font-weight:700}
.rk{width:38px;color:var(--tx3);font-variant-numeric:tabular-nums;text-align:right}
.nm{min-width:230px}
.vd{min-width:120px;color:var(--tx2);font-size:12.5px}
.mname{font-weight:600;color:var(--tx)}
.mid{color:var(--tx3);font-size:11px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;margin-top:1px}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}
.dim{color:var(--tx3)}
.conf{color:var(--warn);font-weight:700;margin-left:2px;cursor:help}
.dt{width:66px;text-align:center}
.exp{
  background:transparent;border:1px solid var(--line);color:var(--tx2);
  border-radius:6px;padding:3px 9px;cursor:pointer;font-size:11.5px;font-family:inherit;
}
.exp:hover{border-color:var(--acc);color:var(--acc)}
.free-tag{color:var(--ok);font-weight:700;font-size:11.5px}
.tag{display:inline-block;font-size:10.5px;padding:1px 6px;border-radius:5px;margin-left:4px;vertical-align:middle;font-weight:600}
.tag.warn{background:var(--warn-bg);color:var(--warn)}
.tag.ok{background:rgba(22,163,74,.13);color:var(--ok)}
.tag.priv{background:var(--priv-bg);color:var(--priv)}

/* 模态标记 */
.mod{white-space:nowrap}
.mo{display:inline-block;width:20px;height:20px;line-height:20px;text-align:center;border-radius:5px;font-size:11px;margin-right:3px}
.mo.y{background:rgba(22,163,74,.16);color:var(--ok);font-weight:700}
.mo.n{background:var(--line2);color:var(--tx3)}

/* 详情（严格 CSP 下禁用内联 style，用类控制显隐） */
tr.detail{display:none}
tr.detail.on{display:table-row}
tr.detail>td{background:var(--panel2);padding:0;border-bottom:1px solid var(--line)}
.dgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(288px,1fr));gap:1px;background:var(--line2)}
.dcell{background:var(--panel);padding:12px 14px}
.dcell.wide{grid-column:1/-1}
.dl{font-size:11px;color:var(--tx3);font-weight:700;letter-spacing:.06em;margin-bottom:5px;text-transform:uppercase}
.dv{font-size:13px;line-height:1.65;color:var(--tx)}
.dv.pro{color:var(--ok)}
.dv.con{color:var(--warn)}
.dv.role{font-weight:600}
.dv.note{color:var(--tx2);font-size:12.5px}
.dv.spec{color:var(--tx2);font-size:12.5px}
.dv.spec b{color:var(--tx)}
.priv-note{color:var(--priv);font-weight:600}

.countline{color:var(--tx3);font-size:12.5px;margin-top:10px;padding-left:2px}

/* 评分格热度底色（替代原内联 style，5 档离散透明绿，CSP 安全） */
.hx0{background:rgba(34,197,138,.06)}
.hx1{background:rgba(34,197,138,.135)}
.hx2{background:rgba(34,197,138,.21)}
.hx3{background:rgba(34,197,138,.285)}
.hx4{background:rgba(34,197,138,.36)}

/* 间距辅助类（替代原内联 style；需压过 .legend h3 的 margin:0） */
.legend h3.h3mt{margin-top:16px}
.countline b{color:var(--tx2)}

/* 图例 */
.legend{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:14px 16px;margin-top:22px;font-size:12.5px;color:var(--tx2);
}
.legend h3{font-size:13px;margin:0 0 8px;color:var(--tx)}
.legend dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:5px 12px}
.legend dt{font-weight:700;color:var(--tx);white-space:nowrap}
.legend dd{margin:0}
.legend ul{margin:6px 0 0;padding-left:18px}
.legend li{margin-bottom:3px}
.legend .warnbox{
  margin-top:12px;padding:10px 12px;border-radius:8px;
  background:var(--warn-bg);color:var(--warn);font-size:12.5px;line-height:1.6;
}
/* 页脚（公开声明） */
.footer{
  margin-top:22px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius);
  background:var(--panel);font-size:12px;color:var(--tx3);line-height:1.7;
}
.footer a{color:var(--acc);text-decoration:none}
.footer a:hover{text-decoration:underline}

@media (max-width:720px){
  .wrap{padding:16px 12px 60px}
  .nm{min-width:170px}
  .search{width:100%}
}
