/* Registered action frames: authored atlas kept intact. Each crop uses a common
   340px virtual cell and a 96% paw baseline, with per-frame source bounds.
   The generated atlas is not an exact regular grid, so uniform 400% crops
   would cut off paws and cause a visible vertical snap. */
.pet-pose{transition:opacity 120ms ease-in-out}
.has-action-atlas .pet-pose-idle,.has-action-atlas .pet-pose-jump,.has-action-atlas .pet-pose-sleep,.has-action-atlas .pet-pose-happy{opacity:0!important}
.pet-pose-action{background-image:var(--byp-atlas-actions,none);background-size:368.823529% 368.823529%;transform:none}
.pet-pose-action.is-visible{opacity:1}
.pet-pose-action[data-action-frame="0"]{background-position:-0.54705% 0.28446%;clip-path:inset(9.529% 11.765% 2.250% 11.765%)}
.pet-pose-action[data-action-frame="1"]{background-position:33.69803% 0.17505%;clip-path:inset(9.529% 11.176% 2.250% 11.176%)}
.pet-pose-action[data-action-frame="2"]{background-position:68.49015% 0.06565%;clip-path:inset(11.294% 9.412% 2.250% 9.412%)}
.pet-pose-action[data-action-frame="3"]{background-position:102.07877% 0.17505%;clip-path:inset(9.824% 10.588% 2.250% 10.588%)}
.pet-pose-action[data-action-frame="4"]{background-position:-1.03939% 33.10722%;clip-path:inset(14.235% 9.853% 2.250% 9.853%)}
.pet-pose-action[data-action-frame="5"]{background-position:33.58862% 32.99781%;clip-path:inset(20.412% 2.059% 2.250% 2.059%)}
.pet-pose-action[data-action-frame="6"]{background-position:69.03720% 32.77899%;clip-path:inset(35.706% 4.706% 2.250% 4.706%)}
.pet-pose-action[data-action-frame="7"]{background-position:101.42232% 32.99781%;clip-path:inset(13.647% 6.176% 2.250% 6.176%)}
.pet-pose-action[data-action-frame="8"]{background-position:0.21882% 61.88184%;clip-path:inset(25.706% 7.059% 2.250% 7.059%)}
.pet-pose-action[data-action-frame="9"]{background-position:34.73742% 66.25821%;clip-path:inset(15.412% 7.794% 2.250% 7.794%)}
.pet-pose-action[data-action-frame="10"]{background-position:67.66958% 66.14880%;clip-path:inset(35.118% 5.147% 2.250% 5.147%)}
.pet-pose-action[data-action-frame="11"]{background-position:101.47702% 66.14880%;clip-path:inset(24.529% 5.147% 2.250% 5.147%)}
.pet-pose-action[data-action-frame="12"]{background-position:1.31291% 96.89278%;clip-path:inset(15.412% 3.824% 2.250% 3.824%)}
.pet-pose-action[data-action-frame="13"]{background-position:34.19037% 96.78337%;clip-path:inset(16.000% 10.735% 2.250% 10.735%)}
.pet-pose-action[data-action-frame="14"]{background-position:67.45077% 96.01751%;clip-path:inset(38.353% 6.912% 2.250% 6.912%)}
.pet-pose-action[data-action-frame="15"]{background-position:101.25821% 96.01751%;clip-path:inset(39.235% 6.029% 2.250% 6.029%)}
.has-action-atlas[data-motion=crouch] .pet-art,.has-action-atlas[data-motion=land] .pet-art{animation:none}
.has-action-atlas.is-happy .pet-art{animation:pet-nuzzle .72s ease-in-out both}
.has-action-atlas[data-action=sit]:not(.is-happy) .pet-art{animation:pet-alert-breath 4.8s ease-in-out infinite}
.has-action-atlas[data-action=curious] .pet-art{animation:pet-sniff .55s ease-in-out both}
.has-action-atlas[data-action=groom] .pet-art{animation:pet-groom 1s ease-in-out both}
.has-action-atlas[data-action=stretch] .pet-art{animation:pet-stretch .72s ease-in-out both}
.has-action-atlas.is-sleeping .pet-art{animation:pet-breathe 3.8s ease-in-out infinite}
.pet-art{transform-origin:50% 96%;rotate:var(--pet-gaze-tilt,0deg);transition:rotate 260ms ease-out}
.pet-pose-action[data-action-frame="7"]{clip-path:polygon(6.176% 13.647%,93.824% 13.647%,93.824% 97.471%,6.176% 97.471%,6.176% 70.706%,10.000% 70.706%,10.000% 48.353%,6.176% 48.353%)}
.pet-pose-action[data-action-frame="13"]{clip-path:inset(16% 10.735% 2.25% 13.382%)}
.pet-pose-walk{transition:opacity 100ms ease-in-out}
/* Walk atlas paws previously ended at 100% while registered action paws
   ended at 96%, producing a four-pixel hop whenever standing changed to walk. */
.pet-actor .pet-pose-walk{transform:translateY(1%)}
.pet-actor[data-step="2"] .pet-pose-walk{transform:translateY(6.3%)}
.pet-actor[data-step="3"] .pet-pose-walk{transform:translateY(6%)}
/* Sprite opacity is owned by PetVisual. Additive compositing inside this
   isolated group prevents the dark/transparent dip of source-over fades.
   Logical pose selectors must never expose a third, stale sprite layer. */
.has-pet-renderer .pet-art{isolation:isolate;animation:pet-alert-breath 4.8s ease-in-out infinite!important}
.has-pet-renderer .pet-pose{opacity:0;transition:none}
.has-pet-renderer .pet-pose-action,.has-pet-renderer .pet-pose-walk{mix-blend-mode:plus-lighter}
/* Registered per-layer gait crops override the old global actor step rules.
   An outgoing walking silhouette stays frozen until it is fully hidden. */
.pet-actor.has-pet-renderer .pet-pose-walk[data-walk-frame="0"]{background-position:0 0;transform:translateY(1%)}
.pet-actor.has-pet-renderer .pet-pose-walk[data-walk-frame="1"]{background-position:100% 0;transform:translateY(1%)}
.pet-actor.has-pet-renderer .pet-pose-walk[data-walk-frame="2"]{background-position:0 100%;transform:translateY(6.3%)}
.pet-actor.has-pet-renderer .pet-pose-walk[data-walk-frame="3"]{background-position:100% 100%;transform:translateY(6%)}
.pet-renderer-suspended .pet-art{animation-play-state:paused!important}
.has-pet-renderer.pet-no-motion .pet-art{animation:none!important}
@keyframes pet-alert-breath{0%,100%{transform:scaleY(1)}50%{transform:scaleY(.994)}}
@keyframes pet-sniff{0%,100%{transform:rotate(0)}35%{transform:rotate(1.5deg)}60%{transform:rotate(.6deg)}78%{transform:rotate(1.4deg)}}
@keyframes pet-nuzzle{0%,100%{transform:rotate(0)}35%{transform:rotate(-2.5deg) scaleY(1.015)}65%{transform:rotate(-1deg)}}
@keyframes pet-groom{0%,100%{transform:rotate(0)}40%{transform:rotate(1.2deg)}65%{transform:rotate(.2deg)}}
@keyframes pet-stretch{0%,100%{transform:scale(1)}55%{transform:scale(1.035,.98)}}
@media(prefers-reduced-motion:reduce){.pet-pose{transition:none!important}.pet-art,.has-pet-renderer .pet-art{animation:none!important}}
