/* Animations de rebond */
@keyframes bounce-in {
  0% {
    opacity: 0;
    transform: translateY(20px) scale(0.97);
  }
  70% {
    transform: translateY(-8px) scale(1.02);
  }
  85% {
    transform: translateY(4px) scale(0.99);
  }
  100% {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes bounce-out {
  0% {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
  20% {
    transform: translateY(5px) scale(0.98);
  }
  100% {
    opacity: 0;
    transform: translateY(-20px) scale(0.97);
  }
}

.animate-bounce-in {
  animation: bounce-in 0.6s cubic-bezier(0.68, -0.55, 0.27, 1.55) forwards;
}

.animate-bounce-out {
  animation: bounce-out 0.4s ease-in forwards;
}

/* Animation de rebond en continu */
@keyframes continuous-bounce {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-10px);
  }
}

.animate-continuous-bounce {
  animation: continuous-bounce 1.2s infinite ease-in-out;
}

/* Animation pour le chargement pulsant */
@keyframes pulse-scale {
  0%, 100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.1);
  }
}

.animate-pulse-scale {
  animation: pulse-scale 1.5s infinite ease-in-out;
} 