.instrument-visualizer{background:#f8f9fa;border-radius:12px 12px 0 0;bottom:0;box-shadow:0 -4px 12px rgba(0,0,0,.15);left:0;max-height:250px;overflow:visible;padding:50px 15px 15px;position:fixed;right:0;transition:transform .3s ease,opacity .3s ease;width:100%;z-index:99}.instrument-visualizer.collapsed{opacity:0;pointer-events:none;transform:translateY(100%)}.instrument-visualizer[data-size=small]{max-height:160px;padding:10px}.instrument-visualizer[data-size=small] .piano-keyboard{max-height:140px}.instrument-visualizer[data-size=medium]{max-height:250px}.instrument-visualizer[data-size=large]{max-height:350px;padding:20px}.instrument-visualizer[data-size=large] .piano-keyboard{max-height:320px}.instrument-visualizer[data-position=sidebar]{bottom:auto;margin-left:0;max-width:400px;position:relative}.instrument-visualizer-piano .piano-keyboard{display:block;height:auto;margin:0 auto;max-width:100%;user-select:none}.instrument-visualizer-piano .piano-keyboard .piano-key{cursor:default}.instrument-visualizer-piano .piano-keyboard .piano-key[style*="cursor: pointer"]:active{transform:translateY(2px)}.instrument-visualizer-piano .piano-keyboard .white-key{stroke:#ccc;stroke-width:1}.instrument-visualizer-piano .piano-keyboard .white-key:hover{stroke:#999;stroke-width:2}.instrument-visualizer-piano .piano-keyboard .black-key{stroke:#000;stroke-width:1}.instrument-visualizer-piano .piano-keyboard .black-key:hover{stroke:#333;stroke-width:1.5}.instrument-visualizer-piano .piano-keyboard .key-label{fill:#999;font-size:10px;pointer-events:none;user-select:none}.instrument-visualizer-piano .piano-keyboard .octave-markers text{fill:#666;font-size:12px;font-weight:700;user-select:none}.instrument-controls{align-items:center;background:#fff;border-radius:8px;box-shadow:0 1px 4px rgba(0,0,0,.1);display:flex;gap:15px;margin-bottom:15px;padding:10px 15px}.instrument-controls .control-group{align-items:center;display:flex;gap:8px}.instrument-controls .control-group label{color:#495057;font-size:.9rem;font-weight:500;margin:0}.instrument-controls .control-group button{background:#fff;border:1px solid #ced4da;border-radius:6px;color:#495057;cursor:pointer;font-size:.875rem;padding:6px 12px;transition:all .2s ease}.instrument-controls .control-group button:hover{background:#f8f9fa;border-color:#adb5bd}.instrument-controls .control-group button.active{background:#007abc;border-color:#007abc;color:#fff}.instrument-controls .control-group button.active:hover{background:#0056b3;border-color:#0056b3}.instrument-controls .control-group button i{margin-right:4px}.instrument-controls .control-group select{background:#fff;border:1px solid #ced4da;border-radius:6px;color:#495057;cursor:pointer;font-size:.875rem;padding:6px 10px;transition:border-color .2s ease}.instrument-controls .control-group select:hover{border-color:#adb5bd}.instrument-controls .control-group select:focus{border-color:#007abc;box-shadow:0 0 0 .2rem rgba(0,122,188,.25);outline:none}@media (max-width:768px){.instrument-controls{align-items:stretch;flex-direction:column}.instrument-controls .control-group{justify-content:space-between}}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.instrument-visualizer{animation:slideDown .3s ease}.instrument-visualizer-guitar,.instrument-visualizer-violin{bottom:0!important;position:fixed!important}.instrument-visualizer-violin{align-items:center!important;border-radius:12px 12px 0 0!important;box-shadow:0 -4px 12px rgba(0,0,0,.15)!important;display:flex!important;justify-content:center!important;left:0!important;max-height:300px!important;max-width:100%!important;padding:50px 15px 15px!important;right:0!important;top:auto!important;transform:none!important;width:100%!important;z-index:99!important}.instrument-visualizer-violin svg{display:block;margin:0 auto}.instrument-visualizer-violin .finger-position .finger-dot{transition:opacity .1s ease}.instrument-visualizer-violin .finger-position .finger-text{pointer-events:none;transition:opacity .1s ease;user-select:none}.instrument-visualizer-violin .bow-direction-indicator{transition:opacity .3s ease}.instrument-visualizer-violin .bow-direction-indicator text{user-select:none}.instrument-visualizer-saxophone{align-items:center!important;border-radius:12px 12px 0 0!important;bottom:0!important;box-shadow:0 -4px 12px rgba(0,0,0,.15)!important;display:flex!important;justify-content:center!important;left:0!important;max-height:300px!important;max-width:100%!important;padding:50px 15px 15px!important;position:fixed!important;right:0!important;top:auto!important;transform:none!important;width:100%!important;z-index:99!important}.instrument-visualizer-saxophone svg{display:block;margin:0 auto}.instrument-visualizer-saxophone .key-pad{cursor:default;transition:fill .15s ease-out,filter .15s ease-out}.instrument-visualizer-saxophone .key-group:hover .key-pad{stroke:#666;stroke-width:2.5}.coming-soon-message{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:200px;padding:30px;text-align:center}.coming-soon-message i{color:#666;font-size:3rem;margin-bottom:15px;opacity:.6}.coming-soon-message h3{color:#333;font-size:1.5rem;margin-bottom:10px}.coming-soon-message p{color:#666;font-size:1rem;margin:0;opacity:.8}.instrument-peek-button{align-items:center;background:#007abc;border:none;border-radius:25px;bottom:10px;box-shadow:0 4px 12px rgba(0,122,188,.3);color:#fff;cursor:pointer;display:flex;font-size:14px;font-weight:500;gap:8px;left:50%;padding:10px 20px;position:fixed;transform:translateX(-50%) translateY(0);transition:transform .3s ease,opacity .3s ease,box-shadow .3s ease;z-index:98}.instrument-peek-button.hidden{opacity:0;pointer-events:none;transform:translateX(-50%) translateY(100px)}.instrument-peek-button i{font-size:18px}.instrument-peek-button:hover{box-shadow:0 6px 20px rgba(0,122,188,.5);transform:translateX(-50%) translateY(-2px)}.instrument-peek-button:active{transform:translateX(-50%) translateY(0)}@media (prefers-contrast:high){.instrument-visualizer .piano-key{stroke-width:2!important}.instrument-visualizer .white-key{stroke:#000!important}.instrument-visualizer .black-key{stroke:#fff!important}}@media (prefers-reduced-motion:reduce){.instrument-visualizer .piano-key{transition:none!important}.instrument-visualizer{animation:none!important}}body.instrument-visualizer-visible{padding-bottom:400px}body.instrument-visualizer-visible.visualizer-small{padding-bottom:280px}body.instrument-visualizer-visible.visualizer-large{padding-bottom:500px}@media (max-width:576px){.instrument-visualizer{border-radius:8px 8px 0 0;padding:10px}.instrument-visualizer[data-size=small]{max-height:140px;padding:5px}.instrument-visualizer[data-size=large]{max-height:280px;padding:15px}.instrument-visualizer-piano .piano-keyboard .key-label{font-size:8px}.instrument-visualizer-piano .piano-keyboard .octave-markers text{font-size:10px}body.instrument-visualizer-visible{padding-bottom:280px}body.instrument-visualizer-visible.visualizer-small{padding-bottom:240px}body.instrument-visualizer-visible.visualizer-large{padding-bottom:400px}}@media print{.instrument-controls,.instrument-visualizer{display:none}}.practice-container{display:flex;flex-direction:column;height:100vh;padding:1rem}.sheet-music-section{background:#fff;border:1px solid #ddd;border-radius:4px;flex:1;overflow:auto;padding:1rem;position:relative}#loadingIndicator{color:#666;font-size:1.2rem;left:50%;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%)}.controls-panel{background:#f8f9fa;border:1px solid #dee2e6;border-radius:4px;margin-top:1rem;padding:1rem}.control-groups-container{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem}.measure-display-inline,.time-display-inline{align-items:center;background:#f8f9fa;border:1px solid #dee2e6;border-radius:6px;display:flex;padding:.4rem .75rem;white-space:nowrap}@media (max-width:576px){.measure-display-inline,.time-display-inline{font-size:.85rem;padding:.3rem .5rem}}.control-groups-container>.btn{border-radius:6px;font-weight:500;padding:.5rem 1rem}@media (max-width:768px){.control-groups-container>.btn .btn-text{display:none}}@media (max-width:576px){.control-groups-container>.btn{padding:.5rem .75rem}}.control-group-wrapper{position:relative}.control-group-wrapper.feature-locked .control-group-btn{cursor:not-allowed;opacity:.6}.control-group-btn{align-items:center;background:#fff;border:1px solid #dee2e6;border-radius:6px;color:#495057;cursor:pointer;display:flex;font-size:.875rem;font-weight:500;gap:.25rem;padding:.4rem .75rem;transition:all .2s ease;white-space:nowrap}.control-group-btn.btn-primary{background:#007bff;border-color:#007bff;color:#fff}.control-group-btn.btn-primary:hover:not(:disabled){background:#0056b3;border-color:#0056b3}.control-group-btn.btn-success{background:#28a745;border-color:#28a745;color:#fff}.control-group-btn.btn-success:hover:not(:disabled){background:#1e7e34;border-color:#1e7e34}.control-group-btn.btn-outline-secondary{background:#fff;border-color:#dee2e6;color:#495057}.control-group-btn.btn-outline-secondary:hover:not(:disabled){background:#f8f9fa;border-color:#adb5bd}.control-group-btn:disabled{cursor:not-allowed;opacity:.6}.control-group-btn.active,.control-group-btn[aria-expanded=true]{background:#f8f9fa;box-shadow:0 2px 4px rgba(0,0,0,.1)}.control-group-btn.active .dropdown-arrow,.control-group-btn[aria-expanded=true] .dropdown-arrow{transform:rotate(180deg)}@media (max-width:768px){.control-group-btn .btn-text{display:none}}.control-group-btn .dropdown-arrow{font-size:.7rem;opacity:.7;transition:transform .2s ease}@media (max-width:768px){.control-group-btn .dropdown-arrow{display:none}}.control-group-btn .lock-icon-inline{font-size:.7rem;opacity:.7}.control-group-btn .badge{font-size:.7rem;font-weight:600;padding:.15rem .4rem}.control-dropdown{animation:dropdownSlideIn .2s ease;background:#fff;border:1px solid #dee2e6;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.15);display:none;left:0;max-width:300px;min-width:220px;position:absolute;top:calc(100% + 4px);z-index:1000}.control-dropdown.show{display:block}.control-dropdown.dropdown-right{left:auto;right:0}@keyframes dropdownSlideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.control-dropdown-content{padding:.75rem}.control-dropdown-content .form-label{color:#6c757d;font-size:.75rem;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.control-dropdown-content .btn{font-size:.875rem}.control-dropdown-content small{font-size:.75rem}.control-group{margin-bottom:1rem}.control-group:last-child{margin-bottom:0}.control-group label{display:block;font-size:.9rem;font-weight:600;margin-bottom:.5rem}.playback-controls{align-items:center;display:flex;gap:.5rem}.playback-controls button{background:#007bff;border:1px solid #007bff;border-radius:4px;color:#fff;cursor:pointer;font-size:1rem;padding:.5rem 1rem}.playback-controls button:hover:not(:disabled){background:#0056b3}.playback-controls button:disabled{cursor:not-allowed;opacity:.5}.playback-controls button.btn-secondary{background:#6c757d;border-color:#6c757d}.playback-controls button.btn-secondary:hover:not(:disabled){background:#545b62}.tempo-controls,.transpose-controls,.volume-controls{align-items:center;display:flex;gap:1rem}.tempo-controls input[type=range],.transpose-controls input[type=range],.volume-controls input[type=range]{flex:1;max-width:300px}.tempo-controls .value-display,.transpose-controls .value-display,.volume-controls .value-display{font-size:1rem;font-weight:600;min-width:50px}.tempo-controls button,.transpose-controls button,.volume-controls button{background:#6c757d;border:1px solid #6c757d;border-radius:4px;color:#fff;cursor:pointer;padding:.25rem .75rem}.tempo-controls button:hover,.transpose-controls button:hover,.volume-controls button:hover{background:#545b62}.loop-controls{align-items:center;display:flex;gap:1rem}.loop-controls input[type=number]{border:1px solid #ced4da;border-radius:4px;padding:.375rem .75rem;width:80px}.loop-controls input[type=number]:disabled{background:#e9ecef}.loop-controls label{display:inline-block;font-weight:400;margin:0 .5rem 0 0}.progress-bar{background:#e9ecef;border-radius:4px;cursor:pointer;height:8px;overflow:hidden;position:relative;width:100%}.progress-bar .progress-fill{background:#007bff;border-radius:4px;height:100%;transition:width .1s linear}.time-display{color:#6c757d;font-size:.85rem;margin-top:.25rem}.session-info,.time-display{display:flex;justify-content:space-between}.session-info{align-items:center;background:#fff;border:1px solid #dee2e6;border-radius:4px;margin-bottom:1rem;padding:.75rem}.session-info .info-item{display:flex;flex-direction:column}.session-info .info-item label{color:#6c757d;font-size:.75rem;margin-bottom:.25rem;text-transform:uppercase}.session-info .info-item .value{font-size:1.1rem;font-weight:600}.save-status{border-radius:4px;font-size:.85rem;padding:.5rem 1rem;text-align:center}.save-status.saving{background:#fff3cd;color:#856404}.save-status.saved{background:#d4edda;color:#155724}.save-status.error{background:#f8d7da;color:#721c24}.zoom-controls{align-items:center;display:flex;gap:.5rem}.zoom-controls button{background:#6c757d;border:1px solid #6c757d;border-radius:4px;color:#fff;cursor:pointer;padding:.25rem .75rem}.zoom-controls button:hover{background:#545b62}.zoom-controls .zoom-value{font-weight:600;min-width:50px;text-align:center}.help-modal{background:rgba(0,0,0,.5);display:none;height:100%;left:0;position:fixed;top:0;width:100%;z-index:1000}.help-modal .modal-content{background:#fff;border-radius:8px;margin:10% auto;max-width:600px;padding:2rem;position:relative}.help-modal .modal-content .close{color:#aaa;cursor:pointer;font-size:2rem;position:absolute;right:1rem;top:1rem}.help-modal .modal-content .close:hover{color:#000}.help-modal .modal-content h3{margin-bottom:1rem;margin-top:0}.help-modal .modal-content .shortcuts-list{list-style:none;padding:0}.help-modal .modal-content .shortcuts-list li{border-bottom:1px solid #e9ecef;display:flex;justify-content:space-between;padding:.5rem 0}.help-modal .modal-content .shortcuts-list li:last-child{border-bottom:none}.help-modal .modal-content .shortcuts-list li kbd{background:#f8f9fa;border:1px solid #ced4da;border-radius:3px;font-family:monospace;font-size:.9rem;padding:.2rem .5rem}.muted{background:#dc3545!important;border-color:#dc3545!important}.muted:hover{background:#c82333!important}.pitch-feedback-panel{background:#f8f9fa;border:1px solid #dee2e6;border-radius:4px;padding:.5rem .75rem}.pitch-feedback-row{align-items:center;display:flex;flex-wrap:nowrap;gap:1rem}.pitch-status-compact{align-items:center;border-radius:4px;display:flex;font-size:.8rem;font-weight:500;gap:.4rem;min-width:100px;padding:.3rem .6rem;white-space:nowrap}.pitch-status-compact .status-icon{font-size:1.1rem}.pitch-status-compact.waiting{background:#e7f1ff;color:#004085}.pitch-status-compact.correct{background:#d4edda;color:#155724}.pitch-status-compact.wrong-note{background:#f8d7da;color:#721c24}.pitch-status-compact.out-of-tune{background:#fff3cd;color:#856404}.pitch-status-compact.completed{background:#d1ecf1;color:#0c5460}.pitch-status-compact.transitioning{background:#e0e7ff;color:#3730a3}.pitch-status-compact.waiting-silence{background:#fef3c7;color:#92400e}.pitch-note-display{align-items:center;display:flex;gap:.3rem}.pitch-note-display .note-label{color:#6c757d;font-size:.65rem;font-weight:600}.pitch-note-display .note-value{font-size:1.2rem;font-weight:700;min-width:45px;text-align:center}.pitch-note-display .note-value.correct{color:#28a745}.pitch-note-display .note-value.out-of-tune{color:#ffc107}.pitch-note-display .note-value.wrong{color:#dc3545}.pitch-meter-compact{align-items:center;display:flex;flex:1;gap:.5rem;min-width:120px}.pitch-meter-compact .pitch-meter-track{background:linear-gradient(90deg,#dc3545 0,#ffc107 25%,#28a745 45%,#28a745 55%,#ffc107 75%,#dc3545);border-radius:4px;flex:1;height:8px;position:relative}.pitch-meter-compact .pitch-meter-track .pitch-meter-center-line{background:#333;bottom:0;left:50%;position:absolute;top:0;width:2px}.pitch-meter-compact .pitch-meter-track .pitch-meter-indicator{background:#333;border-radius:2px;height:12px;position:absolute;top:-2px;transform:translateX(-50%);transition:left .1s ease;width:4px}.pitch-meter-compact .cents-value{font-size:.75rem;font-weight:600;min-width:40px;text-align:center}.pitch-meter-compact .cents-value.correct{color:#28a745}.pitch-meter-compact .cents-value.out-of-tune{color:#ffc107}.pitch-meter-compact .cents-value.wrong{color:#dc3545}.hold-progress-compact{align-items:center;display:flex;gap:.5rem;min-width:80px}.hold-progress-compact .hold-timer-track{background:#e9ecef;border-radius:3px;height:6px;overflow:hidden;width:50px}.hold-progress-compact .hold-timer-track .hold-timer-fill{background:#667eea;border-radius:3px;height:100%;transition:width .1s linear}.hold-progress-compact .hold-timer-text{color:#6c757d;font-size:.7rem;font-weight:500;min-width:30px}@media (max-width:768px){.practice-container{padding:.5rem}.controls-panel{padding:.75rem}.session-info{flex-wrap:wrap}.session-info .info-item{flex:1 1 45%;margin-bottom:.5rem}.tempo-controls,.volume-controls{flex-wrap:wrap}.tempo-controls input[type=range],.volume-controls input[type=range]{flex:1 1 100%}.pitch-feedback-row{font-size:.85rem;gap:.5rem}.pitch-note-display .note-value{font-size:1rem;min-width:35px}.pitch-meter-compact{min-width:80px}}