.flow-info-dropdown[data-v-9834ff66]{display:flex;align-items:center;gap:10px}.menu-file-actions[data-v-9834ff66]{display:flex;align-items:center;gap:8px}.menu-file-actions .btn-menu-icon[data-v-9834ff66]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;min-width:32px;font-size:14px;background:#1a202c;color:#e2e8f0;border:1px solid #4a5568;border-radius:3px;cursor:pointer;transition:all .2s}.menu-file-actions .btn-menu-icon[data-v-9834ff66]:hover{background:#4a5568;border-color:#718096}.btn-run[data-v-9834ff66]{color:#68d391}.btn-run[data-v-9834ff66]:hover:not(:disabled){color:#9ae6b4}.btn-run.running[data-v-9834ff66],.btn-run[data-v-9834ff66]:disabled{opacity:.5;cursor:not-allowed}.btn-menu-icon.active[data-v-9834ff66]{color:#63b3ed;border-color:#63b3ed}.sources-modal .sources-container{--text-primary: #e2e8f0;--text-secondary: #a0aec0;--text-muted: #718096;--bg-primary: #1a1a2e;--bg-secondary: #16213e;--bg-tertiary: #0f3460;--border-color: #2a2a4a;--shadow-sm: 0 2px 4px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);background:#1a1a2e;color:#e2e8f0;min-height:0}.sources-modal .sources-container .sources-sidebar,.sources-modal .sources-container .editor-panel,.sources-modal .sources-container .page-header,.sources-modal .sources-container .sidebar-header,.sources-modal .sources-container .editor-header{background:#16213e;border-color:#2a2a4a}.sources-modal .sources-container .page-header h1,.sources-modal .sources-container .editor-header h2,.sources-modal .sources-container .panel-header h3{color:#e2e8f0}.sources-modal .sources-container .source-card{background:#16213e;border-color:#2a2a4a}.sources-modal .sources-container .source-card:hover{border-color:#3498db}.sources-main.main-content{display:flex;flex-direction:column;overflow:hidden}.sources-main .tab-navigation{margin-bottom:0;background:#16213e;border-bottom:1px solid #2a2a4a}.sources-main .tab-button{color:#a0aec0}.sources-main .tab-button:hover{color:#e2e8f0;background:#3498db1a}.sources-main .tab-button.active{color:#3498db;background:#3498db14}.sources-main .tab-content-container{flex:1;overflow:hidden;position:relative}.sources-main .tab-panel.active{display:block;height:100%;overflow-y:auto;padding:16px 24px}.sources-main .input,.sources-main .select,.sources-main .textarea{background:#0d1117;border-color:#2a2a4a;color:#e2e8f0}.sources-main .input:focus,.sources-main .select:focus,.sources-main .textarea:focus{border-color:#3498db;box-shadow:0 0 0 2px #3498db40}.sources-main .input::placeholder{color:#4a5568}.datasets-toolbar{margin-bottom:12px}.search-input{max-width:300px}.datasets-table-wrapper{overflow-x:auto;margin-bottom:16px}.datasets-table{width:100%;border-collapse:collapse;font-size:13px}.datasets-table th,.datasets-table td{padding:10px 14px;text-align:left;border-bottom:1px solid #2a2a4a}.datasets-table th{font-weight:600;color:#718096;font-size:11px;text-transform:uppercase;letter-spacing:.5px}.datasets-table td{color:#e2e8f0}.datasets-table tr:hover{background:#3498db14}.datasets-table tr.selected{background:#3498db26}.name-cell{cursor:pointer;color:#63b3ed;font-weight:500}.name-cell:hover{text-decoration:underline;color:#90cdf4}.format-badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600;text-transform:uppercase;background:#0f3460;color:#a0aec0}.actions-cell{display:flex;gap:4px}.preview-panel{margin-top:16px;border:1px solid #2a2a4a;border-radius:6px;overflow:hidden;background:#0d1117}.preview-header{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#16213e;border-bottom:1px solid #2a2a4a}.preview-header h4{margin:0;font-size:13px;color:#e2e8f0}.preview-count{color:#718096;font-weight:400;font-size:12px}.dtype-badge{display:block;font-size:10px;color:#4a5568;font-weight:400}.preview-table-wrapper{overflow-x:auto;max-height:300px;overflow-y:auto}.preview-table{width:100%;border-collapse:collapse;font-size:12px}.preview-table th,.preview-table td{padding:6px 10px;text-align:left;border-bottom:1px solid #1a2332;white-space:nowrap;color:#cbd5e0}.preview-table th{position:sticky;top:0;background:#16213e;font-weight:600;color:#a0aec0}.preview-table td{max-width:200px;overflow:hidden;text-overflow:ellipsis}.add-section{margin-bottom:20px}.add-section h3{margin:0 0 8px;font-size:15px;color:#e2e8f0}.help-text{color:#718096;font-size:12px;margin:0 0 12px}.file-upload-zone{border:2px dashed #2a2a4a;border-radius:8px;padding:32px;text-align:center;cursor:pointer;transition:all .2s;position:relative;background:#0d1117;color:#a0aec0}.file-upload-zone:hover,.file-upload-zone.dragging{border-color:#3498db;background:#3498db14}.upload-content{pointer-events:none}.upload-icon{font-size:32px;color:#4a5568;margin-bottom:8px}.selected-file{color:#63b3ed;font-weight:500}.upload-options{margin-top:12px;display:flex;gap:12px;align-items:flex-end}.upload-actions{display:flex;gap:8px}.url-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.url-input{flex:2;min-width:200px}.filename-input{flex:1;min-width:150px}.sources-main .divider{border:none;border-top:1px solid #2a2a4a;margin:24px 0}.sources-main .divider:before,.sources-main .divider:after{border-bottom-color:#2a2a4a}.api-form{display:flex;flex-direction:column;gap:12px}.form-row{display:flex;gap:12px}.form-field-small{flex:0 0 120px}.sources-main .form-label{color:#a0aec0}.api-actions{display:flex;gap:8px}.api-save-section{display:flex;gap:8px;padding:12px;border-top:1px solid #2a2a4a;align-items:center}.api-configs-list{display:flex;flex-direction:column;gap:8px}.api-config-card{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border:1px solid #2a2a4a;border-radius:6px;background:#16213e}.api-config-card:hover{border-color:#3498db}.api-config-info{display:flex;align-items:center;gap:8px;overflow:hidden}.api-method-badge{padding:2px 6px;border-radius:3px;font-size:10px;font-weight:700;background:#3498db;color:#fff}.api-url{color:#718096;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.api-config-actions{display:flex;gap:4px;flex-shrink:0}.sources-main .btn-ghost{background:transparent;color:#a0aec0}.sources-main .btn-ghost:hover{color:#e2e8f0}.sources-main .empty-state{color:#4a5568}.sources-main .empty-state p{color:#718096}.status-toast{position:fixed;bottom:20px;right:20px;padding:10px 20px;border-radius:6px;font-size:13px;z-index:9999;animation:toastSlideIn .3s ease;color:#fff}.status-toast.success{background:#27ae60}.status-toast.error{background:#e74c3c}@keyframes toastSlideIn{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.load-flow-modal[data-v-5b654592]{max-width:600px;width:90vw}.load-flow-modal-body[data-v-5b654592]{max-height:70vh;overflow-y:auto}.loading-flows[data-v-5b654592],.no-flows[data-v-5b654592]{padding:40px 20px;text-align:center;color:#a0aec0}.no-flows .hint[data-v-5b654592]{font-size:.9em;color:#718096;margin-top:8px}.flows-list[data-v-5b654592]{list-style:none;padding:0;margin:0}.flow-item[data-v-5b654592]{padding:12px;margin-bottom:8px;background:#2d3748;border-radius:6px;cursor:pointer;transition:background .2s,border-color .2s;border:1px solid transparent}.flow-item[data-v-5b654592]:hover{background:#4a5568;border-color:#63b3ed}.flow-name[data-v-5b654592]{font-weight:600;color:#e2e8f0;margin-bottom:4px;font-size:14px}.flow-meta[data-v-5b654592]{font-size:12px;color:#a0aec0;margin-bottom:4px}.flow-description[data-v-5b654592]{font-size:12px;color:#cbd5e0;margin-top:4px;line-height:1.4}.terminal-panel[data-v-efaa7b5a]{height:260px;background:#0d1117;border-top:2px solid #30363d;display:flex;flex-direction:column;transform:translateY(100%);transition:transform .25s ease,left .3s ease,right .3s ease}.terminal-panel.visible[data-v-efaa7b5a]{transform:translateY(0)}.terminal-header[data-v-efaa7b5a]{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:#161b22;border-bottom:1px solid #30363d;flex-shrink:0}.terminal-title[data-v-efaa7b5a]{font-size:12px;color:#8b949e;font-family:monospace;display:flex;align-items:center;gap:6px}.terminal-actions[data-v-efaa7b5a]{display:flex;gap:4px}.terminal-btn[data-v-efaa7b5a]{background:none;border:none;color:#8b949e;cursor:pointer;padding:2px 6px;border-radius:4px;font-size:12px}.terminal-btn[data-v-efaa7b5a]:hover{background:#30363d;color:#e6edf3}.terminal-body[data-v-efaa7b5a]{flex:1;overflow-y:auto;padding:8px 12px;font-family:Courier New,Courier,monospace;font-size:12px;line-height:1.6}.terminal-line[data-v-efaa7b5a]{white-space:pre-wrap;word-break:break-all}.terminal-line.stdout[data-v-efaa7b5a]{color:#e6edf3}.terminal-line.info[data-v-efaa7b5a]{color:#58a6ff}.terminal-line.error[data-v-efaa7b5a]{color:#f85149}.terminal-cursor[data-v-efaa7b5a]{animation:blink-efaa7b5a 1s step-end infinite;color:#58a6ff}@keyframes blink-efaa7b5a{50%{opacity:0}}.terminal-empty[data-v-efaa7b5a]{color:#484f58;font-style:italic;font-size:12px;padding:8px 0}.vue-flow-node[data-v-fb82f263]{position:relative}.node-content[data-v-fb82f263]{position:relative;z-index:1}.node-delete-button[data-v-fb82f263]{position:absolute;top:0;right:0;transform:translate(45%,-45%);z-index:3;width:24px;height:24px;border:1px solid #dc2626;border-radius:999px;background:#ef4444;color:#fff;font-size:13px;font-weight:700;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.node-delete-button[data-v-fb82f263]:hover{background:#dc2626}.node-ports[data-v-fb82f263]{display:flex;flex-direction:column;gap:6px;margin-top:8px}.port-row[data-v-fb82f263]{position:relative;display:flex;align-items:center;min-height:22px}.port-input[data-v-fb82f263]{justify-content:flex-start}.port-output[data-v-fb82f263]{justify-content:flex-end}.port-tag[data-v-fb82f263]{font-size:11px;line-height:1;color:#e2e8f0;background:#1a202cf2;border:1px solid #4a5568;border-radius:7px;padding:5px 6px;white-space:nowrap}.edge-delete-button[data-v-98264c63]{position:absolute;top:12px;right:12px;z-index:30;border:1px solid #e53e3e;background:#c53030;color:#fff;border-radius:6px;padding:6px 10px;font-size:12px;cursor:pointer}.edge-delete-button[data-v-98264c63]:hover{background:#9b2c2c}.save-status[data-v-98264c63]{position:fixed;top:60px;left:50%;transform:translate(-50%);padding:8px 16px;font-size:13px;background:#276749;color:#fff;text-align:center;border-radius:6px;box-shadow:0 2px 8px #0000004d;z-index:1000;min-width:200px}.save-status.error[data-v-98264c63]{background:#c53030}.code-modal-overlay[data-v-98264c63]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:2001}.code-modal-content[data-v-98264c63]{background:#1a202c;border-radius:8px;max-width:90vw;width:640px;max-height:85vh;display:flex;flex-direction:column;box-shadow:0 4px 20px #0006}.code-modal-content .modal-header[data-v-98264c63]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid #2d3748}.code-modal-content .modal-header h3[data-v-98264c63]{margin:0;font-size:1rem;color:#e2e8f0}.code-modal-content .modal-close[data-v-98264c63]{background:none;border:none;color:#a0aec0;font-size:1.5rem;cursor:pointer;line-height:1;padding:0 4px}.code-modal-content .modal-close[data-v-98264c63]:hover{color:#fff}.code-modal-body[data-v-98264c63]{padding:16px;overflow:auto;flex:1}.generated-code[data-v-98264c63]{margin:0 0 12px;padding:12px;background:#2d3748;border-radius:6px;font-size:12px;line-height:1.5;overflow:auto;max-height:50vh;color:#e2e8f0;white-space:pre-wrap;word-break:break-all}.code-modal-actions[data-v-98264c63]{display:flex;gap:8px;justify-content:flex-end}.btn-copy-code[data-v-98264c63],.btn-close-code[data-v-98264c63]{padding:8px 16px;border-radius:6px;font-size:13px;cursor:pointer;border:1px solid #4a5568;background:#2d3748;color:#e2e8f0}.btn-copy-code[data-v-98264c63]:hover,.btn-close-code[data-v-98264c63]:hover{background:#4a5568}.vue-flow{position:relative;width:100%;height:100%;overflow:hidden;z-index:0;direction:ltr}.vue-flow__container{position:absolute;height:100%;width:100%;left:0;top: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{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.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:1;fill:none}.vue-flow__edge{pointer-events:visibleStroke;cursor:pointer}.vue-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.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;-moz-user-select:none;user-select:none}.vue-flow__connection{pointer-events:none}.vue-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.vue-flow__connectionline{z-index:1001}.vue-flow__nodes{pointer-events:none;transform-origin:0 0}.vue-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}.vue-flow__node.draggable{cursor:grab;pointer-events:all}.vue-flow__node.draggable.dragging{cursor:grabbing}.vue-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.vue-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.vue-flow__nodesselection-rect.dragging{cursor:grabbing}.vue-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px}.vue-flow__handle.connectable{pointer-events:all;cursor:crosshair}.vue-flow__handle-bottom{left:50%;bottom:0;transform:translate(-50%,50%)}.vue-flow__handle-top{left:50%;top:0;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{position:absolute;z-index:5;margin:15px}.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:10}}: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{padding:10px;border-radius:3px;width:150px;font-size:12px;text-align:center;border-width:1px;border-style:solid;color:var(--vf-node-text);background-color:var(--vf-node-bg);border-color:var(--vf-node-color)}.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{outline:none;border:1px solid #555}.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{outline:none;border:1px solid var(--vf-node-color, #0041d0)}.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{outline:none;border:1px solid var(--vf-node-color, #1a192b)}.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{outline:none;border:1px solid var(--vf-node-color, #ff0072)}.vue-flow__nodesselection-rect,.vue-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.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{width:6px;height:6px;background:var(--vf-handle);border:1px solid #fff;border-radius:100%}.vue-flow__controls{box-shadow:0 0 2px 1px #00000014}.vue-flow__controls-button{background:#fefefe;border:none;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;user-select:none;padding:5px}.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}html,body{margin:0;padding:0;height:100%;font-family:Roboto,sans-serif}body:not(.flows-editor) #drawflow{position:absolute;top:0;left:0;right:180px;bottom:0;background-color:#fafafa;background-image:linear-gradient(0deg,transparent 24%,rgba(0,0,0,.02) 25%,rgba(0,0,0,.02) 26%,transparent 27%),linear-gradient(90deg,transparent 24%,rgba(0,0,0,.02) 25%,rgba(0,0,0,.02) 26%,transparent 27%);background-size:40px 40px}#sidebar{position:absolute;top:0;right:0;width:180px;bottom:0;background:#fff;border-left:1px solid #e1e5ea;display:flex;flex-direction:column;padding:15px;box-shadow:-3px 0 10px #0000000d;z-index:100}#layer-panel{flex:1;overflow-y:auto}#layer-panel strong{display:block;margin-bottom:10px}#layer-panel button{display:block;width:100%;margin-bottom:8px;padding:8px;font-size:14px;cursor:pointer;border:1px solid #ddd;border-radius:4px;background:#fff;transition:.2s;text-align:left}#layer-panel button:hover{background:#f0f0f0;border-color:#ccc}#controls{padding-top:10px;border-top:1px solid #e1e5ea;display:flex;flex-direction:column}#controls>*{margin-bottom:8px;font-size:14px}#controls button,#controls select{width:100%;padding:8px;border:1px solid #ddd;border-radius:4px;background:#fff;transition:.2s}#controls button:hover,#controls select:hover{background:#f0f0f0;border-color:#ccc}.drawflow .drawflow-node{position:absolute;background:linear-gradient(135deg,#fff,#f7f9fb);border:1px solid #e1e5ea;border-radius:8px;box-shadow:0 2px 4px #00000014;padding:12px;font-size:14px;transition:box-shadow .2s,transform .1s;min-width:160px;font-family:Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.drawflow .drawflow-node.selected{background-color:#e3f2fd}.drawflow .drawflow-node:hover{box-shadow:0 4px 12px #00000026;transform:translateY(-2px)}.drawflow .drawflow-node strong{display:block;font-size:18px;font-weight:700;margin-bottom:8px;line-height:1.3;color:#1976d2}.drawflow .drawflow-node .inputs .input,.drawflow .drawflow-node .outputs .output{width:12px;height:12px;background:#fff;border:2px solid #1976d2;border-radius:50%;box-shadow:0 1px 3px #0003}.drawflow .connection .main-path,.drawflow .connection .main-path:hover{stroke:#1976d2!important;stroke-width:2px}body.horizontal .drawflow-node .inputs{display:flex;flex-direction:column;left:-12px!important;top:auto!important;right:auto!important;bottom:auto!important;transform:none!important}body.horizontal .drawflow-node .outputs{display:flex;flex-direction:column;right:-12px!important;top:auto!important;left:auto!important;bottom:auto!important;transform:none!important}body.vertical .drawflow-node .inputs{width:auto;min-width:30px;display:flex;flex-direction:row;justify-content:center;position:absolute!important;top:-12px!important;left:50%!important;right:auto!important;bottom:auto!important}body.vertical .drawflow-node .outputs{width:auto;min-width:30px;display:flex;flex-direction:row;justify-content:center;position:absolute!important;bottom:-12px!important;left:50%!important;top:auto!important;right:auto!important}body.flows-editor .drawflow .drawflow-node{min-width:200px;max-width:280px;width:auto;height:auto;overflow:visible;word-wrap:break-word;position:relative;padding:14px;font-size:14px}body.flows-editor .drawflow .drawflow-node strong{font-size:20px;font-weight:700;margin-bottom:10px;line-height:1.4;color:#1976d2}body.flows-editor .drawflow .drawflow-node input,body.flows-editor .drawflow .drawflow-node select{border:1px solid #ccc;border-radius:4px;padding:3px 5px;font-size:12px;width:auto;min-width:50px;max-width:100px;transition:border-color .2s;box-sizing:border-box;margin:1px 0}body.flows-editor .drawflow .drawflow-node input:focus,body.flows-editor .drawflow .drawflow-node select:focus{outline:none;border-color:#1976d2}body.flows-editor .drawflow .drawflow-node input[style*="width:100px"]{width:90px!important;max-width:100px}body.flows-editor .drawflow .drawflow-node input[style*="width:35px"]{width:30px!important;max-width:40px}.layer-filter-container{margin-bottom:15px;padding-bottom:10px;border-bottom:1px solid #e1e5ea}.layer-filter-input{width:100%;padding:8px;border:1px solid #ddd;border-radius:4px;font-size:14px;box-sizing:border-box}.layer-filter-input:focus{outline:none;border-color:#1976d2;box-shadow:0 0 0 2px #1976d21a}.node-section{margin-bottom:8px;border:1px solid #e1e5ea;border-radius:4px;background:#fff;overflow:hidden;transition:box-shadow .2s}.node-section:hover{box-shadow:0 2px 4px #0000000d}.section-header{display:flex;align-items:center;padding:10px 12px;background:#f8f9fa;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s;gap:8px}.section-header:hover{background:#e9ecef}.section-icon{font-size:16px;flex-shrink:0}.section-count{font-size:12px;color:#666;background:#e9ecef;padding:2px 6px;border-radius:10px}.section-toggle{font-size:10px;color:#666;transition:transform .2s;flex-shrink:0}.section-content{padding:8px;display:block;transition:max-height .3s ease-out}.layer-button{display:block;width:100%;margin-bottom:6px;padding:8px 10px;font-size:13px;cursor:pointer;border:1px solid #ddd;border-radius:4px;background:#fff;transition:all .2s;text-align:left}.layer-button:hover{background:#f0f0f0;border-color:#1976d2;transform:translate(2px)}.layer-button:last-child{margin-bottom:0}.empty-section{padding:10px;text-align:center;color:#999;font-size:12px;font-style:italic}.flow-node{background:linear-gradient(135deg,#e8f5e8,#f0f8f0);border:2px solid #4caf50}.flow-node.input{background:linear-gradient(135deg,#e3f2fd,#f0f8ff);border-color:#2196f3}.flow-node.process{background:linear-gradient(135deg,#fff3e0,#fff8f0);border-color:#ff9800}.flow-node.filter{background:linear-gradient(135deg,#e8f5e8,#f0f8f0);border-color:#4caf50}.flow-node.group{background:linear-gradient(135deg,#f3e5f5,#faf5ff);border-color:#9c27b0}.flow-node.repeat{background:linear-gradient(135deg,#e0f2f1,#f0f8f7);border-color:#009688}.flow-node.ml{background:linear-gradient(135deg,#fce4ec,#fef7f0);border-color:#e91e63}.flow-node.output{background:linear-gradient(135deg,#fff3e0,#fff8f0);border-color:#ff9800}.flow-node.custom{background:linear-gradient(135deg,#f5f5f5,#fafafa);border-color:#666}.menu-bar{position:fixed;top:0;left:0;right:0;height:40px;background:#2d3748;color:#e2e8f0;display:flex;align-items:center;justify-content:space-between;padding:0 24px;z-index:1004;border-bottom:1px solid #4a5568}.menu-left{display:flex;align-items:center;gap:15px}.menu-buttons{display:flex;gap:8px;align-items:center}.menu-buttons .btn-menu-icon{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;min-width:32px;font-size:14px}.menu-buttons .btn-menu-icon i{font-size:1em}.flow-info-dropdown{position:relative;display:inline-block;z-index:1003}.dropdown-toggle{background:#1a202c;color:#e2e8f0;border:1px solid #4a5568;border-radius:3px;padding:6px 12px;cursor:pointer;font-size:12px;display:flex;align-items:center;gap:5px;transition:all .2s}.dropdown-toggle:hover{background:#4a5568;border-color:#718096}.dropdown-content{display:none;position:absolute;top:100%;left:0;background:#2d3748;width:320px;box-shadow:0 4px 12px #0006;border:1px solid #4a5568;border-radius:3px;z-index:1003;padding:12px}.dropdown-content.show{display:block}.flow-name-input,.flow-description-input{width:100%;padding:8px 10px;border:1px solid #4a5568;border-radius:6px;font-size:12px;margin-bottom:8px;box-sizing:border-box;background:#2d3748;color:#e2e8f0;min-height:36px;transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease}.flow-name-input::placeholder,.flow-description-input::placeholder{color:#718096}.flow-name-input:hover,.flow-description-input:hover{border-color:#718096;background:#374151}.flow-name-input:focus,.flow-description-input:focus{outline:none;border-color:#63b3ed;box-shadow:0 0 0 2px #63b3ed40;background:#2d3748}.flow-description-input{height:50px;min-height:50px;resize:vertical;font-family:inherit}.dropdown-label{font-size:11px;color:#a0aec0;margin-bottom:4px;font-weight:500;display:block}.menu-buttons button{padding:6px 12px;background:#1a202c;color:#e2e8f0;border:1px solid #4a5568;border-radius:3px;cursor:pointer;font-size:12px;transition:all .2s}.menu-buttons button:hover{background:#4a5568;border-color:#718096}.menu-buttons button:active{background:#4a5568}body{padding-top:35px}#sidebar{top:35px;height:calc(100vh - 35px)}body.flows-editor #main-content{position:absolute;top:35px;left:0;right:250px;bottom:0;height:calc(100vh - 35px);display:flex;flex-direction:column;overflow:hidden}body.flows-editor #drawflow{flex:1;background-color:#fafafa;background-image:linear-gradient(0deg,transparent 24%,rgba(0,0,0,.02) 25%,rgba(0,0,0,.02) 26%,transparent 27%),linear-gradient(90deg,transparent 24%,rgba(0,0,0,.02) 25%,rgba(0,0,0,.02) 26%,transparent 27%);background-size:40px 40px;transition:height .3s ease;z-index:5;position:relative;border-right:1px solid #dee2e6}body.flows-editor .terminal-panel{height:300px;background:#1e1e1e;border-top:2px solid #333;border-right:1px solid #444;display:flex;flex-direction:column;transition:height .3s ease;z-index:10;position:relative;width:100%;max-width:calc(100vw - 250px);box-sizing:border-box}body.flows-editor .terminal-panel.hidden{height:0;overflow:hidden;border-top:none}body.flows-editor .terminal-panel.minimized{height:40px}body.flows-editor .terminal-header{background:#2d2d2d;color:#fff;padding:8px 16px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #444;min-height:40px}body.flows-editor .terminal-header h3{margin:0;font-size:14px;font-weight:500}body.flows-editor .terminal-toggle{background:#444;border:none;color:#fff;font-size:16px;cursor:pointer;padding:4px 8px;border-radius:4px;width:24px;height:24px;display:flex;align-items:center;justify-content:center}body.flows-editor .terminal-toggle:hover{background:#555}body.flows-editor .terminal-body{flex:1;display:flex;flex-direction:column;padding:12px;min-height:0}body.flows-editor .terminal-panel.minimized .terminal-body{display:none}body.flows-editor .terminal-output{flex:1;background:#000;color:#0f0;font-family:Courier New,monospace;font-size:13px;padding:10px;border-radius:4px;overflow-y:auto;margin-bottom:8px;white-space:pre-wrap;min-height:200px}body.flows-editor .terminal-line{margin-bottom:2px;line-height:1.4}body.flows-editor .terminal-input-container{display:flex;align-items:center;background:#000;border-radius:4px;padding:6px 10px;border:1px solid #333}body.flows-editor .terminal-prompt{color:#0f0;font-family:Courier New,monospace;margin-right:8px;font-size:13px}body.flows-editor .terminal-input{flex:1;background:transparent;border:none;color:#0f0;font-family:Courier New,monospace;font-size:13px;outline:none}body.flows-editor .terminal-input::placeholder{color:#666}body.flows-editor .parent-node{height:0!important}#sidebar{position:fixed;right:0;width:250px;background:#f8f9fa;border-left:1px solid #dee2e6;padding:15px;overflow-y:auto;z-index:1000;box-shadow:-2px 0 5px #0000001a}#node-panel{margin-bottom:20px}#node-panel strong{display:block;margin-bottom:10px;color:#2c3e50;font-size:14px}.node-category{margin-bottom:15px;border:1px solid #dee2e6;border-radius:4px;background:#fff}.node-category h4{margin:0;padding:8px 12px;background:#e9ecef;color:#495057;font-size:12px;font-weight:600;border-bottom:1px solid #dee2e6}.node-category button{display:block;width:100%;padding:8px 12px;border:none;background:#fff;color:#333;text-align:left;cursor:pointer;font-size:12px;border-bottom:1px solid #f8f9fa;transition:background-color .2s}.node-category button:hover{background:#f8f9fa}.node-category button{position:relative}.node-category button:after{content:attr(data-tooltip);position:absolute;left:100%;top:50%;transform:translateY(-50%);margin-left:10px;padding:8px 12px;background:#333;color:#fff;border-radius:4px;font-size:11px;white-space:nowrap;opacity:0;visibility:hidden;transition:all .3s ease;z-index:1000;pointer-events:none;max-width:200px;white-space:normal;word-wrap:break-word;box-shadow:0 2px 8px #0003}.node-category button:before{content:"";position:absolute;left:100%;top:50%;transform:translateY(-50%);margin-left:4px;border:5px solid transparent;border-right-color:#333;opacity:0;visibility:hidden;transition:all .3s ease;z-index:1000;pointer-events:none}.node-category button:hover:after,.node-category button:hover:before{opacity:1;visibility:visible}.node-category button:last-child:after{top:auto;bottom:0;transform:translateY(0)}.node-category button:last-child:before{top:auto;bottom:10px;transform:translateY(0)}.notification{position:fixed;bottom:15px;left:50%;transform:translate(-50%);padding:8px 16px;border-radius:4px;color:#fff;font-size:14px;z-index:1002;animation:slideUp .3s ease-out}@keyframes slideUp{0%{opacity:0;transform:translate(-50%) translateY(20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.drawflow{position:fixed;top:35px;left:0;right:250px;height:calc(100vh - 35px);background:#f8f9fa}body.flows-editor .drawflow .drawflow-node{min-width:180px;max-width:250px;width:auto;font-family:Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px}body.flows-editor .drawflow .drawflow-node:has(.input-labels),body.flows-editor .drawflow .drawflow-node:has(.output-labels){min-width:220px}body.flows-editor .drawflow .drawflow-node:has(.input-labels):has(.output-labels){min-width:260px;height:auto;overflow:visible;word-wrap:break-word;position:relative}body.flows-editor .drawflow .drawflow-node .drawflow-node-inputs,body.flows-editor .drawflow .drawflow-node .drawflow-node-outputs{display:flex!important;flex-direction:column!important;gap:8px!important;justify-content:center!important}body.horizontal .drawflow-node .drawflow-node-input{position:absolute!important;left:-12px!important;top:auto!important;right:auto!important;bottom:auto!important;transform:none!important}body.horizontal .drawflow-node .drawflow-node-output{position:absolute!important;right:-12px!important;top:auto!important;left:auto!important;bottom:auto!important;transform:none!important}body.flows-editor .drawflow .drawflow-node input,body.flows-editor .drawflow .drawflow-node select{border:1px solid #4a5568;border-radius:6px;padding:6px 10px;min-width:50px;max-width:100px;margin:1px 0;font-size:13px;font-family:Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#2d3748;color:#e2e8f0;transition:border-color .2s ease,box-shadow .2s ease}body.flows-editor .drawflow .drawflow-node input::placeholder{color:#718096}body.flows-editor .drawflow .drawflow-node input:focus,body.flows-editor .drawflow .drawflow-node select:focus{outline:none;border-color:#63b3ed;box-shadow:0 0 0 2px #63b3ed40}body.flows-editor .drawflow .drawflow-node .node-file-trigger,.drawflow .drawflow-node .node-file-trigger,.flow-node .node-file-trigger{display:inline-flex;align-items:center;justify-content:center;position:relative;padding:6px 10px;font-size:12px;cursor:pointer;flex-shrink:0;border-radius:6px;border:1px solid #718096;background:#4a5568;color:#e2e8f0}body.flows-editor .drawflow .drawflow-node .node-file-trigger:hover,.flow-node .node-file-trigger:hover{background:#2d3748;border-color:#63b3ed}body.flows-editor .drawflow .drawflow-node .node-file-trigger input[type=file],.drawflow .drawflow-node .node-file-trigger input[type=file],.flow-node .node-file-trigger input[type=file]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;margin:0;padding:0;font-size:0}body.flows-editor .drawflow .drawflow-node .node-file-trigger.node-file-trigger--icon,.drawflow .drawflow-node .node-file-trigger.node-file-trigger--icon,.flow-node .node-file-trigger.node-file-trigger--icon{width:30px;height:30px;padding:0}body.flows-editor .drawflow .drawflow-node .node-file-trigger .node-file-trigger-icon,.drawflow .drawflow-node .node-file-trigger .node-file-trigger-icon,.flow-node .node-file-trigger .node-file-trigger-icon{font-size:16px;line-height:1;pointer-events:none}body.flows-editor .drawflow .drawflow-node .cuerpo .file-param-block,.flow-node .file-param-block{display:block;margin-bottom:8px}body.flows-editor .drawflow .drawflow-node .cuerpo .file-param-block .file-param-label,.flow-node .file-param-block .file-param-label{display:block;margin-bottom:4px}body.flows-editor .drawflow .drawflow-node .cuerpo .file-input-row,.drawflow .drawflow-node .cuerpo .file-input-row,.flow-node .file-input-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}body.flows-editor .drawflow .drawflow-node .cuerpo .file-input-row input:not([type=file]),.drawflow .drawflow-node .cuerpo .file-input-row input:not([type=file]),.flow-node .file-input-row input:not([type=file]){flex:1;min-width:80px}.flow-node .node-file-trigger .node-file-trigger-text{pointer-events:none}body.flows-editor .drawflow .drawflow-node .cuerpo{background:linear-gradient(135deg,#e3f2fd,#f0f8ff);border:2px solid #2196f3;border-radius:6px;padding:8px;min-width:120px;width:auto;height:auto;min-height:60px;display:block;box-sizing:border-box;font-family:Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px}body.flows-editor .drawflow .drawflow-node:has(.input-labels):not(:has(.input-labels-inline)) .cuerpo{padding-left:70px}body.flows-editor .drawflow .drawflow-node:has(.input-labels):not(:has(.input-labels-inline)) .drawflow-node-content,body.flows-editor .drawflow .drawflow-node:has(.input-labels):not(:has(.input-labels-inline)) .node-body{padding-left:70px}body.flows-editor .drawflow .drawflow-node:has(.output-labels) .cuerpo{padding-right:70px}body.flows-editor .drawflow .drawflow-node:has(.output-labels) .drawflow-node-content,body.flows-editor .drawflow .drawflow-node:has(.output-labels) .node-body{padding-right:70px}body.flows-editor .drawflow .drawflow-node:has(.input-labels):has(.output-labels):not(:has(.input-labels-inline)) .cuerpo{padding-left:70px;padding-right:70px}body.flows-editor .drawflow .drawflow-node:has(.input-labels):has(.output-labels):not(:has(.input-labels-inline)) .drawflow-node-content,body.flows-editor .drawflow .drawflow-node:has(.input-labels):has(.output-labels):not(:has(.input-labels-inline)) .node-body{padding-left:70px;padding-right:70px}body.flows-editor .drawflow .drawflow-node .drawflow-node-input,body.flows-editor .drawflow .drawflow-node .drawflow-node-output,body.flows-editor .drawflow .drawflow-node .drawflow-node-inputs .input,body.flows-editor .drawflow .drawflow-node .drawflow-node-outputs .output{width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;background:#fff!important;border:2px solid #1976d2!important;border-radius:50%!important;box-shadow:0 1px 3px #0003!important;cursor:pointer!important;transition:all .2s!important}body.flows-editor .drawflow .drawflow-node .drawflow-node-input:hover,body.flows-editor .drawflow .drawflow-node .drawflow-node-output:hover,body.flows-editor .drawflow .drawflow-node .drawflow-node-inputs .input:hover,body.flows-editor .drawflow .drawflow-node .drawflow-node-outputs .output:hover{background:#1976d2!important;transform:scale(1.2)!important}body.flows-editor .drawflow .drawflow-node .input-labels{position:absolute;left:8px;top:10px;height:80%;display:flex;flex-direction:column;gap:8px;justify-content:center;align-items:flex-start;pointer-events:none;z-index:10;max-width:60px}body.flows-editor .drawflow .drawflow-node .input-labels-inline{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin:2px 0}body.flows-editor .drawflow .drawflow-node .input-label-inline{display:flex;align-items:center;gap:3px;background:#1976d214;padding:1px 4px;border-radius:3px;border:1px solid rgba(25,118,210,.25);min-width:0}body.flows-editor .drawflow .drawflow-node .input-label-inline .input-label-text{font-size:9px;font-weight:700;color:#1976d2;white-space:nowrap}body.flows-editor .drawflow .drawflow-node .input-label-inline .drawflow-node-input{position:static!important;margin:0!important}body.flows-editor .drawflow .drawflow-node .input-label{background:#1976d2e6;color:#fff;padding:2px 6px;margin-top:0;border-radius:3px;font-size:10px;font-weight:700;white-space:nowrap;text-align:center;min-width:30px;opacity:.8;transition:opacity .2s;margin-left:5px}body.flows-editor .drawflow .drawflow-node .input-label:hover{opacity:1}body.flows-editor .drawflow .drawflow-node .output-labels{position:absolute;right:8px;top:10px;height:80%;display:flex;flex-direction:column;gap:8px;justify-content:center;align-items:flex-end;pointer-events:none;z-index:10;max-width:60px}body.flows-editor .drawflow .drawflow-node .output-label{background:#000c;color:#fff;padding:2px 6px;margin-top:0;border-radius:3px;font-size:10px;font-weight:700;white-space:nowrap;text-align:center;min-width:30px;opacity:.8;transition:opacity .2s;margin-right:5px}body.flows-editor .drawflow .drawflow-node .output-label:hover{opacity:1}@keyframes slideIn{0%{transform:translate(-50%) translateY(20px);opacity:0}to{transform:translate(-50%) translateY(0);opacity:1}}.notification{position:fixed;bottom:15px;left:50%;transform:translate(-50%);background:#4caf50;color:#fff;padding:8px 16px;border-radius:4px;z-index:1000;font-weight:500;box-shadow:0 2px 8px #0003;animation:slideIn .3s ease}.notification.error{background:#e53935}.terminal-panel{position:fixed;bottom:0;left:0;right:0;height:200px;background:#1e1e1e;color:#fff;border-top:1px solid #333;z-index:1000;transition:transform .3s ease}.terminal-panel.hidden{transform:translateY(100%)}.terminal-panel.minimized{height:40px}.terminal-header{display:flex;justify-content:space-between;align-items:center;padding:8px 15px;background:#2d2d2d;border-bottom:1px solid #444}.terminal-title{font-size:12px;font-weight:600;color:#fff}.terminal-toggle{background:none;border:none;color:#fff;cursor:pointer;font-size:16px;padding:2px 8px;border-radius:3px}.terminal-toggle:hover{background:#444}.terminal-output{height:calc(100% - 80px);overflow-y:auto;padding:10px 15px;font-family:Courier New,monospace;font-size:12px;line-height:1.4}.terminal-line{margin-bottom:2px;word-wrap:break-word}.terminal-input-container{display:flex;padding:8px 15px;background:#2d2d2d;border-top:1px solid #444}.terminal-prompt{color:#4caf50;margin-right:8px;font-family:Courier New,monospace}.terminal-input{flex:1;background:transparent;border:none;color:#fff;font-family:Courier New,monospace;font-size:12px;outline:none}.terminal-input::placeholder{color:#666}.head-node-body{min-width:300px;max-width:500px}.head-controls{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;gap:8px;flex-wrap:wrap}.head-controls label{font-size:12px;display:flex;align-items:center;gap:4px}.head-controls input[type=number]{padding:6px 10px;border:1px solid #4a5568;border-radius:6px;font-size:12px;background:#2d3748;color:#e2e8f0;min-height:28px;transition:border-color .2s ease,box-shadow .2s ease}.head-controls input[type=number]:focus{outline:none;border-color:#63b3ed;box-shadow:0 0 0 2px #63b3ed40}.head-view-btn{background:#2196f3;color:#fff;border:none;border-radius:3px;padding:4px 8px;font-size:11px;cursor:pointer;transition:background .2s}.head-view-btn:hover{background:#1976d2}.head-preview{max-height:300px;overflow-y:auto;border:1px solid #ddd;border-radius:4px;background:#fff;padding:4px;margin-top:4px}.head-placeholder{padding:20px;text-align:center;color:#999;font-size:12px;font-style:italic}.head-error{padding:10px;text-align:center;color:#d32f2f;font-size:12px;background:#ffebee;border-radius:3px}.head-empty{padding:20px;text-align:center;color:#999;font-size:12px}.head-table{width:100%;border-collapse:collapse;font-size:11px;margin:0}.head-table th{background:#f5f5f5;padding:4px 6px;text-align:left;font-weight:600;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.head-table td{padding:3px 6px;border-bottom:1px solid #f0f0f0;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.head-table tbody tr:hover{background:#f5f5f5}.head-info{margin-top:4px;padding:4px;font-size:10px;color:#666;text-align:center;border-top:1px solid #eee}body.editor #main-content{position:absolute;top:40px;left:250px;right:250px;bottom:0;height:calc(100vh - 40px);display:flex;flex-direction:column;overflow:hidden;transition:left .3s ease,right .3s ease}body.editor.sidebar-left-hidden #main-content{left:0}body.editor.sidebar-right-hidden #main-content{right:0}body.editor.sidebar-left-hidden.sidebar-right-hidden #main-content{left:0;right:0}body.editor #drawflow{flex:1;background-color:#1a202c;background-image:linear-gradient(0deg,transparent 24%,rgba(255,255,255,.03) 25%,rgba(255,255,255,.03) 26%,transparent 27%),linear-gradient(90deg,transparent 24%,rgba(255,255,255,.03) 25%,rgba(255,255,255,.03) 26%,transparent 27%);background-size:40px 40px;position:relative;z-index:5}body.editor .drawflow .drawflow-node{font-family:Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px}body.editor .drawflow .drawflow-node strong{font-family:Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-weight:600}body.editor .drawflow .drawflow-node input,body.editor .drawflow .drawflow-node select,body.editor .drawflow .drawflow-node textarea{font-family:Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:13px}body.editor .drawflow .drawflow-node .cuerpo,body.editor .drawflow .drawflow-node .drawflow-node-content{font-family:Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}body.editor .sidebar{position:fixed;top:40px;width:250px;background:#2d3748;padding:10px 12px;overflow-y:auto;overflow-x:hidden;z-index:1000;height:calc(100vh - 40px);transition:transform .3s ease,opacity .3s ease;box-sizing:border-box;color:#e2e8f0}body.editor #sidebar-left{left:0;border-right:1px solid #4a5568;box-shadow:2px 0 8px #0000004d}body.editor #sidebar-right{right:0;border-left:1px solid #4a5568;box-shadow:-2px 0 8px #0000004d}body.editor .sidebar.hidden{transform:translate(-100%);opacity:0;pointer-events:none;visibility:hidden;box-shadow:none!important;background:transparent!important}body.editor #sidebar-left.hidden{transform:translate(-100%);opacity:0;pointer-events:none;visibility:hidden;box-shadow:none!important;background:transparent!important;border-right:none!important}body.editor #sidebar-right.hidden{transform:translate(100%);opacity:0;pointer-events:none;visibility:hidden;box-shadow:none!important;background:transparent!important;border-left:none!important}body.editor .sidebar-header{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;padding:8px 10px;border:1px solid #4a5568;border-radius:8px;background:#1f2937;flex-shrink:0}body.editor .sidebar-header strong{color:#f1f5f9;font-size:12px;font-weight:600;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:.02em}body.editor .sidebar-close-btn{background:transparent;border:none;color:#cbd5e1;cursor:pointer;padding:4px;border-radius:6px;transition:background .2s,color .2s;font-size:12px;line-height:1;width:24px;height:24px;min-width:24px;display:flex;align-items:center;justify-content:center;flex-shrink:0}body.editor .sidebar-close-btn:hover{background:#fc818126;color:#fc8181}#flow-node-panel,#layer-panel{margin-top:0}body.editor #layer-panel button{display:block;width:100%;padding:8px 12px;border:none;background:#1a202c;color:#e2e8f0;text-align:left;cursor:pointer;font-size:12px;border-bottom:1px solid #4a5568;transition:background-color .2s;margin-bottom:0;border-radius:0}body.editor #layer-panel button:hover{background:#4a5568;border-color:transparent;transform:none}body.editor #layer-panel button:last-child{border-bottom:none}.flow-node-category{margin-bottom:15px;border:1px solid #4a5568;border-radius:4px;background:#1a202c;overflow:hidden}.flow-node-category h4{margin:0;padding:8px 12px;background:#2d3748;color:#e2e8f0;font-size:12px;font-weight:600;border-bottom:1px solid #4a5568}.flow-node-category button{display:block;width:100%;padding:8px 12px;border:none;background:#1a202c;color:#e2e8f0;text-align:left;cursor:pointer;font-size:12px;border-bottom:1px solid #4a5568;transition:background-color .2s}.flow-node-category button:hover{background:#4a5568}.flow-node-category button:last-child{border-bottom:none}.node-category{margin-bottom:15px;border:1px solid #4a5568;border-radius:4px;background:#1a202c;overflow:hidden}.node-category h4{margin:0;padding:8px 12px;background:#2d3748;color:#e2e8f0;font-size:12px;font-weight:600;border-bottom:1px solid #4a5568}.node-category button{display:block;width:100%;padding:8px 12px;border:none;background:#1a202c;color:#e2e8f0;text-align:left;cursor:pointer;font-size:12px;border-bottom:1px solid #4a5568;transition:background-color .2s}.node-category button:hover{background:#4a5568}.node-category button:last-child{border-bottom:none}body.editor .layer-filter-container{margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid #4a5568}body.editor .layer-filter-input{width:100%;padding:8px 10px;border:1px solid #4a5568;border-radius:6px;font-size:12px;box-sizing:border-box;background:#2d3748;color:#e2e8f0;min-height:36px;transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease}body.editor .layer-filter-input::placeholder{color:#718096}body.editor .layer-filter-input:hover{border-color:#718096;background:#374151}body.editor .layer-filter-input:focus{outline:none;border-color:#63b3ed;box-shadow:0 0 0 2px #63b3ed40;background:#2d3748}body.editor .node-section{margin-bottom:8px!important;border:1px solid #4a5568!important;border-radius:4px;background:#1a202c;overflow:hidden;box-shadow:none!important}body.editor .node-section:hover{box-shadow:none!important}body.editor .section-header{display:flex;align-items:center;margin:0;padding:6px 10px!important;background:#2d3748!important;color:#e2e8f0!important;font-size:11px!important;font-weight:600;border:none!important;cursor:pointer;-webkit-user-select:none;user-select:none;gap:6px;transition:background .15s!important;letter-spacing:.02em}body.editor .section-header:hover{background:#4a5568!important}body.editor .section-icon{display:none!important;width:0;height:0;overflow:hidden;margin:0;padding:0}body.editor .section-title{flex:1;min-width:0;font-weight:600;font-size:11px!important;color:#e2e8f0!important;border:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}body.editor .section-count{font-size:10px;color:#a0aec0;background:#4a5568;padding:2px 5px;border-radius:8px;flex-shrink:0}body.editor .section-toggle{font-size:9px;color:#a0aec0;transition:transform .2s;flex-shrink:0}.node-section.collapsed .section-toggle{transform:rotate(-90deg)}body.editor .section-content{padding:0!important;display:block;transition:max-height .3s ease-out}.section-content:empty{display:none}body.editor .layer-button{display:block;width:100%;padding:6px 10px;border:none;background:#1a202c;color:#e2e8f0;text-align:left;cursor:pointer;font-size:11px;border-bottom:1px solid #4a5568;transition:background .15s;margin-bottom:0!important;border-radius:0!important}body.editor .layer-button:hover{background:#4a5568;border-color:transparent!important;transform:none!important}body.editor .layer-button:last-child{border-bottom:none}.empty-section{padding:10px;text-align:center;color:#718096;font-size:12px;font-style:italic}.sidebar-toggle{padding:8px 14px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:12px;font-weight:500;transition:all .3s ease;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;box-shadow:0 2px 4px #667eea4d;position:relative;overflow:hidden}.flow-info-dropdown .sidebar-toggle{padding:8px 14px;background:#1a202c;color:#e2e8f0;border:1px solid #4a5568;border-radius:3px;cursor:pointer;font-size:12px;font-weight:500;transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;box-shadow:none;position:relative;overflow:visible;min-width:36px}.flow-info-dropdown .sidebar-toggle:hover{background:#4a5568;border-color:#718096;transform:none;box-shadow:none}.sidebar-toggle:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:#ffffff4d;transform:translate(-50%,-50%);transition:width .6s,height .6s}.sidebar-toggle:hover{background:linear-gradient(135deg,#764ba2,#667eea);box-shadow:0 4px 8px #667eea66;transform:translateY(-1px)}.sidebar-toggle:hover:before{width:300px;height:300px}.sidebar-toggle:active{transform:translateY(0);box-shadow:0 2px 4px #667eea4d}.sidebar-toggle i,.flow-info-dropdown .sidebar-toggle i{font-size:11px;position:relative;z-index:1}.sidebar-toggle span{position:relative;z-index:1}.flow-info-dropdown .sidebar-toggle:before{content:none}.flow-info-dropdown .sidebar-toggle:hover,.flow-info-dropdown .sidebar-toggle:active{background:#4a5568;border-color:#718096;box-shadow:none;transform:none}.sidebar-show-btn{position:fixed;top:50%;left:0;transform:translateY(-50%);z-index:1001;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:0 12px 12px 0;padding:24px 10px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:4px 0 12px #667eea66;min-width:48px;display:flex;align-items:center;justify-content:center}.sidebar-show-btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s}.sidebar-show-btn:hover{background:linear-gradient(135deg,#764ba2,#667eea);box-shadow:6px 0 16px #667eea99;transform:translateY(-50%) translate(4px);padding-left:14px}.sidebar-show-btn:hover:before{left:100%}.sidebar-show-btn i{font-size:18px;position:relative;z-index:1;transition:transform .3s}.sidebar-show-btn:hover i{transform:scale(1.2)}.sidebar-show-btn-right{left:auto;right:0;border-radius:12px 0 0 12px;box-shadow:-4px 0 12px #667eea66}.sidebar-show-btn-right:hover{padding-left:10px;padding-right:14px;transform:translateY(-50%) translate(-4px)}body.editor.flows-editor #main-content{left:250px;right:250px}body.editor.flows-editor.sidebar-left-hidden #main-content{left:0}body.editor.flows-editor.sidebar-right-hidden #main-content{right:0}body.editor.flows-editor.sidebar-left-hidden.sidebar-right-hidden #main-content{left:0;right:0}body.editor.flows-editor #drawflow{border-right:none}.menu-buttons .btn-menu{padding:6px 12px;background:#1a202c;color:#e2e8f0;border:1px solid #4a5568;border-radius:3px;cursor:pointer;font-size:12px;transition:all .2s}.menu-buttons .btn-menu:hover{background:#4a5568;border-color:#718096}.menu-buttons .btn-menu:active{background:#4a5568}.menu-buttons .sidebar-toggle.btn-menu-icon{padding:0;width:32px;height:32px;min-width:32px;border-radius:3px;border:1px solid #4a5568;background:#1a202c;color:#e2e8f0;box-shadow:none;transform:none;overflow:visible;gap:0}.menu-buttons .sidebar-toggle.btn-menu-icon:before{content:none}.menu-buttons .sidebar-toggle.btn-menu-icon:hover{background:#4a5568;border-color:#718096;box-shadow:none;transform:none}.menu-buttons .sidebar-toggle.btn-menu-icon:active{background:#4a5568;transform:none;box-shadow:none}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:2000;display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:#fff;border-radius:8px;box-shadow:0 10px 40px #0003;max-width:90vw;max-height:90vh;display:flex;flex-direction:column;animation:slideUp .3s ease;overflow:hidden}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-content.sources-modal{width:70vw;max-width:1100px;height:94vh;background:#1a1a2e;color:#e2e8f0}.sources-modal .modal-header{background:#16213e;border-bottom:1px solid #2a2a4a;padding:14px 24px}.sources-modal .modal-header h3{color:#e2e8f0}.sources-modal .modal-close{color:#a0aec0}.sources-modal .modal-close:hover{color:#e2e8f0;background:#2a2a4a}.modal-content.dataviz-modal{width:96vw;max-width:1800px;height:94vh;background:#1a1a2e;color:#e2e8f0}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid #e1e5ea;background:#f8f9fa}.modal-header h3{margin:0;font-size:18px;font-weight:600;color:#2c3e50;display:flex;align-items:center;gap:10px}.modal-header h3 i{color:#667eea}.modal-close{background:none;border:none;font-size:28px;color:#6c757d;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}.modal-close:hover{background:#e9ecef;color:#495057}.modal-body{flex:1;overflow:auto;padding:24px}.modal-body.sources-modal-body,.modal-body.dataviz-modal-body{padding:0;overflow:hidden;background:#1a1a2e}#sources-integrated-container,#dataviz-integrated-container{width:100%;height:100%;overflow:auto}.sources-modal-body .sources-container{height:100%;display:flex;flex-direction:column}.sources-modal-body .main-content{flex:1;overflow:auto}.dataviz-modal-body .dataviz-integrated{height:100%;display:flex;flex-direction:column}.dataviz-modal-body .welcome-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:#6c757d}.dataviz-modal-body .table-container{flex:1;overflow:auto;padding:20px}:root{--primary: #3498db;--primary-dark: #2980b9;--success: #27ae60;--success-dark: #229954;--warning: #f39c12;--warning-dark: #e67e22;--danger: #e74c3c;--danger-dark: #c0392b;--info: #17a2b8;--info-dark: #138496;--secondary: #95a5a6;--secondary-dark: #7f8c8d;--text-primary: #2c3e50;--text-secondary: #6c757d;--text-muted: #7f8c8d;--bg-primary: #ffffff;--bg-secondary: #f8f9fa;--bg-tertiary: #f5f7fa;--border-color: #e1e5e9;--border-radius: 12px;--border-radius-sm: 8px;--shadow-sm: 0 2px 4px rgba(0, 0, 0, .08);--shadow-md: 0 4px 12px rgba(0, 0, 0, .1);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .12);--spacing-xs: 6px;--spacing-sm: 10px;--spacing-md: 12px;--spacing-lg: 16px;--spacing-xl: 20px;--transition: all .2s cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box}body{margin:0;padding:0}.sources-container{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#f5f7fa;min-height:100vh;padding:0;color:var(--text-primary);line-height:1.6;display:flex;flex-direction:column}.page-header{background:#fff;border-bottom:1px solid #e1e5e9;box-shadow:0 2px 4px #0000001a;padding:15px 30px;flex-shrink:0}.header-content{display:flex;justify-content:space-between;align-items:center}.header-title{display:flex;align-items:center;gap:var(--spacing-lg)}.header-icon{width:56px;height:56px;background:linear-gradient(135deg,var(--primary),var(--primary-dark));border-radius:var(--border-radius-sm);display:flex;align-items:center;justify-content:center;color:#fff;font-size:24px;box-shadow:var(--shadow-md)}.page-header h1{margin:0;font-size:20px;font-weight:600;color:#2c3e50;letter-spacing:-.5px}.header-subtitle{margin:var(--spacing-xs) 0 0 0;color:var(--text-secondary);font-size:15px;font-weight:400}.main-content{display:grid;grid-template-columns:320px 1fr;gap:0;flex:1;overflow:hidden}.sources-sidebar{background:#fff;border-right:1px solid #e1e5e9;height:100%;overflow-y:auto;display:flex;flex-direction:column}.sidebar-card{background:transparent;border-radius:0;box-shadow:none;overflow:hidden;height:100%;display:flex;flex-direction:column}.sidebar-header{padding:15px 20px;background:#fff;border-bottom:1px solid #e1e5e9;display:flex;justify-content:space-between;align-items:center;flex-shrink:0}.sidebar-title{display:flex;align-items:center;gap:var(--spacing-sm)}.sidebar-title i{color:var(--primary);font-size:18px}.sidebar-title h3{margin:0;font-size:18px;font-weight:600;color:var(--text-primary)}.btn-icon{width:36px;height:36px;border:none;background:var(--bg-secondary);border-radius:var(--border-radius-sm);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-secondary);transition:var(--transition)}.btn-icon:hover{background:var(--primary);color:#fff;transform:rotate(180deg)}.sidebar-body{padding:15px 20px;flex:1;overflow-y:auto}.empty-state{text-align:center;padding:var(--spacing-xl) var(--spacing-md);color:var(--text-muted)}.empty-state i{font-size:48px;color:var(--border-color);margin-bottom:var(--spacing-md);display:block}.empty-state p{margin:0 0 var(--spacing-xs) 0;font-size:15px;font-weight:500;color:var(--text-secondary)}.empty-state small{font-size:13px;color:var(--text-muted)}.editor-panel{background:#fff;border-radius:0;box-shadow:none;overflow-y:auto;height:100%;display:flex;flex-direction:column}.editor-header{padding:15px 30px;background:#fff;border-bottom:1px solid #e1e5e9;flex-shrink:0}.editor-header h2{margin:0;font-size:22px;font-weight:600;color:var(--text-primary);display:flex;align-items:center;gap:var(--spacing-sm)}.editor-header i{color:var(--primary)}.editor-body{padding:20px 30px;flex:1;overflow-y:auto}.tab-navigation{display:flex;gap:var(--spacing-xs);margin-bottom:var(--spacing-lg);border-bottom:2px solid var(--border-color)}.tab-button{padding:var(--spacing-md) var(--spacing-lg);border:none;background:transparent;border-bottom:3px solid transparent;cursor:pointer;font-size:15px;font-weight:500;color:var(--text-secondary);transition:var(--transition);display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:-2px}.tab-button:hover{color:var(--primary);background:#3498db0d}.tab-button.active{color:var(--primary);border-bottom-color:var(--primary);background:#3498db0d}.tab-button i{font-size:16px}.tab-content-container{position:relative}.tab-panel{display:none;animation:fadeIn .3s ease}.tab-panel.active{display:block}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.panel-header{display:flex;align-items:flex-start;gap:15px;margin-bottom:20px;padding-bottom:15px}.panel-icon{width:40px;height:40px;background:#3498db;border-radius:6px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:18px;flex-shrink:0}.panel-header h3{margin:0 0 5px;font-size:18px;font-weight:600;color:#2c3e50}.panel-header p{margin:0;color:#6c757d;font-size:14px;line-height:1.5}.panel-header code{background:var(--bg-secondary);padding:2px 6px;border-radius:4px;font-family:Courier New,monospace;font-size:12px;color:var(--primary)}.form-section{background:transparent;border-radius:0;padding:0;margin-bottom:0;border:none}.section-icon{width:36px;height:36px;background:var(--primary);border-radius:var(--border-radius-sm);display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px}.section-title h4{margin:0;font-size:17px;font-weight:600;color:var(--text-primary)}.form{margin-top:var(--spacing-lg)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--spacing-md);margin-bottom:var(--spacing-md)}.form-field{display:flex;flex-direction:column}.form-field-large{grid-column:span 2}.form-label{display:flex;align-items:center;gap:var(--spacing-xs);margin-bottom:var(--spacing-sm);font-weight:600;font-size:14px;color:var(--text-primary)}.form-label i{color:var(--primary);font-size:14px}.input,.select,.textarea{width:100%;padding:var(--spacing-md);border:2px solid var(--border-color);border-radius:var(--border-radius-sm);font-size:14px;font-family:inherit;transition:var(--transition);background:var(--bg-primary);color:var(--text-primary)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #3498db1a}.textarea{resize:vertical;min-height:100px;font-family:Courier New,monospace;font-size:13px}.form-hint{display:block;margin-top:var(--spacing-xs);font-size:12px;color:var(--text-muted);line-height:1.4}.file-upload-wrapper{position:relative}.file-input{position:absolute;width:100%;height:100%;opacity:0;cursor:pointer;z-index:2}.file-upload-display{border:2px dashed var(--border-color);border-radius:var(--border-radius-sm);padding:var(--spacing-xl);text-align:center;background:var(--bg-primary);transition:var(--transition);cursor:pointer}.file-upload-wrapper:hover .file-upload-display,.file-input:focus+.file-upload-display{border-color:var(--primary);background:#3498db0d}.file-upload-display i{font-size:32px;color:var(--primary);margin-bottom:var(--spacing-sm);display:block}.file-upload-text{color:var(--text-secondary);font-size:14px;font-weight:500}.checkbox-wrapper{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm)}.checkbox-wrapper input[type=checkbox]{width:20px;height:20px;cursor:pointer;accent-color:var(--primary)}.checkbox-label{margin:0;font-weight:500;font-size:14px;color:var(--text-primary);cursor:pointer}.info-box{padding:var(--spacing-md);border-radius:var(--border-radius-sm);margin-top:var(--spacing-md);display:flex;align-items:flex-start;gap:var(--spacing-sm);font-size:13px;line-height:1.6}.info-box i{font-size:18px;margin-top:2px;flex-shrink:0}.info-primary{background:#e7f3ff;border-left:4px solid var(--primary);color:#0c5460}.info-primary i{color:var(--primary)}.info-success{background:#d4edda;border-left:4px solid var(--success);color:#155724}.info-success i{color:var(--success)}.info-warning{background:#fff3cd;border-left:4px solid var(--warning);color:#856404}.info-warning i{color:var(--warning)}.info-box strong{font-weight:600}.info-box code{background:#0000000d;padding:2px 6px;border-radius:4px;font-family:Courier New,monospace;font-size:11px}.info-item{margin-bottom:var(--spacing-xs)}.info-item:last-child{margin-bottom:0}.divider{display:flex;align-items:center;text-align:center;margin:var(--spacing-lg) 0;color:var(--text-muted)}.divider:before,.divider:after{content:"";flex:1;border-bottom:1px solid var(--border-color)}.divider-text{padding:0 var(--spacing-md);font-weight:600;font-size:14px;background:var(--bg-tertiary)}.btn{padding:var(--spacing-md) var(--spacing-lg);border:none;border-radius:var(--border-radius-sm);font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:var(--spacing-sm);transition:var(--transition);text-decoration:none}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn-success{background:linear-gradient(135deg,var(--success),var(--success-dark));color:#fff;box-shadow:var(--shadow-sm)}.btn-success:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn-warning{background:linear-gradient(135deg,var(--warning),var(--warning-dark));color:#fff;box-shadow:var(--shadow-sm)}.btn-warning:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn-danger{background:linear-gradient(135deg,var(--danger),var(--danger-dark));color:#fff;box-shadow:var(--shadow-sm)}.btn-danger:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn-info{background:linear-gradient(135deg,var(--info),var(--info-dark));color:#fff;box-shadow:var(--shadow-sm)}.btn-info:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn-secondary{background:var(--secondary);color:#fff;box-shadow:var(--shadow-sm)}.btn-secondary:hover:not(:disabled){background:var(--secondary-dark);transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn-sm{padding:var(--spacing-xs) var(--spacing-md);font-size:12px}.btn-large{padding:var(--spacing-md) var(--spacing-xl);font-size:16px}.form-actions{margin-top:var(--spacing-lg);padding-top:var(--spacing-md);border-top:1px solid var(--border-color)}.source-card{background:var(--bg-primary);border-radius:var(--border-radius-sm);box-shadow:var(--shadow-sm);margin-bottom:var(--spacing-md);border:1px solid var(--border-color);transition:var(--transition);overflow:hidden}.source-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:var(--primary)}.source-card-body{padding:var(--spacing-lg);display:flex;justify-content:space-between;align-items:flex-start;gap:var(--spacing-md)}.source-info{flex:1}.source-title{margin:0 0 var(--spacing-xs) 0;font-size:16px;font-weight:600;color:var(--text-primary);display:flex;align-items:center;gap:var(--spacing-sm)}.source-icon{font-size:20px;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:linear-gradient(135deg,#3498db1a,#3498db0d);border-radius:var(--border-radius-sm);flex-shrink:0}.source-details,.source-extra{margin:var(--spacing-xs) 0;font-size:13px;color:var(--text-secondary);line-height:1.5}.source-info p{margin:var(--spacing-xs) 0;font-size:13px;color:var(--text-secondary);line-height:1.4}.badge{display:inline-block;padding:4px 10px;border-radius:12px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-top:var(--spacing-xs)}.badge-success{background:#27ae601a;color:var(--success)}.badge-secondary{background:#95a5a61a;color:var(--secondary-dark)}.source-actions{display:flex;flex-direction:column;gap:var(--spacing-xs);flex-shrink:0}.section-header{margin:var(--spacing-lg) 0 var(--spacing-md) 0;padding-bottom:var(--spacing-xs);border-bottom:1px solid var(--border-color);font-size:13px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:1px;display:flex;align-items:center;gap:var(--spacing-sm)}.section-header:first-child{margin-top:0}.section-header i{color:var(--primary);font-size:14px}.action-footer{background:#fff;border-top:1px solid #e1e5e9;border-radius:0;box-shadow:none;padding:15px 30px;margin-top:0}.action-buttons{display:flex;gap:var(--spacing-md);flex-wrap:wrap;justify-content:center}.modal{display:none;position:fixed;z-index:1000;left:0;top:0;width:100%;height:100%;background-color:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fadeIn .3s ease}.modal-content{background-color:var(--bg-primary);margin:10% auto;padding:0;border-radius:var(--border-radius);width:90%;max-width:500px;box-shadow:var(--shadow-lg);animation:slideIn .3s ease;overflow:hidden}.modal-content.large{max-width:800px}@keyframes slideIn{0%{transform:translateY(-50px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{padding:var(--spacing-xl);border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center;background:linear-gradient(135deg,var(--bg-secondary),var(--bg-primary))}.modal-header h5{margin:0;font-size:20px;font-weight:600;color:var(--text-primary)}.modal-body{padding:var(--spacing-xl)}.modal-footer{padding:var(--spacing-xl);border-top:1px solid var(--border-color);display:flex;justify-content:flex-end;gap:var(--spacing-md);background:var(--bg-secondary)}.close-btn{background:none;border:none;font-size:24px;cursor:pointer;color:var(--text-muted);padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:var(--transition)}.close-btn:hover{color:var(--text-primary);background:var(--bg-secondary)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--spacing-lg)}.stat-card{background:var(--bg-secondary);padding:var(--spacing-xl);border-radius:var(--border-radius-sm);text-align:center;border:1px solid var(--border-color);transition:var(--transition)}.stat-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}.stat-card h4{margin:0 0 var(--spacing-sm) 0;font-size:32px;font-weight:700}.stat-card p{margin:0;color:var(--text-secondary);font-size:13px;font-weight:500}.stat-total{color:var(--primary)}.stat-api{color:var(--danger)}.stat-simulation{color:var(--warning)}.stat-file{color:var(--success)}.stat-enabled{color:#9b59b6}.stat-disabled{color:var(--secondary)}.notification{position:fixed;top:var(--spacing-lg);right:var(--spacing-lg);padding:var(--spacing-md) var(--spacing-lg);border-radius:var(--border-radius-sm);color:#fff;font-weight:500;z-index:2000;box-shadow:var(--shadow-lg);animation:slideInNotification .3s ease;display:flex;align-items:center;gap:var(--spacing-sm);min-width:300px}.notification-success{background:linear-gradient(135deg,var(--success),var(--success-dark))}.notification-error{background:linear-gradient(135deg,var(--danger),var(--danger-dark))}.notification-warning{background:linear-gradient(135deg,var(--warning),var(--warning-dark))}.notification-info{background:linear-gradient(135deg,var(--info),var(--info-dark))}@keyframes slideInNotification{0%{transform:translate(120%);opacity:0}to{transform:translate(0);opacity:1}}@media (max-width: 1024px){.main-content{grid-template-columns:1fr}.sources-sidebar{position:static}}@media (max-width: 768px){.sources-container{padding:var(--spacing-md)}.page-header{padding:var(--spacing-lg)}.page-header h1{font-size:24px}.form-grid{grid-template-columns:1fr}.form-field-large{grid-column:span 1}.action-buttons{flex-direction:column}.action-buttons .btn{width:100%;justify-content:center}.source-card-body{flex-direction:column}.source-actions{flex-direction:row;width:100%;justify-content:flex-end}.modal-content{width:95%;margin:5% auto}.stats-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 480px){.stats-grid{grid-template-columns:1fr}.tab-navigation{flex-direction:column;border-bottom:none}.tab-button{border-bottom:none;border-left:3px solid transparent;margin-bottom:0}.tab-button.active{border-left-color:var(--primary);border-bottom:none}}.btn:focus,.input:focus,.select:focus,.textarea:focus,.tab-button:focus{outline:2px solid var(--primary);outline-offset:2px}@media (prefers-contrast: high){.card,.sidebar-card,.editor-panel{border:2px solid var(--text-primary)}.btn{border:2px solid currentColor}.input,.select,.textarea{border:2px solid var(--text-primary)}}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;margin:0;padding:0;overflow:hidden}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:#f5f7fa;color:#2c3e50;line-height:1.6}#app{height:100vh;display:flex;flex-direction:column;overflow:hidden}.app-header{background:#fff;border-bottom:1px solid #e1e5e9;box-shadow:0 2px 4px #0000001a;padding:15px 30px;flex-shrink:0}.header-content{display:flex;justify-content:space-between;align-items:center;max-width:100%}.app-header h1{font-size:20px;font-weight:600;color:#2c3e50;display:flex;align-items:center;gap:10px}.app-header h1 i{color:#3498db}.header-actions{display:flex;gap:10px}.btn{padding:10px 20px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:8px;transition:all .2s}.btn-primary{background:#3498db;color:#fff}.btn-primary:hover{background:#2980b9}.btn-secondary{background:#95a5a6;color:#fff}.btn-secondary:hover{background:#7f8c8d}.welcome-screen{flex:1;display:flex;align-items:center;justify-content:center;padding:40px;overflow-y:auto}.welcome-content{text-align:center;max-width:600px}.welcome-icon{font-size:64px;color:#3498db;margin-bottom:20px}.welcome-content h2{font-size:28px;margin-bottom:10px;color:#2c3e50}.welcome-content p{color:#7f8c8d;margin-bottom:30px;font-size:16px}.upload-area{border:3px dashed #3498db;border-radius:12px;padding:60px 40px;margin:30px 0;cursor:pointer;background:#f8f9fa;transition:all .3s}.upload-area:hover,.upload-area.drag-over{border-color:#2980b9;background:#e3f2fd;transform:translateY(-2px)}.upload-area i{font-size:48px;color:#3498db;margin-bottom:15px}.upload-area p{margin:5px 0;color:#2c3e50}.main-content{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:20px;max-width:100%;overflow:hidden;min-height:0}.data-section,.chart-section{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;display:flex;flex-direction:column;overflow:hidden;min-height:0;max-height:100%;width:100%}.section-header{padding:15px 20px;border-bottom:1px solid #e1e5e9;display:flex;justify-content:space-between;align-items:center;flex-shrink:0}.section-header h2{font-size:18px;font-weight:600;display:flex;align-items:center;gap:10px}.dataset-stats{display:flex;gap:15px;font-size:13px;color:#7f8c8d}.dataset-stats span{display:flex;align-items:center;gap:5px}.table-container{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0}.table-controls{padding:15px 20px;border-bottom:1px solid #e1e5e9;display:flex;justify-content:space-between;align-items:center;gap:15px;flex-shrink:0}.search-box{flex:1;display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid #ddd;border-radius:6px;background:#f8f9fa}.search-box i{color:#7f8c8d}.search-input{flex:1;border:none;background:transparent;font-size:14px;outline:none}.page-size-select{padding:8px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;cursor:pointer}.table-wrapper{flex:1;overflow-y:auto;overflow-x:auto;min-height:0}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table thead{background:#f8f9fa;position:sticky;top:0;z-index:10}.data-table th{padding:12px;text-align:left;font-weight:600;color:#2c3e50;border-bottom:2px solid #ddd;border-right:1px solid #e1e5e9}.data-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.data-table th.sortable:hover{background:#e9ecef}.th-content{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px}.sort-indicator{font-size:12px;color:#3498db}.column-filter{width:100%;padding:5px 8px;border:1px solid #ddd;border-radius:4px;font-size:11px;margin-top:5px}.column-filter:focus{outline:none;border-color:#3498db}.data-table tbody tr:hover{background:#f8f9fa}.data-table td{padding:10px 12px;border-bottom:1px solid #e1e5e9;border-right:1px solid #f0f0f0}.data-table td.no-data{text-align:center;color:#7f8c8d;padding:40px;font-style:italic}.pagination{padding:15px 20px;border-top:1px solid #e1e5e9;display:flex;justify-content:space-between;align-items:center;gap:15px;flex-shrink:0}.page-btn{padding:8px 12px;border:1px solid #ddd;border-radius:6px;background:#fff;cursor:pointer;font-size:14px;transition:all .2s}.page-btn:hover:not(:disabled){background:#3498db;color:#fff;border-color:#3498db}.page-btn:disabled{opacity:.5;cursor:not-allowed}.page-info{color:#7f8c8d;font-size:13px}.chart-controls{padding:20px;border-bottom:1px solid #e1e5e9;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:15px;flex-shrink:0}.control-group{display:flex;flex-direction:column;gap:8px}.control-group label{font-weight:600;font-size:13px;color:#2c3e50}.control-group select{padding:8px 10px;border:1px solid #ddd;border-radius:6px;font-size:14px;cursor:pointer}.control-group select:focus{outline:none;border-color:#3498db}.radio-group{display:flex;flex-direction:column;gap:8px}.radio-group label{font-weight:400;cursor:pointer;display:flex;align-items:center;gap:5px;font-size:13px}.chart-container{min-height:0;width:100%;max-width:100%}.chart-container #chart{width:100%!important;max-width:100%;height:100%;min-width:0}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:#fff;border-radius:8px;width:90%;max-width:800px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 4px 20px #0000004d}.modal-header{padding:20px;border-bottom:1px solid #e1e5e9;display:flex;justify-content:space-between;align-items:center}.modal-header h3{font-size:18px;font-weight:600;display:flex;align-items:center;gap:10px}.modal-close{background:none;border:none;font-size:24px;cursor:pointer;color:#7f8c8d;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:4px}.modal-close:hover{background:#f0f0f0;color:#2c3e50}.modal-body{flex:1;overflow:auto;padding:20px}.dataset-search{margin-bottom:20px;display:flex;align-items:center;gap:10px;padding:10px;border:1px solid #ddd;border-radius:6px;background:#f8f9fa}.dataset-search i{color:#7f8c8d}.dataset-search input{flex:1;border:none;background:transparent;font-size:14px;outline:none}.datasets-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:15px}.dataset-card{border:2px solid #e1e5e9;border-radius:8px;padding:20px;cursor:pointer;transition:all .2s;text-align:center}.dataset-card:hover{border-color:#3498db;transform:translateY(-2px);box-shadow:0 4px 12px #3498db33}.dataset-card i{font-size:32px;color:#27ae60;margin-bottom:10px}.dataset-card h4{font-size:14px;margin-bottom:10px;color:#2c3e50;word-break:break-word}.dataset-meta{display:flex;flex-direction:column;gap:5px;font-size:12px;color:#7f8c8d}.dataset-meta span{display:flex;align-items:center;justify-content:center;gap:5px}.no-datasets{grid-column:1 / -1;text-align:center;padding:40px;color:#7f8c8d}.loading{text-align:center;padding:40px;color:#7f8c8d}.loading i{font-size:32px;margin-bottom:10px}@media (max-width: 1200px){.main-content{grid-template-columns:1fr}}@media (max-width: 768px){.header-content{flex-direction:column;gap:15px;align-items:stretch}.chart-controls,.datasets-grid{grid-template-columns:1fr}}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slideOut{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}.dataviz-modal .modal-header{background:#16213e;border-bottom:1px solid #2a2a4a}.dataviz-modal .modal-header h3{color:#e2e8f0}.dataviz-modal .modal-close{color:#a0aec0}.dataviz-modal .modal-close:hover{background:#2a2a4a;color:#e2e8f0}.dataviz-modal .welcome-screen{background:#1a1a2e}.dataviz-modal .welcome-content h2{color:#e2e8f0}.dataviz-modal .welcome-content p{color:#718096}.dataviz-modal .upload-area{background:#0d1117;border-color:#2a2a4a}.dataviz-modal .upload-area:hover,.dataviz-modal .upload-area.drag-over{border-color:#3498db;background:#3498db14}.dataviz-modal .upload-area p{color:#a0aec0}.dataviz-modal .main-content{background:#1a1a2e}.dataviz-modal .data-section,.dataviz-modal .chart-section{background:#16213e;box-shadow:0 2px 8px #0000004d}.dataviz-modal .section-header{border-bottom-color:#2a2a4a}.dataviz-modal .section-header h2{color:#e2e8f0}.dataviz-modal .dataset-stats{color:#718096}.dataviz-modal .table-controls{border-bottom-color:#2a2a4a}.dataviz-modal .search-box{background:#0d1117;border-color:#2a2a4a}.dataviz-modal .search-box i{color:#4a5568}.dataviz-modal .search-input{color:#e2e8f0}.dataviz-modal .search-input::placeholder{color:#4a5568}.dataviz-modal .page-size-select{background:#0d1117;border-color:#2a2a4a;color:#e2e8f0}.dataviz-modal .data-table thead{background:#0d1117}.dataviz-modal .data-table th{color:#a0aec0;border-bottom-color:#2a2a4a;border-right-color:#2a2a4a}.dataviz-modal .data-table th.sortable:hover{background:#1a2332}.dataviz-modal .column-filter{background:#0d1117;border-color:#2a2a4a;color:#e2e8f0}.dataviz-modal .data-table tbody tr:hover{background:#3498db14}.dataviz-modal .data-table td{color:#cbd5e0;border-bottom-color:#1a2332;border-right-color:#1a2332}.dataviz-modal .data-table td.no-data{color:#4a5568}.dataviz-modal .pagination{border-top-color:#2a2a4a}.dataviz-modal .page-btn{background:#16213e;border-color:#2a2a4a;color:#a0aec0}.dataviz-modal .page-btn:hover:not(:disabled){background:#3498db;color:#fff;border-color:#3498db}.dataviz-modal .page-info{color:#718096}.dataviz-modal .chart-controls{border-bottom-color:#2a2a4a}.dataviz-modal .control-group label{color:#a0aec0}.dataviz-modal .control-group select{background:#0d1117;border-color:#2a2a4a;color:#e2e8f0}.dataviz-modal .radio-group label{color:#a0aec0}.dataviz-modal .modal-body{background:#1a1a2e}.dataviz-modal .dataset-search{background:#0d1117;border-color:#2a2a4a}.dataviz-modal .dataset-search i{color:#4a5568}.dataviz-modal .dataset-search input{color:#e2e8f0}.dataviz-modal .dataset-search input::placeholder{color:#4a5568}.dataviz-modal .dataset-card{background:#16213e;border-color:#2a2a4a}.dataviz-modal .dataset-card:hover{border-color:#3498db;box-shadow:0 4px 12px #3498db4d}.dataviz-modal .dataset-card h4{color:#e2e8f0}.dataviz-modal .dataset-meta{color:#718096}.dataviz-modal .no-datasets,.dataviz-modal .loading{color:#4a5568}.dataviz-modal .app-header{background:#16213e;border-bottom-color:#2a2a4a;box-shadow:none}.dataviz-modal .app-header h1{color:#e2e8f0}.dataviz-modal .btn-secondary{background:#2a2a4a;color:#a0aec0}.dataviz-modal .btn-secondary:hover{background:#3a3a5a}body.editor.flows-editor{background:#1a202c}body.editor #main-content .vue-flow-container{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;min-height:0}#main-content .vue-flow-container .vue-flow,#main-content .vue-flow-container .vue-flow__viewport{width:100%!important;height:100%!important;min-height:0!important}.vue-flow-node{box-sizing:border-box;background:linear-gradient(135deg,#2d3748,#1a202c);border:2px solid #4a5568;border-radius:8px;padding:12px 20px;min-width:180px;min-height:60px;max-width:320px;font-family:Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:13px;color:#e2e8f0;box-shadow:0 2px 8px #0000004d;transition:box-shadow .2s ease;position:relative;overflow:visible}.vue-flow-node:hover{box-shadow:0 4px 12px #0006}.vue-flow-node.selected{border-color:#63b3ed;box-shadow:0 0 0 2px #63b3ed59;background:linear-gradient(135deg,#3d4a5c,#2d3748)}.vue-flow-node.node-dense,.vue-flow-node[class*=layer-]{background:linear-gradient(135deg,#322d3a,#2d2535);border-color:#805ad5}.vue-flow-node.node-dense.selected,.vue-flow-node[class*=layer-].selected{border-color:#9f7aea;box-shadow:0 0 0 2px #9f7aea59;background:linear-gradient(135deg,#3d3548,#322d3a)}.node-content{position:relative;z-index:1}.vue-flow-node input,.vue-flow-node select,.vue-flow-node textarea{background:#2d3748!important;color:#e2e8f0!important;border:1px solid #4a5568!important}.vue-flow-node input::placeholder,.vue-flow-node textarea::placeholder{color:#718096!important}.node-header{font-weight:700;margin-bottom:8px;color:#63b3ed;font-size:14px}.node-body{display:flex;flex-direction:column;gap:6px}.node-body label{display:flex;flex-direction:column;gap:2px;font-size:11px;color:#a0aec0}.vue-flow-node .param-tag{display:inline-flex;align-items:center;font-size:11px;line-height:1;color:#e2e8f0;background:#1a202cf2;border:1px solid #4a5568;border-radius:7px;padding:5px 6px;white-space:nowrap;margin-right:4px;margin-top:4px;vertical-align:middle}.node-body input,.node-body select,.node-body textarea,.vue-flow-node .cuerpo input,.vue-flow-node .cuerpo select,.vue-flow-node .cuerpo textarea{border:1px solid #4a5568;border-radius:6px;padding:4px 8px;font-size:12px;font-family:Roboto,sans-serif;background:#2d3748;color:#e2e8f0;min-height:24px;max-width:80px!important;transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease}.node-body input::placeholder,.node-body textarea::placeholder{color:#718096}.node-body input:hover,.node-body select:hover,.node-body textarea:hover{border-color:#718096;background:#374151}.node-body input:focus,.node-body select:focus,.node-body textarea:focus{outline:none;border-color:#63b3ed;box-shadow:0 0 0 2px #63b3ed40;background:#2d3748}.node-body select{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23a0aec0' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;padding-right:28px}.vue-flow-node input[type=number]::-webkit-inner-spin-button,.vue-flow-node input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.vue-flow-node input[type=number]{-moz-appearance:textfield}.node-body input[type=checkbox]{width:auto;min-width:16px;min-height:16px;margin-right:6px;accent-color:#63b3ed;cursor:pointer}.vue-flow-node .file-param-block{display:block;margin-bottom:8px}.vue-flow-node .file-param-block .file-param-label{display:block;font-size:12px;color:#a0aec0;margin-bottom:4px}.vue-flow-node .file-param-block .file-input-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.vue-flow-node .file-param-block .file-input-row input:not([type=file]){flex:1;min-width:80px}.vue-flow-node .file-trigger-wrap{flex-shrink:0}.vue-flow-node .node-file-trigger{display:inline-flex;align-items:center;justify-content:center;position:relative;padding:6px 10px;font-size:12px;color:#e2e8f0;background:#4a5568;border:1px solid #718096;border-radius:6px;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}.vue-flow-node .node-file-trigger:hover{background:#2d3748;border-color:#63b3ed}.vue-flow-node .node-file-trigger input[type=file]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;margin:0;padding:0;font-size:0}.vue-flow-node .node-file-trigger.node-file-trigger--icon{width:30px;height:30px;padding:0}.vue-flow-node .node-file-trigger-icon{font-size:16px;line-height:1;pointer-events:none}.vue-flow-node .node-file-trigger-text{pointer-events:none}.vue-flow__handle{width:18px!important;height:18px!important;background:#4299e1!important;border:2px solid #2d3748!important;box-shadow:0 1px 3px #0006;transition:background-color .15s ease,box-shadow .15s ease}.vue-flow__handle:hover{background:#63b3ed!important;box-shadow:0 2px 6px #00000080}.vue-flow__handle.connecting,.vue-flow__handle.valid{background:#48bb78!important}.vue-flow__handle.invalid{background:#fc8181!important}.port-row .port-handle{position:absolute!important;top:50%!important;transform:translateY(-50%)!important;z-index:4}.port-input .port-handle{left:-20px!important;transform:translate(-50%,-50%)!important}.port-output .port-handle{right:-20px!important;transform:translate(50%,-50%)!important}.vue-flow-node[class*=layer-] .vue-flow__handle{background:#805ad5!important}.vue-flow-node[class*=layer-] .vue-flow__handle:hover{background:#9f7aea!important}.vue-flow__edge-path{stroke:#63b3ed;stroke-width:2px;transition:all .2s ease}.vue-flow__edge:hover .vue-flow__edge-path{stroke:#90cdf4;stroke-width:3px}.vue-flow__edge.selected .vue-flow__edge-path{stroke:#90cdf4;stroke-width:3px;stroke-dasharray:5;animation:dash .5s linear infinite}@keyframes dash{to{stroke-dashoffset:-10}}.vue-flow__edge .vue-flow__edge-textwrapper{pointer-events:all}.vue-flow__edge .vue-flow__edge-text{fill:#e2e8f0;font-size:11px}.vue-flow__background{background-color:#1a202c}.vue-flow__controls{box-shadow:0 2px 12px #0006;border-radius:8px;overflow:hidden;border:1px solid #2d3748}.vue-flow__controls-button{background:#2d3748;border-bottom:1px solid #4a5568;color:#e2e8f0;transition:background .2s ease}.vue-flow__controls-button:hover{background:#4a5568}.vue-flow__controls-button:last-child{border-bottom:none}.vue-flow__minimap{background:#2d3748;border:1px solid #4a5568;border-radius:8px;box-shadow:0 2px 12px #0006}.vue-flow__minimap-node{fill:#4299e1;stroke:#63b3ed;stroke-width:1}.vue-flow__minimap-node.selected{fill:#63b3ed}.vue-flow__selection{background:#63b3ed26;border:1px solid #63b3ed}.vue-flow__node-toolbar{background:#2d3748;border:1px solid #4a5568;border-radius:4px;box-shadow:0 2px 12px #0006;padding:4px;color:#e2e8f0}@media (max-width: 768px){.vue-flow-node{min-width:150px;max-width:200px;font-size:12px}.node-header{font-size:13px}.node-body{gap:4px}.node-body label{font-size:10px}.node-body input,.node-body select,.node-body textarea{font-size:11px;padding:5px 8px;min-height:26px}}@keyframes node-appear{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.node-loading{opacity:.6;pointer-events:none}.node-loading:after{content:"";position:absolute;top:50%;left:50%;width:20px;height:20px;margin:-10px 0 0 -10px;border:2px solid #63b3ed;border-top-color:transparent;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.node-error{border-color:#fc8181;background:linear-gradient(135deg,#3d2a2a,#2d2222)}.node-error .node-header{color:#fc8181}.node-success{border-color:#48bb78}.node-success .node-header{color:#68d391}
