.circle-wrapper[data-v-6faaeb87]{display:flex;flex-direction:column;align-items:center;gap:8px}.pitch-circle[data-v-6faaeb87]{-webkit-user-select:none;user-select:none;touch-action:none}.pitch-circle.note-dragging[data-v-6faaeb87]{cursor:grabbing}.inner-circle[data-v-6faaeb87]{cursor:grab}.inner-circle.inner-dragging[data-v-6faaeb87]{cursor:grabbing}.inner-circle.inner-dragging .note-dot[data-v-6faaeb87]{transition:none}.scale-sector-inner[data-v-6faaeb87]{fill:var(--accent);opacity:0;pointer-events:none}.scale-ring[data-v-6faaeb87]{cursor:grab}.scale-ring.dragging[data-v-6faaeb87]{cursor:grabbing}.scale-sector-ring[data-v-6faaeb87]{fill:var(--accent);opacity:.3;stroke:#00000080;stroke-width:1.5}.scale-sector-root[data-v-6faaeb87]{fill:var(--accent);opacity:.7;stroke:#00000080;stroke-width:1.5}.preview-sector[data-v-6faaeb87]{fill:var(--accent);opacity:.3;stroke:#00000080;stroke-width:1.5}.preview-sector-root[data-v-6faaeb87]{fill:var(--accent);opacity:.7;stroke:#00000080;stroke-width:1.5}.bg-ring[data-v-6faaeb87]{fill:var(--surface);stroke:var(--border);stroke-width:1}.interval-line[data-v-6faaeb87]{opacity:.75;stroke-linecap:round}.note-group[data-v-6faaeb87]{cursor:pointer}.note-group:hover .note-dot[data-v-6faaeb87]:not(.faded){filter:brightness(1.3)}.note-dot[data-v-6faaeb87]{fill:var(--surface2);stroke:var(--border);stroke-width:1.5;transition:fill .15s,stroke .15s,opacity .1s}.note-dot.active[data-v-6faaeb87]{fill:var(--text-muted);stroke:var(--text-muted);cursor:grab}.note-dot.root[data-v-6faaeb87]{fill:var(--note-root);stroke:var(--note-root);cursor:grab}.note-dot.faded[data-v-6faaeb87]{opacity:.3}.drag-ghost[data-v-6faaeb87]{fill:var(--text-muted);opacity:.7;pointer-events:none}.drag-ghost.root[data-v-6faaeb87]{fill:var(--note-root)}.drag-target-ring[data-v-6faaeb87]{fill:none;stroke:#fff;stroke-width:1.5;stroke-dasharray:4 3;opacity:.6;pointer-events:none}.root-ring[data-v-6faaeb87]{fill:none;stroke:var(--note-root);stroke-width:1.5;opacity:.4}.ring-band-bg[data-v-6faaeb87]{stroke:var(--bg);opacity:.8}.ring-band[data-v-6faaeb87]{stroke:var(--surface2);transition:stroke .15s}.preview-ring-band[data-v-6faaeb87]{stroke:var(--surface2)}.scale-ring:hover .ring-band[data-v-6faaeb87]{stroke:color-mix(in srgb,var(--accent) 30%,var(--surface2))}.scale-ring.dragging .ring-band[data-v-6faaeb87]{stroke:color-mix(in srgb,var(--accent) 50%,var(--surface2))}.ring-sep[data-v-6faaeb87]{stroke:var(--border);stroke-width:1;opacity:.6}.ring-label[data-v-6faaeb87]{font-size:11px;font-weight:500;fill:var(--text);transition:fill .1s}.ring-label.tonic[data-v-6faaeb87]{fill:var(--text);font-weight:700;font-size:12px}.ring-tick[data-v-6faaeb87]{stroke:var(--border);stroke-width:1}.ring-tick.tonic[data-v-6faaeb87]{stroke:var(--accent);stroke-width:1.5}.keyboard-wrapper[data-v-d301a6e5]{display:flex;flex-direction:column;align-items:center;gap:8px}.keyboard-svgs[data-v-d301a6e5]{display:flex;flex-direction:column;gap:0;line-height:0}.piano-svg[data-v-d301a6e5]{cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:none}.white-key[data-v-d301a6e5]{fill:#e8e8f0;stroke:#aac;stroke-width:1;transition:fill .1s}.white-key[data-v-d301a6e5]:hover{fill:#d0d0ee}.white-key.active[data-v-d301a6e5]{fill:var(--note-active);stroke:#333}.white-key.root[data-v-d301a6e5]{fill:var(--note-root);stroke:#333}.black-key[data-v-d301a6e5]{fill:#1a1a2e;stroke:#0a0a1a;stroke-width:1;transition:fill .1s}.black-key[data-v-d301a6e5]:hover{fill:#2a2a4e}.black-key.active[data-v-d301a6e5]{fill:var(--note-active);stroke:#000}.black-key.root[data-v-d301a6e5]{fill:var(--note-root);stroke:#000}.scale-stripe[data-v-d301a6e5]{fill:var(--accent);stroke:#00000080;stroke-width:1.5;transition:opacity .4s ease}.scale-stripe-root[data-v-d301a6e5]{opacity:.7}.preview-stripe[data-v-d301a6e5]{fill:var(--accent);opacity:.3;stroke:#00000080;stroke-width:1.5}.preview-stripe-root[data-v-d301a6e5]{opacity:.7}.chord-display[data-v-f411d340]{display:flex;flex-direction:column;gap:12px;min-width:260px}.chord-section[data-v-f411d340]{display:flex;flex-direction:column;gap:6px}.dissonance-row[data-v-f411d340]{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--surface);border-radius:8px;border:1px solid var(--border)}.dissonance-bar-wrap[data-v-f411d340]{flex:1;height:6px;background:var(--surface2);border-radius:3px;overflow:hidden}.dissonance-bar[data-v-f411d340]{height:100%;border-radius:3px;transition:width .3s,background .3s}.dissonance-value[data-v-f411d340]{font-size:12px;color:var(--text-muted);min-width:32px;text-align:right}.iv-label[data-v-f411d340]{font-size:11px;color:var(--text-muted);white-space:nowrap}.empty-hint[data-v-f411d340]{color:var(--text-muted);font-size:13px;padding:12px;text-align:center}.chord-row[data-v-f411d340]{display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:8px;border:1px solid var(--border);background:var(--surface);transition:border-color .15s}.chord-row.highlight[data-v-f411d340]{border-color:var(--note-root);background:color-mix(in srgb,var(--note-root) 8%,var(--surface))}.chord-symbol[data-v-f411d340]{font-size:17px;font-weight:700;color:var(--text);min-width:70px}.chord-name[data-v-f411d340]{font-size:13px;color:var(--text-muted);flex:1}.chord-roman[data-v-f411d340]{font-size:13px;color:var(--accent);font-style:italic;min-width:50px;text-align:right}.scale-occurrences[data-v-f411d340]{margin-top:4px;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;display:flex;flex-direction:column;gap:4px}.scale-occ-label[data-v-f411d340]{font-size:11px;color:var(--text-muted);margin-bottom:4px}.scale-occ-row[data-v-f411d340]{display:flex;align-items:baseline;gap:8px;font-size:12px;flex-wrap:nowrap}.scale-occ-name[data-v-f411d340]{color:var(--text-muted);min-width:110px;flex-shrink:0;font-size:11px}.scale-occ-roots[data-v-f411d340]{display:flex;flex-wrap:nowrap;gap:2px}.scale-occ-root[data-v-f411d340]{color:var(--text-muted);opacity:.35;padding:1px 4px;border-radius:4px;font-size:11px;cursor:pointer;transition:background .12s}.scale-occ-root[data-v-f411d340]:hover{background:color-mix(in srgb,var(--text-muted) 15%,transparent);opacity:.6}.scale-occ-root.match[data-v-f411d340]{color:var(--accent);font-weight:600;opacity:1;cursor:pointer;transition:background .12s}.scale-occ-root.match[data-v-f411d340]:hover{background:color-mix(in srgb,var(--accent) 20%,transparent)}.scale-occ-root.selected[data-v-f411d340]{outline:1.5px solid var(--accent);outline-offset:1px;border-radius:4px}.midi-status[data-v-6a2870b0]{display:inline-flex;align-items:center;gap:7px;padding:5px 12px;border-radius:20px;border:1px solid var(--border);background:var(--surface);font-size:12px;color:var(--text-muted);cursor:pointer;transition:border-color .15s;-webkit-user-select:none;user-select:none}.midi-status[data-v-6a2870b0]:hover{border-color:var(--accent)}.dot[data-v-6a2870b0]{width:7px;height:7px;border-radius:50%;background:var(--text-muted);flex-shrink:0}.connected .dot[data-v-6a2870b0]{background:#4caf7d}.connected[data-v-6a2870b0]{color:#4caf7d;border-color:#4caf7d44}.unsupported .dot[data-v-6a2870b0]{background:#888}.denied .dot[data-v-6a2870b0]{background:var(--accent2)}.help-overlay[data-v-4d01a82e]{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;padding:24px}.help-modal[data-v-4d01a82e]{background:var(--surface);border:1px solid var(--border);border-radius:12px;width:100%;max-width:680px;max-height:80vh;display:flex;flex-direction:column;overflow:hidden}.help-header[data-v-4d01a82e]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);flex-shrink:0}.help-header h2[data-v-4d01a82e]{font-size:16px;font-weight:700;color:var(--accent)}.help-close[data-v-4d01a82e]{background:none;border:none;color:var(--text-muted);font-size:16px;cursor:pointer;padding:4px 8px;border-radius:6px;line-height:1}.help-close[data-v-4d01a82e]:hover{background:var(--surface2);color:var(--text)}.help-content[data-v-4d01a82e]{overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:24px}.feature-heading[data-v-4d01a82e]{font-size:13px;font-weight:700;color:var(--accent);margin-bottom:6px}.feature-body[data-v-4d01a82e]{font-size:13px;color:var(--text-muted);line-height:1.6}.feature-body[data-v-4d01a82e] p{margin:0 0 6px}.feature-body[data-v-4d01a82e] ul{margin:4px 0 6px 16px;padding:0}.feature-body[data-v-4d01a82e] li{margin-bottom:2px}.feature-body[data-v-4d01a82e] strong{color:var(--text);font-weight:600}.recordings-panel[data-v-c739ed10]{border:1px solid var(--border);border-radius:10px;background:var(--surface);overflow:hidden;display:flex;flex-direction:column}.recordings-header[data-v-c739ed10]{padding:6px 10px 6px 14px;border-bottom:1px solid var(--border);background:var(--surface2);display:flex;align-items:center;justify-content:space-between;gap:8px}.recordings-title[data-v-c739ed10]{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;flex-shrink:0}.recordings-header-controls[data-v-c739ed10]{display:flex;align-items:center;gap:4px}.panel-playback-stop-btn[data-v-c739ed10]{padding:3px 10px;border-radius:12px;border:1px solid #e05555;background:#e05555;color:#fff;cursor:pointer;font-size:11px;transition:all .15s}.panel-playback-stop-btn[data-v-c739ed10]:hover{background:#c03030;border-color:#c03030}.panel-rec-btn[data-v-c739ed10]{padding:3px 10px;border-radius:12px;border:1px solid #e05555;background:color-mix(in srgb,#e05555 12%,transparent);color:#e05555;cursor:pointer;font-size:11px;transition:all .15s}.panel-rec-btn[data-v-c739ed10]:hover{background:#e05555;color:#fff}.panel-stop-btn[data-v-c739ed10]{padding:3px 10px;border-radius:12px;border:1px solid #e05555;background:#e05555;color:#fff;cursor:pointer;font-size:11px;animation:rec-pulse-c739ed10 1s ease-in-out infinite alternate}@keyframes rec-pulse-c739ed10{0%{opacity:1}to{opacity:.6}}.panel-rec-timer[data-v-c739ed10]{font-size:11px;font-variant-numeric:tabular-nums;color:#e05555;min-width:32px;text-align:center}.panel-loop-btn[data-v-c739ed10]{padding:3px 7px;border-radius:12px;border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;font-size:13px;transition:all .15s}.panel-loop-btn[data-v-c739ed10]:hover{border-color:var(--accent2);color:var(--accent2)}.panel-loop-btn.active[data-v-c739ed10]{border-color:var(--accent2);background:color-mix(in srgb,var(--accent2) 20%,transparent);color:var(--accent2)}.recordings-scroll[data-v-c739ed10]{max-height:220px;overflow-y:auto}.recordings-empty[data-v-c739ed10]{font-size:12px;color:var(--text-muted);padding:14px;margin:0;text-align:center}.recording-item[data-v-c739ed10]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 14px;border-bottom:1px solid var(--border);transition:background .1s}.recording-item[data-v-c739ed10]:last-child{border-bottom:none}.recording-item[data-v-c739ed10]:hover{background:var(--surface2)}.recording-item.playing[data-v-c739ed10]{background:color-mix(in srgb,var(--accent2) 8%,var(--surface))}.recording-item.live[data-v-c739ed10]{background:color-mix(in srgb,#e05555 6%,var(--surface))}.rec-live-dot[data-v-c739ed10]{color:#e05555;margin-right:4px;animation:live-pulse-c739ed10 1s ease-in-out infinite alternate}@keyframes live-pulse-c739ed10{0%{opacity:1}to{opacity:.3}}.rec-info[data-v-c739ed10]{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.rec-name[data-v-c739ed10]{font-size:13px;color:var(--text);font-weight:500;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:3px;padding:1px 3px;margin:-1px -3px;transition:background .1s}.rec-name[data-v-c739ed10]:hover{background:color-mix(in srgb,var(--accent) 12%,transparent)}.rec-name-input[data-v-c739ed10]{font-size:13px;font-weight:500;color:var(--text);background:var(--surface2);border:1px solid var(--accent);border-radius:4px;padding:1px 6px;outline:none;width:100%}.rec-meta[data-v-c739ed10]{font-size:11px;color:var(--text-muted)}.rec-actions[data-v-c739ed10]{display:flex;gap:4px;flex-shrink:0}.rec-action-btn[data-v-c739ed10]{padding:3px 8px;border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;font-size:11px;transition:all .1s;white-space:nowrap}.rec-action-btn[data-v-c739ed10]:hover{border-color:var(--accent);color:var(--accent)}.rec-action-btn.play[data-v-c739ed10]{border-color:#3b8c3b;color:#3b8c3b;background:color-mix(in srgb,#3b8c3b 10%,transparent)}.rec-action-btn.play[data-v-c739ed10]:hover{background:#3b8c3b;color:#fff;border-color:#3b8c3b}.rec-action-btn.delete[data-v-c739ed10]:hover{border-color:#e05555;color:#e05555}.driver-active .driver-overlay,.driver-active *{pointer-events:none}.driver-active .driver-active-element,.driver-active .driver-active-element *,.driver-popover,.driver-popover *{pointer-events:auto}@keyframes animate-fade-in{0%{opacity:0}to{opacity:1}}.driver-fade .driver-overlay{animation:animate-fade-in .2s ease-in-out}.driver-fade .driver-popover{animation:animate-fade-in .2s}.driver-popover{all:unset;box-sizing:border-box;color:#2d2d2d;margin:0;padding:15px;border-radius:5px;min-width:250px;max-width:300px;box-shadow:0 1px 10px #0006;z-index:1000000000;position:fixed;top:0;right:0;background-color:#fff}.driver-popover *{font-family:Helvetica Neue,Inter,ui-sans-serif,"Apple Color Emoji",Helvetica,Arial,sans-serif}.driver-popover-title{font:19px/normal sans-serif;font-weight:700;display:block;position:relative;line-height:1.5;zoom:1;margin:0}.driver-popover-close-btn{all:unset;position:absolute;top:0;right:0;width:32px;height:28px;cursor:pointer;font-size:18px;font-weight:500;color:#d2d2d2;z-index:1;text-align:center;transition:color;transition-duration:.2s}.driver-popover-close-btn:hover,.driver-popover-close-btn:focus{color:#2d2d2d}.driver-popover-title[style*=block]+.driver-popover-description{margin-top:5px}.driver-popover-description{margin-bottom:0;font:14px/normal sans-serif;line-height:1.5;font-weight:400;zoom:1}.driver-popover-footer{margin-top:15px;text-align:right;zoom:1;display:flex;align-items:center;justify-content:space-between}.driver-popover-progress-text{font-size:13px;font-weight:400;color:#727272;zoom:1}.driver-popover-footer button{all:unset;display:inline-block;box-sizing:border-box;padding:3px 7px;text-decoration:none;text-shadow:1px 1px 0 #fff;background-color:#fff;color:#2d2d2d;font:12px/normal sans-serif;cursor:pointer;outline:0;zoom:1;line-height:1.3;border:1px solid #ccc;border-radius:3px}.driver-popover-footer .driver-popover-btn-disabled{opacity:.5;pointer-events:none}:not(body):has(>.driver-active-element){overflow:hidden!important}.driver-no-interaction,.driver-no-interaction *{pointer-events:none!important}.driver-popover-footer button:hover,.driver-popover-footer button:focus{background-color:#f7f7f7}.driver-popover-navigation-btns{display:flex;flex-grow:1;justify-content:flex-end}.driver-popover-navigation-btns button+button{margin-left:4px}.driver-popover-arrow{content:"";position:absolute;border:5px solid #fff}.driver-popover-arrow-side-over{display:none}.driver-popover-arrow-side-left{left:100%;border-right-color:transparent;border-bottom-color:transparent;border-top-color:transparent}.driver-popover-arrow-side-right{right:100%;border-left-color:transparent;border-bottom-color:transparent;border-top-color:transparent}.driver-popover-arrow-side-top{top:100%;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.driver-popover-arrow-side-bottom{bottom:100%;border-left-color:transparent;border-top-color:transparent;border-right-color:transparent}.driver-popover-arrow-side-center{display:none}.driver-popover-arrow-side-left.driver-popover-arrow-align-start,.driver-popover-arrow-side-right.driver-popover-arrow-align-start{top:15px}.driver-popover-arrow-side-top.driver-popover-arrow-align-start,.driver-popover-arrow-side-bottom.driver-popover-arrow-align-start{left:15px}.driver-popover-arrow-align-end.driver-popover-arrow-side-left,.driver-popover-arrow-align-end.driver-popover-arrow-side-right{bottom:15px}.driver-popover-arrow-side-top.driver-popover-arrow-align-end,.driver-popover-arrow-side-bottom.driver-popover-arrow-align-end{right:15px}.driver-popover-arrow-side-left.driver-popover-arrow-align-center,.driver-popover-arrow-side-right.driver-popover-arrow-align-center{top:50%;margin-top:-5px}.driver-popover-arrow-side-top.driver-popover-arrow-align-center,.driver-popover-arrow-side-bottom.driver-popover-arrow-align-center{left:50%;margin-left:-5px}.driver-popover-arrow-none{display:none}.app[data-v-4b0af446]{height:100vh;display:flex;flex-direction:column;overflow:hidden}.app-header[data-v-4b0af446]{display:flex;align-items:center;justify-content:space-between;padding:16px 32px;border-bottom:1px solid var(--border);background:var(--surface);flex-wrap:wrap;gap:12px}.logo[data-v-4b0af446]{font-size:18px;font-weight:700;color:var(--accent);letter-spacing:-.5px}.header-right[data-v-4b0af446]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.velocity-label[data-v-4b0af446]{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted);white-space:nowrap;min-width:32px}.velocity-slider[data-v-4b0af446]{width:72px;accent-color:var(--accent);cursor:pointer}.help-btn[data-v-4b0af446]{padding:5px 14px;border-radius:20px;border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;font-size:13px;transition:all .15s}.help-btn[data-v-4b0af446]:hover{border-color:var(--accent);color:var(--accent)}.play-btn[data-v-4b0af446]{padding:5px 14px;border-radius:20px;border:1px solid var(--accent);background:color-mix(in srgb,var(--accent) 15%,transparent);color:var(--accent);cursor:pointer;font-size:13px;transition:all .15s}.play-btn[data-v-4b0af446]:hover:not(:disabled){background:var(--accent);color:#fff}.play-btn.arp[data-v-4b0af446]{border-color:var(--accent2);background:color-mix(in srgb,var(--accent2) 15%,transparent);color:var(--accent2)}.play-btn.arp[data-v-4b0af446]:hover:not(:disabled){background:var(--accent2);color:#fff}.play-btn[data-v-4b0af446]:disabled{opacity:.4;cursor:default}.clear-btn[data-v-4b0af446]{padding:5px 14px;border-radius:20px;border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;font-size:13px;transition:all .15s}.clear-btn[data-v-4b0af446]:hover:not(:disabled){border-color:var(--accent2);color:var(--accent2)}.clear-btn[data-v-4b0af446]:disabled{opacity:.4;cursor:default}.app-main[data-v-4b0af446]{flex:1;min-height:0;display:flex;gap:40px;padding:40px 32px;flex-wrap:wrap;justify-content:center;overflow-y:auto}.viz-section[data-v-4b0af446]{display:flex;flex-direction:column;align-items:center;gap:32px;zoom:1.1;align-self:flex-start}.chord-section[data-v-4b0af446]{display:flex;flex-direction:column;gap:16px;min-width:380px;max-width:460px;flex:1;min-height:0}.chord-display-wrapper[data-v-4b0af446]{flex:1;min-height:0;overflow-y:auto}.piano-bottom[data-v-4b0af446]{margin-top:auto}.controls-panel[data-v-4b0af446]{display:flex;flex-direction:column;gap:8px;padding:12px 16px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.control-row[data-v-4b0af446]{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;color:var(--text-muted)}.ctrl-select[data-v-4b0af446]{background:var(--surface2);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:4px 8px;font-size:13px;cursor:pointer;min-width:180px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0f0f13;--surface: #1a1a24;--surface2: #24243a;--accent: #7c6af7;--accent2: #f77c6a;--text: #e8e8f0;--text-muted: #7878a0;--border: #2e2e48;--note-active: #7c6af7;--note-root: #f77c6a}html,body{background:var(--bg);color:var(--text);font-family:Inter,system-ui,sans-serif;min-height:100vh}#app{min-height:100vh}
