:root{color-scheme:dark;--bg:#070d18;--panel:#101b2b;--ink:#eaf2ff;--sub:#a4b5cf;--line:#26364e;--ok:#45e8aa;--warn:#ffc36a;--bad:#ff7184;font:14px system-ui,sans-serif}
*{box-sizing:border-box}body{margin:0;color:var(--ink);min-height:100vh;background:radial-gradient(ellipse at 42% -20%,#153351 0,transparent 55%),repeating-linear-gradient(90deg,#4b789008 0 1px,transparent 1px 48px),repeating-linear-gradient(0deg,#4b789008 0 1px,transparent 1px 48px),var(--bg)}header.top,main,footer{width:min(100% - 72px,1720px);margin:auto}.top{display:flex;align-items:end;justify-content:space-between;padding:31px 0 20px;border-bottom:1px solid var(--line);gap:14px}.eyebrow,footer,.connection,.caption{font:700 .72rem ui-monospace,Consolas,monospace;letter-spacing:.14em;color:var(--sub)}.mark{color:#6ae3ff;font-size:1rem;margin-right:5px}h1{margin:4px 0 0;font-size:clamp(1.65rem,3vw,3.5rem);font-weight:720;letter-spacing:-.055em;line-height:1.01}.compact{display:none}.tools{display:flex;align-items:center;gap:8px;white-space:nowrap}.tools a,button{font:650 .79rem system-ui;color:var(--ink);background:#132139;border:1px solid #2c405b;border-radius:8px;padding:8px 10px;text-decoration:none;cursor:pointer}.tools a:hover,button:hover,button[aria-pressed=true]{background:#24436a}button:focus-visible,a:focus-visible{outline:2px solid #73e7ff;outline-offset:2px}button:disabled{opacity:.55;cursor:default}#badge{background:#253752;color:#fff;border-radius:9px;padding:1px 5px}
.overview{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-top:15px}.tile{padding:9px 13px;background:linear-gradient(125deg,#14233a,#0c1728);border:1px solid var(--line);border-radius:10px;display:flex;align-items:center;gap:9px}.tile strong{font:700 1.65rem ui-monospace,Consolas,monospace;letter-spacing:-.06em}.good{color:var(--ok)}.warning{color:var(--warn)}.bad{color:var(--bad)}.connection{display:flex;justify-content:space-between;gap:8px;margin:13px 0 14px;letter-spacing:.06em}.groups{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.project{--accent:#93baff;min-width:0}.project:first-child{grid-column:1/-1}.project[data-color=orange]{--accent:#ffa46c}.project[data-color=violet]{--accent:#bd9aff}.project[data-color=green]{--accent:#58e7b2}.project[data-color=cyan]{--accent:#65dbff}.project h2{display:flex;align-items:center;gap:8px;margin:0 0 7px;font-size:1rem;letter-spacing:.03em}.project h2 i{width:15px;height:2px;border-radius:2px;background:var(--accent);box-shadow:0 0 12px color-mix(in srgb,var(--accent),transparent 40%)}.project h2 small{color:var(--accent);font:650 .66rem ui-monospace,monospace;margin-left:auto}.cards{display:grid;gap:10px}.project:first-child .cards{grid-template-columns:repeat(3,minmax(0,1fr))}.card{position:relative;min-width:0;padding:12px;border:1px solid color-mix(in srgb,var(--accent) 23%,var(--line));border-top-color:color-mix(in srgb,var(--accent) 60%,var(--line));border-radius:12px;background:linear-gradient(125deg,color-mix(in srgb,var(--accent) 7%,#0d1728),#101a2b 65%);box-shadow:0 8px 20px #02071445;transition:border-color .4s,box-shadow .4s}.card[data-state=down]{border-color:#ff5d7377;box-shadow:0 0 18px #ff516827}.card[data-state=warn]{border-color:#f4b05f70}.card.flash{animation:change .85s ease-out}@keyframes change{50%{box-shadow:0 0 22px currentColor}}.card-head{display:flex;justify-content:space-between;gap:5px;align-items:start}.card h3{font-size:1.15rem;line-height:1.13;margin:0}.card h3 a{color:inherit;text-decoration:none}.card h3 a:hover{text-decoration:underline}.meta{color:var(--sub);font-size:.75rem;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.state{display:flex;align-items:center;gap:5px;font:700 .66rem ui-monospace,monospace;white-space:nowrap}.led{width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor}.measures{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 7px}.measure{display:flex;align-items:center;gap:8px;border:1px solid #253650;border-radius:8px;padding:5px 7px;background:#08111d44;min-width:0}.gauge{width:31px;height:31px;border-radius:50%;background:conic-gradient(var(--accent) var(--angle),#26344a 0);display:grid;place-items:center;flex:none}.gauge:after{content:"";width:23px;height:23px;background:#131e30;border-radius:50%}.measure strong{display:block;font:700 .98rem ui-monospace,monospace}.measure small,.disk small,.extras{font-size:.72rem;color:var(--sub)}.extras{display:flex;gap:8px;flex-wrap:wrap;min-height:16px}.extras b{color:var(--ink);font-weight:650}.disk{display:grid;grid-template-columns:minmax(48px,.7fr) 1fr minmax(80px,auto);align-items:center;gap:6px;font:.72rem ui-monospace,monospace;margin:4px 0}.disk small{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.track{height:4px;background:#27364b;border-radius:8px;overflow:hidden}.track i{display:block;height:100%;background:var(--accent);transition:width .45s ease;border-radius:8px}.disk.bad .track i{background:var(--bad)}.history{height:39px;margin-top:5px;background:repeating-linear-gradient(0deg,transparent 0 11px,#90a8cd12 11px 12px);overflow:hidden}.history svg{width:100%;height:100%;overflow:visible}.history polyline{fill:none;stroke-width:1.5;vector-effect:non-scaling-stroke}.history-legend{display:flex;gap:8px;font:.62rem ui-monospace,monospace;color:var(--sub)}.history-legend b{font-weight:500}.stamp{display:flex;justify-content:space-between;border-top:1px solid #2b3b50;margin-top:6px;padding-top:5px;color:var(--sub);font:.66rem ui-monospace,monospace;gap:4px}.empty{margin:0;font-size:.8rem;color:var(--sub)}footer{display:flex;justify-content:space-between;margin:15px auto;padding:10px 0;border-top:1px solid var(--line);font-size:.65rem;gap:10px}
dialog{width:min(94vw,650px);max-height:84vh;border:1px solid #385777;border-radius:13px;background:#0d1728;color:var(--ink);padding:18px;box-shadow:0 14px 80px #0009}dialog::backdrop{background:#030811bb}dialog header,.alert-tools{display:flex;justify-content:space-between;align-items:center;gap:8px}dialog h2{margin:4px 0 9px}.alert-tools{justify-content:start;color:var(--sub);margin-bottom:10px}.incident{display:grid;grid-template-columns:1fr auto;gap:6px;padding:10px 0;border-bottom:1px solid var(--line)}.incident p{margin:4px 0 0;color:var(--sub);font-size:.78rem}.incident button{align-self:center}#toast:empty{display:none}#toast{position:fixed;right:1.3rem;bottom:1.3rem;max-width:80vw;background:#14243a;border:1px solid #587291;border-radius:8px;padding:10px 15px;z-index:5}
body.wall .top{padding-top:16px}.wall footer{display:none}.wall .tools a{display:none}.wall main{transform:translate(var(--shift-x,0px),var(--shift-y,0px));transition:transform 2s ease}.wall .groups{gap:13px}@media(min-width:1500px) and (min-height:880px){.card{padding:15px}.history{height:52px}.groups{gap:19px}}
@media(min-width:2600px){:root{font-size:20px}header.top,main,footer{width:min(100% - 120px,3000px)}.card{padding:22px}.history{height:94px}.gauge{width:45px;height:45px}.gauge:after{width:33px;height:33px}}
@media(max-width:980px){header.top,main,footer{width:calc(100% - 30px)}.groups{grid-template-columns:repeat(2,minmax(0,1fr))}.project:first-child .cards{grid-template-columns:repeat(3,minmax(0,1fr))}.caption{font-size:.65rem;letter-spacing:0}.disk{grid-template-columns:auto 1fr}.disk small{grid-column:1/-1;text-align:left}}
@media(max-width:640px){.top{align-items:start;flex-direction:column}.compact{display:block}.groups,.project:first-child .cards{grid-template-columns:1fr}.overview{grid-template-columns:repeat(3,minmax(0,1fr))}.tile{padding:7px}.tile strong{font-size:1.2rem}.disk{grid-template-columns:minmax(48px,.7fr) 1fr minmax(80px,auto)}.disk small{grid-column:auto;text-align:right}.connection{font-size:.62rem}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.wall main{transform:none}}
.card.flash .led{animation:led-pulse .7s ease-out}@keyframes led-pulse{50%{box-shadow:0 0 16px 3px currentColor}}
@media(max-width:640px){.disk{grid-template-columns:minmax(65px,auto) 1fr}.disk small{grid-column:1/-1;text-align:left;white-space:normal}}
@media(prefers-reduced-motion:reduce){.card.flash .led{animation:none}}
