.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: #F5F7FA;--surface-1: #FFFFFF;--surface-2: #EDF1F7;--border: #DCE3EC;--text-1: #0F1B2D;--text-2: #51607A;--text-3: #93A0B4;--accent-warm: #4F46E5;--accent-cool: #0EA5E9;--danger: #DC2626;--ok: #16A34A;--on-accent: #FFFFFF;--font-sans: "Carlito", "Calibri", "Segoe UI", system-ui, -apple-system, sans-serif;--font-mono: "Courier Prime", "Courier New", ui-monospace, monospace;--font-display: "Special Elite", "Courier Prime", "Courier New", monospace;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 14px;--ease: cubic-bezier(.16, 1, .3, 1);--shadow-1: 0 1px 2px rgba(16,27,45,.05), 0 1px 3px rgba(16,27,45,.06);--shadow-2: 0 6px 20px rgba(16,27,45,.1), 0 1px 3px rgba(16,27,45,.06)}:root[data-theme=dark]{--bg: #0F172A;--surface-1: #111827;--surface-2: #1E293B;--border: #2E3D55;--text-1: #F1F5F9;--text-2: #94A3B8;--text-3: #64748B;--accent-warm: #6366F1;--accent-cool: #38BDF8;--danger: #F87171;--ok: #34D399;--on-accent: #FFFFFF;--shadow-1: 0 1px 2px rgba(0,0,0,.3), 0 1px 3px rgba(0,0,0,.3);--shadow-2: 0 8px 28px rgba(0,0,0,.45), 0 1px 3px rgba(0,0,0,.4)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text-1);font-family:var(--font-sans);font-size:13.5px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}input,textarea,select,button{font-family:inherit;font-size:inherit}.mono{font-family:var(--font-mono);letter-spacing:-.01em}.dim{color:var(--text-2)}.dimmer{color:var(--text-3)}.app{position:relative;display:grid;grid-template-columns:var(--left-w, 200px) 1fr var(--right-w, 244px);grid-template-rows:40px 1fr var(--bottom-h, 128px);height:100%}.topbar{grid-column:1 / 4;display:flex;align-items:center;justify-content:space-between;padding:0 12px;background:var(--surface-1);border-bottom:1px solid var(--border)}.left{grid-row:2 / 3;background:var(--surface-1);border-right:1px solid var(--border);overflow:auto}.center{grid-row:2 / 3;position:relative;background:var(--bg);overflow:hidden}.right{grid-row:2 / 3;background:var(--surface-1);border-left:1px solid var(--border);overflow:auto}.bottom{grid-column:1 / 4;background:var(--surface-1);border-top:1px solid var(--border);padding:12px 16px}.gutter{position:absolute;z-index:20;background:transparent;transition:background .12s}.gutter:hover,.gutter:active{background:var(--accent-warm)}.gutter-v{width:6px;top:40px;bottom:var(--bottom-h, 128px);cursor:col-resize}.gutter-h{height:6px;left:0;right:0;bottom:var(--bottom-h, 128px);cursor:row-resize;transform:translateY(50%)}.gutter-left{left:var(--left-w, 200px);transform:translate(-50%)}.gutter-right{right:var(--right-w, 244px);transform:translate(50%)}.panel-title{font-family:var(--font-mono);font-weight:700;font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-3);padding:10px 12px 6px}.placeholder{margin:0 12px 12px;padding:14px;border:1px dashed var(--border);border-radius:var(--radius-md);color:var(--text-3);font-size:12px;line-height:1.5}.brand{display:flex;align-items:center;gap:9px;font-family:var(--font-display);font-weight:400;font-size:15px;letter-spacing:.02em}.brand .mk{width:22px;height:22px;border-radius:6px;display:grid;place-items:center;background:var(--accent-warm);color:var(--on-accent);font-family:var(--font-display);font-weight:400}.tab{font-family:var(--font-mono);font-weight:700;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;padding:7px 10px;border-radius:var(--radius-sm);color:var(--text-2);cursor:pointer}.tab.on{background:var(--surface-2);color:var(--text-1)}.canvas-frame{position:absolute;top:14px;right:14px;bottom:14px;left:14px;border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-2)}.scrub{width:100%;accent-color:var(--accent-warm)}.iconbtn{width:30px;height:30px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-2);color:var(--text-1);cursor:pointer;display:grid;place-items:center}.iconbtn:hover{border-color:var(--accent-warm)}.kv{display:flex;justify-content:space-between;align-items:center;padding:4px 12px;font-size:11px}.kv b{font-family:var(--font-mono);color:var(--text-1);font-size:11px;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.q-enter{animation:qenter .42s var(--ease) both}@keyframes qenter{0%{opacity:0;transform:translate(22px)}to{opacity:1;transform:none}}.bar-grow{transform-origin:left center;animation:bargrow .55s var(--ease) both}@keyframes bargrow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@media(prefers-reduced-motion:reduce){.q-enter,.bar-grow{animation:none}}.fireglow{animation:fglow .42s ease-in-out infinite alternate}@keyframes fglow{0%{opacity:.45;transform:scale(.94)}to{opacity:.82;transform:scale(1.07)}}.waterwave{animation:wwave 3.2s linear infinite}.waterwave2{animation:wwave 4.8s linear infinite reverse}@keyframes wwave{0%{transform:translate(0)}to{transform:translate(-52px)}}.waterswell{animation:wswell 6.5s ease-in-out infinite}@keyframes wswell{0%,to{transform:translateY(1.5px)}50%{transform:translateY(-2.5px)}}@media(prefers-reduced-motion:reduce){.fireglow,.waterwave,.waterwave2,.waterswell{animation:none}}.hazedrift{animation:hzd 22s ease-in-out infinite}@keyframes hzd{0%,to{transform:translate(-16px)}50%{transform:translate(16px)}}.hazedrift2{animation:hzd2 31s ease-in-out infinite}@keyframes hzd2{0%,to{transform:translate(12px)}50%{transform:translate(-14px)}}.smokerise2{animation:smk2 17s ease-in-out infinite}@keyframes smk2{0%,to{transform:translateY(2px)}50%{transform:translateY(-10px)}}.plumerise{animation:plm 5.5s ease-in-out infinite}@keyframes plm{0%{opacity:.15;transform:scale(.88)}45%{opacity:.8}to{opacity:0;transform:scale(1.2) translateY(-10px)}}@media(prefers-reduced-motion:reduce){.hazedrift,.hazedrift2,.smokerise2,.plumerise{animation:none}}.rain{animation:rainfall .5s linear infinite}@keyframes rainfall{0%{transform:translateY(-14px)}to{transform:translateY(0)}}.snow{animation:snowfall 3s linear infinite}@keyframes snowfall{0%{transform:translateY(-18px)}to{transform:translateY(0)}}.fogdrift{animation:fogd 14s ease-in-out infinite}.fogdrift2{animation:fogd2 18s ease-in-out infinite}@keyframes fogd{0%,to{transform:translate(-22px)}50%{transform:translate(22px)}}@keyframes fogd2{0%,to{transform:translate(16px)}50%{transform:translate(-16px)}}.smokerise{animation:smoke 4s ease-in-out infinite}@keyframes smoke{0%{transform:translateY(8px) scale(.85);opacity:.05}50%{opacity:.9}to{transform:translateY(-26px) scale(1.25);opacity:0}}.smokedrift{animation:smokedrift 3.4s ease-in-out infinite;transform-origin:center}@keyframes smokedrift{0%{transform:scale(.7);opacity:0}35%{opacity:1}to{transform:scale(1.25);opacity:0}}.windgust{animation:windgust 1.7s linear infinite}@keyframes windgust{0%{transform:translate(-40px);opacity:0}25%{opacity:1}to{transform:translate(90px);opacity:0}}.flame{animation:flame .25s ease-in-out infinite alternate;transform-origin:bottom}@keyframes flame{0%{transform:scaleY(.85) scaleX(1.05)}to{transform:scaleY(1.12) scaleX(.92)}}.splash{animation:splashx 1.1s ease-in-out infinite}@keyframes splashx{0%,to{opacity:.35}50%{opacity:.75}}.shakefx{animation:shake .09s linear infinite;transform-origin:center}@keyframes shake{0%{transform:translate(.8px,-.6px) rotate(.3deg)}25%{transform:translate(-.9px,.7px) rotate(-.3deg)}50%{transform:translate(.7px,.9px) rotate(.2deg)}75%{transform:translate(-.7px,-.8px) rotate(-.2deg)}to{transform:translate(.8px,.5px) rotate(.3deg)}}@media(prefers-reduced-motion:reduce){.rain,.snow,.fogdrift,.fogdrift2,.smokerise,.smokedrift,.windgust,.shakefx,.flame,.splash{animation:none}}.fig-swing{animation:fig-swing infinite ease-in-out}@keyframes fig-swing{0%,to{transform:rotate(var(--amp,18deg))}50%{transform:rotate(calc(var(--amp,18deg) * -1))}}.fig-flutter{animation:fig-flutter infinite ease-in-out}@keyframes fig-flutter{0%,to{transform:rotate(10deg)}50%{transform:rotate(-10deg)}}.fig-stroke{animation:fig-stroke infinite linear}@keyframes fig-stroke{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fig-flail{animation:fig-flail infinite ease-in-out}@keyframes fig-flail{0%,to{transform:rotate(-13deg)}50%{transform:rotate(13deg)}}.fig-wave{animation:fig-wave infinite ease-in-out}@keyframes fig-wave{0%,to{transform:rotate(-19deg)}50%{transform:rotate(15deg)}}.fig-breathe{animation:fig-breathe infinite ease-in-out}@keyframes fig-breathe{0%,to{transform:scaleY(1) translateY(0)}50%{transform:scaleY(1.035) translateY(-.4px)}}.fig-bob{animation:fig-bob infinite ease-in-out}@keyframes fig-bob{0%,to{transform:translateY(0)}25%,75%{transform:translateY(-1.6px)}50%{transform:translateY(0)}}.fig-bob-hi{animation:fig-bob infinite ease-in-out}.fig-tremble{animation:fig-tremble .12s infinite linear}@keyframes fig-tremble{0%{transform:translate(.5px,-.4px)}25%{transform:translate(-.6px,.4px)}50%{transform:translate(.4px,.5px)}75%{transform:translate(-.4px,-.5px)}to{transform:translate(.5px,.3px)}}.fig-sink{animation:fig-sink infinite ease-in-out}@keyframes fig-sink{0%,to{transform:translateY(0)}50%{transform:translateY(3.2px)}}.fig-swim{animation:fig-swim infinite ease-in-out}@keyframes fig-swim{0%{transform:translate(0) rotate(0)}20%{transform:translate(5px,-2.4px) rotate(4deg)}50%{transform:translate(8px,.6px) rotate(1deg)}72%{transform:translate(3.5px,2px) rotate(-3deg)}to{transform:translate(0) rotate(0)}}.fig-drown{animation:fig-drown infinite ease-in-out}@keyframes fig-drown{0%{transform:translate(0) rotate(0)}28%{transform:translate(-2.5px,-3.5px) rotate(-6deg)}52%{transform:translate(1.5px,4.5px) rotate(4deg)}78%{transform:translate(3px,-1px) rotate(7deg)}to{transform:translate(0) rotate(0)}}@media(prefers-reduced-motion:reduce){.fig-swing,.fig-flutter,.fig-stroke,.fig-flail,.fig-wave,.fig-breathe,.fig-bob,.fig-bob-hi,.fig-tremble,.fig-sink,.fig-swim,.fig-drown{animation:none}}@keyframes rt-pop{0%{opacity:1;transform:translate(0) scale(1)}to{opacity:0;transform:translate(var(--dx),var(--dy)) scale(0)}}@keyframes rt-popin{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes rt-cardin{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.rt-p{position:absolute;border-radius:50%;opacity:0;animation:rt-pop .9s ease-out forwards}@media(prefers-reduced-motion:reduce){.rt-p{animation:none;display:none}}@keyframes rt-bump{0%{transform:scale(1)}50%{transform:scale(1.08)}to{transform:scale(1)}}@keyframes rt-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}.rt-livedot{animation:rt-pulse 1.4s ease-in-out infinite}@keyframes hud-shake{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}@keyframes hud-blink{50%{opacity:.35}}@keyframes rt-curblink{50%{opacity:0}}.hud-shake{animation:hud-shake .35s ease}.hud-crit{animation:hud-blink .85s step-end infinite}.rt-cursor{display:inline-block;width:3px;height:.85em;background:currentColor;margin-left:3px;vertical-align:baseline;animation:rt-curblink .7s step-end infinite;opacity:.7}@keyframes rt-flash{0%{opacity:.16}to{opacity:0}}
