/* =========================================================
   Site animations — scroll reveal, hover micro, hero load
   No per-page markup needed; JS auto-tags elements.
   ========================================================= */

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

/* ---------- Scroll reveal (IntersectionObserver) ---------- */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .7s cubic-bezier(.22,.61,.36,1),
              transform .7s cubic-bezier(.22,.61,.36,1);
  will-change: opacity, transform;
}
.reveal.is-visible { opacity: 1; transform: none; }

/* directional variants */
.reveal.reveal-left  { transform: translateX(-40px); }
.reveal.reveal-right { transform: translateX(40px); }
.reveal.reveal-zoom  { transform: scale(.92); }
.reveal.reveal-left.is-visible,
.reveal.reveal-right.is-visible,
.reveal.reveal-zoom.is-visible { transform: none; }

/* stagger children inside a revealed row */
.reveal-stagger > * {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity .6s cubic-bezier(.22,.61,.36,1),
              transform .6s cubic-bezier(.22,.61,.36,1);
}
.reveal-stagger.is-visible > * { opacity: 1; transform: none; }
.reveal-stagger.is-visible > *:nth-child(1) { transition-delay: .05s; }
.reveal-stagger.is-visible > *:nth-child(2) { transition-delay: .13s; }
.reveal-stagger.is-visible > *:nth-child(3) { transition-delay: .21s; }
.reveal-stagger.is-visible > *:nth-child(4) { transition-delay: .29s; }
.reveal-stagger.is-visible > *:nth-child(5) { transition-delay: .37s; }
.reveal-stagger.is-visible > *:nth-child(6) { transition-delay: .45s; }
.reveal-stagger.is-visible > *:nth-child(7) { transition-delay: .53s; }
.reveal-stagger.is-visible > *:nth-child(8) { transition-delay: .61s; }

/* ---------- Hover micro-interactions ---------- */
.btn, button.btn, a.btn {
  transition: transform .25s ease, box-shadow .25s ease, filter .25s ease;
}
.btn:hover, button.btn:hover, a.btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 22px rgba(0,0,0,.16);
  filter: brightness(1.03);
}
.btn:active, button.btn:active, a.btn:active { transform: translateY(0); }

/* cards / boxes lift */
.automationBox, .card, .product-grid, .service-box, .feature-box {
  transition: transform .3s cubic-bezier(.22,.61,.36,1), box-shadow .3s ease;
}
.automationBox:hover, .card:hover, .product-grid:hover,
.service-box:hover, .feature-box:hover {
  transform: translateY(-6px);
  box-shadow: 0 14px 32px rgba(0,0,0,.12);
}

/* image zoom inside hover containers */
.hover-zoom { overflow: hidden; }
.hover-zoom img { transition: transform .5s cubic-bezier(.22,.61,.36,1); }
.hover-zoom:hover img { transform: scale(1.06); }

/* ---------- Hero / page-load animation ---------- */
@keyframes heroUp {
  from { opacity: 0; transform: translateY(36px); }
  to   { opacity: 1; transform: none; }
}
.hero-load { opacity: 0; }
.hero-load.hero-in { animation: heroUp .9s cubic-bezier(.22,.61,.36,1) forwards; }
.hero-load.hero-in.d1 { animation-delay: .12s; }
.hero-load.hero-in.d2 { animation-delay: .24s; }
.hero-load.hero-in.d3 { animation-delay: .36s; }
