{"id":31784,"date":"2025-03-20T13:11:36","date_gmt":"2025-03-20T13:11:36","guid":{"rendered":"https:\/\/alpeor.com\/?page_id=31784"},"modified":"2026-04-23T08:58:32","modified_gmt":"2026-04-23T08:58:32","slug":"about-our-swiss-brand","status":"publish","type":"page","link":"https:\/\/alpeor.com\/fr\/about-our-swiss-brand\/","title":{"rendered":"La marque"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; custom_padding_last_edited=&#8221;on|phone&#8221; module_id=&#8221;our-story&#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;0px||0px||true|false&#8221; custom_padding_phone=&#8221;0px||0px||true|false&#8221; custom_css_main_element=&#8221;z-index: 0;&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row admin_label=&#8221;Row&#8221; module_id=&#8221;openVideo&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; background_image=&#8221;https:\/\/alpeor.com\/wp-content\/uploads\/2025\/09\/Sequence-0100_46_14_12Still011-VSCO1.jpg&#8221; width=&#8221;100%&#8221; width_tablet=&#8221;90%&#8221; width_phone=&#8221;90%&#8221; width_last_edited=&#8221;on|tablet&#8221; max_width=&#8221;1920px&#8221; module_alignment=&#8221;center&#8221; min_height=&#8221;450px&#8221; min_height_tablet=&#8221;450px&#8221; min_height_phone=&#8221;200px&#8221; min_height_last_edited=&#8221;on|phone&#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_code _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]    <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(\"???? Initializing alpeor navigation \");\r\n        let sections = document.querySelectorAll(\".full-height-experience:not(.alpeor-footer)\");\r\n        console.log(\"???? 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        \/\/ \u2705 JP detection: \/jp OR <html lang=\"ja...\">\r\n        const pathSegs = window.location.pathname.split('\/').filter(Boolean);\r\n        const isJPPath = (pathSegs[0] || '').toLowerCase() === 'jp';\r\n        const htmlLang = (document.documentElement.getAttribute('lang') || '').toLowerCase();\r\n        const isJPLang = htmlLang.startsWith('ja');\r\n        const isJP = isJPPath || isJPLang;\r\n\r\n        \/\/ \u2705 JP labels mapped to SECTION IDS (ids stay EN)\r\n        const JP_LABELS_BY_ID = {\r\n            \"conscious-beauty\": \"\u30b3\u30f3\u30b7\u30e3\u30b9<br>\u30d3\u30e5\u30fc\u30c6\u30a3\u30fc\",\r\n            \"our-commitments\": \"\u79c1\u305f\u3061\u306e<br>\u30b3\u30df\u30c3\u30c8\u30e1\u30f3\u30c8\",\r\n            \"the-experience\": \"\u4f53\u9a13\",\r\n            \"collections\": \"\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\",\r\n            \"the-science\": \"\u30b5\u30a4\u30a8\u30f3\u30b9\",\r\n            \"rituals\": \"\u30ea\u30c1\u30e5\u30a2\u30eb\",\r\n            \"bestsellers\": \"\u30d9\u30b9\u30c8\u30bb\u30e9\u30fc\",\r\n            \"the-brand\": \"\u30d6\u30e9\u30f3\u30c9\",\r\n            \"signature\": \"\u30b7\u30b0\u30cd\u30c1\u30e3\u30fc\",\r\n            \"experience\": \"\u4f53\u9a13\",\r\n            \"spa-locator\": \"\u30b9\u30d1\u691c\u7d22\"\r\n        };\r\n\r\n        if (navContainer && sections.length > 0) {\r\n            console.log(\"????\ufe0f Building navigation dots\");\r\n            sections.forEach(function(section, index) {\r\n                let id = section.id;\r\n                if (id) {\r\n                    \/\/ === ORIGINAL label generation (EN) ===\r\n                    let formattedText = id.replace(\/-\/g, ' ').replace(\/\\b\\w\/g, c => c.toUpperCase());\r\n\r\n                    \/\/ \u2705 Keep original special breaks in EN mode\r\n                    if (!isJP) {\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\r\n                    \/\/ \u2705 JP override ONLY if JP and mapping exists\r\n                    if (isJP && JP_LABELS_BY_ID[id]) {\r\n                        formattedText = JP_LABELS_BY_ID[id];\r\n                    }\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(\"???? 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(\"???? 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        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(\"???? 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(\"???? 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 (\r\n                (currentIndex === sections.length - 1 && delta > 0) || \r\n                (currentIndex === 0 && delta < 0)\r\n            ) {\r\n                console.log(\"\u2705 At boundary, allow normal scroll\");\r\n                return;\r\n            }\r\n\r\n            if (scrollable && !atBottom && delta > 0) return;\r\n            if (scrollable && !atTop && delta < 0) return;\r\n\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(\"???? Boundary hit: bottom of scrollable section, snapping down\");\r\n                } else if (scrollable && atTop && delta < 0) {\r\n                    console.log(\"???? 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            const isHomePage = window.location.pathname === \"\/\" \r\n                               || document.body.classList.contains(\"home\"); \/\/ WP\/HTML flexibility\r\n\r\n            if (isHomePage) {\r\n                \/\/ \u2705 Homepage \u2192 old snap logic\r\n                window.addEventListener(\"wheel\", handleScroll, { passive: false });\r\n                console.log(\"???? Homepage scroll behavior applied\");\r\n            } else {\r\n                \/\/ \u2705 Other pages \u2192 hybrid logic\r\n                window.addEventListener(\"wheel\", function(e) {\r\n                    const currentSection = sections[currentIndex];\r\n                    const sectionHeight = currentSection.scrollHeight;\r\n                    const viewportHeight = window.innerHeight;\r\n\r\n                    if (sectionHeight <= viewportHeight) {\r\n                        window.addEventListener(\"wheel\", handleScroll, { passive: false });\r\n                    } else {\r\n                        \/\/ Big\/tall section \u2192 normal scroll but update nav\r\n                        sections.forEach((section, idx) => {\r\n                            const rect = section.getBoundingClientRect();\r\n                            if (rect.top <= viewportHeight * 0.4 && rect.bottom >= viewportHeight * 0.4) {\r\n                                if (currentIndex !== idx) {\r\n                                    currentIndex = idx;\r\n                                    updateNavigationDots(idx);\r\n                                    console.log(\"???? Updated currentIndex in tall section:\", idx);\r\n                                }\r\n                            }\r\n                        });\r\n                    }\r\n                }, { passive: false });\r\n\r\n                console.log(\"???? Inner page scroll behavior applied\");\r\n            }\r\n\r\n            \/\/ \u2705 Common key navigation\r\n            window.addEventListener(\"keydown\", handleKeyDown, { passive: false });\r\n            console.log(\"???? Scroll listeners added\");\r\n        }\r\n\r\n        function removeScrollListeners() {\r\n            window.removeEventListener(\"wheel\", handleScroll);\r\n            window.removeEventListener(\"keydown\", handleKeyDown);\r\n            console.log(\"???? 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(\"???? 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(\"???? 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(\"???? 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(\"???? 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] --><!-- Lightbox HTML --><!-- [et_pb_line_break_holder] --><!-- Lightbox HTML --><!-- [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\"\u00a0 disablePictureInPicture\u00a0 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_line_break_holder] -->[\/et_pb_code][\/et_pb_column][\/et_pb_row][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;50px||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;|0%||15%|false|false&#8221; custom_padding_tablet=&#8221;|0%||0%|false|false&#8221; custom_padding_phone=&#8221;|||0%|false|false&#8221; custom_padding_last_edited=&#8221;on|desktop&#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 admin_label=&#8221;Text&#8221; 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;60px&#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<h1>Our story: a family heritage, a Swiss legacy<\/h1>\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;]Alpeor\u2019s fabulous story &#038; heritage started in the 1950s on the banks of Lake Geneva in Montreux, home to the iconic Mirabeau Well-Being Clinic. Nestled in the middle of mountains and meadows, this destination was acclaimed by Europe\u2019s high society for its incredible microclimate and pure, reviving alpine air.<\/p>\n<p>In this protected location, founder Alexandre Flueckiger\u2019s grandmother, Maria Bovet, and her sister, Clotilde Flandin worked together creating much-loved beauty elixirs from local plants\u2014 many of which travelled across Europe, safely tucked into guests\u2019 suitcases at the end of a visit. Their pioneering vision was a key source of inspiration for the Swiss skincare brand, developed some decades later by their grandson, Alexandre Flueckiger.\u00a0[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; background_enable_image=&#8221;off&#8221; custom_css_main_element=&#8221;display: flex;||align-items: center;&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/alpeor.com\/wp-content\/uploads\/2026\/04\/narcisse-alpeor-2.jpg&#8221; alt=&#8221;narcisse-alpeor&#8221; title_text=&#8221;narcisse-alpeor&#8221; _builder_version=&#8221;4.27.6&#8243; _module_preset=&#8221;default&#8221; max_width=&#8221;300px&#8221; max_width_tablet=&#8221;250px&#8221; max_width_phone=&#8221;150px&#8221; max_width_last_edited=&#8221;on|phone&#8221; module_alignment=&#8221;center&#8221; hover_enabled=&#8221;0&#8243; module_alignment_tablet=&#8221;center&#8221; module_alignment_phone=&#8221;center&#8221; module_alignment_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;][\/et_pb_image][\/et_pb_column][\/et_pb_row][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; background_image=&#8221;https:\/\/alpeor.com\/wp-content\/uploads\/2025\/03\/alexandre-flueckiger-founder-fondateur-alpeor.jpg&#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; background_last_edited=&#8221;on|desktop&#8221; background_enable_image_tablet=&#8221;off&#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; module_class=&#8221;no-bottom-space&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; use_background_color_gradient=&#8221;on&#8221; background_color_gradient_stops=&#8221;rgba(0,43,36,0.87) 0%|rgba(0,43,36,0.87) 100%&#8221; custom_padding=&#8221;|8%||15%|false|false&#8221; custom_padding_tablet=&#8221;10%|10%|10%|10%|true|true&#8221; custom_padding_phone=&#8221;|||10%|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|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; text_font=&#8221;Freight Disp Pro Italic||||||||&#8221; text_font_size=&#8221;24px&#8221; header_2_font=&#8221;Freight Disp Pro Italic||||||||&#8221; header_2_text_color=&#8221;#FFFFFF&#8221; header_2_font_size=&#8221;30px&#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>A visionary Swiss Founder<\/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;#FFFFFF&#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>With the same visionary spirit as Maria Bovet, Alexandre decided to apply his exceptional plant expertise and knowledge to the field of cosmetics. He worked relentlessly with his R&amp;D teams to uncover nature\u2019s powerful secrets and craft the brand\u2019s high-end skincare formulas. In the early 2000s, Alexandre Flueckiger proudly launched Alpeor, a unique Swiss skincare brand designed to target skin longevity and provide anti-aging solutions down to cellular level while passing on the true essence of the Swiss Alps, harnessed by science.<\/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_enable_image=&#8221;off&#8221; background_last_edited=&#8221;on|phone&#8221; background_image_tablet=&#8221;https:\/\/alpeor.com\/wp-content\/uploads\/2025\/03\/alexandre-flueckiger-founder-fondateur-alpeor.jpg&#8221; background_image_phone=&#8221;https:\/\/alpeor.com\/wp-content\/uploads\/2025\/03\/alexandre-flueckiger-founder-fondateur-alpeor-mobile.jpg&#8221; background_enable_image_tablet=&#8221;on&#8221; background_enable_image_phone=&#8221;on&#8221; background_position_tablet=&#8221;top_right&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_column][\/et_pb_row][et_pb_row module_class=&#8221;plain-photo&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; max_width=&#8221;1920px&#8221; custom_margin_tablet=&#8221;100px||||false|false&#8221; custom_margin_phone=&#8221;70px||||false|false&#8221; custom_margin_last_edited=&#8221;on|phone&#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; custom_css_main_element=&#8221;z-index: 1 !important;&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/alpeor.com\/wp-content\/uploads\/2025\/03\/alpine-garden-suisse.jpg&#8221; alt=&#8221;alpine-garden-suisse&#8221; title_text=&#8221;alpine-garden-suisse&#8221; align=&#8221;center&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; module_alignment=&#8221;center&#8221; custom_css_main_element=&#8221;width: 100% !important;&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/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; custom_margin=&#8221;40px||40px||true|false&#8221; custom_margin_tablet=&#8221;40px||0px||false|false&#8221; custom_margin_phone=&#8221;40px||0px||false|false&#8221; custom_margin_last_edited=&#8221;on|tablet&#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 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>The Alpine Garden<\/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;]An endless source of inspiration for the brand\u2019s luxurious skincare[\/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;]A hidden realm, nestled in the Swiss alps at an altitude of 2000 meters, where plants must adapt to withstand the elements: this is where we draw inspiration for our Swiss skincare brand. For decades, our CEO, Alexandre Flueckiger, has been fascinated by the kingdom of plants, exploring, watching, collecting samples and detailing his findings in fascinating herbariums.[\/et_pb_text][\/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;15px||||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|tablet&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text content_tablet=&#8221;<\/p>\n<p>The kingdom of plants at the heart of science<\/p>\n<p>&#8221; content_phone=&#8221;<\/p>\n<p>The kingdom of plants at the heart of science<\/p>\n<p>&#8221; content_last_edited=&#8221;off|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;]A true\u00a0 \u2018open-air laboratory\u2019[\/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;]The Alpine garden contains the secret to our high-end formulas, it is a precious gem, a true\u00a0 \u2018open-air laboratory\u2019 where Edelweiss, Rhodiola Rosea and Narcissus \u2013 the iconic plants that inspire our luxury brand skincare &#8211; grow in a pure environment.<\/p>\n<p>What we have learned in this garden and the alps beyond, is that the plant world must constantly adapt and develop its own defenses: from one season to the next, it perpetually regenerates. It slows down its cellular activity, only to reactivate it afterwards. So why not deploy the same strategy to act against the aging process? Why not give the skin the same means of slowing down its biological clock to prolong cell life and combat external aggressions for youthful, radiant, uplifted skin?[\/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|phone&#8221; module_id=&#8221;the-brand&#8221; module_class=&#8221;full-height-experience&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; custom_padding_tablet=&#8221;0px||0px||true|false&#8221; custom_padding_phone=&#8221;0px||0px||true|false&#8221; custom_css_main_element=&#8221;z-index: -1;&#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;70%&#8221; width_tablet=&#8221;70%&#8221; width_phone=&#8221;70%&#8221; width_last_edited=&#8221;off|desktop&#8221; max_width_tablet=&#8221;1080px&#8221; max_width_phone=&#8221;1080px&#8221; max_width_last_edited=&#8221;off|desktop&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;||||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;||||false|false&#8221; custom_padding_tablet=&#8221;|||0%|false|false&#8221; custom_padding_phone=&#8221;|||0%|false|false&#8221; custom_padding_last_edited=&#8221;off|desktop&#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 content_tablet=&#8221;<\/p>\n<p>The kingdom of plants at the heart of science<\/p>\n<p>&#8221; content_phone=&#8221;<\/p>\n<p>The kingdom of plants at the heart of science<\/p>\n<p>&#8221; content_last_edited=&#8221;off|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;||10px||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>The Brand<\/p>\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>A Swiss skincare brand unlocking the secrets of nature for your skin<\/h2>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Freight Disp Pro Italic||||||||&#8221; text_font_size=&#8221;20px&#8221; text_letter_spacing=&#8221;1px&#8221; text_line_height=&#8221;1.4em&#8221; header_2_font_size=&#8221;80px&#8221; max_width=&#8221;450px&#8221; global_colors_info=&#8221;{}&#8221;]Welcome to the amazing, secret world of Alpeor. The brand is synonymous with exceptional skincare that boasts a fascinating story &#038; heritage. Inspired by Alpine plants and powered with the best innovative, targeted formulas, our Maison creates highly effective luxurious skincare products.[\/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;https:\/\/alpeor.com\/wp-content\/uploads\/2025\/03\/cosmetique-cosmetic-skincare.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;our-expertise&#8221; module_class=&#8221;full-height-experience&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; custom_padding_tablet=&#8221;0px||0px||true|false&#8221; custom_padding_phone=&#8221;0px||0px||false|false&#8221; custom_css_main_element=&#8221;z-index: -1 !important;&#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;70%&#8221; width_tablet=&#8221;70%&#8221; width_phone=&#8221;70%&#8221; width_last_edited=&#8221;off|desktop&#8221; max_width_tablet=&#8221;1080px&#8221; max_width_phone=&#8221;1080px&#8221; max_width_last_edited=&#8221;off|desktop&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;50px||||false|false&#8221; custom_css_main_element=&#8221;height: 100%;||&#8221; global_colors_info=&#8221;{}&#8221; custom_css_main_element_last_edited=&#8221;on|phone&#8221; custom_css_main_element_tablet=&#8221;height: 100%;||display: flex;||flex-wrap: wrap;&#8221; custom_css_main_element_phone=&#8221;height: 100%;||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;https:\/\/alpeor.com\/wp-content\/uploads\/2025\/03\/swiss-made-cosmetics.jpg&#8221; custom_css_main_element=&#8221;z-index: 1 !important;||min-height: 110vh !important;&#8221; global_colors_info=&#8221;{}&#8221; custom_css_main_element_last_edited=&#8221;on|desktop&#8221; custom_css_main_element_tablet=&#8221;order: 2;||z-index: 1 !important;&#8221; custom_css_main_element_phone=&#8221;order: 2;||z-index: 1 !important;&#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;||||false|false&#8221; custom_padding_tablet=&#8221;|||0%|false|false&#8221; custom_padding_phone=&#8221;|||0%|false|false&#8221; custom_padding_last_edited=&#8221;off|desktop&#8221; global_colors_info=&#8221;{}&#8221; custom_css_main_element_last_edited=&#8221;off|desktop&#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 content_tablet=&#8221;<\/p>\n<p>The kingdom of plants at the heart of science<\/p>\n<p>&#8221; content_phone=&#8221;<\/p>\n<p>The kingdom of plants at the heart of science<\/p>\n<p>&#8221; content_last_edited=&#8221;off|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;||10px||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>Our Expertise:<\/p>\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>Swiss made skincare with high performance formulas<\/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;]Skin is a living organ. It is constantly changing and reacting to a variety of captors, it is the meeting point between the outer physical world and our inner bodies, our final line of defence. At Alpeor, we believe that skin deserves the best skincare products, specifically adapted to the nature of each skin condition and scientifically formulated to offer visible results.<\/p>\n<p>Our mission is to achieve the perfect balance, preserving the youth capital of the skin as well as overall well-being.[\/et_pb_text][et_pb_text content_tablet=&#8221;<\/p>\n<p>The kingdom of plants at the heart of science<\/p>\n<p>&#8221; content_phone=&#8221;<\/p>\n<p>The kingdom of plants at the heart of science<\/p>\n<p>&#8221; content_last_edited=&#8221;off|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>Swiss essence and know-how<\/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; custom_margin_tablet=&#8221;||30px||false|false&#8221; custom_margin_phone=&#8221;||30px||false|false&#8221; custom_margin_last_edited=&#8221;on|tablet&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>As a Swiss skincare brand with proven expertise in skin longevity, we pride ourselves on offering targeted anti-aging solutions. From preventive skincare to ultra-intensive treatments, we use our expertise in skin physiology and aging-related mechanisms, and select only the best natural ingredients to work in synergy at the core of the formula, bringing you the best possible solutions.<\/p>\n<p>We look towards the kingdom of nature, long used for its benefits for our health and well-being to source the nutrients, such as antioxidants, the skin needs to regenerate itself. Our high-tech formulas also contain active ingredients obtained by biotechnology.<\/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|phone&#8221; module_id=&#8221;our-commitments&#8221; module_class=&#8221;full-height-experience&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;||||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; custom_padding_tablet=&#8221;0px||0px||true|false&#8221; custom_padding_phone=&#8221;0px||0px||false|false&#8221; custom_css_main_element=&#8221;z-index: -1;&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row column_structure=&#8221;1_2,1_2&#8243; make_equal=&#8221;on&#8221; custom_padding_last_edited=&#8221;on|tablet&#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||50px||false|false&#8221; custom_margin_tablet=&#8221;||0px||false|false&#8221; custom_margin_phone=&#8221;||0px||false|false&#8221; custom_margin_last_edited=&#8221;on|desktop&#8221; custom_padding=&#8221;50px||||false|false&#8221; custom_padding_tablet=&#8221;30px||||false|false&#8221; custom_padding_phone=&#8221;20px||||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|desktop&#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 content_tablet=&#8221;<\/p>\n<p>The kingdom of plants at the heart of science<\/p>\n<p>&#8221; content_phone=&#8221;<\/p>\n<p>The kingdom of plants at the heart of science<\/p>\n<p>&#8221; content_last_edited=&#8221;off|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;||10px||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>Our commitments<\/p>\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>Responsible brand skincare<\/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;]With plants as our inspiration, it is only natural that we care for the environment in which they grow, taking a holistic approach with responsible sourcing, limiting our environmental impact and preserving biodiversity.<\/p>\n<p>We support the work of the incredible Alpine garden where we study the changing nature of the iconic plants we use for our Swiss skincare brand. Our formulas contain only highly concentrated, botanical active ingredients with proven effectiveness, harvested from certified organic alpine plants and blended with water from the Swiss Alps.[\/et_pb_text][et_pb_text content_tablet=&#8221;<\/p>\n<p>The kingdom of plants at the heart of science<\/p>\n<p>&#8221; content_phone=&#8221;<\/p>\n<p>The kingdom of plants at the heart of science<\/p>\n<p>&#8221; content_last_edited=&#8221;off|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>100% Swiss made<\/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;]Our formulas contain only highly concentrated, botanical active ingredients with proven effectiveness, harvested from certified organic alpine plants and blended with water from the Swiss Alps.<\/p>\n<p>Our supply chain is tightly controlled, there&#8217;s no place for mineral oils, silicone, Sodium Laureth Sulfate (SLS), ethanol alcohol, artificial colorants, parabens, phenoxyethanol or ingredients of animal origin. And, of course, no animal testing.[\/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;https:\/\/alpeor.com\/wp-content\/uploads\/2025\/03\/engagements-envers-la-nature-commitments.jpg&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_4,1_4,1_4,1_4&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; width=&#8221;70%&#8221; custom_margin=&#8221;70px||100px||false|false&#8221; custom_margin_tablet=&#8221;70px||||false|false&#8221; custom_margin_phone=&#8221;70px||||false|false&#8221; custom_margin_last_edited=&#8221;on|desktop&#8221; custom_padding=&#8221;40px||||false|false&#8221; border_width_top=&#8221;1px&#8221; border_color_top=&#8221;#c6a992&#8243; border_width_bottom=&#8221;1px&#8221; border_color_bottom=&#8221;#c6a992&#8243; 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_text content_tablet=&#8221;<\/p>\n<p>The kingdom of plants at the heart of science<\/p>\n<p>&#8221; content_phone=&#8221;<\/p>\n<p>The kingdom of plants at the heart of science<\/p>\n<p>&#8221; content_last_edited=&#8221;off|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;#000000&#8243; text_font_size=&#8221;35px&#8221; text_line_height=&#8221;1em&#8221; custom_margin=&#8221;||20px||false|false&#8221; custom_padding=&#8221;||||false|false&#8221; text_font_size_tablet=&#8221;35px&#8221; text_font_size_phone=&#8221;30px&#8221; text_font_size_last_edited=&#8221;on|phone&#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;]We are proud to certify that all our products:[\/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_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Freight Disp Pro Italic||||||||&#8221; text_text_color=&#8221;#2d2d2d&#8221; text_font_size=&#8221;18px&#8221; text_line_height=&#8221;1.6em&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><strong>Are 100% Made in Switzerland:<\/strong> entirely developed, formulated and packaged in Switzerland<\/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_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Freight Disp Pro Italic||||||||&#8221; text_text_color=&#8221;#2d2d2d&#8221; text_font_size=&#8221;18px&#8221; text_line_height=&#8221;1.6em&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><strong>Use certified organic Alpine plants<\/strong><\/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_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Freight Disp Pro Italic||||||||&#8221; text_text_color=&#8221;#2d2d2d&#8221; text_font_size=&#8221;18px&#8221; text_line_height=&#8221;1.6em&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><strong>Use planet-friendly packaging:<\/strong> no cellophane, recycled and recyclable where possible, glass bottles over plastic<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>    <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(\"???? Initializing alpeor navigation \");\r\n        let sections = document.querySelectorAll(\".full-height-experience:not(.alpeor-footer)\");\r\n        console.log(\"???? 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        \/\/ \u2705 JP detection: \/jp OR <html lang=\"ja...\">\r\n        const pathSegs = window.location.pathname.split('\/').filter(Boolean);\r\n        const isJPPath = (pathSegs[0] || '').toLowerCase() === 'jp';\r\n        const htmlLang = (document.documentElement.getAttribute('lang') || '').toLowerCase();\r\n        const isJPLang = htmlLang.startsWith('ja');\r\n        const isJP = isJPPath || isJPLang;\r\n\r\n        \/\/ \u2705 JP labels mapped to SECTION IDS (ids stay EN)\r\n        const JP_LABELS_BY_ID = {\r\n            \"conscious-beauty\": \"\u30b3\u30f3\u30b7\u30e3\u30b9<br>\u30d3\u30e5\u30fc\u30c6\u30a3\u30fc\",\r\n            \"our-commitments\": \"\u79c1\u305f\u3061\u306e<br>\u30b3\u30df\u30c3\u30c8\u30e1\u30f3\u30c8\",\r\n            \"the-experience\": \"\u4f53\u9a13\",\r\n            \"collections\": \"\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\",\r\n            \"the-science\": \"\u30b5\u30a4\u30a8\u30f3\u30b9\",\r\n            \"rituals\": \"\u30ea\u30c1\u30e5\u30a2\u30eb\",\r\n            \"bestsellers\": \"\u30d9\u30b9\u30c8\u30bb\u30e9\u30fc\",\r\n            \"the-brand\": \"\u30d6\u30e9\u30f3\u30c9\",\r\n            \"signature\": \"\u30b7\u30b0\u30cd\u30c1\u30e3\u30fc\",\r\n            \"experience\": \"\u4f53\u9a13\",\r\n            \"spa-locator\": \"\u30b9\u30d1\u691c\u7d22\"\r\n        };\r\n\r\n        if (navContainer && sections.length > 0) {\r\n            console.log(\"????\ufe0f Building navigation dots\");\r\n            sections.forEach(function(section, index) {\r\n                let id = section.id;\r\n                if (id) {\r\n                    \/\/ === ORIGINAL label generation (EN) ===\r\n                    let formattedText = id.replace(\/-\/g, ' ').replace(\/\\b\\w\/g, c => c.toUpperCase());\r\n\r\n                    \/\/ \u2705 Keep original special breaks in EN mode\r\n                    if (!isJP) {\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\r\n                    \/\/ \u2705 JP override ONLY if JP and mapping exists\r\n                    if (isJP && JP_LABELS_BY_ID[id]) {\r\n                        formattedText = JP_LABELS_BY_ID[id];\r\n                    }\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(\"???? 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(\"???? 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        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(\"???? 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(\"???? 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 (\r\n                (currentIndex === sections.length - 1 && delta > 0) || \r\n                (currentIndex === 0 && delta < 0)\r\n            ) {\r\n                console.log(\"\u2705 At boundary, allow normal scroll\");\r\n                return;\r\n            }\r\n\r\n            if (scrollable && !atBottom && delta > 0) return;\r\n            if (scrollable && !atTop && delta < 0) return;\r\n\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(\"???? Boundary hit: bottom of scrollable section, snapping down\");\r\n                } else if (scrollable && atTop && delta < 0) {\r\n                    console.log(\"???? 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            const isHomePage = window.location.pathname === \"\/\" \r\n                               || document.body.classList.contains(\"home\"); \/\/ WP\/HTML flexibility\r\n\r\n            if (isHomePage) {\r\n                \/\/ \u2705 Homepage \u2192 old snap logic\r\n                window.addEventListener(\"wheel\", handleScroll, { passive: false });\r\n                console.log(\"???? Homepage scroll behavior applied\");\r\n            } else {\r\n                \/\/ \u2705 Other pages \u2192 hybrid logic\r\n                window.addEventListener(\"wheel\", function(e) {\r\n                    const currentSection = sections[currentIndex];\r\n                    const sectionHeight = currentSection.scrollHeight;\r\n                    const viewportHeight = window.innerHeight;\r\n\r\n                    if (sectionHeight <= viewportHeight) {\r\n                        window.addEventListener(\"wheel\", handleScroll, { passive: false });\r\n                    } else {\r\n                        \/\/ Big\/tall section \u2192 normal scroll but update nav\r\n                        sections.forEach((section, idx) => {\r\n                            const rect = section.getBoundingClientRect();\r\n                            if (rect.top <= viewportHeight * 0.4 && rect.bottom >= viewportHeight * 0.4) {\r\n                                if (currentIndex !== idx) {\r\n                                    currentIndex = idx;\r\n                                    updateNavigationDots(idx);\r\n                                    console.log(\"???? Updated currentIndex in tall section:\", idx);\r\n                                }\r\n                            }\r\n                        });\r\n                    }\r\n                }, { passive: false });\r\n\r\n                console.log(\"???? Inner page scroll behavior applied\");\r\n            }\r\n\r\n            \/\/ \u2705 Common key navigation\r\n            window.addEventListener(\"keydown\", handleKeyDown, { passive: false });\r\n            console.log(\"???? Scroll listeners added\");\r\n        }\r\n\r\n        function removeScrollListeners() {\r\n            window.removeEventListener(\"wheel\", handleScroll);\r\n            window.removeEventListener(\"keydown\", handleKeyDown);\r\n            console.log(\"???? 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(\"???? 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(\"???? 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(\"???? 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(\"???? 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. Our story: a family heritage, a Swiss legacyAlpeor\u2019s fabulous story &#038; heritage started in the 1950s on the banks of Lake Geneva in Montreux, home to the iconic Mirabeau Well-Being Clinic. Nestled in the middle of mountains and meadows, this destination was acclaimed by Europe\u2019s [&hellip;]<\/p>\n","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-31784","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/alpeor.com\/fr\/wp-json\/wp\/v2\/pages\/31784","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alpeor.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/alpeor.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/alpeor.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alpeor.com\/fr\/wp-json\/wp\/v2\/comments?post=31784"}],"version-history":[{"count":71,"href":"https:\/\/alpeor.com\/fr\/wp-json\/wp\/v2\/pages\/31784\/revisions"}],"predecessor-version":[{"id":46805,"href":"https:\/\/alpeor.com\/fr\/wp-json\/wp\/v2\/pages\/31784\/revisions\/46805"}],"wp:attachment":[{"href":"https:\/\/alpeor.com\/fr\/wp-json\/wp\/v2\/media?parent=31784"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}