const reveals = document.querySelectorAll(".reveal"); const observer = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { entry.target.classList.add("on"); observer.unobserve(entry.target); } }); }, { threshold: 0.18 } ); reveals.forEach((item, idx) => { item.style.transitionDelay = `${Math.min(idx * 45, 280)}ms`; observer.observe(item); }); const navLinks = document.querySelectorAll(".main-nav a"); const sectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { navLinks.forEach((link) => { link.classList.toggle("active", link.getAttribute("href") === `#${entry.target.id}`); }); } }); }, { threshold: 0.55 } ); ["approach", "services", "cases", "contacts"].forEach((id) => { const section = document.getElementById(id); if (section) { sectionObserver.observe(section); } });