:root{--bg:#0f1115;--pn:#171a21;--ln:#2a2f3a;--tx:#e6e8ee;--mu:#8b93a5;--ac:#f5c518;--up:#26a69a;--dn:#ef5350}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--tx);font:14px system-ui,sans-serif}
a{color:var(--ac);text-decoration:none}header{display:flex;gap:16px;align-items:center;padding:10px 16px;border-bottom:1px solid var(--ln);flex-wrap:wrap}
.logo{font-weight:700;font-size:18px}.logo span{color:var(--ac)}.mu{color:var(--mu);font-size:12px}
.tabs{display:flex;gap:6px;flex-wrap:wrap}.tab{padding:6px 12px;border:1px solid var(--ln);border-radius:16px;cursor:pointer;background:var(--pn)}
.tab.on{background:var(--ac);color:#000;border-color:var(--ac)}.tab b{margin-left:6px;opacity:.7}
main{display:grid;grid-template-columns:300px 1fr;gap:12px;padding:12px}@media(max-width:900px){main{grid-template-columns:1fr}}
.pn{background:var(--pn);border:1px solid var(--ln);border-radius:8px;padding:12px}
.dial{margin:10px 0}.dial label{display:flex;justify-content:space-between;font-size:12px;color:var(--mu)}.dial input{width:100%}
.dial output{color:var(--tx);font-weight:600}
button,select,input[type=text]{background:#222733;color:var(--tx);border:1px solid var(--ln);border-radius:6px;padding:5px 9px;cursor:pointer}
table{width:100%;border-collapse:collapse;font-size:13px}th,td{padding:6px 8px;border-bottom:1px solid var(--ln);text-align:right;white-space:nowrap}
th{position:sticky;top:0;background:var(--pn);cursor:pointer;color:var(--mu);font-weight:500}th:first-child,td:first-child,td.l,th.l{text-align:left}
tr:hover td{background:#1d212a}.up{color:var(--up)}.dn{color:var(--dn)}.tw{overflow:auto;max-height:70vh}
.chip{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;background:#2a2f3a;margin:2px}
.st-Fresh{background:#1b5e20}.st-Climbing{background:#0d47a1}.st-Forming{background:#4a3b00}.st-Cooling{background:#4e342e}.st-Falling{background:#7f1d1d}.st-Played{background:#333}
.new{color:var(--ac);font-size:10px;margin-left:4px}.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
#spark{display:flex;align-items:flex-end;gap:2px;height:40px}#spark div{background:var(--ac);width:14px;opacity:.7}
#res{position:absolute;background:var(--pn);border:1px solid var(--ln);z-index:9;max-height:300px;overflow:auto}#res div{padding:6px 10px;cursor:pointer}#res div:hover{background:#222}
.kv{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.kv div{background:#1d212a;padding:8px;border-radius:6px}.kv b{display:block;font-size:16px}
nav{display:flex;gap:4px;flex-wrap:wrap}nav a{padding:6px 10px;border-radius:6px;color:var(--mu)}nav a.on,nav a:hover{color:var(--tx);background:#222733}
.wrap{padding:12px;display:grid;gap:12px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(max-width:900px){.grid2{grid-template-columns:1fr}}
svg.ln{width:100%;height:180px;background:#14171d;border-radius:6px}.legend span{margin-right:12px;font-size:12px}
.inds label{margin-right:10px;font-size:12px;cursor:pointer}.err{color:var(--dn)}form.pn{max-width:340px;margin:40px auto;display:grid;gap:10px}
input[type=password]{background:#222733;color:var(--tx);border:1px solid var(--ln);border-radius:6px;padding:5px 9px}
.ann{border-bottom:1px solid var(--ln);padding:8px 0}.ann .mu{font-size:11px}
