.canvas-card{background:var(--card);width:100%;height:100%;box-shadow:0 0 0 1px var(--border),0 1px 2px #0001;border-radius:6px;position:relative;overflow:visible}.canvas-card:hover{box-shadow:0 0 0 1px var(--border),0 4px 6px -1px #0002}.canvas-card.is-selected{box-shadow:0 0 0 2px var(--canvas-selected-border),0 0 0 4px var(--canvas-selected-glow)}.canvas-card-body{border-radius:6px;width:100%;height:100%;position:relative;overflow:hidden}.canvas-preview-placeholder{width:100%;height:100%;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex}.canvas-preview-placeholder button{color:var(--cyan);border-radius:5px;align-items:center;gap:4px;padding:4px 6px;font-size:11px;display:flex}.canvas-card-body>img,.canvas-card-body>video{object-fit:cover;-webkit-user-select:none;user-select:none;width:100%;height:100%}.canvas-card-body>video{background:var(--card);object-fit:cover}.canvas-note{white-space:pre-wrap;word-break:break-word;height:100%;padding:12px;font-size:14px;line-height:1.65;overflow:hidden}.canvas-card-body>textarea{color:var(--text-strong);resize:none;background:0 0;border:0;outline:0;width:100%;height:100%;padding:12px;font-size:14px;line-height:1.65}.canvas-card .react-flow__handle{z-index:40;cursor:crosshair;background:0 0;border:0;border-radius:50%;width:36px;height:36px}.canvas-card .react-flow__handle:after{content:"";width:calc(18px * var(--canvas-controls-scale,1));height:calc(18px * var(--canvas-controls-scale,1));background:var(--cyan);border:calc(2px * var(--canvas-controls-scale,1)) solid var(--card);opacity:0;box-shadow:0 0 calc(10px * var(--canvas-controls-scale,1)) color-mix(in oklab,var(--cyan) 60%,transparent);pointer-events:none;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.canvas-card:hover .react-flow__handle:after{opacity:1}.canvas-card .react-flow__handle:hover:after{transform:translate(-50%,-50%)scale(1.2)}.canvas-node-delete{right:calc(-22px * var(--canvas-controls-scale,1));top:calc(-22px * var(--canvas-controls-scale,1));transform:scale(var(--canvas-controls-scale,1));transform-origin:100% 0;z-index:45;background:var(--card);border:1px solid var(--border);width:24px;height:24px;color:var(--text-muted);border-radius:50%;justify-content:center;align-items:center;display:none;position:absolute;box-shadow:0 1px 3px #0003}.canvas-card:hover>.canvas-node-delete,.canvas-card.is-delete-hover>.canvas-node-delete,.canvas-card.is-selected>.canvas-node-delete,.canvas-card:focus-within>.canvas-node-delete,.canvas-node-delete:focus-visible{display:flex}.canvas-node-delete:hover{color:var(--destructive)}.canvas-card.is-long-dragging,.canvas-card.is-long-dragging *{cursor:grabbing!important;-webkit-user-select:none!important;user-select:none!important}.canvas-lock{border:1px solid var(--border);background:var(--card);width:20px;height:20px;color:var(--text-muted);z-index:45;border-radius:50%;place-items:center;display:grid;position:absolute;top:8px;left:8px}.canvas-card .canvas-resize-corner{border:0;border-bottom:2px solid var(--cyan);border-right:2px solid var(--cyan);z-index:45;cursor:nwse-resize;background:0 0;width:10px;height:10px;bottom:-2px;right:-2px;transform:none}.canvas-inline-composer{width:100%;min-width:760px;min-height:0;position:relative}.canvas-result-return{z-index:46;border:1px solid var(--border);background:var(--card);color:var(--cyan);cursor:pointer;border-radius:8px;align-items:center;gap:6px;padding:5px 10px;font-size:12px;display:flex;position:absolute;top:-34px;right:16px}.canvas-composer-grip{z-index:45;cursor:move;justify-content:center;align-items:flex-start;width:160px;height:32px;padding-top:6px;display:flex;position:absolute;top:0;left:50%;transform:translate(-50%)}.canvas-composer-grip i{background:color-mix(in oklab,var(--text-muted) 30%,transparent);opacity:0;border-radius:999px;width:56px;height:6px}.canvas-card:hover .canvas-composer-grip i{opacity:1}.canvas-composer-grip:hover i{background:color-mix(in oklab,var(--text-muted) 60%,transparent)}.canvas-composer-distant{border:3px solid var(--border);border-radius:var(--canvas-composer-radius);background:var(--card);height:100%;min-height:0;color:var(--text-muted);padding:28px 24px;font-size:20px}.canvas-composer-distant>div{margin-top:24px;font-size:16px}.canvas-linked-text{color:var(--text-muted);padding:8px 12px;font-size:12px}.canvas-linked-text pre{white-space:pre-wrap;max-height:150px;overflow:auto}.canvas-node-error{background:color-mix(in oklab,var(--destructive) 10%,transparent);color:var(--destructive);border-radius:6px;padding:12px;font-size:12px;line-height:1.6}.canvas-generating{border-radius:6px;flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex;position:absolute;inset:0;overflow:hidden}.canvas-generating>span{color:#fff;background:#0009;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;display:flex;position:absolute;top:12px;left:12px}.canvas-generating p{color:var(--text-muted);padding:25px;font-size:12px}.canvas-generating>i{background:linear-gradient(90deg,transparent,var(--cyan),transparent);background-size:200% 100%;height:3px;animation:2s linear infinite gen-flow;position:absolute;bottom:0;left:0;right:0}.canvas-media-tools{--canvas-controls-preferred-width:calc(var(--canvas-action-count,3) * 32px);top:calc(8px * var(--canvas-controls-scale,1));transform:translate(-50%) scale(var(--canvas-controls-scale,1));transform-origin:top;width:min(var(--canvas-controls-preferred-width),calc(100% / var(--canvas-controls-scale,1)));grid-template-columns:repeat(var(--canvas-action-count,3),minmax(0,1fr));opacity:0;pointer-events:none;z-index:50;justify-items:center;display:grid;position:absolute;left:50%}.canvas-card:hover .canvas-media-tools{opacity:1;pointer-events:auto}.canvas-media-tools button,.canvas-media-tools a{--canvas-action-accent:var(--cyan);color:#fff;cursor:pointer;background:#0009;border:1px solid #ffffff26;border-radius:50%;flex-shrink:0;place-items:center;width:28px;height:28px;transition:background-color .14s,border-color .14s,box-shadow .14s;display:grid}.canvas-media-tools button.is-danger{--canvas-action-accent:var(--destructive)}.canvas-media-tools button:not(:disabled):is(:hover,:focus-visible){background:color-mix(in srgb,var(--canvas-action-accent) 28%,#000c);border-color:color-mix(in srgb,var(--canvas-action-accent) 75%,white);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--canvas-action-accent) 35%,transparent),inset 0 0 12px color-mix(in srgb,var(--canvas-action-accent) 24%,transparent);outline:none}.canvas-media-tools button>svg{transition:transform .14s,filter .14s}.canvas-media-tools button:not(:disabled):is(:hover,:focus-visible)>svg{filter:drop-shadow(0 0 3px color-mix(in srgb,var(--canvas-action-accent) 60%,transparent));transform:translateY(-1px)}.canvas-play{color:#fff;z-index:25;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#000a;border:1px solid #ffffff45;border-radius:50%;place-items:center;width:min(80px,100% - 16px);height:min(80px,100% - 16px);transition:transform .16s,background-color .16s,border-color .16s,box-shadow .16s;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 4px 16px #0004}.canvas-play>svg{fill:currentColor;width:40%;height:40%}.canvas-play:is(:hover,:focus-visible){background:color-mix(in srgb,var(--cyan) 30%,#000b);border-color:color-mix(in srgb,var(--cyan) 75%,white);box-shadow:0 0 0 2px color-mix(in srgb,var(--cyan) 20%,transparent),0 0 20px color-mix(in srgb,var(--cyan) 30%,transparent);outline:none;transform:translate(-50%,-50%)scale(1.04)}.canvas-play.playing{opacity:0}.canvas-card:hover .canvas-play{opacity:1}@media(prefers-reduced-motion:reduce){.canvas-media-tools button,.canvas-media-tools button>svg,.canvas-play{transition:none}}.canvas-audio{background:var(--card);flex-direction:column;justify-content:center;align-items:center;gap:16px;height:100%;padding:20px;display:flex}.canvas-audio>svg{box-sizing:content-box;background:color-mix(in oklab,var(--cyan) 12%,transparent);color:var(--cyan);border-radius:16px;padding:14px}.canvas-audio span{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:14px;font-weight:500;overflow:hidden}.canvas-audio small{color:var(--text-muted);font-size:12px}.canvas-audio audio{width:100%;max-width:360px}.canvas-media-placeholder{height:100%;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:12px;font-size:12px;display:flex;overflow:hidden}.canvas-media-placeholder>img{object-fit:cover;width:100%;height:100%}.canvas-upload-overlay{color:#fff;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);background:#0006;flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex;position:absolute;inset:0}.canvas-upload-overlay b{font-size:12px}.canvas-upload-overlay progress{accent-color:#fff;max-width:180px;height:5px}.canvas-card-body>video{pointer-events:none}.canvas-media-tools button:disabled{cursor:wait;opacity:.5}.canvas-card:focus-within .canvas-media-tools{opacity:1;pointer-events:auto}.canvas-media-caption{z-index:25;color:#fff;opacity:0;pointer-events:auto;-webkit-user-select:none;user-select:none;background:#000a;border-radius:6px;align-items:center;gap:6px;padding:5px 8px;font-size:12px;display:flex;position:absolute;bottom:10px;left:10px;right:10px}.canvas-media-caption>svg{flex:none}.canvas-media-caption>span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.canvas-media-caption small{color:#fffc;flex:none;font-size:11px}.canvas-card:hover .canvas-media-caption,.canvas-card:focus-within .canvas-media-caption{opacity:1}.canvas-audio audio{z-index:20;position:relative}.canvas-card.is-composer{--canvas-composer-radius:23px;border-radius:var(--canvas-composer-radius);box-shadow:none;background:0 0}.canvas-card.is-composer.is-selected{box-shadow:none}.canvas-composer-content{height:100%}.canvas-composer-loading{border:1px solid var(--border);border-radius:var(--canvas-composer-radius);background:var(--card);height:100%;color:var(--text-muted);place-items:center;display:grid}.canvas-composer-distant{overflow:hidden}.canvas-composer-distant>p{-webkit-line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.canvas-composer-distant>div{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.canvas-card.is-composer .composer-sticker[data-canvas=true]{border-radius:var(--canvas-composer-radius);justify-content:flex-start;padding:14px 18px;box-shadow:0 1px 4px #0002}.canvas-card.is-composer.is-selected .composer-sticker,.canvas-card.is-composer.is-selected .canvas-composer-distant{border-color:var(--canvas-selected-border);box-shadow:0 0 0 2px var(--canvas-selected-glow)}.canvas-card.is-composer .composer-editor{min-width:0}.canvas-card.is-composer .prompt-editor{padding-top:4px;padding-bottom:4px}.canvas-card.is-composer .composer-tools{border-top-width:1px;margin-top:12px;padding-top:12px}.canvas-card.is-composer .composer-generate-group{align-self:center}.canvas-minimap-wrap,.canvas-minimap-open{z-index:20;border:1px solid color-mix(in oklab,var(--border) 75%,transparent);background:color-mix(in oklab,var(--card) 88%,transparent);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);position:absolute;bottom:96px;right:20px;box-shadow:0 8px 30px -12px #0009}.canvas-minimap-wrap{border-radius:12px;padding:4px}.canvas-minimap-header{height:26px;color:var(--text-muted);align-items:center;gap:4px;padding:0 3px 2px 5px;display:flex}.canvas-minimap-header>span{align-items:center;gap:4px;font-size:12px;display:flex}.canvas-minimap-header>small{margin-left:auto;font-size:10px}.canvas-minimap-header>button{cursor:pointer;border-radius:6px;flex:0 0 22px;place-items:center;width:22px;height:22px;display:grid}.canvas-minimap-header>button:hover:not(:disabled){color:var(--cyan);background:var(--secondary)}.canvas-minimap-header>button:disabled{opacity:.35;cursor:default}.canvas-minimap-open{width:36px;height:36px;color:var(--text-muted);cursor:pointer;border-radius:12px;place-items:center;display:grid}.canvas-radar{background:color-mix(in oklab,var(--background) 70%,transparent);cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:8px;position:relative;overflow:hidden}.canvas-radar[aria-disabled=true]{cursor:default}.canvas-radar svg{display:block}.canvas-radar:focus-visible,.canvas-minimap-header>button:focus-visible,.canvas-minimap-open:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.canvas-radar.is-navigating,.canvas-radar.is-navigating *{cursor:grabbing!important}.canvas-radar-node{fill:color-mix(in oklab,var(--cyan) 65%,transparent);stroke:#0000;stroke-width:1.5px;cursor:pointer}.canvas-radar-node[data-kind=generator]{fill:#b881ddb3}.canvas-radar-node[data-kind=text]{fill:color-mix(in oklab,var(--text-muted) 65%,transparent)}.canvas-radar-node.is-selected{stroke:var(--canvas-selected-border,#facc15)}.canvas-radar-viewport{fill:color-mix(in oklab,var(--cyan) 9%,transparent);stroke:var(--cyan);stroke-width:1.2px;pointer-events:none}.canvas-radar-empty{fill:var(--text-muted);pointer-events:none;font-size:11px}.canvas-minimap-legend{height:20px;color:var(--text-muted);justify-content:center;align-items:center;gap:10px;font-size:10px;display:flex}.canvas-minimap-legend>span{align-items:center;gap:4px;display:inline-flex}.canvas-minimap-legend>span:before{content:"";background:var(--cyan);border-radius:1px;width:5px;height:5px}.canvas-minimap-legend>.generator:before{background:#b881dd}.canvas-minimap-legend>.text:before{background:var(--text-muted)}.canvas-selection-effects{--canvas-selected-border:#1d4ed8;--canvas-selected-glow:#2563eb40;--canvas-selection-contrast:#fff;--canvas-edge-active:#2563eb;--canvas-flow-head:#172554;--canvas-flow-tail:#0284c7;display:contents}.dark .canvas-selection-effects{--canvas-selected-border:#fcd34d;--canvas-selected-glow:#fbbf2459;--canvas-selection-contrast:#111827;--canvas-edge-active:#67e8f9;--canvas-flow-head:#fff;--canvas-flow-tail:#22d3ee}.canvas-selection-effects .canvas-card.is-selected{box-shadow:0 0 0 calc(1px * var(--canvas-controls-scale,1)) var(--canvas-selection-contrast),0 0 0 calc(3px * var(--canvas-controls-scale,1)) var(--canvas-selected-border),0 0 0 calc(5px * var(--canvas-controls-scale,1)) var(--canvas-selected-glow)}.canvas-selection-effects .canvas-card.is-composer.is-selected{box-shadow:none}.canvas-selection-effects .canvas-card.is-composer.is-selected .composer-sticker[data-canvas=true],.canvas-selection-effects .canvas-card.is-composer.is-selected .canvas-composer-distant{border-color:var(--canvas-selected-border);box-shadow:0 0 0 calc(2px * var(--canvas-controls-scale,1)) var(--canvas-selected-border),0 0 0 calc(4px * var(--canvas-controls-scale,1)) var(--canvas-selected-glow)}.canvas-edge-flow{pointer-events:none;will-change:transform;visibility:hidden;width:0;height:0;position:absolute;top:0;left:0}.canvas-edge-flow[data-ready=true]{visibility:visible}.canvas-edge-flow>i{width:20px;height:4px;transform:scale(var(--canvas-controls-scale,1));transform-origin:100%;background:linear-gradient(90deg,transparent,var(--canvas-flow-tail) 60%,var(--canvas-flow-head));border-radius:50%;position:absolute;top:-2px;right:0}.canvas-selection-effects[data-motion-paused=true] .canvas-edge-flow{visibility:hidden}@media(prefers-reduced-motion:reduce){.canvas-edge-flow{animation:none;display:none}}.canvas-reference-count{border:1px solid var(--canvas-selected-border);background:var(--card);color:var(--text-strong);pointer-events:none;z-index:25;border-radius:10px;padding:8px 14px;font-size:12px;position:absolute;bottom:24px;left:50%;transform:translate(-50%)}.canvas-workspace .canvas-sidebar-toggle{--sidebar-toggle-accent:#0e7490;--sidebar-toggle-direction:-2px;width:36px;height:36px;color:var(--sidebar-toggle-accent);box-shadow:none;background:0 0;border:0;border-radius:0;flex-shrink:0;place-items:center;padding:0;transition:scale .16s;display:grid;position:relative}.dark .canvas-workspace .canvas-sidebar-toggle{--sidebar-toggle-accent:var(--cyan)}.canvas-workspace .canvas-sidebar-toggle>svg{transition:transform .18s}.canvas-workspace .canvas-sidebar-toggle:is(:hover,:focus-visible){background:0 0}.canvas-workspace .canvas-sidebar-toggle:is(:hover,:focus-visible)>svg{transform:translate(var(--sidebar-toggle-direction));filter:drop-shadow(0 0 4px color-mix(in oklab,var(--sidebar-toggle-accent) 55%,transparent));animation:none}.canvas-workspace .canvas-sidebar-toggle:focus-visible{outline:none}.canvas-workspace .canvas-sidebar-toggle:focus-visible>svg{transform:translate(var(--sidebar-toggle-direction)) scale(1.12)}.canvas-workspace .canvas-sidebar-toggle:active{scale:.94}.canvas-workspace .canvas-sidebar-reopen{--sidebar-toggle-direction:2px;z-index:30;width:38px;height:56px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.canvas-workspace .canvas-sidebar-reopen>svg{animation:1.6s ease-in-out 2 canvas-sidebar-cue}@keyframes canvas-sidebar-cue{0%,65%,to{transform:translate(0)}30%{transform:translate(3px)}}@media(prefers-reduced-motion:reduce){.canvas-workspace .canvas-sidebar-toggle,.canvas-workspace .canvas-sidebar-toggle>svg{transition:none;animation:none}.canvas-workspace .canvas-sidebar-toggle:is(:hover,:focus-visible)>svg{transform:none}.canvas-workspace .canvas-sidebar-toggle:active{scale:1}}.canvas-workspace{background:var(--background);color:var(--text-strong);z-index:20;outline:none;font-size:13px;display:flex;position:fixed;inset:0 0 0 72px}.canvas-workspace button{cursor:pointer}.canvas-workspace button:disabled{cursor:not-allowed;color:var(--text-placeholder)}.canvas-workspace button:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.canvas-cyan{color:var(--cyan)}.canvas-workspace-panel{border-right:1px solid var(--border);background:color-mix(in oklab,var(--card) 95%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);contain:layout paint;z-index:20;flex-direction:column;flex-shrink:0;width:280px;height:100%;display:flex}.canvas-project-switcher{border-bottom:1px solid var(--border);align-items:center;gap:4px;padding:10px;display:flex}.canvas-project-trigger{text-align:left;border-radius:6px;flex:1;align-items:center;gap:6px;min-width:0;height:32px;padding:6px 8px;font-weight:500;display:flex}.canvas-project-trigger>svg:first-child{color:var(--cyan)}.canvas-project-trigger>svg:last-child{color:var(--text-muted);margin-left:auto}.canvas-project-trigger span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.canvas-project-trigger:hover{background:var(--secondary)}.canvas-project-switcher>button{color:var(--text-muted);border-radius:6px;padding:6px}.canvas-project-switcher>button:hover{background:var(--secondary)}.canvas-save-dot{background:var(--amber);border-radius:100%;flex-shrink:0;width:4px;height:4px}.canvas-save-dot.saved{border:1px solid var(--text-muted);opacity:.5;background:0 0}.canvas-save-dot.saved.recent{opacity:1;background:#34d399;border-color:#34d399}.canvas-save-dot.conflict,.canvas-save-dot.error{background:#ef4444}.canvas-board-list{border-bottom:1px solid var(--border);max-height:248px;padding:0 6px 8px;overflow:auto}.canvas-board-list header{color:var(--text-muted);letter-spacing:.5px;justify-content:space-between;align-items:center;padding:8px 6px;font-size:11px;display:flex}.canvas-board-list header button{border-radius:4px;padding:4px}.canvas-board-row{border-radius:6px;align-items:center;gap:6px;min-height:32px;margin-bottom:2px;padding:6px 8px;display:flex}.canvas-board-row.active{background:color-mix(in oklab,var(--cyan) 12%,transparent);color:var(--cyan)}.canvas-board-row:not(.active):hover{background:var(--secondary)}.canvas-board-name{text-align:left;flex:1;align-items:center;gap:6px;min-width:0;font-size:12.5px;display:flex}.canvas-board-name span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.canvas-board-name small{color:var(--text-muted);margin-left:auto;font-size:10px}.canvas-board-more{opacity:0;color:var(--text-muted);border-radius:4px;padding:2px}.canvas-board-row:hover .canvas-board-more,.canvas-board-more:focus-visible{opacity:1}.canvas-asset-tabs{border-bottom:1px solid var(--border);flex-shrink:0;display:flex}.canvas-asset-tabs button{color:var(--text-muted);border-bottom:2px solid #0000;flex:1;justify-content:center;align-items:center;gap:4px;padding:8px 0;font-size:11.5px;display:flex}.canvas-asset-tabs button[aria-selected=true]{color:var(--cyan);border-bottom-color:var(--cyan)}.canvas-assets-scroll{flex:1;min-height:0;padding:8px;overflow:auto}.canvas-assets-empty{text-align:center;color:var(--text-muted);padding:28px 4px;font-size:11px}.canvas-asset-grid{position:relative}.canvas-thumb{border:1px solid var(--border);background:color-mix(in oklab,var(--secondary) 40%,transparent);height:88px;color:var(--text-muted);border-radius:6px;flex-direction:column;justify-content:center;align-items:center;gap:5px;display:flex;overflow:hidden}.canvas-thumb.active,.canvas-thumb:hover{border-color:var(--cyan)}.canvas-thumb img{object-fit:cover;width:100%;height:100%}.canvas-thumb span{max-width:100%;max-height:30px;padding:0 4px;font-size:10px;line-height:15px;overflow:hidden}.canvas-thumb .canvas-thumb-serial{z-index:2;color:#fff;text-align:center;pointer-events:none;background:#071018d9;border-radius:5px;min-width:18px;height:18px;padding:0 4px;font-size:11px;font-weight:600;line-height:18px;position:absolute;top:4px;left:4px}.canvas-sidebar-upload{border:1px dashed var(--border);background:color-mix(in oklab,var(--secondary) 40%,transparent);color:var(--text-muted);border-radius:6px;justify-content:center;align-items:center;gap:6px;margin:8px 8px 0;padding:8px;font-size:12px;display:flex}.canvas-asset-pages{color:var(--text-muted);justify-content:space-between;align-items:center;padding:6px 10px;font-size:11px;display:flex}.canvas-stage{background:var(--background);flex:1;min-width:0;height:100%;position:relative;overflow:hidden}.canvas-scene{position:absolute;inset:0;overflow:hidden}.canvas-scene .react-flow{--xy-background-color:transparent;--xy-selection-background-color:color-mix(in oklab, var(--cyan) 10%, transparent);--xy-selection-border:1px solid var(--cyan)}.canvas-grid{pointer-events:none;background-image:radial-gradient(circle,color-mix(in oklab,var(--border-strong,var(--border)) 60%,transparent) 1px,transparent 1px);position:absolute;inset:0}.canvas-tools{border:1px solid var(--border);background:color-mix(in oklab,var(--card) 95%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:20;white-space:nowrap;border-radius:16px;align-items:center;gap:4px;padding:6px;display:flex;position:absolute;top:20px;left:50%;transform:translate(-50%);box-shadow:0 10px 15px -3px #0002,0 4px 6px -4px #0002}.canvas-tools button{min-width:36px;height:36px;color:var(--text-strong);border-radius:12px;justify-content:center;align-items:center;gap:6px;padding:0 10px;display:flex}.canvas-tools button>svg{stroke-width:1.7px;flex-shrink:0}.canvas-tools button:has(span){min-width:62px}.canvas-tools span{font-size:12px;font-weight:500;line-height:1}.canvas-tools button:hover:not(:disabled){background:var(--secondary)}.canvas-tools button.active{background:color-mix(in oklab,var(--cyan) 15%,transparent);color:var(--cyan)}.canvas-tools button:disabled{color:var(--text-placeholder)}.canvas-tools i{background:var(--border);flex-shrink:0;width:1px;height:24px;margin:0 4px}.canvas-zoom-controls{z-index:20;border:1px solid var(--border);background:color-mix(in oklab,var(--card) 95%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:16px;align-items:center;gap:4px;padding:4px;display:flex;position:absolute;bottom:20px;left:20px;box-shadow:0 10px 15px -3px #0002}.canvas-zoom-controls button{border-radius:8px;justify-content:center;align-items:center;min-width:32px;height:32px;font-size:12px;font-weight:500;display:flex}.canvas-zoom-controls button:nth-child(2){min-width:52px;padding:0 8px}.canvas-zoom-controls button:hover{background:var(--secondary)}.canvas-zoom-controls i{background:var(--border);width:1px;height:20px;margin:0 2px}.canvas-zoom-controls button:last-child{color:var(--text-muted)}.canvas-empty{pointer-events:none;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex;position:absolute;inset:0}.canvas-empty strong{font-size:15px;font-weight:500}.canvas-empty span{color:var(--text-placeholder);font-size:12px}.canvas-context-menu{z-index:100;border:1px solid var(--border);background:var(--popover);min-width:200px;max-height:calc(100vh - 16px);color:var(--text-strong);border-radius:12px;outline:none;padding:4px;position:fixed;overflow-y:auto;box-shadow:0 25px 50px -12px #0007}.canvas-context-menu button{text-align:left;border-radius:8px;align-items:center;gap:10px;width:100%;min-height:30px;padding:6px 10px;font-size:13px;display:flex}.canvas-context-menu button>svg{opacity:.8;stroke-width:1.8px;width:14px;height:14px}.canvas-context-menu button>span{flex:1}.canvas-context-menu small{color:var(--text-muted);margin-left:12px;font-size:11px}.canvas-context-menu button:hover:not(:disabled),.canvas-context-menu button:focus-visible{background:var(--secondary);outline:none}.canvas-context-menu button.danger{color:var(--destructive)}.canvas-context-menu button:disabled{color:var(--text-placeholder);cursor:not-allowed}.canvas-menu-separator{background:var(--border);height:1px;margin:4px 0}.canvas-menu-dismiss{z-index:99;position:fixed;inset:0}.canvas-edge-toolbar{border:1px solid var(--border);background:var(--card);z-index:20;border-radius:16px;padding:4px;position:absolute;top:76px;left:50%;transform:translate(-50%)}.canvas-edge-toolbar button{width:32px;height:32px;color:var(--destructive);border-radius:10px;place-items:center;display:grid}.canvas-marquee{pointer-events:none;border:1px solid var(--cyan);background:color-mix(in oklab,var(--cyan) 10%,transparent);z-index:10;position:absolute}.canvas-save-banner{border:1px solid var(--border);background:var(--popover);max-width:calc(100% - 40px);color:var(--text-muted);z-index:25;border-radius:10px;align-items:center;gap:14px;padding:10px 16px;font-size:12px;display:flex;position:absolute;bottom:76px;left:50%;transform:translate(-50%)}.canvas-save-banner button{color:var(--cyan);white-space:nowrap}.canvas-button{border:1px solid var(--border);background:var(--card);color:var(--text-strong);border-radius:6px;justify-content:center;align-items:center;gap:6px;padding:8px 12px;font-size:12px;display:inline-flex}.canvas-button.primary{background:var(--cyan);color:#06242b;border-color:var(--cyan)}.canvas-button.danger{color:var(--destructive)}.canvas-form{gap:14px;display:grid}.canvas-form input{background:var(--background);border:1px solid var(--border);color:var(--text-strong);border-radius:6px;padding:8px 10px}.canvas-import-text{background:var(--background);border:1px solid var(--border);resize:vertical;border-radius:6px;min-height:160px;max-height:40vh;padding:10px;font-size:12px}.canvas-loading{background:var(--background);height:100%;min-height:200px;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:15px;display:flex}@media(max-width:1100px){.canvas-tools{justify-content:center;gap:2px;left:12px;right:12px;overflow-x:auto;transform:none}.canvas-tools button{padding:0 7px}.canvas-tools button:has(span){min-width:54px}}.canvas-card .react-flow__handle{width:1px;min-width:1px;height:1px;min-height:1px}.canvas-card .react-flow__handle-right{right:0}.canvas-card .react-flow__handle-left{left:0}.canvas-card .react-flow__handle-top{top:0}.canvas-card .react-flow__handle-bottom{bottom:0}.canvas-card .react-flow__handle:before{content:"";width:min(calc(36px * var(--canvas-controls-scale,1)),var(--canvas-handle-hit-limit,210px));height:min(calc(36px * var(--canvas-controls-scale,1)),var(--canvas-handle-hit-limit,210px));position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.canvas-card.is-media .canvas-card-body:after{content:"";opacity:0;pointer-events:none;z-index:10;background:#0005;transition:opacity .2s;position:absolute;inset:0}.canvas-card.is-media:hover .canvas-card-body:after{opacity:1}.canvas-card[data-input-empty=true] .react-flow__handle:after,.canvas-card .react-flow__handle.canvas-port-input:after{opacity:0}.canvas-card .react-flow__handle.canvas-port-input.connectionindicator{z-index:46}.canvas-card .react-flow__handle.connectingto.valid:after,.canvas-card .react-flow__handle.canvas-port-input.connectionindicator:after{opacity:1}.canvas-card .react-flow__handle.connectingto.valid:after{outline:calc(2px * var(--canvas-controls-scale,1)) solid var(--cyan);outline-offset:calc(3px * var(--canvas-controls-scale,1));transform:translate(-50%,-50%)scale(1.3)}.canvas-thumb{aspect-ratio:1;height:auto}.canvas-name-input{border:1px solid var(--border);background:var(--background);width:100%;min-width:0;color:var(--text-strong);border-radius:4px;outline:none;padding:2px 4px;font-size:12px}.canvas-name-input:focus{border-color:var(--cyan)}.canvas-thumb{cursor:pointer}.canvas-thumb-delete{background:color-mix(in oklab,var(--card) 90%,transparent);width:20px;height:20px;color:var(--text-muted);border:1px solid var(--border);border-radius:50%;justify-content:center;align-items:center;display:none;position:absolute;top:4px;right:4px}.canvas-thumb:hover .canvas-thumb-delete,.canvas-thumb:focus-within .canvas-thumb-delete{display:flex}.canvas-thumb-delete:hover{color:var(--destructive)}.canvas-board-row:has(.canvas-name-input) .canvas-board-more{display:none}.canvas-alignment-guides{pointer-events:none;z-index:10;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.canvas-alignment-guides line{stroke:var(--cyan);stroke-width:1px;stroke-dasharray:4 4}
