/* Reveal au scroll (IntersectionObserver dans animations.js) */
.reveal {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity .65s cubic-bezier(.16,.84,.44,1), transform .65s cubic-bezier(.16,.84,.44,1);
  will-change: opacity, transform;
}
.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Stagger sur cards */
.reveal[data-delay="1"] { transition-delay: 0.08s; }
.reveal[data-delay="2"] { transition-delay: 0.16s; }
.reveal[data-delay="3"] { transition-delay: 0.24s; }
.reveal[data-delay="4"] { transition-delay: 0.32s; }

/* Stars qui s'allument une a une */
.avis-stars svg { opacity: 0; transform: scale(0.5); transition: opacity .3s ease, transform .35s cubic-bezier(.16,.84,.44,1); }
.avis-stars.is-lit svg { opacity: 1; transform: scale(1); }
.avis-stars.is-lit svg:nth-child(1) { transition-delay: 0s; }
.avis-stars.is-lit svg:nth-child(2) { transition-delay: 0.1s; }
.avis-stars.is-lit svg:nth-child(3) { transition-delay: 0.2s; }
.avis-stars.is-lit svg:nth-child(4) { transition-delay: 0.3s; }
.avis-stars.is-lit svg:nth-child(5) { transition-delay: 0.4s; }

/* Compteur stats */
.stat-num[data-target] { display: inline-block; }

@media (prefers-reduced-motion: reduce) {
  .reveal,
  .reveal.is-visible,
  .avis-stars svg,
  .hero-meta .dot,
  .photo-frame.is-tilt-l,
  .photo-frame.is-tilt-r {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
    transition: none !important;
  }
}
