.coach-stage{--coach-accent:#8b5cf6;position:relative;display:flex;align-items:center;justify-content:center;width:100%;min-height:148px;overflow:hidden;border-radius:1rem;background:rgba(0,0,0,.25);border:1px solid rgba(255,255,255,.08)}.coach-stage:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 80%,color-mix(in srgb,var(--coach-accent) 22%,transparent),transparent 62%);pointer-events:none}.coach-sprite-root{position:relative;z-index:1;transform-origin:center bottom}.coach-sprite-root .coach-body{fill:rgba(255,255,255,.12);stroke:rgba(255,255,255,.35);stroke-width:2}.coach-sprite-root .coach-accent{fill:var(--coach-accent);stroke:rgba(255,255,255,.4);stroke-width:1.5}.coach-sprite-root .coach-glow{fill:var(--coach-accent);opacity:.35}.coach-orbit{position:absolute;width:8px;height:12px;border-radius:2px;background:color-mix(in srgb,var(--coach-accent) 70%,white);opacity:0;pointer-events:none}.coach-stage.coach-state-idle .coach-sprite-root{animation:coach-breathe 3.2s ease-in-out infinite}.coach-stage.coach-state-listening .coach-sprite-root{animation:coach-tilt 2.4s ease-in-out infinite}.coach-stage.coach-state-listening .coach-accent{animation:coach-pulse 1.2s ease-in-out infinite}.coach-stage.coach-state-generating .coach-sprite-root{animation:coach-bob .9s ease-in-out infinite}.coach-stage.coach-state-generating .coach-spin{animation:coach-spin 2s linear infinite;transform-origin:center}.coach-stage.coach-state-generating .coach-orbit{opacity:.85;animation:coach-orbit 1.6s linear infinite}.coach-stage.coach-state-generating .coach-orbit:nth-child(2){animation-delay:.4s}.coach-stage.coach-state-generating .coach-orbit:nth-child(3){animation-delay:.8s}.coach-stage.coach-state-resolving .coach-sprite-root{animation:coach-nudge .45s ease-in-out infinite}.coach-stage.coach-state-resolving .coach-slot{animation:coach-slot-flash .7s ease-in-out infinite}.coach-stage.coach-state-success .coach-sprite-root{animation:coach-pop .55s ease-out forwards}.coach-stage.coach-state-partial .coach-sprite-root{animation:coach-wobble 1.1s ease-in-out infinite}.coach-stage.coach-state-error .coach-sprite-root{animation:coach-shake .45s ease-in-out 2}.coach-stage.coach-state-error{animation:coach-error-flash .35s ease-out 1}.coach-stage.coach-state-banlist_warn .coach-gate{animation:coach-gate 1s ease-in-out infinite}.coach-bubble{animation:coach-bubble-in .25s ease-out}.coach-picker-tile{transition:border-color .15s ease,background .15s ease}.coach-picker-tile[data-selected=true]{border-color:var(--coach-accent);background:color-mix(in srgb,var(--coach-accent) 12%,transparent)}@keyframes coach-breathe{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-3px) scale(1.01)}}@keyframes coach-tilt{0%,to{transform:rotate(-1deg)}50%{transform:rotate(2deg) translateY(-2px)}}@keyframes coach-pulse{0%,to{opacity:.65}50%{opacity:1}}@keyframes coach-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes coach-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes coach-orbit{0%{transform:rotate(0deg) translateX(42px) rotate(0deg)}to{transform:rotate(1turn) translateX(42px) rotate(-1turn)}}@keyframes coach-nudge{0%,to{transform:translateX(0)}50%{transform:translateX(2px)}}@keyframes coach-slot-flash{0%,to{opacity:.35}50%{opacity:1}}@keyframes coach-pop{0%{transform:scale(1)}60%{transform:scale(1.06) translateY(-4px)}to{transform:scale(1) translateY(0)}}@keyframes coach-wobble{0%,to{transform:rotate(0deg)}25%{transform:rotate(-2deg)}75%{transform:rotate(2deg)}}@keyframes coach-shake{0%,to{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}@keyframes coach-error-flash{0%{box-shadow:inset 0 0 0 0 rgba(248,113,113,0)}to{box-shadow:inset 0 0 0 2px rgba(248,113,113,.45)}}@keyframes coach-gate{0%,to{transform:translateY(0);opacity:.7}50%{transform:translateY(-6px);opacity:1}}@keyframes coach-bubble-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.coach-bubble,.coach-stage *,.coach-stage:before{animation:none!important}}