{"id":2449,"date":"2026-05-13T13:04:42","date_gmt":"2026-05-13T11:04:42","guid":{"rendered":"https:\/\/norki.com\/sur-mesure\/?page_id=2449"},"modified":"2026-07-16T12:48:47","modified_gmt":"2026-07-16T10:48:47","slug":"ville","status":"publish","type":"page","link":"https:\/\/www.norki.com\/fr\/sur-mesure\/realisations-projets-decoration-interieur-luxe\/ville\/","title":{"rendered":"Ville"},"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 *\/\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        \/* On utilise des pourcentages pour s'adapter \u00e0 la faible hauteur du 16\/9 sur mobile *\/\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 Appartement\">\n    \n    <div class=\"norki-hs__track\">\n        \n        <!-- SLIDE 1: Tapis mur \u00e0 mur sur mesure (Active d'entr\u00e9e, avec lien de redirection) -->\n        <div class=\"norki-hs__slide is-active\" data-link=\"https:\/\/www.norki.com\/fr\/sur-mesure\/realisations-projets-decoration-interieur-luxe\/ville\/tala-fustok-paris\/\" data-status=\"active\">\n            <img src=\"https:\/\/norki.com\/sur-mesure\/wp-content\/uploads\/2026\/05\/tailor-made-wall-to-wall-shearling-carpet-2.jpeg\" alt=\"Appartement Priv\u00e9 Paris - Tapis mur \u00e0 mur sur mesure\" 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\">Tapis mur \u00e0 mur sur mesure<\/span>\n                <span class=\"norki-hs__subtitle baskerville-italic-font\">Appartement Priv\u00e9 Paris<\/span>\n            <\/div>\n        <\/div>\n\n        <!-- SLIDE 2: Tapis en renard gris sur mesure (Coming soon) -->\n        <div class=\"norki-hs__slide\" data-link=\"#\" data-status=\"coming-soon\">\n            <img src=\"https:\/\/norki.com\/sur-mesure\/wp-content\/uploads\/2026\/05\/bespoke-coyote-rug-paris-appartment.jpg\" alt=\"Appartement Priv\u00e9 Paris - Tapis en renard gris\" 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\">Tapis en renard gris sur mesure<\/span>\n                <span class=\"norki-hs__subtitle baskerville-italic-font\">Appartement Priv\u00e9 Paris<\/span>\n            <\/div>\n        <\/div>\n\n        <!-- SLIDE 3: R\u00e9sidence historique haussmannienne (Coming soon) -->\n        <div class=\"norki-hs__slide\" data-link=\"#\" data-status=\"coming-soon\">\n            <img src=\"https:\/\/norki.com\/sur-mesure\/wp-content\/uploads\/2026\/06\/Marble-and-shearling-armchairs_Norki_v2.png\" alt=\"H\u00f4tel particulier parisien\" 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\">R\u00e9sidence historique haussmannienne<\/span>\n                <span class=\"norki-hs__subtitle baskerville-italic-font\">H\u00f4tel particulier parisien<\/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 (Initialis\u00e9 actif pour la Slide 1) -->\n        <a href=\"https:\/\/www.norki.com\/fr\/sur-mesure\/realisations-projets-decoration-interieur-luxe\/ville\/tala-fustok-paris\/\" 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') || discoverBtn.getAttribute('href') === '#') {\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 D\u00e9couvrir\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 de l'ancienne slide & R\u00e9apparition du bouton\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 (100%)\n                currentSlide.style.transition = 'none';\n                void currentSlide.offsetWidth; \/\/ Force le reflow du navigateur\n                currentSlide.style.transition = ''; \/\/ R\u00e9tablit l'animation pour le prochain tour\n                \n                \/\/ Gestion de l'\u00e9tat du bouton (Actif vs Coming soon)\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 chronom\u00e8tre\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 \"URBAIN\" (Texte align\u00e9 \u00e0 gauche + Expand - Sans Citation)\n       ========================================================================== *\/\n\n    .norki-urban {\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    .norki-urban * {\n        box-sizing: border-box;\n    }\n\n    .norki-urban__content {\n        max-width: 680px;\n    }\n\n    \/* --- Accroche Italic (H1) --- *\/\n    .norki-urban__intro {\n        font-size: clamp(1.4rem, 2vw, 28px);\n        line-height: 1.35;\n        margin-top: 0;\n        margin-bottom: 70px;\n        color: black;\n        font-weight: normal;\n    }\n\n    \/* --- Titre Principal (H2) --- *\/\n    .norki-urban__title {\n        font-size: clamp(1.6rem, 2.5vw, 32px);\n        font-weight: 500;\n        margin-top: 0;\n        margin-bottom: 25px;\n        letter-spacing: -0.01em;\n        line-height: 1.2;\n    }\n\n    \/* --- Paragraphes --- *\/\n    .norki-urban__text {\n        font-size: 0.95rem;\n        line-height: 1.5;\n        margin-top: 0;\n        margin-bottom: 25px;\n        max-width: 81%;\n    }\n\n    .norki-urban__text strong {\n        font-weight: 600;\n    }\n\n    \/* --- ANIMATION DE VOTRE DIRECTION ARTISTIQUE POUR LES LIENS DU TEXTE --- *\/\n    .norki-urban__inline-link {\n        color: inherit;\n        text-decoration: underline;\n        text-decoration-color: currentColor;\n        text-underline-offset: 3px;\n        text-decoration-thickness: 1px;\n        transition: text-decoration-color 0.3s ease, opacity 0.3s ease;\n        font-weight: 500;\n    }\n\n    .norki-urban__inline-link:hover {\n        text-decoration-color: transparent;\n        opacity: 0.7;\n    }\n\n    \/* --- Syst\u00e8me d'expansion (Grid Transition) --- *\/\n    .norki-urban__expand-wrapper {\n        display: grid;\n        grid-template-rows: 0fr;\n        transition: grid-template-rows 0.4s ease-out;\n    }\n\n    .norki-urban__expand-wrapper.is-open {\n        grid-template-rows: 1fr;\n    }\n\n    .norki-urban__expand-content {\n        overflow: hidden;\n    }\n\n    \/* Marges annul\u00e9es sur le dernier \u00e9l\u00e9ment pour \u00e9viter les sauts lors de l'animation *\/\n    .norki-urban__expand-content > *:last-child {\n        margin-bottom: 25px; \n    }\n\n    \/* --- Bouton Voir Plus --- *\/\n    .norki-urban__btn {\n        display: inline-block;\n        background: transparent;\n        border: none;\n        padding: 0;\n        cursor: pointer;\n        font-family: inherit;\n        font-size: 0.9rem;\n        color: black;\n        text-decoration: underline;\n        text-underline-offset: 4px;\n        text-decoration-thickness: 1px;\n        transition: opacity 0.3s ease, text-decoration-color 0.3s ease;\n        font-style: italic;\n    }\n\n    .norki-urban__btn:hover {\n        text-decoration-color: transparent;\n        opacity: 0.6;\n    }\n\n    \/* --- Responsive --- *\/\n    @media (max-width: 1024px) {\n        .norki-urban {\n            padding: var(--section-pad-v-tab, 60px) var(--section-pad-h-tab, 4vw);\n        }\n        \n        .norki-urban__intro {\n            margin-bottom: 50px;\n        }\n    }\n\n    @media (max-width: 768px) {\n        .norki-urban {\n            padding: var(--section-pad-v-mob, 50px) var(--section-pad-h-mob, 20px);\n        }\n\n        .norki-urban__content {\n            max-width: 100%;\n        }\n\n        .norki-urban__text {\n            max-width: 100%; \/* Le texte prend toute la largeur sur mobile *\/\n        }\n\n        .norki-urban__intro {\n            font-size: 1.3rem;\n            margin-bottom: 40px;\n        }\n\n        .norki-urban__title {\n            font-size: 1.5rem;\n            margin-bottom: 20px;\n        }\n    }\n<\/style>\n\n<section class=\"norki-urban\">\n    <div class=\"norki-urban__content\">\n        \n        <!-- Accroche en italique (H1) -->\n        <h1 class=\"norki-urban__intro baskerville-italic-font\">\n            Le savoir-faire Norki au c\u0153ur des capitales mondiales\n        <\/h1>\n\n        <!-- Titre de section (H2) -->\n        <h2 class=\"norki-urban__title avenirmedium-font\">\n            L\u2019\u00c9l\u00e9gance Urbaine\n        <\/h2>\n\n        <!-- Paragraphe principal visible avec int\u00e9gration des liens s\u00e9mantiques -->\n        <p class=\"norki-urban__text\">\n            De la cr\u00e9ation de vastes \n            <a href=\"https:\/\/www.norki.com\/fr\/sur-mesure\/tapis-sur-mesure-peau-fourrure\/\" class=\"norki-urban__inline-link\">tapis monochromes noirs<\/a> \n            \u00e0 la \n            <a href=\"https:\/\/www.norki.com\/fr\/sur-mesure\/tapisserie-ameublement-sur-mesure\/\" class=\"norki-urban__inline-link\">restauration m\u00e9ticuleuse de mobilier vintage<\/a> \n            du milieu du XX\u00e8me si\u00e8cle, nos Ateliers d\u00e9ploient une expertise rare pour sublimer les int\u00e9rieurs citadins les plus prestigieux.\n        <\/p>\n\n        <!-- Contenu masqu\u00e9 \/ d\u00e9pliable (sans citation) -->\n        <div class=\"norki-urban__expand-wrapper\" id=\"extra-wrapper-urban\">\n            <div class=\"norki-urban__expand-content\">\n                <p class=\"norki-urban__text\">\n                    Qu&rsquo;il s&rsquo;agisse de restaurer ou de r\u00e9interpr\u00e9ter des pi\u00e8ces iconiques de Pierre Jeanneret ou de Jean Roy\u00e8re, notre Maison et nos artisans s&rsquo;attachent \u00e0 une ex\u00e9cution d&rsquo;une rigueur absolue. Cette proximit\u00e9 avec les architectes de renown et les galeristes internationaux permet \u00e0 nos Ateliers de transcender leurs savoir-faire pour r\u00e9pondre \u00e0 des exigences esth\u00e9tiques et techniques sans concession.\n                <\/p>\n                <p class=\"norki-urban__text\">\n                    De New York \u00e0 Londres, de Duba\u00ef \u00e0 Paris, en passant par Bruxelles ou Milan, nos cr\u00e9ations int\u00e8grent les plus grandes capitales, portant haut l&rsquo;\u00e9tendard de l&rsquo;Art de Vivre et de la manufacture fran\u00e7aise d&rsquo;exception.\n                <\/p>\n            <\/div>\n        <\/div>\n\n        <!-- Bouton d'action -->\n        <button type=\"button\" class=\"norki-urban__btn\" id=\"voir-plus-btn-urban\" aria-expanded=\"false\" aria-controls=\"extra-wrapper-urban\">Voir plus<\/button>\n        \n    <\/div>\n<\/section>\n\n<script>\n    document.addEventListener('DOMContentLoaded', () => {\n        const btn = document.getElementById('voir-plus-btn-urban'); \n        const wrapper = document.getElementById('extra-wrapper-urban'); \n\n        if (btn && wrapper) {\n            btn.addEventListener('click', () => {\n                const isOpen = wrapper.classList.toggle('is-open');\n                \n                \/\/ Mise \u00e0 jour de l'accessibilit\u00e9\n                btn.setAttribute('aria-expanded', isOpen);\n\n                \/\/ Mise \u00e0 jour du texte\n                if (isOpen) {\n                    btn.textContent = 'Voir moins';\n                } else {\n                    btn.textContent = 'Voir plus';\n                }\n            });\n        }\n    });\n<\/script>\n\n\n\n<style>\n    \/* ==========================================================================\n       VARIABLES ET POLICES DE SECOURS (Int\u00e9gration Design System Norki)\n       ========================================================================== *\/\n    :root {\n        --color-norki-beige: #f8f0ea;\n        --color-norki-dark: #1a1a1a;\n        --font-montserrat: 'Montserrat', sans-serif;\n        --section-pad-v-dt: 80px;\n        --section-pad-h-dt: 5vw;\n        --section-pad-v-tab: 60px;\n        --section-pad-h-tab: 4vw;\n        --section-pad-v-mob: 50px;\n        --section-pad-h-mob: 20px;\n    }\n\n    \/* Simulation de la police cursive Norki si absente *\/\n    @font-face {\n        font-family: 'LibreBaskervilleItalic';\n        src: local('Georgia Italic'), local('Baskerville-Italic');\n        font-style: italic;\n    }\n\n    \/* ==========================================================================\n       SECTION GALERIE R\u00c9ALISATIONS VILLE (Filtres + JS Dynamic Masonry)\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: var(--color-norki-dark, #1a1a1a);\n        position: relative;\n        z-index: 10;\n        box-sizing: border-box;\n        padding-top: 0;\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: 15px 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 (Effet Hover \/ Active) --- *\/\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: var(--color-norki-dark, #1a1a1a);\n        cursor: pointer;\n        text-decoration: underline;\n        text-decoration-color: transparent;\n        text-underline-offset: 6px;\n        text-decoration-thickness: 1.5px;\n        transition: text-decoration-color 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94), \n                    opacity 0.35s ease, \n                    color 0.35s 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.8);\n        color: rgba(0,0,0,0.8);\n    }\n\n    \/* ACTIF : soulign\u00e9 par d\u00e9faut *\/\n    .norki-portfolio__filter-btn.is-active {\n        text-decoration-color: var(--color-norki-dark, #1a1a1a);\n        opacity: 1;\n        color: var(--color-norki-dark, #1a1a1a);\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: var(--color-norki-dark, #1a1a1a);\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.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n    }\n\n    .norki-filter-arrow--left:hover svg { transform: translateX(-4px); }\n    .norki-filter-arrow--right:hover svg { transform: translateX(4px); }\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    \/* D\u00e9calage asym\u00e9trique de la colonne de droite (Style Haute Couture Norki) *\/\n    .norki-portfolio__column--right {\n        padding-top: 140px; \n    }\n\n    \/* \u00c9l\u00e9ment Individuel *\/\n    .norki-portfolio__item {\n        display: block;\n        text-decoration: none;\n        color: inherit;\n        position: relative;\n        opacity: 0;\n        transform: translateY(40px);\n        transition: opacity 1s cubic-bezier(0.16, 1, 0.3, 1), \n                    transform 1s cubic-bezier(0.16, 1, 0.3, 1);\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        aspect-ratio: auto;\n    }\n\n    .norki-portfolio__img {\n        width: 100%;\n        height: auto;\n        display: block;\n        transition: transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);\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    \/* --- Gestion de l'\u00e9tat Coming Soon --- *\/\n    .is-coming-soon {\n        position: relative;\n        cursor: not-allowed;\n    }\n\n    .is-coming-soon::after {\n        content: \"Page en cours de cr\u00e9ation\";\n        position: absolute;\n        bottom: -45px;\n        left: 50%;\n        transform: translateX(-50%) translateY(10px);\n        background: #1f2937; \/* Gris fonc\u00e9 *\/\n        color: white;\n        padding: 8px 14px;\n        font-family: var(--font-montserrat, sans-serif);\n        font-size: 0.75rem;\n        font-weight: 500;\n        letter-spacing: 0.02em;\n        border-radius: 4px;\n        white-space: nowrap;\n        pointer-events: none;\n        z-index: 50;\n        opacity: 0;\n        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n        transition: opacity 0.3s cubic-bezier(0.16, 1, 0.3, 1), \n                    transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n    }\n\n    .is-coming-soon:hover::after {\n        opacity: 0.95;\n        transform: translateX(-50%) translateY(0);\n    }\n\n    .norki-portfolio__caption {\n        margin: 16px 0 0 0;\n        font-family: var(--font-montserrat, sans-serif);\n        font-size: 0.85rem;\n        line-height: 1.4;\n        letter-spacing: 0.03em;\n        font-weight: 500;\n        color: var(--color-norki-dark, #1a1a1a);\n    }\n\n    .norki-portfolio__caption span {\n        font-family: \"LibreBaskervilleItalic\", Georgia, serif;\n        font-style: italic;\n        font-weight: normal;\n    }\n\n    \/* --- 3. Actions (Bouton Charger Plus Minimaliste) --- *\/\n    .norki-portfolio__actions {\n        text-align: center;\n        margin-top: 60px;\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: var(--color-norki-dark, #1a1a1a);\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: 3px;\n        margin-bottom: 5px;\n        font-weight: bold;\n    }\n\n    .norki-portfolio__load-text {\n        font-size: 0.85rem;\n        font-weight: 500;\n        text-decoration: underline;\n        text-underline-offset: 5px;\n        text-decoration-thickness: 1px;\n        letter-spacing: 0.05em;\n    }\n\n    .norki-portfolio__load-btn:hover {\n        opacity: 0.6;\n    }\n\n    .norki-portfolio__load-btn.is-loading {\n        opacity: 0.4;\n        pointer-events: none;\n        cursor: wait;\n    }\n\n    \/* Cache le conteneur source des images (utilis\u00e9 par le JS) *\/\n    .norki-portfolio__source {\n        display: none;\n    }\n\n    \/* --- 4. Responsive --- *\/\n    @media (max-width: 1024px) {\n        .norki-portfolio {\n            padding: var(--section-pad-v-tab, 60px) var(--section-pad-h-tab, 4vw);\n            padding-top: 0;\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            padding-top: 0;\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        \/* Ajustement du conteneur de filtres pour les marges mobiles *\/\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: 10px 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        \/* Passage \u00e0 1 seule colonne sur mobile *\/\n        .norki-portfolio__masonry {\n            display: block; \n        }\n\n        .norki-portfolio__column--right {\n            display: none; \n        }\n\n        \/* On force une marge fixe sur mobile pour \u00e9viter les trous trop grands *\/\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                <a href=\"https:\/\/www.norki.com\/fr\/sur-mesure\/realisations-projets-decoration-interieur-luxe\/\" class=\"norki-portfolio__filter-btn\" title=\"Consulter toutes nos r\u00e9alisations\">Toutes nos r\u00e9alisations<\/a>\n                <a href=\"https:\/\/www.norki.com\/fr\/sur-mesure\/realisations-projets-decoration-interieur-luxe\/montagne\/\" class=\"norki-portfolio__filter-btn\" title=\"Voir nos r\u00e9alisations en montagne\">Montagne<\/a>\n                <a href=\"https:\/\/www.norki.com\/fr\/sur-mesure\/realisations-projets-decoration-interieur-luxe\/bord-de-mer\/\" class=\"norki-portfolio__filter-btn\" title=\"Voir nos r\u00e9alisations en bord de mer\">Bord de Mer<\/a>\n                <button class=\"norki-portfolio__filter-btn is-active\" aria-current=\"page\" title=\"Vous consultez nos r\u00e9alisations en ville\">Ville<\/button>\n                <a href=\"https:\/\/www.norki.com\/fr\/sur-mesure\/realisations-projets-decoration-interieur-luxe\/hotel\/\" class=\"norki-portfolio__filter-btn\" title=\"Voir nos r\u00e9alisations h\u00f4teli\u00e8res\">H\u00f4tel<\/a>\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    <!-- 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 puiser dedans) -->\n    <div class=\"norki-portfolio__source\" id=\"norki-items-source\">\n        \n        <!-- 1 : Appartement Parisien -->\n        <a href=\"#\" class=\"norki-portfolio__item is-coming-soon\">\n            <div class=\"norki-portfolio__img-wrapper\">\n                <img data-src=\"https:\/\/norki.com\/sur-mesure\/wp-content\/uploads\/2026\/05\/tapis-roots-claude-cartier-appartement-parisien.jpg\" alt=\"Appartement parisien\" class=\"norki-portfolio__img\">\n            <\/div>\n            <p class=\"norki-portfolio__caption avenirmedium-font\">Tapis sur-mesure en peau lain\u00e9e \u2013 <span>Appartement parisien<\/span><\/p>\n        <\/a>\n\n        <!-- 2 : Appartement Priv\u00e9 Paris (Titre mis \u00e0 jour) -->\n        <a href=\"#\" class=\"norki-portfolio__item is-coming-soon\">\n            <div class=\"norki-portfolio__img-wrapper\">\n                <img data-src=\"https:\/\/norki.com\/sur-mesure\/wp-content\/uploads\/2026\/05\/tailor-made-wall-to-wall-shearling-carpet-2.jpeg\" alt=\"Appartement Priv\u00e9 Paris\" class=\"norki-portfolio__img\">\n            <\/div>\n            <p class=\"norki-portfolio__caption avenirmedium-font\">Tapis mur \u00e0 mur sur mesure \u2013 <span>Appartement Priv\u00e9 Paris<\/span><\/p>\n        <\/a>\n\n        <!-- 3 : Appartement Priv\u00e9 Bruxelles (Titre mis \u00e0 jour) -->\n        <a href=\"#\" class=\"norki-portfolio__item is-coming-soon\">\n            <div class=\"norki-portfolio__img-wrapper\">\n                <img data-src=\"https:\/\/norki.com\/sur-mesure\/wp-content\/uploads\/2026\/05\/Tapis-Milan-sur-meusre-Projet-prive-Brussels.jpg\" alt=\"Appartement Priv\u00e9 Bruxelles\" class=\"norki-portfolio__img\">\n            <\/div>\n            <p class=\"norki-portfolio__caption avenirmedium-font\">Grand tapis en peau de vache sur mesure \u2013 <span>Appartement Priv\u00e9 Bruxelles<\/span><\/p>\n        <\/a>\n\n        <!-- 4 : H\u00f4tel particulier parisien -->\n        <a href=\"#\" class=\"norki-portfolio__item is-coming-soon\">\n            <div class=\"norki-portfolio__img-wrapper\">\n                <img data-src=\"https:\/\/www.norki.com\/sur-mesure\/wp-content\/uploads\/2026\/06\/Marble-and-shearling-armchairs_Norki_v2.png\" alt=\"H\u00f4tel particulier parisien\" class=\"norki-portfolio__img\">\n            <\/div>\n            <p class=\"norki-portfolio__caption avenirmedium-font\">R\u00e9sidence historique haussmannienne \u2013 <span>H\u00f4tel particulier parisien<\/span><\/p>\n        <\/a>\n\n        <!-- 5 : Appartement Priv\u00e9 Paris - Plaid (Titre mis \u00e0 jour) -->\n        <a href=\"#\" class=\"norki-portfolio__item is-coming-soon\">\n            <div class=\"norki-portfolio__img-wrapper\">\n                <img data-src=\"https:\/\/norki.com\/sur-mesure\/wp-content\/uploads\/2026\/05\/plaid-en-renard-vert-sur-mesure.jpg\" alt=\"Appartement Priv\u00e9 Paris\" class=\"norki-portfolio__img\">\n            <\/div>\n            <p class=\"norki-portfolio__caption avenirmedium-font\">Plaid Verbier sur mesure \u2013 <span>Appartement Priv\u00e9 Paris<\/span><\/p>\n        <\/a>\n\n        <!-- 6 : Appartement Priv\u00e9 Paris - Renard (Titre mis \u00e0 jour) -->\n        <a href=\"#\" class=\"norki-portfolio__item is-coming-soon\">\n            <div class=\"norki-portfolio__img-wrapper\">\n                <img data-src=\"https:\/\/norki.com\/sur-mesure\/wp-content\/uploads\/2026\/05\/bespoke-coyote-rug-paris-appartment.jpg\" alt=\"Appartement Priv\u00e9 Paris\" class=\"norki-portfolio__img\">\n            <\/div>\n            <p class=\"norki-portfolio__caption avenirmedium-font\">Tapis en renard gris sur mesure \u2013 <span>Appartement Priv\u00e9 Paris<\/span><\/p>\n        <\/a>\n\n        <!-- 7 : H\u00f4tel Particulier Paris -->\n        <a href=\"#\" class=\"norki-portfolio__item is-coming-soon\">\n            <div class=\"norki-portfolio__img-wrapper\">\n                <img data-src=\"https:\/\/www.norki.com\/sur-mesure\/wp-content\/uploads\/2026\/06\/banc-pierre-jeanneret-sur-mesure-v2.png\" alt=\"H\u00f4tel Particulier Paris\" class=\"norki-portfolio__img\">\n            <\/div>\n            <p class=\"norki-portfolio__caption avenirmedium-font\">Coussin en Poulain sur-mesure \u2013 <span>H\u00f4tel Particulier Paris<\/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, 150);\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 sourceItems = Array.from(document.querySelectorAll('#norki-items-source .norki-portfolio__item'));\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    \n    let currentIndex = 0;\n    const itemsPerLoad = 4; \/\/ Nombre d'images \u00e0 charger par clic\n\n    \/\/ Emp\u00eacher le clic et le saut de page sur les liens coming-soon\n    document.addEventListener('click', (e) => {\n        const comingSoonLink = e.target.closest('.is-coming-soon');\n        if (comingSoonLink) {\n            e.preventDefault();\n        }\n    });\n\n    \/\/ Marges dynamiques augment\u00e9es pour donner plus d'air (Esth\u00e9tique Norki Couture)\n    function getDynamicMargin(ratio) {\n        if (window.innerWidth <= 768) return 60; \/\/ Marge fixe sur mobile pour la lisibilit\u00e9\n        \n        if (ratio <= 0.8) {\n            return 180; \/\/ Portrait (Haute) \n        } else if (ratio >= 1.2) {\n            return 110;  \/\/ Paysage (Large)\n        } else {\n            return 140;  \/\/ Format carr\u00e9 ou interm\u00e9diaire \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; \/\/ S\u00e9curit\u00e9 si division par 0\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 fluide et gracieuse\n                requestAnimationFrame(() => {\n                    setTimeout(() => item.classList.add('is-visible'), 50);\n                });\n                \n                resolve();\n            };\n\n            \/\/ Pr\u00e9chargement fant\u00f4me pour r\u00e9cup\u00e9rer la taille exacte\n            const preloadImg = new Image();\n            preloadImg.onload = () => {\n                img.src = src;\n                img.removeAttribute('data-src');\n                placeItemInDOM();\n            };\n            preloadImg.onerror = () => {\n                img.src = src;\n                placeItemInDOM();\n            };\n            preloadImg.src = src;\n        });\n    };\n\n    \/\/ Fonction de chargement group\u00e9\n    const loadItems = async () => {\n        if (!loadMoreBtn || !loadMoreText) return;\n        \n        loadMoreBtn.classList.add('is-loading');\n        loadMoreText.textContent = \"Chargement en cours...\";\n\n        const endIndex = Math.min(currentIndex + itemsPerLoad, sourceItems.length);\n        \n        \/\/ Charge et place les images l'une apr\u00e8s l'autre pour garantir l'ordre chronologique\n        for (let i = currentIndex; i < endIndex; i++) {\n            await processNextItem(sourceItems[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 dans la div source\n        if (currentIndex >= sourceItems.length) {\n            loadMoreBtn.style.display = 'none';\n        }\n    };\n\n    \/\/ 1er Chargement (Initialisation)\n    loadItems();\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       SECTION CTA ARCHITECTE (Centr\u00e9e)\n       ========================================================================== *\/\n\n    .norki-cta-archi {\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    }\n\n    .norki-cta-archi__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-archi__title {\n        margin: 0;\n        line-height: 1.25;\n        letter-spacing: -0.01em;\n    }\n\n    .norki-cta-archi__title-sans {\n        display: block;\n        font-size: clamp(1.4rem, 2.2vw, 30px);\n        font-weight: 500;\n        margin-bottom: 5px;\n    }\n\n    .norki-cta-archi__title-serif {\n        display: block;\n        font-size: clamp(1.6rem, 2.5vw, 34px);\n        font-weight: 400;\n    }\n\n    \/* --- Paragraphe --- *\/\n    .norki-cta-archi__text {\n        font-size: 0.95rem;\n        line-height: 1.5;\n        margin: 0;\n    }\n\n    \/* --- Liens int\u00e9gr\u00e9s (Design System) --- *\/\n    .norki-cta-archi__inline-link {\n        color: inherit;\n        text-decoration: underline;\n        text-decoration-color: currentColor;\n        text-underline-offset: 3px;\n        text-decoration-thickness: 1px;\n        transition: text-decoration-color 0.3s ease, opacity 0.3s ease;\n    }\n\n    .norki-cta-archi__inline-link:hover {\n        text-decoration-color: transparent;\n        opacity: 0.7;\n    }\n\n    \/* --- Bouton Secondaire --- *\/\n    .norki-cta-archi__btn {\n        display: inline-flex;\n        justify-content: center;\n        align-items: center;\n        padding: 4px 35px;\n        text-decoration: none;\n        font-size: 0.9rem;\n        font-weight: 500;\n        color: black;\n        background-color: transparent;\n        border: 1px solid black;\n        transition: all 0.3s ease;\n        margin-top: 10px; \/* L\u00e9ger espacement suppl\u00e9mentaire avec le texte *\/\n    }\n\n    .norki-cta-archi__btn:hover {\n        background-color: black;\n        color: white;\n    }\n\n    \/* --- Responsive --- *\/\n    @media (max-width: 1024px) {\n        .norki-cta-archi {\n            padding: var(--section-pad-v-tab, 60px) var(--section-pad-h-tab, 4vw);\n        }\n        \n        .norki-cta-archi__wrapper {\n            gap: 25px;\n        }\n    }\n\n    @media (max-width: 768px) {\n        .norki-cta-archi {\n            padding: var(--section-pad-v-mob, 50px) var(--section-pad-h-mob, 20px);\n        }\n\n        .norki-cta-archi__wrapper {\n            gap: 20px;\n        }\n\n        .norki-cta-archi__title-sans {\n            font-size: 1.3rem;\n        }\n\n        .norki-cta-archi__title-serif {\n            font-size: 1.45rem;\n        }\n    }\n<\/style>\n\n<section class=\"norki-cta-archi\">\n    <div class=\"norki-cta-archi__wrapper\">\n        \n        <!-- Titres -->\n        <h2 class=\"norki-cta-archi__title\">\n            <span class=\"norki-cta-archi__title-sans avenirmedium-font\">Vous \u00eates architecte et vous avez un projet<\/span>\n            <!-- Ajout du white-space: nowrap pour bloquer la c\u00e9sure -->\n            <span class=\"norki-cta-archi__title-serif baskerville-italic-font\">de tapis, plaids, coussins, ou mobilier <span style=\"white-space: nowrap;\" class=\"baskerville-italic-font\">sur-mesure ?<\/span><\/span>\n        <\/h2>\n\n        <!-- Texte d'accompagnement -->\n        <p class=\"norki-cta-archi__text\">\n            Pour <a href=\"https:\/\/www.norki.com\/fr\/sur-mesure\/contactez-nous\/\" class=\"norki-cta-archi__inline-link\" title=\"Nous contacter pour recevoir un devis personnalis\u00e9\">recevoir un devis personnalis\u00e9<\/a> sur la confection de <a href=\"https:\/\/www.norki.com\/fr\/sur-mesure\/decoration-interieur-haut-de-gamme\/\" class=\"norki-cta-archi__inline-link\" title=\"D\u00e9couvrir nos cr\u00e9ations sur-mesure d'ameublement\">pi\u00e8ces sur\u2011mesure<\/a> ou obtenir plus d&rsquo;informations sur nos services de <a href=\"https:\/\/www.norki.com\/fr\/sur-mesure\/pose-installation-tapisserie-ameublement-luxe\/\" class=\"norki-cta-archi__inline-link\" title=\"En savoir plus sur nos services de pose et d'installation\">pose et installation<\/a>, nos <a href=\"https:\/\/www.norki.com\/fr\/sur-mesure\/bureau-etudes-conception-mobilier-tapis\/\" class=\"norki-cta-archi__inline-link\" title=\"D\u00e9couvrir notre bureau d'\u00e9tudes int\u00e9gr\u00e9\">\u00e9quipes sp\u00e9cialis\u00e9es<\/a> 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-archi__btn\" target=\"_blank\" rel=\"noopener\" title=\"Contactez notre service commercial sur WhatsApp\">Whatsapp us<\/a>\n        \n    <\/div>\n<\/section>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tapis mur \u00e0 mur sur mesure Appartement Priv\u00e9 Paris Tapis en renard gris sur mesure Appartement Priv\u00e9 Paris R\u00e9sidence historique haussmannienne H\u00f4tel particulier parisien D\u00e9couvrir Le savoir-faire Norki au c\u0153ur des capitales mondiales L\u2019\u00c9l\u00e9gance Urbaine De la cr\u00e9ation de vastes tapis monochromes noirs \u00e0 la restauration m\u00e9ticuleuse de mobilier vintage du milieu du XX\u00e8me si\u00e8cle, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":2251,"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('\/sur-mesure\/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('\/sur-mesure\/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('\/sur-mesure\/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('\/sur-mesure\/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('\/sur-mesure\/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('\/sur-mesure\/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":""},"categories":[],"tags":[],"class_list":["post-2449","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Projets Urbains | R\u00e9alisations Int\u00e9rieures | Maison NORKI<\/title>\n<meta name=\"description\" content=\"D\u00e9couvrez les r\u00e9alisations Norki en milieu urbain : tapis, mobilier et tapisserie sur-mesure pour appartements et r\u00e9sidences de ville d\u2019exception.\" \/>\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\/sur-mesure\/realisations-projets-decoration-interieur-luxe\/ville\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Projets Urbains | R\u00e9alisations Int\u00e9rieures | Maison NORKI\" \/>\n<meta property=\"og:description\" content=\"D\u00e9couvrez les r\u00e9alisations Norki en milieu urbain : tapis, mobilier et tapisserie sur-mesure pour appartements et r\u00e9sidences de ville d\u2019exception.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.norki.com\/fr\/sur-mesure\/realisations-projets-decoration-interieur-luxe\/ville\/\" \/>\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:48:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/norki.com\/sur-mesure\/wp-content\/uploads\/2026\/05\/tailor-made-wall-to-wall-shearling-carpet-2.jpeg\" \/>\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=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.norki.com\\\/fr\\\/sur-mesure\\\/realisations-projets-decoration-interieur-luxe\\\/ville\\\/\",\"url\":\"https:\\\/\\\/www.norki.com\\\/fr\\\/sur-mesure\\\/realisations-projets-decoration-interieur-luxe\\\/ville\\\/\",\"name\":\"Projets Urbains | R\u00e9alisations Int\u00e9rieures | Maison NORKI\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.norki.com\\\/sur-mesure\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.norki.com\\\/fr\\\/sur-mesure\\\/realisations-projets-decoration-interieur-luxe\\\/ville\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.norki.com\\\/fr\\\/sur-mesure\\\/realisations-projets-decoration-interieur-luxe\\\/ville\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/norki.com\\\/sur-mesure\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/tailor-made-wall-to-wall-shearling-carpet-2.jpeg\",\"datePublished\":\"2026-05-13T11:04:42+00:00\",\"dateModified\":\"2026-07-16T10:48:47+00:00\",\"description\":\"D\u00e9couvrez les r\u00e9alisations Norki en milieu urbain : tapis, mobilier et tapisserie sur-mesure pour appartements et r\u00e9sidences de ville d\u2019exception.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.norki.com\\\/fr\\\/sur-mesure\\\/realisations-projets-decoration-interieur-luxe\\\/ville\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.norki.com\\\/fr\\\/sur-mesure\\\/realisations-projets-decoration-interieur-luxe\\\/ville\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.norki.com\\\/fr\\\/sur-mesure\\\/realisations-projets-decoration-interieur-luxe\\\/ville\\\/#primaryimage\",\"url\":\"https:\\\/\\\/norki.com\\\/sur-mesure\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/tailor-made-wall-to-wall-shearling-carpet-2.jpeg\",\"contentUrl\":\"https:\\\/\\\/norki.com\\\/sur-mesure\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/tailor-made-wall-to-wall-shearling-carpet-2.jpeg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.norki.com\\\/fr\\\/sur-mesure\\\/realisations-projets-decoration-interieur-luxe\\\/ville\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.norki.com\\\/fr\\\/sur-mesure\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Nos r\u00e9alisations\",\"item\":\"https:\\\/\\\/www.norki.com\\\/fr\\\/sur-mesure\\\/realisations-projets-decoration-interieur-luxe\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Ville\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.norki.com\\\/sur-mesure\\\/#website\",\"url\":\"https:\\\/\\\/www.norki.com\\\/sur-mesure\\\/\",\"name\":\"Norki\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.norki.com\\\/sur-mesure\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Projets Urbains | R\u00e9alisations Int\u00e9rieures | Maison NORKI","description":"D\u00e9couvrez les r\u00e9alisations Norki en milieu urbain : tapis, mobilier et tapisserie sur-mesure pour appartements et r\u00e9sidences de ville d\u2019exception.","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\/sur-mesure\/realisations-projets-decoration-interieur-luxe\/ville\/","og_locale":"fr_FR","og_type":"article","og_title":"Projets Urbains | R\u00e9alisations Int\u00e9rieures | Maison NORKI","og_description":"D\u00e9couvrez les r\u00e9alisations Norki en milieu urbain : tapis, mobilier et tapisserie sur-mesure pour appartements et r\u00e9sidences de ville d\u2019exception.","og_url":"https:\/\/www.norki.com\/fr\/sur-mesure\/realisations-projets-decoration-interieur-luxe\/ville\/","og_site_name":"Norki","article_publisher":"https:\/\/facebook.com\/NorkiDecoration","article_modified_time":"2026-07-16T10:48:47+00:00","og_image":[{"url":"https:\/\/norki.com\/sur-mesure\/wp-content\/uploads\/2026\/05\/tailor-made-wall-to-wall-shearling-carpet-2.jpeg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.norki.com\/fr\/sur-mesure\/realisations-projets-decoration-interieur-luxe\/ville\/","url":"https:\/\/www.norki.com\/fr\/sur-mesure\/realisations-projets-decoration-interieur-luxe\/ville\/","name":"Projets Urbains | R\u00e9alisations Int\u00e9rieures | Maison NORKI","isPartOf":{"@id":"https:\/\/www.norki.com\/sur-mesure\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.norki.com\/fr\/sur-mesure\/realisations-projets-decoration-interieur-luxe\/ville\/#primaryimage"},"image":{"@id":"https:\/\/www.norki.com\/fr\/sur-mesure\/realisations-projets-decoration-interieur-luxe\/ville\/#primaryimage"},"thumbnailUrl":"https:\/\/norki.com\/sur-mesure\/wp-content\/uploads\/2026\/05\/tailor-made-wall-to-wall-shearling-carpet-2.jpeg","datePublished":"2026-05-13T11:04:42+00:00","dateModified":"2026-07-16T10:48:47+00:00","description":"D\u00e9couvrez les r\u00e9alisations Norki en milieu urbain : tapis, mobilier et tapisserie sur-mesure pour appartements et r\u00e9sidences de ville d\u2019exception.","breadcrumb":{"@id":"https:\/\/www.norki.com\/fr\/sur-mesure\/realisations-projets-decoration-interieur-luxe\/ville\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.norki.com\/fr\/sur-mesure\/realisations-projets-decoration-interieur-luxe\/ville\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.norki.com\/fr\/sur-mesure\/realisations-projets-decoration-interieur-luxe\/ville\/#primaryimage","url":"https:\/\/norki.com\/sur-mesure\/wp-content\/uploads\/2026\/05\/tailor-made-wall-to-wall-shearling-carpet-2.jpeg","contentUrl":"https:\/\/norki.com\/sur-mesure\/wp-content\/uploads\/2026\/05\/tailor-made-wall-to-wall-shearling-carpet-2.jpeg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.norki.com\/fr\/sur-mesure\/realisations-projets-decoration-interieur-luxe\/ville\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.norki.com\/fr\/sur-mesure\/"},{"@type":"ListItem","position":2,"name":"Nos r\u00e9alisations","item":"https:\/\/www.norki.com\/fr\/sur-mesure\/realisations-projets-decoration-interieur-luxe\/"},{"@type":"ListItem","position":3,"name":"Ville"}]},{"@type":"WebSite","@id":"https:\/\/www.norki.com\/sur-mesure\/#website","url":"https:\/\/www.norki.com\/sur-mesure\/","name":"Norki","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.norki.com\/sur-mesure\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"}]}},"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\/sur-mesure\/author\/webmaster\/"},"uagb_comment_info":0,"uagb_excerpt":"Tapis mur \u00e0 mur sur mesure Appartement Priv\u00e9 Paris Tapis en renard gris sur mesure Appartement Priv\u00e9 Paris R\u00e9sidence historique haussmannienne H\u00f4tel particulier parisien D\u00e9couvrir Le savoir-faire Norki au c\u0153ur des capitales mondiales L\u2019\u00c9l\u00e9gance Urbaine De la cr\u00e9ation de vastes tapis monochromes noirs \u00e0 la restauration m\u00e9ticuleuse de mobilier vintage du milieu du XX\u00e8me si\u00e8cle,\u2026","_links":{"self":[{"href":"https:\/\/www.norki.com\/sur-mesure\/wp-json\/wp\/v2\/pages\/2449","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.norki.com\/sur-mesure\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.norki.com\/sur-mesure\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.norki.com\/sur-mesure\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.norki.com\/sur-mesure\/wp-json\/wp\/v2\/comments?post=2449"}],"version-history":[{"count":37,"href":"https:\/\/www.norki.com\/sur-mesure\/wp-json\/wp\/v2\/pages\/2449\/revisions"}],"predecessor-version":[{"id":4938,"href":"https:\/\/www.norki.com\/sur-mesure\/wp-json\/wp\/v2\/pages\/2449\/revisions\/4938"}],"up":[{"embeddable":true,"href":"https:\/\/www.norki.com\/sur-mesure\/wp-json\/wp\/v2\/pages\/2251"}],"wp:attachment":[{"href":"https:\/\/www.norki.com\/sur-mesure\/wp-json\/wp\/v2\/media?parent=2449"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.norki.com\/sur-mesure\/wp-json\/wp\/v2\/categories?post=2449"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.norki.com\/sur-mesure\/wp-json\/wp\/v2\/tags?post=2449"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}