@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/fonts/bricolage-grotesque-600.woff2) format("woff2")}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/fonts/bricolage-grotesque-700.woff2) format("woff2")}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:800;font-display:swap;src:url(/assets/fonts/bricolage-grotesque-800.woff2) format("woff2")}@font-face{font-family:DM Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/dm-sans-400.woff2) format("woff2")}@font-face{font-family:DM Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/fonts/dm-sans-500.woff2) format("woff2")}@font-face{font-family:DM Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/fonts/dm-sans-600.woff2) format("woff2")}@font-face{font-family:DM Sans;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/fonts/dm-sans-700.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/jetbrains-mono-400.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/fonts/jetbrains-mono-500.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/fonts/jetbrains-mono-600.woff2) format("woff2")}:root{--bg: #F3F5FA;--panel: #FFFFFF;--panel-2: #EEF1F8;--bubble: #E9EDF6;--bubble-line: #C9D1E3;--line: #D7DCE8;--fg: #141A2A;--muted: #5A6377;--faint: #9AA3B8;--accent: #2A55E6;--accent-ink: #FFFFFF;--accent-soft: rgba(42, 85, 230, .12);--good: #1E8E5A;--warn: #C27A06;--bad: #C8322B;--unknown: #8A93A8;--sim: #7C3AED;--c-1: #2A55E6;--c-2: #118C80;--c-3: #C26A0E;--c-4: #C2297B;--c-5: #4F8A12;--c-6: #7C3AED;--c-7: #B8740A;--c-8: #0E7490;--display: "Bricolage Grotesque", "Segoe UI", Arial, sans-serif;--body: "DM Sans", "Segoe UI", Arial, sans-serif;--mono: "JetBrains Mono", ui-monospace, Menlo, Consolas, monospace;--shadow: 0 10px 28px rgba(20, 26, 42, .1);--r: 14px;--r2: 10px;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #0B1020;--panel: #121930;--panel-2: #182140;--bubble: #101830;--bubble-line: #2A3558;--line: #273153;--fg: #E8ECF7;--muted: #8E98B6;--faint: #5C6686;--accent: #6E8EFF;--accent-ink: #0B1020;--accent-soft: rgba(110, 142, 255, .16);--good: #3CCB7F;--warn: #F2B134;--bad: #F26D5B;--unknown: #6F7A99;--sim: #C58BFF;--c-1: #6E8EFF;--c-2: #35C4B5;--c-3: #F0A35E;--c-4: #E86FAF;--c-5: #9BD35A;--c-6: #C58BFF;--c-7: #F2C14E;--c-8: #4FD1E0;--shadow: 0 10px 30px rgba(0, 0, 0, .35);color-scheme:dark}}:root[data-theme=dark]{--bg: #0B1020;--panel: #121930;--panel-2: #182140;--bubble: #101830;--bubble-line: #2A3558;--line: #273153;--fg: #E8ECF7;--muted: #8E98B6;--faint: #5C6686;--accent: #6E8EFF;--accent-ink: #0B1020;--accent-soft: rgba(110, 142, 255, .16);--good: #3CCB7F;--warn: #F2B134;--bad: #F26D5B;--unknown: #6F7A99;--sim: #C58BFF;--c-1: #6E8EFF;--c-2: #35C4B5;--c-3: #F0A35E;--c-4: #E86FAF;--c-5: #9BD35A;--c-6: #C58BFF;--c-7: #F2C14E;--c-8: #4FD1E0;--shadow: 0 10px 30px rgba(0, 0, 0, .35);color-scheme:dark}.main{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:14px;align-items:start;padding-bottom:20px}@media (max-width: 1000px){.main{grid-template-columns:minmax(0,1fr)}}.mapwrap{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);overflow:auto;max-height:calc(100vh - 230px);box-shadow:var(--shadow)}.mapwrap svg{display:block;width:100%;min-width:860px;height:auto;min-height:420px}.mapwrap.graph{overflow:hidden}.mapwrap.graph svg{min-width:0;touch-action:none;max-height:calc(100vh - 230px)}.maptools{position:sticky}@media (max-width: 1000px){.mapwrap{max-height:none}.mapwrap.graph svg{max-height:none}}.maptools{position:absolute;left:12px;bottom:12px;display:flex;gap:8px;align-items:center;font-size:11px;color:var(--muted);background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:4px 6px 4px 4px}.maptools .btn{padding:3px 9px;font-size:11px;border-radius:999px}.inspector{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);min-width:0;display:flex;flex-direction:column;max-height:calc(100vh - 170px);box-shadow:var(--shadow)}@media (max-width: 1000px){.inspector{max-height:none}}.tabs{display:flex;gap:2px;padding:8px 8px 0;border-bottom:1px solid var(--line);overflow-x:auto}.tabs button{padding:8px 12px;border-radius:var(--r2) var(--r2) 0 0;font-weight:600;font-size:13px;color:var(--muted);white-space:nowrap;border-bottom:2px solid transparent}.tabs button[aria-selected=true]{color:var(--fg);border-bottom-color:var(--accent)}.tabs button:disabled{opacity:.45;cursor:not-allowed}.panel{padding:14px;overflow:auto;min-height:0}.panel h2{font-size:17px;font-weight:700;margin-bottom:2px;overflow-wrap:anywhere}.panel h3{font-size:12px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--muted);margin:16px 0 6px}.panel h3:first-child{margin-top:0}.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:13px;margin:8px 0 0}.kv dt{color:var(--muted)}.kv dd{margin:0;min-width:0;overflow-wrap:anywhere}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border-radius:999px;border:1px solid var(--line);background:var(--panel-2);font-family:var(--mono);font-size:11.5px;cursor:pointer}.chip:hover,.chip.on{border-color:var(--accent);color:var(--accent)}.chip .sq{width:8px;height:8px;border-radius:2px;background:var(--accent);display:inline-block}.status{display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:12.5px}.status i{width:9px;height:9px;border-radius:50%;display:inline-block}.st-up i{background:var(--good)}.st-stale i{background:var(--warn)}.st-unknown i{background:var(--unknown)}.st-degraded i{background:var(--bad)}.subcard{border:1px solid var(--line);border-radius:var(--r2);padding:8px 10px;margin-bottom:8px;background:var(--panel-2)}.subcard .nm{font-family:var(--mono);font-size:12px;font-weight:600;overflow-wrap:anywhere}.subcard .pt{font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:4px;white-space:pre-wrap;overflow-wrap:anywhere}.subcard .tg{font-size:12px;color:var(--muted);margin-top:4px}.note{font-size:12.5px;color:var(--muted);border-left:3px solid var(--line);padding:4px 10px;margin-top:8px}.note.warn{border-left-color:var(--warn)}.evidence{font-family:var(--mono);font-size:11px;color:var(--muted);overflow-wrap:anywhere}.empty{color:var(--muted);font-size:13px;padding:8px 0}.list{list-style:none;margin:0;padding:0}.svcrow{display:flex;justify-content:space-between;gap:8px;padding:3px 0;font-size:13px;align-items:baseline}.acchead{font-weight:600;margin:8px 0 4px}.linkbtn{font-family:var(--mono);font-size:12px;font-weight:600;padding:0;text-align:left;color:var(--accent)}.src-table{width:100%;border-collapse:collapse;font-size:12.5px}.src-table th{text-align:left;font-size:11px;letter-spacing:.5px;text-transform:uppercase;color:var(--muted);padding:6px 4px;border-bottom:1px solid var(--line)}.src-table td{padding:7px 4px;border-bottom:1px solid var(--line);vertical-align:top}.src-table td:first-child{font-weight:600;white-space:nowrap}.phases{display:grid;gap:8px;margin-top:4px}.phase{display:grid;grid-template-columns:28px 1fr;gap:8px;border:1px solid var(--line);border-radius:var(--r2);padding:8px 10px;background:var(--panel-2);font-size:12.5px}.phase .n{font-family:var(--display);font-weight:800;font-size:18px;color:var(--accent);line-height:1}.phase b{display:block}.toasts{position:fixed;right:max(16px,env(safe-area-inset-right,0px));bottom:max(16px,env(safe-area-inset-bottom,0px));display:grid;gap:8px;z-index:20;max-width:min(380px,calc(100vw - 32px))}.toast{background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:var(--r2);padding:9px 12px;font-size:12.5px;box-shadow:var(--shadow);animation:toastin .3s ease-out}.toast.good{border-left-color:var(--good)}.toast.warn{border-left-color:var(--warn)}.toast.sim{border-left-color:var(--sim)}.toast b{display:block;font-size:12px}@keyframes toastin{0%{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}svg text{fill:var(--fg)}.bubble rect{fill:var(--bubble);stroke:var(--bubble-line);stroke-width:1.5}.bubble.hub rect{fill:var(--accent-soft);stroke:var(--accent)}.bubble.ghost rect{fill:none;stroke:var(--faint);stroke-dasharray:6 6}.bubble .bt{font:700 15px var(--display)}.bubble .bs{font:500 11px var(--mono);fill:var(--muted)}.bubble .bnote{font:400 12px var(--body);fill:var(--muted)}.bubble{cursor:pointer}.node rect.box{fill:var(--panel);stroke:var(--line);stroke-width:1.5;cursor:pointer;transition:stroke .15s}.node:hover rect.box{stroke:var(--accent)}.node.sel rect.box{stroke:var(--accent);stroke-width:2.5}.node.inferred rect.box{stroke-dasharray:3 4}.node .nn{font:600 13.5px var(--mono);pointer-events:none}.node .ns{font:400 11px var(--body);fill:var(--muted);pointer-events:none}.node .nb{font:500 10.5px var(--mono);fill:var(--muted);pointer-events:none}.node .hb{fill:var(--good)}.node.stale .hb{fill:var(--warn)}.node.unknown .hb{fill:var(--unknown)}.node.degraded .hb{fill:var(--bad)}.node .ring{fill:none;stroke:var(--good);stroke-width:2;opacity:0}.node .ring.go{animation:ring .9s ease-out}@keyframes ring{0%{opacity:.9;r:6}to{opacity:0;r:18}}.edge{fill:none;stroke-width:2;opacity:.75;transition:opacity .2s}.edge.sub{stroke-dasharray:6 5}.edge.dim{opacity:.12}.edge.hot{opacity:1;stroke-width:3.5}.bus rect{fill:var(--accent);stroke:none;cursor:pointer}.bus.flash rect{filter:drop-shadow(0 0 10px var(--accent))}.bus text{font:700 12px var(--mono)}.bus .bl{fill:var(--accent)}.bus .bl2{font:400 11px var(--body);fill:var(--muted)}.chipg rect{fill:var(--panel);stroke:var(--line)}.chipg text{font:500 10.5px var(--mono);fill:var(--muted)}.chipg{cursor:pointer}.chipg:hover rect{stroke:var(--accent)}.lb{fill:var(--faint);stroke:var(--panel);stroke-width:1.5}.linf{fill:none;stroke:var(--faint);stroke-dasharray:3 3}.legend text{font:400 11px var(--body);fill:var(--muted)}.legend .lt{font:700 11px var(--body);fill:var(--fg)}.type rect{fill:var(--panel);stroke:var(--line);stroke-width:1.5;cursor:pointer}.type:hover rect,.type.sel rect{stroke:var(--accent)}.type.sel rect{stroke-width:2.5}.type.unregistered rect{stroke-dasharray:4 4}.type .tn{font:600 12.5px var(--mono);pointer-events:none}.type .tc{font:500 10.5px var(--mono);fill:var(--muted);pointer-events:none}.colhead{font:700 12px var(--body);fill:var(--muted);letter-spacing:.8px;text-transform:uppercase}.dot{pointer-events:none}.hull{fill:var(--bubble);stroke:var(--bubble-line);stroke-width:1.5;opacity:.9;cursor:pointer;stroke-linejoin:round;animation:hullin .8s ease-out}.hull.hub{fill:var(--accent-soft);stroke:var(--accent)}.hull:hover{stroke:var(--accent)}@keyframes hullin{0%{opacity:0}to{opacity:.9}}.hull-label{font:700 12px var(--display);fill:var(--muted);pointer-events:none;paint-order:stroke;stroke:var(--bg);stroke-width:3px;stroke-linejoin:round}.glink{stroke:var(--line);stroke-width:1.5;opacity:.7;transition:opacity .2s}.glink.pub{stroke-width:2}.glink.sub{stroke-dasharray:5 4;stroke-width:1.8}.glink.bus,.glink.platform{opacity:.3}.glink.dim{opacity:.07}.glink.hot{opacity:1;stroke-width:3}.gnode{cursor:grab;transition:opacity .2s;outline:none}.gnode:focus-visible circle.body{stroke:var(--accent);stroke-width:3}.gnode.dragging{cursor:grabbing}.gnode circle.body{fill:var(--panel);stroke:var(--line);stroke-width:2;transition:stroke .15s}.gnode.service circle.body{stroke:var(--unknown)}.gnode.service.up circle.body{stroke:var(--good)}.gnode.service.stale circle.body{stroke:var(--warn)}.gnode.service.degraded circle.body{stroke:var(--bad)}.gnode.service.inferred circle.body{stroke-dasharray:3 3}.gnode.bus circle.body{fill:var(--accent);stroke:none;filter:drop-shadow(0 0 10px var(--accent-soft))}.gnode.type circle.body{stroke:none}.gnode.platform circle.body{fill:var(--panel-2);stroke:var(--line)}.gnode .gring{fill:none;stroke:var(--good);stroke-width:2;opacity:0}.glabel{font:500 11.5px var(--mono);fill:var(--fg);pointer-events:none;paint-order:stroke;stroke:var(--bg);stroke-width:3px;stroke-linejoin:round}.gnode.type .glabel,.gnode.platform .glabel{font-size:10px;fill:var(--muted)}.gnode.bus .glabel{font-weight:700;font-size:12px;fill:var(--fg)}.gnode.dim{opacity:.15}.gnode.hot circle.body{stroke:var(--accent);stroke-width:3}.gnode.pinned circle.body{stroke-dasharray:3 3}@media (prefers-reduced-motion: reduce){.pill .dot,.node .ring.go,.toast,.hull{animation:none}}.feedtools{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-bottom:8px}.feedtools label{display:inline-flex;align-items:center;gap:5px;cursor:pointer}.row{display:grid;grid-template-columns:52px 1fr auto;gap:8px;align-items:baseline;padding:7px 6px;border-top:1px solid var(--line);cursor:pointer;font-size:12.5px}.row:hover{background:var(--panel-2)}.row .t{font-family:var(--mono);font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.row .w{min-width:0}.row .src{color:var(--muted)}.row .dt{font-family:var(--mono);font-weight:600;overflow-wrap:anywhere}.row .to{font-size:11px;color:var(--muted);margin-top:2px;overflow-wrap:anywhere}.row .tag{font-size:10px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;padding:2px 6px;border-radius:999px;border:1px solid}.tag.sim{color:var(--sim);border-color:var(--sim)}.tag.hb,.tag.arc{color:var(--muted);border-color:var(--line)}.tag.red{color:var(--bad);border-color:var(--bad);margin-left:4px}.row.new{animation:rowin .6s ease-out}@keyframes rowin{0%{background:var(--accent-soft)}to{background:transparent}}pre.env{margin:0 0 6px;padding:10px;border-radius:var(--r2);background:var(--panel-2);border:1px solid var(--line);font-family:var(--mono);font-size:11px;line-height:1.5;overflow:auto;white-space:pre}.dot.sim{stroke:var(--panel);stroke-width:1.5}.bus.flash rect,.gnode.bus.flash circle.body{filter:drop-shadow(0 0 18px var(--accent))}@media (prefers-reduced-motion: reduce){.row.new{animation:none}}.form{display:grid;gap:10px}.form label{display:grid;gap:4px;font-size:12px;color:var(--muted);font-weight:600}.form select,.form textarea{width:100%;padding:8px 10px;border-radius:var(--r2);border:1px solid var(--line);background:var(--panel-2);color:var(--fg);font-family:var(--mono);font-size:12px}.form textarea{min-height:180px;resize:vertical;line-height:1.5}.toggle{display:flex!important;align-items:flex-start;gap:8px;font-size:12.5px;color:var(--fg);font-weight:500}.toggle input{width:16px;height:16px;margin-top:2px;flex:none}.toggle input:disabled+span{color:var(--muted)}.actions{display:flex;gap:8px;flex-wrap:wrap}.result{border:1px solid var(--line);border-radius:var(--r2);padding:10px;background:var(--panel-2);font-size:12.5px;overflow-wrap:anywhere}.result ul{margin:6px 0 0;padding-left:0;list-style:none}.result li{display:flex;gap:8px;align-items:flex-start;padding:3px 0}.result li b{font-family:var(--mono);font-weight:600}.ok{color:var(--good)}.no,.muted{color:var(--muted)}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--body);font-size:14px;line-height:1.45;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}button:focus-visible,select:focus-visible,textarea:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}code,.mono{font-family:var(--mono);font-size:12px}h1,h2,h3{margin:0;font-family:var(--display);text-wrap:balance}[hidden]{display:none!important}.skip-link{position:absolute;left:-9999px;top:8px;background:var(--panel);color:var(--fg);padding:6px 10px;border-radius:var(--r2);z-index:30}.skip-link:focus{left:16px}.top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 0 10px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:baseline;gap:2px;font-family:var(--display);font-weight:800;font-size:20px;letter-spacing:-.3px}.brand .dom{color:var(--muted);font-weight:600}.seg{display:inline-flex;background:var(--panel-2);border:1px solid var(--line);border-radius:999px;padding:3px;gap:2px}.seg button{padding:5px 12px;border-radius:999px;font-weight:600;font-size:13px;color:var(--muted)}.seg button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink)}.seg button:disabled{opacity:.5;cursor:not-allowed}.top .spacer{flex:1}.pill{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--panel);font-weight:600;font-size:13px}.pill .dot{width:9px;height:9px;border-radius:50%;background:var(--unknown)}.pill[data-mode=live] .dot{background:var(--good);animation:livepulse 1.6s ease-out infinite}.pill[data-mode=configured] .dot{background:var(--warn)}.pill[data-mode=live][data-stream=off] .dot{background:var(--warn);animation:none}@keyframes livepulse{0%{box-shadow:0 0 #3ccb7f8c}to{box-shadow:0 0 0 10px #3ccb7f00}}.btn{padding:7px 12px;border-radius:var(--r2);border:1px solid var(--line);background:var(--panel);font-weight:600;font-size:13px}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:transparent}.btn.ghost{background:transparent}.btn:disabled{opacity:.55;cursor:not-allowed}.clock{font-family:var(--mono);font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.strip{display:flex;gap:10px;flex-wrap:wrap;align-items:stretch;padding:10px 0}.stat{flex:1 1 140px;min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:8px 12px}.stat .k{font-size:11px;letter-spacing:.6px;text-transform:uppercase;color:var(--muted);font-weight:600}.stat .v{font-family:var(--display);font-size:22px;font-weight:700;line-height:1.1;margin-top:2px;font-variant-numeric:tabular-nums}.stat .s{font-size:11px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.banner{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:12px;color:var(--muted);padding:0 0 10px}.banner b{color:var(--fg)}.banner .lg{display:inline-flex;align-items:center;gap:6px;margin-left:6px}.banner .sw{width:22px;height:0;border-top:2px solid var(--accent)}.banner .sw.dash{border-top-style:dashed}.banner .sw.sim{border-top-color:var(--sim)}
