.dock-tab{position:fixed;z-index:50;display:flex;align-items:center;gap:10px;padding:12px 16px;background:#ffffff;border:1px solid #e5e7eb;border-radius:8px;font-size:14px;font-weight:600;color:#374151;cursor:pointer;transition:all .2s ease;box-shadow:0 4px 12px rgba(0,0,0,.15)}.dark .dock-tab{background:#1f2937;border-color:#374151;color:#d1d5db;box-shadow:0 2px 12px rgba(0,0,0,.3)}.dock-tab:hover{background:#f9fafb;border-color:#3b82f6;color:#1f2937;box-shadow:0 4px 12px rgba(59,130,246,.2);transform:translateY(-1px)}.dark .dock-tab:hover{background:#374151;border-color:#60a5fa;color:#f3f4f6;box-shadow:0 4px 16px rgba(96,165,250,.3)}.dock-tab--open{background:#3b82f6;border-color:#3b82f6;color:#ffffff}.dark .dock-tab--open{background:#2563eb;border-color:#2563eb}.dock-tab__icon{display:flex;align-items:center;flex-shrink:0}.dock-tab__label{white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none}.dock-tab--edge-right{right:var(--right-sidebar-offset,0);writing-mode:vertical-rl;transform:translateX(0) rotate(180deg);border-top-left-radius:0;border-bottom-left-radius:0}.dock-tab--right-top{top:200px}.dock-tab--right-center{top:50%;transform:translateX(0) translateY(-50%) rotate(180deg)}.dock-tab--right-bottom{bottom:200px}.dock-tab--edge-left{left:var(--left-sidebar-offset,0);writing-mode:vertical-rl;transform:translateX(0);border-top-left-radius:0;border-bottom-left-radius:0}.dock-tab--left-top{top:200px}.dock-tab--left-center{top:50%;transform:translateX(0) translateY(-50%)}.dock-tab--left-bottom{bottom:200px}.dock-tab--edge-bottom{bottom:0;transform:translateY(0);border-bottom-left-radius:0;border-bottom-right-radius:0}.dock-tab--bottom-left{left:200px}.dock-tab--bottom-center{left:50%;transform:translateX(-50%) translateY(0)}.dock-tab--bottom-right{right:200px}.dock-tab--edge-top{top:0;transform:translateY(0);border-top-left-radius:0;border-top-right-radius:0}.dock-tab--top-left{left:200px}.dock-tab--top-center{left:50%;transform:translateX(-50%) translateY(0)}.dock-tab--top-right{right:200px}.dock-tab--edge-right:hover{transform:translateX(-4px) rotate(180deg)}.dock-tab--right-center:hover{transform:translateX(-4px) translateY(-50%) rotate(180deg)}.dock-tab--edge-left:hover{transform:translateX(4px)}.dock-tab--left-center:hover{transform:translateX(4px) translateY(-50%)}.dock-tab--edge-bottom:hover{transform:translateY(4px)}.dock-tab--bottom-center:hover{transform:translateX(-50%) translateY(4px)}.dock-tab--edge-top:hover{transform:translateY(-4px)}.dock-tab--top-center:hover{transform:translateX(-50%) translateY(-4px)}.dock-tab--open.dock-tab--edge-right{transform:translateX(-8px) rotate(180deg)}.dock-tab--open.dock-tab--right-center{transform:translateX(-8px) translateY(-50%) rotate(180deg)}.dock-tab--open.dock-tab--edge-left{transform:translateX(8px)}.dock-tab--open.dock-tab--left-center{transform:translateX(8px) translateY(-50%)}.dock-tab--open.dock-tab--edge-bottom{transform:translateY(8px)}.dock-tab--open.dock-tab--bottom-center{transform:translateX(-50%) translateY(8px)}.dock-tab--open.dock-tab--edge-top{transform:translateY(-8px)}.dock-tab--open.dock-tab--top-center{transform:translateX(-50%) translateY(-8px)}.dock-panel{display:flex;flex-direction:column;background:transparent;border:none;padding:0;overflow:hidden!important}.dock-panel--left,.dock-panel--right{top:unset!important;bottom:unset!important;height:auto!important;inset-block-start:unset!important;inset-block-end:unset!important;max-height:90vh!important}.dock-panel--vertical-top{top:200px!important}.dock-panel--vertical-center{top:50%!important}.dock-panel--left.dock-panel--vertical-top[data-state=open]{transform:translateX(60px) translateY(-50%)!important}.dock-panel--left.dock-panel--vertical-top[data-state=closed]{transform:translateX(-100%) translateY(-50%)!important}.dock-panel--right.dock-panel--vertical-top[data-state=open]{transform:translateX(-60px) translateY(-50%)!important}.dock-panel--right.dock-panel--vertical-top[data-state=closed]{transform:translateX(100%) translateY(-50%)!important}.dock-panel--left.dock-panel--vertical-center[data-state=open]{transform:translateX(60px) translateY(-50%)!important}.dock-panel--left.dock-panel--vertical-center[data-state=closed]{transform:translateX(-100%) translateY(-50%)!important}.dock-panel--right.dock-panel--vertical-center[data-state=open]{transform:translateX(-60px) translateY(-50%)!important}.dock-panel--right.dock-panel--vertical-center[data-state=closed]{transform:translateX(100%) translateY(-50%)!important}.dock-panel--left.dock-panel--vertical-bottom[data-state=open]{transform:translateX(60px) translateY(25%)!important}.dock-panel--left.dock-panel--vertical-bottom[data-state=closed]{transform:translateX(-100%) translateY(25%)!important}.dock-panel--right.dock-panel--vertical-bottom[data-state=open]{transform:translateX(-60px) translateY(25%)!important}.dock-panel--right.dock-panel--vertical-bottom[data-state=closed]{transform:translateX(100%) translateY(25%)!important}.dock-panel--vertical-bottom{bottom:200px!important;top:unset!important}.dock-panel--horizontal-left{left:200px!important}.dock-panel--horizontal-center{left:50%!important}.dock-panel--horizontal-right{right:200px!important;left:unset!important}.dock-panel--top.dock-panel--horizontal-left[data-state=open]{transform:translateY(60px)!important}.dock-panel--top.dock-panel--horizontal-left[data-state=closed]{transform:translateY(-100%)!important}.dock-panel--top.dock-panel--horizontal-center[data-state=open]{transform:translateX(-50%) translateY(60px)!important}.dock-panel--top.dock-panel--horizontal-center[data-state=closed]{transform:translateX(-50%) translateY(-100%)!important}.dock-panel--top.dock-panel--horizontal-right[data-state=open]{transform:translateY(60px)!important}.dock-panel--top.dock-panel--horizontal-right[data-state=closed]{transform:translateY(-100%)!important}.dock-panel--bottom.dock-panel--horizontal-left[data-state=open]{transform:translateY(-60px)!important}.dock-panel--bottom.dock-panel--horizontal-left[data-state=closed]{transform:translateY(100%)!important}.dock-panel--bottom.dock-panel--horizontal-center[data-state=open]{transform:translateX(-50%) translateY(-60px)!important}.dock-panel--bottom.dock-panel--horizontal-center[data-state=closed]{transform:translateX(-50%) translateY(100%)!important}.dock-panel--bottom.dock-panel--horizontal-right[data-state=open]{transform:translateY(-60px)!important}.dock-panel--bottom.dock-panel--horizontal-right[data-state=closed]{transform:translateY(100%)!important}.dark .dock-panel{background:transparent}.dock-panel__header{position:relative;padding:16px 20px;border-bottom:1px solid #e5e7eb;flex-shrink:0}.dark .dock-panel__header{border-bottom-color:#374151}.dock-panel__title{font-size:16px;font-weight:600;color:#111827;margin:0}.dark .dock-panel__title{color:#f9fafb}.dock-panel__close{position:absolute;top:12px;right:16px;width:32px;height:32px;border-radius:6px;color:#6b7280;transition:all .2s ease}.dock-panel__close:hover{background:#f3f4f6;color:#111827}.dark .dock-panel__close{color:#9ca3af}.dark .dock-panel__close:hover{background:#1f2937;color:#f9fafb}.dock-panel__content{flex:1;overflow:auto;padding:20px}.dock-panel[data-state=closed] .dock-panel__content,.dock-panel[data-state=closed] .dock-panel__header{visibility:hidden;opacity:0;transition:visibility 0s linear 0s,opacity .1s linear 0s}.dock-panel[data-state=open] .dock-panel__content,.dock-panel[data-state=open] .dock-panel__header{visibility:visible;opacity:1;transition:visibility 0s linear 0s,opacity .2s linear .1s}.dock-panel--right{border-left:1px solid rgba(229,231,235,.1);box-shadow:none}.dark .dock-panel--right{border-left-color:rgba(55,65,81,.1);box-shadow:none}.dock-panel--left{border-right:1px solid rgba(229,231,235,.1);box-shadow:none}.dark .dock-panel--left{border-right-color:rgba(55,65,81,.1);box-shadow:none}.dock-panel--bottom{border-top:1px solid rgba(229,231,235,.1);box-shadow:none}.dark .dock-panel--bottom{border-top-color:rgba(55,65,81,.1);box-shadow:none}.dock-panel--top{border-bottom:1px solid rgba(229,231,235,.1);box-shadow:none}.dark .dock-panel--top{border-bottom-color:rgba(55,65,81,.1);box-shadow:none}[data-slot=sheet-portal]:has(.dock-panel) [data-slot=sheet-overlay]{display:none!important}.dock-panel [data-slot=sheet-close]{display:none!important}.dock-panel{pointer-events:auto}.dock-panel__content{scrollbar-width:thin;scrollbar-color:#d1d5db #f3f4f6}.dark .dock-panel__content{scrollbar-color:#4b5563 #1f2937}.dock-panel__content::-webkit-scrollbar{width:8px;height:8px}.dock-panel__content::-webkit-scrollbar-track{background:#f3f4f6}.dark .dock-panel__content::-webkit-scrollbar-track{background:#1f2937}.dock-panel__content::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:4px}.dark .dock-panel__content::-webkit-scrollbar-thumb{background:#4b5563}.dock-panel__content::-webkit-scrollbar-thumb:hover{background:#9ca3af}.dark .dock-panel__content::-webkit-scrollbar-thumb:hover{background:#6b7280}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__connection-path,.react-flow__edge-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:white}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:grab}.react-flow__node.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translateX(-50%)}.react-flow__attribution{font-size:10px;background:rgba(255,255,255,.5);padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-group,.react-flow__node-input,.react-flow__node-output{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border:1px solid #1a192b;background-color:white}.react-flow__node-default.selectable:hover,.react-flow__node-group.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover{box-shadow:0 1px 4px 1px rgba(0,0,0,.08)}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:rgba(240,240,240,.25)}.react-flow__nodesselection-rect,.react-flow__selection{background:rgba(0,89,220,.08);border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px rgba(0,0,0,.08)}.react-flow__controls-button{background:#fefefe;border:none;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.bottom,.react-flow__resize-control.top{cursor:ns-resize}.react-flow__resize-control.bottom.right,.react-flow__resize-control.top.left{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.bottom.left,.react-flow__resize-control.handle.top.left{left:0}.react-flow__resize-control.handle.bottom.right,.react-flow__resize-control.handle.top.right{left:100%}.react-flow__resize-control.line{border:0 solid #3367d9}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.bottom,.react-flow__resize-control.line.top{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.assembly-canvas{width:100%;height:100%}.assembly-canvas--empty,.assembly-canvas--error,.assembly-canvas--loading{display:flex;align-items:center;justify-content:center}.assembly-canvas__empty-content,.assembly-canvas__error-content{display:flex;flex-direction:column;align-items:center;gap:1rem;text-align:center;max-width:400px;padding:2rem}.assembly-widget-content-enter{opacity:0;transform:scale(.98);filter:blur(2px)}.assembly-widget-content-enter-active{opacity:1;transform:scale(1);filter:blur(0);transition:opacity .25s ease-out,transform .25s ease-out,filter .2s ease-out}.assembly-widget-smooth{animation:widgetSmoothAppear .3s ease-out forwards}@keyframes widgetSmoothAppear{0%{opacity:0;transform:scale(.98) translateY(4px)}to{opacity:1;transform:scale(1) translateY(0)}}.assembly-widget-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;opacity:.3}.assembly-widget-skeleton{display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:8px;opacity:0;animation:skeletonFadeIn .15s ease-out .1s forwards}@keyframes skeletonFadeIn{to{opacity:.4}}.assembly-widget-skeleton--circle{width:300px;height:300px;border-radius:50%}.assembly-widget-skeleton--guitar{width:500px;height:200px}.assembly-widget-skeleton--piano{width:400px;height:150px}.assembly-widget-skeleton--chord-chart{width:350px;height:300px}.assembly-widget-skeleton--chord-info{width:300px;height:250px}.assembly-widget-skeleton__pulse{width:80%;height:80%;background:linear-gradient(90deg,transparent 25%,rgba(128,128,128,.1) 50%,transparent 75%);background-size:200% 100%;animation:pulse 1.5s infinite;border-radius:inherit}.assembly-widget-renderer{padding:1rem;background:hsl(var(--card));border-radius:8px;box-shadow:0 2px 8px hsl(var(--foreground)/.08)}.assembly-widget-renderer--unknown{display:flex;align-items:center;justify-content:center;min-width:200px;min-height:150px;border:2px dashed hsl(var(--border));background:hsl(var(--muted));color:hsl(var(--muted-foreground))}.assembly-widget--readonly{position:relative;pointer-events:none;opacity:.7}.assembly-widget--readonly:after{content:"";position:absolute;inset:0;cursor:not-allowed;background:hsl(var(--background)/.5);border-radius:inherit}.dark .assembly-widget-skeleton__pulse{background:linear-gradient(90deg,transparent 25%,rgba(255,255,255,.05) 50%,transparent 75%);background-size:200% 100%}.assembly-widget{background:transparent;border:none;border-radius:12px;overflow:visible;width:100%;height:100%;display:flex;flex-direction:column;position:relative;box-sizing:border-box;animation:fadeIn .2s ease-out}.assembly-widget--minimized{height:auto!important;min-height:0!important}.assembly-widget__controls{position:absolute;top:4px;right:4px;display:flex;align-items:center;gap:2px;padding:4px;background:hsl(var(--card)/.92);border:1px solid hsl(var(--border));border-radius:6px;backdrop-filter:blur(8px);z-index:10;opacity:0;pointer-events:none;transition:opacity .15s ease}.assembly-widget:hover .assembly-widget__controls{opacity:1;pointer-events:auto}.assembly-widget .drag-handle{cursor:grab!important}.assembly-widget .drag-handle:active{cursor:grabbing!important}.assembly-widget__action-btn{width:36px;height:36px;min-width:36px;min-height:36px;padding:0;border-radius:6px;background:transparent;border:none;color:hsl(var(--muted-foreground))}.assembly-widget__action-btn--enharmonic{width:44px;min-width:44px;border-radius:999px;margin-right:12px;background:hsl(var(--primary)/.08);color:hsl(var(--foreground));font-weight:600}.assembly-widget__action-btn--direction-active,.assembly-widget__action-btn--direction-active:hover{background:hsl(var(--primary)/.14);color:hsl(var(--foreground))}.assembly-widget__enharmonic-toggle-label{display:flex;align-items:center;justify-content:center;font-size:16px;line-height:1}.assembly-widget__action-icon{width:24px;height:24px}.assembly-widget__action-btn:hover{background:hsl(var(--foreground)/.08);color:hsl(var(--foreground))}.assembly-widget__action-btn--close:hover{background:hsl(var(--destructive)/.12);color:hsl(var(--destructive))}.assembly-widget__minimized-label{padding:12px 28px;font-size:15px;font-weight:500;color:hsl(var(--muted-foreground));background:hsl(var(--card)/.9);border:1px solid hsl(var(--border));border-radius:8px;backdrop-filter:blur(8px);text-align:center;white-space:nowrap;cursor:grab;min-height:52px;display:flex;align-items:center;justify-content:center}.assembly-widget__minimized-label:active{cursor:grabbing}.assembly-widget__content{flex:1;margin:5px;padding:3px;overflow:hidden;min-height:0;overscroll-behavior:contain;display:flex;align-items:center;justify-content:center}.assembly-widget__content>div{width:100%;height:100%}.assembly-widget__resizer-line{border-color:rgba(59,130,246,.2)!important}.assembly-widget__resizer-handle{width:8px!important;height:8px!important;background:hsl(var(--primary)/.35)!important;border:1px solid hsl(var(--card)/.8)!important;border-radius:2px!important}@keyframes fadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.assembly-canvas svg text[y="0"],.assembly-widget svg text[y="0"],.at-main svg text[y="0"],.at-surface svg text[y="0"],.at-viewport svg text[y="0"]{display:none!important;visibility:hidden!important;opacity:0!important}.assembly-canvas-right-sidebar{background:hsl(var(--card));border-inline-start:1px solid hsl(var(--border));box-shadow:-4px 0 8px hsl(var(--foreground)/.05)}[dir=rtl] .assembly-canvas-right-sidebar{box-shadow:4px 0 8px hsl(var(--foreground)/.05)}.assembly-canvas-right-sidebar [data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none}.assembly-canvas-right-sidebar [data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}.canvas-toolbar{position:absolute;top:1rem;right:calc(1rem + 100px);z-index:10;display:flex;align-items:center;gap:.25rem;padding:.5rem;background:hsl(var(--card)/.95);border:1px solid hsl(var(--border));border-radius:.5rem;box-shadow:0 4px 6px hsl(var(--foreground)/.08);backdrop-filter:blur(8px)}.canvas-toolbar__add-widget{margin-right:.5rem;border-right:1px solid hsl(var(--border));padding-right:.75rem}.canvas-toolbar__btn{width:2rem;height:2rem;padding:0}.canvas-toolbar__zoom-display{min-width:3rem;text-align:center;font-size:.875rem;font-weight:500;color:hsl(var(--foreground));padding:0 .5rem}.canvas-toolbar__separator{width:1px;height:1.5rem;background:hsl(var(--border));margin:0 .25rem}.canvas-toolbar__enharmonic-group{display:flex;align-items:center;gap:.125rem;background:hsl(var(--muted)/.5);border:1px solid hsl(var(--border)/.6);border-radius:.375rem;padding:.125rem}.canvas-toolbar__enharmonic-btn{min-width:2rem;height:1.75rem;padding:0 .5rem;border-radius:.25rem;font-size:.875rem;font-weight:600;line-height:1;color:hsl(var(--muted-foreground));background:transparent;border:none;cursor:pointer;transition:all .15s ease}.canvas-toolbar__enharmonic-btn:hover{color:hsl(var(--foreground));background:hsl(var(--muted))}.canvas-toolbar__enharmonic-btn--active{box-shadow:0 1px 4px hsl(var(--primary)/.35)}.canvas-toolbar__enharmonic-btn--active,.canvas-toolbar__enharmonic-btn--active:hover{background:linear-gradient(135deg,hsl(var(--primary)),hsl(262,80%,55%));color:hsl(var(--primary-foreground))}.react-flow__node-musicLabelWidget{border:none!important;box-shadow:none!important;background:transparent!important;border-radius:0!important;padding:0!important}.react-flow__node-musicLabelWidget.selected,.react-flow__node-musicLabelWidget:focus,.react-flow__node-musicLabelWidget:focus-visible{outline:none!important;box-shadow:none!important}.music-label-runtime{width:100%;height:100%;background:transparent;color:hsl(var(--foreground));overflow:hidden}.music-label-runtime__resizer-line{border-color:rgba(167,139,250,.08)!important}.music-label-runtime__resizer-handle{width:5px!important;height:5px!important;border-radius:1px!important;background:rgba(167,139,250,.12)!important;border:none!important}.assembly-canvas--layout-locked .react-flow__node,.assembly-canvas--layout-locked .react-flow__node:active{cursor:default}.assembly-canvas--layout-locked .react-flow__resize-control{display:none}.tools-panel-node{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:8px;overflow:hidden;width:100%;height:100%;display:flex;flex-direction:column}.tools-panel-node--selected{border-color:hsl(var(--primary));box-shadow:0 0 0 1px hsl(var(--primary))}.tools-panel-node__header{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;background:hsl(var(--muted));border-bottom:1px solid hsl(var(--border));min-height:32px}.tools-panel-node__header-left{display:flex;align-items:center;gap:6px}.tools-panel-node__header-icon{width:14px;height:14px;color:hsl(var(--muted-foreground))}.tools-panel-node__header-label{font-size:12px;font-weight:600;color:hsl(var(--foreground))}.tools-panel-node__content{flex:1;display:flex;align-items:center;justify-content:center;padding:8px}.tools-panel-node__content--stacked{flex-direction:column;gap:6px;align-items:stretch}.tools-panel-node__section{display:flex;align-items:center;gap:8px}.tools-panel-node__section-label{font-size:10px;font-weight:600;color:hsl(var(--muted-foreground));min-width:56px;text-transform:uppercase;letter-spacing:.03em}.tools-panel-node__tool-group{display:flex;align-items:center;gap:8px}.tools-panel-node__button{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 10px;border:1px solid hsl(var(--border));border-radius:6px;background:hsl(var(--muted));color:hsl(var(--foreground));cursor:pointer;transition:all .15s ease}.tools-panel-node__button:hover:not(:disabled){background:hsl(var(--accent)/.15);border-color:hsl(var(--muted-foreground)/.5)}.tools-panel-node__button:active:not(:disabled){background:hsl(var(--accent)/.25)}.tools-panel-node__button--disabled,.tools-panel-node__button:disabled{opacity:.35;cursor:not-allowed}.tools-panel-node__button-counter{font-size:9px;color:hsl(var(--muted-foreground));font-variant-numeric:tabular-nums}.tools-panel-node__resizer-line{border-color:hsl(var(--primary))!important}.tools-panel-node__resizer-handle{width:8px!important;height:8px!important;background:hsl(var(--primary))!important;border:1px solid hsl(var(--card))!important;border-radius:2px!important}.slot-instrument-panel{display:flex;flex-direction:column;gap:.75rem;padding:.75rem}.slot-instrument-panel__header h3{font-size:.875rem;font-weight:600;color:#1a1a1a}.slot-instrument-panel__header .text-muted{font-size:.75rem;color:#666;margin-top:.25rem}.slot-instrument-panel__list{display:flex;flex-direction:column;gap:.5rem}.instrument-card{display:flex;align-items:center;gap:.75rem;width:100%;padding:.625rem .75rem;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;cursor:pointer;transition:all .15s ease;text-align:left}.instrument-card:hover{border-color:#3b82f6;background:#f0f7ff}.instrument-card--active{border-color:#3b82f6;background:#eff6ff;box-shadow:0 0 0 1px #3b82f6}.instrument-card__info{flex:1;display:flex;flex-direction:column;gap:.125rem;min-width:0}.instrument-card__name{font-size:.8125rem;font-weight:500;color:#1a1a1a}.instrument-card__name,.instrument-card__preset{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.instrument-card__preset{font-size:.6875rem;color:#6b7280}.instrument-card__check{width:1rem;height:1rem;color:#3b82f6;flex-shrink:0}.instrument-mini-preview{width:3.5rem;height:2rem;flex-shrink:0;color:#6b7280;border-radius:4px;background:#f3f4f6;padding:2px}.instrument-card--active .instrument-mini-preview{color:#3b82f6;background:#dbeafe}.slot-section__header{display:flex;align-items:center;gap:.5rem;padding:.5rem 0;font-size:.75rem;font-weight:600;color:#6b7280;text-transform:uppercase;letter-spacing:.05em}.slot-transition{transition:opacity .15s ease-in-out;opacity:1;height:100%}.slot-transition--active{opacity:0}.assembly-right-sidebar__tabs{display:flex;border-bottom:1px solid #e5e7eb;padding:0 .5rem}.assembly-right-sidebar__tab{display:flex;align-items:center;gap:.375rem;padding:.5rem .75rem;font-size:.75rem;font-weight:500;color:#6b7280;cursor:pointer;transition:all .15s;background:none;border:none;border-bottom:2px solid transparent}.assembly-right-sidebar__tab:hover{color:#1a1a1a}.assembly-right-sidebar__tab--active{color:#3b82f6;border-bottom-color:#3b82f6}.dark .slot-instrument-panel__header h3{color:#f0f0f0}.dark .slot-instrument-panel__header .text-muted{color:#9ca3af}.dark .instrument-card{background:#1f2937;border-color:#374151}.dark .instrument-card--active,.dark .instrument-card:hover{border-color:#3b82f6;background:#1e3a5f}.dark .instrument-card--active{box-shadow:0 0 0 1px #3b82f6}.dark .instrument-card__name{color:#f0f0f0}.dark .instrument-card__preset{color:#9ca3af}.dark .instrument-mini-preview{color:#9ca3af;background:#374151}.dark .instrument-card--active .instrument-mini-preview{color:#60a5fa;background:#1e3a5f}.dark .slot-section__header{color:#9ca3af}.dark .assembly-right-sidebar__tabs{border-bottom-color:#374151}.dark .assembly-right-sidebar__tab{color:#9ca3af}.dark .assembly-right-sidebar__tab:hover{color:#f0f0f0}.dark .assembly-right-sidebar__tab--active{color:#60a5fa;border-bottom-color:#60a5fa}.mobile-assembly{position:relative;height:100vh;height:100dvh;flex-direction:column;overflow:hidden}.mobile-assembly,.mobile-assembly__header{display:flex;background:hsl(var(--background))}.mobile-assembly__header{position:absolute;top:0;left:0;right:0;padding:.75rem 1rem;min-height:3.5rem;border-bottom:1px solid hsl(var(--border));z-index:10;align-items:center;gap:.5rem;transition:transform .3s ease-in-out;will-change:transform}.mobile-assembly__header[data-hidden]{transform:translateY(-100%)}.mobile-assembly__header-title{font-size:1rem;font-weight:600;color:hsl(var(--foreground));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.mobile-assembly__content{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding-top:3.5rem;padding-bottom:calc(3.5rem + env(safe-area-inset-bottom, 0px));transition:padding-top .3s ease-in-out}.mobile-assembly__header[data-hidden]~.mobile-assembly__content{padding-top:0}.mobile-widget-list{display:flex;flex-direction:column}.mobile-collapsible-trigger{display:flex;align-items:center;gap:.75rem;width:100%;padding:.875rem 1rem;border:none;border-bottom:1px solid hsl(var(--border));background:transparent;color:hsl(var(--foreground));font-size:.9375rem;font-weight:500;cursor:pointer;transition:background-color .15s;text-align:start}.mobile-collapsible-trigger:active{background:hsl(var(--accent))}.mobile-collapsible-trigger__icon{width:1.25rem;height:1.25rem;color:hsl(var(--muted-foreground));flex-shrink:0}.mobile-collapsible-trigger__chevron{width:1rem;height:1rem;color:hsl(var(--muted-foreground));margin-inline-start:auto;flex-shrink:0;transition:transform .2s}.mobile-collapsible-trigger[data-state=open] .mobile-collapsible-trigger__chevron{transform:rotate(180deg)}.mobile-collapsible-content{border-bottom:1px solid hsl(var(--border));overflow:hidden}.mobile-collapsible-content[data-state=open]{padding:.75rem}.mobile-inline-label,.mobile-inline-label__chips{padding:.5rem 1rem;border-bottom:1px solid hsl(var(--border))}.mobile-landscape-trigger{display:flex;align-items:center;gap:.75rem;padding:1rem;border-bottom:1px solid hsl(var(--border));cursor:pointer;transition:background-color .15s}.mobile-landscape-trigger:active{background:hsl(var(--accent))}.mobile-landscape-trigger__icon{width:1.25rem;height:1.25rem;color:hsl(var(--muted-foreground));flex-shrink:0}.mobile-landscape-trigger__name{font-size:.9375rem;font-weight:500;color:hsl(var(--foreground))}.mobile-landscape-trigger__badge{display:flex;align-items:center;gap:.5rem;color:hsl(var(--muted-foreground));font-size:.75rem;margin-inline-start:auto}.mobile-landscape-overlay{position:fixed;inset:0;z-index:100;background:hsl(var(--background));display:flex;flex-direction:column}.mobile-landscape-overlay__header{display:flex;align-items:center;gap:.5rem;padding:.5rem;padding-inline-start:.75rem;border-bottom:1px solid hsl(var(--border));background:hsl(var(--background));flex-shrink:0;min-height:3rem;position:relative;z-index:50}.mobile-landscape-overlay__title{font-size:.875rem;font-weight:500;color:hsl(var(--foreground))}.mobile-landscape-overlay__widget{flex:1;overflow:hidden;padding:.25rem;background:hsl(var(--background))}.mobile-rotate-prompt{position:absolute;bottom:1rem;left:50%;transform:translateX(-50%);display:inline-flex;align-items:center;gap:.5rem;padding:.5rem .875rem;border-radius:9999px;background:hsl(var(--foreground)/.85);color:hsl(var(--background));font-size:.8125rem;font-weight:500;box-shadow:0 4px 12px rgba(0,0,0,.2);z-index:40;white-space:nowrap;pointer-events:none}.mobile-rotate-prompt__icon{width:1rem;height:1rem;flex-shrink:0}.mobile-rotate-prompt__text{font-size:.8125rem}@keyframes rotate-hint{0%,to{transform:rotate(0deg)}50%{transform:rotate(90deg)}}.animate-rotate-hint{animation:rotate-hint 2s ease-in-out infinite}.mobile-tools-fab{position:fixed;bottom:1.5rem;inset-inline-end:1.5rem;z-index:30}.mobile-tools-fab__button{width:3rem;height:3rem;border-radius:9999px;background:hsl(var(--primary));color:hsl(var(--primary-foreground));border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 12px rgba(0,0,0,.15);transition:transform .15s}.mobile-tools-fab__button:active{transform:scale(.95)}.mobile-tools-fab__panel{position:absolute;bottom:3.5rem;inset-inline-end:0;background:hsl(var(--popover));border:1px solid hsl(var(--border));border-radius:.75rem;padding:.5rem;display:flex;gap:.5rem;box-shadow:0 4px 12px rgba(0,0,0,.1)}.mobile-assembly .assembly-scale-circle-container{width:100%;max-width:340px;margin:0 auto;aspect-ratio:1}.mobile-skeleton{display:flex;flex-direction:column;gap:.75rem;padding:1rem}.mobile-skeleton__bar{height:3rem;border-radius:.5rem;background:hsl(var(--muted));animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.mobile-state-message{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:3rem 1.5rem;text-align:center;flex:1}.mobile-state-message__title{font-size:1.125rem;font-weight:600;color:hsl(var(--foreground))}.mobile-state-message__desc{font-size:.875rem;color:hsl(var(--muted-foreground));max-width:280px}