  @keyframes number-bump { 0% { transform: scale(1); } 35% { transform: scale(1.14); } 100% { transform: scale(1); } }
  @keyframes combo-glow { 0% { transform: scale(1); } 35% { transform: scale(1.12); } 100% { transform: scale(1); } }
  @keyframes danger-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .62; } }
  @keyframes board-shake {
    10%, 90% { transform: translate3d(-2px, 0, 0) rotate(-.25deg); }
    20%, 80% { transform: translate3d(4px, 0, 0) rotate(.3deg); }
    30%, 50%, 70% { transform: translate3d(-6px, 1px, 0) rotate(-.35deg); }
    40%, 60% { transform: translate3d(6px, 1px, 0) rotate(.35deg); }
  }
  @keyframes mole-bob {
    0%, 100% { transform: translateY(0) rotate(0); }
    50% { transform: translateY(-3px) rotate(-.8deg); }
  }
  @keyframes mole-squash {
    0% { transform: translateY(2%) scale(1); }
    30% { transform: translateY(8%) scale(1.1, .82); }
    58% { transform: translateY(4%) scale(.94, 1.05); }
    100% { transform: translateY(10%) scale(1.01, .97); }
  }
  @keyframes mole-blink { 0%, 92%, 100% { transform: scaleY(1); } 95% { transform: scaleY(.08); } 97% { transform: scaleY(1); } }
  @keyframes crown-glow { 0%, 100% { transform: translateY(0); filter: brightness(1); } 50% { transform: translateY(-1px); filter: brightness(1.12); } }
  @keyframes spark-flicker { from { opacity: .65; transform: scale(.85) rotate(-8deg); } to { opacity: 1; transform: scale(1.12) rotate(8deg); } }
  @keyframes sparkle-twinkle { from { opacity: .45; transform: scale(.85); } to { opacity: 1; transform: scale(1.08); } }
  @keyframes tag-twinkle { 0%, 100% { transform: scale(1) rotate(8deg); } 50% { transform: scale(1.08) rotate(3deg); } }
  @keyframes tag-danger { 0%, 100% { transform: scale(1) rotate(8deg); } 50% { transform: scale(1.12) rotate(-2deg); } }
  @keyframes hammer-strike {
    0% { transform: rotate(0) scale(1); }
    35% { transform: rotate(34deg) scale(1.04); }
    72% { transform: rotate(22deg) scale(.98); }
    100% { transform: rotate(0) scale(1); }
  }
  @keyframes particle-fly {
    0% { transform: translate(-50%, -50%) scale(1) rotate(0); opacity: 1; }
    70% { opacity: 1; }
    100% { transform: translate(calc(-50% + var(--dx)), calc(-50% + var(--dy))) scale(.16) rotate(var(--rot)); opacity: 0; }
  }
  @keyframes ring-out {
    0% { transform: scale(.35); opacity: .9; }
    100% { transform: scale(1.5); opacity: 0; }
  }
  @keyframes float-up {
    0% { opacity: 0; transform: translate(-50%, -30%) scale(.75); }
    16% { opacity: 1; transform: translate(-50%, -60%) scale(1.06); }
    100% { opacity: 0; transform: translate(-50%, -175%) scale(.96); }
  }
  @keyframes confetti-fall {
    0% { transform: translate3d(0, 0, 0) rotate(0); opacity: 1; }
    100% { transform: translate3d(var(--dx), 108vh, 0) rotate(var(--rot)); opacity: .8; }
  }
  @keyframes danger-flash { 0% { opacity: 0; background: rgba(255, 59, 40, .3); } 25% { opacity: 1; } 100% { opacity: 0; background: transparent; } }
  @keyframes win-flash { 0% { opacity: 0; background: rgba(255, 221, 108, .2); } 30% { opacity: 1; } 100% { opacity: 0; background: transparent; } }
  @keyframes toast-in { from { opacity: 0; transform: translateY(-8px) scale(.94); } to { opacity: 1; transform: translateY(0) scale(1); } }
  @keyframes toast-out { to { opacity: 0; transform: translateY(-6px) scale(.96); } }
  @keyframes overlay-in { from { opacity: 0; } to { opacity: 1; } }
  @keyframes modal-in { from { opacity: 0; transform: translateY(16px) scale(.96); } to { opacity: 1; transform: translateY(0) scale(1); } }
  @keyframes star-pop { from { opacity: 0; transform: scale(.3) rotate(-18deg); } to { opacity: 1; transform: scale(1) rotate(0); } }
  @keyframes record-pop { from { opacity: 0; transform: scale(.75) translateY(4px); } to { opacity: 1; transform: scale(1) translateY(0); } }
@keyframes orb-breathe { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.05); } }
@keyframes cloud-drift { from { transform: translateX(-30px); } to { transform: translateX(40px); } }
@keyframes twinkle { from { opacity: .25; transform: scale(.8); } to { opacity: 1; transform: scale(1.25); } }
@keyframes snowfall { from { transform: translate3d(0, -30px, 0); } to { transform: translate3d(40px, 110vh, 0); } }
@keyframes floaty { from { transform: translateY(0) rotate(0); } to { transform: translateY(-26px) rotate(25deg); } }
@keyframes sway { from { transform: rotate(-6deg); } to { transform: rotate(6deg); } }
@keyframes combo-throb { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.1); } }
@keyframes hint-pulse { from { opacity: .3; } to { opacity: 1; } }
@keyframes prompt-drop { 0% { opacity: 0; transform: translateY(-18px) scale(.95); } 100% { opacity: 1; transform: none; } }
@keyframes beat-shrink { 0% { opacity: 0; transform: scale(1.85); } 25% { opacity: 1; } 100% { opacity: 1; transform: scale(1); } }
@keyframes screen-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes logo-bob { 0%, 100% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-8px) rotate(1deg); } }
@keyframes tm-peek { 0%, 100% { transform: translateY(14px); } 50% { transform: translateY(-4px); } }
@keyframes node-pulse { 0%, 100% { transform: scale(1); box-shadow: 0 5px 0 #a8590f, 0 0 0 0 rgba(255,200,60,.8), inset 0 3px 0 rgba(255,255,255,.55); } 50% { transform: scale(1.08); box-shadow: 0 5px 0 #a8590f, 0 0 0 12px rgba(255,200,60,0), inset 0 3px 0 rgba(255,255,255,.55); } }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes unlock-pop { 0% { opacity: 0; transform: scale(.2) rotate(-25deg); } 100% { opacity: 1; transform: scale(1) rotate(0); } }
