.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:-webkit-grab;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;-webkit-animation:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:-webkit-grab;cursor:grab}.react-flow__node.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:-webkit-grab;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@-webkit-keyframes dashdraw{0%{stroke-dashoffset:10}}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}:root{--bg: #15171c;--canvas: #111318;--panel: #1c1f25;--panel-2: #181a20;--elevated: #232730;--text: #f2f4f5;--text-dim: #aab0b6;--muted: #6a7077;--faint: rgba(120, 130, 140, .22);--line: rgba(180, 190, 200, .12);--line-2: rgba(180, 190, 200, .2);--line-3: rgba(180, 190, 200, .34);--accent: #e7e1d3;--accent-2: #e8662e;--accent-dim:#9c968a;--ink: #15171c;--header: #e7e1d3;--bind: #ff5c1a;--call: #36e0c0;--warn: #ff5c1a;--radius: 3px;--radius-sm: 2px;--radius-node: 11px;--radius-ctrl: 7px;--mono: "JetBrains Mono", ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace;--sans: "Eurostile", "Bahnschrift", "DIN Alternate", "Oswald", "Arial Narrow", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--shadow-1: 0 0 0 1px rgba(0, 0, 0, .6);--shadow-2: 0 0 0 1px rgba(0, 0, 0, .7), 0 10px 28px rgba(0, 0, 0, .6);--node-shadow: 0 0 0 1px rgba(0, 0, 0, .55), 0 1px 2px rgba(0, 0, 0, .4), 0 8px 20px -6px rgba(0, 0, 0, .55), inset 0 1px 0 rgba(255, 255, 255, .045);--node-shadow-hover: 0 0 0 1px rgba(0, 0, 0, .6), 0 2px 4px rgba(0, 0, 0, .42), 0 14px 30px -6px rgba(0, 0, 0, .62), inset 0 1px 0 rgba(255, 255, 255, .06)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.vv-app{display:flex;flex-direction:column;height:100vh;background:var(--bg)}.vv-topbar{display:flex;align-items:center;gap:.85rem;padding:0 1rem;height:54px;flex:0 0 54px;background:var(--panel);border-bottom:2px solid var(--accent);position:relative;z-index:20}.vv-brand{display:inline-flex;align-items:center;gap:.6rem;flex:0 0 auto}.vv-brand strong{white-space:nowrap}.vv-proto-badge{font-size:.56rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;font-family:var(--mono);color:var(--ink);background:var(--accent-2);border:none;border-radius:var(--radius-ctrl);padding:.12rem .42rem;line-height:1.35;white-space:nowrap;cursor:default}.vv-version{font-size:.56rem;font-family:var(--mono);letter-spacing:.04em;color:var(--muted);opacity:.7;white-space:nowrap;cursor:default;-webkit-user-select:text;user-select:text}.vv-brand-glyph{width:28px;height:28px;border-radius:0;display:grid;place-items:center;background:var(--accent);box-shadow:none;color:var(--ink);font-weight:800;font-size:1rem;font-family:var(--mono);letter-spacing:-.04em}.vv-topbar strong{color:var(--text);font-size:.9rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}@media (max-width: 1080px){.vv-topbar strong{font-size:.82rem}}.vv-pane-label code{color:var(--accent);font-family:var(--mono);font-size:.92em}.vv-btn{background:var(--accent);color:var(--ink);border:none;border-radius:var(--radius-ctrl);padding:.46rem .95rem;font-family:var(--mono);font-size:.74rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;white-space:nowrap;box-shadow:none;transition:filter .1s ease,background .1s ease,color .1s ease}.vv-btn:hover{filter:brightness(1.1)}.vv-btn:active{filter:brightness(.92)}.vv-btn:disabled{opacity:.3;cursor:default;filter:none;pointer-events:none}.vv-crash{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:var(--bg);padding:1.5rem}.vv-crash-card{max-width:540px;background:var(--panel);border:1px solid var(--line-3);border-top:3px solid var(--accent-2);border-radius:0;padding:1.6rem 1.8rem;box-shadow:var(--shadow-2)}.vv-crash-card h1{margin:0 0 .5rem;font-size:1.2rem;letter-spacing:.03em;text-transform:uppercase;color:var(--text)}.vv-crash-card p{margin:0 0 1rem;color:var(--text-dim);font-size:.9rem;line-height:1.5}.vv-crash-detail{background:var(--panel-2);border:1px solid var(--line-2);border-radius:0;padding:.6rem .8rem;font-family:var(--mono);font-size:.78rem;color:var(--accent-2);white-space:pre-wrap;word-break:break-word;max-height:160px;overflow:auto;margin:0 0 1.2rem}.vv-crash-actions{display:flex;gap:.6rem}.vv-btn-ghost{background:transparent;border:1px solid var(--line-2);color:var(--text-dim);box-shadow:none}.vv-btn-ghost:hover{background:transparent;border-color:var(--accent);color:var(--accent);filter:none}.vv-toolbar{display:flex;align-items:center;gap:.5rem}.vv-group{display:inline-flex;align-items:center;gap:.3rem}.vv-btn-icon{padding:0;width:30px;height:30px;display:inline-grid;place-items:center;font-size:.95rem;line-height:1}.vv-sep{width:2px;align-self:stretch;margin:8px .25rem;background:var(--line-2)}.vv-menu-hint{color:var(--muted);font-size:.86em;letter-spacing:.02em;margin-left:.55rem;float:right}.vv-menu li:hover .vv-menu-hint{color:var(--ink);opacity:.7}.vv-split{display:flex;flex:1;min-height:0}.vv-footer{flex:0 0 auto;padding:.34rem .95rem;text-align:center;font-family:var(--mono);font-size:.62rem;letter-spacing:.05em;color:var(--muted);background:var(--panel-2);border-top:1px solid var(--line-2)}.vv-pane{display:flex;flex-direction:column;min-width:0;flex:1}.vv-left{order:3;flex:1;background:var(--panel-2);min-width:0}.vv-resizer{order:2;flex:0 0 6px;cursor:col-resize;background:var(--line-2);transition:background .12s ease}.vv-resizer:hover,.vv-resizer:active{background:var(--accent)}.vv-pane-label{display:flex;align-items:center;gap:.5rem;padding:0 .95rem;height:34px;flex:0 0 34px;font-family:var(--mono);font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.16em;color:var(--text-dim);background:var(--panel);border-bottom:1px solid var(--line-2);white-space:nowrap;overflow:hidden}.vv-pane-hint{color:var(--muted);font-weight:500;text-transform:none;letter-spacing:.02em;font-size:.96em;overflow:hidden;text-overflow:ellipsis;min-width:0}.vv-pane-label:before{content:"";width:8px;height:8px;border-radius:0;background:var(--accent);box-shadow:none;flex:0 0 auto}.vv-left .vv-pane-label:before{background:var(--accent-2);box-shadow:none}.vv-code{flex:1;display:flex;align-items:flex-start;overflow:auto;background:var(--panel-2);font-family:var(--mono);font-size:.86rem;line-height:1.7;-moz-tab-size:4;tab-size:4;scrollbar-width:thin;scrollbar-color:var(--line-3) transparent}.vv-code-gutter{position:sticky;left:0;z-index:1;flex:none;margin:0;padding:.9rem .6rem .9rem .95rem;font:inherit;text-align:right;white-space:pre;color:var(--muted);background:var(--panel-2);border-right:1px solid var(--line-2);-webkit-user-select:none;user-select:none}.vv-code-text{flex:none;margin:0;padding:.9rem 1.3rem .9rem .9rem;font:inherit;white-space:pre;color:#d8dce0}.vv-code::-webkit-scrollbar{width:11px;height:11px}.vv-code::-webkit-scrollbar-thumb{background:var(--line-3);border-radius:6px;border:2px solid var(--panel-2)}.vv-code::-webkit-scrollbar-track{background:transparent}.vv-code-text::selection,.vv-code-text span::selection{background:#e7e1d342;color:#fff}.vh-cm{color:#565f89;font-style:italic}.vh-st{color:#9ece6a}.vh-kw{color:#bb9af7}.vh-ty{color:#2ac3de}.vh-li,.vh-nu{color:#ff9e64}.vh-at{color:#e0af68}.vh-sp{color:#7aa2f7;font-style:italic}.vv-error{padding:.6rem 1rem;background:var(--accent-2);color:var(--ink);font-family:var(--mono);font-size:.8rem;font-weight:600;border-top:none;box-shadow:none}.vv-right{order:1;flex:2;background:var(--canvas)}.vv-canvas{flex:1;min-height:0;position:relative}.react-flow{background:transparent}.react-flow__pane{cursor:default}.vv-node{border-radius:var(--radius)!important;border:1px solid var(--line-2)!important;background:var(--panel)!important;color:var(--text)!important;font-family:var(--mono)!important;font-size:.82rem!important;padding:.5rem .7rem!important;text-align:left!important}.vv-header{border-left:3px solid var(--header)!important;color:#c7d2fe!important}.vv-bind{border-left:3px solid var(--bind)!important}.vv-call{border-left:3px solid var(--call)!important}.bp-node{min-width:152px;background:linear-gradient(180deg,#1b1e24,#16181d 38%,#131519);border:1px solid #2f343c;border-radius:var(--radius-node);font-family:var(--mono);color:var(--text);box-shadow:var(--node-shadow);transition:border-color .12s ease,box-shadow .12s ease}.bp-title{position:relative;display:flex;align-items:center;gap:.5rem;padding:.42rem .7rem;font-weight:700;font-size:.78rem;letter-spacing:.05em;text-transform:uppercase;color:#fff;background:linear-gradient(180deg,var(--hdr-lo, color-mix(in srgb, var(--hdr, #4a5570) 78%, #ffffff)) 0%,var(--hdr, #4a5570) 52%,color-mix(in srgb,var(--hdr, #4a5570) 86%,#000000) 100%);border-radius:var(--radius-node) var(--radius-node) 0 0;border-bottom:1px solid rgba(0,0,0,.4);box-shadow:inset 0 1px #ffffff47,inset 0 -1px #00000038;text-shadow:0 1px 1px rgba(0,0,0,.32)}.bp-title-text{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bp-doclink{flex:0 0 auto;margin-left:.3rem;font-size:.85rem;line-height:1;text-decoration:none;color:#fff9;cursor:pointer;transition:color .1s ease,transform .08s ease}.bp-doclink:hover{color:#fff;transform:translateY(-1px)}.bp-title-input{flex:1;min-width:0;background:#00000038;border:1px solid transparent;border-radius:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;padding:.05rem .3rem;outline:none}.bp-title-input:hover{border-color:#ffffff2e}.bp-title-input:focus{background:#0006;border-color:#fff6}.bp-title-op{text-align:center;font-size:1.05rem}.bp-title-input.bp-title-sel{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;text-align:center;text-align-last:center;padding-right:.3rem}.bp-title-input.bp-title-sel option{background:#1a2234;color:#e6ebf4;font-size:.85rem}.bp-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 18px;width:18px;height:18px;border-radius:0;background:#00000052;box-shadow:none;font-size:.74rem;font-style:normal;font-weight:800;opacity:1}.bp-entry .bp-title{--hdr: #7b54f5}.bp-call .bp-title,.bp-methodcall .bp-title{--hdr: #2f86f0}.bp-set .bp-title{--hdr: #3d74f2}.bp-get .bp-title{--hdr: #16ad6b}.bp-op .bp-title{--hdr: #5f6df0;justify-content:center;font-size:1.05rem}.bp-class .bp-title{--hdr: #0bb89a}.bp-member .bp-title{--hdr: #16ad6b}.bp-enum .bp-title{--hdr: #a571fc}.bp-branch .bp-title{--hdr: #f23c46}.bp-for .bp-title,.bp-loop .bp-title{--hdr: #f59415}.bp-case .bp-title{--hdr: #f5781a}.bp-ifexpr .bp-title{--hdr: #f23c46}.bp-caseexpr .bp-title{--hdr: #f5781a}.bp-return .bp-title{--hdr: #a64ff0}.bp-break .bp-title{--hdr: #ec4377}.bp-concurrency .bp-title{--hdr: #11b3cb}.bp-defer .bp-title,.bp-exprstmt .bp-title{--hdr: #6b7387}.bp-using .bp-title{--hdr: #545f7d}.bp-event.bp-entry .bp-title{--hdr: #e8392c}.bp-class-container{width:100%;height:100%;box-sizing:border-box;border:2px solid rgba(11,184,154,.6);border-radius:var(--radius-node);background:#0bb89a0f;pointer-events:none}.bp-struct-container{border-color:#2f86f08c;background:#2f86f00f}.bp-interface-container{border-color:#a571fc8c;background:#a571fc0f}.bp-class-container.selected{box-shadow:0 0 0 2px var(--accent)}.bp-class-header{pointer-events:auto;cursor:grab;display:flex;align-items:center;gap:.4rem;padding:.4rem .6rem;border-radius:calc(var(--radius-node) - 2px) calc(var(--radius-node) - 2px) 0 0;background:linear-gradient(180deg,color-mix(in srgb,#0bb89a 78%,#fff),#0bb89a 52%,color-mix(in srgb,#0bb89a 86%,#000));color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.32);box-shadow:inset 0 1px #ffffff47;font-family:var(--mono);font-size:.78rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.bp-struct-container .bp-class-header{background:linear-gradient(180deg,color-mix(in srgb,#2f86f0 78%,#fff),#2f86f0 52%,color-mix(in srgb,#2f86f0 86%,#000))}.bp-interface-container .bp-class-header{background:linear-gradient(180deg,color-mix(in srgb,#a571fc 78%,#fff),#a571fc 52%,color-mix(in srgb,#a571fc 86%,#000))}.bp-class-header:active{cursor:grabbing}.bp-class-kind{margin-left:auto;font-size:.68rem;font-weight:500;font-style:italic;opacity:.85}.bp-owner{padding:.22rem .6rem;font-size:.66rem;color:#7fd9c8;background:#1f9b8629;border-bottom:1px solid rgba(0,0,0,.3)}.bp-field{display:flex;align-items:center;gap:.3rem;padding:.3rem .6rem .42rem}.bp-field-label{font-size:.7rem;color:#9aa6ba;flex:0 0 auto}.bp-field .bp-inline{flex:1;min-width:0}.bp-editable{display:inline-flex;align-items:center;gap:.22rem;flex:0 0 auto;font-size:.64rem;color:#9aa6ba;cursor:pointer;-webkit-user-select:none;user-select:none}.bp-editable input{margin:0;cursor:pointer}.bp-select{max-width:110px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}select.bp-select{padding-right:1.2rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%239aa6ba' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .42rem center;background-size:9px}.bp-typesel{flex:0 0 auto;width:44px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-align:center;font-weight:700;font-size:.66rem;font-family:var(--mono);background:#060a12b8;border:1px solid rgba(140,160,196,.16);border-radius:0;padding:.14rem .1rem;outline:none}.bp-typesel option,.bp-select option{background:#1a2234;color:#e6ebf4}.bp-sig{display:flex;flex-direction:column;gap:.26rem;padding:.34rem .6rem .44rem;background:#00000024;border-bottom:1px solid rgba(0,0,0,.28)}.bp-sig-sec{font-size:.6rem;letter-spacing:.09em;text-transform:uppercase;font-weight:700;color:#7c8aa3;padding-bottom:.12rem;margin-top:.18rem;border-bottom:1px solid rgba(140,160,196,.14)}.bp-sig-sec:first-child{margin-top:0}.bp-sig-empty{font-size:.68rem;font-style:italic;color:#6a748a;padding:.04rem .1rem}.bp-sig-row{display:flex;align-items:center;gap:.3rem}.bp-sig-row .bp-inline{flex:1 1 auto;min-width:0}.bp-sig-row .bp-select{flex:0 0 auto;width:96px}.bp-sig-add{align-self:flex-start;background:#b4bec81a;border:1px solid var(--line-2);color:var(--text-dim);border-radius:0;font-size:.68rem;font-family:var(--mono);padding:.12rem .46rem;cursor:pointer}.bp-sig-add:hover{background:var(--accent);color:var(--ink);border-color:var(--accent)}.bp-sig-del{flex:0 0 auto;background:transparent;border:none;color:#8a93a6;cursor:pointer;font-size:.72rem;line-height:1;padding:0 .18rem}.bp-sig-del:hover{color:#ff6b6b}.bp-specs{display:flex;flex-wrap:wrap;align-items:center;gap:.22rem;padding:.12rem .5rem .16rem}.bp-specs-label{font-size:.6rem;letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:#7c8aa3;flex:0 0 auto;margin-right:.1rem}.bp-specs-empty{font-size:.66rem;font-style:italic;color:#6a748a}.bp-spec-chip{display:inline-flex;align-items:center;gap:.14rem;background:#7896d229;border:1px solid rgba(140,170,220,.4);color:#c7d4ea;border-radius:9px;font-size:.64rem;font-family:var(--mono);line-height:1;padding:.1rem .36rem;cursor:pointer}.bp-spec-chip:hover{background:#ff6b6b2e;border-color:#ff6b6b;color:#ffd3d3}.bp-spec-chip.bp-spec-custom{background:#d2b47829;border-color:#dcbe8c73;color:#e6d3a8}.bp-spec-x{font-size:.74rem;opacity:.7}.bp-spec-add{flex:0 0 auto;background:#b4bec81a;border:1px solid var(--line-2);color:var(--text-dim);border-radius:9px;font-size:.66rem;font-family:var(--mono);padding:.04rem .2rem;cursor:pointer}.bp-spec-add:hover{background:var(--accent);color:var(--ink);border-color:var(--accent)}.bp-class-header .bp-specs{padding:0;flex:0 0 auto}.bp-failable{padding:.1rem .5rem .16rem}.bp-subtitle{padding:.32rem .72rem .42rem;font-size:.7rem;color:#9aa6ba;font-style:italic;border-bottom:1px solid rgba(0,0,0,.25);background:#00000029}.bp-rows{padding:.32rem 0}.bp-row{position:relative;min-height:26px;display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:0 .62rem}.bp-in{display:flex;align-items:center;gap:.4rem;flex:1;min-width:0}.bp-out{display:flex;align-items:center;gap:.4rem;margin-left:auto}.bp-pinname{font-size:.71rem;color:#b9c2d2;white-space:nowrap;flex:0 0 auto;letter-spacing:.01em}.bp-inline{background:#00000080;border:1px solid rgba(180,190,200,.18);border-radius:var(--radius);color:var(--text);font-family:var(--mono);font-size:.71rem;padding:.14rem .4rem;flex:1;min-width:0;max-width:150px;outline:none;box-shadow:none;transition:border-color .1s ease,box-shadow .1s ease}.bp-inline::placeholder{color:#5a6477}.bp-inline:focus{border-color:var(--accent);background:#000000b3;box-shadow:inset 0 0 0 1px var(--accent)}.vv-menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50}.vv-menu{position:fixed;z-index:51;list-style:none;margin:0;padding:.3rem;min-width:178px;background:var(--elevated);border:1px solid var(--line-3);border-top:2px solid var(--accent);border-radius:0;box-shadow:var(--shadow-2);font-family:var(--mono);font-size:.78rem;animation:vv-pop .08s ease-out}@keyframes vv-pop{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}.vv-menu li{padding:.42rem .6rem;border-radius:0;cursor:pointer;color:var(--text-dim);white-space:nowrap;transition:background .08s ease,color .08s ease}.vv-menu li:hover{background:var(--accent);color:var(--ink)}.vv-menu-disabled{color:var(--muted)!important;cursor:default!important}.vv-menu-disabled:hover{background:transparent!important;color:var(--muted)!important}.vv-palette{padding:0;min-width:252px;overflow:hidden}.vv-palette-input{width:100%;box-sizing:border-box;background:var(--panel-2);border:none;border-bottom:1px solid var(--line-3);color:var(--text);padding:.62rem .8rem;font-size:.86rem;font-family:var(--sans);letter-spacing:.01em;outline:none}.vv-palette-input::placeholder{color:var(--muted)}.vv-palette-input:focus{box-shadow:inset 0 -2px 0 var(--accent)}.vv-palette-list{list-style:none;margin:0;padding:.32rem;max-height:320px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--line-3) transparent}.vv-palette-list::-webkit-scrollbar{width:8px}.vv-palette-list::-webkit-scrollbar-thumb{background:var(--line-3);border-radius:6px}.vv-palette-list li{padding:.42rem .62rem;border-radius:0;cursor:pointer;color:var(--text-dim);white-space:nowrap;font-size:.82rem;transition:background .08s ease,color .08s ease}.vv-palette-list li:hover{color:var(--text)}.vv-palette-list li.vv-pal-sel{background:var(--accent);color:var(--ink);font-weight:600;box-shadow:none}.vv-pal-group{padding:0!important}.vv-pal-group:hover{background:transparent!important}.vv-pal-group>ul{list-style:none;margin:0;padding:0}.vv-pal-cat{padding:.35rem .6rem .15rem;font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--muted)}.vv-pal-reroute{color:var(--muted)!important;border-top:1px solid var(--line-2);margin-top:.2rem}.vv-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#030305c7;display:grid;place-items:center}.vv-modal{width:min(560px,90vw);background:var(--elevated);border:1px solid var(--line-3);border-top:2px solid var(--accent);border-radius:0;box-shadow:var(--shadow-2);padding:1.1rem}.vv-welcome{width:min(540px,92vw);background:var(--elevated);border:1px solid var(--line-3);border-top:3px solid var(--accent);border-radius:0;box-shadow:var(--shadow-2);padding:1.5rem 1.7rem}.vv-welcome-title{font-size:1.35rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text);margin-bottom:.5rem}.vv-welcome-lead{color:var(--text-dim);font-size:.9rem;line-height:1.5;margin:0 0 1rem}.vv-welcome-list{margin:0 0 1.3rem;padding-left:1.1rem;display:flex;flex-direction:column;gap:.5rem}.vv-welcome-list li{color:var(--text-dim);font-size:.86rem;line-height:1.45}.vv-welcome-list strong{color:var(--text);font-weight:650}.vv-welcome-note{color:var(--text-dim);font-size:.8rem;line-height:1.5;margin:0 0 1.3rem;padding:.6rem .75rem;border-radius:0;background:#ff5c1a14;border:1px solid rgba(255,92,26,.45);border-left:3px solid var(--accent-2)}.vv-welcome-note strong{color:var(--text);font-weight:650}.vv-welcome-actions{display:flex;justify-content:flex-end}.vv-projects-menu li{display:flex;align-items:center;justify-content:space-between;gap:.6rem}.vv-proj-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vv-proj-cur{color:var(--text)!important;font-weight:650}.vv-proj-cur .vv-proj-name:after{content:" ·";color:var(--accent)}.vv-proj-del{flex:0 0 auto;background:transparent;border:none;color:#8a93a6;cursor:pointer;font-size:.72rem;line-height:1;padding:0 .15rem}.vv-proj-del:hover{color:#ff6b6b}.vv-menu-sep{height:1px;padding:0!important;margin:.25rem 0;background:var(--line-2);pointer-events:none}.vv-menu-sep:hover{background:var(--line-2)!important}.vv-modal-title{font-size:.95rem;font-weight:650;color:#f4f7fc;margin-bottom:.7rem}.vv-modal-input{width:100%;box-sizing:border-box;background:var(--panel-2);border:1px solid var(--line-2);border-radius:0;color:var(--text);padding:.5rem .6rem;font-size:.88rem;font-family:var(--mono);outline:none}.vv-modal-textarea{width:100%;box-sizing:border-box;min-height:220px;resize:vertical;background:var(--panel-2);border:1px solid var(--line-2);border-radius:0;color:var(--text);padding:.6rem .7rem;font-size:.84rem;line-height:1.6;font-family:var(--mono);outline:none;-moz-tab-size:4;tab-size:4}.vv-modal-input:focus,.vv-modal-textarea:focus{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.vv-modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.8rem}.bp-comment{width:100%;height:100%;border:2px dashed rgba(165,113,252,.5);border-radius:var(--radius-node);background:#a571fc0f;box-shadow:none;pointer-events:none}.bp-comment-title{display:inline-block;pointer-events:auto;cursor:grab;background:linear-gradient(180deg,color-mix(in srgb,#a571fc 78%,#fff),#a571fc 52%,color-mix(in srgb,#a571fc 86%,#000));color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.32);font-family:var(--mono);font-size:.74rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:.26rem .7rem;border-radius:var(--radius) var(--radius) 0 0;box-shadow:inset 0 1px #ffffff40}.bp-cmt-line{border-color:#a571fcb3!important}.bp-cmt-handle{background:#a571fc!important;border:1px solid #050507!important;border-radius:50%!important}.bp-reroute{width:13px;height:13px;border-radius:50%;background:var(--accent);border:2px solid #050507;box-shadow:0 0 0 1px #0009}.react-flow__handle.bp-reroute-pin{width:14px;height:14px;background:transparent!important;border:none!important}.vv-find{position:absolute;top:12px;right:12px;z-index:30;display:flex;gap:4px;align-items:center;background:var(--elevated);border:1px solid var(--line-3);border-top:2px solid var(--accent);border-radius:0;padding:5px;box-shadow:var(--shadow-2)}.vv-find-input{background:var(--panel-2);border:1px solid var(--line-2);border-radius:0;color:var(--text);padding:.34rem .55rem;font-size:.82rem;font-family:var(--mono);outline:none;width:190px}.vv-find-input:focus{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.vv-find-close{background:transparent;border:none;color:var(--muted);cursor:pointer;padding:0 6px;font-size:.9rem;transition:color .1s ease}.vv-find-close:hover{color:var(--text)}.vv-examples-wrap{position:relative;display:inline-flex}.vv-examples-menu{position:absolute;top:110%;right:0;left:auto;min-width:240px}.vv-btn-on{background:var(--accent)!important;border-color:var(--accent)!important;color:var(--ink)!important}.vv-vars{position:absolute;left:12px;top:12px;z-index:28;width:240px;max-height:70%;display:flex;flex-direction:column;background:var(--elevated);border:1px solid var(--line-3);border-top:2px solid var(--accent);border-radius:0;box-shadow:var(--shadow-2);overflow:hidden}.vv-vars-head{display:flex;align-items:center;justify-content:space-between;padding:.5rem .7rem;font-family:var(--mono);font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);border-bottom:1px solid var(--line-2);background:transparent}.vv-vars-add{background:var(--accent);border:none;color:var(--ink);border-radius:0;font-family:var(--mono);font-weight:700;font-size:.68rem;padding:.14rem .45rem;cursor:pointer}.vv-vars-add:hover{filter:brightness(1.1)}.vv-vars-list{list-style:none;margin:0;padding:.3rem;overflow-y:auto}.vv-vars-empty{padding:.5rem .6rem;font-size:.78rem;color:var(--muted);line-height:1.4}.vv-var{display:flex;align-items:center;gap:.4rem;padding:.3rem .4rem;border-radius:0;font-size:.8rem}.vv-var:hover{background:#b4bec814}.vv-var-swatch{flex:0 0 auto;width:10px;height:10px;border-radius:50%;border:1px solid rgba(0,0,0,.5)}.vv-var-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-family:var(--mono)}.vv-var-type{color:var(--muted);font-size:.7rem;font-family:var(--mono)}.vv-var-btn{background:transparent;border:1px solid var(--line-2);color:var(--text-dim);border-radius:0;font-size:.7rem;padding:.1rem .35rem;cursor:pointer}.vv-var-btn:hover{background:var(--accent);border-color:var(--accent);color:var(--ink)}.vv-legend{position:absolute;left:60px;bottom:12px;z-index:26;display:flex;gap:.7rem;flex-wrap:wrap;max-width:60%;padding:.4rem .6rem;border-radius:0;background:#0a0b0df0;border:1px solid var(--line-2);font-family:var(--mono);font-size:.66rem;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim)}.vv-legend-item{display:inline-flex;align-items:center;gap:.3rem}.vv-legend-dot{width:9px;height:9px;border:1px solid rgba(0,0,0,.5);flex:0 0 auto}.vv-help{position:absolute;right:12px;top:12px;z-index:30;width:300px;max-height:calc(100% - 24px);display:flex;flex-direction:column;background:var(--elevated);border:1px solid var(--line-3);border-top:2px solid var(--accent);border-radius:0;box-shadow:var(--shadow-2);overflow:hidden}.vv-help-list{list-style:none;margin:0;padding:.4rem .5rem;overflow-y:auto}.vv-help-list li{padding:.3rem .4rem;font-size:.78rem;color:var(--text-dim);line-height:1.5}.vv-help-list .vv-help-sec{font-size:.6rem;letter-spacing:.07em;text-transform:uppercase;font-weight:700;color:var(--muted);padding:.5rem .4rem .15rem}.vv-help-list .vv-help-sec:first-child{padding-top:.15rem}.vv-help-list kbd{font-family:var(--mono);font-size:.72rem;background:#b4bec81f;border:1px solid var(--line-2);border-radius:0;padding:.02rem .3rem;color:var(--text)}.vv-toast{position:absolute;left:50%;top:16px;transform:translate(-50%);z-index:40;padding:.5rem .9rem;border-radius:0;max-width:80%;background:var(--accent-2);color:var(--ink);font-family:var(--mono);font-size:.78rem;font-weight:600;box-shadow:var(--shadow-2);border:none}.react-flow__handle.bp-untyped{border-style:dashed!important}.vv-compile{display:inline-flex;align-items:center;gap:.4rem}.vv-compile-dot{width:8px;height:8px;border-radius:0}.vv-compile-ok .vv-compile-dot{background:var(--accent);box-shadow:none}.vv-compile-bad .vv-compile-dot{background:var(--accent-2);box-shadow:none}.vv-compile-bad{color:var(--accent-2);border-color:#ff5c1a80}.vv-problems{position:absolute;left:12px;right:12px;bottom:12px;z-index:28;max-height:40%;display:flex;flex-direction:column;background:var(--elevated);border:1px solid var(--line-3);border-top:2px solid var(--accent);border-radius:0;box-shadow:var(--shadow-2);overflow:hidden}.vv-problems-head{display:flex;align-items:center;justify-content:space-between;padding:.5rem .8rem;font-family:var(--mono);font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);border-bottom:1px solid var(--line-2);background:transparent}.vv-problems-list{list-style:none;margin:0;padding:.3rem;overflow-y:auto}.vv-problem{display:flex;gap:.5rem;align-items:flex-start;padding:.4rem .6rem;border-radius:0;font-size:.82rem;color:var(--text-dim);line-height:1.4}.vv-problem-click{cursor:pointer}.vv-problem-click:hover{background:#b4bec81a;color:var(--text)}.vv-problem-badge{flex:0 0 auto;width:16px;height:16px;border-radius:0;display:grid;place-items:center;font-size:.7rem;font-weight:700;color:var(--ink);margin-top:1px}.vv-problem-error .vv-problem-badge{background:#ff5160}.vv-problem-warning .vv-problem-badge{background:var(--accent-2)}.vv-problem-ok{padding:.5rem .7rem;font-size:.82rem;color:var(--muted)}.react-flow__handle.bp-data{width:11px;height:11px;border-radius:50%;border:2px solid #888;box-shadow:0 0 0 2px #080b12d9;transition:box-shadow .12s ease,transform .08s ease}.react-flow__handle.bp-exec{width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;background:transparent!important;border:none!important;border-radius:0!important;display:flex;align-items:center;justify-content:center}.react-flow__handle.bp-exec.react-flow__handle-left{left:6px;right:auto;transform:translateY(-50%)}.react-flow__handle.bp-exec.react-flow__handle-right{right:6px;left:auto;transform:translateY(-50%)}.bp-tri{width:15px;height:13px;pointer-events:none;overflow:visible;filter:drop-shadow(0 1px 1px rgba(0,0,0,.6))}.bp-exec-row{min-height:24px}.bp-out:has(.bp-exec) .bp-pinname{margin-right:20px}.react-flow__handle:hover{box-shadow:0 0 0 4px #c6ff004d,0 0 0 2px #050507e6}.react-flow__handle.bp-data:hover{box-shadow:0 0 0 5px #c6ff0052,0 0 0 2px #050507f2}.react-flow__node:hover .bp-node{border-color:#50555f;box-shadow:var(--node-shadow-hover)}.bp-node.bp-varlinked{border-color:#4f9cf2;box-shadow:0 0 0 2px #4f9cf2,0 0 14px -2px #4f9cf299,var(--node-shadow)}.react-flow__edge-path{stroke-linecap:butt}.react-flow__node.selected .bp-node{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent),0 1px 2px #0006,0 12px 28px -6px #0009}.react-flow__node{cursor:grab}.react-flow__node:active{cursor:grabbing}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:hover .react-flow__edge-path{stroke-width:3;filter:drop-shadow(0 0 4px currentColor)}.react-flow__controls{border-radius:0;overflow:hidden;box-shadow:var(--shadow-2);border:1px solid var(--line-2)}.react-flow__controls-button{background:var(--panel);border:none;border-bottom:1px solid var(--line-2);color:var(--text-dim);width:28px;height:28px;transition:background .1s ease,color .1s ease}.react-flow__controls-button:hover{background:var(--accent);color:var(--ink)}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls-button svg{fill:currentColor}.react-flow__minimap{border-radius:0!important;overflow:hidden;box-shadow:var(--shadow-2);border:1px solid var(--line-2)!important}.react-flow__minimap-mask{fill:#050507c7}.react-flow__attribution{display:none}.vv-mobile-tabs{display:none;flex:0 0 auto;gap:2px}.vv-mtab{font-family:var(--mono);font-size:.62rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);background:transparent;border:1px solid var(--line-2);border-radius:0;padding:.3rem .7rem;cursor:pointer}.vv-mtab-on{color:var(--ink);background:var(--accent);border-color:var(--accent)}@media (max-width: 900px){.vv-app{height:100dvh}.vv-topbar{height:auto;flex:0 0 auto;flex-wrap:wrap;gap:.45rem;padding:.45rem .6rem;row-gap:.45rem}.vv-toolbar{margin-left:0!important;flex-wrap:wrap;gap:.4rem}.vv-version{display:none}.vv-mobile-tabs{display:inline-flex}.vv-resizer{display:none}.vv-left,.vv-right{flex:1 1 100%!important}.vv-split.vv-mobile-graph .vv-left,.vv-split.vv-mobile-code .vv-right,.react-flow__minimap{display:none}}
