/* ✏️ ANIMATIONS - KEYFRAMES ET EFFETS */

/* WAVE DIVIDERS - STATIC */
.wave {
  display: block;
  width: 100%;
  height: auto;
  position: relative;
  margin: -1px 0 0 0;
}

/* PULSE GLOW */
@keyframes pulse-glow {
  0%, 100% {
    box-shadow: 0 0 20px rgba(212, 140, 112, 0.3);
  }
  50% {
    box-shadow: 0 0 40px rgba(212, 140, 112, 0.6);
  }
}

.btn-primary {
  animation: none;
}

.btn-primary:hover {
  box-shadow: 0 0 20px rgba(212, 140, 112, 0.4);
  transition: box-shadow 0.3s ease-out;
}

/* FLOAT SPARKLE */
@keyframes float-sparkle {
  0%, 100% {
    transform: translateY(0) rotate(0deg);
    opacity: 0.3;
  }
  50% {
    transform: translateY(-20px) rotate(180deg);
    opacity: 1;
  }
}

.sparkle {
  animation: none;
  opacity: 0.5;
}

/* SHIMMER GOLD */
@keyframes shimmer-gold {
  0% {
    background-position: -1000px 0;
  }
  100% {
    background-position: 1000px 0;
  }
}

.shimmer-badge {
  background: linear-gradient(90deg, #8EA885, #D4AF37, #8EA885);
  background-size: 1000px 100%;
  animation: none;
  will-change: auto;
}

/* STAR FILL */
@keyframes star-fill {
  0% {
    color: #ddd;
  }
  100% {
    color: #D4AF37;
  }
}

.star {
  animation: star-fill 0.6s ease-out forwards;
}

.star:nth-child(1) { animation-delay: 0s; }
.star:nth-child(2) { animation-delay: 0.1s; }
.star:nth-child(3) { animation-delay: 0.2s; }
.star:nth-child(4) { animation-delay: 0.3s; }
.star:nth-child(5) { animation-delay: 0.4s; }

/* DRAW LINE */
@keyframes draw-line {
  0% {
    stroke-dasharray: 1000;
    stroke-dashoffset: 1000;
  }
  100% {
    stroke-dasharray: 1000;
    stroke-dashoffset: 0;
  }
}

.draw-line {
  animation: draw-line 1.5s ease-out forwards;
  will-change: stroke-dashoffset;
}

/* BOUNCE ICON */
@keyframes bounce-icon {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-8px);
  }
}

.icon-bounce:hover {
  animation: bounce-icon 0.6s ease-out;
}

/* TYPEWRITER */
@keyframes typewriter {
  from {
    width: 0;
  }
  to {
    width: 100%;
  }
}

@keyframes blink {
  50% {
    border-color: transparent;
  }
}

.typewriter {
  overflow: hidden;
  border-right: 3px solid var(--color-terracotta);
  white-space: nowrap;
  animation: typewriter 3s steps(40, end), blink 0.75s step-end infinite;
  will-change: width;
}

/* FADE IN */
@keyframes fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.fade-in {
  animation: fade-in 0.6s ease-out;
}

/* SLIDE DOWN */
@keyframes slide-down {
  from {
    opacity: 0;
    transform: translateY(-20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.slide-down {
  animation: slide-down 0.6s ease-out;
}

/* RIPPLE EFFECT */
@keyframes ripple {
  0% {
    transform: scale(0);
    opacity: 1;
  }
  100% {
    transform: scale(4);
    opacity: 0;
  }
}

.ripple {
  position: absolute;
  border-radius: 50%;
  background-color: rgba(255, 255, 255, 0.5);
  animation: ripple 0.6s ease-out;
}

/* COUNTUP */
@keyframes countup {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.countup {
  animation: countup 0.8s ease-out forwards;
  will-change: transform, opacity;
}

/* AOS OVERRIDES */
[data-aos] {
  opacity: 0;
  transition-property: opacity, transform;
  transition-duration: 1000ms;
  transition-timing-function: ease-out;
  will-change: opacity, transform;
}

[data-aos].aos-animate {
  opacity: 1;
}

[data-aos="fade-up"] {
  transform: translate3d(0, 40px, 0);
}

[data-aos="fade-up"].aos-animate {
  transform: translate3d(0, 0, 0);
}

[data-aos="fade-left"] {
  transform: translate3d(-40px, 0, 0);
}

[data-aos="fade-left"].aos-animate {
  transform: translate3d(0, 0, 0);
}

[data-aos="fade-right"] {
  transform: translate3d(40px, 0, 0);
}

[data-aos="fade-right"].aos-animate {
  transform: translate3d(0, 0, 0);
}

[data-aos="zoom-in"] {
  transform: scale3d(0.9, 0.9, 0.9);
}

[data-aos="zoom-in"].aos-animate {
  transform: scale3d(1, 1, 1);
}

/* SMOOTH TRANSITIONS */
* {
  transition-property: background-color, color, border-color, box-shadow;
  transition-duration: var(--transition-fast);
  transition-timing-function: ease-out;
}

button, a, input, textarea, select {
  transition: all var(--transition-normal);
}

/* REDUCED MOTION */
@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
