*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-deep:#0a0b0e;--bg-stage:#0f1118;--bg-card:#ffffff0a;--accent-gold:#c9a84c;--accent-warm:#e8c87a;--accent-glow:#c9a84c2e;--text-primary:#f0e8d8;--text-secondary:#8a8070;--text-muted:#4a4540;--musician-fill:#2a2e3a;--musician-wind:#2e3328;--musician-brass:#332e28;--conductor-fill:#c9a84c;--podium-fill:#8a7040;--stage-floor:#1a1a22;--baton-color:#e8c87a;--font-display:"Playfair Display", Georgia, serif;--font-ui:"Inter", system-ui, sans-serif;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:32px;--spacing-xl:64px;--transition-fast:.12s ease;--transition-med:.28s cubic-bezier(.4,0,.2,1);--transition-slow:.5s ease}html,body{background:var(--bg-deep);height:100%;color:var(--text-primary);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;font-size:16px;overflow:hidden}#stage{background:radial-gradient(ellipse 80% 60% at 50% 80%, #c9a84c0f 0%, transparent 70%), radial-gradient(ellipse 100% 100% at 50% 100%, #1a1612cc 0%, transparent 60%), var(--bg-stage);padding:clamp(16px, 2.5vh, 28px) var(--spacing-lg) clamp(16px, 2.5vh, 24px);transition:background var(--transition-slow);flex-direction:column;justify-content:flex-start;align-items:center;gap:clamp(12px,2vh,24px);display:flex;position:fixed;inset:0;overflow:hidden auto}#stage[data-state=playing]{background:radial-gradient(ellipse 80% 60% at 50% 80%, #c9a84c1a 0%, transparent 70%), var(--bg-stage)}#stage[data-state=coasting]{background:radial-gradient(ellipse 80% 60% at 50% 80%, #c9a84c0d 0%, transparent 70%), var(--bg-stage)}#stage[data-state=paused]{background:radial-gradient(ellipse 80% 60% at 50% 80%, #64509614 0%, transparent 70%), var(--bg-stage)}#beat-flash{pointer-events:none;transition:border-color var(--transition-fast);z-index:50;border:2px solid #0000;border-radius:0;position:fixed;inset:0}#beat-flash.flash{animation:.18s ease-out forwards beatFlash}@keyframes beatFlash{0%{background:#c9a84c0a;border-color:#c9a84c99}to{background:0 0;border-color:#0000}}.stage-performance-area{justify-content:center;align-items:center;gap:var(--spacing-lg);width:min(880px,94vw);margin-top:clamp(80px,12vh,125px);display:flex;position:relative}#orchestra-silhouette{flex-shrink:1;width:min(720px,80vw)}#orchestra-silhouette svg{width:100%;height:auto;color:var(--baton-color);overflow:visible}.instrument-section{cursor:default;transition:transform var(--transition-fast)}.musician{fill:#222634;stroke:#c9a84c33;stroke-width:1.5px;transform-origin:50%;transition:fill 80ms,stroke 80ms,filter 80ms,transform 80ms}.musician.violin1{fill:#242938}.musician.violin2{fill:#222736}.musician.viola{fill:#252834}.musician.cello{fill:#232732}.musician.playing{stroke-width:2.5px;filter:drop-shadow(0 0 14px #ffd56bd9)drop-shadow(0 0 28px #c9a84c80);animation:.12s ease-out notePulse;fill:#ffd56b!important;stroke:#fff2c4!important}.instrument-section.playing .section-label{filter:drop-shadow(0 0 8px #c9a84c99);font-weight:600;fill:#ffd56b!important}@keyframes notePulse{0%{transform:scale(1)}50%{transform:scale(1.08)translateY(-2px)}to{transform:scale(1.04)}}.section-label{fill:#e2e8f0;font-family:var(--font-ui);letter-spacing:.08em;text-transform:uppercase;-webkit-user-select:none;user-select:none;text-shadow:0 1px 4px #000000e6;font-size:11px;font-weight:600;transition:fill .15s,filter .15s}.conductor{fill:var(--conductor-fill)}.podium{fill:var(--podium-fill)}.stage-floor{fill:var(--stage-floor)}.baton{color:var(--baton-color)}#stage[data-state=playing] .musician{animation:3.5s ease-in-out infinite breathe}#stage[data-state=playing] .egg-1{animation-delay:.6s}#stage[data-state=playing] .egg-2{animation-delay:1.2s}@keyframes breathe{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.03)}}.baton.swing{animation:.22s cubic-bezier(.2,.8,.4,1.2) batonDownUp}@keyframes batonDownUp{0%{transform:rotate(0)}40%{transform:rotate(18deg)translateY(4px)}to{transform:rotate(0)}}#piece-info{text-align:center;margin-bottom:clamp(6px,1.2vh,16px)}.piece-title-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.repertoire-pill-btn,.score-pill-btn{color:#ffd56b;font-family:var(--font-ui);letter-spacing:.04em;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0e121cd9;border:1px solid #ffd56b66;border-radius:20px;align-items:center;gap:6px;padding:6px 14px;font-size:.82rem;font-weight:600;transition:all .18s cubic-bezier(.16,1,.3,1);display:inline-flex;box-shadow:0 4px 14px #00000073}.repertoire-pill-btn:hover{background:#ffd56b26;border-color:#ffd56b;transform:translateY(-1px);box-shadow:0 0 16px #ffd56b59}.score-pill-btn{border-color:#ffd56b73}.score-pill-btn.active{color:#ffd56b;background:#ffd56b2e;border-color:#ffd56b;box-shadow:0 0 14px #ffd56b4d}.score-pill-btn:not(.active){color:#94a3b8;box-shadow:none;background:#ffffff0d;border-color:#ffffff26}.score-pill-btn:hover{border-color:#ffd56b;transform:translateY(-1px)}#piece-title{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.01em;margin-bottom:var(--spacing-xs);font-size:clamp(1.6rem,4vw,2.8rem);font-style:italic;font-weight:400;line-height:1.1}#piece-subtitle{color:var(--text-secondary);letter-spacing:.12em;text-transform:uppercase;font-size:.85rem;font-weight:300}.mode-selector-container{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);margin-bottom:var(--spacing-xs);transition:all var(--transition-fast);background:#0e121cd9;border:1px solid #ffd56b47;border-radius:30px;align-items:center;gap:10px;padding:6px 16px;display:flex;box-shadow:0 4px 18px #0000008c,inset 0 1px #ffffff14}.mode-selector-container:hover{border-color:#ffd56b73;box-shadow:0 6px 22px #000000a6,0 0 12px #ffd56b26}.mode-label{color:#cbd5e1;letter-spacing:.1em;text-transform:uppercase;font-size:.76rem;font-weight:600}.mode-pill-group{background:#00000073;border:1px solid #ffffff1a;border-radius:20px;gap:3px;padding:3px;display:flex}.mode-pill{color:#cbd5e1;font-family:var(--font-ui);cursor:pointer;letter-spacing:.03em;background:0 0;border:none;border-radius:16px;align-items:center;gap:4px;padding:6px 14px;font-size:.8rem;font-weight:500;transition:all .15s ease-out;display:inline-flex}.mode-pill:hover{color:#fff;background:#ffffff1f}.mode-pill.active{color:#0c1018;background:linear-gradient(135deg,#ffd56b 0%,#e6b840 100%);font-weight:700;box-shadow:0 0 14px #ffd56b99,inset 0 1px #fff6}.mode-shortcut-hint{color:#e2e8f0;letter-spacing:.02em;opacity:1;text-shadow:0 1px 3px #000c;font-size:.78rem;font-weight:400;line-height:1.4}.mode-shortcut-hint strong{color:#ffd56b;text-shadow:0 0 8px #ffd56b66;font-weight:700}#prompt-area{align-items:center;gap:var(--spacing-sm);flex-direction:column;display:flex}#prompt{color:var(--accent-warm);letter-spacing:.05em;text-align:center;transition:opacity var(--transition-med), color var(--transition-med);font-size:clamp(.9rem,2vw,1.1rem);font-weight:300}#stage[data-state=playing] #prompt{color:var(--text-secondary);opacity:.7}#stage[data-state=paused] #prompt{color:#b07070}#space-key-hint{margin-top:var(--spacing-xs)}.key{border:1px solid var(--accent-gold);letter-spacing:.15em;color:var(--accent-gold);font-size:.75rem;font-family:var(--font-ui);transition:box-shadow var(--transition-fast), background var(--transition-fast);background:#c9a84c0f;border-radius:6px;padding:6px 24px;font-weight:500;display:inline-block;box-shadow:0 0 12px #c9a84c1f}#stage[data-state=playing] .key,#stage[data-state=coasting] .key{background:#c9a84c1a;box-shadow:0 0 24px #c9a84c38}.piece-title-row{justify-content:center;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap;display:flex}.repertoire-pill-btn{color:var(--accent-gold);font-family:var(--font-ui);cursor:pointer;letter-spacing:.05em;transition:all var(--transition-fast);background:#c9a84c1f;border:1px solid #c9a84c59;border-radius:16px;padding:4px 12px;font-size:.78rem;font-weight:500}.repertoire-pill-btn:hover{background:#c9a84c40;transform:translateY(-1px);box-shadow:0 0 12px #c9a84c4d}#stage-actions{z-index:30;flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;margin-top:4px;display:flex}.stage-action-btn,#repertoire-switch-btn,#restart-btn{color:#ffd56b;font-family:var(--font-ui);letter-spacing:.05em;cursor:pointer;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);-webkit-user-select:none;user-select:none;background:#0e121ce0;border:1px solid #ffd56b73;border-radius:24px;align-items:center;gap:6px;padding:8px 22px;font-size:.82rem;font-weight:600;transition:all .15s ease-out;display:inline-flex;box-shadow:0 4px 14px #0000008c,inset 0 1px #ffffff1a}.stage-action-btn:hover,#repertoire-switch-btn:hover,#restart-btn:hover{color:#fff;background:#ffd56b38;border-color:#ffd56b;transform:translateY(-1px);box-shadow:0 0 18px #ffd56b73,0 6px 20px #0009}.stage-action-btn:active,#repertoire-switch-btn:active,#restart-btn:active{transform:translateY(1px);box-shadow:0 2px 8px #00000080}#stage[data-state=completed] #prompt{color:var(--accent-gold);text-shadow:0 0 16px #c9a84c66;font-size:1.25rem;font-weight:400}.repertoire-card{max-width:680px}.repertoire-grid{flex-direction:column;gap:14px;max-height:65vh;display:flex;overflow-y:auto}.piece-card{transition:all var(--transition-fast);background:#ffffff08;border:1px solid #ffffff14;border-radius:10px;justify-content:space-between;align-items:center;gap:16px;padding:16px 20px;display:flex}.piece-card:hover{background:#c9a84c0f;border-color:#c9a84c59;transform:translate(4px)}.piece-card.active-piece{border-color:var(--accent-gold);background:#c9a84c1a;box-shadow:0 0 16px #c9a84c26}.piece-card-info{flex:1}.piece-card-title{font-family:var(--font-display);color:var(--text-primary);margin-bottom:2px;font-size:1.15rem;font-style:italic}.piece-card-composer{color:var(--accent-warm);margin-bottom:6px;font-size:.8rem;font-weight:500}.piece-card-desc{color:var(--text-muted);font-size:.78rem;line-height:1.4}.piece-select-btn{background:var(--accent-gold);color:#12151e;font-family:var(--font-ui);cursor:pointer;white-space:nowrap;transition:all var(--transition-fast);border:none;border-radius:20px;padding:8px 18px;font-size:.8rem;font-weight:600}.piece-select-btn:hover{background:#ffe08a;box-shadow:0 0 14px #c9a84c80}#stage-footer{bottom:var(--spacing-md);align-items:center;gap:var(--spacing-sm);color:var(--text-muted);letter-spacing:.05em;z-index:40;font-size:.75rem;display:flex;position:fixed}.footer-divider{color:var(--text-muted);opacity:.5}.subtle-link{color:var(--text-secondary);font-family:var(--font-ui);letter-spacing:.08em;cursor:pointer;transition:color var(--transition-fast), background var(--transition-fast);background:0 0;border:none;border-radius:4px;padding:4px 8px;font-size:.75rem}.subtle-link:hover{color:var(--accent-gold);background:#c9a84c14}.footer-credit,.debug-hint{color:var(--text-muted);letter-spacing:.05em;font-size:.75rem}.modal-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:10000;padding:var(--spacing-md);background:#000000bf;justify-content:center;align-items:center;animation:.15s ease-out fadeIn;display:flex;position:fixed;inset:0}.modal-card{background:#141720;border:1px solid #c9a84c40;border-radius:12px;flex-direction:column;width:100%;max-width:540px;max-height:80vh;display:flex;box-shadow:0 16px 40px #0009,0 0 20px #c9a84c1a}.modal-header{border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal-header h2{font-size:1.1rem;font-family:var(--font-display);color:var(--accent-gold);margin:0;font-style:italic}.close-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px 8px;font-size:1.1rem}.close-btn:hover{color:var(--text-primary);background:#ffffff14}.modal-body{color:var(--text-primary);padding:20px;font-size:.85rem;line-height:1.6;overflow-y:auto}.version-entry{border-bottom:1px solid #ffffff0d;margin-bottom:20px;padding-bottom:16px}.version-entry:last-child{border-bottom:none;margin-bottom:0}.version-tag-row{align-items:baseline;gap:10px;margin-bottom:6px;display:flex}.version-badge{color:var(--accent-warm);background:#c9a84c26;border:1px solid #c9a84c4d;border-radius:4px;padding:2px 8px;font-size:.8rem;font-weight:600}.version-date{color:var(--text-muted);font-size:.75rem}.version-summary{color:var(--text-primary);margin-bottom:8px;font-weight:500}.version-details-list{color:var(--text-secondary);padding-left:18px}.version-details-list li{margin-bottom:4px}@keyframes fadeIn{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}#stage.dynamic-fff{background:radial-gradient(ellipse 95% 75% at 50% 80%, #ff6e2847 0%, transparent 70%), radial-gradient(ellipse 100% 100% at 50% 100%, #46140af5 0%, transparent 60%), var(--bg-stage)}#stage.dynamic-ff{background:radial-gradient(ellipse 90% 70% at 50% 80%, #ffa03233 0%, transparent 70%), radial-gradient(ellipse 100% 100% at 50% 100%, #37190ceb 0%, transparent 60%), var(--bg-stage)}#stage.dynamic-f{background:radial-gradient(ellipse 85% 65% at 50% 80%, #dcaf4b29 0%, transparent 70%), radial-gradient(ellipse 100% 100% at 50% 100%, #281e0fd9 0%, transparent 60%), var(--bg-stage)}#stage.dynamic-mf{background:radial-gradient(ellipse 80% 60% at 50% 80%, #c9a84c1a 0%, transparent 70%), var(--bg-stage)}#stage.dynamic-mp{background:radial-gradient(ellipse 85% 65% at 50% 80%, #3282d224 0%, transparent 70%), radial-gradient(ellipse 100% 100% at 50% 100%, #0f1c37d9 0%, transparent 60%), var(--bg-stage)}#stage.dynamic-p{background:radial-gradient(ellipse 90% 70% at 50% 80%, #286ee638 0%, transparent 70%), radial-gradient(ellipse 100% 100% at 50% 100%, #0a163ceb 0%, transparent 60%), var(--bg-stage)}#stage.dynamic-pp{background:radial-gradient(ellipse 95% 75% at 50% 80%, #1e5ff552 0%, transparent 70%), radial-gradient(ellipse 100% 100% at 50% 100%, #081032f5 0%, transparent 60%), var(--bg-stage)}#stage.accent-flash{animation:.38s cubic-bezier(.1,.9,.2,1) stageAccentFlash}@keyframes stageAccentFlash{0%{filter:saturate(1.6)brightness(1.25);box-shadow:inset 0 0 100px #ff2d2dd9,0 0 50px #ff4141a6}to{box-shadow:none;filter:none}}.accent-badge-icon{color:#ff3b30;text-shadow:0 0 10px #ff3b30e6,0 0 20px #ff950099;margin-left:4px;font-family:JetBrains Mono,monospace;font-size:1.15rem;font-weight:900;line-height:1;animation:.45s ease-in-out infinite alternate accentArmedPulse;display:none}.dynamic-ladder-container.accent-armed .dynamic-step.active .accent-badge-icon{display:inline-block}.dynamic-ladder-container.accent-armed{border-color:#ff3b308c;box-shadow:0 0 24px #ff3b3059}.dynamic-ladder-container.accent-armed .dynamic-step.active{border-color:#ff3b30;box-shadow:0 0 20px #ff3b30a6}@keyframes accentArmedPulse{0%{opacity:.85;transform:scale(1)}to{opacity:1;transform:scale(1.35)translate(2px)}}.control-bars-wrap{margin-bottom:var(--spacing-xs);flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.control-bars-wrap .mode-selector-container{margin-bottom:0}.stage-performance-area{flex-direction:column;justify-content:center;align-items:center;gap:10px;width:100%;max-width:1100px;margin:0 auto;display:flex;position:relative}.stage-camera-row{flex-direction:row;justify-content:center;align-items:center;gap:20px;width:100%;display:flex;position:relative}.stage-center-column{flex-direction:column;flex:1;align-items:center;gap:12px;width:100%;max-width:740px;display:flex}.camera-hero-slot{background:#0e1016bf;border:1px solid #ffd56b26;border-radius:14px;justify-content:center;align-items:center;width:100%;max-width:720px;min-height:380px;display:flex;position:relative;overflow:hidden;box-shadow:0 10px 30px #0006}.camera-hero-slot .camera-preview-overlay{z-index:20;width:100%;max-width:720px;margin:0;position:relative;top:0;left:0}.dynamic-analogue-track{box-sizing:border-box;background:linear-gradient(90deg,#102a45 0%,#17423c 25%,#4a401c 55%,#592e16 80%,#61131a 100%);border:1px solid #ffffff24;border-radius:6px;width:100%;height:12px;margin-top:4px;position:relative;overflow:visible;box-shadow:inset 0 2px 6px #0009}.dynamic-analogue-marker{z-index:10;pointer-events:none;flex-direction:column;align-items:center;transition:left 80ms cubic-bezier(.2,.8,.2,1);display:flex;position:absolute;top:-8px;transform:translate(-50%)}.dynamic-analogue-marker .analogue-pip{color:#ffd56b;text-shadow:0 0 10px #ffd56b,0 0 20px #ffd56be6;font-size:13px;font-weight:700;line-height:1}@media (width<=768px){.control-bars-wrap{gap:8px;margin-bottom:8px}.mode-selector-container{border-radius:20px;gap:6px;padding:4px 10px}.mode-label{font-size:.72rem}.mode-pill-group{gap:2px;padding:2px}.mode-pill{min-height:30px;padding:5px 9px;font-size:.74rem}.mode-shortcut-hint{display:none}}@media (width<=480px){.control-bars-wrap{box-sizing:border-box;flex-direction:column;align-items:center;gap:6px;width:100%;padding:0 8px}.mode-selector-container{box-sizing:border-box;justify-content:space-between;width:100%;max-width:340px}.mode-pill-group{flex:1;justify-content:flex-end}.mode-pill{text-align:center;flex:1;min-height:32px;padding:6px 4px;font-size:.7rem}}.dynamic-ladder-container{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);-webkit-user-select:none;user-select:none;width:100%;max-width:720px;transition:border-color var(--transition-med), box-shadow var(--transition-med);box-sizing:border-box;background:#0e121ad9;border:1px solid #c9a84c38;border-radius:12px;flex-direction:column;align-items:center;margin:6px 0 10px;padding:10px 14px;display:flex;box-shadow:0 8px 24px #00000073}.dynamic-ladder-container:hover{border-color:#c9a84c73;box-shadow:0 8px 28px #c9a84c2e}.dynamic-ladder-header{border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;width:100%;margin-bottom:8px;padding-bottom:4px;display:flex}.dynamic-icon{color:var(--accent-gold);margin-right:4px;font-size:.95rem}.dynamic-title{font-family:var(--font-ui);text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);font-size:.7rem;font-weight:700}.dynamic-current-badge{color:#ffd56b;letter-spacing:.04em;background:#ffd56b1a;border:1px solid #ffd56b40;border-radius:10px;padding:2px 8px;font-family:JetBrains Mono,monospace;font-size:.75rem;font-weight:700}.dynamic-ladder-wrap{flex-direction:column;gap:8px;width:100%;display:flex;position:relative}.dynamic-ladder{flex-direction:row;justify-content:space-between;gap:6px;width:100%;display:flex}.dynamic-step{cursor:pointer;color:var(--text-muted);background:#ffffff08;border:1px solid #ffffff14;border-radius:6px;flex:1;justify-content:center;align-items:center;gap:3px;padding:6px 4px;transition:all .12s ease-out;display:flex}.dynamic-step:hover{color:var(--text-primary);background:#c9a84c2e;border-color:#c9a84c73;transform:translateY(-2px)}.dynamic-symbol{letter-spacing:-.02em;font-family:Playfair Display,Georgia,serif;font-size:.95rem;font-style:italic;font-weight:700}.dynamic-sparkle{margin-left:-1px;font-size:.72rem}.dynamic-step.active{border-color:var(--accent-gold);color:#fff2c4;background:linear-gradient(135deg,#c9a84c6b,#ffd56b40);transform:translateY(-2px);box-shadow:0 0 14px #ffd56b66}.dynamic-step[data-dynamic=ff].active,.dynamic-step[data-dynamic=fff].active{color:#fff;background:linear-gradient(135deg,#ff6b3d73,#ffb40059);border-color:#ff8c42;animation:1s ease-in-out infinite alternate overburnLadderPulse;box-shadow:0 0 18px #ff8c42a6}.dynamic-ladder-container.overburn{border-color:#ff8c42;box-shadow:0 0 20px #ff8c4259}@keyframes overburnLadderPulse{0%{box-shadow:0 0 10px #ff8c4266}to{box-shadow:0 0 22px #ff5a14d9}}.sparkle-locked{border-color:gold!important;animation:.8s cubic-bezier(.2,.8,.2,1) sparkleLockFlash!important;box-shadow:0 0 35px #ffd700f2,inset 0 0 20px #ffd70099!important}@keyframes sparkleLockFlash{0%{border-color:#fff;transform:scale(1.15);box-shadow:0 0 50px gold,inset 0 0 30px #ffd700cc}50%{box-shadow:0 0 30px #ffd700bf,inset 0 0 15px #ffd70059}to{box-shadow:none;transform:scale(1)}}.lock-shockwave-outer{transform-origin:50%;animation:.55s cubic-bezier(.1,.9,.2,1) forwards lockShockwaveOuter}.lock-shockwave-inner{transform-origin:50%;animation:.42s cubic-bezier(.1,.9,.2,1) forwards lockShockwaveInner}.lock-sparkle-star{transform-origin:50%;animation:.62s cubic-bezier(.12,.8,.25,1) forwards lockSparkleFly}@keyframes lockShockwaveOuter{0%{r:24px;stroke-width:5px;opacity:1;filter:drop-shadow(0 0 12px #ffd700e6)}50%{opacity:.8}to{r:80px;stroke-width:1px;opacity:0}}@keyframes lockShockwaveInner{0%{r:12px;stroke-width:4px;opacity:1;filter:drop-shadow(0 0 8px #fff)}to{r:50px;stroke-width:1px;opacity:0}}@keyframes lockSparkleFly{0%{opacity:1;filter:drop-shadow(0 0 8px #ffd700f2);transform:translate(0)scale(.5)rotate(0)}20%{transform:translate(calc(var(--tx) * .3), calc(var(--ty) * .3)) scale(1.3) rotate(calc(var(--rot) * .25));opacity:1}80%{opacity:.85}to{transform:translate(var(--tx), var(--ty)) scale(0) rotate(var(--rot));opacity:0}}.camera-preview-overlay{-webkit-backdrop-filter:blur(16px);z-index:20;-webkit-user-select:none;user-select:none;width:100%;max-width:720px;font-family:var(--font-ui);transition:box-shadow var(--transition-med), border-color var(--transition-med);background:#0a0e16eb;border:1px solid #ffd56b59;border-radius:14px;animation:.25s cubic-bezier(.16,1,.3,1) cameraOverlayFadeIn;position:relative;overflow:hidden;box-shadow:0 16px 48px #000000d9,0 0 28px #ffd56b26}@keyframes cameraOverlayFadeIn{0%{opacity:0;transform:translateY(16px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.camera-preview-overlay:hover{border-color:#ffd56b8c;box-shadow:0 20px 48px #000000d9,0 0 32px #ffd56b33}.camera-preview-header{background:#ffffff08;border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.camera-title-group{align-items:center;gap:6px;display:flex}.camera-icon{font-size:.95rem}.camera-title{color:var(--text-primary);letter-spacing:.02em;font-size:.78rem;font-weight:600}.camera-status-badge{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);background:#ffffff14;border-radius:10px;padding:2px 6px;font-size:.62rem;font-weight:600}.camera-status-badge.badge-active{color:#5cd87e;background:#34c75933;border:1px solid #34c75966;animation:2s infinite alternate badgeGlowPulse}@keyframes badgeGlowPulse{0%{box-shadow:0 0 4px #34c75933}to{box-shadow:0 0 10px #34c75980}}.camera-status-badge.badge-warning{color:#ffb340;background:#ff950033;border:1px solid #ff950066}.camera-status-badge.badge-info{color:#70b4ff;background:#0a84ff33;border:1px solid #0a84ff66}.camera-status-badge.badge-error{color:#ff736a;background:#ff3b3033;border:1px solid #ff3b3066}.camera-header-actions{align-items:center;gap:4px;display:flex}.camera-btn-icon{color:var(--text-muted);cursor:pointer;width:22px;height:22px;transition:all var(--transition-fast);background:0 0;border:1px solid #ffffff1a;border-radius:4px;justify-content:center;align-items:center;font-size:.75rem;display:flex}.camera-btn-icon:hover{color:#fff;background:#ffffff1f;border-color:#ffffff40}.camera-preview-body{position:relative}.camera-media-wrap{background:#06090e;justify-content:center;align-items:center;width:100%;display:flex;position:relative;overflow:hidden}.camera-video{width:100%;height:auto;display:block}.camera-canvas{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.camera-video.mirrored,.camera-canvas.mirrored{transform:scaleX(-1)}.camera-placeholder{width:100%;height:100%;color:var(--text-muted);text-align:center;background:#06090eeb;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:16px;font-size:.75rem;display:flex;position:absolute;top:0;left:0}.camera-spinner{border:2px solid #ffd56b33;border-top-color:var(--accent-gold);border-radius:50%;width:24px;height:24px;animation:.8s linear infinite spin}.camera-telemetry-hud{background:#06080cf2;border-top:1px solid #ffffff0f;grid-template-columns:repeat(4,1fr);padding:6px 10px;font-family:JetBrains Mono,Fira Code,monospace;font-size:9.5px;display:grid}.telemetry-item{flex-direction:column;align-items:center;gap:1px;display:flex}.telemetry-item .label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:8px}.telemetry-item .val{color:var(--accent-gold);font-weight:600}.dynamic-vertical-gauge{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-sizing:border-box;-webkit-user-select:none;user-select:none;width:140px;height:616px;min-height:520px;max-height:calc(100vh - 200px);transition:border-color var(--transition-med), box-shadow var(--transition-med);background:#0e121ce0;border:1px solid #ffd56b38;border-radius:14px;flex-direction:column;flex-shrink:0;justify-content:space-between;align-items:center;margin:0;padding:14px 12px;display:none;box-shadow:0 8px 32px #00000080,inset 0 1px #ffffff0d}.magic-mode-active .stage-camera-row{align-items:stretch}.magic-mode-active .stage-center-column{justify-content:stretch}.magic-mode-active .camera-hero-slot{height:100%}.magic-mode-active .dynamic-vertical-gauge,.magic-mode-active .bpm-vertical-gauge{align-self:stretch;height:auto;min-height:0;max-height:none;display:flex}.magic-mode-active .dynamic-gauge-track-wrap,.magic-mode-active .bpm-gauge-track-wrap{min-height:0}.magic-mode-active #dynamic-ladder-container{display:none!important}.dynamic-vertical-gauge:hover{border-color:#ffd56b73;box-shadow:0 8px 36px #0009,0 0 20px #ffd56b26}.dynamic-gauge-header{border-bottom:1px solid #ffffff14;flex-direction:column;align-items:center;gap:4px;width:100%;padding-bottom:8px;display:flex}.dynamic-gauge-title-row{align-items:center;gap:4px;display:flex}.dynamic-gauge-title{font-family:var(--font-ui);letter-spacing:.12em;color:var(--text-muted);text-transform:uppercase;font-size:.68rem;font-weight:700}.dynamic-gauge-track-wrap{flex-direction:row;flex:1;justify-content:center;align-items:stretch;gap:12px;width:100%;min-height:400px;margin:12px 0;display:flex;position:relative}.dynamic-vertical-steps{flex-direction:column;justify-content:space-between;align-items:stretch;width:48px;height:100%;display:flex}.dynamic-vertical-steps .dynamic-step{border-radius:6px;justify-content:center;align-items:center;min-height:28px;padding:4px 6px;font-size:.72rem;display:flex}.dynamic-vertical-track{box-sizing:border-box;background:linear-gradient(#61131a 0%,#592e16 20%,#4a401c 45%,#17423c 75%,#102a45 100%);border:1px solid #ffffff26;border-radius:9px;width:26px;height:100%;position:relative;overflow:visible;box-shadow:inset 0 2px 6px #0009}.dynamic-vertical-marker{pointer-events:none;z-index:12;flex-direction:row;align-items:center;transition:bottom 80ms cubic-bezier(.2,.8,.2,1);display:flex;position:absolute;left:-8px;transform:translateY(50%)}.dynamic-vertical-marker .needle-pip{-webkit-backdrop-filter:blur(8px);box-sizing:border-box;background:#ffd56b61;border:2px solid #ffffffd9;border-radius:7px;width:42px;height:14px;box-shadow:0 0 16px #ffd56ba6,0 0 32px #ffd56b4d,inset 0 0 8px #fff6}.dynamic-gauge-footer-hint{color:var(--text-muted);text-align:center;opacity:.85;border-top:1px solid #ffffff14;width:100%;padding-top:6px;font-size:.62rem}.bpm-vertical-gauge{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-sizing:border-box;-webkit-user-select:none;user-select:none;width:140px;height:616px;min-height:520px;max-height:calc(100vh - 200px);transition:border-color var(--transition-med), box-shadow var(--transition-med);background:#0e121ce0;border:1px solid #ffd56b38;border-radius:14px;flex-direction:column;flex-shrink:0;justify-content:space-between;align-items:center;margin:0;padding:14px 12px;display:flex;box-shadow:0 8px 32px #00000080,inset 0 1px #ffffff0d}.bpm-vertical-gauge:hover{border-color:#ffd56b73;box-shadow:0 8px 36px #0009,0 0 20px #ffd56b26}.bpm-gauge-header{border-bottom:1px solid #ffffff14;flex-direction:column;align-items:center;gap:2px;width:100%;padding-bottom:8px;display:flex}.bpm-gauge-title{font-family:var(--font-ui);letter-spacing:.12em;color:var(--text-muted);text-transform:uppercase;font-size:.68rem;font-weight:700}.bpm-current-val-wrap{align-items:baseline;gap:4px;margin-top:2px;display:flex}.bpm-current-val{color:#ffd56b;text-shadow:0 0 14px #ffd56b99;letter-spacing:-.02em;font-family:JetBrains Mono,monospace;font-size:1.35rem;font-weight:800;line-height:1}.bpm-current-unit{font-family:var(--font-ui);color:var(--text-muted);letter-spacing:.08em;font-size:.65rem;font-weight:700}.bpm-gauge-track-wrap{flex-direction:row;flex:1;justify-content:center;align-items:stretch;gap:12px;width:100%;min-height:400px;margin:12px 0;display:flex;position:relative}.bpm-gauge-track{box-sizing:border-box;background:linear-gradient(#61131a 0%,#592e16 20%,#4a401c 45%,#17423c 75%,#102a45 100%);border:1px solid #ffffff26;border-radius:9px;width:26px;height:100%;position:relative;overflow:visible;box-shadow:inset 0 2px 6px #0009}.bpm-zone-bands{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.bpm-green-zone{pointer-events:none;z-index:1;background:#64e67838;border-top:1.5px solid #64e678a6;border-bottom:1.5px solid #64e678a6;border-radius:3px;width:100%;transition:bottom .4s,height .4s;position:absolute;left:0}.bpm-zone{text-transform:uppercase;letter-spacing:.05em;color:#ffffff61;box-sizing:border-box;border-bottom:1px dashed #ffffff1f;justify-content:center;align-items:center;width:100%;font-size:7.5px;font-weight:600;display:flex;position:absolute;left:0}.bpm-zone:first-child{border-bottom:none}.bpm-needle{pointer-events:none;z-index:10;flex-direction:row;align-items:center;transition:bottom 80ms cubic-bezier(.2,.8,.2,1);display:flex;position:absolute;left:-8px;transform:translateY(50%)}.bpm-needle.indicated-needle{z-index:12}.bpm-needle.indicated-needle .needle-pip{-webkit-backdrop-filter:blur(8px);box-sizing:border-box;background:#ffd56b61;border:2px solid #ffffffd9;border-radius:7px;width:42px;height:14px;box-shadow:0 0 16px #ffd56ba6,0 0 32px #ffd56b4d,inset 0 0 8px #fff6}.bpm-needle.orchestra-needle{z-index:8;display:none}.bpm-vertical-gauge.show-orchestra-speed .bpm-needle.orchestra-needle{display:flex}.bpm-needle.orchestra-needle .needle-pip{-webkit-backdrop-filter:blur(6px);box-sizing:border-box;background:#6be7ff73;border:1.5px solid #ffffffd9;border-radius:5px;width:42px;height:10px;box-shadow:0 0 12px #6be7ff,0 0 24px #6be7ff80}.bpm-gauge-ticks{width:24px;height:100%;position:relative}.bpm-tick{color:var(--text-muted);font-family:JetBrains Mono,monospace;font-size:8px;line-height:1;position:absolute;left:0;transform:translateY(50%)}.bpm-gauge-footer-hint{color:var(--text-muted);text-align:center;opacity:.85;border-top:1px solid #ffffff14;width:100%;padding-top:6px;font-size:.62rem}.gesture-banner{z-index:9990;font-family:var(--font-ui);letter-spacing:.04em;-webkit-backdrop-filter:blur(12px);pointer-events:none;border-radius:24px;align-items:center;gap:10px;padding:10px 24px;font-size:.95rem;font-weight:700;transition:all .2s ease-out;animation:.25s cubic-bezier(.175,.885,.32,1.275) gestureBadgePop;display:flex;position:fixed;top:24px;left:50%;transform:translate(-50%);box-shadow:0 12px 32px #000000b3}@keyframes gestureBadgePop{0%{opacity:0;transform:translate(-50%)scale(.85)}to{opacity:1;transform:translate(-50%)scale(1)}}.gesture-banner.cutoff{color:#ffb3c1;background:#2d0a0ff2;border:2px solid #ff4d6d;box-shadow:0 12px 32px #000000b3,0 0 25px #ff4d6d73}.gesture-banner.fermata{color:#ffd56b;background:#1e1808f2;border:2px solid #ffd56b;box-shadow:0 12px 32px #000000b3,0 0 25px #ffd56b80}.gesture-banner-icon{font-size:1.25rem;line-height:1}.party-banner{z-index:9999;color:#fff;font-family:var(--font-display);letter-spacing:.06em;pointer-events:none;background:linear-gradient(135deg,#ff0080f2,#00c8fff2);border:2px solid #ffffffd9;border-radius:30px;align-items:center;gap:12px;padding:10px 24px;font-size:1.05rem;font-weight:800;animation:.8s ease-in-out infinite alternate partyPulse;display:flex;position:fixed;top:24px;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #000000b3,0 0 35px #ff00b4a6}@keyframes partyPulse{0%{filter:hue-rotate();transform:translate(-50%)scale(1)}to{filter:hue-rotate(90deg);transform:translate(-50%)scale(1.05)}}.party-emoji{font-size:1.3rem;animation:.5s ease-in-out infinite alternate partyWiggle}@keyframes partyWiggle{0%{transform:rotate(-8deg)}to{transform:rotate(8deg)}}#stage.party-mode-active:before{content:"";pointer-events:none;z-index:1;will-change:filter, opacity;background:radial-gradient(90% 90%,#ff008059 0%,#00e6ff40 40%,#ffd70033 70%,#0000 100%);animation:3.5s linear infinite partyHueSpin;position:absolute;inset:0}@keyframes partyHueSpin{0%{filter:hue-rotate();opacity:.85}50%{filter:hue-rotate(180deg);opacity:1}to{filter:hue-rotate(360deg);opacity:.85}}.love-banner{z-index:9999;color:#fff;font-family:var(--font-display);letter-spacing:.05em;pointer-events:none;background:linear-gradient(135deg,#ff69b4f2,#ff1493f2);border:1.5px solid #ffffffd9;border-radius:20px;align-items:center;gap:10px;padding:8px 20px;font-size:.95rem;font-weight:800;animation:.9s ease-in-out infinite alternate lovePulse;display:flex;position:fixed;top:12px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #000000b3}@keyframes lovePulse{0%{transform:translate(-50%)scale(1)}to{transform:translate(-50%)scale(1.04)}}.love-emoji{font-size:1.2rem;animation:.6s ease-in-out infinite alternate loveHeartbeat}@keyframes loveHeartbeat{0%{transform:scale(1)}to{transform:scale(1.2)}}#stage.love-mode-active:before{content:"";pointer-events:none;z-index:1;will-change:opacity, transform;background:radial-gradient(90% 80%,#ff69b459 0%,#8b00504d 60%,#0000 100%);animation:2.5s ease-in-out infinite alternate lovePulseAura;position:absolute;inset:0}@keyframes lovePulseAura{0%{opacity:.75;transform:scale(.99)}to{opacity:1;transform:scale(1.02)}}.focus-banner{z-index:9999;color:#ffd56b;font-family:var(--font-ui);letter-spacing:.04em;pointer-events:none;background:linear-gradient(135deg,#141e30f2,#243b55f2);border:1.5px solid #ffd56bd9;border-radius:20px;align-items:center;gap:10px;padding:6px 18px;font-size:.82rem;font-weight:700;animation:.25s cubic-bezier(.16,1,.3,1) focusBannerPop;display:flex;position:fixed;top:12px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #000000bf}.focus-banner.grabbed{background:linear-gradient(135deg,#231e0ffa,#413214fa);border-color:#ffd56b;box-shadow:0 8px 30px #000000d9,0 0 20px #ffd56b66}@keyframes focusBannerPop{0%{opacity:0;transform:translate(-50%)scale(.88)}to{opacity:1;transform:translate(-50%)scale(1)}}.focus-banner-icon{font-size:1.1rem;line-height:1}.focus-banner-badge{text-transform:uppercase;letter-spacing:.06em;color:#fff;background:#ffd56b33;border:1px solid #ffd56b66;border-radius:10px;padding:2px 7px;font-size:.68rem;font-weight:800}.stage-spotlight-ray-overlay{pointer-events:none;z-index:48;visibility:hidden;width:100%;height:100%;position:absolute;top:0;left:0;overflow:visible}#orchestra-silhouette{z-index:40;transform-origin:top;flex-shrink:1;width:min(720px,80vw);margin-top:2px;margin-bottom:10px;transition:transform .35s cubic-bezier(.16,1,.3,1),opacity .25s;position:relative}#stage.focus-mode-active #orchestra-silhouette{transform:scale(1.02)}#stage.focus-mode-active:not(.magic-mode-active) #dynamic-ladder-container{opacity:.55;pointer-events:none;transition:opacity .3s}.bpm-vertical-gauge.magic-hover,.dynamic-vertical-gauge.magic-hover,#dynamic-ladder-container.magic-hover{transition:all .15s ease-out;border-color:#6be7ffb3!important;box-shadow:0 0 20px #6be7ff59!important}.bpm-vertical-gauge.magic-acquired,.dynamic-vertical-gauge.magic-acquired,#dynamic-ladder-container.magic-acquired{transition:all .1s ease-out;border-color:#ffd56bf2!important;box-shadow:0 0 30px #ffd56b99,0 0 10px #fff6!important}#stage.focus-mode-active .instrument-section{opacity:.7;transition:transform .2s cubic-bezier(.16,1,.3,1),opacity .2s}#stage.focus-mode-active .instrument-section.focus-hover{transform:scale(1.06);opacity:1!important}#stage.focus-mode-active .instrument-section.focus-hover .musician{stroke:#ffd56b!important;stroke-width:2.5px!important}#stage.focus-mode-active .instrument-section.focus-hover .section-label{fill:#ffd56b!important;font-weight:700!important}#stage.focus-mode-active .instrument-section.focus-grabbed{transform:scale(1.08);opacity:1!important}#stage.focus-mode-active .instrument-section.focus-grabbed .musician{fill:#ffd56b!important;stroke:#fff!important;stroke-width:3.5px!important}#stage.focus-mode-active .instrument-section.focus-grabbed .section-label{letter-spacing:.08em;fill:#fff!important;font-weight:800!important}#stage.focus-mode-active.has-grabbed-section .instrument-section:not(.focus-grabbed){opacity:.55!important}.stage-center-column{flex-direction:column;align-items:center;display:flex;position:relative;overflow:visible}.spotlight-score-panel{z-index:120;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);pointer-events:none;opacity:0;box-sizing:border-box;background:#0e121df5;border:1.5px solid #ffd56b99;border-radius:12px;flex-direction:column;padding:6px 12px;transition:opacity .22s cubic-bezier(.16,1,.3,1),transform .22s cubic-bezier(.16,1,.3,1);display:flex;position:fixed;overflow:hidden;transform:translateY(-6px)scale(.97);box-shadow:0 12px 36px #000c,0 0 24px #ffd56b40}.spotlight-score-panel.visible{opacity:1;pointer-events:auto;transform:translateY(0)scale(1)}.score-svg-wrap{width:100%;overflow:hidden}.score-card-header{min-height:22px;font-family:var(--font-ui);white-space:nowrap;border-bottom:1px solid #ffffff14;justify-content:center;align-items:baseline;gap:8px;padding:2px 4px 4px;display:flex}.score-card-kicker{color:var(--text-muted);letter-spacing:.1em;text-transform:uppercase;font-size:.6rem;font-weight:700}.score-card-section-name{color:#ffd56b;letter-spacing:.04em;text-overflow:ellipsis;font-size:.76rem;font-weight:700;overflow:hidden}.score-svg-wrap svg{width:100%;height:auto;display:block;overflow:hidden}.score-svg-wrap svg path{fill:#f1f5f9;stroke:#f1f5f9}.score-svg-wrap svg text{fill:#e2e8f0!important}.score-svg-wrap svg .vf-stave path{stroke-width:1px;stroke:#e2e8f073!important;fill:none!important}.score-svg-wrap svg .vf-stavebarline rect,.score-svg-wrap svg .vf-barline rect{fill:#e2e8f0b3!important;stroke:none!important}.score-svg-wrap svg .vf-clef text,.score-svg-wrap svg .vf-clef path{stroke:none;filter:drop-shadow(0 0 4px #ffd56b66);fill:#ffd56b!important}.score-svg-wrap svg .vf-timesignature text,.score-svg-wrap svg .vf-timesignature path,.score-svg-wrap svg .vf-timesignote text,.score-svg-wrap svg .vf-timesignote path,.score-svg-wrap svg .vf-timesig text,.score-svg-wrap svg .vf-timesig path{fill:#e2e8f0!important;stroke:none!important}.score-svg-wrap svg .vf-accidental text,.score-svg-wrap svg .vf-accidental path{stroke:none;fill:#ffd56b!important}.score-svg-wrap svg .vf-stavenote text,.score-svg-wrap svg .vf-notehead text{stroke:none;transition:fill 80ms,filter 80ms;fill:#f1f5f9!important}.score-svg-wrap svg .vf-stavenote path{fill:#f1f5f9;stroke:#f1f5f9;transition:fill 80ms,stroke 80ms,filter 80ms}.score-svg-wrap svg .vf-beam path{fill:#f1f5f9!important;stroke:#f1f5f9!important}.score-svg-wrap svg .vf-stavetext text,.score-svg-wrap svg .vf-stavesection text{fill:#c9a84cd9!important;font-family:var(--font-ui)!important;letter-spacing:.04em!important;font-size:10px!important;font-weight:600!important}.score-svg-wrap svg .vf-stavenote.sounding text,.score-svg-wrap svg .vf-stavenote.sounding .vf-notehead text{fill:#fff!important;filter:drop-shadow(0 0 6px #ffd56b)drop-shadow(0 0 12px #ffd56be6)!important}.score-svg-wrap svg .vf-stavenote.sounding path{fill:#fff!important;stroke:#ffd56b!important;stroke-width:1.5px!important;filter:drop-shadow(0 0 6px #ffd56b)drop-shadow(0 0 12px #ffd56be6)!important}.score-svg-wrap svg .vf-stavenote.past text,.score-svg-wrap svg .vf-stavenote.past .vf-notehead text{fill:#c9a84cb3!important}.score-svg-wrap svg .vf-stavenote.past path{fill:#c9a84cb3!important;stroke:#c9a84cb3!important}.score-svg-wrap svg .vf-stavenote.upcoming text,.score-svg-wrap svg .vf-stavenote.upcoming .vf-notehead text{fill:#f1f5f9!important}.score-svg-wrap svg .vf-stavenote.upcoming path{fill:#f1f5f9!important;stroke:#f1f5f9!important}@media (width<=480px),(height<=599px){.spotlight-score-panel{padding-inline:7px}.score-card-header{gap:5px}.score-card-kicker{font-size:.52rem}.score-card-section-name{font-size:.68rem}}#loading-screen{background:var(--bg-deep);z-index:100;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.loading-inner{align-items:center;gap:var(--spacing-md);color:var(--text-secondary);letter-spacing:.05em;flex-direction:column;font-size:.9rem;display:flex}.loading-spinner{border:2px solid var(--text-muted);border-top-color:var(--accent-gold);border-radius:50%;width:36px;height:36px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error{color:#e07070;font-size:.9rem}.stage-warming-up #orchestra-silhouette{opacity:.95;transition:opacity .3s;display:block!important}.stage-warming-up #orchestra-silhouette .instrument-section.warmup-solo-violin{filter:drop-shadow(0 0 16px #ffd56b59)}.stage-warming-up #stage-spotlight-ray-overlay,.stage-warming-up .control-bars-wrap,.stage-warming-up #prompt-area,.stage-warming-up #stage-actions{display:none!important}.stage-warming-up .camera-hero-slot{border-color:#ffd56b59;min-height:480px;box-shadow:0 12px 40px #0009,0 0 30px #ffd56b14}.warmup-overlay{z-index:100;pointer-events:auto;-webkit-user-select:none;user-select:none;background:#0a0c1073;border-radius:12px;flex-direction:column;justify-content:space-between;animation:.3s ease-out warmupFadeIn;display:flex;position:absolute;inset:0;overflow:hidden}@keyframes warmupFadeIn{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.warmup-ambient-backdrop{pointer-events:none;background:radial-gradient(circle at 50% 35%,#ffd56b14 0%,#0000 70%);position:absolute;inset:0}.warmup-live-badge{letter-spacing:.08em;color:#6ee7b7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:10;background:#121814d9;border:1px solid #6ee7b766;border-radius:12px;align-items:center;gap:6px;padding:4px 10px;font-size:.68rem;font-weight:600;display:inline-flex;position:absolute;top:14px;right:14px}.warmup-live-badge .live-dot{background:#34d399;border-radius:50%;width:7px;height:7px;animation:1.4s ease-in-out infinite liveDotPulse;box-shadow:0 0 8px #34d399}@keyframes liveDotPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.8)}}.warmup-animation-stage{pointer-events:none;flex:1;justify-content:center;align-items:center;min-height:180px;max-height:230px;display:flex;position:relative}.warmup-hands-svg{width:100%;height:100%;max-height:210px;overflow:visible}.warmup-hand-group{transition:transform 80ms linear}.hand-silhouette{filter:drop-shadow(0 0 10px #ffd56b66)}.warmup-card{-webkit-backdrop-filter:blur(20px);z-index:10;box-sizing:border-box;background:#0e1016eb;border:1px solid #ffd56b47;border-radius:14px;flex-shrink:0;margin:8px 16px 14px;padding:14px 18px;position:relative;box-shadow:0 8px 32px #000000a6,0 0 16px #0006}.warmup-overlay.returning-user .warmup-card{display:none!important}.warmup-card-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.warmup-step-badge{letter-spacing:.12em;color:#ffd56b;text-transform:uppercase;font-size:.7rem;font-weight:700}.warmup-card-actions{align-items:center;gap:8px;display:flex}.warmup-pill-btn{color:#e2e8f0;cursor:pointer;background:#ffffff14;border:1px solid #ffffff29;border-radius:14px;padding:4px 10px;font-size:.74rem;transition:background .15s,border-color .15s,color .15s}.warmup-pill-btn:hover{color:#ffd56b;background:#ffffff29;border-color:#ffd56b66}.warmup-pill-btn.secondary{color:#94a3b8}.warmup-headline{color:#fff;letter-spacing:.02em;margin:2px 0 6px;font-family:Playfair Display,Georgia,serif;font-size:1.35rem;font-weight:700}.warmup-copy{color:#cbd5e1;margin:0 0 12px;font-size:.9rem;line-height:1.4}.warmup-progress-section{background:#00000059;border:1px solid #ffffff0f;border-radius:8px;margin-bottom:10px;padding:8px 12px}.warmup-progress-header{letter-spacing:.08em;color:#94a3b8;justify-content:space-between;align-items:center;margin-bottom:4px;font-size:.68rem;font-weight:600;display:flex}.warmup-progress-pct{color:#ffd56b;font-weight:700}.warmup-progress-track{background:#ffffff14;border-radius:3px;height:6px;overflow:hidden}.warmup-progress-fill{background:linear-gradient(90deg,#b88a38,#ffd56b);border-radius:3px;height:100%;transition:width .25s cubic-bezier(.4,0,.2,1)}.warmup-status-row{margin-top:5px}.warmup-task-status{color:#94a3b8;font-size:.74rem;font-style:italic}.warmup-actions-row{align-items:center;gap:10px;margin-top:6px;display:flex}.warmup-primary-btn{color:#12141a;cursor:pointer;background:linear-gradient(135deg,#ffd56b,#c9a84c);border:none;border-radius:20px;align-items:center;gap:6px;padding:8px 18px;font-size:.85rem;font-weight:700;transition:transform .15s,box-shadow .15s;display:inline-flex;box-shadow:0 4px 14px #c9a84c59}.warmup-primary-btn:hover{transform:translateY(-1px);box-shadow:0 6px 20px #ffd56b8c}.warmup-lesson-pills{background:#ffffff0f;border:1px solid #ffd56b33;border-radius:14px;align-items:center;gap:2px;padding:2px;display:inline-flex}.warmup-lesson-pill{color:#94a3b8;cursor:pointer;background:0 0;border:none;border-radius:10px;padding:3px 9px;font-size:.72rem;font-weight:600;transition:all .15s}.warmup-lesson-pill:hover{color:#ffd56b;background:#ffffff14}.warmup-lesson-pill.active{color:#12141a;background:linear-gradient(135deg,#ffd56b,#c9a84c);font-weight:700;box-shadow:0 2px 6px #c9a84c59}.warmup-primary-btn.ready-glow{animation:1.8s ease-in-out infinite readyPulse}.warmup-primary-btn.prominent-cta{letter-spacing:.04em;border-radius:22px;padding:10px 22px;font-size:.94rem;animation:1.6s ease-in-out infinite prominentReadyPulse;box-shadow:0 0 16px #ffd56ba6,0 4px 16px #0006}@keyframes prominentReadyPulse{0%,to{transform:scale(1);box-shadow:0 0 14px #ffd56b99,0 0 24px #c9a84c59}50%{transform:scale(1.03);box-shadow:0 0 24px #ffd56bf2,0 0 42px #ffd56ba6}}.warmup-secondary-btn{color:#f1f5f9;cursor:pointer;background:#ffffff14;border:1px solid #fff3;border-radius:20px;padding:8px 16px;font-size:.82rem;font-weight:600;transition:background .15s,border-color .15s}.warmup-secondary-btn:hover{background:#ffffff24;border-color:#ffffff59}@media (prefers-reduced-motion:reduce){.warmup-overlay,.warmup-primary-btn.ready-glow,.warmup-live-badge .live-dot{animation:none}.warmup-hand-group{transition:none!important}}.initial-loading-card{-webkit-backdrop-filter:blur(16px);z-index:50;text-align:center;background:#0e1016eb;border:1px solid #ffd56b40;border-radius:12px;width:min(90%,380px);padding:18px 22px;transition:opacity .35s,transform .35s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 16px 36px #000000a6,0 0 24px #ffd56b1f}.initial-loading-card.fade-out{opacity:0;pointer-events:none;transform:translate(-50%,-50%)scale(.96)}.initial-loading-title{color:#ffd56b;letter-spacing:.05em;margin-bottom:12px;font-family:Playfair Display,serif;font-size:1.05rem;font-weight:700}.initial-loading-track{background:#ffffff1a;border-radius:3px;height:6px;margin-bottom:8px;overflow:hidden}.initial-loading-fill{background:linear-gradient(90deg,#b88a38,#ffd56b);border-radius:3px;width:0%;height:100%;transition:width .25s cubic-bezier(.4,0,.2,1);box-shadow:0 0 8px #ffd56b80}.initial-loading-meta{color:#94a3b8;justify-content:space-between;align-items:center;font-size:.74rem;display:flex}.initial-loading-pct{color:#ffd56b;font-weight:600}.debug-title{letter-spacing:.12em;color:#a0f0a099;text-transform:uppercase;margin-bottom:8px;font-size:10px}.debug-table{border-collapse:collapse;table-layout:fixed;width:100%}.debug-table td{white-space:nowrap;text-overflow:ellipsis;padding:2px 4px 2px 0;font-size:11px;line-height:1.6;overflow:hidden}.debug-table td:first-child{color:#a0f0a099;width:52%}.debug-table td:last-child{color:#a0f0a0;text-align:right;font-variant-numeric:tabular-nums;width:48%}.debug-section-header{letter-spacing:.1em;color:#ffd56b;border-bottom:1px solid #ffd56b33;margin-bottom:4px;padding-bottom:3px;font-size:.65rem;font-weight:700}.debug-toggles-grid{background:#0006;border:1px solid #ffffff14;border-radius:6px;flex-direction:column;gap:4px;margin-bottom:8px;padding:6px 8px;display:flex}.debug-checkbox-label{color:#d0f0d0;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:11px;transition:color .1s;display:flex}.debug-checkbox-label:hover{color:#fff}.debug-checkbox-label input[type=checkbox]{accent-color:#ffd56b;cursor:pointer}.section-debug-hud{pointer-events:none;transition:opacity .2s;display:none}body.debug-mode-active .section-debug-hud{display:block}.debug-vel-pill{fill:#060a10f0;stroke:#ffd56ba6;stroke-width:1.5px;filter:drop-shadow(0 4px 12px #000000d9)}.debug-vel-main{fill:#ffd56b;dominant-baseline:middle;font-family:JetBrains Mono,Fira Code,monospace;font-size:14px;font-weight:700}.debug-vel-decomp{fill:#7cc5ff;dominant-baseline:middle;font-family:JetBrains Mono,Fira Code,monospace;font-size:10px;font-weight:600}.debug-vel-history{fill:#a0f0a0;letter-spacing:.3px;dominant-baseline:middle;font-family:JetBrains Mono,Fira Code,monospace;font-size:9.5px;font-weight:500}:root{--stage-inline-padding:32px;--stage-block-padding:clamp(16px, 2.5vh, 28px);--stage-layout-gap:clamp(12px, 2vh, 24px);--performance-gap:clamp(10px, 1.5vw, 20px);--side-gauge-width:clamp(104px, 10vw, 140px);--camera-inline-size:min(720px, calc(100vw - var(--stage-inline-padding) - var(--stage-inline-padding) - var(--side-gauge-width) - var(--side-gauge-width) - var(--performance-gap) - var(--performance-gap)));--orchestra-inline-size:min(720px, 80vw)}#stage{gap:var(--stage-layout-gap);padding:var(--stage-block-padding) var(--stage-inline-padding);padding-bottom:max(var(--stage-block-padding), env(safe-area-inset-bottom))}.stage-performance-area{gap:var(--stage-layout-gap)}#orchestra-silhouette{width:var(--orchestra-inline-size)}.stage-camera-row{grid-template-columns:var(--side-gauge-width) minmax(0, var(--camera-inline-size)) var(--side-gauge-width);justify-content:center;align-items:stretch;gap:var(--performance-gap);grid-template-areas:"dynamics camera tempo"".ladder.";display:grid}.stage-center-column{display:contents}.camera-hero-slot{width:100%;max-width:var(--camera-inline-size);grid-area:camera;min-height:0}.camera-hero-slot .camera-preview-overlay,.camera-preview-overlay,.dynamic-ladder-container{max-width:var(--camera-inline-size)}.dynamic-ladder-container{grid-area:ladder}.camera-preview-overlay{--camera-source-aspect:4 / 3}.camera-media-wrap{aspect-ratio:var(--camera-source-aspect)}.camera-video{object-fit:contain;width:100%;height:100%}.camera-title-group{flex:1;min-width:0;overflow:hidden}.camera-title{white-space:nowrap;flex-shrink:0}.camera-status-badge{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.dynamic-vertical-gauge{width:var(--side-gauge-width);grid-area:dynamics}.bpm-vertical-gauge{width:var(--side-gauge-width);grid-area:tempo}.dynamic-vertical-gauge,.bpm-vertical-gauge{align-self:stretch;height:auto;min-height:0;max-height:none}#stage.magic-mode-active .stage-camera-row{grid-template-areas:"dynamics camera tempo"}#stage-footer{flex-wrap:wrap;flex-shrink:0;justify-content:center;position:relative;bottom:auto}.compact-details-btn{color:var(--text-secondary);font:500 .7rem var(--font-ui);letter-spacing:.04em;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff1f;border-radius:14px;padding:5px 10px;display:none}.stage-warming-up .camera-hero-slot{min-height:min(480px,60dvh)}@media (width>=721px) and (height>=1001px) and (height<=1250px){:root{--stage-inline-padding:clamp(12px, 1.5vw, 20px);--stage-block-padding:clamp(8px, 1.2vh, 12px);--stage-layout-gap:clamp(6px, .8vh, 8px);--performance-gap:clamp(8px, 1vw, 14px);--side-gauge-width:clamp(96px, 9vw, 120px);--camera-inline-size:min(720px, 58vw, calc(37dvh + 200px));--orchestra-inline-size:min(680px, 72vw)}#piece-info,#orchestra-silhouette,.control-bars-wrap,.mode-selector-container{margin-bottom:0}#orchestra-silhouette{margin-top:0}.stage-camera-row{align-items:stretch}.stage-center-column{gap:8px}.camera-preview-header{padding:7px 10px}.camera-telemetry-hud{padding:4px 8px}.dynamic-ladder-container{margin:3px 0 5px;padding:7px 10px}.dynamic-ladder-header{margin-bottom:5px;padding-bottom:3px}.dynamic-vertical-gauge,.bpm-vertical-gauge{width:var(--side-gauge-width);align-self:stretch;height:auto;min-height:0;max-height:none;padding:10px 8px}.dynamic-gauge-track-wrap,.bpm-gauge-track-wrap{gap:8px;min-height:0;margin:8px 0}.control-bars-wrap{gap:8px}.mode-selector-container{gap:7px;padding:4px 10px}.mode-pill{min-height:34px;padding:5px 10px;font-size:.74rem}.mode-shortcut-hint,#stage-footer .footer-divider,#stage-footer .footer-credit,#stage-footer .debug-hint{display:none}.compact-details-btn{display:inline-flex}#stage.compact-details-open .mode-shortcut-hint,#stage.compact-details-open #stage-footer .footer-divider,#stage.compact-details-open #stage-footer .footer-credit,#stage.compact-details-open #stage-footer .debug-hint{display:inline}}@media (width>=600px) and (height<=1000px){:root{--stage-inline-padding:clamp(8px, 1.5vw, 18px);--stage-block-padding:clamp(5px, 1.2vh, 10px);--stage-layout-gap:clamp(3px, .8vh, 7px);--performance-gap:clamp(7px, 1vw, 12px);--side-gauge-width:clamp(84px, 9vw, 108px);--camera-inline-size:min(720px, 58vw, calc(37dvh + 200px));--orchestra-inline-size:min(620px, 68vw, 90dvh)}#piece-info,#orchestra-silhouette,.control-bars-wrap,.mode-selector-container{margin-bottom:0}#orchestra-silhouette{margin-top:0}#piece-title{margin-bottom:0;font-size:clamp(1.15rem,2.7vw,1.8rem)}#piece-subtitle{display:none}.repertoire-pill-btn{padding:3px 9px;font-size:.7rem}.stage-camera-row{align-items:stretch}.stage-center-column{gap:5px}.camera-preview-header{padding:5px 8px}.camera-title{font-size:.7rem}.camera-status-badge{font-size:.56rem}.camera-btn-icon{width:28px;height:28px}.camera-telemetry-hud{padding:3px 6px;font-size:8px}.telemetry-item .label{font-size:7px}.dynamic-ladder-container{margin:2px 0 3px;padding:5px 8px}.dynamic-ladder-header{margin-bottom:4px;padding-bottom:2px}.dynamic-ladder-wrap{gap:4px}.dynamic-step{min-width:0;padding:3px 2px}.dynamic-symbol{font-size:.82rem}.dynamic-analogue-track{height:9px;margin-top:2px}.dynamic-vertical-gauge,.bpm-vertical-gauge{width:var(--side-gauge-width);align-self:stretch;height:auto;min-height:0;max-height:none;padding:7px 6px}.dynamic-gauge-track-wrap,.bpm-gauge-track-wrap{gap:6px;min-height:0;margin:6px 0}.dynamic-vertical-steps{width:40px}.dynamic-vertical-steps .dynamic-step{min-height:22px;padding:2px 3px}.dynamic-vertical-track,.bpm-gauge-track{width:22px}.dynamic-gauge-header,.bpm-gauge-header{padding-bottom:4px}.dynamic-gauge-title,.bpm-gauge-title{font-size:.58rem}.bpm-current-val{font-size:1.05rem}.bpm-current-unit{font-size:.55rem}.bpm-gauge-footer-hint,.dynamic-gauge-footer-hint{padding-top:3px;font-size:.52rem}.control-bars-wrap{gap:6px}.mode-selector-container{gap:5px;padding:3px 8px}.mode-pill{min-height:32px;padding:4px 8px;font-size:.7rem}.mode-shortcut-hint,#stage-footer .footer-divider,#stage-footer .footer-credit,#stage-footer .debug-hint{display:none}.compact-details-btn{display:inline-flex}#stage.compact-details-open .mode-shortcut-hint,#stage.compact-details-open #stage-footer .footer-divider,#stage.compact-details-open #stage-footer .footer-credit,#stage.compact-details-open #stage-footer .debug-hint{display:inline}#prompt{font-size:.82rem}#stage-actions{margin-top:0}.stage-action-btn,#repertoire-switch-btn,#restart-btn{padding:6px 14px;font-size:.72rem}}@media (width>=900px) and (height<=650px){:root{--camera-inline-size:min(720px, 58vw, 56dvh)}}@media (width<=720px){:root{--stage-inline-padding:max(10px, env(safe-area-inset-left));--stage-block-padding:max(8px, env(safe-area-inset-top));--stage-layout-gap:8px;--performance-gap:8px;--side-gauge-width:clamp(82px, 24vw, 104px);--portrait-camera-max:420px;--camera-inline-size:min(var(--portrait-camera-max), calc(20dvh + 100px), calc(100vw - var(--stage-inline-padding) - var(--stage-inline-padding) - var(--side-gauge-width) - var(--performance-gap)));--orchestra-inline-size:min(94vw, 520px, 45dvh)}#piece-info{margin-bottom:0}#piece-title{font-size:clamp(1.25rem,7vw,1.8rem)}#piece-subtitle{letter-spacing:.07em;font-size:.66rem}.stage-camera-row{grid-template-columns:minmax(0, var(--camera-inline-size)) var(--side-gauge-width);grid-template-areas:"camera tempo""dynamics.";align-items:stretch}#stage.magic-mode-active{--side-gauge-width:clamp(88px, 14vw, 104px);--camera-inline-size:min(var(--portrait-camera-max), calc(20dvh + 100px), calc(100vw - var(--stage-inline-padding) - var(--stage-inline-padding) - var(--side-gauge-width) - var(--side-gauge-width) - var(--performance-gap) - var(--performance-gap)))}.stage-center-column{display:contents}.camera-hero-slot{width:100%;max-width:var(--camera-inline-size);grid-area:camera;justify-self:center}.camera-preview-overlay{max-width:var(--camera-inline-size)}.dynamic-ladder-container{width:100%;max-width:var(--camera-inline-size);grid-area:dynamics;justify-self:center}#stage.magic-mode-active .stage-camera-row{grid-template-columns:var(--side-gauge-width) minmax(0, var(--camera-inline-size)) var(--side-gauge-width);grid-template-areas:"dynamics camera tempo"}#stage.magic-mode-active .camera-hero-slot{height:auto}.stage-warming-up .camera-hero-slot{min-height:min(480px,26.667dvh + 133px)}.camera-media-wrap{aspect-ratio:3/4}.camera-video,.camera-canvas{object-fit:cover}.dynamic-step{min-width:0}.dynamic-vertical-gauge,.bpm-vertical-gauge,.magic-mode-active .dynamic-vertical-gauge,.magic-mode-active .bpm-vertical-gauge{width:var(--side-gauge-width);align-self:stretch;height:auto;min-height:0;max-height:none;padding:9px 8px}#stage:not(.magic-mode-active) .bpm-vertical-gauge{width:var(--side-gauge-width);grid-column:auto;justify-self:stretch}#stage.magic-mode-active .dynamic-vertical-gauge{width:var(--side-gauge-width);grid-area:dynamics/auto;justify-self:stretch;height:auto;min-height:0;max-height:none}.dynamic-gauge-track-wrap,.bpm-gauge-track-wrap,.magic-mode-active .dynamic-gauge-track-wrap,.magic-mode-active .bpm-gauge-track-wrap{gap:7px;min-height:150px;margin:7px 0}.dynamic-vertical-steps{width:44px}.dynamic-vertical-steps .dynamic-step{min-height:24px;padding:2px 4px}.camera-btn-icon{width:30px;height:30px}.control-bars-wrap{gap:6px;margin-bottom:0}.mode-selector-container{gap:5px;padding:3px 8px}.mode-pill{min-height:32px;padding:4px 8px;font-size:.7rem}#prompt{font-size:.82rem}#stage-actions{margin-top:0}.stage-action-btn,#repertoire-switch-btn,#restart-btn{padding:6px 12px;font-size:.72rem}#stage-footer .footer-divider,#stage-footer .footer-credit,#stage-footer .debug-hint,.mode-shortcut-hint{display:none}.compact-details-btn{display:inline-flex}#stage.compact-details-open .mode-shortcut-hint,#stage.compact-details-open #stage-footer .footer-divider,#stage.compact-details-open #stage-footer .footer-credit,#stage.compact-details-open #stage-footer .debug-hint{display:inline}}@media (width<=720px) and (height<=1350px){:root{--portrait-camera-max:320px;--orchestra-inline-size:min(86vw, 460px, 38dvh)}}@media (width<=720px) and (height<=950px){:root{--portrait-camera-max:240px;--orchestra-inline-size:min(82vw, 360px, 34dvh)}#piece-subtitle{display:none}}
