:root{--ink-ivory: #f6f1e7;--ink-cream: #efe8d8;--ink-paper: #fbf7ed;--ink-black: #1a1612;--ink-muted: #5a524a;--ink-faint: #b5ab9c;--ink-hairline: #2b2620;--ink-burgundy: #6b1f2e;--ink-burgundy-deep: #4a131f;--ink-blue: #1a3a5c;--ink-blue-deep: #0f2640;--ink-gold: #b08740;--font-display: "Cormorant Garamond", "Cormorant", "Baskerville", "Georgia", serif;--font-ui: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-musical: "Bravura Text", "Noto Music", "Cambria Math", serif;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.25rem;--text-xl: 1.5rem;--text-2xl: 2rem;--text-3xl: 2.75rem;--text-4xl: 4rem;--text-hero: 6rem;--s-1: .25rem;--s-2: .5rem;--s-3: .75rem;--s-4: 1rem;--s-6: 1.5rem;--s-8: 2rem;--s-12: 3rem;--s-16: 4rem;--s-24: 6rem;--ease-confident: cubic-bezier(.22, 1, .36, 1);--dur-slow: .7s;--dur-medium: .4s;--dur-fast: .2s;--hairline: 1px;--radius-sm: 2px;--radius-md: 4px}@media(prefers-color-scheme:dark){:root{--ink-ivory: #141018;--ink-cream: #1f1920;--ink-paper: #0f0b13;--ink-black: #e8e0d2;--ink-muted: #9e9586;--ink-faint: #5a524a;--ink-hairline: #d6cebf;--ink-burgundy: #c27a88;--ink-burgundy-deep: #a45a68;--ink-blue: #7ea2cc;--ink-blue-deep: #5e82ac;--ink-gold: #d4a85c}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font-ui);font-size:16px;line-height:1.55;color:var(--ink-black);background:var(--ink-ivory);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{min-height:100vh;min-height:100dvh}h1,h2,h3,h4{font-family:var(--font-display);font-weight:500;line-height:1.1;letter-spacing:-.01em;color:var(--ink-black)}h1{font-size:var(--text-hero);font-weight:600;letter-spacing:-.03em}h2{font-size:var(--text-3xl)}h3{font-size:var(--text-2xl)}h4{font-size:var(--text-xl)}p{font-size:var(--text-base);color:var(--ink-black)}small,.t-meta{font-size:var(--text-sm);color:var(--ink-muted)}em{font-family:var(--font-display);font-style:italic}a{color:var(--ink-burgundy);text-decoration:none;border-bottom:1px solid transparent;transition:border-color var(--dur-fast) var(--ease-confident),color var(--dur-fast) var(--ease-confident)}a:hover{border-bottom-color:currentColor}button{font-family:var(--font-ui);font-size:var(--text-base);color:var(--ink-black);background:transparent;border:var(--hairline) solid var(--ink-hairline);padding:var(--s-2) var(--s-6);cursor:pointer;letter-spacing:.02em;transition:background var(--dur-medium) var(--ease-confident),color var(--dur-medium) var(--ease-confident),border-color var(--dur-medium) var(--ease-confident)}button:hover{background:var(--ink-black);color:var(--ink-ivory);border-color:var(--ink-black)}:focus-visible{outline:2px solid var(--ink-burgundy);outline-offset:3px}::selection{background:var(--ink-burgundy);color:var(--ink-ivory)}.app-root{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}.app-header{display:flex;justify-content:space-between;align-items:center;padding:var(--s-4) var(--s-6);border-bottom:var(--hairline) solid color-mix(in srgb,var(--ink-hairline) 30%,transparent);max-width:1100px;margin:0 auto;width:100%}.app-brand{font-family:var(--font-display);font-weight:600;font-size:var(--text-xl);letter-spacing:-.02em;color:var(--ink-black);background:transparent;border:none;padding:0;cursor:pointer}.app-brand:hover{background:transparent;color:var(--ink-burgundy)}.app-nav{display:flex;align-items:center;gap:var(--s-4)}.locale-toggle{display:inline-flex;align-items:center;gap:var(--s-1);font-family:var(--font-ui);font-size:var(--text-xs);letter-spacing:.18em}.locale-toggle .locale-btn,.locale-toggle .locale-btn:hover,.locale-toggle .locale-btn:focus-visible{background:transparent;border:none;padding:var(--s-1) var(--s-2);font-family:inherit;font-size:inherit;letter-spacing:inherit;text-transform:uppercase;color:var(--ink-faint);cursor:pointer;transition:color var(--dur-fast) var(--ease-confident)}.locale-toggle .locale-btn.active{color:var(--ink-black)}.locale-toggle .locale-btn:hover:not(.active){color:var(--ink-muted)}.locale-toggle .locale-sep{color:var(--ink-faint);-webkit-user-select:none;user-select:none}.btn-ghost{background:transparent;border:var(--hairline) solid transparent;font-family:var(--font-ui);font-size:var(--text-sm);color:var(--ink-muted);padding:var(--s-1) var(--s-3);cursor:pointer;letter-spacing:.03em;transition:color var(--dur-fast) var(--ease-confident),background var(--dur-fast) var(--ease-confident)}.btn-ghost:hover{background:transparent;color:var(--ink-black);border-color:transparent}.btn-primary{font-family:var(--font-ui);font-size:var(--text-base);color:var(--ink-ivory);background:var(--ink-black);border:var(--hairline) solid var(--ink-black);padding:var(--s-3) var(--s-6);cursor:pointer;letter-spacing:.04em;transition:background var(--dur-medium) var(--ease-confident),border-color var(--dur-medium) var(--ease-confident)}.btn-primary:hover:not(:disabled){background:var(--ink-burgundy);border-color:var(--ink-burgundy);color:var(--ink-ivory)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.coming-soon{display:grid;place-items:center;flex:1;padding:var(--s-12) var(--s-4)}.coming-soon-card{max-width:36rem;width:100%;text-align:center;display:flex;flex-direction:column;gap:var(--s-4);align-items:center}.coming-soon-eyebrow{font-family:var(--font-ui);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.28em;color:var(--ink-faint);margin:0}.coming-soon-headline{font-family:var(--font-display);font-size:clamp(var(--text-3xl),6vw,var(--text-hero));font-weight:500;letter-spacing:-.02em;line-height:1;color:var(--ink-black);margin:0}.coming-soon-body{font-family:var(--font-display);font-style:italic;font-size:var(--text-lg);color:var(--ink-muted);max-width:28rem;line-height:1.5;margin:0}.coming-soon .btn-ghost{margin-top:var(--s-4);border:var(--hairline) solid var(--ink-hairline);padding:var(--s-2) var(--s-6)}.auth-page{display:grid;place-items:center;flex:1;padding:var(--s-8) var(--s-4)}.auth-form{max-width:24rem;width:100%;display:flex;flex-direction:column;gap:var(--s-6)}.auth-form h2{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:500;text-align:center}.auth-form form{display:flex;flex-direction:column;gap:var(--s-4)}.field{display:flex;flex-direction:column;gap:var(--s-2)}.field span{font-family:var(--font-ui);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.15em;color:var(--ink-muted)}.field input{font-family:var(--font-ui);font-size:var(--text-base);padding:var(--s-3);border:var(--hairline) solid var(--ink-hairline);background:var(--ink-paper);color:var(--ink-black);transition:border-color var(--dur-fast) var(--ease-confident)}.field input:focus{outline:none;border-color:var(--ink-burgundy)}.field-password{position:relative}.field-password input{width:100%;padding-right:calc(var(--s-8) + var(--s-2))}.password-toggle,.password-toggle:hover,.password-toggle:focus-visible{position:absolute;right:var(--s-2);top:50%;transform:translateY(-50%);background:transparent;border:none;padding:var(--s-1) var(--s-2);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:var(--ink-muted);transition:color var(--dur-fast) var(--ease-confident)}.password-toggle:hover{color:var(--ink-black)}.field-hint{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--ink-muted);letter-spacing:.03em;margin-top:calc(var(--s-1) * -1)}.auth-error{color:var(--ink-burgundy);font-family:var(--font-display);font-style:italic;font-size:var(--text-base);text-align:center;margin:0}.auth-success{color:var(--ink-black);font-family:var(--font-display);font-size:var(--text-base);line-height:1.55;text-align:center;margin:0 0 var(--s-3) 0}.reset-body{color:var(--ink-black);font-family:var(--font-display);font-size:var(--text-base);line-height:1.55;margin:0 0 var(--s-3) 0}.btn-link{background:none;border:0;padding:0;color:var(--ink-blue);font-family:var(--font-display);font-style:italic;font-size:var(--text-sm);cursor:pointer;text-decoration:underline;text-underline-offset:.2em;text-align:center}.btn-link:hover{color:var(--ink-burgundy)}.auth-actions{display:flex;flex-direction:column;gap:var(--s-3);align-items:stretch;margin-top:var(--s-2)}.header-auth{display:inline-flex;align-items:center;gap:var(--s-1)}.header-sep{color:var(--ink-faint);font-family:var(--font-display);-webkit-user-select:none;user-select:none}.legal-footer{margin-top:auto;padding:var(--s-6) var(--s-4);border-top:var(--hairline) solid color-mix(in srgb,var(--ink-hairline) 30%,transparent);text-align:center;font-family:var(--font-display);font-style:italic;font-size:var(--text-sm);color:var(--ink-muted)}.legal-footer .legal-link{color:var(--ink-muted);text-decoration:none;border-bottom:var(--hairline) solid transparent;transition:color var(--dur-fast) var(--ease-confident),border-color var(--dur-fast) var(--ease-confident)}.legal-footer .legal-link:hover{color:var(--ink-black);border-bottom-color:var(--ink-hairline)}.legal-footer .legal-sep{color:var(--ink-faint);-webkit-user-select:none;user-select:none;margin:0 var(--s-1)}.legal-page{flex:1;padding:var(--s-8) var(--s-4);max-width:44rem;width:100%;margin:0 auto}.legal-article{font-family:var(--font-display);color:var(--ink-black);line-height:1.65}.legal-title{font-family:var(--font-display);font-size:clamp(var(--text-3xl),5vw,var(--text-hero));font-weight:500;letter-spacing:-.02em;line-height:1.05;margin:0 0 var(--s-2) 0}.legal-updated{font-style:italic;color:var(--ink-muted);font-size:var(--text-sm);margin:0 0 var(--s-6) 0}.legal-article p{font-size:var(--text-base);margin:0 0 var(--s-4) 0}.legal-section-h{font-family:var(--font-display);font-size:var(--text-xl);font-weight:500;letter-spacing:-.01em;margin:var(--s-6) 0 var(--s-3) 0;color:var(--ink-black)}.legal-list{margin:0 0 var(--s-4) var(--s-6);padding:0}.legal-list li{font-size:var(--text-base);margin-bottom:var(--s-1)}.legal-article a{color:var(--ink-blue);text-decoration:underline;text-underline-offset:.2em}.legal-article a:hover{color:var(--ink-burgundy)}.legal-article code{font-family:var(--font-ui);font-size:.9em;padding:.1em .35em;background:color-mix(in srgb,var(--ink-hairline) 20%,transparent);border-radius:2px}.account-page{flex:1;padding:var(--s-8) var(--s-4);max-width:36rem;width:100%;margin:0 auto;display:flex;flex-direction:column;gap:var(--s-6)}.account-title{font-family:var(--font-display);font-size:clamp(var(--text-3xl),5vw,var(--text-hero));font-weight:500;letter-spacing:-.02em;margin:0}.account-identity{font-family:var(--font-display);font-style:italic;color:var(--ink-muted);margin:0}.account-section{display:flex;flex-direction:column;gap:var(--s-3);padding-top:var(--s-6);border-top:var(--hairline) solid color-mix(in srgb,var(--ink-hairline) 30%,transparent)}.account-section h2{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:500;margin:0}.account-body{font-family:var(--font-display);font-style:italic;color:var(--ink-muted);line-height:1.55;margin:0}.account-section-danger h2{color:var(--ink-burgundy)}.field-check{flex-direction:row;align-items:flex-start;gap:var(--s-2)}.field-check input{margin-top:.2em}.field-check span{font-family:var(--font-display);font-style:italic;font-size:var(--text-base);color:var(--ink-black);text-transform:none;letter-spacing:0}.btn-danger{font-family:var(--font-ui);font-size:var(--text-base);color:var(--ink-ivory);background:var(--ink-burgundy);border:var(--hairline) solid var(--ink-burgundy);padding:var(--s-3) var(--s-6);cursor:pointer;letter-spacing:.04em;transition:background var(--dur-medium) var(--ease-confident),border-color var(--dur-medium) var(--ease-confident)}.btn-danger:hover:not(:disabled){background:color-mix(in srgb,var(--ink-burgundy) 75%,black);border-color:color-mix(in srgb,var(--ink-burgundy) 75%,black)}.btn-danger:disabled{opacity:.5;cursor:not-allowed}@font-face{font-family:Bravura Text;src:url(/fonts/BravuraText.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}.scale-page{max-width:72ch;margin:0 auto;padding:var(--s-12) clamp(var(--s-2),3vw,var(--s-4)) var(--s-16)}.scale-header{text-align:center;margin-bottom:var(--s-8)}.scale-eyebrow{font-family:var(--font-ui);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.28em;color:var(--ink-faint);margin-bottom:var(--s-3)}.scale-title-row{display:flex;align-items:center;justify-content:center;gap:var(--s-6);flex-wrap:wrap;margin-bottom:var(--s-4)}.scale-title{font-family:var(--font-display);font-size:clamp(var(--text-3xl),8vw,5rem);font-weight:500;letter-spacing:-.02em;line-height:1;color:var(--ink-black);margin:0}.scale-title-part,.scale-title-part:hover,.scale-title-part:focus-visible{font:inherit;color:inherit;letter-spacing:inherit;background:transparent;border:none;padding:0;margin:0;cursor:pointer;transition:color var(--dur-medium) var(--ease-confident),font-style var(--dur-medium) var(--ease-confident)}.scale-title-part:hover{color:var(--ink-muted)}.scale-title-part:focus-visible{outline:var(--hairline) solid var(--ink-burgundy);outline-offset:4px;border-radius:2px}.scale-title-part--active{font-style:italic}.scale-staff{display:block;width:148px;flex-shrink:0;height:auto;color:var(--ink-black);overflow:visible}.staff-clef{font-family:var(--font-musical);font-size:55px;fill:currentColor}.staff-accidental{font-family:var(--font-musical);font-size:22px;fill:var(--ink-burgundy)}.scale-title .scale-glyph,.scale-pill-accidental{font-family:var(--font-musical);font-style:normal;line-height:1}.scale-title .scale-glyph{display:inline-block;font-size:.55em;vertical-align:.45em;margin-left:.05em}.scale-pickers{display:flex;flex-direction:column;align-items:center;gap:var(--s-2);margin:var(--s-8) 0 var(--s-6)}.scale-picker{text-align:center}.scale-picker-eyebrow{font-family:var(--font-ui);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.28em;color:var(--ink-faint);margin:0 0 var(--s-1)}.scale-picker-row{display:flex;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:var(--s-1) var(--s-2)}.scale-picker-row .scale-picker-option,.scale-picker-row .scale-picker-option:hover,.scale-picker-row .scale-picker-option:focus-visible{font-family:var(--font-display);font-style:italic;font-size:var(--text-lg);font-weight:500;color:var(--ink-muted);background:transparent;border:none;padding:0 var(--s-1);cursor:pointer;letter-spacing:.01em;transition:color var(--dur-fast) var(--ease-confident),border-color var(--dur-fast) var(--ease-confident)}.scale-picker-row .scale-picker-option:hover,.scale-picker-row .scale-picker-option:focus-visible{color:var(--ink-black)}.scale-picker-row .scale-picker-option.active{color:var(--ink-black);font-style:normal;border-bottom:var(--hairline) solid var(--ink-burgundy)}.scale-picker-sep{color:var(--ink-faint);-webkit-user-select:none;user-select:none}.scale-picker--timbre .scale-picker-row .scale-picker-option,.scale-picker--timbre .scale-picker-row .scale-picker-option:hover,.scale-picker--timbre .scale-picker-row .scale-picker-option:focus-visible{font-family:var(--font-ui);font-style:normal;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.22em;color:var(--ink-faint)}.scale-picker--timbre .scale-picker-row .scale-picker-option:hover,.scale-picker--timbre .scale-picker-row .scale-picker-option:focus-visible{color:var(--ink-muted)}.scale-picker--timbre .scale-picker-row .scale-picker-option.active{color:var(--ink-burgundy);border-bottom:none}.scale-pills{container-type:inline-size;display:flex;flex-wrap:nowrap;align-items:stretch;justify-content:center;gap:clamp(1px,.4cqw,var(--s-1));margin:var(--s-12) 0 var(--s-8)}.scale-pill{display:flex;flex-direction:column;align-items:center;gap:clamp(2px,1.2cqw,var(--s-2));flex:1 1 0;min-width:0;cursor:default}.scale-pill-degree{font-family:var(--font-ui);font-size:clamp(.55rem,1.3cqw,var(--text-xs));letter-spacing:.15em;color:var(--ink-faint);text-transform:uppercase}.scale-pill-note{container-type:inline-size;aspect-ratio:1 / 1;position:relative;display:flex;align-items:center;justify-content:center;width:100%;border:var(--hairline) solid var(--ink-hairline);border-radius:50%;background:var(--ink-paper);transition:background var(--dur-fast) var(--ease-confident),border-color var(--dur-fast) var(--ease-confident),transform var(--dur-medium) var(--ease-confident)}.scale-pill-note:hover{background:var(--ink-cream);border-color:var(--ink-black);transform:translateY(-2px)}.scale-pill-active .scale-pill-note{border-color:var(--ink-burgundy);background:var(--ink-cream);transform:translateY(-2px) scale(1.05);box-shadow:0 4px 12px color-mix(in srgb,var(--ink-burgundy) 18%,transparent)}.scale-pill-active .scale-pill-letter{color:var(--ink-burgundy)}.scale-pill-letter{font-family:var(--font-display);font-size:clamp(.8rem,48cqw,2.75rem);font-weight:500;color:var(--ink-black);line-height:1}.scale-pill-accidental{position:absolute;top:14%;right:16%;font-family:var(--font-musical);font-size:clamp(.6rem,32cqw,2rem);color:var(--ink-burgundy);line-height:1}.scale-step{display:flex;align-items:center;justify-content:center;font-family:var(--font-ui);font-size:clamp(.55rem,2.2cqw,1.75rem);font-weight:500;letter-spacing:.2em;color:var(--ink-faint);min-width:clamp(.6rem,4cqw,3rem);text-transform:uppercase}.scale-step-half{color:var(--ink-burgundy)}.action-pills-row{container-type:inline-size;display:flex;justify-content:center;gap:var(--s-4);margin:var(--s-4) 0 var(--s-2)}.action-pill{box-sizing:border-box;padding:0;width:clamp(36px,9cqw,88px);height:auto;aspect-ratio:1 / 1;border:var(--hairline) solid var(--ink-hairline);border-radius:50%;background:var(--ink-paper);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--ink-black);transition:background var(--dur-fast) var(--ease-confident),border-color var(--dur-fast) var(--ease-confident),color var(--dur-fast) var(--ease-confident)}.action-pill:hover{background:var(--ink-cream);border-color:var(--ink-burgundy);color:var(--ink-burgundy)}.action-pill.action-pill-active{border-color:var(--ink-burgundy);color:var(--ink-burgundy);background:var(--ink-cream)}.action-pill svg{width:50%;height:50%}.scale-picker--practice-menu{margin-top:var(--s-3)}.scale-picker--title{margin-top:var(--s-2);margin-bottom:var(--s-2)}.scale-bottom-panel{max-width:52ch;margin:var(--s-8) auto 0;padding-top:var(--s-8);border-top:var(--hairline) solid color-mix(in srgb,var(--ink-hairline) 40%,transparent)}.scale-bottom-panel.scale-pedagogy p{font-family:var(--font-display);font-size:var(--text-lg);line-height:1.65;color:var(--ink-black)}.scale-bottom-panel-stub{text-align:center}.scale-bottom-panel-eyebrow{font-family:var(--font-ui);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.28em;color:var(--ink-faint);margin:0 0 var(--s-3) 0}.scale-bottom-panel-coming{font-family:var(--font-display);font-style:italic;font-size:var(--text-lg);color:var(--ink-muted);margin:0}.scale-bottom-panel-picker{text-align:center}.panel-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--s-2) var(--s-3);margin-top:var(--s-4)}.panel-grid-option{font-family:var(--font-display);font-style:italic;font-size:var(--text-lg);font-weight:500;color:var(--ink-muted);background:transparent;border:none;padding:var(--s-1) var(--s-2);cursor:pointer;letter-spacing:.01em;transition:color var(--dur-fast) var(--ease-confident)}.panel-grid-option:hover{color:var(--ink-burgundy)}.panel-grid-option.panel-grid-option-active{color:var(--ink-black);font-style:normal;border-bottom:var(--hairline) solid var(--ink-burgundy);cursor:default}.panel-grid-option:disabled{cursor:default}.scale-ear-training{text-align:center}.ear-training-indicator{font-family:var(--font-musical);font-size:48px;line-height:1;width:84px;height:84px;margin:var(--s-4) auto var(--s-6);border:var(--hairline) solid var(--ink-hairline);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--ink-muted);transition:color var(--dur-fast) var(--ease-confident),border-color var(--dur-fast) var(--ease-confident),transform var(--dur-fast) var(--ease-confident)}@keyframes ear-training-pulse-a{0%{transform:scale(1);color:var(--ink-muted);border-color:var(--ink-hairline)}15%{transform:scale(1.12);color:var(--ink-burgundy);border-color:var(--ink-burgundy)}to{transform:scale(1);color:var(--ink-muted);border-color:var(--ink-hairline)}}@keyframes ear-training-pulse-b{0%{transform:scale(1);color:var(--ink-muted);border-color:var(--ink-hairline)}15%{transform:scale(1.12);color:var(--ink-burgundy);border-color:var(--ink-burgundy)}to{transform:scale(1);color:var(--ink-muted);border-color:var(--ink-hairline)}}.ear-training-indicator--pulse-a{animation:ear-training-pulse-a .55s var(--ease-confident)}.ear-training-indicator--pulse-b{animation:ear-training-pulse-b .55s var(--ease-confident)}.ear-training-controls{display:flex;flex-direction:column;gap:var(--s-3);max-width:36ch;margin:0 auto}.ear-training-field{display:grid;grid-template-columns:7ch 1fr 6ch;align-items:center;gap:var(--s-3);text-align:left}.ear-training-field-label{font-family:var(--font-ui);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.2em;color:var(--ink-faint)}.ear-training-field-value{font-family:var(--font-display);font-style:italic;font-size:var(--text-base);color:var(--ink-black);text-align:right}.ear-training-slider{-moz-appearance:none;appearance:none;-webkit-appearance:none;background:transparent;height:18px;padding:0;margin:0;cursor:pointer}.ear-training-slider::-webkit-slider-runnable-track{height:1px;background:var(--ink-hairline)}.ear-training-slider::-moz-range-track{height:1px;background:var(--ink-hairline);border:none}.ear-training-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:12px;height:12px;border-radius:50%;background:var(--ink-burgundy);border:none;margin-top:-5.5px}.ear-training-slider::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:var(--ink-burgundy);border:none}.ear-training-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--s-2) var(--s-4);margin-top:var(--s-6)}.ear-training-action,.ear-training-action:hover,.ear-training-action:focus-visible{font-family:var(--font-display);font-style:italic;font-size:var(--text-base);font-weight:500;color:var(--ink-muted);background:transparent;border:none;padding:var(--s-1) var(--s-2);cursor:pointer;letter-spacing:.01em;transition:color var(--dur-fast) var(--ease-confident)}.ear-training-action:hover{color:var(--ink-burgundy)}.ear-training-action--primary{font-style:normal;color:var(--ink-black)}.ear-training-action--active{color:var(--ink-black);border-bottom:var(--hairline) solid var(--ink-burgundy)}.scale-staff-practice{text-align:center}.staff-practice-osmd{width:100%;max-width:100%;min-height:160px;margin:var(--s-4) 0 var(--s-6);overflow-x:auto}.staff-practice-osmd svg{display:block;margin:0 auto}.staff-practice-ambitus{display:grid;grid-template-columns:7ch 1fr 6ch;gap:var(--s-2) var(--s-3);align-items:center;text-align:left}.staff-practice-controls{display:flex;flex-direction:column;gap:var(--s-3);max-width:36ch;margin:0 auto}.staff-practice-directions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--s-1) var(--s-3);margin-bottom:var(--s-2)}.staff-practice-dir,.staff-practice-dir:hover,.staff-practice-dir:focus-visible{font-family:var(--font-display);font-style:italic;font-size:var(--text-base);color:var(--ink-muted);background:transparent;border:none;padding:var(--s-1) var(--s-1);cursor:pointer;transition:color var(--dur-fast) var(--ease-confident)}.staff-practice-dir+.staff-practice-dir:before{content:"·";color:var(--ink-faint);margin-right:var(--s-3)}.staff-practice-dir:hover{color:var(--ink-burgundy)}.staff-practice-dir--active{color:var(--ink-black);font-style:normal;border-bottom:var(--hairline) solid var(--ink-burgundy)}.scale-arpeggios{max-width:none;text-align:center;margin-left:auto;margin-right:auto;container-type:inline-size}.arpeggio-row{display:flex;flex-direction:column;gap:var(--s-2);margin-bottom:var(--s-5)}.arpeggio-row:last-child{margin-bottom:0}.arpeggio-row-label{font-family:var(--font-ui);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.24em;color:var(--ink-faint);margin:0;text-align:center}.arpeggio-pills{display:grid;grid-template-columns:repeat(7,9cqw);gap:var(--s-2)}.arpeggio-pill{display:flex;flex-direction:column;align-items:center;gap:var(--s-1);cursor:pointer}.arpeggio-pill-label{font-family:var(--font-ui);font-size:clamp(.55rem,1.3cqw,var(--text-xs));letter-spacing:.16em;color:var(--ink-faint);text-transform:uppercase}.arpeggio-pill-note{container-type:inline-size;position:relative;width:9cqw;aspect-ratio:1 / 1;border:var(--hairline) solid var(--ink-hairline);border-radius:50%;background:var(--ink-paper);display:flex;align-items:center;justify-content:center;transition:background var(--dur-fast) var(--ease-confident),border-color var(--dur-fast) var(--ease-confident),transform var(--dur-medium) var(--ease-confident)}.arpeggio-pill-note:hover{background:var(--ink-cream);border-color:var(--ink-black);transform:translateY(-2px)}.arpeggio-pill-active .arpeggio-pill-note{border-color:var(--ink-burgundy);background:var(--ink-cream);transform:translateY(-2px) scale(1.05);box-shadow:0 4px 12px color-mix(in srgb,var(--ink-burgundy) 18%,transparent)}.arpeggio-pill-letter{font-family:var(--font-display);font-size:clamp(.8rem,48cqw,2.75rem);font-weight:500;color:var(--ink-black);line-height:1}.arpeggio-pill-active .arpeggio-pill-letter{color:var(--ink-burgundy)}.arpeggio-pill-accidental{position:absolute;top:14%;right:16%;font-family:var(--font-musical);font-size:clamp(.6rem,32cqw,2rem);color:var(--ink-burgundy);line-height:1}.arpeggio-row--faded{opacity:.35;transition:opacity var(--dur-medium) var(--ease-confident);pointer-events:none}.arpeggio-row--faded .arpeggio-row-actions{pointer-events:auto}.arpeggio-row--lifted{transition:background var(--dur-medium) var(--ease-confident)}.arpeggio-row-body{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s-3);flex-wrap:nowrap}.arpeggio-row-actions{display:flex;gap:var(--s-2);align-items:center}.arpeggio-row-action,.arpeggio-row-action:hover,.arpeggio-row-action:focus-visible{width:9cqw;aspect-ratio:1 / 1;padding:0;border:var(--hairline) solid var(--ink-hairline);border-radius:50%;background:var(--ink-paper);color:var(--ink-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background var(--dur-fast) var(--ease-confident),border-color var(--dur-fast) var(--ease-confident),color var(--dur-fast) var(--ease-confident)}.arpeggio-row-action svg{width:55%;height:55%;display:block}.arpeggio-row-action:hover{color:var(--ink-burgundy);border-color:var(--ink-burgundy)}.arpeggio-row-action--active,.arpeggio-row-action--active:hover{border-color:var(--ink-burgundy);background:var(--ink-cream);color:var(--ink-burgundy)}.arpeggio-lift-body{margin-top:var(--s-4);padding-top:var(--s-4);border-top:var(--hairline) solid color-mix(in srgb,var(--ink-hairline) 40%,transparent)}
