/* Animation utilities — loaded separately for clarity */
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.animate-in {
  animation: fadeInUp 0.6s ease forwards;
}

/* Scroll reveal (home sections) */
[data-scroll-animate] {
  --scroll-animate-duration: 520ms;
  --scroll-animate-delay: 0ms;
  --scroll-animate-ease: cubic-bezier(0.18, 0.88, 0.28, 1);
  --scroll-animate-distance-x: 0px;
  --scroll-animate-distance-y: 12px;
  --scroll-animate-scale: 1;
  opacity: 0;
  transform: translate3d(var(--scroll-animate-distance-x), var(--scroll-animate-distance-y), 0) scale(var(--scroll-animate-scale));
  transition:
    opacity var(--scroll-animate-duration) var(--scroll-animate-ease) var(--scroll-animate-delay),
    transform var(--scroll-animate-duration) var(--scroll-animate-ease) var(--scroll-animate-delay);
  will-change: opacity, transform;
}

[data-scroll-animate='fade-up'] {
  --scroll-animate-distance-y: 12px;
}

[data-scroll-animate='slide-left'] {
  --scroll-animate-distance-x: -12px;
  --scroll-animate-distance-y: 0px;
}

[data-scroll-animate='slide-right'] {
  --scroll-animate-distance-x: 12px;
  --scroll-animate-distance-y: 0px;
}

[data-scroll-animate='zoom-soft'] {
  --scroll-animate-distance-y: 4px;
  --scroll-animate-scale: 0.975;
}

[data-scroll-animate].is-inview {
  opacity: 1;
  transform: translate3d(0, 0, 0) scale(1);
}

/* Flipbook — mobile : fondu simple */
.flipbook--simple .flipbook__page {
  transform: none;
  transition: opacity 0.45s ease;
  opacity: 0;
}

.flipbook--simple .flipbook__page--active {
  opacity: 1;
  transform: none;
  visibility: visible;
}

.flipbook--simple .flipbook__page--under,
.flipbook--simple .flipbook__page--turned {
  opacity: 0;
  visibility: hidden;
}

.flipbook--simple .flipbook__page--flip-forward,
.flipbook--simple .flipbook__page--flip-backward {
  animation: none;
}

/* Flipbook — reduced motion : image statique */
.flipbook--static {
  perspective: none;
}

.flipbook--static .flipbook__page {
  transform: none !important;
  animation: none !important;
  transition: none;
  pointer-events: none;
}

.flipbook--static .flipbook__page--active {
  pointer-events: auto;
  visibility: visible;
  opacity: 1;
}

.flipbook--static .flipbook__page:not(.flipbook__page--active) {
  visibility: hidden;
  opacity: 0;
}

.marquee--reduced,
.marquee--single {
  mask-image: none;
}

.marquee--reduced .marquee__track,
.marquee--single .marquee__track {
  animation: none;
  transform: none;
  flex-wrap: wrap;
  justify-content: center;
  width: 100%;
  max-width: var(--container-max, 1200px);
  margin-inline: auto;
  padding-inline: var(--space-lg);
  gap: var(--space-lg);
}


/* Bible — reduced motion desktop : contenu visible sans scroll */
.bible-section--reduced .bible-card__panel {
  transform: none !important;
  opacity: 0;
  pointer-events: none;
}

.bible-section--reduced .bible-card__content {
  opacity: 1 !important;
}

@media (prefers-reduced-motion: reduce) {
  .site-header__logo-rest,
  .site-header__logo-dot {
    transition: none;
  }

  .animate-in {
    animation: none;
    opacity: 1;
    transform: none;
  }

  [data-scroll-animate] {
    opacity: 1;
    transform: none;
    transition: none;
    will-change: auto;
  }

  .flipbook {
    perspective: none;
  }

  .flipbook__page {
    animation: none !important;
    transition: none;
    transform: none !important;
  }

  .flipbook--single .flipbook__image {
    animation: none !important;
    transform: none !important;
  }

  .flipbook--webgl-ready .flipbook__layer--webgl {
    opacity: 0 !important;
    visibility: hidden;
  }

  .marquee__track {
    animation: none;
    will-change: auto;
  }

  .marquee--reduced .marquee__track {
    flex-wrap: wrap;
    justify-content: center;
    width: 100%;
    max-width: var(--container-max, 1200px);
    margin-inline: auto;
    padding-inline: var(--space-lg);
    gap: var(--space-lg);
  }

  .bible-card__panel {
    transform: none !important;
    transition: none;
  }

  .bible-section--reduced .bible-card__panel {
    transform: none !important;
  }

  .bible-section--reduced .bible-card__content {
    opacity: 1 !important;
  }

  .bible-section--mobile .bible-card__toggle-icon {
    transition: none;
  }

  .bible-section--mobile .bible-card__body,
  .bible-section--mobile .bible-card__content,
  .bible-section--mobile .bible-card__toggle {
    transition: none;
  }

  .section-speech-reader--active {
    animation: none;
  }

  #processus .process-step,
  #processus-about .process-step,
  .offer-block,
  .offer-tier,
  .trust-item,
  #faq .faq-question,
  #autres-services .card,
  #services .container,
  #contact .btn,
  .projects-approach__item,
  .realisation-card,
  .guarantee-block,
  .about-visual__image,
  .diff-list__item,
  #about-cta .btn,
  #projects-cta .btn,
  #contact-section .btn,
  #contact-form .form-input,
  #contact-form .form-textarea {
    transition: none !important;
    transform: none !important;
    box-shadow: none !important;
  }

  #hero-cta,
  #offer-landing-cta,
  #offer-vitrine-cta,
  #about-cta-btn,
  #contact-cta,
  #refonte-existante-cta {
    animation: none;
  }
}

@keyframes offerCtaNudge {
  0%,
  100% {
    transform: translateY(0);
  }

  50% {
    transform: translateY(-3px);
  }
}

#hero-cta,
#offer-landing-cta,
#about-cta-btn,
#contact-cta,
#refonte-existante-cta {
  animation: offerCtaNudge 2.6s ease-in-out infinite;
}

#offer-vitrine-cta {
  animation: offerCtaNudge 3.4s ease-in-out infinite;
  animation-delay: -1.7s;
}

#hero-cta:hover,
#hero-cta:focus-visible,
#offer-landing-cta:hover,
#offer-landing-cta:focus-visible,
#offer-vitrine-cta:hover,
#offer-vitrine-cta:focus-visible,
#about-cta-btn:hover,
#about-cta-btn:focus-visible,
#contact-cta:hover,
#contact-cta:focus-visible,
#refonte-existante-cta:hover,
#refonte-existante-cta:focus-visible {
  animation-play-state: paused;
}

@keyframes section-speech-pulse {
  0%,
  100% {
    box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-accent-cyan) 35%, transparent);
  }

  50% {
    box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-accent-cyan) 0%, transparent);
  }
}
