:root{color-scheme:dark;--bg: #1e1f22;--bg-2: #2a2c30;--bg-3: #353841;--fg: #e6e6e6;--fg-dim: #aab0b8;--accent: #58a6ff;--accent-2: #ffb86b;--green: #5ad17a;--yellow: #f0c674;--red: #ff6c6b;--border: #44474f;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:13px}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%;background:var(--bg);color:var(--fg);overflow:hidden}button{font-family:inherit;font-size:inherit;background:var(--bg-3);color:var(--fg);border:1px solid var(--border);border-radius:4px;padding:4px 10px;cursor:pointer}button:hover{background:#404451}button:active{background:#2c2f37}button:disabled{opacity:.5;cursor:not-allowed}input[type=text],input[type=password],textarea,select{font-family:inherit;font-size:inherit;background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:3px;padding:4px 6px}textarea{resize:vertical;min-height:60px}.app-root{height:100vh;width:100vw;overflow:hidden}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:1000}.dialog{background:var(--bg-2);border:1px solid var(--border);border-radius:6px;padding:18px 20px;min-width:480px;max-width:640px;max-height:80vh;overflow:auto}.dialog h2{margin:0 0 12px;font-size:16px}.dialog-row{display:grid;grid-template-columns:140px 1fr;gap:8px;align-items:center;margin-bottom:8px}.dialog-row input{width:100%}.dialog-section{margin:16px 0 6px;font-weight:600;color:var(--fg-dim)}.dialog-actions{margin-top:16px;display:flex;gap:8px;justify-content:flex-end}.editor-root{display:grid;grid-template-columns:var(--sidebar-w, 290px) 1fr;grid-template-rows:36px 1fr;grid-template-areas:"sidebar toolbar" "sidebar canvas";height:100%;position:relative}.editor-root.sidebar-collapsed{grid-template-columns:0 1fr}.sidebar-resize{position:absolute;top:0;bottom:0;width:7px;transform:translate(-3px);cursor:col-resize;z-index:20}.sidebar-resize:hover{background:var(--accent);opacity:.4}.editor-toolbar{grid-area:toolbar;background:var(--bg-2);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:6px;padding:0 8px}.editor-toolbar .spacer{flex:1}.editor-toolbar .pipeline-name{color:var(--fg-dim)}.editor-toolbar .toolbar-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:24px;padding:0;background:transparent;border:1px solid var(--border);border-radius:4px;color:var(--fg-dim);cursor:pointer}.editor-toolbar .toolbar-btn:hover:not(:disabled){color:var(--fg);border-color:var(--accent)}.editor-toolbar .toolbar-btn:disabled{opacity:.4;cursor:default}.editor-toolbar .toolbar-sep{width:1px;height:16px;background:var(--border);margin:0 2px}.pipeline-sidebar{grid-area:sidebar;display:flex;flex-direction:column;background:var(--bg-2);border-right:1px solid var(--border);overflow-y:auto;padding:6px 8px 8px;gap:4px}.pipeline-sidebar .sidebar-header{font-size:10px;color:var(--fg-dim);text-transform:uppercase;letter-spacing:.5px;margin:6px 4px 2px}.pipeline-sidebar .sidebar-header-row{display:flex;align-items:center;justify-content:space-between;gap:6px}.sidebar-header-left{display:flex;align-items:center;gap:6px;min-width:0}.sidebar-collapse-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;flex-shrink:0;background:transparent;border:none;border-radius:3px;color:var(--fg-dim);cursor:pointer}.sidebar-collapse-btn:hover{color:var(--fg);background:var(--bg-3)}.sidebar-icon-btn.run-all{width:auto;gap:4px;padding:0 8px;font-size:10px;font-weight:700;letter-spacing:.5px}.sidebar-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border-radius:3px;border:1px solid transparent;cursor:pointer;flex-shrink:0}.sidebar-icon-btn.play{background:var(--green);color:#fff;border-color:var(--green)}.sidebar-icon-btn.play:hover{background:#7be091}.sidebar-icon-btn.cancel{background:var(--bg-3);color:var(--fg-dim);border-color:var(--border)}.sidebar-icon-btn.cancel:hover{color:var(--fg);border-color:var(--fg-dim)}.sidebar-icon-btn.delete{background:var(--bg-3);color:var(--fg-dim);border-color:var(--border)}.sidebar-icon-btn.delete:hover{color:var(--red);border-color:var(--red)}.pipeline-entry{display:flex;flex-direction:column;gap:4px;padding:4px 6px;border-radius:3px;border:1px solid transparent}.pipeline-entry.current{background:var(--bg-3);border-color:var(--border)}.pipeline-entry.active{background:#58a6ff1a;border-color:var(--accent)}.pipeline-entry .entry-row{display:flex;align-items:center;gap:4px;flex:1;min-width:0}.pipeline-entry .entry-row input,.pipeline-entry .entry-name-input{flex:1;min-width:0;background:var(--bg);border:1px solid var(--border);border-radius:3px;color:var(--fg);padding:2px 6px;font-size:12px}.entry-menu-wrap{position:relative;flex-shrink:0}.entry-menu-btn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;flex-shrink:0;background:transparent;border:1px solid transparent;border-radius:3px;color:var(--fg-dim);cursor:pointer}.entry-menu-btn:hover{color:var(--fg);background:var(--bg-3)}.entry-menu{position:absolute;top:100%;left:0;margin-top:2px;z-index:60;background:var(--bg-2);border:1px solid var(--border);border-radius:4px;padding:3px;display:flex;flex-direction:column;min-width:150px;box-shadow:0 6px 18px #00000073}.entry-menu button{text-align:left;background:transparent;border:none;color:var(--fg);padding:5px 8px;border-radius:3px;font-size:12px;cursor:pointer;white-space:nowrap}.entry-menu button:hover{background:var(--bg-3)}.entry-menu button.danger{color:var(--red)}.pipeline-entry .entry-actions{display:flex;gap:4px}.pipeline-entry .entry-actions button{flex:1;padding:2px 6px;font-size:11px}.pipeline-entry .entry-actions button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.pipeline-entry .entry-actions button.primary:hover{background:#6db1ff}.pipeline-entry .entry-actions button.danger{background:var(--red);color:#fff;border-color:var(--red)}.pipeline-entry .entry-meta{color:var(--fg-dim);font-size:10px;padding:0 2px}.pipeline-list{display:flex;flex-direction:column;gap:2px;flex:1;min-height:0}.pipeline-list .empty{color:var(--fg-dim);font-size:11px;padding:4px 6px}.pipeline-list .pipeline-entry{flex-direction:row;align-items:center;padding:2px 4px}.pipeline-list .entry-btn{flex:1;text-align:left;background:transparent;border:none;color:var(--fg);padding:4px 6px;border-radius:3px;font-size:12px}.pipeline-list .entry-btn:hover{background:var(--bg-3)}.pipeline-list .entry-del{background:transparent;border:none;color:var(--fg-dim);padding:4px;display:inline-flex;align-items:center;cursor:pointer}.pipeline-list .entry-del:hover{color:var(--red)}button.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.btn-primary:hover{background:#6db1ff}button.btn-danger{background:var(--red);color:#fff;border-color:var(--red)}button.btn-danger:hover{background:#ff8a8a}.sidebar-bottom-btn{margin-top:8px;width:100%;background:transparent;border:1px dashed var(--border);color:var(--fg-dim);padding:6px;font-size:11px}.sidebar-bottom-btn:hover{color:var(--fg);border-color:var(--accent)}.pipeline-new-btn{margin-top:4px;width:100%;background:transparent;border:1px dashed var(--border);color:var(--fg-dim);padding:6px;font-size:11px;border-radius:3px;cursor:pointer}.pipeline-new-btn:hover{color:var(--fg);border-color:var(--accent)}.canvas-host{grid-area:canvas;position:relative;background:var(--bg);overflow:hidden;-webkit-user-select:none;user-select:none;outline:none}.canvas-host svg{display:block;width:100%;height:100%}.context-menu{position:fixed;background:var(--bg-2);border:1px solid var(--border);border-radius:4px;padding:4px 0;min-width:200px;max-height:70vh;overflow:auto;z-index:1500;box-shadow:0 6px 24px #0006}.context-menu button{display:block;width:100%;text-align:left;background:transparent;border:none;border-radius:0;padding:6px 12px;color:var(--fg);display:flex;align-items:center;gap:8px}.context-menu button:hover{background:var(--bg-3)}.context-menu .shortcut{margin-left:auto;color:var(--fg-dim);font-size:11px}.context-menu .item-icon{width:16px;height:16px;flex-shrink:0;color:var(--fg-dim);display:inline-flex}.context-menu hr{border:none;border-top:1px solid var(--border);margin:4px 0}.context-menu .section{padding:4px 12px 2px;font-size:10px;color:var(--fg-dim);text-transform:uppercase;letter-spacing:.5px}.node-rect{fill:var(--bg-2)}.node-outline{fill:none;stroke:var(--border);pointer-events:none;transition:stroke .25s ease-out,stroke-width .25s ease-out}.node-outline.state-running{stroke:var(--yellow);stroke-width:2.5;animation:nodePulse 1.1s ease-in-out infinite}@keyframes nodePulse{0%,to{stroke:var(--yellow);stroke-width:2}50%{stroke:#ffe28a;stroke-width:3.5}}.node-outline.state-done{stroke:var(--green);stroke-width:2;animation:nodeFlashDone .55s ease-out}@keyframes nodeFlashDone{0%{stroke:#aef0bd;stroke-width:4}to{stroke:var(--green);stroke-width:2}}.node-outline.state-queued{stroke:var(--accent);stroke-width:1.5;stroke-dasharray:5 3;opacity:.9}.node-outline.state-error{stroke:var(--red);stroke-width:2}.node:hover .node-outline:not(.state-running):not(.state-done):not(.state-error):not(.state-queued){stroke:var(--fg-dim)}.node:hover .node-header{fill:#404451}.node-selection-ring{fill:none;stroke:var(--accent);stroke-width:1.5;stroke-dasharray:6 4;pointer-events:none}.node-error-btn{cursor:pointer}.node-error-btn circle{fill:var(--red)}.node-error-btn:hover circle{fill:#ff8a8a}.node-retry-badge .retry-bg{fill:var(--yellow)}.node-retry-badge{animation:retryPulse 1.1s ease-in-out infinite}@keyframes retryPulse{0%,to{opacity:.85}50%{opacity:1}}.node-header{fill:var(--bg-3)}.node.kind-source .node-rect{fill:#252b38}.node.kind-source .node-header{fill:#2e3a52}.node.kind-source:hover .node-header{fill:#3a4a68}.node.kind-finish .node-rect{fill:#253229}.node.kind-finish .node-header{fill:#2e4838}.node.kind-finish:hover .node-header{fill:#3a5a48}.node-title{fill:var(--fg);font-size:12px;font-weight:600;pointer-events:none}.port-text{fill:var(--fg);font-size:11px;pointer-events:none}.port-image{fill:var(--accent-2);font-size:11px;pointer-events:none}.port-circle.text{fill:var(--accent);stroke:var(--bg);stroke-width:1}.port-circle.image{fill:var(--accent-2);stroke:var(--bg);stroke-width:1}.port-circle{transform-box:fill-box;transform-origin:center;transition:transform .12s ease-out,stroke .12s ease-out,stroke-width .12s ease-out,filter .12s ease-out}.port-hit{fill:transparent;cursor:crosshair}.port-input-row{display:flex;align-items:center;gap:2px;height:18px;width:100%}.port-name-input{flex:none;min-width:0;background:transparent;border:1px solid transparent;border-radius:3px;color:var(--fg-dim);font-size:11px;font-family:inherit;padding:0 3px;height:16px;box-sizing:border-box}.port-name-input::placeholder{color:var(--fg-dim);opacity:.5}.port-name-input:hover{border-color:var(--border)}.port-name-input:focus{color:var(--fg);border-color:var(--accent);background:var(--bg);outline:none}.port-del-btn{flex:none;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;color:var(--fg-dim);cursor:pointer;padding:0;border-radius:3px}.port-del-btn:hover{color:var(--red)}.port-add-btn{cursor:pointer}.port-add-circle{fill:var(--bg-3);stroke:var(--border);stroke-width:1}.port-add-btn:hover .port-add-circle{fill:var(--bg-2);stroke:var(--accent)}.port-add-plus{stroke:var(--fg-dim);stroke-width:1.6;stroke-linecap:round}.port-add-btn:hover .port-add-plus{stroke:var(--accent)}.port-add-btn.reject .port-add-circle{fill:var(--bg-2);stroke:var(--red)}.port-add-x{stroke:var(--red);stroke-width:1.8;stroke-linecap:round}.port-add-menu{display:flex;flex-direction:column;background:var(--bg-2);border:1px solid var(--border);border-radius:4px;overflow:hidden;box-shadow:0 4px 14px #0006}.port-add-menu button{background:transparent;border:none;color:var(--fg);text-align:left;padding:4px 10px;font-size:11px;cursor:pointer;text-transform:capitalize}.port-add-menu button:hover{background:var(--bg-3)}.port:hover .port-circle{transform:scale(1.75);stroke:var(--fg);stroke-width:1.5}.port.text:hover .port-circle{filter:drop-shadow(0 0 5px var(--accent))}.port.image:hover .port-circle{filter:drop-shadow(0 0 5px var(--accent-2))}.edge{cursor:pointer}.edge-hit{fill:none;stroke:transparent;stroke-width:14;cursor:pointer;pointer-events:stroke}.edge-path{fill:none;stroke-width:2;transition:stroke-width .15s ease-out,filter .15s ease-out}.edge-path.text{stroke:var(--accent)}.edge-path.image{stroke:var(--accent-2)}.edge-path.preview{stroke-dasharray:4 4;opacity:.7;cursor:default}.edge:hover .edge-path:not(.preview){stroke-width:4;filter:drop-shadow(0 0 6px currentColor)}.edge-path.edge-state-queued{stroke:var(--accent);stroke-dasharray:5 3;opacity:.9}.edge-path.edge-state-running{stroke:var(--yellow);stroke-width:3;stroke-dasharray:6 4;animation:edgeFlow .7s linear infinite reverse}.edge-path.edge-state-done{stroke:var(--green);stroke-width:3.5;filter:drop-shadow(0 0 5px var(--green))}.edge-path.edge-state-error{stroke:var(--red);stroke-width:2.5}@keyframes edgeFlow{to{stroke-dashoffset:-12}}.selection-rect{fill:#58a6ff1a;stroke:var(--accent);stroke-dasharray:4 4}.play-btn{fill:var(--green);cursor:pointer}.play-btn:hover{fill:#7be091}.refresh-btn{fill:var(--accent);cursor:pointer}.refresh-btn:hover{fill:#6db1ff}.stop-btn{fill:var(--red);cursor:pointer}.stop-btn:hover{fill:#ff8c8c}.node-play-btn,.node-refresh-btn{cursor:pointer}.node-body-host{width:100%;height:100%;padding:6px 10px 8px;font-size:11px;color:var(--fg);overflow:hidden}.node-body{display:flex;flex-direction:column;gap:4px;height:100%}.node-body .row{display:grid;grid-template-columns:50px 1fr;gap:6px;align-items:center}.node-body label{color:var(--fg-dim);font-size:10px}.node-body input[type=text],.node-body select,.node-body textarea{width:100%;font-size:11px;padding:3px 5px;background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:3px;box-sizing:border-box}.node-body textarea{resize:none;min-height:0;font-family:inherit}.node-body .kv-list{display:flex;flex-direction:column;gap:3px;margin-top:2px}.node-body .kv-row{display:grid;grid-template-columns:1fr 1fr 22px;gap:3px}.node-body .kv-row button{padding:0;line-height:1;height:22px;background:var(--bg-3);border:1px solid var(--border);border-radius:3px;color:var(--fg)}.node-body .kv-add{align-self:flex-start;background:transparent;border:1px dashed var(--border);color:var(--fg-dim);font-size:10px;padding:2px 8px;border-radius:3px}.node-body .muted-line{color:var(--fg-dim);font-size:10px;padding:2px}.node-body .muted-line b{color:var(--accent);font-weight:600}.model-row{display:flex;align-items:center;gap:4px}.model-row input{flex:1;min-width:0}.model-list-btn{flex:none;width:26px;height:24px;padding:0;line-height:1;background:var(--bg-3);border:1px solid var(--border);border-radius:3px;color:var(--fg-dim);cursor:pointer}.model-list-btn:hover{color:var(--fg);border-color:var(--accent)}.node-body .kv2{display:flex;flex-direction:column;gap:2px;padding:4px 4px 6px;background:var(--bg);border:1px solid var(--border);border-radius:3px;margin-bottom:4px}.node-body .kv2-head{display:grid;grid-template-columns:1fr 22px;gap:4px;align-items:center}.node-body .kv2-key{width:100%;font-size:11px;padding:2px 5px;background:var(--bg-2);color:var(--fg);border:1px solid var(--border);border-radius:3px}.node-body .kv2-del{display:inline-flex;align-items:center;justify-content:center;height:22px;width:22px;padding:0;background:transparent;border:1px solid var(--border);border-radius:3px;color:var(--fg-dim);cursor:pointer}.node-body .kv2-del:hover{color:var(--red);border-color:var(--red)}.node-body .slot-list{display:flex;flex-direction:column;gap:4px}.node-body .slot-row{display:grid;grid-template-columns:1fr 22px;gap:4px;align-items:center}.node-body .slot-name{width:100%;font-size:11px;padding:3px 6px;background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:3px}.node-body .kv2-val{width:100%;font-size:11px;padding:3px 5px;min-height:38px;resize:none;background:var(--bg-2);color:var(--fg);border:1px solid var(--border);border-radius:3px;font-family:inherit}.path-row{display:grid;grid-template-columns:1fr 22px;gap:4px}.picker-btn{height:22px;width:22px;padding:0;display:inline-flex;align-items:center;justify-content:center;background:var(--bg-3);border:1px solid var(--border);border-radius:3px;color:var(--fg-dim);cursor:pointer}.picker-btn:hover{color:var(--fg)}.image-body{gap:6px}.image-preview-wrap{flex:1;display:flex;align-items:center;justify-content:center;background:var(--bg);border:1px solid var(--border);border-radius:3px;overflow:hidden;min-height:60px}.image-preview{display:block;object-fit:contain;image-rendering:pixelated}.image-preview-frame{display:flex;align-items:center;justify-content:center;overflow:hidden}.image-preview-img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;image-rendering:pixelated;display:block;background:repeating-conic-gradient(#2a2c30 0,#2a2c30 25%,#353841 0,#353841 50%) 0 0 / 12px 12px}.image-preview.empty{display:flex;align-items:center;justify-content:center;color:var(--fg-dim);font-size:18px;border:1px dashed var(--border);border-radius:3px;background:transparent}.picker-actions{display:flex;gap:4px}.picker-actions button{flex:1;font-size:11px;padding:3px 6px;background:var(--bg-3);border:1px solid var(--border);border-radius:3px;color:var(--fg);cursor:pointer}.picker-actions button:hover{background:#404451}.crop-editor{position:relative;flex:1;min-height:140px;background:var(--bg);border:1px solid var(--border);border-radius:3px;overflow:hidden;touch-action:none}.crop-img{position:absolute;display:block;image-rendering:pixelated;max-width:100%;max-height:100%;object-fit:contain;background:repeating-conic-gradient(#2a2c30 0,#2a2c30 25%,#353841 0,#353841 50%) 0 0 / 12px 12px;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.crop-rect{position:absolute;cursor:move;border:1px solid rgba(255,255,255,.9);box-shadow:0 0 0 9999px #000000b8}.crop-handle{position:absolute;box-sizing:border-box;touch-action:none}.crop-handle:before{content:"";position:absolute;top:-9px;right:-9px;bottom:-9px;left:-9px}.ch-nw,.ch-ne,.ch-sw,.ch-se{width:15px;height:15px;border:0 solid #fff}.ch-nw{transform:translate(calc(-100% - 2px),calc(-100% - 2px));border-right-width:3px;border-bottom-width:3px;cursor:nwse-resize}.ch-ne{transform:translate(2px,calc(-100% - 2px));border-left-width:3px;border-bottom-width:3px;cursor:nesw-resize}.ch-sw{transform:translate(calc(-100% - 2px),2px);border-right-width:3px;border-top-width:3px;cursor:nesw-resize}.ch-se{transform:translate(2px,2px);border-left-width:3px;border-top-width:3px;cursor:nwse-resize}.ch-n,.ch-s{width:26px;height:3px;background:#fff}.ch-e,.ch-w{width:3px;height:26px;background:#fff}.ch-n{transform:translate(-50%,-7px);cursor:ns-resize}.ch-s{transform:translate(-50%,7px);cursor:ns-resize}.ch-w{transform:translate(-7px,-50%);cursor:ew-resize}.ch-e{transform:translate(7px,-50%);cursor:ew-resize}.result-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.result-head .muted-line{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.crop-toggle{display:inline-flex;align-items:center;gap:4px;flex:none;font-size:10px;padding:2px 7px;background:transparent;border:1px solid var(--border);border-radius:3px;color:var(--fg-dim);cursor:pointer}.crop-toggle:hover{color:var(--fg);border-color:var(--accent)}.crop-toggle.on{color:var(--fg);background:var(--bg-3);border-color:var(--accent)}.resize-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.resize-toggle{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--fg-dim);cursor:pointer}.resize-fields{display:flex;align-items:center;gap:4px}.resize-num{width:58px}.resize-num[readonly]{opacity:.6;cursor:default}.resize-row .crop-toggle{margin-left:auto;align-self:stretch}.resize-lock{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;flex:none;background:transparent;border:1px solid var(--border);border-radius:3px;color:var(--fg-dim);cursor:pointer}.resize-lock.on{color:var(--accent);border-color:var(--accent)}.resize-lock:disabled{opacity:.4;cursor:default}.draw-body{gap:4px}.draw-over{display:flex;flex-direction:column;min-height:0;border:1px solid var(--border);border-radius:4px}.draw-over.open{flex:1}.draw-over-toggle{display:flex;align-items:center;gap:6px;width:100%;text-align:left;background:var(--bg-3);border:none;border-radius:3px;color:var(--fg-dim);font-size:11px;padding:5px 8px;cursor:pointer}.draw-over.open .draw-over-toggle{border-radius:3px 3px 0 0;border-bottom:1px solid var(--border)}.draw-over-toggle:hover{color:var(--fg)}.draw-over-chevron{display:inline-block;font-size:9px;transition:transform .12s ease-out}.draw-over-chevron.open{transform:rotate(90deg)}.draw-over-content{display:flex;flex-direction:column;flex:1;min-height:0;gap:4px;padding:4px}.draw-toolbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.draw-color-wrap{position:relative}.draw-color-btn{width:26px;height:20px;border-radius:3px;border:1px solid var(--border);cursor:pointer;padding:0}.draw-palette{position:absolute;top:22px;left:0;z-index:10;background:var(--bg-2);border:1px solid var(--border);border-radius:6px;padding:6px;display:flex;flex-direction:column;gap:6px;box-shadow:0 6px 18px #00000073}.draw-swatches{display:grid;grid-template-columns:repeat(6,16px);gap:4px}.draw-swatch{width:16px;height:16px;border-radius:3px;border:1px solid var(--border);cursor:pointer;padding:0}.draw-swatch.active{outline:2px solid var(--fg);outline-offset:1px}.cp{display:flex;flex-direction:column;gap:6px;width:150px}.cp-sv{position:relative;width:150px;height:88px;border-radius:3px;cursor:crosshair;touch-action:none}.cp-hue{position:relative;width:150px;height:12px;border-radius:6px;cursor:pointer;touch-action:none;background:linear-gradient(to right,red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.cp-sv-dot,.cp-hue-dot{position:absolute;width:10px;height:10px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #00000080;transform:translate(-50%,-50%);pointer-events:none}.cp-hue-dot{top:50%}.cp-row{display:flex;align-items:center;gap:6px}.cp-preview{width:22px;height:18px;border-radius:3px;border:1px solid var(--border);flex:none}.cp-hex{flex:1;min-width:0;font-size:11px;padding:2px 5px;background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:3px}.draw-ctl{display:flex;align-items:center;gap:4px;color:var(--fg-dim)}.draw-alpha{font-size:11px;width:10px;text-align:center}.draw-ctl input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:60px;height:4px;border-radius:2px;background:var(--bg-3);cursor:pointer;outline:none}.draw-ctl input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:12px;height:12px;border-radius:50%;background:var(--accent);border:none;cursor:pointer}.draw-ctl input[type=range]::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:var(--accent);border:none;cursor:pointer}.draw-ctl input[type=range]::-moz-range-track{height:4px;border-radius:2px;background:var(--bg-3)}.draw-tools{display:flex;align-items:center;gap:4px}.draw-actions{margin-left:auto;display:flex;align-items:center;gap:4px}.draw-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:20px;padding:0;background:transparent;border:1px solid var(--border);border-radius:3px;color:var(--fg-dim);cursor:pointer}.draw-icon-btn:hover:not(:disabled){color:var(--fg);border-color:var(--accent)}.draw-icon-btn.active{color:var(--fg);background:var(--bg-3);border-color:var(--accent)}.draw-icon-btn.danger:hover:not(:disabled){color:var(--red);border-color:var(--red)}.draw-icon-btn:disabled{opacity:.4;cursor:default}.draw-cursor{position:absolute;border-radius:50%;border:1px solid rgba(255,255,255,.9);box-shadow:0 0 0 1px #0000008c;transform:translate(-50%,-50%);pointer-events:none}.draw-cursor.eraser{border-style:dashed;border-color:#fff}.draw-area{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;background:repeating-conic-gradient(#2a2c30 0,#2a2c30 25%,#353841 0,#353841 50%) 0 0 / 12px 12px;border:1px solid var(--border);border-radius:3px;overflow:hidden}.draw-stage{position:relative;max-width:100%;max-height:100%}.draw-bg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:fill;pointer-events:none}.draw-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;cursor:crosshair;touch-action:none}.node-output{margin-top:4px;min-height:60px;background:repeating-conic-gradient(#2a2c30 0,#2a2c30 25%,#353841 0,#353841 50%) 0 0 / 12px 12px;border:1px solid var(--border);border-radius:3px;overflow:hidden;flex:1}.node-output.empty{display:flex;align-items:center;justify-content:center;color:var(--fg-dim);font-size:10px;background:transparent;border:1px dashed var(--border)}.node-output.image{display:flex;align-items:center;justify-content:center;background:var(--bg);padding:2px}.preview-img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;image-rendering:pixelated;display:block;background:repeating-conic-gradient(#2a2c30 0,#2a2c30 25%,#353841 0,#353841 50%) 0 0 / 12px 12px}.node-output.text{background:var(--bg);padding:4px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:10px;white-space:pre-wrap;word-break:break-word;margin:0;overflow:auto;color:var(--fg)}.node-output.markdown{background:var(--bg);padding:4px 8px;font-size:11px;line-height:1.45;color:var(--fg);overflow:auto;word-break:break-word}.node-output.markdown>:first-child{margin-top:0}.node-output.markdown>:last-child{margin-bottom:0}.node-output.markdown p{margin:4px 0}.node-output.markdown h1,.node-output.markdown h2,.node-output.markdown h3,.node-output.markdown h4,.node-output.markdown h5,.node-output.markdown h6{margin:6px 0 3px;font-weight:700;line-height:1.2}.node-output.markdown h1{font-size:15px}.node-output.markdown h2{font-size:14px}.node-output.markdown h3{font-size:13px}.node-output.markdown h4,.node-output.markdown h5,.node-output.markdown h6{font-size:12px}.node-output.markdown ul,.node-output.markdown ol{margin:4px 0;padding-left:18px}.node-output.markdown li{margin:2px 0}.node-output.markdown code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:10px;background:var(--bg-3);padding:1px 4px;border-radius:3px}.node-output.markdown pre{background:var(--bg-3);padding:6px 8px;border-radius:4px;overflow:auto;margin:4px 0}.node-output.markdown pre code{background:none;padding:0}.node-output.markdown a{color:var(--accent)}.node-output.markdown blockquote{margin:4px 0;padding-left:8px;border-left:2px solid var(--border);color:var(--fg-dim)}.node-output.markdown table{border-collapse:collapse;margin:4px 0}.node-output.markdown th,.node-output.markdown td{border:1px solid var(--border);padding:2px 6px}.node-output.markdown img{max-width:100%}.node-output.markdown hr{border:none;border-top:1px solid var(--border);margin:6px 0}.resize-handle{cursor:nwse-resize}.resize-handle:hover path{stroke:var(--fg)}.resize-edge,.resize-corner{fill:transparent;transition:fill .12s ease-out}.resize-edge:hover{fill:var(--accent);fill-opacity:.55}.resize-corner:hover{fill:var(--accent);fill-opacity:.75}.dialog.file-picker{width:640px;min-width:640px}.picker-toolbar{display:flex;align-items:center;gap:6px;padding:4px 0 8px;border-bottom:1px solid var(--border);margin-bottom:8px}.picker-toolbar select{padding:3px 6px}.picker-breadcrumb{color:var(--fg-dim);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;margin-left:4px}.picker-list{display:flex;flex-direction:column;max-height:50vh;overflow:auto;gap:2px}.picker-list.with-thumbs .picker-entry.file{height:52px}.picker-entry{display:flex;align-items:center;gap:8px;padding:4px 8px;background:transparent;border:1px solid transparent;border-radius:3px;text-align:left;color:var(--fg);cursor:pointer}.picker-entry:hover{background:var(--bg-3);border-color:var(--border)}.picker-entry.folder{color:var(--accent)}.picker-entry .entry-icon{font-size:16px;width:24px;display:inline-flex;justify-content:center}.picker-entry .entry-name{flex:1}.toast-stack{position:fixed;right:12px;bottom:12px;display:flex;flex-direction:column;gap:6px;z-index:2000;pointer-events:none;max-width:340px}.toast{pointer-events:auto;display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--bg-2);border:1px solid var(--border);border-left:3px solid var(--fg-dim);border-radius:3px;text-align:left;cursor:pointer;font-size:12px;box-shadow:0 4px 14px #0006;animation:toastSlideIn .2s ease-out}.toast.toast-info{border-left-color:var(--accent)}.toast.toast-error{border-left-color:var(--red)}.toast-icon{display:inline-flex;flex-shrink:0;color:var(--fg-dim)}.toast.toast-info .toast-icon{color:var(--accent)}.toast.toast-error .toast-icon{color:var(--red)}.toast-message{flex:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:var(--fg)}.toast-close{display:inline-flex;align-items:center;color:var(--fg-dim);cursor:pointer;padding:2px;border-radius:2px}.toast-close:hover{color:var(--fg);background:var(--bg-3)}@keyframes toastSlideIn{0%{transform:translate(20px);opacity:0}to{transform:translate(0);opacity:1}}
