:root{--bg: #07090d;--bg-2: #0b0e14;--panel: #10141c;--panel-2: #161c28;--line: #1c2433;--text: #e8edf5;--muted: #7d8ba0;--cyan: #3ee0c8;--amber: #f5a524;--violet: #c084fc;--blue: #5b9cff;--bad: #ff6b7a;--warn: #f5a524;--ok: #3ee0c8;--side: 248px;--font: "IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;--shadow: 0 12px 40px rgba(0, 0, 0, .35)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font:14.5px/1.45 var(--font)}a{color:var(--cyan);text-decoration:none}a:hover{color:#7ff0dc}button,input,select{font:inherit}code{font-family:var(--mono);font-size:12px;background:var(--panel-2);padding:1px 6px;border-radius:4px;color:#c9d4e4}.login{min-height:100vh;display:grid;place-items:center;background:radial-gradient(900px 500px at 10% -10%,rgba(62,224,200,.14),transparent 50%),radial-gradient(700px 400px at 100% 110%,rgba(245,165,36,.1),transparent 45%),var(--bg)}.login form{width:min(420px,92vw);background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:32px;box-shadow:var(--shadow)}.login .mark{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--cyan);margin:0 0 8px}.login h1{margin:0 0 6px;font-size:28px;letter-spacing:-.03em}.login label{display:block;margin:14px 0 4px;color:var(--muted);font-size:12px;font-weight:600}.login input{width:100%;padding:10px 12px;border-radius:8px;border:1px solid var(--line);background:var(--bg-2);color:var(--text)}.login button{margin-top:18px;width:100%;background:var(--cyan);border:0;color:#04110e;font-weight:700;padding:11px;border-radius:8px;cursor:pointer}.login button:disabled{opacity:.6}.err{color:var(--bad);margin-top:10px}.shell{display:grid;grid-template-columns:var(--side) 1fr;min-height:100vh}.side{background:var(--bg-2);border-right:1px solid var(--line);overflow:auto}.brand{padding:20px 18px 16px}.brand h1{margin:0;font-size:18px;letter-spacing:-.03em}.brand p{margin:4px 0 0;color:var(--muted);font-size:12px}.search{margin:0 14px 16px}.search input,.toolbar input{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:8px 10px;color:var(--text)}.nav a{display:flex;align-items:center;gap:10px;padding:8px 16px;color:#c5d0de;border-left:2px solid transparent}.nav a:hover,.nav a.active{background:var(--panel);border-left-color:var(--cyan);color:#fff}.nav .dot{width:7px;height:7px;border-radius:99px;background:var(--muted)}.nav a[href="/clouds"] .dot{background:var(--amber)}.nav a[href="/hosts"] .dot{background:var(--cyan)}.nav a[href="/planes"] .dot{background:var(--blue)}.nav a[href="/openstack"] .dot{background:var(--violet)}.nav a[href="/kubernetes"] .dot{background:#5b9cff}.nav a[href="/drift"] .dot{background:var(--bad)}.main{min-width:0;display:flex;flex-direction:column}.top{min-height:56px;display:flex;justify-content:space-between;align-items:center;padding:10px 24px;border-bottom:1px solid var(--line);background:#07090ddb;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:sticky;top:0;z-index:2}.crumb{color:var(--muted);font-size:11px;font-family:var(--mono);letter-spacing:.04em}.who{color:var(--muted);display:flex;gap:10px;align-items:center}.who button,.btn{background:var(--panel);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:6px 11px;cursor:pointer}.btn.primary{background:var(--cyan);border-color:var(--cyan);color:#04110e;font-weight:700}.content{padding:24px 28px 72px}h2{margin:0 0 6px;font-size:26px;font-weight:650;letter-spacing:-.03em}.sub{color:var(--muted);margin:0 0 20px;max-width:68ch}.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:10px;margin:0 0 22px}.kpi{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 14px 12px}.kpi b{display:block;font-size:24px;letter-spacing:-.03em}.kpi span{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em}.kpi.warn b{color:var(--amber)}.kpi.bad b{color:var(--bad)}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin-bottom:22px}.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px 16px 14px;color:inherit;display:block}.card:hover{border-color:#2a364c}.card h3{margin:0 0 6px;font-size:16px}.card .meta{color:var(--muted);font-size:12px;display:flex;gap:8px;flex-wrap:wrap}.grid-2{display:grid;grid-template-columns:1.2fr .8fr;gap:16px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px}.panel h3{margin:0 0 12px;font-size:14px;color:var(--muted);font-weight:650;text-transform:uppercase;letter-spacing:.06em}table{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden}th,td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:top}th{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em;background:var(--panel-2)}tr:last-child td{border-bottom:0}tr:hover td{background:#141a24}.toolbar{display:flex;gap:8px;align-items:center;margin:0 0 14px;flex-wrap:wrap}.toolbar input{max-width:280px}.pill{display:inline-block;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:650;background:#1c2433;color:#c5d0de}.pill.ok{background:#3ee0c824;color:var(--cyan)}.pill.bad{background:#ff6b7a24;color:var(--bad)}.pill.warn{background:#f5a52429;color:var(--amber)}.muted{color:var(--muted)}.states{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 16px}.state{background:var(--panel-2);border:1px solid var(--line);border-radius:10px;padding:8px 10px;min-width:110px}.state small{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.06em}.alert{border:1px solid rgba(255,107,122,.35);background:#ff6b7a14;border-radius:12px;padding:12px 14px;margin-bottom:8px}.alert.warn{border-color:#f5a52459;background:#f5a52414}.alert strong{display:block}.planes{display:grid;gap:8px;margin:0 0 22px}.plane-band{display:grid;grid-template-columns:140px 1fr auto;gap:12px;align-items:center;padding:10px 14px;border-radius:10px;border:1px solid var(--line);background:var(--panel)}.plane-band .kind{font-family:var(--mono);font-size:12px;font-weight:700}.plane-band.oam{border-left:4px solid var(--amber)}.plane-band.mgmt,.plane-band.admin{border-left:4px solid var(--cyan)}.plane-band.cluster-host,.plane-band.cluster-pod{border-left:4px solid var(--blue)}.plane-band.data{border-left:4px solid var(--violet)}.plane-band.storage,.plane-band.pxeboot{border-left:4px solid #8b9bb4}.tree{display:grid;gap:10px}.cloud-node{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px 16px}.cloud-node.sub{margin-left:28px;border-left:3px solid var(--amber)}.cloud-node.offline{border-color:#ff6b7a66}.detail{display:grid;grid-template-columns:320px 1fr;gap:16px}.kv{background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden}.kv div{display:grid;grid-template-columns:120px 1fr;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line)}.kv div:last-child{border-bottom:0}.kv dt{color:var(--muted)}.graph{background:#05070b;border:1px solid var(--line);border-radius:14px;min-height:520px;margin:8px 0 16px;overflow:hidden}.graph svg{display:block}.graph .e{stroke:#2a3a4a;stroke-width:1.5;fill:none}.graph .e.carries{stroke:#3ee0c8;stroke-opacity:.55}.graph .e.overlay{stroke:#c084fc;stroke-dasharray:5 4}.graph .e.owns{stroke:#5b9cff}.graph .e.metal{stroke:#f5a524}.graph .e.on{stroke:#fff;stroke-width:2.2;stroke-opacity:1}.graph .n circle{fill:#161c28;stroke:#3ee0c8;stroke-width:1.6;cursor:pointer}.graph .n.cloud circle{fill:#2a2110;stroke:#f5a524}.graph .n.controller circle,.graph .n.controller-worker circle{fill:#14221f;stroke:#3ee0c8}.graph .n.worker circle{fill:#121a28;stroke:#5b9cff}.graph .n.storage circle{fill:#1a1824;stroke:#8b9bb4}.graph .n.plane circle{fill:#101820;stroke:#7d8ba0}.graph .n.os circle{fill:#1d1428;stroke:#c084fc}.graph .n.bad circle{fill:#2a1014;stroke:#ff6b7a}.graph .n.warn circle{stroke:#f5a524}.graph .n text{fill:#c5d0de;font-size:10px;text-anchor:middle;pointer-events:none}.graph .site-lab{fill:var(--muted);font-size:12px;font-weight:700}.nic-tree{font-family:var(--mono);font-size:12.5px}.nic-row{display:grid;grid-template-columns:160px 1fr;gap:10px;padding:6px 0;border-bottom:1px solid var(--line)}.form{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px;margin:0 0 16px;display:grid;gap:8px;max-width:520px}@media(max-width:960px){.shell{grid-template-columns:1fr}.side{display:none}.detail,.grid-2{grid-template-columns:1fr}}
