/** * Mobile Navigation Drawer Controller */ document.addEventListener('DOMContentLoaded', () => { const toggleBtn = document.getElementById('mobile-menu-toggle'); const drawer = document.getElementById('mobile-nav-drawer'); if (toggleBtn && drawer) { toggleBtn.addEventListener('click', () => { const isOpen = drawer.classList.contains('is-open'); if (isOpen) { drawer.classList.remove('is-open'); toggleBtn.classList.remove('is-active'); toggleBtn.setAttribute('aria-expanded', 'false'); } else { drawer.classList.add('is-open'); toggleBtn.classList.add('is-active'); toggleBtn.setAttribute('aria-expanded', 'true'); } }); // Close on navigation link click drawer.querySelectorAll('.mobile-nav-link').forEach(link => { link.addEventListener('click', () => { drawer.classList.remove('is-open'); toggleBtn.classList.remove('is-active'); toggleBtn.setAttribute('aria-expanded', 'false'); }); }); // Close when clicking outside document.addEventListener('click', (e) => { if (drawer.classList.contains('is-open') && !drawer.contains(e.target) && !toggleBtn.contains(e.target)) { drawer.classList.remove('is-open'); toggleBtn.classList.remove('is-active'); toggleBtn.setAttribute('aria-expanded', 'false'); } }); // Close on Escape key document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && drawer.classList.contains('is-open')) { drawer.classList.remove('is-open'); toggleBtn.classList.remove('is-active'); toggleBtn.setAttribute('aria-expanded', 'false'); } }); } });