@keyframes cat-idle {
  0%,
  100% {
    transform: translateY(0) scaleY(1);
  }
  50% {
    transform: translateY(-4px) scaleY(1.015);
  }
}

/* ---- entrance motions (one per face, see Motion in PixelCat.tsx) ---- */

.cat-m-hop {
  animation:
    cat-hop 0.55s var(--ease-pop) 1,
    cat-idle 3.6s ease-in-out 0.55s infinite;
}
@keyframes cat-hop {
  0% {
    transform: translateY(0) scale(1);
  }
  30% {
    transform: translateY(-22px) scale(1.04, 0.96);
  }
  60% {
    transform: translateY(0) scale(0.98, 1.03);
  }
  100% {
    transform: translateY(0) scale(1);
  }
}

.cat-m-bounce {
  animation:
    cat-bounce 0.8s var(--ease-pop) 1,
    cat-idle 3.6s ease-in-out 0.8s infinite;
}
@keyframes cat-bounce {
  0% {
    transform: translateY(0);
  }
  22% {
    transform: translateY(-18px) scale(1.03, 0.97);
  }
  44% {
    transform: translateY(0) scale(0.98, 1.03);
  }
  66% {
    transform: translateY(-9px);
  }
  85% {
    transform: translateY(0) scale(1.01, 0.99);
  }
  100% {
    transform: translateY(0) scale(1);
  }
}

.cat-m-shake {
  animation:
    cat-shake 0.45s var(--ease-out) 1,
    cat-idle 3.6s ease-in-out 0.45s infinite;
}
@keyframes cat-shake {
  0%,
  100% {
    transform: translateX(0);
  }
  20% {
    transform: translateX(-7px) rotate(-2deg);
  }
  40% {
    transform: translateX(6px) rotate(2deg);
  }
  60% {
    transform: translateX(-4px) rotate(-1deg);
  }
  80% {
    transform: translateX(3px);
  }
}

.cat-m-shiver {
  animation:
    cat-shiver 0.7s linear 1,
    cat-idle 3.6s ease-in-out 0.7s infinite;
}
@keyframes cat-shiver {
  0%,
  100% {
    transform: translateX(0);
  }
  10%,
  30%,
  50%,
  70%,
  90% {
    transform: translateX(-2px);
  }
  20%,
  40%,
  60%,
  80% {
    transform: translateX(2px);
  }
}

.cat-m-tilt {
  animation:
    cat-tilt 0.5s var(--ease-out) 1,
    cat-idle 3.6s ease-in-out 0.5s infinite;
}
@keyframes cat-tilt {
  0% {
    transform: rotate(0);
  }
  50% {
    transform: rotate(-5deg) translateY(-3px);
  }
  100% {
    transform: rotate(0);
  }
}
.cat-m-tiltR {
  animation:
    cat-tilt-r 0.5s var(--ease-out) 1,
    cat-idle 3.6s ease-in-out 0.5s infinite;
}
@keyframes cat-tilt-r {
  0% {
    transform: rotate(0);
  }
  50% {
    transform: rotate(5deg) translateY(-3px);
  }
  100% {
    transform: rotate(0);
  }
}

/* lean: tips over and holds a beat before settling — smug, judging, cool */
.cat-m-lean {
  animation:
    cat-lean 0.9s var(--ease-out) 1,
    cat-idle 3.6s ease-in-out 0.9s infinite;
}
@keyframes cat-lean {
  0% {
    transform: rotate(0);
  }
  30%,
  70% {
    transform: rotate(-7deg) translateX(-3px);
  }
  100% {
    transform: rotate(0);
  }
}
.cat-m-leanR {
  animation:
    cat-lean-r 0.9s var(--ease-out) 1,
    cat-idle 3.6s ease-in-out 0.9s infinite;
}
@keyframes cat-lean-r {
  0% {
    transform: rotate(0);
  }
  30%,
  70% {
    transform: rotate(7deg) translateX(3px);
  }
  100% {
    transform: rotate(0);
  }
}

.cat-m-squish {
  animation:
    cat-squish 0.45s var(--ease-pop) 1,
    cat-idle 3.6s ease-in-out 0.45s infinite;
}
@keyframes cat-squish {
  0% {
    transform: scale(1);
  }
  40% {
    transform: scale(1.06, 0.94);
  }
  100% {
    transform: scale(1);
  }
}

.cat-m-jolt {
  animation:
    cat-jolt 0.35s var(--ease-out) 1,
    cat-idle 3.6s ease-in-out 0.35s infinite;
}
@keyframes cat-jolt {
  0% {
    transform: scale(1);
  }
  30% {
    transform: scale(0.94, 1.08) translateY(-8px);
  }
  100% {
    transform: scale(1);
  }
}

.cat-m-spin {
  animation:
    cat-spin 0.8s var(--ease-pop) 1,
    cat-idle 3.6s ease-in-out 0.8s infinite;
  transform-origin: 50% 60%;
}
@keyframes cat-spin {
  0% {
    transform: rotate(0) scale(1);
  }
  60% {
    transform: rotate(360deg) scale(0.96);
  }
  80% {
    transform: rotate(372deg);
  }
  100% {
    transform: rotate(360deg) scale(1);
  }
}

.cat-m-sway {
  animation:
    cat-sway 1.2s ease-in-out 1,
    cat-idle 3.6s ease-in-out 1.2s infinite;
}
@keyframes cat-sway {
  0%,
  100% {
    transform: rotate(0);
  }
  25% {
    transform: rotate(-4deg) translateX(-2px);
  }
  75% {
    transform: rotate(4deg) translateX(2px);
  }
}

.cat-m-float {
  animation:
    cat-float 1.1s var(--ease-out) 1,
    cat-idle 3.6s ease-in-out 1.1s infinite;
}
@keyframes cat-float {
  0% {
    transform: translateY(0);
  }
  45% {
    transform: translateY(-12px) scale(1.01);
  }
  100% {
    transform: translateY(0);
  }
}

.cat-m-stomp {
  animation:
    cat-stomp 0.5s var(--ease-out) 1,
    cat-idle 3.6s ease-in-out 0.5s infinite;
}
@keyframes cat-stomp {
  0% {
    transform: scale(1);
  }
  25% {
    transform: translateY(-6px) scale(0.98, 1.03);
  }
  50% {
    transform: translateY(0) scale(1.08, 0.9);
  }
  100% {
    transform: scale(1);
  }
}

.cat-m-wiggle {
  animation:
    cat-wiggle 0.7s ease-in-out 1,
    cat-idle 3.6s ease-in-out 0.7s infinite;
}
@keyframes cat-wiggle {
  0%,
  100% {
    transform: rotate(0);
  }
  20% {
    transform: rotate(-6deg);
  }
  40% {
    transform: rotate(6deg);
  }
  60% {
    transform: rotate(-4deg);
  }
  80% {
    transform: rotate(4deg);
  }
}

.cat-m-nod {
  animation:
    cat-nod 0.7s var(--ease-out) 1,
    cat-idle 3.6s ease-in-out 0.7s infinite;
}
@keyframes cat-nod {
  0%,
  100% {
    transform: translateY(0) scaleY(1);
  }
  25% {
    transform: translateY(5px) scaleY(0.95);
  }
  50% {
    transform: translateY(0) scaleY(1);
  }
  75% {
    transform: translateY(4px) scaleY(0.96);
  }
}

.cat-m-stretch {
  animation:
    cat-stretch 1s var(--ease-out) 1,
    cat-idle 3.6s ease-in-out 1s infinite;
}
@keyframes cat-stretch {
  0% {
    transform: scaleY(1);
  }
  50% {
    transform: scaleY(1.1) scaleX(0.96) translateY(-4px);
  }
  100% {
    transform: scaleY(1);
  }
}

.cat-m-sink {
  animation:
    cat-sink 0.9s var(--ease-out) 1,
    cat-idle 3.6s ease-in-out 0.9s infinite;
}
@keyframes cat-sink {
  0% {
    transform: translateY(0) scaleY(1);
  }
  50% {
    transform: translateY(5px) scaleY(0.94) scaleX(1.03);
  }
  100% {
    transform: translateY(0) scaleY(1);
  }
}

/* leap: big jump with hang time — pairs with the jump pose */
.cat-m-leap {
  animation:
    cat-leap 0.9s cubic-bezier(0.3, 0, 0.2, 1) 1,
    cat-idle 3.6s ease-in-out 0.9s infinite;
}
@keyframes cat-leap {
  0% {
    transform: translateY(0) scale(1);
  }
  12% {
    transform: translateY(6px) scale(1.08, 0.88);
  }
  45% {
    transform: translateY(-46px) scale(0.96, 1.06);
  }
  62% {
    transform: translateY(-40px) scale(0.98, 1.03);
  }
  85% {
    transform: translateY(0) scale(1.06, 0.92);
  }
  100% {
    transform: translateY(0) scale(1);
  }
}

/* rise: getting up from a loaf — unfolds upward */
.cat-m-rise {
  animation:
    cat-rise 0.7s var(--ease-out) 1,
    cat-idle 3.6s ease-in-out 0.7s infinite;
}
@keyframes cat-rise {
  0% {
    transform: translateY(10px) scaleY(0.78) scaleX(1.1);
  }
  60% {
    transform: translateY(-4px) scaleY(1.04) scaleX(0.98);
  }
  100% {
    transform: translateY(0) scale(1);
  }
}

/* flop: dropping into a loaf — lands with a soft squash */
.cat-m-flop {
  animation:
    cat-flop 0.6s var(--ease-out) 1,
    cat-idle 3.6s ease-in-out 0.6s infinite;
}
@keyframes cat-flop {
  0% {
    transform: translateY(-14px) scaleY(1.06);
  }
  55% {
    transform: translateY(0) scaleY(0.9) scaleX(1.06);
  }
  100% {
    transform: translateY(0) scale(1);
  }
}

