/* Scroll snap & reveal animations */

html {
  scroll-behavior: smooth;
  scroll-snap-type: y mandatory;
}

main > section,
main > .snap-section {
  scroll-snap-align: start;
  scroll-snap-stop: always;
  scroll-margin-top: var(--header-height);
}

body.nav-open {
  overflow: hidden;
}

html.nav-open {
  scroll-snap-type: none;
}

@media (max-width: 768px) {
  html { scroll-snap-type: y proximity; }
}

/* Reveal – progressive enhancement: visible without JS */
.reveal {
  opacity: 1;
  transform: none;
}

html.js .reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.65s cubic-bezier(0.22, 1, 0.36, 1),
              transform 0.65s cubic-bezier(0.22, 1, 0.36, 1);
}

html.js .reveal.is-visible {
  opacity: 1;
  transform: none;
}

html.js .reveal--left {
  transform: translateX(-28px);
}

html.js .reveal--left.is-visible {
  transform: none;
}

html.js .reveal--scale {
  transform: scale(0.96);
}

html.js .reveal--scale.is-visible {
  transform: none;
}

html.js .reveal--fade {
  transform: none;
}

html.js .reveal-stagger > .reveal-child,
html.js .reveal-stagger > .card,
html.js .reveal-stagger > .process-step,
html.js .reveal-stagger > .metric-card,
html.js .reveal-stagger > .reference-card,
html.js .reveal-stagger > .article-card,
html.js .reveal-stagger > .product-card,
html.js .reveal-stagger > .plugin-card,
html.js .reveal-stagger > a.card {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.5s cubic-bezier(0.22, 1, 0.36, 1),
              transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

html.js .reveal-stagger.is-visible > .reveal-child,
html.js .reveal-stagger.is-visible > .card,
html.js .reveal-stagger.is-visible > .process-step,
html.js .reveal-stagger.is-visible > .metric-card,
html.js .reveal-stagger.is-visible > .reference-card,
html.js .reveal-stagger.is-visible > .article-card,
html.js .reveal-stagger.is-visible > .product-card,
html.js .reveal-stagger.is-visible > .plugin-card,
html.js .reveal-stagger.is-visible > a.card {
  opacity: 1;
  transform: none;
}

.reveal-stagger.is-visible > *:nth-child(1) { transition-delay: 0ms; }
.reveal-stagger.is-visible > *:nth-child(2) { transition-delay: 60ms; }
.reveal-stagger.is-visible > *:nth-child(3) { transition-delay: 120ms; }
.reveal-stagger.is-visible > *:nth-child(4) { transition-delay: 180ms; }
.reveal-stagger.is-visible > *:nth-child(5) { transition-delay: 240ms; }
.reveal-stagger.is-visible > *:nth-child(6) { transition-delay: 300ms; }
.reveal-stagger.is-visible > *:nth-child(7) { transition-delay: 360ms; }
.reveal-stagger.is-visible > *:nth-child(8) { transition-delay: 420ms; }
.reveal-stagger.is-visible > *:nth-child(9) { transition-delay: 480ms; }

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
    scroll-snap-type: none;
  }

  .reveal,
  .reveal--left,
  .reveal--scale,
  .reveal--fade,
  .reveal-stagger > * {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}
