/* OubaZ Digital — apparitions au défilement (sobres, ciblées)
   Principe : seuls les éléments marqués data-reveal sont animés ; opacité + léger
   déplacement uniquement (pas de décalage de mise en page). Sans JavaScript, ou si
   le visiteur préfère moins d'animations, tout reste visible normalement. */

html.js [data-reveal] {
  transition:
    opacity .65s cubic-bezier(.2, .7, .2, 1) var(--rv-d, 0ms),
    transform .65s cubic-bezier(.2, .7, .2, 1) var(--rv-d, 0ms);
}
html.js [data-reveal]:not(.is-in) {
  opacity: 0;
  transform: translate3d(0, 22px, 0);
  will-change: opacity, transform;
}
html.js [data-reveal="zoom"]:not(.is-in) { transform: translate3d(0, 14px, 0) scale(.97); }
html.js [data-reveal="fade"]:not(.is-in) { transform: none; }
html.js [data-reveal].is-in { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  html.js [data-reveal], html.js [data-reveal]:not(.is-in) {
    opacity: 1 !important; transform: none !important; transition: none !important;
  }
}
@media print {
  html.js [data-reveal], html.js [data-reveal]:not(.is-in) {
    opacity: 1 !important; transform: none !important; transition: none !important;
  }
}
