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

@keyframes shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: .6; }
}

@keyframes popIn {
  0% { transform: scale(0); opacity: 0; }
  50% { transform: scale(1.1); }
  80% { transform: scale(.97); }
  100% { transform: scale(1); opacity: 1; }
}

@keyframes fillExpand {
  from { max-width: 0; }
  to { max-width: 100%; }
}

@keyframes pulseGlow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(239,68,68,.15); }
  50% { box-shadow: 0 0 12px 4px rgba(239,68,68,.2); }
}

@keyframes sparkleOut {
  0% { opacity: 1; transform: translate(0,0) scale(1); }
  100% { opacity: 0; transform: translate(var(--dx,20px), var(--dy,-30px)) scale(0); }
}

@keyframes revealBounce {
  0% { opacity: 0; transform: scale(.3); }
  50% { transform: scale(1.06); }
  70% { transform: scale(.97); }
  100% { opacity: 1; transform: scale(1); }
}

@keyframes slideDown {
  from { opacity: 0; transform: translateY(-8px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes countPulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.03); }
}

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

@keyframes glow {
  0%, 100% { box-shadow: 0 0 8px rgba(56,189,248,.15); }
  50% { box-shadow: 0 0 20px rgba(56,189,248,.25); }
}

@keyframes floatBg {
  0% { transform: translate(0, 0) scale(1); }
  33% { transform: translate(2%, -1%) scale(1.02); }
  66% { transform: translate(-1%, 2%) scale(.98); }
  100% { transform: translate(1%, -2%) scale(1.01); }
}

@keyframes glowPulse {
  0%, 100% { opacity: .6; filter: brightness(1); }
  50% { opacity: 1; filter: brightness(1.2); }
}

@keyframes borderGlow {
  0% { border-color: rgba(56,189,248,.12); box-shadow: 0 0 20px rgba(56,189,248,.05); }
  50% { border-color: rgba(167,139,250,.2); box-shadow: 0 0 30px rgba(167,139,250,.08); }
  100% { border-color: rgba(56,189,248,.12); box-shadow: 0 0 20px rgba(56,189,248,.05); }
}

@keyframes scanLine {
  0% { left: -100%; }
  100% { left: 100%; }
}
