{"id":4285,"date":"2026-06-08T12:36:56","date_gmt":"2026-06-08T10:36:56","guid":{"rendered":"https:\/\/www.norki.com\/sur-mesure\/?page_id=4285"},"modified":"2026-07-16T12:49:53","modified_gmt":"2026-07-16T10:49:53","slug":"urban-projects","status":"publish","type":"page","link":"https:\/\/www.norki.com\/en\/custom-made-upholstery\/interior-design-projects-bespoke-craftsmanship\/urban-projects\/","title":{"rendered":"Urban"},"content":{"rendered":"\n<style>\n    \/* ==========================================================================\n       HERO SLIDER 16\/9 (Auto-slide to the right + Touch Swipe)\n       ========================================================================== *\/\n\n    .norki-hero-slider {\n        position: relative;\n        width: 100%;\n        aspect-ratio: 16 \/ 9; \/* Forces 16:9 ratio across all screen sizes *\/\n        overflow: hidden;\n        background-color: black;\n        max-height: 100dvh;\n    }\n\n    \/* --- 1. Slide Container --- *\/\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%); \/* Starts from the far right *\/\n        transition: transform 1s cubic-bezier(0.65, 0, 0.35, 1), opacity 1s ease;\n        z-index: 1;\n    }\n\n    \/* Active Slide *\/\n    .norki-hs__slide.is-active {\n        opacity: 1;\n        transform: translateX(0);\n        z-index: 2;\n    }\n\n    \/* Outgoing Slide (exits to the left) *\/\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    \/* Bottom darkening gradient for text legibility *\/\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. Texts (Within each slide) --- *\/\n    .norki-hs__text-container {\n        position: absolute;\n        bottom: var(--section-pad-h-dt, 5vw); \/* Aligned with lateral global padding *\/\n        left: var(--section-pad-h-dt, 5vw);\n        z-index: 4;\n        color: #ffffff;\n    }\n\n    .norki-hs__title {\n        display: block; \/* Maintains block behavior for the 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. Global UI Interface (Positioned over the 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; \/* Aligns flow content (button) to the right *\/\n        align-items: flex-end;\n        z-index: 10;\n        pointer-events: none; \/* Allows clicks to pass through to the slider if needed *\/\n    }\n\n    \/* Discover Button (Bottom right) *\/\n    .norki-hs__discover-btn {\n        pointer-events: auto; \/* Re-enables clicking *\/\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    \/* Elegant underline animation *\/\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    \/* Utility class to hide the button during transitions *\/\n    .norki-hs__discover-btn.is-hidden {\n        opacity: 0;\n        pointer-events: none;\n    }\n\n    \/* Disabled state (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); \/* Disables hover animation *\/\n    }\n\n    \/* Pagination Dots (Centered) *\/\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 (16\/9 ratio adaptation on smaller screens) --- *\/\n    @media (max-width: 768px) {\n        \/* Percentages are used to adapt to the lower height of the 16\/9 layout on 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=\"Norki urban realizations hero slider\">\n    \n    <div class=\"norki-hs__track\">\n        \n        <!-- SLIDE 1: Private Apartment Paris (Shearling - Active with Tala Fustok Link) -->\n        <div class=\"norki-hs__slide is-active\" data-link=\"https:\/\/www.norki.com\/en\/custom-made-upholstery\/interior-design-projects-bespoke-craftsmanship\/urban-projects\/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=\"Private apartment in Paris with tailor-made wall-to-wall shearling carpet by Norki\" 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\">Bespoke Wall-to-Wall Carpets<\/span>\n                <span class=\"norki-hs__subtitle baskerville-italic-font\">Private Apartment, Paris<\/span>\n            <\/div>\n        <\/div>\n\n        <!-- SLIDE 2: Private Apartment Paris (Coyote) -->\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=\"Parisian private apartment featuring a bespoke coyote fur rug by Norki\" 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\">Bespoke Grey Fox Rugs<\/span>\n                <span class=\"norki-hs__subtitle baskerville-italic-font\">Private Apartment, Paris<\/span>\n            <\/div>\n        <\/div>\n\n        <!-- SLIDE 3: Historic Haussmann Residence -->\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=\"Bespoke marble and shearling armchairs in a Parisian private mansion by Norki\" 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\">Historic Haussmann Residence<\/span>\n                <span class=\"norki-hs__subtitle baskerville-italic-font\">Parisian Private Mansion<\/span>\n            <\/div>\n        <\/div>\n\n    <\/div>\n\n    <!-- Global UI (Pagination & Discover Button) -->\n    <div class=\"norki-hs__ui\">\n        \n        <!-- Pagination -->\n        <div class=\"norki-hs__pagination\" aria-label=\"Slide navigation\">\n            <button class=\"norki-hs__dot is-active\" aria-label=\"Go to slide 1\"><\/button>\n            <button class=\"norki-hs__dot\" aria-label=\"Go to slide 2\"><\/button>\n            <button class=\"norki-hs__dot\" aria-label=\"Go to slide 3\"><\/button>\n        <\/div>\n\n        <!-- Discover Button (Initialized active for Slide 1) -->\n        <a href=\"https:\/\/www.norki.com\/en\/custom-made-upholstery\/interior-design-projects-bespoke-craftsmanship\/urban-projects\/tala-fustok-paris\/\" class=\"norki-hs__discover-btn avenirmedium-font\">Discover<\/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 seconds per slide\n\n        \/\/ Prevent click if button is disabled\n        discoverBtn.addEventListener('click', (e) => {\n            if (discoverBtn.classList.contains('is-disabled') || discoverBtn.getAttribute('href') === '#') {\n                e.preventDefault();\n            }\n        });\n\n        \/\/ 1. Transition logic\n        const goToSlide = (nextIndex) => {\n            if (nextIndex === currentIndex) return;\n\n            const currentSlide = slides[currentIndex];\n            const nextSlide = slides[nextIndex];\n\n            \/\/ A. Hide the Discover button\n            discoverBtn.classList.add('is-hidden');\n\n            \/\/ B. Animate slide transitions\n            currentSlide.classList.remove('is-active');\n            currentSlide.classList.add('is-leaving');\n            \n            \/\/ Ensure next slide has the active class to enter\n            nextSlide.classList.add('is-active');\n\n            \/\/ C. Update pagination dots\n            dots[currentIndex].classList.remove('is-active');\n            dots[nextIndex].classList.add('is-active');\n\n            \/\/ D. Clean up old slide and show button\n            setTimeout(() => {\n                \/\/ Remove outgoing slide from viewport\n                currentSlide.classList.remove('is-leaving');\n                \n                \/\/ Disable transitions temporarily to reset slide positions silently on the right\n                currentSlide.style.transition = 'none';\n                void currentSlide.offsetWidth; \/\/ Force browser reflow\n                currentSlide.style.transition = ''; \/\/ Restore transitions for the next turn\n                \n                \/\/ Handle Button state (Active vs Coming soon)\n                const status = nextSlide.dataset.status;\n                if (status === 'coming-soon') {\n                    discoverBtn.classList.add('is-disabled');\n                    discoverBtn.textContent = 'Coming Soon';\n                    discoverBtn.href = '#';\n                } else {\n                    discoverBtn.classList.remove('is-disabled');\n                    discoverBtn.textContent = 'Discover';\n                    discoverBtn.href = nextSlide.dataset.link || '#';\n                }\n\n                \/\/ Reveal the button\n                discoverBtn.classList.remove('is-hidden');\n            }, 1000); \/\/ 1s = duration of the CSS transition\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. Initialize Autoplay\n        const startSlider = () => {\n            slideInterval = setInterval(nextSlide, intervalTime);\n        };\n\n        const resetSlider = () => {\n            clearInterval(slideInterval);\n            startSlider();\n        };\n\n        \/\/ Make dots clickable\n        dots.forEach((dot, index) => {\n            dot.addEventListener('click', () => {\n                goToSlide(index);\n                resetSlider(); \/\/ Reset timer\n            });\n        });\n\n        \/\/ 3. Touch Swipe Handling for Mobile & Tablet\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 Left -> Next Slide\n                nextSlide();\n                resetSlider();\n            }\n            if (touchEndX > touchStartX + swipeThreshold) {\n                \/\/ Swipe Right -> Previous Slide\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            Norki in the Heart of Global Capitals\n        <\/h1>\n\n        <!-- Titre de section (H2) -->\n        <h2 class=\"norki-urban__title avenirmedium-font\">\n            Urban Elegance\n        <\/h2>\n\n        <!-- Paragraphe principal visible avec int\u00e9gration des liens s\u00e9mantiques -->\n        <p class=\"norki-urban__text\">\n            From the creation of expansive \n            <a href=\"https:\/\/www.norki.com\/en\/custom-made-upholstery\/bespoke-fur-leather-rugs\/\" class=\"norki-urban__inline-link\" title=\"Discover our custom-made rug craftsmanship\">monochrome black rugs<\/a> \n            to the \n            <a href=\"https:\/\/www.norki.com\/en\/custom-made-upholstery\/bespoke-upholstery-services\/\" class=\"norki-urban__inline-link\" title=\"Discover our bespoke upholstery artistry\">meticulous restoration of mid-century vintage furniture<\/a>, our Ateliers deploy rare expertise to elevate the most prestigious urban interiors.\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                    Whether restoring or reinterpreting iconic pieces by Pierre Jeanneret or Jean Roy\u00e8re, our Maison is committed to absolute execution. Our close relationships with renowned architects and international gallery owners allow our Workshops to transcend traditional savoir-faire, meeting the most uncompromising aesthetic and technical standards.\n                <\/p>\n                <p class=\"norki-urban__text\">\n                    From New York to London, Dubai to Paris, and Brussels to Milan, our creations grace the world&rsquo;s major capitals, showcasing the pinnacle of French lifestyle and exceptional manufacturing.\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\">Learn more<\/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 = 'Learn less';\n                } else {\n                    btn.textContent = 'Learn more';\n                }\n            });\n        }\n    });\n<\/script>\n\n\n\n<style>\n    \/* ==========================================================================\n       FONTS & VARIABLES (Norki Luxury Design System)\n       ========================================================================== *\/\n    @import url('https:\/\/fonts.googleapis.com\/css2?family=Montserrat:ital,wght@0,300;0,400;0,500;0,600;1,400&display=swap');\n\n    :root {\n        --color-norki-beige: #f8f0ea;\n        --color-norki-dark: #1a1a1a;\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    \/* Systemic cursive backup font if LibreBaskerville isn't loaded globally *\/\n    @font-face {\n        font-family: 'LibreBaskervilleItalic';\n        src: local('Georgia Italic'), local('Baskerville-Italic');\n        font-style: italic;\n    }\n\n    \/* ==========================================================================\n       SECTION PORTFOLIO (Filters + 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. Filter Menu Navigation (Container & Scroll bleed) --- *\/\n    .norki-portfolio__filters-container {\n        position: relative;\n        \/* Bleeds out section horizontal padding for seamless touch scroll *\/\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; \/* Hide scrollbar Firefox *\/\n        scroll-behavior: smooth;\n        \/* Restores internal alignment margin *\/\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; \/* Hide scrollbar Chrome\/Safari\/Edge *\/\n    }\n\n    .norki-portfolio__filters {\n        display: flex;\n        gap: 40px;\n        align-items: center;\n        min-width: max-content;\n    }\n\n    \/* Ensuring trailing spacer at the very end of scroll *\/\n    .norki-portfolio__filters::after {\n        content: '';\n        padding-right: var(--section-pad-h-dt, 5vw);\n    }\n\n    \/* --- Interactive Filter Buttons --- *\/\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    \/* Hover style on INACTIVE filters *\/\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    \/* ACTIVE style (Underlined by default) *\/\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    \/* Removes underline of the active button when parent menu is hovered *\/\n    .norki-portfolio__filters:hover .norki-portfolio__filter-btn.is-active {\n        text-decoration-color: transparent;\n    }\n\n    \/* Overwrites underline if active button is specifically focused\/hovered *\/\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    \/* --- Navigation Carousel Arrows --- *\/\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. Asymmetric Masonry Grid Layout --- *\/\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    \/* Asymmetric Couture alignment of the right column *\/\n    .norki-portfolio__column--right {\n        padding-top: 140px; \n    }\n\n    \/* --- Individual Cards \/ Items --- *\/\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    \/* Zoom scale inactive for Coming Soon placeholders *\/\n    .norki-portfolio__item:not(.is-coming-soon):hover .norki-portfolio__img {\n        transform: scale(1.03); \n    }\n\n    \/* --- Coming Soon Custom Tooltip --- *\/\n    .is-coming-soon {\n        position: relative;\n        cursor: not-allowed;\n    }\n\n    .is-coming-soon::after {\n        content: \"Page under construction\";\n        position: absolute;\n        bottom: -45px;\n        left: 50%;\n        transform: translateX(-50%) translateY(10px);\n        background: #1f2937; \/* Dark elegant gray *\/\n        color: #ffffff;\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    \/* --- Typography Captions --- *\/\n    .norki-portfolio__caption {\n        margin: 16px 0 0 0;\n        font-family: \"AvenirMedium\", sans-serif !important;\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. Action Area (Load More Realizations) --- *\/\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    \/* Hide base markup data source container used by the runtime renderer *\/\n    .norki-portfolio__source {\n        display: none;\n    }\n\n    \/* ==========================================================================\n       4. MOBILE & TABLET RESPONSIVE QUERIES\n       ========================================================================== *\/\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        \/* Adapts horizontal padding constraints for bleed touch scroll *\/\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        \/* Fallback to single linear column on phone screens *\/\n        .norki-portfolio__masonry {\n            display: block; \n        }\n\n        .norki-portfolio__column--right {\n            display: none; \n        }\n\n        \/* Standardize item spacing for small devices *\/\n        .norki-portfolio__item {\n            margin-bottom: 60px !important; \n        }\n    }\n<\/style>\n\n<section class=\"norki-portfolio\">\n    \n    <!-- Navigation Carousel Filters -->\n    <div class=\"norki-portfolio__filters-container\">\n        <!-- Scroll Left -->\n        <button class=\"norki-filter-arrow norki-filter-arrow--left\" aria-label=\"Scroll left\">\n            <svg viewBox=\"0 0 24 24\"><path d=\"M15 18l-6-6 6-6\"><\/path><\/svg>\n        <\/button>\n\n        <!-- Carousel Track -->\n        <div class=\"norki-portfolio__filters-wrapper\" id=\"norki-filters-wrapper\">\n            <div class=\"norki-portfolio__filters\">\n                <a href=\"https:\/\/www.norki.com\/en\/custom-made-upholstery\/interior-design-projects-bespoke-craftsmanship\/\" class=\"norki-portfolio__filter-btn\" title=\"View all our realizations\">All Realizations<\/a>\n                <a href=\"https:\/\/www.norki.com\/en\/custom-made-upholstery\/interior-design-projects-bespoke-craftsmanship\/mountain-projects\/\" class=\"norki-portfolio__filter-btn\" title=\"View our mountain projects\">Mountain<\/a>\n                <a href=\"https:\/\/www.norki.com\/en\/custom-made-upholstery\/interior-design-projects-bespoke-craftsmanship\/seaside-projects\/\" class=\"norki-portfolio__filter-btn\" title=\"View our beachfront projects\">Beachfront<\/a>\n                <button class=\"norki-portfolio__filter-btn is-active\" aria-current=\"page\" title=\"Viewing our urban realizations\">Urban<\/button>\n                <a href=\"https:\/\/www.norki.com\/en\/custom-made-upholstery\/interior-design-projects-bespoke-craftsmanship\/hotel-projects\/\" class=\"norki-portfolio__filter-btn\" title=\"View our hotel projects\">Hotel<\/a>\n            <\/div>\n        <\/div>\n\n        <!-- Scroll Right -->\n        <button class=\"norki-filter-arrow norki-filter-arrow--right\" aria-label=\"Scroll right\">\n            <svg viewBox=\"0 0 24 24\"><path d=\"M9 18l6-6-6-6\"><\/path><\/svg>\n        <\/button>\n    <\/div>\n\n    <!-- Grid Destination Columns -->\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    <!-- Load More Actions CTA -->\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\">Load more realizations<\/span>\n        <\/button>\n    <\/div>\n\n    <!-- RAW DATA SOURCE LAYOUT (Hidden from DOM render, processed by JS runtime) -->\n    <div class=\"norki-portfolio__source\" id=\"norki-items-source\">\n        \n        <!-- 1 : Parisian apartment -->\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=\"Parisian apartment\" class=\"norki-portfolio__img\">\n            <\/div>\n            <p class=\"norki-portfolio__caption\">Bespoke shearling rug \u2013 <span>Parisian apartment<\/span><\/p>\n        <\/a>\n\n        <!-- 2 : Private Apartment in Paris -->\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=\"Private Apartment in Paris\" class=\"norki-portfolio__img\">\n            <\/div>\n            <p class=\"norki-portfolio__caption\">Bespoke Wall-to-Wall Carpet \u2013 <span>Private Apartment in Paris<\/span><\/p>\n        <\/a>\n\n        <!-- 3 : Private Apartment in Brussels -->\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=\"Private Apartment in Brussels\" class=\"norki-portfolio__img\">\n            <\/div>\n            <p class=\"norki-portfolio__caption\">Large Bespoke Cowhide Rug \u2013 <span>Private Apartment in Brussels<\/span><\/p>\n        <\/a>\n\n        <!-- 4 : Parisian Private Mansion -->\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=\"Parisian private mansion\" class=\"norki-portfolio__img\">\n            <\/div>\n            <p class=\"norki-portfolio__caption\">Historic Haussmann residence \u2013 <span>Parisian private mansion<\/span><\/p>\n        <\/a>\n\n        <!-- 5 : Bespoke Verbier Throw -->\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=\"Private Apartment in Paris\" class=\"norki-portfolio__img\">\n            <\/div>\n            <p class=\"norki-portfolio__caption\">Bespoke Verbier Throw \u2013 <span>Private Apartment in Paris<\/span><\/p>\n        <\/a>\n\n        <!-- 6 : Bespoke Grey Fox Rug -->\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=\"Private Apartment in Paris\" class=\"norki-portfolio__img\">\n            <\/div>\n            <p class=\"norki-portfolio__caption\">Bespoke Grey Fox Rug \u2013 <span>Private Apartment in Paris<\/span><\/p>\n        <\/a>\n\n        <!-- 7 : Bespoke Bench -->\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=\"Parisian Private Mansion\" class=\"norki-portfolio__img\">\n            <\/div>\n            <p class=\"norki-portfolio__caption\">Bespoke Cowhide Cushion \u2013 <span>Private H\u00f4tel in Paris<\/span><\/p>\n        <\/a>\n\n    <\/div>\n\n<\/section>\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n    \n    \/\/ --- 1. CAROUSEL HORIZONTAL ARROWS & GESTURES ---\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        const scrollLeft = Math.ceil(filtersWrapper.scrollLeft);\n        const scrollWidth = filtersWrapper.scrollWidth;\n        const clientWidth = filtersWrapper.clientWidth;\n\n        \/\/ Display\/hide left arrow\n        if (scrollLeft > 5) {\n            arrowLeft.classList.add('is-visible');\n        } else {\n            arrowLeft.classList.remove('is-visible');\n        }\n\n        \/\/ Display\/hide right arrow\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        \/\/ Timeout ensures fonts are initialized before measuring scroll tracks\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. ASYMMETRIC MASONRY RENDERING ENGINE ---\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; \/\/ Batch render count\n\n    \/\/ Safely block default navigation on inactive coming-soon hooks\n    document.addEventListener('click', (e) => {\n        const comingSoonLink = e.target.closest('.is-coming-soon');\n        if (comingSoonLink) {\n            e.preventDefault();\n        }\n    });\n\n    \/\/ Dynamic couture padding based on the raw aspect ratio of the image\n    function getDynamicMargin(ratio) {\n        if (window.innerWidth <= 768) return 60; \/\/ Mobile flat margin for better legibility\n        \n        if (ratio <= 0.8) {\n            return 180; \/\/ Portrait (Higher margins) \n        } else if (ratio >= 1.2) {\n            return 110;  \/\/ Landscape (Lower margins)\n        } else {\n            return 140;  \/\/ Square & Standard formats\n        }\n    }\n\n    \/\/ Asynchronously pre-calculate image dimensions to prevent layout shifts\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                const ratio = img.naturalWidth \/ img.naturalHeight || 1; \n                const margin = getDynamicMargin(ratio);\n                item.style.marginBottom = margin + 'px';\n\n                \/\/ Single column viewport restriction on mobile devices\n                if (window.innerWidth <= 768) {\n                    colLeft.appendChild(item);\n                } else {\n                    \/\/ Balance columns based on current heights on desktop layouts\n                    if (colLeft.offsetHeight <= colRight.offsetHeight) {\n                        colLeft.appendChild(item);\n                    } else {\n                        colRight.appendChild(item);\n                    }\n                }\n\n                \/\/ Smooth luxury reveal animation\n                requestAnimationFrame(() => {\n                    setTimeout(() => item.classList.add('is-visible'), 50);\n                });\n                \n                resolve();\n            };\n\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    \/\/ Lazy load pagination routine\n    const loadItems = async () => {\n        if (!loadMoreBtn || !loadMoreText) return;\n        \n        loadMoreBtn.classList.add('is-loading');\n        loadMoreText.textContent = \"Loading...\";\n\n        const endIndex = Math.min(currentIndex + itemsPerLoad, sourceItems.length);\n        \n        \/\/ Sequentially loads images to guarantee alphabetical\/structural layout sequence\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 = \"Load more realizations\";\n\n        \/\/ Auto-hide the CTA when data sources are fully depleted\n        if (currentIndex >= sourceItems.length) {\n            loadMoreBtn.style.display = 'none';\n        }\n    };\n\n    \/\/ Trigger Initial Load\n    loadItems();\n\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        <!-- Titles -->\n        <h2 class=\"norki-cta-archi__title\">\n            <span class=\"norki-cta-archi__title-sans avenirmedium-font\">Are you an architect with a bespoke project<\/span>\n            <span class=\"norki-cta-archi__title-serif baskerville-italic-font\">for rugs, throws, cushions, or custom <span style=\"white-space: nowrap;\" class=\"baskerville-italic-font\">furniture?<\/span><\/span>\n        <\/h2>\n\n        <!-- Descriptive Text -->\n        <p class=\"norki-cta-archi__text\">\n            To <a href=\"https:\/\/www.norki.com\/en\/custom-made-upholstery\/contact-us\/\" class=\"norki-cta-archi__inline-link\" title=\"Contact us to receive a personalized quote\">receive a personalized quote<\/a> for the creation of <a href=\"https:\/\/www.norki.com\/en\/custom-made-upholstery\/high-end-interior-design\/\" class=\"norki-cta-archi__inline-link\" title=\"Discover our bespoke furniture and soft furnishings\">bespoke pieces<\/a> or to obtain more information about our <a href=\"https:\/\/www.norki.com\/en\/custom-made-upholstery\/luxury-upholstery-installation-services\/\" class=\"norki-cta-archi__inline-link\" title=\"Learn more about our fitting and installation services\">fitting and installation services<\/a>, our <a href=\"https:\/\/www.norki.com\/en\/custom-made-upholstery\/bespoke-interior-design-studio-furniture-rugs\/\" class=\"norki-cta-archi__inline-link\" title=\"Discover our integrated Design Studio\">specialized teams<\/a> will be delighted to assist you.\n        <\/p>\n\n        <!-- Action Button -->\n        <a href=\"https:\/\/api.whatsapp.com\/send?phone=33647923857\" class=\"norki-cta-archi__btn\" target=\"_blank\" rel=\"noopener\" title=\"Contact our sales team on 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>Bespoke Wall-to-Wall Carpets Private Apartment, Paris Bespoke Grey Fox Rugs Private Apartment, Paris Historic Haussmann Residence Parisian Private Mansion Discover Norki in the Heart of Global Capitals Urban Elegance From the creation of expansive monochrome black rugs to the meticulous restoration of mid-century vintage furniture, our Ateliers deploy rare expertise to elevate the most prestigious [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":4277,"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-4285","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>Urban Projects | Interior Creations | Maison NORKI<\/title>\n<meta name=\"description\" content=\"Discover Norki\u2019s urban projects: bespoke rugs, furniture, and upholstery for exceptional city apartments and residences.\" \/>\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\/en\/custom-made-upholstery\/interior-design-projects-bespoke-craftsmanship\/urban-projects\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Urban Projects | Interior Creations | Maison NORKI\" \/>\n<meta property=\"og:description\" content=\"Discover Norki\u2019s urban projects: bespoke rugs, furniture, and upholstery for exceptional city apartments and residences.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.norki.com\/en\/custom-made-upholstery\/interior-design-projects-bespoke-craftsmanship\/urban-projects\/\" \/>\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:49:53+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\\\/en\\\/custom-made-upholstery\\\/interior-design-projects-bespoke-craftsmanship\\\/urban-projects\\\/\",\"url\":\"https:\\\/\\\/www.norki.com\\\/en\\\/custom-made-upholstery\\\/interior-design-projects-bespoke-craftsmanship\\\/urban-projects\\\/\",\"name\":\"Urban Projects | Interior Creations | Maison NORKI\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.norki.com\\\/sur-mesure\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.norki.com\\\/en\\\/custom-made-upholstery\\\/interior-design-projects-bespoke-craftsmanship\\\/urban-projects\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.norki.com\\\/en\\\/custom-made-upholstery\\\/interior-design-projects-bespoke-craftsmanship\\\/urban-projects\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/norki.com\\\/sur-mesure\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/tailor-made-wall-to-wall-shearling-carpet-2.jpeg\",\"datePublished\":\"2026-06-08T10:36:56+00:00\",\"dateModified\":\"2026-07-16T10:49:53+00:00\",\"description\":\"Discover Norki\u2019s urban projects: bespoke rugs, furniture, and upholstery for exceptional city apartments and residences.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.norki.com\\\/en\\\/custom-made-upholstery\\\/interior-design-projects-bespoke-craftsmanship\\\/urban-projects\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.norki.com\\\/en\\\/custom-made-upholstery\\\/interior-design-projects-bespoke-craftsmanship\\\/urban-projects\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.norki.com\\\/en\\\/custom-made-upholstery\\\/interior-design-projects-bespoke-craftsmanship\\\/urban-projects\\\/#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\\\/en\\\/custom-made-upholstery\\\/interior-design-projects-bespoke-craftsmanship\\\/urban-projects\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.norki.com\\\/fr\\\/sur-mesure\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Our Projects\",\"item\":\"https:\\\/\\\/www.norki.com\\\/en\\\/custom-made-upholstery\\\/interior-design-projects-bespoke-craftsmanship\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Urban\"}]},{\"@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":"Urban Projects | Interior Creations | Maison NORKI","description":"Discover Norki\u2019s urban projects: bespoke rugs, furniture, and upholstery for exceptional city apartments and residences.","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\/en\/custom-made-upholstery\/interior-design-projects-bespoke-craftsmanship\/urban-projects\/","og_locale":"fr_FR","og_type":"article","og_title":"Urban Projects | Interior Creations | Maison NORKI","og_description":"Discover Norki\u2019s urban projects: bespoke rugs, furniture, and upholstery for exceptional city apartments and residences.","og_url":"https:\/\/www.norki.com\/en\/custom-made-upholstery\/interior-design-projects-bespoke-craftsmanship\/urban-projects\/","og_site_name":"Norki","article_publisher":"https:\/\/facebook.com\/NorkiDecoration","article_modified_time":"2026-07-16T10:49:53+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\/en\/custom-made-upholstery\/interior-design-projects-bespoke-craftsmanship\/urban-projects\/","url":"https:\/\/www.norki.com\/en\/custom-made-upholstery\/interior-design-projects-bespoke-craftsmanship\/urban-projects\/","name":"Urban Projects | Interior Creations | Maison NORKI","isPartOf":{"@id":"https:\/\/www.norki.com\/sur-mesure\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.norki.com\/en\/custom-made-upholstery\/interior-design-projects-bespoke-craftsmanship\/urban-projects\/#primaryimage"},"image":{"@id":"https:\/\/www.norki.com\/en\/custom-made-upholstery\/interior-design-projects-bespoke-craftsmanship\/urban-projects\/#primaryimage"},"thumbnailUrl":"https:\/\/norki.com\/sur-mesure\/wp-content\/uploads\/2026\/05\/tailor-made-wall-to-wall-shearling-carpet-2.jpeg","datePublished":"2026-06-08T10:36:56+00:00","dateModified":"2026-07-16T10:49:53+00:00","description":"Discover Norki\u2019s urban projects: bespoke rugs, furniture, and upholstery for exceptional city apartments and residences.","breadcrumb":{"@id":"https:\/\/www.norki.com\/en\/custom-made-upholstery\/interior-design-projects-bespoke-craftsmanship\/urban-projects\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.norki.com\/en\/custom-made-upholstery\/interior-design-projects-bespoke-craftsmanship\/urban-projects\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.norki.com\/en\/custom-made-upholstery\/interior-design-projects-bespoke-craftsmanship\/urban-projects\/#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\/en\/custom-made-upholstery\/interior-design-projects-bespoke-craftsmanship\/urban-projects\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.norki.com\/fr\/sur-mesure\/"},{"@type":"ListItem","position":2,"name":"Our Projects","item":"https:\/\/www.norki.com\/en\/custom-made-upholstery\/interior-design-projects-bespoke-craftsmanship\/"},{"@type":"ListItem","position":3,"name":"Urban"}]},{"@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":"Bespoke Wall-to-Wall Carpets Private Apartment, Paris Bespoke Grey Fox Rugs Private Apartment, Paris Historic Haussmann Residence Parisian Private Mansion Discover Norki in the Heart of Global Capitals Urban Elegance From the creation of expansive monochrome black rugs to the meticulous restoration of mid-century vintage furniture, our Ateliers deploy rare expertise to elevate the most prestigious\u2026","_links":{"self":[{"href":"https:\/\/www.norki.com\/sur-mesure\/wp-json\/wp\/v2\/pages\/4285","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=4285"}],"version-history":[{"count":16,"href":"https:\/\/www.norki.com\/sur-mesure\/wp-json\/wp\/v2\/pages\/4285\/revisions"}],"predecessor-version":[{"id":4939,"href":"https:\/\/www.norki.com\/sur-mesure\/wp-json\/wp\/v2\/pages\/4285\/revisions\/4939"}],"up":[{"embeddable":true,"href":"https:\/\/www.norki.com\/sur-mesure\/wp-json\/wp\/v2\/pages\/4277"}],"wp:attachment":[{"href":"https:\/\/www.norki.com\/sur-mesure\/wp-json\/wp\/v2\/media?parent=4285"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.norki.com\/sur-mesure\/wp-json\/wp\/v2\/categories?post=4285"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.norki.com\/sur-mesure\/wp-json\/wp\/v2\/tags?post=4285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}