:root{--bg:#0b1016;--panel:#121a23;--panel-2:#17212c;--border:#223041;--text:#dce6f0;--muted:#8193a6;--accent:#2fa8ff;--ok:#2ecc71;--warn:#f5a623;--bad:#ff4d4f;--emergency:#ff2d55;--radius:8px;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);margin:0;padding:0;font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1{margin:0 0 16px;font-size:20px;font-weight:600}h2{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:0 0 12px;font-size:15px;font-weight:600}button,input,select{font:inherit;color:inherit}input,select{background:var(--panel-2);border:1px solid var(--border);border-radius:6px;min-width:0;padding:7px 10px}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px}button{background:var(--panel-2);border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:6px 12px}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#031522;font-weight:600}button.danger{color:#ff8a8c;border-color:#5a2326}.shell{grid-template-columns:220px 1fr;min-height:100vh;display:grid}.side{background:var(--panel);border-right:1px solid var(--border);flex-direction:column;gap:4px;padding:16px 12px;display:flex}.brand{letter-spacing:.08em;align-items:center;gap:8px;padding:4px 8px 16px;font-weight:700;display:flex}.brand .dot{background:var(--ok);width:10px;height:10px;box-shadow:0 0 10px var(--ok);border-radius:50%}.side a{color:var(--text);border-radius:6px;padding:8px 10px}.side a.active,.side a:hover{background:var(--panel-2);text-decoration:none}.side .foot{color:var(--muted);margin-top:auto;padding:8px;font-size:12px}.main{padding:24px;overflow:auto}.grid{gap:16px;display:grid}.cards{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.stat .v{font-variant-numeric:tabular-nums;font-size:26px;font-weight:700}.stat .l{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:12px}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:8px 10px}th{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:500}td.num{font-variant-numeric:tabular-nums;text-align:right}.mono{font-family:var(--mono);font-size:12px}.muted{color:var(--muted)}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.spacer{flex:1}.err{color:var(--bad)}.badge{letter-spacing:.04em;border:1px solid;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.badge.ONLINE{color:var(--ok);border-color:#1d5c39}.badge.DEGRADED,.badge.DRAINING,.badge.REGISTERING{color:var(--warn);border-color:#6b4c12}.badge.OFFLINE,.badge.DISABLED{color:var(--bad);border-color:#5a2326}.badge.MAINTENANCE,.badge.PROVISIONING{color:var(--muted);border-color:var(--border)}.bar{background:var(--panel-2);vertical-align:middle;border-radius:3px;width:80px;height:6px;margin-right:6px;display:inline-block;overflow:hidden}.bar>i{background:var(--accent);height:100%;display:block}.bar.hot>i{background:var(--warn)}.login{max-width:360px;margin:12vh auto}.login form{gap:10px;display:grid}.dispatch{grid-template-columns:260px 1fr 300px;gap:16px;min-height:calc(100vh - 100px);display:grid}.chan{cursor:pointer;border:1px solid #0000;border-radius:6px;padding:10px}.chan:hover{background:var(--panel-2)}.chan.sel{border-color:var(--accent);background:var(--panel-2)}.chan.live{box-shadow:inset 3px 0 0 var(--ok)}.ptt{border:6px solid var(--border);letter-spacing:.1em;-webkit-user-select:none;user-select:none;touch-action:none;background:radial-gradient(circle at 50% 35%,#1e2b38,#0f161e);border-radius:50%;width:220px;height:220px;font-size:22px;font-weight:800;transition:all 80ms}.ptt.tx{border-color:var(--ok);background:radial-gradient(circle at 50% 35%,#1d5c39,#0e2a1a);box-shadow:0 0 40px #2ecc7173}.ptt.busy{border-color:var(--bad)}.ptt.wait{border-color:var(--warn)}.speaker{min-height:28px;font-size:18px;font-weight:600}.speaker.em{color:var(--emergency)}.log{font-family:var(--mono);max-height:420px;font-size:12px;overflow:auto}.log div{border-bottom:1px dashed #1a2531;padding:2px 0}@media (max-width:1100px){.dispatch,.shell{grid-template-columns:1fr}.side{flex-direction:row;overflow-x:auto}}
