{"id":1381,"date":"2026-06-16T08:44:08","date_gmt":"2026-06-16T06:44:08","guid":{"rendered":"https:\/\/norki.com\/studio-chalet\/?page_id=1381"},"modified":"2026-07-16T12:51:04","modified_gmt":"2026-07-16T10:51:04","slug":"projets-decoration-interieur-luxe","status":"publish","type":"page","link":"https:\/\/www.norki.com\/fr\/studio-chalet\/projets-decoration-interieur-luxe\/","title":{"rendered":"Nos Projets"},"content":{"rendered":"\n<style>\n    \/* ==========================================================================\n       HERO SLIDER 16\/9 (Auto-slide vers la droite + Swipe tactile)\n       ========================================================================== *\/\n\n    .norki-hero-slider {\n        position: relative;\n        width: 100%;\n        aspect-ratio: 16 \/ 9; \/* Force le ratio 16:9 sur tous les \u00e9crans *\/\n        overflow: hidden;\n        background-color: black;\n        max-height: 100dvh;\n    }\n\n    \/* --- 1. Conteneur des Slides --- *\/\n    .norki-hs__track {\n        position: absolute;\n        top: 0;\n        left: 0;\n        width: 100%;\n        height: 100%;\n    }\n\n    .norki-hs__slide {\n        position: absolute;\n        top: 0;\n        left: 0;\n        width: 100%;\n        height: 100%;\n        opacity: 0;\n        transform: translateX(100%); \/* D\u00e9part \u00e0 l'ext\u00e9rieur droit *\/\n        transition: transform 1s cubic-bezier(0.65, 0, 0.35, 1), opacity 1s ease;\n        z-index: 1;\n    }\n\n    \/* Slide Actuelle *\/\n    .norki-hs__slide.is-active {\n        opacity: 1;\n        transform: translateX(0);\n        z-index: 2;\n    }\n\n    \/* Slide Sortante (part vers la gauche) *\/\n    .norki-hs__slide.is-leaving {\n        opacity: 1;\n        transform: translateX(-100%);\n        z-index: 2;\n    }\n\n    .norki-hs__image {\n        width: 100%;\n        height: 100%;\n        object-fit: cover;\n        object-position: center;\n        display: block;\n    }\n\n    \/* Gradient assombrissant en bas pour la lisibilit\u00e9 *\/\n    .norki-hs__overlay {\n        position: absolute;\n        bottom: 0;\n        left: 0;\n        width: 100%;\n        height: 60%;\n        background: linear-gradient(to top, rgba(0, 0, 0, 0.6) 0%, transparent 100%);\n        z-index: 3;\n        pointer-events: none;\n    }\n\n    \/* --- 2. Textes (Dans chaque slide) --- *\/\n    .norki-hs__text-container {\n        position: absolute;\n        bottom: var(--section-pad-h-dt, 5vw); \/* Align\u00e9 avec le padding lat\u00e9ral global *\/\n        left: var(--section-pad-h-dt, 5vw);\n        z-index: 4;\n        color: #ffffff;\n    }\n\n    .norki-hs__title {\n        display: block; \/* Maintient le comportement block pour le span (remplacement du h2) *\/\n        font-family: var(--font-montserrat, \"AvenirMedium\", sans-serif);\n        font-size: clamp(2rem, 3.5vw, 45px);\n        font-weight: 500;\n        margin: 0 0 5px 0;\n        line-height: 1.1;\n        letter-spacing: -0.01em;\n        text-shadow: 0 2px 4px rgba(0,0,0,0.3);\n        color: white;\n    }\n\n    .norki-hs__subtitle {\n        font-size: clamp(1.2rem, 2vw, 24px);\n        margin: 0;\n        line-height: 1.3;\n        text-shadow: 0 2px 4px rgba(0,0,0,0.3);\n        display: block;\n    }\n\n    \/* --- 3. Interface Globale (Au-dessus des slides) --- *\/\n    .norki-hs__ui {\n        position: absolute;\n        bottom: var(--section-pad-h-dt, 5vw);\n        left: 0;\n        width: 100%;\n        padding: 0 var(--section-pad-h-dt, 5vw);\n        box-sizing: border-box;\n        display: flex;\n        justify-content: flex-end; \/* Aligne le contenu du flux (le bouton) \u00e0 droite *\/\n        align-items: flex-end;\n        z-index: 10;\n        pointer-events: none; \/* Laisse passer les clics vers le slider si besoin *\/\n    }\n\n    \/* Bouton D\u00e9couvrir (En bas \u00e0 droite) *\/\n    .norki-hs__discover-btn {\n        pointer-events: auto; \/* R\u00e9active le clic *\/\n        color: #ffffff;\n        text-decoration: none;\n        font-size: 1.1rem;\n        font-weight: 500;\n        font-family: var(--font-montserrat, \"AvenirMedium\", sans-serif);\n        position: relative;\n        padding-bottom: 3px;\n        transition: opacity 0.4s ease, color 0.3s ease;\n        text-shadow: 0 2px 4px rgba(0,0,0,0.3);\n    }\n\n    \/* Ligne de soulignement \u00e9l\u00e9gante *\/\n    .norki-hs__discover-btn::after {\n        content: '';\n        position: absolute;\n        bottom: 0;\n        left: 0;\n        width: 100%;\n        height: 1px;\n        background-color: #ffffff;\n        transform: scaleX(1);\n        transform-origin: right;\n        transition: transform 0.4s ease, background-color 0.3s ease;\n    }\n\n    .norki-hs__discover-btn:hover::after {\n        transform: scaleX(0);\n        transform-origin: left;\n    }\n\n    \/* Classe utilitaire pour cacher le bouton pendant la transition *\/\n    .norki-hs__discover-btn.is-hidden {\n        opacity: 0;\n        pointer-events: none;\n    }\n\n    \/* \u00c9tat Inaccessible (Coming soon) *\/\n    .norki-hs__discover-btn.is-disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n        color: rgba(255, 255, 255, 0.7);\n    }\n\n    .norki-hs__discover-btn.is-disabled::after {\n        background-color: rgba(255, 255, 255, 0.4);\n    }\n\n    .norki-hs__discover-btn.is-disabled:hover::after {\n        transform: scaleX(1); \/* D\u00e9sactive l'animation au survol *\/\n    }\n\n    \/* Pagination Dots (Au centre) *\/\n    .norki-hs__pagination {\n        position: absolute;\n        left: 50%;\n        transform: translateX(-50%);\n        display: flex;\n        gap: 12px;\n        align-items: center;\n        pointer-events: auto;\n    }\n\n    .norki-hs__dot {\n        width: 8px;\n        height: 8px;\n        border-radius: 50%;\n        border: 1px solid #ffffff;\n        background-color: transparent;\n        cursor: pointer;\n        transition: all 0.3s ease;\n        padding: 0;\n        box-shadow: 0 1px 3px rgba(0,0,0,0.2);\n    }\n\n    .norki-hs__dot.is-active {\n        background-color: #ffffff;\n        transform: scale(1.2);\n    }\n\n    \/* --- 4. Responsive (Adaptation pour le 16\/9 sur petits \u00e9crans) --- *\/\n    @media (max-width: 768px) {\n        .norki-hs__text-container {\n            bottom: 22%; \n            left: 5vw;\n        }\n\n        .norki-hs__ui {\n            bottom: 8%;\n            padding: 0 5vw;\n        }\n\n        .norki-hs__title { font-size: clamp(1.2rem, 4vw, 1.8rem); margin-bottom: 2px; }\n        .norki-hs__subtitle { font-size: clamp(0.9rem, 3vw, 1.1rem); }\n        .norki-hs__discover-btn { font-size: clamp(0.8rem, 3vw, 0.95rem); padding-bottom: 1px; }\n        \n        .norki-hs__pagination {\n            gap: 8px;\n        }\n        .norki-hs__dot {\n            width: 5px;\n            height: 5px;\n        }\n    }\n<\/style>\n\n<section class=\"norki-hero-slider\" aria-label=\"Slider d'accueil Norki\">\n    \n    <div class=\"norki-hs__track\">\n        \n        <!-- SLIDE 1 : Courchevel (Actif) -->\n        <div class=\"norki-hs__slide is-active\" data-link=\"https:\/\/www.norki.com\/fr\/studio-chalet\/projets-decoration-interieur-luxe\/courchevel-alpes-francaises\/\" data-status=\"active\">\n            <img src=\"https:\/\/www.norki.com\/studio-chalet\/wp-content\/uploads\/2026\/06\/E02_2910_\u252c\u00ae_Studio_Erick_Saillet.jpg\" alt=\"Chalet contemporain et raffin\u00e9 \u00e0 Courchevel\" class=\"norki-hs__image skip-lazy\" data-no-lazy=\"1\" data-skip-lazy=\"1\" fetchpriority=\"high\" loading=\"eager\" decoding=\"sync\">\n            <div class=\"norki-hs__overlay\"><\/div>\n            <div class=\"norki-hs__text-container\">\n                <span class=\"norki-hs__title avenirmedium-font\">Chalet Contemporain et Raffin\u00e9<\/span>\n                <span class=\"norki-hs__subtitle baskerville-italic-font\">Chalet \u00e0 Courchevel<\/span>\n            <\/div>\n        <\/div>\n\n        <!-- SLIDE 2 : Aspen (Coming Soon) -->\n        <div class=\"norki-hs__slide\" data-link=\"#\" data-status=\"coming-soon\">\n            <img src=\"https:\/\/www.norki.com\/studio-chalet\/wp-content\/uploads\/2026\/06\/Aspen_temp.png\" alt=\"D\u00e9coration luxe contemporain chalet Aspen\" class=\"norki-hs__image skip-lazy\" data-no-lazy=\"1\" data-skip-lazy=\"1\" fetchpriority=\"high\" loading=\"eager\" decoding=\"sync\">\n            <div class=\"norki-hs__overlay\"><\/div>\n            <div class=\"norki-hs__text-container\">\n                <span class=\"norki-hs__title avenirmedium-font\">Luxe Contemporain<\/span>\n                <span class=\"norki-hs__subtitle baskerville-italic-font\">Chalet \u00e0 Aspen<\/span>\n            <\/div>\n        <\/div>\n\n        <!-- SLIDE 3 : Meg\u00e8ve\/Jackson Hole (Coming Soon) -->\n        <div class=\"norki-hs__slide\" data-link=\"#\" data-status=\"coming-soon\">\n            <img src=\"https:\/\/www.norki.com\/studio-chalet\/wp-content\/uploads\/2026\/06\/2025_10_21_Living.jpg\" alt=\"Salon au luxe contemporain chalet Jackson Hole\" class=\"norki-hs__image skip-lazy\" data-no-lazy=\"1\" data-skip-lazy=\"1\" fetchpriority=\"high\" loading=\"eager\" decoding=\"sync\">\n            <div class=\"norki-hs__overlay\"><\/div>\n            <div class=\"norki-hs__text-container\">\n                <span class=\"norki-hs__title avenirmedium-font\">Luxe Contemporain<\/span>\n                <span class=\"norki-hs__subtitle baskerville-italic-font\">Chalet \u00e0 Jackson Hole<\/span>\n            <\/div>\n        <\/div>\n\n    <\/div>\n\n    <!-- UI Globale (Pagination & Bouton) -->\n    <div class=\"norki-hs__ui\">\n        \n        <!-- Pagination -->\n        <div class=\"norki-hs__pagination\" aria-label=\"Navigation des slides\">\n            <button class=\"norki-hs__dot is-active\" aria-label=\"Aller \u00e0 la slide 1\"><\/button>\n            <button class=\"norki-hs__dot\" aria-label=\"Aller \u00e0 la slide 2\"><\/button>\n            <button class=\"norki-hs__dot\" aria-label=\"Aller \u00e0 la slide 3\"><\/button>\n        <\/div>\n\n        <!-- Bouton D\u00e9couvrir dynamique -->\n        <a href=\"https:\/\/www.norki.com\/fr\/studio-chalet\/projets-decoration-interieur-luxe\/courchevel-alpes-francaises\/\" class=\"norki-hs__discover-btn avenirmedium-font\">D\u00e9couvrir<\/a>\n        \n    <\/div>\n\n<\/section>\n\n<script>\n    document.addEventListener(\"DOMContentLoaded\", () => {\n        const slides = document.querySelectorAll('.norki-hs__slide');\n        const dots = document.querySelectorAll('.norki-hs__dot');\n        const discoverBtn = document.querySelector('.norki-hs__discover-btn');\n        const totalSlides = slides.length;\n        \n        let currentIndex = 0;\n        let slideInterval;\n        const intervalTime = 6000; \/\/ 6 secondes par slide\n\n        \/\/ Pr\u00e9vention du clic si le bouton est d\u00e9sactiv\u00e9\n        discoverBtn.addEventListener('click', (e) => {\n            if (discoverBtn.classList.contains('is-disabled')) {\n                e.preventDefault();\n            }\n        });\n\n        \/\/ 1. Logique de transition\n        const goToSlide = (nextIndex) => {\n            if (nextIndex === currentIndex) return;\n\n            const currentSlide = slides[currentIndex];\n            const nextSlide = slides[nextIndex];\n\n            \/\/ A. Disparition du bouton\n            discoverBtn.classList.add('is-hidden');\n\n            \/\/ B. Mouvement des slides\n            currentSlide.classList.remove('is-active');\n            currentSlide.classList.add('is-leaving');\n            \n            \/\/ On s'assure que la slide suivante a bien sa classe pour entrer\n            nextSlide.classList.add('is-active');\n\n            \/\/ C. Mise \u00e0 jour des points de pagination\n            dots[currentIndex].classList.remove('is-active');\n            dots[nextIndex].classList.add('is-active');\n\n            \/\/ D. Nettoyage silencieux et r\u00e9apparition du bouton adapt\u00e9\n            setTimeout(() => {\n                \/\/ Retire l'ancienne slide de l'\u00e9cran visible\n                currentSlide.classList.remove('is-leaving');\n                \n                \/\/ D\u00e9sactive temporairement les animations pour la replacer silencieusement \u00e0 droite\n                currentSlide.style.transition = 'none';\n                void currentSlide.offsetWidth; \/\/ Force le reflow\n                currentSlide.style.transition = ''; \/\/ R\u00e9tablit l'animation\n                \n                \/\/ Gestion du bouton (Actif vs Inaccessible)\n                const status = nextSlide.dataset.status;\n                if (status === 'coming-soon') {\n                    discoverBtn.classList.add('is-disabled');\n                    discoverBtn.textContent = 'Bient\u00f4t disponible';\n                    discoverBtn.href = '#';\n                } else {\n                    discoverBtn.classList.remove('is-disabled');\n                    discoverBtn.textContent = 'D\u00e9couvrir';\n                    discoverBtn.href = nextSlide.dataset.link;\n                }\n\n                \/\/ R\u00e9apparition du bouton\n                discoverBtn.classList.remove('is-hidden');\n            }, 1000); \/\/ 1s = dur\u00e9e exacte de la transition CSS\n\n            currentIndex = nextIndex;\n        };\n\n        const nextSlide = () => {\n            goToSlide((currentIndex + 1) % totalSlides);\n        };\n\n        const prevSlide = () => {\n            goToSlide((currentIndex - 1 + totalSlides) % totalSlides);\n        };\n\n        \/\/ 2. Initialisation de l'Auto-Slide\n        const startSlider = () => {\n            slideInterval = setInterval(nextSlide, intervalTime);\n        };\n\n        const resetSlider = () => {\n            clearInterval(slideInterval);\n            startSlider();\n        };\n\n        \/\/ Rendre les puces de pagination cliquables\n        dots.forEach((dot, index) => {\n            dot.addEventListener('click', () => {\n                goToSlide(index);\n                resetSlider(); \/\/ Relance le chrono\n            });\n        });\n\n        \/\/ 3. Gestion du Swipe Tactile (Mobiles & Tablettes)\n        let touchStartX = 0;\n        let touchEndX = 0;\n        const sliderContainer = document.querySelector('.norki-hero-slider');\n\n        sliderContainer.addEventListener('touchstart', (e) => {\n            touchStartX = e.changedTouches[0].screenX;\n        }, { passive: true });\n\n        sliderContainer.addEventListener('touchend', (e) => {\n            touchEndX = e.changedTouches[0].screenX;\n            handleSwipeGesture();\n        });\n\n        function handleSwipeGesture() {\n            const swipeThreshold = 50; \n            if (touchEndX < touchStartX - swipeThreshold) {\n                \/\/ Swipe vers la gauche -> Slide suivante\n                nextSlide();\n                resetSlider();\n            }\n            if (touchEndX > touchStartX + swipeThreshold) {\n                \/\/ Swipe vers la droite -> Slide pr\u00e9c\u00e9dente\n                prevSlide();\n                resetSlider();\n            }\n        }\n\n        startSlider();\n    });\n<\/script>\n\n\n\n<style>\n    \/* ==========================================================================\n       SECTION GALERIE R\u00c9ALISATIONS (Filtres + JS Dynamic Masonry)\n       ========================================================================== *\/\n\n    .norki-portfolio {\n        padding: var(--section-pad-v-dt, 80px) var(--section-pad-h-dt, 5vw);\n        background-color: var(--color-norki-beige, #f8f0ea);\n        color: black;\n        position: relative;\n        z-index: 10;\n        box-sizing: border-box;\n    }\n\n    \/* --- 1. Menu de Filtres (Conteneur & Scroll) --- *\/\n    .norki-portfolio__filters-container {\n        position: relative;\n        \/* Casse le padding de la section pour permettre un scroll jusqu'au bord de l'\u00e9cran (Bleed effect) *\/\n        width: calc(100% + var(--section-pad-h-dt, 5vw) * 2);\n        margin-left: calc(-1 * var(--section-pad-h-dt, 5vw));\n        margin-bottom: 60px;\n    }\n\n    .norki-portfolio__filters-wrapper {\n        width: 100%;\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n        scrollbar-width: none; \/* Cache la scrollbar sur Firefox *\/\n        scroll-behavior: smooth;\n        \/* Restaure le padding visuel \u00e0 l'int\u00e9rieur de la zone de scroll *\/\n        padding: 5px var(--section-pad-h-dt, 5vw);\n        box-sizing: border-box;\n    }\n\n    .norki-portfolio__filters-wrapper::-webkit-scrollbar {\n        display: none; \/* Cache la scrollbar sur Chrome\/Safari *\/\n    }\n\n    .norki-portfolio__filters {\n        display: flex;\n        gap: 40px;\n        align-items: center;\n        min-width: max-content;\n    }\n\n    \/* Pseudo-\u00e9l\u00e9ment pour assurer que le dernier \u00e9l\u00e9ment a bien de l'espace \u00e0 droite lors du scroll final *\/\n    .norki-portfolio__filters::after {\n        content: '';\n        padding-right: var(--section-pad-h-dt, 5vw);\n    }\n\n    \/* --- Styles des boutons de filtre --- *\/\n    .norki-portfolio__filter-btn {\n        background: none;\n        border: none;\n        padding: 0;\n        font-family: var(--font-montserrat, sans-serif);\n        font-size: 1rem;\n        font-weight: 500;\n        color: black;\n        cursor: pointer;\n        text-decoration: underline;\n        text-decoration-color: transparent;\n        text-underline-offset: 4px;\n        text-decoration-thickness: 1px;\n        transition: text-decoration-color 0.3s ease, opacity 0.3s ease, color 0.3s ease;\n    }\n\n    \/* Souligne et change la couleur au survol pour les INACTIFS *\/\n    .norki-portfolio__filter-btn:not(.is-active):hover {\n        text-decoration-color: rgba(0,0,0,0.7);\n        color: rgba(0,0,0,0.7);\n    }\n\n    \/* ACTIF : soulign\u00e9 par d\u00e9faut *\/\n    .norki-portfolio__filter-btn.is-active {\n        text-decoration-color: black;\n        opacity: 1;\n        color: black;\n    }\n\n    \/* D\u00c9-SOULIGNE l'actif d\u00e8s qu'on survole le MENU complet *\/\n    .norki-portfolio__filters:hover .norki-portfolio__filter-btn.is-active {\n        text-decoration-color: transparent;\n    }\n\n    \/* D\u00c9-SOULIGNE FORC\u00c9 si on survole pr\u00e9cis\u00e9ment l'actif (avec l\u00e9g\u00e8re transparence du texte pour l'effet interactif) *\/\n    .norki-portfolio__filter-btn.is-active:hover {\n        text-decoration-color: transparent !important;\n        color: rgba(0,0,0,0.7);\n    }\n\n    \/* --- Fl\u00e8ches de navigation des filtres --- *\/\n    .norki-filter-arrow {\n        position: absolute;\n        top: 0;\n        bottom: 0;\n        width: calc(var(--section-pad-h-dt, 5vw) + 50px);\n        background: none;\n        border: none;\n        color: black;\n        z-index: 5;\n        cursor: pointer;\n        opacity: 0;\n        pointer-events: none;\n        transition: opacity 0.3s ease;\n        display: flex;\n        align-items: center;\n    }\n\n    .norki-filter-arrow.is-visible {\n        opacity: 1;\n        pointer-events: auto;\n    }\n\n    .norki-filter-arrow--left {\n        left: 0;\n        justify-content: flex-start;\n        padding-left: var(--section-pad-h-dt, 5vw);\n        background: linear-gradient(to right, var(--color-norki-beige, #f8f0ea) 60%, rgba(248, 240, 234, 0) 100%);\n    }\n\n    .norki-filter-arrow--right {\n        right: 0;\n        justify-content: flex-end;\n        padding-right: var(--section-pad-h-dt, 5vw);\n        background: linear-gradient(to left, var(--color-norki-beige, #f8f0ea) 60%, rgba(248, 240, 234, 0) 100%);\n    }\n\n    .norki-filter-arrow svg {\n        width: 24px;\n        height: 24px;\n        fill: none;\n        stroke: currentColor;\n        stroke-width: 1.5;\n        transition: transform 0.2s ease;\n    }\n\n    .norki-filter-arrow--left:hover svg { transform: translateX(-3px); }\n    .norki-filter-arrow--right:hover svg { transform: translateX(3px); }\n\n    \/* --- 2. Grille Flex Masonry (G\u00e9r\u00e9e par JS) --- *\/\n    .norki-portfolio__masonry {\n        display: flex;\n        gap: 80px; \n        align-items: flex-start;\n    }\n\n    .norki-portfolio__column {\n        flex: 1;\n        display: flex;\n        flex-direction: column;\n    }\n\n    .norki-portfolio__column--right {\n        padding-top: 140px; \n    }\n\n    .norki-portfolio__item {\n        display: block;\n        text-decoration: none;\n        color: inherit;\n        position: relative;\n        opacity: 0;\n        transform: translateY(30px);\n        transition: opacity 0.8s ease, transform 0.8s ease;\n    }\n\n    .norki-portfolio__item.is-visible {\n        opacity: 1;\n        transform: translateY(0);\n    }\n\n    .norki-portfolio__img-wrapper {\n        width: 100%;\n        overflow: hidden;\n        background-color: #e5dfd9;\n    }\n\n    .norki-portfolio__img {\n        width: 100%;\n        height: auto;\n        display: block;\n        transition: transform 0.6s ease;\n    }\n\n    \/* Le scale est d\u00e9sactiv\u00e9 si l'\u00e9l\u00e9ment est coming-soon *\/\n    .norki-portfolio__item:not(.is-coming-soon):hover .norki-portfolio__img {\n        transform: scale(1.03); \n    }\n\n    .norki-portfolio__caption {\n        margin: 12px 0 0 0;\n        font-family: var(--font-montserrat, sans-serif);\n        font-size: 1rem;\n        line-height: 1.3;\n        letter-spacing: 0.02em;\n    }\n\n    .norki-portfolio__caption span {\n        font-family: \"LibreBaskervilleItalic\", sans-serif;\n    }\n\n    \/* --- 3. \u00c9tat \"Coming Soon\" --- *\/\n    .is-coming-soon {\n        position: relative;\n        cursor: not-allowed;\n        opacity: 0.7;\n    }\n\n    .is-coming-soon:hover::after {\n        content: \"Page en cours de cr\u00e9ation\";\n        position: absolute;\n        bottom: -40px;\n        left: 50%;\n        transform: translateX(-50%);\n        background: #1f2937; \/* Gris fonc\u00e9 *\/\n        color: white;\n        padding: 6px 12px;\n        font-size: 0.75rem;\n        border-radius: 6px;\n        white-space: nowrap;\n        pointer-events: none;\n        z-index: 50;\n        box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n    }\n\n    \/* Message liste vide *\/\n    .norki-portfolio__empty-message {\n        display: none;\n        text-align: center;\n        padding: 60px 20px;\n        font-family: var(--font-montserrat, sans-serif);\n        font-size: 1.1rem;\n        color: rgba(0,0,0,0.5);\n        font-style: italic;\n    }\n\n    .norki-portfolio__empty-message.is-visible {\n        display: block;\n    }\n\n    \/* --- 4. Actions (Bouton Charger Plus Minimaliste) --- *\/\n    .norki-portfolio__actions {\n        text-align: center;\n        margin-top: 50px;\n    }\n\n    .norki-portfolio__load-btn {\n        display: inline-flex;\n        flex-direction: column;\n        align-items: center;\n        gap: 8px;\n        background: none;\n        border: none;\n        padding: 0;\n        color: black;\n        font-family: var(--font-montserrat, sans-serif);\n        cursor: pointer;\n        transition: opacity 0.3s ease;\n    }\n\n    .norki-portfolio__load-dots {\n        font-size: 1.8rem;\n        line-height: 0.5;\n        letter-spacing: 2px;\n        margin-bottom: 5px;\n    }\n\n    .norki-portfolio__load-text {\n        font-size: 0.95rem;\n        text-decoration: underline;\n        text-underline-offset: 4px;\n        text-decoration-thickness: 1px;\n    }\n\n    .norki-portfolio__load-btn:hover {\n        opacity: 0.6;\n    }\n\n    .norki-portfolio__load-btn.is-loading {\n        opacity: 0.5;\n        pointer-events: none;\n        cursor: wait;\n    }\n\n    .norki-portfolio__source {\n        display: none;\n    }\n\n    \/* --- 5. Responsive --- *\/\n    @media (max-width: 1024px) {\n        .norki-portfolio {\n            padding: var(--section-pad-v-tab, 60px) var(--section-pad-h-tab, 4vw);\n        }\n        .norki-portfolio__masonry {\n            gap: 40px; \n        }\n        .norki-portfolio__column--right {\n            padding-top: 80px; \n        }\n    }\n\n    @media (max-width: 768px) {\n        .norki-portfolio {\n            padding: var(--section-pad-v-mob, 50px) var(--section-pad-h-mob, 20px);\n        }\n\n        .norki-portfolio__filter-btn {\n            font-size: 0.95rem;\n        }\n\n        .norki-portfolio__filter-btn.is-active {\n            font-weight: 600;\n        }\n\n        .norki-portfolio__filters-container {\n            width: calc(100% + var(--section-pad-h-mob, 20px) * 2);\n            margin-left: calc(-1 * var(--section-pad-h-mob, 20px));\n            margin-bottom: 40px;\n        }\n\n        .norki-portfolio__filters-wrapper {\n            padding: 5px var(--section-pad-h-mob, 20px);\n        }\n\n        .norki-portfolio__filters::after {\n            padding-right: var(--section-pad-h-mob, 20px);\n        }\n\n        .norki-filter-arrow {\n            width: calc(var(--section-pad-h-mob, 20px) + 35px);\n        }\n\n        .norki-filter-arrow--left {\n            padding-left: calc(var(--section-pad-h-mob, 20px) - 5px);\n        }\n\n        .norki-filter-arrow--right {\n            padding-right: calc(var(--section-pad-h-mob, 20px) - 5px);\n        }\n\n        .norki-portfolio__masonry {\n            display: block; \n        }\n\n        .norki-portfolio__column--right {\n            display: none; \n        }\n\n        .norki-portfolio__item {\n            margin-bottom: 60px !important; \n        }\n    }\n<\/style>\n\n<section class=\"norki-portfolio\">\n    \n    <!-- Menu de filtres avec fl\u00e8ches de navigation -->\n    <div class=\"norki-portfolio__filters-container\">\n        <!-- Fl\u00e8che Gauche -->\n        <button class=\"norki-filter-arrow norki-filter-arrow--left\" aria-label=\"D\u00e9filer \u00e0 gauche\">\n            <svg viewBox=\"0 0 24 24\"><path d=\"M15 18l-6-6 6-6\"><\/path><\/svg>\n        <\/button>\n\n        <!-- Conteneur d\u00e9filant -->\n        <div class=\"norki-portfolio__filters-wrapper\" id=\"norki-filters-wrapper\">\n            <div class=\"norki-portfolio__filters\">\n                <button class=\"norki-portfolio__filter-btn is-active\" data-filter=\"all\">Tous nos projets<\/button>\n                <button class=\"norki-portfolio__filter-btn\" data-filter=\"europe\">Europe<\/button>\n                <button class=\"norki-portfolio__filter-btn\" data-filter=\"usa\">USA<\/button>\n                <button class=\"norki-portfolio__filter-btn\" data-filter=\"japon\" style=\"display: none\">Japon<\/button>\n            <\/div>\n        <\/div>\n\n        <!-- Fl\u00e8che Droite -->\n        <button class=\"norki-filter-arrow norki-filter-arrow--right\" aria-label=\"D\u00e9filer \u00e0 droite\">\n            <svg viewBox=\"0 0 24 24\"><path d=\"M9 18l6-6-6-6\"><\/path><\/svg>\n        <\/button>\n    <\/div>\n\n    <!-- Message d'\u00e9tat vide (ex: Japon) -->\n    <div class=\"norki-portfolio__empty-message\" id=\"norki-empty-message\">\n        La liste est vide pour l&rsquo;instant.\n    <\/div>\n\n    <!-- Conteneur cible pour le JS -->\n    <div class=\"norki-portfolio__masonry\" id=\"norki-masonry-grid\">\n        <div class=\"norki-portfolio__column norki-portfolio__column--left\" id=\"norki-col-left\"><\/div>\n        <div class=\"norki-portfolio__column norki-portfolio__column--right\" id=\"norki-col-right\"><\/div>\n    <\/div>\n\n    <!-- Bouton Charger plus Minimaliste -->\n    <div class=\"norki-portfolio__actions\">\n        <button id=\"norki-load-more\" class=\"norki-portfolio__load-btn\">\n            <span class=\"norki-portfolio__load-dots\">&#8230;<\/span>\n            <span class=\"norki-portfolio__load-text\">Charger plus de r\u00e9alisations<\/span>\n        <\/button>\n    <\/div>\n\n    <!-- DONN\u00c9ES SOURCES (Cach\u00e9es - Le JS va piocher dedans) -->\n    <div class=\"norki-portfolio__source\" id=\"norki-items-source\">\n        \n        <!-- 1. Projet Actif (Courchevel) -->\n        <a href=\"https:\/\/www.norki.com\/fr\/studio-chalet\/projets-decoration-interieur-luxe\/courchevel-alpes-francaises\/\" class=\"norki-portfolio__item\" data-category=\"europe\">\n            <div class=\"norki-portfolio__img-wrapper\">\n                <img data-src=\"https:\/\/www.norki.com\/studio-chalet\/wp-content\/uploads\/2026\/06\/Untitled-1.jpg\" alt=\"Chalet Contemporain et Raffin\u00e9 \u00e0 Courchevel\" class=\"norki-portfolio__img\">\n            <\/div>\n            <p class=\"norki-portfolio__caption avenirmedium-font\">Chalet Contemporain et Raffin\u00e9 \u2013 <span>Chalet \u00e0 Courchevel<\/span><\/p>\n        <\/a>\n\n        <!-- 2. Projet Coming Soon (Aspen) -->\n        <a href=\"#\" class=\"norki-portfolio__item is-coming-soon\" data-category=\"usa\">\n            <div class=\"norki-portfolio__img-wrapper\">\n                <img data-src=\"https:\/\/www.norki.com\/studio-chalet\/wp-content\/uploads\/2026\/06\/Aspen_temp.png\" alt=\"Luxe Contemporain - Chalet \u00e0 Aspen\" class=\"norki-portfolio__img\">\n            <\/div>\n            <p class=\"norki-portfolio__caption avenirmedium-font\">Luxe Contemporain \u2013 <span>Chalet \u00e0 Aspen<\/span><\/p>\n        <\/a>\n\n        <!-- 3. Projet Coming Soon (Meg\u00e8ve) - Modifi\u00e9 en Europe -->\n        <a href=\"#\" class=\"norki-portfolio__item is-coming-soon\" data-category=\"europe\">\n            <div class=\"norki-portfolio__img-wrapper\">\n                <img data-src=\"https:\/\/www.norki.com\/studio-chalet\/wp-content\/uploads\/2026\/06\/2026_01_22_Sicoria_Living.jpg\" alt=\"Luxe Contemporain - Chalet \u00e0 Meg\u00e8ve\" class=\"norki-portfolio__img\">\n            <\/div>\n            <p class=\"norki-portfolio__caption avenirmedium-font\">Luxe Contemporain \u2013 <span>Chalet \u00e0 Meg\u00e8ve<\/span><\/p>\n        <\/a>\n\n        <!-- 4. Projet Coming Soon (Jackson Hole) -->\n        <a href=\"#\" class=\"norki-portfolio__item is-coming-soon\" data-category=\"usa\">\n            <div class=\"norki-portfolio__img-wrapper\">\n                <img data-src=\"https:\/\/www.norki.com\/studio-chalet\/wp-content\/uploads\/2026\/06\/2025_10_21_Living.jpg\" alt=\"Luxe Contemporain - Chalet \u00e0 Jackson Hole\" class=\"norki-portfolio__img\">\n            <\/div>\n            <p class=\"norki-portfolio__caption avenirmedium-font\">Luxe Contemporain \u2013 <span>Chalet \u00e0 Jackson Hole<\/span><\/p>\n        <\/a>\n\n    <\/div>\n\n<\/section>\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n    \n    \/\/ --- 1. GESTION DES FL\u00c8CHES DU MENU FILTRES ---\n    const filtersWrapper = document.getElementById('norki-filters-wrapper');\n    const arrowLeft = document.querySelector('.norki-filter-arrow--left');\n    const arrowRight = document.querySelector('.norki-filter-arrow--right');\n\n    const updateFilterArrows = () => {\n        if (!filtersWrapper) return;\n        \n        \/\/ Tol\u00e9rance pour g\u00e9rer les arrondis de pixels selon les navigateurs\n        const scrollLeft = Math.ceil(filtersWrapper.scrollLeft);\n        const scrollWidth = filtersWrapper.scrollWidth;\n        const clientWidth = filtersWrapper.clientWidth;\n\n        \/\/ Afficher\/Cacher la fl\u00e8che gauche\n        if (scrollLeft > 5) {\n            arrowLeft.classList.add('is-visible');\n        } else {\n            arrowLeft.classList.remove('is-visible');\n        }\n\n        \/\/ Afficher\/Cacher la fl\u00e8che droite\n        if (scrollLeft + clientWidth < scrollWidth - 5) {\n            arrowRight.classList.add('is-visible');\n        } else {\n            arrowRight.classList.remove('is-visible');\n        }\n    };\n\n    if (filtersWrapper) {\n        filtersWrapper.addEventListener('scroll', updateFilterArrows);\n        window.addEventListener('resize', updateFilterArrows);\n        \n        \/\/ Initialisation apr\u00e8s un court d\u00e9lai pour s'assurer que les polices\/tailles sont charg\u00e9es\n        setTimeout(updateFilterArrows, 100);\n\n        if (arrowLeft) {\n            arrowLeft.addEventListener('click', () => {\n                filtersWrapper.scrollBy({ left: -250, behavior: 'smooth' });\n            });\n        }\n        if (arrowRight) {\n            arrowRight.addEventListener('click', () => {\n                filtersWrapper.scrollBy({ left: 250, behavior: 'smooth' });\n            });\n        }\n    }\n\n    \/\/ --- 2. GESTION DE LA GRILLE MASONRY ET CHARGEMENT ---\n    const sourceItemsContainer = document.getElementById('norki-items-source');\n    const allSourceItems = Array.from(document.querySelectorAll('#norki-items-source .norki-portfolio__item'));\n    let filteredItems = [...allSourceItems]; \/\/ Copie pour le tri actif\n\n    const colLeft = document.getElementById('norki-col-left');\n    const colRight = document.getElementById('norki-col-right');\n    const loadMoreBtn = document.getElementById('norki-load-more');\n    const loadMoreText = loadMoreBtn ? loadMoreBtn.querySelector('.norki-portfolio__load-text') : null;\n    const emptyMessage = document.getElementById('norki-empty-message');\n    \n    let currentIndex = 0;\n    const itemsPerLoad = 4; \/\/ Nombre d'images \u00e0 charger par clic\n\n    \/\/ Prevent default on coming soon items to avoid jumping to top of page\n    document.addEventListener('click', (e) => {\n        const comingSoonLink = e.target.closest('.is-coming-soon');\n        if (comingSoonLink) {\n            e.preventDefault();\n        }\n    });\n\n    \/\/ --- 3. GESTION DES FILTRES ---\n    const filterBtns = document.querySelectorAll('.norki-portfolio__filter-btn');\n    \n    filterBtns.forEach(btn => {\n        btn.addEventListener('click', (e) => {\n            e.preventDefault();\n            if (loadMoreBtn && loadMoreBtn.classList.contains('is-loading')) return; \/\/ Bloque le tri pendant le chargement\n\n            \/\/ Mise \u00e0 jour de l'\u00e9tat actif du menu\n            filterBtns.forEach(b => b.classList.remove('is-active'));\n            btn.classList.add('is-active');\n\n            const filterValue = btn.getAttribute('data-filter');\n\n            \/\/ 1. R\u00e9initialise la grille en renvoyant tous les items dans la div source cach\u00e9e\n            allSourceItems.forEach(item => {\n                item.classList.remove('is-visible');\n                sourceItemsContainer.appendChild(item);\n            });\n\n            \/\/ 2. Applique le filtre pour cr\u00e9er la nouvelle liste d'attente\n            if (filterValue === 'all') {\n                filteredItems = [...allSourceItems];\n            } else {\n                filteredItems = allSourceItems.filter(item => item.getAttribute('data-category') === filterValue);\n            }\n\n            \/\/ 3. R\u00e9initialise l'index\n            currentIndex = 0;\n            \n            \/\/ S\u00e9curit\u00e9 : vide les colonnes\n            colLeft.innerHTML = '';\n            colRight.innerHTML = '';\n            \n            \/\/ 4. Gestion de l'affichage (Vide vs Contenu)\n            if (filteredItems.length === 0) {\n                emptyMessage.classList.add('is-visible');\n                if (loadMoreBtn) loadMoreBtn.style.display = 'none';\n            } else {\n                emptyMessage.classList.remove('is-visible');\n                if (loadMoreBtn) loadMoreBtn.style.display = 'inline-flex';\n                loadItems();\n            }\n        });\n    });\n\n    \/\/ Marges dynamiques\n    function getDynamicMargin(ratio) {\n        if (window.innerWidth <= 768) return 60; \n        \n        if (ratio <= 0.8) {\n            return 180; \n        } else if (ratio >= 1.2) {\n            return 110;  \n        } else {\n            return 140;  \n        }\n    }\n\n    \/\/ Traitement asynchrone : Attend que l'image soit pr\u00e9-charg\u00e9e pour mesurer son ratio\n    const processNextItem = (item) => {\n        return new Promise((resolve) => {\n            const img = item.querySelector('.norki-portfolio__img');\n            const src = img.getAttribute('data-src');\n            \n            const placeItemInDOM = () => {\n                \/\/ Calcul du ratio et de la marge dynamique\n                const ratio = img.naturalWidth \/ img.naturalHeight || 1;\n                const margin = getDynamicMargin(ratio);\n                item.style.marginBottom = margin + 'px';\n\n                \/\/ Logique d'ajout : Forc\u00e9 \u00e0 gauche sur Mobile pour \u00e9viter les sauts d'\u00e9cran\n                if (window.innerWidth <= 768) {\n                    colLeft.appendChild(item);\n                } else {\n                    \/\/ Sur PC : Ajout dans la colonne la plus courte (pour \u00e9quilibrer)\n                    if (colLeft.offsetHeight <= colRight.offsetHeight) {\n                        colLeft.appendChild(item);\n                    } else {\n                        colRight.appendChild(item);\n                    }\n                }\n\n                \/\/ Animation d'apparition\n                requestAnimationFrame(() => {\n                    setTimeout(() => item.classList.add('is-visible'), 50);\n                });\n                \n                resolve();\n            };\n\n            \/\/ Si l'image a d\u00e9j\u00e0 \u00e9t\u00e9 charg\u00e9e auparavant (gr\u00e2ce au tri), on l'affiche directement\n            if (item.dataset.loaded === 'true') {\n                placeItemInDOM();\n            } else {\n                \/\/ Pr\u00e9chargement fant\u00f4me pour r\u00e9cup\u00e9rer la taille exacte la premi\u00e8re fois\n                const preloadImg = new Image();\n                preloadImg.onload = () => {\n                    img.src = src;\n                    item.dataset.loaded = 'true';\n                    placeItemInDOM();\n                };\n                preloadImg.onerror = () => {\n                    img.src = src; \/\/ Fallback\n                    item.dataset.loaded = 'true';\n                    placeItemInDOM();\n                };\n                preloadImg.src = src;\n            }\n        });\n    };\n\n    \/\/ Fonction de chargement group\u00e9\n    const loadItems = async () => {\n        if (!loadMoreBtn || !loadMoreText) return;\n        \n        \/\/ S\u00e9curit\u00e9 suppl\u00e9mentaire au cas o\u00f9\n        if (filteredItems.length === 0) return;\n\n        loadMoreBtn.classList.add('is-loading');\n        loadMoreText.textContent = \"Chargement en cours...\";\n\n        const endIndex = Math.min(currentIndex + itemsPerLoad, filteredItems.length);\n        \n        \/\/ Charge et place les images l'une apr\u00e8s l'autre\n        for (let i = currentIndex; i < endIndex; i++) {\n            await processNextItem(filteredItems[i]);\n        }\n\n        currentIndex = endIndex;\n        loadMoreBtn.classList.remove('is-loading');\n        loadMoreText.textContent = \"Charger plus de r\u00e9alisations\";\n\n        \/\/ Masque le bouton s'il n'y a plus d'images pour le filtre s\u00e9lectionn\u00e9\n        if (currentIndex >= filteredItems.length) {\n            loadMoreBtn.style.display = 'none';\n        }\n    };\n\n    \/\/ 1er Chargement (Initialisation)\n    \/\/ On v\u00e9rifie d'abord s'il y a du contenu (normalement oui au load initial)\n    if (filteredItems.length > 0) {\n        loadItems();\n    } else {\n        emptyMessage.classList.add('is-visible');\n        if (loadMoreBtn) loadMoreBtn.style.display = 'none';\n    }\n\n    \/\/ \u00c9couteur sur le bouton avec pr\u00e9vention du saut par d\u00e9faut\n    if (loadMoreBtn) {\n        loadMoreBtn.addEventListener('click', (e) => {\n            e.preventDefault();\n            loadItems();\n        });\n    }\n});\n<\/script>\n\n\n\n<style>\n    \/* ==========================================================================\n       COMPOSANT : CTA PROJET DECORATION (Centr\u00e9e)\n       ========================================================================== *\/\n\n    .norki-cta-projet {\n        padding: var(--section-pad-v-dt, 80px) var(--section-pad-h-dt, 5vw);\n        background-color: var(--color-norki-beige, #f8f0ea);\n        color: black;\n        position: relative;\n        z-index: 10;\n        box-sizing: border-box;\n        text-align: center;\n        display: flex;\n        justify-content: center;\n        padding-top: 0;\n    }\n\n    .norki-cta-projet__wrapper {\n        max-width: 650px; \/* Force les retours \u00e0 la ligne du paragraphe comme sur la maquette *\/\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        gap: 30px; \/* Espace r\u00e9gulier entre le titre, le texte et le bouton *\/\n    }\n\n    \/* --- Titres --- *\/\n    .norki-cta-projet__title {\n        margin: 0;\n        line-height: 1.25;\n        letter-spacing: -0.01em;\n    }\n\n    .norki-cta-projet__title-sans {\n        display: block;\n        font-size: clamp(1.6rem, 2.5vw, 34px);\n        font-weight: 500;\n        margin-bottom: 5px;\n    }\n\n    .norki-cta-projet__title-serif {\n        display: block;\n        font-size: clamp(1.8rem, 2.8vw, 38px);\n        font-weight: 400;\n    }\n\n    \/* --- Paragraphe --- *\/\n    .norki-cta-projet__text {\n        font-size: 0.95rem;\n        line-height: 1.6;\n        margin: 0;\n        max-width: 600px;\n    }\n\n    \/* --- Bouton Principal (Plein) --- *\/\n    .norki-cta-projet__btn {\n        display: inline-flex;\n        justify-content: center;\n        align-items: center;\n        padding: 4px 35px; \/* Padding ajust\u00e9 pour un bouton plein *\/\n        text-decoration: none;\n        font-size: 1rem;\n        font-weight: 500;\n        color: #ffffff;\n        background-color: var(--color-norki-brown, #50423d); \/* Bouton brun fonc\u00e9 *\/\n        border: 1px solid var(--color-norki-brown, #50423d);\n        transition: all 0.3s ease;\n        margin-top: 10px; \/* L\u00e9ger espacement suppl\u00e9mentaire avec le texte *\/\n    }\n\n    .norki-cta-projet__btn:hover {\n        background-color: transparent;\n        color: var(--color-norki-brown, #50423d);\n    }\n\n    \/* --- Responsive --- *\/\n    @media (max-width: 1024px) {\n        .norki-cta-projet {\n            padding: var(--section-pad-v-tab, 60px) var(--section-pad-h-tab, 4vw);\n        }\n        \n        .norki-cta-projet__wrapper {\n            gap: 25px;\n        }\n    }\n\n    @media (max-width: 768px) {\n        .norki-cta-projet {\n            padding: var(--section-pad-v-mob, 50px) var(--section-pad-h-mob, 20px);\n        }\n\n        .norki-cta-projet__wrapper {\n            gap: 20px;\n        }\n\n        .norki-cta-projet__title-sans {\n            font-size: 1.4rem;\n        }\n\n        .norki-cta-projet__title-serif {\n            font-size: 1.6rem;\n        }\n        \n        .norki-cta-projet__btn {\n            padding: 10px 30px;\n        }\n    }\n<\/style>\n\n<section class=\"norki-cta-projet\">\n    <div class=\"norki-cta-projet__wrapper\">\n        \n        <!-- Titres -->\n        <h2 class=\"norki-cta-projet__title\">\n            <span class=\"norki-cta-projet__title-sans avenirmedium-font\">Vous avez un projet<\/span>\n            <span class=\"norki-cta-projet__title-serif baskerville-italic-font\">de d\u00e9coration d&rsquo;int\u00e9rieur ?<\/span>\n        <\/h2>\n\n        <!-- Texte d'accompagnement -->\n        <p class=\"norki-cta-projet__text\">\n            Pour recevoir un conseil personnalis\u00e9 sur un projet d&rsquo;ameublement, de pi\u00e8ces sur-mesure ou obtenir plus d&rsquo;informations sur nos services, nos \u00e9quipes sp\u00e9cialis\u00e9es se feront un plaisir de vous aider.\n        <\/p>\n\n        <!-- Bouton d'action -->\n        <a href=\"https:\/\/api.whatsapp.com\/send?phone=33647923857\" class=\"norki-cta-projet__btn avenirmedium-font\" target=\"_blank\" rel=\"noopener\" title=\"Contactez-nous sur WhatsApp\">WhatsApp us<\/a>\n        \n    <\/div>\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>Chalet Contemporain et Raffin\u00e9 Chalet \u00e0 Courchevel Luxe Contemporain Chalet \u00e0 Aspen Luxe Contemporain Chalet \u00e0 Jackson Hole D\u00e9couvrir Tous nos projets Europe USA Japon La liste est vide pour l&rsquo;instant. &#8230; Charger plus de r\u00e9alisations Chalet Contemporain et Raffin\u00e9 \u2013 Chalet \u00e0 Courchevel Luxe Contemporain \u2013 Chalet \u00e0 Aspen Luxe Contemporain \u2013 Chalet \u00e0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-page-builder-no-header-footer.php","meta":{"_uag_custom_page_level_css":"\/* A COPIER COLLER *\/\n\n:root {\n\t--wp--preset--color--contrast: black;\n    \/* Paddings de section standards *\/\n    --section-pad-v-dt: 80px;\n    --section-pad-h-dt: 5vw;\n    \n    --section-pad-v-tab: 50px;\n    --section-pad-h-tab: 4vw;\n    \n    --section-pad-v-mob: 40px;\n    --section-pad-h-mob: 20px;\n\n    \/* Couleurs  Polices *\/\n    --color-norki-brown: #50423d;\n    --color-norki-beige: #f8f0ea;\n    --font-baskerville: 'Baskerville', serif;\n    --font-montserrat: 'Montserrat', sans-serif;\n}\n\n@font-face {\n  font-family: 'LibreBaskervilleItalic';\n  src: url('\/studio-chalet\/wp-content\/themes\/twentytwentyfour\/assets\/fonts\/Libre-Baskerville\/LibreBaskerville-Italic.ttf') format('truetype');\n  font-weight: normal;\n  font-style: normal;\n}\n\n@font-face {\n  font-family: 'Bestermind';\n  src: url('\/studio-chalet\/wp-content\/themes\/twentytwentyfour\/assets\/fonts\/Bestermind\/BestermindRegular.ttf') format('truetype');\n  font-weight: normal;\n  font-style: normal;\n}\n\n@font-face {\n  font-family: 'AvenirBook';\n  src: url('\/studio-chalet\/wp-content\/themes\/twentytwentyfour\/assets\/fonts\/Avenir\/Avenir-Book-01.otf') format('opentype');\n  font-weight: normal;\n  font-style: normal;\n}\n\n\n@font-face {\n  font-family: 'AvenirMedium';\n  src: url('\/studio-chalet\/wp-content\/themes\/twentytwentyfour\/assets\/fonts\/Avenir\/Avenir-Medium-09.otf') format('opentype');\n  font-weight: normal;\n  font-style: normal;\n}\n\n@font-face {\n  font-family: 'AvenirBookOblique';\n  src: url('\/studio-chalet\/wp-content\/themes\/twentytwentyfour\/assets\/fonts\/Avenir\/Avenir-BookOblique-02.otf') format('opentype');\n  font-weight: normal;\n  font-style: normal;\n}\n\n@font-face {\n  font-family: 'Pertili';\n  src: url('\/studio-chalet\/wp-content\/themes\/twentytwentyfour\/assets\/fonts\/PERTILI.TTF') format('truetype');\n  font-weight: normal;\n  font-style: normal;\n}\n\n.pertili-font {\n\tfont-family: \"Pertili\", sans-serif !important;\n}\n\n.bestermind-font {\n\tfont-family: \"Bestermind\", sans-serif !important;\n}\n\n.avenirbookoblique-font {\n\tfont-family: \"AvenirBookOblique\", sans-serif !important;\n}\n\n.baskerville-italic-font {\n\tfont-family: \"LibreBaskervilleItalic\", sans-serif !important;\n}\n\n.avenirmedium-font {\n\tfont-family: \"AvenirMedium\", sans-serif !important;\n}\n\nbody:not(.wp-admin) * {\n  font-family: \"AvenirBook\", sans-serif;\n}\n\nbody {\n\tbackground-color: #f8f0ea !important;\n\tcolor: black;\n}\n\nh2 {\n\tfont-family: \"AvenirMedium\", sans-serif !important;\n}\n\n.components-sandbox {\n\tmax-height: 500px;\n}\n\n\/* A COPIER COLLER END *\/","_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","footnotes":""},"class_list":["post-1381","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Projets Alpins Internationaux | Studio Chalet by Norki<\/title>\n<meta name=\"description\" content=\"Explorez nos projets d&#039;am\u00e9nagement int\u00e9rieur. Studio Chalet by Norki sublime les r\u00e9sidences alpines du monde entier avec une \u00e9l\u00e9gance absolue.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.norki.com\/fr\/studio-chalet\/projets-decoration-interieur-luxe\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Projets Alpins Internationaux | Studio Chalet by Norki\" \/>\n<meta property=\"og:description\" content=\"Explorez nos projets d&#039;am\u00e9nagement int\u00e9rieur. Studio Chalet by Norki sublime les r\u00e9sidences alpines du monde entier avec une \u00e9l\u00e9gance absolue.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.norki.com\/fr\/studio-chalet\/projets-decoration-interieur-luxe\/\" \/>\n<meta property=\"og:site_name\" content=\"Norki\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/NorkiDecoration\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-16T10:51:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.norki.com\/studio-chalet\/wp-content\/uploads\/2026\/06\/Aspen_temp.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.norki.com\\\/fr\\\/studio-chalet\\\/projets-decoration-interieur-luxe\\\/\",\"url\":\"https:\\\/\\\/www.norki.com\\\/fr\\\/studio-chalet\\\/projets-decoration-interieur-luxe\\\/\",\"name\":\"Projets Alpins Internationaux | Studio Chalet by Norki\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.norki.com\\\/studio-chalet\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.norki.com\\\/fr\\\/studio-chalet\\\/projets-decoration-interieur-luxe\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.norki.com\\\/fr\\\/studio-chalet\\\/projets-decoration-interieur-luxe\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.norki.com\\\/studio-chalet\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Aspen_temp.png\",\"datePublished\":\"2026-06-16T06:44:08+00:00\",\"dateModified\":\"2026-07-16T10:51:04+00:00\",\"description\":\"Explorez nos projets d'am\u00e9nagement int\u00e9rieur. Studio Chalet by Norki sublime les r\u00e9sidences alpines du monde entier avec une \u00e9l\u00e9gance absolue.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.norki.com\\\/fr\\\/studio-chalet\\\/projets-decoration-interieur-luxe\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.norki.com\\\/fr\\\/studio-chalet\\\/projets-decoration-interieur-luxe\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.norki.com\\\/fr\\\/studio-chalet\\\/projets-decoration-interieur-luxe\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.norki.com\\\/studio-chalet\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Aspen_temp.png\",\"contentUrl\":\"https:\\\/\\\/www.norki.com\\\/studio-chalet\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Aspen_temp.png\",\"width\":1449,\"height\":1086},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.norki.com\\\/fr\\\/studio-chalet\\\/projets-decoration-interieur-luxe\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.norki.com\\\/fr\\\/studio-chalet\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Nos Projets\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.norki.com\\\/studio-chalet\\\/#website\",\"url\":\"https:\\\/\\\/www.norki.com\\\/studio-chalet\\\/\",\"name\":\"Norki\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.norki.com\\\/studio-chalet\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.norki.com\\\/studio-chalet\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.norki.com\\\/studio-chalet\\\/#organization\",\"name\":\"Norki | Studio Chalet\",\"url\":\"https:\\\/\\\/www.norki.com\\\/studio-chalet\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.norki.com\\\/studio-chalet\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.norki.com\\\/studio-chalet\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/logo-simple-noir_NORKI-e1777530636585.png\",\"contentUrl\":\"https:\\\/\\\/www.norki.com\\\/studio-chalet\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/logo-simple-noir_NORKI-e1777530636585.png\",\"width\":300,\"height\":74,\"caption\":\"Norki | Studio Chalet\"},\"image\":{\"@id\":\"https:\\\/\\\/www.norki.com\\\/studio-chalet\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/facebook.com\\\/NorkiDecoration\",\"https:\\\/\\\/instagram.com\\\/norkiofficial\\\/\",\"https:\\\/\\\/fr.linkedin.com\\\/company\\\/norki-decoration\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCLwZSkdXDYvZx68leltWTMw\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Projets Alpins Internationaux | Studio Chalet by Norki","description":"Explorez nos projets d'am\u00e9nagement int\u00e9rieur. Studio Chalet by Norki sublime les r\u00e9sidences alpines du monde entier avec une \u00e9l\u00e9gance absolue.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.norki.com\/fr\/studio-chalet\/projets-decoration-interieur-luxe\/","og_locale":"fr_FR","og_type":"article","og_title":"Projets Alpins Internationaux | Studio Chalet by Norki","og_description":"Explorez nos projets d'am\u00e9nagement int\u00e9rieur. Studio Chalet by Norki sublime les r\u00e9sidences alpines du monde entier avec une \u00e9l\u00e9gance absolue.","og_url":"https:\/\/www.norki.com\/fr\/studio-chalet\/projets-decoration-interieur-luxe\/","og_site_name":"Norki","article_publisher":"https:\/\/facebook.com\/NorkiDecoration","article_modified_time":"2026-07-16T10:51:04+00:00","og_image":[{"url":"https:\/\/www.norki.com\/studio-chalet\/wp-content\/uploads\/2026\/06\/Aspen_temp.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.norki.com\/fr\/studio-chalet\/projets-decoration-interieur-luxe\/","url":"https:\/\/www.norki.com\/fr\/studio-chalet\/projets-decoration-interieur-luxe\/","name":"Projets Alpins Internationaux | Studio Chalet by Norki","isPartOf":{"@id":"https:\/\/www.norki.com\/studio-chalet\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.norki.com\/fr\/studio-chalet\/projets-decoration-interieur-luxe\/#primaryimage"},"image":{"@id":"https:\/\/www.norki.com\/fr\/studio-chalet\/projets-decoration-interieur-luxe\/#primaryimage"},"thumbnailUrl":"https:\/\/www.norki.com\/studio-chalet\/wp-content\/uploads\/2026\/06\/Aspen_temp.png","datePublished":"2026-06-16T06:44:08+00:00","dateModified":"2026-07-16T10:51:04+00:00","description":"Explorez nos projets d'am\u00e9nagement int\u00e9rieur. Studio Chalet by Norki sublime les r\u00e9sidences alpines du monde entier avec une \u00e9l\u00e9gance absolue.","breadcrumb":{"@id":"https:\/\/www.norki.com\/fr\/studio-chalet\/projets-decoration-interieur-luxe\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.norki.com\/fr\/studio-chalet\/projets-decoration-interieur-luxe\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.norki.com\/fr\/studio-chalet\/projets-decoration-interieur-luxe\/#primaryimage","url":"https:\/\/www.norki.com\/studio-chalet\/wp-content\/uploads\/2026\/06\/Aspen_temp.png","contentUrl":"https:\/\/www.norki.com\/studio-chalet\/wp-content\/uploads\/2026\/06\/Aspen_temp.png","width":1449,"height":1086},{"@type":"BreadcrumbList","@id":"https:\/\/www.norki.com\/fr\/studio-chalet\/projets-decoration-interieur-luxe\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.norki.com\/fr\/studio-chalet\/"},{"@type":"ListItem","position":2,"name":"Nos Projets"}]},{"@type":"WebSite","@id":"https:\/\/www.norki.com\/studio-chalet\/#website","url":"https:\/\/www.norki.com\/studio-chalet\/","name":"Norki","description":"","publisher":{"@id":"https:\/\/www.norki.com\/studio-chalet\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.norki.com\/studio-chalet\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.norki.com\/studio-chalet\/#organization","name":"Norki | Studio Chalet","url":"https:\/\/www.norki.com\/studio-chalet\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.norki.com\/studio-chalet\/#\/schema\/logo\/image\/","url":"https:\/\/www.norki.com\/studio-chalet\/wp-content\/uploads\/2026\/04\/logo-simple-noir_NORKI-e1777530636585.png","contentUrl":"https:\/\/www.norki.com\/studio-chalet\/wp-content\/uploads\/2026\/04\/logo-simple-noir_NORKI-e1777530636585.png","width":300,"height":74,"caption":"Norki | Studio Chalet"},"image":{"@id":"https:\/\/www.norki.com\/studio-chalet\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/NorkiDecoration","https:\/\/instagram.com\/norkiofficial\/","https:\/\/fr.linkedin.com\/company\/norki-decoration\/","https:\/\/www.youtube.com\/channel\/UCLwZSkdXDYvZx68leltWTMw"]}]}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"webmaster","author_link":"https:\/\/www.norki.com\/studio-chalet\/inspiration-decoration-montagne\/author\/webmaster\/"},"uagb_comment_info":0,"uagb_excerpt":"Chalet Contemporain et Raffin\u00e9 Chalet \u00e0 Courchevel Luxe Contemporain Chalet \u00e0 Aspen Luxe Contemporain Chalet \u00e0 Jackson Hole D\u00e9couvrir Tous nos projets Europe USA Japon La liste est vide pour l&rsquo;instant. &#8230; Charger plus de r\u00e9alisations Chalet Contemporain et Raffin\u00e9 \u2013 Chalet \u00e0 Courchevel Luxe Contemporain \u2013 Chalet \u00e0 Aspen Luxe Contemporain \u2013 Chalet \u00e0\u2026","_links":{"self":[{"href":"https:\/\/www.norki.com\/studio-chalet\/wp-json\/wp\/v2\/pages\/1381","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.norki.com\/studio-chalet\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.norki.com\/studio-chalet\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.norki.com\/studio-chalet\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.norki.com\/studio-chalet\/wp-json\/wp\/v2\/comments?post=1381"}],"version-history":[{"count":15,"href":"https:\/\/www.norki.com\/studio-chalet\/wp-json\/wp\/v2\/pages\/1381\/revisions"}],"predecessor-version":[{"id":2424,"href":"https:\/\/www.norki.com\/studio-chalet\/wp-json\/wp\/v2\/pages\/1381\/revisions\/2424"}],"wp:attachment":[{"href":"https:\/\/www.norki.com\/studio-chalet\/wp-json\/wp\/v2\/media?parent=1381"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}