/* reveal.css
 * Apparition progressive au scroll des blocs marqués [data-reveal].
 *
 * Comportement reproduit depuis l'observation du runtime React d'origine
 * (évidences-ds.js) sur la maquette statique (_maquette-v2) : 3 variantes
 * constatées sur index.html, exposition-chromatographies.html,
 * artiste-zhang-xiao.html, association.html (et le pied de page) :
 *   - [data-reveal="wipe"] : rideau horizontal via clip-path
 *     (en-têtes de section / lignes avec bordure, ex. "La compagnie")
 *   - [data-reveal="card"] : fondu + légère montée + micro zoom-in
 *     (titres H1/H2, cartes, images, boutons)
 *   - [data-reveal="rise"] (et toute valeur non reconnue, par défaut) :
 *     fondu + légère montée, sans zoom (paragraphes, sous-titres)
 *
 * Progressive enhancement : sans JS (ou avant l'exécution de reveal.js),
 * aucun état masqué n'est appliqué — le contenu reste visible. L'état
 * initial masqué n'existe que sous html.has-reveal-js, classe ajoutée
 * par reveal.js une fois qu'il a trouvé des [data-reveal] et qu'il est
 * prêt à les observer.
 */

html.has-reveal-js [data-reveal] {
  will-change: opacity, transform;
  transition:
    opacity 0.65s cubic-bezier(0.2, 0, 0.2, 1),
    transform 0.8s cubic-bezier(0.2, 0, 0.2, 1);
}

html.has-reveal-js [data-reveal]:not(.is-revealed) {
  opacity: 0;
  transform: translateY(28px);
}

html.has-reveal-js [data-reveal="card"]:not(.is-revealed) {
  transform: translateY(36px) scale(0.97);
}

html.has-reveal-js [data-reveal="wipe"] {
  will-change: clip-path;
  transition: clip-path 0.9s cubic-bezier(0.2, 0, 0.2, 1);
}

html.has-reveal-js [data-reveal="wipe"]:not(.is-revealed) {
  opacity: 1;
  transform: none;
  clip-path: inset(0 100% 0 0);
}

html.has-reveal-js [data-reveal].is-revealed {
  opacity: 1;
  transform: none;
}

html.has-reveal-js [data-reveal="wipe"].is-revealed {
  clip-path: inset(0 0 0 0);
}

@media (prefers-reduced-motion: reduce) {
  html.has-reveal-js [data-reveal] {
    transition: none !important;
    opacity: 1 !important;
    transform: none !important;
    clip-path: inset(0 0 0 0) !important;
  }
}
