@font-face{font-family:OPPO Sans;src:url(/Font/OPPOSans4.0.ttf)format("truetype");font-weight:100 900;font-style:normal;font-display:swap}:root{--primary:#3b82f6;--primary-light:#60a5fa;--primary-dark:#2563eb;--bg-main:#000;--bg-card:#0a0a0a;--bg-sidebar:#050505;--bg-elevated:#111;--bg-hover:#ffffff0d;--text-primary:#fff;--text-secondary:#a1a1aa;--text-tertiary:#71717a;--border-color:#27272a;--border-light:#1a1a1a;--shadow-sm:0 1px 3px #00000080;--shadow-md:0 4px 12px #0009;--shadow-lg:0 8px 24px #000000b3;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:20px;--node-ai:linear-gradient(135deg, #7c3aed 0%, #a855f7 100%);--node-input:linear-gradient(135deg, #059669 0%, #10b981 100%);--node-process:linear-gradient(135deg, #db2777 0%, #ec4899 100%);--node-output:linear-gradient(135deg, #2563eb 0%, #3b82f6 100%);--font-sans:"OPPO Sans", -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Roboto, sans-serif;--font-mono:"SF Mono", "Fira Code", Consolas, monospace;--transition-fast:.15s ease;--transition-normal:.25s ease}*{box-sizing:border-box;margin:0;padding:0}*,input,button,textarea,select{font-family:var(--font-sans)}html,body{width:100%;height:100%;font-family:var(--font-sans);background:var(--bg-main);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden}#app{background:var(--bg-main);flex-direction:column;width:100%;height:100vh;display:flex}.toolbar{background:var(--bg-card);z-index:100;justify-content:space-between;align-items:center;height:56px;padding:0 16px;display:flex}.toolbar-left,.toolbar-right{align-items:center;gap:8px;display:flex}.toolbar-center{position:absolute;left:50%;transform:translate(-50%)}.logo{color:var(--text-primary);align-items:center;gap:8px;font-size:16px;font-weight:600;display:flex}.logo-icon{font-size:20px}.toolbar-divider{background:var(--border-color);width:1px;height:24px;margin:0 8px}.tool-btn{border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:1px solid #0000;align-items:center;gap:6px;padding:8px 12px;font-size:13px;font-weight:500;display:flex}.tool-btn:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--border-color)}.tool-btn.primary{background:var(--primary);color:#fff;border-color:var(--primary)}.tool-btn.primary:hover{background:var(--primary-dark);border-color:var(--primary-dark)}.tool-btn svg{width:18px;height:18px}.project-name{color:var(--text-secondary);font-size:14px;font-weight:500}.main-container{flex:1;display:flex;position:relative;overflow:hidden}.floating-nav{-webkit-backdrop-filter:blur(20px);border-radius:var(--radius-xl);z-index:50;background:#0a0a0ad9;border:1px solid #ffffff14;width:110px;position:absolute;top:16px;left:16px;overflow:hidden}.nav-header{color:var(--text-primary);border-bottom:1px solid #ffffff14;align-items:center;gap:8px;padding:12px;font-size:12px;font-weight:600;display:flex}.nav-header svg{opacity:.7}.nav-items{padding:6px 6px 6px 4px}.nav-item{border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none;align-items:center;gap:10px;padding:8px 10px 8px 6px;display:flex}.nav-item:hover{background:#ffffff14}.nav-item:active{background:#ffffff26;transform:scale(.98)}.nav-icon{border-radius:var(--radius-md);width:32px;min-width:32px;height:32px;color:var(--text-secondary);transition:all var(--transition-fast);background:#ffffff0f;justify-content:center;align-items:center;display:flex}.nav-item:hover .nav-icon{color:var(--primary-light);background:#3b82f633}.nav-icon svg{width:18px;height:18px}.nav-info{flex-direction:column;gap:2px;display:flex}.nav-name{color:var(--text-primary);font-size:13px;font-weight:500}.nav-desc{color:var(--text-tertiary);font-size:11px}.nav-divider{background:#ffffff0f;height:1px;margin:8px 12px}.canvas-container{background:var(--bg-main);flex:1;position:relative;overflow:hidden}.canvas-grid{pointer-events:none;background-image:linear-gradient(#ffffff08 1px,#0000 1px),linear-gradient(90deg,#ffffff08 1px,#0000 1px);background-size:20px 20px;position:absolute;inset:0}.vue-flow{width:100%;height:100%;background-color:#000!important}.vue-flow__node{border-radius:var(--radius-lg)!important}.vue-flow__edge-path{stroke-width:1.5px}.vue-flow__handle{border:2px solid var(--primary)!important;background:var(--bg-card)!important;width:12px!important;height:12px!important}.vue-flow__background{background:0 0!important}.custom-node{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);min-width:180px;transition:all var(--transition-fast);overflow:hidden}.custom-node:hover{box-shadow:var(--shadow-lg);border-color:var(--primary)}.custom-node.selected{border-color:var(--primary);box-shadow:0 0 0 2px #3b82f666}.node-header{border-bottom:1px solid var(--border-light);align-items:center;gap:10px;padding:12px 14px;display:flex}.node-header.ai{background:var(--node-ai)}.node-header.input{background:var(--node-input)}.node-header.process{background:var(--node-process)}.node-header.output{background:var(--node-output)}.node-header .node-icon{font-size:16px}.node-header .node-title{color:#fff;text-shadow:0 1px 2px #0000004d;font-size:13px;font-weight:600}.node-body{background:var(--bg-card);padding:12px 14px}.node-field{margin-bottom:10px}.node-field:last-child{margin-bottom:0}.node-label{color:var(--text-tertiary);text-transform:uppercase;margin-bottom:4px;font-size:11px;font-weight:500}.node-input{border:1px solid var(--border-color);border-radius:var(--radius-sm);width:100%;color:var(--text-primary);background:var(--bg-elevated);transition:all var(--transition-fast);padding:8px 10px;font-size:13px}.node-input:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #3b82f633}.node-input::placeholder{color:var(--text-tertiary)}.minimap-container{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);width:180px;box-shadow:var(--shadow-md);position:absolute;bottom:20px;right:20px;overflow:hidden}.minimap-header{color:var(--text-tertiary);background:var(--bg-sidebar);border-bottom:1px solid var(--border-light);padding:8px 12px;font-size:11px;font-weight:600}.zoom-indicator{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-secondary);box-shadow:var(--shadow-sm);padding:6px 14px;font-size:12px;font-weight:500;position:absolute;bottom:20px;left:50%;transform:translate(-50%)}.sidebar-right{background:var(--bg-sidebar);border-left:1px solid var(--border-color);flex-direction:column;width:300px;display:flex}.property-panel{flex:1;overflow-y:auto}.property-section{border-bottom:1px solid var(--border-light);padding:16px}.property-title{color:var(--text-primary);margin-bottom:12px;font-size:13px;font-weight:600}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.fade-in{animation:.3s fadeIn}@media (width<=1200px){.sidebar-left{width:220px}.sidebar-right{width:260px}}@media (width<=768px){.sidebar-left,.sidebar-right{display:none}}.vue-flow{z-index:0;direction:ltr;width:100%;height:100%;position:relative;overflow:hidden}.vue-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.vue-flow__pane{z-index:1}.vue-flow__pane.draggable{cursor:grab}.vue-flow__pane.selection{cursor:pointer}.vue-flow__pane.dragging{cursor:grabbing}.vue-flow__transformationpane{transform-origin:0 0;z-index:2;pointer-events:none}.vue-flow__viewport{z-index:4;overflow:clip}.vue-flow__selection{z-index:6}.vue-flow__edge-labels{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute}.vue-flow__nodesselection-rect:focus,.vue-flow__nodesselection-rect:focus-visible{outline:none}.vue-flow .vue-flow__edges{pointer-events:none;overflow:visible}.vue-flow__edge-path,.vue-flow__connection-path{stroke:#b1b1b7;stroke-width:1px;fill:none}.vue-flow__edge{pointer-events:visibleStroke;cursor:pointer}.vue-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.vue-flow__edge.animated path.vue-flow__edge-interaction{stroke-dasharray:none;animation:none}.vue-flow__edge.inactive{pointer-events:none}.vue-flow__edge.selected,.vue-flow__edge:focus,.vue-flow__edge:focus-visible{outline:none}.vue-flow__edge.selected .vue-flow__edge-path,.vue-flow__edge:focus .vue-flow__edge-path,.vue-flow__edge:focus-visible .vue-flow__edge-path{stroke:#555}.vue-flow__edge-textwrapper{pointer-events:all}.vue-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.vue-flow__connection{pointer-events:none}.vue-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.vue-flow__connectionline{z-index:1001}.vue-flow__nodes{pointer-events:none;transform-origin:0 0}.vue-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.vue-flow__node.draggable{cursor:grab;pointer-events:all}.vue-flow__node.draggable.dragging{cursor:grabbing}.vue-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.vue-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.vue-flow__nodesselection-rect.dragging{cursor:grabbing}.vue-flow__handle{pointer-events:none;min-width:5px;min-height:5px;position:absolute}.vue-flow__handle.connectable{pointer-events:all;cursor:crosshair}.vue-flow__handle-bottom{bottom:0;left:50%;transform:translate(-50%,50%)}.vue-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.vue-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.vue-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.vue-flow__edgeupdater{cursor:move;pointer-events:all}.vue-flow__panel{z-index:5;margin:15px;position:absolute}.vue-flow__panel.top{top:0}.vue-flow__panel.bottom{bottom:0}.vue-flow__panel.left{left:0}.vue-flow__panel.right{right:0}.vue-flow__panel.center{left:50%;transform:translate(-50%)}@keyframes dashdraw{0%{stroke-dashoffset:10px}}:root{--vf-node-bg:#fff;--vf-node-text:#222;--vf-connection-path:#b1b1b7;--vf-handle:#555}.vue-flow__edge.updating .vue-flow__edge-path{stroke:#777}.vue-flow__edge-text{font-size:10px}.vue-flow__edge-textbg{fill:#fff}.vue-flow__connection-path{stroke:var(--vf-connection-path)}.vue-flow__node{cursor:grab}.vue-flow__node.selectable:focus,.vue-flow__node.selectable:focus-visible{outline:none}.vue-flow__node-default,.vue-flow__node-input,.vue-flow__node-output{text-align:center;width:150px;color:var(--vf-node-text);background-color:var(--vf-node-bg);border-style:solid;border-width:1px;border-color:var(--vf-node-color);border-radius:3px;padding:10px;font-size:12px}.vue-flow__node-default.selected,.vue-flow__node-default.selected:hover,.vue-flow__node-input.selected,.vue-flow__node-input.selected:hover,.vue-flow__node-output.selected,.vue-flow__node-output.selected:hover{box-shadow:0 0 0 .5px var(--vf-box-shadow)}.vue-flow__node-default.selected,.vue-flow__node-default:focus,.vue-flow__node-default:focus-visible,.vue-flow__node-input.selected,.vue-flow__node-input:focus,.vue-flow__node-input:focus-visible,.vue-flow__node-output.selected,.vue-flow__node-output:focus,.vue-flow__node-output:focus-visible{border:1px solid #555;outline:none}.vue-flow__node-default .vue-flow__handle,.vue-flow__node-input .vue-flow__handle,.vue-flow__node-output .vue-flow__handle{background:var(--vf-handle)}.vue-flow__node-default.selectable:hover,.vue-flow__node-input.selectable:hover,.vue-flow__node-output.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.vue-flow__node-input{--vf-node-color:var(--vf-node-color,#0041d0);--vf-handle:var(--vf-node-color,#0041d0);--vf-box-shadow:var(--vf-node-color,#0041d0);background:var(--vf-node-bg);border-color:var(--vf-node-color,#0041d0)}.vue-flow__node-input.selected,.vue-flow__node-input:focus,.vue-flow__node-input:focus-visible{border:1px solid var(--vf-node-color,#0041d0);outline:none}.vue-flow__node-default{--vf-handle:var(--vf-node-color,#1a192b);--vf-box-shadow:var(--vf-node-color,#1a192b);background:var(--vf-node-bg);border-color:var(--vf-node-color,#1a192b)}.vue-flow__node-default.selected,.vue-flow__node-default:focus,.vue-flow__node-default:focus-visible{border:1px solid var(--vf-node-color,#1a192b);outline:none}.vue-flow__node-output{--vf-handle:var(--vf-node-color,#ff0072);--vf-box-shadow:var(--vf-node-color,#ff0072);background:var(--vf-node-bg);border-color:var(--vf-node-color,#ff0072)}.vue-flow__node-output.selected,.vue-flow__node-output:focus,.vue-flow__node-output:focus-visible{border:1px solid var(--vf-node-color,#ff0072);outline:none}.vue-flow__nodesselection-rect,.vue-flow__selection{background:#0059dc14;border:1px dotted #0059dccc}.vue-flow__nodesselection-rect:focus,.vue-flow__nodesselection-rect:focus-visible,.vue-flow__selection:focus,.vue-flow__selection:focus-visible{outline:none}.vue-flow__handle{background:var(--vf-handle);border:1px solid #fff;border-radius:100%;width:6px;height:6px}.vue-flow__controls{box-shadow:0 0 2px 1px #00000014}.vue-flow__controls-button{box-sizing:content-box;cursor:pointer;-webkit-user-select:none;user-select:none;background:#fefefe;border:none;border-bottom:1px solid #eee;justify-content:center;align-items:center;width:16px;height:16px;padding:5px;display:flex}.vue-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.vue-flow__controls-button:hover{background:#f4f4f4}.vue-flow__controls-button:disabled{pointer-events:none}.vue-flow__controls-button:disabled svg{fill-opacity:.4}.vue-flow__minimap{background-color:#fff}.vue-flow__minimap.pannable{cursor:grab}.vue-flow__minimap.dragging{cursor:grabbing}.vue-flow__minimap-mask.pannable{cursor:grab}
