.character-picker{margin:12px 0 24px}.character-preview{display:flex;align-items:center;gap:18px;padding:16px;border:1px solid #415269;border-radius:16px;background:radial-gradient(ellipse at top left,#2b4960,#101b2c)}.character-preview>svg{flex:0 0 140px;filter:drop-shadow(0 8px 8px #0004)}.character-preview strong{font-size:22px;color:#c8fff0}.character-preview p{margin:6px 0;font-size:14px}.character-picker>label{margin:14px 0 0}.character-count{font-size:12px;color:#a2b0c3;margin:8px 0}.character-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:8px;max-height:470px;overflow:auto;padding:6px 6px 12px;scrollbar-gutter:stable;border:1px solid #2a3749;border-radius:12px}.character-choice{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;min-width:0;padding:8px 5px;background:linear-gradient(140deg,#233b50,#132031);border:1px solid #415269;color:#edf4fa;border-radius:12px;line-height:1.25}.character-choice>svg{max-width:100%;flex:none}.character-choice>span{font-size:12px;font-weight:650;overflow-wrap:anywhere}.character-choice small{font-size:10px;color:#b5c9da;margin-top:5px;font-weight:400}.character-choice[aria-pressed=true]{border:2px solid #8aefd1;background:linear-gradient(140deg,#27594f,#142e34);box-shadow:inset 0 0 12px #8aefd122}.character-choice:hover{border-color:#99ddff}.character-palette{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 14px}.character-palette button{font-size:12px;min-height:44px;padding:7px 10px}.character-palette [aria-pressed=true]{border-color:#8aefd1;color:#baffec}.character-editor [data-skin-save-status]{font-size:14px}.character-gallery [hidden]{display:none!important}@media(max-width:600px){.character-preview{gap:8px;padding:10px}.character-preview>svg{width:100px;height:110px;flex-basis:100px}.character-preview strong{font-size:17px}.character-preview p{font-size:12px}.character-gallery{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));max-height:380px}.character-choice>svg{width:70px;height:76px}}
/* Only inner rig groups move. The route and marker scale belong to their parents. */
.scientist-rig [data-part]{transform-box:view-box}
.rig-figure{transform-origin:0px 26px}.rig-head{transform-origin:0px 6px}
.rig-leg-left{transform-origin:-6px 17px}.rig-leg-right{transform-origin:6px 17px}
.rig-arm-left{transform-origin:-10px 9px}.rig-arm-right{transform-origin:10px 9px}
.rig-forearm-left{transform-origin:-14px 16px}.rig-forearm-right{transform-origin:14px 16px}
.rig-wheel-left{transform-origin:-14px 19px}.rig-wheel-right{transform-origin:14px 19px}
.rig-shadow{transform-origin:0px 27px}
.figurine-rig .rig-head{transform-origin:0px -7px}
.scientist-rig.figurine-rig[data-motion=wave] .rig-head,.scientist-rig.figurine-rig[data-mobility=chair][data-motion=jump] .rig-head,.scientist-rig.figurine-rig[data-mobility=chair][data-motion=celebrate] .rig-head{animation:none}
.scientist-rig.figurine-rig[data-mobility=chair][data-motion=wave] .rig-arm-left{animation:rig-seated-wave 1.6s ease-in-out}
@keyframes rig-seated-wave{0%,100%{transform:rotate(0)}25%,75%{transform:rotate(65deg)}}
.figurine-rig .rig-arm-left,.figurine-rig .rig-arm-right,.figurine-rig .rig-head,.figurine-rig .rig-leg-left,.figurine-rig .rig-leg-right{will-change:auto}
.character-preview>svg{flex-basis:180px;width:180px;height:210px;overflow:visible}
.character-preview strong,.character-preview p{overflow-wrap:anywhere}
@media(max-width:600px){.character-preview>svg{flex-basis:120px;width:120px;height:155px}.character-preview>div{min-width:0}}
.character-motions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.character-motions button{min-height:44px;padding:8px 12px}.character-motions [aria-pressed=true]{border-color:#8aefd1;color:#c8fff0}
.scientist-rig[data-motion=walk][data-mobility=feet] .rig-leg-left{animation:rig-stride .55s ease-in-out infinite alternate}
.scientist-rig[data-motion=walk][data-mobility=feet] .rig-leg-right{animation:rig-stride .55s ease-in-out infinite alternate-reverse}
.scientist-rig[data-motion=walk][data-mobility=feet] .rig-figure{animation:rig-step .275s ease-in-out infinite alternate}
.scientist-rig[data-motion=walk] .rig-arm-left{animation:rig-swing .55s ease-in-out infinite alternate-reverse}
.scientist-rig[data-motion=walk] .rig-arm-right{animation:rig-swing .55s ease-in-out infinite alternate}
.scientist-rig[data-motion=walk][data-mobility=chair] :is(.rig-wheel-left,.rig-wheel-right){animation:rig-wheel .85s linear infinite}
.scientist-rig[data-motion=wave] .rig-arm-left{animation:rig-raise 1.6s ease-in-out}
.scientist-rig[data-motion=wave] .rig-forearm-left{animation:rig-wave 1.6s ease-in-out}
.scientist-rig[data-motion=wave] .rig-head{animation:rig-nod 1.6s ease-in-out}
.scientist-rig[data-motion=jump][data-mobility=feet] .rig-figure{animation:rig-jump .85s ease-in-out}
.scientist-rig[data-motion=jump][data-mobility=feet] .rig-shadow{animation:rig-shadow .85s ease-in-out}
.scientist-rig[data-motion=jump] .rig-arm-left,.scientist-rig[data-motion=celebrate] .rig-arm-left{animation:rig-raise 1.6s ease-in-out}
.scientist-rig[data-motion=celebrate] .rig-arm-right{animation:rig-cheer 1.6s ease-in-out}
.scientist-rig[data-motion=celebrate][data-mobility=feet] .rig-figure{animation:rig-jump .8s ease-in-out 2}
.scientist-rig[data-motion=jump][data-mobility=chair] .rig-head,.scientist-rig[data-motion=celebrate][data-mobility=chair] .rig-head{animation:rig-nod 1.6s ease-in-out}
@keyframes rig-stride{from{transform:rotate(-18deg)}to{transform:rotate(18deg)}}
@keyframes rig-swing{from{transform:rotate(-12deg)}to{transform:rotate(12deg)}}
@keyframes rig-step{from{transform:translateY(0)}to{transform:translateY(-1.2px)}}
@keyframes rig-wheel{to{transform:rotate(360deg)}}
@keyframes rig-raise{0%,100%{transform:rotate(0)}20%,80%{transform:rotate(125deg)}}
@keyframes rig-wave{0%,100%{transform:rotate(0)}25%,55%,80%{transform:rotate(25deg)}40%,70%{transform:rotate(-25deg)}}
@keyframes rig-nod{0%,100%{transform:rotate(0)}35%{transform:rotate(-7deg)}70%{transform:rotate(5deg)}}
@keyframes rig-cheer{0%,100%{transform:rotate(0)}20%,80%{transform:rotate(-125deg)}}
@keyframes rig-jump{0%,100%{transform:translateY(0)}20%{transform:translateY(1.5px) scaleY(.96)}50%{transform:translateY(-7px)}80%{transform:translateY(0)}}
@keyframes rig-shadow{0%,100%{transform:scaleX(1);opacity:1}50%{transform:scaleX(.7);opacity:.45}}
@media(prefers-reduced-motion:reduce){.scientist-rig [data-part]{animation:none!important}}
