@font-face{font-family:Inter;font-style:normal;font-weight:400 700;font-display:swap;src:url(./inter-latin-ext-B_-bZUTo.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:400 700;font-display:swap;src:url(./inter-latin-8kRkwJBP.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}*{margin:0;padding:0;box-sizing:border-box}:root{--primary: #9333ea;--primary-dark: #7e22ce;--secondary: #d946ef;--accent: #c084fc;--bg: #0c0618;--bg-light: #1a0f2e;--bg-card: #160d24;--text: #f1f5f9;--text-muted: #94a3b8;--border: #334155;--white-key: #f8fafc;--black-key: #1e293b;--success: #10b981;--warning: #f59e0b;--danger: #ef4444}body{font-family:Inter,Noto Sans,Segoe UI,system-ui,-apple-system,sans-serif;background:var(--bg);background-image:radial-gradient(ellipse at 50% -20%,rgba(147,51,234,.18),transparent 50%);color:var(--text);min-height:100vh;line-height:1.6}.app-header{background:#efe6ff;padding:.45rem .75rem .35rem;border-bottom:1px solid rgba(147,51,234,.18);position:sticky;top:0;z-index:100}.header-bar{display:flex;align-items:center;justify-content:flex-start;max-width:1100px;margin:0 auto .25rem;gap:.45rem;flex-wrap:nowrap;min-width:0}.logo-boz{flex-shrink:0;line-height:0;background:transparent}.sibling-app{flex-shrink:0;display:inline-flex;align-items:center;gap:.3rem;padding:.25rem .6rem;border:1px solid rgba(120,90,170,.4);border-radius:8px;font-size:.85rem;text-decoration:none;color:inherit;white-space:nowrap}.sibling-app:hover{border-color:#785aaae6;background:#785aaa1f}@media(max-width:700px){.sibling-app-text{display:none}}.logo-img{display:block;height:clamp(30px,4.5vw,40px);width:auto;max-width:min(200px,42vw);object-fit:contain;background:transparent;filter:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.lang-select-wrap{flex-shrink:0}.header-controls{display:flex;align-items:center;gap:.4rem;flex:1 1 auto;min-width:0;flex-wrap:nowrap;justify-content:flex-end}.lang-select{background:var(--bg);border:1px solid rgba(147,51,234,.5);color:var(--text);padding:.3rem .5rem;border-radius:8px;font-size:.8rem;cursor:pointer}.lang-select:hover,.lang-select:focus{border-color:var(--primary);outline:none}.midi-wrap{display:flex;align-items:center;gap:.35rem;flex-shrink:0;flex-wrap:nowrap;min-width:0}.midi-btn{background:var(--bg);border:1px solid rgba(147,51,234,.5);color:var(--text);padding:.3rem .55rem;border-radius:8px;font-size:.78rem;cursor:pointer;white-space:nowrap}.midi-btn:hover:not(:disabled){border-color:var(--primary);background:#9333ea26}.midi-btn.active{border-color:var(--success);background:#10b9811f}.midi-btn:disabled{opacity:.5;cursor:not-allowed}.midi-select{background:var(--bg);border:1px solid rgba(147,51,234,.45);color:var(--text);padding:.35rem .5rem;border-radius:8px;font-size:.8rem;max-width:140px}.midi-status{font-size:.72rem;color:var(--text-muted);max-width:5.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:1;min-width:0}.midi-status.midi-ok{color:var(--success)}.midi-status.midi-err{color:var(--danger)}@media(max-width:720px){.header-controls .subtitle{max-width:min(120px,22vw)}}.subtitle{color:var(--text-muted);font-size:.72rem;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1;min-width:0;max-width:min(200px,32vw)}.nav-tabs{display:flex;justify-content:flex-start;gap:.5rem;flex-wrap:nowrap;max-width:1100px;margin:0 auto;padding:.15rem .25rem .1rem;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;scroll-snap-type:x proximity}.nav-tabs::-webkit-scrollbar{display:none}.tab-btn{display:inline-flex;align-items:center;gap:.35rem;background:var(--bg);border:1px solid var(--border);color:var(--text);padding:.45rem .9rem;border-radius:8px;cursor:pointer;font-size:.9rem;transition:all .2s;white-space:nowrap;flex:0 0 auto;scroll-snap-align:start}.tab-icon{font-size:1.05rem;line-height:1;flex-shrink:0}.tab-label{font-size:.9rem;line-height:1.2}.tab-btn:hover{background:var(--bg-light);border-color:var(--primary)}.tab-btn.active{background:var(--primary);border-color:var(--primary)}.tab-panel{display:none;padding:2rem 1rem;max-width:1400px;margin:0 auto}.tab-panel.active{display:block}.help-page{max-width:920px;margin:0 auto}.help-intro{margin:0 0 1.25rem;text-align:center}.help-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:.85rem}.help-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:1rem 1.1rem}.help-card-wide{grid-column:1 / -1}.help-card-title{display:flex;align-items:center;gap:.45rem;margin:0 0 .55rem;font-size:1.05rem;font-weight:600;color:var(--text)}.help-icon{font-size:1.2rem;line-height:1}.help-card p{margin:0;font-size:.92rem;line-height:1.55;color:var(--text-muted)}.help-list{margin:0;padding-left:1.15rem;color:var(--text-muted);font-size:.92rem;line-height:1.6}.help-list li+li{margin-top:.45rem}.help-list strong{color:var(--text)}.help-video{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:1rem 1.1rem 1.1rem;margin-bottom:1rem}.help-video-caption{margin:0 0 .75rem;font-size:.92rem;line-height:1.5;color:var(--text-muted)}.help-video-embed{position:relative;width:100%;max-width:640px;margin:0 auto;aspect-ratio:16 / 9;border-radius:10px;overflow:hidden;background:#000}.help-video-embed iframe{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0}.help-video-link-wrap{margin:.75rem 0 0;text-align:center}.help-video-link{display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .85rem;border-radius:999px;border:1px solid var(--primary);background:#9333ea1a;color:var(--primary);font-size:.88rem;font-weight:600;text-decoration:none;transition:background .15s,color .15s}.help-video-link:hover{background:var(--primary);color:#fff}h2{margin-bottom:1.5rem;color:var(--text)}#piano,#scales,#chords,#sheetmusic,#voicetraining,#composer,#metronome,#metronome #tuner{--warm-ink: #15110d;--warm-panel: #241b13;--warm-panel-alt: #2a2016;--warm-brass: #e8a33d;--warm-brass-strong: #d98f2a;--warm-cream: #efe7d8;--warm-muted: #a48f74;--warm-line: #3a2c1f;--warm-neck-top: #3a2718;--warm-neck-bottom: #2c1d12;--warm-paper: #fbf6ec;--warm-paper-line: #d6c6aa}#piano h2,#scales h2,#chords h2,#sheetmusic h2,#voicetraining h2,#composer h2,#metronome h2,#metronome .metro-tuner-subtitle{color:var(--warm-cream);font-weight:800;letter-spacing:-.02em}#piano .piano-container,#scales .scales-controls,#scales .scale-display,#chords .scales-controls,#chords .scale-display,#sheetmusic .training-controls,#sheetmusic .sheetmusic-controls,#sheetmusic #trainingEarPanel,#voicetraining .voice-training-container,#composer .composer-main,#composer .tracks-panel,#metronome .metronome-container,#tuner .tuner-container{background:radial-gradient(120% 80% at 50% -10%,#2a2017 0%,var(--warm-ink) 60%),var(--warm-ink);color:var(--warm-cream);border:1px solid var(--warm-line);border-radius:16px;box-shadow:inset 0 1px #ffffff0a,0 18px 40px -28px #000000b3}#piano .piano-container,#composer .composer-main{padding:1.5rem}#sheetmusic #trainingEarPanel{max-width:800px;margin:0 auto;padding:1.25rem 1.5rem 1.5rem}#piano .piano-info,#scales .scale-description,#chords .scale-description,#sheetmusic .quiz-score,#sheetmusic .ear-feedback,#voicetraining .scale-description,#voicetraining .voice-card-label,#voicetraining .voice-card span,#composer .comp-hint,#metronome .tempo-name,#tuner .scale-description,#tuner .tuner-target,#tuner .tuner-detected-freq,#tuner .tuner-status,#tuner .tuner-mic-status,#tuner .tuner-string-freq,#tuner .tuner-auto-label,#metronome .bpm-unit{color:var(--warm-muted)}#piano .current-note,#scales .scale-title,#chords .scale-title,#metronome .bpm-value,#tuner .tuner-note,#composer .composer-panel-title{background:linear-gradient(90deg,#f0ab44,var(--warm-brass-strong));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}#scales .control-group label,#chords .control-group label,#sheetmusic .control-group label,#voicetraining .control-group label,#metronome .control-group label,#tuner .control-group label,#composer .tracks-header,#composer .composer-settings-title,#composer .track-count,#composer .track-vol-label,#composer .track-eq-title,#composer .fx-slider,#composer .comp-inline-label{color:var(--warm-muted)}#scales .control-group select,#chords .control-group select,#sheetmusic .control-group select,#voicetraining .control-group select,#metronome .control-group select,#tuner .control-group select,#composer .comp-name-input,#composer .composer-settings-block select,#composer .track-row select,#composer .comp-inline-label select,#composer .comp-toggle{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:10px}#composer .comp-import-label{background:var(--primary);color:#fff;border:none;border-radius:8px;font-weight:600}#composer .comp-import-label:hover{background:var(--primary-dark)}#sheetmusic .staff-container,#composer .staff-container{background:linear-gradient(180deg,#fffdf8,#f5efe4);border:1px solid var(--warm-paper-line);box-shadow:inset 0 1px #ffffffd9,0 18px 40px -28px #0000008c}#composer .track-row,#composer .composer-mixer,#composer .composer-settings-group,#metronome .beat-dot{border-color:var(--warm-line);background:#241b1385}#composer .track-row:hover,#composer .track-row.active{border-color:var(--primary);box-shadow:0 0 0 1px #9333ea40}#composer .track-row.active{background:#9333ea24}#metronome .beat-dot.lit{background:var(--warm-brass);border-color:var(--warm-brass);box-shadow:0 0 16px #e8a33d73}#metronome .beat-dot.accent,#metronome .beat-dot.accent.lit{border-color:#f6b95d}#metronome .metro-start.running{background:var(--danger);border-color:var(--danger);color:#fff}#metronome .metro-start.running:hover{background:#dc2626;border-color:#dc2626}#metronome .bpm-slider,#composer .bpm-slider,#tuner input[type=range]{accent-color:var(--primary)}#tuner .tuner-gauge:after{background:var(--warm-panel);border-color:var(--warm-line)}#tuner .tuner-gauge-arc{border-color:var(--warm-line)}#tuner .tuner-needle{background:linear-gradient(to top,#a85d14,var(--warm-brass))}#tuner .tuner-gauge.in-tune .tuner-gauge-arc{border-color:#22c55e;box-shadow:0 0 20px #22c55e59}#tuner .tuner-gauge.sharp .tuner-gauge-arc{border-top-color:#f59e0b;border-right-color:#f59e0b}#tuner .tuner-gauge.flat .tuner-gauge-arc{border-top-color:#3b82f6;border-left-color:#3b82f6}#tuner .tuner-gauge.in-tune .tuner-needle{background:linear-gradient(to top,#16a34a,#22c55e)}#tuner .tuner-cents.is-sharp,#tuner .tuner-status.is-sharp{color:#d97706}#tuner .tuner-cents.is-flat,#tuner .tuner-status.is-flat{color:#2563eb}#tuner .tuner-cents.is-in-tune,#tuner .tuner-status.is-in-tune,#tuner .tuner-mic-status.tuner-ok{color:#16a34a}#tuner .tuner-mic-status.tuner-err{color:#dc2626}#tuner .tuner-string-btn.active{background:#9333ea1f}#tuner .tuner-string-btn.near{border-color:#22c55e;background:#22c55e14}.piano-container{background:var(--bg-card);padding:1.25rem 1.25rem 1.5rem;border-radius:12px;border:1px solid var(--border)}.piano-toolbar{display:flex;align-items:center;justify-content:center;gap:.75rem;flex-wrap:wrap;margin-bottom:.35rem}.piano-toolbar-octave{display:inline-flex;align-items:center;gap:.45rem;font-size:.88rem;color:var(--text-muted)}.piano-toolbar-octave select{background:var(--bg);border:1px solid rgba(147,51,234,.45);color:var(--text);padding:.35rem .55rem;border-radius:8px;font-size:.88rem;cursor:pointer}.piano-toolbar-octave select:hover,.piano-toolbar-octave select:focus{border-color:var(--primary);outline:none}.piano-wrapper{overflow-x:auto;overflow-y:visible;padding:1rem 0;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;scrollbar-width:thin}.piano-keyboard{display:flex;position:relative;height:200px;width:max-content;margin:0 auto;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.key{cursor:pointer;border-radius:0 0 6px 6px;transition:all .1s;display:flex;align-items:flex-end;justify-content:center;padding-bottom:8px;font-size:.75rem;font-weight:600;flex:0 0 auto}.key.white{background:var(--white-key);border:1px solid #cbd5e1;color:#475569;height:200px;width:50px;z-index:1;padding:10px 4px}.key.white.mapped-range{background:linear-gradient(to top,#6366f11f,#6366f11f),var(--white-key);border-color:#6366f159;box-shadow:inset 0 -14px #6366f114}@media(hover:hover){.key.white:hover{background:#e2e8f0}}.key.white:active,.key.white.active{background:var(--primary);color:#fff;transform:translateY(2px)}.key.black{background:var(--black-key);color:#fff;height:130px;width:34px;position:absolute;z-index:2;padding:8px 2px;border:1px solid #0f172a}.key.black.mapped-range{background:linear-gradient(to bottom,#475569,#1e293b);border-color:#818cf88c;box-shadow:0 0 0 1px #818cf82e}@media(hover:hover){.key.black:hover{background:#334155}}.key.black:active,.key.black.active{background:var(--secondary);border-color:var(--secondary)}.piano-info{margin-top:1.5rem;text-align:center;color:var(--text-muted)}.current-note{font-size:1.3rem;font-weight:600;color:var(--primary);margin-bottom:.5rem}.piano-recorder{margin-top:.35rem;gap:.5rem}.piano-rec-tempo{width:4rem;background:var(--bg);border:1px solid rgba(147,51,234,.45);color:var(--text);padding:.3rem .4rem;border-radius:8px;font-size:.88rem}.piano-rec-unit{font-size:.78rem;color:var(--text-muted)}.piano-rec-name{background:var(--bg);border:1px solid rgba(147,51,234,.45);color:var(--text);padding:.35rem .6rem;border-radius:8px;font-size:.85rem;min-width:8rem;max-width:12rem}.piano-rec-tempo:focus,.piano-rec-name:focus{border-color:var(--primary);outline:none}.piano-rec-btn{background:var(--bg);border:1px solid rgba(147,51,234,.45);color:var(--text);padding:.4rem .85rem;border-radius:8px;font-size:.85rem;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s,color .15s,transform .1s}.piano-rec-btn:hover:not(:disabled){border-color:var(--primary);transform:translateY(-1px)}.piano-rec-btn:disabled{opacity:.45;cursor:default}.piano-rec-btn.is-recording{background:#dc2626;border-color:#dc2626;color:#fff;animation:pianoRecPulse 1.1s ease-in-out infinite}.piano-rec-btn.is-playing{background:var(--primary);border-color:var(--primary);color:#fff}@keyframes pianoRecPulse{0%,to{box-shadow:0 0 #dc262680}50%{box-shadow:0 0 0 6px #dc262600}}.piano-rec-statusrow{text-align:center;min-height:1.1rem;margin-top:.2rem}.piano-rec-status{font-size:.82rem;color:var(--text-muted)}.piano-sheet-wrapper{overflow-x:auto;padding:.25rem 0 .5rem}.piano-sheet{min-height:150px;display:flex;justify-content:flex-start}.piano-sheet .ps-svg{background:#fffdf8;border:1px solid var(--border);border-radius:10px}.piano-sheet .ps-staff,.piano-sheet .ps-bar,.piano-sheet .ps-ledger{stroke:#3a3a3a;stroke-width:1}.piano-sheet .ps-clef{font-size:52px;fill:#222;font-family:Georgia,Times New Roman,serif}.piano-sheet .ps-acc{font-size:16px;fill:#222;font-family:Georgia,serif}.piano-sheet .ps-empty{font-size:12px;fill:#9aa0a6}.piano-sheet .ps-head{fill:#1c1c1c;stroke:#1c1c1c}.piano-sheet .ps-head.open{fill:#fffdf8;stroke-width:1.6}.piano-sheet .ps-stem,.piano-sheet .ps-flag{stroke:#1c1c1c;stroke-width:1.4;fill:none}.piano-sheet .ps-rest{fill:#9aa0a6}.piano-sheet .ps-col.ps-active .ps-head{fill:var(--primary);stroke:var(--primary)}.piano-sheet .ps-col.ps-active .ps-stem,.piano-sheet .ps-col.ps-active .ps-flag{stroke:var(--primary)}.key.playing{background:var(--secondary)!important;color:#fff}kbd{background:var(--bg);padding:.2rem .5rem;border-radius:4px;border:1px solid var(--border);font-family:monospace;font-size:.875rem}#guitar,#guitarchords,#scales,#sheetmusic{--gtr-ink: #15110d;--gtr-panel: #241b13;--gtr-maple: #c9a876;--gtr-brass: #e8a33d;--gtr-cream: #efe7d8;--gtr-muted: #a48f74;--gtr-line: #3a2c1f;--gtr-neck-top: #3a2718;--gtr-neck-bottom: #2c1d12;--gtr-string: #caa06a;--gtr-wire: #8a7146;--gtr-hover: rgba(232, 163, 61, .22);--gtr-active: rgba(232, 163, 61, .45)}.guitar-container{background:radial-gradient(120% 80% at 50% -10%,#2a2017 0%,var(--gtr-ink) 60%),var(--gtr-ink);color:var(--gtr-cream);padding:1.5rem;border-radius:16px;border:1px solid var(--gtr-line);box-shadow:inset 0 1px #ffffff0a,0 18px 40px -28px #000000b3}.string-selector{margin-bottom:1rem;color:var(--gtr-muted);font-weight:600}.string-selector select{background:var(--gtr-panel);color:var(--gtr-cream);border:1px solid var(--gtr-line);padding:.6rem 1rem;border-radius:10px;font-size:.95rem;box-shadow:inset 0 1px #ffffff0a}.fretboard{overflow-x:auto;background:linear-gradient(180deg,var(--gtr-neck-top),var(--gtr-neck-bottom));border:1px solid #4a3322;box-shadow:inset 0 1px #5a3f28,0 18px 40px -24px #000;padding:1.2rem 1rem;border-radius:14px;position:relative;min-height:200px}.fretboard-table{display:flex;flex-direction:column;gap:6px;min-width:max-content}.string-row{display:flex;align-items:center;gap:0;position:relative;height:34px}.nut{width:24px;min-width:24px;height:100%;background:linear-gradient(180deg,#efe7d8,#b8a073);border-radius:0 3px 3px 0;z-index:3;box-shadow:0 0 4px #0000004d}.string-label{width:34px;min-width:34px;text-align:right;padding-right:8px;font-size:.75rem;font-weight:700;color:var(--gtr-maple)}.fret-header-row{height:22px!important}.fret-cell.fret-header-cell{border-right:none;cursor:default;font-size:.7rem;font-weight:400;color:var(--gtr-muted)}.fret-cell.fret-header-cell:before{display:none}.fret-cell.fret-header-cell:hover{background:transparent}.fret-cell.fret-header-cell.marker{color:var(--gtr-brass);font-weight:700}.nut-spacer{width:24px;min-width:24px}.fret-cell.open-fret{border-right:none;background:#241b134d}.fret-cell{position:relative;width:56px;height:100%;border-right:2px solid #d9c39a;border-left:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;border-radius:0}.fret-cell:hover{background:var(--gtr-hover)}.fret-cell.active{background:var(--gtr-active);box-shadow:inset 0 0 0 1px #f0ab448c,0 0 16px -8px var(--gtr-brass)}.fret-cell.blank{background:#241b1347;cursor:default}.fret-cell:before{content:"";position:absolute;left:0;right:0;top:50%;height:2px;background:var(--gtr-string);opacity:.72;transform:translateY(-50%);pointer-events:none}.fret-marker{position:absolute;background:#5c4126;border-radius:50%;pointer-events:none;opacity:.72}.fret-number{position:absolute;right:8px;top:2px;font-size:.7rem;color:var(--gtr-muted);font-weight:700}.fret-label{font-size:.85rem;font-weight:700;color:#1b1308;background:linear-gradient(180deg,#f6cd84,#e8a33d);min-width:26px;height:26px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 2px 6px -1px #00000080;pointer-events:none;position:relative;z-index:1}.guitar-info{margin-top:1rem;text-align:center;color:var(--gtr-muted)}#guitar .current-note,#guitarchords .current-note{color:var(--gtr-brass)}.scale-fretboard-section{margin:1.4rem 0}.scale-fretboard{margin-top:.8rem;min-height:0}.scale-fret-layout{display:flex;gap:1.2rem;align-items:stretch;flex-wrap:wrap}.scale-fret-main{flex:1 1 480px;min-width:0}.scale-examples-side{flex:1 1 220px;max-width:320px;display:flex;flex-direction:column;gap:.5rem}.scale-examples-side-title{margin:0;font-size:.95rem;font-weight:700;color:var(--text-muted)}.scale-examples-side .scale-examples-list{display:flex;flex-direction:column;gap:.4rem;overflow-y:auto;max-height:240px;padding-right:.2rem}.scale-example-item{font:inherit;text-align:left;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:.45rem .6rem;cursor:pointer;display:flex;flex-direction:column;gap:2px;transition:border-color .15s,background .15s}.scale-example-item:hover{border-color:var(--primary)}.scale-example-item.selected{border-color:var(--primary);background:#9333ea26;box-shadow:0 0 0 1px var(--primary)}.scale-example-item-title{font-weight:600;font-size:.85rem;line-height:1.25}.scale-examples-actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.scale-example-chords{display:inline-flex;align-items:center;gap:.35rem;font-size:.85rem;color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none}.scale-fret-modes{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin:.6rem 0;font-size:.9rem}.scale-fret-modes-label{color:var(--text-muted);font-weight:600}.scale-fret-modes label{display:inline-flex;align-items:center;gap:.35rem;cursor:pointer}.scale-fret-modes input[type=radio]{accent-color:var(--primary);cursor:pointer}.scale-fretboard .fret-cell{width:48px;min-width:48px;height:100%}.scale-fretboard .string-row{height:30px}.scale-fretboard .scale-dot{font-size:.72rem;font-weight:700;min-width:22px;height:22px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;pointer-events:none;position:relative;z-index:1;color:var(--gtr-cream);background:#e8a33d29;box-shadow:inset 0 0 0 1px #e8a33d73}.scale-fretboard .fret-cell.run .scale-dot{color:#1b1308;background:linear-gradient(180deg,#f6cd84,#e8a33d);box-shadow:0 2px 6px -1px #00000080}.scale-fretboard .fret-cell.root .scale-dot{box-shadow:inset 0 0 0 2px #f6cd84,0 0 10px -2px var(--gtr-brass)}.scale-fretboard .fret-cell.run.root .scale-dot{background:linear-gradient(180deg,#ffe3a8,#f0ab44);box-shadow:0 0 0 2px #fff3d6,0 2px 8px -1px #0009}.scale-fretboard .fret-cell.start-pos{background:var(--gtr-active)}.scale-fretboard .fret-cell.playing{background:var(--gtr-hover)}.scale-fretboard .fret-cell.playing .scale-dot{transform:scale(1.25);box-shadow:0 0 16px 2px var(--gtr-brass);transition:transform .12s,box-shadow .12s}.scale-fret-status{margin-top:.6rem;text-align:center;font-size:.85rem;color:var(--gtr-muted)}.scales-controls{display:flex;gap:1.5rem;align-items:flex-end;margin-bottom:2rem;flex-wrap:wrap}.control-group{display:flex;flex-direction:column;gap:.4rem}.control-group label{color:var(--text-muted);font-size:.9rem;font-weight:600}.control-group select{background:var(--bg);color:var(--text);border:1px solid var(--border);padding:.6rem 1rem;border-radius:6px;font-size:1rem;min-width:180px}.play-btn{background:var(--primary);color:#fff;border:none;padding:.45rem .95rem;border-radius:8px;cursor:pointer;font-size:.9rem;font-weight:600;transition:all .2s}.play-btn:hover{background:var(--primary-dark);transform:translateY(-1px)}.scale-display{background:var(--bg-card);padding:1.5rem;border-radius:12px;border:1px solid var(--border)}.piano-keys-mini{display:flex;justify-content:center;gap:2px;margin-bottom:1.5rem;min-height:100px}.scale-notes{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center;margin-bottom:1.5rem}.scale-note-chip{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;padding:.5rem 1.2rem;border-radius:8px;font-weight:600;font-size:1.1rem}.scale-note-chip.tonic{background:linear-gradient(135deg,var(--secondary),#be185d)}#chords .chord-tone-chip{color:#1b1308;box-shadow:0 6px 18px -12px #00000073;transition:transform .15s,box-shadow .15s,filter .15s}#pianoKeyboard .key.white.chord-hint{position:relative}#pianoKeyboard .key.chord-hint:after{content:"";position:absolute;left:3px;right:3px;bottom:4px;height:10px;border-radius:4px;background:var(--chord-degree, #e8a33d);box-shadow:0 0 6px -1px var(--chord-degree, #e8a33d);pointer-events:none}#pianoKeyboard .key.chord-hint.degree-root{--chord-degree: #e8a33d}#pianoKeyboard .key.chord-hint.degree-third{--chord-degree: #5cc0b0}#pianoKeyboard .key.chord-hint.degree-fifth{--chord-degree: #e58062}#pianoKeyboard .key.chord-hint.degree-ext{--chord-degree: #cfb692}#chords .chord-tone-chip.degree-root{background:linear-gradient(135deg,#f6cd84,#e8a33d)}#chords .chord-tone-chip.degree-third{background:linear-gradient(135deg,#9fe0d4,#5cc0b0)}#chords .chord-tone-chip.degree-fifth{background:linear-gradient(135deg,#f3b29a,#e58062)}#chords .chord-tone-chip.degree-ext{background:linear-gradient(135deg,#eadcc6,#cfb692)}#chords .chord-tone-chip.active{transform:scale(1.1);box-shadow:0 0 0 2px #fff8eb8c,0 0 20px -6px #e8a33dd9;filter:brightness(1.06)}.intervals{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center}.interval-badge{background:var(--bg);padding:.4rem .8rem;border-radius:6px;font-size:.85rem;border:1px solid var(--border)}.interval-badge.whole{border-left:3px solid var(--success)}.interval-badge.half{border-left:3px solid var(--danger)}.training-controls{margin-bottom:.7rem}.training-panel[hidden]{display:none!important}.training-inline-controls{display:contents}.training-inline-controls[hidden]{display:none}.sheetmusic-controls{display:flex;gap:.7rem;align-items:flex-end;justify-content:center;margin-bottom:.85rem;flex-wrap:wrap}.staff-container{background:#fff;border-radius:12px;padding:1rem;box-shadow:0 4px 20px #0000004d;max-width:800px;margin:0 auto}.quiz-answer{text-align:center;margin-top:.9rem;font-size:1.15rem;font-weight:700;color:var(--text-muted);min-height:1.55rem}.quiz-answer.correct{color:var(--success)}.quiz-answer.wrong{color:var(--danger)}.quiz-answer.revealed{color:var(--warning)}.quiz-score{text-align:center;margin-top:1rem;font-size:1.1rem}.sheet-letter-pad{display:flex;justify-content:center;gap:.38rem;flex-wrap:wrap;margin-top:.75rem;padding-top:.25rem}.sheet-letter-btn{min-width:2.45rem;height:2.45rem;padding:0 .55rem;font-size:1.05rem;font-weight:800;border-radius:10px;border:2px solid #cbd5e1;background:#f8fafc;color:#1e293b;cursor:pointer;transition:transform .12s,border-color .15s,background .15s,box-shadow .15s;font-family:Georgia,Times New Roman,serif}.sheet-letter-btn:hover:not(:disabled){border-color:var(--primary);background:#f3e8ff;transform:translateY(-2px);box-shadow:0 4px 14px #9333ea40}.sheet-letter-btn:active:not(:disabled){transform:translateY(0)}.sheet-letter-btn:disabled{opacity:.55;cursor:default}.sheet-letter-btn.highlight{border-color:var(--warning);background:#fef3c7;box-shadow:0 0 0 3px #f59e0b59}.sheet-letter-btn.correct{border-color:var(--success);background:#d1fae5;color:#065f46}.sheet-letter-btn.wrong{border-color:var(--danger);background:#fee2e2;color:#991b1b}.reset-btn{background:var(--danger);color:#fff;border:none;padding:.4rem 1rem;border-radius:6px;cursor:pointer;margin-left:.5rem}#sheetmusic .play-btn,#sheetmusic .reset-btn{padding:.5rem .8rem;min-height:2.45rem}.training-instrument[hidden]{display:none!important}.training-instrument{margin-top:.75rem}.training-guitar{overflow-x:auto;padding:.3rem .1rem}.training-piano{display:flex;justify-content:center;min-height:7rem;padding:.25rem 0 .5rem}.training-piano-key{border:1px solid #cbd5e1;font-weight:800;cursor:default}.training-piano-key.white{width:3rem;height:6.5rem;background:linear-gradient(180deg,#fff,#e2e8f0);color:#334155;border-radius:0 0 8px 8px}.training-piano-key.black{width:2rem;height:4rem;margin:0 -1rem;z-index:2;background:linear-gradient(180deg,#1f2937,#020617);color:#fff;border-color:#0f172a;border-radius:0 0 6px 6px}.training-piano-key.active{background:#fef3c7;border-color:var(--warning);color:#1e293b;box-shadow:inset 0 0 0 3px #f59e0b73}.app-layout{display:flex;align-items:stretch;gap:0}.app-main{flex:1;min-width:0}body:not([data-active-tab=composer]) .settings-composer-only{display:none}.composer-page{display:flex;align-items:stretch;gap:0;min-height:420px}.composer-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:.65rem}.composer-main-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem 1rem}.composer-main-head h2{margin:0}.composer-transport{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.comp-transport-btn{min-width:2.7rem;padding:.45rem .6rem;font-size:1.05rem;line-height:1}.comp-transport-btn.active{box-shadow:inset 0 0 0 2px #9333eae6}.composer-mouse-tools{align-items:flex-end;margin:0 0 .6rem;padding:.8rem .95rem .35rem;border:1px solid var(--warm-line);border-radius:12px;background:#241b1375}.composer-mouse-tools .control-group{min-width:8.5rem}.composer-settings{position:relative;flex-shrink:0;width:var(--composer-settings-width, 300px);max-width:min(360px,32vw);border-left:1px solid var(--border);background:var(--bg-card);display:flex;transition:width .22s ease}.composer-settings.resizing{transition:none}.composer-settings.composer-settings-inline{position:static;display:block;width:100%;max-width:none;border-left:none;border-top:1px solid var(--border);margin-top:1.5rem;padding-top:1rem;transition:none}.composer-settings-inline .composer-settings-tab-stack{position:static;transform:none;flex-direction:row;flex-wrap:wrap;gap:.4rem;margin-bottom:.9rem}.composer-settings-inline .composer-settings-tab{flex-direction:row;width:auto;gap:.4rem;padding:.45rem .8rem;border:1px solid var(--border);border-radius:999px}.composer-settings-inline .composer-settings-tab-label{writing-mode:horizontal-tb;text-orientation:initial;transform:none}.composer-settings-inline .composer-settings-inner{overflow:visible}.composer-settings.collapsed{width:0;border-left:none;overflow:visible}.composer-settings-resizer{position:absolute;left:0;top:0;bottom:0;width:8px;transform:translate(-50%);cursor:col-resize;z-index:4;touch-action:none}.composer-settings-resizer:after{content:"";position:absolute;left:50%;top:0;bottom:0;width:2px;transform:translate(-50%);background:transparent;transition:background .15s}.composer-settings-resizer:hover:after,.composer-settings.resizing .composer-settings-resizer:after{background:var(--primary)}.composer-settings.collapsed .composer-settings-resizer{display:none}body.composer-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}body.composer-resizing *{cursor:col-resize!important}.composer-settings-tab{position:relative;left:auto;top:auto;transform:none;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;width:40px;padding:.55rem .3rem;border:1px solid var(--border);border-right:none;border-radius:10px 0 0 10px;background:var(--bg-card);color:var(--text);cursor:pointer;font-size:.68rem;line-height:1.15;transition:background .15s,border-color .15s}.composer-settings-tab-stack{position:absolute;left:0;top:50%;transform:translate(-100%,-50%);z-index:2;display:flex;flex-direction:column;gap:.3rem}.composer-settings-tab.is-active{background:#9333ea29;border-color:var(--primary);color:var(--primary)}.settings-view[hidden]{display:none!important}.composer-settings-tab:hover{background:#9333ea1f;border-color:var(--primary)}.composer-settings-tab-icon{font-size:1.1rem}.composer-settings-tab-label{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);font-weight:600;letter-spacing:.02em}.composer-settings-inner{flex:1;min-width:0;overflow-y:auto;overflow-x:hidden;padding:.75rem .85rem 1rem;max-height:calc(100vh - 140px)}.composer-settings.collapsed .composer-settings-inner{visibility:hidden;pointer-events:none}.composer-settings-title{font-size:.95rem;margin:0 0 .65rem;color:var(--text-muted)}.composer-settings-subtitle{margin:0;color:var(--text);font-size:.82rem;font-weight:700}.composer-settings-group{border:1px solid var(--border);border-radius:8px;margin-bottom:.55rem;background:#9333ea0a}.composer-settings-group summary{cursor:pointer;padding:.5rem .65rem;font-size:.82rem;font-weight:600;color:var(--text-muted);list-style:none;-webkit-user-select:none;user-select:none}.composer-settings-group summary::-webkit-details-marker{display:none}.composer-settings-group summary:before{content:"▸ ";color:var(--primary)}.composer-settings-group[open] summary:before{content:"▾ "}.composer-settings-controls{display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:.45rem .55rem;padding:0 .65rem .65rem;margin-bottom:0}.composer-settings-controls .control-group{flex-direction:column;align-items:stretch;gap:.2rem;min-width:0}.composer-settings-controls .control-group label{font-size:.72rem;line-height:1.2}.composer-settings-controls .control-group select,.composer-settings-controls .control-group .comp-toggle{width:100%;box-sizing:border-box}.composer-settings-controls .control-group-wide{grid-column:1 / -1}.composer-settings-controls .control-group-wide .bpm-slider{width:100%}.composer-key-octave-hint{grid-column:1 / -1;font-size:.72rem;margin:0;padding:0 .1rem}.composer-settings-controls .comp-detected{font-size:.75rem;line-height:1.35}.composer-settings-block{padding:0 .65rem .65rem;display:flex;flex-direction:column;gap:.55rem}.composer-settings-btns{display:flex;flex-direction:column;gap:.4rem}.composer-settings-btns .play-btn{width:100%;justify-content:center}.composer-settings .composer-mixer{margin:0;padding:0 .65rem .65rem;border:none;background:transparent}.composer-settings .composer-fx-grid,.composer-settings .track-eq-grid{grid-template-columns:1fr}.composer-actions{display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center;margin-bottom:1rem}.composer-staff-wrap{flex:1;max-width:100%;overflow-x:auto;overflow-y:scroll;scrollbar-gutter:stable;min-height:200px;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y}.composer-score-shell{position:relative;display:flex;flex-direction:column;width:100%;align-self:stretch;gap:.35rem;min-height:0}.composer-score-head{display:flex;align-items:center;justify-content:flex-end;gap:.75rem;padding:.4rem .55rem;border:1px solid var(--warm-line);border-radius:10px;background:#241b13b8}.composer-note-popover{position:absolute;z-index:30;width:260px;max-width:calc(100% - 16px);display:flex;flex-direction:column;gap:.5rem;padding:.6rem .7rem;background:var(--bg-card);border:1px solid rgba(147,51,234,.55);border-radius:12px;box-shadow:0 10px 30px #00000073}.composer-note-popover[hidden]{display:none}.composer-note-popover-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.85rem}.composer-note-popover-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem}.composer-note-popover-grid label{display:flex;flex-direction:column;gap:.15rem;font-size:.72rem;color:var(--text-muted)}.composer-note-popover-grid .comp-pop-wide{grid-column:1 / -1}.composer-note-popover-grid select,.composer-note-popover-grid input{min-width:0;padding:.3rem .45rem;border-radius:8px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:.82rem}.composer-note-popover-actions{display:flex;flex-wrap:wrap;gap:.4rem}.composer-note-popover-actions .play-btn,.composer-note-popover-actions .reset-btn{padding:.35rem .55rem;font-size:.78rem}.composer-note-popover-actions .play-btn.active{box-shadow:inset 0 0 0 2px #9333eae6}.composer-score-head strong,.composer-score-head[hidden]{display:none}.composer-score-head-actions{display:flex;align-items:center;gap:.35rem;flex:0 0 auto}.composer-score-head-actions>span{min-width:3.2rem;color:var(--warm-cream);font-variant-numeric:tabular-nums;text-align:center}.composer-embedded-score{display:block;min-width:min-content;padding:.25rem 0;background:#f8f5ee;color:#1e293b}.composer-embedded-score[hidden]{display:none}.composer-embedded-score svg{display:block;background:#f8f5ee;max-width:none}.composer-staff-main{width:100%;box-sizing:border-box;min-height:min(64vh,560px);max-height:min(86vh,1040px);border:1px solid var(--warm-line);border-radius:12px;background:#140e0a59;padding:6px}.composer-staff-wrap canvas[hidden]{display:none}.composer-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .9rem;padding:.45rem .6rem;border:1px solid var(--warm-line);border-radius:12px;background:#241b1375}.composer-toolbar-group{display:flex;flex:0 0 auto;flex-wrap:wrap;align-items:center;gap:.35rem .45rem}.composer-toolbar-group+.composer-toolbar-group{padding-left:.9rem;border-left:1px solid var(--warm-line)}.composer-tool{display:inline-flex;align-items:center;gap:.3rem}.composer-tool-ico{font-size:1.05rem;line-height:1;color:var(--text-secondary, #c9a876);opacity:.85}.composer-tool select{min-width:unset;padding:.3rem .45rem;font-size:.85rem;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:8px}.composer-tool-tempo{gap:.2rem;padding:0 .15rem}.composer-tool-tempo strong{min-width:2.2ch;text-align:center;font-variant-numeric:tabular-nums}.icon-btn{display:inline-flex;align-items:center;justify-content:center;min-width:2.1rem;height:2.1rem;padding:0 .4rem;font-size:1rem;line-height:1;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:background .15s,border-color .15s}.icon-btn:hover{background:#9333ea26;border-color:var(--primary)}.icon-btn:active{transform:translateY(1px)}.comp-quick-toggle.active{background:#9333ea4d;border-color:var(--primary)}.composer-zoom{gap:.2rem .3rem}.composer-zoom-label{font-size:.78rem;color:var(--text-secondary, #c9a876);font-variant-numeric:tabular-nums;margin-left:.2rem}.composer-fit-btn{min-width:2.8rem;font-size:.76rem;font-weight:700}.composer-library-btn{min-width:auto;padding:0 .65rem;font-size:.78rem;font-weight:700}.composer-status{min-height:1.2em;margin:-.25rem 0 0;color:var(--text-secondary, #c9a876);font-size:.82rem}.composer-status.is-error{color:#fca5a5}.composer-library-row{display:flex;align-items:center;gap:.45rem}.composer-library-row>select,.composer-library-row>.comp-name-input{flex:1 1 auto;min-width:0;width:auto}.composer-library-row>.play-btn,.composer-library-row>.reset-btn,.composer-library-row>.comp-import-label{flex:0 0 auto;white-space:nowrap}.composer-library-row-wrap{flex-wrap:wrap}.composer-library-row-wrap>.play-btn,.composer-library-row-wrap>.comp-import-label{flex:1 1 auto;justify-content:center}.composer-print-preview{display:flex;flex-direction:column;min-height:min(68vh,760px);max-height:min(76vh,920px);border:1px solid var(--warm-line);border-radius:12px;overflow:hidden;background:#f8f5ee;color:#1e293b}.composer-print-preview[hidden]{display:none}.composer-print-preview-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.45rem .65rem;background:#241b13f5;color:var(--warm-cream)}.composer-print-preview-head strong,.composer-print-preview-head span{display:block}.composer-print-preview-head span{color:var(--warm-muted);font-size:.75rem}.composer-print-preview-actions{display:flex;align-items:center;gap:.35rem;flex:0 0 auto}.composer-print-preview-actions>span{min-width:3.2rem;color:var(--warm-cream);font-variant-numeric:tabular-nums;text-align:center}.composer-print-score{flex:1;overflow:auto;padding:.75rem;background:#f8f5ee}.composer-print-score svg{display:block;margin:0 auto;max-width:none}.comp-name-input,.composer-settings-block select{background:var(--bg);color:var(--text);border:1px solid var(--border);padding:.55rem .9rem;border-radius:6px;font-size:.95rem}.comp-import-label{display:inline-flex;align-items:center;cursor:pointer}.composer-compact.sheetmusic-controls{gap:.7rem 1rem;margin-bottom:1rem}.composer-compact .control-group label{font-size:.78rem}.composer-compact select{min-width:unset;padding:.35rem .5rem;font-size:.88rem}.composer-compact .bpm-slider{width:130px}.comp-toggle{padding:.35rem .9rem;font-size:.85rem;border-radius:6px;border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer}.comp-detected{font-size:.82rem;color:var(--secondary);font-weight:600;white-space:nowrap}.comp-hint kbd{font-size:.75rem;padding:.1rem .35rem}.tracks-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:.6rem .8rem;margin-bottom:0}.tracks-header{display:flex;justify-content:space-between;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:.5rem;color:var(--text-muted);font-size:.82rem}.tracks-header-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.comp-inline-label{display:flex;align-items:center;gap:.35rem;font-size:.82rem;color:var(--text-muted)}.comp-inline-label select{background:var(--bg);color:var(--text);border:1px solid var(--border);padding:.3rem .45rem;border-radius:6px;font-size:.82rem;max-width:160px}#compTracks{display:flex;flex-wrap:wrap;gap:.5rem}.tracks-autofill{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-top:.6rem;padding-top:.6rem;border-top:1px solid var(--border)}.tracks-autofill-label{color:var(--text-muted);font-size:.82rem}.track-row{display:flex;align-items:center;gap:.45rem;padding:.3rem .5rem;border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:all .15s}.track-row:hover{border-color:var(--primary)}.track-row.active{border-color:var(--primary);background:#9333ea24}.track-vol-wrap{display:flex;align-items:center;gap:.25rem;min-width:88px}.track-vol{width:56px;height:4px;accent-color:var(--primary)}.track-vol-label{font-size:.72rem;color:var(--text-muted);min-width:22px;text-align:right}.mixer-page-hint{margin:-.25rem 0 1rem}.mixer-console{max-width:1080px;display:flex;flex-direction:column;gap:1rem}.mixer-ambience{display:flex;align-items:center;gap:.85rem;flex-wrap:wrap;padding:.75rem 1rem;border:1px solid var(--border);border-radius:12px;background:linear-gradient(180deg,#9333ea1f,#9333ea08)}.mixer-section-label{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.mixer-preset-row{display:flex;gap:.5rem;flex-wrap:wrap}.mixer-preset-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .85rem;border-radius:999px;border:1px solid var(--border);background:var(--bg-card);color:var(--text);font-size:.85rem;cursor:pointer;transition:all .15s}.mixer-preset-chip:hover{border-color:var(--accent);background:var(--bg-light)}.mixer-preset-chip.is-active{border-color:var(--primary);background:#9333ea4d;box-shadow:0 0 0 1px var(--primary) inset}.mixer-strips{display:flex;gap:1rem;flex-wrap:wrap;align-items:stretch}.mixer-group{border:1px solid var(--border);border-radius:12px;background:linear-gradient(180deg,var(--bg-card),rgba(12,6,24,.55));padding:.55rem 1.1rem .9rem;display:flex;gap:1.15rem;margin:0}.mixer-group>legend{padding:0 .45rem;font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.mixer-strip{display:flex;flex-direction:column;align-items:center;gap:.55rem;min-width:3.4rem}.mixer-strip-value{font-variant-numeric:tabular-nums;font-size:.85rem;color:var(--accent);background:#0006;border:1px solid var(--border);border-radius:6px;padding:.1rem .4rem;min-width:2.7rem;text-align:center}.mixer-fader{writing-mode:vertical-lr;direction:rtl;width:1.4rem;height:170px;accent-color:var(--primary);cursor:pointer}.mixer-strip-label{font-size:.8rem;color:var(--text-muted);text-align:center}.mixer-master-controls{display:flex;flex-direction:column;gap:.6rem;justify-content:center;min-width:150px}.mixer-master-field{display:flex;flex-direction:column;gap:.25rem;font-size:.8rem;color:var(--text-muted)}.mixer-master-field select{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:.4rem .5rem}@media(max-width:640px){.mixer-fader{height:130px}.mixer-group{flex-wrap:wrap;justify-content:center;width:100%}.mixer-master-controls{width:100%;min-width:0}}.composer-mixer{margin:1rem 0;padding:.85rem 1rem;border:1px solid var(--border);border-radius:10px;background:#9333ea0f}.composer-panel-title{font-size:.95rem;margin-bottom:.35rem}.composer-mixer-hint{font-size:.82rem;margin-bottom:.75rem}.composer-fx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.65rem 1rem}.fx-slider{display:flex;flex-direction:column;gap:.25rem;font-size:.82rem;color:var(--text-muted)}.fx-slider strong{color:var(--accent);font-size:.8rem}.fx-slider .bpm-slider{width:100%}.track-eq-panel{margin-top:1rem;padding-top:.85rem;border-top:1px solid var(--border)}.track-eq-title{font-size:.88rem;margin-bottom:.55rem;color:var(--text-muted)}.track-eq-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.65rem}@media(max-width:520px){.track-eq-grid{grid-template-columns:1fr}}.track-name{font-weight:700;font-size:.85rem}.track-row select{background:var(--bg);color:var(--text);border:1px solid var(--border);padding:.25rem .4rem;border-radius:6px;font-size:.82rem}.track-count{color:var(--text-muted);font-size:.8rem;min-width:18px;text-align:center}.track-del{background:transparent;border:none;cursor:pointer;font-size:.85rem;color:var(--text-muted);padding:.1rem .35rem;border-radius:4px;line-height:1}.track-del:hover{color:#f87171;background:#f871711f}.comp-remove-track:disabled{opacity:.45;cursor:not-allowed}@media(max-width:860px){.composer-page{flex-direction:column}.composer-settings{width:100%;border-left:none;border-top:1px solid var(--border)}.composer-settings-resizer{display:none}.composer-settings.collapsed{width:100%}.composer-settings-tab{position:static;transform:none;flex-direction:row;width:100%;padding:.55rem .85rem;border:none;border-bottom:1px solid var(--border);border-radius:0}.composer-settings-tab-label{writing-mode:horizontal-tb;transform:none}.composer-settings-inner{max-height:50vh}}.ear-training-intro{max-width:600px;margin:0 auto 1rem;text-align:center}.ear-training-intro h3{margin:0;color:var(--warm-cream)}.ear-training-intro p{margin:.35rem 0 0;color:#d9c8a6}.ear-training-controls{display:flex;gap:1.5rem;align-items:flex-end;margin-bottom:2rem;flex-wrap:wrap}.ear-answer-buttons{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center;margin-top:1.5rem;max-width:600px;margin-left:auto;margin-right:auto}.ear-btn{background:var(--bg-card);border:2px solid var(--border);color:var(--text);padding:.5rem 1rem;border-radius:8px;cursor:pointer;font-size:.9rem;transition:all .2s;min-width:84px}.ear-btn:hover{border-color:var(--primary);background:var(--bg-light)}.ear-btn.correct{background:var(--success);border-color:var(--success);color:#fff}.ear-btn.wrong{background:var(--danger);border-color:var(--danger);color:#fff}.ear-feedback{text-align:center;margin-top:1.5rem;font-size:1.2rem;font-weight:600;min-height:2rem}.ear-score{margin-top:.75rem;text-align:center;color:#d9c8a6}.ear-streak{margin-left:.7rem;font-weight:600;color:var(--warm-cream)}.voice-training-container{max-width:860px;margin:0 auto;padding:1.4rem 1.5rem 1.7rem}.voice-training-controls{display:flex;gap:.9rem;align-items:flex-end;justify-content:center;flex-wrap:wrap;margin:1.25rem 0 1.5rem}.voice-action-btns{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:center}.voice-icon-btn{background:var(--primary);color:#fff;border:none;border-radius:10px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:.2rem;padding:.45rem .55rem .35rem;min-width:3.6rem;font-weight:600;transition:all .2s}.voice-icon-btn:hover{background:var(--primary-dark);transform:translateY(-1px)}.voice-btn-icon{font-size:1.3rem;line-height:1}.voice-btn-label{font-size:.68rem;letter-spacing:.02em;white-space:nowrap}.voice-sweep-btn.active{background:var(--primary-dark);box-shadow:0 0 0 2px #9333ea59}.voice-mic-btn.active{background:#dc2626;box-shadow:0 0 0 2px #dc262659}.voice-mic-btn.active:hover{background:#b91c1c}.voice-training-display{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-bottom:1.4rem}.voice-card{background:#241b13b3;border:1px solid var(--warm-line);border-radius:14px;padding:1rem;text-align:center}.voice-card-label{display:block;margin-bottom:.4rem;font-size:.76rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.voice-card strong{display:block;color:var(--warm-brass);font-size:clamp(2rem,8vw,3.7rem);line-height:1;margin-bottom:.3rem}.voice-card span:last-child{display:block}.voice-gauge-wrap{text-align:center}.voice-gauge{margin:0 auto}.voice-select-hint{text-align:center;font-size:.85rem;opacity:.8;margin:.25rem 0 .5rem}.voice-piano-wrapper{padding:.5rem 0 1rem}.voice-piano-keyboard{height:120px}.voice-piano-keyboard .key.white{height:120px;width:34px;font-size:.6rem}.voice-piano-keyboard .key.black{height:76px;width:22px}.voice-piano-keyboard .key.white.selected{background:var(--warm-brass, #d6a75a);color:#241b13;box-shadow:inset 0 -18px #d6a75a66}.voice-piano-keyboard .key.black.selected{background:linear-gradient(to bottom,var(--warm-brass, #d6a75a),#8a6a2c);color:#241b13}.scale-title{text-align:center;font-size:1.4rem;font-weight:700;color:var(--text);margin-bottom:.25rem}.scale-description{text-align:center;color:var(--text-muted);margin-bottom:1.5rem;font-size:.95rem}.scale-degrees{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;margin-bottom:1.5rem}.degree-badge{background:var(--bg);border:1px solid var(--border);color:var(--text-muted);padding:.35rem .75rem;border-radius:6px;font-weight:600;font-size:.9rem;min-width:42px;text-align:center}.interval-badge.aug{border-left:3px solid var(--warning)}.step-pattern-label{text-align:center;color:var(--text-muted);font-size:.85rem;margin-bottom:.25rem}.step-pattern{text-align:center;font-family:monospace;font-size:1.4rem;font-weight:700;letter-spacing:.1em;color:var(--text);margin-bottom:1rem}.step-ruler-wrap{overflow-x:auto;padding:.5rem 0 1.5rem;display:flex;align-items:center;gap:.75rem}.step-ruler-wrap .play-btn{flex-shrink:0}.step-ruler{display:flex;align-items:center;justify-content:center;min-width:max-content;margin:0 auto}.ruler-note{display:flex;flex-direction:column;align-items:center;cursor:pointer;flex:0 0 auto}.ruler-dot{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.95rem;border:3px solid transparent;transition:all .15s}.ruler-note.tonic .ruler-dot{background:linear-gradient(135deg,var(--secondary),#be185d);border-color:#fff}.ruler-dot.lit{transform:scale(1.18);box-shadow:0 0 18px var(--primary)}.ruler-degree{margin-top:.3rem;font-size:.75rem;font-weight:700;color:var(--text-muted)}.ruler-step{position:relative;flex:0 0 auto;height:6px;border-radius:3px;margin:0 -2px;display:flex;align-items:center;justify-content:center}.ruler-step.full{width:76px;background:var(--success)}.ruler-step.half{width:40px;background:var(--danger)}.ruler-step.aug{width:90px;background:var(--warning)}.ruler-step-label{position:absolute;top:-22px;font-weight:700;font-size:.9rem;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:0 .4rem}.sub-heading{text-align:center;color:var(--text-muted);font-size:1rem;margin:1.5rem 0 1rem;text-transform:uppercase;letter-spacing:.05em}.harmonized-chords{margin-top:.5rem}.scale-examples{margin-top:1.75rem;padding-top:1.25rem;border-top:1px solid var(--border)}.scale-examples-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.6rem;margin-top:.75rem}.scale-example-card{display:flex;flex-direction:column;gap:.55rem;padding:.7rem .85rem;background:#241b1380;border:1px solid var(--warm-line, #3a2c1f);border-radius:12px;transition:border-color .15s}.scale-example-card:hover{border-color:var(--warm-brass, #e8a33d)}.scale-example-info{display:flex;flex-direction:column;gap:.15rem;min-width:0}.scale-example-info strong{font-size:.88rem;line-height:1.35;color:var(--warm-cream, #efe7d8)}.scale-example-meta{font-size:.75rem;color:var(--warm-muted, #a48f74)}.scale-example-btns{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:auto}#scales .scale-example-btns .play-btn{padding:.3rem .7rem;font-size:.78rem}#scales .scale-example-load{background:transparent;border:1px solid rgba(192,132,252,.45);color:var(--text)}#scales .scale-example-load:hover{background:#9333ea24;border-color:var(--primary)}.scale-examples-empty{margin-top:.5rem;font-style:italic}.chord-grid{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center}.chord-card{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:.75rem 1rem;display:flex;flex-direction:column;align-items:center;gap:.25rem;cursor:pointer;transition:all .15s;min-width:70px}.chord-card:hover{border-color:var(--primary);transform:translateY(-2px)}.chord-card.active{background:var(--primary);border-color:var(--primary)}.chord-roman{font-size:1.1rem;font-weight:700;color:var(--secondary)}.chord-card.active .chord-roman{color:#fff}.chord-name{font-size:.85rem;color:var(--text-muted)}.chord-card.active .chord-name{color:#fff}.gc-card,.gc-detail,.gc-neck-wrap,.gc-top-panel,#guitarchords .scales-controls{color:var(--gtr-cream)}.gc-top-panel{background:radial-gradient(120% 80% at 50% -10%,#2a2017 0%,var(--gtr-ink) 60%),var(--gtr-ink);border:1px solid var(--gtr-line);border-radius:16px;padding:.7rem 1rem;margin-bottom:.9rem;box-shadow:inset 0 1px #ffffff0a,0 18px 40px -28px #000000b3}#guitarchords .gc-top-panel .scales-controls{background:transparent;border:none;border-radius:0;padding:0;margin-bottom:0;box-shadow:none}#guitarchords .scales-controls{background:radial-gradient(120% 80% at 50% -10%,#2a2017 0%,var(--gtr-ink) 60%),var(--gtr-ink);border:1px solid var(--gtr-line);border-radius:16px;padding:1.25rem 1.1rem;box-shadow:inset 0 1px #ffffff0a,0 18px 40px -28px #000000b3}#guitarchords .control-group label,#guitarchords .gc-orientation-note,#guitarchords .gc-barre-note,#guitarchords .gc-neck-controls label{color:var(--gtr-muted)}.gc-grid{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center;margin-bottom:2rem}.gc-card{background:linear-gradient(180deg,#2a2016,#211912);border:1px solid var(--gtr-line);border-radius:14px;padding:.75rem;cursor:pointer;transition:transform .15s,border-color .15s,box-shadow .15s;display:flex;flex-direction:column;align-items:center;gap:.25rem;box-shadow:inset 0 1px #ffffff08}.gc-card:hover{border-color:var(--gtr-brass);box-shadow:0 10px 26px -18px var(--gtr-brass);transform:translateY(-3px)}.gc-card.selected{border-color:var(--gtr-brass);box-shadow:0 0 0 2px #e8a33d59,inset 0 1px #ffffff0d}.gc-letter-card{min-width:4.4rem;padding:.55rem .7rem}.gc-letter{font-size:1.5rem;font-weight:700;color:var(--gtr-cream);line-height:1.1}.gc-letter-quals{display:flex;gap:.3rem;justify-content:center}.gc-qual-chip{font-size:.68rem;padding:.14rem .5rem;border-radius:999px;border:1px solid var(--gtr-line);background:transparent;color:var(--gtr-muted);cursor:pointer;white-space:nowrap;transition:border-color .15s,color .15s,background .15s}.gc-qual-chip:hover{border-color:var(--gtr-brass);color:var(--gtr-cream)}.gc-qual-chip.active{background:var(--gtr-brass);border-color:var(--gtr-brass);color:#1b1308;font-weight:700}.gc-letter-card.expanded{flex-basis:100%}.gc-expand{display:flex;gap:1.2rem;justify-content:center;flex-wrap:wrap;margin-top:.5rem}.gc-expand-chord{display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:.4rem .6rem;border:1px solid transparent;border-radius:12px;cursor:pointer;transition:border-color .15s}.gc-expand-chord:hover{border-color:var(--gtr-brass)}.gc-name{font-weight:700;font-size:1.1rem;color:var(--gtr-cream)}.gc-diagram{display:block}.gc-prog-key{text-align:center;color:var(--gtr-brass);font-weight:600;margin-top:-.35rem}.gc-prog-list{display:flex;flex-direction:column;gap:.35rem;max-width:860px;margin:0 auto 1rem}#gcProgList{flex-direction:row;flex-wrap:wrap;justify-content:center}#gcProgList .gc-prog-row{flex:0 1 auto}.gc-prog-row{display:flex;align-items:center;gap:.35rem .5rem;flex-wrap:wrap;background:#0000002e;border:1px solid var(--gtr-line);border-radius:12px;padding:.25rem .55rem}.gc-prog-name{font-weight:700;font-size:.85rem;color:var(--gtr-cream);letter-spacing:.04em}.gc-songprog-songs{font-size:.75rem;color:var(--text-muted);line-height:1.3;margin:.1rem 0 0 2.2rem}.gc-songprog-select{max-width:15rem;font-size:.85rem;padding:.25rem .4rem}.gc-songprog-pattern{font-size:.7rem}.gc-strum-pattern{display:inline-flex;align-items:center;gap:.45rem;font-size:.85rem;color:var(--text-muted);white-space:nowrap}.gc-degree-legend{display:flex;justify-content:center;gap:.9rem;font-size:.75rem;color:var(--text-muted);margin-bottom:.35rem}.gc-degree-legend span{display:inline-flex;align-items:center;gap:.3rem}.gc-deg-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.pn-prog-controls{display:flex;align-items:center;justify-content:center;gap:.75rem;flex-wrap:wrap;margin-bottom:.6rem}.gc-neck-string{transition:stroke .05s}.gc-neck-string.struck-down{stroke:#f59e0b!important;filter:drop-shadow(0 0 5px rgba(245,158,11,.95))}.gc-neck-string.struck-up{stroke:#38bdf8!important;filter:drop-shadow(0 0 5px rgba(56,189,248,.95))}.gc-neck-string.struck-pick{stroke:#a78bfa!important;filter:drop-shadow(0 0 5px rgba(167,139,250,.95))}.gc-neck-string.struck-mute{stroke:#94a3b8!important;filter:drop-shadow(0 0 3px rgba(148,163,184,.7))}.gc-songprog-pattern{font-size:.75rem;color:var(--text-muted);border:1px dashed var(--gtr-line);border-radius:999px;padding:.15rem .55rem;white-space:nowrap;align-self:center}.gc-prog-play{background:var(--bg-card);border:1px solid var(--gtr-line);color:var(--gtr-cream);width:1.6rem;height:1.6rem;padding:0;border-radius:50%;cursor:pointer;font-size:.7rem;line-height:1;flex-shrink:0;transition:background .15s,border-color .15s,color .15s}.gc-prog-play:hover{border-color:var(--gtr-brass)}.gc-prog-play.playing{background:var(--gtr-brass);border-color:var(--gtr-brass);color:#1b1308}.gc-prog-chips{display:flex;flex-wrap:wrap;gap:.35rem;flex:1;justify-content:flex-end}.gc-prog-chip{display:inline-flex;align-items:baseline;gap:.28rem;padding:.16rem .48rem;background:linear-gradient(180deg,#2a2016,#211912);border:1px solid var(--gtr-line);border-radius:999px;cursor:pointer;transition:border-color .15s,box-shadow .15s}.gc-prog-chip:hover{border-color:var(--gtr-brass)}.gc-prog-chip.active{border-color:var(--gtr-brass);box-shadow:0 0 0 2px #e8a33d59}.gc-prog-chip-name{font-weight:700;font-size:.85rem;color:var(--gtr-cream)}.gc-prog-rn{font-size:.65rem;color:var(--gtr-brass);letter-spacing:.08em;font-weight:600}@media(max-width:640px){.gc-prog-chips{justify-content:flex-start;padding-left:2.5rem;flex-basis:100%}.gc-prog-row{padding:.35rem .55rem}}.pn-prog-dock{position:fixed;left:50%;transform:translate(-50%);bottom:0;width:min(680px,100%);z-index:60;background:var(--bg-card);border:1px solid var(--border);border-bottom:none;border-radius:14px 14px 0 0;padding:.4rem .6rem calc(.45rem + env(safe-area-inset-bottom,0px));box-shadow:0 -10px 30px #00000073}.pn-prog-dock[hidden]{display:none}#piano.pn-dock-open{padding-bottom:150px}.pn-prog-dock-head{display:flex;align-items:center;gap:.5rem;margin-bottom:.35rem}.pn-prog-dock-label{font-size:.68rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.09em}.pn-prog-dock-chord{font-size:1.05rem;font-weight:700;color:var(--primary);min-width:3rem}.pn-prog-dock-stop{margin-left:auto;background:var(--bg);border:1px solid rgba(147,51,234,.45);color:var(--text);width:1.9rem;height:1.9rem;padding:0;border-radius:50%;cursor:pointer;font-size:.8rem;line-height:1;transition:border-color .15s,background .15s}.pn-prog-dock-stop:hover{border-color:var(--primary)}.pn-prog-mini{position:relative;display:flex;height:66px;border-radius:4px}.pn-mini-key{pointer-events:none}.pn-mini-key.white{flex:1 1 0;min-width:0;background:var(--white-key);border:1px solid #cbd5e1;border-left-width:0;border-radius:0 0 3px 3px;transition:background .08s}.pn-mini-key.white:first-child{border-left-width:1px}.pn-mini-key.black{position:absolute;top:0;height:60%;background:var(--black-key);border:1px solid #0f172a;border-radius:0 0 2px 2px;z-index:2;transition:background .08s}.pn-mini-key.white.lit{background:var(--primary);box-shadow:0 0 10px #9333eab3}.pn-mini-key.black.lit{background:var(--secondary);border-color:var(--secondary);box-shadow:0 0 10px #9333eab3}.gc-detail{padding:0;background:transparent;border:none;border-radius:0;margin:0}.gc-detail-panel{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.65rem 1.25rem;white-space:nowrap}.gc-detail-title{font-size:1.35rem;font-weight:700;margin:0;background:linear-gradient(90deg,#f0ab44,#d98f2a);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;flex-shrink:0}.gc-barre-note{color:var(--gtr-muted);font-size:.9rem;line-height:1.3;margin:0;white-space:nowrap}.gc-btn-row{display:flex;gap:.65rem;margin:0;flex-wrap:nowrap;flex-shrink:0}@media(max-width:640px){.gc-detail-panel{white-space:normal;text-align:center}.gc-barre-note{flex:1 1 100%;white-space:normal}}.toggle-group{display:flex;gap:0;border:1px solid var(--border);border-radius:8px;overflow:hidden;width:fit-content}.toggle-btn{background:var(--bg);border:none;color:var(--text);padding:.45rem 1rem;cursor:pointer;font-size:.9rem;font-weight:600;transition:all .15s}.toggle-btn:hover{background:var(--bg-light)}.toggle-btn.active{background:var(--primary);color:#fff}.gc-info-wrap{position:relative;display:flex;justify-content:flex-end;margin:.25rem 0 .5rem}.gc-info-btn{width:24px;height:24px;border-radius:50%;border:1px solid var(--border);background:var(--bg-card);color:var(--text-muted);font-weight:700;font-size:.85rem;line-height:1;cursor:help;transition:border-color .15s,color .15s}.gc-info-btn:hover,.gc-info-btn:focus{border-color:var(--primary);color:var(--primary)}.gc-info-tip{position:absolute;top:28px;right:0;z-index:30;width:min(340px,82vw);padding:.6rem .8rem;background:var(--bg-card);border:1px solid var(--primary);border-radius:10px;color:var(--text);font-size:.85rem;line-height:1.45;box-shadow:0 12px 30px -12px #0009;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .15s,visibility .15s}.gc-info-wrap:hover .gc-info-tip,.gc-info-btn:focus+.gc-info-tip{opacity:1;visibility:visible}.hint-info-wrap{justify-content:flex-start;margin:.35rem 0 .6rem}.hint-info-wrap .gc-info-tip{left:0;right:auto}.gc-section-title{text-align:center;margin:2.5rem 0 .5rem;color:var(--gtr-cream)}.gc-collapse>summary.gc-section-title{cursor:pointer;list-style:none;font-size:1.17em;font-weight:700}.gc-collapse>summary.gc-section-title::-webkit-details-marker{display:none}.gc-collapse>summary.gc-section-title:after{content:" ▸";color:var(--gtr-muted);font-size:.8em}.gc-collapse[open]>summary.gc-section-title:after{content:" ▾"}.gc-allchords-toggle{display:flex;justify-content:center;align-items:center;gap:.4rem;font-size:.85rem;color:var(--text-muted);margin:.4rem 0 .6rem;cursor:pointer}.gc-allchords-row{display:flex;align-items:flex-start;gap:.6rem;max-width:1100px;margin:.25rem auto}.gc-allchords-root{font-weight:700;font-size:1rem;color:var(--gtr-brass);width:2rem;flex-shrink:0;padding-top:.25rem;text-align:right}.gc-allchords-chips,.gc-allchords-diagrams{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center}.gc-allchords-diagrams{gap:.5rem}.gc-allchords-card{background:#0000002e;border:1px solid var(--gtr-line);border-radius:10px;padding:.3rem .4rem .15rem;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:.1rem}.gc-allchords-card:hover{border-color:var(--gtr-brass)}.gc-allchords-card.active{border-color:var(--gtr-brass);box-shadow:0 0 0 2px #e8a33d59}.gc-allchords-card .gc-name{font-size:.8rem;font-weight:700;color:var(--gtr-cream)}.gc-shape-buttons{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap;margin:1rem 0}.gc-shape-btn{background:var(--bg-card);border:1px solid var(--border);color:var(--text);padding:.6rem 1rem;border-radius:8px;cursor:pointer;font-size:.9rem;transition:all .15s}.gc-shape-btn:hover{border-color:var(--primary)}.gc-shape-btn.active{background:var(--primary);border-color:var(--primary)}.gc-neck-controls{display:flex;align-items:center;gap:1rem;justify-content:center;flex-wrap:wrap;margin:1rem auto;max-width:640px}.gc-neck-controls .bpm-slider{flex:1;min-width:180px}.gc-strum-bar{display:flex;align-items:center;gap:1rem;justify-content:center;flex-wrap:wrap;margin:1rem auto .5rem}.gc-strum-play{background:var(--bg-card);border:1px solid var(--gtr-line);color:var(--gtr-cream);padding:.3rem .8rem;border-radius:999px;cursor:pointer;font-size:.8rem;line-height:1;flex-shrink:0;transition:background .15s,border-color .15s,color .15s}.gc-strum-play:hover{border-color:var(--gtr-brass)}.gc-strum-play.playing{background:var(--gtr-brass);border-color:var(--gtr-brass);color:#1b1308}.gc-strum-pause{padding:.3rem .55rem}.gc-strum-pause:disabled{opacity:.35;cursor:not-allowed}.gc-strum-guide{display:flex;gap:.25rem;justify-content:center;flex-wrap:wrap;max-width:360px}.gc-strum-cell{display:flex;flex-direction:column;align-items:center;gap:.1rem;min-width:26px;padding:.25rem .2rem;border:1px solid var(--border);border-radius:7px;background:var(--bg-card);transition:background .1s,border-color .1s,transform .1s}.gc-strum-arrow{font-size:.95rem;font-weight:700;line-height:1}.gc-strum-arrow.down{color:var(--gtr-brass, #e8a33d)}.gc-strum-arrow.up{color:var(--primary)}.gc-strum-arrow.rest{color:var(--text-muted);opacity:.5}.gc-strum-arrow.mute{color:var(--text-muted)}.gc-strum-arrow.bass{color:var(--gtr-brass, #e8a33d)}.gc-strum-arrow.pick{color:var(--gtr-brass, #e8a33d);font-size:1.15rem;line-height:1.3}#gcStrumPlay.playing{background:var(--secondary)}.gc-strum-count{font-size:.65rem;color:var(--text-muted)}.gc-strum-cell.active{border-color:var(--primary);background:var(--primary);transform:translateY(-3px)}.gc-strum-cell.active .gc-strum-arrow,.gc-strum-cell.active .gc-strum-count{color:#fff}.gc-neck-name-row{display:flex;align-items:center;justify-content:center;gap:.5rem;margin:.5rem 0 1rem}.gc-neck-name{text-align:center;font-size:1.5rem;font-weight:700;color:var(--gtr-brass)}.gc-neck-reset{width:1.9rem;height:1.9rem;border-radius:50%;border:1px solid var(--gtr-line);background:transparent;color:var(--gtr-muted);font-size:1.05rem;line-height:1;cursor:pointer;transition:border-color .15s,color .15s}.gc-neck-reset:hover{border-color:var(--gtr-brass);color:var(--gtr-brass)}.gc-neck-wrap{overflow-x:auto;background:linear-gradient(180deg,var(--gtr-neck-top),var(--gtr-neck-bottom));border:1px solid #4a3322;border-radius:14px;padding:1rem;box-shadow:inset 0 1px #5a3f28,0 18px 40px -24px #000}.gc-neck-svg{display:block;margin:0 auto}.metro-start.active{background:var(--danger, #dc2626)}.tuner-container{background:var(--bg-card);padding:1.5rem 2rem 2rem;border-radius:12px;border:1px solid var(--border);max-width:640px;margin:0 auto}.tuner-pane{min-width:0}.tuner-controls{display:flex;flex-wrap:wrap;gap:1rem 1.5rem;align-items:center;margin-bottom:1.25rem}.tuner-controls .control-group{flex:1 1 14rem;min-width:12rem}.tuner-auto-label{display:flex;align-items:center;gap:.45rem;font-size:.9rem;cursor:pointer;-webkit-user-select:none;user-select:none}.tuner-display{text-align:center;margin-bottom:1.25rem}.tuner-target{font-size:.9rem;color:var(--text-muted, #64748b);margin:0 0 .5rem}.tuner-note{font-size:3.5rem;font-weight:800;line-height:1.1;background:linear-gradient(90deg,var(--primary),var(--secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.tuner-detected-freq{font-size:1rem;color:var(--text-muted, #64748b);margin-bottom:.75rem}.tuner-gauge-wrap{max-width:320px;margin:0 auto}.tuner-gauge{position:relative;height:140px;margin-bottom:.35rem}.tuner-gauge:after{content:"";position:absolute;left:50%;bottom:2px;width:14px;height:14px;margin-left:-7px;border-radius:50%;background:var(--bg-card);border:3px solid var(--border);z-index:3}.tuner-gauge-arc{position:absolute;left:50%;bottom:8px;width:220px;height:110px;margin-left:-110px;border:4px solid var(--border);border-bottom:none;border-radius:220px 220px 0 0;box-sizing:border-box}.tuner-gauge.in-tune .tuner-gauge-arc{border-color:#22c55e;box-shadow:0 0 20px #22c55e59}.tuner-gauge.sharp .tuner-gauge-arc{border-top-color:#f59e0b;border-right-color:#f59e0b}.tuner-gauge.flat .tuner-gauge-arc{border-top-color:#3b82f6;border-left-color:#3b82f6}.tuner-gauge-scale{position:absolute;left:50%;bottom:4px;width:200px;margin-left:-100px;display:flex;justify-content:space-between;font-size:.75rem;color:var(--text-muted, #64748b);padding:0 .25rem}.tuner-needle{position:absolute;left:50%;bottom:8px;width:4px;height:100px;margin-left:-2px;transform-origin:bottom center;transform:rotate(0);transition:transform .08s ease-out;background:linear-gradient(to top,var(--primary),#ef4444);border-radius:2px;z-index:2}.tuner-gauge.in-tune .tuner-needle{background:linear-gradient(to top,#16a34a,#22c55e)}.tuner-cents{font-size:1.35rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text, #0f172a)}.tuner-status{font-size:.95rem;margin-top:.25rem;min-height:1.4em;color:var(--text-muted, #64748b)}.tuner-gauge.in-tune+.tuner-cents,.tuner-gauge.in-tune~.tuner-status{color:#16a34a}.tuner-cents.is-sharp,.tuner-status.is-sharp{color:#d97706}.tuner-cents.is-flat,.tuner-status.is-flat{color:#2563eb}.tuner-cents.is-in-tune,.tuner-status.is-in-tune{color:#16a34a}.tuner-strings{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;margin-bottom:1.25rem}.tuner-string-btn{display:flex;flex-direction:column;align-items:center;gap:.15rem;min-width:5.5rem;padding:.55rem .75rem;border:1px solid var(--border);border-radius:8px;background:var(--bg, #fff);color:var(--text);cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s;font:inherit}.tuner-string-btn:hover{border-color:var(--primary)}.tuner-string-btn.active{border-color:var(--primary);background:#9333ea1f;box-shadow:0 0 0 2px #9333ea33}.tuner-string-btn.near{border-color:#22c55e;background:#22c55e14}.tuner-string-name{font-weight:600;font-size:.85rem}.tuner-string-freq{font-size:.72rem;color:var(--text-muted, #64748b)}.tuner-actions{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center}.tuner-actions .play-btn{min-width:12rem}.tuner-mic-status{text-align:center;font-size:.85rem;margin-top:.75rem;color:var(--text-muted, #64748b)}.tuner-mic-status.tuner-ok{color:#16a34a}.tuner-mic-status.tuner-err{color:#dc2626}#tunerPlayRef.active{opacity:.85}@media(max-width:480px){.tuner-container{padding:1.1rem 1rem 1.25rem}.tuner-controls .control-group{min-width:100%}.tuner-gauge-wrap{max-width:100%}.tuner-gauge-arc{width:192px;height:96px;margin-left:-96px}.tuner-gauge-scale{width:176px;margin-left:-88px}.tuner-needle{height:88px}.tuner-note{font-size:2.75rem}.tuner-string-btn{min-width:4.75rem;padding:.45rem .5rem}.tuner-actions .play-btn{width:auto;min-width:0}}.metro-tuner-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem;align-items:start;max-width:1200px;margin:0 auto}.metro-tuner-subtitle{font-size:1.05rem;font-weight:600;margin:0 0 1rem;color:var(--warm-cream, var(--text))}#metronome .metronome-container,#metronome #tuner .tuner-container{max-width:none;margin:0;height:100%}#metronome #tuner .scale-description{margin-bottom:1rem}@media(max-width:900px){.metro-tuner-layout{grid-template-columns:1fr}}.metronome-container{background:var(--bg-card);padding:2rem;border-radius:12px;border:1px solid var(--border);max-width:600px;margin:0 auto}.metronome-display{text-align:center;margin-bottom:1.5rem}.bpm-value{font-size:4rem;font-weight:800;line-height:1;background:linear-gradient(90deg,var(--primary),var(--secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.bpm-unit{font-size:1.2rem;margin-left:.5rem;color:var(--text-muted);-webkit-text-fill-color:var(--text-muted)}.tempo-name{color:var(--text-muted);font-style:italic;font-size:1.1rem;margin-top:.25rem}.beat-indicators{display:flex;justify-content:center;gap:.75rem;margin:1.5rem 0;min-height:28px}.beat-dot{width:24px;height:24px;border-radius:50%;background:var(--bg);border:2px solid var(--border);transition:all .05s}.beat-dot.accent{border-color:var(--secondary)}.beat-dot.lit{background:var(--primary);border-color:var(--primary);transform:scale(1.3);box-shadow:0 0 16px var(--primary)}.beat-dot.accent.lit{background:var(--secondary);border-color:var(--secondary);box-shadow:0 0 16px var(--secondary)}.metronome-controls{display:flex;align-items:center;gap:.5rem;margin-bottom:1.5rem}.bpm-slider{flex:1;accent-color:var(--primary);cursor:pointer}.tempo-btn{background:var(--bg);border:1px solid var(--border);color:var(--text);padding:.5rem .7rem;border-radius:6px;cursor:pointer;font-weight:600;transition:all .15s;white-space:nowrap}.tempo-btn:hover{border-color:var(--primary);background:var(--bg-light)}.metronome-options{display:flex;gap:1rem;flex-wrap:wrap;justify-content:center;margin-bottom:1.5rem}.metronome-actions{display:flex;gap:1rem;justify-content:center}.metro-start.running{background:var(--danger)}.metro-start.running:hover{background:#dc2626}.piano-keys-mini{position:relative;min-height:150px;overflow-x:auto;overflow-y:visible;padding:1rem .75rem .35rem;display:flex;justify-content:center;border-radius:12px;background:linear-gradient(180deg,#0f172a0d,#0f172a05);box-shadow:inset 0 1px #ffffff8c}.piano-chord-key{border-radius:0 0 6px 6px;display:flex;align-items:flex-end;justify-content:center;padding-bottom:8px;cursor:pointer;transition:all .12s;-webkit-user-select:none;user-select:none;box-sizing:border-box;box-shadow:0 4px 10px #0000001f}.piano-chord-key.white{background:linear-gradient(180deg,#fffdf9,#efe7d8);border:1px solid #ccb690;color:#5a4631;z-index:1;padding:10px 4px}.piano-chord-key.black{background:linear-gradient(180deg,#3b2b1f,#17110c);color:#f7eddc;z-index:2;border:1px solid #120d09;padding:8px 2px;box-shadow:0 6px 12px #00000047}.piano-chord-key.white:hover{background:linear-gradient(180deg,#fffdfc,#f4ead6)}.piano-chord-key.black:hover{background:linear-gradient(180deg,#4a3526,#211810)}.piano-chord-key.chord-member.white,.piano-chord-key.chord-root.white,.piano-chord-key.chord-member.black,.piano-chord-key.chord-root.black{color:#1b1308}.piano-chord-key.degree-root.white{background:linear-gradient(180deg,#f6cd84,#e8a33d);border-color:#e8a33d8c}.piano-chord-key.degree-root.black{background:linear-gradient(180deg,#e8a33d,#b9801f);border-color:#e8a33dbf}.piano-chord-key.degree-third.white{background:linear-gradient(180deg,#9fe0d4,#5cc0b0);border-color:#5cc0b080}.piano-chord-key.degree-third.black{background:linear-gradient(180deg,#5cc0b0,#3d9183);border-color:#5cc0b0b3}.piano-chord-key.degree-fifth.white{background:linear-gradient(180deg,#f3b29a,#e58062);border-color:#e5806280}.piano-chord-key.degree-fifth.black{background:linear-gradient(180deg,#e58062,#bd5640);border-color:#e58062b8}.piano-chord-key.degree-ext.white{background:linear-gradient(180deg,#e9dcc6,#cfb692);border-color:#c9a8768c;color:#1b1308}.piano-chord-key.degree-ext.black{background:linear-gradient(180deg,#b99667,#80613d);border-color:#c9a876bf;color:#1b1308}.piano-chord-key.pressed{transform:translateY(2px);filter:brightness(1.08)}.pck-label{font-size:.8rem;font-weight:700;pointer-events:none}.solar-system-piano{position:relative;height:60px;margin:1.5rem 0;background:var(--bg);border-radius:8px;padding:10px 0}.solar-key{position:absolute;top:5px;height:50px;border-radius:4px;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:600;border:2px solid transparent}.solar-key.white{background:var(--white-key);color:#475569;width:40px;border-color:#cbd5e1;border-radius:0 0 6px 6px;box-shadow:0 3px 8px #0f172a14}.solar-key.black{background:linear-gradient(180deg,#1f2937,#020617);color:#fff;width:26px;height:35px;z-index:2;border-color:#0f172a;border-radius:0 0 5px 5px;box-shadow:0 4px 10px #0206174d}.solar-key.white:hover{background:#e2e8f0}.solar-key.black:hover{background:#334155}.solar-key.active{background:var(--primary);color:#fff;border-color:var(--primary);transform:translateY(2px)}.solar-key.black.active{background:linear-gradient(180deg,#f9a8d4,var(--secondary));border-color:var(--secondary)}.fretboard::-webkit-scrollbar{height:8px}.fretboard::-webkit-scrollbar-track{background:var(--bg);border-radius:4px}.fretboard::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.fretboard::-webkit-scrollbar-thumb:hover{background:var(--primary)}@media(max-width:768px){.app-header h1{font-size:1.5rem}.tab-btn{padding:.5rem .8rem;font-size:.85rem}.tab-panel{padding:1rem .5rem}.piano-container,.guitar-container,.scale-display{padding:1rem}.piano-keyboard,.key.white{height:150px}.key.white{width:36px;min-width:36px;font-size:.65rem}.key.black{height:100px;width:26px;font-size:.65rem}.piano-toolbar{gap:.4rem .75rem}.piano-toolbar-octave{font-size:.8rem;gap:.35rem}.piano-toolbar-octave select{padding:.3rem .45rem;font-size:.8rem}.piano-toolbar-octave input[type=range]{width:7rem;min-width:0}.piano-rec-name{flex:1 1 8rem;min-width:0;max-width:none}.piano-rec-btn{flex:1 1 auto;padding:.45rem .4rem;font-size:.8rem;text-align:center}.sheetmusic-controls,.ear-training-controls{gap:1rem;flex-direction:column;align-items:stretch}.scales-controls{display:grid;grid-template-columns:1fr 1fr;gap:.5rem .75rem;align-items:end;margin-bottom:1rem}.scales-controls .control-group{gap:.2rem;min-width:0}.scales-controls .control-group label{font-size:.75rem}.scales-controls select{font-size:.8rem;padding:.4rem .5rem;width:100%;min-width:0}.scales-controls .toggle-btn{font-size:.8rem;padding:.4rem .6rem}.scales-controls input[type=range]{width:100%;min-width:0}.scales-controls .play-btn{grid-column:1 / -1;justify-self:center;min-width:9rem}.voice-training-controls{gap:.75rem}.voice-training-controls .control-group{flex:1 1 100%}.control-group select{width:100%;min-width:unset}.scales-controls .play-btn,.sheetmusic-controls .play-btn,.ear-training-controls .play-btn{width:auto;align-self:center;min-width:9rem}.voice-training-display{grid-template-columns:1fr}.staff-container{padding:.5rem;overflow-x:auto}#staffCanvas{width:100%;height:auto;max-width:100%}.ear-answer-buttons{gap:.5rem}.ear-btn{padding:.6rem 1rem;font-size:.9rem;min-width:80px}}@media(max-width:480px){.app-header h1{font-size:1.3rem}.nav-tabs{gap:.3rem}.tab-btn{padding:.4rem .6rem;font-size:.8rem;flex:0 0 auto;min-width:44px}.piano-keyboard,.key.white{height:120px}.key.white{width:28px;min-width:28px;font-size:.6rem}.key.black{height:80px;width:20px;font-size:.6rem}.fret-cell{width:40px}.scale-notes{gap:.5rem}.scale-note-chip{font-size:.95rem;padding:.4rem .9rem}}@media(max-width:360px){.piano-keyboard,.key.white{height:100px}.key.white{width:24px;min-width:24px;font-size:.55rem}.key.black{height:65px;width:17px}.fret-cell{width:34px}}html,body{overflow-x:clip;max-width:100%}.boot-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:grid;place-items:center;padding:1.25rem;background:#0c0907f5;color:#efe7d8;transition:opacity .22s ease,visibility .22s ease}.boot-overlay.is-hidden{opacity:0;visibility:hidden;pointer-events:none}.boot-card{width:min(100%,360px);padding:1.4rem;border:1px solid #3a2c1f;border-radius:16px;background:radial-gradient(120% 80% at 50% -10%,#2a2017,#15110d 70%);text-align:center;box-shadow:0 20px 60px #00000073}.boot-logo{display:block;width:min(160px,55vw);height:auto;margin:0 auto .55rem;object-fit:contain}.boot-card p{min-height:1.4em;margin:0 0 .8rem;color:#c9b89e;font-size:.9rem}.boot-progress{height:8px;overflow:hidden;border-radius:999px;background:#efe7d81f}.boot-progress span{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#d98f2a,#f0ab44);transition:width .24s ease}.boot-retry{margin-top:.9rem;padding:.45rem .9rem;border:1px solid #d98f2a;border-radius:8px;background:transparent;color:#efe7d8;cursor:pointer}button,.tab-btn,.key,.fret-cell,.dse-marker,.dse-wkey,.dse-bkey,.dse-keybtn,.dse-modebtn,.dse-chip,.play-btn,.ear-btn,.voice-icon-btn,.tuner-string-btn,.piano-chord-key,select,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}#staffCanvas{max-width:100%}#composerCanvas{max-width:none;touch-action:pan-x pan-y}@media(max-width:600px){.nav-tabs{flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;scroll-snap-type:x proximity;padding-bottom:.25rem}.nav-tabs::-webkit-scrollbar{display:none}.nav-tabs .tab-btn{flex:0 0 auto;scroll-snap-align:start}input[type=text],input[type=number],input[type=search],textarea,.comp-name-input{font-size:16px}}@media(max-width:860px){.app-layout{display:block}#partial-settings{position:static}.composer-settings:not(.composer-settings-inline){position:fixed;top:0;right:0;bottom:0;height:100%;width:min(86vw,340px);max-width:340px;z-index:200;border-left:1px solid var(--border);border-top:none;background:var(--bg-card);box-shadow:-12px 0 36px #00000080;transition:width .22s ease,box-shadow .22s ease}.composer-settings.composer-settings-inline{position:static;width:100%;max-width:none;box-shadow:none}#composer .composer-main{padding:.75rem;gap:.5rem}.composer-main-head{gap:.45rem}.composer-main-head h2{font-size:1.25rem}.composer-transport{gap:.35rem}.composer-transport .play-btn,.composer-transport .reset-btn{padding:.4rem .55rem;font-size:.8rem}.composer-staff-main{min-height:min(56vh,480px);max-height:min(82vh,820px);border-radius:10px}.composer-score-head{flex-wrap:wrap}.composer-toolbar{gap:.35rem;padding:.35rem .45rem}.composer-toolbar-group+.composer-toolbar-group{padding-left:.45rem}.composer-toolbar-group{gap:.3rem}.composer-entry-tools{flex:1 1 100%}.composer-library-tools{flex:1 1 auto}.composer-zoom{margin-left:auto}.composer-settings.collapsed{width:0;border-left:none;box-shadow:none}.composer-settings-inner{height:100%;max-height:100%}.composer-settings-tab-stack{position:fixed;bottom:max(10px,env(safe-area-inset-bottom,0px));right:14px;left:auto;top:auto;transform:none;flex-direction:row;flex-wrap:nowrap;justify-content:flex-end;gap:.25rem;max-width:calc(100vw - 28px);overflow-x:auto;scrollbar-width:none;z-index:201}.composer-settings-tab-stack::-webkit-scrollbar{display:none}.composer-settings-tab{position:relative;flex-direction:row;flex:0 0 auto;width:auto;gap:.35rem;padding:.4rem .55rem;border:1px solid var(--primary);border-radius:999px;background:var(--bg-card);color:var(--text);box-shadow:0 4px 14px #00000059}.composer-settings-tab.is-active{background:var(--primary);color:#fff}.composer-settings-tab:hover{background:#9333ea1f;border-color:var(--primary)}.composer-settings-tab.is-active:hover{background:var(--primary-dark);border-color:var(--primary-dark)}.composer-settings-tab-label{writing-mode:horizontal-tb;transform:none}.composer-settings-tab-icon{font-size:1rem}}.nav-toggle{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;margin-left:auto;width:36px;height:36px;padding:0;border:1px solid rgba(147,51,234,.5);border-radius:8px;background:var(--bg);color:var(--text);font-size:1.05rem;line-height:1;cursor:pointer}.nav-toggle:before{content:"☰"}.nav-toggle[aria-expanded=true]:before{content:"✕"}.nav-toggle:hover{border-color:var(--primary);background:#9333ea1f}.app-header .header-controls{display:none}.app-header.nav-open .header-controls{display:flex;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.app-header.nav-open .header-controls::-webkit-scrollbar{display:none}@media(max-width:480px){.header-controls .subtitle{display:none}}@media(max-width:600px){.app-header{padding:.3rem .5rem .2rem}.header-bar{gap:.35rem;margin-bottom:.1rem}.nav-tabs{gap:.25rem;padding:.05rem .15rem .1rem}.tab-label{display:none}.tab-btn{padding:.3rem .4rem;min-width:40px;min-height:40px;justify-content:center}.tab-icon{font-size:1.05rem}.controls-toggle{margin-bottom:.45rem;padding:.32rem .6rem;font-size:.82rem}#sheetmusic h2{margin-bottom:.65rem;font-size:1.15rem}#sheetmusic .training-controls{background:none;border:0;box-shadow:none;border-radius:0;padding:0}}@media(max-width:480px){.composer-settings-tab-label{display:none}.composer-settings-tab{min-width:44px;min-height:44px;justify-content:center;padding:.45rem}}.app-header{display:flex;align-items:center;gap:.35rem;padding:.25rem .5rem;overflow-x:auto;scrollbar-width:none}.app-header::-webkit-scrollbar{display:none}.app-header .header-bar{flex:0 0 auto;max-width:none;margin:0;gap:.35rem}.app-header .header-controls{display:flex;flex:0 0 auto;gap:.3rem}.app-header .subtitle{font-size:.72rem;white-space:nowrap}.app-header .nav-toggle{display:none}.app-header .nav-tabs{flex:0 0 auto;max-width:none;margin:0;padding:0;gap:.3rem;overflow:visible}.app-header .tab-btn{padding:.32rem .5rem;font-size:.78rem}@media(max-width:600px){.app-header .logo-img{height:26px;max-width:74px}.app-header .subtitle,.app-header #midiStatus{display:none}}.controls-toggle{display:inline-flex;align-items:center;gap:.5rem;margin:0 0 .85rem;padding:.45rem .85rem;border:1px solid var(--border);border-radius:10px;background:var(--bg-card);color:var(--text);font:inherit;font-size:.88rem;font-weight:600;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;transition:border-color .15s,background .15s}.controls-toggle:hover{border-color:var(--primary);background:#9333ea1f}.controls-toggle-ic{font-size:1rem;line-height:1}.controls-toggle-chev{font-size:.72rem;color:var(--text-muted);transition:transform .18s ease}.controls-toggle.is-collapsed .controls-toggle-chev{transform:rotate(-90deg)}.controls-hidden{display:none!important}#sheetmusic .control-group label,#sheetmusic .quiz-score,#sheetmusic .ear-feedback,#sheetmusic .scale-description,#sheetmusic .step-pattern-label,#sheetmusic .sub-heading{color:#d9c8a6}.gc-triads{display:flex;flex-direction:column;gap:.9rem;margin-bottom:2rem}.gc-triad-set{background:#241b1366;border:1px solid var(--gtr-line, #3a2c1f);border-radius:14px;padding:.8rem 1rem 1rem}.gc-triad-set-label{font-weight:700;font-size:.85rem;letter-spacing:.1em;text-transform:uppercase;color:var(--gtr-maple, #c9a876);margin-bottom:.65rem;padding-bottom:.45rem;border-bottom:1px solid var(--gtr-line, #3a2c1f)}.gc-triad-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.6rem;justify-items:center}.gc-triad-card{width:100%;max-width:190px}.gc-triad-inv{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--gtr-muted, #a48f74)}.gc-view-hidden{display:none!important}#piano #chords{margin-top:.75rem}.piano-chords-bar{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.piano-chords-label{font-weight:700;color:var(--text-muted);white-space:nowrap}.piano-chords-name{font-weight:700;font-size:1rem;white-space:nowrap}#chords .piano-chords-notes,#chords .piano-chords-formula{display:flex;align-items:center;gap:.3rem}#chords .piano-chords-notes .scale-note-chip{padding:.25rem .55rem;font-size:.85rem}#chords .piano-chords-formula .degree-badge{font-size:.7rem;padding:.15rem .45rem}#chords .piano-chords-desc{margin:.35rem 0 0;font-size:.85rem}#piano #chords h2{font-size:1.25rem;text-align:center;margin-bottom:.75rem}#scales #diatonic{margin-top:1rem;padding:0}#scales #diatonic h2{font-size:1.25rem;text-align:center;margin-bottom:.75rem}#scales #diatonic .dse-modebar,#scales #diatonic .dse-keys{display:none}#scales #diatonic .dse-wrap{margin:0 auto}.control-group select{padding:.3rem .55rem;font-size:.85rem;min-width:0}.control-group{gap:.22rem}.control-group label{font-size:.78rem}.string-selector select{padding:.32rem .6rem;font-size:.85rem}.comp-name-input,.composer-settings-block select{padding:.35rem .6rem;font-size:.88rem}.scales-controls{gap:.8rem;margin-bottom:1rem}.sheetmusic-controls{gap:.5rem;margin-bottom:.6rem}.play-btn,.reset-btn,.comp-import-label{padding:.32rem .7rem;font-size:.84rem}.ear-btn{padding:.35rem .7rem}.tempo-btn{padding:.35rem .55rem}.comp-toggle{padding:.3rem .6rem;font-size:.82rem}#sheetmusic .play-btn,#sheetmusic .reset-btn{padding:.3rem .6rem;min-height:2rem}.tab-btn{padding:.35rem .7rem}.tab-btn,.tab-label{font-size:.85rem}.toggle-btn{padding:.32rem .7rem;font-size:.84rem}.seq-transport{display:flex;align-items:center;gap:.6rem;justify-content:center;flex-wrap:wrap;margin:.6rem auto .3rem;padding:.4rem .8rem;border:1px solid var(--border, #333);border-radius:999px;background:var(--bg-card, rgba(255, 255, 255, .04));max-width:560px}.seq-btn{background:transparent;border:1px solid var(--border, #444);color:inherit;border-radius:50%;width:2rem;height:2rem;padding:0;cursor:pointer;font-size:.85rem;line-height:1;flex-shrink:0}.seq-btn:hover{border-color:var(--accent, #e8a33d)}.seq-transport input[type=range]{flex:1;min-width:140px;accent-color:var(--accent, #e8a33d)}.seq-time{font-size:.75rem;color:var(--text-muted, #999);font-variant-numeric:tabular-nums;white-space:nowrap}.seq-transport select{font-size:.8rem}.tour-launch{margin-left:.6rem;vertical-align:middle;font-size:.78rem;font-weight:600;padding:.28rem .7rem;border-radius:999px;border:1px solid var(--primary);background:color-mix(in srgb,var(--primary) 22%,transparent);color:var(--text);cursor:pointer;transition:background .15s ease,transform .15s ease}.tour-launch:hover{background:color-mix(in srgb,var(--primary) 40%,transparent);transform:translateY(-1px)}.tour-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9000;pointer-events:none;display:none}.tour-root.is-open{display:block}.tour-spotlight{position:fixed;border-radius:12px;box-shadow:0 0 0 9999px #06030fad;outline:2px solid var(--accent);outline-offset:2px;transition:left .25s ease,top .25s ease,width .25s ease,height .25s ease;pointer-events:none}.tour-pop{position:fixed;width:min(360px,calc(100vw - 24px));max-width:360px;background:var(--bg-card);border:1px solid var(--border);border-radius:14px;box-shadow:0 16px 40px #00000080;padding:1rem 1.05rem .85rem;color:var(--text);pointer-events:auto;transition:left .25s ease,top .25s ease}.tour-pop.is-centered{left:50%;top:50%;transform:translate(-50%,-50%)}.tour-bar{position:absolute;left:0;top:0;height:3px;width:100%;background:#ffffff14;border-radius:14px 14px 0 0;overflow:hidden}.tour-bar-fill{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--primary),var(--accent))}.tour-close{position:absolute;top:.5rem;right:.55rem;border:none;background:transparent;color:var(--text-muted);font-size:.95rem;cursor:pointer;line-height:1;padding:.2rem}.tour-close:hover{color:var(--text)}.tour-title{margin:.2rem 0 .4rem;font-size:1.02rem;padding-right:1.2rem}.tour-body{margin:0 0 .8rem;font-size:.9rem;line-height:1.45;color:var(--text)}.tour-foot{display:flex;align-items:center;justify-content:space-between;gap:.6rem;flex-wrap:wrap}.tour-dots{display:inline-flex;gap:5px}.tour-dot{width:6px;height:6px;border-radius:50%;background:var(--border);display:inline-block}.tour-dot.is-on{background:var(--accent);transform:scale(1.25)}.tour-actions{display:inline-flex;gap:.35rem}.tour-btn{font-size:.8rem;font-weight:600;padding:.32rem .62rem;border-radius:8px;border:1px solid var(--border);background:var(--bg-light);color:var(--text);cursor:pointer;transition:background .15s ease,border-color .15s ease}.tour-btn:hover:not(:disabled){border-color:var(--accent)}.tour-next{background:var(--primary);border-color:var(--primary)}.tour-next:hover{background:var(--primary-dark)}.tour-btn:disabled{opacity:.4;cursor:default}.tour-offer{position:fixed;right:18px;bottom:18px;z-index:8500;width:min(340px,calc(100vw - 24px));display:flex;flex-wrap:wrap;align-items:center;gap:.55rem;padding:.85rem .95rem;background:var(--bg-card);border:1px solid var(--primary);border-radius:14px;box-shadow:0 16px 40px #00000080;color:var(--text);opacity:0;transform:translateY(14px);transition:opacity .25s ease,transform .25s ease}.tour-offer.is-in{opacity:1;transform:translateY(0)}.tour-offer-emoji{font-size:1.4rem}.tour-offer-text{flex:1 1 220px;font-size:.88rem;line-height:1.4}.tour-offer-actions{display:flex;gap:.4rem;margin-left:auto}.tour-offer-yes{background:var(--primary);border-color:var(--primary)}.tour-offer-yes:hover{background:var(--primary-dark)}@media(max-width:640px){.tour-pop{left:12px!important;right:12px;width:auto;bottom:12px;top:auto!important}.tour-offer{left:12px;right:12px;width:auto}}@media(prefers-reduced-motion:reduce){.tour-spotlight,.tour-pop,.tour-offer,.tour-bar-fill{transition:none}}.composer-input-dock{margin-top:10px;padding:8px 10px 10px;background:var(--bg-card, var(--bg));border:1px solid var(--border, #33415555);border-radius:10px}.composer-input-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}.composer-input-label{font-size:.85rem;font-weight:600;color:var(--text-secondary, inherit)}.composer-input-modes{display:flex;gap:4px}.comp-input-mode{font-size:.8rem;padding:4px 10px}.comp-input-mode.active{background:var(--primary);color:#fff;border-color:var(--primary)}.composer-input-octave{display:flex;align-items:center;gap:6px;font-size:.8rem;font-weight:600}.composer-input-hint{font-size:.75rem;opacity:.75}.composer-input-piano{overflow-x:auto;padding:4px 2px 10px}.comp-piano-board{position:relative;height:86px;margin:0 auto}.comp-piano-whites{display:flex;gap:0}.comp-piano-board .solar-key.white{height:78px}.comp-piano-board .solar-key.black{height:48px}.comp-piano-board .solar-key.pressed,.comp-piano-board .solar-key.pressed:hover{background:var(--primary);color:#fff;border-color:var(--primary);transform:translateY(2px)}.comp-piano-board .solar-key.black.pressed{background:linear-gradient(180deg,#f9a8d4,var(--secondary));border-color:var(--secondary)}.comp-key-label{position:absolute;bottom:4px;left:0;right:0;text-align:center;font-size:.62rem;opacity:.7;pointer-events:none}.composer-input-fretboard{padding-bottom:6px}.comp-fret-note{font-size:.62rem;font-weight:600;opacity:.55;pointer-events:none}.fret-cell.comp-input-fret{cursor:pointer}.fret-cell.comp-input-fret.pressed{background:var(--primary)}.fret-cell.comp-input-fret.pressed .comp-fret-note{color:#fff;opacity:1}.composer-chord-progs{margin-top:10px;border-top:1px dashed var(--border, #33415588);padding-top:8px}.comp-chord-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:6px}.comp-chord-label{font-size:.8rem;font-weight:600;color:var(--text-secondary, inherit)}.comp-chord-key{padding:3px 8px;border-radius:6px;font-weight:600}.comp-chord-chip{font-size:.72rem;padding:3px 9px;border-radius:999px;border:1px solid var(--border, #475569);background:transparent;color:inherit;cursor:pointer}.comp-chord-chip.active{background:var(--primary);border-color:var(--primary);color:#fff}.comp-chord-row{display:flex;align-items:center;gap:5px;flex-wrap:wrap;padding:4px 0}.comp-chord-row-name{font-size:.72rem;opacity:.75;min-width:120px}.comp-chord-btn{min-width:44px;padding:6px 10px;border-radius:8px;border:1px solid var(--border, #475569);background:var(--bg-darker, rgba(255, 255, 255, .04));color:inherit;font-weight:700;cursor:pointer}.comp-chord-btn:hover{border-color:var(--primary)}.comp-chord-btn:active{background:var(--primary);color:#fff}.comp-chord-addall{font-size:.72rem;padding:5px 10px;border-radius:8px;border:1px solid var(--primary);background:transparent;color:inherit;cursor:pointer}.comp-chord-addall:hover{background:var(--primary);color:#fff}.comp-record-btn{font-size:.8rem;padding:4px 10px;border:1px solid var(--border, #475569)}.comp-record-btn.armed{background:#dc2626;border-color:#dc2626;color:#fff;animation:compRecPulse 1.2s ease-in-out infinite}@keyframes compRecPulse{50%{box-shadow:0 0 0 4px #dc262640}}.composer-scale-pick{display:flex;align-items:center;gap:6px}.composer-scale-pick select{padding:3px 6px;border-radius:6px;max-width:170px}.comp-piano-board .solar-key.in-scale.white{background:linear-gradient(180deg,var(--white-key, #fff) 55%,rgba(147,51,234,.28));border-color:var(--accent, #c084fc)}.comp-piano-board .solar-key.in-scale.black{border-color:var(--accent, #c084fc);box-shadow:0 4px 10px #9333ea73}.comp-piano-board .solar-key.scale-root.white,.comp-piano-board .solar-key.scale-root.black{border-color:var(--secondary, #d946ef);border-width:3px}.fret-cell.comp-input-fret.in-scale{background:#9333ea38}.fret-cell.comp-input-fret.in-scale .comp-fret-note{opacity:1;color:var(--accent, #c084fc)}.fret-cell.comp-input-fret.scale-root .comp-fret-note{color:var(--secondary, #d946ef);opacity:1;font-weight:800}.comp-chord-loop{min-width:30px;padding:5px 8px;border-radius:8px;border:1px solid var(--border, #475569);background:transparent;color:inherit;cursor:pointer;font-size:.8rem}.comp-chord-loop:hover{border-color:var(--primary)}.comp-chord-loop.active{background:var(--primary);border-color:var(--primary);color:#fff}.comp-chord-btn.playing{background:var(--primary);border-color:var(--primary);color:#fff;transform:translateY(1px)}.voice-section-switch,.breath-mode-switch{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;margin:0 0 12px}.voice-section-btn,.breath-mode-btn{background:var(--panel-2, rgba(127, 127, 127, .12));border:1px solid var(--border, rgba(127, 127, 127, .35));color:inherit;border-radius:999px;padding:6px 16px;font-size:14px;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .1s ease}.voice-section-btn:hover,.breath-mode-btn:hover{border-color:var(--accent, #7c5cff)}.voice-section-btn:active,.breath-mode-btn:active{transform:translateY(1px)}.voice-section-btn.active,.breath-mode-btn.active{background:var(--accent, #7c5cff);border-color:var(--accent, #7c5cff);color:#fff;font-weight:600}#voicetraining[data-section=breath] .voice-training-container,#voicetraining[data-section=pitch] .breath-studio{display:none}.breath-studio{max-width:760px;margin:0 auto;display:flex;flex-direction:column;gap:12px}.breath-explain{margin:0;text-align:center;font-size:14px;line-height:1.55;opacity:.82}#breathStudio[data-mode=pacer] .breath-mic-view{display:none}#breathStudio:not([data-mode=pacer]) .breath-pacer{display:none}.breath-pacer{display:flex;align-items:center;justify-content:center;gap:28px;flex-wrap:wrap;min-height:240px}.breath-ring-wrap{position:relative;width:200px;height:200px;display:grid;place-items:center}.breath-ring{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:3px solid var(--accent, #7c5cff);background:radial-gradient(circle,#7c5cff38,#7c5cff05 70%);transform:scale(.42)}.breath-ring[data-phase=hold]{border-style:dashed}.breath-ring[data-phase=exhale]{border-color:#22c55e}.breath-ring[data-phase=rest]{border-color:#7f7f7f99}.breath-ring-text{position:relative;text-align:center;z-index:1}.breath-ring-text strong{display:block;font-size:44px;line-height:1;font-variant-numeric:tabular-nums}.breath-ring-text span{display:block;margin-top:4px;font-size:14px;opacity:.78}.breath-pacer-side{display:flex;flex-direction:column;gap:12px}.breath-mic-view{display:flex;flex-direction:column;gap:10px}.breath-readouts{display:flex;justify-content:center;gap:24px}.breath-stat{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:12px;opacity:.75}.breath-stat strong{font-size:24px;font-variant-numeric:tabular-nums;opacity:1}.breath-level{height:10px;border-radius:999px;background:#7f7f7f38;overflow:hidden}.breath-level-fill{height:100%;width:0;border-radius:999px;background:linear-gradient(90deg,#22c55e,var(--accent, #7c5cff));transition:width .06s linear}.breath-canvas{width:100%;height:180px;display:block;border:1px solid var(--border, rgba(127, 127, 127, .3));border-radius:10px;background:#7f7f7f0d}.breath-actions{justify-content:center}.breath-result{display:none;border:1px solid var(--border, rgba(127, 127, 127, .3));border-radius:12px;padding:12px 16px;background:#7f7f7f0f}.breath-result.is-visible{display:block}.breath-result-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.breath-result-head strong{font-size:30px;font-variant-numeric:tabular-nums;color:var(--accent, #7c5cff)}.breath-result-head em{font-style:normal;opacity:.8}.breath-notes{margin:10px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:6px;font-size:13.5px;line-height:1.5}@media(max-width:560px){.breath-ring-wrap{width:160px;height:160px}.breath-ring-text strong{font-size:34px}.breath-canvas{height:150px}}.breath-body{width:190px;height:245px;flex:0 0 auto}.breath-body .bb-outline{stroke:#7f7f7f8c;stroke-width:1.6;fill:none}.breath-body .bb-airway{stroke:#7f7f7f80;stroke-width:2;stroke-dasharray:2 4;stroke-linecap:round}.breath-body .bb-air{fill:#38bdf8}#breathAirflow{opacity:0;transition:opacity .25s ease}.breath-body .bb-ribs path{stroke:#7f7f7f66;stroke-width:1.4}.breath-body .bb-lungs{fill:#38bdf847;stroke:#38bdf899;stroke-width:1.2}.breath-body .bb-diaphragm{stroke:var(--accent, #7c5cff);stroke-width:3;stroke-linecap:round}.breath-body .bb-belly{stroke:#22c55e;stroke-width:2.4;stroke-linecap:round}.breath-body .bb-label{font-size:9.5px;fill:currentColor;opacity:.6}.breath-body .bb-label-accent{opacity:.9;font-weight:600}@media(max-width:640px){.breath-body{width:150px;height:195px}}
