/* ========================================
   ANIMATIONS - Style organique fluide
   ======================================== */

/* ---- Etat initial ---- */
[data-animate] {
  opacity: 0;
  transition:
    opacity 1s cubic-bezier(0.25, 0.46, 0.45, 0.94),
    transform 1s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  will-change: opacity, transform;
}

[data-animate="fade-up"] { transform: translateY(30px); }
[data-animate="fade-down"] { transform: translateY(-30px); }
[data-animate="fade-left"] { transform: translateX(-30px); }
[data-animate="fade-right"] { transform: translateX(30px); }
[data-animate="scale"] { transform: scale(0.96); }
[data-animate="zoom"] { transform: scale(0.94); }
[data-animate="slide-up"] { transform: translateY(40px); }

@media (max-width: 768px) {
  [data-animate] {
    transition-duration: 0.5s;
  }
  [data-animate="fade-up"] { transform: translateY(15px); }
  [data-animate="fade-left"] { transform: translateX(-15px); }
  [data-animate="fade-right"] { transform: translateX(15px); }
  [data-animate="slide-up"] { transform: translateY(20px); }
}

[data-animate].is-visible {
  opacity: 1;
  transform: translateY(0) translateX(0) scale(1);
}

/* Delais cascade */
[data-animate-delay="1"] { transition-delay: 0.15s; }
[data-animate-delay="2"] { transition-delay: 0.3s; }
[data-animate-delay="3"] { transition-delay: 0.45s; }
[data-animate-delay="4"] { transition-delay: 0.6s; }
[data-animate-delay="5"] { transition-delay: 0.75s; }

/* ---- Parallax ---- */
[data-parallax] {
  will-change: transform;
  transition: transform 0.1s linear;
}

/* ---- Hero animations ---- */
.hero__content {
  animation: heroFadeIn 1.2s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.3s both;
}

.hero__content .badge {
  animation: heroSlideDown 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.5s both;
}

.hero__title {
  animation: heroFadeUp 1s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.7s both;
}

.hero__subtitle {
  animation: heroFadeUp 1s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.9s both;
}

.hero__actions {
  animation: heroFadeUp 1s cubic-bezier(0.25, 0.46, 0.45, 0.94) 1.1s both;
}

.hero__scroll-indicator {
  animation: heroFadeIn 1s ease 2.5s both;
}

@keyframes heroFadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

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

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

/* ---- Divider animee ---- */
.divider {
  width: 0;
  transition: width 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.3s;
}

.is-visible .divider,
.section__header.is-visible .divider {
  width: 50px;
}

/* ---- Hover cartes doux ---- */
.card,
.service-card {
  transition:
    transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94),
    box-shadow 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

/* ---- Boutons ---- */
.btn {
  position: relative;
  overflow: hidden;
  transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

/* ---- Gallery hover ---- */
.gallery-item {
  overflow: hidden;
}

.gallery-item .placeholder-img,
.gallery-item img {
  transition: transform 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

.gallery-item:hover .placeholder-img,
.gallery-item:hover img {
  transform: scale(1.06);
}

.gallery-item__overlay {
  transition: transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

/* ---- Compteur anime ---- */
.stat__number {
  display: inline-block;
}

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

  [data-animate] {
    opacity: 1;
    transform: none;
  }

  .divider {
    width: 50px;
  }
}
