@keyframes budgy-blink {
  0%, 92%, 100% { transform: scaleY(1); }
  95% { transform: scaleY(0.1); }
}
@keyframes budgy-wag {
  0%, 100% { transform: rotate(-10deg); }
  50% { transform: rotate(14deg); }
}
@keyframes budgy-bob {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
}
@keyframes budgy-hop {
  0%, 100% { transform: translateY(0); }
  30% { transform: translateY(-14px); }
  55% { transform: translateY(0); }
  70% { transform: translateY(-5px); }
}
@keyframes confetti-fall {
  0% { transform: translateY(-6px) rotate(0deg); opacity: 0; }
  15% { opacity: 1; }
  100% { transform: translateY(26px) rotate(200deg); opacity: 0; }
}
@keyframes zzz {
  0% { transform: translate(0, 0) scale(0.7); opacity: 0; }
  30% { opacity: 1; }
  100% { transform: translate(8px, -16px) scale(1.1); opacity: 0; }
}
.budgy-eyes { transform-box: fill-box; transform-origin: center; animation: budgy-blink 4.6s infinite; }
.budgy-tail { transform-box: fill-box; transform-origin: 10% 90%; animation: budgy-wag 0.9s ease-in-out infinite; }
.budgy-tail-slow { transform-box: fill-box; transform-origin: 10% 90%; animation: budgy-wag 2.4s ease-in-out infinite; }
.budgy-bob { animation: budgy-bob 3.2s ease-in-out infinite; }
.budgy-hop { animation: budgy-hop 1.4s ease-in-out infinite; }
.budgy-confetti > * { transform-box: fill-box; animation: confetti-fall 1.6s ease-in infinite; }
.budgy-zzz { transform-box: fill-box; animation: zzz 2.6s ease-out infinite; }
@keyframes budgy-wave {
  0%, 100% { transform: rotate(-6deg); }
  50% { transform: rotate(13deg); }
}
@keyframes budgy-flag {
  0%, 100% { transform: skewY(0deg) scaleX(1); }
  50% { transform: skewY(-7deg) scaleX(0.93); }
}
@keyframes budgy-needle {
  0%, 100% { transform: rotate(-14deg); }
  50% { transform: rotate(16deg); }
}
@keyframes budgy-spin {
  to { transform: rotate(360deg); }
}
@keyframes budgy-flicker {
  0%, 100% { transform: scale(1, 1); }
  40% { transform: scale(0.94, 1.08); }
  70% { transform: scale(1.04, 0.95); }
}
@keyframes budgy-glint {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.72; }
}
@keyframes budgy-pop {
  from { opacity: 0; transform: translateY(8px) scale(0.94); }
  to { opacity: 1; transform: none; }
}
.budgy-wave { transform-origin: 118px 142px; animation: budgy-wave 1.05s ease-in-out infinite; }
.budgy-flag { transform-origin: 154px 56px; animation: budgy-flag 1.7s ease-in-out infinite; }
.budgy-needle { transform-origin: 100px 156px; animation: budgy-needle 2.2s ease-in-out infinite; }
.budgy-spin { transform-origin: 100px 156px; animation: budgy-spin 12s linear infinite; }
.budgy-flame { transform-origin: 141px 170px; animation: budgy-flicker 1.3s ease-in-out infinite; }
.budgy-glint { animation: budgy-glint 2.6s ease-in-out infinite; }
.budgy-pop { animation: budgy-pop 0.38s cubic-bezier(0.2, 0.9, 0.3, 1.2) both; }
@keyframes budgy-swing {
  0%, 100% { transform: rotate(-3.5deg); }
  50% { transform: rotate(3.5deg); }
}
.budgy-coin {
  transform-box: view-box;
  transform-origin: 100px 130px;
  animation: budgy-swing 3.6s ease-in-out infinite;
}
.budgy-static * {
  animation: none !important;
}
@keyframes budgy-poke {
  0% { transform: none; }
  25% { transform: scale(1.08, 0.9); }
  50% { transform: translateY(-12px) rotate(-6deg); }
  75% { transform: translateY(0) scale(1.04, 0.96); }
  100% { transform: none; }
}
.budgy-poke { animation: budgy-poke 0.7s cubic-bezier(0.3, 0.9, 0.3, 1) both; }
@media (prefers-reduced-motion: reduce) { [class*="budgy-"], [class*="budgy-"] * { animation: none !important; } }