.fly-rig-definitions{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}
.pet-actor.living-fly{width:clamp(98px,18%,150px);height:auto;aspect-ratio:1374/1145;transform:translate(-50%,-100%);will-change:left,top;transition:none}
.living-fly[hidden]{display:none}
.fly-rig,.fly-pose{position:absolute;inset:0;pointer-events:none}
.fly-rig{transform:scaleX(var(--fly-facing,1)) rotate(var(--fly-bank,0deg));transform-origin:50% 65%;transition:filter .4s}
.fly-pose{transform-origin:50% 92%}
.fly-part{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:fill;pointer-events:none;user-select:none;will-change:transform}
.fly-body{clip-path:url(#fly-body-cutout)}
.fly-wing-near{transform-origin:49% 44%;transform:rotate(-8deg) scale(.96)}
.fly-wing-far{transform-origin:65% 30%;transform:rotate(7deg) scale(.95)}
.fly-leg-near{transform-origin:55% 69%}
.fly-leg-far{transform-origin:73% 72%}
.living-fly:is([data-behavior="takeoff"],[data-behavior="flying"],[data-behavior="landing"]) .fly-wing-near{animation:fly-wingbeat-near .075s linear infinite;opacity:.8}
.living-fly:is([data-behavior="takeoff"],[data-behavior="flying"],[data-behavior="landing"]) .fly-wing-far{animation:fly-wingbeat-far .085s linear infinite;opacity:.75}
.living-fly:is([data-behavior="takeoff"],[data-behavior="flying"],[data-behavior="landing"]) .fly-leg-near{transform:rotate(-13deg)}
.living-fly:is([data-behavior="takeoff"],[data-behavior="flying"],[data-behavior="landing"]) .fly-leg-far{transform:rotate(12deg)}
.living-fly[data-behavior="perched"] .fly-pose{animation:fly-breathe 3.2s ease-in-out infinite}
.living-fly[data-behavior="walking"] .fly-pose{animation:fly-steps .19s ease-in-out infinite}
.living-fly[data-behavior="walking"] .fly-leg-near{animation:fly-walk-near .24s ease-in-out infinite alternate}
.living-fly[data-behavior="walking"] .fly-leg-far{animation:fly-walk-near .24s ease-in-out -.12s infinite alternate-reverse}
.living-fly[data-behavior="grooming"] .fly-pose{animation:fly-groom-bow 1.15s ease-in-out infinite}
.living-fly[data-behavior="grooming"] .fly-leg-near{animation:fly-wash-near .5s ease-in-out infinite}
.living-fly[data-behavior="grooming"] .fly-leg-far{animation:fly-wash-far .5s ease-in-out -.25s infinite}
.living-fly[data-behavior="pooping"] .fly-pose{animation:fly-bathroom 1.7s ease-in-out both}
.living-fly[data-behavior="sleeping"] .fly-pose{animation:fly-breathe 5s ease-in-out infinite;opacity:.83;transform:rotate(3deg)}
.living-fly[data-behavior="sleeping"] .fly-wing-near{transform:rotate(-17deg) scale(.88)}
.living-fly[data-behavior="sleeping"] .fly-wing-far{transform:rotate(15deg) scale(.86)}
.living-fly .pet-name-tag{bottom:-22px;box-shadow:0 2px 9px #03181240}
.living-fly .pet-speech{bottom:110%}
.fly-traces{position:absolute;inset:0;pointer-events:none;z-index:1}
.fly-dropping{position:absolute;width:5px;height:3px;border-radius:65% 45% 55% 40%;background:#3d2b1b;box-shadow:inset 1px 1px 0 #9e7947,0 1px 1px #020d08b3;animation:fly-dropping-fall .4s ease-in both;pointer-events:none}
.environment .fly-activity{gap:9px;color:#c1d6ae;font-size:12px;line-height:1.5;max-width:220px}
.environment .fly-activity[hidden]{display:none}
.fly-activity:before{content:"";width:5px;height:5px;background:#c6e997;border-radius:50%;flex-shrink:0;box-shadow:0 0 9px #bae47c60}
.fly-life-paused .fly-pose,.fly-life-paused .fly-part,.fly-life-paused .fly-dropping{animation-play-state:paused!important}
@keyframes fly-wingbeat-near{0%,100%{transform:rotate(-24deg) scaleX(.77)}50%{transform:rotate(19deg) scaleX(1.04)}}
@keyframes fly-wingbeat-far{0%,100%{transform:rotate(19deg) scaleX(.6)}50%{transform:rotate(-17deg) scaleX(1.02)}}
@keyframes fly-breathe{0%,100%{transform:translateY(0) scaleY(1)}50%{transform:translateY(-.7px) scaleY(.987)}}
@keyframes fly-steps{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-1.3px) rotate(1deg)}}
@keyframes fly-walk-near{from{transform:rotate(-12deg)}to{transform:rotate(11deg)}}
@keyframes fly-groom-bow{0%,100%{transform:rotate(1deg) translateY(0)}50%{transform:rotate(5deg) translateY(1px)}}
@keyframes fly-wash-near{0%,100%{transform:rotate(-91deg)}50%{transform:rotate(-116deg)}}
@keyframes fly-wash-far{0%,100%{transform:rotate(-148deg)}50%{transform:rotate(-169deg)}}
@keyframes fly-bathroom{0%,100%{transform:rotate(0) scaleY(1)}35%,58%{transform:rotate(-7deg) scaleY(.93)}72%{transform:rotate(2deg) scaleY(1)}}
@keyframes fly-dropping-fall{from{transform:translate(-50%,-13px) scale(.5)}to{transform:translate(-50%,0) scale(1)}}
@media(max-width:620px){.environment .fly-activity{font-size:11px;max-width:170px}.living-fly .pet-name-tag{font-size:11px;padding:4px 9px;bottom:-19px}}
@media(prefers-reduced-motion:reduce){.fly-pose,.fly-part,.fly-dropping{animation:none!important}.fly-rig{transition:none}}
