:root{--text:#1d2330;--muted:#6b7385;--panel:#fff;--input:#f6f7fa;--border:#d5d9e2;--accent:#7b5bd6;--select:#14b8a6;--grid:#e3e6ec;--axis:#6b7385;--line:#7b5bd6;--dip:#d9534f;--err:#a12a26;--err-bg:#fbe6e5;--warn:#8a5a00;--warn-bg:#fff3d6;--ok:#1e6b47;--ok-bg:#e2f5ec;--run:#2e8b57;--run-hover:#267349;--stop:#c0392b;--stop-hover:#a33024;--best:#9a6a00;--canvas:#f4f5f8;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;-webkit-font-smoothing:antialiased;font-family:system-ui,Segoe UI,Roboto,sans-serif}:root[data-theme=dark]{--text:#e6e9f0;--muted:#a3abbd;--panel:#1f232c;--input:#282d38;--border:#3d4454;--accent:#a590f3;--select:#2dd4bf;--grid:#333948;--axis:#a3abbd;--line:#a590f3;--dip:#f07a75;--best:#f2b701;--err:#ffb3ae;--err-bg:#4a2323;--warn:#ffd98a;--warn-bg:#45381c;--ok:#9ae6c1;--ok-bg:#1d3b2d;--run:#2f9e62;--run-hover:#37b571;--stop:#cf4a3c;--stop-hover:#e0574a;--canvas:#161920;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--text:#e6e9f0;--muted:#a3abbd;--panel:#1f232c;--input:#282d38;--border:#3d4454;--accent:#a590f3;--select:#2dd4bf;--grid:#333948;--axis:#a3abbd;--line:#a590f3;--dip:#f07a75;--best:#f2b701;--err:#ffb3ae;--err-bg:#4a2323;--warn:#ffd98a;--warn-bg:#45381c;--ok:#9ae6c1;--ok-bg:#1d3b2d;--run:#2f9e62;--run-hover:#37b571;--stop:#cf4a3c;--stop-hover:#e0574a;--canvas:#161920;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.react-flow{--xy-background-color:var(--canvas);--xy-minimap-background-color:var(--panel);--xy-controls-button-background-color:var(--input);--xy-controls-button-color:var(--text);--xy-controls-button-border-color:var(--border);--xy-controls-button-background-color-hover:var(--border);--xy-node-color:var(--text);--xy-edge-label-color:var(--text)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}html,body{overflow:hidden}body{background:var(--input);color:var(--text)}.react-flow{--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:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--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:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #00000014;--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:#0059dc14;--xy-selection-border-default:1px dotted #0059dccc;--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 #00000014;--xy-edge-label-background-color-default:#fff;--xy-edge-label-color-default:inherit;--xy-resize-background-color-default:#3367d9;direction:ltr}.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:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--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:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #ffffff14;--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:#c8c8dc14;--xy-selection-border-default:1px dotted #c8c8dccc;--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 #00000014;--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{width:100%;height:100%;position:absolute;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{pointer-events:none;position:absolute;overflow:visible}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.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;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:.5s linear infinite dashdraw}svg.react-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.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:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;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%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:0;left:50%;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{z-index:5;margin:15px;position:absolute}.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{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__viewport-portal{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.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{box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{background:var(--xy-controls-button-background-color,var(--xy-controls-button-background-color-default));border:none;border-bottom:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)));width:26px;height:26px;color:var(--xy-controls-button-color-props,var(--xy-controls-button-color,var(--xy-controls-button-color-default)));cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.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{border-radius:var(--xy-node-border-radius,var(--xy-node-border-radius-default));width:150px;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));padding:10px;font-size:12px}.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{background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;width:5px;height:5px;translate:-50% -50%}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.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-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.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))}.app{flex-direction:column;height:100vh;display:flex;overflow:clip}.toolbar .save-warning{color:var(--err);white-space:nowrap}.toolbar .project-name{text-overflow:ellipsis;width:250px;color:var(--text);background:0 0;border:1px solid #0000;border-radius:6px;padding:2px 6px;font-weight:600}.toolbar .project-name:hover,.toolbar .project-name:focus{border-color:var(--border);background:var(--panel)}.toolbar{border-bottom:1px solid var(--border);background:var(--panel);z-index:10;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:8px;padding:8px 12px;display:flex;position:sticky;top:0}.toolbar select.examples-menu{text-overflow:ellipsis;max-width:15em}.toolbar .sep{background:var(--border);align-self:stretch;width:1px}.toolbar button.active{border-color:var(--accent);color:var(--accent)}.workspace{flex:1;min-height:0;display:flex}.canvas{flex:1;min-width:0;min-height:0;position:relative}.palette{background:var(--panel);border-right:1px solid var(--border);flex-direction:column;flex:none;gap:6px;width:200px;min-height:0;padding:8px;animation:.18s ease-out panel-left-in;display:flex}@keyframes panel-left-in{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:none}}.palette.folded{align-items:center;gap:10px;width:30px;padding:6px 3px}.palette-head{justify-content:space-between;align-items:center;display:flex}.palette-toggle{padding:0 7px;line-height:1.4}.palette-vertical{writing-mode:vertical-rl;color:var(--muted);font-size:var(--fs-small);letter-spacing:.08em;text-transform:uppercase}.palette-search{width:100%}.palette-list{flex-direction:column;flex:1;gap:2px;min-height:0;padding-right:2px;display:flex;overflow-y:auto}.palette-list section{flex-direction:column;gap:2px;margin-bottom:4px;display:flex}.palette-group{text-align:left;font-weight:600;font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.04em;background:0 0;border:none;padding:4px 2px 2px}.palette-group:hover{background:var(--input)}.palette-group .chev{width:1em;color:var(--muted);display:inline-block}.palette-item{text-align:left;border-left:4px solid var(--node-color);white-space:nowrap;text-overflow:ellipsis;cursor:move;position:relative;overflow:hidden}.palette-empty{padding:6px 2px}.palette-foot{font-size:var(--fs-tiny)}button,select,input{font:inherit;font-size:var(--fs);color:var(--text);background:var(--input);border:1px solid var(--border);border-radius:4px;padding:3px 6px}button{cursor:pointer}button:hover{border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}button.danger{color:var(--err)}input:disabled{opacity:.5}:root{--fs:13px;--fs-small:12px;--fs-tiny:11px;--fs-title:14px;--node-s:300px;--node-m:400px;--node-l:560px}.node-shell{background:var(--panel);color:var(--text);border:1px solid color-mix(in srgb, var(--node-color,var(--accent)) 55%, var(--border));border-radius:7px;flex-direction:column;display:flex;position:relative;box-shadow:0 2px 6px #00000024}.node-header{background:var(--node-color,var(--accent));min-height:30px;color:var(--node-text,#fff);font-weight:600;font-size:var(--fs-title);letter-spacing:.01em;border-radius:6px 6px 0 0;align-items:center;gap:6px;padding:4px 6px 4px 10px;display:flex}.node-header-title{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.node-header .node-collapse{color:inherit;opacity:.85;background:0 0;border:none;padding:0 5px;font-size:14px;line-height:1}.node-header .node-collapse:hover{opacity:1;background:#0000001f}.node-err-dot{background:var(--stop);color:#0000;border-radius:50%;justify-content:center;align-items:center;width:17px;height:17px;font-size:0;display:inline-flex;box-shadow:0 0 0 2px #fff}.node-err-dot:before{content:"!";color:#fff;font-size:12px;font-weight:700}.node-shell.has-error{border-color:var(--stop);box-shadow:0 0 0 1.5px var(--stop), 0 2px 6px #00000024}.react-flow__node.selected .node-shell{outline:2px solid var(--select);outline-offset:2px}.node-caption{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:var(--fs-title);color:var(--text);cursor:text;margin-bottom:4px;font-style:italic;font-weight:600;position:absolute;bottom:100%;left:2px;overflow:hidden}input.node-caption.editing{cursor:auto;width:260px;font-style:normal;font-weight:400;overflow:visible}.node{color:var(--text);font-size:var(--fs);flex-direction:column;gap:6px;min-width:190px;padding:8px 10px;display:flex}.node-shell.collapsed .node-header{border-radius:6px}.node-shell.collapsed>.node{visibility:hidden;pointer-events:none;gap:0;min-height:0;padding:0;overflow:visible;height:0!important}.node-shell.collapsed>.node *{position:static!important}.node-shell.collapsed .react-flow__handle{visibility:visible;pointer-events:all;position:absolute!important;top:15px!important}.node-title{font-weight:600;font-size:var(--fs-title);align-items:center;gap:6px;display:flex}.node input.title{font-weight:600;font-size:var(--fs-title);background:0 0;border-color:#0000;width:150px;padding:1px 3px}.node input.title:hover,.node input.title:focus{border-color:var(--border)}.swatch{border:1px solid #00000040;border-radius:3px;flex:none;width:12px;height:12px;display:inline-block}.node input.short{width:72px}.node input.tiny{width:56px}.node input.short,.node input.tiny{appearance:textfield}.node input.short::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.node input.short::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.node input.tiny::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.node input.tiny::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.node input.label{flex:1;min-width:60px}.node input.color,.lib-editor input[type=color]{width:26px;height:22px;padding:1px}.stack-rows{background:var(--input);border-radius:4px;flex-direction:column;gap:1px;max-height:140px;padding:4px 6px;display:flex;overflow:auto}.dbr-row{align-items:center}.dbr-row select{max-width:90px}.fig-tools{gap:3px;margin-left:auto;display:inline-flex}.fig-tools button{font-size:var(--fs-small);padding:1px 5px}.curves{flex-direction:column;gap:4px;max-height:220px;display:flex;overflow-y:auto}.curve{border:1px solid var(--border);border-radius:4px;flex-direction:column;gap:3px;padding:4px;display:flex}.curve.off{opacity:.55}.curve select{max-width:110px}.curve select.src{max-width:230px}.curve .slice{padding-left:22px}.plot .draw-label{fill:var(--text);font-size:var(--fs-small)}.plot .draw-label.bold{font-weight:600}.plot .bracket{stroke:var(--text);stroke-width:1.2px}.plot .light{stroke:#e0a000;stroke-width:2.5px;fill:none}.node label{justify-content:space-between;align-items:center;gap:8px;display:flex}.node label input[type=number]{width:96px}.node label select{width:auto;min-width:96px;max-width:100%}.node label>input:not([type]),.node label>input[type=text]{flex:auto;min-width:0}.node .row{justify-content:flex-start;align-items:center;gap:6px;display:flex}.node .btns{margin-top:2px}.hint{color:var(--muted);font-size:var(--fs-small)}.zone-edit{flex-direction:column;gap:3px;margin:2px 0 4px;display:flex}.zone-table{border-collapse:collapse}.zone-table th{color:var(--muted);font-weight:500;font-size:var(--fs-small);text-align:left;padding:0 3px}.zone-table td{padding:1px 2px}.zone-table input.short{width:80px}.zone-handle{cursor:move}.node-material{width:340px}.node-layer,.node-rough{width:var(--node-s)}.node-rough label select{width:auto}.rough-profile{border:1px solid var(--border);background:var(--input);border-radius:4px;width:100%;height:70px;display:block}.node-combine,.node-dbr{width:var(--node-m)}.node-compare,.node-draw{width:var(--node-l)}.node-param,.node-sweep{width:var(--node-s)}.node-compute{width:var(--node-m)}.node-plot{width:var(--node-l)}.section{color:var(--muted);margin-top:4px;font-weight:600}.port-row{align-items:baseline;gap:6px;min-height:18px;display:flex;position:relative}.port-row.out{justify-content:flex-end;margin-top:4px;font-weight:600}.port-row .role{width:58px;color:var(--muted)}.val{font-family:ui-monospace,Consolas,monospace;font-size:var(--fs-small)}.muted{color:var(--muted)}.node .port-row .react-flow__handle-left{left:-12px}.node .port-row .react-flow__handle-right{right:-12px}.node .port-row>label{flex:1}.react-flow__handle{border:2px solid var(--panel);width:14px;height:14px}.react-flow__handle:after{content:"";border-radius:50%;position:absolute;inset:-7px}.react-flow__handle.multi{border-radius:3px}.node.view-error{flex-direction:column;gap:6px;min-width:260px;display:flex}.crash{max-width:640px;color:var(--text);margin:60px auto;padding:24px;font-family:system-ui,sans-serif}.crash pre{white-space:pre-wrap;background:var(--panel);border-radius:6px;padding:10px}.crash .row{gap:10px;display:flex}.react-flow__handle.multi:after{border-radius:4px}.react-flow__handle:hover{transform:translate(var(--hx,0), -50%) scale(1.25)}.react-flow__handle-left{--hx:-50%}.react-flow__handle-right{--hx:50%}.msg{font-size:var(--fs-small);border-radius:4px;padding:3px 6px}.msg.err{background:var(--err-bg);color:var(--err)}.msg.warn{background:var(--warn-bg);color:var(--warn)}.msg.okay{background:var(--ok-bg);color:var(--ok)}.msg.busy{background:var(--input);color:var(--muted);position:relative;overflow:hidden}.msg.busy .bar{background:var(--accent);height:2px;transition:width .2s;position:absolute;bottom:0;left:0}.msg.info{background:var(--input);color:var(--muted)}.progress-track{background:var(--border);border-radius:4px;height:8px;margin-top:6px;overflow:hidden}.progress-fill{background:var(--accent);border-radius:4px;height:100%;transition:width .25s}.chart{background:var(--input);border-radius:4px}.node .row.wrap{flex-wrap:wrap}.node .radios,.node .checks{flex-wrap:wrap;gap:4px 12px;display:flex}.node .checks{max-height:120px;overflow-y:auto}.node label.radio{justify-content:flex-start;gap:4px;display:inline-flex}.node label.slider{grid-template-columns:90px 1fr auto;gap:8px;display:grid}.node label.slider input{width:100%}.node input.list{width:150px}.node details summary{cursor:pointer;color:var(--muted)}.node details{flex-direction:column;gap:4px;display:flex}.val.swept{color:#c24fbd}.empty{width:500px;height:290px;color:var(--muted);text-align:center;place-items:center;padding:16px;display:grid}table.point td{padding:2px 10px}.map{position:relative}.map canvas,.map svg{position:absolute;top:0;left:0}.plot .grid{stroke:var(--grid)}.plot .frame{fill:none;stroke:var(--axis);stroke-width:1px}.plot .axis-line{stroke:var(--axis)}.plot .tick{fill:var(--axis);font-size:var(--fs-small)}.plot .axis-title{fill:var(--text);font-size:var(--fs-small)}.plot .crosshair{stroke:var(--axis);stroke-dasharray:3 3}.plot .zoom-sel{fill:var(--accent);opacity:.15}.plot .tip{fill:var(--panel);stroke:var(--border);opacity:.95}.plot .tip-text{fill:var(--text);font-size:var(--fs-small);font-family:ui-monospace,Consolas,monospace}.legend{font-size:var(--fs-small);color:var(--muted);flex-wrap:wrap;gap:4px 12px;display:flex}.legend span{align-items:center;gap:4px;display:inline-flex}.legend i{border-radius:2px;width:14px;height:3px;display:inline-block}.legend i.grad{background:linear-gradient(90deg,#440154,#3e4989,#26828e,#35b779,#b5de2b);width:60px;height:8px}.library{z-index:10;background:var(--panel);border-left:1px solid var(--border);width:430px;font-size:var(--fs);flex-direction:column;gap:8px;padding:10px 12px;display:flex;position:absolute;top:0;bottom:0;right:0;overflow-y:auto;box-shadow:-4px 0 12px #00000026}.library header{justify-content:space-between;align-items:center;display:flex}.library .row{align-items:center;gap:6px;display:flex}.library .row.wrap{flex-wrap:wrap}.library label{justify-content:space-between;align-items:center;gap:8px;display:flex}.library label.radio{justify-content:flex-start}.library label input[type=number]{width:80px}.library input.short{width:64px}.library input.name{flex:1;font-weight:600}.library textarea{color:var(--text);background:var(--input);border:1px solid var(--border);border-radius:4px;padding:4px;font:11px ui-monospace,Consolas,monospace}.lib-list{border:1px solid var(--border);border-radius:4px;flex-direction:column;flex:none;gap:2px;max-height:320px;padding:2px;display:flex;overflow-y:auto}.help-panel h4{margin:10px 0 2px}.help-panel ol{flex-direction:column;gap:4px;margin:0;padding-left:18px;display:flex}.help-panel details summary{cursor:pointer;font-weight:600}.help-panel dl{flex-direction:column;gap:6px;margin:4px 0 8px;display:flex}.help-panel dt{font-weight:600}.help-panel dd{color:var(--muted);margin:0 0 0 10px}.help-table{border-collapse:collapse;font-size:var(--fs-small)}.help-table td{border-top:1px solid var(--border);vertical-align:top;padding:3px 6px}.help-table td:first-child{white-space:nowrap;font-weight:600}.project-item{border-bottom:1px solid var(--border);grid-template-columns:1fr auto auto;align-items:center;gap:6px;padding:4px;display:grid}.node-help{font-size:var(--fs-small);color:var(--muted);background:var(--input);border-radius:4px;margin:4px 8px 0;padding:6px 8px}.lib-item{text-align:left;background:0 0;border-color:#0000;grid-template-columns:16px 1fr auto;align-items:center;gap:6px;display:grid}.lib-item.active{border-color:var(--accent);background:var(--input)}.lib-search{box-sizing:border-box;width:100%}.lib-group>summary{cursor:pointer;padding:3px 4px;font-weight:600}.lib-group>summary .muted{font-weight:400}.lib-group[open]{padding-bottom:4px}.lib-group .lib-item{width:100%}.lib-editor{border-top:1px solid var(--border);flex-direction:column;gap:6px;padding-top:8px;display:flex}.lib-editor .source{max-height:48px;overflow:auto}.rii{border:1px dashed var(--border);border-radius:4px;flex-direction:column;gap:4px;padding:6px;display:flex}.rii select{width:100%}.node-matsweep,.node-aniso{width:var(--node-s)}.dbr-row .mat{flex:1;min-width:70px}.dbr-row.sub{margin-top:-4px;padding-left:22px}.node-analysis{width:var(--node-m)}.node-analysis .interval{align-items:center;gap:4px;display:inline-flex}.node-analysis select.wide{width:auto;max-width:100%}.stack-rows.results{font-size:var(--fs-small)}.plot .ann-text{font-size:var(--fs-tiny);fill:var(--text);font-family:ui-monospace,Consolas,monospace}.legend i.dot{border:2px solid;border-radius:50%;width:8px;height:8px;background:0 0!important}.legend i.dashed{border-top:2px dashed;height:0;background:0 0!important}.plot .notes{fill:var(--panel);stroke:var(--border);opacity:.9}.node-fit{width:var(--node-l)}.node-fit .interval{align-items:center;gap:4px;display:inline-flex}.fit-comp{border:1px solid var(--border);border-radius:4px;flex-direction:column;gap:2px;padding:4px 6px;display:flex}.fit-comp .remove{margin-left:auto;padding:0 6px}.fit-param{font-size:var(--fs-small);grid-template-columns:120px 1fr 96px 40px 38px 64px;align-items:center;gap:4px;display:grid}.fit-param input[type=range]{width:100%}.fit-param input.short{box-sizing:border-box;width:96px}.fit-param .lock{white-space:nowrap}.fit-param .unit{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fit-param .lock{font-size:var(--fs-tiny)}.fit-param .sigma{color:var(--muted)}.empty.small{width:470px;height:250px}button.primary{border-color:var(--accent);color:var(--accent);font-weight:600}button.btn-run,button.btn-stop{color:#fff;border-color:#0000;font-weight:600}button.btn-run{background:var(--run)}button.btn-stop{background:var(--stop)}button.btn-run:hover:not(:disabled){background:var(--run-hover);border-color:#0000}button.btn-stop:hover{background:var(--stop-hover);border-color:#0000}.plot .band-label{font-size:var(--fs-small);fill:var(--text);opacity:.85}.node-field{width:var(--node-l)}.node-field .interval{align-items:center;gap:4px;display:inline-flex}.node-field .slider{grid-template-columns:90px 1fr 80px;align-items:center;gap:6px;display:grid}.node-field .slider input[type=range]{width:100%}.field-table{font-size:var(--fs-small);grid-template-columns:14px 1fr 70px;align-items:center;gap:2px 6px;display:grid}.node-variable{width:var(--node-s)}.node-variable .slider-wide{flex:1}.node-objective{width:var(--node-m)}.node-objective .interval{align-items:center;gap:4px;display:inline-flex}.node-zones{width:var(--node-l)}.zones{flex-direction:column;gap:3px;display:flex}.zone-row{font-size:var(--fs-small);flex-wrap:wrap;align-items:center;gap:4px;display:flex}.zone-row select{max-width:160px}.zone-row.sub{flex-wrap:wrap;padding-left:18px}.formula-input{flex:180px;min-width:160px}.design-table input.tie{width:44px}.design-table td{white-space:nowrap}.band-block{border-bottom:1px dashed var(--border);flex-direction:column;gap:2px;padding:2px 0;display:flex}.node-optimizer{width:var(--node-l)}.pareto{cursor:crosshair;display:block}.pareto .tick{font-size:var(--fs-small);fill:var(--muted)}.pareto .axis-title{font-size:var(--fs-small);fill:var(--text)}.node-import{width:var(--node-l)}.node-import .ellipsis{text-overflow:ellipsis;white-space:nowrap;max-width:240px;overflow:hidden}.node-target{width:var(--node-l)}.node-target .interval,.node-match .interval{align-items:center;gap:4px;display:inline-flex}.node-match{width:var(--node-l)}.opt-vars{flex-direction:column;gap:2px;max-height:180px;display:flex;overflow-y:auto}.opt-var{font-size:var(--fs-small);grid-template-columns:18px 1fr auto auto 110px;align-items:center;gap:6px;display:grid}.opt-var .best{color:var(--best)}.runs{flex-direction:column;gap:6px;max-height:200px;display:flex;overflow-y:auto}.run{border-bottom:1px solid var(--border);flex-direction:column;gap:2px;padding-bottom:4px;display:flex}.node-formula{width:var(--node-l)}.node-formula .var-name{width:34px;font-family:ui-monospace,monospace}.node-formula select.source{max-width:100%}.node-formula textarea.expr{box-sizing:border-box;width:100%;font-family:ui-monospace,monospace;font-size:var(--fs);resize:vertical;background:var(--input);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:4px 6px}.algo-settings{border-left:2px solid var(--border);flex-direction:column;gap:4px;padding-left:6px;display:flex}.algo-settings button.link{color:var(--muted);font-size:var(--fs-small);background:0 0;border:none;align-self:flex-start;padding:0;text-decoration:underline}.node .color-field{align-items:center;gap:6px;display:inline-flex}.runs .run.chosen{outline:1px solid var(--node-color);border-radius:4px}.node-info{box-sizing:border-box;background:color-mix(in srgb, var(--panel) 88%, var(--node-color));min-width:180px;min-height:90px}.node-info .title-input{color:var(--text);font-weight:600;font-size:var(--fs-title);background:0 0;border:none;flex:1}.node textarea.auto-text{resize:none;font:inherit;box-sizing:border-box;min-width:0;color:var(--text);background:var(--input);border:1px solid var(--border);border-radius:4px;padding:3px 6px;line-height:1.35;overflow:hidden}.node textarea.auto-text.mono,.node textarea.custom-expr{font-family:var(--mono,monospace)}.node-info textarea.title-input{font-weight:600;font-size:var(--fs-title);background:0 0;border:none}.node-info textarea{resize:none;color:var(--text);border:1px dashed var(--border);font:inherit;background:0 0;border-radius:4px;flex:1;padding:4px}.node-info .note-view{cursor:text;white-space:pre-wrap;overflow-wrap:anywhere;border:1px solid #0000;border-radius:4px;flex:1;padding:4px;overflow:auto}.node-info .note-view:hover{border-color:var(--border)}.note-bar{gap:3px}.note-bar button{min-width:24px;padding:1px 6px}.note-bar input[type=color]{background:0 0;border:none;width:26px;height:20px;padding:0}.note-h{font-weight:700}.note-h1{font-size:1.15em}.note-h2{font-size:1.07em}.note-line{min-height:1.2em}.node-notes{width:var(--node-m)}.node-notes.sized{min-width:260px}.node-notes.sized .note-preview{flex:1;min-height:60px;max-height:none}.node-notes .note-body{white-space:pre-wrap;margin:2px 0 8px}.node-notes .note-preview{border:1px solid var(--border);white-space:pre-wrap;overflow-wrap:anywhere;cursor:auto;-webkit-user-select:text;user-select:text;border-radius:4px;max-height:260px;margin:6px 0;padding:6px;overflow:auto}.node-reverse{width:var(--node-s)}.node .port-row.sub-port{font-size:var(--fs-small);margin-top:-3px;padding-left:14px}.node-filter{width:var(--node-l)}.layer-ga .role-row{border-top:1px solid var(--border);grid-template-columns:112px minmax(0,1fr);align-items:start;gap:6px;padding:5px 0;display:grid}.layer-ga .role-name{font-weight:600;font-size:var(--fs-small);padding-top:3px}.layer-ga .chips{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.layer-ga .chip{border:1px solid var(--border);background:var(--panel);font-size:var(--fs-small);border-radius:10px;align-items:center;gap:2px;padding:1px 4px 1px 8px;display:inline-flex}.layer-ga .chip button{cursor:pointer;color:var(--muted);background:0 0;border:none;padding:0 3px;line-height:1}.layer-ga .chip button:hover{color:var(--text)}.layer-ga select.add-chip{font-size:var(--fs-small);max-width:170px;padding:1px 4px}.layer-ga .role-rules{margin-top:3px}.node-filter .interval{align-items:center;gap:4px;display:inline-flex}.node-filter input.short-text{width:90px}.hist-stats{font-size:var(--fs-small);color:var(--muted);font-variant-numeric:tabular-nums;padding:2px 4px}.node-tolerance,.node-kinetics,.node-sensorgram{width:var(--node-l)}.protocol-table input.step-label{width:120px}.node-tolerance .indent{padding-left:18px}.node-tolerance .grow{flex:1}.node-tolerance .yield{font-weight:600}.node-tolerance .tol-table td{white-space:nowrap}.node-tolerance .tol-table td:first-child{white-space:normal;font-size:var(--fs-small)}.node-tolerance .tol-table th{padding-top:4px}.ranking{font-size:var(--fs-small);flex-direction:column;gap:2px;display:flex}.rank-row{grid-template-columns:200px 1fr 56px;align-items:center;gap:6px;display:grid}.rank-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rank-bar{background:var(--input);border-radius:2px;height:9px;overflow:hidden}.rank-bar i{height:100%;display:block}.legend.marks{align-items:center}.legend .mark-toggle{font-size:var(--fs-small);background:0 0;align-items:center;gap:4px;padding:1px 6px;display:inline-flex}.legend .mark-toggle.off{opacity:.4;text-decoration:line-through}.legend i.area{opacity:.35;border-radius:2px}.ctx-menu{z-index:1000;background:var(--panel);color:var(--text);border:1px solid var(--border);min-width:190px;font-size:var(--fs);border-radius:6px;flex-direction:column;gap:1px;padding:4px;display:flex;position:fixed;box-shadow:0 6px 20px #00000040}.ctx-menu.add{width:260px;max-height:420px}.ctx-menu button{text-align:left;background:0 0;border:none;border-radius:4px;align-items:center;gap:8px;padding:5px 8px;display:flex}.ctx-menu button:hover,.ctx-menu button.active{background:var(--input)}.ctx-menu button.danger{color:var(--err)}.ctx-menu .kbd{font-size:var(--fs-tiny);color:var(--muted);border:1px solid var(--border);border-radius:3px;margin-left:auto;padding:0 4px}.ctx-title{color:var(--muted);font-weight:600;font-size:var(--fs-small);padding:4px 8px}.ctx-search{margin:2px;padding:5px 8px}.ctx-list{overflow-y:auto}.ctx-group{font-size:var(--fs-tiny);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:6px 8px 2px}.ctx-swatch{background:var(--node-color);border-radius:2px;flex:none;width:10px;height:10px}.ctx-empty{padding:8px}.react-flow__controls-button.on{color:var(--accent);background:color-mix(in srgb, var(--accent) 18%, var(--input))}.react-flow__controls-button .step{font-size:9px;font-weight:600}.react-flow__controls-button{font-size:14px;font-weight:600}.react-flow__edge .flow-arrow{stroke-dasharray:none;animation:none}.react-flow__edge .flow-halo{fill:none;stroke:var(--select);opacity:.35;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.react-flow__edge.selected .react-flow__edge-path{stroke-dasharray:none;animation:none}.node-grating{width:var(--node-m)}.node-drawgrating,.node-rcwafield{width:var(--node-l)}.node-rcwafield .slider,.node-drawgrating .slider{grid-template-columns:90px 1fr auto;align-items:center;gap:6px;display:grid}svg.plot.paint{cursor:crosshair;touch-action:none}button.active{border-color:var(--accent);color:var(--accent)}.node .row.chart-head{justify-content:space-between;align-items:center}.react-flow__node-frame{pointer-events:none!important}.react-flow__node-frame .react-flow__resize-control{pointer-events:all}.group-frame{box-sizing:border-box;border:2px solid var(--frame-color);background:color-mix(in srgb, var(--frame-color) 9%, transparent);border-radius:10px;width:100%;height:100%}.frame-header{pointer-events:all;background:var(--frame-color);color:#fff;font-weight:600;font-size:calc(var(--fs-title) + 1px);cursor:move;white-space:nowrap;text-overflow:ellipsis;border-radius:6px;max-width:calc(100% - 16px);margin:6px 8px;padding:3px 10px;display:inline-block;overflow:hidden}.frame-header input{width:220px;font-weight:600}.react-flow__node-frame.selected .group-frame{box-shadow:0 0 0 2px var(--select)}.react-flow__resize-control.line{border-color:var(--select)}.react-flow__resize-control.handle{background:var(--select);border-color:var(--select)}.ctx-colors{gap:5px;padding:4px 8px;display:flex}.ctx-menu button.ctx-color{border:2px solid #0000;border-radius:50%;width:20px;height:20px;padding:0}.ctx-menu button.ctx-color.on{border-color:var(--text)}.ctx-menu button.ctx-color:hover{background:inherit;transform:scale(1.12)}.undo-redo{gap:2px;display:inline-flex}.undo-redo button{padding:1px 8px;font-size:15px}.node .limits .interval{align-items:center;gap:3px;display:inline-flex}.px-grid .halo{stroke:#ffffff59}.px-grid .minor{stroke:#14141e8c;stroke-width:.6px}.px-grid .major{stroke:#14141ed9;stroke-width:1.2px}.node .map-view{flex-direction:column;gap:4px;display:flex}.node .map-view .interval{align-items:center;gap:3px;display:inline-flex}.layer-list{flex-direction:column;gap:4px;display:flex}.layer-list summary{cursor:pointer;color:var(--muted)}.layer-table{border:1px solid var(--border);-webkit-user-select:text;user-select:text;cursor:text;border-radius:4px;max-height:260px;overflow:auto}.layer-table table{border-collapse:collapse;width:100%;font-size:var(--fs-small)}.layer-table th,.layer-table td{text-align:left;vertical-align:top;border-bottom:1px solid var(--border);padding:2px 6px}.layer-table th{background:var(--input);font-weight:600;position:sticky;top:0}.layer-table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.layer-table tr.medium td{color:var(--muted)}.layer-table tr.sub td{color:var(--muted);font-size:var(--fs-tiny)}.layer-table tr.sub td:first-child{padding-left:14px}.layer-table tfoot td{border-bottom:none;font-weight:600}.node label select.profile{width:190px}.brand{-webkit-user-select:none;user-select:none;align-items:center;gap:7px;margin-right:4px;display:inline-flex}.brand .logo{flex:none;width:auto;transition:transform .2s}.brand:hover .logo{transform:scale(1.06)}.brand-text{letter-spacing:.01em;color:var(--text);font-size:15px}button,select,input{transition:background-color .12s,border-color .12s,color .12s,box-shadow .12s,transform .12s}button:active:not(:disabled){transform:scale(.97)}.palette-item:hover{z-index:1;box-shadow:inset 2px 0 0 var(--node-color), 0 2px 8px color-mix(in srgb, var(--node-color) 30%, transparent);border-color:var(--node-color);transform:translate(2px)}.palette-item:active{transform:scale(.97)}.node-shell{transition:box-shadow .15s;animation:.18s ease-out node-in}.react-flow__node:hover .node-shell:not(.has-error){box-shadow:0 6px 18px #0000003d}@keyframes node-in{0%{opacity:0}to{opacity:1}}.react-flow__edge.edge-lit .react-flow__edge-path{stroke-dasharray:none;animation:none}.library{animation:.18s ease-out panel-in}@keyframes panel-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}.ctx-menu{transform-origin:0 0;animation:.1s ease-out menu-in}@keyframes menu-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}button.btn-stop{animation:1.6s ease-in-out infinite run-pulse}@keyframes run-pulse{0%,to{box-shadow:0 0 0 0 color-mix(in srgb, var(--stop) 45%, transparent)}50%{box-shadow:0 0 0 4px color-mix(in srgb, var(--stop) 0%, transparent)}}.progress-fill,.msg.busy .bar{background-image:linear-gradient(90deg,#0000 0%,#fff6 50%,#0000 100%);background-repeat:no-repeat;background-size:200% 100%;animation:1.3s linear infinite sheen}@keyframes sheen{0%{background-position:150% 0}to{background-position:-50% 0}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.palette-item:hover{transform:none}}.node label select.preset{width:260px}.node label select.spacing{width:auto}.node label select.pores-fill{width:200px}.zone-row select.crit-field{max-width:190px}.welcome-backdrop{z-index:50;background:#00000073;justify-content:center;align-items:center;animation:.18s ease-out panel-in;display:flex;position:fixed;inset:0}.welcome{box-sizing:border-box;background:var(--panel);width:min(760px,100vw - 32px);max-height:calc(100vh - 48px);color:var(--text);border:1px solid var(--border);text-align:center;border-radius:10px;padding:24px 28px 18px;position:relative;overflow:auto;box-shadow:0 12px 40px #00000059}.welcome .logo{width:auto;margin:0 auto 8px;display:block}.welcome h2{margin:4px 0 10px;font-size:20px}.welcome p{text-align:left;margin:0 0 10px;line-height:1.45}.welcome-actions{flex-wrap:wrap;justify-content:center;gap:8px;margin:14px 0 12px;display:flex}.welcome-actions button{text-overflow:ellipsis;white-space:nowrap;max-width:340px;padding:6px 12px;overflow:hidden}.welcome-check{color:var(--muted);justify-content:center}.welcome-x{position:absolute;top:10px;right:10px}.welcome-sub{text-align:left;margin:6px 0 4px;font-size:15px}.welcome-gallery{text-align:left;margin-bottom:10px}.welcome-gallery h4{font-size:var(--fs-small);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:10px 0 6px}.welcome-cards{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;display:grid}.welcome-card{text-align:left;white-space:normal;flex-direction:column;align-items:flex-start;gap:3px;height:100%;padding:8px 10px;display:flex}.welcome-card b{font-weight:600;line-height:1.3}.welcome-card span{color:var(--muted);font-size:var(--fs-small);line-height:1.35}.welcome-card:hover{border-color:var(--select)}.help-examples{margin:4px 0 8px;padding-left:18px}.help-examples li{margin:2px 0}.react-flow__pane.draggable,.react-flow__node.draggable,.react-flow__nodesselection-rect{cursor:default}.find-node{z-index:20;background:var(--panel);border:1px solid var(--border);border-radius:8px;width:min(440px,100% - 32px);padding:6px;animation:.12s ease-out panel-in;position:absolute;top:10px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000040}.find-node input{box-sizing:border-box;width:100%}.find-list{flex-direction:column;max-height:320px;margin-top:4px;display:flex;overflow:auto}.find-list button{text-align:left;white-space:nowrap;text-overflow:ellipsis;background:0 0;border:none;border-radius:4px;align-items:center;gap:6px;padding:4px 6px;display:flex;overflow:hidden}.find-list button.on{background:var(--input)}.find-dot{border-radius:50%;flex:none;width:9px;height:9px}.checks-inline{flex-wrap:wrap;gap:2px 10px;display:flex}.data-table summary{cursor:pointer;color:var(--muted);align-items:center;gap:8px;display:flex}.node-extract,.node-merge,.node-custom{width:var(--node-l)}.node label.extract-axis select{width:auto}.data-scroll{max-width:100%;max-height:240px;margin-top:4px;overflow:auto}.data-scroll table{border-collapse:collapse;font-size:var(--fs-small);font-variant-numeric:tabular-nums}.data-scroll th{background:var(--panel);text-align:right;white-space:nowrap;padding:2px 6px;font-weight:600;position:sticky;top:0}.data-scroll td{text-align:right;border-top:1px solid var(--border);white-space:nowrap;padding:1px 6px}.merge-source{flex-wrap:wrap}.merge-source input{width:150px}.custom-source{font-size:var(--fs-small);margin-top:4px}.custom-source input{width:44px;font-family:var(--mono,monospace)}.custom-row{gap:4px}.custom-name{width:110px}.custom-expr{min-width:180px;font-family:var(--mono,monospace);flex:1}.chips{flex-wrap:wrap;gap:3px;display:flex}.chips .chip{font-size:var(--fs-small);font-family:var(--mono,monospace);padding:1px 6px}
