@keyframes fadeUp {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}

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

@keyframes twinkle {
  0%, 100% { opacity: 0.55; transform: rotate(0deg) scale(0.95); }
  50%      { opacity: 1;    transform: rotate(20deg) scale(1.1); }
}

@keyframes pulseShadow {
  0%, 100% { box-shadow: 0 8px 24px rgba(0,122,255,0.24); }
  50%      { box-shadow: 0 12px 32px rgba(0,122,255,0.36); }
}

@keyframes shake {
  0%, 100%      { transform: translateX(0); }
  20%           { transform: translateX(-6px); }
  40%           { transform: translateX(6px); }
  60%           { transform: translateX(-3px); }
  80%           { transform: translateX(3px); }
}

@keyframes spring {
  0%   { transform: scale(0.8); opacity: 0; }
  60%  { transform: scale(1.1); opacity: 1; }
  100% { transform: scale(1);   opacity: 1; }
}

@keyframes throwIn1 {
  0%   { transform: translate(-120vw, -60vh) rotate(-25deg) scale(1.4); opacity: 0; }
  60%  { opacity: 1; }
  85%  { transform: translate(0, -8%) rotate(-6deg) scale(1.12); }
  100% { transform: translate(0, -8%) rotate(-6deg) scale(1.05); opacity: 1; }
}

@keyframes throwIn2 {
  0%   { transform: translate(120vw, -50vh) rotate(30deg) scale(1.4); opacity: 0; }
  60%  { opacity: 1; }
  85%  { transform: translate(2%, 0) rotate(4deg) scale(1.18); }
  100% { transform: translate(2%, 0) rotate(4deg) scale(1.10); opacity: 1; }
}

@keyframes throwIn3 {
  0%   { transform: translate(0, 100vh) rotate(-12deg) scale(1.5); opacity: 0; }
  60%  { opacity: 1; }
  85%  { transform: translate(-1%, 6%) rotate(-2deg) scale(1.16); }
  100% { transform: translate(-1%, 6%) rotate(-2deg) scale(1.08); opacity: 1; }
}

@keyframes containerShake {
  0%, 100% { transform: translateY(0); }
  25%      { transform: translateY(-2px); }
  75%      { transform: translateY(2px); }
}

@keyframes glowPulse {
  0%, 100% { box-shadow: 0 0 0 rgba(0,122,255,0); }
  50%      { box-shadow: 0 0 32px rgba(0,122,255,0.35); }
}

@keyframes slideInRight {
  from { transform: translateX(30px); opacity: 0; }
  to   { transform: translateX(0); opacity: 1; }
}

@keyframes slideOutLeft {
  from { transform: translateX(0); opacity: 1; }
  to   { transform: translateX(-30px); opacity: 0; }
}

@keyframes scrollBounce {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-8px); }
}
