/* Mobile nav: hamburger toggle for the slide-down menu panel. Standalone (not part of the esbuild bundle) — a small progressive enhancement for the header. Loaded via base.html.twig. */ (function () { var toggle = document.querySelector('.nav-toggle'); var nav = document.getElementById('site-nav'); if (!toggle || !nav) return; function setOpen(open) { toggle.setAttribute('aria-expanded', open ? 'true' : 'false'); toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu'); nav.setAttribute('data-open', open ? 'true' : 'false'); } toggle.addEventListener('click', function (e) { e.stopPropagation(); setOpen(toggle.getAttribute('aria-expanded') !== 'true'); }); /* Tapping a link closes the panel before navigating. */ nav.addEventListener('click', function (e) { if (e.target.closest('a')) setOpen(false); }); /* Close on outside tap or Escape. */ document.addEventListener('click', function (e) { if (!nav.contains(e.target) && !toggle.contains(e.target)) setOpen(false); }); document.addEventListener('keydown', function (e) { if (e.key === 'Escape') setOpen(false); }); /* Reset to closed if the viewport grows back to desktop. */ window.addEventListener('resize', function () { if (window.innerWidth > 768) setOpen(false); }); })();