/* ================================================================
   Loisirs Aménagements — Animations
   Déclenchées après window.load (body.loaded) pour éviter que
   les animations partent avant le chargement des images.
   ================================================================ */

@keyframes fadeUp {
  from { opacity: 0; transform: translateY(36px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* État initial : invisible jusqu'au chargement complet */
header,
.hero,
.about,
.photo-grid,
.cat-card,
.legal-page { opacity: 0; }

/* Animations déclenchées dès que body.loaded est ajouté */
body.loaded header {
  animation: fadeIn .6s cubic-bezier(.4,0,.2,1) both;
}
body.loaded .hero {
  animation: fadeUp .75s cubic-bezier(.4,0,.2,1) .12s both;
}
body.loaded .about {
  animation: fadeUp .75s cubic-bezier(.4,0,.2,1) .22s both;
}
body.loaded .photo-grid {
  animation: fadeUp .75s cubic-bezier(.4,0,.2,1) .32s both;
}
body.loaded .cat-card:nth-child(1) { animation: fadeUp .65s cubic-bezier(.4,0,.2,1) .28s both; }
body.loaded .cat-card:nth-child(2) { animation: fadeUp .65s cubic-bezier(.4,0,.2,1) .40s both; }
body.loaded .cat-card:nth-child(3) { animation: fadeUp .65s cubic-bezier(.4,0,.2,1) .52s both; }
body.loaded .legal-page {
  animation: fadeUp .7s cubic-bezier(.4,0,.2,1) .15s both;
}
