/**
 * Cinematic scroll reveal for home page sections.
 * Pair with js/fade-section.js — adds .is-visible when a section enters the viewport.
 */

:root {
  --fade-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --fade-duration: 1.05s;
  --fade-card-duration: 0.95s;
  --fade-distance: 46px;
  --fade-distance-sm: 32px;
  --fade-stagger: 0.18s;
}

/* Section wrapper stays in layout; children animate in */
.fade-section {
  opacity: 1;
  transform: none;
}

/* ── Shared header reveal (eyebrow → heading → subheading) ── */
.fade-section [class*="-eyebrow"],
.fade-section [class$="-subheading"],
.fade-section .pain-heading,
.fade-section .pain-subheading,
.fade-section .ds-heading,
.fade-section .ds-eyebrow,
.fade-section [class$="-heading"]:not([class*="item-heading"]):not(.cta-heading) {
  opacity: 0;
  transform: translateY(var(--fade-distance-sm));
  transition:
    opacity var(--fade-duration) var(--fade-ease),
    transform var(--fade-duration) var(--fade-ease);
  will-change: opacity, transform;
}

.fade-section.is-visible [class*="-eyebrow"],
.fade-section.is-visible .ds-eyebrow {
  opacity: 1;
  transform: translateY(0);
  transition-delay: calc(var(--fade-stagger) * 1);
}

.fade-section.is-visible [class$="-heading"]:not([class*="item-heading"]):not(.cta-heading),
.fade-section.is-visible .pain-heading,
.fade-section.is-visible .ds-heading {
  opacity: 1;
  transform: translateY(0);
  transition-delay: calc(var(--fade-stagger) * 2);
}

.fade-section.is-visible [class$="-subheading"],
.fade-section.is-visible .pain-subheading {
  opacity: 1;
  transform: translateY(0);
  transition-delay: calc(var(--fade-stagger) * 3);
}

/* ── Card / grid item stagger ── */
.fade-card {
  opacity: 0;
  transform: translateY(var(--fade-distance));
  transition:
    opacity var(--fade-card-duration) var(--fade-ease),
    transform var(--fade-card-duration) var(--fade-ease);
  will-change: opacity, transform;
}

.fade-section.is-visible .fade-card {
  opacity: 1;
  transform: translateY(0);
}

.fade-section.is-visible .fade-card:nth-child(1) { transition-delay: calc(var(--fade-stagger) * 4); }
.fade-section.is-visible .fade-card:nth-child(2) { transition-delay: calc(var(--fade-stagger) * 5); }
.fade-section.is-visible .fade-card:nth-child(3) { transition-delay: calc(var(--fade-stagger) * 6); }
.fade-section.is-visible .fade-card:nth-child(4) { transition-delay: calc(var(--fade-stagger) * 7); }
.fade-section.is-visible .fade-card:nth-child(5) { transition-delay: calc(var(--fade-stagger) * 8); }
.fade-section.is-visible .fade-card:nth-child(6) { transition-delay: calc(var(--fade-stagger) * 9); }
.fade-section.is-visible .fade-card:nth-child(7) { transition-delay: calc(var(--fade-stagger) * 10); }
.fade-section.is-visible .fade-card:nth-child(8) { transition-delay: calc(var(--fade-stagger) * 11); }
.fade-section.is-visible .fade-card:nth-child(9) { transition-delay: calc(var(--fade-stagger) * 12); }
.fade-section.is-visible .fade-card:nth-child(10) { transition-delay: calc(var(--fade-stagger) * 13); }

/* ── Trusted logos & reference tags ── */
.fade-section .fade-logo,
.fade-section .fade-tag {
  opacity: 0;
  transform: translateY(28px);
  transition:
    opacity var(--fade-card-duration) var(--fade-ease),
    transform var(--fade-card-duration) var(--fade-ease);
  will-change: opacity, transform;
}

.fade-section.is-visible .fade-logo:nth-child(1) { opacity: 1; transform: translateY(0); transition-delay: calc(var(--fade-stagger) * 4); }
.fade-section.is-visible .fade-logo:nth-child(2) { opacity: 1; transform: translateY(0); transition-delay: calc(var(--fade-stagger) * 5); }
.fade-section.is-visible .fade-logo:nth-child(3) { opacity: 1; transform: translateY(0); transition-delay: calc(var(--fade-stagger) * 6); }
.fade-section.is-visible .fade-logo:nth-child(4) { opacity: 1; transform: translateY(0); transition-delay: calc(var(--fade-stagger) * 7); }
.fade-section.is-visible .fade-logo:nth-child(5) { opacity: 1; transform: translateY(0); transition-delay: calc(var(--fade-stagger) * 8); }
.fade-section.is-visible .fade-logo:nth-child(6) { opacity: 1; transform: translateY(0); transition-delay: calc(var(--fade-stagger) * 9); }

.fade-section.is-visible .fade-tag:nth-child(1) { opacity: 1; transform: translateY(0); transition-delay: calc(var(--fade-stagger) * 1); }
.fade-section.is-visible .fade-tag:nth-child(2) { opacity: 1; transform: translateY(0); transition-delay: calc(var(--fade-stagger) * 2); }
.fade-section.is-visible .fade-tag:nth-child(3) { opacity: 1; transform: translateY(0); transition-delay: calc(var(--fade-stagger) * 3); }
.fade-section.is-visible .fade-tag:nth-child(4) { opacity: 1; transform: translateY(0); transition-delay: calc(var(--fade-stagger) * 4); }
.fade-section.is-visible .fade-tag:nth-child(5) { opacity: 1; transform: translateY(0); transition-delay: calc(var(--fade-stagger) * 5); }
.fade-section.is-visible .fade-tag:nth-child(6) { opacity: 1; transform: translateY(0); transition-delay: calc(var(--fade-stagger) * 6); }
.fade-section.is-visible .fade-tag:nth-child(7) { opacity: 1; transform: translateY(0); transition-delay: calc(var(--fade-stagger) * 7); }
.fade-section.is-visible .fade-tag:nth-child(8) { opacity: 1; transform: translateY(0); transition-delay: calc(var(--fade-stagger) * 8); }

.fade-section .fade-trusted-label {
  opacity: 0;
  transform: translateY(var(--fade-distance-sm));
  transition:
    opacity var(--fade-duration) var(--fade-ease),
    transform var(--fade-duration) var(--fade-ease);
  will-change: opacity, transform;
}

.fade-section.is-visible .fade-trusted-label {
  opacity: 1;
  transform: translateY(0);
  transition-delay: calc(var(--fade-stagger) * 1);
}

@media (prefers-reduced-motion: reduce) {
  .fade-section,
  .fade-section [class*="-eyebrow"],
  .fade-section [class$="-subheading"],
  .fade-section [class$="-heading"],
  .fade-section .pain-heading,
  .fade-section .pain-subheading,
  .fade-section .ds-heading,
  .fade-section .ds-eyebrow,
  .fade-card,
  .fade-logo,
  .fade-tag,
  .fade-trusted-label {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}
