:root{--bg-deep: #0b0d10;--bg: #101317;--bg-elevated: #161a20;--surface: #1a1f27;--surface-2: #222833;--line: rgba(255, 255, 255, .08);--line-strong: rgba(255, 255, 255, .14);--text: #e8eaed;--text-dim: #9aa3ad;--muted: #6b7580;--accent: #5b9fd4;--accent-dim: rgba(91, 159, 212, .18);--accent-strong: #7eb8e8;--ok: #3dd68c;--ok-dim: rgba(61, 214, 140, .14);--warn: #e6b84d;--warn-dim: rgba(230, 184, 77, .14);--bad: #e85d5d;--bad-dim: rgba(232, 93, 93, .14);--focus: #7eb8e8;--radius: 6px;--radius-lg: 10px;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--dur: .18s;--ease: cubic-bezier(.22, 1, .36, 1);--font: "IBM Plex Sans", "Segoe UI", sans-serif;--font-display: "Space Grotesk", "IBM Plex Sans", sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--topbar-h: 56px;--nav-w: 220px;color:var(--text);background:var(--bg-deep);font-family:var(--font);font-size:14px;line-height:1.45}@media(prefers-reduced-motion:reduce){:root{--dur: 1ms}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:radial-gradient(1200px 600px at 10% -10%,rgba(91,159,212,.07),transparent 55%),radial-gradient(900px 500px at 100% 0%,rgba(61,214,140,.03),transparent 50%),linear-gradient(180deg,#0e1115 0%,var(--bg-deep) 40%,#0a0c0f 100%);color:var(--text)}button,input,select,textarea{font:inherit;color:var(--text);border-radius:var(--radius);border:1px solid var(--line-strong);background:var(--surface);padding:.5rem .75rem;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease)}button{cursor:pointer;background:var(--surface-2)}button:hover:not(:disabled){border-color:#ffffff47;background:#2a3140}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--focus);outline-offset:2px}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent);color:#0b0d10;border-color:var(--accent);font-weight:600}button.primary:hover:not(:disabled){background:var(--accent-strong)}button.danger{background:var(--bad-dim);color:var(--bad);border-color:#e85d5d59}button.ghost{background:transparent;border-color:transparent}button.ghost:hover:not(:disabled){background:var(--accent-dim);border-color:transparent}input,select{min-width:0;width:100%;max-width:280px}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.app-shell{display:grid;grid-template-rows:var(--topbar-h) 1fr;min-height:100vh}.topbar{display:flex;align-items:center;gap:var(--space-4);padding:0 var(--space-4);border-bottom:1px solid var(--line);background:#101317eb;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:sticky;top:0;z-index:40}.brand-block{display:flex;align-items:baseline;gap:var(--space-2);min-width:140px}.brand{font-family:var(--font-display);font-weight:700;font-size:1.15rem;letter-spacing:.06em;text-transform:uppercase;margin:0}.brand-tag{font-size:.7rem;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}.topbar-metrics{display:flex;gap:var(--space-5);flex:1;overflow-x:auto;align-items:center}.top-metric{display:flex;flex-direction:column;gap:2px;min-width:0}.top-metric .lbl{font-size:.65rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.top-metric .val{font-family:var(--font-mono);font-size:.92rem;font-weight:500;white-space:nowrap}.topbar-actions{display:flex;gap:var(--space-2);align-items:center;margin-left:auto}.pulse-dot{width:8px;height:8px;border-radius:50%;background:var(--ok);box-shadow:0 0 #3dd68c80}.pulse-dot.live:not(.reduced){animation:pulse-ring 2.4s var(--ease) infinite}.pulse-dot.stale{background:var(--warn);box-shadow:none;animation:none}.pulse-dot.bad{background:var(--bad);box-shadow:none;animation:none}@keyframes pulse-ring{0%{box-shadow:0 0 #3dd68c73}70%{box-shadow:0 0 0 8px #3dd68c00}to{box-shadow:0 0 #3dd68c00}}.body-grid{display:grid;grid-template-columns:var(--nav-w) minmax(0,1fr);min-height:calc(100vh - var(--topbar-h))}.side-nav{border-right:1px solid var(--line);padding:var(--space-4) var(--space-3);display:flex;flex-direction:column;gap:var(--space-1);background:#0e111599}.side-nav button{text-align:left;width:100%;background:transparent;border:1px solid transparent;padding:.65rem .75rem;border-radius:var(--radius);color:var(--text-dim);font-weight:500}.side-nav button .nav-blurb{display:block;font-size:.72rem;color:var(--muted);font-weight:400;margin-top:2px}.side-nav button.active{background:var(--accent-dim);border-color:#5b9fd459;color:var(--text)}.side-nav button:hover:not(.active):not(:disabled){background:#ffffff08}.nav-foot{margin-top:auto;display:grid;gap:var(--space-2);padding-top:var(--space-4)}.main{padding:var(--space-4) var(--space-5) var(--space-6);min-width:0;animation:fade-in var(--dur) var(--ease)}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.page-title{font-family:var(--font-display);font-size:1.45rem;font-weight:600;margin:0 0 .2rem;letter-spacing:-.01em}.page-lead{color:var(--text-dim);margin:0 0 var(--space-4);max-width:48rem}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--space-4);min-width:0}.panel h2,.panel h3{margin:0 0 var(--space-3);font-family:var(--font-display);font-size:1rem;font-weight:600;letter-spacing:.02em}.stack{display:grid;gap:var(--space-4)}.row{display:flex;gap:var(--space-2);flex-wrap:wrap;align-items:center}.muted{color:var(--muted);font-size:.88rem}.split-2{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(280px,1fr);gap:var(--space-4)}@media(max-width:1100px){.split-2{grid-template-columns:1fr}}.status-pill{display:inline-flex;align-items:center;gap:.35rem;padding:.15rem .55rem;border-radius:4px;font-size:.75rem;font-weight:600;letter-spacing:.02em;border:1px solid transparent}.status-pill.ok{background:var(--ok-dim);color:var(--ok);border-color:#3dd68c4d}.status-pill.bad{background:var(--bad-dim);color:var(--bad);border-color:#e85d5d4d}.status-pill.warn{background:var(--warn-dim);color:var(--warn);border-color:#e6b84d4d}.status-pill.muted{background:#ffffff0a;color:var(--text-dim);border-color:var(--line)}.status-icon{font-size:.55rem;line-height:1}.banner{border-radius:var(--radius);padding:.7rem .9rem;border:1px solid var(--line);margin-bottom:var(--space-3)}.banner.ok{background:var(--ok-dim);border-color:#3dd68c4d;color:var(--ok)}.banner.bad{background:var(--bad-dim);border-color:#e85d5d4d;color:var(--bad)}.banner.warn{background:var(--warn-dim);border-color:#e6b84d4d;color:var(--warn)}.banner.info{background:var(--accent-dim);border-color:#5b9fd44d;color:var(--accent-strong)}.toast{position:sticky;top:calc(var(--topbar-h) + 8px);z-index:30;animation:fade-in var(--dur) var(--ease)}.metric-label{font-size:.65rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.metric-value{font-size:1.1rem;font-weight:600;margin-top:2px}.metric-unit{font-size:.75rem;color:var(--muted);margin-left:.35rem;font-weight:400}.metric.stale .metric-value{color:var(--warn)}.skeleton-block{display:grid;gap:.55rem;padding:.5rem 0}.skeleton-line{height:12px;border-radius:4px;background:linear-gradient(90deg,var(--surface-2),#2a3140,var(--surface-2));background-size:200% 100%;animation:shimmer 1.4s linear infinite}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.empty-state{text-align:center;padding:2.5rem 1rem;color:var(--muted)}.empty-title{font-family:var(--font-display);color:var(--text-dim);margin-bottom:.35rem}.cascade-map{position:relative;min-height:320px;height:min(52vh,480px);background:linear-gradient(var(--line) 1px,transparent 1px) 0 0 / 24px 24px,linear-gradient(90deg,var(--line) 1px,transparent 1px) 0 0 / 24px 24px,var(--bg-elevated);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden}.cascade-svg{width:100%;height:100%;display:block}.hop-node{cursor:pointer}.hop-node rect{fill:var(--surface);stroke:var(--line-strong);stroke-width:1.5;transition:stroke var(--dur),fill var(--dur)}.hop-node.selected rect{stroke:var(--accent);fill:#1e2836}.hop-node.ok rect{stroke:#3dd68c8c}.hop-node.bad rect{stroke:#e85d5db3}.hop-node.warn rect{stroke:#e6b84da6}.hop-node.off rect{stroke:var(--line);fill:#14181f;opacity:.7}.hop-node text{fill:var(--text);font-family:var(--font);font-size:12px;pointer-events:none}.hop-node .role{fill:var(--muted);font-size:10px}.link-path{fill:none;stroke:#9aa3ad59;stroke-width:2;stroke-linecap:round}.link-path.active{stroke:#5b9fd48c}.link-path.flow{stroke:var(--accent)}.link-path.error{stroke:var(--bad);stroke-dasharray:6 4}.flow-dot{fill:var(--accent-strong)}.flow-dot.off{display:none}.route-list{display:grid;gap:var(--space-3);max-height:min(70vh,640px);overflow:auto}.route-item{border:1px solid var(--line);border-radius:var(--radius);padding:var(--space-3);background:var(--bg-elevated);cursor:pointer;transition:border-color var(--dur),background var(--dur)}.route-item:hover,.route-item:focus-visible{border-color:#5b9fd466}.route-item.selected{border-color:var(--accent);background:#1a2330}.route-item .path-mini{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center;margin:.5rem 0;font-size:.8rem;color:var(--text-dim)}.route-item .path-mini .hop{border:1px solid var(--line);padding:.15rem .4rem;border-radius:3px;background:var(--surface)}.route-item .path-mini .arr{color:var(--muted)}.toolbar{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center;margin-bottom:var(--space-3)}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:.7rem .5rem;border-bottom:1px solid var(--line);vertical-align:middle;font-size:.9rem}.table th{color:var(--muted);font-size:.68rem;text-transform:uppercase;letter-spacing:.07em;font-weight:600}.table tbody tr:hover{background:#ffffff05}.table tbody tr.selected{background:var(--accent-dim)}.spark{display:block;width:88px;height:28px}.user-drawer{position:fixed;top:var(--topbar-h);right:0;bottom:0;width:min(420px,100vw);background:var(--surface);border-left:1px solid var(--line);z-index:50;padding:var(--space-4);overflow:auto;animation:slide-in var(--dur) var(--ease);box-shadow:-12px 0 40px #00000059}@keyframes slide-in{0%{transform:translate(12px);opacity:0}to{transform:none;opacity:1}}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:45;animation:fade-in var(--dur) var(--ease)}.traffic-chart{width:100%;height:140px}.field{display:grid;gap:.3rem;margin-bottom:.75rem}.field label{font-size:.82rem;font-weight:600;color:var(--text-dim)}.field-error{color:var(--bad);font-size:.82rem}.field-hint{color:var(--muted);font-size:.78rem}.wizard{border:1px dashed var(--line-strong);border-radius:var(--radius);padding:var(--space-4);background:var(--bg-elevated);display:grid;gap:var(--space-3)}.wizard-steps{display:flex;gap:.4rem;flex-wrap:wrap}.wizard-steps span{font-size:.72rem;padding:.2rem .5rem;border-radius:3px;background:var(--surface-2);color:var(--muted)}.wizard-steps span.on{background:var(--accent-dim);color:var(--accent-strong);font-weight:600}.diag-step{display:grid;grid-template-columns:130px 1fr;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--line)}.diag-step:last-child{border-bottom:0}.waiting-bar{height:3px;background:var(--surface-2);border-radius:2px;overflow:hidden;margin:var(--space-3) 0}.waiting-bar>span{display:block;height:100%;width:35%;background:var(--accent);animation:wait-slide 1.2s ease-in-out infinite}@keyframes wait-slide{0%{transform:translate(-100%)}to{transform:translate(320%)}}details.tech{margin-top:var(--space-3);border-top:1px solid var(--line);padding-top:var(--space-3)}details.tech summary{cursor:pointer;color:var(--muted);font-weight:600;font-size:.85rem}.report{margin:.5rem 0 0;padding:.65rem .75rem;background:var(--bg-deep);border:1px solid var(--line);border-radius:var(--radius);font-family:var(--font-mono);font-size:.72rem;line-height:1.45;white-space:pre-wrap;overflow:auto;max-height:320px;color:var(--text-dim)}.login{min-height:100vh;display:grid;place-items:center;padding:1rem;background:radial-gradient(800px 400px at 50% 0%,rgba(91,159,212,.12),transparent 60%),var(--bg-deep)}.login form{width:min(380px,94vw);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--space-5);display:grid;gap:var(--space-3)}.login h1{font-family:var(--font-display);margin:0;letter-spacing:.04em;text-transform:uppercase;font-size:1.35rem}.share-card{display:grid;grid-template-columns:minmax(0,1fr) 180px;gap:var(--space-4);border:1px solid var(--line);border-radius:var(--radius);padding:var(--space-4);margin-top:var(--space-3);background:var(--bg-elevated)}.share-main{min-width:0}.qr-wrap{background:#fff;border-radius:var(--radius);padding:.5rem;display:inline-flex}.btn-link{color:var(--accent-strong);text-decoration:none;padding:.5rem .75rem;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface)}.assistant-dock{position:fixed;right:16px;bottom:16px;z-index:60;display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-2)}.assistant-fab{display:flex;align-items:center;gap:.65rem;padding:.45rem .75rem .45rem .45rem;background:var(--surface);border:1px solid var(--line-strong);border-radius:999px;box-shadow:0 8px 28px #0006;cursor:pointer;max-width:280px}.assistant-fab:hover{border-color:var(--accent)}.assistant-avatar-wrap{width:48px;height:48px;flex-shrink:0;border-radius:50%;overflow:hidden;background:#1c2430;border:1px solid var(--line-strong)}.assistant-bubble{font-size:.78rem;color:var(--text-dim);line-height:1.3;text-align:left}.assistant-panel{width:min(400px,calc(100vw - 24px));height:min(560px,calc(100vh - 100px));background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-lg);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 16px 48px #00000080;animation:slide-in var(--dur) var(--ease)}.assistant-panel header{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3);border-bottom:1px solid var(--line)}.assistant-panel header h3{margin:0;font-family:var(--font-display);font-size:.95rem;flex:1}.chat-log{flex:1;overflow:auto;padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)}.chat-msg{padding:.55rem .7rem;border-radius:var(--radius);font-size:.85rem;max-width:92%;line-height:1.4}.chat-msg.user{align-self:flex-end;background:var(--accent-dim);border:1px solid rgba(91,159,212,.3)}.chat-msg.bot{align-self:flex-start;background:var(--bg-elevated);border:1px solid var(--line)}.chat-msg .meta{font-size:.7rem;color:var(--muted);margin-top:.3rem}.chat-compose{display:flex;gap:var(--space-2);padding:var(--space-3);border-top:1px solid var(--line)}.chat-compose input{flex:1;max-width:none}.event-feed{display:grid;gap:.4rem;max-height:120px;overflow:auto;margin-top:var(--space-2)}.event-item{display:grid;grid-template-columns:56px 1fr;gap:.4rem;font-size:.75rem;padding:.35rem 0;border-bottom:1px solid var(--line)}.event-item .lvl{font-weight:600;text-transform:uppercase;letter-spacing:.04em;font-size:.65rem}.event-item .lvl.bad{color:var(--bad)}.event-item .lvl.warn{color:var(--warn)}.event-item .lvl.ok{color:var(--ok)}.event-item .lvl.info{color:var(--accent)}@media(max-width:860px){.body-grid{grid-template-columns:1fr}.side-nav{flex-direction:row;flex-wrap:wrap;border-right:0;border-bottom:1px solid var(--line)}.side-nav button{width:auto}.nav-foot{width:100%;margin-top:0;display:flex;flex-wrap:wrap}.topbar{flex-wrap:wrap;height:auto;min-height:var(--topbar-h);padding:.5rem var(--space-3)}.topbar-metrics{order:3;width:100%;gap:var(--space-3);padding-bottom:.35rem}.diag-step,.share-card{grid-template-columns:1fr}.main{padding:var(--space-3)}input,select{max-width:none}.cascade-map{height:260px;min-height:220px}.table .hide-sm{display:none}}
