/* Each rig owns one posture. Teaching props are mounted on the moving hand. */
[data-orbit-rig] { display:block; width:100%; overflow:visible; pointer-events:none; user-select:none; --orbit-aim:0deg; --orbit-look:0px; }
[data-orbit-rig] [hidden] { display:none; }
[data-orbit-rig] .orbit-body { transform-origin:110px 111px; }
[data-orbit-rig] .orbit-arm, [data-orbit-rig] .orbit-leg, [data-orbit-rig] .orbit-demo-left, [data-orbit-rig] .orbit-demo-right { transform-box:view-box; }
[data-orbit-rig] .orbit-arm.left, [data-orbit-rig] .orbit-demo-left {transform-origin:52px 137px}
[data-orbit-rig] .orbit-arm.right, [data-orbit-rig] .orbit-demo-right {transform-origin:167px 137px}
[data-orbit-rig] .orbit-leg.left {transform-origin:85px 172px}
[data-orbit-rig] .orbit-leg.right {transform-origin:137px 172px}
.orbit-eyes,.orbit-mouth,.orbit-brow,.orbit-hand,.orbit-prop use {transform-box:fill-box;transform-origin:center}
.orbit-lids,.orbit-mouth,.orbit-thought,.orbit-action-arms {display:none}
.orbit-gaze {transform:translateX(var(--orbit-look))}
[data-orbit-rig][data-orbit-speaking] .orbit-smile,[data-orbit-pose="freeze"] .orbit-smile,[data-orbit-pose="think"] .orbit-smile,[data-orbit-pose="listen"] .orbit-smile {display:none}
[data-orbit-rig][data-orbit-speaking] .orbit-mouth,[data-orbit-pose="freeze"] .orbit-mouth,[data-orbit-pose="laugh"] .orbit-mouth {display:inline}
[data-orbit-pose="think"]:not([data-orbit-speaking]) .orbit-thought,[data-orbit-pose="listen"]:not([data-orbit-speaking]) .orbit-thought {display:inline}
[data-orbit-rig][data-orbit-speaking] .orbit-mouth {transform:scaleY(var(--orbit-mouth-open,.7))}
[data-orbit-pose="point"] .orbit-arm.right,[data-orbit-voice-pose="point"] .orbit-arm.right {transform:rotate(calc(12deg + var(--orbit-aim)))}
[data-orbit-facing="left"][data-orbit-pose="point"] .orbit-body,
[data-orbit-facing="left"][data-orbit-voice-pose="point"] .orbit-body { transform:scaleX(-1); }
[data-orbit-facing="left"] .orbit-gaze {transform:translateX(2px)}
[data-orbit-pose="listen"] .orbit-arm.left {transform:rotate(41deg) translate(-4px,-5px)}
[data-orbit-pose="listen"] .orbit-body {transform:rotate(-8deg)}
[data-orbit-pose="think"] .orbit-brow.left {transform:translateY(-5px) rotate(-10deg)}
[data-orbit-pose="think"] .orbit-brow.right {transform:translateY(3px)}
[data-orbit-pose="think"] .orbit-arm.left {transform:rotate(-15deg)}
[data-orbit-pose="fly"] .orbit-arm.left,[data-orbit-pose="up"] .orbit-arm.left {transform:rotate(-22deg)}
[data-orbit-pose="fly"] .orbit-arm.right {transform:rotate(23deg)}
[data-orbit-pose="up"] .orbit-arm.right {transform:rotate(-53deg)}
[data-orbit-pose="down"] .orbit-arm.right {transform:rotate(53deg)}
[data-orbit-pose="wave"] .orbit-arm.right {transform:rotate(-18deg)}
[data-orbit-pose="celebrate"] .orbit-arm.left,[data-orbit-pose="laugh"] .orbit-arm.left {transform:rotate(28deg)}
[data-orbit-pose="celebrate"] .orbit-arm.right,[data-orbit-pose="laugh"] .orbit-arm.right {transform:rotate(-30deg)}
[data-orbit-pose="clap"] .orbit-action-arms,[data-orbit-pose="pat"] .orbit-action-arms,[data-orbit-pose="tap"] .orbit-action-arms {display:inline}
:is([data-orbit-pose="clap"],[data-orbit-pose="pat"],[data-orbit-pose="tap"]) .orbit-arm {display:none}
[data-orbit-pose="clap"] .orbit-demo-left {transform:translateX(8px) rotate(-13deg)}
[data-orbit-pose="clap"] .orbit-demo-right {transform:translateX(-8px) rotate(13deg)}
[data-orbit-pose="pat"] .orbit-demo-left,[data-orbit-pose="tap"] .orbit-demo-left {transform:rotate(38deg)}
[data-orbit-pose="pat"] .orbit-demo-right,[data-orbit-pose="tap"] .orbit-demo-right {transform:rotate(-38deg)}
:is([data-orbit-pose="march"],[data-orbit-pose="walk"],[data-orbit-pose="stomp"]) .orbit-leg.left {transform:rotate(-15deg)}
:is([data-orbit-pose="march"],[data-orbit-pose="walk"],[data-orbit-pose="stomp"]) .orbit-leg.right {transform:rotate(15deg)}
.orbit-guide {display:grid;grid-template-columns:minmax(120px,35%) minmax(0,1fr);gap:1rem;align-items:center;min-width:0;margin:.8rem 0 1rem;border:1px solid #624c78;border-radius:19px;background:radial-gradient(ellipse at 15% 85%,#36214a,#181120 58%);color:#fff3ff;}
.orbit-lane {height:126px;position:relative;overflow:hidden;isolation:isolate;}
.orbit-lane-path {position:absolute;inset:auto 12px 15px;height:22px;border-bottom:2px dashed #ae79cf;border-radius:45%;transform:rotate(-6deg);opacity:.62}
.orbit-lane [data-orbit-rig] {height:100%;width:auto;max-width:63%;position:absolute;inset:0 auto 0 8%;}
.orbit-guide-copy {padding:.65rem .8rem .65rem 0;min-width:0}
.orbit-guide-copy p {margin:.18rem 0;color:#fff3ff;font-weight:800;}
.orbit-guide-copy .btn {margin-top:.45rem}
.orbit-guide-mini {grid-template-columns:minmax(108px,26%) minmax(0,1fr);margin:.1rem 0 .7rem;}
.orbit-guide-mini .orbit-lane {height:106px}
.orbit-guide-mini .orbit-guide-copy {padding-block:.45rem}
.orbit-destination-garden .orbit-lane-path {border-color:#c7fa83}
.orbit-destination-factory .orbit-lane-path {border-color:#c9b1ff;border-radius:0;border-top:2px dashed #5c426f}
.orbit-destination-safari .orbit-lane-path {border-color:#88edeb}
.orbit-destination-melody .orbit-lane-path {border-color:#9fdbff}
.orbit-destination-galaxy .orbit-lane-path {border-color:#f7a6df}
.orbit-flower {position:absolute;bottom:15%;left:72%;width:29px;color:#e6ffab;transform-origin:50% 95%;}
.orbit-machine {position:absolute;bottom:16%;left:77%;width:26px;color:#d2a9ff}
.classroom-shell .orbit-guide .orbit-lane,.projection .orbit-guide .orbit-lane {height:clamp(126px,16vw,205px)}
.classroom-shell .orbit-guide-copy p,.projection .orbit-guide-copy p {font-size:clamp(1rem,2.1vw,1.65rem)}
.orbit-class-controls {display:flex;flex-wrap:wrap;gap:.45rem;margin:.55rem 0}
.orbit-class-controls .btn {min-height:40px}
.orbit-class-controls .btn[aria-pressed="true"] {border-color:var(--yellow);color:var(--yellow)}
.orbit-sky-anchor {position:absolute;right:8%;bottom:9%;width:min(22%,115px)}
.cosmic-map .cosmic-orbit {width:min(94%,760px);position:relative;height:clamp(82px,12vw,125px);overflow:hidden}
.cosmic-actor {position:absolute;inset:0 0 auto;pointer-events:none}
.cosmic-actor [data-orbit-rig] {width:clamp(64px,10vw,105px);margin-inline:auto}
.orbit-symbols {position:absolute;pointer-events:none}
.orbit-art[data-orbit-prop=""] .orbit-prop {display:none}

/* Animation is scoped to the chosen setting and the scene’s safe lane. */
:is([data-orbit-motion="full"],[data-orbit-motion="gentle"]) [data-orbit-rig]:not([data-orbit-pose="freeze"]) .orbit-eyes {animation:orbit-blink 6.2s ease-in-out infinite;}
:is([data-orbit-motion="full"],[data-orbit-motion="gentle"]) [data-orbit-rig]:not([data-orbit-pose="freeze"]) .orbit-lids {display:inline;opacity:0;animation:orbit-lids 6.2s linear infinite}
:is([data-orbit-motion="full"],[data-orbit-motion="gentle"]) [data-orbit-pose="point"] .orbit-arm.right {transition:transform .14s ease-out}
:is([data-orbit-motion="full"],[data-orbit-motion="gentle"]) [data-orbit-pose="wave"] .orbit-arm.right {animation:orbit-greet .68s ease-in-out 3}
:is([data-orbit-motion="full"],[data-orbit-motion="gentle"]) [data-orbit-pose="listen"] .orbit-body {animation:orbit-nod .82s ease-out}
[data-orbit-motion="full"] .orbit-lane [data-orbit-rig] {animation:orbit-cross 1.38s cubic-bezier(.19,.72,.34,1) both}
[data-orbit-motion="full"] .buddy-sticker [data-orbit-rig] {animation:orbit-hq-in .95s ease-out both}
[data-orbit-motion="full"] .buddy-sticker [data-orbit-pose="fly"] {animation:orbit-hq-launch .56s ease-in both}
[data-orbit-motion="full"] .cosmic-actor {animation:orbit-cross-space 3.1s ease-in-out both}
[data-orbit-motion="full"] .cosmic-actor:has([data-orbit-hold="pause"]){animation-play-state:paused}
[data-orbit-motion="full"] .cosmic-actor:has([data-orbit-hold="skip"]){animation:none}
[data-orbit-motion="full"] .orbit-flower {animation:orbit-grow .7s 1.05s ease-out both}
[data-orbit-motion="full"] .orbit-machine {animation:orbit-machine-light .65s 1.05s ease-out both}
[data-orbit-motion="full"] :is([data-orbit-pose="idle"],[data-orbit-pose="wave"],[data-orbit-pose="float"]) .orbit-body {animation:orbit-idle 5.8s ease-in-out infinite}
[data-orbit-motion="full"] :is([data-orbit-pose="float"],[data-orbit-pose="fly"]) .orbit-body {animation:orbit-float 3s ease-in-out 3 alternate}
[data-orbit-motion="full"] [data-orbit-pose="bounce"] .orbit-body {animation:orbit-bounce .63s ease-in-out 3}
[data-orbit-motion="full"] :is([data-orbit-pose="celebrate"],[data-orbit-pose="laugh"]) .orbit-body {animation:orbit-cheer-up .6s ease-in-out 3}
[data-orbit-motion="full"] :is([data-orbit-pose="up"],[data-orbit-pose="down"]) .orbit-arm.right {transition:transform .17s ease-out}
[data-orbit-motion="full"] :is([data-orbit-pose="walk"],[data-orbit-pose="march"],[data-orbit-pose="stomp"]):not([data-orbit-clock]) .orbit-leg.left {animation:orbit-step .66s ease-in-out 4 alternate;}
[data-orbit-motion="full"] :is([data-orbit-pose="walk"],[data-orbit-pose="march"],[data-orbit-pose="stomp"]):not([data-orbit-clock]) .orbit-leg.right {animation:orbit-step .66s -.33s ease-in-out 4 alternate-reverse;}
[data-orbit-motion="full"] [data-orbit-clock] .orbit-body {transform:translateY(var(--orbit-beat-lift,0px));animation:none}
[data-orbit-motion="full"] :is([data-orbit-pose="walk"],[data-orbit-pose="march"],[data-orbit-pose="stomp"])[data-orbit-clock] .orbit-leg.left {transform:rotate(var(--orbit-left-step,0deg))}
[data-orbit-motion="full"] :is([data-orbit-pose="walk"],[data-orbit-pose="march"],[data-orbit-pose="stomp"])[data-orbit-clock] .orbit-leg.right {transform:rotate(var(--orbit-right-step,0deg))}
[data-orbit-motion="full"] [data-orbit-pose="clap"]:not([data-orbit-clock]) .orbit-demo-left {animation:orbit-clap-left .7s ease-in-out 4}
[data-orbit-motion="full"] [data-orbit-pose="clap"]:not([data-orbit-clock]) .orbit-demo-right {animation:orbit-clap-right .7s ease-in-out 4}
[data-orbit-motion="full"] [data-orbit-pose="clap"][data-orbit-clock] .orbit-demo-left {transform:translateX(calc(1px + var(--orbit-clap-shift,0px)))}
[data-orbit-motion="full"] [data-orbit-pose="clap"][data-orbit-clock] .orbit-demo-right {transform:translateX(calc(-1px - var(--orbit-clap-shift,0px)))}
[data-orbit-motion="full"] :is([data-orbit-pose="pat"],[data-orbit-pose="tap"])[data-orbit-clock] .orbit-demo-left {transform:rotate(calc(24deg + var(--orbit-clap,0deg) * .23))}
[data-orbit-motion="full"] :is([data-orbit-pose="pat"],[data-orbit-pose="tap"])[data-orbit-clock] .orbit-demo-right {transform:rotate(calc(-24deg - var(--orbit-clap,0deg) * .23))}
[data-orbit-motion="full"] [data-orbit-pose="sway"] .orbit-body {animation:orbit-sway 1.15s ease-in-out infinite alternate}
[data-orbit-motion="full"] .orbit-art[data-orbit-prop]:not([data-orbit-prop=""]) .orbit-prop use {animation:orbit-tool .45s ease-out both}
[data-orbit-motion="full"] [data-orbit-role="movement"][data-orbit-pose="wave"] .orbit-arm.right {animation-iteration-count:infinite}
[data-orbit-motion="full"] [data-orbit-role="flight"] .orbit-parachute {animation:orbit-tool .5s ease-out both}
[data-orbit-motion="gentle"] .orbit-lane [data-orbit-rig] {inset-inline-start:18%}
[data-orbit-motion="gentle"] [data-orbit-pose="celebrate"] .orbit-body {animation:orbit-nod .7s ease-out}
[data-orbit-motion="reduced"] [data-orbit-rig], [data-orbit-motion="reduced"] [data-orbit-rig] * {animation:none!important;transition:none!important}
[data-orbit-motion="reduced"] [data-orbit-speaking] .orbit-mouth {transform:none}
[data-orbit-hold="pause"],[data-orbit-hold="pause"] * {animation-play-state:paused!important;transition:none!important}
[data-orbit-hold="skip"],[data-orbit-hold="skip"] * {animation:none!important;transition:none!important}
[data-orbit-hold="skip"] .orbit-body {transform:none!important}
@media(max-width:560px){
 .orbit-guide {grid-template-columns:minmax(95px,34%) minmax(0,1fr);gap:.55rem}
 .orbit-lane,.orbit-guide-mini .orbit-lane {height:94px}
 .orbit-guide-copy p {font-size:.88rem}
 .orbit-guide-copy .btn {min-height:40px}
}
@keyframes orbit-blink {0%,46%,50%,89%,93%,100%{transform:scaleY(1)}48%,91%{transform:scaleY(.12)}}
@keyframes orbit-lids {0%,46%,50%,89%,93%,100%{opacity:0}48%,91%{opacity:1}}
@keyframes orbit-greet {0%,100%{transform:rotate(-18deg)}50%{transform:rotate(-46deg)}}
@keyframes orbit-nod {0%,100%{transform:rotate(-5deg)}45%{transform:rotate(5deg)}}
@keyframes orbit-cross {from{transform:translate(-18%,12%)}to{transform:translate(35%,0)}}
@keyframes orbit-cross-space {0%{transform:translate(-31%,8px)}65%{transform:translate(20%,0)}100%{transform:translate(2%,0)}}
@keyframes orbit-hq-in {from{transform:translate(-19%,14%) rotate(-12deg)}to{transform:translate(0,0)}}
@keyframes orbit-hq-launch {from{transform:translate(0,0)}to{transform:translate(23%,-14%) rotate(-12deg)}}
@keyframes orbit-idle {0%,45%,100%{transform:translateY(0)}60%{transform:translateY(-4px)}}
@keyframes orbit-float {from{transform:translateY(2px) rotate(-6deg)}to{transform:translateY(-8px) rotate(5deg)}}
@keyframes orbit-bounce {50%{transform:translateY(-15px) rotate(5deg)}}
@keyframes orbit-cheer-up {50%{transform:translateY(-12px) rotate(9deg)}}
@keyframes orbit-step {from{transform:rotate(-18deg)}to{transform:rotate(23deg)}}
@keyframes orbit-sway {from{transform:rotate(-9deg)}to{transform:rotate(9deg)}}
@keyframes orbit-clap-left {from,to{transform:translateX(0)}50%{transform:translateX(12px)}}
@keyframes orbit-clap-right {from,to{transform:translateX(0)}50%{transform:translateX(-12px)}}
@keyframes orbit-tool {from{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}
@keyframes orbit-grow {from{transform:scale(.68) rotate(-15deg)}50%{transform:scale(1.22) rotate(6deg)}to{transform:none}}
@keyframes orbit-machine-light {50%{transform:scale(1.2);color:#ffd97f}}
/* Beat targets retain the exercise’s own highlight and get a second visual cue. */
.score-note[data-orbit-target] {filter:drop-shadow(0 0 1px #624292)}
[data-score-tick][data-orbit-target] circle {stroke-width:2.5}
.cosmic-planet[data-orbit-target] .planet-sphere {outline:2px dashed #fff1b2;outline-offset:3px}
[data-orbit-pose="laugh"] .orbit-smile {display:none}
[data-orbit-pose="stomp"] .orbit-leg.left {transform:rotate(-23deg)}
[data-orbit-pose="stomp"] .orbit-leg.right {transform:rotate(4deg) translateY(3px)}
[data-orbit-expression="speak"] .orbit-brow.right {transform:translateY(-3px)}
.orbit-guide:has([data-orbit-role="guide"][data-orbit-hold="skip"]) .orbit-lane-path {animation:none}
.orbit-move-picker {display:grid;gap:.3rem;margin-top:.8rem;max-width:19rem;font-weight:750}
.orbit-move-picker select {font:inherit;min-height:44px;border-radius:.55rem;background:#211631;color:#fff3ff;border:1px solid #a187bd;padding:.35rem .5rem}
[data-orbit-motion="full"] :is([data-orbit-pose="pat"],[data-orbit-pose="tap"]):not([data-orbit-clock]) .orbit-demo-left {animation:orbit-pat-left .65s ease-in-out 4}
[data-orbit-motion="full"] :is([data-orbit-pose="pat"],[data-orbit-pose="tap"]):not([data-orbit-clock]) .orbit-demo-right {animation:orbit-pat-right .65s ease-in-out 4}
@keyframes orbit-pat-left {0%,100%{transform:rotate(21deg)}50%{transform:rotate(47deg)}}
@keyframes orbit-pat-right {0%,100%{transform:rotate(-21deg)}50%{transform:rotate(-47deg)}}
[data-orbit-motion="full"] [data-orbit-role="flight"]:has(.orbit-parachute) {animation:orbit-drop .85s ease-out both}
@keyframes orbit-drop {from{transform:translateY(-22px) rotate(8deg)}to{transform:translateY(0) rotate(0)}}
