File size: 1,904 Bytes
50dca14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/* ========================================
   WebScraper.pro — Interactive JS
   ======================================== */

document.addEventListener('DOMContentLoaded', () => {
    // --- Mobile Nav Toggle ---
    const toggle = document.getElementById('nav-toggle');
    const links = document.getElementById('nav-links');
    if (toggle && links) {
        toggle.addEventListener('click', () => links.classList.toggle('open'));
    }

    // --- Auto-dismiss Toasts ---
    document.querySelectorAll('.toast[data-auto-dismiss]').forEach(toast => {
        const delay = parseInt(toast.dataset.autoDismiss, 10) || 5000;
        setTimeout(() => {
            toast.style.animation = 'slideOut 0.3s ease forwards';
            setTimeout(() => toast.remove(), 300);
        }, delay);
    });

    // --- Stat Card Entrance Animation ---
    document.querySelectorAll('.stat-card').forEach((card, i) => {
        card.style.opacity = '0';
        card.style.transform = 'translateY(20px)';
        setTimeout(() => {
            card.style.transition = 'all 0.5s cubic-bezier(0.4, 0, 0.2, 1)';
            card.style.opacity = '1';
            card.style.transform = 'translateY(0)';
        }, 80 * i);
    });
});

// --- Collapsible Sections ---
function toggleSection(id) {
    const el = document.getElementById(id);
    if (!el) return;
    const header = el.previousElementSibling || el.parentElement.querySelector('.collapsible');
    if (el.style.display === 'none') {
        el.style.display = '';
        if (header) header.classList.remove('collapsed');
    } else {
        el.style.display = 'none';
        if (header) header.classList.add('collapsed');
    }
}

// --- Slide Out animation for toasts ---
const style = document.createElement('style');
style.textContent = `@keyframes slideOut { to { transform: translateX(120%); opacity: 0; } }`;
document.head.appendChild(style);