.viz-root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f1f0ee;--surface-1:#fcfcfb;--surface-2:#f0efec;--text-primary:#0b0b0b;--text-secondary:#52514e;--text-muted:#7c7b76;--line:#d6d5d0;--dot:#e2e1dc;--hook:#2a78d6;--hidden:#eb6834;--acct:#6d4fc3;--flow:#52514e}@media (prefers-color-scheme:dark){:root:where(:not([data-theme=light])) .viz-root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#121211;--surface-1:#1a1a19;--surface-2:#262624;--text-primary:#fff;--text-secondary:#c3c2b7;--text-muted:#918f86;--line:#3c3b38;--dot:#292927;--hook:#3987e5;--hidden:#d95926;--acct:#a488e8;--flow:#c3c2b7}}:root[data-theme=dark] .viz-root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#121211;--surface-1:#1a1a19;--surface-2:#262624;--text-primary:#fff;--text-secondary:#c3c2b7;--text-muted:#918f86;--line:#3c3b38;--dot:#292927;--hook:#3987e5;--hidden:#d95926;--acct:#a488e8;--flow:#c3c2b7}*{box-sizing:border-box}html,body,#root{height:100%}body{background:#f1f0ee;margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Helvetica Neue,sans-serif;overflow:hidden}@media (prefers-color-scheme:dark){body{background:#121211}}.viz-root{background:var(--bg);height:100vh;color:var(--text-primary);flex-direction:column;display:flex;overflow:hidden}.topbar{z-index:10;background:var(--surface-1);border-bottom:1px solid var(--line);flex:none;justify-content:space-between;align-items:center;gap:16px;padding:12px 28px;display:flex}.topbar-left{align-items:center;gap:14px;min-width:0;display:flex}.brand{align-items:center;gap:10px;min-width:0;display:flex}.brand h1{letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:15px;font-weight:650;overflow:hidden}.topbar-right{flex:none;align-items:center;gap:10px;display:flex}.app-select{flex:none;position:relative}.app-trigger{border:1px solid var(--line);background:var(--surface-2);max-width:260px;color:var(--text-primary);font:inherit;cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:6px 12px;font-size:13px;font-weight:600;display:flex}.app-trigger:hover{border-color:color-mix(in srgb, var(--hook) 45%, var(--line))}.app-trigger-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-caret{color:var(--text-muted);flex:none;font-size:9px}.app-menu{z-index:30;border:1px solid var(--line);background:var(--surface-1);border-radius:10px;flex-direction:column;gap:2px;width:300px;max-height:min(460px,100vh - 90px);padding:5px;display:flex;position:absolute;top:calc(100% + 6px);left:0;overflow-y:auto;box-shadow:0 8px 24px #00000024}.app-menu button{width:100%;font:inherit;text-align:left;cursor:pointer;color:var(--text-secondary);background:0 0;border:1px solid #0000;border-radius:8px;flex-direction:column;gap:2px;padding:8px 11px;display:flex}.app-menu button:hover{background:var(--surface-2)}.app-menu button.is-current{border-color:var(--hook);background:color-mix(in srgb, var(--hook) 7%, var(--surface-1))}.app-menu-name{color:var(--text-primary);font-size:12.5px;font-weight:600}.app-menu-tagline{color:var(--text-muted);font-size:10.5px}.app-menu-flows{color:var(--text-muted);font-size:10px}.chain-select{position:relative}.chain-trigger{border:1px solid var(--line);color:var(--text-primary);font:inherit;cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:7px;padding:5px 11px;font-size:12px;font-weight:550;display:flex}.chain-trigger:hover{background:var(--surface-2)}.chain-caret{color:var(--text-muted);font-size:9px}.chain-dot{border-radius:50%;flex:none;width:8px;height:8px}.chain-menu{z-index:30;border:1px solid var(--line);background:var(--surface-1);border-radius:10px;flex-direction:column;min-width:172px;padding:4px;display:flex;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 8px 24px #00000024}.chain-menu button{color:var(--text-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:7px;align-items:center;gap:8px;padding:7px 9px;font-size:12px;display:flex}.chain-menu button:hover:not(:disabled){background:var(--surface-2)}.chain-menu button:disabled{cursor:default;color:var(--text-muted)}.chain-menu button:disabled .chain-dot{opacity:.45}.chain-menu .chain-name{flex:1}.chain-menu .chain-check{color:var(--hook);font-size:11px}.chain-menu .chain-soon{border:1px solid var(--line);letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);border-radius:999px;padding:1px 7px;font-size:9.5px;font-weight:600}.lang-toggle,.mode-toggle{border:1px solid var(--line);border-radius:8px;flex:none;display:flex;overflow:hidden}.lang-toggle button,.mode-toggle button{color:var(--text-muted);font:inherit;letter-spacing:.03em;cursor:pointer;background:0 0;border:none;padding:5px 12px;font-size:11.5px;font-weight:600}.lang-toggle button+button,.mode-toggle button+button{border-left:1px solid var(--line)}.lang-toggle button.is-active,.mode-toggle button.is-active{background:var(--surface-2);color:var(--text-primary)}.workspace{flex:1;min-height:0;display:flex}.sidebar{background:var(--surface-1);border-right:1px solid var(--line);flex-direction:column;flex:none;gap:22px;width:304px;min-height:0;padding:18px 18px 22px;display:flex;overflow-y:auto}.side-section{flex-direction:column;gap:10px;display:flex}.side-section+.side-section{border-top:1px solid var(--line);padding-top:18px}.side-section h2{letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin:0;font-size:10.5px;font-weight:600}.side-title{color:var(--text-primary);margin:2px 0 0;font-size:13px;font-weight:600}.side-blurb{color:var(--text-secondary);margin:0;font-size:12px;line-height:1.55}.tx-chip{border:1px solid var(--line);width:100%;min-width:0;font:inherit;cursor:pointer;background:0 0;border-radius:9px;align-items:center;gap:8px;padding:6px 11px;text-decoration:none;display:flex}.tx-chip:hover{background:var(--surface-2)}.tx-chip .chain{color:var(--text-secondary);letter-spacing:.03em;text-transform:uppercase;flex:none;font-size:10.5px;font-weight:600}.tx-chip code{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11.5px;overflow:hidden}.tx-chip-out{color:var(--text-muted);margin-left:auto;font-size:11px}.app-desc{color:var(--text-secondary);margin:0;font-size:12px;line-height:1.55}.app-link{color:var(--hook);margin-top:6px;font-size:11px;text-decoration:none;display:inline-block}.app-link:hover{text-decoration:underline}.flow-list{flex-direction:column;gap:3px;display:flex}.flow-list button{font:inherit;text-align:left;cursor:pointer;color:var(--text-secondary);background:0 0;border:1px solid #0000;border-radius:8px;flex-direction:column;gap:1px;padding:6px 9px;display:flex}.flow-list button:hover{background:var(--surface-2)}.flow-list button.is-active{border-color:color-mix(in srgb, var(--hook) 45%, transparent);background:var(--surface-1);color:var(--text-primary)}.flow-list .flow-title{font-size:11.5px;font-weight:550}.flow-list .flow-meta{color:var(--text-muted);font-size:10px}.canvas{background:var(--surface-1);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative}.diagram-wrap{flex:1;align-items:stretch;min-height:0;display:flex}.diagram-stage{background-image:radial-gradient(var(--dot) 1px, transparent 1.4px);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;background-size:22px 22px;flex:1;min-width:0;position:relative}.diagram-wrap.is-dragging .diagram-stage{cursor:grabbing}.diagram{width:100%;height:100%;display:block}.canvas-foot{border-top:1px solid var(--line);background:var(--surface-1);flex-wrap:wrap;flex:none;justify-content:space-between;align-items:center;gap:6px 24px;padding:10px 18px;display:flex}.node rect{fill:var(--surface-2);stroke:var(--line);stroke-width:1px}.node-core rect{fill:var(--surface-2);stroke:var(--text-muted)}.node-hook rect{fill:color-mix(in srgb, var(--hook) 10%, var(--surface-1));stroke:var(--hook);stroke-width:1.5px}.node-external rect{fill:var(--surface-1);stroke:var(--line);stroke-dasharray:3 3}.node text{fill:var(--text-primary);font-size:12px}.node-role{letter-spacing:.04em;text-transform:uppercase;fill:var(--text-muted)!important;font-size:10px!important}.node-hook .node-role{fill:var(--hook)!important}.node-label{font-family:ui-monospace,SF Mono,Menlo,monospace;font-weight:600;font-size:14px!important}.node-sub{fill:var(--text-secondary)!important;font-size:10.5px!important}.node-toggle{font-weight:500;fill:var(--hook)!important;font-size:10.5px!important}.edge-line{fill:none;stroke:var(--flow);stroke-width:2px}.edge-hit{fill:none;stroke:#0000;stroke-width:18px}.arrow-head{fill:var(--flow)}.arrow-head.hidden{fill:var(--hidden)}.arrow-head.muted{fill:var(--text-muted)}.arrow-head.acct{fill:var(--acct)}.edge.is-accounting .edge-line{stroke:var(--acct);stroke-width:1.6px;stroke-dasharray:6 5}.edge-labels.is-accounting .edge-label{fill:var(--acct);font-size:11.5px}.intervene path{fill:none;stroke:var(--text-muted);stroke-width:1.5px;stroke-dasharray:2 5}.intervene-label{text-anchor:end}.intervene-label,.reach-label{fill:var(--text-muted);paint-order:stroke;stroke:var(--surface-1);stroke-width:5px;stroke-linejoin:round;font-size:10.5px}.reach-label{text-anchor:middle}.edge.is-hidden-value .edge-line{stroke:var(--hidden)}.edge.is-hovered .edge-line{stroke-width:3px}.edge-labels{pointer-events:none}.edge-label{fill:var(--text-primary);paint-order:stroke;stroke:var(--surface-1);stroke-width:6px;stroke-linejoin:round;font-size:12.5px;font-weight:600}.edge-sub{fill:var(--hidden);paint-order:stroke;stroke:var(--surface-1);stroke-width:6px;stroke-linejoin:round;font-size:10px}.reach path{fill:none;stroke:var(--line);stroke-width:1.5px;stroke-dasharray:4 4}.edge,.node,.edge-labels,.reach,.intervene,.reach-label,.intervene-label{transition:opacity .18s}.is-following .edge:not(.is-focus),.is-following .edge-labels:not(.is-focus-label),.is-following .reach,.is-following .intervene,.is-following .reach-label,.is-following .intervene-label{opacity:.15}.is-following .node:not(.is-focus-node){opacity:.3}.is-following .edge.is-focus .edge-line{stroke-width:3px}.follow-controls{border:1px solid var(--line);background:var(--surface-1);border-radius:8px;align-items:stretch;display:flex;position:absolute;bottom:14px;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 2px 8px #00000014}.follow-controls button{color:var(--text-secondary);font:inherit;cursor:pointer;background:0 0;border:none;padding:4px 11px;font-size:14px;line-height:1}.follow-controls button:hover:not(:disabled){color:var(--text-primary);background:var(--surface-2)}.follow-controls button:disabled{opacity:.35;cursor:default}.follow-controls .follow-start,.follow-controls .follow-count{white-space:nowrap;border-left:1px solid var(--line);border-right:1px solid var(--line);justify-content:center;align-items:center;min-width:118px;font-size:11.5px;display:flex}.follow-controls .follow-start{font-weight:550}.follow-controls .follow-count{font-variant-numeric:tabular-nums;color:var(--text-primary)}.follow-controls .follow-exit{border-left:1px solid var(--line);font-size:11px}.trace-panel{border-left:1px solid var(--line);background:var(--surface-1);flex-direction:column;flex:none;width:clamp(300px,30vw,400px);min-height:0;font-family:ui-monospace,SF Mono,Menlo,monospace;display:flex}.trace-head{border-bottom:1px solid var(--line);flex:none;justify-content:space-between;align-items:flex-start;gap:10px;padding:12px 14px 10px;display:flex}.trace-head h2{letter-spacing:.02em;margin:0;font-size:12px;font-weight:650}.trace-ops{color:var(--text-muted);margin:3px 0 0;font-size:10.5px}.trace-units{border:1px solid var(--line);border-radius:6px;display:flex;overflow:hidden}.trace-units button{color:var(--text-muted);font:inherit;cursor:pointer;background:0 0;border:none;padding:3px 8px;font-size:10px}.trace-units button+button{border-left:1px solid var(--line)}.trace-units button.is-active{background:var(--surface-2);color:var(--text-primary)}.trace-scroll{flex:1;min-height:0;overflow-y:auto}.trace-lines{margin:0;padding:6px 0;list-style:none}.trace-line{width:100%;color:var(--text-secondary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;grid-template-columns:auto 1fr auto;grid-template-areas:"idx call amt"".route route";align-items:baseline;gap:1px 8px;padding:5px 14px;font-size:11.5px;display:grid}.trace-line:hover,.trace-line.is-hl{background:var(--surface-2)}.tl-idx{color:var(--text-muted);grid-area:idx;font-size:10px}.tl-call{white-space:nowrap;color:var(--text-primary);grid-area:call;font-weight:650}.tl-args{color:var(--text-muted);font-weight:400}.tl-amt{white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--text-primary);grid-area:amt;justify-self:end}.trace-panel.is-raw .tl-amt{white-space:normal;word-break:break-all;text-align:right}.tl-route{color:var(--text-muted);grid-area:route;font-size:10px}.tl-zero{color:var(--acct);margin-left:6px;font-weight:650}.trace-line.is-acct .tl-call{color:var(--acct)}.trace-line.is-hookcut .tl-call{color:var(--hook)}.trace-line.is-hidden .tl-call{color:var(--hidden)}.trace-foot{border-top:1px solid var(--line);flex:none;padding:10px 14px 12px}.trace-foot-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.trace-foot-label{letter-spacing:.04em;text-transform:uppercase;color:var(--text-secondary);font-size:10.5px;font-weight:650}.trace-foot-ctx{color:var(--text-muted);font-size:10px}.trace-zero{color:var(--text-secondary);margin:8px 0 0;font-size:11px}.trace-zero.is-warn{color:var(--hidden)}.trace-outstanding{flex-direction:column;gap:3px;margin:8px 0 0;padding:0;list-style:none;display:flex}.trace-outstanding li{justify-content:space-between;align-items:baseline;gap:10px;font-size:11.5px;display:flex}.to-token{color:var(--text-muted)}.to-amt{font-variant-numeric:tabular-nums;color:var(--text-primary);word-break:break-all;text-align:right}.trace-sign-hint{color:var(--text-muted);margin:8px 0 0;font-size:9.5px}.trace-hooks{border-top:1px solid var(--line);padding:12px 14px 16px}.trace-hooks h3{margin:0;font-size:11px;font-weight:650}.trace-hooks-sub{color:var(--text-muted);margin:3px 0 10px;font-size:10px;line-height:1.5}.trace-hook{border-top:1px dashed var(--line);margin-top:10px;padding-top:10px}.trace-hook:first-of-type{border-top:none;margin-top:0;padding-top:0}.trace-hook strong{color:var(--hook);font-size:11.5px;display:block}.th-addr{color:var(--text-secondary);word-break:break-all;margin-top:2px;font-size:10px;display:block}.th-bits{align-items:baseline;gap:8px;margin-top:6px;display:flex}.th-bits-label{color:var(--text-muted);font-size:9.5px}.th-bits code{letter-spacing:.06em;color:var(--text-muted);font-size:11px}.th-bits code .is-set{color:var(--hook);font-weight:700}.th-flags{flex-wrap:wrap;gap:3px 6px;margin:6px 0 0;padding:0;list-style:none;display:flex}.th-flags li{border:1px solid var(--line);color:var(--text-secondary);border-radius:4px;padding:1px 5px;font-size:9px}.th-cb{color:var(--text-secondary);margin:6px 0 0;font-size:10px}.th-cb code{color:var(--hook)}.th-reach{color:var(--text-muted);margin:3px 0 0;font-size:10px}.zoom-controls{border:1px solid var(--line);background:var(--surface-1);border-radius:8px;align-items:stretch;display:flex;position:absolute;bottom:14px;left:14px;overflow:hidden;box-shadow:0 2px 8px #00000014}.zoom-controls button{color:var(--text-secondary);font:inherit;cursor:pointer;background:0 0;border:none;padding:4px 10px;font-size:13px;line-height:1}.zoom-controls button:hover{color:var(--text-primary);background:var(--surface-2)}.zoom-controls .zoom-pct{font-variant-numeric:tabular-nums;min-width:52px;color:var(--text-muted);border-left:1px solid var(--line);border-right:1px solid var(--line);font-size:11px}.edge-detail{border:1px solid var(--line);background:var(--surface-1);border-radius:10px;width:264px;padding:12px 14px;position:absolute;bottom:16px;right:16px;box-shadow:0 6px 20px #0000001f}.edge-detail-amount{font-size:15px;font-weight:600}.edge-detail-rows{flex-direction:column;gap:4px;margin-top:8px;display:flex}.edge-detail-line{justify-content:space-between;align-items:baseline;gap:12px;font-size:11.5px;display:flex}.edge-detail-line .amt{color:var(--text-primary);white-space:nowrap;font-weight:600}.edge-detail-line code{color:var(--text-muted);text-align:right;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:10.5px}.edge-detail-note{color:var(--text-secondary);border-top:1px solid var(--line);margin:10px 0 0;padding-top:9px;font-size:11.5px;line-height:1.5}.hook-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.hook-list li{border:1px solid var(--line);background:var(--surface-2);border-radius:9px;flex-direction:column;gap:1px;padding:7px 10px;display:flex}.hook-list strong{color:var(--text-primary);font-size:12.5px;font-weight:600}.hook-list code{color:var(--text-primary);font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px;font-weight:600}.hook-list li.has-name code{color:var(--text-muted);font-size:10.5px;font-weight:400}.hook-list span{color:var(--text-secondary);font-size:10.5px}.legend{color:var(--text-secondary);align-items:center;gap:8px;margin:0;font-size:11.5px;display:flex}.swatch{border-radius:2px;width:14px;height:3px;margin-left:12px}.swatch:first-child{margin-left:0}.swatch-flow{background:var(--flow)}.swatch-hidden{background:var(--hidden)}.swatch-acct{background:var(--acct)}.swatch-hook{background:var(--hook);border-radius:3px;width:10px;height:10px}.note{color:var(--text-muted);margin:0;font-size:11px}
