.reveal,
.reveal-left,
.reveal-right,
.reveal-scale {
  opacity: 0;
  will-change: opacity, transform;
  transition:
    opacity 1.45s cubic-bezier(0.16, 1, 0.3, 1),
    transform 1.45s cubic-bezier(0.16, 1, 0.3, 1);
}

.reveal {
  transform: translate3d(0, 56px, 0);
}

.reveal.is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.reveal-left {
  transform: translate3d(-48px, 28px, 0);
}

.reveal-left.is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.reveal-right {
  transform: translate3d(48px, 28px, 0);
}

.reveal-right.is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.reveal-scale {
  transform: translate3d(0, 40px, 0) scale(0.96);
}

.reveal-scale.is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0) scale(1);
}

.reveal-delay-1 { transition-delay: 0.14s; }
.reveal-delay-2 { transition-delay: 0.26s; }
.reveal-delay-3 { transition-delay: 0.38s; }
.reveal-delay-4 { transition-delay: 0.5s; }
.reveal-delay-5 { transition-delay: 0.62s; }
.reveal-delay-6 { transition-delay: 0.74s; }
.reveal-delay-7 { transition-delay: 0.86s; }
.reveal-delay-8 { transition-delay: 0.98s; }
.reveal-delay-9 { transition-delay: 1.1s; }
.reveal-delay-10 { transition-delay: 1.22s; }
.reveal-delay-11 { transition-delay: 1.34s; }
.reveal-delay-12 { transition-delay: 1.46s; }

/* Service cards — one-by-one entrance */
.services .service-card {
  opacity: 0;
  transform: translate3d(0, 40px, 0);
  transition:
    opacity 0.85s cubic-bezier(0.16, 1, 0.3, 1),
    transform 0.85s cubic-bezier(0.16, 1, 0.3, 1),
    box-shadow 0.3s ease,
    border-color 0.3s ease;
}

.services .service-card.is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.services .service-card.is-visible:hover {
  transform: translate3d(0, -6px, 0);
}

@media (prefers-reduced-motion: reduce) {
  .services .service-card {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

.hero-content.reveal {
  transform: none;
  opacity: 1;
  transition: none;
}

.hero-content.reveal.is-visible {
  transition-duration: 0s;
}

/* Title scroll reveal (Appinventiv-style mask) */
.title-animate {
  overflow: visible;
}

.title-animate .title-word {
  display: inline-block;
  overflow: hidden;
  vertical-align: bottom;
  padding-bottom: 0.06em;
  margin-bottom: -0.06em;
  white-space: pre;
}

.title-animate .title-word-inner {
  display: inline-block;
  transform: translate3d(0, 110%, 0);
  transition: transform 1.1s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: transform;
}

.title-animate.is-inview .title-word-inner {
  transform: translate3d(0, 0, 0);
}

.hero-content .btn-hero-cta {
  opacity: 0;
  transform: translate3d(0, 20px, 0);
  transition:
    opacity 0.9s cubic-bezier(0.16, 1, 0.3, 1) 0.55s,
    transform 0.9s cubic-bezier(0.16, 1, 0.3, 1) 0.55s;
}

.hero-content.is-inview .btn-hero-cta {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.section-label.label-animate {
  opacity: 0;
  transform: translate3d(0, 16px, 0);
  transition:
    opacity 0.9s cubic-bezier(0.16, 1, 0.3, 1),
    transform 0.9s cubic-bezier(0.16, 1, 0.3, 1);
}

.section-label.label-animate.is-inview {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

@media (prefers-reduced-motion: reduce) {
  .reveal,
  .reveal-left,
  .reveal-right,
  .reveal-scale {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .title-animate .title-word-inner,
  .section-label.label-animate,
  .hero-content .btn-hero-cta {
    opacity: 1;
    transform: none;
    transition: none;
  }

  html.lenis {
    scroll-behavior: auto;
  }
}

