/* Animations discrètes : apparition au défilement, texte du hero, photo, compteurs.
   Toutes désactivées pour les visiteurs qui ont demandé moins d'animations (prefers-reduced-motion). */
@media (prefers-reduced-motion: no-preference) {

  /* Apparition au défilement (les attributs data-reveal sont posés par animations.js) */
  .js [data-reveal] {
    opacity: 0;
    transform: translate3d(0, 28px, 0);
    transition: opacity .9s cubic-bezier(.22, .61, .36, 1), transform .9s cubic-bezier(.22, .61, .36, 1);
    transition-delay: var(--rd, 0ms);
  }
  .js [data-reveal="fade"] { transform: none; }
  .js [data-reveal].is-visible { opacity: 1; transform: none; }

  /* Photo : un voile se lève et l'image se pose (l'effet est sur l'image, pas sur son cadre) */
  .js .maison-photo[data-reveal] { opacity: 1; transform: none; transition: none; }
  .js .maison-photo[data-reveal] img {
    clip-path: inset(0 0 100% 0);
    transform: scale(1.12);
    transition: clip-path 1.2s cubic-bezier(.22, .61, .36, 1) var(--rd, 0ms), transform 1.8s cubic-bezier(.22, .61, .36, 1) var(--rd, 0ms);
  }
  .js .maison-photo[data-reveal].is-visible img { clip-path: inset(0 0 0 0); transform: scale(1); }

  /* Hero : les textes montent l'un après l'autre au chargement */
  .js .hero .eyebrow,
  .js .hero h1,
  .js .hero-aside > * {
    animation: cc-rise 1.1s cubic-bezier(.22, .61, .36, 1) backwards;
  }
  .js .hero .eyebrow { animation-delay: .15s; }
  .js .hero h1 { animation-delay: .3s; }
  .js .hero-aside > :nth-child(1) { animation-delay: .6s; }
  .js .hero-aside > :nth-child(2) { animation-delay: .75s; }
  .js .hero-aside > :nth-child(3) { animation-delay: .9s; }

  @keyframes cc-rise {
    from { opacity: 0; transform: translate3d(0, 26px, 0); }
    to   { opacity: 1; transform: none; }
  }
}
