document.addEventListener("DOMContentLoaded", () => { const toggle = document.querySelector(".lm-nav-toggle"); const nav = document.querySelector(".lm-nav"); if (toggle && nav) { toggle.addEventListener("click", () => { const expanded = toggle.getAttribute("aria-expanded") === "true"; toggle.setAttribute("aria-expanded", String(!expanded)); nav.classList.toggle("is-open", !expanded); }); document.addEventListener("click", (e) => { if (!nav.contains(e.target) && !toggle.contains(e.target)) { nav.classList.remove("is-open"); toggle.setAttribute("aria-expanded", "false"); } }); } document.querySelectorAll("[data-lumina-print]").forEach((btn) => { btn.addEventListener("click", () => window.print()); }); const header = document.querySelector(".lm-header"); if (header) { let lastY = window.scrollY; window.addEventListener("scroll", () => { const currentY = window.scrollY; if (currentY > 80) { header.style.boxShadow = "0 2px 16px rgba(0,0,0,.12)"; } else { header.style.boxShadow = ""; } lastY = currentY; }, { passive: true }); } const sections = document.querySelectorAll("[id]"); const navLinks = document.querySelectorAll(".lm-nav__list a[href^='#']"); if (navLinks.length && sections.length) { const observer = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { navLinks.forEach((link) => { link.classList.toggle( "is-active", link.getAttribute("href") === `#${entry.target.id}` ); }); } }); }, { rootMargin: "-20% 0px -70% 0px" } ); sections.forEach((section) => observer.observe(section)); } });