:root {
    --bg: #0a0e14; --bg-elev: #10151f; --panel: #121926; --panel-2: #161d2b;
    --border: #212a3b; --border-soft: #1a2231;
    --text: #d7dee9; --text-dim: #8a97ab; --text-mute: #5f6c80; --heading: #f2f6fc;
    --accent: #3b82f6; --accent-2: #60a5fa; --accent-soft: rgba(59,130,246,0.12);
    --success: #22c55e; --warn: #d9a441; --danger: #f87171;
    --radius: 12px; --shadow: 0 1px 2px rgba(0,0,0,0.4), 0 8px 24px rgba(0,0,0,0.25);
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
    font-family: 'Inter','Segoe UI',system-ui,-apple-system,sans-serif;
    background: radial-gradient(1200px 600px at 50% -200px, rgba(59,130,246,0.08), transparent 60%), var(--bg);
    color: var(--text);
    min-height: 100vh;
    -webkit-font-smoothing: antialiased;
}
.hidden { display: none !important; }

.topbar { background: rgba(12,17,26,0.85); backdrop-filter: blur(10px); border-bottom:1px solid var(--border); position:sticky;top:0;z-index:20; }
.topbar-inner { max-width:1400px;margin:0 auto;padding:12px 20px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap; }
.brand { display:flex;align-items:center;gap:12px; }
.brand-mark { display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,var(--accent),#1d4ed8);color:#fff;box-shadow:0 4px 14px rgba(37,99,235,0.35); }
.brand-text { display:flex;flex-direction:column;line-height:1.2; }
.brand-title { font-size:15px;font-weight:700;color:var(--heading); }
.brand-sub { font-size:11px;color:var(--text-mute); }

.nav-tabs { display:flex;gap:4px; }
.nav-tab { padding:8px 16px;border:1px solid transparent;border-radius:8px;font-size:13px;font-weight:600;color:var(--text-dim);background:transparent;cursor:pointer;font-family:inherit;transition:all 0.15s; }
.nav-tab:hover { color:var(--heading);background:var(--panel-2); }
.nav-tab.active { color:var(--accent-2);background:var(--accent-soft);border-color:color-mix(in srgb, var(--accent) 35%, transparent); }

.container { width:100%;max-width:1400px;margin:0 auto;padding:24px 20px 48px; }

.sync-banner { background: var(--accent-soft); border:1px solid color-mix(in srgb, var(--accent) 35%, var(--border)); padding:10px 16px; border-radius:10px; font-size:13px; color:var(--accent-2); margin-bottom:20px; font-weight:600; }

.panel { background:linear-gradient(180deg,var(--panel),var(--bg-elev));border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow); }
.panel-head { margin-bottom:16px; }
.panel-title { font-size:15px;font-weight:700;color:var(--heading); }
.panel-desc { font-size:12px;color:var(--text-dim);margin-top:3px; }

.toolbar { display:flex;align-items:center;gap:8px;margin-bottom:16px;flex-wrap:wrap; }
.toolbar .text-input { padding:7px 10px;font-size:12px; }
.toolbar .text-input.filt { min-width:100px;max-width:160px; }
.btn-clear { padding:7px 14px;background:var(--panel-2);color:var(--text-dim);border:1px solid var(--border);border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:all 0.15s; }
.btn-clear:hover { border-color:var(--accent);color:var(--accent-2); }
.count { font-size:12px;color:var(--text-mute);font-weight:600;margin-left:auto;white-space:nowrap; }

.text-input { padding:9px 12px;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:13px;font-family:inherit;outline:none;transition:border-color 0.15s; }
.text-input:focus { border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft); }

.table-wrap { overflow-x:auto; }
.data-table { width:100%;border-collapse:collapse;font-size:12px; }
.data-table th { padding:9px 12px;text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:0.6px;color:var(--text-mute);font-weight:600;border-bottom:1px solid var(--border);white-space:nowrap; }
.data-table td { padding:8px 12px;border-bottom:1px solid var(--border-soft);color:var(--text);white-space:nowrap; }
.data-table tbody tr:hover { background:rgba(255,255,255,0.02); }
.data-table tbody tr.gone { opacity:0.4; }
.data-table tbody tr.gone td { text-decoration:line-through;text-decoration-color:var(--text-mute);color:var(--text-mute); }

.badge { display:inline-block;padding:2px 8px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:0.3px; }
.badge-server { background:rgba(59,130,246,0.15);color:var(--accent-2); }
.badge-switch { background:rgba(34,197,94,0.15);color:#4ade80; }
.badge-router { background:rgba(168,85,247,0.15);color:#a78bfa; }
.badge-firewall { background:rgba(248,113,113,0.15);color:var(--danger); }
.badge-patch { background:rgba(251,191,36,0.15);color:#fbbf24; }
.badge-on { background:rgba(34,197,94,0.2);color:#4ade80; }
.badge-off { background:rgba(248,113,113,0.2);color:var(--danger); }

.racks-grid { display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px; }
.rack-card { background:var(--panel-2);border:1px solid var(--border);border-radius:10px;padding:14px; }
.rack-card h3 { font-size:14px;color:var(--heading);margin-bottom:4px; }
.rack-card .aisle { font-size:11px;color:var(--accent-2);font-weight:600;margin-bottom:8px; }
.rack-card .dev-count { font-size:11px;color:var(--text-dim);margin-bottom:6px; }
.rack-card .dev-list { font-size:11px;color:var(--text-mute);display:flex;flex-wrap:wrap;gap:4px; }

.sync-info { display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px; }
.sync-stat { background:var(--panel-2);border:1px solid var(--border);border-radius:10px;padding:16px;text-align:center; }
.sync-stat .val { font-size:28px;font-weight:800;color:var(--accent-2); }
.sync-stat .lbl { font-size:11px;color:var(--text-mute);text-transform:uppercase;letter-spacing:0.6px;margin-top:4px;font-weight:600; }
