:root{--bg:#0e1117;--panel:#161b25;--panel2:#1c2230;--line:#262e3f;--text:#e6e9ef;--muted:#8a94a8;--acc:#638cff;--ok:#38c8a0;--warn:#ffb74d;--bad:#ff6b6b}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font:14px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,Inter,sans-serif}
.hidden{display:none!important}.muted{color:var(--muted)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.small{font-size:12px}.nowrap{white-space:nowrap}
header{display:flex;justify-content:space-between;align-items:center;padding:14px 24px;border-bottom:1px solid var(--line);background:#0b0e14;position:sticky;top:0;z-index:5}
.brand{font-weight:700;font-size:16px;display:flex;gap:8px;align-items:center}.brand .muted{font-weight:500}
.dot{width:10px;height:10px;border-radius:50%;background:var(--acc);box-shadow:0 0 12px var(--acc)}
.hdr-right{display:flex;gap:16px;align-items:center}.hdr-right form{margin:0}
.sync{background:var(--panel2);border:1px solid var(--line);padding:4px 10px;border-radius:999px;font-size:12.5px}
.sync.stale{border-color:var(--warn);color:var(--warn)}
main{padding:20px 24px;max-width:1500px;margin:0 auto}
.filters{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.filters label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.filters .grow{flex:1;min-width:220px}
input,select{background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:7px 10px;font:inherit;color-scheme:dark}
input:focus,select:focus{outline:2px solid rgba(99,140,255,.4);border-color:var(--acc)}
button{background:var(--acc);color:#fff;border:0;border-radius:8px;padding:8px 14px;font:inherit;font-weight:600;cursor:pointer}
button:disabled{opacity:.4;cursor:default}button.ghost{background:transparent;border:1px solid var(--line);color:var(--text)}
.presets{display:flex;gap:6px}.chip{background:var(--panel2);border:1px solid var(--line);color:var(--text);padding:6px 10px;font-weight:500}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin:18px 0}
.card{background:linear-gradient(180deg,var(--panel),#131823);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.card .k{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.06em}.card .v{font-size:26px;font-weight:700;margin-top:4px}.card .s{color:var(--muted);font-size:12px;min-height:16px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:18px}
.panel-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;gap:10px;flex-wrap:wrap}.panel-h h2{font-size:15px;margin:0}
.chart-wrap{height:260px;position:relative}
.tbl-actions{display:flex;gap:10px;align-items:center}.toggle{display:flex;gap:6px;align-items:center;color:var(--muted);cursor:pointer}
.tbl-scroll{overflow-x:auto}
table{width:100%;border-collapse:collapse}th,td{padding:9px 10px;border-bottom:1px solid var(--line);text-align:left}
th{color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}
th[data-sort]{cursor:pointer;user-select:none}th[data-sort]:hover{color:var(--text)}th.asc::after{content:" ▲"}th.desc::after{content:" ▼"}
tbody tr:hover{background:rgba(255,255,255,.025)}td.num{text-align:right;font-variant-numeric:tabular-nums}td.empty{text-align:center;color:var(--muted);padding:30px}
td a{color:var(--acc);text-decoration:none}
.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11.5px;font-weight:600}
.badge.ok{background:rgba(56,200,160,.15);color:var(--ok)}.badge.conv{background:rgba(255,183,77,.15);color:var(--warn)}
.badge.dup{background:rgba(255,107,107,.13);color:var(--bad)}.badge.no{background:rgba(255,255,255,.05);color:var(--muted)}
.pager{display:flex;gap:12px;justify-content:flex-end;align-items:center;margin-top:12px}
.login-body{display:grid;place-items:center;min-height:100vh;background:radial-gradient(circle at 30% 20%,#1a2340,var(--bg) 60%)}
.login-card{width:340px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:28px;display:flex;flex-direction:column;gap:14px}
.login-card h1{margin:0;font-size:20px}.login-card label{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:13px}
.error{background:rgba(255,107,107,.12);color:var(--bad);border:1px solid rgba(255,107,107,.3);padding:8px 10px;border-radius:8px}
