/* ==========================================================================
   Scroll reveal — transform only, NEVER opacity:0 as the base state
   (keeps content visible for headless renders / crawlers / JS failures)
   ========================================================================== */
.reveal{
  opacity: 1;
  transform: translateY(28px);
  transition: transform 700ms var(--ease-out);
}
.reveal.is-visible{ transform: translateY(0); }

.reveal-side{ opacity: 1; transform: translateX(-32px); transition: transform 700ms var(--ease-out); }
.reveal-side.is-visible{ transform: translateX(0); }
.reveal-side--right{ transform: translateX(32px); }
.reveal-side--right.is-visible{ transform: translateX(0); }

@media (prefers-reduced-motion: reduce){
  .reveal, .reveal-side{ transition: none !important; transform: none !important; }
}

/* keep off-screen reveal transforms from ever creating a horizontal scrollbar */
html{ overflow-x: hidden; }

/* ==========================================================================
   Micro-interactions
   ========================================================================== */
a, .btn, .service-card, .pslider__arrow, .menu-toggle, .mobile-drawer__close{
  -webkit-tap-highlight-color: transparent;
}
