/* ============================================
   Belle Époque Atelier — Animation utility classes
   GSAP handles the entrance — these are starting states
   ============================================ */

/* Reveal: starts hidden, GSAP animates to visible */
.reveal {
  opacity: 0;
  transform: translateY(40px);
  will-change: transform, opacity;
}

.reveal-fade {
  opacity: 0;
  will-change: opacity;
}

.reveal-left {
  opacity: 0;
  transform: translateX(-40px);
  will-change: transform, opacity;
}

.reveal-right {
  opacity: 0;
  transform: translateX(40px);
  will-change: transform, opacity;
}

.reveal-scale {
  opacity: 0;
  transform: scale(0.96);
  will-change: transform, opacity;
}

/* Stagger children container — GSAP reads child .reveal items */
[data-stagger] > .reveal,
[data-stagger] > .reveal-fade {
  /* keep starting state */
}

/* For hero entrance specifically */
.hero__display,
.hero__sub,
.hero__eiffel-mark,
.hero__eyebrow {
  opacity: 0;
  transform: translateY(30px);
  will-change: transform, opacity;
}

.hero__scroll-cue { opacity: 0; will-change: opacity; }
.hero__seal { opacity: 0; will-change: opacity, transform; }

/* Parallax helper */
.parallax { will-change: transform; }

/* Counter target */
.counter { display: inline-block; }

/* Disable heavy effects on small screens */
@media (max-width: 768px) {
  .parallax { transform: none !important; }
}

/* Respect reduced motion: instant reveal */
@media (prefers-reduced-motion: reduce) {
  .reveal,
  .reveal-fade,
  .reveal-left,
  .reveal-right,
  .reveal-scale,
  .hero__display,
  .hero__sub,
  .hero__eyebrow,
  .hero__eiffel-mark,
  .hero__scroll-cue,
  .hero__seal {
    opacity: 1 !important;
    transform: none !important;
  }
}
