/* Animations personnalisées pour la présentation */
@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-20px); }
}
.animate-float {
  animation: float 6s ease-in-out infinite;
}
.animate-float-delay {
  animation: float 8s ease-in-out infinite;
  animation-delay: 2s;
}
@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}
.animate-fade-in {
  opacity: 0;
  animation: fadeIn 1s ease forwards;
}
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(40px); }
  to { opacity: 1; transform: translateY(0); }
}
.animate-fade-in-up {
  opacity: 0;
  animation: fadeInUp 1s ease forwards;
}
.animate-fade-in-up-delay {
  opacity: 0;
  animation: fadeInUp 1s 0.5s ease forwards;
}
.animate-fade-in-up-delay-2 {
  opacity: 0;
  animation: fadeInUp 1s 0.8s ease forwards;
}
.animate-fade-in-up-delay-3 {
  opacity: 0;
  animation: fadeInUp 1s 1.1s ease forwards;
}
@keyframes slideUp {
  from { opacity: 0; transform: translateY(60px); }
  to { opacity: 1; transform: translateY(0); }
}
.animate-slide-up {
  opacity: 0;
  animation: slideUp 0.8s ease forwards;
}
.animate-slide-up-delay {
  opacity: 0;
  animation: slideUp 0.8s 0.3s ease forwards;
}
@keyframes slideInLeft {
  from { opacity: 0; transform: translateX(-60px); }
  to { opacity: 1; transform: translateX(0); }
}
.animate-slide-in-left {
  opacity: 0;
  animation: slideInLeft 0.8s ease forwards;
}
.animate-slide-in-left-delay {
  opacity: 0;
  animation: slideInLeft 0.8s 0.4s ease forwards;
}
@keyframes slideInRight {
  from { opacity: 0; transform: translateX(60px); }
  to { opacity: 1; transform: translateX(0); }
}
.animate-slide-in-right {
  opacity: 0;
  animation: slideInRight 0.8s ease forwards;
}
.animate-slide-in-right-delay {
  opacity: 0;
  animation: slideInRight 0.8s 0.4s ease forwards;
}
@keyframes scaleIn {
  from { opacity: 0; transform: scale(0.8); }
  to { opacity: 1; transform: scale(1); }
}
.animate-scale-in {
  opacity: 0;
  animation: scaleIn 0.7s ease forwards;
}
.animate-scale-in-delay {
  opacity: 0;
  animation: scaleIn 0.7s 0.5s ease forwards;
}
@keyframes grow {
  from { height: 0; }
  to { height: 3rem; }
}
.animate-grow {
  animation: grow 0.8s ease forwards;
}
.animate-grow-delay {
  animation: grow 0.8s 0.5s ease forwards;
}
.animate-grow-delay-2 {
  animation: grow 0.8s 1s ease forwards;
}
@keyframes expand {
  from { width: 0; }
  to { width: 6rem; }
}
.animate-expand {
  animation: expand 1s ease forwards;
}
@keyframes highlight {
  0% { background: #f0fff4; }
  100% { background: none; }
}
.animate-highlight {
  animation: highlight 2s ease-in;
}
@keyframes textReveal {
  from { opacity: 0; letter-spacing: 0.5em; }
  to { opacity: 1; letter-spacing: normal; }
}
.animate-text-reveal {
  opacity: 0;
  animation: textReveal 1s ease forwards;
}
.animate-text-reveal-delay {
  opacity: 0;
  animation: textReveal 1s 0.5s ease forwards;
}
.animate-text-reveal-slow {
  opacity: 0;
  animation: textReveal 2s 0.5s ease forwards;
}
@keyframes bounceSubtle {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-10px); }
}
.animate-bounce-subtle {
  animation: bounceSubtle 2s infinite;
}
@keyframes bounceGentle {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-6px); }
}
.animate-bounce-gentle {
  animation: bounceGentle 2.5s infinite;
}
@keyframes wiggle {
  0%, 100% { transform: rotate(-3deg); }
  50% { transform: rotate(3deg); }
}
.animate-wiggle {
  animation: wiggle 1.2s infinite;
}
.animate-wiggle-delay {
  animation: wiggle 1.2s 0.5s infinite;
}
.animate-wiggle-delay-2 {
  animation: wiggle 1.2s 1s infinite;
}
.animate-wiggle-delay-3 {
  animation: wiggle 1.2s 1.5s infinite;
}
@keyframes spinSlow {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
.animate-spin-slow {
  animation: spinSlow 3s linear infinite;
}
@keyframes glow {
  0%, 100% { box-shadow: 0 0 12px 0 #fbbf24; }
  50% { box-shadow: 0 0 32px 8px #fbbf24; }
}
.animate-glow {
  animation: glow 2s infinite alternate;
}
@keyframes pulseGentle {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.7; }
}
.animate-pulse-gentle {
  animation: pulseGentle 2s infinite;
}
@keyframes twinkle {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.3; }
}
.animate-twinkle {
  animation: twinkle 1.2s infinite;
}
