/* Animation d'entrée au montage — identique mot pour mot dans le <head>
   de TOUTES les pages de la maquette source (vérifié sur index.html,
   artiste-zhang-xiao.html, exposition-chromatographies.html). Le site
   d'origine cible #dc-root (racine du montage React) ; notre thème rend
   les <section>/<footer> en enfants directs de <body>, donc on cible
   `body > section`/`body > footer` à la place — structure équivalente,
   même résultat visuel. */
@keyframes ev-rise { from { opacity: 0; transform: translateY(28px); } to { opacity: 1; transform: none; } }
@keyframes ev-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes ev-zoom { from { opacity: 0; transform: scale(1.08); } to { opacity: 1; transform: scale(1); } }

body > section > *, body > footer > * { animation: ev-rise 800ms cubic-bezier(.2,0,.2,1) both; }
body > section > [style*="absolute"] { animation: ev-fade 900ms cubic-bezier(.2,0,.2,1) both; }
body > section > img[style*="absolute"] { animation: ev-zoom 1800ms cubic-bezier(.2,0,.2,1) both; }
body > section:has(> img[style*="absolute"]) { overflow: hidden; }

body > section > :nth-child(2), body > footer > :nth-child(2) { animation-delay: 90ms; }
body > section > :nth-child(3), body > footer > :nth-child(3) { animation-delay: 180ms; }
body > section > :nth-child(4), body > footer > :nth-child(4) { animation-delay: 270ms; }
body > section > :nth-child(5) { animation-delay: 360ms; }
body > section > :nth-child(6) { animation-delay: 450ms; }

@media (prefers-reduced-motion: reduce) {
  body > section > *, body > footer > *,
  body > section > [style*="absolute"],
  body > section > img[style*="absolute"] {
    animation: none;
  }
}
