/* Animations au scroll — CSS natif, avec repli JS via .is-visible */

@media (prefers-reduced-motion: no-preference) {
  .reveal {
    opacity: 0;
    transform: translateY(24px);
    animation: reveal-in linear both;
    animation-timeline: view();
    animation-range: entry 0% cover 25%;
  }

  .reveal.is-visible {
    animation: none;
    opacity: 1;
    transform: none;
    transition: opacity 700ms var(--ease), transform 700ms var(--ease);
  }

  @keyframes reveal-in {
    to {
      opacity: 1;
      transform: none;
    }
  }

  .reveal-fade {
    opacity: 0;
    animation: fade-in linear both;
    animation-timeline: view();
    animation-range: entry 0% cover 20%;
  }

  .reveal-fade.is-visible {
    animation: none;
    opacity: 1;
    transition: opacity 700ms var(--ease);
  }

  @keyframes fade-in {
    to { opacity: 1; }
  }
}

@media (prefers-reduced-motion: reduce) {
  .reveal, .reveal-fade {
    opacity: 1;
    transform: none;
  }
}
