:root{--bg-primary:#f7f5ef;--bg-secondary:#fffefa;--bg-tertiary:#f1efe9;--bg-card:#fffefa;--bg-glass:#fffefaf0;--text-primary:#101827;--text-secondary:#465267;--text-muted:#657080;--accent-primary:#087f82;--accent-primary-glow:#087f8224;--accent-secondary:#0b9294;--accent-success:#087f82;--accent-success-glow:#087f8229;--accent-error:#b83f2d;--accent-error-surface:#f35f45;--accent-error-glow:#f35f452e;--accent-warning:#a86814;--accent-rest:#657080;--demo-key-light:#ffe7a3;--demo-key:#f2b43d;--demo-key-dark:#b96e08;--demo-key-glow:#f2b43d80;--border-subtle:#e7e5df;--border-medium:#d8d5cc;--shadow-sm:0 2px 8px #141f2b0f;--shadow-md:0 8px 24px #141f2b12, 0 1px 3px #141f2b0f;--shadow-lg:0 18px 46px #141f2b24;--shadow-glow:0 6px 14px #087f8233;--font-sans:"Avenir Next", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:Menlo, Monaco, Consolas, "Liberation Mono", monospace;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--transition-fast:.15s ease;--transition-base:.25s ease;--transition-slow:.4s ease}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100%;font-size:16px}body{font-family:var(--font-sans);color:var(--text-primary);background:#e9e6df;min-height:100dvh;line-height:1.5;overflow-x:hidden}body:before{content:none}@keyframes ambientFloat{0%{transform:translate(0)rotate(0)}to{transform:translate(-20px,10px)rotate(2deg)}}.app-container{width:min(1440px,100%);max-width:none;padding:max(14px, env(safe-area-inset-top)) max(22px, env(safe-area-inset-right)) max(18px, env(safe-area-inset-bottom)) max(22px, env(safe-area-inset-left));background:radial-gradient(circle at 75% 6%, #ffffffe6, transparent 29%), var(--bg-primary);flex-direction:column;min-height:100dvh;margin:0 auto;display:flex}.app-container--ipad-wide{max-width:none}.app-header{justify-content:space-between;align-items:center;min-height:76px;margin-bottom:0;padding:8px 0 12px;display:flex}.app-header__title{letter-spacing:-.035em;align-items:center;gap:13px;font-size:1.62rem;font-weight:700;display:flex}.app-header__icon{color:#fff;background:linear-gradient(145deg,#14a4a4,#006c71);border-radius:14px;place-items:center;width:48px;height:48px;display:grid;box-shadow:0 7px 16px #0070743b}.app-header__icon svg{fill:currentColor;stroke:none;width:27px;height:27px}.app-header__actions{align-items:center;gap:8px;display:flex}.midi-indicator{border-radius:var(--radius-sm);cursor:default;width:32px;height:32px;transition:all var(--transition-fast);justify-content:center;align-items:center;font-size:1rem;display:flex}.midi-connected{border:1px solid var(--accent-success);background:#34d39926;animation:2s ease-in-out infinite midi-pulse}.midi-disconnected{background:var(--bg-card);border:1px solid var(--border-subtle);opacity:.4;filter:grayscale()}.midi-denied,.midi-unsupported{display:none!important}@keyframes midi-pulse{0%,to{box-shadow:0 0 #34d3994d}50%{box-shadow:0 0 8px 2px #34d39933}}.icon-btn{border:1px solid var(--border-subtle);color:var(--text-primary);cursor:pointer;width:48px;height:48px;transition:all var(--transition-fast);box-shadow:var(--shadow-sm);background:#fffefaf0;border-radius:14px;justify-content:center;align-items:center;display:flex}.kids-entry{color:#5a4415;white-space:nowrap;background:linear-gradient(#ffd166,#ffb703);border-radius:14px;align-items:center;gap:7px;height:48px;padding:0 16px;font-size:.9rem;font-weight:700;text-decoration:none;display:inline-flex;box-shadow:0 3px #5a441540}.kids-entry svg{fill:currentColor;width:17px;height:17px}.kids-entry:active{transform:translateY(2px);box-shadow:0 1px #5a441540}.icon-btn svg,.midi-indicator svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:23px;height:23px}.icon-btn:hover{color:var(--accent-primary);border-color:var(--border-subtle);box-shadow:var(--shadow-sm);background:#fff;transform:translateY(-1px)}.main-content{flex-direction:column;flex:1;gap:12px;padding-top:12px;display:flex}.staff-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);transition:box-shadow var(--transition-base);box-shadow:var(--shadow-md);padding:18px 22px;position:relative;overflow:visible}.staff-card:before{content:none}.staff-card.flash-correct{animation:.5s ease-out flashCorrect}.staff-card.flash-wrong{animation:.5s ease-out flashWrong}@keyframes flashCorrect{0%{box-shadow:0 0 0 0 var(--accent-success-glow)}30%{box-shadow:0 0 30px 4px var(--accent-success-glow)}to{box-shadow:none}}@keyframes flashWrong{0%{box-shadow:0 0 0 0 var(--accent-error-glow)}30%{box-shadow:0 0 30px 4px var(--accent-error-glow)}to{box-shadow:none}}.staff-label{font-size:.75rem;font-family:var(--font-sans);color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:12px}.feedback-area{opacity:0;height:40px;transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex;transform:translateY(-8px)}.feedback-area.show{opacity:1;transform:translateY(0)}.feedback-correct{color:var(--accent-success);font-size:1.1rem;font-weight:600;animation:.3s ease-out popIn}.feedback-wrong{color:var(--accent-error);font-size:.95rem;font-weight:500;animation:.3s ease-out popIn}.feedback-rest{color:var(--accent-rest);font-size:.9rem;font-weight:500}@keyframes popIn{0%{opacity:0;transform:scale(.8)}60%{transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.answer-section{flex-direction:column;gap:12px;display:flex}.answer-section__label{font-size:.75rem;font-family:var(--font-sans);color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.answer-grid{grid-template-columns:repeat(7,1fr);gap:8px;display:grid}.answer-grid--interval{grid-template-columns:repeat(auto-fill,minmax(58px,1fr))}.answer-btn--sm{padding:10px 0;font-size:.85rem}.replay-btn{background:var(--accent-primary-glow);border:1px solid var(--accent-primary);border-radius:var(--radius-sm);color:var(--accent-primary);cursor:pointer;transition:all var(--transition-fast);vertical-align:middle;justify-content:center;align-items:center;gap:4px;min-width:44px;min-height:44px;margin-left:8px;padding:3px 10px;font-size:.7rem;font-weight:600;display:inline-flex}.replay-btn:hover{background:var(--accent-primary);color:#fff}.answer-btn{background:var(--bg-tertiary);border:1px solid var(--border-subtle);color:var(--text-primary);border-radius:var(--radius-md);cursor:pointer;font-family:var(--font-sans);transition:all var(--transition-fast);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;flex-direction:column;align-items:center;gap:2px;padding:14px 0;font-size:1rem;font-weight:600;display:flex;position:relative}.answer-btn__vi{font-size:1rem;font-weight:600}.answer-btn__int{font-size:.65rem;font-family:var(--font-mono);color:var(--text-muted);font-weight:400}.answer-btn:hover:not(.disabled){background:var(--accent-primary);border-color:var(--accent-primary);color:#fff;box-shadow:var(--shadow-glow);transform:translateY(-2px)}.answer-btn:hover:not(.disabled) .answer-btn__int{color:#ffffffb3}.answer-btn:active:not(.disabled){box-shadow:none;transform:translateY(0)}.answer-btn.disabled{opacity:.4;cursor:not-allowed}.xp-bar-container{background:0 0;border:0;border-radius:0;min-width:280px;margin:0;padding:0}.workspace-context__progress-head{align-items:center;gap:8px;margin-bottom:10px;display:flex}.level-badge{font-family:var(--font-mono);color:var(--accent-primary);white-space:nowrap;background:0 0;border-radius:0;padding:0;font-size:.8rem;font-weight:700}.xp-bar{background:#e5e5e1;border-radius:999px;height:6px;overflow:hidden}.xp-bar__fill{background:var(--accent-primary);border-radius:3px;width:0%;height:100%;transition:width .4s cubic-bezier(.25,.46,.45,.94)}.xp-text{font-family:var(--font-mono);color:var(--text-secondary);white-space:nowrap;font-size:.7rem}.daily-streak{color:var(--accent-warning);white-space:nowrap;font-size:.8rem;font-weight:600}.gamification-toast{border-radius:var(--radius-md);z-index:10000;pointer-events:none;opacity:0;padding:10px 24px;font-size:.95rem;font-weight:600;transition:transform .4s cubic-bezier(.34,1.56,.64,1),opacity .3s;position:fixed;top:20px;left:50%;transform:translate(-50%)translateY(-100px)}.gamification-toast.toast-visible{opacity:1;transform:translate(-50%)translateY(0)}.toast-level-up{background:linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));color:#fff;box-shadow:var(--shadow-glow)}.toast-achievement{color:#fff;background:linear-gradient(135deg,#f59e0b,#d97706);box-shadow:0 4px 20px #f59e0b66}.stats-bar{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.stat-item{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);text-align:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:10px}.stat-item__icon{margin-bottom:2px;font-size:.9rem}.stat-item__value{font-size:1rem;font-weight:700;font-family:var(--font-mono);color:var(--text-primary)}.stat-item__label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-top:2px;font-size:.65rem}.settings-backdrop{z-index:90;opacity:0;pointer-events:none;transition:opacity var(--transition-base);background:#00000080;position:fixed;inset:0}.settings-backdrop.open{opacity:1;pointer-events:all}.settings-panel{background:var(--bg-secondary);border-left:1px solid var(--border-subtle);z-index:100;width:340px;max-width:90vw;transition:transform var(--transition-slow);flex-direction:column;gap:24px;padding:24px;display:flex;position:fixed;top:0;bottom:0;right:0;overflow-y:auto;transform:translate(100%)}.settings-panel.open{transform:translate(0)}.settings-header{justify-content:space-between;align-items:center;display:flex}.settings-header h2{font-size:1.1rem;font-weight:700}.settings-close{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:4px;font-size:1.3rem;display:inline-flex}.settings-section{flex-direction:column;gap:10px;display:flex}.settings-section__title{color:var(--text-secondary);align-items:center;gap:6px;font-size:.8rem;font-weight:600;display:flex}.settings-section__title span{font-size:1rem}.toggle-row{justify-content:space-between;align-items:center;min-height:44px;display:flex}.toggle-row__label{color:var(--text-primary);font-size:.875rem}.toggle-switch{flex:0 0 44px;width:44px;height:44px;position:relative}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{cursor:pointer;background:var(--bg-tertiary);border:1px solid var(--border-medium);transition:all var(--transition-fast);border-radius:22px;position:absolute;inset:11px 2px}.toggle-slider:before{content:"";background:var(--text-secondary);width:16px;height:16px;transition:all var(--transition-fast);border-radius:50%;position:absolute;bottom:2px;left:2px}.toggle-switch input:checked+.toggle-slider{background:var(--accent-primary);border-color:var(--accent-primary)}.toggle-switch input:checked+.toggle-slider:before{background:#fff;transform:translate(18px)}.radio-group{gap:6px;display:flex}.radio-btn{background:var(--bg-tertiary);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);min-height:44px;color:var(--text-secondary);cursor:pointer;text-align:center;transition:all var(--transition-fast);flex:1;padding:8px;font-size:.8rem;font-weight:500}.radio-btn input{display:none}.radio-btn:has(input:checked){background:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.volume-control{align-items:center;gap:10px;display:flex}.volume-control__label{font-size:.9rem}.volume-slider{appearance:none;background:linear-gradient(transparent 20px, var(--bg-tertiary) 20px 24px, transparent 24px);border-radius:2px;outline:none;flex:1;min-height:44px}.volume-slider::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent-primary);cursor:pointer;width:28px;height:28px;transition:transform var(--transition-fast);border-radius:50%}.volume-slider::-webkit-slider-thumb:hover{transform:scale(1.2)}.btn-reset{background:var(--bg-tertiary);border:1px solid var(--border-medium);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);width:100%;min-height:44px;padding:10px;font-size:.85rem;font-weight:500}.btn-reset:hover{background:var(--accent-error);border-color:var(--accent-error);color:#fff}.mode-tabs{background:var(--bg-secondary);border:1px solid var(--border-subtle);box-shadow:var(--shadow-md);border-radius:19px;grid-template-columns:repeat(10,minmax(0,1fr));gap:4px;margin-bottom:0;padding:8px;display:grid}.mode-tab{cursor:pointer;min-width:0;position:relative}.mode-tab input{opacity:0;clip-path:inset(50%);width:1px;height:1px;margin:0;position:absolute;overflow:hidden}.mode-tab span{min-height:60px;color:var(--text-secondary);text-align:center;transition:color var(--transition-fast), background var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast);border-radius:13px;justify-content:center;align-items:center;gap:7px;padding:8px 6px;font-size:.78rem;font-weight:600;display:flex}.mode-tab b{font:inherit}.mode-tab svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:21px;height:21px}.mode-tab input:checked+span{background:var(--accent-primary);color:#fff;box-shadow:0 2px 8px var(--accent-primary-glow)}.mode-tab input:focus-visible+span{outline-offset:2px;outline:3px solid #087f8247}.mode-tab:hover span{color:var(--accent-primary);background:#f4f7f4}.mode-tab input:checked+span:hover{color:#fff;background:var(--accent-primary)}.workspace-context{background:var(--bg-secondary);border:1px solid var(--border-subtle);min-height:112px;box-shadow:var(--shadow-md);border-radius:22px;grid-template-columns:minmax(0,1fr) minmax(280px,340px);align-items:center;gap:32px;margin-top:12px;padding:18px 24px;display:grid}.audio-lab{background:var(--bg-secondary);border:1px solid var(--border-subtle);box-shadow:var(--shadow-md);border-radius:22px;gap:18px;padding:24px;display:grid}.audio-lab[hidden]{display:none}.audio-lab__intro{justify-content:space-between;align-items:center;gap:24px;display:flex}.audio-lab__intro h2{margin:4px 0 8px}.audio-lab__intro p{color:var(--text-secondary);margin:0}.audio-lab__status{color:var(--text-secondary);background:var(--bg-tertiary);border-radius:12px;margin:0;padding:12px 14px}.audio-lab__status[data-state=ready]{color:var(--accent-success)}.audio-lab__status[data-state=error]{color:var(--accent-error)}.audio-lab__table{border:1px solid var(--border-subtle);border-radius:14px;overflow:hidden}.audio-lab__head,.audio-lab__row{grid-template-columns:minmax(150px,1.2fr) repeat(2,minmax(150px,1fr));align-items:center;gap:12px;padding:12px 14px;display:grid}.audio-lab__head{color:var(--text-secondary);background:var(--bg-tertiary);font-size:.78rem;font-weight:700}.audio-lab__row+.audio-lab__row{border-top:1px solid var(--border-subtle)}.audio-lab__row .learning-btn{width:100%}.audio-lab__credit{color:var(--text-muted);margin:0;font-size:.78rem;line-height:1.6}.audio-lab__credit a{color:var(--accent-primary)}.app-update-banner{z-index:100;padding:10px max(16px, env(safe-area-inset-right)) 10px max(16px, env(safe-area-inset-left));border-bottom:1px solid var(--border-medium);background:var(--bg-card);color:var(--text-primary);box-shadow:var(--shadow-sm);justify-content:center;align-items:center;gap:12px;display:flex;position:sticky;top:0}.app-update-banner[hidden]{display:none}.app-update-banner span{color:var(--text-secondary);font-size:.85rem}.workspace-context__copy{min-width:0}.workspace-context__eyebrow{color:var(--accent-primary);letter-spacing:.015em;text-transform:none;margin:0 0 5px;font-size:.74rem;font-weight:700}.workspace-context h1{color:var(--text-primary);letter-spacing:-.035em;margin:0;font-size:clamp(1.35rem,2.2vw,1.75rem);line-height:1.12}.workspace-context__copy>p:last-child{max-width:720px;color:var(--text-secondary);margin:7px 0 0;font-size:.86rem;line-height:1.45}.countdown-bar{background:var(--bg-tertiary);border-radius:3px;height:6px;margin-bottom:8px;position:relative;overflow:hidden}.countdown-bar__fill{border-radius:3px;height:100%;transition:width .1s linear}.countdown-bar__fill--ok{background:var(--accent-success)}.countdown-bar__fill--warn{background:var(--accent-warning)}.countdown-bar__fill--danger{background:var(--accent-error);animation:.4s infinite alternate pulse-danger}@keyframes pulse-danger{0%{opacity:.7}to{opacity:1}}.countdown-bar__label{font-size:.65rem;font-family:var(--font-mono);color:var(--text-muted);position:absolute;top:-18px;right:4px}.learning-controls{justify-content:center;gap:10px;margin:12px 0;display:flex}.learning-btn{border:1px solid var(--border-medium);border-radius:var(--radius-md);background:var(--bg-tertiary);min-height:44px;color:var(--text-primary);cursor:pointer;transition:var(--transition-fast);padding:10px 20px;font-size:.85rem}.learning-btn:hover{background:var(--bg-card);border-color:var(--accent-primary)}.learning-btn--primary{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.learning-btn--primary:hover{filter:brightness(1.15)}.slider-row{align-items:center;gap:10px;padding:6px 0;display:flex}.settings-slider{appearance:none;background:linear-gradient(transparent 20px, var(--bg-tertiary) 20px 24px, transparent 24px);border-radius:2px;outline:none;flex:1;min-height:44px}.settings-slider::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent-primary);cursor:pointer;width:28px;height:28px;box-shadow:0 0 4px var(--accent-primary-glow);border-radius:50%}.slider-value{font-family:var(--font-mono);color:var(--text-secondary);text-align:right;min-width:40px;font-size:.75rem}.settings-hint{color:var(--text-muted);padding:2px 0 4px;font-size:.7rem;font-style:italic}.octave-presets{grid-template-columns:repeat(3,1fr);gap:6px;margin:8px 0;display:grid}.octave-preset{border:1px solid var(--border-medium);border-radius:var(--radius-md);background:var(--bg-tertiary);cursor:pointer;min-height:44px;transition:var(--transition-fast);flex-direction:column;align-items:center;padding:8px 4px;display:flex}.octave-preset:hover{border-color:var(--accent-primary);background:var(--bg-card)}.octave-preset.active{border-color:var(--accent-primary);background:var(--accent-primary-glow);box-shadow:0 0 0 1px var(--accent-primary)}.octave-preset__label{color:var(--text-primary);font-size:.8rem;font-weight:600}.octave-preset.active .octave-preset__label{color:var(--accent-primary)}.octave-preset__desc{color:var(--text-muted);margin-top:2px;font-size:.6rem}.octave-custom-range{gap:12px;padding:8px 0;display:flex}.octave-custom-range label{color:var(--text-secondary);align-items:center;gap:6px;font-size:.8rem;display:flex}.octave-custom-range select{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-medium);border-radius:var(--radius-sm);padding:4px 8px;font-size:.8rem}.stats-modal{z-index:100;opacity:0;pointer-events:none;transition:opacity var(--transition-base);background:#0009;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.stats-modal.open{opacity:1;pointer-events:all}.stats-modal__content{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);width:100%;max-width:480px;max-height:80vh;transition:transform var(--transition-base);padding:28px;overflow-y:auto;transform:scale(.95)translateY(10px)}.stats-modal.open .stats-modal__content{transform:scale(1)translateY(0)}.stats-modal__header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.stats-modal__header h2{font-size:1.15rem;font-weight:700}.stats-grid{grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:20px;display:grid}.stats-grid__item{background:var(--bg-tertiary);border-radius:var(--radius-sm);text-align:center;padding:12px}.stats-grid__value{font-size:1.4rem;font-weight:700;font-family:var(--font-mono);color:var(--accent-primary)}.stats-grid__label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-top:4px;font-size:.7rem}.stats-table{border-collapse:collapse;width:100%;font-size:.85rem}.stats-table th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);border-bottom:1px solid var(--border-subtle);padding:8px;font-size:.7rem;font-weight:600}.stats-table td{border-bottom:1px solid var(--border-subtle);color:var(--text-secondary);padding:8px}.stats-table tr:last-child td{border-bottom:none}.accuracy-badge{font-size:.75rem;font-weight:600;font-family:var(--font-mono);border-radius:10px;padding:2px 8px;display:inline-block}.accuracy-badge.good{color:var(--accent-success);background:#34d39926}.accuracy-badge.ok{color:var(--accent-warning);background:#fbbf2426}.accuracy-badge.bad{color:var(--accent-error);background:#f8717126}.accuracy-badge.none{background:var(--bg-tertiary);color:var(--text-muted)}.weak-notes-badges{flex-wrap:wrap;gap:6px;display:flex}.weak-note-badge{color:var(--accent-error);background:#f871711f;border:1px solid #f8717133;border-radius:12px;align-items:center;gap:4px;padding:4px 10px;font-size:.8rem;font-weight:600;display:inline-flex}.weak-note-badge .weak-note-pct{font-size:.7rem;font-family:var(--font-mono);opacity:.7}.stats-modal__actions{gap:8px;margin-top:16px;display:flex}.stats-modal__actions button{flex:1}.staff-fallback{color:var(--text-secondary);justify-content:center;align-items:center;gap:16px;padding:30px;display:flex}.staff-fallback__clef{font-size:3rem}.staff-fallback__note{color:var(--accent-primary);font-size:2.5rem}.staff-fallback__label{font-family:var(--font-sans);font-size:.9rem}.keyboard-hint{text-align:center;color:var(--text-muted);font-size:.7rem;font-family:var(--font-sans)}.keyboard-hint kbd{background:var(--bg-tertiary);border:1px solid var(--border-medium);font-size:.65rem;font-family:var(--font-mono);color:var(--text-secondary);border-radius:3px;margin:0 1px;padding:1px 5px;display:inline-block}.stats-tabs{border-bottom:1px solid var(--border-subtle);gap:4px;margin-bottom:16px;padding-bottom:0;display:flex}.stats-tab{min-height:44px;color:var(--text-muted);cursor:pointer;transition:var(--transition-fast);background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:8px 12px;font-size:.8rem;font-weight:500}.stats-tab:hover{color:var(--text-secondary)}.stats-tab.active{color:var(--accent-primary);border-bottom-color:var(--accent-primary)}.history-chart{padding:8px 0}.history-chart__svg{width:100%;height:auto}.history-chart__grid-label{fill:var(--text-muted);font-size:8px;font-family:var(--font-mono)}.history-chart__date-label{fill:var(--text-muted);font-size:7px;font-family:var(--font-mono);text-anchor:middle}.history-chart__bar{transition:opacity .15s}.history-chart__bar:hover{opacity:1!important}.history-summary{text-align:center;color:var(--text-secondary);padding:8px 0;font-size:.75rem}.history-summary strong{color:var(--text-primary)}.history-empty{text-align:center;color:var(--text-muted);padding:32px 16px;font-size:.85rem}.trend-up{color:var(--accent-success);font-weight:600}.trend-down{color:var(--accent-error);font-weight:600}.trend-flat{color:var(--text-muted)}.lesson-list{flex-direction:column;gap:6px;max-height:60vh;padding:4px 0;display:flex;overflow-y:auto}.lesson-unit-header{color:var(--accent-primary);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border-subtle);margin-bottom:4px;padding:12px 0 4px;font-size:.75rem;font-weight:700}.lesson-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);cursor:pointer;text-align:left;font-family:var(--font-sans);transition:all var(--transition-fast);width:100%;color:var(--text-primary);align-items:center;gap:10px;padding:10px 14px;display:flex}.lesson-card:hover:not([disabled]){border-color:var(--accent-primary);transform:translate(4px)}.lesson-card--locked{opacity:.4;cursor:not-allowed}.lesson-card--done{background:#10b9810d;border-color:#10b9814d}.lesson-card__icon{flex-shrink:0;font-size:1.3rem}.lesson-card__title{font-size:.9rem;font-weight:600}.lesson-card__desc{color:var(--text-muted);margin-top:2px;font-size:.7rem}.lesson-active__header{align-items:center;gap:10px;margin-bottom:8px;display:flex}.lesson-back-btn{background:var(--bg-tertiary);border:1px solid var(--border-subtle);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast);padding:4px 10px;font-size:.8rem}.lesson-back-btn:hover{background:var(--accent-primary);color:#fff}.lesson-active__title{color:var(--text-primary);font-size:.95rem;font-weight:600}.lesson-progress-bar{background:var(--bg-tertiary);border-radius:3px;height:6px;margin-bottom:4px;overflow:hidden}.lesson-progress-bar__fill{background:linear-gradient(90deg, var(--accent-primary), #10b981);border-radius:3px;width:0%;height:100%;transition:width .4s}.lesson-progress-text{font-family:var(--font-mono);color:var(--text-muted);text-align:center;font-size:.7rem}.song-practice{flex-direction:column;gap:14px;min-width:0;display:flex}.song-practice__panel,.song-score-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);min-width:0;padding:18px}.song-practice__header{grid-template-columns:minmax(140px,.55fr) minmax(220px,.9fr) minmax(0,1.7fr);align-items:end;gap:16px;display:grid}.song-practice__identity h2{font-size:1rem;line-height:1.35}.song-practice__metadata{color:var(--text-secondary);margin-top:3px;font-size:.82rem}.song-practice__notice{color:var(--accent-warning);margin-top:5px;font-size:.7rem}.song-practice__controls{grid-template-columns:minmax(180px,1.3fr) minmax(130px,.8fr) minmax(180px,1fr) auto;align-items:end;gap:10px;margin-top:14px;display:grid}.song-control{min-width:0;color:var(--text-secondary);flex-direction:column;gap:5px;font-size:.72rem;font-weight:600;display:flex}.song-control select,.song-tempo-control__actions,.song-loop-control{min-height:44px;color:var(--text-primary);background:var(--bg-tertiary);border:1px solid var(--border-medium);border-radius:var(--radius-sm)}.song-control select{width:100%;font:inherit;padding:0 12px;font-size:1rem}.song-tempo-control__actions{grid-template-columns:44px minmax(72px,1fr) 44px;align-items:center;display:grid;overflow:hidden}.song-tempo-control__actions button{min-width:44px;height:44px;color:var(--text-primary);cursor:pointer;background:0 0;border:0;font-size:1.1rem}.song-tempo-control__actions button:not(:disabled):hover{background:var(--accent-primary-glow)}.song-tempo-control__actions output{text-align:center;color:var(--text-primary);font-family:var(--font-mono);font-size:.75rem}.song-loop-control{white-space:nowrap;cursor:pointer;align-items:center;gap:8px;padding:0 12px;font-size:.78rem;display:flex}.song-loop-control input{width:20px;height:20px;accent-color:var(--accent-primary)}.song-practice__actions{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.song-practice__actions .learning-btn{min-height:44px}.song-action-button{justify-content:center;align-items:center;gap:8px;min-height:44px;display:inline-flex}.song-action-button svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:0 0 19px;width:19px;height:19px}.song-action-button:not(:disabled):active{transform:translateY(1px)}.song-action-button:focus-visible{outline:3px solid var(--accent-primary-glow);outline-offset:2px}.song-action-button:disabled{opacity:.48;cursor:not-allowed}.song-practice__feedback{grid-template-columns:minmax(160px,1fr) minmax(180px,2fr) auto;align-items:center;gap:10px;margin-top:12px;display:grid}.song-practice__status,.song-practice__progress-text{color:var(--text-secondary);font-size:.75rem}.song-practice__status[data-error=true]{color:var(--accent-error)}.song-practice__attempt{min-height:1.2em;color:var(--text-secondary);margin-top:8px;font-size:.75rem}.song-practice__attempt[data-correct=true]{color:var(--accent-success)}.song-practice__attempt[data-correct=false]{color:var(--accent-error)}.song-practice__progress{background:var(--bg-tertiary);border-radius:999px;height:8px;overflow:hidden}.song-practice__progress-fill{background:linear-gradient(90deg, var(--accent-primary), var(--accent-success));width:0;height:100%;transition:width var(--transition-fast)}.song-practice__progress-text{text-align:right;min-width:54px;font-family:var(--font-mono)}.song-practice__summary{background:var(--bg-tertiary);border:1px solid var(--border-medium);border-radius:var(--radius-sm);grid-template-columns:minmax(150px,1fr) minmax(260px,2fr) minmax(180px,1.2fr) auto;align-items:center;gap:12px;margin-top:14px;padding:12px;display:grid}.song-practice__summary[hidden]{display:none}.song-practice__summary h3{font-size:.85rem}.song-practice__summary p{color:var(--text-secondary);margin-top:3px;font-size:.72rem}.song-practice__metrics{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.song-practice__metrics div{text-align:center;background:var(--bg-secondary);border-radius:var(--radius-sm);padding:8px}.song-practice__metrics dt{color:var(--text-secondary);font-size:.65rem}.song-practice__metrics dd{color:var(--text-primary);font-family:var(--font-mono);margin-top:2px;font-weight:700}.song-score-card.staff-card{background:var(--bg-card);box-shadow:var(--shadow-md);padding:18px 22px;overflow:hidden}.song-score-viewport{color:#111;border-radius:var(--radius-sm);background:#fff;width:100%;min-width:0;min-height:240px;padding:8px 0 2px;overflow:hidden}.song-score-viewport svg{max-width:100%;height:auto;display:block}.song-compat-controls{clip-path:inset(50%);width:1px;height:1px;position:fixed;overflow:hidden}.song-library,.song-detail{min-width:0}.song-library__heading,.song-detail__identity,.song-roadmap__heading{justify-content:space-between;align-items:center;gap:20px;display:flex}.song-library__heading h2,.song-detail__identity h2{letter-spacing:-.025em;margin-top:3px;font-size:clamp(1.25rem,2vw,1.75rem);line-height:1.2}.song-library__heading>div>p:last-child{max-width:680px;color:var(--text-secondary);margin-top:7px;font-size:.88rem}.song-library__eyebrow{color:var(--accent-primary);letter-spacing:.08em;text-transform:uppercase;font-size:.7rem;font-weight:700}.song-level-filters{scrollbar-width:thin;gap:7px;margin-top:18px;padding-bottom:3px;display:flex;overflow-x:auto}.song-level-filters button,.song-detail__back{border:1px solid var(--border-medium);min-height:44px;color:var(--text-secondary);background:var(--bg-secondary);font:inherit;white-space:nowrap;cursor:pointer;transition:color var(--transition-fast), background var(--transition-fast), border-color var(--transition-fast);border-radius:999px;padding:0 14px;font-size:.76rem;font-weight:600}.song-level-filters button[aria-pressed=true]{color:#fff;background:var(--accent-primary);border-color:var(--accent-primary)}.song-library__grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px;display:grid}.song-card{border:1px solid var(--border-subtle);border-radius:var(--radius-lg);min-width:0;color:var(--text-primary);background:var(--bg-card);box-shadow:var(--shadow-sm);text-align:left;font:inherit;cursor:pointer;transition:transform var(--transition-base), border-color var(--transition-base), box-shadow var(--transition-base);padding:16px}.song-card:hover{border-color:var(--accent-primary);box-shadow:var(--shadow-md);transform:translateY(-2px)}.song-card__top,.song-card__progress-label{justify-content:space-between;align-items:center;gap:10px;display:flex}.song-card__level{color:var(--accent-primary);font-size:.72rem;font-weight:700}.song-card__duration{color:var(--text-muted);font-family:var(--font-mono);font-size:.68rem}.song-card h3{margin-top:10px;font-size:1rem;line-height:1.35}.song-card__badges{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.song-card__badges span,.song-card__skills span{color:var(--text-secondary);background:var(--bg-tertiary);border-radius:6px;padding:4px 7px;font-size:.66rem;font-weight:600}.song-card__skills{flex-wrap:wrap;gap:5px;margin-top:9px;display:flex}.song-card__progress-label{color:var(--text-muted);margin-top:14px;font-size:.68rem}.song-card__progress{background:var(--bg-tertiary);border-radius:999px;height:5px;margin-top:6px;overflow:hidden}.song-card__progress span{background:var(--accent-primary);height:100%;display:block}.song-library__empty{border:1px dashed var(--border-medium);border-radius:var(--radius-lg);color:var(--text-secondary);text-align:center;margin-top:18px;padding:24px}.song-detail__back{border-radius:var(--radius-sm);margin-bottom:12px}.song-detail__identity{align-items:flex-start}.song-detail__identity .song-card__badges{justify-content:flex-end;max-width:48%;margin-top:0}.song-detail__workspace{grid-template-columns:minmax(210px,.65fr) minmax(0,2fr);gap:12px;margin-top:14px;display:grid}.song-roadmap,.song-practice__panel{border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:var(--bg-card);min-width:0;padding:16px}.song-roadmap h3{font-size:.9rem}.song-roadmap output{color:var(--accent-primary);font-family:var(--font-mono);font-weight:700}.song-roadmap ol{gap:7px;margin-top:12px;list-style:none;display:grid;position:relative}.song-roadmap ol:before{content:"";background:var(--border-medium);width:2px;position:absolute;top:16px;bottom:16px;left:15px}.song-roadmap button{width:100%;min-height:44px;color:var(--text-secondary);text-align:left;font:inherit;cursor:pointer;background:0 0;border:0;grid-template-columns:32px minmax(0,1fr);align-items:center;gap:9px;font-size:.75rem;display:grid;position:relative}.song-roadmap__marker{z-index:1;border:2px solid var(--border-medium);background:var(--bg-card);width:32px;height:32px;font-family:var(--font-mono);border-radius:50%;place-items:center;font-size:.68rem;display:grid}.song-roadmap button[data-complete=true]{color:var(--text-primary)}.song-roadmap button[data-complete=true] .song-roadmap__marker{color:#fff;border-color:var(--accent-primary);background:var(--accent-primary)}.song-roadmap>p{color:var(--text-muted);margin-top:12px;font-size:.66rem}.song-practice__progress-fill{background:var(--accent-primary)}.song-card:focus-visible,.song-level-filters button:focus-visible,.song-detail__back:focus-visible,.song-roadmap button:focus-visible{outline:3px solid var(--accent-primary-glow);outline-offset:2px}@media (width<=820px){.song-library__grid{grid-template-columns:repeat(2,minmax(0,1fr))}.song-detail__workspace{grid-template-columns:1fr}.song-roadmap ol{grid-template-columns:repeat(2,minmax(0,1fr))}.song-roadmap ol:before{content:none}.song-practice__header,.song-practice__controls{grid-template-columns:1fr 1fr}.song-practice__identity{grid-column:1/-1}.song-practice__feedback{grid-template-columns:1fr auto}.song-practice__status{grid-column:1/-1}.song-practice__summary{grid-template-columns:1fr 1fr}.song-practice__summary>:first-child,.song-practice__metrics{grid-column:1/-1}}@media (width<=480px){.app-update-banner{flex-wrap:wrap;justify-content:flex-start}.app-update-banner .learning-btn{margin-left:auto}.song-library__heading,.song-detail__identity{flex-direction:column;align-items:stretch}.song-library__heading .learning-btn{width:100%}.song-library__grid,.song-roadmap ol{grid-template-columns:1fr}.song-detail__identity .song-card__badges{justify-content:flex-start;max-width:none}.song-practice__header,.song-practice__controls,.song-practice__feedback{grid-template-columns:1fr}.song-practice__progress-text{text-align:left}.song-practice__summary,.song-practice__metrics{grid-template-columns:1fr}.song-practice__summary>*,.song-practice__metrics{grid-column:auto}.song-score-viewport{min-height:180px;padding-inline:0}.song-score-card.staff-card{padding:16px}}.analytics-modal{z-index:2000;opacity:0;transition:opacity .3s;position:fixed;inset:0}.analytics-modal.analytics-visible{opacity:1}.analytics-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0009;position:absolute;inset:0}.analytics-panel{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);width:min(95vw,540px);max-height:85vh;box-shadow:var(--shadow-elevated);padding:20px;position:absolute;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%)}.analytics-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.analytics-header h2{color:var(--text-primary);margin:0;font-size:1.1rem;font-weight:600}.analytics-close{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);min-width:44px;min-height:44px;transition:background var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:4px 8px;font-size:1.2rem;display:inline-flex}.analytics-close:hover{background:var(--bg-tertiary);color:var(--text-primary)}.analytics-summary{grid-template-columns:repeat(auto-fit,minmax(80px,1fr));gap:10px;margin-bottom:20px;display:grid}.analytics-stat{text-align:center;background:var(--bg-tertiary);border-radius:var(--radius-sm);padding:10px 4px}.analytics-stat__value{color:var(--accent-primary);font-size:1.3rem;font-weight:700;font-family:var(--font-mono)}.analytics-stat__label{color:var(--text-muted);margin-top:2px;font-size:.65rem}.analytics-chart-section{margin-bottom:18px}.analytics-chart-section h3{color:var(--text-secondary);margin:0 0 8px;font-size:.8rem;font-weight:600}.analytics-chart-section canvas{border-radius:var(--radius-sm);background:var(--bg-tertiary);width:100%}.note-heatmap{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.heatmap-note{border-radius:var(--radius-sm);flex-direction:column;align-items:center;gap:2px;padding:8px 4px;display:flex}.heatmap-note__name{color:var(--text-primary);font-size:.85rem;font-weight:600}.heatmap-note__pct{font-size:.8rem;font-family:var(--font-mono);color:var(--text-primary);font-weight:700}.heatmap-note__count{color:var(--text-muted);font-size:.6rem}.activity-grid{grid-template-columns:repeat(15,1fr);gap:3px;display:grid}.activity-cell{aspect-ratio:1;border-radius:3px;min-width:0}.activity-level-0{background:#e7e5df}.activity-level-1{background:#087f822e}.activity-level-2{background:#087f825c}.activity-level-3{background:#087f8294}.activity-level-4{background:#087f82}@media (width<=600px){.app-container{padding:max(12px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left))}.answer-grid{gap:6px}.answer-btn{padding:12px 0;font-size:.9rem}.stats-bar{grid-template-columns:repeat(2,1fr)}.settings-panel{width:100%}.staff-card{padding:16px}.keyboard-hint{display:none}.app-header__title{font-size:1.25rem}.app-header__icon,.icon-btn{width:44px;height:44px}.app-header{flex-wrap:wrap;row-gap:10px}.app-header__actions{gap:6px}.mode-tabs{overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none;gap:3px;display:flex;overflow-x:auto}.mode-tabs::-webkit-scrollbar{display:none}.mode-tab{scroll-snap-align:start;flex:0 0 104px}.mode-tab span{min-height:56px;padding:6px 8px;font-size:.72rem}.workspace-context{grid-template-columns:1fr;gap:16px;padding:17px}.audio-lab{padding:17px}.audio-lab__intro{flex-direction:column;align-items:stretch}.audio-lab__head{display:none}.audio-lab__row{grid-template-columns:1fr 1fr}.audio-lab__row strong{grid-column:1/-1}.xp-bar-container{min-width:0}.learning-btn{padding:8px 14px;font-size:.8rem}}@media (width>=601px) and (width<=1180px){.mode-tab span{flex-direction:column;gap:4px;font-size:.7rem}.workspace-context{grid-template-columns:minmax(0,1fr) minmax(250px,300px)}}@media (orientation:landscape) and (width>=700px){.main-content{gap:14px}.staff-card{padding-block:16px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}body:before{animation:none}}@media (prefers-contrast:more){:root{--border-subtle:#949b9b;--border-medium:#737b7b}button:focus-visible,input:focus-visible{outline:3px solid var(--accent-primary);outline-offset:2px}}@media (width<=400px){.answer-grid{grid-template-columns:repeat(4,1fr)}}@media (width<=480px){.kids-entry span{display:none}.kids-entry{justify-content:center;width:44px;padding:0}}.daily-coach{border:1px solid var(--border-medium);border-radius:var(--radius-lg);background:var(--bg-card);box-shadow:var(--shadow-sm);margin:12px 0 18px;padding:22px 24px}.daily-coach[data-state=active],.daily-coach[data-state=paused]{min-height:60px;padding-block:10px}.daily-coach[data-state=active] .daily-coach__eyebrow,.daily-coach[data-state=paused] .daily-coach__eyebrow{display:none}.daily-coach[data-state=active] h2,.daily-coach[data-state=paused] h2{margin:0;font-size:1rem}.daily-coach[data-state=active] .daily-coach__actions,.daily-coach[data-state=paused] .daily-coach__actions{margin-top:6px}.daily-coach[data-state=active] .daily-coach__steps li:not([aria-current=step]),.daily-coach[data-state=paused] .daily-coach__steps li:not([aria-current=step]){display:none}.daily-coach[data-state=active] .daily-coach__steps li,.daily-coach[data-state=paused] .daily-coach__steps li{border:0;padding-block:2px}.daily-coach__eyebrow{color:var(--accent-primary);text-transform:uppercase;letter-spacing:.08em;font-size:.72rem;font-weight:700}.daily-coach h2{margin:3px 0 4px;font-size:clamp(1.25rem,2vw,1.65rem)}.daily-coach__duration{border:0;gap:8px;margin:14px 0 0;padding:0;display:flex}.daily-coach__duration legend{color:var(--text-muted);margin-bottom:6px;font-size:.8rem}.daily-coach__duration label{cursor:pointer}.daily-coach__duration input{opacity:0;pointer-events:none;position:absolute}.daily-coach__duration span{border:1px solid var(--border-medium);border-radius:var(--radius-sm);color:var(--text-secondary);padding:8px 12px;display:block}.daily-coach__duration input:checked+span{border-color:var(--accent-primary);background:color-mix(in srgb, var(--accent-primary) 10%, var(--bg-card));color:var(--accent-primary);font-weight:700}.daily-coach__duration input:focus-visible+span{outline:2px solid var(--accent-primary);outline-offset:2px}.daily-coach__actions{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.daily-coach__status{border:1px solid color-mix(in srgb, var(--accent-error) 35%, var(--border-subtle));border-radius:var(--radius-sm);background:color-mix(in srgb, var(--accent-error) 8%, var(--bg-card));color:var(--text-primary);grid-column:1/-1;margin-top:2px;padding:10px 12px;font-size:.85rem}.daily-coach__status[hidden]{display:none}.continuous-test{border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--bg-card);margin-bottom:14px;padding:14px 16px}.continuous-test__tabs{background:var(--bg-tertiary);border-radius:12px;grid-template-columns:1fr 1fr;width:min(100%,320px);padding:3px;display:grid}.continuous-test__tabs button{min-height:44px;color:var(--text-secondary);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:9px;font-weight:700}.continuous-test__tabs button[aria-selected=true]{background:var(--bg-card);color:var(--accent-primary);box-shadow:var(--shadow-sm)}.continuous-test__actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.app-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:12px 20px 20px;display:flex}.app-footer__brand{align-items:baseline;gap:8px;min-width:0;display:flex}.app-footer__name{color:var(--text-primary);font-size:.82rem;font-weight:700}.app-footer__tagline{color:var(--text-muted);font-size:.72rem}.app-footer__pill{color:var(--text-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;border:1px solid var(--border-subtle);background:var(--bg-card);border-radius:999px;padding:4px 12px;font-size:.7rem}.app-footer__pill b{color:var(--accent-primary);font-weight:600}.continuous-test__hint{color:var(--text-secondary);margin:10px 0 0;font-size:.9rem}.continuous-test__stage{margin-top:12px}.continuous-test__stage:empty{display:none}.continuous-test__stage .staff-card{margin-bottom:0}.continuous-test__summary{grid-template-columns:repeat(4,minmax(80px,1fr));gap:8px;margin-top:14px;display:grid}.continuous-test__summary div{border-radius:var(--radius-sm);background:var(--bg-tertiary);padding:9px}.continuous-test__summary dt{color:var(--text-muted);font-size:.75rem}.continuous-test__summary dd{font-size:1.15rem;font-weight:700}.song-mistake-map{margin-bottom:10px}.song-mistake-map__legend{color:var(--text-secondary);flex-wrap:wrap;gap:12px;margin-bottom:8px;font-size:.75rem;display:flex}.song-mistake-map__legend span:before{content:"";background:var(--measure-color);border-radius:50%;width:10px;height:10px;margin-right:5px;display:inline-block}.song-mistake-map [data-status=correct]{--measure-color:var(--accent-success)}.song-mistake-map [data-status=pitch]{--measure-color:var(--accent-error)}.song-mistake-map [data-status=rhythm]{--measure-color:var(--accent-warning)}.song-mistake-map [data-status=fluency],.song-mistake-map [data-status=miss]{--measure-color:var(--accent-rest)}.song-mistake-map__measures{scroll-snap-type:x proximity;gap:8px;max-width:100%;padding:2px 2px 7px;display:flex;overflow-x:auto}.song-mistake-map__measures button{border:2px solid var(--measure-color);border-radius:var(--radius-sm);background:var(--bg-card);min-width:52px;min-height:44px;color:var(--text-primary);font:inherit;scroll-snap-align:start;cursor:pointer;flex:none;padding:5px 8px;font-size:.72rem}.song-score-viewport{position:relative}.musicxml-measure-overlays{pointer-events:none;position:absolute;inset:0}.musicxml-measure-overlay{border:2px solid var(--measure-color);background:color-mix(in srgb, var(--measure-color) 10%, transparent);border-radius:5px;position:absolute}.musicxml-measure-overlay--correct{--measure-color:var(--accent-success)}.musicxml-measure-overlay--pitch{--measure-color:var(--accent-error)}.musicxml-measure-overlay--rhythm{--measure-color:var(--accent-warning)}.musicxml-measure-overlay--fluency,.musicxml-measure-overlay--miss{--measure-color:var(--accent-rest)}.musicxml-measure-overlay--focused{border-width:4px}@media (width<=820px){.continuous-test__tabs{width:100%}}@media (width<=480px){.daily-coach{padding:18px 16px}.daily-coach__actions .learning-btn{flex:100%;min-height:44px}.continuous-test__summary{grid-template-columns:repeat(2,minmax(0,1fr))}}#piano-keyboard{max-width:100%;overflow-x:auto}.piano-audio-status{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:8px;font-size:.8rem;display:flex}.piano-section__header{flex-wrap:wrap;align-items:center;gap:8px 16px;display:flex}.piano-settings{margin-left:auto;font-size:.8rem;position:relative}.piano-settings summary{cursor:pointer;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:10px 12px}.piano-settings summary:focus-visible{outline:2px solid var(--accent-primary,#087f82);outline-offset:2px}.piano-settings__panel{z-index:40;background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);width:min(320px,100vw - 48px);box-shadow:var(--shadow-md);gap:14px;padding:16px;display:grid;position:absolute;top:100%;right:0}.piano-settings__panel label{gap:6px;min-width:0;display:grid}.piano-settings__panel input{width:100%;min-width:0}.piano-settings__panel select{max-width:100%;min-height:36px;font:inherit}.piano-settings__range:not([hidden]){grid-template-columns:1fr 1fr;gap:12px;display:grid}.piano-duration-controls:not([hidden]){gap:10px;margin-bottom:12px;display:grid}.piano-duration-controls label{gap:6px;display:grid}.piano-duration-controls input,.piano-duration-controls select{min-width:0;max-width:100%;min-height:36px;font:inherit}.piano-duration-controls input:disabled{opacity:.7}#input-note-duration-hint{color:var(--text-muted);font-size:.8rem}#piano-voice{width:100%;min-height:44px;font:inherit}.staff-canvas-wrapper{justify-content:center;align-items:center;width:100%;min-height:220px;display:flex;position:relative}#staff-canvas{justify-content:center;align-items:center;width:100%;max-width:100%;min-height:200px;display:flex}#staff-canvas canvas{max-width:100%;height:auto;display:block}@keyframes noteAppear{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}#staff-canvas>canvas{animation:.2s ease-out noteAppear}.running-canvas-card{position:relative;overflow:hidden}.running-canvas-wrapper{border:1px solid var(--border-subtle);contain:layout paint;background:#fbfaf5;border-radius:12px;justify-content:center;align-items:center;width:100%;min-height:200px;display:flex}.running-canvas-wrapper canvas{width:100%;display:block}.running-hit-feedback{text-shadow:0 2px 10px #1018271f;pointer-events:none;opacity:0;z-index:10;font-size:1.6rem;font-weight:800;position:absolute;top:50%;left:22%;transform:translate(-50%)}.running-toolbar{flex-wrap:wrap;justify-content:center;align-items:center;gap:16px;padding:8px 12px;display:flex}.running-score-bar{align-items:center;gap:8px;display:flex}.running-score-item{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:8px;align-items:center;gap:4px;padding:4px 10px;display:flex}.running-score-item__icon{font-size:.85rem}.running-score-item__val{font-size:1.1rem;font-weight:700;font-family:var(--font-mono,monospace)}.running-score-item--perfect .running-score-item__val{color:var(--accent-primary)}.running-score-item--good .running-score-item__val{color:#b83f2d}.running-score-item--miss .running-score-item__val{color:var(--accent-error)}.running-bpm-compact{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:8px;align-items:center;gap:6px;padding:4px 10px;display:flex}.running-bpm-compact__label{opacity:.6;font-size:1rem}.running-bpm-compact .settings-slider{width:100px}.running-bpm-compact__val{font-size:.9rem;font-weight:700;font-family:var(--font-mono,monospace);text-align:right;min-width:28px;color:var(--text-primary,#fff)}.running-levels{margin-top:12px}.running-levels__title{color:var(--text-primary,#fff);margin:0 0 12px;font-size:1rem;font-weight:700}.running-levels__group{margin-bottom:16px}.running-levels__group-label{letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted,#888);margin-bottom:8px;padding-left:4px;font-size:.7rem;font-weight:700}.running-level-card{background:var(--bg-secondary);border:1px solid var(--border-subtle);cursor:pointer;text-align:left;width:100%;color:inherit;font:inherit;border-radius:12px;align-items:center;gap:14px;min-height:56px;margin-bottom:6px;padding:14px 16px;transition:all .15s;display:flex}@media (width>=768px){.running-levels{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.running-levels__title{grid-column:1/-1}.running-levels__group{margin-bottom:0}}@media (orientation:landscape) and (width>=900px){.running-canvas-wrapper{min-height:180px}.running-toolbar{flex-wrap:nowrap}}@media (prefers-reduced-motion:reduce){.running-level-card:hover,.running-level-card:active{transform:none}}.running-level-card:hover{border-color:var(--accent-primary);background:#f4f7f4;transform:translate(4px)}.running-level-card:active{transform:translate(2px)scale(.99)}.running-level-card__icon{flex-shrink:0;font-size:1.4rem}.running-level-card__info{flex:1;min-width:0}.running-level-card__name{color:var(--text-primary,#fff);margin-bottom:2px;font-size:.95rem;font-weight:700}.running-level-card__desc{color:var(--text-muted,#888);font-size:.78rem}.running-actions{align-items:center;gap:8px;display:flex}.piano-section{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);flex-direction:column;gap:10px;padding:14px;display:flex}.piano-section__label{font-size:.75rem;font-family:var(--font-sans);color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.piano-keyboard{-webkit-user-select:none;user-select:none;touch-action:none;background:#202833;border:7px solid #202833;border-top-width:11px;border-radius:16px;height:clamp(180px,19vw,280px);position:relative;overflow:hidden;box-shadow:inset 0 2px #ffffff14,0 12px 28px #10182724}.piano-keyboard-disabled .piano-keyboard{opacity:.45;pointer-events:none}.piano-keyboard-disabled.piano-keyboard-demo-active .piano-keyboard{opacity:1}.piano-key--white{cursor:pointer;z-index:1;background:linear-gradient(#fffefa 0%,#f8f6ef 76%,#dfdcd3 100%);border-top:none;border-bottom:5px solid #c8c4ba;border-left:none;border-right:1px solid #242b322e;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;padding-bottom:14px;transition:background 80ms,border-bottom-width 60ms;display:flex;position:absolute;top:0}.piano-key--white:hover{background:linear-gradient(#fff 0%,#fbfaf5 76%,#ebe7dd 100%)}.piano-key--white:active,.piano-key--white.piano-key--active{background:linear-gradient(#eae6de 0%,#ddd8d0 80%,#ccc8c0 100%);border-bottom-width:1px;padding-bottom:12px}.piano-key--black{cursor:pointer;z-index:2;background:linear-gradient(#333c49 0%,#17202a 62%,#0d141c 100%);border:none;border-bottom:3px solid #000;border-radius:0 0 7px 7px;height:58%;transition:background 80ms,box-shadow 60ms;position:absolute;top:0;box-shadow:-1px 0 2px #00000059,1px 0 2px #00000059,0 3px 6px #00000080}.piano-key--black:hover{background:linear-gradient(#444 0%,#2a2a2a 60%,#1a1a1a 100%)}.piano-key--black:active,.piano-key--black.piano-key--active{background:linear-gradient(#222 0%,#111 60%,#0a0a0a 100%);border-bottom-width:1px;height:calc(58% - 2px);box-shadow:-1px 0 1px #0003,1px 0 1px #0003,0 1px 2px #0000004d}.piano-key__label{font-size:clamp(.58rem,.9vw,.78rem);font-family:var(--font-sans);color:#10182780;pointer-events:none;white-space:nowrap;font-weight:600;line-height:1}.piano-keyboard--labels-hidden .piano-key__label{visibility:hidden}.piano-key--white:hover .piano-key__label{color:#0000008c}.piano-key--correct.piano-key--white{background:linear-gradient(#7dd8d4 0%,#21a4a3 80%,#087f82 100%)!important;border-bottom-color:#006c71!important}.piano-key--correct.piano-key--white .piano-key__label{color:#ffffffe6!important}.piano-key--correct.piano-key--black{background:linear-gradient(#21a4a3 0%,#087f82 60%,#006c71 100%)!important;box-shadow:0 0 14px #087f8270,-1px 0 2px #0003,1px 0 2px #0003!important}.piano-key--wrong.piano-key--white{background:linear-gradient(#ffb19f 0%,#f97960 80%,#f35f45 100%)!important;border-bottom-color:#d54d36!important}.piano-key--wrong.piano-key--white .piano-key__label{color:#ffffffe6!important}.piano-key--wrong.piano-key--black{background:linear-gradient(#f97960 0%,#f35f45 60%,#b8392b 100%)!important;box-shadow:0 0 14px #f35f457a,-1px 0 2px #0003,1px 0 2px #0003!important}.piano-key--hint.piano-key--white{background:linear-gradient(#b9e5e1 0%,#72cbc7 80%,#3caaa8 100%)!important;border-bottom-color:#087f82!important}.piano-key--hint.piano-key--white .piano-key__label{color:#ffffffe6!important}.piano-key--hint.piano-key--black{background:linear-gradient(#3caaa8 0%,#087f82 60%,#006c71 100%)!important;box-shadow:0 0 14px #087f826b,-1px 0 2px #0003,1px 0 2px #0003!important}.piano-key--playing.piano-key--white{background:linear-gradient(180deg, var(--demo-key-light) 0%, var(--demo-key) 80%, var(--demo-key-dark) 100%)!important;border-bottom-color:var(--demo-key-dark)!important}.piano-key--playing.piano-key--white .piano-key__label{color:var(--text-primary)!important}.piano-key--playing.piano-key--black{background:linear-gradient(180deg, var(--demo-key-light) 0%, var(--demo-key) 60%, var(--demo-key-dark) 100%)!important;box-shadow:0 0 16px var(--demo-key-glow), -1px 0 2px #0003, 1px 0 2px #0003!important}@media (width<=600px){.piano-section{padding:10px}.piano-keyboard{border-width:8px 5px 5px;height:132px}.piano-key__label{font-size:.45rem}.piano-key--white{padding-bottom:5px}}@media (width<=400px){.piano-keyboard{height:108px}.piano-key__label{display:none}}@media (orientation:landscape) and (width>=900px) and (height<=900px){.piano-keyboard{height:clamp(190px,26vh,240px)}}.rhythm-practice{flex-direction:column;gap:16px;width:100%;display:flex}.rhythm-practice[hidden],.rhythm-library[hidden],.rhythm-lesson[hidden],.rhythm-summary[hidden]{display:none}.rhythm-library__heading{flex-direction:column;gap:4px;display:flex}.rhythm-library__grid{flex-direction:column;gap:6px;max-height:60vh;padding:4px 0;display:flex;overflow-y:auto}.rhythm-unit-header{color:var(--accent-primary);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border-subtle);margin-bottom:4px;padding:12px 0 4px;font-size:.75rem;font-weight:700}.rhythm-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);cursor:pointer;text-align:left;font-family:var(--font-sans);transition:all var(--transition-fast);width:100%;color:var(--text-primary);align-items:center;gap:10px;padding:10px 14px;display:flex}.rhythm-card:hover:not([disabled]){border-color:var(--accent-primary);transform:translate(4px)}.rhythm-card--locked{opacity:.4;cursor:not-allowed}.rhythm-card--done{background:#10b9810d;border-color:#10b9814d}.rhythm-card__icon{flex-shrink:0;font-size:1.3rem}.rhythm-card__title{font-size:.9rem;font-weight:600}.rhythm-card__desc{color:var(--text-muted);margin-top:2px;font-size:.7rem}.rhythm-library__footer{justify-content:flex-end;padding-top:4px;display:flex}.rhythm-lesson{flex-direction:column;gap:14px;display:flex}.rhythm-back-btn{align-self:flex-start}.rhythm-lesson__header h2{margin:0}.rhythm-concept{flex-direction:column;gap:8px;display:flex}.rhythm-concept h3{color:var(--text-primary);margin:0;font-size:1rem}.rhythm-concept__body p{color:var(--text-secondary);margin:0 0 6px;font-size:.85rem;line-height:1.5}.rhythm-staff-card{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:8px}.rhythm-staff{width:100%;min-height:140px}.rhythm-drill{flex-direction:column;gap:10px;display:flex}.rhythm-drill__controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.rhythm-tempo-control{color:var(--text-secondary);align-items:center;gap:8px;font-size:.8rem;display:flex}.rhythm-tempo-control__actions{align-items:center;gap:6px;display:flex}.rhythm-tempo-control__actions button{border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--bg-card);width:34px;height:34px;color:var(--text-primary);cursor:pointer;font-size:1rem}.rhythm-tempo-control__actions button:disabled{opacity:.4;cursor:not-allowed}.rhythm-tempo-control__actions output{font-family:var(--font-mono);text-align:center;min-width:64px;font-size:.85rem}.rhythm-drill__status{color:var(--text-secondary);min-height:1.2em;font-size:.85rem}.rhythm-drill__progress{background:var(--bg-tertiary);border-radius:3px;height:6px;overflow:hidden}.rhythm-drill__progress-fill{background:linear-gradient(90deg, var(--accent-primary), #10b981);border-radius:3px;width:0%;height:100%;transition:width .2s linear}.rhythm-tap-zone{border-radius:var(--radius-lg);border:2px dashed var(--accent-primary);width:100%;min-height:96px;color:var(--accent-primary);letter-spacing:.08em;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:#087f820f;font-size:1.1rem;font-weight:700}.rhythm-tap-zone:active,.rhythm-tap-zone--active{background:#087f822e;border-style:solid}.rhythm-tap-zone--flash{background:#087f824d;border-style:solid;transform:scale(.985)}.rhythm-summary{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);flex-direction:column;gap:8px;padding:14px;display:flex}.rhythm-summary h3{margin:0}.rhythm-summary__metrics{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin:0;display:grid}.rhythm-summary__metrics div{background:var(--bg-secondary);border-radius:var(--radius-sm);text-align:center;padding:8px}.rhythm-summary__metrics dt{color:var(--text-muted);font-size:.7rem}.rhythm-summary__metrics dd{color:var(--text-primary);margin:2px 0 0;font-size:1.1rem;font-weight:700}.rhythm-summary__verdict{color:var(--text-secondary);margin:0;font-size:.85rem}.rhythm-summary__map{color:var(--text-muted);margin:0;font-size:.75rem}.rgym,.rgym-card{--rgym-perfect:#087f82;--rgym-good:#3f9b5a;--rgym-early:#c27c12;--rgym-late:#8a5cc7;--rgym-miss:#b83f2d;--rgym-surface:linear-gradient(160deg, #fffefa 0%, #f1f8f6 100%);box-sizing:border-box;width:100%;min-width:0}.rgym[hidden],.rgym-card[hidden],.rgym-strip[hidden]{display:none}.rgym{border:1px solid var(--border-medium);border-radius:var(--radius-lg);background:var(--rgym-surface);box-shadow:var(--shadow-md);padding:20px}.rgym *,.rgym-card *{box-sizing:border-box}.rgym h2,.rgym h3,.rgym h4,.rgym p{margin:0}.rgym-eyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--accent-primary);font-size:.78rem;font-weight:700}.rgym-muted,.rgym-hint{color:var(--text-secondary);font-size:.95rem}.rgym-start,.rgym-next,.rgym-secondary,.rgym-end,.rgym-duration{font:inherit;cursor:pointer;border-radius:var(--radius-md);-webkit-tap-highlight-color:transparent;transition:transform .12s,box-shadow .18s,background .18s}.rgym-start,.rgym-next{color:#fff;background:linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));min-height:56px;box-shadow:0 8px 20px var(--accent-primary-glow);border:0;padding:14px 22px;font-size:1.1rem;font-weight:700}.rgym-start:hover,.rgym-next:hover{box-shadow:0 12px 28px #087f8242}.rgym-start:active,.rgym-next:active,.rgym-duration:active{transform:scale(.98)}.rgym-secondary,.rgym-end{border:1px solid var(--border-medium);background:var(--bg-card);min-height:44px;color:var(--text-primary);padding:10px 16px}.rgym-end{min-height:36px;padding:6px 12px;font-size:.88rem}.rgym :focus-visible,.rgym-card :focus-visible{outline:3px solid var(--accent-primary);outline-offset:2px}.rgym-home{flex-direction:column;gap:16px;display:flex}.rgym-home__head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.rgym-home__head h2{margin-top:4px;font-size:1.5rem}.rgym-streak{color:#8a4b05;background:#fff3df;border-radius:999px;flex:none;padding:6px 12px;font-weight:700}.rgym-done{border-radius:var(--radius-md);background:var(--accent-success-glow);color:var(--accent-primary);padding:10px 14px;font-weight:600}.rgym-durations{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.rgym-duration{border:2px solid var(--border-medium);background:var(--bg-card);min-height:64px;color:var(--text-primary);flex-direction:column;align-items:center;gap:2px;padding:10px 6px;display:flex}.rgym-duration span{color:var(--text-muted);font-size:.8rem}.rgym-duration[aria-checked=true]{border-color:var(--accent-primary);background:var(--accent-primary-glow)}.rgym-workout{border-radius:var(--radius-md);border:1px dashed var(--border-medium);background:#ffffffb3;padding:12px 14px}.rgym-workout__focus{font-weight:600}.rgym-workout__list{flex-wrap:wrap;gap:6px;margin:8px 0 0;padding:0;list-style:none;display:flex}.rgym-workout__list li,.rgym-badge{background:var(--bg-tertiary);color:var(--text-secondary);border-radius:999px;padding:4px 10px;font-size:.82rem}.rgym-kid-toggle{color:var(--text-secondary);cursor:pointer;align-items:center;gap:8px;display:inline-flex}.rgym-kid-toggle input{width:20px;height:20px;accent-color:var(--accent-primary)}.rgym-progress-details summary{cursor:pointer;color:var(--accent-primary);align-items:center;min-height:44px;font-weight:600;display:flex}.rgym-progress{flex-direction:column;gap:12px;padding-top:8px;display:flex}.rgym-stats{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;display:grid}.rgym-stat{border-radius:var(--radius-md);background:var(--bg-card);border:1px solid var(--border-subtle);flex-direction:column;padding:10px 12px;display:flex}.rgym-stat__value{font-size:1.25rem;font-weight:700}.rgym-stat__label{color:var(--text-muted);font-size:.8rem}.rgym-skills{gap:6px;margin:0;padding:0;list-style:none;display:grid}.rgym-skill{grid-template-columns:minmax(0,9rem) minmax(0,1fr) 3rem;align-items:center;gap:8px;font-size:.88rem;display:grid}.rgym-skill__bar{background:var(--bg-tertiary);border-radius:999px;height:8px;overflow:hidden}.rgym-skill__fill{background:linear-gradient(90deg, var(--accent-primary), #46b4a0);transform-origin:0;height:100%;display:block}.rgym-skill__value{text-align:right;font-variant-numeric:tabular-nums}.rgym-history{gap:4px;margin:0;padding:0;list-style:none;display:grid}.rgym-history li{justify-content:space-between;font-size:.9rem;display:flex}.rgym-practice{flex-direction:column;gap:12px;display:flex}.rgym-practice__head{justify-content:space-between;align-items:center;gap:8px;display:flex}.rgym-practice__title{font-size:1.35rem}.rgym-meta{flex-wrap:wrap;gap:6px;display:flex}.rgym-badge--soft{background:var(--accent-primary-glow);color:var(--accent-primary)}.rgym-strip{scrollbar-width:thin;gap:6px;padding:4px 0 6px;display:flex;overflow-x:auto}.rgym-bar{border-radius:var(--radius-sm);background:var(--bg-card);border:1px solid var(--border-subtle);flex:1 0 auto;gap:3px;min-width:132px;padding:6px;display:flex}.rgym-bar--muted{background:repeating-linear-gradient(135deg,#f4f1ea 0 8px,#ece8de 8px 16px);border-style:dashed}.rgym-slot{background:#eef6f5;border-radius:6px;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;min-width:22px;min-height:36px;padding:4px 2px;transition:background .15s,transform .15s;display:flex;position:relative}.rgym-slot--rest{color:var(--accent-rest);background:0 0}.rgym-slot--tie{outline-offset:-1px;background:repeating-linear-gradient(135deg,#eef6f5 0 6px,#f7fbfa 6px 12px);outline:1px dashed #8fbdb7}.rgym-slot--tie .rgym-slot__count{color:var(--text-muted);font-style:italic}.rgym-slot--tie-start:after{content:"";background:#8fbdb7;border-radius:1px;width:10px;height:2px;position:absolute;bottom:6px;right:-6px}.rgym-slot--accent{background:#fff1d6}.rgym-slot--accent .rgym-slot__count{color:var(--text-primary);font-weight:800}.rgym-slot__count{color:var(--text-secondary);font-variant-numeric:tabular-nums;font-size:.85rem}.rgym-slot__grade{font-size:.6rem;font-weight:700;position:absolute;top:1px;right:3px}.rgym-staff-card{overflow:hidden}.rgym-staff-card[hidden]{display:none}.rgym-slot--active{outline:2px solid var(--accent-primary);transform:translateY(-2px)}.rgym-slot[data-grade=perfect]{background:#087f8238}.rgym-slot[data-grade=good]{background:#3f9b5a33}.rgym-slot[data-grade=early]{background:#c27c1233}.rgym-slot[data-grade=late]{background:#8a5cc733}.rgym-slot[data-grade=miss],.rgym-slot[data-grade=rest-hit]{background:#b83f2d2e}.rgym-strip--hidden .rgym-slot{background:var(--bg-tertiary);color:var(--text-muted)}.rgym-beats{justify-content:center;gap:10px;min-height:18px;display:flex}.rgym-beat{background:var(--border-medium);border-radius:50%;width:14px;height:14px;transition:transform 80ms,background 80ms}.rgym-beat.is-on{background:var(--accent-primary);transform:scale(1.25)}.rgym-beat.is-accent{background:#e08a12;transform:scale(1.45)}.rgym-beats--muted .rgym-beat{opacity:.35}.rgym-progress-bar{background:var(--bg-tertiary);border-radius:999px;height:4px;overflow:hidden}.rgym-progress-bar__fill{background:var(--accent-primary);transform-origin:0;height:100%;display:block;transform:scaleX(0)}.rgym-status{text-align:center;color:var(--text-secondary);min-height:1.4em}.rgym-live-grade{text-align:center;min-height:1.5em;font-size:1.1rem;font-weight:800}.rgym-live-grade[data-grade=perfect]{color:var(--rgym-perfect)}.rgym-live-grade[data-grade=good]{color:var(--rgym-good)}.rgym-live-grade[data-grade=early]{color:var(--rgym-early)}.rgym-live-grade[data-grade=late]{color:var(--rgym-late)}.rgym-live-grade[data-grade=miss],.rgym-live-grade[data-grade=rest-hit],.rgym-live-grade[data-grade=extra]{color:var(--rgym-miss)}.rgym-tap{border-radius:var(--radius-xl);color:#fff;background:radial-gradient(circle at 50% 35%, #12a3a5 0%, var(--accent-primary) 70%);width:100%;min-height:150px;font:inherit;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;border:0;flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex;box-shadow:0 14px 30px #087f8247,inset 0 -4px #0000001f}.rgym-tap__label{letter-spacing:.08em;font-size:2rem;font-weight:800}.rgym-tap__hint{opacity:.85;font-size:.8rem}.rgym-tap.is-hit{animation:.14s ease-out rgym-hit}@keyframes rgym-hit{0%{filter:brightness(1.15);transform:scale(.97)}to{filter:none;transform:scale(1)}}.rgym[data-phase=result] .rgym-tap,.rgym[data-phase=listening] .rgym-tap{opacity:.55}.rgym-result,.rgym-summary{border-radius:var(--radius-lg);background:var(--bg-card);border:1px solid var(--border-subtle);flex-direction:column;gap:12px;padding:16px;animation:.25s ease-out rgym-rise;display:flex}@keyframes rgym-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.rgym-result__score{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.rgym-result__big{color:var(--accent-primary);font-size:2.2rem;font-weight:800}.rgym-metrics,.rgym-summary__facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;display:grid}.rgym-metrics div,.rgym-summary__facts div{border-radius:var(--radius-sm);background:var(--bg-tertiary);padding:8px 10px}.rgym-metrics dt,.rgym-summary__facts dt{color:var(--text-muted);font-size:.78rem}.rgym-metrics dd,.rgym-summary__facts dd{margin:0;font-weight:700}.rgym-counts{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.rgym-counts li{background:var(--bg-tertiary);border-radius:999px;gap:4px;padding:4px 10px;font-size:.85rem;display:flex}.rgym-counts li[data-grade=perfect]{color:var(--rgym-perfect)}.rgym-counts li[data-grade=early]{color:var(--rgym-early)}.rgym-counts li[data-grade=late]{color:var(--rgym-late)}.rgym-counts li[data-grade=miss]{color:var(--rgym-miss)}.rgym-target{color:var(--accent-warning);font-weight:600}.rgym-target.is-reached{color:var(--accent-primary)}.rgym-insight{border-left:4px solid var(--accent-primary);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:var(--accent-primary-glow);padding:10px 12px}.rgym-tomorrow{color:var(--accent-primary);font-weight:700}.rgym-summary h2{font-size:2.2rem}.rgym-actions{flex-wrap:wrap;gap:8px;display:flex}.rgym-actions>*{flex:160px}.rgym-coach{gap:6px;margin:0;padding-left:28px;list-style:outside;display:grid}.rgym-coach li{line-height:1.45}.rgym-timing-panel{gap:12px;display:grid}.rgym-metrics--two{grid-template-columns:repeat(2,minmax(0,1fr))}.rgym-pulse-split dd{font-size:1.4rem}.rgym-scale{margin:6px 0 0;padding-top:26px}.rgym-scale__track{background:linear-gradient(90deg, #c27c1247, var(--bg-tertiary) 40%, var(--bg-tertiary) 60%, #8a5cc747);border-radius:999px;height:10px;position:relative}.rgym-scale__perfect{background:#087f824d;border-radius:999px;position:absolute;top:0;bottom:0}.rgym-scale__spread{background:#087f8259;border-radius:999px;position:absolute;top:2px;bottom:2px}.rgym-scale__marker{background:var(--text-primary);border-radius:2px;width:4px;height:20px;margin-left:-2px;position:absolute;top:-5px}.rgym-scale__value{white-space:nowrap;font-variant-numeric:tabular-nums;font-size:.85rem;font-weight:700;position:absolute;bottom:22px;left:50%;transform:translate(-50%)}.rgym-scale__labels{color:var(--text-muted);justify-content:space-between;margin-top:6px;font-size:.78rem;display:flex}.rgym-analysis summary{cursor:pointer;color:var(--accent-primary);align-items:center;min-height:44px;font-weight:600;display:flex}.rgym-analysis summary:focus-visible{outline:3px solid var(--accent-primary);outline-offset:2px;border-radius:var(--radius-sm)}.rgym-facts{gap:4px;margin:4px 0 8px;display:grid}.rgym-facts div{justify-content:space-between;gap:12px;font-size:.9rem;display:flex}.rgym-facts dt{color:var(--text-secondary)}.rgym-facts dd{font-variant-numeric:tabular-nums;text-align:right;margin:0;font-weight:700}.rgym-by-beat{grid-template-columns:repeat(auto-fit,minmax(84px,1fr));gap:6px;margin:0;padding:0;list-style:none;display:grid}.rgym-by-beat li{border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-muted);padding:6px 8px;font-size:.8rem;display:grid}.rgym-by-beat strong{color:var(--text-primary);font-variant-numeric:tabular-nums;font-size:1rem}.rgym-ladder{gap:6px;margin:0;padding:0;list-style:none;display:grid}.rgym-ladder__rung{border-radius:var(--radius-sm);background:var(--bg-tertiary);font-variant-numeric:tabular-nums;justify-content:space-between;padding:8px 12px;display:flex}.rgym-ladder__rung.is-pass span{color:var(--rgym-perfect);font-weight:700}.rgym-ladder__rung.is-fail span{color:var(--rgym-miss);font-weight:700}.rgym-ladder__rung.is-next{border:1px dashed var(--border-medium);color:var(--text-secondary);background:0 0}.rgym-ladder-live{gap:4px;margin:0;padding:0;list-style:none;display:flex}.rgym-ladder-live__rung{background:var(--bg-tertiary);color:var(--text-muted);font-variant-numeric:tabular-nums;border-radius:999px;padding:4px 10px;font-weight:700;transition:background .15s,color .15s}.rgym-ladder-live__rung.is-done{color:var(--rgym-perfect)}.rgym-ladder-live__rung.is-done:after{content:" ✓"}.rgym-ladder-live__rung.is-current{background:var(--accent-primary);color:#fff}.rgym-count-guide{border-radius:var(--radius-md);background:var(--bg-card);border:1px solid var(--border-subtle);font-variant-numeric:tabular-nums;flex-wrap:wrap;justify-content:center;gap:6px 10px;padding:14px 8px;font-size:2rem;font-weight:800;line-height:1.1;display:flex}.rgym-count-guide[data-density="16"]{gap:4px 6px;font-size:1.35rem}.rgym-count{text-align:center;min-width:1.2em;color:var(--text-muted);transition:color 80ms linear,transform 80ms linear}.rgym-count.is-beat{color:var(--text-secondary)}.rgym-count.is-on{color:var(--accent-primary);transform:scale(1.18)}.rgym-listen{cursor:pointer;border:1px solid var(--accent-primary);color:var(--accent-primary);background:var(--bg-card);min-height:32px}.rgym-listen:hover{background:var(--accent-primary-glow)}.rgym-listen:focus-visible{outline:3px solid var(--accent-primary);outline-offset:2px}.rgym-listen[hidden]{display:none}.rgym-focus-list{flex-wrap:wrap;gap:6px;margin:4px 0 8px;padding:0;list-style:none;display:flex}.rgym-focus-list li{background:var(--accent-primary-glow);color:var(--accent-primary);border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-weight:700;display:inline-flex}.rgym-link{min-height:44px;color:var(--text-secondary);font:inherit;cursor:pointer;background:0 0;border:0;align-self:center;padding:0 12px;text-decoration:underline}.rgym-link:hover{color:var(--accent-primary)}.rgym-link:focus-visible{outline:3px solid var(--accent-primary);border-radius:var(--radius-sm)}.rgym-takeaways{gap:10px;display:grid}.rgym-takeaway h3{color:var(--text-secondary);margin:0 0 4px;font-size:.95rem}.rgym-takeaway ul{gap:2px;margin:0;padding:0;font-weight:700;list-style:none;display:grid}#rgym-improved li{color:var(--rgym-perfect)}#rgym-tomorrow li{color:var(--accent-primary)}.rgym-week{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin:0;padding:0;list-style:none;display:grid}.rgym-week__day{font-variant-numeric:tabular-nums;justify-items:center;gap:4px;display:grid}.rgym-week__value{font-size:.8rem;font-weight:700}.rgym-week__bar{background:var(--bg-tertiary);border-radius:6px;width:100%;max-width:28px;height:72px;position:relative;overflow:hidden}.rgym-week__fill{transform-origin:bottom;background:linear-gradient(0deg, var(--accent-primary), #46b4a0);position:absolute;inset:0}.rgym-week__label{color:var(--text-muted);font-size:.75rem}.rgym-week__day.is-empty .rgym-week__value{color:var(--text-muted)}.rgym-card{border:1px solid var(--border-medium);border-radius:var(--radius-lg);background:var(--rgym-surface);box-shadow:var(--shadow-sm);justify-content:space-between;align-items:center;gap:16px;margin:0 0 18px;padding:16px 20px;display:flex}.rgym-card h2{margin:2px 0;font-size:1.15rem}.rgym-card__meta{color:var(--text-secondary);margin:0;font-size:.9rem}.rgym-card[hidden]{display:none}.rgym-strip--kid .rgym-slot{border-radius:14px;min-height:44px}.rgym-strip--kid .rgym-slot__count{font-size:1rem}.rgym-stats--kid .rgym-stat__value{font-size:1.6rem}@media (width<=600px){.rgym{border-radius:var(--radius-md);padding:14px}.rgym-card{flex-direction:column;align-items:stretch}.rgym-practice{gap:8px}.rgym-tap{min-height:120px}.rgym-tap__label{font-size:1.75rem}.rgym-hint{font-size:.88rem}.rgym-skill{grid-template-columns:minmax(0,7rem) minmax(0,1fr) 2.6rem}.rgym-result__big,.rgym-summary h2{font-size:1.9rem}}@media (prefers-reduced-motion:reduce){.rgym *,.rgym-card *{transition:none!important;animation:none!important}}.rgym-pro{--rgym-pro-ink:#13233a;--rgym-pro-glow:#7b5cd62e;border-radius:var(--radius-lg);background:radial-gradient(120% 140% at 100% 0,#7b5cd61f 0%,#0000 55%),radial-gradient(120% 140% at 0 100%,#087f821a 0%,#0000 55%),#ffffffd1;border:1px solid #7b5cd647;transition:box-shadow .2s,border-color .2s;box-shadow:0 10px 28px #13233a14}.rgym-pro[open]{box-shadow:0 14px 36px var(--rgym-pro-glow);border-color:#7b5cd673}.rgym-pro__summary{cursor:pointer;-webkit-tap-highlight-color:transparent;grid-template-columns:auto 1fr auto;grid-template-areas:"badge title chevron""badge sub chevron";align-items:center;column-gap:12px;min-height:60px;padding:12px 16px;list-style:none;display:grid}.rgym-pro__summary::-webkit-details-marker{display:none}.rgym-pro__summary:after{content:"";color:#7b5cd6;border-bottom:2px solid;border-right:2px solid;grid-area:chevron;width:10px;height:10px;transition:transform .2s;transform:rotate(45deg)}.rgym-pro[open] .rgym-pro__summary:after{transform:rotate(-135deg)}.rgym-pro__badge{color:#fff;letter-spacing:.08em;box-shadow:0 6px 16px var(--rgym-pro-glow);background:linear-gradient(135deg,#7b5cd6,#087f82);border-radius:10px;grid-area:badge;padding:6px 10px;font-size:.78rem;font-weight:800}.rgym-pro__title{color:var(--rgym-pro-ink);grid-area:title;font-weight:700}.rgym-pro__sub{color:var(--text-secondary);grid-area:sub;font-size:.85rem}.rgym-pro__body{flex-direction:column;gap:16px;padding:4px 16px 16px;animation:.22s rgym-pro-in;display:flex}@keyframes rgym-pro-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.rgym-pro__grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px 18px;display:grid}.rgym-pro__field{flex-direction:column;gap:6px;min-width:0;display:flex}.rgym-pro__field[hidden]{display:none}.rgym-pro__label{letter-spacing:.05em;text-transform:uppercase;color:#5b45ad;font-size:.78rem;font-weight:700}.rgym-pro__hint{color:var(--text-muted);font-size:.8rem}.rgym-pro__select{border:1px solid var(--border-medium);border-radius:var(--radius-md);background:var(--bg-card);min-height:44px;color:var(--text-primary);font:inherit;padding:8px 12px}.rgym-pro__bpm,.rgym-pro__level{align-items:center;gap:8px;display:flex}.rgym-pro__bpm input[type=range],.rgym-pro__level input[type=range]{accent-color:#7b5cd6;flex:1;min-width:0;height:28px}.rgym-pro__step{border:1px solid var(--border-medium);border-radius:var(--radius-md);background:var(--bg-card);min-width:44px;min-height:40px;color:var(--text-primary);font:inherit;cursor:pointer;flex:none;font-weight:700;transition:transform .12s,background .18s}.rgym-pro__step:hover{background:#7b5cd614}.rgym-pro__step:active{transform:scale(.95)}.rgym-pro__bpm-value,.rgym-pro__level-value{font-variant-numeric:tabular-nums;text-align:right;min-width:72px;color:var(--rgym-pro-ink);flex:none;font-weight:800}.rgym-chips{flex-wrap:wrap;gap:6px;display:flex}.rgym-chip{border:1.5px solid var(--border-medium);background:var(--bg-card);min-height:38px;color:var(--text-secondary);font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:999px;padding:6px 12px;font-size:.88rem;transition:background .16s,border-color .16s,color .16s,transform .12s}.rgym-chip:hover{border-color:#7b5cd6}.rgym-chip:active{transform:scale(.96)}.rgym-chip[aria-checked=true]{color:var(--rgym-pro-ink);background:linear-gradient(135deg,#7b5cd629,#087f821f);border-color:#7b5cd6;font-weight:700}.rgym-pro__prefs{border-radius:var(--radius-md);background:#fff9;border:1px dashed #7b5cd659;flex-direction:column;gap:8px;padding:12px 14px;display:flex}.rgym-pro__toggle{min-height:32px;color:var(--text-secondary);cursor:pointer;align-items:flex-start;gap:10px;display:flex}.rgym-pro__toggle input{accent-color:#7b5cd6;flex:none;width:20px;height:20px;margin-top:2px}.rgym-pro__start{box-shadow:0 8px 22px var(--rgym-pro-glow);background:linear-gradient(135deg,#7b5cd6,#087f82)}.rgym-pro :focus-visible{outline-offset:2px;outline:3px solid #7b5cd6}@media (width<=600px){.rgym-pro__summary{padding:12px}.rgym-pro__body{padding:4px 12px 14px}.rgym-pro__grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.rgym-pro__body{animation:none}.rgym-pro__summary:after,.rgym-chip,.rgym-pro__step{transition:none}}.hgym{--hgym-ok:#087f82;--hgym-ok-soft:#087f821a;--hgym-bad:#b83f2d;--hgym-bad-soft:#b83f2d17;--hgym-warm:#c27c12;--hgym-violet:#6d4fc2;--hgym-surface:linear-gradient(160deg, #fffefa 0%, #f2f6fb 55%, #f1f8f6 100%);box-sizing:border-box;border:1px solid var(--border-medium);border-radius:var(--radius-lg);background:var(--hgym-surface);width:100%;min-width:0;box-shadow:var(--shadow-md);padding:20px;display:block}.hgym *,.hgym :before,.hgym :after{box-sizing:border-box}.hgym h2,.hgym h3,.hgym h4,.hgym p{margin:0}.hgym [hidden]{display:none!important}.hgym :focus-visible{outline:3px solid var(--accent-primary);outline-offset:2px}.hgym-eyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--accent-primary);font-size:.78rem;font-weight:700}.hgym-muted,.hgym-hint{color:var(--text-secondary);font-size:.95rem}.hgym-hint{font-size:.85rem}.hgym-start,.hgym-next,.hgym-secondary,.hgym-end,.hgym-replay,.hgym-size,.hgym-option,.hgym-skill,.hgym-pro-entry{font:inherit;cursor:pointer;border-radius:var(--radius-md);-webkit-tap-highlight-color:transparent;transition:transform .12s,box-shadow .18s,background .18s,border-color .18s}.hgym-start,.hgym-next{color:#fff;background:linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));min-height:56px;box-shadow:0 8px 20px var(--accent-primary-glow);border:0;padding:14px 22px;font-size:1.08rem;font-weight:700}.hgym-start:hover,.hgym-next:hover{box-shadow:0 12px 28px #087f8242}.hgym-start:active,.hgym-next:active,.hgym-option:active,.hgym-size:active,.hgym-skill:active{transform:scale(.98)}.hgym-secondary,.hgym-end{border:1px solid var(--border-medium);background:var(--bg-card);min-height:44px;color:var(--text-primary);padding:10px 16px}.hgym-secondary:disabled{opacity:.5;cursor:default}.hgym-end{min-height:36px;padding:6px 12px;font-size:.88rem}.hgym-replay{border:1px solid var(--accent-primary);background:var(--bg-card);min-height:44px;color:var(--accent-primary);flex:none;padding:8px 18px;font-weight:700}.hgym-replay:before{content:"";vertical-align:0;border:6px solid #0000;border-left:10px solid;border-right-width:0;width:0;height:0;margin-right:8px;display:inline-block}.hgym-replay:hover{background:var(--accent-primary-glow)}.hgym-home{flex-direction:column;gap:16px;display:flex}.hgym-home__head,.hgym-pro__head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.hgym-home__head h2,.hgym-pro__head h2,.hgym-summary h2{margin:4px 0 6px;font-size:1.5rem}.hgym-streak{color:#8a4b05;background:#fff3df;border-radius:999px;flex:none;padding:6px 12px;font-size:.9rem;font-weight:700}.hgym-today{border-radius:var(--radius-md);background:var(--hgym-ok-soft);color:var(--accent-primary);padding:10px 14px;font-weight:600}.hgym-start-row{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);align-items:stretch;gap:10px;display:grid}.hgym-sizes{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.hgym-size{border:1px solid var(--border-medium);background:var(--bg-card);min-height:56px;color:var(--text-primary);flex-direction:column;justify-content:center;align-items:center;display:flex}.hgym-size strong{font-size:1.15rem;line-height:1.1}.hgym-size span{color:var(--text-secondary);font-size:.78rem}.hgym-size[aria-pressed=true]{border-color:var(--accent-primary);background:var(--hgym-ok-soft);box-shadow:inset 0 0 0 1px var(--accent-primary)}.hgym-map{flex-direction:column;gap:12px;display:flex}.hgym-map__head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.hgym-map__head h3{font-size:1.05rem}.hgym-switch{cursor:pointer;align-items:center;gap:8px;min-height:44px;font-weight:600;display:inline-flex}.hgym-switch input{width:20px;height:20px;accent-color:var(--accent-primary)}.hgym-group{flex-direction:column;gap:8px;display:flex}.hgym-group__title{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-size:.82rem;font-weight:700}.hgym-skills{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px;display:grid}.hgym-skill{--hgym-tone:var(--accent-primary);border:1px solid var(--border-medium);border-left:4px solid var(--hgym-tone);background:var(--bg-card);color:var(--text-primary);text-align:left;flex-direction:column;gap:6px;padding:12px 14px;display:flex}.hgym-skill:hover:not(:disabled){box-shadow:var(--shadow-md);transform:translateY(-1px)}.hgym-skill[data-mastery=new]{--hgym-tone:var(--hgym-violet)}.hgym-skill[data-mastery=weak]{--hgym-tone:var(--hgym-warm)}.hgym-skill[data-mastery=ok]{--hgym-tone:var(--accent-primary)}.hgym-skill[data-mastery=strong]{--hgym-tone:#2f8f4e}.hgym-skill.is-locked{--hgym-tone:var(--border-medium);background:var(--bg-tertiary);color:var(--text-muted);cursor:not-allowed}.hgym-skill__top{justify-content:space-between;gap:6px;font-size:.75rem;display:flex}.hgym-skill__kind{color:var(--text-secondary)}.hgym-skill__badge{background:color-mix(in srgb, var(--hgym-tone) 14%, transparent);color:var(--hgym-tone);border-radius:999px;padding:1px 8px;font-weight:700}.hgym-skill.is-locked .hgym-skill__badge{color:var(--text-muted)}.hgym-skill__title{font-size:1.02rem}.hgym-skill__detail{color:var(--text-secondary);font-size:.8rem}.hgym-meter{background:var(--bg-tertiary);border-radius:999px;height:6px;display:block;position:relative;overflow:hidden}.hgym-meter__fill{border-radius:inherit;background:linear-gradient(90deg, var(--accent-primary), #46b4a0);transition:width .4s;position:absolute;inset:0 auto 0 0}.hgym-pro-entry{border:1px dashed var(--hgym-violet);color:var(--text-primary);text-align:left;background:linear-gradient(135deg,#6d4fc214,#087f820f);flex-direction:column;gap:4px;padding:16px 18px;display:flex}.hgym-pro-entry strong{color:var(--hgym-violet);font-size:1.05rem}.hgym-pro-entry span{color:var(--text-secondary);font-size:.9rem}.hgym-pro-entry:hover{box-shadow:var(--shadow-md)}.hgym-q{flex-direction:column;gap:14px;animation:.25s hgym-in;display:flex}.hgym-q__head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.hgym-q__meta{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.hgym-q__progress{font-variant-numeric:tabular-nums;font-weight:800}.hgym-q__score{color:var(--accent-primary);font-variant-numeric:tabular-nums;font-weight:700}.hgym-chip{background:var(--hgym-ok-soft);color:var(--accent-primary);border-radius:999px;padding:3px 10px;font-size:.82rem;font-weight:700}.hgym-chip--soft{background:var(--bg-tertiary);color:var(--text-secondary)}.hgym-progress{background:var(--bg-tertiary);border-radius:999px;flex-basis:100%;height:5px;overflow:hidden}.hgym-progress__fill{border-radius:inherit;background:linear-gradient(90deg, var(--accent-primary), var(--accent-secondary));height:100%;transition:width .3s;display:block}.hgym-concept{border-radius:var(--radius-md);background:#6d4fc20d;border:1px solid #6d4fc240;padding:10px 14px}.hgym-concept summary{min-height:28px;color:var(--hgym-violet);cursor:pointer;font-weight:700}.hgym-concept ul{gap:4px;margin:6px 0 0;padding-left:18px;font-size:.92rem;display:grid}.hgym-q__prompt{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.hgym-q__title{margin-bottom:2px;font-size:1.2rem}.hgym-display{border-radius:var(--radius-md);background:linear-gradient(135deg,#087f8214,#6d4fc212);flex-direction:column;align-items:center;gap:2px;padding:16px;display:flex}.hgym-display__big{letter-spacing:.01em;color:var(--text-primary);font-size:2.6rem;line-height:1.1}.hgym-display__small{color:var(--text-secondary);font-weight:600}.hgym-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.hgym-options--many{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.hgym-option{border:1px solid var(--border-medium);background:var(--bg-card);min-height:56px;color:var(--text-primary);text-align:left;align-items:center;gap:10px;padding:10px 14px;font-weight:600;display:flex}.hgym-option:hover:not(:disabled){border-color:var(--accent-primary);box-shadow:var(--shadow-sm)}.hgym-option:disabled{cursor:default}.hgym-option__key{background:var(--bg-tertiary);width:26px;height:26px;color:var(--text-secondary);border-radius:8px;flex:none;place-items:center;font-size:.8rem;font-weight:800;display:inline-grid}.hgym-option.is-correct{border-color:var(--hgym-ok);background:var(--hgym-ok-soft);color:var(--hgym-ok);animation:.3s hgym-pop}.hgym-option.is-correct .hgym-option__key{background:var(--hgym-ok);color:#fff}.hgym-option.is-wrong{border-color:var(--hgym-bad);background:var(--hgym-bad-soft);color:var(--hgym-bad);animation:.3s hgym-shake}.hgym-option.is-wrong .hgym-option__key{background:var(--hgym-bad);color:#fff}.hgym-play{border:1px dashed var(--border-medium);border-radius:var(--radius-md);background:var(--bg-card);flex-direction:column;gap:10px;padding:12px 14px;display:flex}.hgym-play__row{flex-wrap:wrap;align-items:center;gap:8px;min-height:36px;display:flex}.hgym-play__label{color:var(--text-secondary);font-weight:700}.hgym-pressed{flex-wrap:wrap;gap:6px;display:flex}.hgym-note{background:var(--hgym-ok-soft);color:var(--hgym-ok);border-radius:999px;padding:4px 12px;font-weight:800;animation:.2s hgym-pop}.hgym-note.is-wrong{background:var(--hgym-bad-soft);color:var(--hgym-bad)}.hgym-remaining{color:var(--text-secondary);margin-left:auto;font-size:.88rem}.hgym-play__actions{gap:8px;display:flex}.hgym-feedback{border-radius:var(--radius-md);min-height:0;padding:0;line-height:1.5}.hgym-feedback.is-correct,.hgym-feedback.is-wrong{padding:12px 14px;animation:.2s hgym-in}.hgym-feedback.is-correct{background:var(--hgym-ok-soft);color:#0b5b5d}.hgym-feedback.is-wrong{background:var(--hgym-bad-soft);color:#7d2a1e}.hgym-feedback strong{margin-right:2px}.hgym-shortcuts{text-align:center}.hgym-summary{flex-direction:column;gap:14px;animation:.3s hgym-in;display:flex}.hgym-summary__hero{align-items:center;gap:18px;display:flex}.hgym-score{--hgym-score:0;background:radial-gradient(closest-side, var(--bg-card) 78%, transparent 79%), conic-gradient(var(--accent-primary) calc(var(--hgym-score) * 1%), var(--bg-tertiary) 0);border-radius:50%;flex:none;place-items:center;width:108px;height:108px;display:grid}.hgym-score strong{font-variant-numeric:tabular-nums;font-size:1.6rem}.hgym-summary[data-grade=practice] .hgym-score{background:radial-gradient(closest-side, var(--bg-card) 78%, transparent 79%), conic-gradient(var(--hgym-warm) calc(var(--hgym-score) * 1%), var(--bg-tertiary) 0)}.hgym-summary__facts{color:var(--text-secondary);flex-direction:column;gap:2px;display:flex}.hgym-summary__verdict{color:var(--text-primary);font-size:1.3rem}.hgym-summary__rows{gap:8px;margin:0;padding:0;list-style:none;display:grid}.hgym-row{grid-template-columns:minmax(0,10rem) minmax(0,1fr) 3rem;align-items:center;gap:10px;display:grid}.hgym-row__title{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.hgym-row__value{text-align:right;font-variant-numeric:tabular-nums;color:var(--text-secondary)}.hgym-tip{border-radius:var(--radius-md);color:#74440a;background:#fff8ea;padding:12px 14px}.hgym-unlocked{border-radius:var(--radius-md);color:var(--hgym-violet);background:#6d4fc214;padding:10px 14px;font-weight:700}.hgym-summary__actions{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:10px;display:grid}.hgym-pro{flex-direction:column;gap:14px;display:flex}.hgym-pro__form{gap:10px;display:grid}.hgym-field{border:1px solid var(--border-medium);border-radius:var(--radius-md);background:var(--bg-card);margin:0;padding:12px 14px}.hgym-field legend{padding:0 6px;font-size:.92rem;font-weight:700}.hgym-pills{flex-wrap:wrap;gap:6px;display:flex}.hgym-pill{cursor:pointer;display:inline-flex;position:relative}.hgym-pill input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.hgym-pill span{border:1px solid var(--border-medium);background:var(--bg-card);border-radius:999px;align-items:center;min-height:40px;padding:6px 14px;font-size:.9rem;transition:background .15s,border-color .15s;display:inline-flex}.hgym-pill input:checked+span{border-color:var(--accent-primary);background:var(--hgym-ok-soft);color:var(--accent-primary);font-weight:700}.hgym-pill input:focus-visible+span{outline:3px solid var(--accent-primary);outline-offset:2px}@keyframes hgym-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes hgym-pop{0%{transform:scale(.96)}60%{transform:scale(1.03)}to{transform:scale(1)}}@keyframes hgym-shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}@media (width<=600px){.hgym{border-radius:var(--radius-md);padding:14px}.hgym-home__head,.hgym-pro__head{flex-direction:column}.hgym-start-row,.hgym-summary__actions,.hgym-options{grid-template-columns:1fr}.hgym-display__big{font-size:2.1rem}.hgym-row{grid-template-columns:minmax(0,7rem) minmax(0,1fr) 2.6rem}.hgym-shortcuts{display:none}}@media (prefers-reduced-motion:reduce){.hgym *{transition:none!important;animation:none!important}}[data-theme=dark]{--bg-primary:#121826;--bg-secondary:#1a2235;--bg-tertiary:#1e2a3e;--bg-card:#1e2a3e;--bg-glass:#1a2235f0;--text-primary:#e4e8ef;--text-secondary:#9ba4b5;--text-muted:#6b7a92;--accent-primary:#20b2b5;--accent-primary-glow:#20b2b529;--accent-secondary:#28c8c6;--accent-success:#20b2b5;--accent-success-glow:#20b2b52e;--accent-error:#e05a48;--accent-error-surface:#f06050;--accent-error-glow:#e05a4833;--accent-warning:#d4922a;--accent-rest:#6b7a92;--demo-key-light:#ffe7a3;--demo-key:#f2b43d;--demo-key-dark:#b96e08;--demo-key-glow:#f2b43d73;--border-subtle:#2a364d;--border-medium:#334163;--shadow-sm:0 2px 8px #0000003d;--shadow-md:0 8px 24px #00000047, 0 1px 3px #00000038;--shadow-lg:0 18px 46px #0006;--shadow-glow:0 6px 14px #20b2b540;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=dark] body{background:#0e1420}[data-theme=dark] .app-container{background:radial-gradient(circle at 75% 6%, #20b2b50f, transparent 29%), var(--bg-primary)}[data-theme=dark] .icon-btn{background:var(--bg-card);border-color:var(--border-subtle)}[data-theme=dark] .icon-btn:hover{background:var(--bg-tertiary)}[data-theme=dark] .mode-tabs{background:var(--bg-secondary);border-color:var(--border-subtle)}[data-theme=dark] .mode-tab:hover span{background:var(--bg-tertiary);color:var(--accent-primary)}[data-theme=dark] .staff-card{background:var(--bg-card);border-color:var(--border-subtle)}[data-theme=dark] .staff-card canvas{filter:invert(.88)hue-rotate(180deg)}[data-theme=dark] .answer-btn{background:var(--bg-tertiary);border-color:var(--border-subtle)}[data-theme=dark] .answer-btn:hover:not(:disabled){border-color:var(--accent-primary)}[data-theme=dark] .stat-item{background:var(--bg-card);border-color:var(--border-subtle)}[data-theme=dark] .settings-panel{background:var(--bg-secondary);border-color:var(--border-subtle)}[data-theme=dark] .settings-backdrop.open{background:#000000a6}[data-theme=dark] .stats-modal{background:#000000b3}[data-theme=dark] .stats-modal__content{background:var(--bg-secondary);border-color:var(--border-subtle)}[data-theme=dark] .piano-section{background:var(--bg-card);border-color:var(--border-subtle)}[data-theme=dark] .piano-keyboard{background:#181e28;border-color:#181e28}[data-theme=dark] .keyboard-hint kbd{background:var(--bg-tertiary);border-color:var(--border-medium)}[data-theme=dark] .workspace-context{background:var(--bg-secondary);border-color:var(--border-subtle)}[data-theme=dark] .hgym{--hgym-surface:linear-gradient(160deg, #1a2235 0%, #1a2840 55%, #192530 100%);border-color:var(--border-subtle)}[data-theme=dark] .hgym-streak{color:#d4a040;background:#3a2d10}[data-theme=dark] .hgym-tip{color:#d4a040;background:#2a2210}[data-theme=dark] .hgym-feedback.is-correct{color:#60d5d5;background:#20b2b51f}[data-theme=dark] .hgym-feedback.is-wrong{color:#f08070;background:#e05a481f}[data-theme=dark] .rgym,[data-theme=dark] .rgym-card{--rgym-surface:linear-gradient(160deg, #1a2235 0%, #192530 100%);border-color:var(--border-subtle)}[data-theme=dark] .rgym-slot{background:#1c2e3a}[data-theme=dark] .rgym-bar{background:var(--bg-card);border-color:var(--border-subtle)}[data-theme=dark] .rgym-streak{color:#d4a040;background:#3a2d10}[data-theme=dark] .rgym-count-guide{background:var(--bg-card);border-color:var(--border-subtle)}[data-theme=dark] .continuous-test__tabs{background:var(--bg-tertiary)}[data-theme=dark] .continuous-test__tabs button[aria-selected=true]{background:var(--bg-card)}[data-theme=dark] .app-footer__pill{background:var(--bg-card);border-color:var(--border-subtle)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]):not([data-theme=dark]){--bg-primary:#121826;--bg-secondary:#1a2235;--bg-tertiary:#1e2a3e;--bg-card:#1e2a3e;--bg-glass:#1a2235f0;--text-primary:#e4e8ef;--text-secondary:#9ba4b5;--text-muted:#6b7a92;--border-subtle:#2a364d;--border-medium:#334163;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}
