/* ============================================================
   Au Cœur de la Grâce — animations d'apparition (effets variés, sûrs)
   .acg-r = état initial (ajouté par JS) ; .in = révélé.
   IMPORTANT : l'état révélé (.in) est déclaré APRÈS les effets et
   en !important → il gagne toujours (sinon transform/filter résiduels).
   Aucune translation horizontale → pas de débordement mobile.
   ============================================================ */
.acg-r{
  opacity:0;
  transition:opacity .8s cubic-bezier(.22,1,.36,1),
             transform .8s cubic-bezier(.22,1,.36,1),
             filter .8s ease;
  will-change:opacity, transform;
}

/* — états initiaux par effet (verticaux / sur place uniquement) — */
.acg-r.up{    transform:translateY(34px); }
.acg-r.rise{  transform:translateY(60px); }
.acg-r.zoom{  transform:scale(.84); }
.acg-r.blur{  filter:blur(6px); transform:translateY(14px); }
.acg-r.tilt{  transform:perspective(1100px) rotateX(13deg) translateY(46px); transform-origin:center bottom; }
.acg-r.pop{   transform:translateY(26px) scale(.93);
              transition:opacity .7s ease, transform .8s cubic-bezier(.34,1.56,.64,1), filter .7s ease; }

/* — état RÉVÉLÉ : déclaré en dernier + !important pour battre les effets ci-dessus — */
.acg-r.in{ opacity:1 !important; transform:none !important; filter:none !important; }

@media (prefers-reduced-motion: reduce){
  .acg-r{ opacity:1 !important; transform:none !important; filter:none !important; transition:none !important; }
  .acg-hero-slide.active img{ animation:none !important; }
}

/* ── Hero : effet Ken Burns (zoom lent) sur la photo active ── */
.acg-hero-slide.active img{ animation:acgKenBurns 7.5s ease-out both; }
@keyframes acgKenBurns{ from{ transform:scale(1.001); } to{ transform:scale(1.09); } }
