*{box-sizing:border-box}:root{--bg:#0b0e14;--panel:#141821;--panel-2:#1b2130;--border:#232a37;--text:#e8ebf0;--muted:#8b93a3;--accent:#3b82f6;--green:#22c55e;--amber:#f59e0b;--red:#ef4444}body,html{margin:0;padding:0}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:radial-gradient(1200px 600px at 15% -10%,#16233b 0,var(--bg) 55%) fixed;color:var(--text);-webkit-font-smoothing:antialiased}a{color:#60a5fa}.mono{font-family:ui-monospace,SF Mono,Menlo,monospace}.muted{color:var(--muted)}.ok{color:var(--green)}.err{color:var(--red)}.warn{color:var(--amber)}.container{max-width:1120px;margin:0 auto;padding:28px 20px 60px}.topbar{justify-content:space-between;margin-bottom:24px;flex-wrap:wrap}.brand,.topbar{display:flex;align-items:center;gap:12px}.brand h1{font-size:22px;margin:0;letter-spacing:.2px}.brand .logo{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,#3b82f6,#22c55e);display:grid;place-items:center;font-weight:800;color:#04121f}.live{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--muted)}.dot{width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 0 0 rgba(34,197,94,.6);animation:pulse 2s infinite}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.5)}70%{box-shadow:0 0 0 8px rgba(34,197,94,0)}to{box-shadow:0 0 0 0 rgba(34,197,94,0)}}.stats{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:14px;gap:14px;margin-bottom:24px}@media (max-width:760px){.stats{grid-template-columns:repeat(2,1fr)}}.stat{position:relative;background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--border);border-radius:14px;padding:18px 18px 16px;overflow:hidden}.stat:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--c,var(--accent))}.stat .n{font-size:38px;font-weight:800;line-height:1;letter-spacing:-1px}.stat .l{margin-top:8px;font-size:13px;color:var(--muted)}.stat .sub{margin-top:4px;font-size:12px;color:var(--muted);opacity:.8}.stat.green{--c:var(--green)}.stat.blue{--c:var(--accent)}.stat.idle{--c:#64748b}.stat.amber{--c:var(--amber)}.card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:18px 20px;margin-bottom:18px}.card h2{font-size:15px;margin:0 0 14px;display:flex;align-items:center;gap:8px;text-transform:uppercase;letter-spacing:.6px;color:#cdd3de}.card h2 .badge{font-size:12px;text-transform:none;letter-spacing:0;color:var(--muted);font-weight:500}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th{padding:8px 10px;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);border-bottom:1px solid var(--border)}td,th{text-align:left}td{padding:10px;border-bottom:1px solid #1a2130;font-size:14px}tr:last-child td{border-bottom:none}tr:hover td{background:rgba(255,255,255,.02)}.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:600}.pill.on{background:rgba(34,197,94,.14);color:#4ade80}.pill.off{background:rgba(100,116,139,.16);color:#94a3b8}.pill.warn{background:rgba(245,158,11,.15);color:#fbbf24}.gdot{width:7px;height:7px;border-radius:50%;background:currentColor}.btn{font:inherit;padding:9px 15px;border-radius:9px;border:1px solid var(--border);background:var(--panel-2);color:var(--text);cursor:pointer;transition:background .15s,border-color .15s}.btn:hover{background:#232b3b}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:#2f6fe0}.btn.small{padding:5px 10px;font-size:12px}.btn:disabled{opacity:.45;cursor:default}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}input{font:inherit;padding:9px 11px;border-radius:9px;border:1px solid var(--border);background:#0e1220;color:var(--text);min-width:260px}input:focus{outline:none;border-color:var(--accent)}.tunnel{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;background:var(--panel-2);border:1px solid var(--border);border-radius:10px;margin-bottom:8px}.kv{font-size:13px}.kv b{font-size:15px}.empty{color:var(--muted);font-size:14px;padding:6px 0}