/* Motion helpers */
:root {
  --motion-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --motion-duration: 700ms;
  --motion-stagger: 80ms;
}

/* Smooth anchor scrolling */
html {
  scroll-behavior: smooth;
}

/* Reveal on scroll */
.fx-reveal {
  opacity: 0;
  transform: translateY(22px);
  transition:
    opacity var(--motion-duration) var(--motion-ease),
    transform var(--motion-duration) var(--motion-ease);
  will-change: opacity, transform;
}

.fx-reveal.fx-reveal--left { transform: translateX(-22px); }
.fx-reveal.fx-reveal--right { transform: translateX(22px); }
.fx-reveal.fx-reveal--scale { transform: translateY(10px) scale(0.98); }

.fx-reveal.is-inview {
  opacity: 1;
  transform: none;
}

.fx-reveal[data-delay] {
  transition-delay: var(--delay, 0ms);
}

/* Subtle float animation (hero blob) */
@keyframes floatY {
  0%, 100% { transform: translateY(0px); }
  50% { transform: translateY(-8px); }
}

.hero__blob {
  animation: floatY 6s var(--motion-ease) infinite;
}

/* Micro interactions */
.btn,
.hero__social-icon,
.stack__container-box,
.offerings__content,
.case__content,
.article__card,
.reach__information {
  transition:
    transform 180ms var(--motion-ease),
    box-shadow 220ms var(--motion-ease),
    background-color 220ms var(--motion-ease),
    border-color 220ms var(--motion-ease);
}

.btn:hover {
  transform: translateY(-2px);
}

.hero__social-icon:hover {
  transform: translateY(-3px);
}

.offerings__content:hover,
.case__content:hover,
.article__card:hover {
  transform: translateY(-4px);
}

/* Lift + shadow on hover */
.offerings__content:hover,
.case__content:hover,
.article__card:hover {
  box-shadow: 0 14px 30px rgba(0, 0, 0, 0.16);
}

.btn:hover {
  box-shadow: 0 10px 22px rgba(0, 0, 0, 0.14);
}

/* Respect reduced motion */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .fx-reveal { transition: none; }
  .hero__blob { animation: none; }
  .btn,
  .hero__social-icon,
  .stack__container-box,
  .offerings__content,
  .case__content,
  .article__card,
  .reach__information {
    transition: none;
  }
}