@keyframes fade-in {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: translateY(0); }
}

.animate-fade-in {
  animation: fade-in 0.8s ease-out both;
}

@keyframes slide-in {
  from { transform: translateX(-100%); }
  to { transform: translateX(100%); }
}

.animate-slide-in {
  animation: slide-in 2s linear infinite;
}

.hover\:glow:hover {
  box-shadow: 0 0 10px rgba(255, 255, 255, 0.2), 0 0 20px rgba(34, 197, 94, 0.6);
}

@keyframes shake {
  0%, 100% { transform: translateX(0); }
  20%, 60% { transform: translateX(-5px); }
  40%, 80% { transform: translateX(5px); }
}

@keyframes pulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.05); }
}

@keyframes wobble {
  0% { transform: none; }
  15% { transform: translateX(-25%) rotate(-5deg); }
  30% { transform: translateX(20%) rotate(3deg); }
  45% { transform: translateX(-15%) rotate(-3deg); }
  60% { transform: translateX(10%) rotate(2deg); }
  75% { transform: translateX(-5%) rotate(-1deg); }
  100% { transform: none; }
}

/* Utility classes */
.animate-shake {
  animation: shake 0.5s infinite;
}

.animate-pulse-custom {
  animation: pulse 1.2s infinite;
}

.animate-wobble {
  animation: wobble 1s ease-in-out infinite;
}

@keyframes bounce-slow {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
}
.animate-bounce-slow {
  animation: bounce-slow 2s infinite;
}