:root{--ink:#1A1525;--paper:#F6F3EE;--card:#fff;--purple:#6B34D9;--deep:#4A1F9E;--soft:#F1EAFB;--loss:#D6324F;--ok:#1E7F4F;--warn:#B26B00;--mute:#6b6676;--line:#E4DFEA;--r:12px}
@media (prefers-color-scheme:dark){:root{--ink:#F3EFFA;--paper:#14101C;--card:#1D1828;--soft:#2A2140;--line:#3A3150;--mute:#A79FB8;--purple:#9B7BF0;--deep:#CBB8FF;--loss:#FF7A90;--ok:#52C98A;--warn:#F0B35A}}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.5 "IBM Plex Sans",system-ui,sans-serif}
h1{font:600 28px/1.2 Spectral,Georgia,serif;margin:0 0 20px}h2{font:600 18px Spectral,serif;margin:28px 0 10px}
a{color:var(--purple)}
.shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}
aside{background:var(--ink);color:#EDE7F8;padding:20px 14px;display:flex;flex-direction:column;gap:18px;position:sticky;top:0;height:100vh}
@media (prefers-color-scheme:dark){aside{background:#0D0A14}}
.brand{font:600 22px Spectral,serif;color:#fff}.brand b{color:#B79BFF}.brand small{display:block;font:400 11px "IBM Plex Sans";letter-spacing:.12em;text-transform:uppercase;color:#A79FB8}
nav{display:flex;flex-direction:column;gap:2px;overflow:auto}nav a{color:#D9D0EA;text-decoration:none;padding:8px 10px;border-radius:8px}nav a:hover{background:#ffffff14}nav a.on{background:var(--purple);color:#fff}
.me{margin-top:auto;font-size:13px;display:flex;flex-direction:column;gap:2px}.me small{color:#A79FB8}.idle{font-variant-numeric:tabular-nums;color:#C9BEE0}
button.link{background:none;border:0;color:#C9BEE0;padding:0;text-decoration:underline;cursor:pointer;font:inherit}
main{padding:28px clamp(16px,3vw,40px);max-width:1280px;width:100%}main.solo{margin:8vh auto;max-width:440px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:18px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}.kpi b{display:block;font:600 30px Spectral,serif;line-height:1.1}.kpi span{color:var(--mute);font-size:13px}
.kpi.bad b{color:var(--loss)}.kpi.good b{color:var(--ok)}.kpi.warn b{color:var(--warn)}
table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;font-size:14px}
th,td{padding:9px 12px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);background:var(--soft)}tr:last-child td{border-bottom:0}
.tablewrap{overflow-x:auto}
.badge{display:inline-block;padding:2px 9px;border-radius:99px;font-size:12px;font-weight:500;white-space:nowrap}
.badge.ok{background:#1E7F4F22;color:var(--ok)}.badge.bad{background:#D6324F22;color:var(--loss)}.badge.warn{background:#B26B0022;color:var(--warn)}.badge.mute{background:var(--soft);color:var(--mute)}
form.inline{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin-bottom:16px}label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--mute)}
input,select,textarea{font:inherit;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);min-width:0}textarea{width:100%;min-height:140px;font-family:ui-monospace,monospace;font-size:12px}
button,.btn{font:inherit;font-weight:500;background:var(--purple);color:#fff;border:0;border-radius:8px;padding:10px 16px;cursor:pointer;text-decoration:none;display:inline-block}button:hover,.btn:hover{background:var(--deep);color:#fff}
.btn.ghost{background:transparent;color:var(--purple);border:1px solid var(--purple)}.btn.ghost:hover{background:var(--soft);color:var(--deep)}
.flash{padding:10px 14px;border-radius:10px;margin-bottom:14px}.flash.ok{background:#1E7F4F22;color:var(--ok)}.flash.err{background:#D6324F22;color:var(--loss)}
.pin{font:600 34px/1 "IBM Plex Mono",monospace;letter-spacing:.4em;text-align:center}
.banner{background:var(--soft);border:1px dashed var(--purple);border-radius:var(--r);padding:12px 16px;margin-bottom:16px}
.muted{color:var(--mute)}.live-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--ok);margin-right:6px;animation:p 1.6s infinite}@keyframes p{50%{opacity:.25}}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}
@media (max-width:800px){.shell{grid-template-columns:1fr}aside{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center}nav{flex-direction:row;flex-wrap:wrap}.me{margin:0}}
@media print{aside,form.inline,.noprint{display:none}.shell{display:block}body{background:#fff;color:#000}}
