(() => { "use strict"; const elements = Array.from( document.querySelectorAll(".reveal-up, .reveal-left, .reveal-right, .reveal-scale") ); if (!elements.length) return; const reducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches; elements.forEach((element, index) => { const group = element.closest(".row, .stats-row, section") || document.body; const peers = Array.from( group.querySelectorAll(":scope > .reveal-up, :scope > .reveal-left, :scope > .reveal-right, :scope > .reveal-scale") ); const peerIndex = Math.max(0, peers.indexOf(element)); element.style.transitionDelay = `${Math.min(peerIndex, 4) * 70}ms`; element.dataset.revealIndex = String(index); }); const reveal = (element) => element.classList.add("is-visible"); if (reducedMotion || !("IntersectionObserver" in window)) { elements.forEach(reveal); return; } const observer = new IntersectionObserver( (entries, currentObserver) => { entries.forEach((entry) => { if (!entry.isIntersecting) return; reveal(entry.target); currentObserver.unobserve(entry.target); }); }, { rootMargin: "0px 0px -9%", threshold: 0.08 } ); elements.forEach((element) => observer.observe(element)); // The hero must never remain hidden while the page initializes. document.querySelectorAll(".hero-section .reveal-up, .hero-section .reveal-scale").forEach(reveal); })();