/* Canvas opts into the same button shader and springs as 3D Studio.
 * Shape and fallback styles remain usable without WebGL. */
html body[data-canvas-studio-controls]:has(#editorView) :is(#editorView,#canvasAddMenu,#canvasLinkMenu,#canvasGeneratorDialog,#canvasProfileDialog)
 :is(button,a.node-project-link):not(.node-port,.node-resize,.canvas-add-button,.canvas-generator-add-reference){
 border-radius:var(--ds-radius-control,10px)!important;
 transition:background .18s ease,border-color .18s ease,color .18s ease,box-shadow .18s ease;
}
html body[data-canvas-studio-controls]:has(#editorView:not([hidden])) > .topbar .top-actions
 :is(#canvasStudioLink,#canvasDirectorLink,#themeToggle){
 border-radius:var(--ds-radius-pill,999px)!important;
}
html body[data-canvas-studio-controls]:has(#editorView) :is(#canvasGeneratorSubmit,#canvasGeneratorCancel,.canvas-generation-retry){
 border-radius:var(--ds-radius-pill,999px)!important;
 padding-inline:16px;
}
html body[data-canvas-studio-controls] :is(#editorView,#canvasAddMenu,#canvasLinkMenu,#canvasGeneratorDialog)
 button:not(:disabled):not([data-glass-live]):not(.node-port):not(.node-resize):hover{
 background-color:rgba(170,185,202,.10)!important;
 border-color:rgba(221,230,240,.35)!important;
 box-shadow:inset 0 1px 0 rgba(255,255,255,.17),0 3px 12px rgba(0,0,0,.10)!important;
}
html body[data-canvas-studio-controls][data-theme=light]:has(#editorView) :is(button,a)[data-glass-live]:not([data-glass-selected=true]){
 color:#293239!important;
}
html body[data-canvas-studio-controls][data-theme=light]:has(#editorView) :is(button,a)[data-glass-live][data-glass-selected=true]{
 color:#66460e!important;
}
/* Let the canonical spring surface extend around controls without clipping.
 * Node cards, ports, crop handles and the scene lenses keep their own shapes. */
html body[data-canvas-studio-controls] :is(button,a)[data-glass-button]{
 overflow:visible!important;contain:none!important;
}
html body[data-canvas-studio-controls]:has(#editorView) :is(#editorView,#canvasGeneratorDialog,#canvasAddMenu,#canvasLinkMenu,.topbar)
 :is(button,a)[data-glass-live][data-glass-ready],
html body[data-canvas-studio-controls]:has(#editorView:not([hidden])) #editorView #canvasAddBtn[data-glass-live][data-glass-ready]{
 background:transparent!important;border-color:transparent!important;box-shadow:none!important;
 backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
}
html body[data-canvas-studio-controls] #boardHead[data-upload-active=true] .canvas-status-scroll,
html body[data-canvas-studio-controls] #boardHead[data-upload-active=true] > .daailok-status-message{
 display:none!important;
}
html body[data-canvas-studio-controls] #boardHead > .canvas-upload-progress{
 display:flex;align-items:center;gap:9px;flex:1 1 auto;min-width:0;pointer-events:none;
 color:var(--text);font-size:11px;font-variant-numeric:tabular-nums;
}
html body[data-canvas-studio-controls] .canvas-upload-label{
 min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
html body[data-canvas-studio-controls] .canvas-upload-value{flex:none;white-space:nowrap}
html body[data-canvas-studio-controls] .canvas-upload-track{
 width:48px;height:3px;flex:0 0 48px;overflow:hidden;border-radius:99px;
 background:rgba(148,157,170,.24);
}
html body[data-canvas-studio-controls] .canvas-upload-track > span{
 display:block;height:100%;border-radius:inherit;background:var(--accent,#edc96d);transition:width .12s linear;
}
html body[data-canvas-studio-controls] .canvas-upload-progress.is-indeterminate .canvas-upload-track > span{
 animation:canvas-upload-wait 1.1s ease-in-out infinite alternate;
}
@keyframes canvas-upload-wait{to{transform:translateX(140%)}}
@media(prefers-reduced-motion:reduce){
 html body[data-canvas-studio-controls] .canvas-upload-track > span{animation:none!important;transition:none!important}
}
