:root{--bg:#f3f5f9;--card:#fff;--tx:#18202e;--mu:#6a7488;--ln:#d9deea;--pri:#1f6feb;--ok:#1f9d55;--bad:#d64545;--warn:#e69a1a}
@media(prefers-color-scheme:dark){:root{--bg:#10151f;--card:#18202e;--tx:#e6ebf5;--mu:#97a2b8;--ln:#2a3447}}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--tx);font:15px/1.45 "Segoe UI",system-ui,sans-serif}
a{color:var(--pri)}.top{display:flex;gap:18px;align-items:center;flex-wrap:wrap;padding:10px 20px;background:var(--card);border-bottom:1px solid var(--ln)}
.brand{font-weight:700;text-decoration:none;color:var(--tx);font-size:17px}.top nav{display:flex;gap:6px;align-items:center;flex:1;flex-wrap:wrap}
.top nav a{padding:6px 12px;border-radius:8px;text-decoration:none;color:var(--tx)}.top nav a.on,.top nav a:hover{background:var(--bg)}
.who{margin-left:auto;color:var(--mu);font-size:13px}main{max-width:1200px;margin:0 auto;padding:20px 16px 60px}
h1{font-size:24px;margin:.2em 0 .4em}h2{font-size:18px;margin:1.6em 0 .5em}.muted{color:var(--mu)}.small{font-size:12px}
.card{background:var(--card);border:1px solid var(--ln);border-radius:12px;padding:18px 22px;margin:14px 0}.narrow{max-width:420px;margin:60px auto}
label{display:block;margin:10px 0 4px;font-size:13px;color:var(--mu)}input,select{padding:8px 10px;border:1px solid var(--ln);border-radius:8px;background:var(--card);color:var(--tx);font:inherit;max-width:100%}
.narrow input{width:100%}.row{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin:10px 0}.row label{margin:0}.row form{margin:0}
.btn{display:inline-block;padding:8px 14px;border:1px solid var(--ln);border-radius:8px;background:var(--card);color:var(--tx);text-decoration:none;cursor:pointer;font:inherit}
.btn:hover{border-color:var(--pri)}.btn.pri{background:var(--pri);border-color:var(--pri);color:#fff}.btn.bad{color:var(--bad)}
.grid{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--ln);border-radius:12px;overflow:hidden;margin:8px 0}
.grid th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--mu);padding:9px 12px;border-bottom:1px solid var(--ln)}
.grid td{padding:9px 12px;border-bottom:1px solid var(--ln);vertical-align:top}.grid tr:last-child td{border-bottom:0}
.grid tbody tr[onclick]{cursor:pointer}.grid tbody tr[onclick]:hover{background:var(--bg)}.num{text-align:right;font-variant-numeric:tabular-nums}
tr.off td{color:var(--mu)}tr.alarm td:first-child{border-left:4px solid var(--warn)}tr.alarm.p3 td:first-child,tr.alarm.p4 td:first-child,tr.alarm.p5 td:first-child{border-left-color:var(--bad)}
tr.p1 td:first-child{box-shadow:inset 4px 0 var(--mu)}tr.p2 td:first-child{box-shadow:inset 4px 0 var(--warn)}tr.p3 td:first-child,tr.p4 td:first-child,tr.p5 td:first-child{box-shadow:inset 4px 0 var(--bad)}
tr.gone td{color:var(--mu)}.tag{display:inline-block;padding:2px 9px;border-radius:99px;font-size:12px;font-weight:600;color:#fff}.tag.ok{background:var(--ok)}.tag.bad{background:var(--bad)}
.err{color:var(--bad);font-weight:600}.okmsg{color:var(--ok);font-weight:600}pre{background:var(--bg);padding:12px;border-radius:8px;overflow:auto}
.tree{list-style:none;padding-left:0;display:flex;flex-wrap:wrap;gap:8px}.tree .fold{flex-basis:100%}.tree .fold>.tree{padding-left:18px;margin:6px 0}.chk{display:inline-block;margin:0 10px 0 0;color:var(--tx)}
.kv td{padding:4px 18px 4px 0;vertical-align:top}.kv td:first-child{color:var(--mu)}
.tag.wait{background:var(--warn)}.acts{white-space:nowrap}.acts form{display:inline-block;margin:2px 4px 2px 0}
.inv label{display:block}.inv .row label{margin:0}.inv input[type=checkbox]{margin-right:4px}
