.context-menu{position:fixed;background:var(--bg-node);border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-menu);min-width:180px;z-index:1000;animation:menuFadeIn .1s ease;will-change:opacity,transform}@keyframes menuFadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.context-menu-category{position:relative}.context-menu-category-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) var(--space-md);color:var(--text-primary);font-weight:500;cursor:pointer;transition:background var(--transition-fast)}.context-menu-category-header:hover{background:var(--bg-tertiary)}.context-menu-category-icon{margin-right:var(--space-sm)}.context-menu-category-arrow{color:var(--text-muted);font-size:var(--text-sm)}.context-menu-submenu{position:absolute;left:100%;top:0;background:var(--bg-node);border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-menu);min-width:160px;z-index:1001;opacity:0;visibility:hidden;transform:translate(-10px);transition:opacity .15s ease,transform .15s ease,visibility .15s}.context-menu-category:hover>.context-menu-submenu{opacity:1;visibility:visible;transform:translate(0)}.context-menu-item{display:flex;align-items:center;padding:var(--space-sm) var(--space-md);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast)}.context-menu-item:hover{background:var(--accent-primary);color:#fff}.context-menu-separator{height:1px;background:var(--border-subtle);margin:var(--space-xs) 0}.context-menu-header{padding:var(--space-sm) var(--space-md);color:var(--text-muted);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border-subtle)}.schematic-node{position:absolute;background:var(--bg-node);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-lg);color:var(--text-primary);min-width:140px;overflow:visible;-webkit-user-select:none;user-select:none;z-index:1;transition:box-shadow var(--transition-fast)}.schematic-node.selected{z-index:10;box-shadow:0 0 0 2px var(--accent-primary),var(--shadow-sketch)}.schematic-node.dragging{z-index:100;cursor:grabbing;box-shadow:0 0 0 2px var(--accent-primary),6px 6px 0 var(--sketch-black)}.schematic-node.clip-drop-target{box-shadow:0 0 0 3px var(--accent-success),0 0 20px color-mix(in srgb,var(--accent-success) 40%,transparent)}.schematic-header{border-bottom:var(--border-sketch-width) solid var(--sketch-black);padding:var(--space-sm) var(--space-md);font-family:var(--font-sketch);font-weight:600;font-size:var(--text-lg);display:flex;justify-content:space-between;align-items:center;background:var(--bg-node-header);border-radius:var(--radius-lg) var(--radius-lg) 0 0;cursor:grab}.schematic-header:active{cursor:grabbing}.schematic-container{position:relative;padding:var(--space-md);display:flex;flex-direction:column;align-items:center;gap:var(--space-sm)}.speaker-node{min-width:100px}.speaker-warning{font-size:16px}.speaker-body{display:flex;flex-direction:column;align-items:center;padding:var(--space-sm) var(--space-md);position:relative}.speaker-node.hover-connecting{box-shadow:0 0 0 2px var(--accent-primary),0 0 12px color-mix(in srgb,var(--accent-primary) 30%,transparent)}.speaker-input-port{position:absolute;left:var(--space-sm);top:var(--space-sm);width:14px;height:14px;border:var(--border-sketch-width) solid var(--sketch-black);border-radius:50%;background:var(--audio-input);cursor:crosshair;transition:all var(--transition-fast)}.speaker-input-port:hover{transform:scale(1.2);filter:brightness(1.1)}.speaker-input-port.connected{background:var(--audio-connected);box-shadow:0 0 6px var(--audio-connected)}.speaker-symbol-container{margin-bottom:var(--space-xs)}.speaker-mute-btn{display:flex;align-items:center;justify-content:center;width:48px;height:48px;border:none;border-radius:var(--radius-md);background:transparent;cursor:pointer;transition:all var(--transition-fast);color:var(--text-primary)}.speaker-mute-btn:hover{background:var(--bg-tertiary);transform:scale(1.05)}.speaker-mute-btn.live{color:var(--accent-success)}.speaker-mute-btn.muted{color:var(--accent-danger);opacity:.7}.device-selector-container{position:relative;width:100%}.device-select-trigger{width:100%;border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-pill);background:var(--bg-canvas);padding:var(--space-xs) var(--space-sm);font-family:var(--font-sketch);font-size:var(--text-xs);text-align:center;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:all var(--transition-fast)}.device-select-trigger:hover{background:var(--bg-tertiary)}.schematic-dropdown{position:absolute;top:calc(100% + var(--space-xs));left:0;width:100%;background:var(--bg-node);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-md);z-index:100;max-height:200px;overflow-y:auto;box-shadow:var(--shadow-menu)}.device-item{padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--border-subtle);font-family:var(--font-sketch);font-size:var(--text-sm);cursor:pointer;transition:background var(--transition-fast)}.device-item:last-child{border-bottom:none}.device-item:hover{background:var(--bg-tertiary)}.device-item.selected{background:var(--accent-primary);color:var(--text-on-accent)}.device-item.low-latency{display:flex;align-items:center;gap:var(--space-xs)}.low-latency-icon{font-size:var(--text-sm);color:var(--accent-warning);flex-shrink:0}.device-item.low-latency .device-label,.device-select-trigger.low-latency .device-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-select-trigger.low-latency{display:flex;align-items:center;gap:var(--space-xs)}.device-select-trigger .low-latency-icon{color:var(--accent-warning)}.keyboard-node{min-width:160px}.keyboard-node.active{border-width:4px;border-color:var(--accent-success);box-shadow:0 0 0 2px var(--bg-canvas),0 0 12px color-mix(in srgb,var(--accent-success) 40%,transparent),var(--shadow-sketch)}.keyboard-node .schematic-header{padding:var(--space-sm) var(--space-md)}.keyboard-octave{font-family:var(--font-mono);font-size:var(--text-md);font-weight:600;background:var(--bg-tertiary);border:1px solid var(--sketch-light);border-radius:var(--radius-sm);padding:2px var(--space-sm);-webkit-user-select:none;user-select:none;pointer-events:none}.keyboard-schematic-body{padding:var(--space-md);display:flex;flex-direction:column;align-items:stretch;gap:var(--space-sm)}.keyboard-schematic-body .port-row{width:100%}.keyboard-schematic-body .port-row.output{flex-direction:row;justify-content:space-between}.keyboard-schematic-body .port-label{text-align:left}.keyboard-row-numbers{display:flex;justify-content:space-around;width:100%;gap:var(--space-sm)}.row-number{font-family:var(--font-sketch);font-weight:700;font-size:var(--text-lg);width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-sm);background:var(--bg-canvas);cursor:pointer;transition:all var(--transition-fast)}.row-number:hover{background:var(--bg-tertiary)}.row-number.active{background:var(--accent-primary);color:var(--text-on-accent);border-color:var(--accent-primary)}.keyboard-port-labels{display:flex;justify-content:space-between;align-items:center;padding:0 var(--space-sm);margin-bottom:var(--space-xs);font-size:11px;color:var(--text-secondary)}.note-ports-label{display:flex;align-items:center;gap:var(--space-xs);flex:3}.note-symbol{font-size:14px;font-weight:700}.bracket-symbol{font-size:18px;line-height:1;transform:scaleY(1.2)}.control-port-label{flex:1;text-align:center;font-family:var(--font-mono);font-weight:700;font-size:10px}.binary-label{color:var(--control-output)}.keyboard-row-ports-marker{display:flex;justify-content:space-around;width:100%;gap:var(--space-sm);margin-top:var(--space-xs)}.port-circle-marker{width:20px;height:20px;border:var(--border-sketch-width) solid var(--sketch-black);border-radius:50%;background:var(--control-output);cursor:crosshair;transition:all var(--transition-fast)}.port-circle-marker.control-port{background:var(--control-output)}.port-circle-marker.control-port.input-port{background:var(--control-input)}.port-circle-marker:hover{background:var(--control-output);transform:scale(1.15);filter:brightness(1.1)}.port-circle-marker.control-port:hover{background:var(--control-output);filter:brightness(1.2)}.port-circle-marker.connected,.port-circle-marker.control-port.connected{background:var(--control-connected);box-shadow:0 0 6px var(--control-connected)}.port-circle-marker.note-port,.port-circle-marker.control-port{background:var(--control-output)}.port-circle-marker.control-active{background:var(--accent-success);box-shadow:0 0 10px var(--accent-success);animation:control-pulse .3s ease-in-out}@keyframes control-pulse{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(1)}}.instrument-node{min-width:180px}.instrument-node.hover-connecting{box-shadow:0 0 0 2px var(--accent-primary),0 0 12px color-mix(in srgb,var(--accent-primary) 30%,transparent)}.instrument-node .schematic-header{cursor:grab}.instrument-node .schematic-header:active{cursor:grabbing}.instrument-schematic-body{padding:0}.instrument-schematic-body.simple{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) var(--space-md);gap:var(--space-md)}.instrument-rows-simple{display:flex;flex-direction:column;gap:var(--space-xs);flex:1}.instrument-row-simple{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) 0}.instrument-row-simple.with-divider{border-top:1px solid var(--border-subtle);margin-top:2px;padding-top:var(--space-xs)}.instrument-row-simple.empty-state{min-height:32px;justify-content:flex-start}.row-indicator{width:10px;height:10px;border-radius:50%;border:2px solid var(--sketch-black);flex-shrink:0}.row-value{font-family:var(--font-sketch);font-size:var(--text-md);font-weight:600;color:var(--text-primary)}.row-value.note-value{min-width:16px}.row-value.octave-value{min-width:12px}.row-value.offset-value{min-width:28px;text-align:right;font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-secondary)}.empty-rows-hint{font-size:var(--text-xs);color:var(--text-muted);font-style:italic;padding:var(--space-xs) 0}.instrument-output-port{width:16px;height:16px;border:var(--border-sketch-width) solid var(--sketch-black);border-radius:50%;background:var(--audio-output);cursor:crosshair;transition:all var(--transition-fast);flex-shrink:0}.instrument-output-port:hover{transform:scale(1.2);filter:brightness(1.2)}.instrument-output-port.connected{background:var(--audio-connected);box-shadow:0 0 6px var(--audio-connected)}.pedal-row{margin-top:var(--space-xs);padding-top:var(--space-xs);border-top:1px dashed var(--border-subtle)}.pedal-input-port{width:10px;height:10px;border:2px solid var(--sketch-black);border-radius:50%;background:var(--control-input);cursor:crosshair;transition:all var(--transition-fast);flex-shrink:0}.pedal-input-port:hover{transform:scale(1.2);filter:brightness(1.2)}.pedal-input-port.connected{background:var(--control-connected);box-shadow:0 0 4px var(--control-connected)}.pedal-label{font-size:var(--text-xs);color:var(--text-muted);font-family:var(--font-sketch)}.bundle-input-port{width:12px;height:12px;border:2px solid var(--sketch-black);border-radius:50%;background:var(--control-input);cursor:crosshair;transition:all var(--transition-fast);flex-shrink:0}.bundle-input-port:hover{transform:scale(1.2);filter:brightness(1.2)}.bundle-input-port.connected{background:var(--control-connected);box-shadow:0 0 4px var(--control-connected)}.bundle-input-port.empty{border-style:dashed;background:transparent}.bundle-input-port.empty:hover{background:var(--control-input);border-style:solid}.empty-row{opacity:.6}.empty-port-hint{font-size:var(--text-xs);color:var(--text-muted);font-style:italic}.instrument-row-simple.pedal-row{border-top:1px dashed var(--border-subtle);margin-top:var(--space-xs);padding-top:var(--space-xs)}.instrument-row-simple .pedal-label{font-size:var(--text-sm);color:var(--text-muted);font-style:italic;margin-left:var(--space-sm)}.bundle-input-port.pedal{border-color:#888;background:#f0f0f0}.bundle-input-port.pedal.connected{background:#888;box-shadow:0 0 4px #888}.note-grid{display:flex;flex-direction:column}.note-row{display:flex;align-items:center;padding:var(--space-xs) var(--space-md);border-bottom:1px solid var(--border-subtle);gap:var(--space-sm)}.note-row:last-child{border-bottom:none}.note-row.ghost-port{opacity:.6;background:color-mix(in srgb,var(--accent-primary) 5%,transparent);animation:ghost-fade-in .15s ease-out}@keyframes ghost-fade-in{0%{opacity:0;transform:translate(-4px)}to{opacity:.6;transform:translate(0)}}.note-input-port.ghost{background:var(--control-input);border-style:dashed;opacity:.7}.note-input-port.ghost:hover{opacity:1;border-style:solid}.note-input-port{width:14px;height:14px;border:var(--border-sketch-width) solid var(--sketch-black);border-radius:50%;background:var(--control-input);cursor:crosshair;flex-shrink:0;transition:all var(--transition-fast)}.note-input-port:hover{transform:scale(1.2);filter:brightness(1.2)}.note-input-port.connected{background:var(--control-connected);box-shadow:0 0 6px var(--control-connected)}.note-name{font-family:var(--font-sketch);font-weight:600;font-size:var(--text-md);min-width:24px}.note-offset{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-secondary);margin-left:auto}.instrument-control-input{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-top:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);background:color-mix(in srgb,var(--control-input) 10%,transparent)}.control-label{font-size:11px;color:var(--text-secondary);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.5px}.control-input-port{width:14px;height:14px;border:var(--border-sketch-width) solid var(--sketch-black);border-radius:50%;background:var(--control-input);cursor:crosshair;transition:all var(--transition-fast)}.control-input-port:hover{transform:scale(1.2);filter:brightness(1.2)}.control-input-port.connected{background:var(--control-connected);box-shadow:0 0 6px var(--control-connected)}.instrument-output{display:flex;align-items:center;justify-content:flex-end;padding:var(--space-sm) var(--space-md);gap:var(--space-sm);border-top:1px solid var(--border-subtle)}.output-label{font-family:var(--font-sketch);font-size:var(--text-sm);color:var(--text-muted)}.output-port{width:16px;height:16px;border:var(--border-sketch-width) solid var(--sketch-black);border-radius:50%;background:var(--audio-output);cursor:crosshair;transition:all var(--transition-fast)}.output-port:hover{transform:scale(1.2);filter:brightness(1.2)}.output-port.connected{background:var(--audio-connected);box-shadow:0 0 6px var(--audio-connected)}.instrument-selector-dropdown{position:absolute;min-width:250px;min-height:150px;background:var(--bg-node);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-lg);box-shadow:var(--shadow-menu);z-index:2000;flex-direction:column;overflow:hidden}.instrument-search{width:100%;padding:var(--space-sm) var(--space-md);border:none;border-bottom:1px solid var(--border-subtle);font-family:var(--font-sketch);font-size:var(--text-md);background:var(--bg-canvas);color:var(--text-primary);box-sizing:border-box;flex-shrink:0}.instrument-search:focus{outline:none;background:var(--bg-node)}.instrument-grid-container{flex:1;overflow-y:auto;padding:var(--space-sm)}.instrument-subcategory{margin-bottom:var(--space-sm)}.instrument-subcategory:last-child{margin-bottom:0}.subcategory-separator{height:1px;background:var(--border-subtle);margin:var(--space-md) 0}.instrument-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:var(--space-sm)}.instrument-grid-grouped{display:flex;flex-direction:column;gap:var(--space-sm)}.instrument-group{display:flex;flex-direction:column}.instrument-group-separator{height:1px;background:var(--border-subtle);margin:var(--space-sm) 0}.instrument-group-label{font-family:var(--font-sketch);font-size:var(--text-xs);font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-xs);padding-left:var(--space-xs)}.instrument-group-items{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:var(--space-sm)}.category-nav-hint{font-family:var(--font-sketch);font-size:var(--text-xs);color:var(--text-muted);text-align:center;padding:var(--space-xs) var(--space-sm);border-top:1px solid var(--border-subtle);flex-shrink:0}.instrument-card{display:flex;flex-direction:column;align-items:center;padding:var(--space-sm);border:1px solid var(--border-subtle);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);background:var(--bg-canvas)}.instrument-card:hover{background:var(--bg-tertiary);border-color:var(--sketch-light);transform:translateY(-2px)}.instrument-card.selected{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.instrument-icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;margin-bottom:var(--space-xs)}.instrument-icon svg{width:100%;height:100%}.instrument-name{font-family:var(--font-sketch);font-size:var(--text-sm);font-weight:500;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.no-results{text-align:center;color:var(--text-secondary);font-family:var(--font-sketch);padding:var(--space-lg)}.instrument-name-clickable{cursor:pointer;display:inline-block;width:fit-content}.instrument-name-clickable:hover{text-decoration:underline}.editable-value{cursor:ns-resize;padding:2px 4px;border-radius:var(--radius-sm);transition:background var(--transition-fast);-webkit-user-select:none;user-select:none}.editable-value:hover{background:var(--bg-tertiary)}.note-octave{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-secondary)}.inline-edit-input{width:36px;padding:2px 4px;border:1px solid var(--accent-primary);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--text-sm);text-align:center;background:var(--bg-canvas);color:var(--text-primary)}.inline-edit-input.inline-edit-note{width:24px;font-family:var(--font-sketch);font-weight:600;text-transform:uppercase}.inline-edit-input:focus{outline:none}.inline-edit-input::-webkit-outer-spin-button,.inline-edit-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.inline-edit-input[type=number]{-moz-appearance:textfield}.minimal-settings-overlay{position:fixed;inset:0;background:color-mix(in srgb,var(--sketch-black) 30%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;justify-content:center;align-items:center;z-index:2000}.minimal-settings-container{background:var(--bg-node);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-xl);width:600px;height:500px;display:flex;flex-direction:column;overflow:hidden;color:var(--text-primary);box-shadow:var(--shadow-menu)}.minimal-settings-header{padding:var(--space-lg);border-bottom:var(--border-sketch-width) solid var(--sketch-black);display:flex;justify-content:space-between;align-items:center}.minimal-settings-header h2{margin:0;font-family:var(--font-sketch);font-size:var(--text-xl);font-weight:700}.minimal-settings-content{flex:1;display:flex;min-height:0;overflow:hidden}.minimal-sidebar{width:180px;border-right:1px solid var(--border-subtle);padding:var(--space-md) 0}.minimal-tab-btn{width:100%;text-align:left;padding:var(--space-sm) var(--space-lg);background:none;border:none;font-family:var(--font-sketch);font-size:var(--text-md);font-weight:500;cursor:pointer;color:var(--text-muted);transition:all var(--transition-fast)}.minimal-tab-btn:hover{color:var(--text-primary);background:var(--bg-tertiary)}.minimal-tab-btn.active{color:var(--text-primary);background:var(--bg-tertiary);border-right:3px solid var(--sketch-black)}.minimal-main{flex:1;padding:var(--space-lg);overflow-y:auto;min-height:0}.minimal-theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:var(--space-md)}.minimal-theme-card{border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-sm);cursor:pointer;transition:all var(--transition-fast)}.minimal-theme-card:hover{border-color:var(--sketch-light);background:var(--bg-tertiary)}.minimal-theme-card.active{border-color:var(--sketch-black);border-width:var(--border-sketch-width);background:var(--bg-canvas)}.looper-node{min-width:220px;max-width:260px}.looper-main-row{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) var(--space-md);gap:var(--space-sm)}.looper-input-port,.looper-output-port{width:14px;height:14px;border:var(--border-sketch-width) solid var(--sketch-black);border-radius:50%;cursor:crosshair;transition:all var(--transition-fast);flex-shrink:0}.looper-input-port{background:var(--audio-input)}.looper-output-port{background:var(--audio-output)}.looper-input-port.connected,.looper-output-port.connected{background:var(--audio-connected);box-shadow:0 0 6px var(--audio-connected)}.looper-input-port:hover,.looper-output-port:hover{transform:scale(1.2)}.looper-sample-out-port{width:14px;height:14px;border:var(--border-sketch-width) solid var(--sketch-black);border-radius:50%;cursor:crosshair;transition:all var(--transition-fast);background:linear-gradient(135deg,var(--audio-output),var(--accent-primary))}.looper-sample-out-port:hover{transform:scale(1.2);box-shadow:0 0 8px var(--accent-primary)}.looper-sample-out-port.connected{background:var(--accent-primary);box-shadow:0 0 8px var(--accent-primary)}.looper-duration-container{display:flex;align-items:center;justify-content:center;gap:2px;flex:1;height:24px}.looper-duration{font-family:var(--font-mono);font-size:var(--text-md);font-weight:600;color:var(--text-primary);cursor:pointer;padding:0 6px;border-radius:var(--radius-sm);transition:background var(--transition-fast);-webkit-user-select:none;user-select:none;min-width:24px;line-height:24px;text-align:center}.looper-duration:hover{background:var(--bg-tertiary)}.looper-duration.disabled{opacity:.6;cursor:not-allowed}.looper-duration-input{font-family:var(--font-mono);font-size:var(--text-md);font-weight:600;color:var(--text-primary);background:var(--bg-tertiary);border:1px solid var(--sketch-black);border-radius:var(--radius-sm);padding:2px 4px;width:36px;text-align:center;outline:none}.looper-duration-input:focus{border-color:var(--accent-primary)}.looper-duration-input::-webkit-outer-spin-button,.looper-duration-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.looper-duration-input[type=number]{-moz-appearance:textfield}.looper-duration-unit{font-family:var(--font-sketch);font-size:var(--text-md);color:var(--text-muted)}.looper-active-waveform{height:24px;background:var(--bg-tertiary);margin:0 var(--space-md);border-radius:4px;overflow:hidden}.looper-active-waveform svg{width:100%;height:100%}.looper-waveform-path{stroke:var(--accent-primary)}.looper-waveform-path.recording{stroke:var(--accent-danger)}.looper-playhead{stroke:var(--accent-danger);stroke-width:2}.looper-loops{display:flex;flex-direction:column-reverse;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);max-height:96px;overflow-y:auto;overflow-x:hidden}.looper-loops::-webkit-scrollbar{width:4px}.looper-loops::-webkit-scrollbar-track{background:var(--bg-tertiary);border-radius:2px}.looper-loops::-webkit-scrollbar-thumb{background:var(--border-subtle);border-radius:2px}.looper-loops::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.looper-loop-item{position:relative;min-height:24px;height:24px;flex-shrink:0;background:var(--bg-canvas);border-radius:4px;border:1px solid var(--border-subtle);overflow:hidden;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.looper-loop-item:hover{border-color:var(--audio-connected);box-shadow:0 0 6px color-mix(in srgb,var(--audio-connected) 30%,transparent)}.looper-loop-item:active{cursor:grabbing}.looper-loop-item svg{width:100%;height:100%}.looper-loop-item.muted{opacity:.4}.looper-loop-item.muted .looper-waveform-path{stroke:var(--text-muted)}.looper-loop-controls{position:absolute;top:2px;right:4px;display:flex;gap:4px;opacity:0;transition:opacity .15s ease}.looper-loop-item:hover .looper-loop-controls{opacity:1}.looper-loop-btn{width:20px;height:20px;padding:0;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--bg-node);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-primary)}.looper-loop-btn:hover{background:var(--bg-tertiary)}.looper-loop-btn.muted{color:var(--accent-danger)}.looper-loop-btn.delete:hover{background:var(--accent-danger);color:#fff;border-color:var(--accent-danger)}.looper-loop-btn.export:hover{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.looper-loop-btn.export.exported{color:var(--accent-success)}.looper-loop-btn.export.exported:hover{background:var(--accent-success);color:#fff;border-color:var(--accent-success)}.looper-record-container{display:flex;justify-content:center;padding:var(--space-sm)}.looper-record-btn{width:100%;max-width:200px;height:28px;border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-md);background:var(--accent-danger);cursor:pointer;position:relative;transition:all var(--transition-fast);margin:0 var(--space-md)}.looper-record-btn:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:12px;height:12px;border-radius:50%;background:#fff}.looper-record-btn:hover:not(:disabled){background:color-mix(in srgb,var(--accent-danger) 80%,white);box-shadow:0 2px 8px color-mix(in srgb,var(--accent-danger) 40%,transparent)}.looper-record-btn:disabled{opacity:.5;cursor:not-allowed}.looper-record-btn.recording:after{width:10px;height:10px;border-radius:2px}.looper-record-btn.recording{animation:looper-record-pulse 1s ease-in-out infinite}.looper-record-btn.armed{animation:looper-armed-blink .5s ease-in-out infinite}@keyframes looper-record-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--accent-danger) 40%,transparent)}50%{box-shadow:0 0 0 8px color-mix(in srgb,var(--accent-danger) 0%,transparent)}}@keyframes looper-armed-blink{0%,to{opacity:1}50%{opacity:.5}}.microphone-node{min-width:140px}.mic-latency-badge{width:20px;height:20px;background:#ffc107e6;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#000;border:1px solid var(--sketch-black)}.mic-content{padding:var(--space-sm) var(--space-md);display:flex;flex-direction:column;gap:var(--space-sm)}.mic-controls-row{display:flex;align-items:center;gap:var(--space-sm)}.mic-device-selector{position:relative}.mic-device-selector .device-dropdown{left:0;right:auto;white-space:nowrap}.mic-source-btn{width:36px;height:36px;border-radius:var(--radius-sm);border:2px solid var(--sketch-black);background:var(--bg-canvas);color:var(--text-primary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-fast)}.mic-source-btn:hover{background:var(--bg-tertiary)}.mic-mute-btn{width:36px;height:36px;border-radius:var(--radius-sm);border:2px solid var(--sketch-black);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-fast);position:relative}.mic-mute-btn:disabled{opacity:.5;cursor:not-allowed}.mic-mute-btn.live{background:var(--accent-success);color:#fff}.mic-mute-btn.live:hover:not(:disabled){background:#3cb371}.mic-mute-btn.muted{background:var(--accent-danger);color:#fff}.mic-mute-btn.muted:hover:not(:disabled){background:#c94444}.mic-mute-btn.muted:after{content:"";position:absolute;width:70%;height:2px;background:#fff;transform:rotate(-45deg);border-radius:1px}.mic-output-port{width:16px;height:16px;border-radius:50%;background:var(--audio-output);border:var(--border-sketch-width) solid var(--sketch-black);cursor:pointer;transition:all var(--transition-fast);margin-left:auto}.mic-output-port:hover{transform:scale(1.2)}.mic-output-port.connected{box-shadow:0 0 8px var(--audio-output)}.mic-waveform-line{width:100%;height:20px}.mic-waveform-path{stroke:var(--accent-primary)}.bundle-port-row,.control-port-row{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--space-xs) 0;gap:var(--space-sm)}.port-label{display:flex;align-items:center;gap:var(--space-xs);font-size:var(--text-sm);color:var(--text-secondary);font-family:var(--font-sketch)}.bundle-icon{font-size:16px;line-height:1}.port-circle-marker.bundle-port{background:var(--control-output);width:24px;height:24px;border:3px solid var(--sketch-black);box-shadow:0 0 0 2px var(--bg-node);transition:all var(--transition-fast)}.port-circle-marker.bundle-port:hover{transform:scale(1.2);filter:brightness(1.2)}.port-circle-marker.bundle-port.connected{background:var(--control-connected);box-shadow:0 0 8px var(--control-connected)}.expand-btn{margin-top:var(--space-sm);padding:var(--space-xs) var(--space-md);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-primary);font-family:var(--font-sketch);font-size:var(--text-sm);font-weight:600;cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;gap:var(--space-xs)}.expand-btn:hover{background:var(--bg-secondary);transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}.expand-btn:active{transform:translateY(0);box-shadow:none}.keyboard-schematic-body.advanced-mode{padding:var(--space-md);min-width:280px;max-width:350px}.key-row-section{margin-bottom:var(--space-md);padding-bottom:var(--space-sm);border-bottom:1px solid var(--border-subtle)}.key-row-section:last-of-type{border-bottom:none}.key-row-label{font-size:var(--text-xs);color:var(--text-secondary);font-family:var(--font-mono);font-weight:600;margin-bottom:var(--space-xs);text-align:left}.key-ports-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--space-xs);width:100%}.key-port-item{display:flex;flex-direction:column;align-items:center;gap:2px}.key-label{font-size:10px;font-family:var(--font-mono);font-weight:600;color:var(--text-secondary);text-align:center}.port-circle-marker.key-port{width:18px;height:18px;background:var(--control-output)}.port-circle-marker.key-port:hover{transform:scale(1.15)}.port-circle-marker.key-port.connected{background:var(--control-connected);box-shadow:0 0 6px var(--control-connected)}.collapse-btn{margin-top:var(--space-md);padding:var(--space-xs) var(--space-md);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-primary);font-family:var(--font-sketch);font-size:var(--text-sm);font-weight:600;cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;gap:var(--space-xs);width:100%;justify-content:center}.collapse-btn:hover{background:var(--bg-secondary);transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}.collapse-btn:active{transform:translateY(0);box-shadow:none}.bundle-mapping-section{padding:var(--space-sm) var(--space-md);border-top:1px solid var(--border-subtle);display:flex;justify-content:center}.bundle-mapping-btn{padding:var(--space-xs) var(--space-md);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-primary);font-family:var(--font-sketch);font-size:var(--text-sm);font-weight:600;cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;gap:var(--space-xs)}.bundle-mapping-btn:hover{background:var(--accent-primary);color:#fff;transform:translateY(-1px);box-shadow:0 2px 6px #0003}.bundle-mapping-btn:active{transform:translateY(0);box-shadow:none}.canvas-io-node{min-width:180px;padding:var(--space-md);display:flex;flex-direction:column;align-items:center;gap:var(--space-sm)}.canvas-io-node .io-indicator{display:flex;justify-content:center;align-items:center}.canvas-io-node .port-dot{width:20px;height:20px;border-radius:50%;border:3px solid var(--sketch-black);cursor:pointer;transition:all var(--transition-fast)}.canvas-io-node.canvas-input .port-dot{background:var(--control-output)}.canvas-io-node.canvas-output .port-dot{background:var(--control-input)}.canvas-io-node .port-dot:hover{transform:scale(1.2);box-shadow:0 0 8px currentColor}.canvas-io-node .io-name-field{width:100%;text-align:center;cursor:pointer}.canvas-io-node .name-input{width:100%;padding:var(--space-xs) var(--space-sm);border:2px solid var(--accent-primary);border-radius:var(--radius-sm);background:var(--bg-canvas);color:var(--text-primary);font-family:var(--font-sketch);font-size:var(--text-md);text-align:center;outline:none}.canvas-io-node .name-text{display:block;padding:var(--space-xs);font-family:var(--font-sketch);font-size:var(--text-md);color:var(--text-primary);border:2px solid transparent;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.canvas-io-node .name-text:hover{background:var(--bg-tertiary);border-color:var(--border-subtle)}.canvas-io-node .io-type-label{font-size:var(--text-xs);font-family:var(--font-mono);color:var(--text-muted);font-weight:600;text-transform:uppercase}@keyframes flash-red{0%,to{box-shadow:0 0 0 2px var(--accent-primary)}50%{box-shadow:0 0 0 4px var(--accent-danger),0 0 20px var(--accent-danger)}}.canvas-io-node.deletion-attempted{animation:flash-red .4s ease-in-out}.keyboard-visual-node{min-width:600px;max-width:700px}.keyboard-visual-header{text-align:center}.keyboard-visual-body{padding:var(--space-md) var(--space-lg);display:flex;flex-direction:column;gap:var(--space-sm)}.keyboard-visual-node .keyboard-row{display:flex;gap:4px}.keyboard-visual-node .keyboard-row.row-1{margin-left:0}.keyboard-visual-node .keyboard-row.row-2{margin-left:25px}.keyboard-visual-node .keyboard-row.row-3{margin-left:50px}.keyboard-visual-node .keyboard-row.row-space{margin-left:80px;margin-top:var(--space-sm)}.keyboard-visual-key{position:relative;width:50px;height:50px;background:var(--bg-canvas);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none;cursor:crosshair}.keyboard-visual-key:hover{background:var(--bg-tertiary);transform:translateY(-2px);box-shadow:0 2px 4px #0000001a}.keyboard-visual-key.active{background:var(--accent-primary);color:var(--text-on-accent);border-color:var(--accent-primary);transform:translateY(0);box-shadow:inset 0 2px 4px #0003}.keyboard-visual-key .key-label{font-family:var(--font-mono);font-size:var(--text-md);font-weight:600;color:inherit}.keyboard-visual-key.spacebar{width:300px}.keyboard-visual-key.spacebar .key-label{font-size:var(--text-sm);letter-spacing:2px}.key-port-marker{position:absolute;right:4px;bottom:4px;width:10px;height:10px;border:2px solid var(--sketch-black);border-radius:50%;background:var(--control-output);cursor:crosshair;transition:all var(--transition-fast);z-index:1}.key-port-marker:hover{transform:scale(1.3);background:var(--control-output);filter:brightness(1.2)}.key-port-marker.connected{background:var(--control-connected);box-shadow:0 0 4px var(--control-connected)}.port-row{display:flex;align-items:center;justify-content:space-between;padding:var(--space-xs) var(--space-sm);gap:var(--space-sm)}.port-row.input{flex-direction:row}.port-row.output{flex-direction:row-reverse}.output-panel-node{position:absolute;width:140px;background:var(--bg-node);border:2px solid var(--sketch-black);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);cursor:default;transition:box-shadow var(--transition-fast)}.output-panel-node:hover{box-shadow:var(--shadow-lg)}.output-panel-node.selected{border-color:var(--accent-primary);box-shadow:0 0 0 2px var(--accent-primary)}.output-panel-node.dragging{opacity:.9;cursor:grabbing}.output-panel-header{padding:var(--space-xs) var(--space-sm);background:var(--bg-tertiary);border-bottom:2px solid var(--sketch-black);cursor:grab}.output-panel-header:active{cursor:grabbing}.output-panel-header .schematic-title{font-size:var(--text-sm);font-weight:600;text-transform:uppercase;letter-spacing:1px}.output-panel-body{display:flex;flex-direction:column;padding:var(--space-sm) var(--space-xs);gap:var(--space-sm);min-height:40px}.output-panel-empty{font-size:var(--text-xs);color:var(--text-muted);text-align:center;padding:var(--space-xs);font-style:italic}.output-panel-port-row{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-xs);border-radius:var(--radius-xs);transition:background var(--transition-fast)}.output-panel-port-row:hover{background:var(--sketch-grid)}.output-panel-port-marker{width:14px;height:14px;min-width:14px;border:2px solid var(--sketch-black);border-radius:50%;background:linear-gradient(135deg,#ff6b6b,#ffe66d,#4ecb71,#4db8ff,#9b59b6);background-size:200% 200%;animation:rainbow-shift 3s ease infinite;cursor:crosshair;transition:transform var(--transition-fast),filter var(--transition-fast)}.output-panel-port-marker:hover{transform:scale(1.2);filter:brightness(1.1)}.output-panel-port-marker.connected{background:var(--control-connected);box-shadow:0 0 4px var(--control-connected);animation:none}.output-panel-label{flex:1;width:0;min-height:1.2em;line-height:1.2;font-size:var(--text-sm);font-family:inherit;color:var(--text-primary);cursor:text;padding:2px 4px;border-radius:var(--radius-xs);transition:background var(--transition-fast);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.output-panel-label:hover{background:#0000000d}.output-panel-label-input{flex:1;width:0;font-size:var(--text-sm);font-family:inherit;color:var(--text-primary);padding:2px 4px;border:none;border-radius:var(--radius-xs);background:#0000000d;outline:none;caret-color:var(--accent-primary)}.output-panel-label-input::selection{background:var(--accent-primary-alpha)}.output-panel-label:focus{outline:2px solid var(--accent-primary);outline-offset:1px}.output-panel-port-marker:focus{outline:2px solid var(--accent-primary);outline-offset:2px}.input-panel-node{position:absolute;width:140px;background:var(--bg-node);border:2px solid var(--sketch-black);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);cursor:default;transition:box-shadow var(--transition-fast)}.input-panel-node:hover{box-shadow:var(--shadow-lg)}.input-panel-node.selected{border-color:var(--accent-primary);box-shadow:0 0 0 2px var(--accent-primary)}.input-panel-node.dragging{opacity:.9;cursor:grabbing}.input-panel-header{padding:var(--space-xs) var(--space-sm);background:var(--bg-tertiary);border-bottom:2px solid var(--sketch-black);cursor:grab}.input-panel-header:active{cursor:grabbing}.input-panel-header .schematic-title{font-size:var(--text-sm);font-weight:600;text-transform:uppercase;letter-spacing:1px}.input-panel-body{display:flex;flex-direction:column;padding:var(--space-sm) var(--space-xs);gap:var(--space-sm);min-height:40px}.input-panel-empty{font-size:var(--text-xs);color:var(--text-muted);text-align:center;padding:var(--space-xs);font-style:italic}.input-panel-port-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-xs) var(--space-xs);border-radius:var(--radius-xs);transition:background var(--transition-fast)}.input-panel-port-row:hover{background:#0000000d}.input-panel-port-marker{width:14px;height:14px;min-width:14px;border:2px solid var(--sketch-black);border-radius:50%;background:linear-gradient(135deg,#ff6b6b,#ffe66d,#4ecb71,#4db8ff,#9b59b6);background-size:200% 200%;animation:rainbow-shift 3s ease infinite;cursor:crosshair;transition:transform var(--transition-fast),filter var(--transition-fast)}.input-panel-port-marker:hover{transform:scale(1.2);filter:brightness(1.1)}.input-panel-port-marker.connected{background:var(--control-connected);box-shadow:0 0 4px var(--control-connected);animation:none}.input-panel-label{flex:1;width:0;min-height:1.2em;line-height:1.2;font-size:var(--text-sm);font-family:inherit;color:var(--text-primary);cursor:text;padding:2px 4px;border-radius:var(--radius-xs);transition:background var(--transition-fast);text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.input-panel-label:hover{background:#0000000d}.input-panel-label-input{flex:1;width:0;font-size:var(--text-sm);font-family:inherit;color:var(--text-primary);padding:2px 4px;border:none;border-radius:var(--radius-xs);background:#0000000d;outline:none;caret-color:var(--accent-primary);text-align:left}.input-panel-label-input::selection{background:var(--accent-primary-alpha)}.input-panel-label:focus{outline:2px solid var(--accent-primary);outline-offset:1px}.input-panel-port-marker:focus{outline:2px solid var(--accent-primary);outline-offset:2px}.input-panel-port-row.empty-slot,.output-panel-port-row.empty-slot{opacity:.6;border-top:1px dashed var(--border-color, rgba(0, 0, 0, .1));margin-top:var(--space-xs);padding-top:var(--space-xs)}.input-panel-port-row.empty-slot:hover,.output-panel-port-row.empty-slot:hover{opacity:1}.empty-slot-label{font-style:italic;color:var(--text-muted, #888);font-size:var(--text-xs, 11px)}.empty-slot-marker{border-style:dashed!important;opacity:.7}.empty-slot-marker:hover{opacity:1;border-style:solid!important}.port-dot.universal{background:linear-gradient(135deg,#ff6b6b,#ffe66d,#4ecb71,#4db8ff,#9b59b6);background-size:200% 200%;animation:rainbow-shift 3s ease infinite}.port-dot.universal.connected{animation:none}.port-dot.universal.resolved-audio{background:var(--audio-connected);box-shadow:0 0 8px var(--audio-connected);animation:none}.port-dot.universal.resolved-control{background:var(--control-connected);box-shadow:0 0 8px var(--control-connected);animation:none}@keyframes rainbow-shift{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.container-node{min-width:140px;min-height:80px}.container-header{padding:var(--space-sm) var(--space-md);background:var(--bg-node-header);border-bottom:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-lg) var(--radius-lg) 0 0;cursor:grab;display:flex;justify-content:space-between;align-items:center}.container-header:active{cursor:grabbing}.container-name{font-family:var(--font-sketch);font-size:var(--text-lg);font-weight:600;color:var(--text-primary);cursor:text;transition:background var(--transition-fast);padding:2px 4px;border-radius:var(--radius-sm)}.container-name:hover{background:var(--bg-tertiary)}.container-name-input{font-family:var(--font-sketch);font-size:var(--text-lg);font-weight:600;color:var(--text-primary);background:var(--bg-canvas);border:2px solid var(--accent-primary);border-radius:var(--radius-sm);padding:2px 6px;width:100%;outline:none}.entry-indicator{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);background:var(--bg-tertiary);padding:2px 6px;border-radius:var(--radius-sm)}.container-body{padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-sm);min-height:40px}.container-ports-hint{font-size:var(--text-xs);color:var(--text-muted);text-align:center;font-style:italic}.math-node{min-width:100px}.math-header{padding:var(--space-xs) var(--space-sm);background:var(--bg-node-header);border-bottom:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-lg) var(--radius-lg) 0 0;cursor:grab;display:flex;align-items:center;gap:var(--space-sm)}.math-header:active{cursor:grabbing}.math-symbol{font-family:var(--font-mono);font-size:var(--text-xl);font-weight:700;color:var(--accent-primary)}.math-name{font-family:var(--font-sketch);font-size:var(--text-md);color:var(--text-primary)}.math-body{padding:var(--space-sm);display:flex;flex-direction:row;justify-content:space-between;align-items:stretch;gap:var(--space-md)}.math-inputs{display:flex;flex-direction:column;justify-content:space-around;gap:var(--space-sm)}.math-outputs{display:flex;flex-direction:column;justify-content:flex-start}.math-port-row{display:flex;align-items:center;gap:var(--space-xs)}.math-port-row.output{justify-content:flex-end}.subtract-indicator{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--accent-danger);margin-left:var(--space-xs)}.math-node .port-dot{width:16px;height:16px;border:var(--border-sketch-width) solid var(--sketch-black);border-radius:50%;cursor:crosshair;transition:all var(--transition-fast)}.math-node .port-dot:hover{transform:scale(1.2);filter:brightness(1.1)}.library-node{min-width:260px;max-width:320px}.library-node .schematic-header{display:flex;justify-content:space-between;align-items:center}.library-count{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);background:var(--bg-tertiary);padding:2px 6px;border-radius:var(--radius-pill)}.library-content{padding:var(--space-sm) var(--space-md);display:flex;flex-direction:column;gap:var(--space-sm)}.library-empty{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);padding:var(--space-md)}.library-link-btn{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-md);background:var(--accent-primary);color:#fff;font-family:var(--font-sketch);font-size:var(--text-md);font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.library-link-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 8px #0003}.library-link-btn:disabled{opacity:.7;cursor:not-allowed}.library-hint{font-size:var(--text-xs);color:var(--text-muted);text-align:center;margin:0}.library-scanning{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-sm)}.scan-progress{height:6px;background:var(--bg-tertiary);border-radius:var(--radius-pill);overflow:hidden}.scan-progress-bar{height:100%;background:var(--accent-primary);border-radius:var(--radius-pill);transition:width .3s ease}.scan-status{font-size:var(--text-xs);color:var(--text-muted);text-align:center}.library-search{width:100%}.library-search input{width:100%;padding:var(--space-xs) var(--space-sm);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--bg-canvas);color:var(--text-primary);font-family:var(--font-sketch);font-size:var(--text-sm)}.library-search input:focus{outline:none;border-color:var(--accent-primary)}.library-search input::placeholder{color:var(--text-muted)}.library-samples{display:flex;flex-direction:column;gap:2px;max-height:160px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--border-subtle) transparent}.library-samples::-webkit-scrollbar{width:4px}.library-samples::-webkit-scrollbar-track{background:transparent}.library-samples::-webkit-scrollbar-thumb{background:var(--border-subtle);border-radius:2px}.library-sample-row{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast)}.library-sample-row:hover{background:var(--bg-tertiary)}.library-sample-row.selected{background:var(--accent-primary);color:#fff}.library-sample-row.missing{opacity:.6}.library-sample-row.missing .sample-name{text-decoration:line-through}.sample-drag-handle{width:16px;height:16px;min-width:16px;display:flex;align-items:center;justify-content:center;color:var(--text-muted);cursor:grab;opacity:0;transition:opacity var(--transition-fast),color var(--transition-fast)}.library-sample-row:hover .sample-drag-handle{opacity:.6}.sample-drag-handle:hover{color:var(--accent-primary);opacity:1!important}.sample-drag-handle:active{cursor:grabbing}.sample-preview-btn{width:20px;height:20px;min-width:20px;padding:0;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--bg-canvas);color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast)}.sample-preview-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.sample-preview-btn.playing{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.sample-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.sample-name{font-size:var(--text-sm);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sample-meta{font-size:10px;color:var(--text-muted);font-family:var(--font-mono)}.library-sample-row.selected .sample-meta{color:#ffffffb3}.sample-missing-badge{width:16px;height:16px;font-size:12px;font-weight:700;color:var(--accent-danger);display:flex;align-items:center;justify-content:center}.sample-favorite-btn{width:20px;height:20px;padding:0;border:none;background:transparent;color:var(--text-muted);cursor:pointer;font-size:14px;transition:all var(--transition-fast);opacity:0}.library-sample-row:hover .sample-favorite-btn{opacity:1}.sample-favorite-btn.active{color:gold;opacity:1}.sample-favorite-btn:hover{transform:scale(1.2)}.library-no-samples{text-align:center;font-size:var(--text-xs);color:var(--text-muted);padding:var(--space-sm);font-style:italic}.library-more{text-align:center;font-size:var(--text-xs);color:var(--text-muted);padding:var(--space-xs);font-style:italic;border-top:1px solid var(--border-subtle);margin-top:var(--space-xs)}.library-playback-mode{display:flex;justify-content:center;gap:var(--space-xs);padding-top:var(--space-sm);border-top:1px solid var(--border-subtle)}.library-playback-mode .mode-btn{width:32px;height:24px;padding:0;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--bg-canvas);color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-sm);font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.library-playback-mode .mode-btn:hover{background:var(--bg-tertiary)}.library-playback-mode .mode-btn.active{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.library-port{position:absolute;width:14px;height:14px;border:var(--border-sketch-width) solid var(--sketch-black);border-radius:50%;cursor:crosshair;transition:all var(--transition-fast);transform:translate(-50%,-50%)}.library-port.input{background:var(--control-input)}.library-port.output{background:var(--audio-output)}.library-port:hover{transform:translate(-50%,-50%) scale(1.2);filter:brightness(1.1)}.library-port.connected{box-shadow:0 0 6px currentColor}.library-port.input.connected{background:var(--control-connected)}.library-port.output.connected{background:var(--audio-connected)}.library-port.sample-out{background:linear-gradient(135deg,var(--audio-output),var(--accent-primary));border-width:3px}.library-port.sample-out:hover{box-shadow:0 0 8px var(--accent-primary)}.library-port.sample-out.connected{background:var(--accent-primary);box-shadow:0 0 8px var(--accent-primary)}.library-node.library-two-panel{min-width:400px;min-height:300px;max-width:none;display:flex;flex-direction:column;overflow:hidden}.library-two-panel .library-panels{flex:1;display:flex;overflow:hidden;min-height:0}.library-left-panel{width:160px;min-width:140px;display:flex;flex-direction:column;border-right:1px solid var(--border-subtle);background:var(--bg-canvas);overflow:hidden}.library-right-panel{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.tags-section-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-xs) var(--space-sm);font-size:var(--text-xs);color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border-subtle);flex-shrink:0}.add-tag-btn{width:18px;height:18px;padding:0;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--bg-canvas);color:var(--text-secondary);font-size:14px;font-weight:600;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast)}.add-tag-btn:hover{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.library-tags-section{display:flex;flex-direction:column;overflow:hidden}.library-tags-section.pinned{flex-shrink:0}.library-tags-section.other{flex:1;min-height:0}.library-tags-section.other .tags-section-header{display:flex;justify-content:space-between;align-items:center}.library-tags-section.pinned.drag-over{background:var(--accent-primary-alpha);outline:2px dashed var(--accent-primary);outline-offset:-2px}.tags-list{flex:1;overflow-y:auto;padding:var(--space-xs);display:flex;flex-direction:column;gap:2px;scrollbar-width:thin;scrollbar-color:var(--border-subtle) transparent}.tags-list::-webkit-scrollbar{width:4px}.tags-list::-webkit-scrollbar-track{background:transparent}.tags-list::-webkit-scrollbar-thumb{background:var(--border-subtle);border-radius:2px}.tag-input-row{padding:2px}.tag-input-row input{width:100%;padding:var(--space-xs);border:1px solid var(--accent-primary);border-radius:var(--radius-sm);background:var(--bg-canvas);color:var(--text-primary);font-family:var(--font-sketch);font-size:var(--text-sm)}.tag-input-row input:focus{outline:none}.library-tag{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast);position:relative}.library-tag:hover{background:var(--bg-tertiary)}.library-tag.active{background:color-mix(in srgb,var(--tag-color, #888) 20%,var(--bg-canvas));font-weight:600}.library-tag.drag-over{background:color-mix(in srgb,var(--accent-primary) 20%,var(--bg-canvas));box-shadow:inset 0 0 0 2px var(--accent-primary)}.library-tag.dragging{opacity:.5;cursor:grabbing}.library-tag{cursor:grab}.library-tag:active{cursor:grabbing}.library-tag.drop-before:before{content:"";position:absolute;top:-2px;left:0;right:0;height:3px;background:var(--accent-primary);border-radius:2px}.library-tag.drop-after:after{content:"";position:absolute;bottom:-2px;left:0;right:0;height:3px;background:var(--accent-primary);border-radius:2px}.tag-indicator{width:8px;height:8px;border-radius:50%;flex-shrink:0}.tag-name{font-size:var(--text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.tag-unpin-btn{width:14px;height:14px;padding:0;border:none;background:transparent;color:var(--text-muted);font-size:12px;cursor:pointer;opacity:0;transition:opacity var(--transition-fast);display:flex;align-items:center;justify-content:center}.library-tag:hover .tag-unpin-btn{opacity:.6}.tag-unpin-btn:hover{opacity:1!important;color:var(--accent-danger)}.tag-delete-btn{width:14px;height:14px;padding:0;border:none;background:transparent;color:var(--text-muted);font-size:12px;cursor:pointer;opacity:0;transition:opacity var(--transition-fast);display:flex;align-items:center;justify-content:center}.library-tag:hover .tag-delete-btn{opacity:.6}.tag-delete-btn:hover{opacity:1!important;color:var(--accent-danger)}.no-tags-hint{font-size:var(--text-xs);color:var(--text-muted);font-style:italic;padding:var(--space-sm);text-align:center}.library-two-panel .library-search{padding:var(--space-sm);border-bottom:1px solid var(--border-subtle);display:flex;gap:var(--space-xs);flex-shrink:0}.library-two-panel .library-search input{flex:1}.clear-filter-btn{padding:2px var(--space-sm);border:1px solid var(--border-subtle);border-radius:var(--radius-pill);background:color-mix(in srgb,var(--accent-primary) 15%,var(--bg-canvas));color:var(--text-primary);font-size:var(--text-xs);cursor:pointer;display:flex;align-items:center;gap:2px;transition:all var(--transition-fast);white-space:nowrap}.clear-filter-btn:hover{background:var(--accent-danger);color:#fff;border-color:var(--accent-danger)}.library-files-container{flex:1;position:relative;overflow:hidden;min-height:0;display:flex;flex-direction:column}.library-files{flex:1;overflow-y:auto;padding:var(--space-xs);display:flex;flex-direction:column;gap:1px;scrollbar-width:thin;scrollbar-color:var(--border-subtle) transparent;min-height:100%;background:transparent}.library-selection-box{position:absolute;background:color-mix(in srgb,var(--accent-primary) 20%,transparent);border:1px solid var(--accent-primary);pointer-events:none;z-index:10;opacity:.5}.library-files::-webkit-scrollbar{width:6px}.library-files::-webkit-scrollbar-track{background:transparent}.library-files::-webkit-scrollbar-thumb{background:var(--border-subtle);border-radius:3px}.library-file-row{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast)}.library-file-row:hover{background:var(--bg-tertiary)}.library-file-row.selected{background:var(--accent-primary);color:#fff}.library-file-row:focus-visible{outline:2px solid var(--accent-primary);outline-offset:-2px}.library-file-row.multi-selected{background:color-mix(in srgb,var(--accent-primary) 20%,transparent);outline:1px solid var(--accent-primary);outline-offset:-1px}.library-file-row.multi-selected.selected{background:var(--accent-primary)}.library-file-row.missing{opacity:.6}.library-file-row.missing .file-name{text-decoration:line-through}.file-preview-btn{width:20px;height:20px;min-width:20px;padding:0;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--bg-canvas);color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:10px;transition:all var(--transition-fast)}.file-preview-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.file-preview-btn.playing{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.library-file-row.selected .file-preview-btn{border-color:#ffffff4d;background:#ffffff1a;color:#fff}.file-name{flex:1;font-size:var(--text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;cursor:text}.file-name-input{flex:1;font-size:var(--text-sm);min-width:0;padding:2px 6px;border:1px solid var(--accent-primary);border-radius:4px;background:var(--bg-primary);color:var(--text-primary);outline:none}.file-name-input:focus{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent-primary) 30%,transparent)}.library-file-row.editing{background:var(--bg-secondary)}.file-tags{display:flex;gap:4px;flex-shrink:0;align-items:center}.file-tag-badge{display:inline-flex;align-items:center;gap:2px;padding:2px 8px;border-radius:var(--radius-pill);font-size:11px;font-weight:600;background-color:var(--tag-bg, #888);color:var(--tag-text, #000);white-space:nowrap;cursor:pointer;transition:filter var(--transition-fast),transform var(--transition-fast),padding var(--transition-fast);max-width:100px}.file-tag-badge:hover{filter:brightness(1.1);transform:scale(1.05);padding-right:4px}.tag-remove-btn{display:none;align-items:center;justify-content:center;width:14px;height:14px;padding:0;margin-left:2px;border:none;border-radius:50%;background:#0003;color:inherit;font-size:12px;font-weight:700;line-height:1;cursor:pointer;transition:background var(--transition-fast);flex-shrink:0}.file-tag-badge:hover .tag-remove-btn{display:inline-flex}.tag-remove-btn:hover{background:#0006}.tag-remove-btn:focus-visible{outline:2px solid var(--accent-primary);outline-offset:1px}.file-tag-badge:focus-visible{outline:2px solid var(--accent-primary);outline-offset:1px}.library-file-row.selected .file-tag-badge{filter:brightness(1.2) saturate(1.2)}.file-tag-more{font-size:11px;font-weight:600;color:var(--text-secondary);padding:2px 6px;background:var(--bg-tertiary);border-radius:var(--radius-pill)}.library-file-row.selected .file-tag-more{color:#fffc;background:#fff3}.file-trash-btn{width:20px;height:20px;min-width:20px;padding:0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;opacity:0;transition:all var(--transition-fast);flex-shrink:0}.library-file-row:hover .file-trash-btn:not(:disabled){opacity:1}.file-trash-btn:hover:not(:disabled){background:var(--accent-danger);color:#fff}.file-trash-btn.restore:hover:not(:disabled){background:var(--accent-success);color:#fff}.file-trash-btn:focus-visible{outline:2px solid var(--accent-primary);outline-offset:1px;opacity:1}.file-trash-btn:disabled{opacity:.3;cursor:not-allowed}.library-file-row.trashed{opacity:.5}.library-file-row.trashed .file-name{text-decoration:line-through;color:var(--text-muted)}.library-file-row.trashed .file-trash-btn{opacity:1;color:var(--accent-success)}.library-file-row.virtual{border-left:2px solid var(--accent-primary);padding-left:calc(var(--space-sm) - 2px)}.virtual-indicator{display:flex;align-items:center;justify-content:center;color:var(--accent-primary);opacity:.8;flex-shrink:0}.library-file-row.selected .virtual-indicator{color:#ffffffe6}.file-delete-btn{width:20px;height:20px;min-width:20px;padding:0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all var(--transition-fast);flex-shrink:0}.file-delete-btn:hover:not(:disabled){background:var(--accent-danger);color:#fff}.file-delete-btn:focus-visible{outline:2px solid var(--accent-primary);outline-offset:1px}.file-delete-btn:disabled{opacity:.3;cursor:not-allowed}.empty-trash-btn{padding:var(--space-xs) var(--space-sm);font-size:var(--text-xs);background:var(--accent-danger);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;margin-left:auto;transition:background var(--transition-fast),opacity var(--transition-fast)}.empty-trash-btn:hover:not(:disabled){filter:brightness(.85)}.empty-trash-btn:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}.empty-trash-btn:disabled{opacity:.5;cursor:not-allowed}.library-results-count{font-size:var(--text-xs);color:var(--text-muted);padding:var(--space-xs) var(--space-sm);border-bottom:1px solid var(--border-subtle)}.file-preview-btn.loading{opacity:.5;cursor:wait}.file-preview-btn:disabled{opacity:.4;cursor:not-allowed}.library-no-files{text-align:center;font-size:var(--text-sm);color:var(--text-muted);padding:var(--space-lg);font-style:italic}.library-two-panel .library-empty,.library-two-panel .library-scanning{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-lg)}.sampler-node{position:relative;min-width:160px;max-width:200px}.sampler-node .schematic-header{display:flex;align-items:center;justify-content:center;padding:var(--space-xs) var(--space-sm)}.sampler-node .schematic-title{text-align:center}.sampler-side-port{position:absolute;width:14px;height:14px;border:var(--border-sketch-width) solid var(--sketch-black);border-radius:50%;cursor:crosshair;transition:transform var(--transition-fast),box-shadow var(--transition-fast);z-index:10}.sampler-side-port:hover{transform:scale(1.2)}.sampler-side-port:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px;transform:scale(1.2)}.sampler-side-port.input{left:-7px;top:22px;background:var(--control-input)}.sampler-side-port.input:hover{transform:scale(1.2)}.sampler-side-port.input.connected{background:var(--control-connected);box-shadow:0 0 6px var(--control-connected)}.sampler-side-port.output{right:-7px;top:22px;background:var(--audio-output)}.sampler-side-port.output:hover{transform:scale(1.2)}.sampler-side-port.output.connected{background:var(--audio-connected);box-shadow:0 0 6px var(--audio-connected)}.sampler-sample-area{position:relative;margin:var(--space-xs) var(--space-sm);min-height:40px;background:var(--bg-canvas);border-radius:var(--radius-sm);border:1px dashed var(--border-subtle);overflow:hidden;transition:border-color var(--transition-fast),box-shadow var(--transition-fast);display:flex;flex-direction:column;align-items:stretch;justify-content:center}.sampler-sample-area:hover{border-color:var(--audio-connected)}.sampler-sample-area.drag-over{border-color:var(--accent-primary);border-style:solid;background:color-mix(in srgb,var(--accent-primary) 10%,transparent);box-shadow:0 0 8px color-mix(in srgb,var(--accent-primary) 30%,transparent)}.sampler-sample-area.has-sample{border-style:solid;border-color:var(--border-subtle)}.sampler-sample-area.has-sample:hover{border-color:var(--audio-connected);box-shadow:0 0 6px color-mix(in srgb,var(--audio-connected) 30%,transparent)}.sampler-drop-text{font-family:var(--font-sketch);font-size:11px;color:var(--text-muted);text-align:center;padding:var(--space-sm)}.sampler-waveform-container{position:relative;height:22px;padding:2px 4px}.sampler-waveform-container svg{width:100%;height:100%}.sampler-waveform-path{stroke:var(--accent-primary);stroke-width:1.5}.sampler-center-line{stroke:var(--border-subtle);stroke-width:.5;stroke-dasharray:2 2;opacity:.5}.sampler-duration-badge{position:absolute;top:2px;left:4px;font-family:var(--font-mono);font-size:9px;color:var(--text-muted);background:color-mix(in srgb,var(--bg-node) 80%,transparent);padding:1px 3px;border-radius:2px}.sampler-info-bar{display:flex;align-items:center;gap:var(--space-xs);padding:2px var(--space-xs);background:var(--bg-tertiary);border-top:1px solid var(--border-subtle)}.sampler-sample-name{flex:1;font-family:var(--font-mono);font-size:10px;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sampler-root-note{font-family:var(--font-mono);font-size:10px;font-weight:600;color:var(--accent-primary);background:color-mix(in srgb,var(--accent-primary) 15%,transparent);padding:1px 4px;border-radius:var(--radius-xs);cursor:ns-resize;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast)}.sampler-root-note:hover{background:color-mix(in srgb,var(--accent-primary) 25%,transparent)}.sampler-clear-btn{width:14px;height:14px;padding:0;border:1px solid var(--border-subtle);border-radius:var(--radius-xs);background:var(--bg-node);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-muted);opacity:0;transition:all .15s ease;flex-shrink:0}.sampler-sample-area:hover .sampler-clear-btn{opacity:1}.sampler-clear-btn:hover{background:var(--accent-danger);color:#fff;border-color:var(--accent-danger)}.sampler-controls{display:flex;flex-direction:column;padding:var(--space-xs) var(--space-sm);gap:2px}.sampler-controls-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.sampler-control{font-family:var(--font-mono);font-size:10px;color:var(--text-primary);cursor:ns-resize;-webkit-user-select:none;user-select:none;padding:2px 4px;border-radius:var(--radius-xs);transition:background var(--transition-fast);white-space:nowrap}.sampler-control:hover{background:var(--bg-tertiary)}.sampler-output-port{width:14px;height:14px;border:var(--border-sketch-width) solid var(--sketch-black);border-radius:50%;background:var(--audio-output);cursor:crosshair;transition:all var(--transition-fast);flex-shrink:0;margin-left:auto}.sampler-output-port:hover{transform:scale(1.2)}.sampler-output-port.connected{background:var(--audio-connected);box-shadow:0 0 6px var(--audio-connected)}.instrument-visual-node.compact{position:absolute;background:#fdfbf7;border:2px solid #2a2a2a;border-radius:8px;min-width:200px;font-family:Caveat,cursive;box-shadow:2px 2px #0000001a;display:flex;flex-direction:column}.instrument-visual-node.compact.selected{border-color:#4a90d9;box-shadow:0 0 0 2px #4a90d94d,2px 2px #0000001a}.instrument-visual-node.compact.dragging{opacity:.8;cursor:grabbing}.instrument-visual-header.compact{padding:4px 12px;border-bottom:2px solid #2a2a2a;cursor:grab;background:#f5f0e6;border-radius:6px 6px 0 0}.instrument-visual-header.compact .instrument-visual-title{font-size:16px;font-weight:700;color:#2a2a2a}.instrument-rows-compact{padding:8px;display:flex;flex-direction:column;gap:8px}.no-rows-message.compact{font-size:14px;color:#888;font-style:italic;text-align:center;padding:12px}.row-compact{border:1px solid #ddd;border-radius:6px;padding:6px 8px;background:#fdfbf7}.row-header-compact{display:flex;gap:12px;padding-bottom:6px;border-bottom:1px dashed #ccc;margin-bottom:6px;flex-wrap:wrap}.editable-value{display:inline-flex;align-items:baseline;gap:4px;cursor:pointer;padding:2px 6px;border-radius:4px;transition:background-color .15s ease;-webkit-user-select:none;user-select:none}.editable-value:hover{background:#4a90d91a}.editable-display{font-size:18px;font-weight:700;color:#2a2a2a;font-family:Caveat,cursive}.editable-label{font-size:11px;color:#666;text-transform:lowercase;font-family:Inter,-apple-system,sans-serif}.editable-input{width:36px;font-size:14px;padding:1px 3px;text-align:center;border:1px solid #4a90d9;border-radius:3px;outline:none;font-family:Caveat,cursive}.editable-input:focus{box-shadow:0 0 0 2px #4a90d933}.row-keys-compact{display:flex;gap:2px;overflow-x:auto;padding:4px 0}.key-column{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:24px}.key-port{width:10px;height:10px;border-radius:50%;border:2px solid #888;background:#e0e0e0;cursor:pointer;transition:all .1s ease}.key-port:hover{transform:scale(1.2);background:#ccc}.key-port.connected{background:#888;box-shadow:0 0 3px #888}.key-port.pedal{border-color:#666;background:#f0f0f0}.key-port.pedal:hover{background:#e0e0e0}.key-offset{font-size:11px;color:#555;font-family:Inter,-apple-system,sans-serif;white-space:nowrap}.pedal-row-compact{display:flex;gap:8px;padding-top:6px;border-top:1px dashed #ccc}.pedal-item{display:flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid #888;border-radius:4px;background:#f5f5f5}.pedal-label{font-size:13px;color:#555;font-family:Inter,-apple-system,sans-serif}.output-port-area{position:absolute;right:2px;top:39px;display:flex;flex-direction:column;gap:8px}.visual-port{width:12px;height:12px;border-radius:50%;border:2px solid #2a2a2a;background:#fdfbf7;cursor:pointer;transition:all .15s ease}.visual-port:hover{transform:scale(1.2)}.visual-port.output.audio{border-color:#4a90d9;width:14px;height:14px}.visual-port.output.audio.connected{background:#4a90d9}.bundle-port-group{display:flex;flex-direction:column;width:100%}.bundle-port-row{display:flex;align-items:center;gap:6px;padding:4px 8px;min-height:28px}.bundle-port-group.left .bundle-port-row{flex-direction:row}.bundle-port-group.right .bundle-port-row{flex-direction:row-reverse}.bundle-expand-button{background:none;border:none;padding:2px 4px;cursor:pointer;color:var(--text-secondary, #888);font-size:10px;line-height:1;border-radius:3px;transition:background-color .15s,color .15s}.bundle-expand-button:hover{background-color:var(--hover-bg, rgba(255, 255, 255, .1));color:var(--text-primary, #fff)}.bundle-triangle{display:inline-block;transition:transform .15s ease}.bundle-label{font-size:12px;color:var(--text-primary, #fff);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px;cursor:default;-webkit-user-select:none;user-select:none}.bundle-count{color:var(--text-secondary, #888);font-size:11px;margin-left:4px}.bundle-port-marker{width:12px;height:12px;border-radius:50%;border:2px solid var(--port-border, #666);background-color:var(--port-bg, #333);cursor:crosshair;transition:border-color .15s,background-color .15s,transform .1s;flex-shrink:0}.bundle-port-marker:hover{transform:scale(1.2);border-color:var(--port-hover-border, #fff)}.bundle-port-marker.connected{background-color:var(--port-connected-bg, #4a9eff);border-color:var(--port-connected-border, #6ab7ff)}.bundle-port-marker.control-port{border-color:var(--control-port-color, #f0a020)}.bundle-port-marker.control-port.connected{background-color:var(--control-port-color, #f0a020)}.bundle-port-marker.audio-port{border-color:var(--audio-port-color, #4a9eff)}.bundle-port-marker.audio-port.connected{background-color:var(--audio-port-color, #4a9eff)}.bundle-channels{display:flex;flex-direction:column;padding-left:8px;margin-top:2px;max-height:300px;overflow-y:auto}.bundle-channels::-webkit-scrollbar{width:6px}.bundle-channels::-webkit-scrollbar-track{background:transparent}.bundle-channels::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb, rgba(255, 255, 255, .2));border-radius:3px}.bundle-channels::-webkit-scrollbar-thumb:hover{background-color:var(--scrollbar-thumb-hover, rgba(255, 255, 255, .3))}.bundle-channel-row{display:flex;align-items:center;gap:4px;padding:2px 4px;min-height:20px;font-size:11px}.bundle-channel-row.left{flex-direction:row}.bundle-channel-row.right{flex-direction:row-reverse}.bundle-channel-indent{width:8px}.bundle-channel-connector{color:var(--text-tertiary, #555);font-family:monospace;font-size:12px;width:12px;text-align:center}.bundle-channel-label{color:var(--text-secondary, #aaa);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px;flex:1}.bundle-channel-marker{width:6px;height:6px;border-radius:50%;border:1px solid var(--port-border, #666);background-color:var(--port-bg, #333);flex-shrink:0}.bundle-channel-marker.control-port{border-color:var(--control-port-color, #f0a020);background-color:#f0a0204d}.bundle-channel-marker.audio-port{border-color:var(--audio-port-color, #4a9eff);background-color:#4a9eff4d}.bundle-port-group.collapsed .bundle-port-marker{width:14px;height:14px;box-shadow:0 0 4px #f0a02066}.bundle-port-group.expanded .bundle-channels{animation:slideDown .15s ease-out}@keyframes slideDown{0%{opacity:0;max-height:0}to{opacity:1;max-height:300px}}.bundle-port-row.bundle-header{border-bottom:1px solid var(--border-color, rgba(255, 255, 255, .1));margin-bottom:4px;padding-bottom:6px}.bundle-port-group+.empty-slot-indicator{margin-top:8px;border-top:1px dashed var(--border-color, rgba(255, 255, 255, .1));padding-top:8px}.resize-handles{pointer-events:none}.resize-handle{position:absolute;pointer-events:auto;opacity:.4;transition:opacity var(--transition-fast, .15s ease);z-index:10}.resize-handle:hover,.resize-handle.active{opacity:1}.resize-handles.resizing .resize-handle{opacity:.6}.resize-handles.resizing .resize-handle.active{opacity:1}.resize-handle.corner{width:16px;height:16px}.resize-handle.corner:before{content:"";position:absolute;width:8px;height:8px}.resize-handle-se{right:0;bottom:0;cursor:nwse-resize}.resize-handle-se:before{right:3px;bottom:3px;border-right:2px solid var(--text-muted, #666);border-bottom:2px solid var(--text-muted, #666)}.resize-handle-nw{left:0;top:0;cursor:nwse-resize}.resize-handle-nw:before{left:3px;top:3px;border-left:2px solid var(--text-muted, #666);border-top:2px solid var(--text-muted, #666)}.resize-handle-ne{right:0;top:0;cursor:nesw-resize}.resize-handle-ne:before{right:3px;top:3px;border-right:2px solid var(--text-muted, #666);border-top:2px solid var(--text-muted, #666)}.resize-handle-sw{left:0;bottom:0;cursor:nesw-resize}.resize-handle-sw:before{left:3px;bottom:3px;border-left:2px solid var(--text-muted, #666);border-bottom:2px solid var(--text-muted, #666)}.resize-handle.edge{background:transparent}.resize-handle.edge:before{content:"";position:absolute;background:var(--text-muted, #666);opacity:0;transition:opacity var(--transition-fast, .15s ease)}.resize-handle.edge:hover:before,.resize-handle.edge.active:before{opacity:.5}.resize-handle-n{top:0;left:16px;right:16px;height:6px;cursor:ns-resize}.resize-handle-n:before{left:20%;right:20%;top:2px;height:2px;border-radius:1px}.resize-handle-s{bottom:0;left:16px;right:16px;height:6px;cursor:ns-resize}.resize-handle-s:before{left:20%;right:20%;bottom:2px;height:2px;border-radius:1px}.resize-handle-e{right:0;top:16px;bottom:16px;width:6px;cursor:ew-resize}.resize-handle-e:before{top:20%;bottom:20%;right:2px;width:2px;border-radius:1px}.resize-handle-w{left:0;top:16px;bottom:16px;width:6px;cursor:ew-resize}.resize-handle-w:before{top:20%;bottom:20%;left:2px;width:2px;border-radius:1px}.panel-separator{background:var(--border-subtle, #e5e5e5);flex-shrink:0;transition:background var(--transition-fast, .15s ease);position:relative}.panel-separator:before{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:var(--text-muted, #666);border-radius:1px;opacity:.6;transition:opacity var(--transition-fast, .15s ease)}.panel-separator:hover,.panel-separator.dragging{background:var(--accent-primary, #3b82f6)}.panel-separator:hover:before,.panel-separator.dragging:before{opacity:1}.panel-separator-horizontal{height:6px;width:100%;cursor:row-resize}.panel-separator-horizontal:before{width:20px;height:2px}.panel-separator-vertical{width:6px;height:100%;cursor:col-resize}.panel-separator-vertical:before{width:2px;height:20px}.midi-node{min-width:160px}.midi-connect-btn{width:100%;background:var(--bg-tertiary);color:var(--text-primary);border:var(--border-sketch-width, 2px) solid var(--sketch-black);border-radius:var(--radius-md, 6px);padding:8px 20px;font-family:var(--font-sketch);font-size:var(--text-sm, 12px);font-weight:600;cursor:pointer;transition:all .15s;margin-bottom:var(--space-sm)}.midi-connect-btn:hover{background:var(--bg-hover);transform:scale(1.02)}.midi-connect-btn:active{transform:scale(.98)}.midi-node.midi-unsupported{opacity:.7}.midi-unsupported-message{display:flex;flex-direction:column;align-items:center;gap:4px;padding:16px;color:var(--sketch-gray, #666);font-size:11px;text-align:center}.midi-browser-hint{font-size:9px;color:var(--sketch-gray, #999)}.midi-rename-input{width:100%;background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--sketch-black);border-radius:var(--radius-sm, 4px);padding:2px 6px;font-family:var(--font-sketch);font-size:var(--text-sm, 12px);font-weight:600;text-align:center;outline:none}.midi-rename-input:focus{border-color:var(--color-primary, #4a9eff);box-shadow:0 0 0 1px var(--color-primary, #4a9eff)}.minilab3-visual{position:relative;width:650px;height:400px;background:transparent;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none}.minilab3-body{position:relative;width:100%;height:100%;background:linear-gradient(180deg,#6baf9e,#5a9e8d,#4a8e7d);border-radius:12px;box-shadow:0 4px 12px #0000004d,inset 0 1px #fff3;display:flex;flex-direction:column;padding:10px 15px}.minilab3-controls{display:flex;gap:10px;height:110px;margin-bottom:8px;align-items:flex-start;position:relative}.minilab3-left-section{display:flex;flex-direction:column;gap:6px;width:70px;flex-shrink:0;position:absolute;top:0;left:0;height:165px}.minilab3-buttons{display:grid;grid-template-columns:1fr 1fr;gap:3px}.minilab3-button{background:#2a2a2a;border:1px solid #444;border-radius:3px;color:#888;font-size:7px;font-weight:600;padding:5px 3px;text-transform:uppercase;cursor:pointer;transition:all .1s;text-align:center}.minilab3-button:hover{background:#3a3a3a;color:#aaa}.minilab3-button.minilab3-shift{background:#333;color:#fff}.minilab3-touch-strips{display:flex;flex-direction:row;gap:4px;flex:1}.minilab3-touch-strip{flex:1;background:#1a1a1a;border-radius:4px;position:relative;overflow:visible;border:1px solid #333}.minilab3-strip-indicator{position:absolute;bottom:2px;left:2px;right:2px;height:8px;background:linear-gradient(180deg,#7fb8a8,#5a9e8d);border-radius:2px;transition:bottom 16ms linear;box-shadow:0 0 6px #7fb8a880}.minilab3-display-section{display:flex;flex-direction:column;align-items:center;gap:8px;width:70px;flex-shrink:0;padding-top:5px;margin-left:80px}.minilab3-oled{width:55px;height:35px;background:#000;border-radius:4px;display:flex;align-items:center;justify-content:center;border:2px solid #1a1a1a;box-shadow:inset 0 0 10px #000c}.minilab3-oled-text{color:#4fc3f7;font-size:8px;font-weight:600;text-transform:uppercase;letter-spacing:1px}.minilab3-main-encoder{width:40px;height:40px;background:linear-gradient(145deg,#f5f5f5,#e0e0e0,#bdbdbd);border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 3px 6px #0000004d,inset 0 1px #fffc;cursor:pointer}.minilab3-encoder-cap{width:34px;height:34px;background:linear-gradient(145deg,#fafafa,#e8e8e8);border-radius:50%;position:relative;box-shadow:inset 0 1px 2px #0000001a}.minilab3-encoder-indicator{position:absolute;top:5px;left:50%;transform:translate(-50%);width:3px;height:8px;background:#333;border-radius:1px}.minilab3-knobs-section{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(2,1fr);gap:12px;flex:1;padding:5px;max-width:260px}.minilab3-knob{display:flex;flex-direction:column;align-items:center;gap:3px}.minilab3-knob-cap{width:28px;height:28px;background:linear-gradient(145deg,#2a2a2a,#1a1a1a);border-radius:50%;position:relative;box-shadow:0 3px 6px #0006,inset 0 1px #ffffff1a;cursor:pointer;transition:transform 16ms linear}.minilab3-knob-indicator{position:absolute;top:4px;left:50%;transform:translate(-50%);width:3px;height:6px;background:#fff;border-radius:1px}.minilab3-knob-label{font-size:7px;color:#0009;font-weight:600}.minilab3-faders-section{display:flex;flex:1;padding:5px 15px 5px 50px;align-items:flex-start;justify-content:space-between}.minilab3-fader{display:flex;flex-direction:column;align-items:center;gap:3px}.minilab3-fader-track{width:8px;height:85px;background:#1a1a1a;border-radius:4px;position:relative;border:1px solid #333}.minilab3-fader-thumb{position:absolute;left:-7px;width:22px;height:20px;background:linear-gradient(90deg,#2a2a2a,#3a3a3a,#2a2a2a);border-radius:3px;box-shadow:0 2px 4px #0006;cursor:pointer;transition:bottom 16ms linear}.minilab3-fader-label{font-size:7px;color:#0009;font-weight:600}.minilab3-middle-row{display:flex;justify-content:flex-end;margin-bottom:6px;padding:0 5px 0 95px}.minilab3-pads-section{display:flex;justify-content:space-between;flex:1;padding:5px 0}.minilab3-pad{width:45px;height:45px;background:#1a1a1a;border-radius:5px;position:relative;cursor:pointer;transition:transform 16ms linear,box-shadow 16ms linear,border-color 16ms linear;box-shadow:0 2px 4px #0006,inset 0 1px #ffffff0d;border:2px solid rgba(59,130,246,.5)}.minilab3-pad:before{content:"";position:absolute;inset:2px;border-radius:3px;background:var(--pad-color, #3B82F6);opacity:var(--pad-brightness, .3);transition:opacity 16ms linear}.minilab3-pad.active{transform:scale(.95);box-shadow:0 1px 2px #0006,0 0 calc(5px + var(--pad-brightness, .3) * 20px) var(--pad-color, #3B82F6);border-color:var(--pad-color, #3B82F6)}.minilab3-pad.active:before{opacity:var(--pad-brightness, .5)}.minilab3-branding-row{display:flex;justify-content:space-between;align-items:center;padding:0 10px;margin-bottom:4px}.minilab3-logo{font-size:14px;font-weight:700;color:#000000b3;letter-spacing:.5px}.minilab3-logo-lab{font-weight:300}.minilab3-midi-indicators{display:flex;gap:3px;align-items:center}.minilab3-midi-label{font-size:7px;color:#00000080;margin-right:4px}.minilab3-midi-ch{width:5px;height:5px;background:#0003;border-radius:1px}.minilab3-midi-ch.active{background:#4fc3f7;box-shadow:0 0 4px #4fc3f780}.minilab3-arturia{font-size:12px;font-weight:600;color:#000000b3;letter-spacing:2px;text-transform:uppercase}.minilab3-keyboard-section{display:flex;align-items:flex-end;justify-content:center;flex:1;padding:0 5px 8px}.minilab3-keyboard{position:relative;height:165px;width:100%}.minilab3-key{position:absolute;top:0;cursor:pointer;transition:background 16ms linear,box-shadow 16ms linear,opacity 16ms linear}.minilab3-white-key{height:160px;background:linear-gradient(180deg,#fafafa,#f5f5f5 80%,#e8e8e8);border:1px solid #CCC;border-radius:0 0 5px 5px;z-index:1;box-shadow:0 3px 4px #0003,inset 0 -3px 6px #0000000d;box-sizing:border-box}.minilab3-white-key:hover{background:linear-gradient(180deg,#fff,#fafafa 80%,#f0f0f0)}.minilab3-white-key.active{background:linear-gradient(180deg,#e0e0e0,#d5d5d5 80%,#c8c8c8);box-shadow:0 1px 2px #0003,inset 0 2px 6px #0000001a}.minilab3-black-key{height:100px;background:linear-gradient(180deg,#2a2a2a,#1a1a1a 80%,#0a0a0a);z-index:2;border-radius:0 0 4px 4px;box-shadow:0 4px 6px #00000080,inset 0 -2px 4px #ffffff0d;box-sizing:border-box}.minilab3-black-key:hover{background:linear-gradient(180deg,#3a3a3a,#2a2a2a 80%,#1a1a1a)}.minilab3-black-key.active{background:linear-gradient(180deg,#1a1a1a,#0a0a0a 80%,#000);box-shadow:0 1px 3px #00000080,inset 0 2px 4px #0000004d}.minilab3-control-port,.minilab3-key-port{position:absolute;width:8px;height:8px;border-radius:50%;background:#1a1a1a;border:2px solid #666;cursor:crosshair;transition:all .15s ease;z-index:10}.minilab3-control-port:hover,.minilab3-key-port:hover{border-color:var(--accent-primary, #3B82F6);transform:scale(1.3);box-shadow:0 0 8px var(--accent-primary, #3B82F6)}.minilab3-control-port.connected,.minilab3-key-port.connected{background:var(--accent-primary, #3B82F6);border-color:var(--accent-primary, #3B82F6);box-shadow:0 0 6px var(--accent-primary, #3B82F6)}.minilab3-white-key .minilab3-key-port{bottom:8px;left:50%;transform:translate(-50%)}.minilab3-black-key .minilab3-key-port{bottom:6px;left:50%;transform:translate(-50%);width:6px;height:6px;border-width:2px;background:#fff!important;border-color:#fff!important;box-shadow:0 0 3px #fffc}.minilab3-black-key .minilab3-key-port:hover{background:#fff!important;border-color:var(--accent-primary, #3B82F6)!important;box-shadow:0 0 8px var(--accent-primary, #3B82F6)}.minilab3-black-key .minilab3-key-port.connected{background:var(--accent-primary, #3B82F6)!important;border-color:#fff!important;box-shadow:0 0 6px var(--accent-primary, #3B82F6)}.minilab3-pad .minilab3-control-port{bottom:4px;right:4px}.minilab3-knob{position:relative}.minilab3-knob .minilab3-control-port{position:absolute;bottom:-4px;left:50%;transform:translate(-50%)}.minilab3-fader{position:relative}.minilab3-fader .minilab3-control-port{position:absolute;bottom:-6px;left:50%;transform:translate(-50%)}.minilab3-touch-strip{position:relative}.minilab3-touch-strip .strip-port{bottom:-12px;left:50%;transform:translate(-50%)}.minilab3-pad:hover,.minilab3-knob:hover,.minilab3-fader:hover,.minilab3-touch-strip:hover,.minilab3-white-key:hover,.minilab3-black-key:hover{cursor:crosshair}.minilab3-pad:hover .minilab3-control-port,.minilab3-knob:hover .minilab3-control-port,.minilab3-fader:hover .minilab3-control-port,.minilab3-touch-strip:hover .minilab3-control-port,.minilab3-white-key:hover .minilab3-key-port,.minilab3-black-key:hover .minilab3-key-port{border-color:var(--accent-primary, #3B82F6);transform:translate(-50%) scale(1.3);box-shadow:0 0 8px var(--accent-primary, #3B82F6)}.midi-visual-node{background:var(--sketch-paper, #fafafa);border:3px solid var(--sketch-black, #1a1a1a);border-radius:8px;min-width:400px;position:absolute}.midi-visual-node.selected{border-color:var(--accent-primary, #3b82f6);box-shadow:0 0 12px #3b82f666}.midi-visual-body{padding:12px;display:flex;flex-direction:column;gap:16px}.midi-visual-section{display:flex;flex-direction:column;gap:8px}.midi-visual-section-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--sketch-gray, #666)}.midi-visual-keyboard{display:flex;height:60px;border:2px solid var(--sketch-black, #1a1a1a);border-radius:4px;overflow:hidden}.midi-key{flex:1;min-width:12px;cursor:pointer;transition:background .1s;border-right:1px solid var(--sketch-gray, #ccc)}.midi-key:last-child{border-right:none}.midi-key.white{background:#fff}.midi-key.white:hover{background:var(--sketch-paper, #f0f0f0)}.midi-key.white.connected{background:var(--accent-success-light, #dcfce7)}.midi-key.black{background:var(--sketch-black, #1a1a1a);flex:.6;height:65%;margin-left:-4px;margin-right:-4px;z-index:1;border-radius:0 0 3px 3px}.midi-key.black:hover{background:#333}.midi-key.black.connected{background:var(--accent-primary, #3b82f6)}.midi-visual-pad-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.midi-pad{aspect-ratio:1;background:var(--sketch-black, #1a1a1a);border-radius:6px;display:flex;align-items:center;justify-content:center;color:var(--sketch-paper, #fafafa);font-size:10px;font-weight:500;cursor:pointer;transition:all .15s;min-height:40px}.midi-pad:hover{background:#333;transform:scale(.95)}.midi-pad.connected{background:var(--accent-primary, #3b82f6)}.midi-visual-knob-row{display:flex;gap:12px;flex-wrap:wrap}.midi-knob{display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer}.midi-knob-dial{width:32px;height:32px;border-radius:50%;background:var(--sketch-black, #1a1a1a);border:3px solid var(--sketch-gray, #666);position:relative;transition:border-color .15s}.midi-knob-dial:after{content:"";position:absolute;width:3px;height:10px;background:#fff;top:3px;left:50%;transform:translate(-50%);border-radius:2px}.midi-knob:hover .midi-knob-dial{border-color:var(--sketch-black, #1a1a1a)}.midi-knob.connected .midi-knob-dial{border-color:var(--accent-primary, #3b82f6)}.midi-knob-label{font-size:10px;color:var(--sketch-gray, #666)}.midi-visual-fader-row{display:flex;gap:16px;align-items:flex-end}.midi-fader{display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer}.midi-fader-track{width:12px;height:60px;background:var(--sketch-gray, #ddd);border:2px solid var(--sketch-black, #1a1a1a);border-radius:6px;position:relative}.midi-fader-thumb{position:absolute;width:16px;height:12px;left:-4px;top:50%;transform:translateY(-50%);background:var(--sketch-black, #1a1a1a);border-radius:3px}.midi-fader.connected .midi-fader-track{border-color:var(--accent-primary, #3b82f6)}.midi-fader-label{font-size:10px;color:var(--sketch-gray, #666)}.midi-visual-strip-row{display:flex;gap:12px}.midi-strip{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer}.midi-strip-track{width:100%;height:24px;background:var(--sketch-gray, #ddd);border:2px solid var(--sketch-black, #1a1a1a);border-radius:4px;position:relative}.midi-strip-center{position:absolute;width:2px;height:100%;left:50%;transform:translate(-50%);background:var(--sketch-black, #1a1a1a)}.midi-strip.connected .midi-strip-track{border-color:var(--accent-primary, #3b82f6)}.midi-strip-label{font-size:10px;color:var(--sketch-gray, #666)}.midi-visual-ports{display:flex;flex-direction:column;gap:4px;margin-top:8px;border-top:1px solid var(--sketch-gray, #ccc);padding-top:8px}.midi-visual-node.minilab3-wrapper{min-width:auto;width:auto;background:transparent;border:none;display:flex;flex-direction:row;align-items:stretch;padding:0}.midi-visual-node.minilab3-wrapper.selected{box-shadow:none}.midi-visual-node.minilab3-wrapper .minilab3-ports{position:absolute;right:-120px;top:50%;transform:translateY(-50%);background:var(--sketch-paper, #fafafa);border:2px solid var(--sketch-black, #1a1a1a);border-radius:6px;padding:8px;margin:0;border-top:none}.midi-visual-node.minilab3-wrapper .minilab3-ports .port-row{display:flex;align-items:center;gap:8px;padding:2px 0}.midi-visual-node.minilab3-wrapper .minilab3-ports .port-label{font-size:10px;color:var(--sketch-gray, #666);white-space:nowrap}.minilab3-node{position:absolute;display:flex;flex-direction:column}.minilab3-node.selected .minilab3-visual .minilab3-body{box-shadow:0 0 20px #3b82f680}.minilab3-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm, 8px) var(--space-md, 16px);background:var(--bg-node-header);border:var(--border-sketch-width, 2px) solid var(--sketch-black);border-bottom:none;border-radius:var(--radius-lg, 8px) var(--radius-lg, 8px) 0 0;margin-bottom:-2px;z-index:5;cursor:grab}.minilab3-header:active{cursor:grabbing}.minilab3-header .schematic-title{color:var(--text-primary);font-family:var(--font-sketch);font-weight:600;font-size:var(--text-lg, 14px)}.minilab3-connect-overlay{position:absolute;inset:40px 0 0;background:var(--bg-overlay, rgba(250, 250, 250, .9));display:flex;align-items:center;justify-content:center;z-index:10;border-radius:0 0 12px 12px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.minilab3-connect-btn{background:var(--bg-tertiary);color:var(--text-primary);border:var(--border-sketch-width, 2px) solid var(--sketch-black);border-radius:var(--radius-md, 8px);padding:12px 24px;font-family:var(--font-sketch);font-size:var(--text-md, 14px);font-weight:600;cursor:pointer;transition:all .2s}.minilab3-connect-btn:hover{background:var(--bg-hover);transform:scale(1.05)}.minilab3-connect-btn:active{transform:scale(.98)}.midi-status-dot{width:8px;height:8px;border-radius:50%;transition:all .2s}.midi-status-dot.connected{background:var(--accent-success, #22c55e);box-shadow:0 0 6px var(--accent-success, #22c55e)}.midi-status-dot.disconnected{background:var(--sketch-gray, #666)}.midi-unsupported-message{display:flex;flex-direction:column;align-items:center;gap:4px;padding:20px;background:var(--sketch-paper, #fafafa);border:2px solid var(--sketch-gray, #ccc);border-radius:8px;color:var(--sketch-gray, #666);font-size:12px}.midi-browser-hint{font-size:10px;color:var(--sketch-gray, #999)}.minilab3-node .schematic-connect-btn{background:var(--bg-secondary, #f0f0f0);color:var(--text-primary);border:2px solid var(--sketch-black);border-radius:var(--radius-md, 6px);padding:var(--space-sm, 8px) var(--space-md, 16px);font-family:var(--font-sketch);font-size:var(--text-sm, 12px);font-weight:600;cursor:pointer;transition:all .15s;margin-bottom:var(--space-sm, 8px)}.minilab3-node .schematic-connect-btn:hover{background:var(--bg-hover, #e0e0e0);transform:scale(1.02)}.minilab3-node .schematic-connect-btn:active{transform:scale(.98)}.sampler-visual-node{position:relative;display:flex;flex-direction:column;min-width:160px;max-width:240px;background:var(--bg-node);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-lg);overflow:visible;color:var(--text-primary);font-family:var(--font-sketch)}.sampler-visual-node.selected{border-color:var(--accent-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent-primary) 30%,transparent)}.sampler-visual-node.dragging{opacity:.8}.sampler-visual-header{display:flex;align-items:center;justify-content:center;padding:var(--space-sm) var(--space-md);background:var(--bg-tertiary);border-bottom:1px solid var(--border-subtle);cursor:grab}.sampler-visual-header:active{cursor:grabbing}.sampler-visual-title{font-size:var(--text-sm);font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-primary)}.sampler-visual-rows{display:flex;flex-direction:column;padding:var(--space-sm);min-height:60px}.sampler-row-empty{display:flex;align-items:center;justify-content:center;padding:var(--space-lg) var(--space-md)}.sampler-empty-text{font-size:var(--text-sm);color:var(--text-muted);font-style:italic;text-align:center}.sampler-row-visual{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-sm)}.sampler-row-visual.with-divider{border-top:1px solid var(--border-subtle);padding-top:var(--space-md)}.sampler-row-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs);flex-wrap:wrap}.sampler-row-label{font-size:var(--text-xs);font-weight:600;color:var(--text-primary);white-space:nowrap}.sampler-row-controls{display:flex;align-items:center;gap:var(--space-xs)}.sampler-row-value{font-size:10px;font-family:var(--font-mono);color:var(--text-primary);padding:1px 4px;background:var(--bg-tertiary);border:1px solid var(--border-subtle);border-radius:var(--radius-xs);cursor:ns-resize;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast),border-color var(--transition-fast);white-space:nowrap}.sampler-row-value:hover{background:var(--bg-node);border-color:var(--accent-primary)}.sampler-placeholder-row{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs);border-top:1px dashed var(--border-subtle)}.sampler-placeholder-row.first-row{border-top:none}.sampler-placeholder-port{width:12px;height:12px;border-radius:50%;background:var(--bg-tertiary);border:1px dashed var(--control-input);cursor:crosshair;transition:background var(--transition-fast),border var(--transition-fast),transform var(--transition-fast)}.sampler-placeholder-port:hover{background:var(--control-input);border-style:solid;transform:scale(1.2)}.sampler-placeholder-port:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px;background:var(--control-input);border-style:solid}.sampler-placeholder-text{font-size:10px;color:var(--text-muted);font-style:italic}.sampler-row-keys{display:flex;flex-wrap:wrap;gap:6px;padding:var(--space-xs) 0}.sampler-key-port{width:12px;height:12px;border-radius:50%;background:var(--control-input);border:1px solid var(--sketch-black);cursor:crosshair;transition:transform var(--transition-fast),filter var(--transition-fast)}.sampler-key-port:hover{transform:scale(1.3);filter:brightness(1.2)}.sampler-key-port:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px;transform:scale(1.3)}.sampler-key-port.connected{background:var(--control-connected);box-shadow:0 0 4px var(--control-connected)}.node{position:absolute;min-width:var(--node-min-width);background:var(--bg-node);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-lg);box-shadow:var(--shadow-node);-webkit-user-select:none;user-select:none;transition:box-shadow var(--transition-fast),border-color var(--transition-fast)}.node.selected{border-color:var(--accent-primary);box-shadow:var(--shadow-node),0 0 0 3px color-mix(in srgb,var(--accent-primary) 25%,transparent)}.node.dragging{opacity:.95;cursor:grabbing;box-shadow:var(--shadow-menu)}.node-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) var(--space-md);background:var(--bg-node-header);border-bottom:1px solid var(--border-subtle);border-radius:var(--radius-lg) var(--radius-lg) 0 0;cursor:grab}.node-header:active{cursor:grabbing}.node-title{font-family:var(--font-sketch);font-weight:600;font-size:var(--text-lg);color:var(--text-primary)}.node-type{font-family:var(--font-sketch);font-size:var(--text-sm);color:var(--text-muted)}.node-content{padding:var(--space-md)}.node-ports{display:flex;justify-content:space-between;padding:var(--space-sm) 0}.node-ports-left,.node-ports-right{display:flex;flex-direction:column;gap:var(--space-sm)}.node-ports-left{align-items:flex-start;padding-left:var(--space-sm)}.node-ports-right{align-items:flex-end;padding-right:var(--space-sm)}.port{display:flex;align-items:center;gap:var(--space-xs);cursor:crosshair}.port-input{flex-direction:row}.port-output{flex-direction:row-reverse}.port-dot{width:var(--port-size);height:var(--port-size);border-radius:50%;border:var(--border-sketch-width) solid var(--sketch-black);background:var(--bg-canvas);transition:transform var(--transition-fast),box-shadow var(--transition-fast),background var(--transition-fast);will-change:transform,box-shadow}.port-dot:hover{transform:scale(1.25);background:var(--bg-tertiary)}.port-dot.audio-input{background:var(--audio-input)}.port-dot.audio-output{background:var(--audio-output)}.port-dot.control{background:var(--control-output)}.port-dot.control-input{background:var(--control-input)}.port-dot.control-output{background:var(--control-output)}.port-dot.control.connected,.port-dot.control-input.connected,.port-dot.control-output.connected{background:var(--control-connected);box-shadow:0 0 8px var(--control-connected)}.port-dot.connected{box-shadow:0 0 8px var(--audio-connected);background:var(--audio-connected)}.port-label{font-family:var(--font-sketch);font-size:var(--text-sm);color:var(--text-secondary)}.node-controls{display:flex;gap:var(--space-xs);padding:var(--space-sm);border-top:1px solid var(--border-subtle)}.node-btn{display:flex;align-items:center;justify-content:center;padding:var(--space-xs) var(--space-sm);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-md);font-family:var(--font-sketch);font-size:var(--text-sm);font-weight:500;background:var(--bg-node);color:var(--text-primary);cursor:pointer;transition:all var(--transition-fast)}.node-btn:hover{background:var(--bg-tertiary);transform:translateY(-1px)}.node-btn:active{transform:translateY(1px)}.node-btn-primary{background:var(--accent-primary);color:#fff}.node-btn-primary:hover{background:var(--accent-secondary)}.node-btn-secondary{background:var(--bg-tertiary);color:var(--text-secondary)}.node-btn-secondary:hover{background:var(--bg-canvas-alt);color:var(--text-primary)}.node-btn-success{background:var(--accent-success);color:#fff}.node-btn-danger{background:var(--accent-danger);color:#fff}.node-btn.active{background:var(--accent-success);color:#fff}.node-input{width:100%;padding:var(--space-xs) var(--space-sm);background:var(--bg-canvas);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-sm);color:var(--text-primary);font-size:var(--text-sm);font-family:var(--font-mono)}.node-input:focus{outline:none;border-color:var(--accent-primary)}.node-label{font-family:var(--font-sketch);font-size:var(--text-sm);color:var(--text-muted);margin-bottom:var(--space-xs)}.node-row{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-sm)}.node-select{flex:1;padding:var(--space-xs) var(--space-sm);background:var(--bg-canvas);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-sketch);font-size:var(--text-sm);cursor:pointer}.node-select:focus{outline:none;border-color:var(--accent-primary)}.node-progress{width:100%;height:6px;background:var(--bg-tertiary);border:1px solid var(--sketch-light);border-radius:var(--radius-sm);overflow:hidden;margin-top:var(--space-sm)}.node-progress-bar{height:100%;background:var(--accent-primary);transition:width .1s linear}.loop-list{max-height:150px;overflow-y:auto;margin-top:var(--space-sm)}.loop-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-xs) var(--space-sm);background:var(--bg-canvas);border:1px solid var(--sketch-light);border-radius:var(--radius-sm);margin-bottom:var(--space-xs);font-family:var(--font-sketch);font-size:var(--text-sm)}.loop-item.muted{opacity:.5}.loop-actions{display:flex;gap:var(--space-xs)}.loop-list::-webkit-scrollbar{width:6px}.loop-list::-webkit-scrollbar-track{background:var(--bg-tertiary);border-radius:3px}.loop-list::-webkit-scrollbar-thumb{background:var(--sketch-light);border-radius:3px}.loop-list::-webkit-scrollbar-thumb:hover{background:var(--sketch-gray)}.audio-clip{position:relative;display:flex;flex-direction:column;background:var(--bg-node);border:1.5px solid var(--border-sketch);border-radius:var(--radius-sm);cursor:grab;-webkit-user-select:none;user-select:none;transition:transform var(--transition-fast),box-shadow var(--transition-fast),border-color var(--transition-fast);overflow:visible}.audio-clip:hover{border-color:var(--audio-connected);box-shadow:0 2px 8px #00000026}.audio-clip:active{cursor:grabbing}.audio-clip.selected{border-color:var(--audio-connected);box-shadow:0 0 0 2px var(--audio-connected),0 2px 12px color-mix(in srgb,var(--audio-connected) 30%,transparent)}.audio-clip.dragging{opacity:.85;transform:scale(1.02);box-shadow:0 8px 24px #00000040,0 0 0 2px var(--audio-connected);cursor:grabbing;z-index:1000}.audio-clip.drop-target{border-color:var(--accent-success);box-shadow:0 0 0 2px var(--accent-success),0 0 16px color-mix(in srgb,var(--accent-success) 40%,transparent)}.audio-clip.on-canvas{pointer-events:auto}.audio-clip-waveform{position:relative;flex:1;min-height:0;background:var(--bg-canvas);border-radius:var(--radius-sm) var(--radius-sm) 0 0;overflow:hidden}.audio-clip-waveform svg{width:100%;height:100%;display:block}.audio-clip-waveform-path{stroke:var(--audio-connected);filter:drop-shadow(0 0 2px var(--audio-connected))}.audio-clip-center-line{stroke:var(--border-subtle);stroke-width:.5;opacity:.3}.audio-clip-duration{position:absolute;top:2px;right:4px;font-family:var(--font-mono);font-size:10px;color:var(--text-muted);background:color-mix(in srgb,var(--bg-node) 80%,transparent);padding:1px 4px;border-radius:3px;line-height:1}.audio-clip-crop-indicator{position:absolute;bottom:2px;left:4px;color:var(--accent-warning);opacity:.7;width:12px;height:12px}.audio-clip-crop-indicator svg{width:100%;height:100%}.audio-clip-name{padding:2px 6px 4px;font-family:var(--font-sketch);font-size:var(--text-xs);color:var(--text-secondary);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-top:1px solid var(--border-subtle);background:var(--bg-node);border-radius:0 0 var(--radius-sm) var(--radius-sm)}.audio-clip-drag-handle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:16px;height:16px;color:var(--text-muted);opacity:0;pointer-events:none;transition:opacity var(--transition-fast)}.audio-clip:hover .audio-clip-drag-handle{opacity:.4}.audio-clip.dragging .audio-clip-drag-handle{opacity:0}.audio-clip-drag-handle svg{width:100%;height:100%}@keyframes clip-appear{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.audio-clip.on-canvas{animation:clip-appear .2s ease-out}.audio-clip:hover .audio-clip-name{color:var(--text-primary)}.audio-clip.selected .audio-clip-name{color:var(--audio-connected)}.clip-drag-layer{position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:10000}.clip-drop-zone{position:fixed;border:2px dashed var(--border-subtle);border-radius:var(--radius-md);background:transparent;transition:border-color var(--transition-fast),background-color var(--transition-fast);display:flex;align-items:center;justify-content:center}.clip-drop-zone.valid{border-color:var(--accent-success)}.clip-drop-zone.invalid{border-color:var(--accent-danger);opacity:.3}.clip-drop-zone.hovered.valid{background:color-mix(in srgb,var(--accent-success) 15%,transparent);border-style:solid;box-shadow:0 0 20px color-mix(in srgb,var(--accent-success) 30%,transparent)}.clip-drop-zone-label{font-family:var(--font-sketch);font-size:var(--text-sm);color:var(--accent-success);text-shadow:0 1px 2px rgba(0,0,0,.5);padding:4px 12px;background:color-mix(in srgb,var(--bg-node) 90%,transparent);border-radius:var(--radius-sm)}.clip-drag-preview{position:fixed;pointer-events:none;z-index:10001;filter:drop-shadow(0 4px 12px rgba(0,0,0,.3))}.clip-drag-hint{position:fixed;pointer-events:none;z-index:10002;font-family:var(--font-sketch);font-size:var(--text-xs);color:var(--text-on-accent);background:var(--accent-success);padding:4px 8px;border-radius:var(--radius-sm);white-space:nowrap;box-shadow:0 2px 8px #0003}.waveform-editor-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:10000}.waveform-editor-modal{background:var(--bg-node);border:2px solid var(--border-sketch);border-radius:var(--radius-lg);box-shadow:0 8px 32px #0000004d;min-width:640px;max-width:90vw;overflow:hidden}.waveform-editor-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-md);border-bottom:1px solid var(--border-subtle);background:var(--bg-node-header)}.waveform-editor-title{font-family:var(--font-sketch);font-size:var(--text-lg);font-weight:600;color:var(--text-primary)}.waveform-editor-close{background:transparent;border:none;color:var(--text-muted);cursor:pointer;padding:4px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;transition:background var(--transition-fast),color var(--transition-fast)}.waveform-editor-close:hover{background:var(--bg-tertiary);color:var(--text-primary)}.waveform-editor-content{padding:var(--space-md);background:var(--bg-canvas)}.waveform-editor-loading{height:200px;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-family:var(--font-sketch);font-size:var(--text-md)}.waveform-editor-canvas-container{position:relative}.waveform-editor-canvas{display:block;width:100%;height:200px;border-radius:var(--radius-sm);border:1px solid var(--border-subtle)}.waveform-editor-minimap{position:absolute;bottom:8px;left:8px;right:8px;width:calc(100% - 16px);height:24px;opacity:0;transition:opacity var(--transition-fast);border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:transparent}.waveform-editor-canvas-container:hover .waveform-editor-minimap{opacity:1}.waveform-editor-info{display:flex;flex-direction:column;padding:var(--space-sm) var(--space-md);background:var(--bg-tertiary);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-secondary);gap:var(--space-xs)}.waveform-editor-info-row{display:flex;align-items:center;gap:var(--space-sm)}.waveform-editor-label{color:var(--text-muted)}.waveform-editor-value{color:var(--text-primary);margin-right:var(--space-md)}.waveform-editor-value.highlight{color:var(--audio-connected);font-weight:600}.waveform-editor-zoom{width:80px;height:4px;margin:0 var(--space-sm);cursor:pointer;accent-color:var(--accent-primary)}.waveform-editor-btn-small{padding:2px 8px;font-size:var(--text-xs);font-family:var(--font-sketch);background:var(--bg-canvas);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.waveform-editor-btn-small:hover{background:var(--bg-tertiary);color:var(--text-primary)}.waveform-editor-actions{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md);border-top:1px solid var(--border-subtle)}.waveform-editor-hint{font-size:var(--text-xs);font-family:var(--font-mono);color:var(--text-muted);margin-left:var(--space-sm)}.waveform-editor-spacer{flex:1}.waveform-editor-btn{padding:var(--space-sm) var(--space-md);border:1px solid var(--border-sketch);border-radius:var(--radius-sm);font-family:var(--font-sketch);font-size:var(--text-sm);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.waveform-editor-btn.preview{background:var(--bg-canvas);color:var(--text-primary)}.waveform-editor-btn.preview:hover{background:var(--bg-tertiary)}.waveform-editor-btn.preview.playing{background:var(--accent-danger);color:#fff;border-color:var(--accent-danger)}.waveform-editor-btn.cancel{background:transparent;color:var(--text-secondary)}.waveform-editor-btn.cancel:hover{background:var(--bg-tertiary);color:var(--text-primary)}.waveform-editor-btn.apply{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.waveform-editor-btn.apply:hover{filter:brightness(1.1)}.waveform-editor-zoom-track{flex:1;display:flex;align-items:center;position:relative;height:36px;margin:0 var(--space-md);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:transparent}.waveform-editor-zoom-label{position:absolute;top:50%;transform:translateY(-55%);color:var(--text-muted);font-size:24px;font-weight:300;line-height:1;pointer-events:none;-webkit-user-select:none;user-select:none}.waveform-editor-zoom-label:first-of-type{left:14px}.waveform-editor-zoom-label:last-of-type{right:14px}.waveform-editor-zoom{flex:1;height:100%;cursor:pointer;-webkit-appearance:none;appearance:none;background:transparent;margin:0}.waveform-editor-zoom::-webkit-slider-runnable-track{height:100%;background:transparent}.waveform-editor-zoom::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:2px;height:22px;background:var(--text-muted);border-radius:0;cursor:grab;transition:background var(--transition-fast)}.waveform-editor-zoom::-webkit-slider-thumb:hover{background:var(--text-primary)}.waveform-editor-zoom::-webkit-slider-thumb:active{cursor:grabbing;background:var(--accent-primary)}.waveform-editor-zoom::-moz-range-track{height:100%;background:transparent}.waveform-editor-zoom::-moz-range-thumb{width:2px;height:28px;background:var(--text-muted);border-radius:0;border:none;cursor:grab}.waveform-editor-zoom::-moz-range-thumb:hover{background:var(--text-primary)}.node-canvas{width:100%;height:100%;position:relative;overflow:hidden;background:var(--bg-primary)}.node-canvas-grid{position:absolute;inset:0;background-image:radial-gradient(circle,var(--border-subtle) 1px,transparent 1px);background-size:20px 20px;pointer-events:none}.node-canvas-content{position:absolute;transform-origin:0 0;width:10000px;height:10000px}.connections-layer{position:absolute;inset:0;pointer-events:none;overflow:visible;z-index:1}.node-canvas.is-connecting .connections-layer{z-index:100}.connections-layer svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.connection-line{fill:none;stroke-linecap:round;pointer-events:stroke;cursor:pointer;stroke:#888;--signal-level: 0;stroke-width:calc(3px + var(--signal-level) * 3px);opacity:calc(.7 + var(--signal-level) * .3);filter:drop-shadow(0 0 calc(var(--signal-level) * 6px) currentColor);transition:stroke-width .03s ease-out,opacity .03s ease-out,filter .03s ease-out}.connection-line:hover{stroke-width:calc(5px + var(--signal-level) * 2px)}.connection-line.audio{stroke:var(--audio-connection)}.connection-line.control{stroke:var(--control-connection)}.connection-line.universal{stroke:var(--universal-connection, #888)}.connection-line.selected{stroke-width:calc(5px + var(--signal-level) * 2px);filter:drop-shadow(0 0 8px currentColor) drop-shadow(0 0 16px currentColor);animation:selected-glow 1s ease-in-out infinite alternate}@keyframes selected-glow{0%{filter:drop-shadow(0 0 6px currentColor) drop-shadow(0 0 12px currentColor)}to{filter:drop-shadow(0 0 10px currentColor) drop-shadow(0 0 20px currentColor)}}.connection-line.bundled{stroke-width:calc(5px + var(--signal-level) * 5px);filter:drop-shadow(0 0 calc(3px + var(--signal-level) * 10px) currentColor)}.connection-line.bundled:hover{stroke-width:calc(7px + var(--signal-level) * 4px);filter:drop-shadow(0 0 calc(5px + var(--signal-level) * 8px) currentColor)}.connection-line.bundled.selected{stroke-width:calc(7px + var(--signal-level) * 4px);filter:drop-shadow(0 0 10px currentColor) drop-shadow(0 0 18px currentColor)}.connection-temp{pointer-events:none;stroke-dasharray:5 5;animation:dash .5s linear infinite;will-change:stroke-dashoffset}@keyframes dash{to{stroke-dashoffset:-10}}.nodes-layer{position:absolute;inset:0;z-index:10}.clips-layer{position:absolute;inset:0;z-index:15;pointer-events:none}.clips-layer>*{pointer-events:auto}.selection-box{position:absolute;border:2px dashed var(--accent-primary);background:color-mix(in srgb,var(--accent-primary) 10%,transparent);pointer-events:none;z-index:50}.node-canvas.ghost-mode .nodes-layer{z-index:1}.node-canvas.ghost-mode .connections-layer{z-index:100}.node-canvas.ghost-mode .node,.node-canvas.ghost-mode .schematic-node{opacity:.1!important;pointer-events:none}.node-canvas.ghost-mode .port-dot{opacity:1;pointer-events:auto;animation:portGlow 1.5s ease-in-out infinite;will-change:box-shadow}.node-canvas.ghost-mode .connection-line{pointer-events:stroke;stroke-width:4;opacity:1!important;filter:drop-shadow(0 0 4px currentColor)}.node-canvas.ghost-mode .connection-line.audio{filter:drop-shadow(0 0 6px var(--audio-connection))}.node-canvas.ghost-mode .connection-line.control{filter:drop-shadow(0 0 6px var(--control-connection))}@keyframes portGlow{0%,to{box-shadow:0 0 8px 2px var(--audio-connection)}50%{box-shadow:0 0 16px 4px var(--audio-connection)}}.back-to-action{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);padding:var(--space-lg);background:var(--bg-node);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast);z-index:100;box-shadow:var(--shadow-menu);animation:back-to-action-fade-in .3s ease-out}.back-to-action:hover{transform:translate(-50%,-50%) scale(1.05);box-shadow:var(--shadow-menu),0 0 20px color-mix(in srgb,var(--accent-primary) 20%,transparent)}.back-to-action-arrow{font-size:48px;transform:rotate(var(--arrow-rotation));transition:transform var(--transition-fast);line-height:1}.back-to-action-label{font-family:var(--font-sketch);font-size:var(--text-md);color:var(--text-secondary)}@keyframes back-to-action-fade-in{0%{opacity:0;transform:translate(-50%,-50%) scale(.9)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.dropdown-menu{position:relative;display:inline-flex;flex-shrink:0}.dropdown-trigger{display:flex;align-items:center;flex-shrink:0;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);border:none;border-radius:var(--radius-sm);font-family:var(--font-sketch);font-size:var(--text-md);font-weight:500;color:var(--text-primary);background:transparent;cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}.dropdown-trigger:hover,.dropdown-trigger:active{background:var(--bg-tertiary)}.dropdown-trigger:disabled{opacity:.5;cursor:not-allowed}.dropdown-trigger-open{background:var(--bg-tertiary)}.dropdown-chevron{font-size:var(--text-xs);color:var(--text-muted);transition:transform var(--transition-fast)}.dropdown-trigger-open .dropdown-chevron{transform:rotate(180deg)}.dropdown-content{position:absolute;top:100%;left:0;margin-top:var(--space-xs);min-width:180px;background:var(--bg-node);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-md);box-shadow:var(--shadow-menu);z-index:1000;animation:dropdownFadeIn .1s ease;overflow:hidden;will-change:opacity,transform}@keyframes dropdownFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.dropdown-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) var(--space-md);font-family:var(--font-sketch);font-size:var(--text-sm);color:var(--text-primary);cursor:pointer;transition:all var(--transition-fast);outline:none}.dropdown-item:hover,.dropdown-item-focused{background:var(--accent-primary);color:#fff}.dropdown-item:hover .dropdown-item-shortcut,.dropdown-item-focused .dropdown-item-shortcut{color:#fffc}.dropdown-item-disabled{opacity:.5;cursor:not-allowed}.dropdown-item-disabled:hover,.dropdown-item-disabled.dropdown-item-focused{background:transparent;color:var(--text-primary)}.dropdown-item-label{flex:1}.dropdown-item-shortcut{margin-left:var(--space-lg);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);opacity:0;transition:opacity var(--transition-fast)}.dropdown-item:hover .dropdown-item-shortcut,.dropdown-item-focused .dropdown-item-shortcut{opacity:1}.dropdown-separator{height:1px;background:var(--border-subtle);margin:var(--space-xs) 0}.dropdown-item-has-submenu{position:relative}.dropdown-submenu-chevron{margin-left:var(--space-sm);font-size:var(--text-xs);color:var(--text-muted)}.dropdown-item:hover .dropdown-submenu-chevron,.dropdown-item-focused .dropdown-submenu-chevron{color:#fffc}.dropdown-submenu{position:absolute;left:100%;top:0;margin-left:2px;min-width:180px;background:var(--bg-node);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-md);box-shadow:var(--shadow-menu);z-index:1001;animation:dropdownFadeIn .1s ease;overflow:hidden}.dropdown-submenu .dropdown-item{padding:var(--space-sm) var(--space-md)}.toolbar-wrapper{position:fixed;top:var(--space-md);left:50%;transform:translate(-50%);display:flex;align-items:center;gap:var(--space-sm);z-index:100;max-width:calc(100vw - var(--space-lg) * 2)}.toolbar{display:flex;align-items:center;flex-wrap:nowrap;flex-shrink:0;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:var(--bg-node);border:none;border-radius:var(--radius-lg);box-shadow:var(--shadow-menu);white-space:nowrap}.toolbar-menus{display:flex;align-items:center;flex-shrink:0;gap:0}.toolbar-btn{display:flex;align-items:center;justify-content:center;flex-shrink:0;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);border:none;border-radius:var(--radius-sm);font-family:var(--font-sketch);font-size:var(--text-md);font-weight:500;color:var(--text-primary);background:transparent;cursor:pointer;transition:all var(--transition-fast)}.toolbar-btn:hover,.toolbar-btn:active{background:var(--bg-tertiary)}.toolbar-btn:disabled{opacity:.5;cursor:not-allowed}.toolbar-btn-icon{min-width:32px;padding:var(--space-xs);font-size:var(--text-lg)}.toolbar-btn-active{background:var(--accent-primary);color:#fff}.toolbar-btn-active:hover{background:var(--accent-secondary)}.toolbar-separator{flex-shrink:0;width:1px;height:24px;background:var(--sketch-light);margin:0 var(--space-xs)}.file-input-hidden{display:none}.toolbar.toolbar-focused{border-width:3px;border-color:var(--accent-primary);box-shadow:0 0 0 2px var(--bg-canvas),0 0 12px color-mix(in srgb,var(--accent-primary) 40%,transparent),var(--shadow-menu)}.help-panel{position:fixed;bottom:var(--space-md);right:var(--space-md);padding:var(--space-md);background:var(--bg-node);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-lg);box-shadow:var(--shadow-menu);max-width:300px;font-family:var(--font-sketch);font-size:var(--text-sm);z-index:50;pointer-events:auto}.help-panel h3{margin-bottom:var(--space-sm);font-size:var(--text-lg);color:var(--text-primary)}.help-panel ul{list-style:none;color:var(--text-secondary)}.help-panel li{margin-bottom:var(--space-xs)}.help-panel kbd{display:inline-block;padding:2px var(--space-sm);background:var(--bg-tertiary);border:1px solid var(--sketch-light);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--text-xs)}.help-mode-indicator{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm);margin-bottom:var(--space-sm);background:var(--bg-tertiary);border-radius:var(--radius-md);border:1px solid var(--border-subtle)}.help-mode-label{font-weight:600;color:var(--text-secondary)}.help-mode-value{display:flex;align-items:center;gap:var(--space-xs)}.help-mode-value kbd{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.help-mode-value.mode-config kbd{background:var(--accent-primary)}.help-mode-value.mode-keyboard kbd{background:var(--accent-success);border-color:var(--accent-success)}.help-panel.help-panel-warning{border-color:var(--accent-warning);box-shadow:0 0 0 2px var(--bg-canvas),0 0 8px color-mix(in srgb,var(--accent-warning) 30%,transparent),var(--shadow-menu)}.help-mode-warning{display:flex;align-items:flex-start;gap:var(--space-sm);padding:var(--space-sm);margin-bottom:var(--space-sm);background:color-mix(in srgb,var(--accent-warning) 15%,transparent);border:1px solid var(--accent-warning);border-radius:var(--radius-md);font-size:var(--text-xs);color:var(--text-primary)}.help-mode-warning .warning-icon{flex-shrink:0}.help-btn-minimized.warning{border-color:var(--accent-warning);background:color-mix(in srgb,var(--accent-warning) 15%,transparent)}.toolbar-status{display:flex;align-items:center;flex-shrink:1;min-width:0;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);font-family:var(--font-sketch);font-size:var(--text-md);color:var(--text-secondary);background:var(--bg-tertiary);border-radius:var(--radius-sm);margin-left:var(--space-xs)}.toolbar-status-icon{flex-shrink:0;font-size:var(--text-md)}.toolbar-status-text{max-width:150px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toolbar-unsaved{color:var(--accent-warning);font-weight:700}.toolbar-status-offline{background:color-mix(in srgb,var(--accent-warning) 20%,var(--bg-tertiary));color:var(--accent-warning)}.toolbar-status-offline .toolbar-status-icon{animation:pulse-offline 2s ease-in-out infinite}@keyframes pulse-offline{0%,to{opacity:1}50%{opacity:.5}}@media(max-width:600px){.toolbar-status-text{display:none}.toolbar-status{padding:var(--space-xs)}}@media(max-width:800px){.toolbar-wrapper{flex-wrap:wrap;justify-content:center}}@media(max-width:480px){.toolbar-separator{display:none}.toolbar{gap:2px;padding:var(--space-xs)}}.breadcrumbs{display:flex;align-items:center;flex-shrink:0;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:transparent;font-family:var(--font-sketch);font-size:var(--text-md);white-space:nowrap}.breadcrumb-segment{display:flex;align-items:center;gap:var(--space-xs)}.breadcrumb-separator{color:var(--text-tertiary);font-weight:400;-webkit-user-select:none;user-select:none}.breadcrumb-item{color:var(--text-secondary);transition:color var(--transition-fast)}.breadcrumb-clickable{background:none;border:none;padding:0;font-family:inherit;font-size:inherit;cursor:pointer}.breadcrumb-clickable:hover{color:var(--accent-primary);text-decoration:underline}.breadcrumb-current{color:var(--text-primary);font-weight:500}@media(max-width:480px){.breadcrumb-item{max-width:80px;overflow:hidden;text-overflow:ellipsis}}.keybindings-panel{display:flex;flex-direction:column;gap:var(--space-lg)}.keybindings-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:var(--space-md);border-bottom:1px solid var(--border-subtle)}.keybindings-description{margin:0;color:var(--text-muted);font-size:var(--text-sm)}.keybindings-reset-all{padding:var(--space-xs) var(--space-md);background:transparent;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);font-family:var(--font-sketch);font-size:var(--text-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast)}.keybindings-reset-all:hover:not(:disabled){border-color:var(--accent-danger);color:var(--accent-danger)}.keybindings-reset-all:disabled{opacity:.5;cursor:not-allowed}.keybindings-category{display:flex;flex-direction:column;gap:var(--space-sm)}.keybindings-category-title{margin:0;font-family:var(--font-sketch);font-size:var(--text-md);font-weight:600;color:var(--text-primary);padding-bottom:var(--space-xs);border-bottom:1px solid var(--border-subtle)}.keybindings-list{display:flex;flex-direction:column;gap:var(--space-xs)}.keybindings-row{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm) var(--space-md);background:var(--bg-tertiary);border-radius:var(--radius-sm);transition:background var(--transition-fast)}.keybindings-row:hover{background:var(--bg-canvas-alt)}.keybindings-row-editing{background:color-mix(in srgb,var(--accent-primary) 15%,transparent);outline:2px solid var(--accent-primary)}.keybindings-label{font-family:var(--font-sketch);font-size:var(--text-sm);color:var(--text-primary)}.keybindings-controls{display:flex;align-items:center;gap:var(--space-sm)}.keybindings-shortcut{min-width:100px;padding:var(--space-xs) var(--space-sm);background:var(--bg-node);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-secondary);text-align:center;cursor:pointer;transition:all var(--transition-fast)}.keybindings-shortcut:hover{border-color:var(--accent-primary);color:var(--text-primary)}.keybindings-shortcut-custom{background:color-mix(in srgb,var(--accent-primary) 10%,transparent);border-color:var(--accent-primary);color:var(--accent-primary)}.keybindings-shortcut-editing{background:var(--accent-primary);border-color:var(--accent-primary);color:#fff;cursor:default;animation:pulse 1s ease-in-out infinite;will-change:opacity}.keybindings-reset{width:28px;height:28px;padding:0;background:transparent;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);font-size:var(--text-md);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center}.keybindings-reset:hover{border-color:var(--accent-warning);color:var(--accent-warning);background:color-mix(in srgb,var(--accent-warning) 10%,transparent)}.keybindings-conflict-overlay{position:fixed;inset:0;background:color-mix(in srgb,var(--sketch-black) 50%,transparent);display:flex;align-items:center;justify-content:center;z-index:1000}.keybindings-conflict-dialog{background:var(--bg-node);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-lg);padding:var(--space-lg);max-width:400px;width:90%;box-shadow:var(--shadow-menu)}.keybindings-conflict-title{margin:0 0 var(--space-md) 0;font-family:var(--font-sketch);font-size:var(--text-lg);color:var(--accent-warning)}.keybindings-conflict-message{margin:0 0 var(--space-sm) 0;font-family:var(--font-sketch);font-size:var(--text-sm);color:var(--text-primary)}.keybindings-conflict-message strong{font-family:var(--font-mono);background:var(--bg-tertiary);padding:2px var(--space-xs);border-radius:var(--radius-sm)}.keybindings-conflict-list{margin:0 0 var(--space-md) 0;padding-left:var(--space-lg);font-family:var(--font-sketch);font-size:var(--text-sm);color:var(--text-secondary)}.keybindings-conflict-list li{margin-bottom:var(--space-xs)}.keybindings-conflict-question{margin:0 0 var(--space-md) 0;font-family:var(--font-sketch);font-size:var(--text-sm);color:var(--text-muted)}.keybindings-conflict-buttons{display:flex;gap:var(--space-sm);justify-content:flex-end}.keybindings-conflict-cancel,.keybindings-conflict-confirm{padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);font-family:var(--font-sketch);font-size:var(--text-sm);cursor:pointer;transition:all var(--transition-fast)}.keybindings-conflict-cancel{background:transparent;border:1px solid var(--border-subtle);color:var(--text-secondary)}.keybindings-conflict-cancel:hover{border-color:var(--text-secondary);color:var(--text-primary)}.keybindings-conflict-confirm{background:var(--accent-primary);border:1px solid var(--accent-primary);color:#fff}.keybindings-conflict-confirm:hover{background:var(--accent-secondary);border-color:var(--accent-secondary)}.keybindings-error{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-xl);text-align:center;background:var(--bg-tertiary);border-radius:var(--radius-md);border:1px solid var(--accent-danger)}.keybindings-error h4{margin:0 0 var(--space-sm) 0;font-family:var(--font-sketch);font-size:var(--text-lg);color:var(--accent-danger)}.keybindings-error p{margin:0 0 var(--space-md) 0;font-family:var(--font-sketch);font-size:var(--text-sm);color:var(--text-secondary);max-width:300px}.keybindings-error button{padding:var(--space-sm) var(--space-md);background:var(--accent-primary);border:none;border-radius:var(--radius-sm);font-family:var(--font-sketch);font-size:var(--text-sm);color:#fff;cursor:pointer;transition:background var(--transition-fast)}.keybindings-error button:hover{background:var(--accent-secondary)}.guide-overlay{position:fixed;inset:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2000;display:flex;align-items:center;justify-content:center;animation:guideOverlayFadeIn .15s ease-out}@keyframes guideOverlayFadeIn{0%{opacity:0}to{opacity:1}}.guide-container{background:var(--bg-secondary);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-lg);box-shadow:0 20px 60px #0006;width:min(700px,90vw);max-height:85vh;display:flex;flex-direction:column;animation:guideSlideUp .2s ease-out;overflow:hidden}@keyframes guideSlideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.guide-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--border-subtle);background:var(--bg-tertiary);flex-shrink:0}.guide-header-title{font-family:var(--font-sketch);font-size:var(--text-xl);color:var(--text-primary);margin:0}.guide-header-subtitle{font-size:var(--text-xs);color:var(--text-muted);margin-top:2px}.guide-close-btn{background:transparent;border:none;color:var(--text-secondary);cursor:pointer;padding:var(--space-xs);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;transition:var(--transition-fast)}.guide-close-btn:hover{background:var(--bg-node);color:var(--text-primary)}.guide-close-btn svg{width:20px;height:20px}.guide-content{flex:1;overflow-y:auto;padding:var(--space-lg)}.guide-footer{padding:var(--space-md) var(--space-lg);border-top:1px solid var(--border-subtle);background:var(--bg-tertiary);display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);flex-shrink:0}.guide-footer-actions{display:flex;gap:var(--space-sm)}.guide-progress{margin-bottom:var(--space-lg)}.guide-progress-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-sm)}.guide-progress-stats{font-size:var(--text-sm);color:var(--text-secondary)}.guide-progress-stats strong{color:var(--accent-success)}.guide-platform-badge{display:inline-flex;align-items:center;gap:var(--space-xs);padding:4px 10px;background:var(--bg-node);border:1px solid var(--border-subtle);border-radius:var(--radius-pill);font-size:12px;color:var(--text-secondary)}.guide-platform-badge svg{width:14px;height:14px}.guide-progress-bar{height:8px;background:var(--bg-node);border-radius:var(--radius-pill);overflow:hidden;border:1px solid var(--border-subtle)}.guide-progress-fill{height:100%;background:linear-gradient(90deg,var(--accent-primary),var(--accent-success));border-radius:var(--radius-pill);transition:width .3s ease-out}.guide-step{background:var(--bg-node);border:1px solid var(--border-subtle);border-radius:var(--radius-md);margin-bottom:var(--space-sm);overflow:hidden;transition:var(--transition-fast)}.guide-step:hover{border-color:var(--border-strong)}.guide-step.completed{border-color:var(--accent-success);background:#4caf500d}.guide-step.in-progress{border-color:var(--accent-primary);background:#4285f40d}.guide-step.failed{border-color:var(--accent-danger);background:#f443360d}.guide-step-header{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-md);cursor:pointer;-webkit-user-select:none;user-select:none}.guide-step-header:hover{background:#ffffff05}.guide-step-status{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:14px;font-weight:600}.guide-step-status.pending{background:var(--bg-tertiary);border:2px solid var(--border-strong);color:var(--text-muted)}.guide-step-status.in-progress{background:var(--accent-primary);color:#fff;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.guide-step-status.completed{background:var(--accent-success);color:#fff}.guide-step-status.failed{background:var(--accent-danger);color:#fff}.guide-step-status.skipped{background:var(--bg-tertiary);color:var(--text-muted);text-decoration:line-through}.guide-step-info{flex:1;min-width:0}.guide-step-title{font-size:var(--text-sm);font-weight:600;color:var(--text-primary);margin:0 0 2px}.guide-step.completed .guide-step-title{color:var(--accent-success)}.guide-step-description{font-size:var(--text-xs);color:var(--text-muted);margin:0}.guide-step-toggle{color:var(--text-muted);transition:transform .2s ease}.guide-step-toggle.expanded{transform:rotate(180deg)}.guide-step-toggle svg{width:20px;height:20px}.guide-step-content{padding:0 var(--space-md) var(--space-md);border-top:1px solid var(--border-subtle);animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;max-height:0}to{opacity:1;max-height:500px}}.guide-step-content p{font-size:var(--text-xs);color:var(--text-secondary);line-height:1.6;margin:var(--space-sm) 0}.guide-step-content p:first-child{margin-top:var(--space-md)}.guide-step-actions{display:flex;gap:var(--space-sm);margin-top:var(--space-md)}.guide-tester{display:inline-flex;align-items:center;gap:var(--space-sm)}.guide-test-btn{display:inline-flex;align-items:center;gap:var(--space-xs);padding:8px 14px;background:var(--bg-tertiary);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text-primary);font-size:var(--text-xs);font-weight:500;cursor:pointer;transition:var(--transition-fast)}.guide-test-btn:hover:not(:disabled){background:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.guide-test-btn:disabled{opacity:.5;cursor:not-allowed}.guide-test-btn.testing{background:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.guide-test-btn svg{width:14px;height:14px}.guide-test-result{display:inline-flex;align-items:center;gap:var(--space-xs);padding:6px 12px;border-radius:var(--radius-sm);font-size:12px;font-weight:500}.guide-test-result.success{background:#4caf5026;color:var(--accent-success)}.guide-test-result.failure{background:#f4433626;color:var(--accent-danger)}.guide-test-result.warning{background:#ffc10726;color:var(--accent-warning)}.guide-test-result svg{width:14px;height:14px}.guide-spinner{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.guide-info-box{display:flex;gap:var(--space-md);padding:var(--space-md);border-radius:var(--radius-md);margin:var(--space-md) 0}.guide-info-box.info{background:#4285f41a;border:1px solid rgba(66,133,244,.3)}.guide-info-box.success{background:#4caf501a;border:1px solid rgba(76,175,80,.3)}.guide-info-box.warning{background:#ffc1071a;border:1px solid rgba(255,193,7,.3)}.guide-info-box.error{background:#f443361a;border:1px solid rgba(244,67,54,.3)}.guide-info-box.tip{background:#9c27b01a;border:1px solid rgba(156,39,176,.3)}.guide-info-icon{flex-shrink:0;width:20px;height:20px}.guide-info-box.info .guide-info-icon{color:#4285f4}.guide-info-box.success .guide-info-icon{color:var(--accent-success)}.guide-info-box.warning .guide-info-icon{color:var(--accent-warning)}.guide-info-box.error .guide-info-icon{color:var(--accent-danger)}.guide-info-box.tip .guide-info-icon{color:#9c27b0}.guide-info-content{flex:1;min-width:0}.guide-info-title{font-size:var(--text-xs);font-weight:600;margin:0 0 4px}.guide-info-box.info .guide-info-title{color:#4285f4}.guide-info-box.success .guide-info-title{color:var(--accent-success)}.guide-info-box.warning .guide-info-title{color:var(--accent-warning)}.guide-info-box.error .guide-info-title{color:var(--accent-danger)}.guide-info-box.tip .guide-info-title{color:#9c27b0}.guide-info-text{font-size:var(--text-xs);color:var(--text-secondary);line-height:1.5;margin:0}.guide-section{margin-bottom:var(--space-lg)}.guide-section-header{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-md);cursor:pointer;-webkit-user-select:none;user-select:none}.guide-section-header:hover .guide-section-toggle{color:var(--text-primary)}.guide-section-title{font-family:var(--font-sketch);font-size:var(--text-lg);color:var(--text-primary);margin:0}.guide-section-count{font-size:var(--text-xs);color:var(--text-muted);background:var(--bg-node);padding:2px 8px;border-radius:var(--radius-pill)}.guide-section-toggle{color:var(--text-muted);transition:transform .2s ease;margin-left:auto}.guide-section-toggle.collapsed{transform:rotate(-90deg)}.guide-section-toggle svg{width:18px;height:18px}.guide-section-content{animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.guide-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);padding:10px 18px;border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:var(--transition-fast);border:none}.guide-btn.primary{background:var(--accent-primary);color:#fff}.guide-btn.primary:hover:not(:disabled){background:var(--accent-secondary);transform:translateY(-1px)}.guide-btn.secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-strong)}.guide-btn.secondary:hover:not(:disabled){background:var(--bg-node)}.guide-btn.success{background:var(--accent-success);color:#fff}.guide-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.guide-btn svg{width:16px;height:16px}.guide-latency-display{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-md);padding:var(--space-md);background:var(--bg-node);border-radius:var(--radius-md);border:1px solid var(--border-subtle)}.guide-latency-item{text-align:center}.guide-latency-label{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}.guide-latency-value{font-size:var(--text-lg);font-weight:600;font-family:var(--font-mono)}.guide-latency-value.good{color:var(--accent-success)}.guide-latency-value.okay{color:var(--accent-warning)}.guide-latency-value.bad{color:var(--accent-danger)}.guide-latency-unit{font-size:var(--text-xs);color:var(--text-muted);margin-left:2px}.guide-external-link{display:inline-flex;align-items:center;gap:var(--space-xs);color:var(--accent-primary);text-decoration:none;font-size:var(--text-xs);transition:var(--transition-fast)}.guide-external-link:hover{color:var(--accent-secondary);text-decoration:underline}.guide-external-link svg{width:12px;height:12px}.guide-code{font-family:var(--font-mono);font-size:12px;background:var(--bg-tertiary);padding:2px 6px;border-radius:4px;color:var(--accent-primary)}.guide-code-block{font-family:var(--font-mono);font-size:12px;background:var(--bg-tertiary);padding:var(--space-md);border-radius:var(--radius-sm);border:1px solid var(--border-subtle);overflow-x:auto;white-space:pre;color:var(--text-secondary)}@media(max-width:600px){.guide-container{width:95vw;max-height:90vh}.guide-header{padding:var(--space-sm) var(--space-md)}.guide-content{padding:var(--space-md)}.guide-latency-display{grid-template-columns:1fr}.guide-step-header{padding:var(--space-sm)}}.audio-settings-panel{padding:0}.guide-launch-btn{display:flex;align-items:center;gap:12px;width:100%;padding:16px 20px;background:linear-gradient(135deg,#4285f426,#9c27b01a);border:2px solid rgba(66,133,244,.3);border-radius:12px;color:var(--text-primary);font-size:1rem;font-weight:600;font-family:inherit;cursor:pointer;transition:all .2s ease;margin-bottom:24px}.guide-launch-btn:hover{background:linear-gradient(135deg,#4285f440,#9c27b026);border-color:#4285f480;transform:translateY(-1px)}.guide-launch-btn:active{transform:translateY(0)}.guide-launch-btn svg{flex-shrink:0;color:var(--accent-primary, #4285f4)}.guide-launch-btn .arrow-icon{margin-left:auto;opacity:.5;transition:transform .2s ease,opacity .2s ease}.guide-launch-btn:hover .arrow-icon{transform:translate(4px);opacity:1}.audio-info-banner{padding:16px;border-radius:8px;background:var(--bg-secondary);border:2px solid var(--border-color, #ccc);margin-bottom:24px;display:flex;gap:12px;align-items:flex-start}.audio-info-banner.usb-detected{background:#4caf501a;border-color:#4caf504d}.audio-info-banner svg{flex-shrink:0;margin-top:2px}.audio-info-banner strong{display:block;margin-bottom:4px;font-size:1rem}.audio-info-banner p{margin:4px 0;font-size:.9rem;opacity:.8}.audio-info-banner .suggestion{margin-top:8px;font-style:italic;color:var(--accent-primary, #2196f3)}.audio-metrics-section{margin-bottom:32px}.audio-metrics-section h3{margin-top:0;margin-bottom:16px}.metrics-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.metric-card{padding:16px;background:var(--bg-secondary);border-radius:8px;border:2px solid var(--border-color, #ccc);text-align:center}.metric-card.total{background:#2196f31a;border-color:#2196f34d}.metric-label{display:block;font-size:.85rem;opacity:.7;margin-bottom:8px}.metric-value{display:block;font-size:1.5rem;font-weight:600;font-family:Courier New,monospace}.audio-config-section{margin-bottom:32px}.audio-config-section h3{margin-top:0;margin-bottom:16px}.setting-group{margin-bottom:24px}.setting-group label{display:block;font-weight:500;margin-bottom:8px}.setting-group select,.setting-group input[type=number]{width:100%;padding:10px;border:2px solid var(--border-color, #ccc);border-radius:6px;background:var(--bg-primary);font-size:.95rem;font-family:inherit;color:inherit}.setting-group select:focus,.setting-group input:focus{outline:none;border-color:var(--accent-primary, #2196f3)}.setting-description{margin-top:8px;font-size:.85rem;opacity:.7;line-height:1.4}.setting-description strong{display:block;margin-top:4px;color:var(--accent-primary, #2196f3)}.toggle-label{display:flex;align-items:center;gap:10px;cursor:pointer}.toggle-label input[type=checkbox]{width:20px;height:20px;cursor:pointer}.apply-config-btn{width:100%;padding:12px;background:var(--accent-primary, #2196f3);color:#fff;border:none;border-radius:6px;font-size:1rem;font-weight:600;cursor:pointer;transition:opacity .2s}.apply-config-btn:hover:not(:disabled){opacity:.9}.apply-config-btn:disabled{opacity:.5;cursor:not-allowed}.audio-info-section h3{margin-top:0;margin-bottom:12px}.info-list{list-style:none;padding:0;margin:0}.info-list li{padding:8px 0;font-size:.9rem;line-height:1.5}.info-list strong{color:var(--accent-primary, #2196f3)}.latency-status-section{margin-bottom:24px}.latency-status-card{display:flex;align-items:center;gap:16px;padding:20px;background:var(--bg-secondary);border-radius:12px;border:2px solid var(--border-color, #ccc)}.latency-status-indicator{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:100px;padding:16px;border-radius:12px;text-align:center}.latency-status-indicator.excellent{background:#22c55e26;border:2px solid rgba(34,197,94,.4)}.latency-status-indicator.good{background:#84cc1626;border:2px solid rgba(132,204,22,.4)}.latency-status-indicator.acceptable{background:#eab30826;border:2px solid rgba(234,179,8,.4)}.latency-status-indicator.poor{background:#f9731626;border:2px solid rgba(249,115,22,.4)}.latency-status-indicator.bad{background:#ef444426;border:2px solid rgba(239,68,68,.4)}.latency-value-large{font-size:2rem;font-weight:700;font-family:Courier New,monospace;line-height:1}.latency-value-large.excellent{color:#22c55e}.latency-value-large.good{color:#84cc16}.latency-value-large.acceptable{color:#eab308}.latency-value-large.poor{color:#f97316}.latency-value-large.bad{color:#ef4444}.latency-label-small{font-size:.75rem;opacity:.7;margin-top:4px;text-transform:uppercase;letter-spacing:.5px}.latency-status-info{flex:1}.latency-status-message{font-size:1.1rem;font-weight:500;margin-bottom:4px}.latency-status-hint{font-size:.85rem;opacity:.7}.bluetooth-warning{display:flex;align-items:center;gap:10px;margin-top:16px;padding:12px 16px;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:8px;color:#ef4444;font-size:.9rem}.bluetooth-warning svg{flex-shrink:0}.latency-breakdown{margin-top:16px}.latency-breakdown summary{cursor:pointer;font-size:.9rem;color:var(--accent-primary, #2196f3);padding:8px 0;-webkit-user-select:none;user-select:none}.latency-breakdown summary:hover{text-decoration:underline}.latency-breakdown-content{margin-top:12px;padding:16px;background:var(--bg-tertiary, rgba(0,0,0,.05));border-radius:8px}.latency-breakdown-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--border-color, rgba(0,0,0,.1))}.latency-breakdown-row:last-child{border-bottom:none}.latency-breakdown-row.total{margin-top:8px;padding-top:12px;border-top:2px solid var(--border-color, rgba(0,0,0,.2));border-bottom:none;font-weight:600}.breakdown-label{font-size:.9rem;opacity:.8}.breakdown-value{font-family:Courier New,monospace;font-size:.95rem}.breakdown-value.highlight{color:var(--accent-primary, #2196f3);font-weight:600}.latency-suggestions{margin-top:16px;padding:16px;background:#2196f314;border:1px solid rgba(33,150,243,.2);border-radius:8px}.latency-suggestions h4{margin:0 0 12px;font-size:.95rem;display:flex;align-items:center;gap:8px}.latency-suggestions ul{margin:0;padding-left:20px}.latency-suggestions li{font-size:.85rem;margin-bottom:6px;line-height:1.4}.midi-device-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm, 12px);padding:var(--space-lg, 20px) var(--space-md, 16px);background:var(--bg-node);border:var(--border-sketch-width, 2px) solid var(--border-sketch);border-radius:var(--radius-md, 8px);cursor:pointer;transition:all var(--transition-fast, .15s);text-align:center}.midi-device-card:hover{background:var(--bg-tertiary);transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.midi-device-card:active{transform:translateY(0);box-shadow:none}.midi-device-card.connected{border-color:var(--accent-success);background:var(--bg-node);box-shadow:0 0 0 1px var(--accent-success) inset}.midi-device-card.connected:hover{background:var(--bg-tertiary)}.midi-device-card-icon{width:64px;height:64px;display:flex;align-items:center;justify-content:center;background:var(--bg-tertiary);border-radius:var(--radius-md, 12px);border:1px solid var(--border-subtle)}.midi-device-emoji{font-size:32px}.midi-device-card-info{display:flex;flex-direction:column;gap:4px}.midi-device-card-name{font-family:var(--font-sketch);font-size:var(--text-sm, 14px);font-weight:600;color:var(--text-primary);line-height:1.3}.midi-device-card-manufacturer{font-size:var(--text-xs, 12px);color:var(--text-muted)}.midi-device-card-status{display:flex;align-items:center;gap:6px;font-size:var(--text-xs, 11px);color:var(--accent-success);font-weight:500}.midi-device-status-dot{width:8px;height:8px;border-radius:50%;background:var(--accent-success);animation:statusPulse 2s ease-in-out infinite}@keyframes statusPulse{0%,to{opacity:1;box-shadow:0 0 0 0 var(--accent-success)}50%{opacity:.7;box-shadow:0 0 0 4px transparent}}.midi-browser-overlay{position:fixed;inset:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:browserFadeIn .2s ease}@keyframes browserFadeIn{0%{opacity:0}to{opacity:1}}.midi-browser-container{width:90%;max-width:1200px;max-height:90vh;background:var(--bg-secondary);border:var(--border-sketch-width, 2px) solid var(--border-sketch);border-radius:var(--radius-lg, 12px);display:flex;flex-direction:column;overflow:hidden;animation:browserSlideUp .3s ease;box-shadow:0 20px 60px #0000004d}@keyframes browserSlideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.midi-browser-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md, 16px) var(--space-lg, 24px);border-bottom:var(--border-sketch-width, 2px) solid var(--border-sketch);background:var(--bg-node-header)}.midi-browser-header h2{margin:0;font-family:var(--font-sketch);font-size:var(--text-xl, 20px);font-weight:600;color:var(--text-primary)}.midi-browser-close{width:32px;height:32px;padding:0;background:transparent;border:none;color:var(--text-secondary);font-size:28px;cursor:pointer;line-height:1;border-radius:var(--radius-sm, 4px);display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast, .15s)}.midi-browser-close:hover{background:var(--bg-tertiary);color:var(--text-primary)}.midi-browser-search{padding:var(--space-md, 16px) var(--space-lg, 24px);border-bottom:1px solid var(--border-subtle);background:var(--bg-primary)}.midi-browser-search input{width:100%;padding:var(--space-sm, 12px) var(--space-md, 16px);font-family:var(--font-sketch);font-size:var(--text-md, 16px);border:var(--border-sketch-width, 2px) solid var(--border-sketch);border-radius:var(--radius-md, 8px);background:var(--bg-node);color:var(--text-primary);outline:none;transition:border-color var(--transition-fast, .15s)}.midi-browser-search input:focus{border-color:var(--accent-primary)}.midi-browser-search input::placeholder{color:var(--text-muted)}.midi-browser-section{padding:var(--space-md, 16px) var(--space-lg, 24px);overflow-y:auto;flex:1}.midi-browser-section h3{margin:0 0 var(--space-md, 16px);font-family:var(--font-sketch);font-size:var(--text-sm, 14px);font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted)}.midi-device-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--space-md, 16px)}.midi-browser-empty{text-align:center;padding:var(--space-xl, 40px);color:var(--text-muted);font-style:italic}.midi-browser-footer{padding:var(--space-sm, 12px) var(--space-lg, 24px);border-top:1px solid var(--border-subtle);text-align:center;font-size:var(--text-xs, 12px);color:var(--text-muted);background:var(--bg-primary)}.midi-connection-toast{background:var(--bg-secondary);border:var(--border-sketch-width, 2px) solid var(--border-sketch);border-radius:var(--radius-lg, 12px);padding:0;min-width:320px;max-width:420px;box-shadow:0 8px 32px #00000040;overflow:hidden;position:relative}.midi-connection-toast-progress{position:absolute;bottom:0;left:0;height:3px;background:var(--accent-primary);transition:width 1s linear;border-radius:0 0 0 var(--radius-lg, 12px)}.midi-connection-toast-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm, 8px) var(--space-md, 12px);background:var(--bg-node-header);border-bottom:1px solid var(--border-subtle)}.midi-connection-toast-header-left{flex:1}.midi-connection-toast-dismiss{width:24px;height:24px;padding:0;border:none;background:transparent;color:var(--text-muted);font-size:18px;line-height:1;cursor:pointer;border-radius:var(--radius-sm, 4px);display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast, .15s)}.midi-connection-toast-dismiss:hover{background:var(--bg-tertiary);color:var(--text-primary)}.midi-connection-toast-content{display:flex;gap:var(--space-md, 12px);padding:var(--space-md, 12px) var(--space-md, 12px) var(--space-sm, 8px)}.midi-connection-toast-icon{font-size:28px;line-height:1;display:flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:var(--radius-md, 8px);flex-shrink:0;border:1px solid var(--border-subtle)}.midi-connection-toast-icon.recognized{background:linear-gradient(145deg,var(--bg-tertiary) 0%,var(--bg-secondary) 100%);border-color:var(--accent-primary);box-shadow:0 0 12px rgba(var(--accent-primary-rgb, 74, 158, 255),.2)}.midi-connection-toast-icon.generic{background:var(--bg-tertiary)}.midi-connection-toast-text{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.midi-connection-toast-title{font-family:var(--font-sketch);font-size:var(--text-md, 14px);font-weight:600;color:var(--text-primary)}.midi-connection-toast-device{font-size:var(--text-sm, 13px);color:var(--text-secondary);word-break:break-word;line-height:1.3}.midi-connection-toast-assign{font-size:var(--text-xs, 11px);color:var(--text-muted);display:flex;align-items:center;gap:4px}.midi-connection-toast-assign-name{color:var(--accent-primary);font-weight:600}.midi-connection-toast-actions{display:flex;gap:var(--space-sm, 8px);padding:var(--space-sm, 8px) var(--space-md, 12px) calc(var(--space-md, 12px) + 3px)}.midi-connection-toast-btn{padding:var(--space-sm, 8px) var(--space-md, 12px);font-family:var(--font-sketch);font-size:var(--text-sm, 13px);font-weight:600;border-radius:var(--radius-md, 6px);cursor:pointer;transition:all var(--transition-fast, .15s);border:var(--border-sketch-width, 2px) solid transparent}.midi-connection-toast-btn-primary{background:var(--accent-primary);color:var(--text-on-accent);border-color:var(--accent-primary);flex:1}.midi-connection-toast-btn-primary:hover{background:var(--accent-secondary);border-color:var(--accent-secondary);transform:translateY(-1px);box-shadow:0 4px 12px #0003}.midi-connection-toast-btn-primary:active{transform:translateY(0);box-shadow:none}.midi-connection-toast-btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border-color:var(--border-subtle)}.midi-connection-toast-btn-secondary:hover{background:var(--bg-canvas);border-color:var(--border-sketch)}@media(max-width:480px){.midi-connection-toast{min-width:auto;max-width:none}.midi-connection-toast-actions{flex-direction:column}.midi-connection-toast-btn{width:100%}}.latency-warning-banner{position:fixed;bottom:20px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:16px;padding:16px 20px;background:linear-gradient(135deg,#ef4444f2,#dc2626f2);border-radius:12px;box-shadow:0 8px 32px #ef44444d,0 2px 8px #0003;color:#fff;z-index:10000;max-width:600px;width:calc(100% - 40px);animation:slideUp .3s ease-out}@keyframes slideUp{0%{opacity:0;transform:translate(-50%) translateY(20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.warning-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#fff3;border-radius:50%}.warning-icon svg{color:#fff}.warning-content{flex:1;min-width:0}.warning-title{font-weight:600;font-size:1rem;margin-bottom:4px}.warning-message{font-size:.875rem;opacity:.9;line-height:1.4}.warning-actions{display:flex;gap:8px;flex-shrink:0}.warning-btn{padding:8px 16px;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s ease;border:none;font-family:inherit}.warning-btn.primary{background:#fff;color:#dc2626}.warning-btn.primary:hover{background:#f3f4f6;transform:translateY(-1px)}.warning-btn.secondary{background:#fff3;color:#fff;border:1px solid rgba(255,255,255,.3)}.warning-btn.secondary:hover{background:#ffffff4d}@media(max-width:600px){.latency-warning-banner{flex-wrap:wrap;bottom:10px;padding:12px 16px}.warning-content{flex-basis:calc(100% - 56px)}.warning-actions{flex-basis:100%;margin-top:12px;justify-content:flex-end}}@font-face{font-family:Caveat;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/caveat-regular.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Caveat;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/caveat-bold.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/inter-regular.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/inter-medium.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/inter-semibold.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/inter-bold.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/jetbrains-mono-regular.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/jetbrains-mono-medium.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--shadow-node: 2px 3px 0 rgba(0, 0, 0, .1);--shadow-menu: 3px 4px 0 rgba(0, 0, 0, .15);--shadow-sketch: 2px 2px 0 var(--sketch-black);--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--radius-pill: 50px;--font-sketch: "Caveat", "Comic Sans MS", cursive;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--text-xs: 14px;--text-sm: 16px;--text-md: 18px;--text-lg: 22px;--text-xl: 28px;--text-2xl: 36px;--node-min-width: 180px;--node-header-height: 40px;--port-size: 16px;--port-spacing: 28px;--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .4s ease;--border-sketch-width: 2px}.sketch-box{background:var(--bg-node);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-lg);position:relative}.sketch-box--tilted{transform:rotate(-.5deg)}.sketch-border{border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-lg)}.sketch-border--double{border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-lg);box-shadow:inset 0 0 0 3px var(--bg-node),inset 0 0 0 5px var(--sketch-light)}.sketch-border--pill{border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-pill)}.sketch-shadow{box-shadow:var(--shadow-sketch)}.sketch-shadow--soft{box-shadow:var(--shadow-node)}.sketch-text{font-family:var(--font-sketch);color:var(--text-primary)}.sketch-text--header{font-family:var(--font-sketch);font-size:var(--text-lg);font-weight:600;color:var(--text-primary)}.sketch-text--label{font-family:var(--font-sketch);font-size:var(--text-sm);font-weight:500;color:var(--text-secondary)}.sketch-text--small{font-family:var(--font-sketch);font-size:var(--text-xs);color:var(--text-muted)}.sketch-btn{font-family:var(--font-sketch);font-size:var(--text-sm);font-weight:500;padding:var(--space-xs) var(--space-md);background:var(--bg-node);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-md);color:var(--text-primary);cursor:pointer;transition:all var(--transition-fast)}.sketch-btn:hover{background:var(--bg-tertiary);transform:translateY(-1px)}.sketch-btn:active{transform:translateY(1px);box-shadow:none}.sketch-btn--primary{background:var(--accent-primary);color:#fff;border-color:var(--sketch-black)}.sketch-btn--primary:hover{background:var(--accent-secondary)}.sketch-btn--danger{background:var(--accent-danger);color:#fff}.sketch-btn--success{background:var(--accent-success);color:#fff}.sketch-btn--circle{width:32px;height:32px;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center}.sketch-btn--pill{border-radius:var(--radius-pill);padding:var(--space-xs) var(--space-lg)}.sketch-input{font-family:var(--font-mono);font-size:var(--text-sm);padding:var(--space-xs) var(--space-sm);background:var(--bg-canvas);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-sm);color:var(--text-primary);outline:none;transition:border-color var(--transition-fast)}.sketch-input:focus{border-color:var(--accent-primary)}.sketch-input--small{padding:2px var(--space-xs);font-size:var(--text-xs)}.sketch-port{width:var(--port-size);height:var(--port-size);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:50%;background:var(--bg-canvas);cursor:pointer;transition:all var(--transition-fast)}.sketch-port:hover{transform:scale(1.2);background:var(--bg-tertiary)}.sketch-port--input{background:var(--audio-input)}.sketch-port--output{background:var(--audio-output)}.sketch-port--connected{background:var(--audio-connected);box-shadow:0 0 6px var(--audio-connected)}.sketch-divider{height:1px;background:var(--sketch-light);margin:var(--space-sm) 0}.sketch-divider--vertical{width:1px;height:auto;margin:0 var(--space-sm)}.sketch-progress{height:8px;background:var(--bg-tertiary);border:1px solid var(--sketch-light);border-radius:var(--radius-sm);overflow:hidden}.sketch-progress__bar{height:100%;background:var(--accent-primary);transition:width var(--transition-normal)}.sketch-meter{display:flex;gap:2px;align-items:flex-end}.sketch-meter__bar{width:4px;background:var(--accent-success);border-radius:2px;transition:height var(--transition-fast)}.sketch-meter__bar--peak{background:var(--accent-warning)}.sketch-meter__bar--clip{background:var(--accent-danger)}.sketch-select{font-family:var(--font-sketch);font-size:var(--text-sm);padding:var(--space-xs) var(--space-sm);padding-right:var(--space-lg);background:var(--bg-canvas);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-md);color:var(--text-primary);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%231a1a1a' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.sketch-select:focus{outline:none;border-color:var(--accent-primary)}.sketch-card{background:var(--bg-node);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-lg);padding:var(--space-md)}.sketch-card__header{font-family:var(--font-sketch);font-size:var(--text-lg);font-weight:600;padding-bottom:var(--space-sm);border-bottom:1px solid var(--sketch-light);margin-bottom:var(--space-sm)}.sketch-badge{display:inline-flex;align-items:center;padding:2px var(--space-sm);font-family:var(--font-sketch);font-size:var(--text-xs);font-weight:500;background:var(--bg-tertiary);border:1px solid var(--sketch-light);border-radius:var(--radius-pill);color:var(--text-secondary)}.sketch-badge--active{background:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.paper-texture{background-color:var(--bg-canvas);background-image:radial-gradient(circle at 25% 25%,rgba(0,0,0,.01) 1px,transparent 1px),radial-gradient(circle at 75% 75%,rgba(0,0,0,.01) 1px,transparent 1px);background-size:20px 20px}.grid-background{background-color:var(--bg-canvas);background-image:linear-gradient(rgba(0,0,0,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.03) 1px,transparent 1px);background-size:20px 20px}.dot-grid-background{background-color:var(--bg-canvas);background-image:radial-gradient(circle,rgba(0,0,0,.08) 1px,transparent 1px);background-size:20px 20px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}body{font-family:var(--font-sketch);font-size:var(--text-md);color:var(--text-primary);background:var(--bg-canvas);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{background-color:var(--bg-canvas);background-image:radial-gradient(circle,rgba(0,0,0,.06) 1px,transparent 1px);background-size:24px 24px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-tertiary);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb{background:var(--sketch-light);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb:hover{background:var(--sketch-gray)}button{font-family:var(--font-sketch);font-size:inherit;border:none;background:none;cursor:pointer;color:inherit}input,select,textarea{font-family:var(--font-sans);font-size:inherit;color:inherit;background:var(--bg-canvas);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-sm);padding:var(--space-xs) var(--space-sm)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent-primary)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-xs{gap:var(--space-xs)}.gap-sm{gap:var(--space-sm)}.gap-md{gap:var(--space-md)}.audio-activate-overlay{position:fixed;inset:0;background:var(--bg-canvas);opacity:.95;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:10000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.audio-activate-btn{padding:var(--space-lg) var(--space-xl);font-family:var(--font-sketch);font-size:var(--text-xl);font-weight:600;background:var(--bg-node);color:var(--text-primary);border:var(--border-sketch-width) solid var(--sketch-black);border-radius:var(--radius-xl);transition:all var(--transition-normal);box-shadow:var(--shadow-sketch)}.audio-activate-btn:hover{transform:translateY(-2px);box-shadow:4px 4px 0 var(--sketch-black)}.audio-activate-btn:active{transform:translateY(1px);box-shadow:1px 1px 0 var(--sketch-black)}.audio-activate-overlay p{margin-top:var(--space-md);font-family:var(--font-sketch);color:var(--text-secondary);font-size:var(--text-lg)}::selection{background:var(--accent-primary);color:#fff}:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}[data-sonner-toaster]{--normal-bg: var(--bg-secondary);--normal-border: var(--border-sketch);--normal-text: var(--text-primary);font-family:var(--font-sketch)}[data-sonner-toast][data-type=custom]{background:transparent;border:none;box-shadow:none;padding:0}
