/*
 * Refonte — animations communes à toutes les sections refondues.
 * Usage : data-aj-reveal="fade-up | fade-left | fade-right | zoom" sur un élément,
 *         data-aj-stagger sur un parent pour décaler l'apparition de ses enfants [data-aj-reveal],
 *         data-aj-delay="150" pour un délai explicite (ms).
 * N'agit que sur les éléments marqués : sans effet sur les pages non refondues.
 * L'état caché n'est appliqué qu'une fois le script prêt (html.aj-anim) : sans JS, tout reste visible.
 */

:root {
  --aj-reveal-duration: 800ms;
  --aj-reveal-ease: cubic-bezier(0.2, 0.7, 0.2, 1);
  --aj-reveal-distance: 32px;
}

.aj-anim [data-aj-reveal] {
  opacity: 0;
  transition:
    opacity var(--aj-reveal-duration) var(--aj-reveal-ease),
    transform var(--aj-reveal-duration) var(--aj-reveal-ease);
  transition-delay: var(--aj-delay, 0ms);
}

.aj-anim [data-aj-reveal="fade-up"],
.aj-anim [data-aj-reveal=""] { transform: translateY(var(--aj-reveal-distance)); }
.aj-anim [data-aj-reveal="fade-left"] { transform: translateX(var(--aj-reveal-distance)); }
.aj-anim [data-aj-reveal="fade-right"] { transform: translateX(calc(-1 * var(--aj-reveal-distance))); }
.aj-anim [data-aj-reveal="zoom"] { transform: scale(0.94); }

.aj-anim [data-aj-reveal].is-revealed {
  opacity: 1;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .aj-anim [data-aj-reveal] {
    opacity: 1;
    transform: none;
    transition: none;
  }
}
