:root{--bg:#f5f8fc;--panel:#fff;--text:#15233a;--muted:#71809a;--line:#dce5f0;--accent:#3487ff;--accent-strong:#1666d7;--soft:#edf5ff;--danger:#e45b6f;--shadow:0 12px 36px rgba(36,73,122,.10);--node-shadow:0 9px 22px rgba(27,59,100,.13)}
*{box-sizing:border-box}html,body{width:100%;min-width:320px;height:100%;margin:0;overflow:hidden;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Arial,sans-serif;color:var(--text);background:var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer}.workflow-app{height:100%;display:flex}.workflow-sidebar{width:238px;flex:0 0 238px;background:rgba(255,255,255,.72);border-right:1px solid rgba(210,225,241,.86);display:flex;flex-direction:column;padding:20px 14px;gap:13px;z-index:5;backdrop-filter:blur(16px);box-shadow:8px 0 30px rgba(40,78,121,.06)}.workflow-brand{height:48px;display:flex;align-items:center;gap:10px;padding:0 5px;color:var(--text);text-decoration:none}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;background:linear-gradient(145deg,#469aff,#1e6ee8);color:#fff;box-shadow:0 6px 14px rgba(52,135,255,.3);font-weight:800;font-size:17px}.workflow-brand b{font-size:14px;display:block}.workflow-brand small{display:block;font-size:10px;color:var(--muted);margin-top:2px}.back-link{display:flex;align-items:center;height:38px;padding:0 11px;border:1px solid var(--line);border-radius:10px;color:#38618f;text-decoration:none;background:#fbfdff;font-size:12px;font-weight:700}.back-link:hover{background:var(--soft);border-color:#b8d5fa}.sidebar-caption{margin:8px 7px 0;color:#8694aa;font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.project-panel{display:grid;gap:6px;padding:8px;border:1px solid rgba(205,221,239,.86);border-radius:12px;background:rgba(248,251,255,.78);box-shadow:inset 0 1px 0 rgba(255,255,255,.92)}.project-panel select{width:100%;height:31px;border:1px solid #d6e3f0;border-radius:8px;background:rgba(255,255,255,.94);color:#405772;font-size:10px;font-weight:700;padding:0 7px}.project-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.project-actions button{height:27px;border:1px solid #d8e5f2;border-radius:7px;background:#fff;color:#52708f;font-size:9px;font-weight:800;padding:0}.project-actions button:hover{border-color:#b7d6fa;background:#edf6ff;color:#216fc9}.storage-status{color:#71839a;font-size:9px;line-height:1.45}.node-palette{display:flex;flex-direction:column;gap:8px}.palette-item{border:1px solid transparent;background:transparent;border-radius:12px;padding:10px;display:grid;grid-template-columns:28px 1fr;grid-template-rows:16px 15px;column-gap:8px;text-align:left;color:var(--text)}.palette-item:hover{background:#f2f7ff;border-color:#d3e5ff;transform:translateY(-1px)}.palette-item span{grid-row:1 / 3;display:grid;place-items:center;width:28px;height:28px;border-radius:8px;color:#fff;font-weight:800}.palette-item b{font-size:12px;line-height:16px}.palette-item small{font-size:10px;color:var(--muted);line-height:15px}.tone-text span{background:#7a72ea}.tone-upload span{background:#f19b4a}.tone-generate span{background:#3289f7}.tone-video span{background:#9a65e8}.tone-optimize span{background:#6f73e8}.tone-edit span{background:#1db899}.tone-upscale span{background:#387fc5}.tone-result span{background:#63758d}.side-help{margin-top:auto;border:1px solid #dcecff;background:#f7fbff;border-radius:12px;padding:12px;color:#6680a0}.side-help b{font-size:11px}.side-help p{font-size:10px;line-height:1.65;margin:6px 0 0}.workflow-main{min-width:0;flex:1;display:flex;flex-direction:column}.workflow-topbar{height:78px;flex:0 0 78px;padding:13px 22px;border-bottom:1px solid rgba(210,225,241,.86);background:rgba(255,255,255,.72);display:flex;align-items:center;justify-content:space-between;gap:16px;z-index:4;backdrop-filter:blur(16px);box-shadow:0 7px 26px rgba(40,78,121,.05)}.workflow-heading{min-width:155px}.eyebrow{font-size:10px;color:#8191a8;letter-spacing:.11em;text-transform:uppercase;font-weight:800;margin-bottom:2px}.name-row{display:flex;align-items:center;gap:8px}.name-row input{border:1px solid transparent;background:transparent;color:var(--text);border-radius:7px;font-size:17px;font-weight:800;outline:none;max-width:240px;padding:2px 5px}.name-row input:hover,.name-row input:focus{background:#f3f8ff;border-color:#cde2ff}.save-status{font-size:10px;color:#7e8da4;white-space:nowrap}.top-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}.status-pill{height:30px;display:inline-flex;align-items:center;padding:0 9px;border:1px solid var(--line);border-radius:999px;background:#fbfdff;color:#60718b;font-size:11px;font-weight:700;white-space:nowrap}.tool-button,.run-button,.cancel-button{height:32px;border-radius:9px;border:1px solid var(--line);padding:0 9px;background:#fff;color:#45617f;font-size:11px;font-weight:800}.tool-button:hover{background:#f1f7ff;border-color:#bcd9ff}.tool-button.wide{padding:0 11px}.import-button{display:inline-flex;align-items:center}.run-button{border-color:var(--accent);background:var(--accent);color:#fff;padding:0 13px;box-shadow:0 4px 10px rgba(52,135,255,.24)}.run-button:hover{background:var(--accent-strong)}.cancel-button{color:var(--danger);border-color:#f2c7cf;background:#fff9fa}.canvas-region{min-height:0;flex:1;position:relative}.canvas-viewport{position:relative;width:100%;height:100%;overflow:hidden;outline:none;isolation:isolate;background:linear-gradient(135deg,#f8fbff,#f2f7fd);touch-action:none}.canvas-viewport:focus-visible{box-shadow:inset 0 0 0 3px rgba(52,135,255,.45)}.canvas-viewport.image-drop-active{box-shadow:inset 0 0 0 3px var(--accent);background:#eef7ff}.canvas-grid{position:absolute;inset:0;pointer-events:none;opacity:.74;background-image:linear-gradient(rgba(178,202,229,.18) 1px,transparent 1px),linear-gradient(90deg,rgba(178,202,229,.18) 1px,transparent 1px),radial-gradient(circle,#c1d5eb 1px,transparent 1.2px);background-size:100px 100px,100px 100px,20px 20px;background-position:0 0}.canvas-world{position:absolute;inset:0;width:1px;height:1px;transform-origin:0 0;will-change:transform}.edge-layer{position:absolute;overflow:visible;inset:0;width:1px;height:1px;pointer-events:none}.edge-path{fill:none;stroke:#82a6d3;stroke-width:2.2;vector-effect:non-scaling-stroke;pointer-events:stroke;cursor:pointer}.edge-hit-path{fill:none;stroke:transparent;stroke-width:14;vector-effect:non-scaling-stroke;pointer-events:stroke;cursor:pointer}.edge-path.edge-text{stroke:#7a72ea}.edge-path.edge-image{stroke:#1bb393}.edge-path.edge-video{stroke:#9a65e8}.edge-path.selected{stroke:#3487ff;stroke-width:3.2}.edge-path:hover{stroke:#3487ff}.edge-arrow{fill:currentColor;pointer-events:none}.edge-reference-label{fill:#208b75;font-weight:800;paint-order:stroke;stroke:rgba(255,255,255,.94);stroke-width:3px;pointer-events:none}.connection-preview{fill:none;stroke:#3487ff;stroke-width:2.5;stroke-dasharray:7 6;vector-effect:non-scaling-stroke}.node-layer{position:absolute;inset:0}.canvas-node{position:absolute;width:278px;min-width:240px;min-height:138px;border:1px solid #d5e1ef;border-radius:15px;background:rgba(255,255,255,.95);box-shadow:var(--node-shadow);user-select:none;overflow:visible;backdrop-filter:blur(10px)}.canvas-node[style*="height"]{overflow:hidden}.canvas-node[style*="height"] .node-body{height:calc(100% - 44px);overflow:auto;padding-bottom:22px}.node-resize-handle{position:absolute;z-index:4;right:3px;bottom:3px;width:17px;height:17px;cursor:nwse-resize;border-radius:4px;background:linear-gradient(135deg,transparent 0 42%,#9bb0c8 43% 50%,transparent 51% 62%,#9bb0c8 63% 70%,transparent 71%);opacity:.75}.node-resize-handle:hover{background-color:#edf5ff;opacity:1}.canvas-node.selected{border-color:#3890ff;box-shadow:0 0 0 3px rgba(52,135,255,.18),var(--node-shadow)}.canvas-node[data-status="running"]{border-color:#79b6ff}.canvas-node[data-status="failed"]{border-color:#ea8f9d}.canvas-node[data-status="completed"]{border-color:#60c5af}.node-header{height:44px;border-bottom:1px solid #ebf0f7;display:flex;align-items:center;gap:8px;padding:0 11px;cursor:grab;position:relative}.node-header:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--node-color,#3487ff);opacity:.68}.node-progress{position:absolute;left:0;right:0;bottom:-1px;height:2px;overflow:hidden;background:rgba(137,161,190,.18);pointer-events:none}.node-progress-bar{height:100%;width:0;background:var(--node-color,#3487ff);transition:width .25s ease}.node-progress.indeterminate .node-progress-bar{width:42%;animation:progress-slide 1.2s ease-in-out infinite}@keyframes progress-slide{50%{transform:translateX(138%)}}.node-header:active{cursor:grabbing}.node-type-icon{width:24px;height:24px;border-radius:7px;display:grid;place-items:center;color:#fff;font-size:12px;font-weight:900}.node-title{min-width:0;flex:1;font-size:12px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.node-status-dot{width:7px;height:7px;border-radius:50%;background:#b0bdca}.canvas-node[data-status="running"] .node-status-dot{background:#3487ff;box-shadow:0 0 0 4px rgba(52,135,255,.16);animation:pulse 1.2s ease-in-out infinite}.canvas-node[data-status="failed"] .node-status-dot{background:#e45b6f}.canvas-node[data-status="completed"] .node-status-dot{background:#24ae8c}.node-delete{width:23px;height:23px;border:0;border-radius:6px;color:#8d9aab;background:transparent;font-size:15px;line-height:20px}.node-delete:hover{color:#d04c5f;background:#fff0f2}.node-body{padding:11px}.node-body textarea{display:block;width:100%;height:68px;border:1px solid #dae5f1;border-radius:9px;background:#fbfdff;color:var(--text);resize:vertical;padding:8px;font-size:12px;line-height:1.5;outline:none}.node-text-input{display:block;width:100%;height:31px;margin-top:7px;border:1px solid #dae5f1;border-radius:8px;background:#fbfdff;color:var(--text);font-size:11px;padding:0 8px;outline:none}.optimizer-output{margin-top:8px!important;height:94px!important;background:#f2f8ff!important;border-color:#c5def9!important}.node-body textarea:focus,.node-body select:focus{border-color:#82b8ff;box-shadow:0 0 0 3px rgba(52,135,255,.1)}.node-body select{height:31px;width:100%;border:1px solid #dae5f1;border-radius:8px;background:#fbfdff;color:#405772;font-size:11px;padding:0 7px;outline:none}.node-options{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:8px}.node-options label{font-size:9px;color:#72829a;font-weight:700}.node-options label select{margin-top:4px}.node-empty{font-size:11px;color:#8493a8;line-height:1.5;padding:3px 0}.upload-drop{border:1px dashed #bdd8f6;border-radius:10px;background:#f6faff;padding:15px 9px;text-align:center;color:#5f86b3;font-size:11px;font-weight:700;cursor:pointer}.upload-drop.dragging{border-color:#3487ff;background:#edf6ff}.upload-drop input{display:none}.asset-grid,.result-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-top:8px}.asset-thumb,.result-thumb{aspect-ratio:1;border-radius:7px;border:1px solid #dce6f0;overflow:hidden;background:#f4f7fb;position:relative;cursor:zoom-in}.asset-thumb img,.result-thumb img{display:block;width:100%;height:100%;object-fit:cover;pointer-events:none}.asset-remove{position:absolute;right:2px;top:2px;width:17px;height:17px;border:0;border-radius:50%;background:rgba(19,36,59,.72);color:#fff;font-size:13px;line-height:16px}.result-thumb a{position:absolute;inset:0;display:block}.node-message{margin-top:8px;font-size:10px;line-height:1.45;color:#6e819a}.node-message.error{color:#ce4b60}.node-message.success{color:#168b70}.node-message.running{color:#287de7}.port{position:absolute;z-index:2;width:16px;height:16px;border:3px solid #fff;border-radius:50%;box-shadow:0 0 0 1.5px currentColor;background:currentColor;cursor:crosshair;transition:transform .15s}.port:hover{transform:scale(1.25)}.port[data-side="input"]{left:-8px}.port[data-side="output"]{right:-8px}.port-label{position:absolute;top:50%;transform:translateY(-50%);font-size:9px;color:#8594aa;font-weight:800;white-space:nowrap;pointer-events:none}.port[data-side="input"] .port-label{left:12px}.port[data-side="output"] .port-label{right:12px}.port-text{color:#7a72ea}.port-image{color:#1bb393}.port-video{color:#9a65e8}.port-result{color:#66768c}.selection-box{position:absolute;border:1px solid #3487ff;background:rgba(52,135,255,.1);pointer-events:none;z-index:10}.empty-canvas{position:absolute;z-index:1;left:50%;top:50%;transform:translate(-50%,-50%);width:min(385px,calc(100% - 42px));padding:27px;border:1px dashed #c7d9ef;border-radius:18px;background:rgba(255,255,255,.7);color:#7890ad;text-align:center;pointer-events:none}.empty-canvas span{display:grid;place-items:center;width:38px;height:38px;margin:0 auto 10px;border-radius:12px;background:#eaf4ff;color:#3487ff;font-size:18px}.empty-canvas b{display:block;color:#526f92;font-size:13px}.empty-canvas p{font-size:11px;line-height:1.6;margin:7px 0 0}.canvas-controls{position:absolute;z-index:3;right:18px;bottom:17px;display:flex;overflow:hidden;border:1px solid #d8e4f1;border-radius:10px;background:#fff;box-shadow:0 5px 16px rgba(34,75,125,.12)}.canvas-controls button{height:32px;min-width:33px;border:0;border-right:1px solid #e1e9f3;background:#fff;color:#5b718d;font-size:12px;font-weight:800}.canvas-controls button:last-child{border-right:0}.canvas-controls button:hover{background:#f2f7fd}.minimap-hint{position:absolute;z-index:3;left:18px;bottom:18px;border:1px solid #dce8f4;background:rgba(255,255,255,.84);border-radius:8px;padding:7px 9px;color:#8090a7;font-size:10px}.toast{position:fixed;z-index:30;left:50%;bottom:24px;transform:translate(-50%,15px);opacity:0;pointer-events:none;transition:.2s;padding:9px 13px;border-radius:9px;background:#253c5a;color:#fff;box-shadow:0 10px 24px rgba(16,34,60,.25);font-size:12px;font-weight:700}.toast.show{transform:translate(-50%,0);opacity:1}.toast.error{background:#bd4458}@keyframes pulse{50%{opacity:.45;transform:scale(.8)}}@media(max-width:1120px){.workflow-sidebar{width:78px;flex-basis:78px;padding:18px 9px}.workflow-brand{justify-content:center;padding:0}.workflow-brand>span:last-child,.back-link,.sidebar-caption,.palette-item b,.palette-item small,.side-help{display:none}.palette-item{display:grid;place-items:center;padding:8px}.palette-item span{grid-row:auto}.top-actions .status-pill{display:none}.name-row input{max-width:170px}}@media(max-width:720px){.workflow-app{flex-direction:column}.workflow-sidebar{width:100%;height:61px;flex:0 0 61px;flex-direction:row;align-items:center;padding:8px;border-right:0;border-bottom:1px solid var(--line);overflow-x:auto}.workflow-brand{flex:0 0 38px}.node-palette{flex:1;display:flex;flex-direction:row;gap:5px}.palette-item{flex:0 0 43px;height:42px}.workflow-topbar{height:auto;min-height:58px;padding:8px 12px}.eyebrow,.save-status,.top-actions .tool-button:not(.wide),.top-actions .wide,.top-actions .status-pill{display:none}.name-row input{font-size:14px;max-width:150px}.top-actions{margin-left:auto}.run-button{height:32px}.canvas-node{width:250px}.minimap-hint{display:none}}
.image-prompt-label{display:block;color:#72829a;font-size:9px;font-weight:700}.image-prompt-label textarea{margin-top:4px;height:62px}.prompt-text{min-height:68px}.image-references{display:flex;align-items:center;flex-wrap:wrap;gap:5px;margin:7px 0;color:#5f86b3;font-size:10px;line-height:1.4}.reference-chip{position:relative;height:23px;border:1px solid #bcd9fa;border-radius:7px;background:#edf6ff;color:#2874c7;padding:0 7px;font-size:10px;font-weight:800}.reference-chip:hover,.reference-chip:focus-visible{z-index:8;border-color:#3487ff;background:#dfeeff;outline:none}.reference-preview{position:absolute;z-index:20;left:50%;bottom:calc(100% + 9px);display:block;width:132px;height:132px;padding:5px;border:1px solid #c9d9eb;border-radius:10px;background:#fff;box-shadow:0 12px 30px rgba(20,49,85,.28);opacity:0;visibility:hidden;pointer-events:none;transform:translate(-50%,6px) scale(.97);transform-origin:bottom center;transition:opacity .14s,transform .14s,visibility .14s}.reference-preview:after{content:"";position:absolute;left:50%;bottom:-6px;width:10px;height:10px;border-right:1px solid #c9d9eb;border-bottom:1px solid #c9d9eb;background:#fff;transform:translateX(-50%) rotate(45deg)}.reference-preview img{display:block;width:100%;height:100%;border-radius:6px;object-fit:cover}.reference-chip:hover .reference-preview,.reference-chip:focus-visible .reference-preview{opacity:1;visibility:visible;transform:translate(-50%,0) scale(1)}.reference-chip.reference-empty{opacity:.7}.reference-limit{margin-top:7px;color:#6e819a;font-size:10px;font-weight:700;text-align:right}.reference-limit.exceeded{color:#ce4b60}.image-node-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:8px}.node-generate,.node-cancel{height:31px;border-radius:8px;padding:0 11px;font-size:11px;font-weight:800}.node-generate{border:1px solid var(--accent);background:var(--accent);color:#fff;box-shadow:0 4px 10px rgba(52,135,255,.18)}.node-generate:hover:not(:disabled){background:var(--accent-strong)}.node-generate:disabled{cursor:not-allowed;opacity:.62}.node-cancel{border:1px solid #f2c7cf;background:#fff9fa;color:var(--danger)}.node-cancel:hover{border-color:#e99aaa;background:#fff0f2}.video-result-grid{margin-top:9px}.video-result{overflow:hidden;border:1px solid #dce6f0;border-radius:9px;background:#f4f7fb}.video-result video{display:block;width:100%;max-height:280px;background:#142238}.video-download{display:flex;align-items:center;justify-content:center;height:32px;color:#2874c7;background:#f8fbff;font-size:10px;font-weight:800;text-decoration:none}.video-download:hover{background:#edf6ff}.result-thumb{cursor:zoom-in}.image-modal{position:fixed;z-index:40;inset:0;display:flex;align-items:center;justify-content:center;padding:58px 26px 82px;background:rgba(10,23,42,.78);backdrop-filter:blur(5px)}.image-modal[hidden]{display:none}.image-modal-stage{position:relative;width:min(1120px,100%);height:calc(100vh - 140px);overflow:hidden;display:flex;align-items:center;justify-content:center;cursor:grab;touch-action:none}.image-modal-stage:active{cursor:grabbing}.image-modal img{display:block;max-width:100%;max-height:100%;border-radius:12px;box-shadow:0 18px 60px rgba(0,0,0,.42);object-fit:contain;background:#fff;transform:translate3d(0,0,0) scale(1);transform-origin:center center;user-select:none;pointer-events:none}.image-modal-close,.image-modal-download{position:absolute;top:19px;height:36px;border-radius:9px;font-size:12px;font-weight:800}.image-modal-close{right:20px;width:36px;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.14);color:#fff;font-size:24px;line-height:30px}.image-modal-download{right:66px;display:flex;align-items:center;padding:0 12px;background:#fff;color:#295986;text-decoration:none}.image-modal-close:hover{background:rgba(255,255,255,.28)}.image-modal-download:hover{background:#eaf4ff}.prompt-optimize-action{width:100%;height:29px;margin-top:6px;border:1px solid #c8c9f8;border-radius:8px;background:#f2f1ff;color:#615ed1;font-size:10px;font-weight:800}.prompt-optimize-action:hover:not(:disabled){border-color:#8586e8;background:#e9e8ff}.prompt-optimize-action:disabled{cursor:not-allowed;opacity:.58}.edit-preview{position:relative;width:100%;height:clamp(220px,38vh,420px);display:grid;place-items:center;overflow:hidden;border:1px solid #d5e7e2;border-radius:10px;background:linear-gradient(135deg,#f4fbf9,#e7f5f1);cursor:zoom-in;outline:none}.edit-preview:hover,.edit-preview:focus-visible{border-color:#58bfa8;box-shadow:0 0 0 3px rgba(29,184,153,.13)}.edit-preview.loading{cursor:progress;opacity:.86}.edit-preview img{display:block;width:100%;height:100%;min-width:0;min-height:0;object-fit:contain;padding:10px;background:transparent;transform:none!important;box-shadow:none}.edit-preview-hint{position:absolute;right:8px;top:8px;padding:5px 7px;border-radius:6px;background:rgba(19,55,49,.72);color:#fff;font-size:9px;font-weight:800;opacity:0;transform:translateY(-3px);transition:.16s;pointer-events:none}.edit-preview:hover .edit-preview-hint,.edit-preview:focus-visible .edit-preview-hint{opacity:1;transform:translateY(0)}.edit-preview-status{position:absolute;inset:auto 7px 7px;padding:5px 7px;border-radius:6px;background:rgba(29,68,61,.72);color:#fff;font-size:9px;font-weight:700;text-align:center;pointer-events:none}.edit-options{grid-template-columns:1fr 1fr}.edit-range{display:grid!important;grid-template-columns:1fr auto;align-items:center;gap:3px 6px;padding:6px 7px;border:1px solid #dbe9e5;border-radius:8px;background:#f7fcfa}.edit-range span{color:#607b75;font-size:9px;font-weight:800}.edit-range output{color:#168b70;font-size:9px;font-weight:800}.edit-range input[type="range"]{grid-column:1/-1;width:100%;height:16px;margin:0;padding:0;accent-color:#1db899;cursor:pointer}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* Enhanced canvas interactions */
.edge-toolbar{position:absolute;z-index:13;left:50%;top:14px;display:flex;align-items:center;gap:7px;padding:6px 7px 6px 10px;border:1px solid #d5e3f1;border-radius:11px;background:rgba(255,255,255,.94);box-shadow:0 8px 24px rgba(31,67,111,.16);transform:translateX(-50%);backdrop-filter:blur(10px)}.edge-toolbar[hidden]{display:none}.edge-toolbar span{max-width:260px;overflow:hidden;color:#5a708c;font-size:10px;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.edge-toolbar button{height:27px;border:1px solid #f2c7cf;border-radius:7px;background:#fff8f9;color:#d04c5f;font-size:10px;font-weight:800}.selection-toolbar{position:absolute;z-index:12;left:50%;top:14px;display:flex;align-items:center;gap:4px;max-width:calc(100% - 28px);padding:6px;border:1px solid #d4e2f1;border-radius:11px;background:rgba(255,255,255,.95);box-shadow:0 8px 24px rgba(31,67,111,.16);transform:translateX(-50%);backdrop-filter:blur(8px)}.selection-toolbar[hidden]{display:none}.selection-toolbar span{padding:0 7px;color:#5a708c;font-size:10px;font-weight:800;white-space:nowrap}.selection-toolbar button{height:27px;border:1px solid transparent;border-radius:7px;background:transparent;color:#4b6685;padding:0 7px;font-size:10px;font-weight:800;white-space:nowrap}.selection-toolbar button:hover:not(:disabled){border-color:#c7ddf8;background:#edf6ff;color:#216fc9}.selection-toolbar button:disabled{cursor:not-allowed;opacity:.38}
.canvas-node.locked .node-header{cursor:not-allowed}.node-lock-indicator{display:none;color:#e19035;font-size:13px}.canvas-node.locked .node-lock-indicator{display:inline}.node-collapse{width:23px;height:23px;border:0;border-radius:6px;color:#8291a5;background:transparent;font-size:13px}.node-collapse:hover{color:#2879d8;background:#edf6ff}.canvas-node.collapsed{min-height:44px;overflow:visible}.canvas-node.collapsed .node-body,.canvas-node.collapsed .node-resize-handle{display:none}.canvas-node.collapsed .node-header{border-bottom:0}.canvas-node.collapsed .node-collapse{transform:rotate(180deg)}
.port.connect-compatible{z-index:7;color:#24b58d;box-shadow:0 0 0 5px rgba(36,181,141,.22),0 0 0 1.5px currentColor;animation:port-ready .8s ease-in-out infinite alternate}.port.connect-invalid{z-index:7;color:#e45b6f;box-shadow:0 0 0 5px rgba(228,91,111,.16),0 0 0 1.5px currentColor}.port.connect-muted{opacity:.25;transform:scale(.78)}.port.connect-snapped{transform:scale(1.42);box-shadow:0 0 0 8px rgba(52,135,255,.18),0 0 0 2px currentColor}.connection-preview.invalid{stroke:#e45b6f}.edge-endpoint{z-index:8;fill:#fff;stroke:#3487ff;stroke-width:2;vector-effect:non-scaling-stroke;pointer-events:all;cursor:crosshair}.edge-endpoint:hover{fill:#3487ff;stroke:#fff}@keyframes port-ready{to{transform:scale(1.16)}}
.reference-chip{display:inline-flex;align-items:center;gap:4px;height:25px;padding:0 7px;cursor:grab}.reference-chip b{display:grid;place-items:center;width:15px;height:15px;border-radius:50%;background:#3186e8;color:#fff;font-size:9px}.reference-chip span{max-width:66px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reference-chip.dragging{cursor:grabbing;opacity:.45}.reference-chip.drag-target{border-color:#24ae8c;box-shadow:0 0 0 3px rgba(36,174,140,.15)}
.reference-picker,.connection-menu{position:fixed;z-index:55;border:1px solid #cbdcec;border-radius:12px;background:rgba(255,255,255,.98);box-shadow:0 16px 42px rgba(18,45,79,.26);backdrop-filter:blur(10px)}.reference-picker[hidden],.connection-menu[hidden]{display:none}.reference-picker{width:min(330px,calc(100vw - 24px));max-height:300px;overflow:auto;padding:6px}.reference-picker-item{display:flex;align-items:center;width:100%;gap:9px;border:1px solid transparent;border-radius:9px;background:transparent;padding:7px;text-align:left}.reference-picker-item:hover,.reference-picker-item.selected{border-color:#bfdafe;background:#edf6ff}.reference-picker-thumb{flex:0 0 44px;width:44px;height:44px;display:grid;place-items:center;overflow:hidden;border:1px solid #d9e4ef;border-radius:7px;background:linear-gradient(135deg,#eef4fa,#dae7f4)}.reference-picker-thumb:empty:after{content:"无预览";color:#8797aa;font-size:8px}.reference-picker-thumb img{display:block;width:100%;height:100%;object-fit:cover}.reference-picker-copy{min-width:0;display:flex;flex-direction:column;gap:3px}.reference-picker-copy b{overflow:hidden;color:#254c78;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.reference-picker-copy small{overflow:hidden;color:#7789a0;font-size:9px;text-overflow:ellipsis;white-space:nowrap}
.reference-floating-preview{position:fixed;z-index:60;width:180px;height:205px;padding:7px 7px 26px;border:1px solid #c5d6e8;border-radius:12px;background:#fff;box-shadow:0 16px 44px rgba(14,39,70,.32);pointer-events:none}.reference-floating-preview[hidden]{display:none}.reference-floating-preview img{display:block;width:166px;height:166px;border-radius:8px;background:#f0f4f8;object-fit:cover}.reference-floating-preview span{position:absolute;left:8px;right:8px;bottom:7px;overflow:hidden;color:#536b88;font-size:9px;font-weight:800;text-align:center;text-overflow:ellipsis;white-space:nowrap}
.connection-menu{width:220px;padding:7px}.connection-menu-title{display:block;padding:5px 7px 7px;color:#7a8ba1;font-size:9px;font-weight:800;letter-spacing:.08em}.connection-menu button{display:block;width:100%;height:34px;border:0;border-radius:8px;background:transparent;color:#385777;text-align:left;padding:0 9px;font-size:11px;font-weight:800}.connection-menu button:hover{background:#edf6ff;color:#2474cf}.connection-menu .connection-menu-cancel{margin-top:3px;border-top:1px solid #e4ebf3;border-radius:0 0 8px 8px;color:#8996a8}
.minimap-toggle{position:absolute;z-index:5;right:18px;bottom:193px;height:24px;border:1px solid #cfdeed;border-radius:7px;background:rgba(255,255,255,.9);color:#607791;font-size:9px;font-weight:800;padding:0 8px;backdrop-filter:blur(7px)}.canvas-minimap.collapsed{display:none}.minimap-toggle[aria-expanded="false"]{bottom:61px}.canvas-minimap{position:absolute;z-index:4;right:18px;bottom:61px;width:192px;height:126px;overflow:hidden;border:1px solid #cfdeed;border-radius:11px;background:rgba(255,255,255,.9);box-shadow:0 7px 22px rgba(27,59,100,.15);cursor:crosshair;touch-action:none;backdrop-filter:blur(7px)}.canvas-minimap svg{display:block;width:190px;height:124px}.minimap-edge{stroke:#aac0d9;stroke-width:1;opacity:.62;vector-effect:non-scaling-stroke}.minimap-edge.selected{stroke:#267be0;stroke-width:2;opacity:1}.minimap-node{opacity:.66;stroke:rgba(255,255,255,.85);stroke-width:1;cursor:pointer}.minimap-node.selected{opacity:1;stroke:#123f75;stroke-width:2}.minimap-node.running{opacity:1}.minimap-node.failed{fill:#e45b6f}.minimap-viewport{fill:rgba(52,135,255,.08);stroke:#3487ff;stroke-width:1.5;vector-effect:non-scaling-stroke;pointer-events:none}@keyframes minimap-pulse{to{opacity:.35}}.minimap-hint{right:225px;left:auto}
@media(max-width:900px){.minimap-toggle{bottom:161px}.selection-toolbar button[data-bulk-action="align-right"],.selection-toolbar button[data-bulk-action="distribute-x"],.selection-toolbar button[data-bulk-action="distribute-y"]{display:none}.canvas-minimap{width:142px;height:94px}.canvas-minimap svg{width:140px;height:92px}.minimap-hint{display:none}}
@media(max-width:720px){.canvas-minimap{display:none}.minimap-toggle{right:10px;bottom:52px}.minimap-toggle[aria-expanded="true"]{bottom:52px}.selection-toolbar{top:7px;max-width:calc(100% - 14px);overflow-x:auto}.selection-toolbar span{display:none}.canvas-minimap{right:10px;bottom:52px;width:116px;height:77px}.canvas-minimap svg{width:114px;height:75px}}
