:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font:13px/1.4 system-ui,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}button{font:inherit}#root{flex-direction:column;display:flex}.cloud-toolbar{background:#fff;border-bottom:1px solid #e4e4e7;flex:none;align-items:center;gap:12px;padding:10px 16px;display:flex}.cloud-toolbar strong{font-size:16px}.cloud-toolbar span{flex:1;min-width:0}.cloud-toolbar button,.cloud-toolbar a{color:#333;cursor:pointer;background:#fff;border:1px solid #ddd;border-radius:6px;padding:5px 9px;text-decoration:none}.canvas-app{flex:1;min-height:0;position:relative}.canvas-loading{padding:32px}.canvas-loading a{margin-left:16px}.restore-backup{cursor:pointer;border:1px solid #ddd;border-radius:6px;padding:5px 9px}.restore-backup input{display:none}@media (width<=650px){.cloud-toolbar{flex-wrap:wrap;gap:6px}.cloud-toolbar span{flex-basis:65%}}.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))}.home-page{background:#fff;width:100%;height:100%;overflow-y:auto}.home-topbar{border-bottom:1px solid #eee;align-items:center;height:56px;padding:0 20px;display:flex}.home-topbar .logo{color:#fff;background:#fa0f00;border-radius:6px;justify-content:center;align-items:center;width:26px;height:26px;font-size:12px;font-weight:700;display:flex}.home-hero{text-align:center;padding:64px 20px 40px}.home-hero h1{color:#1c1c22;margin:0 0 12px;font-size:56px;font-weight:800}.home-tagline{color:#6b6b76;margin:0 0 28px;font-size:16px}.home-create-btn{color:#fff;cursor:pointer;background:#1473e6;border:none;border-radius:24px;align-items:center;gap:8px;padding:12px 22px;font-size:15px;font-weight:600;display:inline-flex}.home-create-btn:hover{background:#0d66d0}.home-recent{max-width:1100px;margin:0 auto;padding:20px 32px 60px}.home-recent-header h2{color:#1c1c22;margin:0 0 18px;font-size:20px;font-weight:700}.home-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:18px;display:grid}.graph-card{text-align:left;cursor:pointer;background:#fff;border:1px solid #e5e5e8;border-radius:10px;flex-direction:column;padding:0;display:flex;overflow:hidden}.graph-card:hover{border-color:#1473e6;box-shadow:0 2px 10px #00000014}.graph-card-thumb{background:#f5f5f7;justify-content:center;align-items:center;height:110px;display:flex;position:relative}.graph-card-delete{color:#75757e;cursor:pointer;opacity:0;background:#ffffffe6;border:none;border-radius:6px;justify-content:center;align-items:center;width:26px;height:26px;transition:opacity .1s;display:flex;position:absolute;top:8px;right:8px}.graph-card:hover .graph-card-delete,.graph-card:focus-visible .graph-card-delete{opacity:1}.graph-card-delete:hover{color:#d7373f;background:#fdecec}.graph-thumb-svg{stroke:#9a9aa2;stroke-width:2.5px;fill:#c2c2c9;width:70%;height:70%}.graph-thumb-empty-icon{color:#c2c2c9}.graph-card-title{color:#1c1c22;white-space:nowrap;text-overflow:ellipsis;padding:10px 12px 2px;font-size:13px;font-weight:600;overflow:hidden}.graph-card-meta{color:#9a9aa2;padding:0 12px 12px;font-size:11px}.home-empty{color:#9a9aa2;flex-direction:column;align-items:center;gap:10px;padding:50px 0;display:flex}.canvas-root{background:#f0f0f2;width:100%;height:100%;position:relative}.rf-wrapper{width:100%;height:100%}.react-flow__node.selected .node-card,.react-flow__node.selected .note-card{outline-offset:3px;border-radius:12px;outline:2px solid #1473e6}.react-flow__node:focus-visible .node-card{outline-offset:3px;outline:2px solid #7a4de0}.group-bbox{pointer-events:none;background:#1473e60a;border:1.5px dashed #1473e6;border-radius:8px;position:absolute;top:0;left:0}.zoom-badge{color:#55555f;background:#fff;border:1px solid #dcdce0;border-radius:12px;padding:3px 10px;font-size:11px;font-weight:600;box-shadow:0 1px 4px #00000014}.react-flow.space-pan-ready .react-flow__pane{cursor:grab}.react-flow__selection{background:#1473e614!important;border:1px solid #1473e6!important}body.rf-dragging,body.rf-resizing{-webkit-user-select:none;user-select:none}.topbar{z-index:20;background:#fff;border-bottom:1px solid #e5e5e8;justify-content:space-between;align-items:center;height:48px;padding:0 14px;display:flex;position:absolute;top:0;left:0;right:0}.topbar-left,.topbar-right{align-items:center;gap:12px;display:flex}.logo{color:#fff;background:#fa0f00;border-radius:6px;justify-content:center;align-items:center;width:24px;height:24px;font-size:11px;font-weight:700;display:flex}.logo-btn{cursor:pointer;border:none;padding:0;font-family:inherit}.topbar-title{color:#2c2c33;font-size:13px;font-weight:500}.topbar-title-editable{cursor:text;border-radius:5px;margin:-3px -6px;padding:3px 6px}.topbar-title-editable:hover{background:#f2f2f4}.topbar-title-input{color:#2c2c33;background:#fff;border:1px solid #1473e6;border-radius:5px;outline:none;min-width:120px;padding:2px 5px;font-family:inherit;font-size:13px;font-weight:500}.topbar-icon{color:#6b6b76}.topbar-menu{position:relative}.topbar-icon-btn{color:#6b6b76;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;width:26px;height:26px;display:flex}.topbar-icon-btn:hover{background:#f2f2f4}.topbar-dropdown{z-index:50;background:#fff;border-radius:12px;width:220px;padding:6px;position:absolute;top:34px;left:0;box-shadow:0 8px 30px #0000002e}.node-context-menu-backdrop{z-index:150;position:fixed;inset:0}.node-context-menu{z-index:151;background:#fff;border-radius:12px;width:200px;padding:6px;position:fixed;box-shadow:0 8px 30px #0000002e}.dropdown-item-icon-label{align-items:center;gap:8px;display:flex}.dropdown-item{text-align:left;color:#26262c;cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:space-between;align-items:center;gap:6px;width:100%;padding:9px 10px;font-size:13px;display:flex}.dropdown-item:hover:not(:disabled){background:#f2f2f4}.dropdown-item-active{background:#f2f2f4;font-weight:600}.dropdown-item-disabled,.dropdown-item:disabled{color:#b8b8bf;cursor:not-allowed}.dropdown-item-danger{color:#d7373f}.dropdown-item-expand svg{transition:transform .15s}.dropdown-item-expand svg.chevron-open{transform:rotate(90deg)}.dropdown-divider{border-top:1px solid #eee;margin:6px 2px}.dropdown-submenu{padding-left:10px}.dropdown-saved{color:#2d9d78;font-size:11px;font-weight:600}.dialog-backdrop{z-index:200;background:#14141840;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog-card{background:#fff;border-radius:12px;width:340px;max-width:90vw;padding:20px;box-shadow:0 20px 60px #0000004d}.dialog-title{color:#1c1c22;margin-bottom:12px;font-size:15px;font-weight:700}.dialog-message{color:#55555f;margin:0 0 16px;font-size:13px}.dialog-input{box-sizing:border-box;border:1px solid #dcdce0;border-radius:8px;width:100%;margin-bottom:16px;padding:8px 10px;font-size:13px}.dialog-actions{justify-content:flex-end;gap:8px;display:flex}.dialog-btn{cursor:pointer;border:none;border-radius:16px;padding:8px 16px;font-size:13px;font-weight:600}.dialog-btn-secondary{color:#38383f;background:#f2f2f4}.dialog-btn-secondary:hover{background:#e5e5e8}.dialog-btn-primary{color:#fff;background:#1473e6}.dialog-btn-primary:hover{background:#0d66d0}.dialog-btn-primary:disabled{opacity:.5;cursor:default}.dialog-btn-danger{color:#fff;background:#d7373f}.dialog-btn-danger:hover{background:#b62b32}.share-btn{color:#fff;cursor:pointer;background:#1473e6;border:none;border-radius:16px;padding:6px 16px;font-size:13px;font-weight:600}.share-btn:hover{background:#0d66d0}.fab-stack{z-index:20;flex-direction:column;gap:8px;display:flex;position:absolute;bottom:16px;left:16px}.fab{color:#fff;cursor:pointer;background:#1b1b1f;border:none;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;display:flex;box-shadow:0 2px 8px #00000040}.fab-secondary{color:#333;background:#fff;border:1px solid #ddd;align-self:center;width:32px;height:32px}.fab:hover{filter:brightness(1.1)}.run-all-btn{z-index:20;color:#fff;cursor:pointer;background:#1473e6;border:none;border-radius:20px;align-items:center;gap:8px;padding:10px 20px;font-size:14px;font-weight:600;display:flex;position:absolute;top:60px;right:16px;box-shadow:0 2px 10px #0003}.run-all-btn:hover{background:#0d66d0}.run-all-btn:disabled{opacity:.7;cursor:default}.run-selected-btn{z-index:20;color:#1473e6;cursor:pointer;background:#fff;border:1px solid #1473e6;border-radius:20px;align-items:center;gap:8px;padding:8px 18px;font-size:13px;font-weight:600;display:flex;position:absolute;top:108px;right:16px;box-shadow:0 2px 10px #00000026}.run-selected-btn:hover{background:#eef4fe}.run-selected-btn:disabled{opacity:.7;cursor:default}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.node-card{box-sizing:border-box;background:#fff;border:1px solid #dcdce0;border-radius:10px;flex-direction:column;width:100%;min-width:100px;height:100%;font-size:12px;display:flex;overflow:visible;box-shadow:0 1px 4px #0000000f}.node-card-top{border-radius:10px 10px 0 0;flex-shrink:0;overflow:hidden}.node-card-bottom{border-radius:0 0 10px 10px;flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden auto}.node-header{cursor:default;background:#fafafa;border-bottom:1px solid #eee;align-items:center;gap:6px;padding:7px 9px;display:flex}.node-header-icon{color:#55555f;flex-shrink:0}.node-title{color:#26262c;white-space:nowrap;text-overflow:ellipsis;flex:1;font-weight:600;overflow:hidden}.status-icon{flex-shrink:0}.status-error-icon{color:#d7373f}.status-stub-icon{color:#b5860b}.node-run-btn{color:#1473e6;cursor:pointer;background:#eef4fe;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;display:flex}.node-run-btn:hover{background:#dbe9fd}.node-body{flex-direction:column;flex:1;gap:6px;min-height:0;padding:8px;display:flex;overflow:auto}.node-status-bar{height:3px}.status-running{background:#1473e6}.status-done{background:#2d9d78}.status-error{background:#d7373f}.status-stub{background:#e0a91a}.node-error{color:#a01c24;background:#fdecec;border-radius:6px;margin:0 8px 8px;padding:6px 8px;font-size:11px}.node-stub-msg{color:#7a5b06;background:#fdf5e2;border-radius:6px;margin:0 8px 8px;padding:6px 8px;font-size:11px}.node-textarea,.node-input,.node-number{width:100%;font:inherit;resize:vertical;color:#26262c;border:1px solid #dcdce0;border-radius:6px;padding:6px 7px}.textarea-fill{flex:auto;min-height:60px}.node-output-text{white-space:pre-wrap;color:#26262c;background:#f6f7f9;border-radius:6px;flex:auto;min-height:60px;padding:6px 8px;overflow:auto}.color-picker-row{align-items:center;gap:8px;margin-bottom:8px;display:flex}.color-swatch-input{cursor:pointer;background:0 0;border:1px solid #dcdce0;border-radius:6px;flex-shrink:0;width:32px;height:32px;padding:0}.color-swatch-input::-webkit-color-swatch-wrapper{padding:2px}.color-swatch-input::-webkit-color-swatch{border:none;border-radius:4px}.shape-select{min-width:0;font:inherit;color:#26262c;background:#fff;border:1px solid #dcdce0;border-radius:6px;flex:1;padding:6px 7px}.node-size-row{align-items:center;gap:6px;margin-bottom:8px;display:flex}.node-size-input{width:0;font:inherit;color:#26262c;border:1px solid #dcdce0;border-radius:6px;flex:1;padding:6px 7px}.node-size-x{color:#9a9aa2;flex-shrink:0;font-size:12px}.solid-color-preview{aspect-ratio:1;border:1px solid #dcdce0;border-radius:6px;width:100%}.shape-preview{aspect-ratio:1;border:1px solid #dcdce0;border-radius:6px;width:100%;overflow:hidden}.node-thumb{cursor:pointer;object-fit:contain;border-radius:6px;flex:1;width:100%;min-height:0;display:block}.node-dropzone{color:#77777f;cursor:pointer;background:#fafafa;border:1.5px dashed #cfcfd6;border-radius:6px;flex-direction:column;align-items:center;gap:4px;padding:18px 8px;display:flex}.node-dropzone:hover{background:#f2f2f4}.node-placeholder{color:#9a9aa2;padding:2px 0;font-style:italic}.note-card{box-sizing:border-box;background:#fff6b7;border-radius:8px;width:100%;min-width:120px;height:100%;padding:8px;display:flex;box-shadow:0 1px 4px #00000014}.note-textarea{resize:none;width:100%;height:100%;font:inherit;color:#4a4321;background:0 0;border:none}.note-textarea:focus{outline:none}.node-socket-rows{border-bottom:1px solid #f0f0f2;flex-direction:column;display:flex}.socket-row{height:20px;position:relative}.handle-label,.handle-label-right{color:#9a9aa2;pointer-events:none;white-space:nowrap;font-size:10px;position:absolute;top:50%;transform:translateY(-50%)}.handle-label{left:10px}.handle-label-right{right:10px}.react-flow__handle{border-width:1.5px;transition:width .12s,height .12s,background-color .12s,border-color .12s,box-shadow .12s}.react-flow__node:hover .react-flow__handle{z-index:10;background-color:#1473e6;border-color:#1473e6;width:16px;height:16px}.react-flow__node:hover .react-flow__handle:before,.react-flow__node:hover .react-flow__handle:after{content:"";background:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.react-flow__node:hover .react-flow__handle:before{width:8px;height:1.6px}.react-flow__node:hover .react-flow__handle:after{width:1.6px;height:8px}.react-flow__node:hover .react-flow__handle:hover{width:20px;height:20px;box-shadow:0 0 0 4px #1473e62e}.model-row{padding:6px 9px 0}.model-badge{color:#4a8f3c;background:#eaf6e6;border-radius:4px;padding:2px 6px;font-size:10px;font-weight:600;display:inline-block}.io-row{color:#55555f;justify-content:flex-end;padding:5px 16px 5px 9px;font-size:11px;display:flex;position:relative}.node-divider{border-top:1px solid #eee;margin:2px 0}.field-row{align-items:center;gap:8px;padding:7px 9px 7px 16px;display:flex;position:relative}.field-row-tall{align-items:flex-start}.field-label{color:#55555f;flex-shrink:0;width:92px;font-size:11px}.field-control{flex:1;min-width:0}.field-hint{color:#b0b0b8;flex-shrink:0;font-size:10px}input.field-control,select.field-control{width:100%}.pill-btn{color:#38383f;cursor:pointer;background:#f4f4f6;border:1px solid #dcdce0;border-radius:12px;align-items:center;gap:4px;padding:4px 10px;font-size:11px;display:inline-flex}.pill-btn:hover{background:#ececef}.ref-thumbs{flex-wrap:wrap;gap:6px;max-height:96px;margin-top:6px;display:flex;overflow-y:auto}.ref-thumb{border:1px solid #dcdce0;border-radius:5px;width:36px;height:36px;position:relative;overflow:hidden}.ref-thumb img{object-fit:cover;width:100%;height:100%;display:block}.ref-thumb-remove{color:#fff;cursor:pointer;background:#0009;border:none;border-radius:50%;justify-content:center;align-items:center;width:14px;height:14px;padding:0;display:flex;position:absolute;top:1px;right:1px}.seed-control{align-items:center;gap:6px;display:flex}.seed-number{flex:none;width:70px}.toggle{cursor:pointer;display:inline-flex}.toggle input{display:none}.toggle-track{background:#cfcfd6;border-radius:10px;align-items:center;width:30px;height:17px;padding:2px;transition:background .15s;display:inline-flex}.toggle input:checked+.toggle-track{background:#1b1b1f}.toggle-thumb{background:#fff;border-radius:50%;width:13px;height:13px;transition:transform .15s}.toggle input:checked+.toggle-track .toggle-thumb{transform:translate(13px)}.toggle-caption{color:#55555f;font-size:11px}.advanced-toggle{text-align:left;color:#38383f;cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;width:100%;padding:6px 9px;font-size:12px;display:flex}.advanced-toggle:hover{background:#f7f7f8}.checkerboard{background-image:linear-gradient(45deg,#eee 25%,#0000 25%),linear-gradient(-45deg,#eee 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#eee 75%),linear-gradient(-45deg,#0000 75%,#eee 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px}.image-gallery{flex:1;gap:8px;min-height:140px;display:flex}.image-gallery-thumbs{flex-direction:column;flex-shrink:0;gap:6px;display:flex;overflow-y:auto}.image-gallery-thumb{cursor:pointer;background:#f4f4f6;border:2px solid #0000;border-radius:6px;flex-shrink:0;width:44px;height:44px;padding:0;overflow:hidden}.image-gallery-thumb img{object-fit:cover;width:100%;height:100%;display:block}.image-gallery-thumb.active{border-color:#1473e6}.image-gallery-main{border-radius:8px;flex:1;justify-content:center;align-items:center;min-width:0;display:flex;position:relative;overflow:hidden}.image-gallery-main img{object-fit:contain;max-width:100%;max-height:100%}.image-gallery-count{color:#55555f;background:#ffffffd9;border-radius:4px;padding:2px 6px;font-size:10px;position:absolute;bottom:6px;left:6px}.layer-list{flex-direction:column;gap:4px;max-height:200px;display:flex;overflow-y:auto}.layer-row{background:#f6f7f9;border-radius:6px;align-items:center;gap:6px;padding:4px 6px;display:flex}.layer-visibility-btn{color:#55555f;cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:2px;display:flex}.layer-visibility-btn:hover{color:#26262c}.layer-thumb{object-fit:cover;background:#fff;border-radius:4px;flex-shrink:0;width:24px;height:24px}.layer-name{color:#38383f;white-space:nowrap;flex-shrink:0;font-size:11px}.layer-blend-select{color:#26262c;background:#fff;border:1px solid #dcdce0;border-radius:4px;flex:1;min-width:0;padding:2px 4px;font-size:10px}.layer-opacity-input{color:#26262c;border:1px solid #dcdce0;border-radius:4px;flex-shrink:0;width:40px;padding:2px 4px;font-size:10px}.layer-reorder-btns{flex-direction:column;flex-shrink:0;display:flex}.layer-reorder-btn{color:#75757e;cursor:pointer;background:0 0;border:none;padding:0;line-height:0;display:flex}.layer-reorder-btn:hover:not(:disabled){color:#26262c}.layer-reorder-btn:disabled{opacity:.3;cursor:default}.layer-scale-input,.layer-ratio-input{color:#26262c;border:1px solid #dcdce0;border-radius:4px;flex-shrink:0;width:40px;padding:2px 4px;font-size:10px}.layer-row.selected{background:#e4edfc}.layer-canvas{background:repeating-conic-gradient(#eceef1 0% 25%,#fff 0% 50%) 0 0/16px 16px;border-radius:6px;flex-shrink:0;width:100%;margin-bottom:6px;position:relative;overflow:hidden}.layer-canvas-bg{object-fit:fill;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.layer-canvas-layer{cursor:move;touch-action:none;outline:1px dashed #0000;height:auto;position:absolute}.layer-canvas-layer.selected{outline:2px solid #1473e6}.layer-resize-handle{cursor:nwse-resize;touch-action:none;z-index:1;background:#fff;border:2px solid #1473e6;border-radius:50%;width:10px;height:10px;position:absolute;transform:translate(-50%,-50%)}.layer-canvas-hint{color:#8b8b93;margin:-2px 0 6px;font-size:10px}.bbox-frame{position:relative}.bbox{background:#1473e614;border:2px solid #1473e6;border-radius:2px;position:absolute}.bbox-label{color:#fff;white-space:nowrap;background:#1473e6;border-radius:3px;padding:1px 4px;font-size:9px;position:absolute;top:-18px;left:-2px}.skill-doc-compact{cursor:default;min-height:0}.skill-doc-name{color:#26262c;white-space:nowrap;text-overflow:ellipsis;cursor:text;font-weight:600;overflow:hidden}.skill-doc-name-input{color:#26262c;width:100%;font-weight:600;font-size:inherit;border:1px solid #1473e6;border-radius:4px;padding:1px 4px;font-family:inherit}.skill-doc-preview{color:#9a9aa2;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:11px;display:-webkit-box;overflow:hidden}.skill-doc-actions{gap:6px;display:flex}.batch-count-row{align-items:center;gap:8px;display:flex}.batch-count-label{color:#75757e;font-size:11px}.batch-preview{background:#f6f7f9;border-radius:6px;flex-direction:column;flex:auto;gap:4px;min-height:60px;padding:8px;display:flex;overflow-y:auto}.batch-preview-item{color:#38383f;font-size:11px;line-height:1.4}.batch-preview-index{color:#75757e;margin-right:3px;font-weight:600}.batch-generate-btn{color:#fff;background:#1473e6;border-color:#1473e6;justify-content:center;font-weight:600}.batch-generate-btn:hover{background:#0d66d0}.batch-generate-btn:disabled{opacity:.6;cursor:default}.batch-scatter-btn{justify-content:center}.batch-scatter-btn:disabled{opacity:.5;cursor:default}.bulk-connect-panel{z-index:15;margin-top:58px}.bulk-connect-bar{background:#fff;border:1px solid #dcdce0;border-radius:14px;align-items:center;gap:6px;padding:5px 8px;display:flex;box-shadow:0 1px 4px #00000014}.bulk-connect-count{color:#55555f;white-space:nowrap;padding:0 4px;font-size:11px;font-weight:600}.bulk-connect-plus-wrap{position:relative}.bulk-connect-plus{color:#fff;cursor:pointer;background:#1473e6;border:none;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;display:flex}.bulk-connect-plus:hover{background:#0d66d0}.bulk-connect-plus:disabled{opacity:.4;cursor:default}.bulk-connect-menu{white-space:nowrap;z-index:20;background:#fff;border:1px solid #dcdce0;border-radius:10px;flex-direction:column;gap:2px;padding:4px;display:flex;position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0000001f}.bulk-connect-menu button{color:#38383f;cursor:pointer;text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;gap:6px;padding:6px 10px;font-size:12px;display:flex}.bulk-connect-menu button:hover{background:#f4f4f6}.skill-panel-backdrop{pointer-events:none;z-index:100;position:fixed;inset:0}.skill-panel{pointer-events:auto;background:#fff;border-left:1px solid #e4e4e8;flex-direction:column;max-width:90vw;height:100%;display:flex;position:absolute;top:0;right:0}.skill-panel-resize-handle{cursor:ew-resize;z-index:1;width:6px;position:absolute;top:0;bottom:0;left:-3px}.skill-panel-resize-handle:hover,body.rf-resizing .skill-panel-resize-handle{background:#1473e659}.skill-panel-header{border-bottom:1px solid #eee;align-items:center;gap:8px;padding:14px;display:flex}.skill-panel-header-icon{color:#55555f;flex-shrink:0}.skill-panel-header-title{color:#1c1c22;flex:1;min-width:0;font-size:15px;font-weight:600}.skill-panel-title-input{color:#1c1c22;border:none;outline:none;flex:1;min-width:0;font-size:15px;font-weight:600}.skill-panel-icon-btn{color:#75757e;cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;display:flex}.skill-panel-icon-btn:hover{background:#f2f2f4}.skill-panel-textarea{resize:none;font:inherit;color:#26262c;border:none;outline:none;flex:1;padding:16px;font-size:13px;line-height:1.6}.skill-panel-footer{border-top:1px solid #eee;justify-content:flex-end;align-items:center;gap:10px;padding:12px 14px;display:flex}.skill-panel-saved{color:#2d9d78;font-size:12px;font-weight:600}.skill-panel-save{color:#fff;cursor:pointer;background:#1473e6;border:none;border-radius:16px;align-items:center;gap:6px;padding:8px 16px;font-size:13px;font-weight:600;display:flex}.skill-panel-save:hover{background:#0d66d0}.skill-library-list{flex-direction:column;flex:1;gap:2px;padding:8px;display:flex;overflow:auto}.skill-library-empty{text-align:center;color:#9a9aa2;padding:32px 20px;font-size:13px;line-height:1.6}.skill-library-row{cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:10px 12px;display:flex}.skill-library-row:hover{background:#f4f4f6}.skill-library-row-main{flex:1;min-width:0}.skill-library-row-title{color:#26262c;white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.skill-library-row-date{color:#9a9aa2;margin-top:2px;font-size:11px}.board-viewport{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;background:#fafafb;flex:1;position:relative;overflow:hidden}.board-viewport.panning{cursor:grabbing}.board-viewport.drag-active{background:#eef5ff}.board-save-error{color:#a3282f;background:#fdecec;border-bottom:1px solid #f5d7d7;padding:8px 14px;font-size:12px}.board-canvas{transform-origin:0 0;width:0;height:0;position:absolute;top:0;left:0}.board-dropzone-overlay{color:#1473e6;pointer-events:none;background:#eef5ffb3;border:2px dashed #1473e6;border-radius:10px;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex;position:absolute;inset:8px}.board-empty{color:#9a9aa2;text-align:center;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:32px 24px;display:flex;position:absolute;inset:0}.board-empty p{max-width:240px;font-size:13px;line-height:1.6}.board-card{cursor:move;background:#f6f7f9;border:1px solid #eee;border-radius:8px;position:absolute;overflow:hidden;box-shadow:0 2px 10px #0000001a}.board-card img{pointer-events:none;width:100%;height:auto;display:block}.board-card-delete{color:#fff;cursor:pointer;opacity:0;background:#1414188c;border:none;border-radius:6px;justify-content:center;align-items:center;width:22px;height:22px;transition:opacity .12s;display:flex;position:absolute;top:4px;right:4px}.board-card:hover .board-card-delete{opacity:1}.board-card-delete:hover{background:#d7373f}.board-card.selected{outline:2px solid #1473e6}.board-resize-handle{touch-action:none;z-index:2;background:#fff;border:2px solid #1473e6;border-radius:50%;width:10px;height:10px;position:absolute;transform:translate(-50%,-50%)}.board-marquee{pointer-events:none;z-index:3;background:#1473e61f;border:1px solid #1473e6;position:absolute}.board-zoom-indicator{color:#666;pointer-events:none;z-index:4;background:#fff;border:1px solid #e4e4e8;border-radius:6px;padding:3px 8px;font-size:11px;position:absolute;bottom:10px;left:50%;transform:translate(-50%)}.stub-badge{letter-spacing:.04em;text-transform:uppercase;color:#92650a;vertical-align:middle;background:#fdf0d5;border-radius:4px;margin-left:6px;padding:1px 5px;font-size:9px;font-weight:700}.picker-backdrop{z-index:100;background:#14141840;justify-content:center;align-items:flex-start;padding-top:140px;display:flex;position:fixed;inset:0}.picker-modal{background:#fff;border-radius:14px;flex-direction:column;width:1020px;max-width:92vw;max-height:74vh;display:flex;overflow:hidden;box-shadow:0 20px 60px #0000004d}.picker-search-row{border-bottom:1px solid #eee;align-items:center;gap:10px;padding:16px 20px;display:flex}.picker-search-icon{color:#9a9aa2}.picker-search-input{border:none;outline:none;flex:1;font-size:15px}.picker-body{flex:1;display:flex;overflow:hidden}.picker-sidebar{border-right:1px solid #eee;flex-shrink:0;width:220px;padding:14px 10px;overflow-y:auto}.picker-side-heading{text-transform:uppercase;letter-spacing:.04em;color:#9a9aa2;margin:14px 10px 6px;font-size:11px}.picker-side-item{text-align:left;color:#38383f;cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;width:100%;padding:7px 10px;font-size:13px;display:flex}.picker-side-item:hover{background:#f2f2f4}.picker-side-item.active{color:#1473e6;background:#eaf2fe}.picker-side-item .count{color:#9a9aa2;font-size:11px}.picker-side-item.active .count{color:#6ba4e8}.picker-results{flex:1;padding:14px 20px;overflow-y:auto}.picker-chips{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.picker-chip{color:#38383f;cursor:pointer;background:#fff;border:1px solid #dcdce0;border-radius:16px;align-items:center;gap:6px;padding:6px 12px;font-size:12px;display:flex}.picker-chip:hover{background:#f2f2f4}.picker-result{text-align:left;cursor:pointer;background:0 0;border:none;border-radius:10px;align-items:flex-start;gap:12px;width:100%;padding:10px 8px;display:flex}.picker-result:hover{background:#f5f7fa}.picker-result-icon{color:#38383f;background:#f2f2f4;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;display:flex}.picker-result-title{color:#1c1c22;font-size:13px;font-weight:600}.picker-result-desc{color:#75757e;margin-top:2px;font-size:12px}.picker-empty{color:#9a9aa2;text-align:center;padding:20px 0}
