/* ===== Keyframes (all wrapped in prefers-reduced-motion globally in utilities.css) ===== */

@keyframes pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.5; transform: scale(1.3); }
}

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes bounceIn {
  0%   { transform: scale(0.3) rotate(-30deg); opacity: 0; }
  60%  { transform: scale(1.1) rotate(10deg); opacity: 1; }
  100% { transform: scale(1) rotate(var(--tilt, -6deg)); }
}

@keyframes floatY {
  0%, 100% { transform: translateY(0) rotate(var(--tilt, 0deg)); }
  50%      { transform: translateY(-8px) rotate(var(--tilt, 0deg)); }
}

@keyframes floatYAlt {
  0%, 100% { transform: translateY(0) rotate(var(--tilt, 0deg)); }
  50%      { transform: translateY(6px) rotate(var(--tilt, 0deg)); }
}

@keyframes idleNudge {
  0%, 86%, 100% { transform: translate(0, 0) rotate(var(--tilt, -1deg)); }
  90%           { transform: translate(-3px, 0) rotate(calc(var(--tilt, -1deg) - 2deg)); }
  93%           { transform: translate(3px, 0)  rotate(calc(var(--tilt, -1deg) + 2deg)); }
  96%           { transform: translate(-2px, 0) rotate(calc(var(--tilt, -1deg) - 1deg)); }
}

@keyframes stampSpin {
  from { transform: rotate(var(--tilt, 0deg)); }
  to   { transform: rotate(calc(var(--tilt, 0deg) + 360deg)); }
}

@keyframes tickerScroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

@keyframes feedPulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%      { opacity: 0.4; transform: scale(1.3); }
}

@keyframes feedSlideIn {
  from { opacity: 0; transform: translateY(-8px); background: rgba(107, 179, 107, 0.15); }
  to   { opacity: 1; transform: translateY(0); background: transparent; }
}
