/* ==========================================================================
   Poop Dances — 60 unique animations for 💩
   ========================================================================== */

/* 1. Wobble — squishy side-to-side */
.poop.dance-wobble { animation: wobbleDance 0.6s ease-in-out; }
@keyframes wobbleDance {
  0%   { transform: scale(1) rotate(0deg); }
  15%  { transform: scale(1.2, 0.8) rotate(-5deg); }
  30%  { transform: scale(0.85, 1.15) rotate(5deg); }
  45%  { transform: scale(1.15, 0.9) rotate(-3deg); }
  60%  { transform: scale(0.95, 1.05) rotate(3deg); }
  75%  { transform: scale(1.05, 0.95) rotate(-1deg); }
  100% { transform: scale(1) rotate(0deg); }
}

/* 2. Disco — double spin with glow */
.poop.dance-disco { animation: discoSpin 0.8s cubic-bezier(0.34, 1.56, 0.64, 1); }
@keyframes discoSpin {
  0%   { transform: rotate(0deg) scale(1); filter: drop-shadow(0 0 30px rgba(180, 120, 60, 0.25)); }
  25%  { transform: rotate(180deg) scale(1.3); filter: drop-shadow(0 0 60px rgba(255, 180, 60, 0.6)); }
  50%  { transform: rotate(360deg) scale(0.9); }
  75%  { transform: rotate(540deg) scale(1.15); filter: drop-shadow(0 0 80px rgba(255, 140, 40, 0.5)); }
  100% { transform: rotate(720deg) scale(1); filter: drop-shadow(0 0 30px rgba(180, 120, 60, 0.25)); }
}

/* 3. Bounce — trampoline */
.poop.dance-bounce { transform-origin: center bottom; animation: trampolineBounce 1s cubic-bezier(0.25, 0.1, 0.25, 1); }
@keyframes trampolineBounce {
  0%   { transform: translateY(0) scaleX(1) scaleY(1); }
  5%   { transform: translateY(10px) scaleX(1.15) scaleY(0.75); }
  15%  { transform: translateY(-80px) scaleX(0.85) scaleY(1.2); }
  25%  { transform: translateY(-120px) scaleX(0.9) scaleY(1.1); }
  40%  { transform: translateY(0) scaleX(1.1) scaleY(0.85); }
  45%  { transform: translateY(5px) scaleX(1.12) scaleY(0.8); }
  55%  { transform: translateY(-50px) scaleX(0.9) scaleY(1.12); }
  70%  { transform: translateY(0) scaleX(1.06) scaleY(0.9); }
  75%  { transform: translateY(3px) scaleX(1.08) scaleY(0.88); }
  85%  { transform: translateY(-20px) scaleX(0.95) scaleY(1.05); }
  95%  { transform: translateY(0) scaleX(1.02) scaleY(0.97); }
  100% { transform: translateY(0) scaleX(1) scaleY(1); }
}

/* 4. Panic — escalating shake then pop */
.poop.dance-panic { animation: panicShake 1.2s ease-in-out; }
@keyframes panicShake {
  0%   { transform: translate(0, 0) rotate(0deg) scale(1); }
  5%   { transform: translate(-2px, 0) rotate(-1deg) scale(1.02); }
  10%  { transform: translate(2px, 0) rotate(1deg) scale(1.02); }
  15%  { transform: translate(-3px, 1px) rotate(-2deg) scale(1.05); }
  20%  { transform: translate(3px, -1px) rotate(2deg) scale(1.05); }
  25%  { transform: translate(-4px, 0) rotate(-3deg) scale(1.08); }
  30%  { transform: translate(4px, 0) rotate(3deg) scale(1.08); }
  35%  { transform: translate(-5px, 1px) rotate(-4deg) scale(1.12); }
  40%  { transform: translate(5px, -1px) rotate(4deg) scale(1.12); }
  45%  { transform: translate(-6px, 0) rotate(-5deg) scale(1.15); }
  50%  { transform: translate(6px, 0) rotate(5deg) scale(1.18); }
  55%  { transform: translate(-7px, 1px) rotate(-6deg) scale(1.22); }
  60%  { transform: translate(7px, -1px) rotate(6deg) scale(1.25); }
  65%  { transform: translate(-8px, 0) rotate(-7deg) scale(1.28); }
  70%  { transform: translate(8px, 0) rotate(7deg) scale(1.3); }
  75%  { transform: translate(0, 0) rotate(0deg) scale(1.5); filter: drop-shadow(0 0 80px rgba(255, 160, 40, 0.7)); }
  80%  { transform: translate(0, 0) rotate(0deg) scale(0.85); }
  90%  { transform: translate(0, 0) rotate(0deg) scale(1.05); }
  100% { transform: translate(0, 0) rotate(0deg) scale(1); filter: drop-shadow(0 0 30px rgba(180, 120, 60, 0.2)); }
}

/* 5. Groovy — side-step dance */
.poop.dance-groovy { transform-origin: center bottom; animation: groovyDance 1.6s cubic-bezier(0.4, 0, 0.2, 1); }
@keyframes groovyDance {
  0%    { transform: translateX(0) rotate(0deg) scaleY(1); }
  6%    { transform: translateX(20px) rotate(8deg) scaleY(0.95); }
  12%   { transform: translateX(20px) rotate(8deg) scaleY(1.05); }
  18%   { transform: translateX(0) rotate(0deg) scaleY(0.95); }
  25%   { transform: translateX(-20px) rotate(-8deg) scaleY(1.05); }
  31%   { transform: translateX(-20px) rotate(-8deg) scaleY(0.95); }
  37%   { transform: translateX(0) rotate(0deg) scaleY(0.95); }
  44%   { transform: translateX(30px) rotate(12deg) scaleY(1.08); }
  50%   { transform: translateX(30px) rotate(12deg) scaleY(0.93); }
  56%   { transform: translateX(0) rotate(0deg) scaleY(0.95); }
  63%   { transform: translateX(-30px) rotate(-12deg) scaleY(1.08); }
  69%   { transform: translateX(-30px) rotate(-12deg) scaleY(0.93); }
  75%   { transform: translateX(0) rotate(0deg) scaleY(0.95); }
  81%   { transform: translateX(15px) rotate(5deg) scaleY(1.03); }
  87%   { transform: translateX(0) rotate(0deg) scaleY(0.97); }
  94%   { transform: translateX(-8px) rotate(-2deg) scaleY(1.01); }
  100%  { transform: translateX(0) rotate(0deg) scaleY(1); }
}

/* 6. Helicopter — flat spin ascending */
.poop.dance-helicopter { animation: helicopterSpin 1.2s cubic-bezier(0.4, 0, 0.2, 1); }
@keyframes helicopterSpin {
  0%   { transform: translateY(0) rotate(0deg) scaleY(1); }
  20%  { transform: translateY(-30px) rotate(360deg) scaleY(0.6); }
  40%  { transform: translateY(-80px) rotate(720deg) scaleY(0.4); }
  60%  { transform: translateY(-100px) rotate(1080deg) scaleY(0.3); }
  75%  { transform: translateY(-40px) rotate(1260deg) scaleY(0.6); }
  90%  { transform: translateY(10px) rotate(1400deg) scaleY(1.1); }
  100% { transform: translateY(0) rotate(1440deg) scaleY(1); }
}

/* 7. Jello — wobbly gelatin */
.poop.dance-jello { animation: jelloDance 0.9s ease-in-out; }
@keyframes jelloDance {
  0%   { transform: skewX(0deg) skewY(0deg) scale(1); }
  10%  { transform: skewX(-8deg) skewY(-3deg) scale(1.05); }
  20%  { transform: skewX(6deg) skewY(2deg) scale(0.95); }
  30%  { transform: skewX(-5deg) skewY(-2deg) scale(1.08); }
  40%  { transform: skewX(4deg) skewY(1deg) scale(0.97); }
  50%  { transform: skewX(-3deg) skewY(-1deg) scale(1.04); }
  60%  { transform: skewX(2deg) skewY(1deg) scale(0.98); }
  70%  { transform: skewX(-1deg) skewY(0deg) scale(1.02); }
  80%  { transform: skewX(1deg) skewY(0deg) scale(0.99); }
  100% { transform: skewX(0deg) skewY(0deg) scale(1); }
}

/* 8. Rocket — blast off and return */
.poop.dance-rocket { animation: rocketLaunch 1.4s cubic-bezier(0.6, 0, 0.4, 1); }
@keyframes rocketLaunch {
  0%   { transform: translateY(0) scale(1) rotate(0deg); }
  10%  { transform: translateY(15px) scale(1.2, 0.7) rotate(0deg); }
  30%  { transform: translateY(-200px) scale(0.7, 1.4) rotate(5deg); filter: drop-shadow(0 30px 30px rgba(255, 100, 0, 0.5)); }
  45%  { transform: translateY(-300px) scale(0.5) rotate(10deg); opacity: 0.3; }
  55%  { transform: translateY(-300px) scale(0.5) rotate(-10deg); opacity: 0.3; }
  70%  { transform: translateY(-100px) scale(1.1) rotate(-5deg); opacity: 1; }
  85%  { transform: translateY(20px) scale(1.15, 0.85) rotate(0deg); }
  100% { transform: translateY(0) scale(1) rotate(0deg); }
}

/* 9. Backflip — full backward rotation */
.poop.dance-backflip { animation: backflipDance 0.8s cubic-bezier(0.5, 0, 0.3, 1); }
@keyframes backflipDance {
  0%   { transform: translateY(0) rotateX(0deg) scale(1); }
  20%  { transform: translateY(10px) rotateX(0deg) scale(1.1, 0.9); }
  50%  { transform: translateY(-60px) rotateX(180deg) scale(0.9); }
  70%  { transform: translateY(-30px) rotateX(300deg) scale(1.05); }
  85%  { transform: translateY(5px) rotateX(350deg) scale(1.05, 0.95); }
  100% { transform: translateY(0) rotateX(360deg) scale(1); }
}

/* 10. Samba — hip-shaking lateral movement */
.poop.dance-samba { animation: sambaDance 1.4s ease-in-out; }
@keyframes sambaDance {
  0%   { transform: translateX(0) rotate(0deg) scaleY(1); }
  8%   { transform: translateX(15px) rotate(10deg) scaleY(0.92); }
  16%  { transform: translateX(-15px) rotate(-10deg) scaleY(0.92); }
  24%  { transform: translateX(25px) rotate(15deg) scaleY(0.88); }
  32%  { transform: translateX(-25px) rotate(-15deg) scaleY(0.88); }
  40%  { transform: translateX(20px) rotate(12deg) scaleY(0.9); }
  48%  { transform: translateX(-20px) rotate(-12deg) scaleY(0.9); }
  56%  { transform: translateX(30px) rotate(18deg) scaleY(0.85); }
  64%  { transform: translateX(-30px) rotate(-18deg) scaleY(0.85); }
  72%  { transform: translateX(15px) rotate(8deg) scaleY(0.93); }
  80%  { transform: translateX(-15px) rotate(-8deg) scaleY(0.93); }
  90%  { transform: translateX(5px) rotate(3deg) scaleY(0.97); }
  100% { transform: translateX(0) rotate(0deg) scaleY(1); }
}

/* 11. Melt — droopy melt and reform */
.poop.dance-melt { animation: meltDance 1.6s ease-in-out; }
@keyframes meltDance {
  0%   { transform: scaleX(1) scaleY(1) translateY(0); }
  25%  { transform: scaleX(1.4) scaleY(0.5) translateY(30px); filter: drop-shadow(0 0 20px rgba(180, 120, 60, 0.4)); }
  40%  { transform: scaleX(1.6) scaleY(0.3) translateY(45px); filter: drop-shadow(0 0 40px rgba(180, 120, 60, 0.5)); }
  55%  { transform: scaleX(1.3) scaleY(0.6) translateY(20px); }
  70%  { transform: scaleX(0.9) scaleY(1.2) translateY(-10px); }
  85%  { transform: scaleX(1.05) scaleY(0.95) translateY(3px); }
  100% { transform: scaleX(1) scaleY(1) translateY(0); }
}

/* 12. Tornado — spiraling vortex */
.poop.dance-tornado { animation: tornadoSpin 1s cubic-bezier(0.2, 0.8, 0.3, 1); }
@keyframes tornadoSpin {
  0%   { transform: rotate(0deg) scale(1) translateY(0); }
  15%  { transform: rotate(90deg) scale(0.8) translateY(-20px) translateX(15px); }
  30%  { transform: rotate(200deg) scale(0.6) translateY(-50px) translateX(-10px); }
  45%  { transform: rotate(360deg) scale(0.4) translateY(-80px); }
  60%  { transform: rotate(540deg) scale(0.6) translateY(-50px) translateX(10px); }
  75%  { transform: rotate(660deg) scale(0.85) translateY(-20px) translateX(-15px); }
  90%  { transform: rotate(710deg) scale(1.1) translateY(5px); }
  100% { transform: rotate(720deg) scale(1) translateY(0); }
}

/* 13. Heartbeat — pulsing throb */
.poop.dance-heartbeat { animation: heartbeatDance 1s ease-in-out; }
@keyframes heartbeatDance {
  0%   { transform: scale(1); }
  8%   { transform: scale(1.25); }
  15%  { transform: scale(1); }
  22%  { transform: scale(1.35); filter: drop-shadow(0 0 40px rgba(255, 80, 80, 0.4)); }
  30%  { transform: scale(1); }
  50%  { transform: scale(1); }
  58%  { transform: scale(1.25); }
  65%  { transform: scale(1); }
  72%  { transform: scale(1.35); filter: drop-shadow(0 0 40px rgba(255, 80, 80, 0.4)); }
  80%  { transform: scale(1); }
  100% { transform: scale(1); }
}

/* 14. Moonwalk — sliding backward with style */
.poop.dance-moonwalk { animation: moonwalkDance 1.6s ease-in-out; }
@keyframes moonwalkDance {
  0%   { transform: translateX(0) scaleX(1) rotate(0deg); }
  10%  { transform: translateX(10px) scaleX(1) rotate(3deg) scaleY(0.95); }
  25%  { transform: translateX(-30px) scaleX(-1) rotate(-3deg) scaleY(0.95); }
  40%  { transform: translateX(-60px) scaleX(-1) rotate(2deg) scaleY(0.93); }
  55%  { transform: translateX(-90px) scaleX(-1) rotate(-2deg) scaleY(0.95); }
  70%  { transform: translateX(-50px) scaleX(1) rotate(0deg); }
  85%  { transform: translateX(-15px) scaleX(1) rotate(1deg); }
  100% { transform: translateX(0) scaleX(1) rotate(0deg) scaleY(1); }
}

/* 15. Pendulum — swinging like a clock */
.poop.dance-pendulum { transform-origin: center top; animation: pendulumSwing 1.4s ease-in-out; }
@keyframes pendulumSwing {
  0%   { transform: rotate(0deg); }
  10%  { transform: rotate(25deg); }
  20%  { transform: rotate(-20deg); }
  30%  { transform: rotate(18deg); }
  40%  { transform: rotate(-15deg); }
  50%  { transform: rotate(12deg); }
  60%  { transform: rotate(-10deg); }
  70%  { transform: rotate(7deg); }
  80%  { transform: rotate(-4deg); }
  90%  { transform: rotate(2deg); }
  100% { transform: rotate(0deg); }
}

/* 16. Glitch — digital artifact */
.poop.dance-glitch { animation: glitchDance 0.8s steps(1); }
@keyframes glitchDance {
  0%   { transform: translate(0, 0) skewX(0deg); filter: none; }
  8%   { transform: translate(-5px, 2px) skewX(5deg); filter: hue-rotate(90deg); }
  12%  { transform: translate(3px, -3px) skewX(-3deg); filter: hue-rotate(180deg) saturate(2); }
  16%  { transform: translate(0, 0) skewX(0deg); filter: none; }
  28%  { transform: translate(4px, 1px) skewX(-8deg); filter: hue-rotate(270deg); }
  32%  { transform: translate(-3px, -2px) skewX(6deg); filter: hue-rotate(45deg) brightness(1.5); }
  36%  { transform: translate(0, 0) skewX(0deg); filter: none; }
  52%  { transform: translate(-6px, 3px) skewX(10deg); filter: hue-rotate(180deg) saturate(3); }
  56%  { transform: translate(5px, -1px) skewX(-5deg); filter: hue-rotate(90deg); }
  60%  { transform: translate(0, 0) skewX(0deg); filter: none; }
  76%  { transform: translate(2px, -4px) skewX(-4deg); filter: hue-rotate(315deg) contrast(1.5); }
  80%  { transform: translate(-2px, 1px) skewX(2deg); filter: hue-rotate(135deg); }
  84%  { transform: translate(0, 0) skewX(0deg); filter: none; }
  100% { transform: translate(0, 0) skewX(0deg); filter: none; }
}

/* 17. Rubber — stretchy rubber band */
.poop.dance-rubber { animation: rubberDance 0.8s cubic-bezier(0.5, 1.8, 0.5, 0.7); }
@keyframes rubberDance {
  0%   { transform: scaleX(1) scaleY(1); }
  20%  { transform: scaleX(1.4) scaleY(0.6); }
  40%  { transform: scaleX(0.7) scaleY(1.4); }
  50%  { transform: scaleX(1.25) scaleY(0.75); }
  60%  { transform: scaleX(0.85) scaleY(1.15); }
  70%  { transform: scaleX(1.1) scaleY(0.9); }
  80%  { transform: scaleX(0.95) scaleY(1.05); }
  100% { transform: scaleX(1) scaleY(1); }
}

/* 18. Peek — shy peek from side */
.poop.dance-peek { animation: peekDance 1.2s ease-in-out; }
@keyframes peekDance {
  0%   { transform: translateX(0) rotate(0deg) scale(1); }
  15%  { transform: translateX(-80px) rotate(-15deg) scale(0.8); opacity: 0.4; }
  25%  { transform: translateX(-60px) rotate(-10deg) scale(0.85); opacity: 0.7; }
  35%  { transform: translateX(-80px) rotate(-15deg) scale(0.8); opacity: 0.4; }
  50%  { transform: translateX(-120px) rotate(-20deg) scale(0.6); opacity: 0; }
  55%  { transform: translateX(120px) rotate(20deg) scale(0.6); opacity: 0; }
  65%  { transform: translateX(80px) rotate(10deg) scale(0.85); opacity: 0.7; }
  80%  { transform: translateX(20px) rotate(3deg) scale(1.05); opacity: 1; }
  90%  { transform: translateX(-5px) rotate(-1deg) scale(1.02); }
  100% { transform: translateX(0) rotate(0deg) scale(1); }
}

/* 19. Twist — twist and shout */
.poop.dance-twist { animation: twistDance 1s ease-in-out; }
@keyframes twistDance {
  0%   { transform: rotateY(0deg) scale(1); }
  15%  { transform: rotateY(60deg) scale(0.85); }
  30%  { transform: rotateY(-45deg) scale(0.9); }
  45%  { transform: rotateY(90deg) scale(0.7); }
  55%  { transform: rotateY(-90deg) scale(0.7); }
  70%  { transform: rotateY(30deg) scale(0.9); }
  85%  { transform: rotateY(-15deg) scale(0.95); }
  100% { transform: rotateY(0deg) scale(1); }
}

/* 20. Slam — ground pound */
.poop.dance-slam { animation: slamDance 0.7s cubic-bezier(0.6, 0, 0.4, 1); }
@keyframes slamDance {
  0%   { transform: translateY(0) scale(1) rotate(0deg); }
  20%  { transform: translateY(-80px) scale(0.9) rotate(-5deg); }
  40%  { transform: translateY(-90px) scale(0.85) rotate(3deg); }
  55%  { transform: translateY(15px) scale(1.4, 0.6) rotate(0deg); filter: drop-shadow(0 0 60px rgba(255, 200, 60, 0.6)); }
  65%  { transform: translateY(0) scale(0.9, 1.15) rotate(0deg); }
  80%  { transform: translateY(-10px) scale(1.05, 0.95) rotate(0deg); }
  100% { transform: translateY(0) scale(1) rotate(0deg); }
}

/* 21. Zigzag — erratic path */
.poop.dance-zigzag { animation: zigzagDance 1.2s ease-in-out; }
@keyframes zigzagDance {
  0%   { transform: translate(0, 0) rotate(0deg); }
  12%  { transform: translate(30px, -20px) rotate(10deg); }
  25%  { transform: translate(-25px, -50px) rotate(-15deg); }
  37%  { transform: translate(35px, -30px) rotate(12deg); }
  50%  { transform: translate(-30px, -60px) rotate(-10deg); }
  62%  { transform: translate(20px, -40px) rotate(8deg); }
  75%  { transform: translate(-15px, -15px) rotate(-5deg); }
  87%  { transform: translate(8px, -5px) rotate(2deg); }
  100% { transform: translate(0, 0) rotate(0deg); }
}

/* 22. Inflate — balloon up then deflate */
.poop.dance-inflate { animation: inflateDance 1.4s ease-in-out; }
@keyframes inflateDance {
  0%   { transform: scale(1); filter: drop-shadow(0 0 10px rgba(180, 120, 60, 0.2)); }
  15%  { transform: scale(1.1); }
  30%  { transform: scale(1.25); filter: drop-shadow(0 0 30px rgba(180, 120, 60, 0.3)); }
  45%  { transform: scale(1.5); filter: drop-shadow(0 0 50px rgba(180, 120, 60, 0.4)); }
  55%  { transform: scale(1.8); filter: drop-shadow(0 0 70px rgba(255, 160, 60, 0.5)); }
  62%  { transform: scale(2.0); filter: drop-shadow(0 0 90px rgba(255, 140, 40, 0.6)); }
  68%  { transform: scale(0.6); }
  75%  { transform: scale(1.15); }
  85%  { transform: scale(0.92); }
  100% { transform: scale(1); filter: drop-shadow(0 0 10px rgba(180, 120, 60, 0.2)); }
}

/* 23. Breakdance — head-spin style rotation */
.poop.dance-breakdance { transform-origin: center bottom; animation: breakdanceSpin 1.4s cubic-bezier(0.4, 0, 0.2, 1); }
@keyframes breakdanceSpin {
  0%   { transform: rotate(0deg) translateY(0) scaleY(1); }
  10%  { transform: rotate(0deg) translateY(10px) scaleY(0.7) scaleX(1.2); }
  25%  { transform: rotate(180deg) translateY(-20px) scaleY(0.5) scaleX(1.4); }
  40%  { transform: rotate(360deg) translateY(10px) scaleY(0.7) scaleX(1.2); }
  55%  { transform: rotate(540deg) translateY(-20px) scaleY(0.5) scaleX(1.4); }
  70%  { transform: rotate(720deg) translateY(10px) scaleY(0.7) scaleX(1.2); }
  82%  { transform: rotate(900deg) translateY(-10px) scaleY(0.85); }
  91%  { transform: rotate(1030deg) translateY(5px) scaleY(1.05); }
  100% { transform: rotate(1080deg) translateY(0) scaleY(1) scaleX(1); }
}

/* 24. Wave — rippling wave motion */
.poop.dance-wave { animation: waveDance 1.2s ease-in-out; }
@keyframes waveDance {
  0%   { transform: translateY(0) rotate(0deg) scaleX(1); }
  10%  { transform: translateY(-15px) rotate(5deg) scaleX(1.1); }
  20%  { transform: translateY(10px) rotate(-3deg) scaleX(0.9); }
  30%  { transform: translateY(-25px) rotate(8deg) scaleX(1.15); }
  40%  { transform: translateY(15px) rotate(-6deg) scaleX(0.88); }
  50%  { transform: translateY(-30px) rotate(10deg) scaleX(1.2); }
  60%  { transform: translateY(10px) rotate(-5deg) scaleX(0.92); }
  70%  { transform: translateY(-15px) rotate(5deg) scaleX(1.08); }
  80%  { transform: translateY(5px) rotate(-2deg) scaleX(0.95); }
  90%  { transform: translateY(-5px) rotate(1deg) scaleX(1.03); }
  100% { transform: translateY(0) rotate(0deg) scaleX(1); }
}

/* 25. Freeze — sudden stop with vibration */
.poop.dance-freeze { animation: freezeDance 1s steps(2, end); }
@keyframes freezeDance {
  0%   { transform: translate(0, 0) scale(1); filter: none; }
  5%   { transform: translate(0, -40px) scale(1.1); }
  10%  { transform: translate(0, -40px) scale(1.1); filter: brightness(1.5) drop-shadow(0 0 30px rgba(100, 200, 255, 0.5)); }
  15%  { transform: translate(1px, -40px) scale(1.1); }
  20%  { transform: translate(-1px, -40px) scale(1.1); }
  25%  { transform: translate(1px, -40px) scale(1.1); }
  30%  { transform: translate(-1px, -40px) scale(1.1); }
  60%  { transform: translate(1px, -40px) scale(1.1); filter: brightness(1.5) drop-shadow(0 0 30px rgba(100, 200, 255, 0.5)); }
  65%  { transform: translate(-1px, -40px) scale(1.1); }
  75%  { transform: translate(0, -20px) scale(1.05); filter: brightness(1.2); }
  90%  { transform: translate(0, 5px) scale(0.98); filter: none; }
  100% { transform: translate(0, 0) scale(1); filter: none; }
}

/* 26. Orbit — circular orbit path */
.poop.dance-orbit { animation: orbitDance 1.4s cubic-bezier(0.4, 0, 0.2, 1); }
@keyframes orbitDance {
  0%   { transform: translate(0, 0) rotate(0deg) scale(1); }
  12%  { transform: translate(40px, -30px) rotate(30deg) scale(0.9); }
  25%  { transform: translate(50px, 0px) rotate(60deg) scale(0.8); }
  37%  { transform: translate(40px, 30px) rotate(90deg) scale(0.85); }
  50%  { transform: translate(0, 40px) rotate(180deg) scale(0.9); }
  62%  { transform: translate(-40px, 30px) rotate(240deg) scale(0.85); }
  75%  { transform: translate(-50px, 0px) rotate(300deg) scale(0.8); }
  87%  { transform: translate(-25px, -20px) rotate(340deg) scale(0.9); }
  100% { transform: translate(0, 0) rotate(360deg) scale(1); }
}

/* 27. Flicker — strobe/fade effect */
.poop.dance-flicker { animation: flickerDance 0.9s ease-in-out; }
@keyframes flickerDance {
  0%   { opacity: 1; transform: scale(1); }
  8%   { opacity: 0.1; transform: scale(1.1); }
  12%  { opacity: 1; transform: scale(1); }
  20%  { opacity: 0.2; transform: scale(0.95); }
  24%  { opacity: 1; transform: scale(1.05); }
  35%  { opacity: 0.05; transform: scale(1.15); filter: drop-shadow(0 0 60px rgba(255, 200, 100, 0.8)); }
  40%  { opacity: 1; transform: scale(1); }
  55%  { opacity: 0.15; transform: scale(0.9); }
  60%  { opacity: 1; transform: scale(1.1); }
  72%  { opacity: 0.3; transform: scale(1); }
  78%  { opacity: 1; transform: scale(1); }
  88%  { opacity: 0.5; transform: scale(1.03); }
  100% { opacity: 1; transform: scale(1); filter: none; }
}

/* 28. Sumo — wide squat stomp */
.poop.dance-sumo { transform-origin: center bottom; animation: sumoDance 1.2s cubic-bezier(0.4, 0, 0.2, 1); }
@keyframes sumoDance {
  0%   { transform: scaleX(1) scaleY(1) translateY(0); }
  12%  { transform: scaleX(1.3) scaleY(0.7) translateY(15px); }
  20%  { transform: scaleX(1) scaleY(1.1) translateY(-20px); }
  30%  { transform: scaleX(1.5) scaleY(0.55) translateY(20px); filter: drop-shadow(0 0 40px rgba(255, 180, 60, 0.4)); }
  42%  { transform: scaleX(1) scaleY(1.15) translateY(-30px); }
  55%  { transform: scaleX(1.6) scaleY(0.45) translateY(25px); filter: drop-shadow(0 0 60px rgba(255, 160, 40, 0.6)); }
  68%  { transform: scaleX(0.9) scaleY(1.2) translateY(-15px); }
  80%  { transform: scaleX(1.15) scaleY(0.85) translateY(5px); }
  90%  { transform: scaleX(0.97) scaleY(1.03) translateY(-3px); }
  100% { transform: scaleX(1) scaleY(1) translateY(0); }
}

/* 29. Yoyo — vertical string bounce */
.poop.dance-yoyo { animation: yoyoDance 1.4s cubic-bezier(0.3, 0, 0.7, 1); }
@keyframes yoyoDance {
  0%   { transform: translateY(0) scale(1) rotate(0deg); }
  15%  { transform: translateY(80px) scale(0.85) rotate(180deg); }
  25%  { transform: translateY(100px) scale(0.8, 1.15) rotate(180deg); }
  35%  { transform: translateY(20px) scale(1.05) rotate(360deg); }
  45%  { transform: translateY(90px) scale(0.85) rotate(540deg); }
  55%  { transform: translateY(100px) scale(0.8, 1.1) rotate(540deg); }
  65%  { transform: translateY(10px) scale(1.05) rotate(720deg); }
  75%  { transform: translateY(50px) scale(0.9) rotate(810deg); }
  85%  { transform: translateY(5px) scale(1.02) rotate(900deg); }
  100% { transform: translateY(0) scale(1) rotate(1080deg); }
}

/* 30. Portal — shrink into void and pop back */
.poop.dance-portal { animation: portalDance 1.6s cubic-bezier(0.4, 0, 0.2, 1); }
@keyframes portalDance {
  0%   { transform: scale(1) rotate(0deg); filter: none; }
  15%  { transform: scale(0.8) rotate(45deg); filter: hue-rotate(60deg); }
  30%  { transform: scale(0.4) rotate(180deg); filter: hue-rotate(120deg) brightness(1.5); }
  40%  { transform: scale(0.05) rotate(360deg); filter: hue-rotate(180deg) brightness(2); }
  45%  { transform: scale(0) rotate(360deg); opacity: 0; }
  55%  { transform: scale(0) rotate(360deg); opacity: 0; }
  60%  { transform: scale(0.1) rotate(360deg); opacity: 1; filter: hue-rotate(270deg) brightness(2); }
  70%  { transform: scale(0.5) rotate(300deg); filter: hue-rotate(180deg) brightness(1.5); }
  80%  { transform: scale(1.2) rotate(350deg); filter: hue-rotate(60deg); }
  90%  { transform: scale(0.95) rotate(358deg); filter: hue-rotate(20deg); }
  100% { transform: scale(1) rotate(360deg); filter: none; }
}

/* ==========================================================================
   Dances 31–55 — 25 additional unique animations
   ========================================================================== */

/* 31. Tsunami — crash forward then recede */
.poop.dance-tsunami { animation: tsunamiDance 1.2s ease-in-out; }
@keyframes tsunamiDance {
  0%   { transform: translateX(0) translateY(0) rotate(0deg) scaleY(1); }
  15%  { transform: translateX(-20px) translateY(-30px) rotate(-15deg) scaleY(1.2); }
  30%  { transform: translateX(60px) translateY(20px) rotate(20deg) scaleY(0.7) scaleX(1.3); }
  45%  { transform: translateX(40px) translateY(25px) rotate(10deg) scaleY(0.6) scaleX(1.4); }
  60%  { transform: translateX(-30px) translateY(-10px) rotate(-8deg) scaleY(1.1); }
  75%  { transform: translateX(15px) translateY(5px) rotate(4deg) scaleY(0.95); }
  88%  { transform: translateX(-5px) translateY(-2px) rotate(-1deg) scaleY(1.02); }
  100% { transform: translateX(0) translateY(0) rotate(0deg) scaleY(1) scaleX(1); }
}

/* 32. Trampoline — high vertical bounce with squash/stretch */
.poop.dance-trampoline { transform-origin: center bottom; animation: trampolineHigh 1s cubic-bezier(0.3, 0, 0.7, 1); }
@keyframes trampolineHigh {
  0%   { transform: translateY(0) scaleX(1) scaleY(1); }
  8%   { transform: translateY(15px) scaleX(1.3) scaleY(0.6); }
  25%  { transform: translateY(-150px) scaleX(0.75) scaleY(1.3); }
  40%  { transform: translateY(0) scaleX(1.2) scaleY(0.7); }
  48%  { transform: translateY(10px) scaleX(1.25) scaleY(0.65); }
  62%  { transform: translateY(-80px) scaleX(0.8) scaleY(1.2); }
  76%  { transform: translateY(0) scaleX(1.1) scaleY(0.85); }
  84%  { transform: translateY(-30px) scaleX(0.9) scaleY(1.1); }
  93%  { transform: translateY(0) scaleX(1.03) scaleY(0.97); }
  100% { transform: translateY(0) scaleX(1) scaleY(1); }
}

/* 33. Waltz — elegant circular glide */
.poop.dance-waltz { animation: waltzDance 2s cubic-bezier(0.4, 0, 0.6, 1); }
@keyframes waltzDance {
  0%   { transform: translate(0, 0) rotate(0deg) scale(1); }
  12%  { transform: translate(30px, -20px) rotate(10deg) scale(1.05); }
  25%  { transform: translate(40px, 10px) rotate(-5deg) scale(1.08); }
  37%  { transform: translate(10px, 30px) rotate(-15deg) scale(1.05); }
  50%  { transform: translate(-30px, 15px) rotate(5deg) scale(1.1); }
  62%  { transform: translate(-40px, -10px) rotate(15deg) scale(1.05); }
  75%  { transform: translate(-15px, -30px) rotate(-8deg) scale(1.08); }
  87%  { transform: translate(10px, -10px) rotate(3deg) scale(1.02); }
  100% { transform: translate(0, 0) rotate(0deg) scale(1); }
}

/* 34. Earthquake — violent multi-axis shaking */
.poop.dance-earthquake { animation: earthquakeDance 0.9s ease-in-out; }
@keyframes earthquakeDance {
  0%   { transform: translate(0, 0) rotate(0deg) scale(1); }
  5%   { transform: translate(-8px, 3px) rotate(-3deg) scale(1.02); }
  10%  { transform: translate(6px, -5px) rotate(4deg) scale(0.98); }
  15%  { transform: translate(-10px, -2px) rotate(-5deg) scale(1.04); }
  20%  { transform: translate(12px, 4px) rotate(6deg) scale(0.96); }
  25%  { transform: translate(-14px, -6px) rotate(-7deg) scale(1.06); }
  30%  { transform: translate(15px, 3px) rotate(8deg) scale(0.94); }
  35%  { transform: translate(-12px, 7px) rotate(-6deg) scale(1.08); }
  40%  { transform: translate(10px, -8px) rotate(5deg) scale(0.95); }
  50%  { transform: translate(-8px, 5px) rotate(-4deg) scale(1.04); }
  60%  { transform: translate(6px, -3px) rotate(3deg) scale(0.97); }
  70%  { transform: translate(-4px, 2px) rotate(-2deg) scale(1.02); }
  80%  { transform: translate(3px, -1px) rotate(1deg) scale(0.99); }
  90%  { transform: translate(-1px, 1px) rotate(-0.5deg) scale(1.01); }
  100% { transform: translate(0, 0) rotate(0deg) scale(1); }
}

/* 35. Levitate — float up serenely then descend */
.poop.dance-levitate { animation: levitateDance 2s cubic-bezier(0.4, 0, 0.6, 1); }
@keyframes levitateDance {
  0%   { transform: translateY(0) scale(1) rotate(0deg); filter: drop-shadow(0 0 10px rgba(180, 120, 60, 0.2)); }
  20%  { transform: translateY(-40px) scale(1.05) rotate(2deg); filter: drop-shadow(0 20px 30px rgba(0, 0, 0, 0.3)); }
  40%  { transform: translateY(-80px) scale(1.08) rotate(-1deg); filter: drop-shadow(0 40px 50px rgba(0, 0, 0, 0.2)); }
  55%  { transform: translateY(-90px) scale(1.1) rotate(1deg); filter: drop-shadow(0 50px 60px rgba(100, 80, 200, 0.3)); }
  70%  { transform: translateY(-60px) scale(1.06) rotate(-1deg); filter: drop-shadow(0 30px 40px rgba(0, 0, 0, 0.25)); }
  85%  { transform: translateY(-20px) scale(1.02) rotate(0.5deg); filter: drop-shadow(0 10px 20px rgba(0, 0, 0, 0.2)); }
  100% { transform: translateY(0) scale(1) rotate(0deg); filter: drop-shadow(0 0 10px rgba(180, 120, 60, 0.2)); }
}

/* 36. Pinball — bouncing off invisible walls */
.poop.dance-pinball { animation: pinballDance 1.4s linear; }
@keyframes pinballDance {
  0%   { transform: translate(0, 0) rotate(0deg) scale(1); }
  10%  { transform: translate(50px, -30px) rotate(25deg) scale(0.9); }
  20%  { transform: translate(-40px, -60px) rotate(-20deg) scale(0.92); }
  30%  { transform: translate(60px, -20px) rotate(30deg) scale(0.88); }
  40%  { transform: translate(-50px, -50px) rotate(-35deg) scale(0.9); }
  50%  { transform: translate(30px, -70px) rotate(20deg) scale(0.85); }
  60%  { transform: translate(-35px, -30px) rotate(-15deg) scale(0.9); }
  70%  { transform: translate(25px, -15px) rotate(10deg) scale(0.95); }
  80%  { transform: translate(-15px, -8px) rotate(-6deg) scale(0.97); }
  90%  { transform: translate(5px, -3px) rotate(2deg) scale(0.99); }
  100% { transform: translate(0, 0) rotate(0deg) scale(1); }
}

/* 37. Dreidel — spinning top with wobble */
.poop.dance-dreidel { animation: dreidelDance 1.6s cubic-bezier(0.4, 0, 0.2, 1); }
@keyframes dreidelDance {
  0%   { transform: rotateY(0deg) rotateZ(0deg) scale(1); }
  10%  { transform: rotateY(90deg) rotateZ(5deg) scale(0.95); }
  20%  { transform: rotateY(180deg) rotateZ(-5deg) scale(0.9); }
  30%  { transform: rotateY(360deg) rotateZ(8deg) scale(0.85); }
  45%  { transform: rotateY(540deg) rotateZ(-8deg) scale(0.88); }
  55%  { transform: rotateY(720deg) rotateZ(10deg) scale(0.85); }
  65%  { transform: rotateY(900deg) rotateZ(-6deg) scale(0.9); }
  75%  { transform: rotateY(1020deg) rotateZ(4deg) scale(0.93); }
  85%  { transform: rotateY(1060deg) rotateZ(-2deg) scale(0.97); }
  100% { transform: rotateY(1080deg) rotateZ(0deg) scale(1); }
}

/* 38. Catapult — flung up-right and snaps back */
.poop.dance-catapult { animation: catapultDance 1s cubic-bezier(0.2, 0, 0.8, 1); }
@keyframes catapultDance {
  0%   { transform: translate(0, 0) rotate(0deg) scale(1); }
  8%   { transform: translate(-15px, 10px) rotate(-10deg) scale(1.1, 0.9); }
  20%  { transform: translate(80px, -120px) rotate(30deg) scale(0.8); }
  35%  { transform: translate(120px, -160px) rotate(60deg) scale(0.7); }
  50%  { transform: translate(80px, -80px) rotate(45deg) scale(0.8); }
  65%  { transform: translate(30px, -20px) rotate(20deg) scale(0.9); }
  80%  { transform: translate(-10px, 10px) rotate(-5deg) scale(1.05); }
  90%  { transform: translate(5px, -3px) rotate(2deg) scale(0.98); }
  100% { transform: translate(0, 0) rotate(0deg) scale(1); }
}

/* 39. Hiccup — sudden jolts with pauses */
.poop.dance-hiccup { animation: hiccupDance 1.4s ease-out; }
@keyframes hiccupDance {
  0%   { transform: translateY(0) scale(1); }
  5%   { transform: translateY(-25px) scale(1.15, 0.85); }
  10%  { transform: translateY(0) scale(0.95, 1.05); }
  15%  { transform: translateY(0) scale(1); }
  30%  { transform: translateY(0) scale(1); }
  35%  { transform: translateY(-35px) scale(1.2, 0.8); }
  40%  { transform: translateY(0) scale(0.9, 1.1); }
  45%  { transform: translateY(0) scale(1); }
  65%  { transform: translateY(0) scale(1); }
  68%  { transform: translateY(-18px) scale(1.1, 0.9); }
  72%  { transform: translateY(0) scale(0.97, 1.03); }
  76%  { transform: translateY(0) scale(1); }
  90%  { transform: translateY(0) scale(1); }
  93%  { transform: translateY(-8px) scale(1.05, 0.95); }
  96%  { transform: translateY(0) scale(0.99, 1.01); }
  100% { transform: translateY(0) scale(1); }
}

/* 40. Slide — smooth glide side to side */
.poop.dance-slide { animation: slideDance 1.2s cubic-bezier(0.4, 0, 0.6, 1); }
@keyframes slideDance {
  0%   { transform: translateX(0) rotate(0deg) scaleY(1); }
  15%  { transform: translateX(80px) rotate(3deg) scaleY(0.95); }
  30%  { transform: translateX(80px) rotate(0deg) scaleY(0.92); }
  45%  { transform: translateX(-80px) rotate(-3deg) scaleY(0.95); }
  60%  { transform: translateX(-80px) rotate(0deg) scaleY(0.92); }
  75%  { transform: translateX(30px) rotate(1deg) scaleY(0.97); }
  88%  { transform: translateX(-10px) rotate(-0.5deg) scaleY(0.99); }
  100% { transform: translateX(0) rotate(0deg) scaleY(1); }
}

/* 41. Tumble — end over end falling forward */
.poop.dance-tumble { animation: tumbleDance 1.2s cubic-bezier(0.3, 0, 0.7, 1); }
@keyframes tumbleDance {
  0%   { transform: translate(0, 0) rotate(0deg) scale(1); }
  15%  { transform: translate(20px, -10px) rotate(90deg) scale(0.9); }
  30%  { transform: translate(50px, 15px) rotate(180deg) scale(0.85); }
  45%  { transform: translate(70px, -5px) rotate(270deg) scale(0.9); }
  60%  { transform: translate(50px, 10px) rotate(360deg) scale(0.85); }
  72%  { transform: translate(25px, -5px) rotate(540deg) scale(0.92); }
  84%  { transform: translate(10px, 3px) rotate(660deg) scale(0.97); }
  100% { transform: translate(0, 0) rotate(720deg) scale(1); }
}

/* 42. Boing — spring compression and release */
.poop.dance-boing { transform-origin: center bottom; animation: boingDance 0.8s cubic-bezier(0.2, 2, 0.5, 1); }
@keyframes boingDance {
  0%   { transform: scaleX(1) scaleY(1) translateY(0); }
  15%  { transform: scaleX(1.3) scaleY(0.5) translateY(20px); }
  30%  { transform: scaleX(0.7) scaleY(1.6) translateY(-60px); }
  45%  { transform: scaleX(1.15) scaleY(0.7) translateY(10px); }
  58%  { transform: scaleX(0.85) scaleY(1.25) translateY(-25px); }
  70%  { transform: scaleX(1.08) scaleY(0.85) translateY(5px); }
  82%  { transform: scaleX(0.95) scaleY(1.08) translateY(-8px); }
  92%  { transform: scaleX(1.02) scaleY(0.97) translateY(2px); }
  100% { transform: scaleX(1) scaleY(1) translateY(0); }
}

/* 43. Shimmy — rapid lateral vibration */
.poop.dance-shimmy { animation: shimmyDance 0.8s ease-in-out; }
@keyframes shimmyDance {
  0%   { transform: translateX(0) rotate(0deg); }
  6%   { transform: translateX(8px) rotate(2deg); }
  12%  { transform: translateX(-8px) rotate(-2deg); }
  18%  { transform: translateX(10px) rotate(3deg); }
  24%  { transform: translateX(-10px) rotate(-3deg); }
  30%  { transform: translateX(12px) rotate(4deg); }
  36%  { transform: translateX(-12px) rotate(-4deg); }
  42%  { transform: translateX(14px) rotate(5deg); }
  48%  { transform: translateX(-14px) rotate(-5deg); }
  54%  { transform: translateX(12px) rotate(4deg); }
  60%  { transform: translateX(-10px) rotate(-3deg); }
  68%  { transform: translateX(7px) rotate(2deg); }
  76%  { transform: translateX(-5px) rotate(-1.5deg); }
  84%  { transform: translateX(3px) rotate(1deg); }
  92%  { transform: translateX(-1px) rotate(-0.3deg); }
  100% { transform: translateX(0) rotate(0deg); }
}

/* 44. Dive — nosedive and pull up */
.poop.dance-dive { animation: diveDance 1.2s cubic-bezier(0.4, 0, 0.6, 1); }
@keyframes diveDance {
  0%   { transform: translate(0, 0) rotate(0deg) scale(1); }
  15%  { transform: translate(0, -50px) rotate(-10deg) scale(0.95); }
  35%  { transform: translate(30px, 80px) rotate(30deg) scale(0.85); }
  45%  { transform: translate(40px, 100px) rotate(45deg) scale(0.8); }
  60%  { transform: translate(20px, 40px) rotate(20deg) scale(0.9); }
  75%  { transform: translate(-10px, -10px) rotate(-5deg) scale(1.05); }
  88%  { transform: translate(3px, 3px) rotate(2deg) scale(0.98); }
  100% { transform: translate(0, 0) rotate(0deg) scale(1); }
}

/* 45. Tipsy — drunk wobbling */
.poop.dance-tipsy { animation: tipsyDance 1.8s ease-in-out; }
@keyframes tipsyDance {
  0%   { transform: translate(0, 0) rotate(0deg) scale(1); }
  10%  { transform: translate(15px, 5px) rotate(8deg) scale(1.02); }
  20%  { transform: translate(-10px, -3px) rotate(-12deg) scale(0.98); }
  30%  { transform: translate(25px, 8px) rotate(15deg) scale(1.03); }
  40%  { transform: translate(-20px, -5px) rotate(-10deg) scale(0.97); }
  50%  { transform: translate(10px, 10px) rotate(18deg) scale(1.05); }
  60%  { transform: translate(-25px, 3px) rotate(-15deg) scale(0.98); }
  70%  { transform: translate(12px, -5px) rotate(8deg) scale(1.02); }
  80%  { transform: translate(-8px, 2px) rotate(-5deg) scale(0.99); }
  90%  { transform: translate(3px, -1px) rotate(2deg) scale(1.01); }
  100% { transform: translate(0, 0) rotate(0deg) scale(1); }
}

/* 46. Ripple — concentric distortion effect */
.poop.dance-ripple { animation: rippleDance 1s ease-in-out; }
@keyframes rippleDance {
  0%   { transform: scale(1) skewX(0deg) skewY(0deg); }
  10%  { transform: scale(1.1, 0.9) skewX(5deg) skewY(-3deg); }
  20%  { transform: scale(0.9, 1.1) skewX(-5deg) skewY(3deg); }
  30%  { transform: scale(1.12, 0.88) skewX(8deg) skewY(-5deg); }
  40%  { transform: scale(0.88, 1.12) skewX(-8deg) skewY(5deg); }
  50%  { transform: scale(1.08, 0.92) skewX(4deg) skewY(-2deg); }
  60%  { transform: scale(0.92, 1.08) skewX(-4deg) skewY(2deg); }
  70%  { transform: scale(1.05, 0.95) skewX(2deg) skewY(-1deg); }
  80%  { transform: scale(0.97, 1.03) skewX(-1deg) skewY(0.5deg); }
  90%  { transform: scale(1.02, 0.98) skewX(0.5deg) skewY(-0.3deg); }
  100% { transform: scale(1) skewX(0deg) skewY(0deg); }
}

/* 47. Cancan — high kick dance */
.poop.dance-cancan { transform-origin: center bottom; animation: cancanDance 1.4s ease-in-out; }
@keyframes cancanDance {
  0%   { transform: translateY(0) rotate(0deg) scaleY(1); }
  8%   { transform: translateY(5px) rotate(0deg) scaleY(0.85) scaleX(1.1); }
  16%  { transform: translateY(-60px) rotate(15deg) scaleY(1.2); }
  24%  { transform: translateY(5px) rotate(0deg) scaleY(0.85) scaleX(1.1); }
  32%  { transform: translateY(-60px) rotate(-15deg) scaleY(1.2); }
  40%  { transform: translateY(5px) rotate(0deg) scaleY(0.85) scaleX(1.1); }
  50%  { transform: translateY(-80px) rotate(20deg) scaleY(1.3); }
  60%  { transform: translateY(5px) rotate(0deg) scaleY(0.8) scaleX(1.15); }
  70%  { transform: translateY(-80px) rotate(-20deg) scaleY(1.3); }
  80%  { transform: translateY(5px) rotate(0deg) scaleY(0.9) scaleX(1.05); }
  90%  { transform: translateY(-20px) rotate(0deg) scaleY(1.05); }
  100% { transform: translateY(0) rotate(0deg) scaleY(1) scaleX(1); }
}

/* 48. Rewind — move forward then play in reverse */
.poop.dance-rewind { animation: rewindDance 1.4s ease-in-out; }
@keyframes rewindDance {
  0%   { transform: translateX(0) rotate(0deg) scale(1); }
  10%  { transform: translateX(30px) rotate(10deg) scale(1.1); }
  20%  { transform: translateX(60px) rotate(20deg) scale(1.15); }
  30%  { transform: translateX(80px) rotate(25deg) scale(1.2); }
  40%  { transform: translateX(80px) rotate(25deg) scale(1.2); }
  50%  { transform: translateX(80px) rotate(25deg) scale(1.2); filter: hue-rotate(180deg); }
  60%  { transform: translateX(60px) rotate(20deg) scale(1.15); filter: hue-rotate(120deg); }
  70%  { transform: translateX(30px) rotate(10deg) scale(1.1); filter: hue-rotate(60deg); }
  80%  { transform: translateX(10px) rotate(3deg) scale(1.03); filter: hue-rotate(20deg); }
  100% { transform: translateX(0) rotate(0deg) scale(1); filter: none; }
}

/* 49. Blender — chaotic multi-axis spin */
.poop.dance-blender { animation: blenderDance 1s cubic-bezier(0.4, 0, 0.2, 1); }
@keyframes blenderDance {
  0%   { transform: rotate(0deg) rotateX(0deg) rotateY(0deg) scale(1); }
  12%  { transform: rotate(90deg) rotateX(45deg) rotateY(30deg) scale(0.85); }
  25%  { transform: rotate(180deg) rotateX(90deg) rotateY(-45deg) scale(0.8); }
  37%  { transform: rotate(270deg) rotateX(135deg) rotateY(60deg) scale(0.75); }
  50%  { transform: rotate(360deg) rotateX(180deg) rotateY(-90deg) scale(0.7); }
  62%  { transform: rotate(450deg) rotateX(225deg) rotateY(45deg) scale(0.8); }
  75%  { transform: rotate(540deg) rotateX(300deg) rotateY(-30deg) scale(0.85); }
  87%  { transform: rotate(660deg) rotateX(340deg) rotateY(10deg) scale(0.95); }
  100% { transform: rotate(720deg) rotateX(360deg) rotateY(0deg) scale(1); }
}

/* 50. Shrink — shrink tiny then pop back */
.poop.dance-shrink { animation: shrinkDance 1.2s cubic-bezier(0.4, 0, 0.6, 1); }
@keyframes shrinkDance {
  0%   { transform: scale(1) rotate(0deg); }
  20%  { transform: scale(0.6) rotate(10deg); }
  35%  { transform: scale(0.25) rotate(-15deg); }
  45%  { transform: scale(0.1) rotate(20deg); }
  55%  { transform: scale(0.1) rotate(-10deg); }
  65%  { transform: scale(0.5) rotate(5deg); }
  75%  { transform: scale(1.2) rotate(-3deg); }
  85%  { transform: scale(0.9) rotate(1deg); }
  93%  { transform: scale(1.05) rotate(-0.5deg); }
  100% { transform: scale(1) rotate(0deg); }
}

/* 51. Float — dreamy floating with gentle rotation */
.poop.dance-float { animation: floatDance 2.2s cubic-bezier(0.4, 0, 0.6, 1); }
@keyframes floatDance {
  0%   { transform: translate(0, 0) rotate(0deg) scale(1); }
  15%  { transform: translate(10px, -40px) rotate(5deg) scale(1.03); }
  30%  { transform: translate(-15px, -70px) rotate(-3deg) scale(1.05); }
  45%  { transform: translate(20px, -90px) rotate(4deg) scale(1.07); }
  55%  { transform: translate(5px, -85px) rotate(-2deg) scale(1.06); }
  65%  { transform: translate(-10px, -60px) rotate(3deg) scale(1.04); }
  78%  { transform: translate(8px, -30px) rotate(-2deg) scale(1.02); }
  90%  { transform: translate(-3px, -10px) rotate(1deg) scale(1.01); }
  100% { transform: translate(0, 0) rotate(0deg) scale(1); }
}

/* 52. Ricochet — angular bouncing off edges */
.poop.dance-ricochet { animation: ricochetDance 1.2s linear; }
@keyframes ricochetDance {
  0%   { transform: translate(0, 0) scale(1); }
  12%  { transform: translate(60px, 40px) scale(0.9); }
  24%  { transform: translate(-50px, 30px) scale(0.88); }
  36%  { transform: translate(40px, -50px) scale(0.92); }
  48%  { transform: translate(-60px, -30px) scale(0.87); }
  60%  { transform: translate(30px, 40px) scale(0.9); }
  72%  { transform: translate(-20px, -20px) scale(0.94); }
  82%  { transform: translate(12px, 10px) scale(0.97); }
  92%  { transform: translate(-4px, -4px) scale(0.99); }
  100% { transform: translate(0, 0) scale(1); }
}

/* 53. Metronome — rigid pendulum tick-tock */
.poop.dance-metronome { transform-origin: center bottom; animation: metronomeDance 1.2s ease-in-out; }
@keyframes metronomeDance {
  0%   { transform: rotate(0deg); }
  10%  { transform: rotate(30deg); }
  20%  { transform: rotate(30deg); }
  30%  { transform: rotate(-25deg); }
  40%  { transform: rotate(-25deg); }
  50%  { transform: rotate(20deg); }
  60%  { transform: rotate(20deg); }
  70%  { transform: rotate(-15deg); }
  78%  { transform: rotate(-15deg); }
  85%  { transform: rotate(8deg); }
  92%  { transform: rotate(-3deg); }
  100% { transform: rotate(0deg); }
}

/* 54. Supernova — expand with glow then collapse */
.poop.dance-supernova { animation: supernovaDance 1.4s cubic-bezier(0.4, 0, 0.2, 1); }
@keyframes supernovaDance {
  0%   { transform: scale(1) rotate(0deg); filter: drop-shadow(0 0 10px rgba(180, 120, 60, 0.2)); }
  15%  { transform: scale(1.15) rotate(10deg); filter: drop-shadow(0 0 30px rgba(255, 200, 100, 0.4)); }
  30%  { transform: scale(1.4) rotate(-5deg); filter: drop-shadow(0 0 60px rgba(255, 160, 60, 0.6)); }
  40%  { transform: scale(1.8) rotate(15deg); filter: drop-shadow(0 0 100px rgba(255, 120, 40, 0.8)) brightness(1.5); }
  48%  { transform: scale(2.2) rotate(-10deg); filter: drop-shadow(0 0 120px rgba(255, 80, 20, 0.9)) brightness(2); }
  55%  { transform: scale(0.4) rotate(180deg); filter: drop-shadow(0 0 40px rgba(100, 50, 200, 0.5)); }
  65%  { transform: scale(0.6) rotate(270deg); filter: drop-shadow(0 0 30px rgba(150, 80, 200, 0.4)); }
  75%  { transform: scale(1.15) rotate(340deg); filter: drop-shadow(0 0 20px rgba(180, 120, 60, 0.3)); }
  87%  { transform: scale(0.95) rotate(355deg); filter: drop-shadow(0 0 12px rgba(180, 120, 60, 0.2)); }
  100% { transform: scale(1) rotate(360deg); filter: drop-shadow(0 0 10px rgba(180, 120, 60, 0.2)); }
}

/* 55. Puppet — jerky marionette movements */
.poop.dance-puppet { animation: puppetDance 1.6s steps(3, end); }
@keyframes puppetDance {
  0%   { transform: translate(0, 0) rotate(0deg) scale(1); }
  8%   { transform: translate(0, -30px) rotate(0deg) scale(1); }
  12%  { transform: translate(0, -25px) rotate(12deg) scale(1.05); }
  18%  { transform: translate(0, -35px) rotate(-8deg) scale(0.95); }
  25%  { transform: translate(20px, 0px) rotate(15deg) scale(1.08); }
  32%  { transform: translate(20px, -40px) rotate(5deg) scale(0.92); }
  38%  { transform: translate(-15px, -20px) rotate(-12deg) scale(1.05); }
  45%  { transform: translate(-15px, 5px) rotate(-15deg) scale(1.1); }
  52%  { transform: translate(10px, -45px) rotate(10deg) scale(0.9); }
  60%  { transform: translate(10px, -15px) rotate(18deg) scale(1.05); }
  68%  { transform: translate(-10px, -30px) rotate(-5deg) scale(0.95); }
  76%  { transform: translate(5px, -10px) rotate(3deg) scale(1.02); }
  84%  { transform: translate(-3px, -5px) rotate(-2deg) scale(0.99); }
  92%  { transform: translate(1px, -2px) rotate(1deg) scale(1.01); }
  100% { transform: translate(0, 0) rotate(0deg) scale(1); }
}

/* 56. Corkscrew — spiraling descent and ascent */
.poop.dance-corkscrew { animation: corkscrewDance 1.4s cubic-bezier(0.3, 0, 0.7, 1); }
@keyframes corkscrewDance {
  0%   { transform: translate(0, 0) rotate(0deg) scale(1); }
  12%  { transform: translate(20px, 25px) rotate(90deg) scale(0.9); }
  25%  { transform: translate(-15px, 55px) rotate(180deg) scale(0.8); }
  37%  { transform: translate(25px, 80px) rotate(270deg) scale(0.75); }
  50%  { transform: translate(-10px, 90px) rotate(360deg) scale(0.7); }
  62%  { transform: translate(15px, 65px) rotate(450deg) scale(0.8); }
  75%  { transform: translate(-10px, 35px) rotate(540deg) scale(0.9); }
  87%  { transform: translate(5px, 10px) rotate(660deg) scale(0.97); }
  100% { transform: translate(0, 0) rotate(720deg) scale(1); }
}

/* 57. Whiplash — snap forward and recoil */
.poop.dance-whiplash { animation: whiplashDance 0.7s cubic-bezier(0.7, 0, 0.3, 1); }
@keyframes whiplashDance {
  0%   { transform: translateX(0) rotate(0deg) scaleX(1); }
  15%  { transform: translateX(-20px) rotate(-8deg) scaleX(0.85); }
  30%  { transform: translateX(80px) rotate(15deg) scaleX(1.3); }
  40%  { transform: translateX(90px) rotate(18deg) scaleX(1.35); }
  55%  { transform: translateX(-30px) rotate(-10deg) scaleX(0.9); }
  70%  { transform: translateX(15px) rotate(5deg) scaleX(1.08); }
  85%  { transform: translateX(-5px) rotate(-2deg) scaleX(0.97); }
  100% { transform: translateX(0) rotate(0deg) scaleX(1); }
}

/* 58. Vapor — fade to mist and reform */
.poop.dance-vapor { animation: vaporDance 1.6s ease-in-out; }
@keyframes vaporDance {
  0%   { transform: scale(1) translateY(0); opacity: 1; filter: blur(0px); }
  20%  { transform: scale(1.1) translateY(-15px); opacity: 0.7; filter: blur(1px); }
  35%  { transform: scale(1.3) translateY(-35px); opacity: 0.3; filter: blur(4px); }
  45%  { transform: scale(1.5) translateY(-50px); opacity: 0.1; filter: blur(8px); }
  55%  { transform: scale(1.4) translateY(-45px); opacity: 0.15; filter: blur(6px); }
  65%  { transform: scale(1.2) translateY(-30px); opacity: 0.4; filter: blur(3px); }
  78%  { transform: scale(1.05) translateY(-12px); opacity: 0.75; filter: blur(1px); }
  90%  { transform: scale(0.97) translateY(3px); opacity: 0.95; filter: blur(0px); }
  100% { transform: scale(1) translateY(0); opacity: 1; filter: blur(0px); }
}

/* 59. Hop — little bunny hops in a line */
.poop.dance-hop { animation: hopDance 1.4s ease-in-out; }
@keyframes hopDance {
  0%   { transform: translate(0, 0) rotate(0deg) scale(1); }
  6%   { transform: translate(0, 5px) rotate(0deg) scale(1.08, 0.85); }
  12%  { transform: translate(25px, -35px) rotate(8deg) scale(0.9, 1.1); }
  18%  { transform: translate(50px, 0) rotate(0deg) scale(1.06, 0.88); }
  24%  { transform: translate(50px, 5px) rotate(0deg) scale(1.08, 0.85); }
  30%  { transform: translate(75px, -30px) rotate(-6deg) scale(0.92, 1.08); }
  36%  { transform: translate(90px, 0) rotate(0deg) scale(1.05, 0.9); }
  44%  { transform: translate(90px, 5px) rotate(0deg) scale(1.06, 0.87); }
  50%  { transform: translate(70px, -25px) rotate(5deg) scale(0.93, 1.07); }
  56%  { transform: translate(50px, 0) rotate(0deg) scale(1.04, 0.92); }
  64%  { transform: translate(50px, 4px) rotate(0deg) scale(1.05, 0.88); }
  70%  { transform: translate(30px, -20px) rotate(-4deg) scale(0.95, 1.05); }
  76%  { transform: translate(15px, 0) rotate(0deg) scale(1.03, 0.95); }
  84%  { transform: translate(15px, 3px) rotate(0deg) scale(1.04, 0.9); }
  90%  { transform: translate(5px, -12px) rotate(2deg) scale(0.97, 1.03); }
  96%  { transform: translate(0, 3px) rotate(0deg) scale(1.02, 0.97); }
  100% { transform: translate(0, 0) rotate(0deg) scale(1); }
}

/* 60. Firework — launch up and burst outward */
.poop.dance-firework { animation: fireworkDance 1.4s cubic-bezier(0.4, 0, 0.2, 1); }
@keyframes fireworkDance {
  0%   { transform: translateY(0) scale(1) rotate(0deg); filter: drop-shadow(0 0 10px rgba(180, 120, 60, 0.2)); }
  10%  { transform: translateY(15px) scale(1.1, 0.8) rotate(0deg); }
  25%  { transform: translateY(-120px) scale(0.7, 1.3) rotate(5deg); filter: drop-shadow(0 20px 20px rgba(255, 150, 0, 0.4)); }
  35%  { transform: translateY(-160px) scale(0.6) rotate(-3deg); filter: drop-shadow(0 30px 30px rgba(255, 100, 0, 0.5)); }
  42%  { transform: translateY(-160px) scale(2.0) rotate(0deg); filter: drop-shadow(0 0 80px rgba(255, 200, 50, 0.8)) brightness(1.8); }
  52%  { transform: translateY(-140px) scale(1.8) rotate(10deg); filter: drop-shadow(0 0 60px rgba(255, 150, 50, 0.6)) brightness(1.4); }
  62%  { transform: translateY(-90px) scale(1.3) rotate(-5deg); filter: drop-shadow(0 0 40px rgba(255, 120, 60, 0.4)); }
  75%  { transform: translateY(-30px) scale(1.1) rotate(3deg); filter: drop-shadow(0 0 20px rgba(180, 120, 60, 0.3)); }
  88%  { transform: translateY(10px) scale(0.95) rotate(-1deg); filter: drop-shadow(0 0 12px rgba(180, 120, 60, 0.2)); }
  100% { transform: translateY(0) scale(1) rotate(0deg); filter: drop-shadow(0 0 10px rgba(180, 120, 60, 0.2)); }
}
