(() => { const modal = document.getElementById('imageModal'); if (!modal) return; const img = document.getElementById('modalImage'); const caption = document.getElementById('modalCaption'); const closeBtn = modal.querySelector('.modal-close'); let lastTrigger = null; const close = () => { modal.classList.remove('open'); modal.setAttribute('aria-hidden', 'true'); document.body.classList.remove('no-scroll'); img.removeAttribute('src'); if (lastTrigger) lastTrigger.focus({preventScroll:true}); }; const open = (btn) => { lastTrigger = btn; img.src = btn.dataset.image || ''; img.alt = 'Affiche agrandie - ' + (btn.dataset.title || 'événement'); caption.textContent = btn.dataset.title || ''; modal.classList.add('open'); modal.setAttribute('aria-hidden', 'false'); document.body.classList.add('no-scroll'); closeBtn.focus({preventScroll:true}); }; // Délégation : fonctionne aussi très bien au toucher sur smartphone. document.addEventListener('click', (event) => { const btn = event.target.closest('.poster-button'); if (btn) { event.preventDefault(); open(btn); } }); closeBtn.addEventListener('click', close); modal.addEventListener('click', (event) => { if (event.target === modal) close(); }); document.addEventListener('keydown', (event) => { if (event.key === 'Escape' && modal.classList.contains('open')) close(); }); })();