.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{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#26363b;background:#f5f7f7;font-synthesis:none;font-size:14px;--bg:#f5f7f7;--panel:#fff;--ink:#26363b;--muted:#7d898c;--border:#e1e7e8;--green:#397b68;--mono:"IBM Plex Mono",ui-monospace,monospace}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}button,input,select{outline-offset:3px}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #397b68}button{display:inline-flex;align-items:center;justify-content:center;gap:7px;background:transparent;color:inherit;border:0;border-radius:6px}input,select{min-width:0}button:hover:not(:disabled){background:#edf3f1}button svg{flex-shrink:0}input:disabled,select:disabled{color:#687678;background:#f4f6f6}.app-shell{height:100dvh;min-height:600px;display:flex;flex-direction:column;overflow:hidden}.topbar{height:62px;flex-shrink:0;background:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 25px;border-bottom:1px solid var(--border)}.brand{display:flex;gap:10px;align-items:center;font-weight:650;letter-spacing:-.45px;font-size:19px}.brand-mark{display:flex;align-items:center;justify-content:center;background:#397b68;border-radius:8px;color:#fff;width:31px;height:31px}.brand-divider{font-size:22px;color:#ced5d6;font-weight:400;margin:0 7px}.studio-label{font-size:14px;font-weight:450;color:#67777b;letter-spacing:0}.top-right{display:flex;align-items:center;gap:20px}.paper-badge{border:1px solid #d5e4df;background:#f2f8f5;color:#447664;border-radius:5px;padding:5px 9px;font-size:12px;font-weight:550;display:flex;align-items:center;gap:7px}.paper-badge span,.status-dot,.node-dot{height:6px;width:6px;background:#a3afb1;border-radius:100%;display:inline-block;flex-shrink:0}.paper-badge span{background:#62a38a}.icon-button{width:30px;height:30px;color:#7a878a}.toolbar{min-height:66px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:12px 24px;background:#fff;border-bottom:1px solid var(--border);gap:16px}.strategy-title{display:flex;align-items:center;gap:9px;min-width:0}.strategy-title>svg{color:#89969a}.strategy-title input{border:1px solid transparent;background:transparent;padding:6px 4px;font-weight:550;width:220px;color:#26363b}.strategy-title input:hover:not(:disabled){border-color:var(--border)}.save-state{color:#8b979a;font-size:12px}.toolbar-actions{display:flex;align-items:center;gap:5px}.toolbar-actions button{height:34px;padding:0 10px;white-space:nowrap;color:#607176}.toolbar-actions .play-button{background:var(--green);color:#fff;min-width:86px;margin-left:8px;box-shadow:0 2px 4px #234b3220}.toolbar-actions .play-button:hover{background:#306953}.toolbar-actions .stop-button{background:#ad5c50;color:#fff;min-width:86px;margin-left:8px}.separator{width:1px;height:22px;background:var(--border);margin:0 8px}.workspace{display:grid;grid-template-columns:218px minmax(300px,1fr) 300px;flex:1;min-height:0}.workspace.no-palette{grid-template-columns:minmax(300px,1fr) 300px}.palette{border-right:1px solid var(--border);background:#fff;display:flex;flex-direction:column;min-height:0}.panel-heading{height:50px;padding:0 17px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;font-weight:550}.panel-heading button{color:#8f9b9e;padding:4px}.node-search{height:35px;background:#f7f9f9;border:1px solid #e6ebec;border-radius:6px;margin:0 13px 5px;padding:0 10px;font-size:13px;color:var(--ink)}.node-search::placeholder{color:#8d9a9c}.palette-list{overflow-y:auto;padding:0 10px 18px;flex:1}.palette-list h3{text-transform:uppercase;font-size:12px;letter-spacing:1.15px;font-weight:600;color:#94a0a3;padding:0 7px;margin:20px 0 8px}.palette-item{display:flex;width:100%;text-align:left;justify-content:flex-start;gap:9px;padding:9px 7px;margin-bottom:3px;border:1px solid transparent;border-radius:7px}.palette-item:hover:not(:disabled){background:#f7f9f9;border-color:#e0e6e7}.palette-item>span:nth-child(2){flex:1}.palette-item strong{font-size:13px;font-weight:500;display:block;white-space:nowrap}.palette-item small{font-size:12px;display:block;color:#95a0a4;margin-top:4px}.palette-item>svg{color:#acb5b8}.library-icon{display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--node-color) 10%,white);color:var(--node-color);width:30px;height:32px;border-radius:5px;flex-shrink:0}.palette-note{display:flex;gap:9px;padding:14px 17px;border-top:1px solid var(--border);color:#8e9b9e;font-size:12px;line-height:1.5}.palette-note svg{flex-shrink:0;margin-top:2px}.center{min-width:0;display:flex;flex-direction:column;min-height:0}.canvas-wrap{position:relative;flex:1;min-height:250px;background:#f5f7f7}.canvas-top{position:absolute;top:19px;left:22px;right:22px;display:flex;align-items:center;justify-content:space-between;z-index:5;pointer-events:none;color:#97a3a5;font-size:12px}.canvas-top>span:first-child{display:flex;align-items:center;gap:7px;color:#6d7c80;font-size:13px}.canvas-bottom{position:absolute;bottom:17px;left:65px;right:150px;z-index:5;pointer-events:none;font-size:12px;color:#94a0a3}.canvas-bottom span{display:flex;align-items:center;gap:6px;justify-content:center}.status-dot.live,.node-dot.live{background:#62a38a;box-shadow:0 0 0 3px #62a38a13}.react-flow__controls{box-shadow:none;border:1px solid #dce4e4;border-radius:6px;overflow:hidden;margin:16px}.react-flow__controls-button{border-color:var(--border);color:#7e8b8f;width:29px;height:29px;padding:8px}.react-flow__minimap{border:1px solid #e1e7e8;border-radius:6px;overflow:hidden;width:116px;height:73px;margin:16px;background:#fff}.react-flow__attribution{font-size:12px;background:transparent}.strategy-card{width:230px;background:#fff;border:1px solid #dce3e4;border-radius:9px;box-shadow:0 3px 8px #26363b05;position:relative;cursor:grab;overflow:visible}.strategy-card.selected{border-color:var(--node-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--node-color) 12%,transparent)}.node-head{display:flex;gap:9px;align-items:center;padding:14px 14px 9px}.node-head strong{font-size:14px;font-weight:550;flex:1}.node-icon{color:var(--node-color);display:flex;align-items:center}.node-dot{width:5px;height:5px;background:#c6ced0}.node-description{padding:0 14px 15px;color:#8a979a;font-size:12px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.node-ports{display:flex;justify-content:space-between;padding:5px 14px 10px;font-family:var(--mono);color:#7c8d91;font-size:12px;position:relative;height:33px}.node-ports .react-flow__handle{width:9px;height:9px;border:2px solid #fff;background:var(--node-color);box-shadow:0 0 0 1px var(--node-color);top:12px}.node-ports .react-flow__handle:hover{width:12px;height:12px}.node-ports .react-flow__handle-left{left:-5px}.node-ports .react-flow__handle-right{right:-5px}.node-foot{display:flex;justify-content:space-between;align-items:center;padding:9px 14px;background:#fbfcfc;border-top:1px solid #f0f3f4;border-radius:0 0 9px 9px;color:#98a3a6;font-size:12px}.node-value{padding:8px 14px;border-top:1px solid #eff3f3;color:#458a79;font-family:var(--mono);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wire-label{position:absolute;font-size:12px;color:#8e9da0;background:#f5f7f7;padding:3px 6px;border-radius:4px;pointer-events:none;font-family:var(--mono)}.wire-label.selected{color:var(--green);background:#e9f2ee}.wire-flow{fill:none;stroke:#417f6b;stroke-width:3;stroke-linecap:round;stroke-dasharray:3 24;animation:flow 1.2s linear infinite;pointer-events:none}@keyframes flow{to{stroke-dashoffset:-54}}.account-panel{background:#fff;border-top:1px solid var(--border);flex-shrink:0;max-height:35%;overflow:auto}.account-heading{border-radius:0;display:flex;justify-content:space-between;padding:0 21px;width:100%;height:46px}.account-heading>span{display:flex;align-items:center;gap:8px}.account-heading>span:first-child{font-weight:550;font-size:13px}.account-heading>span:last-child{color:#9aa5a8;font-size:12px}.core-tag{font-size:12px;letter-spacing:.5px;background:#f1f4f4;color:#8a979a;border:1px solid #e7ecec;padding:2px 4px;border-radius:3px;margin-left:3px}.account-content{padding:0 21px 18px}.account-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;padding:6px 0 18px}.metric{min-width:0;display:flex;flex-direction:column;gap:8px}.metric>span{font-size:12px;color:#94a0a3}.metric strong{font-family:var(--mono);font-size:17px;font-weight:500;color:#44595f;white-space:nowrap}.metric .positive{color:var(--green)}.positions{border-top:1px solid #edf0f1;padding-top:13px}.positions-title{font-weight:500;font-size:12px;display:flex;gap:7px;align-items:center}.positions-title>span{font-size:12px;border:1px solid var(--border);padding:1px 5px;color:#8d9a9d;border-radius:4px}.positions-empty{font-size:12px;color:#9ba6a9;margin:13px 0 0}.position-scroll{max-height:120px;overflow:auto}table{border-collapse:collapse;width:100%;font-size:12px;text-align:left}th{font-size:12px;color:#95a2a5;font-weight:400;padding:10px 0 6px}td{padding:6px 0;font-family:var(--mono);color:#62777d;border-bottom:1px solid #f2f4f4}.inspector{border-left:1px solid var(--border);background:#fff;display:flex;flex-direction:column;min-height:0}.inspector-title{display:flex;gap:12px;align-items:center;padding:10px 18px 17px}.inspector-symbol{height:41px;width:41px;background:#f3f6f5;border:1px solid #e6ecea;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#67847c;flex-shrink:0}.inspector-title h2{font-size:14px;font-weight:600;margin:0 0 6px}.inspector-title>div>span{font-family:var(--mono);color:#a0abad;font-size:12px;word-break:break-word}.inspector-description{padding:0 18px 17px;margin:0;color:#859497;font-size:12px;line-height:1.7}.tabs{display:flex;border-bottom:1px solid var(--border);padding:0 14px;gap:5px;flex-shrink:0}.tabs button{padding:10px 8px;border-radius:0;color:#8d999c;font-size:12px;border-bottom:2px solid transparent;flex:1}.tabs button[aria-selected=true]{color:#397b68;border-bottom-color:#397b68;font-weight:550}.inspector-body{padding:20px 18px;overflow:auto;flex:1;min-height:0}.section-caption{display:flex;justify-content:space-between;align-items:center;font-size:12px;letter-spacing:.7px;text-transform:uppercase;font-weight:550;color:#89989c;margin-bottom:17px;gap:5px}.section-caption>span{font-size:12px;font-weight:400;letter-spacing:0;text-transform:none;color:#9aa6a8}.field{display:flex;flex-direction:column;gap:9px;margin-bottom:18px;font-size:12px;color:#61767c}.field>span{display:flex;align-items:center;justify-content:space-between;gap:6px}.field small{font-size:12px;color:#a1acad}.field input:not([type=checkbox]),.field select{background:#fbfcfc;border:1px solid #dfe6e7;border-radius:5px;padding:9px 10px;color:#5b7279;font-family:var(--mono);font-size:12px;width:100%;height:36px}.field input[type=checkbox]{align-self:flex-start;accent-color:#397b68;width:17px;height:17px;margin:0}.field input:disabled,.field select:disabled{background:#f5f7f7;color:#89989b}.credential{display:flex;align-items:center;gap:8px;padding:11px 10px;background:#f3f8f5;color:#668a79;font-size:12px;line-height:1.5;border-radius:5px}.credential svg{flex-shrink:0}.credential.missing{background:#fbf3e9;color:#ae874d}.setting-note{display:flex;gap:10px;padding:17px 0 25px;color:#9aa6a9;line-height:1.7;font-size:12px}.setting-note svg{flex-shrink:0;margin-top:3px}.setting-note p{margin:0}.guide{padding:0 0 0 18px;margin:0 0 25px;color:#899a9f;font-size:12px;line-height:2.3}.core-note{padding:13px 11px;display:flex;gap:9px;font-size:12px;line-height:1.7;background:#f6f8f8;color:#879b9f;border:1px solid #e9eeee;border-radius:5px}.core-note svg{flex-shrink:0;margin-top:2px}.node-runtime{border-top:1px solid var(--border);margin-top:22px;padding-top:20px}.node-runtime>div{display:flex;justify-content:space-between;font-size:12px;margin:12px 0;color:#8a999d}.node-runtime strong{font-weight:450;color:#526e75}.muted{color:#91a1a5;font-size:12px;line-height:1.8;margin:0 0 20px}.schema{margin-bottom:25px}.type-badge{font-family:var(--mono);border:1px solid #dfebe6;background:#f5faf7;color:#718c7d!important;padding:3px 6px;border-radius:4px}.schema-row{display:flex;flex-direction:column;gap:4px;padding:8px 0;border-bottom:1px solid #f0f3f3}.schema-row code{font-family:var(--mono);font-size:12px;color:#53767c}.schema-row>span{font-size:12px;color:#9aa8ab}.json-view{font-family:var(--mono);font-size:12px;line-height:1.7;color:#688a7b;background:#f5f8f7;border:1px solid #e8eeeb;border-radius:5px;padding:11px;white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0}.json-empty{padding:20px 10px;border:1px dashed #dce6e6;border-radius:5px;font-size:12px;color:#a0adaf;text-align:center}.inspector-footer{padding:12px 18px;border-top:1px solid var(--border)}.delete-button{font-size:12px;color:#aa817c;padding:8px;width:100%}.delete-button:hover:not(:disabled){background:#faf2f0}.edge-summary{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:0 18px 18px;border-bottom:1px solid var(--border)}.message-row{border-bottom:1px solid #edf2f0;padding:10px 0}.message-row summary{cursor:pointer;color:#668c7a;font-size:12px}.message-row summary small{display:block;color:#94a4a0;padding:7px 0 0 14px;font-size:12px}.inspector-empty{text-align:center;color:#a2b0b1;padding:22px 5px;font-size:12px;line-height:1.7}.inspector-empty p{margin:10px 0 4px;color:#819697}.statusbar{height:33px;flex-shrink:0;display:flex;justify-content:space-between;align-items:center;padding:0 18px;background:#fff;border-top:1px solid var(--border);font-size:12px;color:#9ba7aa;gap:18px}.statusbar>div{display:flex;align-items:center;gap:11px;min-width:0}.statusbar>div:first-child{flex:1}.statusbar strong{font-weight:500;color:#7b918c;white-space:nowrap}.status-message{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.market-status{max-width:300px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.notice,.help-strip{display:flex;align-items:center;gap:10px;padding:10px 22px;background:#eff8f2;border-bottom:1px solid #ddece2;color:#5b8c70;font-size:12px;line-height:1.7;flex-shrink:0}.notice>span,.help-strip>span{flex:1}.notice.error{background:#fff5ed;border-color:#f1ddcb;color:#ae7550}.help-strip{background:#f2f6f9;color:#7895a2}.help-strip strong{white-space:nowrap}.loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#f5f7f7dd;display:grid;place-items:center;color:#8da29f}.restore-palette{position:absolute;top:47px;left:19px;background:#fff;z-index:6;box-shadow:0 1px 4px #0001;padding:8px 10px;font-size:12px;color:#748e88}@media(min-width:1600px){.workspace{grid-template-columns:238px minmax(300px,1fr) 330px}.workspace.no-palette{grid-template-columns:minmax(300px,1fr) 330px}.account-panel{min-height:215px}.palette-item strong{font-size:14px}.field,.inspector-description,.guide,.setting-note{font-size:13px}.inspector-title h2{font-size:16px}}@media(max-width:1100px){.workspace{grid-template-columns:190px minmax(250px,1fr) 260px}.workspace.no-palette{grid-template-columns:minmax(250px,1fr) 260px}.toolbar{padding:10px 16px}.toolbar-actions button{padding:0 7px}.strategy-title input{width:180px}.palette-item{gap:6px;padding:9px 4px}.palette-item>svg{display:none}.palette-list{padding:0 7px 15px}.palette-item strong{font-size:12px}.library-icon{width:26px}.account-metrics{gap:8px}.metric strong{font-size:14px}.account-content{padding:0 14px 14px}.canvas-bottom{display:none}.market-status{max-width:180px}}@media(max-width:850px){.workspace{grid-template-columns:160px minmax(250px,1fr)}.workspace.no-palette{grid-template-columns:minmax(250px,1fr)}.inspector{position:absolute;right:0;top:128px;bottom:33px;width:265px;z-index:15;box-shadow:-5px 0 20px #0000000a}.center{margin-right:265px;min-width:250px}.workspace{overflow-x:auto}.toolbar-actions button span{display:none}.toolbar-actions button{padding:0 8px}.toolbar-actions .play-button,.toolbar-actions .stop-button{min-width:65px}.toolbar .save-state{display:none}.strategy-title input{width:160px}.studio-label,.brand-divider{display:none}.palette-item strong,.palette-item small{font-size:12px}.library-icon{width:22px}.palette-item>span:nth-child(2){min-width:0}.palette-note{padding:12px 10px}.account-metrics{grid-template-columns:1fr 1fr}.account-heading>span:last-child{display:none}.statusbar .market-status{display:none}}@media(prefers-reduced-motion:reduce){.wire-flow{animation:none}}.field,.tabs button,.node-search,.palette-item strong,.inspector-description,.guide,.setting-note{font-size:14px}.field input:not([type=checkbox]),.field select{font-size:14px}.palette-item strong{white-space:normal}.node-head strong{font-size:15px}.node-description,.node-foot,.node-ports{font-size:12px}.chart-loading{height:330px;flex:none;display:grid;place-items:center;background:#fff;border-top:1px solid var(--border);font-size:13px;color:#81988c}.node-ports.multi{height:auto;min-height:56px}.node-inputs{display:flex;flex-direction:column;gap:8px}.node-input-row{position:relative;min-height:18px;display:flex;align-items:center;gap:6px}.node-input-row small{font:10px var(--mono);color:#a0abaa}.node-ports .node-input-row .react-flow__handle{top:9px;left:-19px}.node-open-chart{margin:0 14px 10px;padding:6px 9px;border:1px solid #dce9e2;border-radius:5px;color:#51816d;font-size:12px;background:#f6faf8}.center.has-chart .canvas-wrap{min-height:150px}.center.has-chart .account-panel{max-height:100px}.center.has-chart .account-panel .account-content{padding-bottom:10px}.center.has-chart{overflow:auto}.position-scroll table{min-width:580px}.position-scroll th,.position-scroll td{white-space:nowrap;padding-right:16px}.position-scroll .position-pnl{text-align:right;font-variant-numeric:tabular-nums}.position-pnl.gain{color:var(--green)}.position-pnl.loss{color:#b34e43}.backtest-summary{display:flex;align-items:center;gap:18px;padding:10px 22px;background:#eef7f2;border-bottom:1px solid #cdded3;font-size:13px;flex-wrap:wrap}.backtest-summary button{margin-left:auto;border:1px solid #bad0c1;border-radius:5px;padding:6px 12px;background:#fff;color:#245e49;cursor:pointer}.backtest-summary a{color:#245e49}.backtest-report{position:fixed;top:30px;right:30px;bottom:30px;left:30px;z-index:1000;background:#fff;border:1px solid #bccbc4;border-radius:10px;box-shadow:0 10px 80px #0005;display:flex;flex-direction:column;overflow:hidden}.backtest-report>div{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid #dce4e0}.backtest-report button{border:0;background:none;cursor:pointer}.backtest-report iframe{flex:1;border:0;width:100%;min-height:0}.field textarea{width:100%;min-height:84px;resize:vertical;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--ink);padding:10px;font:13px/1.5 var(--mono);outline-offset:3px}.field textarea:focus-visible{outline:2px solid var(--green)}.field textarea:disabled{color:#687678;background:#f4f6f6}.field .directory-picker{align-self:flex-start;border:1px solid #cfded7;background:#f6faf8;color:#397b68;padding:8px 11px;font-size:12px}.field .directory-picker:hover:not(:disabled){background:#eaf3ef}.module-credentials{border-bottom:1px solid var(--border);margin-bottom:18px;padding-bottom:8px}.module-credential-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.module-credential-actions button{padding:8px 12px;border:1px solid #cdd9d3;font-size:13px}.module-credential-actions button[type=submit]{background:#397b68;border-color:#397b68;color:#fff}.module-credential-message{font-size:13px;line-height:1.5;color:#397b68}.recordings-panel{position:fixed;z-index:60;top:110px;right:24px;width:min(650px,calc(100vw - 48px));max-height:calc(100vh - 140px);display:flex;flex-direction:column;background:#fff;border:1px solid #cbd3d5;border-radius:12px;box-shadow:0 18px 65px #1b343433;padding:18px;gap:12px}.recordings-panel p{margin:0;color:#5b6e72;font-size:13px;line-height:1.5}.recording-list{overflow:auto;display:grid;gap:12px}.recording-list article{border:1px solid #dce4e5;border-radius:8px;padding:14px;display:grid;gap:6px}.recording-list article small{color:#718185;overflow-wrap:anywhere}.recording-list article>div{display:flex;align-items:center;gap:16px;margin-top:6px}.recording-list a{color:#327568;font-size:13px}.date-field{border:0;padding:0;min-width:0;margin-inline:0}.date-field legend{padding:0;margin-bottom:9px;font-size:14px}.date-controls{display:flex;flex-direction:column;gap:9px}.date-controls label{display:flex;flex-direction:column;gap:5px;min-width:0}.date-controls label>span{font-size:12px}.date-controls input{min-width:0;color-scheme:light}.date-field .date-hint{display:block;color:#61767c;line-height:1.5;overflow-wrap:anywhere}.date-hint code{font-family:var(--mono);font-size:11px}.date-field .date-clear{align-self:flex-start;padding:5px 9px;border:1px solid #cfded7;background:#f6faf8;color:#397b68;font-size:12px}.date-field .date-clear:hover:not(:disabled){background:#eaf3ef}
