:root{--bg: #0f1115;--bg-2: #171a21;--bg-3: #21252e;--fg: #f2f4f8;--fg-2: #a9b0bf;--accent: #f5b942;--ok: #3ccf74;--warn: #f5b942;--bad: #ff5c5c;--info: #5aa9ff;--radius: 12px;--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--fg);font:16px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-tap-highlight-color:transparent}#app{min-height:100%}a{color:var(--info)}button{font:inherit;color:var(--fg);background:var(--bg-3);border:1px solid #2f3440;border-radius:var(--radius);padding:.6rem 1rem;cursor:pointer;touch-action:manipulation}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);color:#1a1400;border-color:var(--accent);font-weight:600}button.danger{background:#3a1d1d;border-color:#6a2a2a;color:#ffb3b3}button.ghost{background:transparent}button.small{padding:.3rem .6rem;font-size:.9rem;border-radius:8px}input,select,textarea{font:inherit;color:var(--fg);background:var(--bg-2);border:1px solid #2f3440;border-radius:8px;padding:.5rem .7rem}input:focus,select:focus,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.page{max-width:1100px;margin:0 auto;padding:1rem}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.muted{color:var(--fg-2)}.row{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}.card{background:var(--bg-2);border:1px solid #262a33;border-radius:var(--radius);padding:1rem}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.45rem .6rem;border-bottom:1px solid #262a33;vertical-align:middle}th{color:var(--fg-2);font-weight:600;font-size:.85rem;text-transform:uppercase;letter-spacing:.03em}.table-wrap{overflow-x:auto}.badge{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:.8rem;font-weight:600;background:var(--bg-3);color:var(--fg-2)}.badge.ok{background:#163a25;color:var(--ok)}.badge.warn{background:#3d2f0d;color:var(--warn)}.badge.bad{background:#3a1d1d;color:var(--bad)}.badge.info{background:#14304d;color:var(--info)}.status-dot{width:10px;height:10px;border-radius:50%;display:inline-block;background:var(--bad)}.status-dot.on{background:var(--ok)}h1,h2,h3{margin:0 0 .6rem;line-height:1.2}.tabs{display:flex;gap:.3rem;flex-wrap:wrap;margin-bottom:1rem}.tabs button.active{background:var(--accent);color:#1a1400;border-color:var(--accent)}
