@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap");:root{--bg:#0b1214;--bg-elevated:#121c1f;--bg-panel:#162226;--border:#243338;--text:#e8f0f2;--muted:#8aa0a8;--accent:#2eb8a0;--accent-dim:#1a7a6a;--warn:#e0a14a;--danger:#d65a5a;--ok:#3ecf8e;--idle:#6b8f9c;--shadow:0 12px 40px rgba(0,0,0,0.35);--radius:10px;--nav-width:220px}*{box-sizing:border-box}body,html{margin:0;padding:0;min-height:100%;background:radial-gradient(1200px 600px at 10% -10%,rgba(46,184,160,.12),transparent 55%),radial-gradient(900px 500px at 100% 0,rgba(60,110,130,.14),transparent 50%),var(--bg);color:var(--text);font-family:IBM Plex Sans,sans-serif;font-size:15px;line-height:1.45}a{color:inherit;text-decoration:none}button,input,select{font:inherit}.shell{display:grid;grid-template-columns:var(--nav-width) 1fr;min-height:100vh}.nav{position:-webkit-sticky;position:sticky;top:0;height:100vh;padding:1.5rem 1rem;border-right:1px solid var(--border);background:rgba(11,18,20,.92);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:flex;flex-direction:column;gap:1.5rem}.brand{padding:0 .5rem}.brand-mark{font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);font-weight:600}.brand-title{margin:.25rem 0 0;font-size:1.25rem;font-weight:700}.nav-links{display:flex;flex-direction:column;gap:.35rem}.nav-link{padding:.7rem .85rem;border-radius:8px;color:var(--muted);font-weight:500;transition:background .15s ease,color .15s ease}.nav-link.active,.nav-link:hover{background:rgba(46,184,160,.12);color:var(--text)}.nav-footer{margin-top:auto;padding:.75rem;color:var(--muted);font-size:.8rem;border-top:1px solid var(--border)}.main{padding:1.75rem 2rem 3rem;max-width:1400px}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.5rem}.page-header h1{margin:0;font-size:1.75rem;letter-spacing:-.02em}.page-header p{margin:.35rem 0 0;color:var(--muted)}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:.85rem;gap:.85rem;margin-bottom:1.5rem}.stat{background:linear-gradient(180deg,rgba(255,255,255,.03),transparent),var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.1rem}.stat-label{color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.06em}.stat-value{margin-top:.35rem;font-size:1.8rem;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.panel{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:.95rem 1.15rem;border-bottom:1px solid var(--border)}.panel-header h2{margin:0;font-size:1rem;font-weight:600}.panel-body{padding:1rem 1.15rem}.badge{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .55rem;border-radius:999px;font-size:.75rem;font-weight:600;letter-spacing:.02em;border:1px solid transparent}.badge:before{content:"";width:.45rem;height:.45rem;border-radius:50%;background:currentColor}.badge-online{color:var(--ok);background:rgba(62,207,142,.12);border-color:rgba(62,207,142,.25)}.badge-offline{color:var(--muted);background:rgba(138,160,168,.12);border-color:rgba(138,160,168,.25)}.badge-attention{color:var(--warn);background:rgba(224,161,74,.12);border-color:rgba(224,161,74,.28)}.badge-running{color:var(--accent);background:rgba(46,184,160,.12);border-color:rgba(46,184,160,.28)}.badge-idle{color:var(--idle);background:rgba(107,143,156,.14);border-color:rgba(107,143,156,.28)}.table{width:100%;border-collapse:collapse}.table td,.table th{text-align:left;padding:.75rem .65rem;border-bottom:1px solid var(--border);vertical-align:middle}.table th{color:var(--muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;font-weight:600}.table tr:hover td{background:rgba(255,255,255,.02)}.mono{font-family:IBM Plex Mono,monospace;font-size:.85em}.grid-2{display:grid;grid-template-columns:1.2fr 1fr;grid-gap:1rem;gap:1rem}.metric-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:.75rem;gap:.75rem}.metric{padding:.85rem .95rem;border:1px solid var(--border);border-radius:8px;background:var(--bg-elevated)}.metric-label{color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.05em}.metric-value{margin-top:.3rem;font-size:1.25rem;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.map-wrap{height:560px;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border)}.map-wrap .leaflet-container{width:100%;height:100%;background:#0e171a;font-family:IBM Plex Sans,sans-serif}.empty{color:var(--muted);padding:2rem 1rem;text-align:center}.error-banner{padding:.9rem 1rem;border-radius:8px;border:1px solid rgba(214,90,90,.35);background:rgba(214,90,90,.12);color:#ffc9c9;margin-bottom:1rem}.refresh-note{color:var(--muted);font-size:.85rem}.btn-ghost,.btn-primary{border-radius:8px;padding:.55rem .9rem;border:1px solid var(--border);cursor:pointer;font-weight:600}.btn-primary{background:var(--accent);color:#041411;border-color:transparent}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.btn-ghost{background:transparent;color:var(--muted)}.btn-ghost:hover{color:var(--text);background:rgba(255,255,255,.04)}.air-layout{display:grid;grid-template-columns:280px 1fr;grid-gap:1rem;gap:1rem;min-height:calc(100vh - 160px)}.air-sidebar{max-height:calc(100vh - 160px)}.air-sessions,.air-sidebar{display:flex;flex-direction:column}.air-sessions{gap:.45rem;overflow:auto;max-height:220px}.air-session{text-align:left;background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;padding:.65rem .75rem;color:var(--text);cursor:pointer}.air-session.active,.air-session:hover{border-color:rgba(46,184,160,.45);background:rgba(46,184,160,.08)}.air-session-meta{margin-top:.2rem;color:var(--muted);font-size:.75rem}.air-main{display:flex;flex-direction:column;min-height:0;max-height:calc(100vh - 160px)}.air-log{flex:1 1;overflow:auto;padding:.5rem .75rem;background:linear-gradient(180deg,rgba(0,0,0,.2),transparent 40%),#0a1012;min-height:360px}.air-log-empty{color:var(--muted);padding:2rem 1rem;text-align:center}.air-line{border-bottom:1px solid rgba(36,51,56,.7);padding:.25rem 0}.air-line summary{display:flex;gap:.55rem;align-items:baseline;cursor:pointer;list-style:none}.air-line summary::-webkit-details-marker{display:none}.air-time{color:var(--muted);min-width:4.2rem}.air-kind{font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;color:var(--accent);min-width:4.2rem}.kind-command .air-kind{color:var(--warn)}.kind-session .air-kind{color:#7eb6ff}.kind-error .air-kind{color:var(--danger)}.kind-system .air-kind{color:var(--muted)}.air-proto{color:var(--ok);min-width:2.8rem}.air-summary{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1;min-width:0}.kind-command .air-summary{white-space:normal;word-break:break-word;color:#f0d9a8}.air-detail{margin:.35rem 0 .5rem;padding:.65rem .75rem;background:rgba(0,0,0,.35);border-radius:6px;color:#c5d5da;font-size:.78rem;overflow:auto;max-height:240px}.air-cmd-bar{display:flex;gap:.5rem;padding:.75rem 1rem;border-top:1px solid var(--border);background:var(--bg-elevated)}.air-input{background:#0b1214;border:1px solid var(--border);border-radius:8px;color:var(--text);padding:.55rem .75rem;width:100%}.air-quick{display:flex;flex-wrap:wrap;gap:.4rem;padding:0 1rem .9rem;background:var(--bg-elevated)}.air-chip{border:1px solid var(--border);background:rgba(255,255,255,.03);color:var(--muted);border-radius:999px;padding:.28rem .65rem;font-size:.75rem;font-family:IBM Plex Mono,monospace;cursor:pointer}.air-chip:hover:not(:disabled){color:var(--text);border-color:rgba(46,184,160,.4)}.air-chip:disabled{opacity:.4;cursor:not-allowed}@media (max-width:960px){.shell{grid-template-columns:1fr}.nav{position:relative;height:auto;align-items:center}.nav,.nav-links{flex-direction:row;flex-wrap:wrap}.nav-footer{width:100%;margin-top:0}.main{padding:1.25rem}.air-layout,.grid-2,.metric-grid,.stats{grid-template-columns:1fr}.air-main,.air-sidebar{max-height:none}}