/* Egg-only inner layers. The home cast's shared sway and character reactions
   remain on their existing parents. These effects never gate game state. */
#petSprite .egg-warming {
  transform-origin:50% 91%;
  animation:egg-warm 560ms ease-in-out;
}
@keyframes egg-warm {
  0%,100% {transform:rotate(0) scale(1)}
  24% {transform:rotate(-7deg) scale(1.02,.98)}
  52% {transform:rotate(6deg) scale(.99,1.01)}
  76% {transform:rotate(-3deg)}
}
#petSprite .egg-newborn > .character-asset,
#petSprite .egg-newborn > .character-emoji-fallback {
  animation:egg-newborn-appear 900ms ease-out both;
}
@keyframes egg-newborn-appear {
  0%,15% {opacity:0;transform:translateY(8%) scale(.82)}
  65% {opacity:1;transform:translateY(-2%) scale(1.04)}
  100% {opacity:1;transform:none}
}
#petSprite .egg-hatch-shell,
#petSprite .egg-hatch-shell > span {
  position:absolute;inset:0;pointer-events:none;
}
#petSprite .egg-hatch-shell > span {
  background:url('assets/characters/egg/ready.png') center / 100% 100% no-repeat;
  image-rendering:pixelated;
  animation:egg-shell-top 900ms ease-out forwards;
}
#petSprite .egg-shell-top {
  clip-path:polygon(0 0,100% 0,100% 68%,84% 68%,74% 64%,64% 61%,58% 55%,50% 54%,43% 48%,33% 43%,25% 39%,25% 37%,0 37%);
}
#petSprite .egg-hatch-shell > .egg-shell-bottom {
  clip-path:polygon(0 37%,25% 37%,25% 39%,33% 43%,43% 48%,50% 54%,58% 55%,64% 61%,74% 64%,84% 68%,100% 68%,100% 100%,0 100%);
  animation-name:egg-shell-bottom;
}
@keyframes egg-shell-top {
  0%,12% {opacity:1;transform:none}
  65% {opacity:.55}
  100% {opacity:0;transform:translate(10%,-12%) rotate(12deg)}
}
@keyframes egg-shell-bottom {
  0%,12% {opacity:1;transform:none}
  65% {opacity:.55}
  100% {opacity:0;transform:translate(-10%,8%) rotate(-10deg)}
}
@media (prefers-reduced-motion:reduce) {
  #petSprite .egg-warming,
  #petSprite .egg-newborn > .character-asset,
  #petSprite .egg-newborn > .character-emoji-fallback {
    animation:none;opacity:1;transform:none;
  }
  #petSprite .egg-hatch-shell {display:none}
}
