:root{--bg:#ffffff;--fg:#1b1f24;--muted:#5b6470;--border:#d9dee5;--up:#1a7f37;--down:#cf222e;--unknown:#57606a;--inactive:#57606a}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0d1117;--fg:#e6edf3;--muted:#8b949e;--border:#30363d;--up:#3fb950;--down:#ff7b72;--unknown:#8b949e;--inactive:#8b949e}}:root[data-theme=dark]{--bg:#0d1117;--fg:#e6edf3;--muted:#8b949e;--border:#30363d;--up:#3fb950;--down:#ff7b72;--unknown:#8b949e;--inactive:#8b949e}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font-family:system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.5}.topbar{align-items:center;gap:16px;padding:12px 16px;border-bottom:1px solid var(--border)}.topbar,.topbar nav{display:flex;flex-wrap:wrap}.topbar nav{gap:12px}.topbar a{color:var(--fg);text-decoration:none}.nav-link[aria-current=page]{font-weight:700;text-decoration:underline;text-underline-offset:4px}.readonly{margin-left:auto;color:var(--muted);font-size:.85rem}main{padding:16px;max-width:1100px;margin:0 auto}h1{font-size:1.4rem;margin:8px 0 16px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.92rem}td,th{text-align:left;padding:8px;border-bottom:1px solid var(--border);vertical-align:top}th{color:var(--muted)}.state,th{font-weight:600}.state-up{color:var(--up)}.state-down{color:var(--down)}.state-inactive,.state-unknown{color:var(--unknown)}.empty,.muted{color:var(--muted)}.empty{padding:24px 0}button{padding:10px;font-size:1rem;border-radius:6px;border:1px solid var(--border);background:var(--fg);color:var(--bg);cursor:pointer}button:disabled{opacity:.6;cursor:wait}button.secondary{background:transparent;color:var(--fg)}.spinner{display:inline-block;width:14px;height:14px;margin-right:8px;vertical-align:-2px;border:2px solid;border-right:2px solid transparent;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2.4s}}.login{max-width:360px;margin:48px auto}.login form{display:flex;flex-direction:column;gap:12px}.login label{font-weight:600;font-size:.9rem}.login input{padding:10px;font-size:1rem;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--fg)}.login .error{color:var(--down)}