@import"https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&family=Nunito:wght@700&display=swap";*,*:before,*:after{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;font-family:DM Sans,system-ui,sans-serif;background:var(--bg-primary);color:var(--text-primary);min-height:100vh;line-height:1.5}#root{min-height:100vh}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-glass);border-radius:4px}::-webkit-scrollbar-thumb{background:#9898a04d;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#9898a080}::selection{background:#bd2e954d;color:inherit}:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}button{font-family:inherit;cursor:pointer}button:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}.video-player{position:relative;width:100%;height:100%;background:var(--bg-deep);overflow:hidden;display:flex;align-items:center;justify-content:center}.video-player video{width:100%;height:100%;object-fit:contain;display:block}.video-player video.video-offscreen{position:absolute;width:1px;height:1px;left:-9999px;opacity:0;pointer-events:none}.scrub-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:80px;pointer-events:none;z-index:20;animation:scrubPulse .5s ease-out forwards}@keyframes scrubPulse{0%{opacity:1;transform:scale(.6)}15%{opacity:.2;transform:scale(.85)}30%{opacity:1;transform:scale(1)}45%{opacity:.2;transform:scale(1.05)}55%{opacity:1;transform:scale(1.1)}70%{opacity:.3;transform:scale(1.15)}85%{opacity:.8;transform:scale(1.2)}to{opacity:0;transform:scale(1.3)}}.voice-control{display:flex;flex-direction:column;align-items:center;gap:12px}.voice-button-container{position:relative;display:flex;flex-direction:column;align-items:center}.voice-button{display:flex;flex-direction:column;align-items:center;justify-content:center;width:72px;height:72px;border-radius:50%;border:2px solid var(--accent-primary);background:linear-gradient(135deg,#bd2e951a,#d460b31a);cursor:pointer;transition:all .3s ease;position:relative;overflow:hidden}.voice-button:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at center,transparent 30%,rgba(189,46,149,.1) 70%);opacity:0;transition:opacity .3s ease}.voice-button:hover:before{opacity:1}.voice-button:hover{transform:scale(1.05);box-shadow:0 0 30px var(--accent-glow)}.voice-button.active{background:linear-gradient(135deg,#bd2e954d,#d460b34d);animation:pulse 2s infinite}.voice-button.listening{border-color:var(--success);box-shadow:0 0 20px #22c55e66}.voice-button.processing{border-color:var(--warning);box-shadow:0 0 20px #eab30866}.voice-button.speaking{border-color:var(--accent-secondary);box-shadow:0 0 20px #d460b366}.voice-button.hearing{border-color:var(--success);box-shadow:0 0 25px #22c55e99}.vad-indicator{display:flex;flex-direction:column;align-items:center;gap:4px;margin-top:8px;padding:8px 12px;border-radius:12px;background:#1a1a1dcc;border:1px solid var(--border-medium);min-width:120px;transition:all .2s ease}.vad-indicator.active{background:#22c55e26;border-color:#22c55e80;box-shadow:0 0 12px #22c55e4d}.vad-bar-container{width:100%;height:8px;background:#5c5c634d;border-radius:4px;position:relative;overflow:hidden}.vad-bar{height:100%;background:linear-gradient(90deg,var(--success),#4ade80);border-radius:4px;transition:width .1s ease}.vad-indicator.active .vad-bar{background:linear-gradient(90deg,var(--success),#86efac);box-shadow:0 0 8px #22c55e99}.vad-threshold{position:absolute;top:0;bottom:0;width:2px;background:#ef4444cc}.vad-score{font-size:14px;font-weight:700;font-family:SF Mono,Fira Code,monospace;color:var(--text-secondary);transition:color .2s ease}.vad-indicator.active .vad-score{color:var(--success)}.vad-label{font-size:13px;font-weight:700;color:var(--success);text-transform:uppercase;letter-spacing:.8px;animation:pulse-text 1s infinite}@keyframes pulse-text{0%,to{opacity:1}50%{opacity:.7}}.voice-button:disabled{opacity:.6;cursor:not-allowed}@keyframes pulse{0%,to{box-shadow:0 0 20px var(--accent-glow)}50%{box-shadow:0 0 40px #bd2e9599}}.voice-icon{font-size:24px;margin-bottom:2px}.voice-status{font-size:13px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.transcription-display{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 20px;background:#111113cc;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:12px;border:1px solid var(--border-subtle);max-width:340px}.transcription-label{font-size:13px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.transcription-text{font-size:17px;color:var(--text-primary);text-align:center}.voice-error{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:8px;font-size:14px;color:var(--error)}.voice-error button{background:none;border:none;color:var(--error);cursor:pointer;font-size:16px;padding:0;line-height:1}.camera-feed{width:100%;height:100%;background:var(--bg-primary);overflow:hidden;display:flex;align-items:center;justify-content:center}.camera-video{height:100%;width:100%;object-fit:contain;transform:scaleX(-1)}.camera-error{padding:20px;text-align:center;color:var(--error);font-size:var(--text-label-10ft)}.tutor-orb{position:relative;display:flex;align-items:center;justify-content:center;border-radius:42% 58% 55% 45%/50% 42% 58% 50%;background:linear-gradient(135deg,var(--bg-glass-hover),var(--bg-glass));backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border-medium);box-shadow:0 4px 24px #00000026,inset 0 1px 2px var(--border-subtle);transition:width var(--morph-duration, .6s) var(--morph-easing, cubic-bezier(.4, 0, .2, 1)),height var(--morph-duration, .6s) var(--morph-easing, cubic-bezier(.4, 0, .2, 1)),opacity .4s ease-out;animation:blobMorph 8s ease-in-out infinite;overflow:visible}.tutor-orb__emoji{display:block;line-height:1;filter:drop-shadow(0 2px 6px rgba(0,0,0,.3));-webkit-user-select:none;user-select:none;pointer-events:none;will-change:transform;transition:font-size var(--morph-duration, .6s) var(--morph-easing, cubic-bezier(.4, 0, .2, 1))}.tutor-orb--hero{width:340px;height:340px}.tutor-orb--large{width:260px;height:260px}.tutor-orb--pip{width:200px;height:200px}@media(max-width:768px){.tutor-orb--hero{width:260px;height:260px}.tutor-orb--large{width:200px;height:200px}.tutor-orb--pip{width:120px;height:120px}}.tutor-orb--disconnected{transform:scale(.95);opacity:.35}.tutor-orb--idle{animation:blobMorph 8s ease-in-out infinite,orbBreathe 4s ease-in-out infinite}.tutor-orb--speaking,.tutor-orb--listening,.tutor-orb--thinking{animation:blobMorph 8s ease-in-out infinite}.tutor-orb--thinking .tutor-orb__emoji{animation:orbBlink .6s ease-in-out infinite}.tutor-orb--observing{opacity:.5;animation:blobMorph 8s ease-in-out infinite,orbObserve 5s ease-in-out infinite}@keyframes blobMorph{0%,to{border-radius:42% 58% 55% 45%/50% 42% 58% 50%}25%{border-radius:55% 45% 48% 52%/42% 55% 45% 58%}50%{border-radius:48% 52% 42% 58%/55% 48% 52% 45%}75%{border-radius:45% 55% 58% 42%/48% 52% 42% 55%}}@keyframes orbBreathe{0%,to{transform:scale(1)}50%{transform:scale(1.03)}}@keyframes orbBlink{0%,to{opacity:1}50%{opacity:.3}}@keyframes orbObserve{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}.start-screen{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 30%,rgba(189,46,149,.06) 0%,transparent 50%),radial-gradient(circle at 30% 80%,rgba(212,96,179,.04) 0%,transparent 40%),linear-gradient(170deg,var(--bg-deep) 0%,#1a064d 50%,var(--bg-primary) 100%);z-index:1000}.start-screen:before{content:"";position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");opacity:.5;pointer-events:none}.start-screen:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 50%,rgba(0,0,0,.5) 100%);pointer-events:none}.start-content{position:relative;z-index:1;text-align:center;display:flex;flex-direction:column;align-items:center;gap:20px;max-width:500px;padding:0 24px}.start-orb{margin-bottom:8px}.start-song{font-family:var(--font-display);font-size:var(--text-hero);font-weight:400;color:var(--text-primary);line-height:1.1;margin:0}.start-artist{font-family:var(--font-body);font-size:var(--text-label-10ft);color:var(--text-secondary);margin:0}.routine-selector{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.routine-selector button{padding:12px 20px;font-size:16px;color:var(--text-secondary);background:var(--bg-glass);border:1px solid var(--border-subtle);border-radius:12px;cursor:pointer;transition:all .2s;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.routine-selector button:hover{background:var(--bg-glass-hover)}.routine-selector button.active{color:var(--accent-primary);border-color:var(--accent-primary);background:#bd2e951f}.start-name-input{width:100%;max-width:360px;padding:16px 24px;font-family:var(--font-body);font-size:24px;color:var(--text-primary);background:var(--bg-glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border-medium);border-radius:16px;text-align:center;outline:none;transition:border-color .3s,background .3s}.start-name-input::placeholder{color:var(--text-muted);opacity:.6}.start-name-input:focus{border-color:var(--accent-primary);background:var(--bg-glass-hover)}.start-button{padding:20px 64px;font-family:var(--font-body);font-size:22px;font-weight:600;letter-spacing:.05em;color:#fff;background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));border:none;border-radius:16px;cursor:pointer;transition:all .3s;margin-top:8px}.start-button:hover:not(:disabled){transform:scale(1.04);box-shadow:0 8px 32px var(--accent-glow)}.start-button:disabled{opacity:.4;cursor:not-allowed}@media(max-width:768px){.start-song{font-size:40px}.start-artist{font-size:18px}.start-name-input{font-size:18px;padding:14px 20px}.start-button{font-size:18px;padding:16px 48px}}.full-demo-container{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--bg-deep)}.full-demo-container video{max-width:100%;max-height:100%;object-fit:contain;transition:opacity 1.2s ease-out}.full-demo-container--fading video{opacity:0}.dev-panel{min-width:320px;max-width:380px;height:100%;background:#111113f2;border-left:1px solid var(--border-medium);display:flex;flex-direction:column;padding:12px;gap:12px;overflow-y:auto}.dev-panel-header{display:flex;align-items:center;gap:8px}.dev-badge{background:var(--error);color:#fff;font-size:10px;font-weight:800;padding:2px 6px;border-radius:4px;letter-spacing:1px;text-transform:uppercase;flex-shrink:0}.dev-phase-info{font-family:var(--font-mono);font-size:12px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dev-nav{display:flex;gap:6px;align-items:center}.dev-nav-btn{padding:4px 10px;font-size:12px;font-weight:600;border:1px solid var(--border-medium);border-radius:6px;background:var(--bg-glass-hover);color:var(--text-secondary);cursor:pointer;transition:all .15s ease;flex-shrink:0}.dev-nav-btn:hover:not(:disabled){background:var(--border-medium);color:var(--text-primary)}.dev-nav-btn:disabled{opacity:.3;cursor:not-allowed}.dev-nav-select{flex:1;min-width:0;padding:4px 6px;font-size:12px;font-family:var(--font-mono);border:1px solid var(--border-medium);border-radius:6px;background:#111113cc;color:var(--text-primary);cursor:pointer}.dev-text-input-section{flex-shrink:0}.dev-text-input{display:flex;flex-direction:column;gap:6px}.dev-text-input-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.dev-text-input-label{font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.dev-text-input-target{font-size:10px;font-weight:600;padding:2px 6px;border-radius:4px;text-transform:uppercase;letter-spacing:.5px}.dev-text-input-target--connected{background:#22c55e26;color:var(--success)}.dev-text-input-target--disconnected{background:#ef444426;color:var(--error)}.dev-text-input-row{display:flex;gap:6px}.dev-text-input-field{flex:1;min-width:0;padding:6px 10px;font-size:12px;font-family:var(--font-mono);border:1px solid var(--border-medium);border-radius:6px;background:#111113cc;color:var(--text-primary);outline:none;transition:border-color .15s ease}.dev-text-input-field:focus{border-color:#9898a066}.dev-text-input-field:disabled{opacity:.5;cursor:not-allowed}.dev-text-input-field::placeholder{color:var(--text-muted)}.dev-text-input-btn{padding:6px 12px;font-size:12px;font-weight:600;border:1px solid rgba(189,46,149,.3);border-radius:6px;background:#bd2e9526;color:var(--accent-primary);cursor:pointer;transition:all .15s ease;flex-shrink:0}.dev-text-input-btn:hover:not(:disabled){background:#bd2e9540;border-color:#bd2e9580}.dev-text-input-btn:disabled{opacity:.3;cursor:not-allowed}.dev-log{max-height:240px;overflow-y:auto;display:flex;flex-direction:column;gap:2px;padding:4px 0;font-size:11px;font-family:var(--font-mono)}.dev-log-entry{display:flex;gap:6px;padding:2px 4px;border-radius:3px;line-height:1.4}.dev-log-label{flex-shrink:0;font-weight:700;font-size:10px;text-transform:uppercase;min-width:38px}.dev-log-text{color:var(--text-secondary);word-break:break-word}.dev-log-entry--user .dev-log-label{color:var(--success)}.dev-log-entry--user{background:#22c55e0f}.dev-log-entry--agent .dev-log-label{color:var(--accent-primary)}.dev-log-entry--agent{background:#bd2e950f}.dev-log-entry--tool .dev-log-label{color:var(--warning)}.dev-log-entry--tool{background:#eab3080f}.dev-log-entry--message .dev-log-label{color:#38bdf8}.dev-log-entry--message{background:#38bdf80f}.dev-log-entry--mode .dev-log-label{color:var(--accent-secondary)}.dev-log-entry--mode{background:#d460b30f}.log-export{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--border-medium);padding-top:12px}.log-export-label{font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.log-export-empty{font-size:11px;color:var(--text-muted);font-style:italic}.log-export-row{display:flex;gap:6px}.log-export-select{flex:1;min-width:0;padding:4px 6px;font-size:12px;font-family:var(--font-mono);border:1px solid var(--border-medium);border-radius:6px;background:#111113cc;color:var(--text-primary);cursor:pointer}.log-export-clear{border-color:#ef44444d!important;background:#ef44441a!important;color:var(--error)!important}.log-export-clear:hover:not(:disabled){background:#ef444433!important;border-color:#ef444480!important}.play-pause-btn{position:absolute;bottom:32px;left:50%;transform:translate(-50%);z-index:120;display:flex;align-items:center;justify-content:center;width:88px;height:88px;border:2px solid var(--border-medium);border-radius:50%;background:#09090bbf;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:var(--text-primary);font-size:36px;cursor:pointer;opacity:.6;transition:opacity .3s ease,transform .15s ease;pointer-events:auto}.play-pause-btn:hover{opacity:1;background:#09090bd9;transform:translate(-50%) scale(1.08)}.play-pause-btn:active{transform:translate(-50%) scale(.95)}.completion-screen{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;z-index:20;animation:completion-fade-in .8s ease-out}@keyframes completion-fade-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.completion-logo{width:120px;height:auto;border-radius:20px}.completion-handle{font-family:var(--font-body);font-size:var(--text-body-10ft);color:var(--text-primary);text-align:center;margin:0}.feedback-overlay{position:absolute;top:45%;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:32px;z-index:20;animation:feedback-fade-in .6s ease-out}@keyframes feedback-fade-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.feedback-question{font-family:var(--font-body);font-size:var(--text-body-10ft);color:var(--text-primary);text-align:center;padding:28px 40px;background:var(--bg-glass);border:1px solid var(--border-subtle);border-radius:20px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);max-width:860px}.feedback-buttons-row{display:flex;gap:12px;flex-wrap:nowrap;justify-content:center}.feedback-btn{padding:14px 24px;font-family:var(--font-body);font-size:clamp(14px,2vw,18px);color:var(--text-primary);white-space:nowrap;background:var(--bg-glass);border:2px solid var(--border-medium);border-radius:12px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);cursor:pointer;transition:background .2s,border-color .2s}.feedback-btn:hover{background:var(--bg-glass-hover);border-color:var(--border-medium)}.feedback-btn:active{background:var(--accent-primary);border-color:var(--accent-primary)}.feedback-logo{width:120px;height:auto;border-radius:20px}.feedback-handle{font-family:var(--font-body);font-size:var(--text-body-10ft);color:var(--text-primary);text-align:center;margin:0}.ob-dev-panel{min-width:320px;max-width:380px;border-left:1px solid var(--border-medium);flex-shrink:0}.ob-dev-transcript{display:flex;flex-direction:column;gap:4px;flex:1;min-height:0}.ob-dev-transcript-label{font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.ob-dev-log{flex:1;min-height:80px;max-height:none;overflow-y:auto}.ob-dev-empty{color:var(--text-muted);font-style:italic;font-size:11px}.ob-dev-skip-section{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.ob-dev-skip-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px}.ob-dev-skip-btn{padding:4px 6px;font-size:10px;font-family:var(--font-mono);font-weight:500;border:1px solid var(--border-medium);border-radius:4px;background:var(--bg-glass-hover);color:var(--text-secondary);cursor:pointer;transition:all .15s ease;text-align:left;white-space:nowrap;min-width:0}.ob-dev-skip-btn:hover:not(:disabled){background:#bd2e9526;border-color:#bd2e954d;color:var(--accent-primary)}.ob-dev-skip-btn:disabled{opacity:.3;cursor:not-allowed}.ob-dev-test-bar{display:flex;flex-direction:column;gap:6px;flex-shrink:0}.ob-dev-test-actions{display:flex;align-items:center;gap:6px}.ob-dev-test-all-btn,.ob-dev-test-stop-btn,.ob-dev-test-clear-btn{padding:4px 10px;font-size:11px;font-weight:600;border:1px solid var(--border-medium);border-radius:4px;cursor:pointer;transition:all .15s ease}.ob-dev-test-all-btn{background:#bd2e9526;border-color:#bd2e954d;color:var(--accent-primary)}.ob-dev-test-all-btn:hover{background:#bd2e9540}.ob-dev-test-stop-btn{background:#ef444426;border-color:#ef44444d;color:var(--error)}.ob-dev-test-stop-btn:hover{background:#ef444440}.ob-dev-test-clear-btn{background:var(--bg-glass-hover);color:var(--text-muted)}.ob-dev-test-clear-btn:hover{color:var(--text-secondary)}.ob-dev-test-progress{font-size:11px;font-family:var(--font-mono);color:var(--text-secondary)}.ob-dev-results-section{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.ob-dev-results-summary{font-size:10px;font-family:var(--font-mono);color:var(--text-secondary);padding:4px 0}.ob-dev-results-table{display:flex;flex-direction:column;gap:2px;max-height:300px;overflow-y:auto}.ob-dev-result-row{border:1px solid var(--border-medium);border-radius:4px;overflow:hidden}.ob-dev-result-pass{border-color:#22c55e40;background:#22c55e0d}.ob-dev-result-fail{border-color:#ef444440;background:#ef44440d}.ob-dev-result-header{display:flex;align-items:center;gap:6px;padding:4px 6px;cursor:pointer;font-size:10px;font-family:var(--font-mono)}.ob-dev-result-header:hover{background:var(--bg-glass-hover)}.ob-dev-result-status{font-weight:700;font-size:9px;min-width:28px}.ob-dev-result-pass .ob-dev-result-status{color:var(--success)}.ob-dev-result-fail .ob-dev-result-status{color:var(--error)}.ob-dev-result-combo{flex:1;color:var(--text-secondary);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ob-dev-result-time{color:var(--text-muted);flex-shrink:0}.ob-dev-result-details{padding:4px 6px;font-size:10px;color:var(--text-secondary);border-top:1px solid var(--border-subtle);display:flex;flex-direction:column;gap:4px}.ob-dev-result-phases{word-break:break-all}.ob-dev-reasoning{font-style:italic;color:var(--text-muted);max-height:120px;overflow-y:auto}.ob-dev-result-errors ul{margin:2px 0 0 16px;padding:0;color:var(--error)}.ob-dev-result-errors li{margin-bottom:1px}.scope-preview{display:flex;gap:32px;animation:scope-fade-in .6s ease-out both}.scope-preview-option{display:flex;flex-direction:column;align-items:center;gap:12px}.scope-preview-option video{width:220px;aspect-ratio:9 / 16;object-fit:cover;border-radius:14px;border:2px solid var(--border-subtle, rgba(255, 255, 255, .08))}.scope-preview-label{font-family:var(--font-body, "DM Sans", sans-serif);font-size:var(--text-label-10ft);color:#ffffffb3;text-transform:uppercase;letter-spacing:.05em}.scope-plan{display:flex;flex-direction:column;align-items:center;gap:18px;animation:scope-fade-in .6s ease-out both}.scope-plan-phases{display:flex;align-items:flex-start;gap:16px}.scope-plan-phase{display:flex;flex-direction:column;align-items:center;gap:10px}.scope-plan-phase-svg{width:100px;height:100px;filter:drop-shadow(0 0 10px rgba(189,46,149,.3));opacity:.9}.scope-plan-phase-label{font-family:var(--font-body, "DM Sans", sans-serif);font-size:30px;color:#ffffffb3;letter-spacing:.03em;white-space:nowrap}.scope-plan-repeat{font-family:var(--font-body, "DM Sans", sans-serif);font-size:var(--text-label-10ft);color:#ffffff80;letter-spacing:.05em}@keyframes scope-fade-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.coach-layout{position:fixed;inset:0;display:grid;grid-template:1fr / 1fr;overflow:hidden;background:var(--bg-primary)}.orb-stage,.video-stage,.camera-stage{grid-area:1 / 1;min-width:0;min-height:0}.atmosphere{grid-area:1 / 1;pointer-events:none;z-index:0;background:radial-gradient(ellipse at 30% 70%,rgba(189,46,149,.06) 0%,transparent 50%),radial-gradient(ellipse at 70% 30%,rgba(212,96,179,.04) 0%,transparent 50%),linear-gradient(170deg,var(--bg-deep) 0%,var(--bg-primary) 100%)}.atmosphere:before{content:"";position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");opacity:.5;pointer-events:none}.atmosphere:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 50%,rgba(0,0,0,.4) 100%);pointer-events:none}.progress-top-bar{grid-area:1 / 1;z-index:200;display:flex;align-items:center;gap:18px;padding:18px 28px;pointer-events:none;align-self:start;max-width:560px}.progress-group-label{font-family:var(--font-display);font-size:var(--text-label-10ft);font-weight:600;color:var(--text-primary);white-space:nowrap;text-shadow:0 2px 6px rgba(0,0,0,.8);animation:part-pop .5s cubic-bezier(.34,1.56,.64,1)}@keyframes part-pop{0%{transform:scale(.6);opacity:0;filter:blur(4px)}50%{transform:scale(1.2);color:#22c55e;text-shadow:0 0 12px rgba(34,197,94,.7)}to{transform:scale(1);opacity:1;filter:blur(0)}}.progress-bar-frame{position:relative;flex:1;height:28px;border:2px solid rgba(255,255,255,.35);border-radius:14px;background:#00000080;overflow:hidden}.progress-bar-fill{position:relative;height:100%;background:linear-gradient(90deg,#22c55e,#4ade80);border-radius:12px;transition:width .6s cubic-bezier(.34,1.56,.64,1);box-shadow:0 0 12px #22c55e99;display:flex;align-items:center;justify-content:center;overflow:hidden}.progress-bar-divider{position:absolute;top:0;bottom:0;width:2px;background:#fff6;z-index:1}.progress-bar-percent{font-family:var(--font-body);font-size:18px;font-weight:700;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.8);white-space:nowrap}.orb-stage{position:absolute;z-index:100;display:flex;flex-direction:column;align-items:center;gap:66px;pointer-events:none;transition:top var(--morph-duration) var(--morph-easing),left var(--morph-duration) var(--morph-easing),right var(--morph-duration) var(--morph-easing),transform var(--morph-duration) var(--morph-easing)}.orb-stage>*{pointer-events:auto}.coach-layout[data-layout-mode=face] .orb-stage{top:50%;left:50%;right:auto;transform:translate(-50%,-50%)}.coach-layout[data-layout-mode=demo] .orb-stage{top:24px;left:calc(100% - 24px);right:auto;transform:translate(-100%)}.coach-layout[data-layout-mode=practice] .orb-stage{top:40px;left:124px;right:auto;transform:translate(-40%)}.coach-layout--feedback.coach-layout[data-layout-mode=face] .orb-stage{top:30%}.transition-phases{display:flex;align-items:center;gap:36px}.transition-card{display:flex;flex-direction:column;align-items:center;gap:14px;padding:30px 40px 26px;border-radius:24px;background:var(--bg-glass);border:1px solid var(--border-subtle);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);position:relative;opacity:0;animation:card-enter .5s cubic-bezier(.22,1,.36,1) forwards}.transition-card--done{animation-delay:.05s}.transition-card--next{border-color:#bd2e9533;box-shadow:0 0 24px #bd2e9514,inset 0 1px #ffffff0f;animation-delay:.25s}.transition-card--solo{animation-delay:.05s}.transition-card__badge{position:absolute;top:-14px;font-family:var(--font-body);font-size:22px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:5px 16px;border-radius:10px}.transition-card__badge--done{background:#22c55e26;color:var(--success);border:1px solid rgba(34,197,94,.25)}.transition-card__badge--next,.transition-card__badge--repeat{background:#bd2e951f;color:var(--accent-secondary);border:1px solid rgba(189,46,149,.25)}.transition-card__img{width:140px;height:140px;filter:drop-shadow(0 0 8px rgba(189,46,149,.2))}.transition-card--done .transition-card__img{opacity:.55;filter:drop-shadow(0 0 4px rgba(189,46,149,.1)) grayscale(.3)}.transition-card--next .transition-card__img{width:170px;height:170px;filter:drop-shadow(0 0 12px rgba(189,46,149,.25))}.transition-card__name{font-family:var(--font-display);font-size:38px;color:var(--text-primary);white-space:nowrap;text-shadow:0 1px 4px rgba(0,0,0,.5)}.transition-card--done .transition-card__name{opacity:.5}.transition-card__counts{font-family:var(--font-display);font-size:34px;color:var(--accent-secondary);white-space:nowrap}.transition-card--done .transition-card__counts{opacity:.5}.transition-flow-arrow{color:var(--accent-secondary);opacity:0;animation:arrow-enter .4s ease forwards .15s}.transition-flow-arrow svg{filter:drop-shadow(0 0 6px rgba(189,46,149,.3))}@keyframes card-enter{0%{opacity:0;transform:translateY(12px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes arrow-enter{0%{opacity:0;transform:translate(-6px)}to{opacity:.7;transform:translate(0)}}.music-countdown{grid-area:1 / 1;z-index:150;display:flex;align-items:center;justify-content:center;pointer-events:none}.music-countdown-number{font-family:var(--font-display);font-size:160px;font-weight:700;color:var(--text-primary);text-shadow:0 0 50px rgba(189,46,149,.7),0 0 100px rgba(189,46,149,.35);animation:countdown-pop .6s cubic-bezier(.34,1.56,.64,1)}@keyframes countdown-pop{0%{transform:scale(2);opacity:0;filter:blur(8px)}50%{transform:scale(.9);opacity:1;filter:blur(0)}to{transform:scale(1);opacity:1;filter:blur(0)}}.video-stage{z-index:10;display:flex;align-items:center;justify-content:center;transition:opacity var(--morph-duration) var(--morph-easing),transform var(--morph-duration) var(--morph-easing),filter var(--morph-duration) var(--morph-easing),width var(--morph-duration) var(--morph-easing),height var(--morph-duration) var(--morph-easing),bottom var(--morph-duration) var(--morph-easing),left var(--morph-duration) var(--morph-easing)}.coach-layout[data-layout-mode=face] .video-stage{opacity:0;transform:scale(.95);pointer-events:none}.coach-layout[data-layout-mode=demo] .video-stage{opacity:1;transform:scale(1)}.coach-layout[data-layout-mode=practice] .video-stage{position:absolute;bottom:24px;left:24px;width:200px;height:auto;aspect-ratio:9 / 16;border-radius:12px;overflow:hidden;opacity:1;transform:scale(1);z-index:20;box-shadow:0 4px 20px #00000080;border:1px solid var(--border-subtle);transition:width .3s ease,aspect-ratio .3s ease}.coach-layout[data-layout-mode=practice] .video-stage video{width:100%;height:100%;object-fit:cover}.coach-layout[data-layout-mode=practice] .video-stage[data-pip-aspect=landscape]{width:600px;aspect-ratio:16 / 9}.camera-stage{z-index:5;transition:opacity var(--morph-duration) var(--morph-easing)}.coach-layout[data-layout-mode=face] .camera-stage,.coach-layout[data-layout-mode=demo] .camera-stage{opacity:0;pointer-events:none}.coach-layout[data-layout-mode=practice] .camera-stage{opacity:1}@media(max-width:768px){.coach-status{font-size:24px}.coach-layout[data-layout-mode=demo] .orb-stage{top:16px;left:calc(100% - 16px)}}:root{--bg-deep: #0d0340;--bg-primary: #30099F;--bg-secondary: #3c14ab;--bg-tertiary: #4a22b7;--text-primary: #ededf0;--text-secondary: #9898a0;--text-muted: #5c5c63;--accent-primary: #BD2E95;--accent-secondary: #d460b3;--accent-glow: rgba(189, 46, 149, .35);--success: #22c55e;--warning: #eab308;--error: #ef4444;--bg-glass: rgba(255, 250, 224, .05);--bg-glass-hover: rgba(255, 250, 224, .09);--border-subtle: rgba(255, 250, 224, .07);--border-medium: rgba(255, 250, 224, .12);--font-display: "Instrument Serif", Georgia, serif;--font-body: "DM Sans", system-ui, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", "Fira Code", monospace;--text-hero: 84px;--text-title: 64px;--text-body-10ft: 44px;--text-label-10ft: 36px;--morph-duration: .6s;--morph-easing: cubic-bezier(.4, 0, .2, 1)}.app{height:100vh;overflow:hidden;position:relative}.app.error{display:flex;align-items:center;justify-content:center}.error-content{text-align:center;padding:40px;background:var(--bg-secondary);border-radius:16px;border:1px solid rgba(239,68,68,.2)}.error-icon{font-size:48px;display:block;margin-bottom:16px}.error-content h2{color:var(--error);margin-bottom:8px}.error-content p{color:var(--text-secondary);margin-bottom:20px}.error-content button{padding:10px 24px;background:var(--accent-primary);color:#fff;border:none;border-radius:8px;font-weight:600;cursor:pointer;transition:all .2s}.error-content button:hover{background:var(--accent-secondary)}
