{"id":31140,"date":"2025-02-28T08:50:18","date_gmt":"2025-02-28T08:50:18","guid":{"rendered":"https:\/\/alpeorv2.aif-staging.com\/?page_id=31140"},"modified":"2025-10-25T09:19:51","modified_gmt":"2025-10-25T09:19:51","slug":"home","status":"publish","type":"page","link":"https:\/\/alpeorv2.aif-staging.com\/fr\/","title":{"rendered":"Accueil"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; custom_padding_last_edited=&#8221;on|phone&#8221; module_id=&#8221;alpeor&#8221; module_class=&#8221;full-height-experience&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; custom_margin_tablet=&#8221;||||false|false&#8221; custom_margin_phone=&#8221;||||false|false&#8221; custom_margin_last_edited=&#8221;on|tablet&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; custom_padding_tablet=&#8221;70px||||false|false&#8221; custom_padding_phone=&#8221;50px||||false|false&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; width_tablet=&#8221;100%&#8221; width_phone=&#8221;94%&#8221; width_last_edited=&#8221;on|desktop&#8221; max_width=&#8221;1920px&#8221; custom_margin=&#8221;0px||0px||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_slider show_arrows=&#8221;off&#8221; dot_nav_custom_color=&#8221;#000000&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; header_level=&#8221;h1&#8243; header_text_color=&#8221;#000000&#8243; body_text_color=&#8221;#000000&#8243; background_color=&#8221;RGBA(255,255,255,0)&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_slide _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; sticky_transition=&#8221;on&#8221;][et_pb_section global_module=\"33257\"][\/et_pb_section][\/et_pb_slide][et_pb_slide _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; sticky_transition=&#8221;on&#8221;][et_pb_section global_module=\"33260\"][\/et_pb_section][\/et_pb_slide][et_pb_slide _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; sticky_transition=&#8221;on&#8221;][et_pb_section global_module=\"33267\"][\/et_pb_section][\/et_pb_slide][et_pb_slide _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; sticky_transition=&#8221;on&#8221;][et_pb_section global_module=\"33260\"][\/et_pb_section][\/et_pb_slide][et_pb_slide _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; sticky_transition=&#8221;on&#8221;][et_pb_section global_module=\"33261\"][\/et_pb_section][\/et_pb_slide][\/et_pb_slider][et_pb_code _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]    <div id=\"alpeor-navigation-container\">\r\n        <div id=\"alpeor-navigation\"><\/div>\r\n    <\/div>\r\n\r\n    <script>\r\n    document.addEventListener(\"DOMContentLoaded\", function () {\r\n        console.log(\"\ud83d\udfe2 Initializing alpeor navigation \");\r\n        let sections = document.querySelectorAll(\".full-height-experience:not(.alpeor-footer)\");\r\n        console.log(\"\ud83d\udccb Found sections:\", sections.length);\r\n        let currentIndex = 0;\r\n        window.currentIndex = currentIndex;\r\n        let isScrolling = false;\r\n        let isLocked = false;\r\n        let isNavigating = false;\r\n        let targetIndex = null;\r\n        let lastScrollTime = 0;\r\n        const scrollCooldown = 800;\r\n        let lastWheelTime = 0;\r\n        const wheelDebounce = 250;\r\n        let scrollQueue = [];\r\n\r\n        let navContainer = document.getElementById('alpeor-navigation');\r\n        let dotWrappers = [];\r\n        let dotSize = 15;\r\n        let nextLabelVisible = null;\r\n\r\n        if (navContainer && sections.length > 0) {\r\n            console.log(\"\ud83d\udee0\ufe0f Building navigation dots\");\r\n            sections.forEach(function(section, index) {\r\n                let id = section.id;\r\n                if (id) {\r\n                    let formattedText = id.replace(\/-\/g, ' ').replace(\/\\b\\w\/g, c => c.toUpperCase());\r\n                    if (formattedText.toLowerCase() === 'conscious beauty') formattedText = 'Conscious<br>Beauty';\r\n                    if (formattedText.toLowerCase() === 'our commitments') formattedText = 'Our<br>Commitments';\r\n\r\n                    let dotWrapper = document.createElement('div');\r\n                    dotWrapper.classList.add('navigation-dot-wrapper');\r\n\r\n                    let link = document.createElement('a');\r\n                    link.href = 'javascript:void(0)';\r\n                    link.classList.add('navigation-link');\r\n                    link.dataset.section = id;\r\n\r\n                    let dot = document.createElement('div');\r\n                    dot.classList.add('navigation-dot');\r\n\r\n                    let label = document.createElement('span');\r\n                    label.classList.add('navigation-label');\r\n                    label.innerHTML = formattedText;\r\n\r\n                    link.appendChild(dot);\r\n                    link.appendChild(label);\r\n                    dotWrapper.appendChild(link);\r\n                    navContainer.appendChild(dotWrapper);\r\n\r\n                    dotWrappers.push(dotWrapper);\r\n                }\r\n            });\r\n\r\n            for (let i = 0; i < dotWrappers.length - 1; i++) {\r\n                let segment = document.createElement('div');\r\n                segment.classList.add('navigation-segment');\r\n                navContainer.appendChild(segment);\r\n            }\r\n\r\n            let totalHeight = navContainer.offsetHeight;\r\n            let spaceBetween = totalHeight \/ (dotWrappers.length - 1);\r\n\r\n            dotWrappers.forEach((wrapper, index) => {\r\n                let position = index * spaceBetween;\r\n                wrapper.style.position = 'absolute';\r\n                wrapper.style.top = position + 'px';\r\n\r\n                if (index < dotWrappers.length - 1) {\r\n                    let segment = document.querySelectorAll('.navigation-segment')[index];\r\n                    segment.style.position = 'absolute';\r\n                    segment.style.top = (position + dotSize) + 'px';\r\n                    segment.style.height = (spaceBetween - dotSize) + 'px';\r\n                }\r\n            });\r\n\r\n            let visibleIndex = getVisibleSectionIndex();\r\n            window.currentIndex = visibleIndex;\r\n            updateNavigationDots(visibleIndex);\r\n            console.log(\"\u2705 Navigation initialized, visibleIndex:\", visibleIndex);\r\n        } else {\r\n            console.error(\"\u274c No navContainer or sections found\");\r\n        }\r\n\r\n        function updateNavigationDots(index) {\r\n            let activeSection = sections[index];\r\n            if (!activeSection || !activeSection.id) {\r\n                console.warn(\"\u26a0\ufe0f Invalid active section at index:\", index);\r\n                return;\r\n            }\r\n\r\n            if (isNavigating && index !== targetIndex) {\r\n                console.log(\"\ud83d\udd07 Suppressing dot update during navigation:\", { currentIndex: index, targetIndex });\r\n                return;\r\n            }\r\n\r\n            let id = activeSection.id;\r\n\r\n            document.querySelectorAll('.navigation-dot').forEach(dot => {\r\n                dot.style.backgroundColor = 'transparent';\r\n                dot.style.pointerEvents = 'auto';\r\n                dot.style.opacity = '1';\r\n            });\r\n            document.querySelectorAll('.navigation-label').forEach(label => label.style.opacity = '0');\r\n            document.querySelectorAll('.navigation-link').forEach(link => link.style.pointerEvents = 'auto');\r\n            document.querySelectorAll('.navigation-dot-wrapper').forEach(w => w.classList.remove('next-active'));\r\n\r\n            let activeLink = document.querySelector('.navigation-link[data-section=\"' + id + '\"]');\r\n            if (!activeLink) {\r\n                console.warn(\"\u26a0\ufe0f No active link for section:\", id);\r\n                return;\r\n            }\r\n\r\n            let activeDot = activeLink.querySelector('.navigation-dot');\r\n            let activeLabel = activeLink.querySelector('.navigation-label');\r\n\r\n            if (activeDot) {\r\n                activeDot.style.backgroundColor = '#C6A992';\r\n                activeDot.style.pointerEvents = 'none';\r\n                activeDot.style.opacity = '1';\r\n            }\r\n            if (activeLabel) activeLabel.style.opacity = '0';\r\n\r\n            activeLink.style.pointerEvents = 'none';\r\n\r\n            let wrapper = activeLink.closest('.navigation-dot-wrapper');\r\n            let nextWrapper = wrapper ? wrapper.nextElementSibling : null;\r\n\r\n            if (nextWrapper && nextWrapper.classList.contains('navigation-dot-wrapper')) {\r\n                let nextDot = nextWrapper.querySelector('.navigation-dot');\r\n                let nextLabel = nextWrapper.querySelector('.navigation-label');\r\n                if (nextDot && nextLabel) {\r\n                    nextDot.style.opacity = '0';\r\n                    nextLabel.style.opacity = '1';\r\n                    nextWrapper.classList.add('next-active');\r\n                    nextLabelVisible = nextLabel;\r\n                }\r\n            } else {\r\n                nextLabelVisible = null;\r\n            }\r\n\r\n            console.log(\"\u2705 Dot updated for index:\", index);\r\n        }\r\n\r\n        function disableUserInputs() {\r\n            isLocked = true;\r\n            removeScrollListeners();\r\n            window.addEventListener(\"touchmove\", preventDefault, { passive: false });\r\n            window.addEventListener(\"wheel\", preventDefault, { passive: false });\r\n            window.addEventListener(\"keydown\", preventDefault, { passive: false });\r\n            window.addEventListener(\"click\", preventDefault, { passive: false });\r\n            document.querySelectorAll('.navigation-link').forEach(link => {\r\n                link.style.pointerEvents = 'none';\r\n            });\r\n        }\r\n\r\n        function enableUserInputs() {\r\n            isLocked = false;\r\n            if (window.innerWidth >= 1024) {\r\n                addScrollListeners();\r\n            }\r\n            window.removeEventListener(\"touchmove\", preventDefault);\r\n            window.removeEventListener(\"wheel\", preventDefault);\r\n            window.removeEventListener(\"keydown\", preventDefault);\r\n            window.removeEventListener(\"click\", preventDefault);\r\n            document.querySelectorAll('.navigation-link').forEach(link => {\r\n                link.style.pointerEvents = 'auto';\r\n            });\r\n            document.body.style.overflow = '';\r\n        }\r\n\r\n        function preventDefault(e) {\r\n            if (isScrolling || isLocked) {\r\n                const target = e.target.closest('.full-height-experience');\r\n                const footer = document.querySelector(\".alpeor-footer\");\r\n                if (target && target.scrollHeight > target.clientHeight && !isAtBoundary(target)) {\r\n                    console.log(\"\u2705 Allowing internal section scrolling\");\r\n                    return; \/\/ Allow internal scrolling\r\n                }\r\n                if (footer && footer.getBoundingClientRect().top <= window.innerHeight + 100) {\r\n                    console.log(\"\u2705 Allowing footer scrolling\");\r\n                    return; \/\/ Allow footer scrolling\r\n                }\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                console.log(\"\ud83d\uded1 Event blocked:\", e.type);\r\n            }\r\n        }\r\n\r\n        function isAtBoundary(section) {\r\n            const atBottom = section.scrollTop + section.clientHeight >= section.scrollHeight - 5;\r\n            const atTop = section.scrollTop <= 5;\r\n            return atBottom || atTop;\r\n        }\r\n\r\n        function isScrollable(section) {\r\n            return section.scrollHeight > section.clientHeight + 1;\r\n        }\r\n\r\n        function scrollToSection(index) {\r\n    if (index < 0 || index >= sections.length) return;\r\n\r\n    if (isScrolling || isLocked) {\r\n        scrollQueue = [index];\r\n        return;\r\n    }\r\n\r\n    const now = Date.now();\r\n    if (now - lastScrollTime < scrollCooldown) return;\r\n    lastScrollTime = now;\r\n\r\n    isScrolling = true;\r\n    disableUserInputs();\r\n\r\n    let offsetAdjustment = (index > 0 && window.innerWidth >= 1024) ? -21 : 0;\r\n    const targetTop = sections[index].offsetTop - offsetAdjustment;\r\n    const startTop = window.scrollY;\r\n    const distance = targetTop - startTop;\r\n    const duration = 800; \/\/ smoothness duration in ms\r\n    const easing = t => t < 0.5\r\n        ? 4 * t * t * t\r\n        : 1 - Math.pow(-2 * t + 2, 3) \/ 2; \/\/ easeInOutCubic\r\n\r\n    let startTime = null;\r\n\r\n    function animateScroll(timestamp) {\r\n        if (!startTime) startTime = timestamp;\r\n        const elapsed = timestamp - startTime;\r\n        const progress = Math.min(elapsed \/ duration, 1);\r\n        const eased = easing(progress);\r\n\r\n        window.scrollTo(0, startTop + distance * eased);\r\n\r\n        if (elapsed < duration) {\r\n            requestAnimationFrame(animateScroll);\r\n        } else {\r\n            isScrolling = false;\r\n            isNavigating = false;\r\n            targetIndex = null;\r\n            enableUserInputs();\r\n            updateNavigationDots(index);\r\n\r\n            if (scrollQueue.length > 0) {\r\n                const nextIndex = scrollQueue.shift();\r\n                isNavigating = true;\r\n                targetIndex = nextIndex;\r\n                scrollToSection(nextIndex);\r\n            }\r\n        }\r\n    }\r\n\r\n    requestAnimationFrame(animateScroll);\r\n}\r\n\r\n\r\n        function handleScroll(event) {\r\n            const now = Date.now();\r\n            if (now - lastWheelTime < wheelDebounce || isScrolling || isLocked || window.innerWidth < 1024 || window.justNavigated) {\r\n                console.log(\"\ud83d\uded1 Scroll blocked:\", { isScrolling, isLocked, isMobile: window.innerWidth < 1024, justNavigated: window.justNavigated });\r\n                event.preventDefault();\r\n                event.stopPropagation();\r\n                return;\r\n            }\r\n            lastWheelTime = now;\r\n\r\n            \/\/ Sync currentIndex with visible section\r\n            currentIndex = getVisibleSectionIndex();\r\n            window.currentIndex = currentIndex;\r\n\r\n            const footer = document.querySelector(\".alpeor-footer\");\r\n            if (footer && footer.getBoundingClientRect().top <= window.innerHeight + 100) {\r\n                console.log(\"\u2705 Footer near or in view, allowing free scroll\");\r\n                return;\r\n            }\r\n\r\n            let section = sections[currentIndex];\r\n            let scrollable = isScrollable(section);\r\n            let atBottom = section.scrollTop + section.clientHeight >= section.scrollHeight - 5;\r\n            let atTop = section.scrollTop <= 5;\r\n\r\n            console.log(\"\ud83d\udccf Scroll position:\", {\r\n                scrollTop: section.scrollTop,\r\n                clientHeight: section.clientHeight,\r\n                scrollHeight: section.scrollHeight,\r\n                atTop,\r\n                atBottom,\r\n                isScrollable: scrollable\r\n            });\r\n\r\n            const deltaThreshold = 10;\r\n            let delta = Math.abs(event.deltaY) > deltaThreshold ? Math.sign(event.deltaY) : 0;\r\n\r\n            \/*if (scrollable && !atBottom && delta > 0) {\r\n                console.log(\"\ud83d\udd04 Scrolling inside section (down)\", {\r\n                    scrollTop: section.scrollTop,\r\n                    clientHeight: section.clientHeight,\r\n                    scrollHeight: section.scrollHeight\r\n                });\r\n                return;\r\n            }\r\n            if (scrollable && !atTop && delta < 0) {\r\n                console.log(\"\ud83d\udd04 Scrolling inside section (up)\", {\r\n                    scrollTop: section.scrollTop,\r\n                    clientHeight: section.clientHeight,\r\n                    scrollHeight: section.scrollHeight\r\n                });\r\n                return;\r\n            }*\/\r\n\t\t\t\r\n\t\t\tif (\r\n\t\t\t\t(currentIndex === sections.length - 1 && delta > 0) || \r\n\t\t\t\t(currentIndex === 0 && delta < 0)\r\n\t\t\t) {\r\n\t\t\t\tconsole.log(\"\u2705 At boundary, allow normal scroll\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (scrollable && !atBottom && delta > 0) return;\r\n\t\t\tif (scrollable && !atTop && delta < 0) return;\r\n\t\t\t\r\n            if (delta !== 0) {\r\n                event.preventDefault();\r\n                event.stopPropagation();\r\n\r\n                if (scrollable && atBottom && delta > 0) {\r\n                    console.log(\"\ud83d\udd04 Boundary hit: bottom of scrollable section, snapping down\");\r\n                } else if (scrollable && atTop && delta < 0) {\r\n                    console.log(\"\ud83d\udd04 Boundary hit: top of scrollable section, snapping up\");\r\n                }\r\n\r\n                currentIndex += delta > 0 ? 1 : -1;\r\n                currentIndex = Math.max(0, Math.min(currentIndex, sections.length - 1));\r\n                window.currentIndex = currentIndex;\r\n                scrollToSection(currentIndex);\r\n            }\r\n        }\r\n\r\n        function handleKeyDown(event) {\r\n            if (isScrolling || isLocked) return;\r\n\r\n            currentIndex = window.currentIndex;\r\n            let section = sections[currentIndex];\r\n            let scrollable = isScrollable(section);\r\n            let atBottom = section.scrollTop + section.clientHeight >= section.scrollHeight - 5;\r\n            let atTop = section.scrollTop <= 5;\r\n\r\n            if ((event.key === \"ArrowDown\" && (!scrollable || atBottom)) ||\r\n                (event.key === \"ArrowUp\" && (!scrollable || atTop))) {\r\n                currentIndex += (event.key === \"ArrowDown\") ? 1 : -1;\r\n                currentIndex = Math.max(0, Math.min(currentIndex, sections.length - 1));\r\n                window.currentIndex = currentIndex;\r\n                scrollToSection(currentIndex);\r\n            }\r\n        }\r\n\r\n        function addScrollListeners() {\r\n\t\t\tconst isHomePage = window.location.pathname === \"\/\" \r\n\t\t\t\t\t\t\t   || document.body.classList.contains(\"home\"); \/\/ WP\/HTML flexibility\r\n\r\n\t\t\tif (isHomePage) {\r\n\t\t\t\t\/\/ \u2705 Homepage \u2192 old snap logic\r\n\t\t\t\twindow.addEventListener(\"wheel\", handleScroll, { passive: false });\r\n\t\t\t\tconsole.log(\"\ud83c\udfe0 Homepage scroll behavior applied\");\r\n\t\t\t} else {\r\n\t\t\t\t\/\/ \u2705 Other pages \u2192 hybrid logic\r\n\t\t\t\twindow.addEventListener(\"wheel\", function(e) {\r\n\t\t\t\t\tconst currentSection = sections[currentIndex];\r\n\t\t\t\t\tconst sectionHeight = currentSection.scrollHeight;\r\n\t\t\t\t\tconst viewportHeight = window.innerHeight;\r\n\r\n\t\t\t\t\tif (sectionHeight <= viewportHeight) {\r\n\t\t\t\t\t\t\/*console.log('test section');\r\n\t\t\t\t\t\t\/\/ Small section \u2192 snap\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tif (e.deltaY > 0) {\r\n\t\t\t\t\t\t\tscrollToSection(currentIndex + 1);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tscrollToSection(currentIndex - 1);\r\n\t\t\t\t\t\t}*\/\r\n\t\t\t\t\t\twindow.addEventListener(\"wheel\", handleScroll, { passive: false });\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\/\/ Big\/tall section \u2192 normal scroll but update nav\r\n\t\t\t\t\t\tsections.forEach((section, idx) => {\r\n\t\t\t\t\t\t\tconst rect = section.getBoundingClientRect();\r\n\t\t\t\t\t\t\tif (rect.top <= viewportHeight * 0.4 && rect.bottom >= viewportHeight * 0.4) {\r\n\t\t\t\t\t\t\t\tif (currentIndex !== idx) {\r\n\t\t\t\t\t\t\t\t\tcurrentIndex = idx;\r\n\t\t\t\t\t\t\t\t\tupdateNavigationDots(idx);\r\n\t\t\t\t\t\t\t\t\tconsole.log(\"\ud83d\udd04 Updated currentIndex in tall section:\", idx);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}, { passive: false });\r\n\r\n\t\t\t\tconsole.log(\"\ud83d\udcc4 Inner page scroll behavior applied\");\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ \u2705 Common key navigation\r\n\t\t\twindow.addEventListener(\"keydown\", handleKeyDown, { passive: false });\r\n\t\t\tconsole.log(\"\ud83d\udfe2 Scroll listeners added\");\r\n\t\t}\r\n\r\n\r\n\r\n        function removeScrollListeners() {\r\n            window.removeEventListener(\"wheel\", handleScroll);\r\n            window.removeEventListener(\"keydown\", handleKeyDown);\r\n            console.log(\"\ud83d\udfe1 Scroll listeners removed\");\r\n        }\r\n\r\n        window.addEventListener('load', () => {\r\n            if (window.innerWidth >= 1024) {\r\n                addScrollListeners();\r\n            }\r\n        });\r\n\r\n        const observer = new IntersectionObserver((entries) => {\r\n            entries.forEach(entry => {\r\n                console.log(\"\ud83d\udc40 IntersectionObserver triggered:\", {\r\n                    index: Array.from(sections).indexOf(entry.target),\r\n                    isIntersecting: entry.isIntersecting\r\n                });\r\n                if (entry.isIntersecting) {\r\n                    const index = Array.from(sections).indexOf(entry.target);\r\n                    window.currentIndex = index;\r\n                    updateNavigationDots(index);\r\n                    console.log(\"\ud83d\udc40 IntersectionObserver updated currentIndex:\", index);\r\n                }\r\n            });\r\n        }, {\r\n            threshold: window.innerWidth < 1024 ? 0.3 : 0.6\r\n        });\r\n\r\n        sections.forEach(section => observer.observe(section));\r\n\r\n        document.querySelectorAll('.navigation-link').forEach(link => {\r\n            link.addEventListener('click', function(event) {\r\n                event.preventDefault();\r\n\r\n                const sectionId = this.dataset.section;\r\n                const target = document.getElementById(sectionId);\r\n                if (!target) return;\r\n\r\n                const index = Array.from(sections).indexOf(target);\r\n                if (index === -1) return;\r\n\r\n                isNavigating = true;\r\n                targetIndex = index;\r\n                scrollToSection(index);\r\n                window.currentIndex = index;\r\n                console.log(\"\ud83d\udd17 Navigation link clicked, navigating to index:\", index, { isNavigating });\r\n            });\r\n        });\r\n\r\n        function getVisibleSectionIndex() {\r\n            let maxVisibleHeight = 0;\r\n            let minTopDistance = Infinity;\r\n            let visibleIndex = 0;\r\n\r\n            sections.forEach((section, index) => {\r\n                const rect = section.getBoundingClientRect();\r\n                const visibleHeight = Math.min(rect.bottom, window.innerHeight) - Math.max(rect.top, 0);\r\n                const isMobile = window.innerWidth < 1024;\r\n\r\n                console.log(\"\ud83d\udd0d Section visibility:\", {\r\n                    index,\r\n                    visibleHeight,\r\n                    sectionHeight: rect.height,\r\n                    rectTop: rect.top,\r\n                    isMobile\r\n                });\r\n\r\n                if (isMobile) {\r\n                    \/\/ Mobile\/tablet: Prioritize largest visible height or closest to viewport top\r\n                    if (visibleHeight > maxVisibleHeight || (visibleHeight === maxVisibleHeight && Math.abs(rect.top) < minTopDistance)) {\r\n                        maxVisibleHeight = visibleHeight;\r\n                        minTopDistance = Math.abs(rect.top);\r\n                        visibleIndex = index;\r\n                    }\r\n                } else {\r\n                    \/\/ Desktop: Use ratio-based visibility\r\n                    const ratio = Math.max(0, visibleHeight \/ rect.height);\r\n                    if (ratio > maxVisibleHeight) {\r\n                        maxVisibleHeight = ratio;\r\n                        visibleIndex = index;\r\n                    }\r\n                }\r\n            });\r\n\r\n            return visibleIndex;\r\n        }\r\n    });\r\n    <\/script>\r\n    <!-- [et_pb_line_break_holder] --><\/p>\n<div id=\"videoLightbox\" class=\"lightbox-overlay\"><!-- [et_pb_line_break_holder] -->  <\/p>\n<div class=\"lightbox-content\" id=\"lightboxContent\"><!-- [et_pb_line_break_holder] -->    <!-- Close Button --><!-- [et_pb_line_break_holder] -->    <span id=\"lightboxClose\" class=\"lightbox-close\">\u00d7<\/span><!-- [et_pb_line_break_holder] -->    <!-- Video --><!-- [et_pb_line_break_holder] -->    <video id=\"lightboxVideo\" controls controlslist=\"nodownload  noremoteplayback\"  disablepictureinpicture oncontextmenu=\"return false;\"><!-- [et_pb_line_break_holder] --><source src=\"https:\/\/alpeor.com\/wp-content\/uploads\/2025\/10\/Alpeor-Uk-St-Web.mp4\" type=\"video\/mp4\"><!-- [et_pb_line_break_holder] -->      Your browser does not support the video tag.<!-- [et_pb_line_break_holder] --><\/video><!-- [et_pb_line_break_holder] -->  <\/div>\n<p><!-- [et_pb_line_break_holder] --><\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- Lightbox CSS --><!-- [et_pb_line_break_holder] --><\/p>\n<style><!-- [et_pb_line_break_holder] -->.lightbox-overlay {<!-- [et_pb_line_break_holder] -->  display: none;<!-- [et_pb_line_break_holder] -->  position: fixed;<!-- [et_pb_line_break_holder] -->  z-index: 999999; \/* Make sure it's above all headers *\/<!-- [et_pb_line_break_holder] -->  left: 0;<!-- [et_pb_line_break_holder] -->  top: 0;<!-- [et_pb_line_break_holder] -->  width: 100vw;<!-- [et_pb_line_break_holder] -->  height: 100vh;<!-- [et_pb_line_break_holder] -->  background-color: rgba(0,0,0,0.8);<!-- [et_pb_line_break_holder] -->  justify-content: center;<!-- [et_pb_line_break_holder] -->  align-items: flex-start;<!-- [et_pb_line_break_holder] -->  padding-top: 110px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.lightbox-overlay.active {<!-- [et_pb_line_break_holder] -->  display: flex;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/*.lightbox-content {<!-- [et_pb_line_break_holder] -->  position: relative;<!-- [et_pb_line_break_holder] -->  max-width: 70vw;<!-- [et_pb_line_break_holder] -->  max-height: 80vh;<!-- [et_pb_line_break_holder] -->  overflow: hidden;<!-- [et_pb_line_break_holder] -->  box-shadow: 0 0 20px rgba(0, 0, 0, 0.6);<!-- [et_pb_line_break_holder] -->  border-radius: 8px;<!-- [et_pb_line_break_holder] -->} *\/<!-- [et_pb_line_break_holder] -->.lightbox-content {<!-- [et_pb_line_break_holder] -->  position: relative;<!-- [et_pb_line_break_holder] -->  width: 100%;<!-- [et_pb_line_break_holder] -->  max-width: 900px;<!-- [et_pb_line_break_holder] -->  max-height: 80vh;<!-- [et_pb_line_break_holder] -->  margin: 30px 20px; \/* Adds some padding on smaller screens *\/<!-- [et_pb_line_break_holder] -->  overflow: hidden;<!-- [et_pb_line_break_holder] -->  box-shadow: 0 0 20px rgba(0, 0, 0, 0.6);<!-- [et_pb_line_break_holder] -->  border-radius: 8px;<!-- [et_pb_line_break_holder] -->  display: flex;<!-- [et_pb_line_break_holder] -->  flex-direction: column;<!-- [et_pb_line_break_holder] -->  align-items: stretch;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->.lightbox-content video {<!-- [et_pb_line_break_holder] -->  width: 100%;<!-- [et_pb_line_break_holder] -->  height: auto;<!-- [et_pb_line_break_holder] -->  display: block;<!-- [et_pb_line_break_holder] -->  border-radius: 8px;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/* Close button styling *\/<!-- [et_pb_line_break_holder] -->.lightbox-close {<!-- [et_pb_line_break_holder] -->  position: absolute;<!-- [et_pb_line_break_holder] -->  top: -11px;<!-- [et_pb_line_break_holder] -->  right: -3px;<!-- [et_pb_line_break_holder] -->  \/*background: #fff;*\/<!-- [et_pb_line_break_holder] -->  color: #fff;<!-- [et_pb_line_break_holder] -->  font-size: 32px;<!-- [et_pb_line_break_holder] -->  font-weight: bold;<!-- [et_pb_line_break_holder] -->  \/*border-radius: 50%;*\/<!-- [et_pb_line_break_holder] -->  padding: 0 10px;<!-- [et_pb_line_break_holder] -->  cursor: pointer;<!-- [et_pb_line_break_holder] -->  line-height: 40px;<!-- [et_pb_line_break_holder] -->  \/*box-shadow: 0 0 10px rgba(0,0,0,0.4);*\/<!-- [et_pb_line_break_holder] -->  z-index: 1000000;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style>\n<p><!-- [et_pb_line_break_holder] --><!-- Lightbox JavaScript --><!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->document.addEventListener('DOMContentLoaded', function () {<!-- [et_pb_line_break_holder] -->  const lightbox = document.getElementById('videoLightbox');<!-- [et_pb_line_break_holder] -->  const video = document.getElementById('lightboxVideo');<!-- [et_pb_line_break_holder] -->  const banner = document.getElementById('openVideo');<!-- [et_pb_line_break_holder] -->  const lightboxContent = document.getElementById('lightboxContent');<!-- [et_pb_line_break_holder] -->  const closeBtn = document.getElementById('lightboxClose');<!-- [et_pb_line_break_holder] -->  \/\/ Function to open the lightbox<!-- [et_pb_line_break_holder] -->  function openLightbox() {<!-- [et_pb_line_break_holder] -->    lightbox.classList.add('active');<!-- [et_pb_line_break_holder] -->    video.currentTime = 0; \/\/ Start from beginning<!-- [et_pb_line_break_holder] -->    video.play();<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  \/\/ Function to close the lightbox<!-- [et_pb_line_break_holder] -->  function closeLightbox() {<!-- [et_pb_line_break_holder] -->    video.pause();<!-- [et_pb_line_break_holder] -->    lightbox.classList.remove('active');<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  \/\/ Trigger when banner is clicked<!-- [et_pb_line_break_holder] -->  if (banner) {<!-- [et_pb_line_break_holder] -->    banner.style.cursor = 'pointer';<!-- [et_pb_line_break_holder] -->    banner.addEventListener('click', function (e) {<!-- [et_pb_line_break_holder] -->      e.preventDefault();<!-- [et_pb_line_break_holder] -->      openLightbox();<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  \/\/ Close when clicking outside the video container<!-- [et_pb_line_break_holder] -->   lightbox.addEventListener('click', function (e) { console.log('click inside');<!-- [et_pb_line_break_holder] -->    if (!lightboxContent.contains(e.target)) { console.log('click outside');<!-- [et_pb_line_break_holder] -->      setTimeout(function() {<!-- [et_pb_line_break_holder] -->     \t\t closeLightbox();<!-- [et_pb_line_break_holder] -->        }, 10);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->  \/\/ Close when clicking the close button<!-- [et_pb_line_break_holder] -->  closeBtn.addEventListener('click', function (e) {<!-- [et_pb_line_break_holder] -->    e.stopPropagation(); \/\/ Prevent background click<!-- [et_pb_line_break_holder] -->    closeLightbox();<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->});<!-- [et_pb_line_break_holder] -->  <!-- [et_pb_line_break_holder] --> \/* jQuery(document).ready(function($) {<!-- [et_pb_line_break_holder] -->    const $lightbox = $('#videoLightbox');<!-- [et_pb_line_break_holder] -->    const $lightboxContent = $('#lightboxContent');<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    $lightbox.on('click', function(e) {<!-- [et_pb_line_break_holder] -->      if (!$lightboxContent[0].contains(e.target)) {<!-- [et_pb_line_break_holder] -->        console.log('Before removeClass', $lightbox.hasClass('active'));<!-- [et_pb_line_break_holder] -->      \/\/  $lightbox.removeClass('active');<!-- [et_pb_line_break_holder] -->        setTimeout(function() {<!-- [et_pb_line_break_holder] -->                $lightbox.removeClass('active').css('display','none');<!-- [et_pb_line_break_holder] -->            }, 10);<!-- [et_pb_line_break_holder] -->        console.log('After removeClass', $lightbox.hasClass('active'));<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  });*\/<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; custom_padding_last_edited=&#8221;on|tablet&#8221; module_id=&#8221;bestsellers&#8221; module_class=&#8221;full-height-experience&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#FFFFFF&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; custom_padding_tablet=&#8221;40px||40px||true|false&#8221; custom_padding_phone=&#8221;40px||40px||true|false&#8221; custom_css_main_element=&#8221;z-index: 0;&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row column_structure=&#8221;1_2,1_2&#8243; make_equal=&#8221;on&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; width_tablet=&#8221;70%&#8221; width_phone=&#8221;70%&#8221; width_last_edited=&#8221;on|tablet&#8221; max_width=&#8221;1920px&#8221; max_width_tablet=&#8221;1080px&#8221; max_width_phone=&#8221;1080px&#8221; max_width_last_edited=&#8221;on|tablet&#8221; custom_margin=&#8221;0px||0px||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; custom_css_main_element=&#8221;height: 100%;||z-index: 0;&#8221; global_colors_info=&#8221;{}&#8221; custom_css_main_element_last_edited=&#8221;off|desktop&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;|||15%|false|false&#8221; custom_padding_tablet=&#8221;|||0%|false|false&#8221; custom_padding_phone=&#8221;|||0%|false|false&#8221; custom_padding_last_edited=&#8221;on|tablet&#8221; custom_css_main_element=&#8221;height: 85vh;||display: flex;||flex-direction: column;||justify-content: center;&#8221; global_colors_info=&#8221;{}&#8221; custom_css_main_element_last_edited=&#8221;on|tablet&#8221; custom_css_main_element_tablet=&#8221;display: flex;||flex-direction: column;||justify-content: center;&#8221; custom_css_main_element_phone=&#8221;display: flex;||flex-direction: column;||justify-content: center;&#8221;][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; header_text_color=&#8221;#c6a992&#8243; header_font_size=&#8221;22px&#8221; header_line_height=&#8221;1.2em&#8221; max_width=&#8221;250px&#8221; custom_margin=&#8221;||0px||false|false&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h1>Cosm\u00e9tiques anti-\u00e2ge suisses :<br \/>\nquand les secrets des plantes alpines r\u00e9v\u00e8lent la beaut\u00e9 naturelle de votre peau.<\/h1>\n<p>[\/et_pb_text][et_pb_text module_class=&#8221;section-title-alpeor&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Freight Disp Pro Italic||||||||&#8221; text_font_size=&#8221;24px&#8221; header_2_font_size=&#8221;80px&#8221; header_2_letter_spacing=&#8221;1px&#8221; custom_margin=&#8221;||10px||false|false&#8221; header_2_font_size_tablet=&#8221;60px&#8221; header_2_font_size_phone=&#8221;45px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>Bestsellers<\/h2>\n<p>[\/et_pb_text][et_pb_text module_class=&#8221;description-alpeor&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Freight Disp Pro Italic||||||||&#8221; text_font_size=&#8221;24px&#8221; text_letter_spacing=&#8221;1px&#8221; text_line_height=&#8221;1.4em&#8221; header_2_font_size=&#8221;80px&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p class=\" translation-block\">D\u00e9couvrez les soins incontournables sign\u00e9s Alpeor : des cosm\u00e9tiques suisses 100 % naturels, pour une peau visiblement rajeunie et \u00e9clatante de sant\u00e9.<\/p>\n<p>[\/et_pb_text][et_pb_text admin_label=&#8221;Text&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font_size=&#8221;18px&#8221; text_letter_spacing=&#8221;0.05em&#8221; link_option_url=&#8221;https:\/\/alpeorv2.aif-staging.com\/category\/bestsellers\/&#8221; text_font_size_tablet=&#8221;18px&#8221; text_font_size_phone=&#8221;16px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<span class=\"custom-link\"><span class=\"text\">D\u00e9couvrir<\/span><\/span>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; module_class=&#8221;empty-to-display&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; background_image=&#8221;http:\/\/alpeorv2.aif-staging.com\/wp-content\/uploads\/2025\/03\/creme-hydratant-lifting-peau.jpg&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; custom_padding_last_edited=&#8221;on|phone&#8221; module_id=&#8221;collection&#8221; module_class=&#8221;full-height-experience&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#FFFFFF&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; custom_padding_tablet=&#8221;40px||40px||true|false&#8221; custom_padding_phone=&#8221;0px||40px||false|false&#8221; custom_css_main_element=&#8221;z-index: 0;&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row custom_padding_last_edited=&#8221;off|desktop&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; width=&#8221;70%&#8221; width_tablet=&#8221;70%&#8221; width_phone=&#8221;75%&#8221; width_last_edited=&#8221;on|phone&#8221; custom_padding=&#8221;||||false|false&#8221; custom_padding_tablet=&#8221;|||5%|false|false&#8221; custom_padding_phone=&#8221;|||5%|false|false&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text module_class=&#8221;section-title-alpeor&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Freight Disp Pro Italic||||||||&#8221; text_font_size=&#8221;24px&#8221; header_2_font_size=&#8221;80px&#8221; header_2_letter_spacing=&#8221;1px&#8221; custom_margin=&#8221;||10px||false|false&#8221; header_2_font_size_tablet=&#8221;60px&#8221; header_2_font_size_phone=&#8221;45px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>Collections<\/h2>\n<p>[\/et_pb_text][et_pb_text module_class=&#8221;description-alpeor&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Freight Disp Pro Italic||||||||&#8221; text_font_size=&#8221;24px&#8221; text_letter_spacing=&#8221;1px&#8221; text_line_height=&#8221;1.4em&#8221; header_2_font_size=&#8221;80px&#8221; max_width=&#8221;700px&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>D\u00e9couvrez les collections de soins Alpeor infus\u00e9s d\u2019actifs naturels pr\u00e9cieux pour raviver la vitalit\u00e9 de votre peau et prolonger son capital jeunesse.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_4,1_4,1_4,1_4&#8243; use_custom_gutter=&#8221;on&#8221; gutter_width=&#8221;2&#8243; custom_padding_last_edited=&#8221;off|desktop&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; width=&#8221;70%&#8221; width_tablet=&#8221;70%&#8221; width_phone=&#8221;75%&#8221; width_last_edited=&#8221;on|phone&#8221; custom_padding=&#8221;0px||||false|false&#8221; custom_padding_tablet=&#8221;|||0px|false|false&#8221; custom_padding_phone=&#8221;|||5%|false|false&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_4&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;http:\/\/alpeorv2.aif-staging.com\/wp-content\/uploads\/2025\/03\/soin-anti-age-gamme-alpeor.jpg&#8221; alt=&#8221;soin-anti-age-gamme-alpeor&#8221; title_text=&#8221;soin-anti-age-gamme-alpeor&#8221; url=&#8221;https:\/\/alpeorv2.aif-staging.com\/collection-ultitude\/&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; border_radii=&#8221;on|5px|5px|5px|5px&#8221; box_shadow_style=&#8221;preset1&#8243; box_shadow_spread=&#8221;-1px&#8221; box_shadow_color=&#8221;rgba(198,169,146,0.25)&#8221; global_colors_info=&#8221;{}&#8221; transform_styles__hover_enabled=&#8221;on|hover&#8221; transform_scale__hover_enabled=&#8221;on|hover&#8221; transform_translate__hover_enabled=&#8221;on|desktop&#8221; transform_rotate__hover_enabled=&#8221;on|desktop&#8221; transform_skew__hover_enabled=&#8221;on|desktop&#8221; transform_origin__hover_enabled=&#8221;on|desktop&#8221; transform_scale__hover=&#8221;103%|103%&#8221;][\/et_pb_image][et_pb_text module_class=&#8221;product-line&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_heading_font|||on|||||&#8221; text_text_color=&#8221;#195852&#8243; text_font_size=&#8221;35px&#8221; link_text_color=&#8221;#195852&#8243; text_orientation=&#8221;center&#8221; custom_margin=&#8221;||15px||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; global_colors_info=&#8221;{}&#8221; link_text_color__hover_enabled=&#8221;on|desktop&#8221; link_text_color__hover=&#8221;#c6a992&#8243;]<\/p>\n<p><a href=\"https:\/\/alpeorv2.aif-staging.com\/collection-ultitude\/\">Ultitude<\/a><\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_body_font||||||||&#8221; text_font_size=&#8221;17px&#8221; text_orientation=&#8221;center&#8221; custom_margin=&#8221;||10px||false|false&#8221; custom_padding=&#8221;|15%||15%|false|true&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>SOINS CELLULAIRES ANTI-\u00c2GE ULTIMES<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_heading_font||||||||&#8221; text_font_size=&#8221;18px&#8221; text_orientation=&#8221;center&#8221; custom_margin=&#8221;||15px||false|false&#8221; custom_padding=&#8221;|15%||15%|false|true&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>Vitalit\u00e9 cellulaire et capital jeunesse pr\u00e9serv\u00e9<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font_size=&#8221;18px&#8221; text_letter_spacing=&#8221;0.05em&#8221; text_orientation=&#8221;center&#8221; link_option_url=&#8221;https:\/\/alpeorv2.aif-staging.com\/collection-ultitude\/&#8221; text_font_size_tablet=&#8221;18px&#8221; text_font_size_phone=&#8221;16px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span class=\"custom-link\"><span class=\"text\">D\u00e9couvrir<\/span><\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_4&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;http:\/\/alpeorv2.aif-staging.com\/wp-content\/uploads\/2025\/03\/anti-anging-creme-anti-age-premium-suisse.jpg&#8221; alt=&#8221;anti-anging-creme-anti-age-premium-suisse&#8221; title_text=&#8221;anti-anging-creme-anti-age-premium-suisse&#8221; url=&#8221;https:\/\/alpeorv2.aif-staging.com\/collection-horizon\/&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; border_radii=&#8221;on|5px|5px|5px|5px&#8221; box_shadow_style=&#8221;preset1&#8243; box_shadow_spread=&#8221;-1px&#8221; box_shadow_color=&#8221;rgba(198,169,146,0.25)&#8221; global_colors_info=&#8221;{}&#8221; transform_styles__hover_enabled=&#8221;on|hover&#8221; transform_scale__hover_enabled=&#8221;on|hover&#8221; transform_translate__hover_enabled=&#8221;on|desktop&#8221; transform_rotate__hover_enabled=&#8221;on|desktop&#8221; transform_skew__hover_enabled=&#8221;on|desktop&#8221; transform_origin__hover_enabled=&#8221;on|desktop&#8221; transform_scale__hover=&#8221;103%|103%&#8221;][\/et_pb_image][et_pb_text module_class=&#8221;product-line&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_heading_font|||on|||||&#8221; text_text_color=&#8221;#195852&#8243; text_font_size=&#8221;35px&#8221; link_text_color=&#8221;#195852&#8243; text_orientation=&#8221;center&#8221; custom_margin=&#8221;||15px||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; global_colors_info=&#8221;{}&#8221; link_text_color__hover=&#8221;#c6a992&#8243; link_text_color__hover_enabled=&#8221;on|desktop&#8221;]<\/p>\n<p><a href=\"https:\/\/alpeorv2.aif-staging.com\/collection-horizon\/\">Horizon<\/a><\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_body_font||||||||&#8221; text_font_size=&#8221;17px&#8221; text_orientation=&#8221;center&#8221; custom_margin=&#8221;||10px||false|false&#8221; custom_padding=&#8221;|15%||15%|false|true&#8221; global_colors_info=&#8221;{}&#8221;]ANTI-AGING PREVENTIVE CARE[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_heading_font||||||||&#8221; text_font_size=&#8221;18px&#8221; text_orientation=&#8221;center&#8221; custom_margin=&#8221;||15px||false|false&#8221; custom_padding=&#8221;|15%||15%|false|true&#8221; global_colors_info=&#8221;{}&#8221;]Densifies &#038; restructures the cutaneous structure.[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font_size=&#8221;18px&#8221; text_letter_spacing=&#8221;0.05em&#8221; text_orientation=&#8221;center&#8221; link_option_url=&#8221;https:\/\/alpeorv2.aif-staging.com\/collection-horizon\/&#8221; text_font_size_tablet=&#8221;18px&#8221; text_font_size_phone=&#8221;16px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span class=\"custom-link\"><span class=\"text\">D\u00e9couvrir<\/span><\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_4&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;http:\/\/alpeorv2.aif-staging.com\/wp-content\/uploads\/2025\/03\/produits-cosmetique-peau-skin-care-suisse.jpg&#8221; alt=&#8221;produits-cosmetique-peau-skin-care-suisse&#8221; title_text=&#8221;produits-cosmetique-peau-skin-care-suisse&#8221; url=&#8221;https:\/\/alpeorv2.aif-staging.com\/collection-hydraswiss\/&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; border_radii=&#8221;on|5px|5px|5px|5px&#8221; box_shadow_style=&#8221;preset1&#8243; box_shadow_spread=&#8221;-1px&#8221; box_shadow_color=&#8221;rgba(198,169,146,0.25)&#8221; global_colors_info=&#8221;{}&#8221; transform_styles__hover_enabled=&#8221;on|hover&#8221; transform_scale__hover_enabled=&#8221;on|hover&#8221; transform_translate__hover_enabled=&#8221;on|desktop&#8221; transform_rotate__hover_enabled=&#8221;on|desktop&#8221; transform_skew__hover_enabled=&#8221;on|desktop&#8221; transform_origin__hover_enabled=&#8221;on|desktop&#8221; transform_scale__hover=&#8221;103%|103%&#8221;][\/et_pb_image][et_pb_text module_class=&#8221;product-line&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_heading_font|||on|||||&#8221; text_text_color=&#8221;#195852&#8243; text_font_size=&#8221;35px&#8221; link_text_color=&#8221;#195852&#8243; text_orientation=&#8221;center&#8221; custom_margin=&#8221;||15px||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; global_colors_info=&#8221;{}&#8221; link_text_color__hover=&#8221;#c6a992&#8243; link_text_color__hover_enabled=&#8221;on|desktop&#8221;]<\/p>\n<p><a href=\"https:\/\/alpeorv2.aif-staging.com\/collection-hydraswiss\/\">Hydraswiss<\/a><\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_body_font||||||||&#8221; text_font_size=&#8221;17px&#8221; text_orientation=&#8221;center&#8221; custom_margin=&#8221;||10px||false|false&#8221; custom_padding=&#8221;||||false|true&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>SOINS PURIFIANTS, \u00c9QUILIBRANTS &amp; HYDRATANTS<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_heading_font||||||||&#8221; text_font_size=&#8221;18px&#8221; text_orientation=&#8221;center&#8221; custom_margin=&#8221;||15px||false|false&#8221; custom_padding=&#8221;|10%||10%|false|true&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>Hydrate, \u00e9quilibre et maintient l\u2019int\u00e9grit\u00e9 de l\u2019\u00e9piderme<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font_size=&#8221;18px&#8221; text_letter_spacing=&#8221;0.05em&#8221; text_orientation=&#8221;center&#8221; link_option_url=&#8221;https:\/\/alpeorv2.aif-staging.com\/collection-hydraswiss\/&#8221; text_font_size_tablet=&#8221;18px&#8221; text_font_size_phone=&#8221;16px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span class=\"custom-link\"><span class=\"text\">D\u00e9couvrir<\/span><\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_4&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;http:\/\/alpeorv2.aif-staging.com\/wp-content\/uploads\/2025\/03\/creme-corps-regenerante.jpg&#8221; alt=&#8221;creme-corps-regenerante&#8221; title_text=&#8221;creme-corps-regenerante&#8221; url=&#8221;https:\/\/alpeorv2.aif-staging.com\/collection-body\/&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; border_radii=&#8221;on|5px|5px|5px|5px&#8221; box_shadow_style=&#8221;preset1&#8243; box_shadow_spread=&#8221;-1px&#8221; box_shadow_color=&#8221;rgba(198,169,146,0.25)&#8221; global_colors_info=&#8221;{}&#8221; transform_styles__hover_enabled=&#8221;on|hover&#8221; transform_scale__hover_enabled=&#8221;on|hover&#8221; transform_translate__hover_enabled=&#8221;on|desktop&#8221; transform_rotate__hover_enabled=&#8221;on|desktop&#8221; transform_skew__hover_enabled=&#8221;on|desktop&#8221; transform_origin__hover_enabled=&#8221;on|desktop&#8221; transform_scale__hover=&#8221;103%|103%&#8221;][\/et_pb_image][et_pb_text module_class=&#8221;product-line&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_heading_font|||on|||||&#8221; text_text_color=&#8221;#195852&#8243; text_font_size=&#8221;35px&#8221; link_text_color=&#8221;#195852&#8243; text_orientation=&#8221;center&#8221; custom_margin=&#8221;||15px||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; global_colors_info=&#8221;{}&#8221; link_text_color__hover=&#8221;#c6a992&#8243; link_text_color__hover_enabled=&#8221;on|desktop&#8221;]<\/p>\n<p><a href=\"https:\/\/alpeorv2.aif-staging.com\/collection-body\/\">Corps<\/a><\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_body_font||||||||&#8221; text_font_size=&#8221;17px&#8221; text_orientation=&#8221;center&#8221; custom_margin=&#8221;||10px||false|false&#8221; custom_padding=&#8221;|15%||15%|false|true&#8221; global_colors_info=&#8221;{}&#8221;]REGENERATING<br \/>\nCARE[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_heading_font||||||||&#8221; text_font_size=&#8221;18px&#8221; text_orientation=&#8221;center&#8221; custom_margin=&#8221;||15px||false|false&#8221; custom_padding=&#8221;|10%||10%|false|true&#8221; global_colors_info=&#8221;{}&#8221;]Smoothes, firms &#038; moisturizes the body\u2019s skin.[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font_size=&#8221;18px&#8221; text_letter_spacing=&#8221;0.05em&#8221; text_orientation=&#8221;center&#8221; link_option_url=&#8221;https:\/\/alpeorv2.aif-staging.com\/collection-body\/&#8221; text_font_size_tablet=&#8221;18px&#8221; text_font_size_phone=&#8221;16px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span class=\"custom-link\"><span class=\"text\">D\u00e9couvrir<\/span><\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; custom_padding_last_edited=&#8221;on|tablet&#8221; module_id=&#8221;rituals&#8221; module_class=&#8221;full-height-experience&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;rgba(247,226,212,0.98)&#8221; background_image=&#8221;http:\/\/alpeorv2.aif-staging.com\/wp-content\/uploads\/2025\/03\/routine-rituel-beaute-maquillage-skin-care.jpg&#8221; background_size=&#8221;custom&#8221; background_image_width=&#8221;70%&#8221; background_position=&#8221;bottom_left&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; custom_padding_tablet=&#8221;40px||40px||true|false&#8221; custom_padding_phone=&#8221;40px||40px||true|false&#8221; background_last_edited=&#8221;on|phone&#8221; background_image_width_tablet=&#8221;75%&#8221; background_image_width_phone=&#8221;60%&#8221; custom_css_main_element=&#8221;z-index: 0;&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row column_structure=&#8221;1_3,1_3,1_3&#8243; custom_padding_last_edited=&#8221;on|phone&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; width=&#8221;70%&#8221; width_tablet=&#8221;70%&#8221; width_phone=&#8221;75%&#8221; width_last_edited=&#8221;on|phone&#8221; custom_padding=&#8221;70px||||false|false&#8221; custom_padding_tablet=&#8221;0px|||5%|false|false&#8221; custom_padding_phone=&#8221;0px|||5%|false|false&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_3&#8243; disabled_on=&#8221;on|on|off&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_column][et_pb_column type=&#8221;1_3&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text module_class=&#8221;section-title-alpeor&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Freight Disp Pro Italic||||||||&#8221; text_font_size=&#8221;24px&#8221; header_2_font_size=&#8221;80px&#8221; header_2_letter_spacing=&#8221;1px&#8221; custom_margin=&#8221;||10px||false|false&#8221; header_2_font_size_tablet=&#8221;60px&#8221; header_2_font_size_phone=&#8221;45px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2 class=\" translation-block\">Rituels<br> Beaut\u00e9<\/h2>\n<p>[\/et_pb_text][et_pb_text module_class=&#8221;description-alpeor&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Freight Disp Pro Italic||||||||&#8221; text_font_size=&#8221;24px&#8221; text_letter_spacing=&#8221;1px&#8221; text_line_height=&#8221;1.4em&#8221; header_2_font_size=&#8221;80px&#8221; max_width=&#8221;700px&#8221; global_colors_info=&#8221;{}&#8221;]Find the perfect luxury skincare routine for your skin type to nourish, revitalize, and enhance your complexion.[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font_size=&#8221;18px&#8221; text_letter_spacing=&#8221;0.05em&#8221; text_font_size_tablet=&#8221;18px&#8221; text_font_size_phone=&#8221;16px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<a href=\"https:\/\/alpeorv2.aif-staging.com\/routine-oily-to-combination-skin\/\" class=\"custom-link\"><span class=\"text\">En savoir plus<\/span><\/a>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_3&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; custom_css_main_element=&#8221;display: flex;||flex-wrap: wrap;||justify-content: space-between;||min-height: 70vh;&#8221; global_colors_info=&#8221;{}&#8221; custom_css_main_element_last_edited=&#8221;on|tablet&#8221; custom_css_main_element_tablet=&#8221;display: block;&#8221; custom_css_main_element_phone=&#8221;display: block;&#8221;][et_pb_text disabled_on=&#8221;off|off|off&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_heading_font|||on|||||&#8221; text_text_color=&#8221;#195852&#8243; text_font_size=&#8221;35px&#8221; text_line_height=&#8221;1em&#8221; max_width=&#8221;230px&#8221; max_width_tablet=&#8221;200px&#8221; max_width_phone=&#8221;200px&#8221; max_width_last_edited=&#8221;on|tablet&#8221; module_alignment=&#8221;left&#8221; custom_margin=&#8221;||0px||false|false&#8221; custom_margin_tablet=&#8221;||25px||false|false&#8221; custom_margin_phone=&#8221;||15px||false|false&#8221; custom_margin_last_edited=&#8221;on|tablet&#8221; custom_padding=&#8221;||||false|false&#8221; text_font_size_tablet=&#8221;30px&#8221; text_font_size_phone=&#8221;25px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; text_orientation_tablet=&#8221;center&#8221; text_orientation_phone=&#8221;center&#8221; text_orientation_last_edited=&#8221;on|tablet&#8221; module_alignment_tablet=&#8221;center&#8221; module_alignment_phone=&#8221;center&#8221; module_alignment_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><a href=\"https:\/\/alpeorv2.aif-staging.com\/routine-oily-to-combination-skin\/\" class=\"routine-link\">PEAU MIXTE \u00c0 GRASSE<\/a><\/p>\n<p>[\/et_pb_text][et_pb_text disabled_on=&#8221;off|off|off&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_heading_font|||on|||||&#8221; text_text_color=&#8221;#195852&#8243; text_font_size=&#8221;35px&#8221; text_line_height=&#8221;1em&#8221; custom_margin=&#8221;||0px||false|false&#8221; custom_margin_tablet=&#8221;||25px||false|false&#8221; custom_margin_phone=&#8221;||15px||false|false&#8221; custom_margin_last_edited=&#8221;on|tablet&#8221; custom_padding=&#8221;||||false|false&#8221; text_font_size_tablet=&#8221;30px&#8221; text_font_size_phone=&#8221;25px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; text_orientation_tablet=&#8221;center&#8221; text_orientation_phone=&#8221;center&#8221; text_orientation_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;]<a href=\"https:\/\/alpeorv2.aif-staging.com\/routine-first-signs-of-aging-skincare\/\" class=\"routine-link\">PREMI\u00c8RES<br \/>\nRIDES<\/a>[\/et_pb_text][et_pb_text disabled_on=&#8221;off|off|off&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_heading_font|||on|||||&#8221; text_text_color=&#8221;#195852&#8243; text_font_size=&#8221;35px&#8221; text_line_height=&#8221;1em&#8221; custom_margin=&#8221;||0px||false|false&#8221; custom_margin_tablet=&#8221;||25px||false|false&#8221; custom_margin_phone=&#8221;||15px||false|false&#8221; custom_margin_last_edited=&#8221;on|tablet&#8221; custom_padding=&#8221;||||false|false&#8221; text_font_size_tablet=&#8221;30px&#8221; text_font_size_phone=&#8221;25px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; text_orientation_tablet=&#8221;center&#8221; text_orientation_phone=&#8221;center&#8221; text_orientation_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;]<a href=\"https:\/\/alpeorv2.aif-staging.com\/routine-sensitive-skincare\/\" class=\"routine-link\">PEAU SENSIBLE<\/a>[\/et_pb_text][et_pb_text disabled_on=&#8221;off|off|off&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_heading_font|||on|||||&#8221; text_text_color=&#8221;#195852&#8243; text_font_size=&#8221;35px&#8221; text_line_height=&#8221;1em&#8221; custom_margin=&#8221;||0px||false|false&#8221; custom_margin_tablet=&#8221;||25px||false|false&#8221; custom_margin_phone=&#8221;||15px||false|false&#8221; custom_margin_last_edited=&#8221;on|tablet&#8221; custom_padding=&#8221;||||false|false&#8221; text_font_size_tablet=&#8221;30px&#8221; text_font_size_phone=&#8221;25px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; text_orientation_tablet=&#8221;center&#8221; text_orientation_phone=&#8221;center&#8221; text_orientation_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;]<a href=\"https:\/\/alpeorv2.aif-staging.com\/routine-anti-aging-skincare\/\" class=\"routine-link\">PEAU MATURE<\/a>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_heading_font|||on|||||&#8221; text_text_color=&#8221;#195852&#8243; text_font_size=&#8221;35px&#8221; text_line_height=&#8221;1em&#8221; custom_margin=&#8221;||0px||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; text_font_size_tablet=&#8221;30px&#8221; text_font_size_phone=&#8221;25px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; text_orientation_tablet=&#8221;center&#8221; text_orientation_phone=&#8221;center&#8221; text_orientation_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;]<a href=\"https:\/\/alpeorv2.aif-staging.com\/routine-dry-skin-skincare\/\" class=\"routine-link\">PEAU S\u00c8CHE<\/a>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; custom_padding_last_edited=&#8221;on|tablet&#8221; module_id=&#8221;the-science&#8221; module_class=&#8221;full-height-experience&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#FFFFFF&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; custom_padding_tablet=&#8221;40px||40px||true|false&#8221; custom_padding_phone=&#8221;40px||40px||true|false&#8221; custom_css_main_element=&#8221;z-index: 0;&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row column_structure=&#8221;1_2,1_2&#8243; make_equal=&#8221;on&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; width_tablet=&#8221;70%&#8221; width_phone=&#8221;75%&#8221; width_last_edited=&#8221;on|phone&#8221; max_width=&#8221;1920px&#8221; max_width_tablet=&#8221;1080px&#8221; max_width_phone=&#8221;1080px&#8221; max_width_last_edited=&#8221;on|tablet&#8221; custom_margin=&#8221;0px||0px||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; custom_css_main_element=&#8221;height: 100%;||z-index: 0;&#8221; global_colors_info=&#8221;{}&#8221; custom_css_main_element_last_edited=&#8221;on|tablet&#8221; custom_css_main_element_tablet=&#8221;height: 100%;||z-index: 0;||display: flex;||flex-wrap: wrap;&#8221; custom_css_main_element_phone=&#8221;height: 100%;||z-index: 0;||display: flex;||flex-wrap: wrap;&#8221;][et_pb_column type=&#8221;1_2&#8243; module_class=&#8221;empty-to-display&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; background_image=&#8221;http:\/\/alpeorv2.aif-staging.com\/wp-content\/uploads\/2025\/03\/swiss-made-cosmetics.jpg&#8221; global_colors_info=&#8221;{}&#8221; custom_css_main_element_last_edited=&#8221;on|tablet&#8221; custom_css_main_element_tablet=&#8221;order: 2;&#8221; custom_css_main_element_phone=&#8221;order: 2;&#8221;][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;|15%|||false|false&#8221; custom_padding_tablet=&#8221;|0%|||false|false&#8221; custom_padding_phone=&#8221;|0%|||false|false&#8221; custom_padding_last_edited=&#8221;on|phone&#8221; custom_css_main_element=&#8221;height: 85vh;||display: flex;||flex-direction: column;||justify-content: center;||&#8221; global_colors_info=&#8221;{}&#8221; custom_css_main_element_last_edited=&#8221;on|desktop&#8221; custom_css_main_element_tablet=&#8221;display: flex;||flex-direction: column;||justify-content: center;||order: 1;&#8221; custom_css_main_element_phone=&#8221;display: flex;||flex-direction: column;||justify-content: center;||order: 1;&#8221;][et_pb_text module_class=&#8221;section-title-alpeor&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Freight Disp Pro Italic||||||||&#8221; text_font_size=&#8221;24px&#8221; header_2_font_size=&#8221;80px&#8221; header_2_letter_spacing=&#8221;1px&#8221; custom_margin=&#8221;||10px||false|false&#8221; header_2_font_size_tablet=&#8221;60px&#8221; header_2_font_size_phone=&#8221;45px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>Des cosm\u00e9tiques issus des Alpes suisses<\/h2>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_body_font||||||||&#8221; text_text_color=&#8221;#2d2d2d&#8221; text_font_size=&#8221;16px&#8221; custom_margin_tablet=&#8221;||40px||false|false&#8221; custom_margin_phone=&#8221;||40px||false|false&#8221; custom_margin_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>La recherche Alpeor se concentre sur les principes actifs issus du monde v\u00e9g\u00e9tal et de l\u2019eau des montagnes suisses, avec les plantes alpines organiques en point-de-mire. Nos chercheurs \u00e9laborent des formules toujours plus performantes qu\u2019ils ma\u00eetrisent avec une extr\u00eame rigueur scientifique pour garantir \u00e0 votre peau une exp\u00e9rience sensorielle unique et des r\u00e9sultats visibles.<\/p>\n<p>Au c\u0153ur de notre succ\u00e8s, r\u00e9sident la qu\u00eate de l\u2019excellence et un savoir-faire de pointe dans le domaine de la cosm\u00e9tique suisse. Ainsi, et depuis plus de 20 ans, notre mission est d\u2019offrir des soins d\u2019exception, alliant expertise scientifique et richesse du monde v\u00e9g\u00e9tal gr\u00e2ce aux actifs naturels pr\u00e9cieux issus des plantes alpines suisses.<\/p>\n<p>Les ingr\u00e9dients botaniques et bioactifs hautement concentr\u00e9s qui entrent dans la formulation de nos collections sont rigoureusement s\u00e9lectionn\u00e9s, test\u00e9s scientifiquement et savamment dos\u00e9s afin de permettre \u00e0 votre peau de lutter efficacement contre les effets du temps.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_2,1_2&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; width=&#8221;70%&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text content_tablet=&#8221;<\/p>\n<p>Le r\u00e8gne v\u00e9g\u00e9tal au c\u0153ur de la science<\/p>\n<p>&#8221; content_phone=&#8221;<\/p>\n<p>Le r\u00e8gne v\u00e9g\u00e9tal au c\u0153ur de la science<\/p>\n<p>&#8221; content_last_edited=&#8221;on|tablet&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_heading_font||on||||||&#8221; text_text_color=&#8221;#195852&#8243; text_font_size=&#8221;30px&#8221; text_line_height=&#8221;1em&#8221; custom_margin=&#8221;||20px||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; text_orientation_tablet=&#8221;&#8221; text_orientation_phone=&#8221;left&#8221; text_orientation_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>Chercheurs de jeunesse<br \/>pour votre peau<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_body_font||||||||&#8221; text_text_color=&#8221;#2d2d2d&#8221; text_font_size=&#8221;16px&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>Percer les m\u00e9canismes intimes du vivant, emprunter le pouvoir des plantes, reproduire leurs incroyables vertus pour les transmettre \u00e0 votre peau. La recherche Alpeor repose sur trois disciplines scientifiques - phytoth\u00e9rapie, phytochimie et dermatologie - pour cr\u00e9er des soins technologiques et innovants inspir\u00e9s du g\u00e9nie de la nature. Cette d\u00e9marche pluridisciplinaire permet \u00e0 nos experts scientifiques de ma\u00eetriser les origines de la long\u00e9vit\u00e9 et de faire \u00e9merger du v\u00e9g\u00e9tal les solutions anti-\u00e2ge de demain.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; module_class=&#8221;dynamic-spacing-column&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;|||13px|false|false&#8221; custom_padding_tablet=&#8221;|||0px|false|false&#8221; custom_padding_phone=&#8221;|||0px|false|false&#8221; custom_padding_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_body_font||||||||&#8221; text_text_color=&#8221;#2d2d2d&#8221; text_font_size=&#8221;16px&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>Parmi la richesse du monde v\u00e9g\u00e9tal environnant, nous avons identifi\u00e9 trois plantes reconnues pour leurs propri\u00e9t\u00e9s anti-inflammatoires et antioxydantes exceptionnelles: l\u2019Edelweiss, le Narcisse et le Rhodiola rosea : trois plantes aux vertus pr\u00e9cieuses, devenues embl\u00e9matiques pour notre marque et incarnant l\u2019essence-m\u00eame de nos programmes de soins anti-\u00e2ge.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; custom_padding_last_edited=&#8221;on|tablet&#8221; module_id=&#8221;conscious-beauty&#8221; module_class=&#8221;full-height-experience&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#FFFFFF&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; custom_padding_tablet=&#8221;40px||40px||true|false&#8221; custom_padding_phone=&#8221;40px||40px||true|false&#8221; custom_css_main_element=&#8221;z-index: 0;&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row column_structure=&#8221;1_2,1_2&#8243; make_equal=&#8221;on&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; width_tablet=&#8221;70%&#8221; width_phone=&#8221;75%&#8221; width_last_edited=&#8221;on|phone&#8221; max_width=&#8221;1920px&#8221; max_width_tablet=&#8221;1080px&#8221; max_width_phone=&#8221;1080px&#8221; max_width_last_edited=&#8221;on|tablet&#8221; custom_margin=&#8221;0px||0px||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; custom_css_main_element=&#8221;height: 100%;||z-index: 0;&#8221; global_colors_info=&#8221;{}&#8221; custom_css_main_element_last_edited=&#8221;off|desktop&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;|||15%|false|false&#8221; custom_padding_tablet=&#8221;|||0%|false|false&#8221; custom_padding_phone=&#8221;|||0%|false|false&#8221; custom_padding_last_edited=&#8221;on|tablet&#8221; custom_css_main_element=&#8221;height: 85vh;||display: flex;||flex-direction: column;||justify-content: center;&#8221; global_colors_info=&#8221;{}&#8221; custom_css_main_element_last_edited=&#8221;on|tablet&#8221; custom_css_main_element_tablet=&#8221;display: flex;||flex-direction: column;||justify-content: center;&#8221; custom_css_main_element_phone=&#8221;display: flex;||flex-direction: column;||justify-content: center;&#8221;][et_pb_text module_class=&#8221;section-title-alpeor&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Freight Disp Pro Italic||||||||&#8221; text_font_size=&#8221;24px&#8221; header_2_font_size=&#8221;80px&#8221; header_2_letter_spacing=&#8221;1px&#8221; custom_margin=&#8221;||10px||false|false&#8221; header_2_font_size_tablet=&#8221;60px&#8221; header_2_font_size_phone=&#8221;45px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>La beaut\u00e9 en conscience<\/h2>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_body_font||||||||&#8221; text_text_color=&#8221;#2d2d2d&#8221; text_font_size=&#8221;16px&#8221; global_colors_info=&#8221;{}&#8221;]Just as the water collected for our formulas runs through the Swiss mountains, so nature runs through our very veins. It is our inspiration in every breath, our power, and our playground. From its origins as a well being clinic, Alpeor skincare has worked with and for nature, taking only what is necessary, ensuring biodiversity, and playing a part in protecting our incredible nature. It has never been otherwise.\u00a0 With Alpeor Swiss essence also means Swiss excellence.[\/et_pb_text][et_pb_text content_tablet=&#8221;<\/p>\n<p>Plus que des soins de la peau naturels<\/p>\n<p>&#8221; content_phone=&#8221;More than just natural skincare&#8221; content_last_edited=&#8221;on|tablet&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_heading_font||on||||||&#8221; text_text_color=&#8221;#195852&#8243; text_font_size=&#8221;30px&#8221; text_line_height=&#8221;1em&#8221; custom_margin=&#8221;||20px||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; text_orientation_tablet=&#8221;&#8221; text_orientation_phone=&#8221;left&#8221; text_orientation_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>Au-del\u00e0 du<br \/>rituel de soins<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;&#8211;et_global_body_font||||||||&#8221; text_text_color=&#8221;#2d2d2d&#8221; text_font_size=&#8221;16px&#8221; global_colors_info=&#8221;{}&#8221;]What sets us apart is our capacity to blend the natural healing power of alpine plant extracts with the effectiveness of advanced scientific innovation to neutralize the oxidant action of free radicals and other factors responsible for skin aging. As a result, skin appears rejuvenated, healthy and perfectly rested. Wrinkles and fine lines are softened, and in their place is a radiant glow.[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font_size=&#8221;18px&#8221; text_letter_spacing=&#8221;0.05em&#8221; link_option_url=&#8221;https:\/\/alpeorv2.aif-staging.com\/about-our-swiss-brand\/&#8221; text_font_size_tablet=&#8221;18px&#8221; text_font_size_phone=&#8221;16px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span class=\"custom-link\"><span class=\"text\">En savoir plus<\/span><\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; module_class=&#8221;empty-to-display&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; background_image=&#8221;http:\/\/alpeorv2.aif-staging.com\/wp-content\/uploads\/2025\/03\/natural-skincare-conscious-beauty.jpg&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>","protected":false},"excerpt":{"rendered":"<p><div class=\"et_pb_row et_pb_row_0 homepage_slide_1 et_pb_equal_columns\">\n\t\t\t\t<div class=\"et_pb_column et_pb_column_1_2 et_pb_column_0 slider-desc  et_pb_css_mix_blend_mode_passthrough\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_pb_text et_pb_text_0 section-title-alpeor  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><h2>Bienvenue dans l'univers fascinant d'Alpeor.<\/h2><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_pb_text et_pb_text_1 description-alpeor  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><p>An encounter between pristine nature and cutting-edge science<\/p><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_pb_text et_pb_text_2  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><p ><span class=\"custom-link\" id=\"openVideo\"><span class=\"text\">Watch the movie<\/span><\/span><\/p><\/div>\n\t\t\t<\/div>\n\t\t\t<\/div><div class=\"et_pb_column et_pb_column_1_2 et_pb_column_1 empty-to-display  et_pb_css_mix_blend_mode_passthrough et-last-child\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_pb_image et_pb_image_0\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<span class=\"et_pb_image_wrap\"><\/span>\n\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div><div class=\"et_pb_row et_pb_row_1 homepage_slide_1 et_pb_equal_columns\">\n\t\t\t\t<div class=\"et_pb_column et_pb_column_1_2 et_pb_column_2 slider-desc  et_pb_css_mix_blend_mode_passthrough\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_pb_text et_pb_text_3 section-title-alpeor  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><h2>L\u2019ic\u00f4ne: S\u00e9rum Or des Alpes<\/h2><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_pb_text et_pb_text_4 description-alpeor  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><p>Et si notre peau gardait en elle  la m\u00e9moire de sa jeunesse? D\u00e9couvrez un v\u00e9ritable concentr\u00e9 de biotechnologie qui d\u00e9toxifie les cellules pour mieux relancer les m\u00e9canismes de jeunesse.<\/p><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_pb_text et_pb_text_5 et_clickable  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><p><span class=\"custom-link\"><span class=\"text\">En savoir plus<\/span><\/span><\/p><\/div>\n\t\t\t<\/div>\n\t\t\t<\/div><div class=\"et_pb_column et_pb_column_1_2 et_pb_column_3 empty-to-display  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div><div class=\"et_pb_row et_pb_row_2 homepage_slide_1 et_pb_equal_columns\">\n\t\t\t\t<div class=\"et_pb_column et_pb_column_1_2 et_pb_column_4 slider-desc  et_pb_css_mix_blend_mode_passthrough\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_pb_text et_pb_text_6 section-title-alpeor  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><h2>Collection Ultitude<\/h2><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_pb_text et_pb_text_7 description-alpeor  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><p>R\u00e9g\u00e9n\u00e9ration cellulaire ultime puisant son inspiration dans les profondeurs des pr\u00e9cieuses plantes alpines suisses.<\/p><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_pb_text et_pb_text_8 et_clickable  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><p><span class=\"custom-link\"><span class=\"text\">D\u00e9couvrir la collection<\/span><\/span><\/p><\/div>\n\t\t\t<\/div>\n\t\t\t<\/div><div class=\"et_pb_column et_pb_column_1_2 et_pb_column_5 empty-to-display  et_pb_css_mix_blend_mode_passthrough et-last-child\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_pb_image et_pb_image_1 float-ultitude\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<span class=\"et_pb_image_wrap\"><img loading=\"lazy\" decoding=\"async\" width=\"303\" height=\"516\" src=\"http:\/\/alpeorv2.aif-staging.com\/wp-content\/uploads\/2025\/04\/ultitude-product-alone-slide.png\" alt=\"ou-des-alpes-produit-anti-age-anti-aging-product\" title=\"ultitude-produit-unique-diapositive\" srcset=\"https:\/\/alpeorv2.aif-staging.com\/wp-content\/uploads\/2025\/04\/ultitude-product-alone-slide.png 303w, https:\/\/alpeorv2.aif-staging.com\/wp-content\/uploads\/2025\/04\/ultitude-product-alone-slide-176x300.png 176w, https:\/\/alpeorv2.aif-staging.com\/wp-content\/uploads\/2025\/04\/ultitude-product-alone-slide-7x12.png 7w\" sizes=\"(max-width: 303px) 100vw, 303px\" class=\"wp-image-33259\" \/><\/span>\n\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div><div class=\"et_pb_row et_pb_row_3 homepage_slide_1 et_pb_equal_columns\">\n\t\t\t\t<div class=\"et_pb_column et_pb_column_1_2 et_pb_column_6 slider-desc  et_pb_css_mix_blend_mode_passthrough\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_pb_text et_pb_text_9 section-title-alpeor  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><h2>L\u2019ic\u00f4ne: S\u00e9rum Or des Alpes<\/h2><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_pb_text et_pb_text_10 description-alpeor  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><p>Et si notre peau gardait en elle  la m\u00e9moire de sa jeunesse? D\u00e9couvrez un v\u00e9ritable concentr\u00e9 de biotechnologie qui d\u00e9toxifie les cellules pour mieux relancer les m\u00e9canismes de jeunesse.<\/p><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_pb_text et_pb_text_11 et_clickable  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><p><span class=\"custom-link\"><span class=\"text\">En savoir plus<\/span><\/span><\/p><\/div>\n\t\t\t<\/div>\n\t\t\t<\/div><div class=\"et_pb_column et_pb_column_1_2 et_pb_column_7 empty-to-display  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div><div class=\"et_pb_row et_pb_row_4 homepage_slide_1 et_pb_equal_columns\">\n\t\t\t\t<div class=\"et_pb_column et_pb_column_1_2 et_pb_column_8 slider-desc  et_pb_css_mix_blend_mode_passthrough\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_pb_text et_pb_text_12 section-title-alpeor  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><h2>Swiss Essence<\/h2><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_pb_text et_pb_text_13 description-alpeor  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><p>D\u00e9couvrez des soins exclusifs inspir\u00e9s par la puret\u00e9 des paysages suisses. Formul\u00e9s \u00e0 base de pr\u00e9cieuses plantes alpines et de bioactifs selon les crit\u00e8res de qualit\u00e9 les plus \u00e9lev\u00e9s, dans le plus grand soin du respect de l\u2019environnement.<\/p><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_pb_text et_pb_text_14 et_clickable  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><p><span class=\"custom-link\"><span class=\"text\">D\u00e9couvrir<\/span><\/span><\/p><\/div>\n\t\t\t<\/div>\n\t\t\t<\/div><div class=\"et_pb_column et_pb_column_1_2 et_pb_column_9 empty-to-display  et_pb_css_mix_blend_mode_passthrough et-last-child et_pb_column_empty\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div>    <div id=\"alpeor-navigation-container\">\r\n        <div id=\"alpeor-navigation\"><\/div>\r\n    <\/div>\r\n\r\n    <script>\r\n    document.addEventListener(\"DOMContentLoaded\", function () {\r\n        console.log(\"\ud83d\udfe2 Initializing alpeor navigation \");\r\n        let sections = document.querySelectorAll(\".full-height-experience:not(.alpeor-footer)\");\r\n        console.log(\"\ud83d\udccb Found sections:\", sections.length);\r\n        let currentIndex = 0;\r\n        window.currentIndex = currentIndex;\r\n        let isScrolling = false;\r\n        let isLocked = false;\r\n        let isNavigating = false;\r\n        let targetIndex = null;\r\n        let lastScrollTime = 0;\r\n        const scrollCooldown = 800;\r\n        let lastWheelTime = 0;\r\n        const wheelDebounce = 250;\r\n        let scrollQueue = [];\r\n\r\n        let navContainer = document.getElementById('alpeor-navigation');\r\n        let dotWrappers = [];\r\n        let dotSize = 15;\r\n        let nextLabelVisible = null;\r\n\r\n        if (navContainer && sections.length > 0) {\r\n            console.log(\"\ud83d\udee0\ufe0f Building navigation dots\");\r\n            sections.forEach(function(section, index) {\r\n                let id = section.id;\r\n                if (id) {\r\n                    let formattedText = id.replace(\/-\/g, ' ').replace(\/\\b\\w\/g, c => c.toUpperCase());\r\n                    if (formattedText.toLowerCase() === 'conscious beauty') formattedText = 'Conscious<br>Beauty';\r\n                    if (formattedText.toLowerCase() === 'our commitments') formattedText = 'Our<br>Commitments';\r\n\r\n                    let dotWrapper = document.createElement('div');\r\n                    dotWrapper.classList.add('navigation-dot-wrapper');\r\n\r\n                    let link = document.createElement('a');\r\n                    link.href = 'javascript:void(0)';\r\n                    link.classList.add('navigation-link');\r\n                    link.dataset.section = id;\r\n\r\n                    let dot = document.createElement('div');\r\n                    dot.classList.add('navigation-dot');\r\n\r\n                    let label = document.createElement('span');\r\n                    label.classList.add('navigation-label');\r\n                    label.innerHTML = formattedText;\r\n\r\n                    link.appendChild(dot);\r\n                    link.appendChild(label);\r\n                    dotWrapper.appendChild(link);\r\n                    navContainer.appendChild(dotWrapper);\r\n\r\n                    dotWrappers.push(dotWrapper);\r\n                }\r\n            });\r\n\r\n            for (let i = 0; i < dotWrappers.length - 1; i++) {\r\n                let segment = document.createElement('div');\r\n                segment.classList.add('navigation-segment');\r\n                navContainer.appendChild(segment);\r\n            }\r\n\r\n            let totalHeight = navContainer.offsetHeight;\r\n            let spaceBetween = totalHeight \/ (dotWrappers.length - 1);\r\n\r\n            dotWrappers.forEach((wrapper, index) => {\r\n                let position = index * spaceBetween;\r\n                wrapper.style.position = 'absolute';\r\n                wrapper.style.top = position + 'px';\r\n\r\n                if (index < dotWrappers.length - 1) {\r\n                    let segment = document.querySelectorAll('.navigation-segment')[index];\r\n                    segment.style.position = 'absolute';\r\n                    segment.style.top = (position + dotSize) + 'px';\r\n                    segment.style.height = (spaceBetween - dotSize) + 'px';\r\n                }\r\n            });\r\n\r\n            let visibleIndex = getVisibleSectionIndex();\r\n            window.currentIndex = visibleIndex;\r\n            updateNavigationDots(visibleIndex);\r\n            console.log(\"\u2705 Navigation initialized, visibleIndex:\", visibleIndex);\r\n        } else {\r\n            console.error(\"\u274c No navContainer or sections found\");\r\n        }\r\n\r\n        function updateNavigationDots(index) {\r\n            let activeSection = sections[index];\r\n            if (!activeSection || !activeSection.id) {\r\n                console.warn(\"\u26a0\ufe0f Invalid active section at index:\", index);\r\n                return;\r\n            }\r\n\r\n            if (isNavigating && index !== targetIndex) {\r\n                console.log(\"\ud83d\udd07 Suppressing dot update during navigation:\", { currentIndex: index, targetIndex });\r\n                return;\r\n            }\r\n\r\n            let id = activeSection.id;\r\n\r\n            document.querySelectorAll('.navigation-dot').forEach(dot => {\r\n                dot.style.backgroundColor = 'transparent';\r\n                dot.style.pointerEvents = 'auto';\r\n                dot.style.opacity = '1';\r\n            });\r\n            document.querySelectorAll('.navigation-label').forEach(label => label.style.opacity = '0');\r\n            document.querySelectorAll('.navigation-link').forEach(link => link.style.pointerEvents = 'auto');\r\n            document.querySelectorAll('.navigation-dot-wrapper').forEach(w => w.classList.remove('next-active'));\r\n\r\n            let activeLink = document.querySelector('.navigation-link[data-section=\"' + id + '\"]');\r\n            if (!activeLink) {\r\n                console.warn(\"\u26a0\ufe0f No active link for section:\", id);\r\n                return;\r\n            }\r\n\r\n            let activeDot = activeLink.querySelector('.navigation-dot');\r\n            let activeLabel = activeLink.querySelector('.navigation-label');\r\n\r\n            if (activeDot) {\r\n                activeDot.style.backgroundColor = '#C6A992';\r\n                activeDot.style.pointerEvents = 'none';\r\n                activeDot.style.opacity = '1';\r\n            }\r\n            if (activeLabel) activeLabel.style.opacity = '0';\r\n\r\n            activeLink.style.pointerEvents = 'none';\r\n\r\n            let wrapper = activeLink.closest('.navigation-dot-wrapper');\r\n            let nextWrapper = wrapper ? wrapper.nextElementSibling : null;\r\n\r\n            if (nextWrapper && nextWrapper.classList.contains('navigation-dot-wrapper')) {\r\n                let nextDot = nextWrapper.querySelector('.navigation-dot');\r\n                let nextLabel = nextWrapper.querySelector('.navigation-label');\r\n                if (nextDot && nextLabel) {\r\n                    nextDot.style.opacity = '0';\r\n                    nextLabel.style.opacity = '1';\r\n                    nextWrapper.classList.add('next-active');\r\n                    nextLabelVisible = nextLabel;\r\n                }\r\n            } else {\r\n                nextLabelVisible = null;\r\n            }\r\n\r\n            console.log(\"\u2705 Dot updated for index:\", index);\r\n        }\r\n\r\n        function disableUserInputs() {\r\n            isLocked = true;\r\n            removeScrollListeners();\r\n            window.addEventListener(\"touchmove\", preventDefault, { passive: false });\r\n            window.addEventListener(\"wheel\", preventDefault, { passive: false });\r\n            window.addEventListener(\"keydown\", preventDefault, { passive: false });\r\n            window.addEventListener(\"click\", preventDefault, { passive: false });\r\n            document.querySelectorAll('.navigation-link').forEach(link => {\r\n                link.style.pointerEvents = 'none';\r\n            });\r\n        }\r\n\r\n        function enableUserInputs() {\r\n            isLocked = false;\r\n            if (window.innerWidth >= 1024) {\r\n                addScrollListeners();\r\n            }\r\n            window.removeEventListener(\"touchmove\", preventDefault);\r\n            window.removeEventListener(\"wheel\", preventDefault);\r\n            window.removeEventListener(\"keydown\", preventDefault);\r\n            window.removeEventListener(\"click\", preventDefault);\r\n            document.querySelectorAll('.navigation-link').forEach(link => {\r\n                link.style.pointerEvents = 'auto';\r\n            });\r\n            document.body.style.overflow = '';\r\n        }\r\n\r\n        function preventDefault(e) {\r\n            if (isScrolling || isLocked) {\r\n                const target = e.target.closest('.full-height-experience');\r\n                const footer = document.querySelector(\".alpeor-footer\");\r\n                if (target && target.scrollHeight > target.clientHeight && !isAtBoundary(target)) {\r\n                    console.log(\"\u2705 Allowing internal section scrolling\");\r\n                    return; \/\/ Allow internal scrolling\r\n                }\r\n                if (footer && footer.getBoundingClientRect().top <= window.innerHeight + 100) {\r\n                    console.log(\"\u2705 Allowing footer scrolling\");\r\n                    return; \/\/ Allow footer scrolling\r\n                }\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                console.log(\"\ud83d\uded1 Event blocked:\", e.type);\r\n            }\r\n        }\r\n\r\n        function isAtBoundary(section) {\r\n            const atBottom = section.scrollTop + section.clientHeight >= section.scrollHeight - 5;\r\n            const atTop = section.scrollTop <= 5;\r\n            return atBottom || atTop;\r\n        }\r\n\r\n        function isScrollable(section) {\r\n            return section.scrollHeight > section.clientHeight + 1;\r\n        }\r\n\r\n        function scrollToSection(index) {\r\n    if (index < 0 || index >= sections.length) return;\r\n\r\n    if (isScrolling || isLocked) {\r\n        scrollQueue = [index];\r\n        return;\r\n    }\r\n\r\n    const now = Date.now();\r\n    if (now - lastScrollTime < scrollCooldown) return;\r\n    lastScrollTime = now;\r\n\r\n    isScrolling = true;\r\n    disableUserInputs();\r\n\r\n    let offsetAdjustment = (index > 0 && window.innerWidth >= 1024) ? -21 : 0;\r\n    const targetTop = sections[index].offsetTop - offsetAdjustment;\r\n    const startTop = window.scrollY;\r\n    const distance = targetTop - startTop;\r\n    const duration = 800; \/\/ smoothness duration in ms\r\n    const easing = t => t < 0.5\r\n        ? 4 * t * t * t\r\n        : 1 - Math.pow(-2 * t + 2, 3) \/ 2; \/\/ easeInOutCubic\r\n\r\n    let startTime = null;\r\n\r\n    function animateScroll(timestamp) {\r\n        if (!startTime) startTime = timestamp;\r\n        const elapsed = timestamp - startTime;\r\n        const progress = Math.min(elapsed \/ duration, 1);\r\n        const eased = easing(progress);\r\n\r\n        window.scrollTo(0, startTop + distance * eased);\r\n\r\n        if (elapsed < duration) {\r\n            requestAnimationFrame(animateScroll);\r\n        } else {\r\n            isScrolling = false;\r\n            isNavigating = false;\r\n            targetIndex = null;\r\n            enableUserInputs();\r\n            updateNavigationDots(index);\r\n\r\n            if (scrollQueue.length > 0) {\r\n                const nextIndex = scrollQueue.shift();\r\n                isNavigating = true;\r\n                targetIndex = nextIndex;\r\n                scrollToSection(nextIndex);\r\n            }\r\n        }\r\n    }\r\n\r\n    requestAnimationFrame(animateScroll);\r\n}\r\n\r\n\r\n        function handleScroll(event) {\r\n            const now = Date.now();\r\n            if (now - lastWheelTime < wheelDebounce || isScrolling || isLocked || window.innerWidth < 1024 || window.justNavigated) {\r\n                console.log(\"\ud83d\uded1 Scroll blocked:\", { isScrolling, isLocked, isMobile: window.innerWidth < 1024, justNavigated: window.justNavigated });\r\n                event.preventDefault();\r\n                event.stopPropagation();\r\n                return;\r\n            }\r\n            lastWheelTime = now;\r\n\r\n            \/\/ Sync currentIndex with visible section\r\n            currentIndex = getVisibleSectionIndex();\r\n            window.currentIndex = currentIndex;\r\n\r\n            const footer = document.querySelector(\".alpeor-footer\");\r\n            if (footer && footer.getBoundingClientRect().top <= window.innerHeight + 100) {\r\n                console.log(\"\u2705 Footer near or in view, allowing free scroll\");\r\n                return;\r\n            }\r\n\r\n            let section = sections[currentIndex];\r\n            let scrollable = isScrollable(section);\r\n            let atBottom = section.scrollTop + section.clientHeight >= section.scrollHeight - 5;\r\n            let atTop = section.scrollTop <= 5;\r\n\r\n            console.log(\"\ud83d\udccf Scroll position:\", {\r\n                scrollTop: section.scrollTop,\r\n                clientHeight: section.clientHeight,\r\n                scrollHeight: section.scrollHeight,\r\n                atTop,\r\n                atBottom,\r\n                isScrollable: scrollable\r\n            });\r\n\r\n            const deltaThreshold = 10;\r\n            let delta = Math.abs(event.deltaY) > deltaThreshold ? Math.sign(event.deltaY) : 0;\r\n\r\n            \/*if (scrollable && !atBottom && delta > 0) {\r\n                console.log(\"\ud83d\udd04 Scrolling inside section (down)\", {\r\n                    scrollTop: section.scrollTop,\r\n                    clientHeight: section.clientHeight,\r\n                    scrollHeight: section.scrollHeight\r\n                });\r\n                return;\r\n            }\r\n            if (scrollable && !atTop && delta < 0) {\r\n                console.log(\"\ud83d\udd04 Scrolling inside section (up)\", {\r\n                    scrollTop: section.scrollTop,\r\n                    clientHeight: section.clientHeight,\r\n                    scrollHeight: section.scrollHeight\r\n                });\r\n                return;\r\n            }*\/\r\n\t\t\t\r\n\t\t\tif (\r\n\t\t\t\t(currentIndex === sections.length - 1 && delta > 0) || \r\n\t\t\t\t(currentIndex === 0 && delta < 0)\r\n\t\t\t) {\r\n\t\t\t\tconsole.log(\"\u2705 At boundary, allow normal scroll\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (scrollable && !atBottom && delta > 0) return;\r\n\t\t\tif (scrollable && !atTop && delta < 0) return;\r\n\t\t\t\r\n            if (delta !== 0) {\r\n                event.preventDefault();\r\n                event.stopPropagation();\r\n\r\n                if (scrollable && atBottom && delta > 0) {\r\n                    console.log(\"\ud83d\udd04 Boundary hit: bottom of scrollable section, snapping down\");\r\n                } else if (scrollable && atTop && delta < 0) {\r\n                    console.log(\"\ud83d\udd04 Boundary hit: top of scrollable section, snapping up\");\r\n                }\r\n\r\n                currentIndex += delta > 0 ? 1 : -1;\r\n                currentIndex = Math.max(0, Math.min(currentIndex, sections.length - 1));\r\n                window.currentIndex = currentIndex;\r\n                scrollToSection(currentIndex);\r\n            }\r\n        }\r\n\r\n        function handleKeyDown(event) {\r\n            if (isScrolling || isLocked) return;\r\n\r\n            currentIndex = window.currentIndex;\r\n            let section = sections[currentIndex];\r\n            let scrollable = isScrollable(section);\r\n            let atBottom = section.scrollTop + section.clientHeight >= section.scrollHeight - 5;\r\n            let atTop = section.scrollTop <= 5;\r\n\r\n            if ((event.key === \"ArrowDown\" && (!scrollable || atBottom)) ||\r\n                (event.key === \"ArrowUp\" && (!scrollable || atTop))) {\r\n                currentIndex += (event.key === \"ArrowDown\") ? 1 : -1;\r\n                currentIndex = Math.max(0, Math.min(currentIndex, sections.length - 1));\r\n                window.currentIndex = currentIndex;\r\n                scrollToSection(currentIndex);\r\n            }\r\n        }\r\n\r\n        function addScrollListeners() {\r\n\t\t\tconst isHomePage = window.location.pathname === \"\/\" \r\n\t\t\t\t\t\t\t   || document.body.classList.contains(\"home\"); \/\/ WP\/HTML flexibility\r\n\r\n\t\t\tif (isHomePage) {\r\n\t\t\t\t\/\/ \u2705 Homepage \u2192 old snap logic\r\n\t\t\t\twindow.addEventListener(\"wheel\", handleScroll, { passive: false });\r\n\t\t\t\tconsole.log(\"\ud83c\udfe0 Homepage scroll behavior applied\");\r\n\t\t\t} else {\r\n\t\t\t\t\/\/ \u2705 Other pages \u2192 hybrid logic\r\n\t\t\t\twindow.addEventListener(\"wheel\", function(e) {\r\n\t\t\t\t\tconst currentSection = sections[currentIndex];\r\n\t\t\t\t\tconst sectionHeight = currentSection.scrollHeight;\r\n\t\t\t\t\tconst viewportHeight = window.innerHeight;\r\n\r\n\t\t\t\t\tif (sectionHeight <= viewportHeight) {\r\n\t\t\t\t\t\t\/*console.log('test section');\r\n\t\t\t\t\t\t\/\/ Small section \u2192 snap\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tif (e.deltaY > 0) {\r\n\t\t\t\t\t\t\tscrollToSection(currentIndex + 1);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tscrollToSection(currentIndex - 1);\r\n\t\t\t\t\t\t}*\/\r\n\t\t\t\t\t\twindow.addEventListener(\"wheel\", handleScroll, { passive: false });\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\/\/ Big\/tall section \u2192 normal scroll but update nav\r\n\t\t\t\t\t\tsections.forEach((section, idx) => {\r\n\t\t\t\t\t\t\tconst rect = section.getBoundingClientRect();\r\n\t\t\t\t\t\t\tif (rect.top <= viewportHeight * 0.4 && rect.bottom >= viewportHeight * 0.4) {\r\n\t\t\t\t\t\t\t\tif (currentIndex !== idx) {\r\n\t\t\t\t\t\t\t\t\tcurrentIndex = idx;\r\n\t\t\t\t\t\t\t\t\tupdateNavigationDots(idx);\r\n\t\t\t\t\t\t\t\t\tconsole.log(\"\ud83d\udd04 Updated currentIndex in tall section:\", idx);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}, { passive: false });\r\n\r\n\t\t\t\tconsole.log(\"\ud83d\udcc4 Inner page scroll behavior applied\");\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ \u2705 Common key navigation\r\n\t\t\twindow.addEventListener(\"keydown\", handleKeyDown, { passive: false });\r\n\t\t\tconsole.log(\"\ud83d\udfe2 Scroll listeners added\");\r\n\t\t}\r\n\r\n\r\n\r\n        function removeScrollListeners() {\r\n            window.removeEventListener(\"wheel\", handleScroll);\r\n            window.removeEventListener(\"keydown\", handleKeyDown);\r\n            console.log(\"\ud83d\udfe1 Scroll listeners removed\");\r\n        }\r\n\r\n        window.addEventListener('load', () => {\r\n            if (window.innerWidth >= 1024) {\r\n                addScrollListeners();\r\n            }\r\n        });\r\n\r\n        const observer = new IntersectionObserver((entries) => {\r\n            entries.forEach(entry => {\r\n                console.log(\"\ud83d\udc40 IntersectionObserver triggered:\", {\r\n                    index: Array.from(sections).indexOf(entry.target),\r\n                    isIntersecting: entry.isIntersecting\r\n                });\r\n                if (entry.isIntersecting) {\r\n                    const index = Array.from(sections).indexOf(entry.target);\r\n                    window.currentIndex = index;\r\n                    updateNavigationDots(index);\r\n                    console.log(\"\ud83d\udc40 IntersectionObserver updated currentIndex:\", index);\r\n                }\r\n            });\r\n        }, {\r\n            threshold: window.innerWidth < 1024 ? 0.3 : 0.6\r\n        });\r\n\r\n        sections.forEach(section => observer.observe(section));\r\n\r\n        document.querySelectorAll('.navigation-link').forEach(link => {\r\n            link.addEventListener('click', function(event) {\r\n                event.preventDefault();\r\n\r\n                const sectionId = this.dataset.section;\r\n                const target = document.getElementById(sectionId);\r\n                if (!target) return;\r\n\r\n                const index = Array.from(sections).indexOf(target);\r\n                if (index === -1) return;\r\n\r\n                isNavigating = true;\r\n                targetIndex = index;\r\n                scrollToSection(index);\r\n                window.currentIndex = index;\r\n                console.log(\"\ud83d\udd17 Navigation link clicked, navigating to index:\", index, { isNavigating });\r\n            });\r\n        });\r\n\r\n        function getVisibleSectionIndex() {\r\n            let maxVisibleHeight = 0;\r\n            let minTopDistance = Infinity;\r\n            let visibleIndex = 0;\r\n\r\n            sections.forEach((section, index) => {\r\n                const rect = section.getBoundingClientRect();\r\n                const visibleHeight = Math.min(rect.bottom, window.innerHeight) - Math.max(rect.top, 0);\r\n                const isMobile = window.innerWidth < 1024;\r\n\r\n                console.log(\"\ud83d\udd0d Section visibility:\", {\r\n                    index,\r\n                    visibleHeight,\r\n                    sectionHeight: rect.height,\r\n                    rectTop: rect.top,\r\n                    isMobile\r\n                });\r\n\r\n                if (isMobile) {\r\n                    \/\/ Mobile\/tablet: Prioritize largest visible height or closest to viewport top\r\n                    if (visibleHeight > maxVisibleHeight || (visibleHeight === maxVisibleHeight && Math.abs(rect.top) < minTopDistance)) {\r\n                        maxVisibleHeight = visibleHeight;\r\n                        minTopDistance = Math.abs(rect.top);\r\n                        visibleIndex = index;\r\n                    }\r\n                } else {\r\n                    \/\/ Desktop: Use ratio-based visibility\r\n                    const ratio = Math.max(0, visibleHeight \/ rect.height);\r\n                    if (ratio > maxVisibleHeight) {\r\n                        maxVisibleHeight = ratio;\r\n                        visibleIndex = index;\r\n                    }\r\n                }\r\n            });\r\n\r\n            return visibleIndex;\r\n        }\r\n    });\r\n    <\/script>\r\n     \u00d7 Your browser does not support the video tag. Swiss Natural Cosmetics: Unlock the secrets of nature for your skin.BestsellersDiscover Alpeor\u2019s best anti-aging solutions, Swiss natural cosmetics to unveil radiant,youthful skin.Discover moreCollectionsDiscover the power of Swiss alpine skincare to awaken your skin\u2019s vitality with targeted antiaging solutions. Reveal your [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"class_list":["post-31140","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/alpeorv2.aif-staging.com\/fr\/wp-json\/wp\/v2\/pages\/31140","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alpeorv2.aif-staging.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/alpeorv2.aif-staging.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/alpeorv2.aif-staging.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alpeorv2.aif-staging.com\/fr\/wp-json\/wp\/v2\/comments?post=31140"}],"version-history":[{"count":162,"href":"https:\/\/alpeorv2.aif-staging.com\/fr\/wp-json\/wp\/v2\/pages\/31140\/revisions"}],"predecessor-version":[{"id":34319,"href":"https:\/\/alpeorv2.aif-staging.com\/fr\/wp-json\/wp\/v2\/pages\/31140\/revisions\/34319"}],"wp:attachment":[{"href":"https:\/\/alpeorv2.aif-staging.com\/fr\/wp-json\/wp\/v2\/media?parent=31140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}