(() => { const header = document.querySelector('[data-header]'); const toggle = document.querySelector('[data-nav-toggle]'); const nav = document.querySelector('[data-nav]'); const backdrop = document.querySelector('[data-nav-backdrop]'); const onScroll = () => header?.classList.toggle('is-scrolled', window.scrollY > 18); onScroll(); window.addEventListener('scroll', onScroll, { passive: true }); const setNav = (open) => { if (!toggle || !nav) return; nav.classList.toggle('is-open', open); toggle.classList.toggle('is-open', open); toggle.setAttribute('aria-expanded', String(open)); toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu'); document.body.classList.toggle('no-scroll', open); document.body.classList.toggle('nav-open', open); if (backdrop) backdrop.tabIndex = open ? 0 : -1; }; if (toggle && nav) { toggle.addEventListener('click', () => setNav(!nav.classList.contains('is-open'))); backdrop?.addEventListener('click', () => setNav(false)); nav.querySelectorAll('a').forEach(link => link.addEventListener('click', () => setNav(false))); document.addEventListener('keydown', (event) => { if (event.key === 'Escape') setNav(false); }); window.addEventListener('resize', () => { if (window.innerWidth > 860) setNav(false); }); } const revealTargets = document.querySelectorAll('.destination-card,.home-destination-card,.tour-card,.experience-card,.impact-project,.metric-grid article,.home-story-points a'); if ('IntersectionObserver' in window) { const observer = new IntersectionObserver(entries => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.animate([ { opacity: 0, transform: 'translateY(18px)' }, { opacity: 1, transform: 'translateY(0)' } ], { duration: 520, easing: 'cubic-bezier(.2,.7,.2,1)', fill: 'both' }); observer.unobserve(entry.target); } }); }, { threshold: .08 }); revealTargets.forEach(el => observer.observe(el)); } })();