@@ -296,6 +296,7 @@ function goTo(n) {
296296 if ( cp ) cp . classList . toggle ( 'hidden' , i !== n ) ;
297297 }
298298 document . getElementById ( 'zoom-btns' ) . style . display = n >= 2 ? 'flex' : 'none' ;
299+ if ( isMobile ( ) ) closeSidebar ( ) ;
299300 updateStatus ( ) ;
300301 render ( ) ;
301302}
@@ -679,6 +680,39 @@ function renderMarkerList() {
679680 ` ) . join ( '' ) ;
680681}
681682
683+ // ═══════════════════════════════════════════════════════════════
684+ // MOBILE NAV TOGGLE
685+ // ═══════════════════════════════════════════════════════════════
686+ const menuToggle = document . getElementById ( 'menu-toggle' ) ;
687+ const sidebar = document . getElementById ( 'sidebar' ) ;
688+ const sidebarBackdrop = document . getElementById ( 'sidebar-backdrop' ) ;
689+
690+ function openSidebar ( ) {
691+ sidebar . classList . add ( 'open' ) ;
692+ sidebarBackdrop . classList . add ( 'open' ) ;
693+ menuToggle . setAttribute ( 'aria-expanded' , 'true' ) ;
694+ }
695+
696+ function closeSidebar ( ) {
697+ sidebar . classList . remove ( 'open' ) ;
698+ sidebarBackdrop . classList . remove ( 'open' ) ;
699+ menuToggle . setAttribute ( 'aria-expanded' , 'false' ) ;
700+ }
701+
702+ function isMobile ( ) {
703+ return window . matchMedia ( '(max-width: 640px)' ) . matches ;
704+ }
705+
706+ menuToggle . addEventListener ( 'click' , ( ) => {
707+ if ( sidebar . classList . contains ( 'open' ) ) {
708+ closeSidebar ( ) ;
709+ } else {
710+ openSidebar ( ) ;
711+ }
712+ } ) ;
713+
714+ sidebarBackdrop . addEventListener ( 'click' , closeSidebar ) ;
715+
682716// ═══════════════════════════════════════════════════════════════
683717// KEYBOARD SHORTCUTS
684718// ═══════════════════════════════════════════════════════════════
0 commit comments