:root{--bg:#f5f6f8;--surface:#fff;--text:#1a2230;--muted:#5d6878;--line:#dfe3e9;--accent:#1d4e89;--accent-text:#fff;--ok:#1f7a4d;--warn:#b0451f;--high:#c2571a;--track:#e7ebf0}
@media (prefers-color-scheme:dark){:root{--bg:#12161c;--surface:#1b2129;--text:#e6e9ee;--muted:#9aa5b4;--line:#2d3540;--accent:#6ea6e6;--accent-text:#0c1420;--ok:#4fbf87;--warn:#f0936b;--high:#f0936b;--track:#2d3540}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font:16px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:var(--accent)}
h1{font-size:1.5rem;margin:0 0 1rem;line-height:1.25}
h2{font-size:1.1rem;margin:0 0 .5rem}
h3{font-size:.8rem;margin:1rem 0 .5rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}
h3:first-child{margin-top:0}
.top{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;align-items:center;justify-content:space-between;padding:.75rem 1rem;background:var(--surface);border-bottom:1px solid var(--line)}
.brand{font-weight:600;color:var(--text);text-decoration:none;display:flex;gap:.5rem;align-items:center}
.brand .muted{font-weight:400}
.mark{width:14px;height:14px;border-radius:3px;background:var(--accent);display:inline-block}
nav{display:flex;flex-wrap:wrap;gap:.25rem 1rem;align-items:center}
nav a{text-decoration:none}
nav form{margin:0}
main{max-width:1000px;margin:0 auto;padding:1.5rem 1rem 3rem}
.card{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:1.25rem;margin-bottom:1rem}
.narrow{max-width:400px;margin:2rem auto}
.muted{color:var(--muted)}
.small{font-size:.85rem}
.warn{color:var(--warn)}
.split{display:flex;flex-wrap:wrap;gap:.5rem 1rem;justify-content:space-between;align-items:flex-start}
.columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.5rem;margin-top:.75rem}
.tag{display:inline-block;font-size:.75rem;padding:.1rem .5rem;border:1px solid var(--line);border-radius:999px;color:var(--muted);white-space:nowrap}
.stack{display:grid;gap:.75rem}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.75rem;align-items:end}
.inline{display:flex;flex-wrap:wrap;gap:.75rem;align-items:flex-end;margin-top:1rem}
label{display:grid;gap:.25rem;font-size:.9rem}
label.check{display:flex;gap:.5rem;align-items:center}
input:not([type=checkbox]),select{width:100%;padding:.55rem .6rem;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--text);font:inherit;min-height:44px}
button{padding:.55rem 1rem;min-height:44px;border:1px solid var(--accent);border-radius:6px;background:var(--accent);color:var(--accent-text);font:inherit;cursor:pointer}
button.secondary{background:transparent;color:var(--accent)}
button.link{background:none;border:0;padding:0;min-height:0;color:var(--accent)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.flash{padding:.6rem .8rem;border-radius:6px;border:1px solid var(--line);background:var(--surface);margin:0 0 1rem}
.flash.ok{border-color:var(--ok)}
.flash.error{border-color:var(--warn);color:var(--warn)}
.scroll{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:.95rem}
th,td{padding:.5rem .6rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
th{font-size:.8rem;color:var(--muted);font-weight:600}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.meter{margin-bottom:.75rem}
.meter-head{display:flex;justify-content:space-between;font-size:.9rem;margin-bottom:.2rem}
progress{appearance:none;display:block;width:100%;height:8px;border:0;border-radius:4px;overflow:hidden;background:var(--track)}
progress::-webkit-progress-bar{background:var(--track)}
progress::-webkit-progress-value{background:var(--accent)}
progress::-moz-progress-bar{background:var(--accent)}
progress.high::-webkit-progress-value{background:var(--high)}
progress.high::-moz-progress-bar{background:var(--high)}
.apps,.status{list-style:none;padding:0;margin:0 0 1rem}
.apps li{display:flex;flex-wrap:wrap;gap:.25rem .5rem;align-items:baseline;padding:.25rem 0}
.status{display:flex;flex-wrap:wrap;gap:.25rem 1.5rem}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:.35rem;background:var(--muted)}
.dot.on{background:var(--ok)}
.dot.off{background:var(--warn)}
