1const toggle = document.querySelector(".nav-toggle"); 2const nav = document.querySelector("#site-nav"); 3const revealTargets = document.querySelectorAll( 4 ".section, .section-heading, .service-card, .diagnostics article, .team-grid img, .strengths article, .three-col article, .steps li, .patient-info-highlight, .patient-info-columns article, .faq-list details" 5); 6 7if (toggle && nav) { 8 toggle.addEventListener("click", () => { 9 const isOpen = nav.classList.toggle("is-open"); 10 toggle.setAttribute("aria-expanded", String(isOpen)); 11 }); 12 13 nav.addEventListener("click", (event) => { 14 if (event.target instanceof HTMLAnchorElement) { 15 nav.classList.remove("is-open"); 16 toggle.setAttribute("aria-expanded", "false"); 17 } 18 }); 19} 20 21if (revealTargets.length) { 22 const prefersReducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches; 23 24 revealTargets.forEach((target, index) => { 25 target.classList.add("reveal-on-scroll"); 26 target.classList.add(`reveal-delay-${index % 3}`); 27 }); 28 29 document.body.classList.add("reveal-ready"); 30 31 if (prefersReducedMotion || !("IntersectionObserver" in window)) { 32 revealTargets.forEach((target) => { 33 target.classList.add("is-visible"); 34 }); 35 } else { 36 const revealObserver = new IntersectionObserver( 37 (entries, observer) => { 38 entries.forEach((entry) => { 39 if (entry.isIntersecting) { 40 entry.target.classList.add("is-visible"); 41 observer.unobserve(entry.target); 42 } 43 }); 44 }, 45 { 46 rootMargin: "0px 0px -12% 0px", 47 threshold: 0.12, 48 } 49 ); 50 51 revealTargets.forEach((target) => { 52 revealObserver.observe(target); 53 }); 54 } 55}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.