:root{--bg: #f2f3f3;--panel: #ffffff;--ink: #16191f;--ink-2: #545b64;--line: #d5dbdb;--line-2: #eaeded;--topbar: #232f3e;--topbar-ink: #ffffff;--accent: #0972d3;--accent-weak: #f0f7ff;--ok: #1d8102;--warn: #b7791f;--fault: #d9730d;--down: #d13212;--mono: ui-monospace, "SFMono-Regular", "Cascadia Mono", Menlo, Consolas, monospace;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--sans);font-size:13px;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.app{display:flex;flex-direction:column;height:100%}.topbar{height:40px;background:var(--topbar);color:var(--topbar-ink);display:flex;align-items:center;padding:0 14px;gap:14px;flex:0 0 40px}.topbar .brand{font-weight:700;letter-spacing:.3px;font-size:14px}.topbar .brand .tag{color:#f90}.topbar .spacer{flex:1}.topbar .who{color:#d5dbdb;font-size:12px}.topbar button.link{background:none;border:1px solid #46546a;color:#fff;padding:3px 9px;border-radius:2px;cursor:pointer;font-size:12px}.topbar button.link:hover{background:#2f3d4f}.body{display:flex;flex:1;min-height:0}.sidebar{width:220px;background:var(--panel);border-right:1px solid var(--line);flex:0 0 220px;padding:10px 0}.sidebar .grp{color:var(--ink-2);font-size:11px;text-transform:uppercase;letter-spacing:.5px;padding:8px 16px 4px}.sidebar a{display:block;padding:7px 16px;color:var(--ink);border-left:3px solid transparent}.sidebar a:hover{background:var(--line-2);text-decoration:none}.sidebar a.active{background:var(--accent-weak);border-left-color:var(--accent);color:var(--accent);font-weight:600}.main{flex:1;overflow:auto;padding:18px 20px;min-width:0}.page-title{font-size:18px;font-weight:700;margin:0 0 14px}.banner{background:var(--panel);border:1px solid var(--line);border-radius:2px;margin-bottom:16px}.banner>header{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid var(--line-2)}.banner>header h2{font-size:14px;margin:0;font-weight:700}.banner>header .sub{color:var(--ink-2);font-size:12px}.banner>header .spacer{flex:1}.banner .content{padding:14px}.btn{background:var(--panel);border:1px solid #8d99a8;color:var(--ink);padding:4px 11px;border-radius:2px;cursor:pointer;font-size:12px}.btn:hover{background:var(--line-2)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:#0860b0}.btn.danger{border-color:#d13212;color:#d13212}.btn:disabled{opacity:.5;cursor:default}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--line-2);border:1px solid var(--line-2)}.metric{background:var(--panel);padding:10px 12px}.metric .k{color:var(--ink-2);font-size:11px;text-transform:uppercase;letter-spacing:.4px}.metric .v{font-size:17px;font-weight:600;margin-top:3px;font-variant-numeric:tabular-nums}.metric .v.mono{font-family:var(--mono);font-size:13px;word-break:break-all}.metric .v.addr{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}table.grid{width:100%;border-collapse:collapse;font-size:12.5px}table.grid th,table.grid td{text-align:left;padding:6px 10px;border-bottom:1px solid var(--line-2)}table.grid th{color:var(--ink-2);font-weight:600;background:#fafbfc;position:sticky;top:0}table.grid tr:hover td{background:#fafbfc}.num{text-align:right;font-variant-numeric:tabular-nums}.pill{display:inline-block;padding:1px 8px;border-radius:2px;font-size:11px;font-weight:600;border:1px solid transparent}.pill.normal,.pill.ok{color:var(--ok);background:#f0faf0;border-color:#c5e8c5}.pill.degraded,.pill.stale{color:var(--warn);background:#fdf6e3;border-color:#f0e0b0}.pill.fault{color:var(--fault);background:#fdf0e6;border-color:#f3d2b0}.pill.down,.pill.error{color:var(--down);background:#fdf0ee;border-color:#f3c2b8}.pill.unknown,.pill.pending{color:var(--ink-2);background:var(--line-2);border-color:var(--line)}.pill.cat{color:var(--ink-2);background:#eef3f8;border-color:#cdddec;text-transform:capitalize}.login-wrap{display:flex;align-items:center;justify-content:center;height:100%;background:var(--topbar)}.login-card{background:var(--panel);border-radius:3px;padding:28px;width:340px;box-shadow:0 2px 8px #0000004d}.login-card h1{font-size:18px;margin:0 0 4px}.login-card p.sub{color:var(--ink-2);margin:0 0 18px;font-size:12px}.login-card label{display:block;font-size:12px;font-weight:600;margin:10px 0 4px}.login-card input{width:100%;padding:7px 9px;border:1px solid #8d99a8;border-radius:2px;font-size:13px}.login-card input:focus{outline:2px solid var(--accent);border-color:var(--accent)}.login-card .err{color:var(--down);font-size:12px;margin-top:10px;min-height:16px}.login-card button{width:100%;margin-top:16px;padding:8px}.muted{color:var(--ink-2)}.small{font-size:11.5px}.row{display:flex;gap:8px;align-items:center}.spacer{flex:1}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#10192073;display:flex;align-items:flex-start;justify-content:center;padding-top:50px;z-index:50}.modal{background:var(--panel);border-radius:3px;width:min(960px,94vw);max-height:84vh;overflow:auto;box-shadow:0 6px 24px #0000004d}.modal header{display:flex;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line)}.modal header h2{margin:0;font-size:15px}.modal .content{padding:14px 16px}.toast{position:fixed;bottom:16px;right:16px;background:#16191f;color:#fff;padding:9px 14px;border-radius:3px;font-size:12.5px;z-index:100}.construction{text-align:center;color:var(--ink-2);padding:60px 0}.construction svg{display:block;margin:0 auto 16px}.construction h2{color:var(--ink);margin:0 0 6px}
