:root{--font-scale:1;--bg:#f8f9fa;--bg-surface:#ffffff;--bg-raised:#ffffff;--bg-hover:#f0f1f3;--accent:#0969da;--accent-hover:#0860ca;--accent-text:#0969da;--accent-muted:rgba(9,105,218,.08);--accent-glow:rgba(9,105,218,.15);--text:rgba(0,0,0,.85);--text-secondary:rgba(0,0,0,.55);--text-muted:rgba(0,0,0,.3);--border:rgba(0,0,0,.08);--border-hover:rgba(0,0,0,.15);--shadow:rgba(0,0,0,.04);--shadow-lg:rgba(0,0,0,.08);--border-accent:rgba(9,105,218,.3);--radius:8px;--node-radius:12px;--overlay:rgba(255,255,255,.9);--bar-bg:rgba(248,249,250,.92);--grid:rgba(0,0,0,.04);--grid-major:rgba(0,0,0,.08) }[data-theme=github-light]{--bg:#f8f9fa;--bg-surface:#ffffff;--bg-raised:#ffffff;--bg-hover:#f0f1f3;--accent:#0969da;--accent-hover:#0860ca;--accent-text:#0969da;--accent-muted:rgba(9,105,218,.08);--accent-glow:rgba(9,105,218,.15);--text:rgba(0,0,0,.85);--text-secondary:rgba(0,0,0,.55);--text-muted:rgba(0,0,0,.3);--border:rgba(0,0,0,.08);--border-hover:rgba(0,0,0,.15);--shadow:rgba(0,0,0,.04);--shadow-lg:rgba(0,0,0,.08);--border-accent:rgba(9,105,218,.3);--radius:8px;--node-radius:12px;--overlay:rgba(255,255,255,.9);--bar-bg:rgba(248,249,250,.92);--grid:rgba(0,0,0,.04);--grid-major:rgba(0,0,0,.08) }[data-theme=catppuccin]{--bg:#eff1f5;--bg-surface:#ffffff;--bg-raised:#e6e9ef;--bg-hover:#dce0e8;--accent:#dd7878;--accent-hover:#e67e7e;--accent-text:#dd7878;--accent-muted:rgba(221,120,120,.1);--accent-glow:rgba(221,120,120,.2);--text:rgba(76,79,105,.92);--text-secondary:rgba(124,127,147,.8);--text-muted:rgba(156,160,176,.7);--border:rgba(0,0,0,.08);--border-hover:rgba(0,0,0,.15);--shadow:rgba(0,0,0,.04);--shadow-lg:rgba(0,0,0,.08);--border-accent:rgba(221,120,120,.3);--radius:8px;--node-radius:12px;--overlay:rgba(239,241,245,.9);--bar-bg:rgba(239,241,245,.92);--grid:rgba(0,0,0,.04);--grid-major:rgba(0,0,0,.08) }[data-theme=github-dark]{--bg:#0d1117;--bg-surface:#161b22;--bg-raised:#21262d;--bg-hover:#30363d;--accent:#58a6ff;--accent-hover:#79b8ff;--accent-text:#58a6ff;--accent-muted:rgba(88,166,255,.15);--accent-glow:rgba(88,166,255,.3);--text:rgba(230,237,243,.92);--text-secondary:rgba(139,148,158,.8);--text-muted:rgba(110,118,129,.7);--border:rgba(255,255,255,.08);--border-hover:rgba(255,255,255,.15);--shadow:rgba(1,4,9,.6);--shadow-lg:rgba(1,4,9,.8);--border-accent:rgba(88,166,255,.3);--radius:8px;--node-radius:12px;--overlay:rgba(0,0,0,.8);--bar-bg:rgba(13,17,23,.92);--grid:rgba(0,0,0,.04);--grid-major:rgba(0,0,0,.08) }[data-theme=nord]{--bg:#2e3440;--bg-surface:#3b4252;--bg-raised:#434c5e;--bg-hover:#4c566a;--accent:#88c0d0;--accent-hover:#8fbcbb;--accent-text:#88c0d0;--accent-muted:rgba(136,192,208,.15);--accent-glow:rgba(136,192,208,.3);--text:rgba(236,239,244,.92);--text-secondary:rgba(216,222,233,.7);--text-muted:rgba(123,136,161,.6);--border:rgba(255,255,255,.08);--border-hover:rgba(255,255,255,.15);--shadow:rgba(0,0,0,.4);--shadow-lg:rgba(0,0,0,.5);--border-accent:rgba(136,192,208,.3);--radius:8px;--node-radius:12px;--overlay:rgba(46,52,64,.92);--bar-bg:rgba(46,52,64,.92);--grid:rgba(255,255,255,.04);--grid-major:rgba(255,255,255,.08) }[data-theme=excalidraw]{--bg:#ffffff;--bg-surface:#ffffff;--bg-raised:#f1f0ff;--bg-hover:#e8e7fc;--accent:#6965db;--accent-hover:#5753d0;--accent-text:#6965db;--accent-muted:rgba(105,101,219,.1);--accent-glow:rgba(105,101,219,.18);--text:rgba(27,27,31,.92);--text-secondary:rgba(122,122,122,.8);--text-muted:rgba(184,184,184,.7);--border:rgba(197,197,208,.5);--border-hover:rgba(118,118,128,.5);--shadow:rgba(0,0,0,.04);--shadow-lg:rgba(0,0,0,.08);--border-accent:rgba(105,101,219,.3);--radius:8px;--node-radius:12px;--overlay:rgba(255,255,255,.92);--bar-bg:rgba(255,255,255,.92);--grid:rgba(105,101,219,.06);--grid-major:rgba(105,101,219,.12) }[data-theme=excalidraw-dark]{--bg:#121212;--bg-surface:#232329;--bg-raised:#2e2d39;--bg-hover:#3a3848;--accent:#a8a5ff;--accent-hover:#bbb8ff;--accent-text:#a8a5ff;--accent-muted:rgba(168,165,255,.15);--accent-glow:rgba(168,165,255,.25);--text:rgba(227,227,232,.92);--text-secondary:rgba(142,141,156,.8);--text-muted:rgba(110,110,120,.7);--border:rgba(70,70,79,.6);--border-hover:rgba(142,141,156,.4);--shadow:rgba(0,0,0,.4);--shadow-lg:rgba(0,0,0,.6);--border-accent:rgba(168,165,255,.3);--radius:8px;--node-radius:12px;--overlay:rgba(18,18,18,.92);--bar-bg:rgba(18,18,18,.92);--grid:rgba(168,165,255,.06);--grid-major:rgba(168,165,255,.12) }*,:before,:after{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,system-ui,sans-serif}body{overflow:hidden;background:var(--bg);color:var(--text)}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--text-muted);border-radius:2px}#seek-bar:hover .seek-thumb{opacity:1}#video-player::-webkit-media-controls{display:none!important}#vol-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:12px;height:12px;border-radius:50%;background:var(--accent);cursor:pointer;border:none}#vol-slider::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:var(--accent);cursor:pointer;border:none}#graph-container{position:fixed;inset:0;overflow:hidden}#graph-container .ng-node{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--node-radius);cursor:pointer;box-shadow:0 2px 12px var(--shadow);-webkit-user-select:none;-moz-user-select:none;user-select:none}#graph-container .ng-node:hover{border-color:var(--border-hover)}#graph-container .ng-node--selected{border-color:var(--accent)!important;box-shadow:0 0 0 2px var(--accent-glow),0 4px 20px var(--shadow)}#graph-container .ng-node-body{padding:0}.ce-layer{pointer-events:none}.ce-layer .ng-node{pointer-events:all}.ng-text-body{padding:12px 14px;color:var(--text);font-size:calc(12px * var(--font-scale));line-height:1.6;background:var(--bg-surface);border-radius:12px;box-shadow:0 1px 3px var(--shadow);transition:box-shadow .2s,transform .2s}.ng-text-body:hover{box-shadow:0 4px 12px var(--shadow-lg);transform:translateY(-1px)}.ng-text-body .ng-ts{color:var(--accent);font-weight:600;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;margin-right:4px}.ng-image{background:var(--bg-surface);border-radius:12px;overflow:hidden;box-shadow:0 1px 3px var(--shadow);transition:box-shadow .2s,transform .2s}.ng-image:hover{box-shadow:0 4px 12px var(--shadow-lg);transform:translateY(-1px)}.ng-image img{max-width:280px;max-height:160px;width:auto;height:auto;display:block}.ng-image .ng-img-label{padding:6px 10px;font-size:calc(11px * var(--font-scale));color:var(--accent);font-weight:500;display:flex;align-items:center;gap:4px;border-radius:0 0 12px 12px}.ng-image-placeholder{min-width:160px;min-height:100px;display:flex;flex-direction:column;cursor:pointer;border:2px dashed var(--border);border-radius:12px;transition:border-color .2s,box-shadow .2s,transform .2s;box-shadow:0 1px 3px var(--shadow)}.ng-image-placeholder:hover{border-color:var(--accent);box-shadow:0 4px 12px var(--shadow-lg);transform:translateY(-1px)}.ng-image-placeholder .ng-img-placeholder-inner{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:20px 32px;color:var(--text-muted);font-size:calc(11px * var(--font-scale))}.ng-image-placeholder .ng-img-placeholder-inner i{font-size:22px;color:var(--text-muted);opacity:.6}.ng-image-placeholder .ng-img-label{padding:6px 10px;font-size:calc(11px * var(--font-scale));color:var(--accent);font-weight:500;display:flex;align-items:center;gap:4px;border-top:1px solid var(--border)}.canvas-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;pointer-events:none;color:var(--text-muted);font-size:calc(13px * var(--font-scale));transition:opacity .4s;z-index:1;text-align:center;padding:20px}.canvas-empty i{font-size:36px;opacity:.35}.canvas-empty p{margin:0;max-width:280px;line-height:1.5}.vid-node{display:flex;flex-direction:column;overflow:hidden;position:relative;background:#000;border-radius:var(--node-radius)}.vid-node-header{display:flex;flex-direction:column;gap:2px;padding:6px 10px;background:var(--bg-raised);border-bottom:1px solid var(--border);flex-shrink:0;min-width:0}.vid-node-title{font-size:calc(11px * var(--font-scale));color:var(--text);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vid-node-url-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vid-node-url{font-size:calc(10px * var(--font-scale));color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}.vid-player-wrap{flex:1;position:relative;background:#000;overflow:hidden;min-height:340px}.vid-player-wrap video{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;cursor:pointer;display:block}#fallback-canvas{position:absolute;inset:0;width:100%;height:100%;display:none}#spinner{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;transition:opacity .3s}#status-msg{position:absolute;top:16px;left:50%;transform:translate(-50%);padding:6px 14px;border-radius:999px;font-size:calc(11px * var(--font-scale));z-index:15;text-align:center;max-width:80%;pointer-events:none;transition:opacity .4s;background:var(--overlay);backdrop-filter:blur(12px);color:var(--text)}#center-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;transition:opacity .4s;opacity:0}#center-overlay>div{width:64px;height:64px;border-radius:50%;background:var(--border);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center}#center-overlay i{font-size:24px;margin-left:3px;color:var(--text)}.vid-gradient{position:absolute;bottom:0;left:0;right:0;height:80px;background:linear-gradient(to top,rgba(0,0,0,.7),transparent);pointer-events:none}.vid-resize-handle{position:absolute;bottom:0;right:0;width:16px;height:16px;cursor:nwse-resize;background:linear-gradient(135deg,transparent 50%,var(--border-hover) 50%);z-index:20;pointer-events:all;border-radius:0 0 var(--node-radius) 0}.vid-resize-handle:hover{background:linear-gradient(135deg,transparent 50%,var(--accent) 50%)}#toolbar{position:absolute;bottom:0;left:0;right:0;transition:opacity .4s;opacity:1;z-index:10;padding-bottom:2px;background:linear-gradient(to top,rgba(0,0,0,.85) 0%,rgba(0,0,0,.4) 60%,transparent 100%)}#toolbar.hidden{opacity:0;pointer-events:none}#toolbar .tb-btn,#toolbar #time-display,#toolbar #duration-display,#toolbar #time-sep,#toolbar #speed-btn,#toolbar #vol-btn.tb-btn,#toolbar #fs-btn.tb-btn{color:#ffffffd9!important}#toolbar .tb-btn:hover{background:#ffffff1f!important}#seek-bar{width:100%;height:5px;cursor:pointer;position:relative;background:#ffffff26}#seek-progress{height:100%;position:relative;background:var(--accent)}.seek-thumb{position:absolute;right:-5px;top:-4.5px;width:14px;height:14px;border-radius:50%;background:var(--accent);opacity:0;transition:opacity .2s}#seek-hover{position:absolute;top:0;left:0;height:100%;opacity:0;transition:opacity .2s;background:var(--border-hover)}.toolbar-row{display:flex;align-items:center;gap:4px;padding:4px 10px 6px}.toolbar-spacer{flex:1}.toolbar-group{display:flex;align-items:center;gap:6px}#toolbar button,#toolbar input{background:transparent!important;border:none!important}#toolbar .tb-btn{width:26px;height:26px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s;font-size:10px}#play-btn{width:28px!important;height:28px!important;color:#ffffffe6!important;font-size:12px!important;border-radius:50%!important;border:none!important;cursor:pointer!important;display:flex!important;align-items:center!important;justify-content:center!important;background:transparent!important}#play-btn:hover{background:#ffffff1f!important}#vol-slider-wrap{width:0;overflow:hidden;transition:width .2s;display:flex;align-items:center}#vol-slider{width:60px;height:3px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:2px;outline:none;cursor:pointer;background:#ffffff40!important}#speed-btn{padding:2px 6px!important;border-radius:4px!important;font-size:10px!important;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace!important;font-weight:500!important;cursor:pointer!important;background:transparent!important;border:none!important}#speed-btn:hover{background:#ffffff1f!important}#time-display,#duration-display{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace!important;font-size:11px!important}#time-sep{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace!important}.side-toolbar{position:fixed;right:12px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 6px;background:var(--bar-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:16px;z-index:40;box-shadow:0 4px 24px var(--shadow)}.side-toolbar button{display:flex;flex-direction:column;align-items:center;gap:3px;width:50px;padding:10px 0;border:none;border-radius:10px;background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .15s;font-size:calc(10px * var(--font-scale));flex-shrink:0;position:relative}.side-toolbar button:hover{background:var(--bg-hover);color:var(--text)}.side-toolbar button.active{background:var(--accent-muted);color:var(--accent)}.side-toolbar button i{font-size:18px}.side-toolbar button span{line-height:1}#side-auth-btn{color:var(--accent-text)!important}#side-auth-btn:hover{background:var(--accent-muted)!important;color:var(--accent)!important}#theme-btn i{font-size:14px}#node-badge-wrap{display:flex;flex-direction:column;align-items:center;gap:0;padding:6px 0}#node-badge{font-size:14px;font-weight:700;color:var(--accent);font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}#node-badge~span{font-size:calc(8px * var(--font-scale));color:var(--text-muted);letter-spacing:.5px}.toolbar-divider{width:24px;height:1px;background:var(--border);margin:4px 0}.save-context-menu{position:absolute;right:100%;top:50%;transform:translateY(-50%);margin-right:8px;display:flex;flex-direction:column;background:var(--bg-surface);border:1px solid var(--border);border-radius:12px;z-index:41;box-shadow:0 8px 32px var(--shadow);overflow:hidden;white-space:nowrap}.save-context-menu button{display:flex;flex-direction:row;align-items:center;gap:10px;width:auto;padding:12px 18px;border:none;background:transparent;color:var(--text);cursor:pointer;font-size:calc(12px * var(--font-scale));font-weight:500;transition:background .1s}.save-context-menu button:hover{background:var(--bg-hover)}.save-context-menu button:first-child{border-radius:12px 12px 0 0}.save-context-menu button:last-child{border-radius:0 0 12px 12px}.save-context-menu button:first-child:last-child{border-radius:12px}.save-context-menu button i{font-size:14px;width:16px;text-align:center}.theme-context-menu{position:absolute;right:100%;top:50%;transform:translateY(-50%);margin-right:8px;display:flex;flex-direction:column;background:var(--bg-surface);border:1px solid var(--border);border-radius:12px;z-index:41;box-shadow:0 8px 32px var(--shadow);overflow:hidden;white-space:nowrap}.theme-context-menu button{display:flex;flex-direction:row;align-items:center;gap:10px;width:auto;padding:12px 18px;border:none;background:transparent;color:var(--text);cursor:pointer;font-size:calc(12px * var(--font-scale));font-weight:500;transition:background .1s}.theme-context-menu button:hover{background:var(--bg-hover)}.theme-option-label{color:var(--text);margin-left:4px}.theme-swatch{width:12px;height:12px;border-radius:50%;border:1px solid var(--border);flex-shrink:0;box-shadow:inset 0 0 0 1px #ffffff26}.theme-swatch.active{box-shadow:0 0 0 2px var(--accent),inset 0 0 0 1px #ffffff26}.theme-divider{height:1px;background:var(--border);margin:4px 0}.font-size-row{display:flex;align-items:center;justify-content:center;gap:8px;padding:6px 12px}.font-size-btn{width:26px;height:26px;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--text);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:10px;transition:all .15s;flex-shrink:0}.font-size-btn:hover{background:var(--bg-hover);color:var(--text)}.font-size-label{font-size:11px;font-weight:500;color:var(--text);min-width:36px;text-align:center}.bottom-bar{position:fixed;bottom:16px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:6px;padding:8px 12px;background:var(--bar-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:14px;z-index:40;box-shadow:0 4px 24px var(--shadow);max-width:92vw}.bb-card-btn{display:flex;align-items:center;gap:4px;padding:6px 10px;border:none;border-radius:var(--radius);background:var(--bg-raised);color:var(--text-secondary);cursor:pointer;font-size:calc(11px * var(--font-scale));white-space:nowrap;transition:all .15s;flex-shrink:0}.bb-card-btn:hover{background:var(--bg-hover);color:var(--text)}.bb-card-btn.primary{background:var(--accent);color:#fff}.bb-card-btn.primary:hover{background:var(--accent-hover)}.bb-card-btn i{font-size:14px}.bb-card-btn span{line-height:1}.bb-card-btn.recording{background:#e02424;color:#fff;animation:pulse-rec 1.2s ease-in-out infinite}@keyframes pulse-rec{0%,to{box-shadow:0 0 #e0242466}50%{box-shadow:0 0 0 8px #e0242400}}.bb-divider{width:1px;height:20px;background:var(--border);flex-shrink:0}#canvas-input-bar{display:flex;gap:6px;flex-shrink:0}#canvas-input{width:200px;border:1px solid var(--border);border-radius:var(--radius);padding:6px 10px;font-size:calc(12px * var(--font-scale));outline:none;background:var(--bg-raised);color:var(--text)}#canvas-input::-moz-placeholder{color:var(--text-muted)}#canvas-input::placeholder{color:var(--text-muted)}#canvas-input:focus{border-color:var(--accent)}#canvas-input-add{width:28px;height:28px;border-radius:var(--radius);border:none;background:var(--accent);color:var(--text);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:calc(11px * var(--font-scale));flex-shrink:0;transition:background .15s}#canvas-input-add:hover{background:var(--accent-hover)}#ts-dock{display:flex;align-items:center;gap:6px;flex-shrink:0}.dock-item{position:relative;width:30px;height:30px;border-radius:50%;background:var(--bg-raised);border:1px solid var(--border);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0}.dock-item:hover{transform:scale(1.18);background:var(--bg-hover);border-color:var(--border-hover)}.dock-item i{font-size:13px;color:var(--text-secondary);pointer-events:none}.dock-badge{position:absolute;top:-4px;right:-4px;min-width:14px;height:14px;border-radius:7px;padding:0 3px;font-size:8px;font-weight:600;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;text-shadow:0 1px 2px rgba(0,0,0,.3)}.dock-panel{position:absolute;bottom:100%;left:50%;transform:translate(-50%) translateY(4px) scale(.85);margin-bottom:8px;padding:8px 10px;background:var(--bar-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 32px var(--shadow);display:flex;opacity:0;pointer-events:none;white-space:nowrap;z-index:50;transition:transform .25s cubic-bezier(.34,1.56,.64,1),opacity .15s}.dock-panel.open{transform:translate(-50%) translateY(0) scale(1);opacity:1;pointer-events:auto}.dock-chips{display:flex;flex-wrap:nowrap;gap:3px}.ts-chip{padding:2px 7px;border-radius:999px;background:var(--bg-raised);border:1px solid var(--border);font-size:calc(10px * var(--font-scale));color:var(--accent);cursor:pointer;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;transition:all .15s;white-space:nowrap;flex-shrink:0}.ts-chip:hover{background:var(--accent);color:var(--text);border-color:var(--accent)}#canvas-help-btn{position:fixed;bottom:16px;right:12px;z-index:41;width:36px;height:36px;border-radius:50%;border:none;background:var(--bar-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;box-shadow:0 4px 16px var(--shadow);transition:all .15s;padding:0}#canvas-help-btn:hover{background:var(--bg-hover);color:var(--text);box-shadow:0 4px 20px var(--shadow-lg)}#canvas-help-modal{position:absolute;inset:0;z-index:50;display:none}#canvas-help-modal.open{display:block}#canvas-help-backdrop{position:absolute;inset:0;background:#0009;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}#canvas-help-panel{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:360px;max-height:80vh;background:var(--bg-surface);border:1px solid var(--border);border-radius:14px;box-shadow:0 20px 60px var(--shadow-lg);overflow:hidden;display:flex;flex-direction:column}#canvas-help-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border);font-size:calc(13px * var(--font-scale));font-weight:600;color:var(--text);flex-shrink:0}#canvas-help-close{width:26px;height:26px;border-radius:50%;border:none;background:transparent;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:calc(11px * var(--font-scale));transition:all .15s}#canvas-help-close:hover{background:var(--border);color:var(--text-secondary)}#canvas-help-body{padding:12px 18px 18px;overflow-y:auto;flex:1}.help-group{margin-bottom:16px}.help-group:last-child{margin-bottom:0}.help-group-title{font-size:calc(10px * var(--font-scale));font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:8px}.help-row{display:flex;align-items:baseline;justify-content:space-between;padding:4px 0;gap:16px}.help-key{font-size:calc(11px * var(--font-scale));font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;color:var(--accent);white-space:nowrap;flex-shrink:0}.key-kbd{display:inline-block;padding:1px 6px;border-radius:3px;background:var(--bg-raised);border:1px solid var(--border);font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:10px;color:var(--text-secondary)}.help-desc{font-size:calc(11px * var(--font-scale));color:var(--text-secondary);text-align:right}#toast{position:fixed;top:20px;left:50%;transform:translate(-50%) translateY(-16px);padding:10px 20px;border-radius:999px;font-size:calc(12px * var(--font-scale));transition:all .4s;opacity:0;pointer-events:none;display:flex;align-items:center;gap:10px;z-index:70;background:var(--bg-surface);color:var(--text);border:1px solid var(--border)}.toast-icon{color:var(--accent)}#auth-overlay{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center}#auth-backdrop{position:absolute;inset:0;background:#000000b3;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#auth-panel{position:relative;width:340px;background:var(--bg-surface);border:1px solid var(--border);border-radius:16px;box-shadow:0 24px 80px var(--shadow-lg);overflow:hidden}#auth-header{padding:20px 24px 12px;font-size:calc(15px * var(--font-scale));font-weight:600;color:var(--text);text-align:center}#auth-body{padding:8px 24px 24px;display:flex;flex-direction:column;gap:12px}#auth-email-group{display:flex;flex-direction:column;gap:8px}#auth-email-input{width:100%;padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-raised);color:var(--text);font-size:calc(13px * var(--font-scale));outline:none;transition:border-color .15s}#auth-email-input:focus{border-color:var(--accent)}#auth-email-input::-moz-placeholder{color:var(--text-muted)}#auth-email-input::placeholder{color:var(--text-muted)}#auth-magic-btn{width:100%;padding:10px;border:none;border-radius:var(--radius);background:var(--accent);color:var(--text);font-size:calc(13px * var(--font-scale));font-weight:500;cursor:pointer;transition:background .15s}#auth-magic-btn:hover{background:var(--accent-hover)}#auth-magic-btn:disabled{opacity:.5;cursor:default}.auth-divider{display:flex;align-items:center;gap:12px;color:var(--text-muted);font-size:calc(11px * var(--font-scale))}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--border)}#auth-github-btn{width:100%;padding:10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-raised);color:var(--text);font-size:calc(13px * var(--font-scale));font-weight:500;cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center;gap:8px}#auth-github-btn:hover{background:var(--bg-hover);border-color:var(--border-hover)}#auth-status{font-size:calc(12px * var(--font-scale));color:var(--text-secondary);text-align:center;min-height:18px}.url-popover{position:absolute;right:100%;top:50%;transform:translateY(-50%);margin-right:8px;display:flex;flex-direction:column;gap:6px;background:var(--bg-surface);border:1px solid var(--border);border-radius:12px;z-index:41;box-shadow:0 8px 32px var(--shadow);padding:10px 12px;white-space:nowrap}.url-popover input{width:240px;border:1px solid var(--border);border-radius:var(--radius);padding:7px 10px;font-size:calc(12px * var(--font-scale));outline:none;background:var(--bg-raised);color:var(--text)}.url-popover input::-moz-placeholder{color:var(--text-muted)}.url-popover input::placeholder{color:var(--text-muted)}.url-popover input:focus{border-color:var(--accent)}.url-popover button{padding:7px 14px;border:none;border-radius:var(--radius);background:var(--accent);color:#fff;font-size:calc(12px * var(--font-scale));font-weight:500;cursor:pointer;transition:background .15s}.url-popover button:hover{background:var(--accent-hover)}#load-url-btn{color:var(--accent-text)!important}#load-url-btn:hover{background:var(--accent-muted)!important;color:var(--accent)!important}@keyframes spin{to{transform:rotate(360deg)}}.spinner-ring{width:28px;height:28px;border:2px solid rgba(255,255,255,.15);border-top-color:#ffffffb3;border-radius:50%;animation:spin .7s linear infinite}
