Загрузка данных


document.addEventListener('DOMContentLoaded', () => {
    const modals = document.querySelectorAll('.modal');
    const openButtons = document.querySelectorAll('[data-modal-target]');
    const closeButtons = document.querySelectorAll('.close-btn');

    // Функция открытия
    const openModal = (modal) => {
        if (!modal) return;
        modal.classList.add('open');
        document.body.classList.add('modal-open');
    };

    // Функция закрытия (всех или конкретного)
    const closeModal = (modal) => {
        modal.classList.remove('open');
        // Проверяем, остались ли другие открытые окна
        const anyOpen = document.querySelector('.modal.open');
        if (!anyOpen) document.body.classList.remove('modal-open');
    };

    // 1. Слушатели для кнопок открытия
    openButtons.forEach(btn => {
        btn.addEventListener('click', (e) => {
            e.preventDefault();
            const targetSelector = btn.getAttribute('data-modal-target');
            const modal = document.querySelector(targetSelector);
            openModal(modal);
        });
    });

    // 2. Слушатели для кнопок закрытия (крестики)
    closeButtons.forEach(btn => {
        btn.addEventListener('click', () => {
            const modal = btn.closest('.modal');
            closeModal(modal);
        });
    });

    // 3. Закрытие кликом по серому фону (overlay)
    window.addEventListener('click', (e) => {
        if (e.target.classList.contains('modal')) {
            closeModal(e.target);
        }
    });

    // 4. Закрытие клавишей Escape
    document.addEventListener('keydown', (e) => {
        if (e.key === 'Escape') {
            const activeModal = document.querySelector('.modal.open');
            if (activeModal) closeModal(activeModal);
        }
    });
});