:root{
  --bg:#0f1420; --panel:#171d2b; --panel2:#1e2536; --line:#2a3345;
  --fg:#e8ecf4; --dim:#95a0b5; --ok:#3ddc97; --bad:#ff6b6b; --acc:#4c9aff;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);
  font:15px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}
.top{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:14px 18px;background:var(--panel);border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:5;flex-wrap:wrap}
.brand{font-size:18px;font-weight:700;letter-spacing:.5px}
.ctrl{display:flex;gap:8px;align-items:center}
select,button{background:var(--panel2);color:var(--fg);border:1px solid var(--line);
  border-radius:8px;padding:7px 12px;font-size:14px;cursor:pointer}
button:hover{border-color:var(--acc)}
button.ghost{color:var(--dim)}
section{padding:14px 18px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px}
.card .k{color:var(--dim);font-size:13px}
.card .v{font-size:24px;font-weight:700;margin-top:4px}
.card .s{color:var(--dim);font-size:12px;margin-top:2px}
.card.hl{border-color:var(--acc)}
/* ── 手机 / 窄屏自适应 ── */
@media (max-width:640px){
  body{font-size:14px}
  .top{padding:10px 12px;gap:8px}
  .brand{font-size:16px}
  .ctrl{width:100%;justify-content:flex-end}
  select,button{padding:6px 10px;font-size:13px}
  section{padding:10px 12px}
  .panel{margin:10px 12px;padding:12px}
  .cards{grid-template-columns:repeat(2,1fr);gap:8px}
  .card{padding:10px}
  .card .v{font-size:19px}
  .card .k{font-size:12px}
  .card .s{font-size:11px}
  .mach{padding:12px;margin-bottom:10px}
  .mach h2{font-size:15px}
  .kv{grid-template-columns:repeat(2,1fr);gap:7px}
  .kv div{padding:6px 8px}
  .kv span{font-size:11px}
  .kv b{font-size:14px}
  .charts{grid-template-columns:1fr;gap:10px}
  .chart{height:200px}
  table{font-size:12px}
  th,td{padding:6px 7px}
  footer{padding:8px 12px 24px}
}
@media (max-width:380px){
  .cards{grid-template-columns:1fr}
  .kv{grid-template-columns:1fr}
}
/* 横屏 iPhone 等矮屏 */
@media (max-height:450px) and (orientation:landscape){
  .chart{height:180px}
}
.mach{background:var(--panel);border:1px solid var(--line);border-radius:12px;
  padding:14px;margin-bottom:14px}
.mach h2{margin:0 0 10px;font-size:16px}
.mach h2 small{color:var(--dim);font-weight:400;margin-left:8px}
.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin-bottom:10px}
.kv div{background:var(--panel2);border-radius:8px;padding:8px 10px}
.kv span{display:block;color:var(--dim);font-size:12px}
.kv b{font-size:16px}
.charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px}
.chart{height:240px;background:var(--panel2);border-radius:10px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;
  margin:14px 18px;padding:14px}
.panel h2{margin:0 0 10px;font-size:16px}
.tablewrap{overflow:auto}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{padding:7px 9px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}
th{color:var(--dim);font-weight:600}
.pos{color:var(--ok)} .neg{color:var(--bad)}
footer{color:var(--dim);font-size:12px;padding:10px 18px 30px}
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh}
.login-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;
  padding:26px;width:min(340px,90vw);text-align:center}
.login-card h1{font-size:18px;margin:0 0 16px}
.login-card input{width:100%;padding:11px;border-radius:9px;border:1px solid var(--line);
  background:var(--panel2);color:var(--fg);margin-bottom:10px;font-size:15px}
.login-card button{width:100%;padding:11px}
.err{color:var(--bad);font-size:13px;margin:8px 0 0}
