/* Reveal suave no scroll.
   Estado inicial (escondido) só vale com .anim no <html>, setado no head apenas
   quando há JS E o usuário não pediu menos movimento. Sem JS / reduced-motion = visível normal. */

.anim .section-eyebrow,
.anim .section-title,
.anim .section-lead,
.anim .about-highlight,
.anim .about-image,
.anim .stat,
.anim .service-card,
.anim .material,
.anim .gallery-item,
.anim .stone-item,
.anim .client-logo,
.anim .clients-reviews-label,
.anim .faq-item {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.7s ease, transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
  /* will-change é aplicado pelo reveal.js só durante a transição e removido ao
     terminar; mantê-lo fixo aqui prenderia uma camada de composição por elemento. */
}

/* Estado revelado (vence o inicial por vir depois com mesma especificidade) */
.anim .reveal-in {
  opacity: 1 !important;
  transform: none !important;
}
