.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #555;--xy-background-pattern-lines-color-default: #333;--xy-background-pattern-cross-color-default: #333;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.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__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray: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.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.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:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{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:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.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.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@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;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.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-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.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:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.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-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.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:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));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:var(--xy-resize-background-color, var(--xy-resize-background-color-default));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%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}:root{--color-paper: oklch(97% .012 88);--color-surface: oklch(99% .006 88);--color-surface-raised: oklch(100% .005 88);--color-ink: oklch(25% .025 264);--color-muted: oklch(53% .025 264);--color-rule: oklch(84% .025 264);--color-rule-strong: oklch(65% .045 264);--color-accent: oklch(48% .17 278);--color-accent-ink: oklch(98% .01 88);--color-accent-soft: oklch(92% .045 278);--color-success: oklch(48% .12 151);--color-danger: oklch(50% .17 28);--color-focus: oklch(57% .19 264);--font-display: Georgia, "Times New Roman", serif;--font-body: Arial, Helvetica, sans-serif;--font-mono: "Courier New", Courier, monospace;--space-2xs: .25rem;--space-xs: .5rem;--space-sm: .75rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--text-xs: .75rem;--text-sm: .875rem;--text-md: 1rem;--text-lg: 1.25rem;--text-xl: clamp(1.5rem, 3vw, 2.25rem);--radius-sm: .25rem;--radius-md: .5rem;--rule-thin: 1px;--rule-thick: 2px;--dur-fast: .12s;--dur-medium: .22s;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in: cubic-bezier(.7, 0, .84, 0);--ease-in-out: cubic-bezier(.65, 0, .35, 1)}*{box-sizing:border-box}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important}html,body{margin:0;min-width:320px;overflow-x:clip;background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body)}button,input,textarea,select{font:inherit}button,.palette-item{transition:transform var(--dur-fast) var(--ease-out),opacity var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,.palette-item:focus-visible{outline:var(--rule-thick) solid var(--color-focus);outline-offset:var(--space-2xs)}button:active,.palette-item:active{transform:translateY(1px)}button:disabled{cursor:not-allowed;opacity:.45}input,textarea,select{outline:var(--rule-thick) solid transparent;outline-offset:var(--space-2xs)}input:hover,textarea:hover,select:hover{background:var(--color-accent-soft)}input:disabled,textarea:disabled,select:disabled{cursor:not-allowed;opacity:.55;background:var(--color-rule)}.app-shell{min-height:100vh;padding:var(--space-md)}.workbench{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(36rem,1fr);min-height:calc(100vh - 2rem);border:var(--rule-thin) solid var(--color-rule-strong);background:var(--color-surface)}.panel{min-width:0;padding:var(--space-md)}.panel+.panel{border-left:var(--rule-thin) solid var(--color-rule)}.panel h2{margin:0 0 var(--space-md);font-family:var(--font-display);font-size:var(--text-lg);font-style:normal}.panel h3{margin:var(--space-lg) 0 var(--space-xs);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase}.palette-panel{grid-column:1 / -1;display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--space-sm);overflow-x:visible;border-bottom:var(--rule-thin) solid var(--color-rule);padding:var(--space-sm);font-size:var(--text-xs)}.palette-panel>h2{align-self:center;margin:0}.palette-panel>div{flex:0 0 auto;border-left:var(--rule-thin) solid var(--color-rule);padding-left:var(--space-sm)}.palette-panel h3{margin-top:0}.palette-group{display:flex;gap:var(--space-xs);margin-bottom:0}.palette-panel>.program-controls{flex:0 0 19rem;width:19rem}.program-controls-row{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-xs)}.program-controls-row label{display:grid;gap:var(--space-2xs);color:var(--color-muted);font-size:var(--text-xs)}.program-controls-row select{width:100%;min-width:0;min-height:2rem;border:var(--rule-thin) solid var(--color-rule);padding-inline:var(--space-xs);background:var(--color-surface-raised);color:var(--color-ink)}.program-controls .example-help{display:block;width:100%;margin:var(--space-xs) 0 0;overflow:hidden;color:var(--color-muted);font-size:var(--text-xs);text-overflow:ellipsis;white-space:nowrap}.program-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-xs);margin:0 0 0 auto}.program-actions button{min-height:1.75rem;padding:var(--space-2xs) var(--space-xs);font-size:var(--text-xs)}.action-group{display:flex;gap:var(--space-2xs)}.action-group+.action-group{border-left:var(--rule-thin) solid var(--color-rule);padding-left:var(--space-xs)}.palette-item{display:flex;align-items:center;gap:var(--space-2xs);width:auto;min-width:4.75rem;padding:var(--space-2xs) var(--space-xs);border:var(--rule-thin) solid var(--color-rule);border-bottom-color:var(--color-accent);border-radius:var(--radius-sm);background:var(--color-surface-raised);color:var(--color-ink);cursor:grab;font-size:var(--text-xs);text-align:left}.palette-item:hover{background:var(--color-accent-soft)}.math-reference{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.math-reference code{padding:var(--space-xs);border:var(--rule-thin) solid var(--color-rule);background:var(--color-paper);color:var(--color-ink)}.palette-item[aria-pressed=true]{border-color:var(--color-accent);background:var(--color-accent-soft)}.structure-icon{width:var(--space-xl);height:var(--space-lg);flex:0 0 auto;fill:var(--color-accent-soft);stroke:currentColor;stroke-width:1.75;stroke-linejoin:round}.node-label{display:flex;align-items:center;justify-content:center;gap:var(--space-xs);white-space:nowrap}.node-label .structure-icon{width:var(--space-lg);height:var(--space-md)}.canvas-panel{grid-column:1;grid-row:2;min-height:36rem;padding:0;position:relative;border-left:0!important}.workbench.trace-open .palette-panel{visibility:hidden}.workbench.trace-open .canvas-panel{position:fixed;z-index:25;inset:0 var(--desk-width) 0 0;min-height:100vh;border-right:var(--rule-thick) solid var(--color-rule-strong)}.workbench.trace-open .canvas-toolbar{display:none}.canvas-toolbar{position:absolute;z-index:5;top:var(--space-sm);left:var(--space-sm);right:var(--space-sm);display:flex;align-items:center;gap:var(--space-xs);justify-content:flex-end;pointer-events:none}.canvas-toolbar button{pointer-events:auto}.placement-hint{margin-right:auto;padding:var(--space-xs) var(--space-sm);border:var(--rule-thin) solid var(--color-accent);border-radius:var(--radius-sm);background:var(--color-accent-soft);font-size:var(--text-sm)}.flow{height:100%;min-height:36rem;background:var(--color-surface)}.flow .react-flow__pane{cursor:grab}.flow .react-flow__pane.dragging{cursor:grabbing}.react-flow__edges{z-index:0!important}.react-flow__nodes{z-index:1!important}.react-flow__handle{opacity:0;pointer-events:none}.react-flow__node{isolation:isolate;padding:var(--space-sm) var(--space-xl);border:var(--rule-thin) solid var(--color-rule-strong);border-radius:var(--radius-sm);background:var(--color-surface-raised);color:var(--color-ink);font-family:var(--font-mono);box-shadow:none}.react-flow__node.selected,.react-flow__node.active-step{z-index:9!important;border:var(--rule-thick) solid var(--color-accent);background:var(--color-accent-soft)}.react-flow__node.active-step{z-index:10!important;border-color:var(--color-success);outline:4px solid var(--color-success);outline-offset:3px}.react-flow__node.container-node.selected,.react-flow__node.container-node.active-step{z-index:0!important}.react-flow__node.container-node.active-step,.react-flow__node.shape-input.active-step,.react-flow__node.shape-output.active-step{outline:0}.react-flow__node.container-node{width:17rem;height:11.25rem;overflow:visible;border:0;padding:0;background:transparent;pointer-events:none!important}.react-flow__node.container-node>.node-label{pointer-events:auto}.react-flow__node.nested-node{z-index:1!important}.diagram-connectors{position:absolute;z-index:0;top:0;left:0;width:1px;height:1px;overflow:visible;pointer-events:none}.diagram-connectors path{fill:none;stroke:var(--color-rule-strong);stroke-width:var(--rule-thick)}.react-flow__node.shape-start,.react-flow__node.shape-end{min-width:8rem;border-radius:999px}.react-flow__node.shape-input{min-width:10rem;min-height:2.75rem;padding-inline:calc(var(--space-xl) + var(--space-xs));border:0;background:transparent;isolation:isolate}.react-flow__node.shape-input:before,.react-flow__node.shape-input:after{content:"";position:absolute;inset:0;clip-path:polygon(14% 0,100% 0,86% 100%,0 100%);z-index:-2;background:var(--color-rule-strong)}.react-flow__node.shape-input:after{inset:var(--rule-thin);z-index:-1;background:var(--color-surface-raised)}.react-flow__node.shape-input.selected:before,.react-flow__node.shape-input.active-step:before{background:var(--color-accent)}.react-flow__node.shape-input.selected:after,.react-flow__node.shape-input.active-step:after{background:var(--color-accent-soft)}.react-flow__node.shape-input.active-step:before{background:var(--color-success)}.react-flow__node.shape-input.active-step:after{inset:4px}.inline-node-input{width:7rem;min-width:0;box-sizing:border-box;padding:var(--space-2xs) var(--space-xs);border:var(--rule-thin) solid var(--color-accent);background:var(--color-surface-raised);font:inherit;text-align:center}.inline-node-input[readonly]{border-color:transparent;background:transparent;cursor:default}.inline-node-textarea{display:block;overflow:hidden;resize:none;line-height:1.5;white-space:pre}.dimension-input{width:7rem;min-width:7rem;padding:var(--space-sm);border:var(--rule-thin) solid var(--color-accent);background:var(--color-surface-raised);color:var(--color-ink);font-size:var(--text-md);font-weight:700;text-align:center}.read-type-picker{position:absolute;top:calc(100% + var(--space-xs));left:50%;z-index:12;translate:-50% 0;display:grid;grid-template-columns:auto auto;align-items:center;gap:var(--space-xs);width:max-content;padding:var(--space-sm);border:var(--rule-thin) solid var(--color-accent);border-radius:var(--radius-sm);background:var(--color-surface-raised);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-xs)}.read-type-picker strong{grid-column:1 / -1}.read-type-picker label{display:contents}.read-type-picker select{min-width:7rem;padding:var(--space-2xs);border:var(--rule-thin) solid var(--color-rule);background:var(--color-surface-raised)}.classic-for-editor{width:100%;gap:0}.classic-for-editor>span{display:inline-flex;align-items:center}.classic-for-editor .inline-node-input{padding-inline:var(--space-2xs)}.container-node.shape-for>.node-label{width:var(--control-shape-width, max-content);min-width:16rem;padding-inline:var(--space-xl)}.react-flow__node.shape-output{min-width:10rem;min-height:3rem;padding-bottom:var(--space-lg);border:0;border-radius:0;background:transparent;isolation:isolate}.react-flow__node.shape-output:before,.react-flow__node.shape-output:after{content:"";position:absolute;inset:0;z-index:-2;clip-path:polygon(0 0,100% 0,100% 73%,88% 69%,76% 75%,64% 89%,52% 100%,40% 94%,28% 80%,16% 72%,0 78%);background:var(--color-rule-strong)}.react-flow__node.shape-output:after{inset:var(--rule-thin);z-index:-1;background:var(--color-surface-raised)}.react-flow__node.shape-output.selected:before,.react-flow__node.shape-output.active-step:before{background:var(--color-accent)}.react-flow__node.shape-output.selected:after,.react-flow__node.shape-output.active-step:after{background:var(--color-accent-soft)}.react-flow__node.shape-output.active-step:before{background:var(--color-success)}.react-flow__node.shape-output.active-step:after{inset:4px}.container-node>.node-label{--block-shape: polygon(0 0, 100% 0, 100% 100%, 0 100%);position:relative;z-index:2;width:max-content;min-width:12rem;max-width:calc(100% - 2rem);min-height:2.75rem;box-sizing:border-box;margin-inline:auto;padding:var(--space-sm) var(--space-xl);isolation:isolate}.container-node>.node-label:before,.container-node>.node-label:after{content:"";position:absolute;inset:0;z-index:-2;clip-path:var(--block-shape);background:var(--color-rule-strong)}.container-node>.node-label:after{inset:var(--rule-thin);z-index:-1;background:var(--color-accent-soft)}.container-node.selected>.node-label:before,.container-node.active-step>.node-label:before{background:var(--color-accent)}.container-node.active-step>.node-label:before{background:var(--color-success)}.container-node.active-step>.node-label:after{inset:4px}.container-node.active-step .if-branch-lines i,.container-node.active-step .for-flow-lines i,.container-node.active-step .while-flow-lines i,.container-node.active-step .do-while-flow-lines i{border-color:var(--color-success)}.container-node:before{content:"";position:absolute;z-index:0;inset:2.5rem var(--space-sm) var(--space-sm);border-right:var(--rule-thick) solid var(--color-rule-strong);border-bottom:var(--rule-thick) solid var(--color-rule-strong);border-left:var(--rule-thick) solid var(--color-rule-strong);pointer-events:none}.container-node:after{position:absolute;z-index:1;right:var(--space-md);bottom:var(--space-md);padding-inline:var(--space-2xs);background:var(--color-paper);color:var(--color-muted);font-family:var(--font-body);font-size:var(--text-xs)}.container-node.shape-if>.node-label{--block-shape: polygon(50% 0, 100% 50%, 50% 100%, 0 50%);width:var(--if-shape-width, 12rem);max-width:36rem;min-height:4rem;padding-inline:var(--space-xl)}.container-node.shape-if>.node-label .inline-node-input{max-width:none}.container-node.shape-if:before{content:none}.container-node.shape-if:after{content:none}.if-branch-lines{display:none}.if-branch-lines i{position:absolute;display:block;border-color:var(--color-rule-strong);border-style:solid}.if-branch-no{top:2rem;bottom:1.25rem;left:25%;width:calc(25% - var(--if-shape-half, 6rem));border-width:var(--rule-thick) 0 0 var(--rule-thick)}.if-branch-yes{top:2rem;right:25%;bottom:1.25rem;width:calc(25% - var(--if-shape-half, 6rem));border-width:var(--rule-thick) var(--rule-thick) 0 0}.if-branch-close{right:25%;bottom:1.25rem;left:25%;border-width:var(--rule-thick) 0 0}.if-branch-exit{bottom:0;left:50%;height:1.25rem;border-width:0 0 0 var(--rule-thick)}.if-branch-label{position:absolute;top:50%;padding:var(--space-2xs);background:var(--color-paper);color:var(--color-muted);font-family:var(--font-body);font-size:var(--text-xs);transform:translateY(-50%)}.if-branch-label.if-no{right:calc(100% + var(--space-xs))}.if-branch-label.if-yes{left:calc(100% + var(--space-xs))}.container-node.shape-for>.node-label{--block-shape: polygon(10% 0, 90% 0, 100% 50%, 90% 100%, 10% 100%, 0 50%)}.container-node.shape-for:before,.container-node.shape-for:after{content:none}.for-flow-lines{display:none}.for-flow-lines i{position:absolute;display:block;border-color:var(--color-rule-strong);border-style:solid}.for-flow-main{top:2.75rem;bottom:1.25rem;left:50%;border-width:0 0 0 var(--rule-thick)}.for-flow-return{top:1.35rem;right:50%;bottom:1.25rem;left:var(--space-xs);border-width:var(--rule-thick) 0 var(--rule-thick) var(--rule-thick)}.container-node.shape-while>.node-label{--block-shape: polygon(12% 0, 100% 0, 100% 100%, 12% 100%, 0 50%);width:var(--control-shape-width, max-content)}.container-node.shape-while:before,.container-node.shape-while:after{content:none}.while-flow-lines,.do-while-flow-lines{display:none}.while-flow-lines i,.do-while-flow-lines i{position:absolute;display:block;border-color:var(--color-rule-strong);border-style:solid}.while-flow-main{top:2.75rem;bottom:1.25rem;left:50%;border-width:0 0 0 var(--rule-thick)}.while-flow-return{top:1.35rem;right:50%;bottom:1.25rem;left:var(--space-xs);border-width:var(--rule-thick) 0 var(--rule-thick) var(--rule-thick)}.container-node.shape-do-while>.node-label{--block-shape: polygon(10% 0, 100% 0, 100% 100%, 10% 100%, 0 50%);position:absolute;right:0;bottom:0;left:0}.container-node.shape-do-while:before,.container-node.shape-do-while:after{content:none}.do-while-flow-main{top:1.25rem;bottom:2.75rem;left:50%;border-width:0 0 0 var(--rule-thick)}.do-while-flow-return{top:1.25rem;right:50%;bottom:1.35rem;left:var(--space-xs);border-width:var(--rule-thick) 0 var(--rule-thick) var(--rule-thick)}.react-flow__node.shape-vector,.react-flow__node.shape-matrix{border-style:double;border-width:var(--space-2xs)}.react-flow__node.shape-vector{min-width:18rem}.react-flow__node.shape-matrix{min-width:26rem}.react-flow__node.shape-vector{background-image:linear-gradient(90deg,transparent 32%,var(--color-rule) 32%,var(--color-rule) 33%,transparent 33%,transparent 66%,var(--color-rule) 66%,var(--color-rule) 67%,transparent 67%)}.react-flow__node.shape-matrix{background-image:linear-gradient(90deg,transparent 32%,var(--color-rule) 32%,var(--color-rule) 33%,transparent 33%,transparent 66%,var(--color-rule) 66%,var(--color-rule) 67%,transparent 67%),linear-gradient(0deg,transparent 47%,var(--color-rule) 47%,var(--color-rule) 50%,transparent 50%)}.react-flow__node.shape-function{min-width:12rem;border-radius:999px}.react-flow__node.shape-procedure{min-width:12rem;border-radius:0}.container-node.shape-function,.container-node.shape-procedure{border-radius:0}.container-node.shape-function:before,.container-node.shape-procedure:before{content:none}.container-node.shape-function>.node-label{--block-shape: inset(0 round 999px)}.container-node.shape-procedure>.node-label{background-image:linear-gradient(90deg,transparent var(--space-sm),var(--color-rule-strong) var(--space-sm),var(--color-rule-strong) calc(var(--space-sm) + 1px),transparent calc(var(--space-sm) + 1px),transparent calc(100% - var(--space-sm) - 1px),var(--color-rule-strong) calc(100% - var(--space-sm) - 1px),var(--color-rule-strong) calc(100% - var(--space-sm)),transparent calc(100% - var(--space-sm)))}.react-flow__node.shape-procedure:not(.container-node):before,.react-flow__node.shape-procedure:not(.container-node):after{content:"";position:absolute;top:0;bottom:0;width:var(--rule-thin);background:var(--color-rule-strong)}.react-flow__node.shape-procedure:not(.container-node):before{left:var(--space-sm)}.react-flow__node.shape-procedure:not(.container-node):after{right:var(--space-sm)}.insertion-point{position:absolute;z-index:8}.insertion-point button{min-height:1.75rem;translate:-50% 0;border:var(--rule-thick) dashed var(--color-accent);background:var(--color-accent-soft);color:var(--color-accent);animation:insertion-pulse 1.4s var(--ease-in-out) infinite alternate}.react-flow__edge-path{stroke:var(--color-rule-strong)}.button-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-xs)}button{min-height:2.25rem;border:var(--rule-thin) solid var(--color-rule-strong);border-radius:var(--radius-sm);padding:var(--space-xs) var(--space-sm);background:var(--color-surface-raised);color:var(--color-ink);cursor:pointer;white-space:nowrap}button:hover{background:var(--color-accent-soft)}button.primary{border-color:var(--color-accent);background:var(--color-accent);color:var(--color-accent-ink)}.react-flow__node.error-step{border-color:var(--color-danger)}button.primary:hover{opacity:.88}button.danger{color:var(--color-danger)}.field{display:grid;gap:var(--space-xs);margin-bottom:var(--space-md);color:var(--color-muted);font-size:var(--text-sm)}.field textarea,.field select{width:100%;border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-sm);padding:var(--space-sm);background:var(--color-surface-raised);color:var(--color-ink)}.field textarea{min-height:5rem;resize:vertical;font-family:var(--font-mono)}.status{display:inline-flex;margin:var(--space-sm) 0;border-bottom:var(--rule-thick) solid var(--color-success);font-size:var(--text-sm)}.error{color:var(--color-danger);font-size:var(--text-sm)}.desk-dialog[open]{position:fixed;z-index:30;inset:0 0 0 auto;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;gap:var(--space-md);width:var(--desk-width);max-width:none;height:100vh;max-height:none;margin:0;padding:var(--space-lg);border:0;background:var(--color-surface-raised);color:var(--color-ink)}.desk-resizer{position:absolute;z-index:4;top:0;bottom:0;left:-.4rem;width:.8rem;cursor:ew-resize;touch-action:none}.desk-resizer:after{content:"";position:absolute;top:0;bottom:0;left:calc(50% - 1px);width:2px;background:var(--color-accent)}.desk-dialog>header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);border-bottom:var(--rule-thick) solid var(--color-rule-strong);padding-bottom:var(--space-sm)}.desk-dialog h2,.desk-dialog h3{margin:0;font-family:var(--font-display)}.desk-controls{display:grid;grid-template-columns:minmax(16rem,1fr) 2fr;gap:var(--space-lg);align-items:center}.desk-controls .field{margin:0}.desk-speed{display:inline-flex;align-items:center;gap:var(--space-xs);margin-bottom:var(--space-xs);color:var(--color-muted);font-size:var(--text-sm)}.desk-speed select{min-height:2rem;border:var(--rule-thin) solid var(--color-rule);padding-inline:var(--space-xs);background:var(--color-surface-raised);color:var(--color-ink)}.desk-controls textarea{min-height:3.5rem}.desk-dialog .desk-wrap{max-height:none}.desk-dialog>section{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:var(--space-md)}.desk-dialog .code{width:100%;max-height:7rem;margin:0}.desk-wrap{max-height:24rem;overflow:auto;border:var(--rule-thin) solid var(--color-rule-strong);background:repeating-linear-gradient(0deg,transparent 0 1.7rem,color-mix(in oklch,var(--color-rule) 35%,transparent) 1.7rem calc(1.7rem + 1px)),var(--color-paper)}.desk-trace{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:var(--text-xs)}.desk-trace caption{padding:var(--space-sm);border-bottom:var(--rule-thin) solid var(--color-rule);color:var(--color-muted);font-family:var(--font-body);text-align:left}.desk-trace th{position:sticky;z-index:2;top:0;border-bottom:var(--rule-thick) solid var(--color-ink);background:var(--color-paper);color:var(--color-ink)}.desk-trace th,.desk-trace td{min-width:4rem;height:2rem;border-right:var(--rule-thin) solid var(--color-rule);border-bottom:var(--rule-thin) solid var(--color-rule);padding:var(--space-xs);text-align:center}.desk-trace th:nth-child(2),.desk-trace td:nth-child(2){min-width:8rem;text-align:left;white-space:nowrap}.desk-trace input{width:6rem;border:0;border-bottom:var(--rule-thin) solid var(--color-rule-strong);padding:var(--space-2xs);background:transparent;text-align:center}.desk-trace .initial-values{background:color-mix(in oklch,var(--color-surface-raised) 80%,transparent);color:var(--color-muted)}.desk-trace .changed-value{background:color-mix(in oklch,var(--color-accent-soft) 70%,transparent);font-weight:700}.desk-trace .current-step{background:color-mix(in oklch,var(--color-success) 18%,var(--color-paper));color:var(--color-ink);box-shadow:inset .35rem 0 0 var(--color-success)}.trace-array{margin:auto;border-collapse:collapse;background:var(--color-surface-raised)}.desk-trace .trace-array td{min-width:1.8rem;height:1.8rem;padding:var(--space-2xs);border:var(--rule-thin) solid var(--color-rule-strong)}.execution-badge{display:block;width:max-content;margin-top:var(--space-2xs);padding:.1rem var(--space-2xs);border-radius:999px;background:var(--color-accent);color:#fff;font-family:var(--font-body);font-size:.65rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase}.code{max-height:13rem;overflow:auto;padding:var(--space-sm);background:var(--color-ink);color:var(--color-paper);font-family:var(--font-mono);font-size:var(--text-xs);white-space:pre}.code-dialog[open]{position:fixed;z-index:30;inset:var(--space-xl);display:grid;grid-template-rows:auto minmax(0,1fr);width:min(70rem,calc(100vw - 4rem));height:calc(100vh - 4rem);margin:auto;padding:var(--space-lg);border:var(--rule-thick) solid var(--color-rule-strong);background:var(--color-surface-raised);color:var(--color-ink);box-shadow:0 1rem 4rem color-mix(in oklch,var(--color-ink) 30%,transparent)}.code-dialog header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md)}.code-dialog h2{margin:0}.code-dialog .code{max-height:none}.contact-dialog[open]{width:min(24rem,calc(100vw - 2rem));padding:var(--space-lg);border:var(--rule-thick) solid var(--color-rule-strong);border-radius:var(--radius-sm);background:var(--color-surface-raised);color:var(--color-ink);box-shadow:0 1rem 4rem color-mix(in oklch,var(--color-ink) 30%,transparent)}.contact-dialog::backdrop{background:color-mix(in oklch,var(--color-ink) 45%,transparent)}.contact-dialog header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md)}.contact-dialog h2,.contact-dialog p{margin:0 0 var(--space-md)}.contact-dialog header button{min-width:2.25rem;padding:0;font-size:var(--text-lg)}.contact-dialog a{color:var(--color-accent)}@keyframes insertion-pulse{0%{opacity:.7;transform:scale(.98)}to{opacity:1;transform:scale(1)}}@media(max-width:900px){.workbench{grid-template-rows:auto 36rem}.palette-panel{grid-column:1}.canvas-panel{grid-column:1;grid-row:2}}@media(max-width:600px){.app-shell{padding:var(--space-xs)}.palette-panel{gap:var(--space-sm)}.palette-panel>h2{display:none}.panel+.panel{border-left:0}.canvas-panel,.flow{min-height:28rem}.workbench.trace-open .canvas-panel{inset:0 0 58vh;min-height:0;border-right:0;border-bottom:var(--rule-thick) solid var(--color-rule-strong)}.desk-dialog[open]{inset:42vh 0 0;width:100vw;height:58vh;padding:var(--space-sm)}.desk-resizer{display:none}.desk-controls{grid-template-columns:1fr}}@media print{.palette-panel,.canvas-toolbar,.react-flow__controls,.code-dialog,.desk-dialog,.contact-dialog{display:none!important}.app-shell,.workbench,.canvas-panel{display:block;min-height:0;padding:0;border:0}.flow{height:100vh}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:var(--dur-fast)!important;animation:none!important}}
