/* Articulated SVG characters. All limb movement stays around each part's joint. */
.pet-widget{position:relative;isolation:isolate;display:block;min-width:0;--pet-look-x:0px;--pet-look-y:0px;--pet-look-r:0deg;user-select:none;-webkit-user-select:none}
.pet-widget>.animal-rig{display:block;width:100%;height:100%;max-height:inherit;overflow:visible;fill:initial;stroke:initial;stroke-width:initial;stroke-linecap:initial;stroke-linejoin:initial}
.pet-interactive{touch-action:none;cursor:grab;-webkit-tap-highlight-color:transparent;border-radius:40%}
.pet-interactive:active,.pet-touching{cursor:grabbing}
.pet-interactive:focus-visible{outline:3px solid #93ad8e;outline-offset:3px}
.pet-widget [data-zone]{cursor:inherit;pointer-events:all}
.pet-widget .rig-character{transform-box:fill-box;transform-origin:50% 94%;animation:pet-breathe 3.4s ease-in-out infinite}
.pet-widget .rig-body{transform-box:fill-box;transform-origin:50% 85%}
.pet-widget .rig-head-look{transform:translate(var(--pet-look-x),var(--pet-look-y)) rotate(var(--pet-look-r));transform-box:fill-box;transform-origin:50% 88%;transition:transform .18s ease-out}
.pet-widget .rig-head{transform-box:fill-box;transform-origin:50% 91%;animation:pet-head-idle 5.6s ease-in-out infinite}
.pet-widget .rig-arm-left{transform-box:fill-box;transform-origin:75% 16%;animation:pet-arm-idle 3.4s ease-in-out infinite}
.pet-widget .rig-arm-right{transform-box:fill-box;transform-origin:25% 16%;animation:pet-arm-idle 3.4s ease-in-out infinite reverse}
.pet-widget .rig-leg-left,.pet-widget .rig-leg-right{transform-box:fill-box;transform-origin:50% 12%}
.pet-widget .rig-tail{transform-box:fill-box;transform-origin:8% 74%;animation:pet-tail-idle 3.1s ease-in-out infinite alternate}
.pet-widget .pet-sparks{position:absolute;inset:0;pointer-events:none;overflow:visible;z-index:2}
.pet-widget .pet-spark{position:absolute;font-style:normal;opacity:0;color:#e999a9;font-size:clamp(14px,2vw,25px);left:calc(15% + var(--spark-index)*17%);top:calc(26% - var(--spark-index)*1%);transform:translateY(0);filter:drop-shadow(0 1px 1px #fff8)}
.pet-sparks[data-kind=heart] .pet-spark:before{content:'♥'}
.pet-sparks[data-kind=star] .pet-spark:before{content:'✦';color:#e1b052}
.pet-sparks[data-kind=sleep] .pet-spark:before{content:'z';color:#8199b2;font-family:system-ui,sans-serif;font-weight:700}
.pet-sparks:not([data-kind=none]) .pet-spark{animation:pet-spark-rise 1.5s calc(var(--spark-index)*.16s) ease-out both}
.pet-sparks[data-kind=sleep] .pet-spark{left:calc(66% + var(--spark-index)*3%);top:30%;animation-duration:2.8s;animation-iteration-count:2}
.pet-widget[data-action=pet] .rig-head{animation:pet-nuzzle .72s ease-in-out 3}
.pet-widget[data-action=pet] .rig-tail{animation:pet-tail-happy .4s ease-in-out infinite alternate}
.pet-widget[data-action=pet] .rig-arm-left{animation:pet-arm-snug .9s ease-in-out 2}
.pet-widget[data-action=pet] .rig-arm-right{animation:pet-arm-snug .9s ease-in-out 2 reverse}
.pet-widget[data-action=tickle] .rig-character{animation:pet-giggle .22s ease-in-out infinite}
.pet-widget[data-action=tickle] .rig-head{animation:pet-laugh-head .44s ease-in-out infinite}
.pet-widget[data-action=tickle] .rig-arm-left{animation:pet-tickle-arm .3s ease-in-out infinite}
.pet-widget[data-action=tickle] .rig-arm-right{animation:pet-tickle-arm .3s ease-in-out infinite reverse}
.pet-widget[data-action=tickle] .rig-leg-left{animation:pet-kick .32s ease-in-out infinite}
.pet-widget[data-action=tickle] .rig-leg-right{animation:pet-kick .32s ease-in-out infinite reverse}
.pet-widget[data-action=poke] .rig-character{animation:pet-startle .7s cubic-bezier(.25,.7,.3,1) both}
.pet-widget[data-action=poke] .rig-head{animation:pet-tilt-surprise 1.5s ease-in-out both}
.pet-widget[data-action=poke] .rig-arm-left{animation:pet-arm-surprise .65s ease-out both}
.pet-widget[data-action=poke] .rig-arm-right{animation:pet-arm-surprise .65s ease-out both reverse}
.pet-widget[data-action=wave] .rig-head{animation:pet-head-wave 1s ease-in-out 2}
.pet-widget[data-action=wave] .rig-arm-right{animation:pet-wave .42s ease-in-out 5}
.pet-widget[data-action=wave] .rig-tail{animation:pet-tail-happy .4s ease-in-out infinite alternate}
.pet-widget[data-action=jump] .rig-character{animation:pet-jump .85s cubic-bezier(.28,.7,.35,1) 2}
.pet-widget[data-action=jump] .rig-head{animation:pet-jump-head .85s ease-in-out 2}
.pet-widget[data-action=jump] .rig-arm-left{animation:pet-jump-arm .85s ease-in-out 2}
.pet-widget[data-action=jump] .rig-arm-right{animation:pet-jump-arm .85s ease-in-out 2 reverse}
.pet-widget[data-action=jump] .rig-leg-left{animation:pet-jump-leg .85s ease-in-out 2}
.pet-widget[data-action=jump] .rig-leg-right{animation:pet-jump-leg .85s ease-in-out 2 reverse}
.pet-widget[data-action=dance] .rig-character{animation:pet-dance .7s ease-in-out infinite}
.pet-widget[data-action=dance] .rig-head{animation:pet-dance-head .7s ease-in-out infinite}
.pet-widget[data-action=dance] .rig-arm-left{animation:pet-dance-arm .35s ease-in-out infinite alternate}
.pet-widget[data-action=dance] .rig-arm-right{animation:pet-dance-arm .35s ease-in-out infinite alternate-reverse}
.pet-widget[data-action=dance] .rig-leg-left{animation:pet-step .7s ease-in-out infinite}
.pet-widget[data-action=dance] .rig-leg-right{animation:pet-step .7s -.35s ease-in-out infinite}
.pet-widget[data-action=dance] .rig-tail{animation:pet-tail-happy .35s ease-in-out infinite alternate}
.pet-widget[data-action=sleep] .rig-character{animation:pet-sleep-breathe 3.1s ease-in-out infinite}
.pet-widget[data-action=sleep] .rig-head{animation:pet-sleep-head 3.1s ease-in-out infinite}
.pet-widget[data-action=sleep] .rig-tail{animation:pet-tail-sleep 3.1s ease-in-out infinite}
.pet-widget[data-action=love] .rig-head{animation:pet-love-head 1s ease-in-out 3}
.pet-widget[data-action=love] .rig-arm-left{animation:pet-hug-left 1s ease-in-out 3}
.pet-widget[data-action=love] .rig-arm-right{animation:pet-hug-right 1s ease-in-out 3}
.pet-widget[data-action=love] .rig-tail{animation:pet-tail-happy .35s ease-in-out infinite alternate}
.pet-widget[data-action=love] .rig-character{animation:pet-love-bounce 1s ease-in-out 3}
.pet-paused *, .pet-paused *:before{animation-play-state:paused!important}
@keyframes pet-breathe{0%,100%{transform:translateY(0) scale(1,1)}50%{transform:translateY(-1px) scale(1.008,1.012)}}
@keyframes pet-head-idle{0%,100%{transform:rotate(-1deg)}45%{transform:rotate(1.3deg)}70%{transform:rotate(.3deg)}}
@keyframes pet-arm-idle{0%,100%{transform:rotate(-1deg)}50%{transform:rotate(2deg)}}
@keyframes pet-tail-idle{from{transform:rotate(-5deg)}to{transform:rotate(7deg)}}
@keyframes pet-nuzzle{0%,100%{transform:rotate(-3deg) translateY(1px)}50%{transform:rotate(5deg) translateY(-3px)}}
@keyframes pet-arm-snug{0%,100%{transform:rotate(-6deg)}50%{transform:rotate(-16deg)}}
@keyframes pet-tail-happy{from{transform:rotate(-12deg)}to{transform:rotate(17deg)}}
@keyframes pet-giggle{0%,100%{transform:rotate(-1.2deg) translateY(0)}50%{transform:rotate(1.2deg) translateY(-3px)}}
@keyframes pet-laugh-head{0%,100%{transform:rotate(-4deg) translateY(-1px)}50%{transform:rotate(4deg) translateY(2px)}}
@keyframes pet-tickle-arm{0%,100%{transform:rotate(-18deg)}50%{transform:rotate(9deg)}}
@keyframes pet-kick{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(11deg) translateY(-2px)}}
@keyframes pet-startle{0%{transform:scale(1)}24%{transform:translateY(-10px) scale(1.03,.97)}55%{transform:translateY(0) scale(.99,1.02)}100%{transform:none}}
@keyframes pet-tilt-surprise{0%{transform:rotate(0)}22%,70%{transform:rotate(-7deg) translateY(-2px)}100%{transform:rotate(-2deg)}}
@keyframes pet-arm-surprise{0%,100%{transform:rotate(0)}35%{transform:rotate(18deg)}}
@keyframes pet-head-wave{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(4deg)}}
@keyframes pet-wave{0%,100%{transform:rotate(-93deg)}50%{transform:rotate(-126deg)}}
@keyframes pet-jump{0%,100%{transform:translateY(0) scale(1)}14%{transform:translateY(3px) scale(1.035,.96)}45%{transform:translateY(-27px) scale(.98,1.025)}74%{transform:translateY(0) scale(1.04,.96)}}
@keyframes pet-jump-head{0%,100%{transform:translateY(0)}18%{transform:translateY(3px)}48%{transform:translateY(-3px)}}
@keyframes pet-jump-arm{0%,100%{transform:rotate(0)}42%{transform:rotate(38deg)}}
@keyframes pet-jump-leg{0%,100%{transform:rotate(0)}42%{transform:rotate(-10deg)}}
@keyframes pet-dance{0%,100%{transform:rotate(-4deg) translateX(-3px)}50%{transform:rotate(4deg) translateX(3px) translateY(-3px)}}
@keyframes pet-dance-head{0%,100%{transform:rotate(7deg)}50%{transform:rotate(-7deg)}}
@keyframes pet-dance-arm{from{transform:rotate(-20deg)}to{transform:rotate(33deg)}}
@keyframes pet-step{0%,45%,100%{transform:translateY(0) rotate(0)}70%{transform:translateY(-7px) rotate(-8deg)}}
@keyframes pet-sleep-breathe{0%,100%{transform:translateY(4px) scale(1.01,.975)}50%{transform:translateY(2px) scale(1.015,.99)}}
@keyframes pet-sleep-head{0%,100%{transform:rotate(7deg) translateY(4px)}50%{transform:rotate(6deg) translateY(2px)}}
@keyframes pet-tail-sleep{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(-1deg)}}
@keyframes pet-love-head{0%,100%{transform:rotate(-4deg) translateY(-1px)}50%{transform:rotate(4deg) translateY(-3px)}}
@keyframes pet-hug-left{0%,100%{transform:rotate(-19deg)}50%{transform:rotate(-32deg)}}
@keyframes pet-hug-right{0%,100%{transform:rotate(19deg)}50%{transform:rotate(32deg)}}
@keyframes pet-love-bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes pet-spark-rise{0%{opacity:0;transform:translateY(6px) scale(.7) rotate(-9deg)}20%{opacity:.95}85%{opacity:.7}100%{opacity:0;transform:translateY(-34px) scale(1.12) rotate(9deg)}}

/* Illustrated heads move as a whole; body parts use the new rig joint coordinates. */
/* pet.js reads joint coordinates from animalRigGeometry.species for every selected character. */
.pet-widget[data-animal] .rig-head{transform-box:view-box;transform-origin:var(--rig-head-origin,50% 50%)}
.pet-widget[data-animal] .rig-head-look{transform-box:view-box;transform-origin:var(--rig-head-origin,50% 50%)}
.pet-widget[data-animal] .rig-arm-left{transform-box:view-box;transform-origin:var(--rig-arm-left-origin,50% 50%)}
.pet-widget[data-animal] .rig-arm-right{transform-box:view-box;transform-origin:var(--rig-arm-right-origin,50% 50%)}
.pet-widget[data-animal] .rig-leg-left{transform-box:view-box;transform-origin:var(--rig-leg-left-origin,50% 50%)}
.pet-widget[data-animal] .rig-leg-right{transform-box:view-box;transform-origin:var(--rig-leg-right-origin,50% 50%)}
.pet-widget[data-animal] .rig-tail{transform-box:view-box;transform-origin:var(--rig-tail-origin,50% 50%)}

.pet-widget[data-animal=elephant][data-action=wave] .rig-arm-right{animation:pet-heavy-paw-wave 1.1s ease-in-out 2}
.pet-widget[data-animal=elephant][data-action=jump] .rig-character{animation:pet-heavy-hop .85s ease-in-out 2}
.pet-widget[data-animal=elephant][data-action=jump] .rig-arm-left,.pet-widget[data-animal=elephant][data-action=jump] .rig-arm-right{animation:pet-heavy-paw-hop .85s ease-in-out 2}

.pet-widget[data-animal=penguin][data-action=idle] .rig-character{animation:pet-penguin-idle 4.6s ease-in-out infinite}
.pet-widget[data-animal=penguin][data-action=wave] .rig-arm-right{animation:pet-flipper-greet .55s ease-in-out 4}
.pet-widget[data-animal=penguin]:is([data-action=tickle],[data-action=dance],[data-action=jump]) .rig-arm-left{animation:pet-flipper-left .55s ease-in-out infinite}
.pet-widget[data-animal=penguin]:is([data-action=tickle],[data-action=dance],[data-action=jump]) .rig-arm-right{animation:pet-flipper-right .55s ease-in-out infinite}
.pet-widget[data-animal=penguin][data-action=dance] .rig-character{animation:pet-penguin-waddle .8s ease-in-out infinite}
.pet-widget[data-animal=penguin][data-action=dance] .rig-leg-left{animation:pet-webbed-step .8s ease-in-out infinite}
.pet-widget[data-animal=penguin][data-action=dance] .rig-leg-right{animation:pet-webbed-step .8s -.4s ease-in-out infinite}
.pet-widget[data-animal=penguin][data-action=love] .rig-arm-left{animation:pet-flipper-left 1s ease-in-out 3}
.pet-widget[data-animal=penguin][data-action=love] .rig-arm-right{animation:pet-flipper-right 1s ease-in-out 3}

.pet-widget[data-animal=chick][data-action=wave] .rig-arm-right{animation:pet-chick-wing-right .28s ease-in-out 7}
.pet-widget[data-animal=chick]:is([data-action=tickle],[data-action=dance],[data-action=jump]) .rig-arm-left{animation:pet-chick-wing-left .28s ease-in-out infinite}
.pet-widget[data-animal=chick]:is([data-action=tickle],[data-action=dance],[data-action=jump]) .rig-arm-right{animation:pet-chick-wing-right .28s ease-in-out infinite}
.pet-widget[data-animal=chick][data-action=pet] .rig-arm-left,.pet-widget[data-animal=chick][data-action=love] .rig-arm-left{animation:pet-chick-wing-left .65s ease-in-out 3}
.pet-widget[data-animal=chick][data-action=pet] .rig-arm-right,.pet-widget[data-animal=chick][data-action=love] .rig-arm-right{animation:pet-chick-wing-right .65s ease-in-out 3}
.pet-widget[data-animal=chick][data-action=dance] .rig-character{animation:pet-chick-bob .56s ease-in-out infinite}
.pet-widget[data-animal=chick][data-action=dance] .rig-head{animation:pet-chick-head-bob .56s ease-in-out infinite}

.pet-widget[data-animal=rabbit][data-action=jump] .rig-leg-left{animation:pet-rabbit-foot .85s ease-in-out 2}
.pet-widget[data-animal=rabbit][data-action=jump] .rig-leg-right{animation:pet-rabbit-foot .85s ease-in-out 2}

.pet-widget[data-animal=fox] .rig-tail{animation:pet-fox-tail 4.4s ease-in-out infinite}
.pet-widget[data-animal=fox]:is([data-action=pet],[data-action=wave],[data-action=love]) .rig-tail{animation:pet-fox-tail 1.1s ease-in-out infinite}
.pet-widget[data-animal=fox][data-action=dance] .rig-tail{animation:pet-fox-tail .7s ease-in-out infinite}
.pet-widget[data-animal=fox][data-action=sleep] .rig-tail{animation:pet-fox-tail-rest 3.1s ease-in-out infinite}
.pet-widget[data-animal=dog][data-action=idle] .rig-tail{animation:pet-dog-tail-rest 2.8s ease-in-out infinite}
.pet-widget[data-animal=dog]:is([data-action=pet],[data-action=wave],[data-action=tickle],[data-action=love],[data-action=dance]) .rig-tail{animation:pet-dog-wag .32s ease-in-out infinite}
.pet-widget[data-animal=cat][data-action=idle] .rig-tail{animation:pet-cat-tail 4.7s ease-in-out infinite}
.pet-widget[data-animal=cat][data-action=pet] .rig-head{animation:pet-cat-nuzzle 1.05s ease-in-out 2}
.pet-widget[data-animal=panda][data-action=idle] .rig-character{animation:pet-heavy-breathe 4.6s ease-in-out infinite}
.pet-widget[data-animal=panda][data-action=jump] .rig-character{animation:pet-heavy-hop .85s ease-in-out 2}
.pet-widget[data-animal=panda][data-action=dance] .rig-character{animation:pet-heavy-dance 1.2s ease-in-out infinite}
.pet-widget[data-animal=panda][data-action=dance] .rig-head{animation:pet-heavy-head 1.2s ease-in-out infinite}
.pet-widget[data-animal=panda][data-action=wave] .rig-arm-right,.pet-widget[data-animal=bear][data-action=wave] .rig-arm-right{animation:pet-paw-wave .72s ease-in-out 3}
.pet-widget[data-animal=bear][data-action=jump] .rig-character{animation:pet-heavy-hop .85s ease-in-out 2}
.pet-widget[data-animal=bear][data-action=pet] .rig-arm-left{animation:pet-bear-paw-left 1.05s ease-in-out 2}
.pet-widget[data-animal=bear][data-action=pet] .rig-arm-right{animation:pet-bear-paw-right 1.05s ease-in-out 2}

/* Additional friends retain their own body weight, ear shape, and tail rhythm. */
.pet-widget[data-animal=frog][data-action=jump] .rig-character{animation:pet-frog-hop .85s ease-in-out 2}
.pet-widget[data-animal=frog][data-action=jump] .rig-leg-left{animation:pet-frog-leg-left .85s ease-in-out 2}
.pet-widget[data-animal=frog][data-action=jump] .rig-leg-right{animation:pet-frog-leg-right .85s ease-in-out 2}
.pet-widget[data-animal=frog][data-action=wave] .rig-arm-right{animation:pet-small-paw-wave .7s ease-in-out 3}
.pet-widget[data-animal=mouse][data-action=idle] .rig-tail{animation:pet-thin-tail 4.8s ease-in-out infinite}
.pet-widget[data-animal=mouse][data-action=love] .rig-tail{animation:pet-thin-tail 1s ease-in-out 3}
.pet-widget[data-animal=koala][data-action=idle] .rig-head{animation:pet-koala-sway 6s ease-in-out infinite}
.pet-widget[data-animal=koala][data-action=wave] .rig-arm-right{animation:pet-paw-wave .72s ease-in-out 3}
.pet-widget:is([data-animal=koala],[data-animal=hippo],[data-animal=pig])[data-action=jump] .rig-character{animation:pet-heavy-hop .85s ease-in-out 2}
.pet-widget:is([data-animal=koala],[data-animal=hippo],[data-animal=pig])[data-action=dance] .rig-character{animation:pet-heavy-dance 1.2s ease-in-out infinite}
.pet-widget[data-animal=tiger][data-action=idle] .rig-tail{animation:pet-tiger-tail 4.3s ease-in-out infinite}
.pet-widget[data-animal=tiger]:is([data-action=pet],[data-action=love]) .rig-tail{animation:pet-tiger-tail 1.1s ease-in-out 3}
.pet-widget[data-animal=giraffe] .rig-head-look{transform:rotate(calc(var(--pet-look-r) * .5))}
.pet-widget[data-animal=giraffe][data-action] .rig-head{animation:pet-long-neck-greet 1.1s ease-in-out infinite}
.pet-widget[data-animal=giraffe][data-action=idle] .rig-head{animation:pet-long-neck-idle 5.5s ease-in-out infinite}
.pet-widget[data-animal=giraffe][data-action=jump] .rig-character{animation:pet-heavy-hop .85s ease-in-out 2}
.pet-widget:is([data-animal=giraffe],[data-animal=hippo],[data-animal=horse],[data-animal=pig])[data-action=wave] .rig-arm-right{animation:pet-small-paw-wave .7s ease-in-out 3}
.pet-widget[data-animal=hippo][data-action=pet] .rig-head{animation:pet-koala-sway 1.1s ease-in-out 2}
.pet-widget[data-animal=sheep][data-action=jump] .rig-character{animation:pet-sheep-spring .85s ease-in-out 2}
.pet-widget[data-animal=sheep][data-action=dance] .rig-head{animation:pet-koala-sway 1.1s ease-in-out infinite}
.pet-widget[data-animal=monkey][data-action=idle] .rig-tail{animation:pet-monkey-tail 3.7s ease-in-out infinite}
.pet-widget[data-animal=monkey]:is([data-action=wave],[data-action=dance],[data-action=love]) .rig-tail{animation:pet-monkey-tail .9s ease-in-out infinite}
.pet-widget[data-animal=pig][data-action=idle] .rig-tail{animation:pet-thin-tail 3.8s ease-in-out infinite}
.pet-widget[data-animal=horse][data-action=idle] .rig-head{animation:pet-horse-nod 5.4s ease-in-out infinite}
.pet-widget[data-animal=horse]:is([data-action=pet],[data-action=wave]) .rig-head{animation:pet-horse-nod 1.1s ease-in-out 2}

@keyframes pet-frog-hop{0%,100%{transform:translateY(0) scale(1)}18%{transform:translateY(3px) scale(1.035,.965)}46%{transform:translateY(-28px) scale(.99,1.015)}76%{transform:translateY(1px) scale(1.02,.98)}}
@keyframes pet-frog-leg-left{0%,100%{transform:rotate(0)}18%{transform:rotate(-6deg)}46%{transform:rotate(7deg)}}
@keyframes pet-frog-leg-right{0%,100%{transform:rotate(0)}18%{transform:rotate(6deg)}46%{transform:rotate(-7deg)}}
@keyframes pet-small-paw-wave{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(-24deg)}}
@keyframes pet-thin-tail{0%,100%{transform:rotate(-1.5deg)}50%{transform:rotate(3deg)}}
@keyframes pet-koala-sway{0%,100%{transform:rotate(-1.2deg)}50%{transform:rotate(1.2deg)}}
@keyframes pet-tiger-tail{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(6deg)}}
@keyframes pet-long-neck-idle{0%,100%{transform:rotate(-.6deg)}50%{transform:rotate(.6deg)}}
@keyframes pet-long-neck-greet{0%,100%{transform:rotate(-1.5deg)}50%{transform:rotate(1.5deg)}}
@keyframes pet-sheep-spring{0%,100%{transform:translateY(0) scale(1)}18%{transform:translateY(2px) scale(1.02,.98)}45%{transform:translateY(-18px) scale(.995,1.01)}76%{transform:translateY(1px) scale(1.015,.985)}}
@keyframes pet-monkey-tail{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(6deg)}}
@keyframes pet-horse-nod{0%,100%{transform:rotate(-1deg)}50%{transform:rotate(2.5deg)}}


@keyframes pet-elephant-trunk{0%,100%{transform:rotate(-1deg)}50%{transform:rotate(1.4deg)}}
@keyframes pet-heavy-paw-wave{0%,100%{transform:rotate(-3deg)}45%{transform:rotate(-12deg)}}
@keyframes pet-heavy-paw-hop{0%,100%{transform:rotate(0)}45%{transform:rotate(8deg)}}
@keyframes pet-penguin-idle{0%,100%{transform:rotate(-.5deg)}50%{transform:rotate(.5deg) translateY(-1px)}}
@keyframes pet-flipper-greet{0%,100%{transform:rotate(-12deg)}50%{transform:rotate(-29deg)}}
@keyframes pet-flipper-left{0%,100%{transform:rotate(4deg)}50%{transform:rotate(20deg)}}
@keyframes pet-flipper-right{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(-20deg)}}
@keyframes pet-penguin-waddle{0%,100%{transform:rotate(-4deg) translateX(-3px)}50%{transform:rotate(4deg) translateX(3px)}}
@keyframes pet-webbed-step{0%,45%,100%{transform:rotate(0) translateY(0)}70%{transform:rotate(-5deg) translateY(-4px)}}
@keyframes pet-chick-wing-left{0%,100%{transform:rotate(1deg)}50%{transform:rotate(15deg)}}
@keyframes pet-chick-wing-right{0%,100%{transform:rotate(-1deg)}50%{transform:rotate(-15deg)}}
@keyframes pet-chick-bob{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-4px) rotate(2deg)}}
@keyframes pet-chick-head-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(2px)}}
@keyframes pet-rabbit-foot{0%,100%{transform:rotate(0)}18%{transform:rotate(4deg)}48%{transform:rotate(-6deg)}}
@keyframes pet-fox-tail{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(8deg)}}
@keyframes pet-fox-tail-rest{0%,100%{transform:rotate(4deg)}50%{transform:rotate(5deg)}}
@keyframes pet-dog-wag{0%,100%{transform:rotate(-10deg)}50%{transform:rotate(13deg)}}
@keyframes pet-dog-tail-rest{0%,60%,100%{transform:rotate(-2deg)}75%{transform:rotate(4deg)}88%{transform:rotate(-4deg)}}
@keyframes pet-cat-tail{0%,100%{transform:rotate(-3deg)}55%{transform:rotate(5deg)}}
@keyframes pet-cat-nuzzle{0%,100%{transform:rotate(-4deg) translateY(1px)}50%{transform:rotate(4deg) translateY(-2px)}}
@keyframes pet-heavy-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.006,1.008) translateY(-.5px)}}
@keyframes pet-heavy-hop{0%,100%{transform:translateY(0) scale(1)}15%{transform:translateY(2px) scale(1.015,.985)}46%{transform:translateY(-11px) scale(.995,1.005)}76%{transform:translateY(1px) scale(1.012,.988)}}
@keyframes pet-heavy-dance{0%,100%{transform:rotate(-2.4deg) translateX(-2px)}50%{transform:rotate(2.4deg) translateX(2px) translateY(-1px)}}
@keyframes pet-heavy-head{0%,100%{transform:rotate(2deg)}50%{transform:rotate(-2deg)}}
@keyframes pet-paw-wave{0%,100%{transform:rotate(-62deg)}50%{transform:rotate(-81deg)}}
@keyframes pet-bear-paw-left{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(-11deg)}}
@keyframes pet-bear-paw-right{0%,100%{transform:rotate(4deg)}50%{transform:rotate(11deg)}}

@media(prefers-reduced-motion:reduce){.pet-widget *,.pet-widget *:before{animation:none!important;transition:none!important}.pet-widget .rig-head-look{transform:none!important}.pet-widget[data-action]:not([data-action=idle]) .pet-spark{opacity:.7}.pet-widget .pet-sparks[data-kind=none] .pet-spark{opacity:0}}

/* Nested SVG viewports keep atlas crops at their authored dimensions. */
.pet-widget .rig-head-viewport{overflow:hidden;pointer-events:none}
.pet-widget .rig-head-art{pointer-events:none}
