:root{--bg:#f6f7f9;--fg:#1d2330;--mut:#6b7280;--line:#e3e6eb;--card:#fff;--acc:#2d5bd7;--pos:#1f9d61;--neg:#d64545;--warn:#b7791f}
*{box-sizing:border-box}
body{margin:0;font:14px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--fg)}
a{color:var(--acc);text-decoration:none}a:hover{text-decoration:underline}
header.top{display:flex;align-items:center;gap:16px;padding:10px 24px;background:#111827;color:#fff}
header.top a{color:#fff}.brand{font-weight:700;letter-spacing:.5px;margin-right:auto}
.who{color:#cbd5e1}.inline{display:inline}
button,.btn{font:inherit;border:1px solid var(--acc);background:var(--acc);color:#fff;border-radius:6px;padding:7px 14px;cursor:pointer}
button.ghost,.btn.ghost{background:#fff;color:var(--acc)}
button.link{background:none;border:0;color:#cbd5e1;padding:0}
main{max-width:1180px;margin:0 auto;padding:20px 24px 60px}
h1{font-size:22px;margin:4px 0 10px}h1 small{font-size:13px;color:var(--mut);font-weight:400;margin-left:8px}
h2{font-size:16px;margin:26px 0 8px}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:18px}
.tabs a{padding:8px 14px;border-radius:6px 6px 0 0;color:var(--mut)}.tabs a.on{background:var(--card);color:var(--fg);border:1px solid var(--line);border-bottom-color:var(--card);margin-bottom:-1px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px}
.card .lbl{color:var(--mut);font-size:12px}.card .val{font-size:22px;font-weight:650;margin-top:2px}.card .sub{color:var(--mut);font-size:12px;margin-top:2px}
.card.bad .val{color:var(--neg)}.card.good .val{color:var(--pos)}.card.warn .val{color:var(--warn)}
.tw{overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:10px}
table{border-collapse:collapse;width:100%}th,td{padding:7px 10px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}
th{background:#fafbfc;font-weight:600;font-size:12px;color:var(--mut)}td.num,th.num{text-align:right}
tr:last-child td{border-bottom:0}.neg{color:var(--neg)}.pos{color:var(--pos)}
.muted{color:var(--mut)}.pill{display:inline-block;padding:1px 8px;border-radius:99px;font-size:12px;background:#eef2ff;color:#3730a3}
.pill.high{background:#fde8e8;color:#9b1c1c}.pill.medium{background:#fef3c7;color:#92400e}.pill.ok{background:#def7ec;color:#03543f}.pill.err{background:#fde8e8;color:#9b1c1c}
.flash{padding:10px 14px;border-radius:8px;margin-bottom:14px;background:#eef2ff}.flash.err{background:#fde8e8}.flash.ok{background:#def7ec}
form.stack{display:grid;gap:10px;max-width:520px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:18px}
label{display:grid;gap:4px;font-weight:550}label span{font-weight:400;color:var(--mut);font-size:12px}
input,select{font:inherit;padding:7px 9px;border:1px solid #cfd4dc;border-radius:6px;background:#fff}
input.sm{width:90px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.chart{width:100%;height:160px;background:var(--card);border:1px solid var(--line);border-radius:10px}
.chart rect.pos{fill:var(--pos)}.chart rect.neg{fill:var(--neg)}.chart .axis{stroke:#cbd5e1}
.bar{height:10px;background:#e5e7eb;border-radius:99px;overflow:hidden}.bar>i{display:block;height:100%;background:var(--acc)}
.bar.hot>i{background:var(--neg)}
footer{text-align:center;color:var(--mut);font-size:12px;padding:20px}
.login{max-width:380px;margin:80px auto}
code{background:#eef0f3;padding:1px 5px;border-radius:4px}
ol.steps li{margin-bottom:6px}
