(function() {
    'use-strict';

    function smoothScrollTo(targetY, duration = 1200) {
        const startY = window.pageYOffset;
        const distance = targetY - startY;
        let startTime = null;

        function animation(currentTime) {
            if (startTime === null) startTime = currentTime;
            const timeElapsed = currentTime - startTime;
            const progress = Math.min(timeElapsed / duration, 1);
            const ease = 1 - Math.pow(1 - progress, 4); // Ease out quart

            window.scrollTo(0, startY + distance * ease);

            if (timeElapsed < duration) {
                requestAnimationFrame(animation);
            }
        }
        requestAnimationFrame(animation);
    }

    function initSocialLinksAnimation() {
        const discoverSection = document.getElementById('discover-anchor');
        if (!discoverSection) {
            // console.log('Social links: Discover anchor not found');
            return;
        }

        const socialLinksContainer = discoverSection.querySelector('.home-social-links');
        if (!socialLinksContainer) {
            // console.log('Social links: Container not found');
            return;
        }
        
        const links = socialLinksContainer.querySelectorAll('a.neu-button');
        if (links.length === 0) {
            // console.log('Social links: No links found');
            return;
        }

        // console.log('Social links: Setting up IntersectionObserver');
        const initialDelayBeforeSequence = 100; // Délai en ms avant le début de la séquence d'icônes

        const observer = new IntersectionObserver((entries, observerInstance) => {
            entries.forEach(entry => {
                if (entry.isIntersecting) {
                    // console.log('Social links: Discover section intersecting');
                    // D'abord, on attend le délai initial après l'intersection
                    setTimeout(() => {
                        // Ensuite, on anime chaque lien avec un décalage
                        // console.log('Social links: Starting icon sequence animation');
                        links.forEach((link, index) => {
                            setTimeout(() => {
                                link.classList.add('visible');
                            }, index * 150); // Staggered delay: 0ms, 150ms, 300ms, etc.
                        });
                    }, initialDelayBeforeSequence);
                    
                    observerInstance.unobserve(entry.target); // Animate only once
                }
            });
        }, { threshold: 0.1 }); // Trigger when 10% of the section is visible

        observer.observe(discoverSection);
    }

    function initHomeContentWidget() {
        const widgetContainer = document.querySelector('.home-content-container');
        if (!widgetContainer) {
            return;
        }

        const parallaxWrappers = widgetContainer.querySelectorAll('.parallax-wrapper');
        let animationFrameId = null;

        function handleParallax() {
            const scrollTop = window.pageYOffset || document.documentElement.scrollTop;

            parallaxWrappers.forEach(el => {
                const speed = parseFloat(el.dataset.speed || 0.1);
                const translateY = scrollTop * speed;
                el.style.transform = `translateY(${translateY}px)`;
            });
            animationFrameId = null; 
        }

        function onScroll() {
            if (animationFrameId === null) {
                animationFrameId = requestAnimationFrame(handleParallax);
            }
        }

        if (parallaxWrappers.length > 0) {
            window.addEventListener('scroll', onScroll, { passive: true });
            requestAnimationFrame(handleParallax); 
        }

        const legalTabsContainer = widgetContainer.querySelector('.legal-tabs-container');
        if (legalTabsContainer) {
            const tabButtons = legalTabsContainer.querySelectorAll('.legal-tab-button');
            const tabPanels = legalTabsContainer.querySelectorAll('.legal-panel');
            const legalContentScroller = legalTabsContainer.querySelector('.legal-tabs-content');

            tabButtons.forEach(button => {
                button.addEventListener('click', () => {
                    const targetPanelId = button.dataset.targetPanel;
                    if (!targetPanelId) return;

                    tabButtons.forEach(btn => btn.classList.remove('active'));
                    button.classList.add('active');

                    tabPanels.forEach(panel => {
                        panel.classList.remove('active');
                        if (panel.id === targetPanelId) {
                            panel.classList.add('active');
                        }
                    });
                    if (legalContentScroller) {
                        legalContentScroller.scrollTop = 0;
                    }
                });
            });
        }

        const discoverButton = document.getElementById('discover-scroll-trigger');
        const discoverAnchor = document.getElementById('discover-anchor');

        if (discoverButton && discoverAnchor) {
            discoverButton.addEventListener('click', function(event) {
                event.preventDefault();
                const offset = 120; 
                const targetPosition = discoverAnchor.getBoundingClientRect().top + window.pageYOffset - offset;
                smoothScrollTo(targetPosition, 1200);
            });
        }

        // --- MODIFICATION POUR GÉRER L'ANIMATION D'INTRODUCTION ---
        const introLogoElement = document.querySelector('.home-background-logo-animated-global');

        if (!introLogoElement) {
            // Cas 1: L'élément du logo d'intro n'existe pas.
            // On suppose qu'il n'y a pas d'animation d'intro, donc on initialise directement.
            // console.log('Intro logo element not found. Initializing social links animation directly.');
            initSocialLinksAnimation();
        } else if (introLogoElement.classList.contains('logo-animation-start')) {
            // Cas 2: L'élément du logo d'intro existe ET a DEJA la classe de fin d'animation.
            // L'intro est donc déjà terminée (peut-être au rechargement de la page).
            // console.log('Intro logo element already has "logo-animation-start". Initializing social links animation.');
            initSocialLinksAnimation();
        } else {
            // Cas 3: L'élément du logo d'intro existe mais n'a pas encore la classe de fin.
            // On observe les changements sur ses attributs (en particulier la classe).
            // console.log('Intro logo element found. Setting up MutationObserver for "logo-animation-start".');
            const observer = new MutationObserver((mutationsList, obs) => {
                for (const mutation of mutationsList) {
                    if (mutation.type === 'attributes' && mutation.attributeName === 'class') {
                        if (mutation.target.classList.contains('logo-animation-start')) {
                            // console.log('"logo-animation-start" detected. Initializing social links animation.');
                            initSocialLinksAnimation();
                            obs.disconnect(); // Important: Arrêter d'observer une fois que c'est fait.
                            break; 
                        }
                    }
                }
            });
            observer.observe(introLogoElement, { attributes: true });
        }
        // --- FIN DE LA MODIFICATION ---

    } 

    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', initHomeContentWidget);
    } else {
        initHomeContentWidget();
    }

})();