/* ---------------------------------------------------------------
   SD Serrurerie Dépannage — animations d'apparition au scroll
   Léger, sans dépendance, respecte prefers-reduced-motion.
   Fonctionne avec animations.js (IntersectionObserver).
--------------------------------------------------------------- */

.reveal{
  opacity:0;
  transform:translateY(22px);
  transition:opacity 0.7s cubic-bezier(.22,.68,.32,1),
             transform 0.7s cubic-bezier(.22,.68,.32,1);
  will-change:opacity, transform;
}
.reveal.is-visible{
  opacity:1;
  transform:none;
}

/* Variante zoom léger, utilisée pour les photos/médias */
.reveal-img{
  opacity:0;
  transform:scale(0.97);
  transition:opacity 0.8s ease, transform 0.8s cubic-bezier(.22,.68,.32,1);
  will-change:opacity, transform;
}
.reveal-img.is-visible{
  opacity:1;
  transform:none;
}

/* Variante glissement latéral, utilisée pour certaines listes */
.reveal-left{
  opacity:0;
  transform:translateX(-24px);
  transition:opacity 0.7s ease, transform 0.7s cubic-bezier(.22,.68,.32,1);
}
.reveal-left.is-visible{
  opacity:1;
  transform:none;
}

/* Celui-ci ne bouge pas mais fait un fondu pur (pour les longs blocs de texte) */
.reveal-fade{
  opacity:0;
  transition:opacity 0.9s ease;
}
.reveal-fade.is-visible{
  opacity:1;
}

/* Personne ne préfère les animations ? On les coupe toutes proprement. */
@media (prefers-reduced-motion: reduce){
  .reveal, .reveal-img, .reveal-left, .reveal-fade{
    opacity:1 !important;
    transform:none !important;
    transition:none !important;
  }
}
