/* Part-based animation keeps all geographic and camera anchors unchanged. */
.character-svg .character-body{transform-origin:100px 174px;animation:character-breathe 4.8s ease-in-out infinite;will-change:auto}
.character-svg .character-face{transform-origin:100px 105px;animation:character-look 7s ease-in-out infinite}
.character-svg .character-eyes{transform-origin:100px 78px;animation:character-blink 5.7s ease-in-out infinite}
.character-svg .character-arm-right{transform-origin:138px 137px;animation:character-wave 8.8s ease-in-out infinite}
.character-svg .character-arm-left{transform-origin:62px 137px}
.character-speaking-mouth{opacity:0;transform-origin:100px 110px}
.character-kind-flower .character-body{animation:character-flower 5s ease-in-out infinite}
.character-kind-flower .character-arm-right{animation:character-leaf 6s ease-in-out infinite}
.character-kind-fish .character-body{animation:character-swim 5s ease-in-out infinite;transform-origin:100px 105px}
.character-kind-fish .character-face{animation:none}
.character-kind-fish .character-arm-right{animation:character-fin 2s ease-in-out infinite}
.character-kind-butterfly .character-wings{transform-origin:100px 100px;animation:character-wings 2s ease-in-out infinite}
.character-kind-bee .character-wings{transform-origin:100px 100px;animation:character-wings .65s ease-in-out infinite}
.character-svg .character-tail{transform-origin:137px 144px;animation:character-tail 4s ease-in-out infinite}
.character-kind-beaver .character-tail{transform-origin:147px 153px;animation:character-beaver-tail 4s ease-in-out infinite}
.character-talking .character-body{animation:character-speaking-body 1.6s ease-in-out infinite;transform-origin:100px 174px}
.character-talking .character-face{animation:character-speaking-head 2s ease-in-out infinite}
.character-talking .character-mouth{animation:none;opacity:0}
.character-talking .character-speaking-mouth{opacity:1;animation:character-syllable .3s ease-in-out infinite}
.character-talking .character-arm-right{animation:character-gesture 2.8s ease-in-out infinite}
.character-audio-paused .character-svg *{animation-play-state:paused!important}
.character-celebrate .character-body{animation:character-celebrate .85s ease-in-out 2;transform-origin:100px 174px}
.park-pin .character-svg .character-body,.park-pin .character-svg .character-face,.park-pin .character-svg .character-arm-right{animation:none}
@keyframes character-breathe{0%,100%{transform:scale(1,1)}50%{transform:scale(1.015,1.025)}}
@keyframes character-look{0%,35%,75%,100%{transform:rotate(0)}45%,60%{transform:rotate(-3deg)}}
@keyframes character-blink{0%,42%,46%,84%,88%,100%{transform:scaleY(1)}44%,86%{transform:scaleY(.09)}}
@keyframes character-wave{0%,12%,46%,100%{transform:rotate(0)}20%,34%{transform:rotate(-32deg)}27%,41%{transform:rotate(-13deg)}}
@keyframes character-leaf{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(8deg)}}
@keyframes character-flower{0%,100%{transform:rotate(-1.7deg)}50%{transform:rotate(1.7deg)}}
@keyframes character-swim{0%,100%{transform:translate(0,0) rotate(-1deg)}50%{transform:translate(3px,-3px) rotate(1deg)}}
@keyframes character-fin{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(13deg)}}
@keyframes character-wings{0%,100%{transform:scaleX(1)}50%{transform:scaleX(.87)}}
@keyframes character-tail{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(4deg)}}
@keyframes character-beaver-tail{0%,100%{transform:rotate(-32deg)}50%{transform:rotate(-25deg)}}
@keyframes character-speaking-body{0%,100%{transform:scale(1)}50%{transform:scale(1.012,1.018)}}
@keyframes character-speaking-head{0%,100%{transform:rotate(0)}50%{transform:rotate(2deg)}}
@keyframes character-syllable{0%,100%{transform:scaleY(.4)}55%{transform:scaleY(1.1)}}
@keyframes character-gesture{0%,100%{transform:rotate(0)}35%{transform:rotate(-21deg)}70%{transform:rotate(8deg)}}
@keyframes character-celebrate{0%,100%{transform:translateY(0) rotate(0)}40%{transform:translateY(-5px) rotate(-3deg)}75%{transform:translateY(-2px) rotate(3deg)}}
@media(prefers-reduced-motion:reduce){.character-svg *{animation:none!important}.character-talking .character-mouth{opacity:1}.character-talking .character-speaking-mouth{opacity:0}}
.mission-body>.mission-portrait{width:145px;max-width:42%;margin:0 auto 5px}
