Outiref

Code source de l'URL : http://www.nespresso.com/fr/fr

<!doctype html>
<html lang="fr">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <meta name="smartbanner:title" content="Nespresso App">
<meta name="smartbanner:author" content="Nespresso SA">
<meta name="smartbanner:price" content="FREE&nbsp;">
<meta name="smartbanner:price-suffix-apple" content="On the App Store">
<meta name="smartbanner:price-suffix-google" content="In Google Play">
<meta name="smartbanner:icon-apple" content="/_ui/img/smartBanner/nespresso-picto.png">
<meta name="smartbanner:icon-google" content="/_ui/img/smartBanner/nespresso-picto.png">
<meta name="smartbanner:button" content="VIEW">
<meta name="smartbanner:button-url-apple" content="https://itunes.apple.com/fr/app/nespresso/id1609639566?l=fr&mt=8">
    <meta name="smartbanner:button-url-google" content="https://play.google.com/store/apps/details?id=com.nestle.nespresso.nespresso&hl=fr">
    <meta name="smartbanner:enabled-platforms" content="android,ios">
<meta name="smartbanner:hide-ttl" content="1296000000">
<meta name="smartbanner:hide-path" content="/">
<meta name="keywords" content="Nespresso, Nespresso.fr, Café Nespresso, Nespresso France, Capsule">
    <meta name="description" content="Nespresso propose des Cafés d'exception et des Machines innovantes pour réaliser des espressos et des recettes lait gourmandes. Rejoignez le Club Nespresso.">
    <meta property="og:image" content="https://www.nespresso.com/ecom/medias/sys_master/public/12839343456286/Nespresso-OG-1080x1080v2.jpg" />
<base href="/fr/fr"><link rel="preload" href="https://www.nespresso.com/shared_res/mos/free_html/fr/hpFrance/dist/75956c4cec3c5e059831.js" as="script"><link rel="preload" href="https://www.nespresso.com/shared_res/mos/free_html/fr/hpFrance/dist/3c67a26f70f2ab5249f6.js" as="script"><link rel="preload" href="https://www.nespresso.com/shared_res/mos/free_html/fr/hpFrance/dist/e3f137948cee66a7cf40.js" as="script"><link rel="preload" href="https://www.nespresso.com/shared_res/mos/free_html/fr/hpFrance/dist/2fb651e7ee67f4cef78c.js" as="script"><style data-vue-ssr-id="fd547dac:0 371b8fbf:0 0736c59a:0 f20df9a6:0 a8f2f766:0 54ceeb1d:0 4d3d92fb:0 b1551e68:0 4a13ceed:0 508a28a5:0 0b2fce36:0 13967d51:0 580fd810:0 4555a7d0:0">.nuxt-progress{position:fixed;top:0;left:0;right:0;height:2px;width:0%;opacity:1;transition:width .1s,opacity .4s;background-color:#fff;z-index:999999}.nuxt-progress.nuxt-progress-notransition{transition:none}.nuxt-progress-failed{background-color:red}@font-face{font-family:NespressoLucas;src:url(https://www.nespresso.com/shared_res/mos/free_html/fr/hpFrance/dist/fonts/5bc579e.woff);font-weight:300;font-style:normal}@font-face{font-family:NespressoLucas;src:url(https://www.nespresso.com/shared_res/mos/free_html/fr/hpFrance/dist/fonts/f1fc5a0.woff);font-weight:400;font-style:normal}@font-face{font-family:NespressoLucas;src:url(https://www.nespresso.com/shared_res/mos/free_html/fr/hpFrance/dist/fonts/628a46d.woff);font-weight:500;font-style:normal}@font-face{font-family:NespressoLucas;src:url(https://www.nespresso.com/shared_res/mos/free_html/fr/hpFrance/dist/fonts/fe6a634.woff);font-weight:600;font-style:normal}@font-face{font-family:NespressoLucas;src:url(https://www.nespresso.com/shared_res/mos/free_html/fr/hpFrance/dist/fonts/5d4a7b0.woff);font-weight:700;font-style:normal}@font-face{font-family:NespressoLucas;src:url(https://www.nespresso.com/shared_res/mos/free_html/fr/hpFrance/dist/fonts/56e369a.woff);font-weight:900;font-style:normal}html{font-family:'Source Sans Pro',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;font-size:.75em;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}body,html{margin:0;padding:0}.m-app,.m-app *,.m-app :after,.m-app :before{box-sizing:border-box}.m-app{font-family:NespressoLucas,Helvetica,Arial,sans-serif;font-weight:400;font-size:1.33333em;background-color:#fff;color:#000;overflow:hidden}.m-app h1,.m-app h2,.m-app h3{font-weight:500}.u-textCenter{text-align:center}.n-media{display:inline-flex;align-items:flex-start}.n-media__body{flex:1 1 auto}.n-align-items-center{align-items:center}.n-align-items-stretch{align-items:stretch}.n-justify-content-center{justify-content:center}.n-justify-content-spacebeetween{justify-content:space-between}.u-text-right{text-align:right}.u-text-center{text-align:center}.u-text-left{text-align:left}@media (min-width:920px){.u-text-md-right{text-align:right}.u-text-md-center{text-align:center}.u-text-md-left{text-align:left}}.u-text-uppercase{text-transform:uppercase}.n-w-700,.n-w-bold{font-weight:700}.n-w-600{font-weight:600}@media (min-width:920px){.n-ratio:before{padding-top:100%}.n-ratio--landscape:before{padding-top:calc((400 / 1180) * 100%)}}.img-fluid{max-width:100%;width:auto}@media (min-width:920px){.u-mt-md-0{margin-top:0}}.u-mt-a{margin-top:auto}.u-mb-a{margin-bottom:auto}.u-mt-0{margin-top:0}.u-mt-1{margin-top:10px}.u-mt-1-5{margin-top:15px}.u-mt-1-8{margin-top:18px}.u-mt-2{margin-top:20px}.u-mb-1{margin-bottom:10px}.u-mb-1-5{margin-bottom:15px}.u-mb-2{margin-bottom:20px}.u-mr-1{margin-right:10px}.u-mr-2{margin-right:20px}.u-mr-3{margin-right:30px}.u-mv-a{margin-top:auto;margin-bottom:auto}.u-ph-4{padding-left:40px;padding-right:40px}.u-ph-8{padding-left:80px;padding-right:80px}.u-pt-2{padding-top:20px}.u-pt-3{padding-top:30px}.u-pr-3{padding-right:30px}.u-pl-3{padding-left:30px}.u-pb-2{padding-bottom:20px}[class*=fade-]{transition:opacity .75s ease-out,transform .75s ease-out}.fade-enter-active,.fade-leave-active{display:inline-block;transform:translate(0)}.fade-leave-to{opacity:0;transform:translate(-30px)}.fade-enter{opacity:0;transform:translate(30px)}.n-shipping-bar{background-color:#e5e5e5;padding-top:1px;padding-bottom:2px}.n-shipping-bar sup{font-size:75%}.n-shipping-bar__default{padding-top:5px;padding-bottom:5px;margin-top:10px;margin-bottom:10px;padding-left:40px;padding-right:40px;border-right:2px solid #d8d8d8;height:100%}@media (max-width:1023px){.n-shipping-bar__default{padding-left:20px;padding-right:20px;border:0}}.n-shipping-bar__default .popin-trigger{margin-right:10px;margin-left:30px}@media (min-width:300px){.n-shipping-bar__free-delivery+.n-cta{position:relative;top:-2px}}@media (max-width:500px){.n-shipping-bar__free-delivery{margin-right:0}}.n-delivery-message em,.n-shipping-bar__free-delivery em,.n-text--orange{color:#cea002;font-style:normal}.img--delivery{width:46px;margin-bottom:8px;flex-shrink:0}@media (max-width:980px){.n-shipping-bar{padding-bottom:0}.n-shipping-bar .n-column{min-height:40px;text-align:center;flex-basis:100%;flex-grow:1}.n-shipping-bar--tier .n-column:nth-child(2){order:2}.n-shipping-bar--tier .n-column:not(:first-child){background-color:rgba(0,0,0,.1)}.n-shipping-bar--tier .n-column:nth-child(3){padding-top:10px}.n-shipping-bar [class*=n-cta--]:not(.n-cta--link){margin-bottom:10px}.n-shipping-bar__default{border:0}.popin-trigger{margin-right:0}}.n-container{width:100%;max-width:1200px;padding-right:10px;padding-left:10px;margin-left:auto;margin-right:auto}.n-container--fluid{max-width:100%}.n-row{display:flex;flex-wrap:wrap;margin-right:-10px;margin-left:-10px}.n-row--nogutter{margin-left:0;margin-right:0}.n-row--nogutter>.n-column{padding-right:0;padding-left:0}.n-column{min-height:1px;padding-left:10px;padding-right:10px;box-sizing:border-box;flex:0 0 auto;width:auto;max-width:100%}.n-column--full{flex-basis:100%;max-width:100%}.n-column--auto{flex-grow:1;flex-basis:auto;width:auto}.n-column--2{flex:0 0 50%;max-width:50%}.n-column--3{flex:0 0 33.333333%;max-width:33.333333%}.n-column--4{flex:0 0 25%;max-width:25%}.n-column--5{flex:0 0 20%;max-width:20%}@media (min-width:920px){.n-column--md-2{flex:0 0 50%;max-width:50%}.n-column--md-3{flex:0 0 33.333333%;max-width:33.333333%}.n-column--md-4{flex:0 0 25%;max-width:25%}.n-column--md-5{flex:0 0 20%;max-width:20%}.n-column--md-full{flex-basis:100%;max-width:100%}.n-column--md-auto{flex-grow:1;flex-basis:0}.n-column--md-fluid{flex-grow:0;flex-basis:auto;width:auto}}.n-cta{border-radius:4px;line-height:1;background:0 0;text-align:center;font-size:14px;padding-top:14px;padding-bottom:12px;cursor:pointer;color:inherit;border:2px solid currentColor;display:inline-flex;align-items:center;vertical-align:middle;justify-content:center;position:relative}.n-cta *{pointer-events:none}.n-cta--link{border:none;text-decoration:underline;padding:0 2px}.n-cta--link:hover{text-decoration:none}.n-cta--link.n-cta--service{position:relative;top:-.75em}.n-cta--button{text-decoration:none;padding-left:1em;padding-right:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:color .4s,background-color .4s,border-color .4s}.n-cta--button:before{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background-color:currentColor;opacity:0;transition:opacity .4s ease-out}.n-cta--button:focus,.n-cta--button:hover{background-color:rgba(255,255,255,.1);-webkit-filter:invert(10%);filter:invert(10%)}.n-cta--button:focus:before,.n-cta--button:hover:before{opacity:.05}.n-cta--button.n-cta--reverse:focus,.n-cta--button.n-cta--reverse:hover{background-color:#fff;border-color:#fff;color:#000}.n-cta--ambassador,.n-cta--connoisseur,.n-cta--expert{display:inline-flex;align-items:center;border:2px solid currentColor;border-radius:100px;color:#fff;padding:4px 16px 2px 16px;text-decoration:none}@media (max-width:899px){.n-cta--ambassador,.n-cta--connoisseur,.n-cta--expert{margin-right:0}}@media (min-width:900px) and (max-width:1023px){.n-cta--ambassador,.n-cta--connoisseur,.n-cta--expert{margin-right:20px}}.n-cta--connoisseur{border-color:#f80;background-color:#f28b32}.n-cta--ambassador{border-color:#ae8bd5;background-color:#452567}.n-cta--expert{border-color:#85d1ff;background-color:#008ccd}.n-cta--login{padding-right:2.5em;padding-top:10px;padding-bottom:9px}.n-cta__icon{display:inline-block;margin-right:2.5em;fill:currentColor;pointer-events:none}[data-action=trigger-modal]{text-shadow:0 0 1px #fff}.n-cta .n-cta__adv{display:inline-block;position:relative}.n-cta .n-cta__adv sup{position:absolute;left:-.5em;text-decoration:none}.n-card[data-v-b003deb4]{display:block;position:relative;text-align:center;min-height:515px;height:calc(100% - 20px);background-position:bottom center;background-repeat:no-repeat;padding:0 20px}.n-card__inner[data-v-b003deb4]{display:flex;flex-direction:column;align-items:stretch;height:100%}@media (min-width:920px){.n-card__inner[data-v-b003deb4]{padding-left:13%;padding-right:13%}}[data-description=description-top][data-v-b003deb4]{margin-bottom:4px}[data-description=description-top]+.n-heading--h2[data-v-b003deb4]{margin-top:7px}.bdb-cta{max-height:2em;position:relative;z-index:1}.bdb-img{transform:translateY(-1em);padding-top:1em;padding-bottom:1em;position:relative;flex:1 1 0%!important;z-index:0}.bdb-img .n-card__img{position:absolute;max-height:90%;max-height:calc(90% - 1em);width:auto;bottom:50%;left:50%;transform:translate(-50%,50%)}.n-card.n-card--desc-bottom{height:515px}.n-card--desc-bottom .n-card__inner>*{flex:0 1 auto}.services-section{margin-top:20px;margin-bottom:20px;text-align:center}.services-block{padding:30px 15px}@media (max-width:919px){.services-block:not(:last-child){border-bottom:1px solid #ccc}}@media (min-width:920px){.services-section{display:flex}.services-block{flex:1 1 25%;max-width:25%;padding:20px 15px}.services-block:not(:last-child){border-right:1px solid #ccc}}.service{display:flex;flex-direction:column}.service__bottom{margin-top:auto}.service__media{min-height:100px;margin-bottom:20px}.service__icon{display:inline-block;vertical-align:bottom}.service__desc{color:#939393;padding:0 12px;margin-bottom:20px}.n-heading--h1{font-size:55px;line-height:54px;letter-spacing:-1.32px;margin:0 0 2àpx 0}.n-heading--h2{font-size:32px;line-height:36px;letter-spacing:-.47px;margin:0 0 10px 0}.n-heading--h3{font-size:20px;line-height:28px;letter-spacing:0;margin:0 0 10px 0}@media (max-width:919px){.n-heading--h1{font-size:30px;line-height:32px;letter-spacing:-.7px}.n-heading--h2{font-size:20px;line-height:26px;letter-spacing:-.47px}.n-heading--h3{font-size:16px;line-height:22px;letter-spacing:0}}@media (min-width:350px) and (max-width:919px){.n-heading--h2{font-size:24px}}.reinsurance-section{background-color:#f6f6f6;padding-top:15px;padding-bottom:10px}@supports (width:100vw){.reinsurance-section{width:100vw}@media all and (min-width:1200px){.reinsurance-section{transform:translateX(calc((1180px - 100vw)/ 2))}}}@media (min-width:920px){.reinsurance-section__wrapper{display:flex;justify-content:space-around;max-width:1200px;margin-left:auto;margin-right:auto}}.reinsurance-block{display:block;flex:0 1 auto;font-weight:600;margin-bottom:16px;margin-top:16px}@media (max-width:919px){.reinsurance-block{text-align:center;margin-bottom:16px;margin-top:16px}}.reinsurance-block__icon,.reinsurance-block__label,.reinsurance-link{display:inline-block;vertical-align:middle;padding:0 4px}.reinsurance-block__icon{position:relative;top:-2px}</style><title>Capsules de Café & Machines Espresso | Nespresso</title>

    <link rel="canonical" href="https://www.nespresso.com/fr/fr"/>
    <link rel="shortcut icon" type="image/x-icon" href="/_ui/img/favicon.ico"/>

    <link rel="preconnect" href="//www.googletagmanager.com">
    <link rel="preconnect" href="//www.google-analytics.com">
    <link rel="dns-prefetch" href="//www.contact.nespresso.com">
    <link rel="dns-prefetch" href="//ad.doubleclick.net">

    <link rel="preload" href="/_ui/fonts/Nespresso_Lucas/Bold/NespressoLucas-Bold.woff2" as="font" type="font/woff2" crossorigin="anonymous">  
    <link rel="preload" href="/_ui/fonts/Nespresso_Lucas/Regular/NespressoLucas-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous">
    <link rel="preload" as="script" href="/_ui/generated/crema/styles.a003e8466298cdaa9190.js">
<link rel="preload" as="style" href="/_ui/generated/crema/styles.671a47e17361a1b005ed.css">
<link rel="preload" as="script" href="/_ui/generated/crema/glyphs.465276128e5af99645e1.js">
<link href="/_ui/generated/crema/styles.671a47e17361a1b005ed.css" rel="stylesheet" media="screen">
<script>
        var P = {
            baseUrl: '/_ui/generated/frontend-polyfills'
        };
    </script>
    <script src="/_ui/generated/frontend-polyfills/polyfill-loader.js?v=b7c362b5ce057e13232ab7cf58fb9ff91b7cf4a2" ></script>
    <link href="/_ui/generated/responsiveLoadedFirst.css?v=b7c362b5ce057e13232ab7cf58fb9ff91b7cf4a2" rel="stylesheet" media="screen" />
    <link
    rel="stylesheet"
    href="/_ui/generated/responsiveComponents.css?v=b7c362b5ce057e13232ab7cf58fb9ff91b7cf4a2"
    media="none"
    onload="if(media!='screen')media='screen'">
<noscript>
    <link rel="stylesheet" href="/_ui/generated/responsiveComponents.css?v=b7c362b5ce057e13232ab7cf58fb9ff91b7cf4a2">
</noscript>
<script>
        

var config = {};
config.capsulesThirdLineQuantities = '100,150,200,250,300';
config.resUrl = '/_ui';

config.buildVersion = '51.41.32';
config.cacheBusting = 'b7c362b5ce057e13232ab7cf58fb9ff91b7cf4a2';
config.platform = 'responsive';


config.urls = {
    loginPage: '/fr/fr/secure/login',
    loadCrossSells: '/fr/fr/view/PushCrossSellsBlockController',
    saveEditAddress: '/fr/fr/checkout/saveEditDeliveryAddress',
    saveNewAddress: '/fr/fr/checkout/saveNewDeliveryAddress',
    saveEditBillingAddress: '/fr/fr/checkout/saveEditBillingAddress',
    saveNewBillingAddress: '/fr/fr/checkout/saveNewBillingAddress',
    validateSelectedBillingAddress: '/fr/fr/checkout/validateSelectedBillingAddress',
    validateSelectedDeliveryAddress: '/fr/fr/checkout/validateSelectedDeliveryAddress',
    giftCard: '/fr/fr/giftCard',
    myAccountAddressBook: '/fr/fr/myaccount/addressbook.action',
    resendActivationEmailUrl : '/fr/fr/resendActivationEmail',
    errorPage : '/fr/fr/error/unexpected.jsp',
    homePage : '/fr/fr/',
    checkoutQuotationRequestUrl : '/fr/fr/checkout/quotationRequest'
};

    config.labels = {
        authentication: {
            wrongLoginOrPassword: 'Votre identifiant et\/ou mot de passe n\'est pas valide. Veuillez réessayer votre saisie.',
            required: 'Champ demandé',
            bruteForce: 'Vous avez tenté de vous connecter {0} fois. Vous pourrez essayer à nouveau dans {1} secondes.',
            descLogged: 'You are now logged so you can access your account preferences using the links below',
            headingLogged: 'S\'identifier',
            headingNotLogged: 'Mon compte',
            ciamTryAgain: 'There was a communication error, please try again in a few seconds.',
            ciamError: 'There is a technical error, please contact customer support.\t',
            temporarilyLockedOut: 'loginFormBlock.error.lockedAccount'
        },
        addToBagA11yQuantityInCart: 'You have \u003Cspan class=\"quantity\"\u003E{0}\u003C\/span\u003E of {1} in your cart, click on button to \u003Cspan class=\"label\"\u003E{2}\u003C\/span\u003E',
        addToBagAddButtonLabel: 'Ajouter au panier',
        addToBagAddButtonMaxQuantityReachedLabel: 'Quantité maximale atteinte',
        addToBagAddButtonProductUnavailableLabel: 'Produit non disponible',
        addToBagTooltipErrorSalesMultipleMessage: 'Erreur de multiple de commandes',
        addToBagTooltipErrorMaxNumberPerOrderMessage: 'Quantité maximale de commande atteinte',
        addToBagUpdateButtonLabel: 'Actualiser le panier',
        close: 'Fermer',
        quantitySelector: {
            description: 'You can choose the predifined quantities below or the next input field to set your custom quantity',
            addQuantityProductToCart: 'Add {0}',
            removeProductFromCart: 'Click to remove {0} from your cart',
            warningProductLimit: 'Merci de choisir une quantité',
            warningProductLimitZero: 'Pour ce Grand Cru premium, vous pouvez commander un maximum de {0} capsules. Vous avez atteint la limite.',
            warningProductLimitRemaining: 'Pour ce Grand Cru premium, vous pouvez commander un maximum de {0} capsules. Vous pouvez sélectionner encore {1} capsules'
        },
        a11yMainNavigationBar: 'This link will open in a new window',
        a11yMainNavigationSubMenu: {
            open: 'Open the sub menu',
            close: 'Close the sub menu'
        },
        a11yProductListPager: {
            currentPage: 'Page {0} of {1}',
            activePage: 'Active Page',
            sliderMinimumDescription: 'Filter slider minimum price',
            sliderMaximumDescription: 'Filter slider maximum price'
        },
        a11yProductQuantity: {
            update: 'Update done with {0} of {1}',
            remove: 'Product {0} is now removed from your shopping bag'
        },
        a11yActivationCode: {
            submitSuccess: 'Your promotion code has been applied to your Shopping Bag. You can review it here below.',
            deleteSuccess: 'Your promotion code has been removed from your Shopping Bag. You can review it here below.'
        },
        machineRegistration: {
            a11ySearchingForStores: 'Recherche de boutiques…',
            a11yNoStoresFound: 'No store found. Please change your search criterias',
            a11yStoresFound: '{0} stores found. Move focus to next field and use the arrow keys to select one of the stores'
        },
        a11yAddressUpdatedMessage: 'Your address details have been updated',
        checkoutBoutiques: {
            a11yBoutiquesFound: '{0} boutiques found. Navigate to next form to get more information. In order to choose a Boutique, select it in the result list and click on the select button after the list.',
            a11yNoBoutiquesFound: 'No boutique corresponding to your search criteria.',
            a11ySearchingForBoutiques: ' Searching for boutiques',
            a11yBoutiqueSelected: 'Your boutique is now selected'
        },
        a11yProductBrowserBlockFilteredList: '{0} products correspond to your selection, move cursor after filters to access the list',
        machineCompare: {
            a11yFilterChangeNotify: '{0} machines correspond to your selection, move cursor after filters to access the list'
        },
        a11ySlider: {
            startPlaying: 'Play the carousel',
            pausePlaying: 'Pause the carousel',
            triggerPlay: 'You just started the slider',
            triggerPause: 'You just paused the slider'
        },
        a11yRatingScore: 'Rating {0}',
        passwordStrength: {
            weak: 'faible',
            medium: 'moyenne',
            strong: 'élevée',
            a11yReviewPassword: 'Votre mot de passe est {0}. La fiabilité de votre mot de passe doit être plus élevée pour continuer. Veuillez modifier votre mot de passe.',
            containsCapital: 'contenir une majuscule'
        },
        cart: {
            warning: {
                updated: 'Votre panier a été mis à jour.',
                merged: 'Votre panier a été mis à jour.',
                product: {
                    not: {
                        added: 'Un ou plusieurs produits n’ont pas pu être ajoutés à votre panier car ils ne sont plus disponibles.'
                    }
                },
                tariff: {
                    changed: 'Votre panier a été mis à jour en fonction de votre tarif.'
                }
            }
        },
        accountordersblock: {
            myorders: {
                orderdetail: {
                    reorderconfirmation: {
                        message: 'Si vous continuez, le contenu de votre commande précédente sera ajouté à votre panier.'
                    }
                }
            }
        },
        order: {
            reorderProduct: {
                contentMessage: 'Si vous continuez, le contenu de votre commande précédente sera ajouté à votre panier.'
            }
        },
        pickupPoint: {
            close: 'Close',
            a11yErrorOccurred: 'Une erreur s’est produite, veuillez ressayer',
            a11yPickUpPointsFound: '{0} points de retrait trouvés. Consultez le formulaire suivant pour plus d’informations. Pour choisir un point retrait, sélectionnez-le dans la liste des résultats et cliquez sur le bouton Sélectionner situé après la liste.',
            a11yOnePickUpPointFound: 'Un point de retrait trouvé. Consultez le formulaire suivant pour plus d’informations. Pour choisir un point de retrait, sélectionnez-le dans la liste des résultats et cliquez sur le bouton Sélectionner situé après la liste.',
            a11yNoPickUpPointsFound: 'Il n&#x27;y a pas de point de retrait à l&#x27;adresse demandée',
            a11yAmbiguousResultsFound: 'Aucun point de retrait trouvé, consultez le formulaire suivant pour sélectionner une adresse possible proche de vos critères de recherche',
            a11ySearchingForPickUpPoints: 'Rechercher des points de retrait',
            a11yPickUpPointSelected: 'Votre point de retrait est maintenant sélectionné, il vous suffit de l’enregistrer',
        },
        checkout: {
          shipping: {
            yourTime: {
              a11yNoSlotsFound : 'Il n\'y a pas de créneau horaire disponible avec les options de livraison que vous avez sélectionnées',
              a11ySlotsFound : '{0} créneaux horaire correspondent avec les options de livraison que vous avez sélectionnées',
              a11yNarrowSlotsFound : '{0} créneaux horaire correspondent à ce jour avec les options de livraison que vous avez sélectionnées'
            },
            boutiquePickup: {
              a11yOutOfStockMessage: 'Certains produits de votre Panier ne pourront pas être livrés avec le mode de livraison choisi.'
            }
          },
        payment: {
            noneOption: 'None'
          }}
    };

config.einvoiceErrorMessages = {
    'checkout.payment.einvoice.mandatory' : 'Select valid invoice type',
    'checkout.payment.einvoice.incomplete.companydata' : 'Incomplete company info'
};

    config.defaults = {
        addressType: 'private',
        addressCountry: 'fr'
    };

    
    config.padl = {
        namespace : 'padl-' + 'b2c' + '-' + 'fr'
    };

window[config.padl.namespace] = window[config.padl.namespace] || {dataLayer: {}};


    config.ol = {
        enabled: "" === 'ENABLED',
        getDataModule(name) {
            return (this.enabled && FE_Orchestrator?.core) ? FE_Orchestrator.datalayer[name] : napi.data()[name]();
        },
        getCore(obj) {
           if (this.enabled && FE_Orchestrator?.core) {
               return obj.ol(FE_Orchestrator.core);
           }
           return obj.napi(napi);
        }
    }


var gtmDataObject = [];

        config.genesysConfig = {
            liveChatEnabled: 'false',
            liveChatDeploymentId: '',
            isConversationalWindowEnabled: false,
            isPredictiveEngagementEnabled: false,
            liveChatEnvironment: '',
            isSurveysEnabled: false
        };
        
        config.liveChat = {
            isLiveChatAnonymousEnabled: false,
            isLiveChatEmbeddedActivated: false,
            isLiveChatProactiveActivated: false
        };

        P.insertPolyfills();

        

window.adobeExperiencePlatformConfig = {"adobeExperiencePlatformConfig":{"edgeConfigId":"aa49ce1d-700a-4d1d-babf-8cb1fd677819","orgId":"B1F65B5B54F62D0F0A4C98A2@AdobeOrg","adobeSdkVersion":"2.17.0","cartDatasetId":"","adobeCurrentCartConfiguration":{"schemaId":"525a116c912e7fcbf85eb3c155c298e50407ef4e448a5463","datasetId":"64e840bb59f98528d3cf3c52","streamingEndpoint":"a9260f1c68d35739b82f547b379051a4a0a0d4338f638c0c0658ba653e59e162","sandboxName":"FR"}}};

var padlNamespace = config.padl.namespace,
    padlPromotions;

window[padlNamespace].dataLayer.app = {"app":{"affiliation":"Nespresso Online Store","brand":"Nespresso","currency":"EUR","landscape":"NC2-mosaic","market":"FR","version":"51.41.32","isEnvironmentProd":true}};

window[padlNamespace].dataLayer.page = {"page":{"pageInfo":{"language":"fr","breadcrumbUID":"home:::homepage:","pageName":"Homepage","primaryCategory":"","secondaryCategory":[],"segmentBusiness":"B2C","technology":[],"type":"","variant":""}}};

window[padlNamespace].dataLayer.pageInstanceID = {"pageInstanceID":"home:::homepage::NC2-mosaic:true:B2C:FR:fr"};



window[padlNamespace].dataLayer.user = {"isLoggedIn":false};

// Initializing promotions tracking data structure
padlPromotions = {
    promotions: {}
};
</script>

    <script src="/shared_res/agility/analytics/gtm-keys-consent/FR-B2C.js"></script>
<script src="https://www.nespresso.com/shared_res/agility/casper/componentProvider/v1/async.main.js"></script><script src="https://www.nespresso.com/shared_res/agility/casper/eventHub/v1/main.js"></script><script src="/_ui/generated/allHeader.js?v=b7c362b5ce057e13232ab7cf58fb9ff91b7cf4a2" ></script>
    <script>
    napi.staticInit = true;
    napi.initialize(
        'b2c',
        'fr',
        'fr',
        'desktop',
        ''
    );
    </script>

    <script src="/_ui/generated/allHeaderNonBlocking.js?v=b7c362b5ce057e13232ab7cf58fb9ff91b7cf4a2" defer></script>
    
<style>html { display:none }</style>

<script type="text/javascript">
    if (self == top){
        document.documentElement.style.display = 'block';
    }else{
        top.location = self.location;
    }
</script>
<script type="text/javascript">
    (function() {
        var initialState = {"config":{"currentLanguage":"fr","currentMarket":"fr","currentPage":{"accessRequirement":"ALLOW_ALL","pk":"8802943796272"},"languages":[{"code":"en","name":"English","url":"/fr/en/"},{"code":"fr","name":"Français","url":"/fr/fr/"}],"storeCountryCodes":["fr"],"translations":{"global.addtobag.button.remove":"Retirer du panier","global.addtobag.button.unavailable":"INDISPONIBLE","global.limitedproduct.remaining":"Pour ce café premium vous pouvez passer une commande maximale de {maxPackagingRuleQuantity} capsules. Vous pouvez encore commander {maxCustomerQuantity} capsules","global.addtobag.button.a11y.removeproductfromcart":"Produit supprimé de votre panier.","global.addtobag.button.a11y.unavailable":"{productName} n'est pas disponible","global.addtobag.button.limitedproduct.unavailable":"INDISPONIBLE","global.a11y.spinner.label":"Chargement, veuillez patientez","global.a11y.order.summary.label":"Label","global.a11y.order.summary.amount":"Amount","global.addtobag.button.add":"AJOUTER AU PANIER","global.addtobag.button.a11y.addproduct.label":"Vous n'avez aucun {productName} dans votre panier. Activer pour ajouter le produit","global.unexpectederror.page.title":"<strong>Une erreur s’est produite.</strong> Veuillez nous excuser pour la gêne occasionnée.","global.addtobag.button.outofstocklabel":"INDISPONIBLE","global.addtobag.button.a11y.updateproduct.label":"Vous avez {quantity} de {productName} dans votre panier. Activer pour mettre à jour la quantité du produit dans votre panier","global.a11y.link.target.blank":"Ce lien s'ouvrira dans une nouvelle fenêtre","global.unexpectederror.page.phonenumber":"0 800 55 52 53<small> (appel gratuit) </small>","global.addtobagpromotion.a11y.updatecart":"Promotion ajoutée à votre panier","global.addtobag.button.a11y.removeproduct.label":"Supprimer {productName} de votre panier.","global.addtobag.button.a11y.updateproduct":"Vous avez {quantity} de {productName} dans votre panier. Activer pour mettre à jour la quantité de ce produit dans votre panier","global.addtobag.button.a11y.unavailable.label":"{productName} n'est pas disponible","global.limitedproduct.notavailable":"Pour ce café exceptionnel vous pouvez passer une commande maximale de {maxPackagingRuleQuantity} capsules. Vous avez atteint la limite","global.addtobag.button.a11y.outofstock":"{productName} est en rupture de stock","global.limitedproduct.available":"Pour ce café premium vous pouvez passer une commande maximale de {maxPackagingRuleQuantity} capsules","global.addtobag.button.update":"METTRE À JOUR LE PANIER","global.addtobag.button.a11y.outofstock.label":"{productName} est en rupture de stock","global.addtobag.button.a11y.addproduct":"Vous n'avez aucun {productName} dans votre panier. Activer pour ajouter le produit","global.field.requiredError":"Ce champ est obligatoire","global.addtobag.button.a11y.REMOVEDproduct.label":"{productName} SUPPRIMÉ de votre panier.","global.order.total":"Total","global.addtobag.button.outofstock":"INDISPONIBLE"},"loginPage":{"url":"/fr/fr/secure/login","pk":"8802943992880"},"homePage":{"url":"/fr/fr/"},"marketCurrency":"EUR","storeTechno":{"enabledTechnoIds":["nesclub2.fr.b2c/machineTechno/vertuo","nesclub2.fr.b2c/machineTechno/original"],"preferredTechnoId":"nesclub2.fr.b2c/machineTechno/vertuo","multiTechnoEnabled":true},"application":{"recaptchaSiteKey":"6Ldn9KIaAAAAAKl5VQ9hTs65Km4D0wGX0r6b7S7j"},"nc2FeatureVersions":{"ECAPI_CART_ON_RESPONSIVE":"V2","Invalid_Language_Redirection":"DISABLED","CHECKOUT_PREFERENCES":"V2","MY_ADDRESSES":"V2","SIDEBAR":"V2","MY_MACHINES":"V2","MY_SUBSCRIPTIONS":"V2","CONTACT_PREFERENCES":"V2","PRE_RENDERING":"ENABLED","ALERTS":"V2","MY_CREDIT_CARDS":"V2","AUTHENTICATION_RECOVERY":"NONE","Consent_IOS_AppId":"7899754f-2077-4c64-8dd1-cfd48636d2f0","MY_ORDERS":"V2","PRODUCTS_LIST":"V2","Consent_Android_AppId":"c3fb3831-5651-4a89-be40-b919d6eb05e3","PERSONAL_INFORMATION":"V2","NESPRESSO_AND_YOU":"V2","STANDING_ORDER":"V2"},"checkoutMode":"AUTOMATIC","ciamLoginEnabled":true,"isOohNotificationEnabled":false,"isNewEcomExperienceEnabled":false,"commercetoolsCarts":[],"sdkConfigs":[{"domain":{"code":"IDENTITY","type":"SDKDomain"},"enabledOnFlows":[{"code":"PERSONAL_INFORMATION","type":"SDKOnFlowsEnum"}],"extraParameters":[]}],"contactUsPage":{"url":null}}};
        if (initialState && initialState.config) {
            window.__INITIAL_CONFIG__ = initialState.config;
        }
    })();
</script>
<noscript>
            <iframe src="//www.googletagmanager.com/ns.html?id=GTM-M9RM9H5H"
                    height="0" width="0" style="display:none;visibility:hidden"></iframe>
        </noscript>
        <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
                new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
                j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
                '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
        })(window,document,'script','gtmDataObject','GTM-M9RM9H5H');</script>
    <style> 
        /* CLS fix Smartbanner */
        html[data-smartbanner-original-margin-top="0"] {
        margin-top: 0 !important;
        }
        html[data-smartbanner-original-margin-top="0"] .smartbanner {
        top: auto;
        bottom: 0;
        z-index: 9999;
        }
        /* CLS fix Header*/
        #header {
        min-height: 50px;
        }
        /* CLS fix Footer*/
        .Footer__bar {
        min-height: 334px;
        }
        .Footer__bottom {
        min-height: 160px;
        }
        @media (min-width: 768px) {
        .Footer__bar {
            min-height: 68px;
        }
        .Footer__bottom {
            min-height: 50px;
        }
        }
        @media (min-width: 996px) { 
            body #header { 
                min-height: initial; 
            }
        }
        .Header__customer {
            width: calc(100% - 160px);
            justify-content: flex-end;
        }
        }
    </style>


<script>(window.BOOMR_mq=window.BOOMR_mq||[]).push(["addVar",{"rua.upush":"false","rua.cpush":"false","rua.upre":"false","rua.cpre":"false","rua.uprl":"false","rua.cprl":"false","rua.cprf":"false","rua.trans":"","rua.cook":"false","rua.ims":"false","rua.ufprl":"false","rua.cfprl":"false","rua.isuxp":"false","rua.texp":"norulematch","rua.ceh":"false","rua.ueh":"false","rua.ieh.st":"0"}]);</script>
<script>!function(){function o(n,i){if(n&&i)for(var r in i)i.hasOwnProperty(r)&&(void 0===n[r]?n[r]=i[r]:n[r].constructor===Object&&i[r].constructor===Object?o(n[r],i[r]):n[r]=i[r])}try{var n=decodeURIComponent("%7B%0A%22ResourceTiming%22%3A%20%7B%0A%22clearOnBeacon%22%3Atrue%0A%7D%2C%0A%22RT%22%3A%20%7B%0A%22cookie%22%3A%20%22%22%0A%7D%0A%7D");if(n.length>0&&window.JSON&&"function"==typeof window.JSON.parse){var i=JSON.parse(n);void 0!==window.BOOMR_config?o(window.BOOMR_config,i):window.BOOMR_config=i}}catch(r){window.console&&"function"==typeof window.console.error&&console.error("mPulse: Could not parse configuration",r)}}();</script>
                              <script>!function(e){var n="https://s.go-mpulse.net/boomerang/";if("True"=="True")e.BOOMR_config=e.BOOMR_config||{},e.BOOMR_config.PageParams=e.BOOMR_config.PageParams||{},e.BOOMR_config.PageParams.pci=!0,n="https://s2.go-mpulse.net/boomerang/";if(window.BOOMR_API_key="NT4K9-3WWLD-YXPMD-LDFKE-BYKW2",function(){function e(){if(!o){var e=document.createElement("script");e.id="boomr-scr-as",e.src=window.BOOMR.url,e.async=!0,i.parentNode.appendChild(e),o=!0}}function t(e){o=!0;var n,t,a,r,d=document,O=window;if(window.BOOMR.snippetMethod=e?"if":"i",t=function(e,n){var t=d.createElement("script");t.id=n||"boomr-if-as",t.src=window.BOOMR.url,BOOMR_lstart=(new Date).getTime(),e=e||d.body,e.appendChild(t)},!window.addEventListener&&window.attachEvent&&navigator.userAgent.match(/MSIE [67]\./))return window.BOOMR.snippetMethod="s",void t(i.parentNode,"boomr-async");a=document.createElement("IFRAME"),a.src="about:blank",a.title="",a.role="presentation",a.loading="eager",r=(a.frameElement||a).style,r.width=0,r.height=0,r.border=0,r.display="none",i.parentNode.appendChild(a);try{O=a.contentWindow,d=O.document.open()}catch(_){n=document.domain,a.src="javascript:var d=document.open();d.domain='"+n+"';void(0);",O=a.contentWindow,d=O.document.open()}if(n)d._boomrl=function(){this.domain=n,t()},d.write("<bo"+"dy onload='document._boomrl();'>");else if(O._boomrl=function(){t()},O.addEventListener)O.addEventListener("load",O._boomrl,!1);else if(O.attachEvent)O.attachEvent("onload",O._boomrl);d.close()}function a(e){window.BOOMR_onload=e&&e.timeStamp||(new Date).getTime()}if(!window.BOOMR||!window.BOOMR.version&&!window.BOOMR.snippetExecuted){window.BOOMR=window.BOOMR||{},window.BOOMR.snippetStart=(new Date).getTime(),window.BOOMR.snippetExecuted=!0,window.BOOMR.snippetVersion=12,window.BOOMR.url=n+"NT4K9-3WWLD-YXPMD-LDFKE-BYKW2";var i=document.currentScript||document.getElementsByTagName("script")[0],o=!1,r=document.createElement("link");if(r.relList&&"function"==typeof r.relList.supports&&r.relList.supports("preload")&&"as"in r)window.BOOMR.snippetMethod="p",r.href=window.BOOMR.url,r.rel="preload",r.as="script",r.addEventListener("load",e),r.addEventListener("error",function(){t(!0)}),setTimeout(function(){if(!o)t(!0)},3e3),BOOMR_lstart=(new Date).getTime(),i.parentNode.appendChild(r);else t(!1);if(window.addEventListener)window.addEventListener("load",a,!1);else if(window.attachEvent)window.attachEvent("onload",a)}}(),"".length>0)if(e&&"performance"in e&&e.performance&&"function"==typeof e.performance.setResourceTimingBufferSize)e.performance.setResourceTimingBufferSize();!function(){if(BOOMR=e.BOOMR||{},BOOMR.plugins=BOOMR.plugins||{},!BOOMR.plugins.AK){var n=""=="true"?1:0,t="",a="tocyiqqxf26dw2oqcjfq-f-84891a8fb-clientnsv4-s.akamaihd.net",i="false"=="true"?2:1,o={"ak.v":"39","ak.cp":"19131","ak.ai":parseInt("166517",10),"ak.ol":"0","ak.cr":1,"ak.ipv":4,"ak.proto":"http/1.0","ak.rid":"31dda47d","ak.r":50166,"ak.a2":n,"ak.m":"dscx","ak.n":"essl","ak.bpcip":"155.133.132.0","ak.cport":38938,"ak.gh":"2.20.137.89","ak.quicv":"","ak.tlsv":"tls1.2","ak.0rtt":"","ak.0rtt.ed":"","ak.csrc":"-","ak.acc":"bbr","ak.t":"1775243851","ak.ak":"hOBiQwZUYzCg5VSAfCLimQ==B32RmzEyh+37BhZn/Cqt+eYP4RxfMR/s7O0Yw8TKYrPTy7ExxepcpDj1dyK09D4YFRo2i4tBAL8cBh4B4y/lJ5orJjX3w0Da/6wWI4bxQYdRfv6G3rDt4q28p7dpXjKVuvkNzpbex3KOxNqFywenPW/xIdMgtdo86J1pWP42aPDk4cWC4Wq/8R0o9a7pS7396cbM5eIB1O2PI1+HvTSKtFa0bfxdNfaT6caML8ZIo1ouAJOkTudFqrQVw0pMGiCS1KPf+Fv4ffR2a8qIMcvg94RKpBh8DJr7g2dz3ZNpTg3rHL6yYRCb+ZKZkSDdze0JjuHSHlXjavYXOlAj74l977tZnTaadLXLV+Dqw9d3ppzHFVSyOegokmOuQIRZWv9Bm1cYpK3hQ+mpNtcYpc2mGtWHvbC+NVbFAJcSbwgjaC4=","ak.pv":"1430","ak.dpoabenc":"","ak.tf":i};if(""!==t)o["ak.ruds"]=t;var r={i:!1,av:function(n){var t="http.initiator";if(n&&(!n[t]||"spa_hard"===n[t]))o["ak.feo"]=void 0!==e.aFeoApplied?1:0,BOOMR.addVar(o)},rv:function(){var e=["ak.bpcip","ak.cport","ak.cr","ak.csrc","ak.gh","ak.ipv","ak.m","ak.n","ak.ol","ak.proto","ak.quicv","ak.tlsv","ak.0rtt","ak.0rtt.ed","ak.r","ak.acc","ak.t","ak.tf"];BOOMR.removeVar(e)}};BOOMR.plugins.AK={akVars:o,akDNSPreFetchDomain:a,init:function(){if(!r.i){var e=BOOMR.subscribe;e("before_beacon",r.av,null,null),e("onbeacon",r.rv,null,null),r.i=!0}return this},is_complete:function(){return!0}}}}()}(window);</script></head>

<body>
<aside id="a11y-main-heading" class="visually-hidden" role="complementary" aria-label="Capsules de Café & Machines Espresso | Nespresso" tabindex="-1">Capsules de Café & Machines Espresso | Nespresso</aside>
    <span tabindex="-1" id="a11y-message-area" class="visually-hidden display-none"></span>

    <a class="skip-links visually-hidden" href="#a11y-main-area">Ignorer et accéder au contenu</a><div id="headercountrymessage" class="crema-ui-container">
        </div>
<script>
              window.ui = window.ui || [];
              window.ui.push({"id":"headercountrymessage","module":"HeaderCountryMessage","configuration":{"translations":{"wrongcountrynotification.a11y.title":"Erreur de choix de pays","wrongcountrynotification.othercountry.message":"Si vous souhaitez recevoir votre commande dans un autre pays,<br /> merci de vous rendre sur <a href=\"country\">ce site Web</a>.","wrongcountrynotification.a11y.button.close":"Fermer","wrongcountrynotification.currentmarket.message":"Vous êtes connecté au site Web <em>Nespresso</em> de la France."},"props":{"activated":true},"eCommerceData":null}});
            </script>
        <div id="main-container" >

        <header id="top" aria-label="main header">
    <span class="visually-hidden">Entête de page</span>
    <div id="header" class="clearfix">
        <div id="block-8830826075637" class="free-html" data-label=""  >
    <style>
    @media (max-width: 998px) {
        #search-bar-button svg {
            display: none;
        }
    }
    #main,
    #main-container,
    body {
        background-color: #fff
    }

    div.LoginDropdown__title {
        color: #000
    }
    .HeaderNavigationBar .HeaderNavigationBarItem:nth-child(1) .HeaderNavigationBarItem__element {
        background: rgba(101, 111, 77, 0.15) !important;
    }

    .MiniBasketDropdown__dropdown .BenefitMessage {
        background-color: #f3f0eb
    }

    .ta-login-dropdown--not-logged{

    }

    .opened-stack .img-stack-btn {
        display: block !important;
    }
    .HeaderNavigationBarItem__icon{
        filter: invert(100);
    }
    .HeaderNavigationBarItem__title {
        color: #000;
        font-family: "NespressoLucas";
        letter-spacing: .025em;
        line-height: 1.125;
        padding: 1em .5em;
        margin: 0;
        font-weight: 500
    }
    .Header__logo{
        filter: invert(100);
    }
    .HeaderNavigationBar .HeaderNavigationBarItem:nth-child(1) .HeaderNavigationBarItem__element .HeaderNavigationBarItem__title {
        color: black!important;
    }
    .HeaderNavigationBar .HeaderNavigationBarItem:nth-child(1) .HeaderNavigationBarItem__element .HeaderNavigationBarItem__icon {
        filter: invert(rgba(104, 111, 77, 1)) !important;
    }
    #gift-button {
        filter: invert(100);
    }

    .pulse-animation{
        filter: invert(100);
    }

    @media screen and (min-width:996px) {


        #header,
        .HeaderNavigationBar {
            background: #fff
        }

        .HeaderNavigationBarDropdown {
            background: #fff
        }

        .HeaderNavigationBarItem__icon:hover {
            color: black !important;
        }

        .HeaderNavigationBarItem:hover,
        .HeaderNavigationBarItem:hover .HeaderNavigationBarItem__anchor,
        .HeaderNavigationBarItem:hover .HeaderNavigationBarItem__button {
            background-color: lightgray;
        }

        .HeaderNavigationBarItem:not(:first-child):before {
            display: none
        }

        .HeaderNavigationBarItem__title {
            color: #000;
        }
        .HeaderNavigationBar__nav {
            background-color: #fff
        }

        .Header__top-wrapper {
            background: #fff;
            color: #000
        }

        .Header__top-wrapper {
            transition: box-shadow .25s ease-in-out
        }

        .Header__top-wrapper .Header__logo {
            filter: invert(100%)
        }

        .Header__top-wrapper.shadowed {
            box-shadow: 0 0 8px #17171a0d, 0 2px 8px #17171a14
        }

        .LoginDropdownButton,
        .MiniBasketButton,
        .search-bar-button {
            background: #fff;
            color: #000;
            border-color: #000
        }

        .LoginDropdownButton:hover,
        .MiniBasketButton:hover,
        .search-bar-button:hover {
            background: #000;
            color: #fff;
            border-color: #000
        }

        .search-bar-button svg {
            filter: invert(1)
        }

        .search-bar-button:hover svg {
            fill: #fff
        }

        #ta-login-dropdown--logged,
        #ta-login-dropdown--not-logged,
        #ta-mini-basket__open {
            border: solid 1px !important;
            border-color: var(--atomic-neutral) !important;
        }

        /*  #ta-login-dropdown--not-logged,
          button#ta-mini-basket__open {
              text-transform: lowercase !important
          }
  */
        #ta-login-dropdown--not-logged:first-letter,
        button#ta-mini-basket__open:first-letter {
            text-transform: capitalize !important;
        }

        .search-bar-button:hover {
            background: 0 0;
            border: 0;
            color: transparent
        }

        #ta-login-dropdown--logged:hover .LoginDropdownButton__icon,
        #ta-login-dropdown--not-logged:hover .LoginDropdownButton__icon,
        .MiniBasketButton--not-empty .MiniBasketButton__basketIcon,
        .MiniBasketButton:hover .MiniBasketButton__basketIcon {
            filter: invert(0) !important
        }

        #ta-login-dropdown--logged:hover,
        #ta-login-dropdown--not-logged:hover {
            background: #000 !important;
            color: #fff !important;
            border: 1px solid #000 !important
        }

        /*  .Glyph--basket:before,
          .Glyph--user:before,
          .HeaderNavigationBarItem__title,
          .LoginDropdownButton,
          .MiniBasketButton {
              color: #000
          }*/

        .HeaderNavigationBarDropdown {
            margin-top: -2px !important
        }
        
        [class*="_close-button_"] {
         /* tes styles */
         right: 27% !important;
        }
        .HeaderNavigationBarItem,
        .Header__top-wrapper,
        .LoginDropdownButton,
        .MiniBasketButton,
        div.HeaderNavigationBar>div,
        nav.HeaderNavigationBar__nav.ResponsiveContainer {
            background-color: #fff
        }

        .MiniBasketButton--not-empty {
            border: 1px solid #3d8705;
            background: #3d8705;
            color: #fff
        }

        .MiniBasketButton--not-empty:hover,
        .MiniBasketButton:hover {
            border: 1px solid #000;
            background: #000;
            color: #fff !important
        }
    }@media screen and (min-width: 996px) {
        .HeaderNavigationBarItem__element {
            padding: 14px 4px 7px !important;
        }
    }

    @media screen and (max-width:995px) {

        .HeaderNavigationBar__menu{
            filter: invert(0) !important
        }

        .HeaderNavigationBarDropdown {
            background-color: #faf9f8 !important
        }

        .HeaderNavigationBarDropdown__item--big {
            width: auto !important
        }

        .BurgerSwitch--is-active .BurgerSwitch__bars {
            background-color: transparent
        }

        .HeaderNavigationBarDropdown {
            background: #fff
        }

        .HeaderNavigationBarItem:first-child {
            display: none
        }

        .HeaderNavigationBarItem__title {
            color: #000;
            min-width: 200px
        }

        .HeaderNavigationBar__language-switcher {
            background: #fff;
            margin: 0;
            padding: 20px
        }

        .HeaderNavigationBar__language-switcher-dropdown {
            bottom: calc(100% - 20px);
            left: 20px;
            right: 20px;
            width: auto
        }

        .HeaderNavigationBar__menu {
            background: #fff;
            min-height: calc(100vh - 160px)
        }

        .HeaderNavigationBar__menu {
            filter: invert(1)
        }

        .HeaderNavigationBar__nav {
            bottom: 0;
            background-color: #fff
        }

        .HeaderNavigationBar__nav {
            box-shadow: 0 0 7px #777
        }

        .HeaderNavigationBar__switch {
            background: #fff
        }

        .HeaderNavigationBar__switch .BurgerSwitch__bars,
        .HeaderNavigationBar__switch .BurgerSwitch__bars:after,
        .HeaderNavigationBar__switch .BurgerSwitch__bars:before {
            background-color: #000
        }

        .Header__logo {
            filter: invert(1)
        }

        .Header__top {
            background: #fff
        }

        .Header__top-wrapper {
            box-shadow: 0 0 5px #737272
        }

        .LoginDropdownButton__icon,
        .MiniBasketButton__basketIcon {
            color: #000
        }

        .MiniBasketButton--not-empty .MiniBasketButton__basketIcon {
            color: #fff
        }


        #search-bar-button>span:after {
            content: url(https://www.nespresso.com/shared_res/markets/it/b2c_b2b/icons/nespresso_icons/UI_ICONS_24px/24_SYMBOLS/24_symbols_action_search.svg);
            height: 24px !important;
            margin-right: 4px;
            width: 25px !important
        }


        .search-bar-button span {
            display: block !important;
            margin-top: 7px;
            margin-right: 5px;
            color: transparent
        }

        .search-bar-button,
        .search-bar-button:hover {
            width: auto !important;
            margin-top: 0 !important
        }

        .BurgerSwitch__bars {
            transform: translateY(-3px)
        }

        .BurgerSwitch__bars,
        .BurgerSwitch__bars:after,
        .BurgerSwitch__bars:before {
            background-color: #000
        }

        .HeaderNavigationBar__nav,
        .HeaderNavigationBar__switch,
        .Header__top,
        .MiniBasketButton--not-empty {
            background-color: #fff
        }

        .Header__top {
            text-align: center
        }

        .LoginDropdownButton__icon,
        .MiniBasketButton__basketIcon {
            top: 3px
        }

        .LoginDropdownButton__icon--open {
            top: 17px
        }

        .MiniBasketButton--not-empty {
            border: 0
        }

        i.Glyph--basket.MiniBasketButton__basketIcon {
            font-size: 36px !important;
            left: 8px !important;
            top: 6px !important;
        }

        i.Glyph.Glyph--user.LoginDropdownButton__icon {
            font-size: 21px !important;
        }
    }
</style>


<script>


    $(function () {
        if (window.innerWidth >= 996) {
            let shadowed = false;
            addEventListener("scroll", function () {
                let preShadowed = shadowed;
                shadowed = document.documentElement.scrollTop > 50;
                if (preShadowed != shadowed) {
                    $(".Header__top-wrapper").toggleClass("shadowed", shadowed);
                }
            });
        }
    });
</script>

<script>
    function adjustHeaderPosition() {
        const headerSwitch = document.querySelector('.HeaderNavigationBar__switch');
        const headerTop = document.querySelector('.Header__top');
        const countryMessages = document.getElementsByClassName('HeaderCountryMessage__container');
        const bannerShippings = document.getElementsByClassName('dp_banner_shipping_wrapper');

        if (!headerSwitch || !headerTop) return;

        // Calculer la hauteur totale des éléments visibles au-dessus
        let totalOffset = 0;

        // Vérifier et ajouter la hauteur de chaque élément s'il est présent et visible
        if (countryMessages.length > 0) {
            const countryMessage = countryMessages[0]; // Récupérer le premier élément de la collection
            if (window.getComputedStyle(countryMessage).display !== 'none') {
                totalOffset += countryMessage.offsetHeight;
            }
        }

        if (bannerShippings.length > 0) {
            const bannerShipping = bannerShippings[0]; // Récupérer le premier élément de la collection
            if (window.getComputedStyle(bannerShipping).display !== 'none') {
                totalOffset += bannerShipping.offsetHeight;
            }
        }

        // Appliquer l'offset calculé au HeaderNavigationBar__switch
        headerSwitch.style.top = totalOffset + 'px';
    }

    // Appeler la fonction lorsque la page est chargée
    document.addEventListener('DOMContentLoaded', adjustHeaderPosition);

    // MutationObserver pour observer les changements de visibilité dans les éléments
    const observer = new MutationObserver((mutations) => {
        mutations.forEach((mutation) => {

            if (mutation.type === 'childList' || mutation.type === 'attributes') {
                adjustHeaderPosition();
            }
        });
    });

    // Observer les modifications dans le DOM pour les éléments concernés
    observer.observe(document.body, {
        childList: true,
        subtree: true,
        attributes: true
    });

    // Ajuster la position du header lors du redimensionnement de la fenêtre
    window.addEventListener('resize', adjustHeaderPosition);
</script>


<style>

    .HeaderNavigationBar--is-open .Button.BurgerSwitch.BurgerSwitch--is-active.HeaderNavigationBar__switch {
        width: 50px !important;
        height: 50px !important;
        left: calc(100% - 50px) !important;
    }

    .MiniBasketDropdown .MiniBasketButton--not-empty {
        left: 10% !important;
    }

    .MiniBasketButton__quantity {
        left: -2px !important;
    }

    @media screen and (max-width: 425px) {
        .MiniBasketDropdown button.MiniBasketButton.MiniBasketButton--not-empty,
        .MiniBasketDropdown .MiniBasketButton--not-empty {
            top: auto !important;
            margin-top: 0 !important;
            margin-bottom: 0 !important;
            transform: none !important;
            left: 10% !important;
        }
    }
</style></div>

<div id="block-8819394434549" class="free-html" data-label=""  >
    <!-- 
╔══════════════════════════════════════════════════════════════════════════════╗
║                    BANNIÈRE HEADER - GUIDE RAPIDE                            ║
╠══════════════════════════════════════════════════════════════════════════════╣
║                                                                              ║
║  ?? POUR AJOUTER UNE NOUVELLE CAMPAGNE :                                     ║
║  ───────────────────────────────────────                                     ║
║  1. Copier le TEMPLATE ci-dessous                                            ║
║  2. Coller dans la section "MES CAMPAGNES"                                   ║
║  3. Remplir les champs                                                       ║
║  4. Ajouter l'ID dans CAMPAIGN_PRIORITY (ordre = priorité)                   ║
║                                                                              ║
║  ⚠️  NE PAS MODIFIER la section "CODE TECHNIQUE" en bas du fichier          ║
║                                                                              ║
║  ?? Générateur de dates UTC : https://www.nespresso.com/fr/fr/start-calendrier
║                                                                              ║
╚══════════════════════════════════════════════════════════════════════════════╝

═══════════════════════════════════════════════════════════════════════════════
                              TEMPLATE À COPIER
═══════════════════════════════════════════════════════════════════════════════

    // ──────────────────────────────────────────────────────────
    // NOM DE MA CAMPAGNE
    // ──────────────────────────────────────────────────────────
    monIdCampagne: {
        enabled: true,                    // true = activé, false = désactivé
        priority: 'normal',               // 'urgent' | 'high' | 'normal'
        
        // ?? DATES (format UTC - utiliser le générateur)
        startAfter: null,                 // null = commence immédiatement
        endBefore: null,                  // null = pas de fin
        
        // ?? OÙ AFFICHER ? (choisir UN des presets ci-dessous)
        urlPreset: 'partout',             // 'partout' | 'homepage' | 'plpCafe' | 'custom'
        
        // ?? CONTENU
        texteDesktop: 'Mon message desktop',
        texteMobile: 'Mon message mobile',
        
        // ?? LIEN (optionnel - laisser vide si pas de lien)
        lienTexte: 'Je découvre',
        lienUrl: 'https://www.nespresso.com/fr/fr/...',
        
        // ?? STYLE (optionnel)
        backgroundColor: '#F3EEE6',       // Couleur de fond (défaut: beige)
    },

═══════════════════════════════════════════════════════════════════════════════
-->

<div class="TEST-Header__top-wrapper"></div>

<style>
    .HeaderNavigationBar__nav { margin-top: 124px; }
    .bf-icon { width: 30px; margin: 0 10px; }
    .bf-icon.bf-recycling { width: 20px; margin: 0 10px; }
    .dp_banner_shipping {
        background-color: #F3EEE6;
        min-height: 44px;
        text-align: center;
        color: black;
    }
    .dp_banner_shipping svg { width: 50px; height: 40px; display: inline-block; margin-right: 15px; vertical-align: middle; }
    .dp_banner_shipping_close {
        width: 15px; height: 15px;
        position: absolute; right: 15px; top: 50%;
        transform: translateY(-50%);
        font-size: 14px; cursor: pointer;
    }
    .dp_banner_shipping_wrapper {
        max-width: 992px;
        padding: 10px 40px 10px 10px;
        position: relative;
        margin: 0 auto;
        line-height: 1.4;
        font-size: 16px;
        font-weight: 400;
        display: flex;
        align-items: center;
        justify-content: center;
        text-align: center;
    }
    .dp_banner_shipping_wrapper a {
        font-size: 16px;
        color: #6B4C0A;
        font-weight: 700;
        text-decoration: underline;
        margin-left: 10px;
    }
    .desktop-only { display: none; }
    .mobile-only { display: inline-block; text-align: left; }
    
    @media (min-width: 768px) {
        .desktop-only { display: inline-block; }
        .mobile-only { display: none; }
    }
    
    /* MASQUER LA BANNIÈRE SUR MOBILE */
    @media (max-width: 767px) {
        .dp_banner_shipping { display: none !important; }
        .HeaderNavigationBar__nav { margin-top: 44px; }
    }
    
    @media (max-width: 1023px) {
        .HeaderNavigationBar__switch { top: 44px; }
    }
    @media screen and (max-width: 995px) {
        .Header { min-height: 94px; }
    }
</style>

<script type="module">

// ╔══════════════════════════════════════════════════════════════════════════════╗
// ║                                                                              ║
// ║                         ?? CONFIGURATION GÉNÉRALE                            ║
// ║                                                                              ║
// ╚══════════════════════════════════════════════════════════════════════════════╝

const CONFIG = {
    // Campagne par défaut sur Desktop (mettre l'ID d'une campagne)
    defaultDesktop: 'GWP2026',
    
    // Campagne par défaut sur Mobile ('' = aucune bannière sur mobile)
    defaultMobile: '',
    
    // Mode debug (true = affiche les logs dans la console)
    debug: true
};

// ╔══════════════════════════════════════════════════════════════════════════════╗
// ║                                                                              ║
// ║                    ?? ORDRE DE PRIORITÉ DES CAMPAGNES                        ║
// ║                                                                              ║
// ║  → La première campagne active dans cette liste sera affichée                ║
// ║  → Ajouter l'ID de votre nouvelle campagne ici                               ║
// ║                                                                              ║
// ╚══════════════════════════════════════════════════════════════════════════════╝

const CAMPAIGN_PRIORITY = [
    'intemperies',          // Alertes météo (urgent)
    'GWP2026',              // GWP 2026 - Tumbler offert
    'applicationNespresso', // App Nespresso (permanent)
    'welcome5',             // Bienvenue 5€ (permanent)
];

// ╔══════════════════════════════════════════════════════════════════════════════╗
// ║                                                                              ║
// ║                         ?? PRESETS D'URL DISPONIBLES                         ║
// ║                                                                              ║
// ║  Utiliser ces noms dans le champ "urlPreset" de vos campagnes                ║
// ║                                                                              ║
// ╚══════════════════════════════════════════════════════════════════════════════╝

const URL_PRESETS = {
    // Afficher sur toutes les pages (sauf checkout/inscription)
    'partout': {
        mode: 'blacklist',
        patterns: ['/checkout', '/myaccount/orders', '/registration']
    },
    
    // Afficher uniquement sur la Home Page
    'homepage': {
        mode: 'whitelist',
        patterns: ['/^\\/$/', '/^\\/fr\\/fr\\/?$/', '/^\\/fr\\/en\\/?$/']
    },
    
    // Afficher sur les pages café (PLP café)
    'plpCafe': {
        mode: 'whitelist',
        patterns: ['/order/capsules']
    },
    
    // Afficher sur Home + PLP café
    'homepageEtCafe': {
        mode: 'whitelist',
        patterns: ['/^\\/$/', '/^\\/fr\\/fr\\/?$/', '/^\\/fr\\/en\\/?$/', '/order/capsules']
    }
};

// ╔══════════════════════════════════════════════════════════════════════════════╗
// ║                                                                              ║
// ║                            ?? MES CAMPAGNES                                  ║
// ║                                                                              ║
// ║  → Ajouter vos campagnes ici en copiant le template                          ║
// ║                                                                              ║
// ╚══════════════════════════════════════════════════════════════════════════════╝

const CAMPAIGNS = {

    // ──────────────────────────────────────────────────────────
    // INTEMPÉRIES - Retards de livraison (activer en cas de besoin)
    // ──────────────────────────────────────────────────────────
    intemperies: {
        enabled: false,
        priority: 'urgent',
        startAfter: null,
        endBefore: null,
        urlPreset: 'homepage',
        texteDesktop: 'En raison des intempéries, des retards de livraison peuvent survenir. Merci de votre compréhension.',
        texteMobile: 'Des retards peuvent survenir en raison des intempéries.',
        lienTexte: '',
        lienUrl: '',
        tracking: '2025_jan_banniere_intemperies',
        backgroundColor: '#F3EEE6',
    },

    // ──────────────────────────────────────────────────────────
    // GWP 2026 - Tumbler offert dès 100 capsules sur l'app
    // ──────────────────────────────────────────────────────────
    GWP2026: {
        enabled: true,
        priority: 'normal',
        startAfter: null,
        endBefore: null,
        urlPreset: 'partout',
        texteDesktop: 'Votre cadeau de bienvenue : un Tumbler offert sur l\'app dès 100 capsules*. Code : <strong>APP2026</strong>',
        texteMobile: 'Code <strong>APP2026*</strong> : un Tumbler offert',
        lienTexte: 'J\'en profite',
        lienUrl: 'https://nespres.so/fr/NewAppGWP',
        tracking: '2026_banniere_GWP-APP2026',
        backgroundColor: '#F3EEE6',
    },

    // ──────────────────────────────────────────────────────────
    // APPLICATION NESPRESSO - Permanent
    // ──────────────────────────────────────────────────────────
    applicationNespresso: {
        enabled: true,
        priority: 'normal',
        startAfter: null,
        endBefore: null,
        urlPreset: 'partout',
        texteDesktop: 'Profitez de vos cafés préférés où que vous soyez avec l\'application Nespresso.&nbsp;',
        texteMobile: 'Découvrez l\'application Nespresso&nbsp;',
        lienTexte: 'Je télécharge',
        lienUrl: 'https://www.nespresso.com/fr/fr/services-application-nespresso',
        tracking: '2025_permanent_banniere_application',
        backgroundColor: '#F3EEE6',
    },

    // ──────────────────────────────────────────────────────────
    // BIENVENUE 5€ - Permanent
    // ──────────────────────────────────────────────────────────
    welcome5: {
        enabled: true,
        priority: 'normal',
        startAfter: null,
        endBefore: null,
        urlPreset: 'partout',
        texteDesktop: 'Nouveau client ? 5€ offerts sur votre 1ère commande de café avec le code : <strong>BIENVENUE5</strong>',
        texteMobile: 'Code <strong>BIENVENUE5</strong> : 5€ offerts',
        lienTexte: 'J\'en profite',
        lienUrl: 'https://www.nespresso.com/fr/fr/order/capsules/original',
        tracking: '2025_permanent_banniere_bienvenue5',
        backgroundColor: '#F3EEE6',
    },

};


// ╔══════════════════════════════════════════════════════════════════════════════╗
// ║                                                                              ║
// ║          ⚠️  CODE TECHNIQUE - NE PAS MODIFIER CI-DESSOUS ⚠️                  ║
// ║                                                                              ║
// ╚══════════════════════════════════════════════════════════════════════════════╝

const pageName = window.padl?.page?.pageInfo?.pageName || "";
const BANNER_TARGET_SELECTOR = pageName === "setup-offers-preprod" ? ".TEST-Header__top-wrapper" : ".Header__top-wrapper";
const DEFAULT_ICON = 'https://www.nespresso.com/ecom/medias/sys_master/public/17103432319006/icon-service-suivi-de-livraison.svg';
const HOMEPAGE_PATTERNS = ['/^\\/$/', '/^\\/fr\\/fr\\/?$/', '/^\\/fr\\/en\\/?$/'];

function debugLog(...args) {
    if (CONFIG.debug) console.log('[Banner]', ...args);
}

function isCampaignActive(c) {
    if (c.enabled === false) return false;
    const now = new Date();
    if (c.startAfter && now < new Date(c.startAfter)) return false;
    if (c.endBefore && now > new Date(c.endBefore)) return false;
    return true;
}

function isUrlAllowed(campaign) {
    const currentPath = window.location.pathname;
    const globalBlacklist = ['/checkout', '/myaccount/orders', '/registration'];
    if (globalBlacklist.some(path => currentPath.startsWith(path))) return false;

    // Récupérer les règles d'URL (preset ou custom)
    let urlRules = campaign.urlRules || URL_PRESETS[campaign.urlPreset] || URL_PRESETS['partout'];
    
    // Gestion de l'exclusion homepage pour le preset "partout"
    if (campaign.urlExcludeHomepage) {
        const isHomepage = HOMEPAGE_PATTERNS.some(pattern => {
            if (pattern.startsWith('/') && pattern.endsWith('/')) {
                return new RegExp(pattern.slice(1, -1)).test(currentPath);
            }
            return currentPath === pattern;
        });
        if (isHomepage) return false;
    }

    const { mode, patterns } = urlRules;
    
    const matchesPattern = patterns.some(pattern => {
        if (pattern.startsWith('exact:')) return currentPath === pattern.replace('exact:', '');
        if (typeof pattern === 'string' && pattern.startsWith('/') && pattern.endsWith('/')) {
            return new RegExp(pattern.slice(1, -1)).test(currentPath);
        }
        return currentPath.startsWith(pattern);
    });
    
    return mode === 'whitelist' ? matchesPattern : !matchesPattern;
}

function canShowCampaign(campaign) {
    if (!campaign) return false;
    if (!isCampaignActive(campaign)) return false;
    if (!isUrlAllowed(campaign)) return false;
    return true;
}

function getActiveCampaignId() {
    const isMobile = window.innerWidth <= 767;
    const defaultCampaignId = isMobile ? CONFIG.defaultMobile : CONFIG.defaultDesktop;
    
    if (defaultCampaignId === '' || defaultCampaignId === null || defaultCampaignId === 'none') {
        debugLog(`Bannière désactivée pour ${isMobile ? 'mobile' : 'desktop'}`);
        return null;
    }
    
    // Campagnes urgentes d'abord
    for (const id of CAMPAIGN_PRIORITY) {
        const camp = CAMPAIGNS[id];
        if (camp && camp.priority === 'urgent' && canShowCampaign(camp)) {
            debugLog(`Campagne urgente: ${id}`);
            return id;
        }
    }
    
    // Campagnes haute priorité
    for (const id of CAMPAIGN_PRIORITY) {
        const camp = CAMPAIGNS[id];
        if (camp && camp.priority === 'high' && canShowCampaign(camp)) {
            debugLog(`Campagne high: ${id}`);
            return id;
        }
    }
    
    // Campagne par défaut
    const defaultCamp = CAMPAIGNS[defaultCampaignId];
    if (canShowCampaign(defaultCamp)) {
        debugLog(`Campagne par défaut: ${defaultCampaignId}`);
        return defaultCampaignId;
    }
    
    // Fallback
    for (const id of CAMPAIGN_PRIORITY) {
        if (canShowCampaign(CAMPAIGNS[id])) {
            debugLog(`Fallback: ${id}`);
            return id;
        }
    }
    
    return null;
}

function generateBannerHTML(campaign) {
    const bg = campaign.backgroundColor || '#F3EEE6';
    const icon = campaign.icon || DEFAULT_ICON;
    const id = campaign.id || Object.keys(CAMPAIGNS).find(k => CAMPAIGNS[k] === campaign);
    
    const linkHtml = campaign.lienTexte ? `
        <a class="ship-redirection-button desktop-only" href="${campaign.lienUrl}" 
           onclick="BannerTracking.push('${campaign.tracking}', true, '${campaign.lienUrl}'); return false;">
            ${campaign.lienTexte}
        </a>
        <a class="ship-redirection-button mobile-only" href="${campaign.lienUrl}" 
           onclick="BannerTracking.push('${campaign.tracking}', true, '${campaign.lienUrl}'); return false;">
            ${campaign.lienTexte}
        </a>` : '';

    return `
        <div class="dp_banner_shipping" data-campaign="${id}" style="background-color: ${bg};">
            <div class="dp_banner_shipping_wrapper">
                <img class="bf-icon bf-recycling" src="${icon}" alt="" />
                <span class="desktop-only">${campaign.texteDesktop}</span>
                <span class="mobile-only">${campaign.texteMobile}</span>
                ${linkHtml}
                <div class="dp_banner_shipping_close" onclick="window.closeBanner('${id}');">
                    <i class="Glyph Glyph--cross lightbox__close-icon" aria-hidden="true"></i>
                </div>
            </div>
        </div>
    `;
}

window.closeBanner = function(campaignId) {
    document.cookie = `${campaignId}_closed=1; path=/`;
    const banner = document.querySelector('.dp_banner_shipping');
    if (banner) banner.remove();
};

window.BannerTracking = {
    push: function(label, isClick, redirectUrl) {
        window.gtmDataObject = window.gtmDataObject || [];
        gtmDataObject.push({
            event: "local_event",
            event_raised_by: "local_market_fr",
            local_event_category: "header",
            local_event_action: isClick ? "click" : "display",
            local_event_label: label || "Bannière",
        });
        if (isClick && redirectUrl) {
            setTimeout(() => { window.location.href = redirectUrl; }, 100);
        }
    }
};

document.addEventListener("DOMContentLoaded", function() {
    try {
        const campaignId = getActiveCampaignId();
        if (!campaignId) {
            debugLog('Aucune bannière à afficher');
            return;
        }
        
        const campaign = CAMPAIGNS[campaignId];
        const cookieName = `${campaignId}_closed`;
        
        if (document.cookie.includes(cookieName)) {
            debugLog(`Bannière ${campaignId} fermée par l'utilisateur`);
            return;
        }
        
        const html = generateBannerHTML(campaign);
        
        frUtils.waitForElm(BANNER_TARGET_SELECTOR).then(header => {
            header.insertAdjacentHTML("afterbegin", html);
            BannerTracking.push(campaign.tracking, false, null);
        });
    } catch (error) {
        console.error("Erreur bannière:", error);
    }
});

</script>
</div>

<div id="block-8815967655413" class="free-html" data-label=""  >
    <style>

    .drom-com-enabled .Header{ position: relative; padding: 50px 0 0 0; }
    .drom-com-enabled .Header__top-wrapper{ padding-top: 70px; }
    .drom-com-enabled #dp_banner.dp_banner_sticky_desktop.dp_banner_started .dp_banner_inside {
        top: 138px;
    }

    #dromcom-sticky-banner { display: none; }
    #dromcom-sticky-banner.show { display: block; }

    #dromcom-sticky-banner { position: fixed; width: 100%;  background-color: #a41c25; font-family: "Trebuchet MS"; font-size: 16px; color: #fff; z-index: 3000; }
    #dromcom-sticky-banner .br-mob{ display: none; }

    #dromcom-sticky-banner .dromcom-sticky-banner-wrapper{ display: flex; width: 996px; padding: 15px 0; margin: 0 auto; }

    #dromcom-sticky-banner .dromcom-sticky-banner-text{ display: block; width: 100%; font-weight: 400; text-align: center; }
    #dromcom-sticky-banner .dromcom-sticky-banner-text .text { display: block; }
    #dromcom-sticky-banner .dromcom-sticky-banner-text .text-title { padding-bottom: 2px; font-size: 14px; }
    #dromcom-sticky-banner .dromcom-sticky-banner-text .text-link { font-size: 16px; }

    #dromcom-sticky-banner .dromcom-sticky-banner-text a { position: relative; text-decoration: none; color: #FFFFFF; display: block; }
    #dromcom-sticky-banner .dromcom-sticky-banner-text #dromcom-sticky-banner-place:after{
        content: "";
        position: absolute;
        display: block;
        width: 6px;
        height: 6px;
        transform: translateY(-50%) rotate(225deg);
        top: 8px;
        right: -15px;
        border-bottom: 2px solid #FFFFFF;
        border-left: 2px solid #FFFFFF;
    }
    #dromcom-sticky-banner img.dromcom-sticky-banner-logo{ width: 90px; transform: translateY(19%);}
    #dromcom-sticky-banner .dromcom-sticky-banner-text-sep{ font-size: 16px; font-weight: 200; }
    #dromcom-sticky-banner .dromcom-sticky-banner-place{ position: relative; font-size : 14px; font-weight: 600; text-transform: uppercase; letter-spacing: 1px; }

    #dromcom-sticky-banner .dromcom-sticky-banner-button-right { display: block; width: 34%; text-align: right; }
    #dromcom-sticky-banner a.dromcom-sticky-banner-button { display: inline-block; margin: 0 0 0 auto; padding: 4px 10px; border: 1px solid #fff; border-radius: 3px; transition: all .3s; }
    #dromcom-sticky-banner a.dromcom-sticky-banner-button:hover { background-color: #fff; color: #a41c25; }

    @media screen and (max-width: 996px){

        .drom-com-enabled .Header{ padding: 123px 0 0; }
        .drom-com-enabled .HeaderNavigationBar {
            top: 70px;
        }

        #dromcom-sticky-banner { z-index: 2002; }

        #dromcom-sticky-banner .dromcom-sticky-banner{ margin: 50px 0 0; z-index: 9; }

        #dromcom-sticky-banner .dromcom-sticky-banner-wrapper{ width: 100%; }

        #dromcom-sticky-banner .dromcom-sticky-banner-text{ position: relative; margin: 0 auto; text-align: center; }

        #dromcom-sticky-banner .dromcom-sticky-banner-button-right{ display: none; }
    }

    @media screen and (max-width: 767px){

        .drom-com-enabled .Header { padding: 156px 0 0; }
        .drom-com-enabled .Header__top-wrapper{ padding-top: 108px; }
        .drom-com-enabled .HeaderNavigationBar { top: 108px; }
        #dromcom-sticky-banner .br-mob { display: block; }

    }

</style>

<div id="dromcom-sticky-banner" class="dromcom-sticky-banner">
  <div class="dromcom-sticky-banner-wrapper track-impression-promotion">
    <div class="dromcom-sticky-banner-text">
      <a href="javascrit:void(0);">
        <span class="text text-title">Aucun mode de livraison n’est disponible<br class="br-mob"> sur les territoires des DROM.</span>
        <span class="text text-link">Désormais rendez-vous sur votre site <br class="br-mob"> <img src="https://www.nespresso.com/ecom/medias/sys_master/public/10698362454046/logo-white.svg" class="dromcom-sticky-banner-logo" alt="Nespresso"><span class="dromcom-sticky-banner-text-sep">|</span> <span id="dromcom-sticky-banner-place" class="dromcom-sticky-banner-place"></span></span>
      </a>
    </div>
  </div>
</div>

<script>

    var dromcomTrackingManager = {

        id : "dromcom",
        name : 'Dromcom',
        creative : 'responsive_top_wrapper',

        sendCustomEvent : function (label) {

            gtmDataObject.push({
                event: 'customEvent',
                eventRaisedBy: 'FreeHTML',
                eventCategory: 'User Engagement',
                eventAction: 'Click',
                eventLabel: this.name + " - " + label,
                nonInteraction: 0
            });

        },

        initImpression : function () {

            window.promotionsOnScroll = window.promotionsOnScroll || {};

            promotionsOnScroll[this.id] = {
                creative: this.creative,
                id: this.id,
                name: this.name,
                position: 'freehtml'
            };

            gtmDataObject.push({
                event: 'itemDisplay',
                eventRaisedBy: 'FreeHTML',
                eventAction: 'banner displayed',
                itemTypes: ["promotions"],
                rootElement: 0
            });

        },

        refreshImpression : function () {

            gtmDataObject.push({
                event: 'itemDisplay',
                eventRaisedBy: 'FreeHTML',
                eventAction: 'banner displayed',
                itemTypes: ["promotions"],
                rootElement: 0
            });

        }
    };

    var dromcomBannerManager = {

        storageName: "DromUser",
        userTerritory: {},
        forceRefreshPages : [
            {
                page: "account",
                breadcrumb: "account:my-addresses::my-addresses::NC2-mosaic:true:B2C:FR:fr",
            },
            {
                page: "checkout",
                breadcrumb: "checkout:::checkout-delivery::NC2-mosaic:true:B2C:FR:fr",
            }
        ],
        territories : [
            {
                id : "saint-barth",
                name: "Saint-Barthélemy",
                selectionID : "17789",
                codes: ["97133"],
                link: "https://www.nespresso-stbarth.com/"
            },
            {
                id : "mayotte",
                name: "Mayotte",
                selectionID : "17788",
                codes: ["976"],
                link: "https://www.nespresso.yt/"
            },
            {
                id : "saint-martin",
                name: "Saint-Martin",
                selectionID : "17790",
                codes: ["97150"],
                link: "https://www.nespresso.sx/"
            },
            {
                id : "guadeloupe",
                name: "Guadeloupe",
                selectionID : "17785",
                codes: ["971"],
                link: "https://www.nespresso.gp/"
            },
            {
                id : "martinique",
                name: "Martinique",
                selectionID : "17784",
                codes: ["97"],
                link: "https://www.nespresso.mq/"
            },
            {
                id : "guyane",
                name: "Guyane",
                selectionID : "17786",
                codes: ["973"],
                link: "https://www.nespresso.gf/"
            },
            {
                id : "reunion",
                name: "Réunion",
                selectionID : "17792",
                codes: ["974", "977", "978"],
                link: "https://www.nespresso.re/"
            }
        ],

        displayBanner : function() {

            if (this.userTerritory.name.length > 0) {

                $("#dromcom-sticky-banner-place").html(this.userTerritory.name);
                $("#dromcom-sticky-banner").find("a").attr("href", this.userTerritory.link);
                $("#dromcom-sticky-banner .dromcom-sticky-banner-wrapper").attr("data-promotion-item-id", dromcomTrackingManager.id);
                $("#dromcom-sticky-banner").addClass("show");

                $("body").addClass("drom-com-enabled");

                dromcomTrackingManager.initImpression();

            }

        },

        getUserAddresses: function(callback) {

            if ( window.napi ){

                napi.customer().read().then(function(user) {

                    napi.customer().getAddresses().then(function (customer) {

                        callback(true, customer);

                    }, function (reason) {

                        callback(false, reason);

                    });

                }, function (err) {

                    callback(false, err);

                })

            }
        },

        getStorage : function (name) {

            return window.sessionStorage.getItem(name);
        },

        setStorage : function (name, value) {

            window.sessionStorage.setItem(name,  value);
        },

        removeStorage : function (name) {

            window.sessionStorage.removeItem(name);
        },

        sortTerritoriesByCode : function (territories) {

            if(this.sortedTerritories) return this.sortedTerritories;

            var sortedTerritories = {};

            territories.forEach(function(territoryData){
                territoryData["codes"].forEach(function(item){
                    sortedTerritories[item]= territoryData;
                })
            });

            this.sortedTerritories = sortedTerritories;

            return this.sortedTerritories;
        },

        checkUserTerritory: function(zipcode) {

            var territoryCode;

            // Create sorted territories list
            var sortedTerritories = this.sortTerritoriesByCode(this.territories);
            var territoriesCodeList = Object.keys(sortedTerritories).sort(function(a, b){ return b.length - a.length});

            for (var i = 0; i < territoriesCodeList.length; i++) {
                if(zipcode.startsWith(territoriesCodeList[i]) === true){
                    territoryCode = territoriesCodeList[i];
                    break;
                }
            }

            return territoryCode;
        },

        getUserTerritory: function(userTerritoryCode) {

            this.sortTerritoriesByCode(this.territories);

            return this.sortedTerritories[userTerritoryCode];
        },

        manageBanner : function(userTerritoryCode) {

            var userTerritory = this.getUserTerritory(userTerritoryCode);

            if (userTerritory != null) {

                this.userTerritory = userTerritory;

                // init tracking
                dromcomTrackingManager.id = dromcomTrackingManager.id + "-" + userTerritory.id ;
                dromcomTrackingManager.name = dromcomTrackingManager.name + " - " + userTerritory.name;

                this.displayBanner();

                $("#dromcom-sticky-banner").on( "click", "a", function() {
                    dromcomTrackingManager.sendCustomEvent("Go to website");
                });

            }

            return userTerritory != null;

        },

        checkForceRefresh : function() {

            var self = this;

            self.forceRefreshPages.forEach(function(item){
                if(padl.pageInstanceID === item.breadcrumb){
                    self.removeStorage(self.storageName);
                }
            })

        },

        manageStorage : function() {

            var self = this;

            this.getUserAddresses(function(success, response){

                if (success == true) {

                    var territoryMatch = false;
                    var userTerritoryCode = null;

                    $.each(response, function(key, address) {
                        userTerritoryCode = self.checkUserTerritory(address.zipCode);
                        if ((userTerritoryCode != null) && (territoryMatch === false)){
                            self.setStorage(self.storageName, userTerritoryCode);
                            territoryMatch = true;
                            self.manageBanner(userTerritoryCode);
                        }
                    });

                    // if user has addresses but doesn't match with DROM
                    if((territoryMatch === false) && (response.length > 0)){
                        self.setStorage(self.storageName, "false");
                    }

                }

            });

        },

        init : function () {

            var self = this;

            // force refresh on specific pages
            self.checkForceRefresh();

            // check if storage exist
            if(self.getStorage(self.storageName) == null){
                self.manageStorage();
            }else if(self.getStorage(self.storageName) != "false"){
                self.manageBanner(self.getStorage(self.storageName));
            }

        }
    };

    $(function(){

        dromcomBannerManager.init();

    })

</script></div>

<div id="HeaderRespBlock-8797381142288-116f8751-4405-410d-b28b-86b7a89eca7c" class="crema-ui-container">
        </div>
<script>
              window.ui = window.ui || [];
              window.ui.push({"id":"HeaderRespBlock-8797381142288-116f8751-4405-410d-b28b-86b7a89eca7c","module":"Header","configuration":{"translations":{"headerrespblock.basketdropdown.credit.amountlabel":"Solde : {originalCreditFormatted}","headerrespblock.personalinformation.crossborder.personalInformationProcessingRules":"Nespresso Personal Information Processing Rules","headerrespblock.accountdropdown.signin.loginbutton.label":"S'identifier","headerrespblock.basketdropdown.label":"Votre panier ({cartItemsQuantity})","headerrespblock.personalinformation.crossborder.acceptbutton":"Accept and login","headerrespblock.basketdropdown.credit.remaninglabel":"Solde restant","headerrespblock.basketdropdown.credit.usedLabel":"ESTIMATION DU SOLDE :","headerrespblock.basketdropdown.free.creditLabel":"Crédits gratuits","headerrespblock.basketdropdown.a11y.productTable.description":"Prix total {totalPrice} {currency}, {productQuantity} {productName} prix par produit {unitPrice} {currency}","headerrespblock.basketdropdown.total.disclamermessage":"(Hors frais de livraison et offres spéciales personnalisées)","headerrespblock.accountdropdown.register.description":"Vous n'avez pas encore de compte ?","headerrespblock.accountdropdown.signin.inputhint.password":"Mot de passe","headerrespblock.basketdropdown.total.label":"Total","headerrespblock.accountDetails.cross_border.readless":"Read less","headerrespblock.cart.warning.merged":"Votre panier a été fusionné","headerrespblock.basketdropdown.emptyBasket.title":"Votre panier est vide","headerrespblock.basketdropdown.credit.paidRemainingLabel":"Payant","headerrespblock.personalinformation.crossborder.declinebutton":"Decline and logout","headerrespblock.basketdropdown.totalOrder.label":"Total de la commande","headerrespblock.cart.warning.tariff.changed":"Votre panier a été mis à jour en fonction de votre tarif.","headerrespblock.basketdropdown.emptybasket.reorderlink.label":"Renouveler une commande","headerrespblock.basketdropdown.title":"Votre panier","headerrespblock.accountdropdown.myaccount.reordertitle":"Vous souhaitez renouveler votre commande ?","headerrespblock.basketdropdown.a11y.button.close":"Fermer","headerrespblock.basketdropdown.paid.creditLabel":"Crédits payants","headerrespblock.accountdropdown.signin.a11y.showPwd":"Afficher le mot de passe","headerrespblock.accountdropdown.signin.label":"Connectez-vous","headerrespblock.personalinformation.crossborder.description":"Kindly remind you to review the below text, and only click Accept and Login if you confirm and agree to the consent.","headerrespblock.personalinformation.crossborder.generalSalesRules":"General Sales Rules","headerrespblock.basketdropdown.a11y.totalTable.description":"Informations concernant le total de votre panier et relatives à votre solde si nécessaire","headerrespblock.basketdropdown.giftsAndDiscounts":"Gifts & Discounts","headerrespblock.basketdropdown.subtotal.label":"SOUS-TOTAL :","headerrespblock.basketdropdown.credit.estimatedlabel":"Estimation du solde","headerrespblock.cart.warning.updated":"Votre panier a été mis à jour","headerrespblock.accountdropdown.signin.a11y.hidePwd":"Masquer le mot de passer","headerrespblock.accountdropdown.myaccount.welcomelabel":"Bienvenue {firstName} {lastName}","headerrespblock.accountdropdown.myaccount.title":"Mon compte","headerrespblock.cart.warning.promotions.not.calculated":"Vous devez accéder à l’étape de paiement pour afficher votre panier mis à jour.","headerrespblock.personalinformation.crossborder.privacynotice":"Agree to the {termsOfUs}, {generalSalesRules}, and {personalInformationProcessingRules}.","headerrespblock.accountdropdown.myaccount.logoutlabel":"Se déconnecter","headerrespblock.basketdropdown.freePromotionCostLabel":"Offert","headerrespblock.basketdropdown.quantityLabel":"VOTRE PANIER ({visuallyHidden}contient {/visuallyHidden}{cartTotalQuantity})","headerrespblock.personalinformation.crossborder.title":"Welcome {firstName} {lastName}","headerrespblock.personalinformation.crossborder.consentRequired":"This is a required field.","headerrespblock.personalinformation.crossborder.termsOfUs":"Terms Of Us","headerrespblock.personalinformation.crossborder.consent":"As some of Nespresso products (such as capsules) are produced outside the People's Republic of China, in order to ensure the uniformity of global business strategy and service standards, as well as for your membership points and other purposes.","headerrespblock.accountdropdown.signin.remembermelabel":"Se souvenir de moi","headerrespblock.accountDetails.cross_border.readmore":"Read more","headerrespblock.accountdropdown.signin.description":"Accédez à votre compte et passez une commande :","headerrespblock.accountdropdown.signin.inputhint.email":"Votre adresse e-mail","headerrespblock.accountdropdown.signin.title":"Se connecter","headerrespblock.basketdropdown.credit.freeRemainingLabel":"Gratuit","headerrespblock.basketdropdown.a11y.title":"Panier déroulant","headerrespblock.accountdropdown.myaccount.reorderlink.label":"Ma dernière commande","headerrespblock.cart.warning.product.not.added":"Un ou plusieurs produits n’ont pas pu être ajoutés à votre panier."},"props":{"meta":{"uid":"HeaderRespBlock-8797381142288-f696d17e-841e-461e-912c-841d0a082180","restrictions":[],"tracking":null},"logoLink":{"meta":{"uid":"respCMSSiteLogoHeaderImageLink-8831483020348-49943f75-c44b-4d2b-8dfd-ba1e4cb79f3a","restrictions":[],"tracking":null},"link":{"meta":{"uid":"respCMSSiteLogoHeaderLink-8810544551411-7d7f3bcb-bef3-406e-824a-5f4d13e76f0b","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Home","url":"/fr/fr/","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"media":{"url":"/ecom/medias/sys_master/public/30701569310750/LogoWhite.svg","altText":"Nespresso Home FR"}},"myAccountSections":[{"meta":{"uid":"respMyAccountSectionOrder-8797382878992-ae3c6b02-4391-422f-b64a-17ef6fc78d06","restrictions":[],"tracking":null},"section":"orders","sectionLink":{"meta":{"uid":"respMyAccountOrderLink-8809935689203-ae45d4df-e2e7-4dfc-826f-cdfc14f81275","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Mes commandes","url":"/fr/fr/myaccount/orders/list","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"label":"Mes commandes","icon":{"url":"/ecom/medias/sys_master/public/10506353246238/order.svg","altText":"Responsive MyAccount My Orders Media"}},{"meta":{"uid":"respMyAccountSectionEasyOrder-8797383108368-ad0ea537-ba96-4189-998a-46d95dc2d492","restrictions":[],"tracking":null},"section":"standing_orders","sectionLink":{"meta":{"uid":"respMyAccountEasyOrderLink-8809935918579-3cd4defc-46f5-44d4-9dfa-d1ef82411043","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Mes abonnements café","url":"/fr/fr/myaccount/standing-orders","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"label":"Mes abonnements café","icon":{"url":"/ecom/medias/sys_master/public/10506386735134/easyorder.svg","altText":"Responsive MyAccount Easy Orders"}},{"meta":{"uid":"respMyAccountSectionLeClub-8798454130448-8dcc8fa4-3f92-4f78-8bff-40b982d21962","restrictions":[],"tracking":null},"section":"leclub","sectionLink":{"meta":{"uid":"respMyAccountLeClubLink-8811071329779-3b7f3ec8-92b5-4b3e-8add-2ec42fa8a254","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Mon statut client","url":"/fr/fr/myaccount/leclub/membershipStatus","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"label":"Mon statut de membre","icon":{"url":"/ecom/medias/sys_master/public/10880642809886/le-club-membership.png","altText":"Responsive MyAccount Le Club Media"}},{"meta":{"uid":"respMyAccountSectionMyAddress-8797382911760-676525be-55a5-4c54-a9f1-2fa142210cf3","restrictions":[],"tracking":null},"section":"addresses","sectionLink":{"meta":{"uid":"respMyAccountMyAddressLink-8809935721971-111b782a-2f18-4238-936c-a730c4f151e7","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Mes adresses","url":"/fr/fr/myaccount/addressbook","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"label":"Mes adresses","icon":{"url":"/ecom/medias/sys_master/public/10506386079774/adress.svg","altText":"Responsive MyAccount My Addresses Media"}},{"meta":{"uid":"respMyAccountSectionMyPersonalInfo-8797382944528-580a147e-9edd-479e-a07e-5116bc972b53","restrictions":[],"tracking":null},"section":"personal_info","sectionLink":{"meta":{"uid":"respMyAccountMyPersonalInfoLink-8809935754739-9c6d23bb-38e5-4463-b4b2-0b98ee466229","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Mes informations personnelles","url":"/fr/fr/myaccount/editPersonalInformations","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"label":"Mes informations personnelles","icon":{"url":"/ecom/medias/sys_master/public/10506386210846/personnal.svg","altText":"Responsive MyAccount My Personal Information media"}},{"meta":{"uid":"respMyAccountSectionMachines-8797382977296-2c3bc848-7ea2-4fdc-a7fb-ac1271005270","restrictions":[],"tracking":null},"section":"machines","sectionLink":{"meta":{"uid":"respMyAccountMachinesLink-8809935787507-68bbd756-6e9a-4077-91b8-b5b3710ee967","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Mes machines","url":"/fr/fr/myaccount/machines","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"label":"Mes machines","icon":{"url":"/ecom/medias/sys_master/public/10506386276382/machines-ol.svg","altText":"Responsive MyAccount My Machines media"}},{"meta":{"uid":"respMyAccountSectionMyContactPreferences-8797383075600-c3303790-845e-4432-9423-7f94badfc89b","restrictions":[],"tracking":null},"section":"contact_preferences","sectionLink":{"meta":{"uid":"respMyAccountMyContactPreferencesLink-8809935853043-792ab78b-a363-4207-a65f-af4f7c1bed0c","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Mes préférences de contact","url":"/fr/fr/myaccount/showMySubscriptions","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"label":"Mes préférences de contact","icon":{"url":"/ecom/medias/sys_master/public/10506386505758/contact-pref.svg","altText":"Responsive MyAccount My Contact preferences media"}},{"meta":{"uid":"respMyAccountSectionAlerts-8797383010064-fd8228de-df03-4511-962e-61597d7922f9","restrictions":[],"tracking":null},"section":"subscriptions","sectionLink":{"meta":{"uid":"respMyAccountAlertsLink-8809935820275-e99d496a-5e32-43ba-a7b0-f21c597e8967","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Mes alertes","url":"/fr/fr/myaccount/alertsAndSubscriptions","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"label":"Mes alertes","icon":{"url":"/ecom/medias/sys_master/public/10506386407454/alerts.svg","altText":"Responsive MyAccount My ALerts and subscriptions media"}},{"meta":{"uid":"respMyAccountSectionSubscription-8797383141136-7d30ebbf-a702-44d6-80f5-c81278436a6e","restrictions":[],"tracking":null},"section":"subscriptions","sectionLink":{"meta":{"uid":"respMyAccountSubscriptionLink-8809935951347-9afc7cc4-05dd-4b98-b110-1f0b4ea84ddc","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Mes abonnements","url":"/fr/fr/myaccount/subscriptions","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"label":"Mes abonnements","icon":{"url":"/ecom/medias/sys_master/public/10506386866206/subscription.svg","altText":"Responsive MyAccount Subscription"}}],"myAccountLink":{"meta":{"uid":"respCMSSiteMyAccountLink-8810544518643-9bf01ed1-ba4a-4624-861d-56679e2e2784","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Commander","url":"/fr/fr/myaccount","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"shoppingBagLink":{"meta":{"uid":"respCMSSiteShoppingBagLink-8810544616947-5241fb05-a9f5-48fc-b823-7026aa581d7c","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Valider votre panier","url":"/fr/fr/checkoutMode","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"registrationLink":{"meta":{"uid":"respCMSSiteRegistrationLink-8810544453107-5d46896f-3748-4d9e-b34a-f19f8fcb4a3e","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Créer un compte","url":"/fr/fr/registration","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"checkisterLink":{"meta":{"uid":"respCMSSiteFastRegistrationLink-8810544485875-762af7cd-736e-486a-8f9b-b6e4d8023a24","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Créer un compte","url":"/fr/fr/fastregistration","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"forgottenPasswordLink":{"meta":{"uid":"respCMSSiteForgotPasswordLink-8810544584179-c56ae433-24c8-4f87-a783-cfb634fc5b6f","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Mot de passe oublié ?","url":"/fr/fr/forgot-password","target":"NEWWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"startShoppingLink":{"meta":{"uid":"respHeaderStartShoppingLink-8809934214643-ca0f97ae-ae3f-4d2d-ab14-efc07d2b1727","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Commander","url":"/fr/fr/order/capsules","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"benefitMessages":[],"orderCapsulesLink":{"meta":null,"name":null,"url":null,"target":null,"color":null,"javascriptOnClick":null,"lightbox":null},"orderMachinesLink":{"meta":null,"name":null,"url":null,"target":null,"color":null,"javascriptOnClick":null,"lightbox":null},"autoCheckRememberMe":false,"hideCustomerHeader":false,"rebateConfig":{"meta":null,"defaultRebateLabels":[{"meta":null,"rebateId":"-1","label":"Remise","displayLineInSummary":true},{"meta":null,"rebateId":"1","label":"Rebate (Id 1)","displayLineInSummary":true}],"enableDiscountLabel":true},"registrationMode":"STANDARD"},"eCommerceData":null}});
            </script>
        <div id="HeaderNavigationBarRespBlock-8802002249488-0623c086-b598-4d5e-97f6-be806530dbc5" class="crema-ui-container">
        </div>
<script>
              window.ui = window.ui || [];
              window.ui.push({"id":"HeaderNavigationBarRespBlock-8802002249488-0623c086-b598-4d5e-97f6-be806530dbc5","module":"HeaderNavigationBar","configuration":{"translations":{"headernavigationbarrespblock.a11y.title":"Menu principal","headernavigationbarrespblock.a11y.switch.label.close":"Fermer le sous-menu","headernavigationbarrespblock.a11y.skipLinkTarget":"Vous êtes dans le menu de navigation","headernavigationbarrespblock.a11y.submenu.open":"Ouvrir le sous-menu {menuTitle}","headernavigationbarrespblock.a11y.submenu.close":"Fermer le sous-menu {menuTitle}","headernavigationbarrespblock.a11y.switch.label.open":"Ouvrir le sous-menu","headernavigationbarrespblock.a11y.description":"Vous pouvez ouvrir un sous-menu s'il existe avec la touche située après le lien."},"props":{"meta":{"uid":"HeaderNavigationBarRespBlock-8802002249488-473eb89d-d8ae-4f68-822f-54ee40453e31","restrictions":[],"tracking":null},"menuItems":[{"meta":{"uid":"respMenuItemElement-coffee-2026-8821198137104-51587891-09b9-4b87-9a7d-32531fdf648d","restrictions":[],"tracking":null},"activatingPages":[],"dropdownMenuPanel":{"meta":{"uid":"respDropDownMenuPanelElement-coffee-2026-8821198169872-36b751f4-095b-4bf1-b3b4-a9d1f9526f27","restrictions":[],"tracking":null},"menuPanelItems":[{"meta":{"uid":"respMenuPanelItemElementCoffeeOriginal-2026-8821198104336-7f41b3d7-cdf1-45e8-91ed-4dcfee3a7be9","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47861110177822/capsule.svg","altText":null},"link":{"meta":null,"name":null,"url":null,"target":null,"color":null,"javascriptOnClick":null,"lightbox":null},"renderMode":"MEDIUMLINKS","title":"Cafés Original","mediumLinks":[{"meta":{"uid":"respMenuPanelCoffeeOriginalOrderLink-2026-9062828987891-06ab4785-99e5-4cb1-92d1-530891159e00","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Je commande","url":"/fr/fr/order/capsules/original/","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelCoffeeOriginalCoffeeBestSellersLink-2026-9062828955123-c913a28c-a825-49e1-b391-fafe5d4d0a8f","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Best-sellers Original","url":"/fr/fr/order/capsules/original?tab=Best-sellers","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}}],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementCoffeeVertuo-2026-8821199087376-420879e2-dfff-4b75-9569-1b2d009a49a5","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47914180345886/capsule-vl10.svg","altText":null},"link":{"meta":null,"name":null,"url":null,"target":null,"color":null,"javascriptOnClick":null,"lightbox":null},"renderMode":"MEDIUMLINKS","title":"Cafés Vertuo","mediumLinks":[{"meta":{"uid":"respMenuPanelCoffeeVertuoOrderLink-2026-9062829938163-e4b03cac-a8da-43c0-86ca-5cb8d6f17711","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Je commande","url":"/fr/fr/order/capsules/vertuo","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelCoffeeVertuoCoffeeBestSellersLink-2026-9062829970931-abc33182-f8b4-434b-a804-d200a437886d","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Best-sellers Vertuo","url":"/fr/fr/order/capsules/vertuo?tab=Best-sellers","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}}],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementCoffee-10%Cafes-2026-8821199152912-a26549fc-aa57-43f4-b70b-ca4db31e0a87","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47914182541342/subscription3.svg","altText":null},"link":{"meta":{"uid":"respMenuPanelAboCoffeeLink-9043827021299-feb05326-3898-4c15-942d-505917c28f3a","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Abonnement Machine Original ","url":"/fr/fr/abonnement-cafe","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"renderMode":"SMALL","title":"-10% sur vos cafés","mediumLinks":[],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementCoffee-Recettes-2026-8821199513360-4314f42d-643d-45ff-acba-3f24d594dfd6","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47914182770718/caffemachiatto.svg","altText":null},"link":{"meta":{"uid":"respNavBannerPanelRecettesLink-9062830265843-2904e72b-e9f6-43bd-a2a4-e8f9df8abc72","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":null,"url":"/fr/fr/recettes","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"renderMode":"SMALL","title":"Les recettes","mediumLinks":[],"testIdentifier":null}],"pushBanners":[{"meta":{"uid":"Menu_Cafes_Spring-Parcours_Mars-2026-8821621139216-43babf7e-e14b-4aa3-a630-1bb4e7e93556","restrictions":[],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"ImageAndTextAd_Generic_GLB_DNP_____spring-promo-2026","click":{"id":"FR_2026-Mar_B2C_INT_G0016-SpringPromo_One-shot_BRA_CB_No_cafe","name":"INP__COM__NP_______LA_"},"impression":{"id":"FR_2026-Mar_B2C_INT_G0016-SpringPromo_One-shot_BRA_CB_No_cafe","name":"INP__COM__NP_______LA_"}}},"media":{"url":"/ecom/medias/sys_master/public/49300605894686/NESPRESSO-FR-fr-IMG-WEB-SPRING26-ORG-BANNER-TEXT-MEGADROPDOWN-952X912PX-VL-28.jpg","altText":null},"linkElement":{"meta":{"uid":"link-to-french-vanilla-pdp-9063287051763-5a42e885-e4dd-4db5-a9eb-1acb9b37a8b7","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":null,"url":"https://www.nespresso.com/fr/fr/order/capsules/vertuo/french-lavender-vanilla-decaf","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null},{"meta":{"uid":"Menu_Cafes_Nespresso-40-Ans_Jan-2026-8821228807952-f6a94f8b-1bf0-49d7-88fd-bb77151916d6","restrictions":[{"type":"CMSMarketingSegmentRestriction","uid":"test-id-8930","userGroups":["test-id-8930"]}],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"ImageAndTextAd_Generic_GLB_DNP_____","click":{"id":"FR_2026-Jan_B2C_INT_G0001-40YofIconicity_One-shot_BRA_CB_No_Cafe","name":"INP__COM__NP_______LA_"},"impression":{"id":"FR_2026-Jan_B2C_INT_G0001-40YofIconicity_One-shot_BRA_CB_No_Cafe","name":"INP__COM__NP_______LA_"}}},"media":{"url":"/ecom/medias/sys_master/public/47315545489438/NESPRESSO-FR-fr-WEB-40Y-ORG-IMG-BANNER-WEB-LIFESTYLE-952X912.jpg","altText":"Je découvre, redirection vers la page catalogue cafés du site Nespresso France"},"linkElement":{"meta":{"uid":"link-to-capsule-range-40-ans-original-9062857627123-a8328765-1ee1-4bb7-9b3d-0a504cb64ffb","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":null,"url":"https://www.nespresso.com/fr/fr/40-ans-nespresso","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null},{"meta":{"uid":"Menu_Cafes_Parcours-Saint-Valentin_Jan-2026-8821325408016-9f6589f5-64e5-4a43-9726-f1c5505ea582","restrictions":[],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"ImageAndTextAd_Generic_GLB_DNP_____","click":{"id":"FR_2026-Jan_B2C_LOC_cafe_saint-valentin","name":"INP__COM__NP_______LA_"},"impression":{"id":"FR_2026-Jan_B2C_LOC_cafe_saint-valentin","name":"INP__COM__NP_______LA_"}}},"media":{"url":"/ecom/medias/sys_master/public/47480615403550/NESPRESSO-FR-fr-WEB-40Y-ORG-IMG-BANNER-952X912PX-VL-25.jpg","altText":"Je découvre, redirection vers la catégorie café Saint-Valentin de la page catalogue cafés du site Nespresso France"},"linkElement":{"meta":{"uid":"link-to-capsule-range-40-ans-original-9062857627123-39bc9b69-3f6f-4ea0-9c75-052284d75c1e","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":null,"url":"https://www.nespresso.com/fr/fr/40-ans-nespresso","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null}],"renderMode":"THREECOLUMNS"},"iconSprite":{"url":"/ecom/medias/sys_master/public/47205377015838/Picto-Onglet-Caf-s.png","altText":"Contour d'une capsule de café"},"link":{"meta":{"uid":"respHeaderNavCoffeeLink-8809934312947-fb0af6c1-9311-4156-b9b0-340773b39906","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"Tracking_Menu-Café","name":"Tracking_Menu-Café"},"impression":{"id":"Tracking_Menu-Café","name":"Tracking_Menu-Café"}}},"name":"Coffee","url":"/fr/fr/order/capsules/original","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"title":"Café","testIdentifier":null},{"meta":{"uid":"respMenuItemElement-machines-2026-8821199677200-8a8687e8-ab94-4ef3-bace-e6d1afbdb7b8","restrictions":[],"tracking":null},"activatingPages":[],"dropdownMenuPanel":{"meta":{"uid":"respDropDownMenuPanelElement-machine-2026-8821199644432-63aff28f-662f-404b-8acb-bd69310db317","restrictions":[],"tracking":null},"menuPanelItems":[{"meta":{"uid":"respMenuPanelItemElementMachinesOriginal-2026-8821199480592-6dbb79ad-9360-49a0-a8fc-0b1648174577","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862429188126/machine-technology-ol.svg","altText":null},"link":{"meta":null,"name":null,"url":null,"target":null,"color":null,"javascriptOnClick":null,"lightbox":null},"renderMode":"MEDIUMLINKS","title":"Machines à café Original","mediumLinks":[{"meta":{"uid":"respMenuPanelMachineOriginalOrderLink-2026-9062830298611-3f2f7836-3e2a-4462-b641-93981772d5ba","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Je commande","url":"/fr/fr/order/machines/original","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelMachineOriginalDiscoverLink-2026-9062830331379-2ad9359d-4c2c-48d8-8c03-e4de7d3978c7","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Je découvre","url":"/fr/fr/gamme-machines-original","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}}],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementMachinesVertuo-2026-8821199578896-bcf77404-b765-477d-afa8-1f68638ab2a5","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862429777950/machine-technology-vl.svg","altText":null},"link":{"meta":null,"name":null,"url":null,"target":null,"color":null,"javascriptOnClick":null,"lightbox":null},"renderMode":"MEDIUMLINKS","title":"Machines à café Vertuo","mediumLinks":[{"meta":{"uid":"respMenuPanelMachineVertuoOrderLink-2026-9062830364147-9c534041-5f59-469e-8664-f57c9f5b2977","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Je commande","url":"/fr/fr/order/machines/vertuo","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelMachineVertuoDiscoverLink-2026-9062830233075-92b5fa72-1abf-4a43-899f-0c9612cd9c0e","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Je découvre","url":"/fr/fr/gamme-machines-vertuo","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}}],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementMachine-19€-2026-8821199546128-e0658b73-06ba-4376-9476-19ec1ae5b9e6","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862429876254/machine-offer-ol.svg","altText":null},"link":{"meta":{"uid":"respMenuPanelMachinesAbonnement-8810857125363-9f347bd0-7396-4b5d-9200-e093771e8d2c","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Votre machine dès 19€","url":"/fr/fr/abonnement-machine","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"renderMode":"SMALL","title":"Votre machine dès 19€","mediumLinks":[],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementMachine-Assistance-2026-8821199611664-20915336-7055-4941-bb8a-497aeb60da6d","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862430335006/repair-vl.svg","altText":null},"link":{"meta":{"uid":"respNavBannerPanelServicesAssistanceLink-2026-9062955767283-1318e613-b9f6-4dbc-88aa-075d21ff53df","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":null,"url":"/fr/fr/assistance-machine#/","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"renderMode":"SMALL","title":"Entretien machine","mediumLinks":[],"testIdentifier":null}],"pushBanners":[{"meta":{"uid":"Menu_Machines_Creatista-Plus_Janvier-2026-8821393467152-1792fb3d-8d46-44c7-a3fd-47ff9a58d589","restrictions":[],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"ImageAndTextAd_Generic_GLB_DNP_____","click":{"id":"FR_2026-Feb_B2C_LOC_machine_offre_40yCreatistaPlus","name":"INP__COM__NP_______LA__"},"impression":{"id":"FR_2026-Feb_B2C_LOC_machine_offre_40yCreatistaPlus","name":"INP__COM__NP_______LA__"}}},"media":{"url":"/ecom/medias/sys_master/public/47632570155038/NESPRESSO-FR-fr-WEB-40Y-ORG-IMG-BANNER-MENU-952X912PX-OL-25.jpg","altText":"Bannière Nespresso présentant la machine Creatista Plus, accompagnée du slogan 'Devenez un barista hors pair'. Le texte incite les consommateurs à explorer les fonctionnalités de cette machine, avec un appel à l'action 'Je découvre >'."},"linkElement":{"meta":{"uid":"link-to-creatista-plus-noir-truffe-9063022843379-037d1d1d-364e-49bd-98dd-a0c33e4556cd","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":null,"url":"/fr/fr/order/machines/original/creatista-plus-noir","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null},{"meta":{"uid":"Menu_Machine_Abonnement-Machine-8798027523856-012eb69d-dbf4-48b2-ae8d-2dd4809e514b","restrictions":[],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"responsive_menu_pushbanner_machine","click":{"id":"offer_abonnement-machine-oct-2025","name":"Offer - Abonnement Machine Octobre 2025"},"impression":{"id":"offer_abonnement-machine-oct-2025","name":"Offer - Abonnement Machine Octobre 2025"}}},"media":{"url":"/ecom/medias/sys_master/public/46224075030558/Menu-abo-machine-952x912.jpg","altText":"Visuel abonnement machine Nespresso France"},"linkElement":{"meta":{"uid":"subscription-link-8810579678707-d1e9fbbd-b540-4d30-8b9e-0edca615750d","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Découvrez","url":"/fr/fr/abonnement-machine","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null}],"renderMode":"THREECOLUMNS"},"iconSprite":{"url":"/ecom/medias/sys_master/public/47249726636062/Picto-onglet-Machines-PNG-test.png","altText":null},"link":{"meta":{"uid":"Link-to-plp-machines-9058929923571-7bfb625f-122a-4921-b5e4-24c60eb18813","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"link-to-plp-machines","name":"link-to-plp-machines"},"impression":{"id":"link-to-plp-machines","name":"link-to-plp-machines"}}},"name":null,"url":"https://www.nespresso.com/fr/fr/order/machines/original","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"title":"Machines","testIdentifier":null},{"meta":{"uid":"respMenuItemElement-accessories-2026-8821199972112-0294387b-e6dc-4a23-a3ca-310d2464fd53","restrictions":[],"tracking":null},"activatingPages":[],"dropdownMenuPanel":{"meta":{"uid":"respDropDownMenuPanelElement-accessoire-2026-8821200037648-f9a4abfd-970d-4ca0-b52c-38a8901eb7eb","restrictions":[],"tracking":null},"menuPanelItems":[{"meta":{"uid":"respMenuPanelItemElementAccessoiresRecettes-2026-8821200135952-27b212e9-bd97-40bb-a4de-485498e86d22","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862430531614/cappuccino-and-latte-vl.svg","altText":null},"link":{"meta":null,"name":null,"url":null,"target":null,"color":null,"javascriptOnClick":null,"lightbox":null},"renderMode":"MEDIUMLINKS","title":"L'art des recettes","mediumLinks":[{"meta":{"uid":"respMenuPanelAccessoriesMousseursLink-2026-9062830790131-abde3cb4-4d40-4430-8195-cd7b11f47654","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Mousseurs à lait","url":"/fr/fr/accessories#nesclub2.fr.b2c/cat/accessory-collection-mousseurs-lait-preparation-recette","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelAccessoriesBaristaLink-2026-9062830822899-bff62d72-8f16-4657-9d85-b4e472614447","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Barista Collection","url":"/fr/fr/accessories#nesclub2.fr.b2c/cat/accessory-collection-barista","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}}],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementAccessoiresDegustation-2026-8821200070416-ecdbfd5f-18b0-4944-ac42-5a0958149a97","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862430760990/coffee-tasting.svg","altText":null},"link":{"meta":null,"name":null,"url":null,"target":null,"color":null,"javascriptOnClick":null,"lightbox":null},"renderMode":"MEDIUMLINKS","title":"L'art de la dégustation","mediumLinks":[{"meta":{"uid":"respMenuPanelAccessoriesTassesCuilleres-2026-9062830757363-9dd09e9e-04ab-40a6-8ee4-1469e883485e","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Tasses et cuillères","url":"/fr/fr/accessories#nesclub2.fr.b2c/cat/accessory-collection-tasses-cuilleres","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelAccessoriesBiscuitsChocolatsLink-2026-9062830691827-eafe20a3-d623-46f8-94bb-37a2db25dba7","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Biscuits et chocolats","url":"/fr/fr/accessories#nesclub2.fr.b2c/cat/accessory-collection-gourmandise-et-sucres","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}}],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementAccessoires-Detartrage-2026-8821200103184-ad366d6b-c492-4fa4-b1d5-182d15155892","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862431055902/auto-clean-system.svg","altText":null},"link":{"meta":{"uid":"Link-to-kit-detartrage-2026-9062956062195-8250e6d9-2ef7-4de2-a180-e7ff6d042abd","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":null,"url":"/fr/fr/order/accessories/vertuo/machine-entretien-kit-detartrage","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"renderMode":"SMALL","title":"Kit de détartrage","mediumLinks":[],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementAccessoires-TousLesAccessoires-2026-8821200004880-561be181-00ed-4192-93cf-2f5c0e7fe265","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862431285278/accessories.svg","altText":null},"link":{"meta":{"uid":"link-to-plp-accessoires-9050603542003-c11cb96a-6e38-476f-b479-518f4e8c4d6d","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"offer_parcours-accessoires_juillet-22","name":"Offer - Parcours Accessoires Juillet 2022"},"impression":{"id":"offer_parcours-accessoires_juillet-22","name":"Offer - Parcours Accessoires Juillet 2022"}}},"name":null,"url":"/fr/fr/accessories","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"renderMode":"SMALL","title":"Tous les accessoires","mediumLinks":[],"testIdentifier":null}],"pushBanners":[{"meta":{"uid":"Menu_Accessories_Spring-Parcours_Mars-2026-8821622384400-2303f729-89ee-455c-b0d6-57511cf5dade","restrictions":[],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"ImageAndTextAd_Generic_GLB_DNP_____spring-promo-2026","click":{"id":"FR_2026-Mar_B2C_INT_G0016-SpringPromo_One-shot_BRA_CB_No_accessoire","name":"INP__COM__NP_______LA_"},"impression":{"id":"FR_2026-Mar_B2C_INT_G0016-SpringPromo_One-shot_BRA_CB_No_accessoire","name":"INP__COM__NP_______LA_"}}},"media":{"url":"/ecom/medias/sys_master/public/49300613136414/NESPRESSO-FR-fr-IMG-WEB-SPRING26-ORG-BANNER-952X912PX-VL-28.jpg","altText":null},"linkElement":{"meta":{"uid":"Link-to-travel-mug-lavande-9063252973043-26f47e90-f737-4a48-ae5b-8ac9a78552fc","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":null,"url":"https://www.nespresso.com/fr/fr/order/accessories/vertuo/lavender-travel-mug","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null},{"meta":{"uid":"Menu_Accessoires_Maison-Nespresso_Fevrier-2026-8821423646480-8951afbb-306e-4064-b747-b5cf8b9d1cc3","restrictions":[],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"ImageAndTextAd_Generic_GLB_DNP_____","click":{"id":"FR_2026-Feb_B2C_LOC_accessoire_maison_nespresso","name":"INP__COM__NP_______LA__\t\t"},"impression":{"id":"FR_2026-Feb_B2C_LOC_accessoire_maison_nespresso","name":"INP__COM__NP_______LA__\t\t"}}},"media":{"url":"/ecom/medias/sys_master/public/47724117950494/Menu-MNproduit-952x912.jpg","altText":"Bannière cliquable, redirection vers la page d’achat des produits Maison Nespresso du site Nespresso France"},"linkElement":{"meta":{"uid":"link-to-maison-nespresso-produits-9063054693875-37ef8923-999b-4be5-8730-5e221e286285","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":null,"url":"https://www.nespresso.com/fr/fr/maison-nespresso/produits","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null}],"renderMode":"THREECOLUMNS"},"iconSprite":{"url":"/ecom/medias/sys_master/public/47251407962142/Picto-onglet-accessoires-PNG-test.png","altText":null},"link":{"meta":{"uid":"link-to-plp-accessoires-9050603542003-65bae086-32a4-462a-aab2-7ec915888af3","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"offer_parcours-accessoires_juillet-22","name":"Offer - Parcours Accessoires Juillet 2022"},"impression":{"id":"offer_parcours-accessoires_juillet-22","name":"Offer - Parcours Accessoires Juillet 2022"}}},"name":null,"url":"/fr/fr/accessories","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"title":"Accessoires","testIdentifier":null},{"meta":{"uid":"respMenuItemElement-offres-2026-8821200660240-f0be1630-95e6-4d48-add7-af8e0f0d61d6","restrictions":[],"tracking":null},"activatingPages":[],"dropdownMenuPanel":{"meta":{"uid":"respDropDownMenuPanelElement-abonnement-2026-8821200791312-d3f176ff-8edf-4ea6-8a8d-178fb96fcb88","restrictions":[],"tracking":null},"menuPanelItems":[{"meta":{"uid":"respMenuPanelItemElementOffreAbonnement-2026-8821200758544-ea3afb71-6118-4f29-84e6-1aef3a3e56c4","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862431416350/subscription2.svg","altText":null},"link":{"meta":null,"name":null,"url":null,"target":null,"color":null,"javascriptOnClick":null,"lightbox":null},"renderMode":"MEDIUMLINKS","title":"Offres abonnement","mediumLinks":[{"meta":{"uid":"respMenuPanelAboCoffeeLink-2026-9062831281651-c43afad9-0857-48d0-b2db-303f0cea4f8d","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"-10% sur vos cafés","url":"/fr/fr/abonnement-cafe","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelAboMachinesLink-2026-9062831216115-dfff7189-cdcd-4e3f-a783-f25b94a7e194","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Votre machine dès 19€","url":"/fr/fr/abonnement-machine#/","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelAboHubLink-2026-9063288362483-95c380f0-b59a-4053-bbf5-b738d1fb2b15","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Découvrir nos offres d'abonnement","url":"/fr/fr/abonnement-machine-cafe","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}}],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementAvantages-2026-8821200725776-b1e5db39-069e-4cdf-ae9f-d30824acdcc0","restrictions":[{"type":"CMSInverseRestriction","uid":"inverse-Restriction_Client-Ambassadeur-2025","originalRestriction":{"type":"CMSMarketingSegmentRestriction","uid":"Restriction_Client-Ambassadeur","userGroups":["FR_AMB_2025"]}}],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862431481886/exclusive-promotions-1-.svg","altText":null},"link":{"meta":null,"name":null,"url":null,"target":null,"color":null,"javascriptOnClick":null,"lightbox":null},"renderMode":"MEDIUMLINKS","title":"Avantages fidélité","mediumLinks":[{"meta":{"uid":"respMenuPanelAvantagesLink-2026-9062831248883-1d264f54-838b-4b3f-bfd5-59bb88e2e69c","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Je découvre","url":"/fr/fr/programme","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelAboConnect-2026-9062831314419-189dd4cb-304d-4278-be4d-02d515fbc562","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Je me connecte","url":"/fr/fr/secure/login?destination-redirect=/fr/fr/promotions","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}}],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementAmbassadors-2026-8821200693008-915f065b-9272-4d8e-91db-5adae0fabeec","restrictions":[{"type":"CMSMarketingSegmentRestriction","uid":"Restriction_Client-Ambassadeur","userGroups":["FR_AMB_2025"]}],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862431612958/exclusive-promotions-1-.svg","altText":null},"link":{"meta":null,"name":null,"url":null,"target":null,"color":null,"javascriptOnClick":null,"lightbox":null},"renderMode":"MEDIUMLINKS","title":"Offres Ambassadeurs","mediumLinks":[{"meta":{"uid":"respMenuPanel-15%AccessLink-2026-9062831511027-34a163bf-7ddb-4df4-84df-5e5b9978972d","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"-15% sur vos accessoires","url":"/fr/fr/accessories","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanel-15%MachineLink-2026-9062831445491-7cb6f1b0-afa0-481e-892c-45ad12b25a0c","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"-15% sur votre machine","url":"/fr/fr/order/machines/original","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}}],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementAllOffers-2026-8821200856848-c95fbc58-c667-4773-afb8-a3a78d23f4fb","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862431744030/promotions.svg","altText":null},"link":{"meta":{"uid":"RespHeaderNavPromotionLink-9062831478259-8b0502f3-f7ab-4554-8daa-8698c005b7cd","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Promotions","url":"/fr/fr/promotions","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"renderMode":"MEDIUM","title":"Toutes les offres","mediumLinks":[],"testIdentifier":null}],"pushBanners":[{"meta":{"uid":"Menu_Machines-Pixie-Offerte-300Caps_Mars-2026-8821586765584-2caf6f7c-592a-4db0-83ee-8febb8c77d74","restrictions":[{"type":"CMSMarketingSegmentRestriction","uid":"Restrictions_B2C_Offre_Pixie_22085","userGroups":["test-id-8930","test-id-8930-mobile"]}],"tracking":{"contentSlot":"responsive_menu_pushbanner_machine","creative":"ImageAndTextAd_Generic_GLB_DNP_____","click":{"id":"FR_2026-Mar_B2C_LOC_machine_offre_pm_machine_300Caps_22085","name":"INP__COM__NP_______LA__"},"impression":{"id":"FR_2026-Mar_B2C_LOC_machine_offre_pm_machine_300Caps_22085","name":"INP__COM__NP_______LA__"}}},"media":{"url":"/ecom/medias/sys_master/public/48986523369502/Menu-OffreMachineOfferte-300Caps-952x912-1-.jpg","altText":"Image représentant la machine pixie Nespresso France entourée de capsules de la gamme original pavec un allongé un café lacté dan sune pièce sobre."},"linkElement":{"meta":{"uid":"link-to-pixie-300-mars-2026-9063187109363-4f8fa428-7a6f-4f2b-bbbc-7e8568651f76","restrictions":[{"type":"CMSMarketingSegmentRestriction","uid":"Restrictions_B2C_Offre_Pixie_22085","userGroups":["test-id-8930","test-id-8930-mobile"]}],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"lien to pixie 300 caps mars 2026","url":"/fr/fr/pixie-300-mars-2026","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null},{"meta":{"uid":"Menu_Offres_JTC-30_22101_Mars-2026-8821561272080-03341798-1cb5-4b46-8d33-7e332e0ee470","restrictions":[{"type":"CMSMarketingSegmentRestriction","uid":"Restriction_B2C_JTC-30_Mars_22101","userGroups":["B2C_JTC-30_Mars_22101_MS"]}],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"ImageAndTextAd_Generic_GLB_DNP_____","click":{"id":"FR_2026-Mar_B2C_LOC_cafe_jours_tres_cafe30_22101","name":"INP__COM__NP_______LA__"},"impression":{"id":"FR_2026-Mar_B2C_LOC_cafe_jours_tres_cafe30_22101","name":"INP__COM__NP_______LA__"}}},"media":{"url":"/ecom/medias/sys_master/public/48950037741598/Menu-InstantsTresCafe-30-952x912.jpg","altText":"Promotion Nespresso : tasse de café sur un livre, capsules argent et or, avec un fond dégradé bleu et gris. -30% sur une sélection de cafés."},"linkElement":{"meta":{"uid":"Link-to-lp-jours-tres-cafe-30-mars-22101-9063225415155-37e5d4be-efea-4ff0-9ab6-847bf9e67390","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Link-to-lp-jours-tres-cafe-30-mars-22101","url":"https://www.nespresso.com/fr/fr/jours-tres-cafe-30-mars-2026","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null},{"meta":{"uid":"Menu_Offres_Assortiments-Cafes_2026-8821425579792-ab6b3126-9201-437f-adc9-fcf5147be661","restrictions":[],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"ImageAndTextAd_Generic_GLB_DNP_____","click":{"id":"FR_2026_B2C_LOC_offres_assortiments-cafe","name":"INP__COM__NP_______LA__"},"impression":{"id":"FR_2026_B2C_LOC_offres_assortiments-cafe","name":"INP__COM__NP_______LA__"}}},"media":{"url":"/ecom/medias/sys_master/public/49364654325790/Menu-Assortiments-952x912.jpg","altText":"Deux tasses remplies de cafés onctueux disposées sur une table à côté d'un journal avec trois capsules de la gamme Original Nespresso France."},"linkElement":{"meta":{"uid":"link-to-assortiments-prix-avantageux-2026-9063055709683-a6f21fda-78e1-4481-b979-150b4789ccf3","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":null,"url":"/fr/fr/assortiments-a-prix-avantageux-original","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null},{"meta":{"uid":"Menu-Cafes_GWP-seuil1-100Caps-22125-8821655742224-5dcbfc6d-acb8-43a5-8125-cb5ad1d1341b","restrictions":[{"type":"CMSMarketingSegmentRestriction","uid":"desk-restriction-GWPseuil1_100Caps_Avril-2026_22125","userGroups":["ID = 22125 /( 22126 Backup)"]}],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":" ImageAndTextAd_Generic_GLB_DNP_____","click":{"id":"FR_2026-Apr_B2C_LOC_offres_offre_gwpseuil1-100Caps-22125","name":"INP__COM__NP_______LA_"},"impression":{"id":"FR_2026-Apr_B2C_LOC_offres_offre_gwpseuil1-100Caps-22125","name":"INP__COM__NP_______LA_"}}},"media":{"url":"/ecom/medias/sys_master/public/49706740187166/menu-GWP-Lever-Seuil-01-952x912.jpg","altText":"L'image présente une offre promotionnelle de Nespresso France, mettant en avant une boite de financiers au chocolats, entourée de capsules de café de la gamme Original et Vertuo Nespresso France."},"linkElement":{"meta":{"uid":"Link_PLP_cafe-8797840168435-2f1ae4d5-54be-47e7-81fb-255208b12bbb","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":null,"url":"/fr/fr/order/capsules/original/","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null},{"meta":{"uid":"Menu-Cafes_GWP-seuil2-150Caps-22127-8821655709456-28a546c5-7438-4bc2-b39b-2b92d7598047","restrictions":[{"type":"CMSMarketingSegmentRestriction","uid":"desk-restriction-GWPseuil2_150Caps_Avril-2026_22127","userGroups":["22127"]}],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"ImageAndTextAd_Generic_GLB_DNP_____","click":{"id":"FR_2026-Apr_B2C_LOC_offres_offre_gwpseuil2-150Caps-22127","name":"INP__COM__NP_______LA_"},"impression":{"id":"FR_2026-Apr_B2C_LOC_offres_offre_gwpseuil2-150Caps-22127","name":"INP__COM__NP_______LA_"}}},"media":{"url":"/ecom/medias/sys_master/public/49706741170206/menu-GWP-Lever-Seuil-02-952x912.jpg","altText":" L'image présente une offre promotionnelle de Nespresso France, mettant en avant une boite de financiers au chocolats, entourée de capsules de café de la gamme Original et Vertuo Nespresso France."},"linkElement":{"meta":{"uid":"Link_PLP_cafe-8797840168435-342168d1-2f19-459d-912d-cf4f0392cd0c","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":null,"url":"/fr/fr/order/capsules/original/","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null},{"meta":{"uid":"Menu-Cafes_GWP-seuil3-200Caps-22129-8821655676688-a56a0cc1-0fae-48e9-a424-73d916b235a5","restrictions":[{"type":"CMSMarketingSegmentRestriction","uid":"desk-restriction-GWPseuil3_200Caps_Avril-2026_22129","userGroups":["22129"]}],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"ImageAndTextAd_Generic_GLB_DNP_____","click":{"id":"FR_2026-Apr_B2C_LOC_offres_offre_gwpseuil3-200Caps-22129","name":"INP__COM__NP_______LA_"},"impression":{"id":"FR_2026-Apr_B2C_LOC_offres_offre_gwpseuil3-200Caps-22129","name":"INP__COM__NP_______LA_"}}},"media":{"url":"/ecom/medias/sys_master/public/49708609568798/menu-GWP-Lever-Seuil-03-952x912.jpg","altText":"L'image présente une offre promotionnelle de Nespresso France, mettant en avant une boite de financiers au chocolats, entourée de capsules de café de la gamme Original et Vertuo Nespresso France."},"linkElement":{"meta":{"uid":"Link_PLP_cafe-8797840168435-e73cd18e-80e2-4a84-a0c0-7a1de5599ea7","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":null,"url":"/fr/fr/order/capsules/original/","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null},{"meta":{"uid":"Menu-Cafes_GWP-seuil4-280Caps-22131-8821655774992-7aa20156-dc60-4112-bfca-bdbd290276da","restrictions":[{"type":"CMSMarketingSegmentRestriction","uid":"desk-restriction-GWPseuil4_280Caps_Avril-2026_22131","userGroups":["22131"]}],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"ImageAndTextAd_Generic_GLB_DNP_____","click":{"id":"FR_2026-Apr_B2C_LOC_offres_offre_gwpseuil4-280Caps-22131","name":"INP__COM__NP_______LA_"},"impression":{"id":"FR_2026-Apr_B2C_LOC_offres_offre_gwpseuil4-280Caps-22131","name":"INP__COM__NP_______LA_"}}},"media":{"url":"/ecom/medias/sys_master/public/49708610060318/menu-GWP-Lever-Seuil-04-952x912.jpg","altText":"L'image présente une offre promotionnelle de Nespresso France, mettant en avant deux tasses pixies blanches, entourée de capsules de café de la gamme Original et Vertuo Nespresso France."},"linkElement":{"meta":{"uid":"Link_PLP_cafe-8797840168435-b268ca96-be96-4566-9bb1-5b5151d0c6c9","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":null,"url":"/fr/fr/order/capsules/original/","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null},{"meta":{"uid":"Menu-Cafes_GWP-seuil5-350Caps-22133-8821655283472-3346d90e-676b-4187-a130-800e93b1276a","restrictions":[{"type":"CMSMarketingSegmentRestriction","uid":"desk-restriction-GWPseuil5_350Caps_Avril-2026_22133","userGroups":["22133"]},{"type":"CMSMarketingSegmentRestriction","uid":"mobile-restriction-GWPseuil5_350Caps_Avril-2026_22133","userGroups":["22133"]},{"type":"CMSMarketingSegmentRestriction","uid":"desk-restriction-GWPseuil5_350Caps_Avril-2026_22133","userGroups":["22133"]},{"type":"CMSMarketingSegmentRestriction","uid":"mobile-restriction-GWPseuil5_350Caps_Avril-2026_22133","userGroups":["22133"]}],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"ImageAndTextAd_Generic_GLB_DNP_____","click":{"id":"FR_2026-Apr_B2C_LOC_offres_offre_gwpseuil5-350Caps-22133","name":"INP__COM__NP_______LA_"},"impression":{"id":"FR_2026-Apr_B2C_LOC_offres_offre_gwpseuil5-350Caps-22133","name":"INP__COM__NP_______LA_"}}},"media":{"url":"/ecom/medias/sys_master/public/49708610191390/menu-GWP-Lever-Seuil-05-952x912.jpg","altText":"L'image présente une offre promotionnelle de Nespresso France, mettant en avant deux tasses pixies blanches, entourée de capsules de café de la gamme Original et Vertuo Nespresso France."},"linkElement":{"meta":{"uid":"Link-to-plp-coffee-9051716277747-d78ef234-1baf-4ac9-be3c-b24fa1658964","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"Op_carnets-dec-21","name":"Op carnets dec 21"},"impression":{"id":"Op_carnets-dec-21","name":"Op carnets dec 21"}}},"name":null,"url":"https://www.nespresso.com/pro/fr/fr/order/capsules/pro","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null},{"meta":{"uid":"Menu-Cafes_GWP-seuil6-500Caps-22137-8821655316240-6525fe88-e5a0-44ee-8f73-0b2ddd49ecb7","restrictions":[{"type":"CMSMarketingSegmentRestriction","uid":"desk-retriction-GWPseuil6_500Caps_Avril-2026_22137","userGroups":["22137"]},{"type":"CMSMarketingSegmentRestriction","uid":"desk-retriction-GWPseuil6_500Caps_Avril-2026_22137","userGroups":["22137"]}],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"ImageAndTextAd_Generic_GLB_DNP_____","click":{"id":"FR_2026-Apr_B2C_LOC_offres_offre_gwpseuil5-500Caps-22137","name":"INP__COM__NP_______LA_"},"impression":{"id":"FR_2026-Apr_B2C_LOC_offres_offre_gwpseuil5-500Caps-22137","name":"INP__COM__NP_______LA_"}}},"media":{"url":"/ecom/medias/sys_master/public/49708610584606/menu-GWP-Lever-Seuil-06-952x912.jpg","altText":"L'image présente une offre promotionnelle de Nespresso France, mettant en avant deux tasses pixies blanches, entourée de capsules de café de la gamme Original et Vertuo Nespresso France."},"linkElement":{"meta":{"uid":"Link-to-plp-coffee-9051716277747-ee31a4b1-e2c4-47f0-ac1d-c54ef4bb0dd6","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"Op_carnets-dec-21","name":"Op carnets dec 21"},"impression":{"id":"Op_carnets-dec-21","name":"Op carnets dec 21"}}},"name":null,"url":"https://www.nespresso.com/pro/fr/fr/order/capsules/pro","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null},{"meta":{"uid":"Menu-Cafes_Parcours_JourneesNespresso_FB_Mars-2026-8821589321488-77070980-7e7a-4e4f-8419-6b20b58e758a","restrictions":[{"type":"CMSMarketingSegmentRestriction","uid":"test-id-8930","userGroups":["test-id-8930"]}],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"ImageAndTextAd_Generic_GLB_DNP_____","click":{"id":"FR_2026-Mar_B2C_LOC_cafe_journees_nespresso","name":"INP__COM__NP_______LA__"},"impression":{"id":"FR_2026-Mar_B2C_LOC_cafe_journees_nespresso","name":"INP__COM__NP_______LA__"}}},"media":{"url":"/ecom/medias/sys_master/public/49255143112734/Menu-JourneesNespresso-952x912-1-.jpg","altText":"Image représentant une tasse de café Nespresso France remplie d'un onctueux café."},"linkElement":{"meta":{"uid":"link-to-plp-original-9053422704115-ab1a2062-9797-4570-a49d-0d2b6c64668d","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"DeliveryCampaign","name":"DeliveryCampaign"},"impression":{"id":"DeliveryCampaign","name":"DeliveryCampaign"}}},"name":null,"url":"https://www.nespresso.com/fr/fr/order/capsules/original","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null},{"meta":{"uid":"Menu_Offres_15%_accessoires_Ambassadors_Fevrier-2026-8821423712016-32fff5c9-c751-43bd-a2cc-84426283a41c","restrictions":[{"type":"CMSMarketingSegmentRestriction","uid":"Restriction_Client-Ambassadeur","userGroups":["FR_AMB_2025"]}],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"ImageAndTextAd_Generic_GLB_DNP_____","click":{"id":"FR_2026_B2C_LOC_offres_15%_accessoires","name":"INP__COM__NP_______LA__"},"impression":{"id":"FR_2026_B2C_LOC_offres_15%_accessoires","name":"INP__COM__NP_______LA__"}}},"media":{"url":"/ecom/medias/sys_master/public/47724146098206/Menu-AccessoiresAmb-952x912-1-1-.jpg","altText":"J'en profite, redirection vers la page catalogue accessoires du site Nespresso France"},"linkElement":{"meta":{"uid":"link-to-plp-accessoires-9050603542003-5fefc386-f3b4-429d-adbf-6646457723bf","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"offer_parcours-accessoires_juillet-22","name":"Offer - Parcours Accessoires Juillet 2022"},"impression":{"id":"offer_parcours-accessoires_juillet-22","name":"Offer - Parcours Accessoires Juillet 2022"}}},"name":null,"url":"/fr/fr/accessories","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null},{"meta":{"uid":"Menu_Nouvel_Abonnement-cafe_juin-24-8817629538064-8d772ada-9218-4cb3-8cd3-b3fe5bdfb1e9","restrictions":[{"type":"CMSInverseRestriction","uid":"Inverse_Restriction_B2C_abo-cafe_mars_21619","originalRestriction":{"type":"CMSMarketingSegmentRestriction","uid":"Restriction_B2C_abo-cafe_mars_21619","userGroups":["B2C_abo-cafe_mars_21619_MS"]}}],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"responsive_menu_pushbanner","click":{"id":"Offer_abonnement-café_juin-2024_abonnement-café","name":"Offer - Abonnement Café"},"impression":{"id":"Offer_abonnement-café_juin-2024_abonnement-café","name":"Offer - Abonnement Café"}}},"media":{"url":"/ecom/medias/sys_master/public/31795603832862/menu-AboCafe-952x912.jpg","altText":"Je découvre, redirection vers la page Abonnement café du site Nespresso France"},"linkElement":{"meta":{"uid":"respMenuPanelAboCoffeeLink-9043827021299-5f0ec9b6-f982-4219-a2b5-ad76982bed83","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Abonnement Machine Original ","url":"/fr/fr/abonnement-cafe","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null}],"renderMode":"THREECOLUMNS"},"iconSprite":{"url":"/ecom/medias/sys_master/public/47256834867230/Picto-onglet-Promo-PNG-test.png","altText":null},"link":{"meta":{"uid":"Link-respMenuItemElement-offres-2026-9062955832819-bb7db14c-e375-49ec-9297-68783b21d4b7","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":null,"url":"/fr/fr/promotions","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"title":"Offres","testIdentifier":null},{"meta":{"uid":"respMenuItemElement-experiences-2026-8821201020688-e940b055-276b-46b4-8d25-8fb875433185","restrictions":[],"tracking":null},"activatingPages":[],"dropdownMenuPanel":{"meta":{"uid":"respDropDownMenuPanelElement-expe-2026-8821201053456-67ebc27c-1ec3-462b-8cf0-6740192f89a5","restrictions":[],"tracking":null},"menuPanelItems":[{"meta":{"uid":"respMenuPanelItemElementOffreIdeeCadeaux-2026-8821200987920-7f475347-eaa6-4ba3-9379-5fcc42f59213","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47914186899486/gift4.svg","altText":null},"link":{"meta":{"uid":"PanelElementLink-nos-idees-cadeaux-9062831904243-bf4c4f9f-f65d-40dc-98d1-cd1e0e6f7411","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Je découvre","url":"/fr/fr/nos-idees-cadeaux","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"renderMode":"MEDIUM","title":"Nos idées cadeaux","mediumLinks":[],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementMaisonNespresso-2026-8821201184528-d21d7f04-5c8d-46d4-9db6-c546733d2381","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862432595998/coffee-menu.svg","altText":null},"link":{"meta":null,"name":null,"url":null,"target":null,"color":null,"javascriptOnClick":null,"lightbox":null},"renderMode":"MEDIUMLINKS","title":"Maison Nespresso","mediumLinks":[{"meta":{"uid":"respMenuPanelLaMaisonLink-2026-9062831871475-a831ea06-0858-4846-a60b-fa0498669137","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"La Maison","url":"/fr/fr/maison-nespresso","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelLesProduitsLink-2026-9062831838707-31e01536-cb20-42f8-9dd6-d85f168fc23d","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Les produits","url":"/fr/fr/maison-nespresso/produits","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}}],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementMasterclass-2026-8821201151760-4031177f-78b7-4513-ae1d-4554c15a0a3b","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862432923678/masterclass.svg","altText":null},"link":{"meta":null,"name":null,"url":null,"target":null,"color":null,"javascriptOnClick":null,"lightbox":null},"renderMode":"MEDIUMLINKS","title":"Masterclass","mediumLinks":[{"meta":{"uid":"respMenuPanelAtelierCafeLink-2026-9062831805939-f3b58fd5-f4c9-4867-b0df-931315030392","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Je découvre les ateliers","url":"/fr/fr/ateliers-cafe","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelCreneauLink-2026-9062831773171-97592284-267b-49dc-b774-f924d6d422f8","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Je réserve mon créneau","url":"https://www.nespresso.com/boutiques-fr/?open-masterclass=1","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}}],"testIdentifier":null}],"pushBanners":[{"meta":{"uid":"Menu_Experiences_Maison-Nespresso_Fevrier-2026-8821423679248-3d4add7e-081d-4753-b0f0-093742084d11","restrictions":[],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"ImageAndTextAd_Generic_GLB_DNP_____","click":{"id":"FR_2026-Feb_B2C_LOC_experiences_maison_nespresso\t\t","name":"INP__COM__NP_______LA__"},"impression":{"id":"FR_2026-Feb_B2C_LOC_experiences_maison_nespresso\t\t","name":"INP__COM__NP_______LA__"}}},"media":{"url":"/ecom/medias/sys_master/public/47724128698398/Menu-MNglobal-952x912.jpg","altText":"Bannière cliquable, redirection vers la page Maison Nespresso du site Nespresso France"},"linkElement":{"meta":{"uid":"Link-to-maison-nespresso-9062664197619-c1a0d0a8-70a5-4fc4-8b2d-48e111d1e53e","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"maison-nespresso-landing-page-bloom-main","name":"maison-nespresso-landing-page-bloom-main"},"impression":{"id":"maison-nespresso-landing-page-bloom-main","name":"maison-nespresso-landing-page-bloom-main"}}},"name":null,"url":"https://www.nespresso.com/fr/fr/maison-nespresso","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null},{"meta":{"uid":"Menu_MaisonNespresso_Global_Janvier-2026-8821325113104-7417d70b-896e-4477-aa04-35d3e4dd50a4","restrictions":[],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"ImageAndTextAd_Generic_GLB_DNP_____","click":{"id":"FR_2026_B2C_LOC_maison_nespresso_globale","name":"INP__COM__NP_______LA__"},"impression":{"id":"FR_2026_B2C_LOC_maison_nespresso_globale","name":"INP__COM__NP_______LA__"}}},"media":{"url":"/ecom/medias/sys_master/public/47472575119390/Menu-MNglobal-952x912.jpg","altText":"Je découvre, redirection vers la page Maison Nespresso du site Nespresso France"},"linkElement":{"meta":{"uid":"Link-to-maison-nespresso-9062664197619-15771865-18eb-475b-9a01-68b6e356c84d","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"maison-nespresso-landing-page-bloom-main","name":"maison-nespresso-landing-page-bloom-main"},"impression":{"id":"maison-nespresso-landing-page-bloom-main","name":"maison-nespresso-landing-page-bloom-main"}}},"name":null,"url":"https://www.nespresso.com/fr/fr/maison-nespresso","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null}],"renderMode":"THREECOLUMNS"},"iconSprite":{"url":"/ecom/medias/sys_master/public/47263124258846/Picto-onglet-Experiences-PNG-test.png","altText":null},"link":{"meta":{"uid":"Link-LeProgramme-8811071362547-b97c0f38-a7cb-44ac-b8f2-f717b5f36367","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"DÉCOUVRIR","url":"https://www.nespresso.com/fr/fr/programme?","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"title":"Expériences","testIdentifier":null},{"meta":{"uid":"respMenuItemElement-DecouvrirNespresso-2026-8821228775184-025fbfaa-4231-4e8a-bba0-35e6732a44d6","restrictions":[],"tracking":null},"activatingPages":[],"dropdownMenuPanel":{"meta":{"uid":"respDropDownMenuPanelElement-services-2026-8821229037328-e77eb948-8a16-4dc9-b2a3-2c2b43e04aa0","restrictions":[],"tracking":null},"menuPanelItems":[{"meta":{"uid":"respMenuPanelItemElementAcheterUneMachine-2026-8821229102864-b917295b-d53f-4081-8394-79f67b745060","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862433382430/Group1.svg","altText":null},"link":{"meta":null,"name":null,"url":null,"target":null,"color":null,"javascriptOnClick":null,"lightbox":null},"renderMode":"MEDIUMLINKS","title":"Acheter une machine","mediumLinks":[{"meta":{"uid":"respMenuPanelQuelMachineChoisirLink-2026-9062859625971-45ec9234-e71a-4139-bbaf-fde4ee8779c3","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Quelle machine choisir ?","url":"/fr/fr/quel-systeme-choisir","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelOuAcheterMachineLink-2026-9062859757043-3d7f4bce-6e8a-4733-bef7-213fc3282b29","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Où acheter ma machine ? ","url":"https://www.nespresso.com/boutiques-fr/nous-trouver","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelDecouvrirMachineLink-2026-9062859658739-671b85cc-996d-4fae-8dfc-dbaa5b03db87","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Découvrir les machines","url":"/fr/fr/gamme-machines-original","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}}],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementDejaUneMachine-2026-8821229070096-599c76c8-4830-406d-b9ca-cbbd45779f00","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862433513502/coffee-assortment.svg","altText":null},"link":{"meta":null,"name":null,"url":null,"target":null,"color":null,"javascriptOnClick":null,"lightbox":null},"renderMode":"MEDIUMLINKS","title":"J'ai déjà une machine","mediumLinks":[{"meta":{"uid":"respMenuPanelDecouvrirCafeLink-2026-9062859724275-5971d1fe-e2ae-442b-8c60-d691bc3d06e2","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Découvrir nos cafés","url":"/fr/fr/experience-cafe-original","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelAcheterCafeLink-2026-9062859691507-65c8a27c-02e8-41e1-a0e4-f1bdb884b265","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Acheter du café","url":"/fr/fr/order/capsules/original","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}}],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementDevenirMembre-2026-8821229135632-af998c10-73df-4d12-b450-66a01fd926e6","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862433644574/club-membership.svg","altText":null},"link":{"meta":{"uid":"Link-LeProgramme-8811071362547-6adb72d9-6a08-4082-8cc6-1de372643761","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"DÉCOUVRIR","url":"https://www.nespresso.com/fr/fr/programme?","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"renderMode":"SMALL","title":"Devenir membre du club","mediumLinks":[],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementCommanderNespresso-2026-8821229004560-3bd8c95a-114c-4d48-92e4-9d1c051d6e21","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862433710110/ordering-online-2-.svg","altText":null},"link":{"meta":{"uid":"Link-to-ServiceCommande-2026-9062955898355-b16687d9-6199-402d-9d85-18a40364ecda","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":null,"url":"/fr/fr/services#commande","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"renderMode":"SMALL","title":"Commander chez Nespresso","mediumLinks":[],"testIdentifier":null}],"pushBanners":[{"meta":{"uid":"Menu_Nous_Trouver_boutiques_Fevrier-2026-8821423613712-221c251f-bd31-4771-b11b-f07931485bba","restrictions":[],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"ImageAndTextAd_Generic_GLB_DNP_____","click":{"id":"FR_2026_B2C_LOC_nous_trouver_boutiques","name":"INP__COM__NP_______LA__"},"impression":{"id":"FR_2026_B2C_LOC_nous_trouver_boutiques","name":"INP__COM__NP_______LA__"}}},"media":{"url":"/ecom/medias/sys_master/public/47724140920862/Menu-TrouverMaBoutique-952x912-1-1-.jpg","altText":"Trouver ma boutique, redirection vers la carte des boutiques Nespresso en France"},"linkElement":{"meta":{"uid":"linkElement-findUs-8796161037811-0f908f25-51d3-424d-81dc-7b1787b66fc3","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Find us","url":"https://www.nespresso.com/boutiques-fr/nous-trouver","target":"NEWWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null},{"meta":{"uid":"Menu_Machine_Abonnement-Machine-8798027523856-86d9ae9f-2d00-4895-9cfc-737987e4ef9e","restrictions":[],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"responsive_menu_pushbanner_machine","click":{"id":"offer_abonnement-machine-oct-2025","name":"Offer - Abonnement Machine Octobre 2025"},"impression":{"id":"offer_abonnement-machine-oct-2025","name":"Offer - Abonnement Machine Octobre 2025"}}},"media":{"url":"/ecom/medias/sys_master/public/46224075030558/Menu-abo-machine-952x912.jpg","altText":"Visuel abonnement machine Nespresso France"},"linkElement":{"meta":{"uid":"subscription-link-8810579678707-467cd716-ac38-444d-9c2c-aa692c250602","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Découvrez","url":"/fr/fr/abonnement-machine","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null}],"renderMode":"THREECOLUMNS"},"iconSprite":{"url":"/ecom/medias/sys_master/public/47375746498590/Picto-onglet-D-couvrir-Nespresso-PNG-test.png","altText":null},"link":{"meta":{"uid":"LinkPageServices-9062859396595-34eb7cab-b440-4212-932d-283ed0382ad5","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":null,"url":"https://www.nespresso.com/fr/fr/services","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"title":"Découvrir Nespresso","testIdentifier":null},{"meta":{"uid":"respMenuItemElement-Assistance-2026-8821229332240-75d918f6-1cf5-4ad8-b213-863283e733b6","restrictions":[],"tracking":null},"activatingPages":[],"dropdownMenuPanel":{"meta":{"uid":"respDropDownMenuPanelElement-assistant-2026-8821229299472-ab8a6f54-7e88-4737-a388-8f46980928ea","restrictions":[],"tracking":null},"menuPanelItems":[{"meta":{"uid":"respMenuPanelItemElementAssistantVirtuelle-2026-8821229266704-8ddf62f2-6aad-42b7-9e68-fdd2d2da16b6","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862435676190/chat-bot-1-.svg","altText":null},"link":{"meta":{"uid":"respNavBannerPanelContactAdviserLink-8810298594803-bda65729-30fc-477a-be75-73ffda39648b","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Conseillère virtuelle","url":"https://www.nespresso.com/fr/fr/service-customer-care","target":"SAMEWINDOW","color":null,"javascriptOnClick":"FRGlobalScript.chatbox.open();","lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"renderMode":"MEDIUM","title":"Assistant virtuel","mediumLinks":[],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementContacterNespresso-2026-8821229692688-06cc013c-ed4e-435c-b75c-2e893c4ae8cd","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862435807262/assistance-24-1-.svg","altText":null},"link":{"meta":null,"name":null,"url":null,"target":null,"color":null,"javascriptOnClick":null,"lightbox":null},"renderMode":"MEDIUMLINKS","title":"Contacter Nespresso","mediumLinks":[{"meta":{"uid":"respMenuPanelItemElementNousContacter-2026-9062860084723-547ebc09-1f66-4606-b839-f9ac0a2e0fc0","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Nous contacter","url":"/fr/fr/service-customer-care","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelQuelNousTrouverLink-2026-9062860117491-d9e2256c-d65b-4746-bd09-4ae80ba3a23d","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Nous trouver","url":"https://www.nespresso.com/boutiques-fr/nous-trouver","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelVosQuestionsLink-2026-9062860019187-5e99860f-9da5-433e-b0f1-6ff26380e0de","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Vos questions","url":"/fr/fr/service-faq","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}}],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementLesServices-2026-8821229659920-34c20026-9b1c-479c-8dad-e1c01881348b","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862436757534/assistance-1-.svg","altText":null},"link":{"meta":null,"name":null,"url":null,"target":null,"color":null,"javascriptOnClick":null,"lightbox":null},"renderMode":"MEDIUMLINKS","title":"Les services","mediumLinks":[{"meta":{"uid":"respMenuPanelTousLesServicesLink-2026-9062860183027-c89a03e2-d9cb-4662-899a-1b18ccc374f6","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Tous les services","url":"/fr/fr/services","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelServicesAssistanceMachineLink-2026-9062860051955-b52c12d7-d1d8-4d53-aa13-60d064f5e40e","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Services assistance machine","url":"/fr/fr/service-assistance-machine","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelSuiviDeCommandeLink-2026-9062860150259-ca93a94b-ec83-4659-85d5-1f43ebe8e360","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Suivi de commande","url":"/fr/fr/myaccount/orders/list","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}}],"testIdentifier":null}],"pushBanners":[{"meta":{"uid":"Menu_Besoin_Aide_Nos_Experts_Fevrier-2026-8821423580944-31f3a50d-233f-4a23-8948-0d3cb54b7980","restrictions":[],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"ImageAndTextAd_Generic_GLB_DNP_____","click":{"id":"FR_2026_B2C_LOC_besoin_aide_machine_nos_experts","name":"INP__COM__NP_______LA__"},"impression":{"id":"FR_2026_B2C_LOC_besoin_aide_machine_nos_experts","name":"INP__COM__NP_______LA__"}}},"media":{"url":"/ecom/medias/sys_master/public/47724136005662/Menu-AssistanceMachine-952x912-1-1-.jpg","altText":"Je découvre, redirection vers la page de présentation de l'offre Assistance machine du site Nespresso France"},"linkElement":{"meta":{"uid":"linkElement-machine-assistance-8796619429363-08c7969a-c0cb-4a4c-86ec-d1aa0b7a4bb8","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":null,"url":"/fr/fr/service-assistance-machine","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null},{"meta":{"uid":"Menu_Machine_Abonnement-Machine-8798027523856-e20ea191-d3d3-421a-ab07-865ced9b3e6d","restrictions":[],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"responsive_menu_pushbanner_machine","click":{"id":"offer_abonnement-machine-oct-2025","name":"Offer - Abonnement Machine Octobre 2025"},"impression":{"id":"offer_abonnement-machine-oct-2025","name":"Offer - Abonnement Machine Octobre 2025"}}},"media":{"url":"/ecom/medias/sys_master/public/46224075030558/Menu-abo-machine-952x912.jpg","altText":"Visuel abonnement machine Nespresso France"},"linkElement":{"meta":{"uid":"subscription-link-8810579678707-455ab581-b3f2-4541-a95f-7e7129f1bb44","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Découvrez","url":"/fr/fr/abonnement-machine","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null}],"renderMode":"THREECOLUMNS"},"iconSprite":{"url":"/ecom/medias/sys_master/public/47379010093086/Picto-onglet-Assistance-PNG-test.png","altText":null},"link":{"meta":{"uid":"respNavBannerPanelContactAdviserLink-8810298594803-3b28825c-a664-48f1-8a91-ce5f4cc8ded3","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Conseillère virtuelle","url":"https://www.nespresso.com/fr/fr/service-customer-care","target":"SAMEWINDOW","color":null,"javascriptOnClick":"FRGlobalScript.chatbox.open();","lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"title":"Assistance","testIdentifier":null},{"meta":{"uid":"respMenuItemElement-Professionnel-2026-8821230053136-bbf047de-92c8-4ab2-8a21-571eb6b0b1dc","restrictions":[],"tracking":null},"activatingPages":[],"dropdownMenuPanel":{"meta":{"uid":"respDropDownMenuPanelElement-Professionnel-2026-8821230020368-4a74b9be-26fc-46f5-a705-7af3ac6793c4","restrictions":[],"tracking":null},"menuPanelItems":[{"meta":{"uid":"respMenuPanelItemElementDecouvrirNespressoPro-2026-8821230085904-2cde00f7-d38a-445f-95ff-c1f0fb49cc0d","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47862456352798/momento-1-1-.svg","altText":null},"link":{"meta":null,"name":null,"url":null,"target":null,"color":null,"javascriptOnClick":null,"lightbox":null},"renderMode":"MEDIUMLINKS","title":"Découvrir Nespresso Professionnel","mediumLinks":[{"meta":{"uid":"respMenuPanelItemElementSolutionActivite-2026-9062860609011-387419dd-373f-4f48-b58b-7da3f8072772","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Nos solutions pour votre activité","url":"https://www.nespresso.com/pro/fr/fr/machine-cafe-professionnelle","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelItemElementDevenirClient-2026-9062860510707-584ceab1-84f1-4fe7-aa19-3312726e5624","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Comment devenir client ?","url":"https://www.nespresso.com/pro/fr/fr/devenir-client-nespresso","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelItemElementPrendreRdv-2026-9062860543475-75c45049-b3ad-4f1d-9975-e0809af0326a","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Prendre rendez-vous","url":"https://www.nespresso.com/pro/fr/fr/formulaire-demande-devis-nespresso-professionnel#form","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}}],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementCommander-2026-8821229922064-c5ff64bc-edb2-4899-bbf0-68ef0ca25a71","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47864820727838/capsule-professional-1-.svg","altText":null},"link":{"meta":null,"name":null,"url":null,"target":null,"color":null,"javascriptOnClick":null,"lightbox":null},"renderMode":"MEDIUMLINKS","title":"Commander","mediumLinks":[{"meta":{"uid":"respMenuPanelItemElementMachinesPro-2026-9062860477939-c24b275c-4017-48bc-adb5-c84f09999f1f","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Nos machines professionnelles","url":"https://www.nespresso.com/pro/fr/fr/order/machines/pro","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelItemElementNosCafe-2026-9062860576243-92b76556-b30a-4d62-86ae-7447a3c372b1","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Nos cafés","url":"https://www.nespresso.com/pro/fr/fr/order/capsules/pro","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},{"meta":{"uid":"respMenuPanelItemElementSabonner-2026-9062860707315-7c59e796-83dd-4d0f-92ce-3118dad9c677","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"S'abonner","url":"https://www.nespresso.com/pro/fr/fr/abonnements-clients-professionnels","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}}],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementPetiteEntreprise-2026-8821229954832-22aa2504-0b6b-4fae-9f67-9add9b46d1b0","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47864821186590/zenius-2-.svg","altText":null},"link":{"meta":{"uid":"Link-to-OffrePetiteEntreprise-9062860641779-d5e93866-7f79-4085-bb1b-1ef51dfbc147","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Nos offres petites entreprises","url":"https://www.nespresso.com/pro/fr/fr/offre-petites-entreprises","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"renderMode":"SMALL","title":"Nos offres petites entreprises","mediumLinks":[],"testIdentifier":null},{"meta":{"uid":"respMenuPanelItemElementServiceAssistance-2026-8821229987600-eceb83bd-ca00-42ac-88c2-7ebcb6139354","restrictions":[],"tracking":null},"highlightingColor":null,"image":{"url":"/ecom/medias/sys_master/public/47864821383198/contact-virtual-1-.svg","altText":null},"link":{"meta":{"uid":"Link-to-ContactPro-9062860674547-fd2e5114-6a55-4ca3-a838-f52d1f1983d3","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Service et assistance","url":"https://www.nespresso.com/pro/fr/fr/contact-nespresso-professionnel","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"renderMode":"SMALL","title":"Service et assistance","mediumLinks":[],"testIdentifier":null}],"pushBanners":[{"meta":{"uid":"respPushBanner_OP_Momento-Black_jan-2026-pro-8816311609104-44900bfc-63c1-4ed5-9c14-09e27b3a39cd","restrictions":[],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"responsive_menu_pushbanner","click":{"id":"offer_momento-black_jan-2026_pro","name":"Offer - Momento Black 2026"},"impression":{"id":"offer_momento-black_jan-2026_pro","name":"Offer - Momento Black 2026"}}},"media":{"url":"/ecom/medias/sys_master/public/47315693076510/952x912-Nespresso-BtC-Menu-Momento-Black.jpg","altText":"Image Machine Momento Black Series"},"linkElement":{"meta":{"uid":"respPushBanner_OP_Momento-Black_jan-2026_url-9061909255667-d127e094-fe73-4f0a-870e-f8d050b51526","restrictions":[],"tracking":{"contentSlot":"responsive_menu_pushbanner","creative":"responsive_menu_pushbanner","click":{"id":"offer_momento-black_jan-2026_pro","name":"Offer - Momento Black 2026"},"impression":{"id":"offer_momento-black_jan-2026_pro","name":"Offer - Momento Black 2026"}}},"name":null,"url":"https://www.nespresso.com/pro/fr/fr/order/machines/pro/momento-black-series","target":"SAMEWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"lightbox":{"linkLabel":null,"title":null,"content":null,"displayLightboxInformation":false},"backgroundColor":null}],"renderMode":"THREECOLUMNS"},"iconSprite":{"url":"/ecom/medias/sys_master/public/47379030802462/Picto-onglet-Pro-PNG-test.png","altText":null},"link":{"meta":{"uid":"respHeaderNavBusinessLink-8809934509555-d13f9795-d5bd-4594-80b7-9135a056d733","restrictions":[],"tracking":{"contentSlot":"no_tracking","creative":"no_tracking","click":{"id":"no_tracking","name":"no_tracking"},"impression":{"id":"no_tracking","name":"no_tracking"}}},"name":"Professional","url":"https://www.nespresso.com/pro/fr/fr/","target":"NEWWINDOW","color":null,"javascriptOnClick":null,"lightbox":{"meta":null,"title":null,"content":null,"options":[]}},"title":"Professionnel","testIdentifier":null}],"homeMenuItem":{"meta":null,"activatingPages":null,"dropdownMenuPanel":null,"iconSprite":null,"link":null,"title":null,"testIdentifier":null}},"eCommerceData":null}});
            </script>
        <div id="block-8810744534517" class="free-html" data-label=""  >
    <style type="text/css" media="all">

    @media screen and (min-width: 996px) {

        /* MENU : background blue Vertuo menu  */
        .HeaderNavigationBar .HeaderNavigationBarItem:nth-child(1) .HeaderNavigationBarItem__element {
            background: #3d8705;
        }
        .HeaderNavigationBar .HeaderNavigationBarItem:nth-child(1) .HeaderNavigationBarItem__element .HeaderNavigationBarItem__title {
            color: #ffffff;
        }
        .HeaderNavigationBar .HeaderNavigationBarItem:nth-child(1):hover .HeaderNavigationBarItem__element {
            background: none;
        }
        .HeaderNavigationBar .HeaderNavigationBarItem:nth-child(1):hover .HeaderNavigationBarItem__element .HeaderNavigationBarItem__title{
            color: #000000;
        }
        .HeaderNavigationBar .HeaderNavigationBarItem:nth-child(2):before{
            border-left: none;
        }

        /* MENU : Fix conflict with HP  */
        .HeaderNavigationBar .HeaderNavigationBarDropdown__item--small img {
            width: 80px !important;
            max-width: 80px !important;
            height: 80px !important;
        }
        .HeaderNavigationBar .HeaderNavigationBarDropdown__item--medium img {
            width: 120px !important;
            max-width: 120px !important;
            height: 120px !important;
        }

        /* MENU : Hide title from medium bloc in the main menu*/
        /*.HeaderNavigationBar .HeaderNavigationBarDropdown__item--medium-links .HeaderNavigationBarDropdown__item-title {*/
        /*    display: none;*/
        /*}*/

        /* MENU : clean rendering menu abonnement desktop */
        .HeaderNavigationBar .HeaderNavigationBarItem:nth-child(2) .HeaderNavigationBarDropdown__item--medium .HeaderNavigationBarDropdown__item-title {
            padding-top: 10px !important;
        }

        /* MENU : clean rendering menu Avantages desktop, block abonnement */
        li.HeaderNavigationBarItem:nth-child(5) div div.HeaderNavigationBarDropdown ul.HeaderNavigationBarDropdown__list li.HeaderNavigationBarDropdown__item--medium-links:nth-child(2) a.HeaderNavigationBarDropdown__item-heading div.HeaderNavigationBarDropdown__item-media img.HeaderNavigationBarDropdown__item-media-image {
            width: 200px !important
        }

        /* MENU : clean rendering menu medium desktop */
        .HeaderNavigationBar .HeaderNavigationBarItem:nth-child(5) .HeaderNavigationBarDropdown__item--medium .HeaderNavigationBarDropdown__item-title,
        .HeaderNavigationBar .HeaderNavigationBarItem:nth-child(7) .HeaderNavigationBarDropdown__item--medium .HeaderNavigationBarDropdown__item-title,
        .HeaderNavigationBar .HeaderNavigationBarItem:nth-child(8) .HeaderNavigationBarDropdown__item--medium .HeaderNavigationBarDropdown__item-title {
            min-height: 36px !important;
            margin-bottom: 0 !important;
        }
        .HeaderNavigationBar .HeaderNavigationBarDropdown__medium-links {
            padding-top: 10px;
        }

        /* MENU : Exceptions for B2B menu */
        .HeaderNavigationBar .HeaderNavigationBarItem:nth-child(10) .HeaderNavigationBarDropdown__item--medium-links .HeaderNavigationBarDropdown__item-title {
            display: block !important;
        }
        .HeaderNavigationBar .HeaderNavigationBarItem:nth-child(10) .HeaderNavigationBarDropdown__medium-links {
            padding-top: 0px;
        }

    }

    @media screen and (max-width: 995px) {

        /* MENU : clean rendering subchild menu mobile */
        .HeaderNavigationBar .HeaderNavigationBarDropdown ul li ul li {
            text-indent: 12px !important;
        }

        /* Download APP Banner : Hide smart banner  */
        html[data-smartbanner-original-margin-top='0'] {
            margin-top: 0 !important;
        }
        .smartbanner {
            display: none !important;
        }

    }

    /* GLOBAL : Hide the techno popin from all PLP */

    .ProductList__panel .ProductListTechnologyLightbox {
        display: none;
    }

    /* PLP : Switch product title to uppercase for all PLP */
    .ProductList .ProductList__content .ProductListElement__name a {
        text-transform: uppercase;
    }

    @media (max-width: 340px) {

        /* PLP : Fix technology switcher */
        .ProductList .ProductListTechnologies__link  {
            margin-right: 20px;
        }

    }

    #header .Header__inline {
        display:block;
    }

    body:not(.PageCheckout) header #header {
        min-height: 3.125rem;
    }

    .ResponsiveContainer .DesktopTopBannerSticky, .ResponsiveContainer .DesktopTopBanner {
        z-index: 999;
    }

    @media screen and (min-width: 768px){
        body:not(.PageCheckout) header #header {
            min-height: 3.25rem;
        }
    }
    @media screen and (min-width: 996px){
        body:not(.PageCheckout) header #header {
            min-height: 10.125rem;
        }
    }

    [data-product-id="7278.80"].add-to-bag .PredefinedQuantityList__quantity:nth-child(11),
    [data-product-id="7278.80"].add-to-bag .PredefinedQuantityList__quantity:nth-child(12),
    [data-product-id="7278.80"].add-to-bag .PredefinedQuantityList__quantity:nth-child(13),
    [data-product-id="7278.80"].add-to-bag .PredefinedQuantityList__quantity:nth-child(14),
    [data-product-id="7278.80"].add-to-bag .PredefinedQuantityList__quantity:nth-child(15)
    {
        display: none;
    }

    [id="ProductDetail__erp.fr.b2c/prod/7278.80"] .PredefinedQuantityList__quantity:nth-child(11),
    [id="ProductDetail__erp.fr.b2c/prod/7278.80"] .PredefinedQuantityList__quantity:nth-child(12),
    [id="ProductDetail__erp.fr.b2c/prod/7278.80"] .PredefinedQuantityList__quantity:nth-child(13),
    [id="ProductDetail__erp.fr.b2c/prod/7278.80"] .PredefinedQuantityList__quantity:nth-child(14),
    [id="ProductDetail__erp.fr.b2c/prod/7278.80"] .PredefinedQuantityList__quantity:nth-child(15)
    {
        display: none;
    }

</style>
<script>$(function(){(["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document)&&$("#header").on("click","#ta-login-dropdown--not-logged",function(){setTimeout(function(){$("#header").find(".AccessibleLink.DefaultLink.LoginForm__forgotten-password").attr("target","_self")},500)})})</script></div>

<div id="block-8823523071477" class="free-html" data-label=""  >
    <!-- Fonctions js - Version 1.5.20 -->
<!-- Objets utilitaires : GenericOfferManager, frUtils, userManager, productManager, TrackingManager -->

<script>

    var frConfig = frConfig || {};
    frConfig.pagesNames = {
        coffeePDP: "fiche produit capsules page pdp",
        coffeePLP: "fiche produit capsules page pdp_plp",
        shopping: "checkout-shopping-bag",
        homepage: "home page"
    };

    const techno = {
        original: "original",
        vertuo: "vertuo"
    };

    /*
     * Objet générique qui regroupe les fonctionnalités communes permettant de gérer l'affichage d'une bannière
     * Prend en paramètre l'objet OfferManagerParam {offerId, urlParam, urlValues}
     */
    class GenericOfferManager {
        constructor(offerManagerParam = {}) {

            this.offer = {
                id: offerManagerParam.offerId || "",
                priority: (frConfig.priority === undefined ? "" : frConfig.priority[offerManagerParam.offerId])
            };
            this.user = {};
            this.customerSelectionId = "";
            this.paramEligibility = {
                key: offerManagerParam.urlParam || "",
                expectedValues: offerManagerParam.urlValues || []
            };
            this.isDynamicBanner = offerManagerParam.isDynamic || false;
            this.isTimeRestrictionEligible = isTimeRestrictionEligible;
            this.getEligibleJourneyByStorage = getEligibleJourneyByStorage;
            this.getEligibleJourneyByID = getEligibleJourneyByID;
            this.getJourneyById = getJourneyById;
            this.getEligibleJourneyByParam = getEligibleJourneyByParam; // 2 versions ?
            this.isEligibleInStorage = isEligibleInStorage;
            this.isEligibleByParam = isEligibleByParam;
            this.isInExpectedParamValues = isInExpectedParamValues;
            this.injectHomepage = injectHomepage;
            this.injectMenuBanner = injectMenuBanner;
            this.removeStaticTopHorizontalPlp = removeStaticTopHorizontalPlp;
            this.injectStaticTopHorizontalPlp = injectStaticTopHorizontalPlp;
            this.injectStaticTopHorizontalPdp = injectStaticTopHorizontalPdp;
            this.isPageTechnoMatch = isPageTechnoMatch;
            this.injectResponsiveBannerInShoppingBag = injectResponsiveBannerInShoppingBag;
            this.injectResponsiveBannerInShoppingBagCapsTechno = injectResponsiveBannerInShoppingBagCapsTechno;
            this.getResponsiveImagePath = getResponsiveImagePath;
            this.capsTechnoMatch = capsTechnoMatch;
            this.getQuantityCartByTechno = getQuantityCartByTechno;
            this.casperLoggingForConnectedUser = casperLoggingForConnectedUser;
            this.casperLoggingForNotConnectedUser = casperLoggingForNotConnectedUser;
            this.appendOPBannerDivToResponsiveContainer = appendOPBannerDivToResponsiveContainer;
        }
    }

    /*
     * date format : string, eg : "2023-01-30"
     * default value for end date useful for fil rouge offers with no end date
    */
    function isTimeRestrictionEligible(startDate, endDate = "2099-01-01") {
        let today = new Date();
        let journeyStartDate = new Date(startDate);
        journeyStartDate.setHours(0, 1, 0);
        let journeyEndDate = new Date(endDate);
        journeyEndDate.setHours(23, 59, 0);
        return today >= journeyStartDate && today <= journeyEndDate;
    }

    function getEligibleJourneyByStorage(storageName) {
        let self = this;

        let journey = this.journeys.filter(function (s) {
            return (s.id === frUtils.getStorage(storageName));
        });

        return (journey.length > 0) ? journey[0] : null;
    }

    function getEligibleJourneyByID(userCustomerIDs) {
        if (userCustomerIDs === undefined || userCustomerIDs === null) {
            return null;
        }

        let offer = this.journeys.filter(function (s) {
            return (s.customerSelectionId !== undefined) && (userCustomerIDs.indexOf(s.customerSelectionId) > -1);
        });

        return (offer.length > 0) ? offer[0] : null;
    }

    function getJourneyById(id) {
        let self = this;

        let offer = this.journeys.filter(function (s) {
            return (s.id === id);
        });

        return (offer.length > 0) ? offer[0] : null;
    }

    function getEligibleJourneyByParam() {
        let self = this;

        let eligibleJourney = this.journeys.filter(function (journey) {
            return (journey.segmentUrl !== undefined) && (journey.segmentUrl === frUtils.getUrlParameter(self.paramEligibility.key));
        });

        return (eligibleJourney.length > 0) ? eligibleJourney[0] : null;
    }

    function isEligibleInStorage(storageName) {
        // get value stored in storage
        let value = frUtils.getStorage(storageName);
        return this.isInExpectedParamValues(value);
    }

    function isEligibleByParam() {
        // get the value of a given url parameter
        let value = frUtils.getUrlParameter(this.paramEligibility.key);
        return this.isInExpectedParamValues(value);
    }

    function isInExpectedParamValues(value) {
        if (value === undefined) {
            return false;
        }
        if (this.paramEligibility.expectedValues.indexOf(value) > -1) {
            return true;
        }
        return false;
    }

    function getTracking(journey, techno) {
        return (journey.tracking[techno] != null) ? journey.tracking[techno] : journey.tracking;
    }

    function injectHomepage(journey, divId, hpBanner, pageName) {

        if (pageName !== frConfig.pagesNames.homepage) {
            return;
        }

        let html = $(divId)[0].innerHTML; //html();

        $(".ns-store-locator__wrapper").after(html);

        hpBanner.init(journey.idDp, journey.modalities.content);

        // set tracking
        $(".dp-banner-hp").attr("data-promotion-item-id", journey.steps.homepage.tracking.id);
        TrackingManager.pushPromotionImpressionTracking(journey.steps.homepage.tracking);

        $(".dp-banner-hp .dp-banner-hp__link").on("click", function () {
            TrackingManager.pushPromotionClickTracking("Home Page block", journey.steps.homepage.tracking);
        });
    }

    function injectMenuBanner(journey, menuBanners) {

        if ($("[id^=HeaderNavigationBarRespBlock]").length === 0) {
            return;
        }

        let self = this;

        casperComponentProvider.getMenuBanner().then(function (MenuBanner) {
            menuBanners.forEach(function (menuBanner) {
                new MenuBanner(
                    {
                        tabName: menuBanner.tabs,
                    },
                    {
                        url: menuBanner.link,
                        image: menuBanner.img,
                        tracking: {
                            id: menuBanner.tracking.id,
                            name: menuBanner.tracking.name,
                            creative: menuBanner.tracking.creative
                        }
                    }
                )
            });
        })
    }

    function injectResponsiveBannerInShoppingBag(banners, modalities, pageName) {

        if (pageName == frConfig.pagesNames.shopping) {

            var self = this;

            var container = document.createElement("div");
            var containerID = "OfferShoppingStaticBanner";
            container.setAttribute('id', containerID);

            var mainBlock = $(".responsive-shopping-bag__top-components");
            mainBlock.prepend(container);

            casperComponentProvider.getPromotionBanner().then(function (PromotionBanner) {

                banners.forEach(function (blockContent) {
                    new PromotionBanner(
                        {
                            elementId: containerID,
                            // title: self.offer.name
                        },
                        {
                            image: self.getResponsiveImagePath(blockContent),
                            tracking: {
                                id: blockContent.tracking.id,
                                name: blockContent.tracking.name,
                                creative: blockContent.tracking.creative
                            },
                            lightbox: {
                                linkLabel: modalities.label,
                                title: modalities.title,
                                content: modalities.content,
                            }
                        }
                    );
                    frUtils.hideStaticShoppingBanner();
                });
            });
        }
    }

    function injectResponsiveBannerInShoppingBagCapsTechno(banners, modalities, pageName) {

        if (pageName == frConfig.pagesNames.shopping) {

            let self = this;

            let container = document.createElement("div");
            let containerID = "OfferShoppingStaticBanner";
            container.setAttribute('id', containerID);

            let mainBlock = $(".responsive-shopping-bag__top-components");
            mainBlock.prepend(container);

            casperComponentProvider.getPromotionBanner().then(function (PromotionBanner) {

                banners.forEach(function (banner) {

                    self.capsTechnoMatch(banner.techno, function (result) {

                        if (result === false) {
                            return;
                        }

                        new PromotionBanner(
                            {
                                elementId: containerID,
                                // title: self.offer.name
                            },
                            {
                                image: self.getResponsiveImagePath(banner),
                                tracking: {
                                    id: banner.tracking.id,
                                    name: banner.tracking.name,
                                    creative: banner.tracking.creative
                                },
                                lightbox: {
                                    linkLabel: modalities.label,
                                    title: modalities.title,
                                    content: modalities.content,
                                }
                            }
                        );

                        frUtils.hideStaticShoppingBanner();
                    });
                });
            });
        }
    }

    function removeStaticTopHorizontalPlp() {
        $("#OfferPLPStaticBanner").remove();
    }

    function injectStaticTopHorizontalPlp(bannerContent, journeyName, modalities, pageName) {

        if (pageName === frConfig.pagesNames.coffeePLP) {

            let self = this;

            let container = document.createElement("div");
            let containerID = "OfferPLPStaticBanner";
            container.setAttribute('id', containerID);
            let mainBlock = $("#main");
            mainBlock.prepend(container);

            casperComponentProvider.getPromotionBanner().then(function (PromotionBanner) {

                bannerContent.forEach(function (blockContent) {

                    if (self.isPageTechnoMatch(blockContent)) {

                        new PromotionBanner(
                            {
                                elementId: containerID,
                                title: journeyName
                            },
                            {
                                image: self.getResponsiveImagePath(blockContent),
                                url: blockContent.link,
                                tracking: {
                                    id: blockContent.tracking.id,
                                    name: blockContent.tracking.name,
                                    creative: blockContent.tracking.creative,
                                    position: blockContent.tracking.position
                                },

                                lightbox: {
                                    linkLabel: modalities.label,
                                    title: modalities.title,
                                    content: modalities.content,
                                }
                            }
                        );

                        $("#" + containerID).show();
                        frUtils.hideStaticPLPBanner();
                    }
                });
            });
        }
    }

    function injectStaticTopHorizontalPdp(bannerContent, journeyName, modalities, pageName) {

        if (pageName === frConfig.pagesNames.coffeePDP) {

            let self = this;

            let container = document.createElement("div");
            let containerID = "OfferPDPStaticBanner";
            container.setAttribute('id', containerID);
            let mainBlock = $("#main");
            mainBlock.prepend(container);

            casperComponentProvider.getPromotionBanner().then(function (PromotionBanner) {

                bannerContent.forEach(function (blockContent) {

                    if (self.isPageTechnoMatch(blockContent)) {

                        new PromotionBanner(
                            {
                                elementId: containerID,
                                title: journeyName
                            },
                            {
                                image: self.getResponsiveImagePath(blockContent),
                                url: blockContent.link,
                                tracking: {
                                    id: blockContent.tracking.id,
                                    name: blockContent.tracking.name,
                                    creative: blockContent.tracking.creative
                                },

                                lightbox: {
                                    linkLabel: modalities.label,
                                    title: modalities.title,
                                    content: modalities.content,
                                }
                            }
                        );

                        $("#" + containerID).show();
                        frUtils.hideStaticPLPBanner();
                    }
                });
            });
        }
    }


    function getResponsiveImagePath(content) {

        let imgPath;
        if (content.img.desktop !== undefined && content.img.mobile !== undefined) {
            let isMobile = (frUtils.whichDevice() === "mobile") ? true : false;
            imgPath = content.img.desktop;

            if (isMobile === true) {
                imgPath = content.img.mobile;
            }
        } else {
            imgPath = content.img;
        }

        return imgPath;
    }

    function isPageTechnoMatch(banner) {
        return banner.techno == "hybrid" || (banner.techno == techno.original && frUtils.isOriginal()) || (banner.techno == techno.vertuo && !frUtils.isOriginal());
    }

    function capsTechnoMatch(bannerTechno, callback) {
        if (bannerTechno !== techno.vertuo) {
            callback(true);
            return;
        }

        this.getQuantityCartByTechno(bannerTechno, function (technoQuantity, totalQuantity) {
            let result = (technoQuantity > 0) ? true : false;
            callback(result);
        });
    }

    function getQuantityCartByTechno(techno, callback) {

        window.napi.cart().read().then(function (cart) {
            let technoQuantity = 0, totalQuantity = 0;
            Promise.all(
                cart.map(function (item) {
                    return window.napi
                        .catalog()
                        .getProduct(item.productId)
                        .then(function (product) {

                            let quantity = 0;
                            let category = (techno !== "both") ? "capsules_" + techno : "capsules";
                            let caps_match = (product.rootCategory === category) ? true : false;

                            if (product.unitQuantity <= 10) {
                                quantity = item.quantity;
                            } else if (product.unitQuantity > 10) {
                                quantity = product.unitQuantity * item.quantity;
                            }

                            technoQuantity = (caps_match === true) ? technoQuantity + quantity : technoQuantity;
                            totalQuantity = totalQuantity + quantity;
                        });
                })
            ).then(function () {
                callback(technoQuantity, totalQuantity);
            });
        });
    }

    function casperLoggingForConnectedUser(journey, offerLabel) {
        new casperEventHub.Experience(offerLabel + " - " + journey.id)
            .visitorIs({
                selectionIDs: casperEventHub.allOf(journey.customerSelectionId)
            })
            .executeOnMatch(function (data) {
                data.unsubscribe();
            })
            .evaluate();
    }

    function casperLoggingForNotConnectedUser(journey, offerLabel) {
        new casperEventHub.Experience(offerLabel + " - " + journey.id)
            .executeOnMatch(function (data) {
                data.unsubscribe();
            })
            .evaluate();
    }

    function appendOPBannerDivToResponsiveContainer(divId) {
        $(".DynamicBanner .ResponsiveContainer").append('<div id=' + divId + '><div></div></div>');
    }

    GenericOfferManager.prototype.display = function () {
        // Implémentation par les classes filles
        frUtils.devModeLog("offer manager - display générique");
    };


    /*
    * Objet spécifique aux offres avec bannières statiques sur ID, notamment les offres net acquisition
    * param : paramètre d'entrée constitué de offerId, l'id de l'offre (pour indiquer la priorité de l'offre)
    * olIds, la liste des id éligibles à l'affichage sur original
    * vlIds, la liste des id éligibiles à l'affichage sur vertuo
    */
    class StaticOfferOnIdManager extends GenericOfferManager {
        constructor(param) {
            super(param);
            this.olIds = param.olIds;
            this.vlIds = param.vlIds;
            this.launch = staticIdlaunch;
            this.isEligibleOL = isEligibleOL;
            this.isEligibleVL = isEligibleVL;
        }
    }

    function isEligibleOL(user) {
        return frUtils.isOriginal() && userManager.isCustomerInSelectionIds(this.olIds, user);
    }

    function isEligibleVL(user) {
        return !frUtils.isOriginal() && userManager.isCustomerInSelectionIds(this.vlIds, user);
    }

    function staticIdlaunch(user) {

        if (this.isEligibleOL(user)) {
            bannerManager.subscribeToOLDisplay(this);
        }
        if (this.isEligibleVL(user)) {
            bannerManager.subscribeToVLDisplay(this);
        }
    }

    /*
     * Utility object
     */
    var frUtils = {

        getTechnoFromUrl: function () {
            return (this.isOriginal() ? techno.original : techno.vertuo);
        },

        getQueryParams: function () {
            let queryParams = {};
            window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (_, key, value) {
                return queryParams[key] = value;
            });
            return queryParams;
        },

        isOriginal: function () {
            let isOriginal;
            if (window.location.pathname.indexOf('capsules/original') >= 0) {
                isOriginal = true;
            } else if (window.location.pathname.indexOf('capsules/vertuo') >= 0) {
                isOriginal = false;
            } else {
                isOriginal = this.getQueryParams()["techno"] === techno.original;
            }

            return isOriginal;
        },

        isMachinePageOriginal: function () {
            let isOriginal = false;
            if (window.location.pathname.indexOf('machines/original') >= 0) {
                isOriginal = true;
            } else if (window.location.pathname.indexOf('machines/vertuo') >= 0) {
                isOriginal = false;
            }

            return isOriginal;
        },

        devModeLog: function (outputString, outputVar) {
            if (this.isDevEnv()) {
                if (outputVar !== undefined) {
                    console.log(outputString, outputVar);
                } else {
                    console.log(outputString);
                }
            }
        },

        isDevEnv: function () {
            return this.getQueryParams()["env"] === "dev";
        },

        merge: function (target, source) {
            let self = this;
            let output = Object.assign({}, target);
            if (source) {
                Object.keys(source).forEach(function (key) {
                    if (source[key] && source[key].constructor === Object) {
                        output[key] = self.merge(output[key] || {}, source[key]);
                    } else {
                        output[key] = source[key]
                    }
                })
            }
            return output;
        },

        roundNumber: function (num, scale) {
            if (!("" + num).includes("e")) {
                return +(Math.round(num + "e+" + scale) + "e-" + scale);
            } else {
                let arr = ("" + num).split("e");
                let sig = ""
                if (+arr[1] + scale > 0) {
                    sig = "+";
                }
                let i = +arr[0] + "e" + sig + (+arr[1] + scale);
                let j = Math.round(i);
                let k = +(j + "e-" + scale);
                return k;
            }
        },

        whichDevice: function () {

            var breakpoint = {
                tablet: "996",
                mobile: "768"
            };

            var device = "desktop";
            var width = $(window).width();

            if (width < breakpoint.mobile) {
                device = "mobile";
            } else if (width < breakpoint.tablet) {
                device = "tablet";
            }

            return device;
        },

        performanceStartMap: new Map(),

        performanceEndMap: new Map(),

        performanceLogger: function (descriptionId) {

            let keys = Object.keys(this.performanceStartMap);

            if (Array.from(keys).includes(descriptionId)) {
                this.performanceEndMap.set(descriptionId, new Date().getTime());
                let elapsedTime = this.performanceEndMap.get(descriptionId) - this.performanceStartMap.get(descriptionId);
                this.devModeLog("Temps Exec - " + descriptionId + " : " + elapsedTime + "ms");
            } else {
                this.performanceStartMap.set(descriptionId, new Date().getTime());
            }
        },

        getPageName: function () {

            return new Promise((resolve) => {
                // on utilise setInterval pour vérifier la valeur de la variable toutes les 300ms
                const interval = setInterval(() => {
                    if (typeof window.padl.page != "undefined" && window.padl.page.pageInfo.pageName !== null) {
                        // Si la variable est définie, on arrête l'intervalle et on resolve la promesse avec la valeur de la variable
                        clearInterval(interval);
                        resolve(window.padl.page.pageInfo.pageName);
                    }
                }, 300);
            });
        },

        hideStaticPLPBanner: function () {
            let $original_banner = $("[id^=RespFRCoffeePLPOriginalTopHorizontalBanner]");
            let $vertuo_banner = $("[id^=RespFRCoffeePLPVertuoTopHorizontalBanner]");

            $original_banner.hide();
            $vertuo_banner.hide();
        },

        hideStaticShoppingBanner: function () {
            let $banner = $("[id^=RespFRShoppingBag-TopHorizontalBanner]");
            $banner.hide();
        },

        hideInjectedPLPBanner() {
            let banner = $("#OfferPLPStaticBanner");
            banner.hide();
        },

        getStorage: function (name) {
            return window.sessionStorage.getItem(name);
        },

        setStorage: function (name, value) {
            window.sessionStorage.setItem(name, value);
        },

        getUrlParameters: function () {
            let params = {};
            window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (m, key, value) {
                params[key] = value;
            });
            return params;
        },

        getUrlParameter: function (name) {
            name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
            let regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
            let results = regex.exec(location.search);
            return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
        },

        /**
          * Stocke une ancre dans sessionStorage si un paramètre d'URL spécifique est présent.
          * @param {string} paramName - Nom du paramètre à vérifier (ex: "destination-redirect").
          * @param {string} redirectValue - Valeur attendue (ex: "/fr/fr/programme").
          * @param {string} defaultAnchor - L'ancre à stocker si aucune n'est trouvée (ex: "#avantages").
         */
        storeAnchorIfRedirected(paramName, redirectValue, defaultAnchor = null) {
            const params = new URLSearchParams(window.location.search);
            const destination = params.get(paramName);

            if (destination && decodeURIComponent(destination) === redirectValue) {
                // Récupère l'ancre de l'URL, sinon utilise l'ancre par défaut
                const currentAnchor = window.location.hash || defaultAnchor;
                if (currentAnchor) {
                    sessionStorage.setItem("scrollToAnchor", currentAnchor);
                }
            }
        },
        /**
         * Methode à appeler dans la page ou l'on veut que l'ancre definie (dans storeAnchorIfRedirected) défile
         * Récupère l'ancre stockée dans sessionStorage et fait défiler la page.
        */
        scrollToStoredAnchor() {
            const anchor = sessionStorage.getItem("scrollToAnchor");

            if (anchor) {
                sessionStorage.removeItem("scrollToAnchor"); // Nettoyage après usage

                setTimeout(() => {
                    const element = document.querySelector(anchor);
                    if (element) {
                        element.scrollIntoView({ behavior: "smooth" });
                    }
                }, 300);
            }
        },

        getProduct: async function (productId) {
            let product;
            if (window.napi) {
                try {
                    await napi.catalog().getProduct(productId).then(function (data) {
                        product = data;
                    })
                } catch (error) {
                    console.log('getProduct', error);
                    product = {};
                }
            }
            return product;
        },

        getCupsize: function (categories) {

            var self = this;

            var filteredCategories = categories.reduce(function (acc, val) {

                var cleanedCat = val.replace(self.config.prefixCat, '');
                if (cleanedCat.includes(self.config.cupsizeCat)) {
                    acc.push(cleanedCat);
                }

                return acc;
            }, []);

            return filteredCategories;
        },
        /**
         * Tracking Element when visible on page & execute the callback
         * https://developer.mozilla.org/fr/docs/Web/API/Intersection_Observer_API
         * @param {string|string[]} selectors - One or more CSS selectors of the elements to track.
         * @param {function} callback - The function to execute when the element becomes visible.
         * @param {object} [options={}] - Optional IntersectionObserver options (threshold, rootMargin, etc.).
         * usage: trackingElementVisibility(".element-class", (element) => console.log(element.dataset), {threshold: 0.5})
         */

        elementTrackingVisibility(selectors, callback, options = {}) {
         
            if (!Array.isArray(selectors)) {
                selectors = [selectors];
            }

            let observer = new IntersectionObserver((entries, observer) => {
                entries.forEach(entry => {
                    if (entry.isIntersecting) {
                        // Appeler le callback lorsque l'élément devient visible
                        callback(entry.target);
                        observer.unobserve(entry.target);
                    }
                });
            }, options);

            // Pour chaque sélecteur, observer les éléments correspondants
            selectors.forEach(selector => {
                let targets = document.querySelectorAll(selector);
                targets.forEach(target => observer.observe(target));
            });
        },

        /**
         * Waits for an element to be present in the DOM and returns it once found.
         * Uses a `MutationObserver` to monitor DOM changes and detect the addition of the targeted element.
         *
         * @param {string} selector - The CSS selector of the element to search for.
         * @returns {Promise<Element>} A promise that resolves with the targeted element once it is found in the DOM.
         *
         * @example
         * // Usage: wait for the .my-element to be present
         * waitForElm(".my-element").then(element => {
         *     console.log("The element has been found!", element);
         * });
         */
        async waitForElm(selector) {
            return new Promise(resolve => {
                const targetElement = document.querySelector(selector);
                if (targetElement) return resolve(targetElement);

                const observer = new MutationObserver(() => {
                    const foundElement = document.querySelector(selector);
                    if (foundElement) {
                        observer.disconnect();
                        resolve(foundElement);
                    }
                });

                observer.observe(document.body, {
                    childList: true,
                    subtree: true
                });
            });
        }

    };

    var userManager = {

        getUserInformations: function () {
            if (!window.napi) {
                return;
            }
            return window.napi.customer().read();
        },

        isCustomerInSelectionId: function (id, user) {
            if (user === undefined || user === null || Object.keys(user).length === 0) {
                frUtils.devModeLog("User data not set, check if customer is logged");
                return false;
            } else {
                if (user.selectionIDs.indexOf(id) > -1) {
                    return true;
                }
            }
            return false;
        },

        isCustomerInSelectionIds: function (ids, user) {
            let self = this;
            if (ids.find(id => self.isCustomerInSelectionId(id, user))) {
                return true;
            }
            return false;
        },

        isCustomerAmbassador: function (user) {
            if (Object.keys(user).length === 0) {
                return false;
            }
            return user.clubStatus && user.clubStatus.tier === "3";
        }
    };

    var SubscriptionManager = {

        subscriptions: {},

        subscriptionsPrices: {},

        getSubscriptions: async function () {

            let subStorageName = "subscriptions-mgmt";
            let self = this;

            if (Object.keys(self.subscriptions).length === 0) {
                if (frUtils.getStorage(subStorageName)) {
                    self.subscriptions = JSON.parse(frUtils.getStorage(subStorageName));
                } else {
                    self.subscriptions = await window.napi.market().getSubscriptions();
                    frUtils.setStorage(subStorageName, JSON.stringify(self.subscriptions));
                }
            }
            return self.subscriptions;
        },

        getSubscriptionPrices: async function () {
            let subs = await this.getSubscriptions();
            let self = this;

            if (Object.keys(self.subscriptionsPrices).length === 0) {
                $.each(subs.subscriptionProfiles, function (i, subProfile) {

                    // Check Subscription plan expiry date
                    if (new Date().toISOString() < subProfile.validUntil) {
                        $.each(subProfile.productChoices, function (i, subSku) {
                            self.subscriptionsPrices[subSku] = subProfile.promotionalPrice;
                        })
                    }
                })
            }
            return self.subscriptionsPrices;
        },

        getSubscriptionPrice: async function (sku) {

            let subPrices = await this.getSubscriptionPrices();
            return subPrices[sku];
        }
    };

    var ProductManager = {

        productsByCats: [],
        ENV: "prd",

        config: {
            prefixCat: "nesclub2.fr.b2c/cat/",
            cupsizeCat: "capsule-cupSize",
            bypasscache: "bypasscache"
        },
        baseURL: {
            img: "https://www.nespresso.com",
            imgend: "?impolicy=product&imwidth=100",
            pdp: "https://www.nespresso.com/fr/fr/order/capsules/"
        },
        endpoints: {
            prd: {
                products: "https://www.nespresso.com/ecapi/products/v2/fr/B2C/productsByCategories?language=fr&superCategory=capsule-range&allDetails=false&cache={{timestamp}}",
                product: "https://www.nespresso.com/ecapi/products/v2/fr/b2c/{{sku}}=?language=fr&cache={{timestamp}}",
                prices: "https://www.nespresso.com/fr/fr/ecapi/1/catalog/price/list/1/1/EUR?cache={{timestamp}}",
                stocks: "https://www.nespresso.com/ecapi/stocks/v1/fr/b2c?cache={{timestamp}}"
            },
            dev: {
                products: "data/fixtures/products.json",
                product: "data/fixtures/product.json",
                prices: "data/fixtures/prices.json",
                stocks: "data/fixtures/stocks.json"
            }
        },

        decodeCategories: function (categories) {

            var decodedCategories = [];

            categories.forEach(function (cat) {
                decodedCategories.push(atob(cat));
            });

            return decodedCategories;
        },

        call: function (method, endpoint, async, callback) {

            var xhttp = new XMLHttpRequest();
            xhttp.onload = function () {
                callback(this);
            }
            xhttp.open(method, endpoint, async);
            xhttp.send();
        },

        isParamExist: function (param) {

            var queryString = window.location.search;
            var urlParams = new URLSearchParams(queryString);

            return urlParams.has(param);
        },

        bypassCache: function () {

            var date;

            if (this.isParamExist(this.config.bypasscache)) {
                date = Date.now();
            } else {
                var today = new Date(Date.now());
                date = today.getDate() + "-" + today.getMonth() + "-" + today.getFullYear();
            }

            return date;
        },

        getCupsize: function (categories) {

            var self = this;

            var filteredCategories = categories.reduce(function (acc, val) {

                var cleanedCat = val.replace(self.config.prefixCat, '');
                if (cleanedCat.includes(self.config.cupsizeCat)) {
                    acc.push(cleanedCat);
                }

                return acc;
            }, []);

            return filteredCategories;
        },

        getStocks: function () {

            var self = this;

            return new Promise(function (resolve, reject) {

                var request = self.endpoints[self.ENV].stocks;
                request = request.replace("{{timestamp}}", self.bypassCache());

                self.call("GET", request, true, function (xhttp) {
                    var stocks = JSON.parse(xhttp.responseText);
                    resolve(stocks);
                });
            });
        },

        getPrices: function () {

            var self = this;

            return new Promise(function (resolve, reject) {

                var request = self.endpoints[self.ENV].prices;
                request = request.replace("{{timestamp}}", self.bypassCache());

                self.call("GET", request, true, function (xhttp) {
                    var prices = JSON.parse(xhttp.responseText);
                    resolve(prices);
                });
            });
        },

        getProducts: function () {

            var self = this;

            return new Promise(function (resolve, reject) {

                var request = self.endpoints[self.ENV].products;
                request = request.replace("{{timestamp}}", self.bypassCache());

                self.call("GET", request, true, function (xhttp) {
                    var products = JSON.parse(xhttp.responseText);
                    resolve(products);
                });
            });
        },

        getProduct: function (productSku) {

            var self = this;

            return new Promise(function (resolve, reject) {
                var request = self.endpoints[self.ENV].product;
                request = request.replace("{{timestamp}}", self.bypassCache());
                request = request.replace("{{sku}}", btoa(productSku));

                self.call("GET", request, true, function (xhttp) {
                    var product = JSON.parse(xhttp.responseText);
                    resolve(product);
                })
            });
        },

        manageProducts: function (categories, stocks, prices) {

            var self = this;
            var allPromises = [];

            categories.forEach(function (cat) {

                if ((cat.code.includes("b2b")) || (cat.products.length === 0)) return;

                var productList = [];

                cat.products.forEach(function (item) {

                    var promise = self.getProduct(item.id);
                    promise.then(function (product) {

                        var stockMatch = stocks.filter(function (stock) {
                            return (stock.productId === product.id) && (stock.isInStock === true)
                        });

                        var productStock = (stockMatch.length > 0) ? true : false;
                        var productPrice = (product.id in prices.prices) ? prices.prices[product.id] : 0;
                        var decodedCategories = self.decodeCategories(product.supercategories);

                        productList.push({
                            "id": product.id,
                            "name": product.name,
                            "headline": product.headline,
                            "intensity": product.capsuleProperties.intensity,
                            "rootCategory": product.rootCategory,
                            "category": product.category,
                            "supercategories": decodedCategories,
                            "techno": (product.rootCategory === "capsules_vertuo") ? "vertuo" : "original",
                            "image": product.responsiveImages.standard,
                            "productSelections": product.productSelections,
                            "cupsize": self.getCupsize(decodedCategories),
                            "slug": product.urlFriendlyName,
                            "price": productPrice,
                            "stock": productStock
                        });
                    });

                    allPromises.push(promise);
                });

                self.productsByCats.push({
                    "id": cat.code,
                    "name": cat.name,
                    "products": productList
                });
            });

            // Promise.all(allPromises).then(function(){
            //     self.renderProducts();
            // });
        }
    };

    var gtmDataObject = gtmDataObject || [];

    var TrackingManager = {

        trackPromotionImpression: function (creative = null, id = null, name = null, position = null) {

            gtmDataObject.push({
                event: "view_promotion",
                ecommerce: {
                    items: [
                        {
                            creative_name: creative,
                            promotion_id: id,
                            promotion_name: name,
                            creative_slot: position
                        }
                    ]
                }
            });

        },


        trackPromotionClick: function (creative = null, id = null, name = null, position = null) {

            gtmDataObject.push({
                event: "select_promotion",
                ecommerce: {
                    items: [
                        {
                            creative_name: creative,
                            creative_slot: position,
                            promotion_id: id,
                            promotion_name: name
                        }
                    ]
                }
            });

        },

        trackEvent: function (eventName, params = {}) {

            // Conversion optionnelle des clés en snake_case (GA4 best-practice)
            const normalizeKey = key =>
                key.replace(/([A-Z])/g, "_$1").toLowerCase();

            const normalizedParams = {};
            Object.keys(params).forEach(key => {
                normalizedParams[normalizeKey(key)] = params[key];
            });

            gtmDataObject.push({
                event: eventName,
                ...normalizedParams
            });
        },


        pushPromotionClickTracking: function (position, tracking) {

            gtmDataObject.push({
                event: 'select_promotion',
                event_raised_by: 'fr',
                currency: 'EUR', // GA4 utilise "currency" au lieu de "currencyCode"
                ecommerce: {
                    items: [
                        {
                            promotion_id: tracking.id,
                            promotion_name: tracking.name,
                            creative_name: tracking.creative,
                            creative_slot: position
                        }
                    ]
                }
            });
        },


        pushPromotionImpressionTracking: function (tracking) {
            this.initPromotionScroll(tracking);
            this.pushItemDisplay();
        },

        initPromotionScroll: function (tracking) {
            window.promotionsOnScroll = window.promotionsOnScroll || {};

            promotionsOnScroll[tracking.id] = {
                promotion_id: tracking.id,
                promotion_name: tracking.name,
                creative_name: tracking.creative,
                creative_slot: tracking.position
            };
        },


        // usefull in case of refresh
        pushItemDisplay: function () {

            gtmDataObject.push({
                event: "itemDisplay",
                event_raised_by: "fr",
                eventAction: "banner displayed",
                itemTypes: ["promotions"],
                rootElement: 0
            });
        },

        pushCustomEventImpression: function (label) {
            this.pushCustomEvent(label, true);
        },

        pushCustomEventClick: function (label) {
            this.pushCustomEvent(label, false);
        },

        pushCustomEvent: function (label, isDisplay) {

            gtmDataObject.push({
                event: "custom_event",
                event_raised_by: "fr",
                event_category: "User Engagement",
                event_action: isDisplay ? "Display" : "Click",
                event_label: label,
                non_interaction: isDisplay ? 1 : 0
            });

        },

    };



</script></div>

<div id="block-8828151256565" class="free-html" data-label=""  >
    <style>
  .highlight-login-button {
    border: 1px solid #fff;
    background-color: #fff;
    color: #000;
  }

  .Header__top-wrapper.highlight {
    z-index: 10201;
  }

  #login-button {
    width: 100%;
    background: #9e6844;
    color: white;
    border-color: #9e6844;
  }

  #login-button:hover {
    background: white;
    color: black;
    border-color: black;
  }

  .PushLoginContainer {
    transition: all 2s ease;
  }

  .PushLoginContainer .LoginDropdown__dropdown {
    box-shadow: rgba(99, 99, 99, 0.1) 0 6px 11px 0;
    border-radius: 0 0 2px 2px;
    transition: all 2s ease;
  }

  #remove-push-login__button {
    position: absolute;
    right: 7px;
    z-index: 2000;
    background: none;
    border: none;
    margin-top: 7px;
    color: black;
  }

  #remove-push-login__button:hover {
    background: rgba(0, 0, 0, 0.1);
  }
</style>

<!-- CSS Styles Push to login -->
<style>
  .ptl-highlight-login-button {
    border: 1px solid #fff;
    background-color: #fff;
    color: #000;
  }

  .ptl-Header__top-wrapper.ptl-highlight {
    z-index: 10201;
  }
  .ptl-wrapper {
    width: 300px;
    position: absolute;
    background: white;
    display: block;
  }

  @media screen and (max-width: 768px) {
    .ptl-wrapper {
      left: 50px;
      color: black;
    }
  }

  .ptl-wrapper.hidden {
    display: none;
  }

  #ptl-login-button {
    width: 100%;
    background: #9e6844;
    color: white;
    border: 1px solid #9e6844;
    height: 41px;
    border-radius: 5px;
  }

  #ptl-login-button:hover {
    background: white;
    color: black;
    border: 1px solid black;
  }

  .ptl-PushLoginContainer {
    transition: all 2s ease;
    position: relative;
  }

  .ptl-PushLoginContainer .ptl-LoginDropdown__dropdown {
    box-shadow: rgba(99, 99, 99, 0.1) 0 6px 11px 0;
    border-radius: 0 0 2px 2px;
    transition: all 2s ease;
    padding: 20px;
    position: relative;
  }
  .ptl-LoginDropdown__title {
    font-size: 18px;
    font-weight: bold;
    text-align: left;
    padding-bottom: 10px;
    text-transform: uppercase;
  }

  .ptl-LoginDropdown__description {
    padding-bottom: 15px;
    text-align: left;
  }

  #ptl-remove-push-login__button {
    position: absolute;
    right: 5px;
    z-index: 2000;
    background: none;
    border: none;
    margin-top: 7px;
    color: black;
    font-size: 12px;
    top: 0;
  }

  #ptl-remove-push-login__button:hover {
    background: rgba(0, 0, 0, 0.1);
  }
</style>

<!-- Template pour l'Overlay -->
<script id="overlay-template" type="template">
  <div class="crema-ui-container">
      <div>
          <div class="Overlay Overlay__transition-enter-done" tabIndex="0"></div>
      </div>
  </div>
</script>

<script id="push-login-template" type="template">
  <div class="ptl-wrapper">
      <div class="ptl-PushLoginContainer">
          <div class="ptl-LoginDropdown__dropdown ptl-LoginDropdown__maxHeightAndroid ptl-LoginDropdown__transition-enter-done">
              <div class="ptl-LoginDropdown__container">
                <div class="ptl-LoginDropdown__title">
                  Se connecter
                  </div>
                  <div class="ptl-LoginDropdown__description">Identifiez-vous pour suivre toutes les actualités de la marque et retrouver vos avantages exclusifs
                  </div>
                  <button id="ptl-login-button" class="ptl-DefaultButton--regular">Connectez-vous</button>
              </div>
          </div>
          <button id="ptl-remove-push-login__button" type="button"
                  class="ptl-ui-button ptl-ui-corner-all ptl-ui-widget ptl-ui-button-icon-only ptl-ui-dialog-titlebar-close"
                  title="Close">
              <i class="Glyph Glyph--cross lightbox__close-icon" aria-hidden="true"></i>
              <span class="ptl-ui-button-icon ptl-ui-icon ptl-ui-icon-closethick"></span>
              <span class="ptl-ui-button-icon-space"></span>
          </button>
      </div>
      </div>
</script>

<script>
  // Configuration
  const CONFIG = {
    TEST_MODE: true,
    SELECTORS: {
      FORM: '.LoginDropdown__container form',
      REGISTER: '#ta-login-dropdown-register',
      FORGOT_PASSWORD: '.LoginForm__forgotten-password',
      SUBMIT: '#ta-login-form__submit',
      CLOSE: '.close-btn, .LoginDropdown .Glyph--cross',
      OVERLAY: '.Overlay',
      LOGIN_BUTTON: '#ta-login-dropdown--not-logged',
      PTL_LOGIN_BUTTON: '#ptl-login-button',
      PUSH_TO_LOGIN: '.ab-login-popin-benefits',
      LOGIN_MODULE: '.LoginDropdown'
    }
  };

  // Fonction de tracking globale
  function sendTrackingEvent(category, action, label) {
    if (typeof window.gtmDataObject === 'undefined') {
      window.gtmDataObject = [];
    }
    
    const eventData = {
      event: "local_event",
      event_raised_by: "fr",
      local_event_category: category,
      local_event_action: action,
      local_event_label: label
    };
    
    window.gtmDataObject.push(eventData);
  }

  // Bloquer tous les events GTM click
  const originalPush = Array.prototype.push;
  if (typeof window.gtmDataObject !== 'undefined') {
    window.gtmDataObject.push = function() {
      for (let i = 0; i < arguments.length; i++) {
        const event = arguments[i];
        // Ne pas tracker les événements gtm.click
        if (event.event === 'gtm.click') {
          continue; // Ignorer tous les événements gtm.click
        }
        originalPush.call(this, event);
      }
      return this.length;
    };
  }

// Gestion du module de login
function initLoginModuleTracking() {
  let isProcessingLoginModuleTracking = false;
  let hasTrackedDisplay = false;

  function checkLoginModule() {
    const loginDropdown = document.querySelector('.LoginDropdown__dropdown');
    if (loginDropdown && !hasTrackedDisplay && !isProcessingLoginModuleTracking) {
      isProcessingLoginModuleTracking = true;
      hasTrackedDisplay = true;

      // Utiliser requestAnimationFrame pour s'assurer que le DOM est mis à jour
      requestAnimationFrame(() => {
        // Envoyer l'événement display
        if (typeof window.gtmDataObject === 'undefined') {
          window.gtmDataObject = [];
        }
        
        window.gtmDataObject.push({
          event: "local_event",
          event_raised_by: "fr",
          local_event_action: "display",
          local_event_category: "login module",
          local_event_label: "login module "
        });
        
        console.log('✅ Tracking display login module envoyé');
        isProcessingLoginModuleTracking = false;
      });

      PushLoginManager.removePushLogin();
      PushLoginManager.pausePushLogin();
    }
  }

  const loginDropdownContainer = document.querySelector('.LoginDropdown');
  if (loginDropdownContainer) {
    // Vérifier immédiatement si le module est déjà ouvert
    requestAnimationFrame(checkLoginModule);

    // Observer les changements pour détecter l'ouverture/fermeture
    const observer = new MutationObserver((mutations) => {
      mutations.forEach(mutation => {
        if (mutation.type === 'childList') {
          const hasLoginDropdown = loginDropdownContainer.querySelector('.LoginDropdown__dropdown');
          if (hasLoginDropdown) {
            checkLoginModule();
          } else {
            hasTrackedDisplay = false;
            PushLoginManager.resumePushLogin();
          }
        }
      });
    });

    observer.observe(loginDropdownContainer, {
      childList: true,
      subtree: true
    });
  }
}
// Gestion de Push Login
  const PushLoginManager = {
    state: {
      showedNumber: 0,
      maxShow: 2, // Maximum 2 affichages (initial + 1 réaffichage)
      initialDelay: 5000, // 5 secondes avant le premier affichage
      displayDuration: 7000, // 7 secondes d'affichage
      intervalDelay: 60000, // 1 minute entre chaque affichage
      autoCloseTimeout: null,
      nextDisplayTimeout: null,
      isInitialized: false,
      wasInteractedWith: false,
      isPaused: false,
      isDisabledForSession: false // Flag pour désactiver sur la session
    },

    init() {
      // Vérifier si on doit envoyer le tracking de connexion
      if (sessionStorage.getItem("isLoginTracked") === "true" && sessionStorage.getItem("PTL_DISABLED_FOR_SESSION") === "true") {
        const ptlShowedNumber = sessionStorage.getItem("PTL_SHOWED_NUMBER");
        if (ptlShowedNumber) {
          window.gtmDataObject.push({
            event: "local_event",
            event_raised_by: "fr",
            local_event_action: "display",
            local_event_category: "push to login",
            local_event_label: `push to login - header - logged in ${ptlShowedNumber} display`
          });
        }
        return;
      }

      if (this.state.isInitialized) {
        return;
      }

      this.state.isInitialized = true;

      // Vérifier si le PTL est désactivé pour la session
      const isDisabled = sessionStorage.getItem("PTL_DISABLED_FOR_SESSION");
      if (isDisabled === "true") {
        this.state.isDisabledForSession = true;
        return;
      }

      // Récupérer le nombre d'affichages précédents de la session
      const stored = sessionStorage.getItem("PTL_SHOWED_NUMBER");
      this.state.showedNumber = stored ? parseInt(stored, 10) : 0;

      if (this.state.showedNumber >= this.state.maxShow) {
        this.disableForSession();
        return;
      }

      // Vérifier s'il y a un prochain affichage planifié
      const nextDisplayTime = sessionStorage.getItem("PTL_NEXT_DISPLAY_TIME");
      if (nextDisplayTime) {
        const now = Date.now();
        const timeUntilDisplay = parseInt(nextDisplayTime) - now;
        
        if (timeUntilDisplay > 0) {
          // Planifier l'affichage pour le temps restant
          setTimeout(() => {
            if (!document.querySelector("#ta-login-dropdown--logged") && !this.state.isDisabledForSession) {
              this.showPushLogin();
            }
          }, timeUntilDisplay);
          return;
        }
      }

      // Premier affichage après le délai initial
      if (this.state.showedNumber === 0) {
        setTimeout(() => {
          if (!document.querySelector("#ta-login-dropdown--logged") && !this.state.isDisabledForSession) {
            this.showPushLogin();
          }
        }, this.state.initialDelay);
      }
    },

    disableForSession() {
      this.state.isDisabledForSession = true;
      sessionStorage.setItem("PTL_DISABLED_FOR_SESSION", "true");
      this.removePushLogin();
    },

    scheduleNextDisplay() {
      if (this.state.showedNumber >= this.state.maxShow || 
          this.state.isDisabledForSession || 
          document.querySelector("#ta-login-dropdown--logged")) {
        return;
      }
      
      if (this.state.nextDisplayTimeout) {
        clearTimeout(this.state.nextDisplayTimeout);
      }

      // Stocker le timestamp du prochain affichage
      const nextDisplayTime = Date.now() + this.state.intervalDelay;
      sessionStorage.setItem("PTL_NEXT_DISPLAY_TIME", nextDisplayTime.toString());
      
      this.state.nextDisplayTimeout = setTimeout(() => {
        if (!this.state.isDisabledForSession) {
          this.showPushLogin();
        }
      }, this.state.intervalDelay);
    },

    showPushLogin() {
      if (this.state.showedNumber >= this.state.maxShow || 
          this.state.isDisabledForSession || 
          document.querySelector("#ta-login-dropdown--logged")) {
        return;
      }

      // Vérifier si le module de login est déjà ouvert
      const loginButton = document.querySelector('.LoginDropdownButton');
      if (loginButton && loginButton.classList.contains('LoginDropdownButton--open')) {
        this.scheduleNextDisplay();
        return;
      }

      // Incrémenter et sauvegarder le nombre d'affichages
      this.state.showedNumber++;
      sessionStorage.setItem("PTL_SHOWED_NUMBER", this.state.showedNumber.toString());

      // Réinitialiser le flag d'interaction
      this.state.wasInteractedWith = false;

      // Ajouter le template
      const loginDropdown = document.querySelector(".LoginDropdown > div");
      if (!loginDropdown) return;

      TemplateManager.appendTemplate(
        "push-login-template",
        ".LoginDropdown > div"
      );

      // Tracking d'affichage
      sendTrackingEvent(
        "push to login",
        "display",
        `push to login - header ${this.state.showedNumber} display`
      );

      this.setupInteractions();

      // Auto-fermeture après le délai
      this.state.autoCloseTimeout = setTimeout(() => {
        if (!this.state.wasInteractedWith) {
          sendTrackingEvent(
            "push to login",
            "display",
            `push to login - header - pas d'interaction ${this.state.showedNumber} display`
          );
          this.removePushLogin();
          // Vérifier à nouveau avant de planifier le prochain affichage
          if (!document.querySelector("#ta-login-dropdown--logged")) {
            this.scheduleNextDisplay();
          }
        }
      }, this.state.displayDuration);
    },

    setupInteractions() {
      // Bouton de fermeture
      const closeButton = document.querySelector("#ptl-remove-push-login__button");
      if (closeButton) {
        closeButton.addEventListener("click", (e) => {
          e.stopPropagation();
          this.state.wasInteractedWith = true;
          sendTrackingEvent(
            "push to login",
            "click",
            `push to login - header - fermeture ${this.state.showedNumber} display`
          );
          this.disableForSession(); // Désactiver pour la session au lieu de scheduleNextDisplay
        });
      }

    // logging tracking

      // Bouton de connexion
      const loginButton = document.querySelector("#ptl-login-button");
      if (loginButton) {
        loginButton.addEventListener("click", (e) => {
          e.stopPropagation();
          this.state.wasInteractedWith = true;
          
          // Tracking pour le PTL
          sendTrackingEvent(
            "push to login",
            "click",
            `push to login - header - cta connectez-vous ${this.state.showedNumber} display`
          );
          
          // Stocker que l'utilisateur a ouvert le login via le PTL
          sessionStorage.setItem("isLoginTracked", "true");
          
          this.disableForSession(); // Désactiver pour la session
          
          // Déclencher le clic sur le bouton de login header
          const loginTrigger = document.querySelector("#ta-login-dropdown--not-logged");
          if (loginTrigger) {
            const clickEvent = new MouseEvent('click', {
              bubbles: true,
              cancelable: true,
              isTrusted: false
            });
            loginTrigger.dispatchEvent(clickEvent);
          }
        });
      }
    },

    removePushLogin() {
      const pushLoginWrapper = document.querySelector(".ptl-wrapper");
      if (pushLoginWrapper) {
        pushLoginWrapper.remove();
      }
      if (this.state.autoCloseTimeout) {
        clearTimeout(this.state.autoCloseTimeout);
      }
    },

    pausePushLogin() {
      this.state.isPaused = true;
      if (this.state.nextDisplayTimeout) {
        clearTimeout(this.state.nextDisplayTimeout);
      }
    },

    resumePushLogin() {
      this.state.isPaused = false;
      this.scheduleNextDisplay();
    }
  };

  // Event Handler pour le module de login
  const EventHandler = {
    init() {
      document.addEventListener('click', this.handleClick.bind(this), true);
      document.addEventListener('submit', this.handleSubmit.bind(this), true);
      
      console.log('?? Initialisation de EventHandler...');
      let hasTrackedDisplay = false;
 
      // Observer le DOM pour détecter l'ajout des boutons de login
      const observer = new MutationObserver((mutations) => {
  mutations.forEach(() => {
    
    // Login header button
    const loginButton = document.querySelector(CONFIG.SELECTORS.LOGIN_BUTTON);
    if (loginButton && !loginButton.hasAttribute('data-login-listener')) {
      loginButton.setAttribute('data-login-listener', 'true');
      loginButton.addEventListener('click', (e) => {
        if (!hasTrackedDisplay) {
          hasTrackedDisplay = true;
          localStorage.setItem("LOGIN_MODULE_OPENED", "true");
          window.gtmDataObject.push({
            event: "local_event",
            event_raised_by: "fr",
            local_event_action: "display",
            local_event_category: "login module",
            local_event_label: "login module "
          });
        }
      });
    }
    
    // PTL button
    const ptlLoginButton = document.querySelector(CONFIG.SELECTORS.PTL_LOGIN_BUTTON);
    if (ptlLoginButton && !ptlLoginButton.hasAttribute('data-login-listener')) {
      ptlLoginButton.setAttribute('data-login-listener', 'true');
      ptlLoginButton.addEventListener('click', () => {
        if (!hasTrackedDisplay) {
          hasTrackedDisplay = true;
          localStorage.setItem("LOGIN_MODULE_OPENED", "true");
          window.gtmDataObject.push({
            event: "local_event",
            event_raised_by: "fr",
            local_event_action: "display",
            local_event_category: "login module",
            local_event_label: "login module "
          });
        }
      });
    }
  });
});

      // Observer tout le document pour être sûr de ne pas manquer l'ajout des boutons
      observer.observe(document.documentElement, {
        childList: true,
        subtree: true
      });

      // Vérifier immédiatement si les boutons sont déjà présents
      console.log('?? Vérification initiale des boutons...');
      const initialLoginButton = document.querySelector(CONFIG.SELECTORS.LOGIN_BUTTON);
      const initialPtlButton = document.querySelector(CONFIG.SELECTORS.PTL_LOGIN_BUTTON);
      
      if (initialLoginButton) {
        console.log('✅ Bouton login header trouvé initialement');
      }
      if (initialPtlButton) {
        console.log('✅ Bouton PTL trouvé initialement');
      }
    },

    handleClick(event) {
      const target = event.target;
      
      // Ignorer les clics sur les boutons de login qui ont déjà leurs propres listeners
      if (this.matchesSelector(target, CONFIG.SELECTORS.LOGIN_BUTTON) || 
          this.matchesSelector(target, CONFIG.SELECTORS.PTL_LOGIN_BUTTON)) {
        return;
      }
      
      if (this.matchesSelector(target, CONFIG.SELECTORS.CLOSE)) {
        this.handleEvent("login module - fermer x");
      }
      else if (this.matchesSelector(target, CONFIG.SELECTORS.OVERLAY)) {
        this.handleEvent("login module - fermer overlay");
      }
      else if (this.matchesSelector(target, CONFIG.SELECTORS.REGISTER)) {
        this.handleEvent("login module - créer un compte");
      }
      else if (this.matchesSelector(target, CONFIG.SELECTORS.FORGOT_PASSWORD)) {
        this.handleEvent("login module - mot de passe oublié");
      }
    },

    handleSubmit(event) {
      if (this.matchesSelector(event.target, CONFIG.SELECTORS.FORM)) {
        this.handleEvent("login module - se connecter");
      }
    },

    handleEvent(label) {
      sendTrackingEvent("login module", "click", label);
    },

    matchesSelector(element, selector) {
      if (!element) return false;
      if (element.matches && element.matches(selector)) return true;
      if (element.closest && element.closest(selector)) return true;
      if (selector.includes(',')) {
        return selector.split(',')
          .map(s => s.trim())
          .some(s => this.matchesSelector(element, s));
      }
      return false;
    }
  };

  // Initialisation
  function initialize() {
    // Vérifier si on est sur une page exclue
    const excludePages = ["/fr/fr/forgot-password", "/fr/en/forgot-password"];
    const currentPage = window.location.pathname;
    const isOrderPage = currentPage.includes('/order/');

    if (!excludePages.includes(currentPage) || isOrderPage && !checkLogin()) {
      EventHandler.init();
      PushLoginManager.init();

      initLoginModuleTracking();

      // Si c'est une page de commande, s'assurer que le module est visible
      if (isOrderPage) {
        const loginModule = document.querySelector(CONFIG.SELECTORS.LOGIN_MODULE);
        if (loginModule) {
          loginModule.style.display = 'block';
          loginModule.style.visibility = 'visible';
        }
      }
    }
  }

  // Démarrer immédiatement si possible
  if (document.readyState !== 'loading') {
    initialize();
  } else {
    document.addEventListener('DOMContentLoaded', initialize);
  }
</script>

<script>
  // Gestion du Local Storage
  const StorageManager = {
    get(key) {
      const item = localStorage.getItem(key);
      if (!item) return null;

      const parsed = JSON.parse(item);
      if (parsed.ttl && Date.now() > parsed.ttl) {
        localStorage.removeItem(key);
        return null;
      }
      return parsed.value;
    }, 

    set(key, value, ttlInDays) {
      const now = new Date().getTime();
      const ttl = ttlInDays * 24 * 60 * 60 * 1000;
      const data = {
        value,
        ttl: now + ttl,
      };
      localStorage.setItem(key, JSON.stringify(data));
    },

    remove(key) {
      localStorage.removeItem(key);
    },
  };

  // Gestion de l'Interface Utilisateur
  const UIManager = {
    highlightLoginButton() {
      document
        .querySelector(".LoginDropdown button")
        ?.classList.add("highlight-login-button");
      document
        .querySelector(".Header__top-wrapper")
        ?.classList.add("highlight");
    },

    removeHighlightLoginButton() {
      document
        .querySelector(".LoginDropdown button")
        ?.classList.remove("highlight-login-button");
      document
        .querySelector(".Header__top-wrapper")
        ?.classList.remove("highlight");
    },

    setupCloseButton(selector, callback) {
      const button = document.querySelector(selector);
      if (button) {
        button.addEventListener("click", callback);
      }
    },
  };

  // Gestion des Templates
  const TemplateManager = {
    appendTemplate(templateId, targetSelector) {
      const template = document.querySelector(`#${templateId}`);
      const target = document.querySelector(targetSelector);

      if (template && target) {
        target.innerHTML = template.innerHTML;
      }
    },

    removeElement(selector) {
      const element = document.querySelector(selector);
      if (element) {
        element.remove();
      }
    },
  };

  function resetLoginTrackingState() {
    LoginModuleTracker.isLoginModuleVisible = false;
    PushLoginManager.state.showedNumber = 0;
    localStorage.removeItem("PUSH_LOGIN_SHOWED_NUMBER");
  }
</script>

<script>
  function checkLogin() {
    var connected = false;
    if (typeof padl === "object") {
      if (typeof padl.user === "object") {
        if (window.padl.user.isLoggedIn === true) {
          connected = true;
        }
      }
    }
    return connected;
  }
</script></div>

<div id="block-8813733205493" class="free-html" data-label=""  >
    <script id="nes-fr-config" type="application/json">
    {
        "Offers": {
            "DowngradeAmbassadorOL": {
                "Active": false,
                "Priority": 10,
                "UserCriteria": {
                    "Tier": 3,
                    "MembershipCapsQuantityMin": 800,
                    "MembershipCapsQuantityMax": 990,
                    "MembershipLastBirthdayMonthMin": 7,
                    "MembershipCapsTechno": "OL"
                },
                "BasketCriteria": {
                    "Techno": "OL",
                    "CapsQuantity": 200
                },
                "Content": {
                    "Claim": "<span class='u-text-big'><strong><em>10€</em> offerts*</strong></span><br/>dès 200 capsules Original commandées<br class='mc-hidden'> <span class='dynamic-hide'>avec le code <span class='reactive-banner__code'>{CodePromo}</span></span>",
                    "HpClaim": "<em>10€</em> offerts*<br/>sur votre commande",
                    "StackClaim": "10€ offerts* dès 200 capsules Original commandées",
                    "CodePromo": "AMBASSADEUR10",
                    "CTA": "Order",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/original/",
                    "DynamicContent": {
                        "Start": "<span class='u-text-big'><strong><em>10€</em> offerts*</strong></span><br/>dès 200 capsules Original commandées",
                        "Progress": "<span class='u-text-big'><strong>Plus que <em>[[quantity_caps]]</em> capsules,</strong></span><br/>pour bénéficier de <strong><em>10€</em> offerts*</strong>",
                        "Finish": "<strong><span class='u-text-big'>Félicitations !</span><br> <em>10€</em> offerts*</strong> <br class='no-sticky'>avec le code <span class='reactive-banner__code'>{CodePromo}</span>"
                    },
                    "MobileSticky": {
                        "Claim": "<span class='u-text-big'><strong><em>10€</em> offerts*</strong>",
                        "Code": "avec le code<br/><span class='reactive-banner__code'>{CodePromo}</span>"
                    },
                    "Images": {
                        "Main": "https://www.nespresso.com/ecom/medias/sys_master/public/12295205748766/Offer-DowngradeAmbassadorOL-Parcours.png?impolicy=medium&imwidth=720",
                        "HP": "https://www.nespresso.com/ecom/medias/sys_master/public/12295205683230/Offer-DowngradeAmbassadorOL-Homepage.png",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/13620370767902/Ambassadeurs-Vers-Expert-OL.png"
                    },
                    "Conditions": "Offre valable en France métropolitaine jusqu’au 31/12/2021 inclus, exclusivement sur le site internet www.nespresso.com, sur l'Application Mobile Nespresso, par téléphone au 0800 55 52 53 (Appel et service gratuit depuis un poste fixe) ou dans nos Boutiques Nespresso (selon jours d’ouverture de la Boutique). Bénéficiez d’une remise immédiate de 10€, dès 200 capsules achetées dans la gamme Original, sur indication du code AMBASSADEUR10. Offre nominative, limitée à une (1) utilisation par client Ambassadeur éligible, non-cumulable avec toute autre offre Nespresso en cours."
                }
            },
            "DowngradeAmbassadorVL": {
                "Active": false,
                "Priority": 10,
                "UserCriteria": {
                    "Tier": 3,
                    "MembershipCapsQuantityMin": 800,
                    "MembershipCapsQuantityMax": 990,
                    "MembershipLastBirthdayMonthMin": 7,
                    "MembershipCapsTechno": "VL"
                },
                "BasketCriteria": {
                    "Techno": "VL",
                    "CapsQuantity": 200
                },
                "Content": {
                    "Claim": "<span class='u-text-big'><strong><em>15€</em> offerts*</strong></span><br/>dès 200 capsules Vertuo commandées<br class='mc-hidden'> <span class='dynamic-hide'>avec le code <span class='reactive-banner__code'>{CodePromo}</span></span>",
                    "HpClaim": "<em>15€</em> offerts*<br/>sur votre commande",
                    "StackClaim": "15€ offerts* dès 200 capsules Vertuo commandées",
                    "CodePromo": "AMBASSADEUR15",
                    "CTA": "Order",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/vertuo/",
                    "DynamicContent": {
                        "Start": "<span class='u-text-big'><strong><em>15€</em> offerts*</strong></span><br/>dès 200 capsules Vertuo commandées",
                        "Progress": "<span class='u-text-big'><strong>Plus que <em>[[quantity_caps]]</em> capsules,</strong></span><br/>pour bénéficier de <strong><em>15€</em> offerts*</strong>",
                        "Finish": "<strong><span class='u-text-big'>Félicitations !</span><br> <em>15€</em> offerts*</strong> <br class='no-sticky'>avec le code <span class='reactive-banner__code'>{CodePromo}</span>"
                    },
                    "MobileSticky": {
                        "Claim": "<span class='u-text-big'><strong><em>15€</em> offerts*</strong>",
                        "Code": "avec le code<br/><span class='reactive-banner__code'>{CodePromo}</span>"
                    },
                    "Images": {
                        "Main": "https://www.nespresso.com/ecom/medias/sys_master/public/12295205879838/Offer-DowngradeAmbassadorVL-Parcours.png?impolicy=medium&imwidth=720",
                        "HP": "https://www.nespresso.com/ecom/medias/sys_master/public/12295205814302/Offer-DowngradeAmbassadorVL-Homepage.png",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/13620372013086/Experts-vers-connaiseurs-VL.png"
                    },
                    "Conditions": "Offre valable en France métropolitaine jusqu’au 31/12/2021 inclus, exclusivement sur le site internet www.nespresso.com, sur l'Application Mobile Nespresso, par téléphone au 0800 55 52 53 (Appel et service gratuit depuis un poste fixe) ou dans nos Boutiques Nespresso (selon jours d’ouverture de la Boutique). Bénéficiez d’une remise immédiate de 15€, dès 200 capsules achetées dans la gamme Vertuo, sur indication du code AMBASSADEUR15. Offre nominative, limitée à une (1) utilisation par client Ambassadeur éligible, non-cumulable avec toute autre offre Nespresso en cours."
                }
            },
            "DowngradeExpertOL": {
                "Active": false,
                "Priority": 10,
                "UserCriteria": {
                    "Tier": 2,
                    "MembershipCapsQuantityMin": 400,
                    "MembershipCapsQuantityMax": 490,
                    "MembershipLastBirthdayMonthMin": 9,
                    "MembershipCapsTechno": "OL"
                },
                "BasketCriteria": {
                    "Techno": "OL",
                    "CapsQuantity": 100
                },
                "Content": {
                    "Claim": "<span class='u-text-big'><strong><em>5€</em> offerts*</strong></span><br/>dès 100 capsules Original commandées<br class='mc-hidden'> <span class='dynamic-hide'>avec le code <span class='reactive-banner__code'>{CodePromo}</span></span>",
                    "HpClaim": "<em>5€</em> offerts*<br/>sur votre commande",
                    "StackClaim": "5€ offerts* dès 100 capsules Original commandées",
                    "CodePromo": "EXPERT05",
                    "CTA": "Order",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/original/",
                    "DynamicContent": {
                        "Start": "<span class='u-text-big'><strong><em>5€</em> offerts*</strong></span><br/>dès 100 capsules Original commandées",
                        "Progress": "<span class='u-text-big'><strong>Plus que <em>[[quantity_caps]]</em> capsules,</strong></span><br/>pour bénéficier de <strong><em>5€</em> offerts*</strong>",
                        "Finish": "<strong><span class='u-text-big'>Félicitations !</span><br> <em>5€</em> offerts*</strong> <br class='no-sticky'>avec le code <span class='reactive-banner__code'>{CodePromo}</span>"
                    },
                    "MobileSticky": {
                        "Claim": "<span class='u-text-big'><strong><em>5€</em> offerts*</strong>",
                        "Code": "avec le code<br/><span class='reactive-banner__code'>{CodePromo}</span>"
                    },
                    "Images": {
                        "Main": "https://www.nespresso.com/ecom/medias/sys_master/public/12295206141982/Offer-DowngradeExpertOL-Parcours.png?impolicy=medium&imwidth=720",
                        "HP": "https://www.nespresso.com/ecom/medias/sys_master/public/12295205945374/Offer-DowngradeExpertOL-Homepage.png",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/13620371554334/Experts-vers-connaiseurs-OL.png"
                    },
                    "Conditions": "Offre valable en France métropolitaine jusqu’au 31/12/2021 inclus, exclusivement sur le site internet www.nespresso.com, sur l'Application Mobile Nespresso, par téléphone au 0800 55 52 53 (Appel et service gratuit depuis un poste fixe) ou dans nos Boutiques Nespresso (selon jours d’ouverture de la Boutique). Bénéficiez d’une remise immédiate de 5€, dès 100 capsules achetées dans la gamme Original, sur indication du code EXPERT05. Offre nominative, limitée à une (1) utilisation par client Expert éligible, non-cumulable avec toute autre offre Nespresso en cours."
                }
            },
            "DowngradeExpertVL": {
                "Active": false,
                "Priority": 10,
                "UserCriteria": {
                    "Tier": 2,
                    "MembershipCapsQuantityMin": 400,
                    "MembershipCapsQuantityMax": 490,
                    "MembershipLastBirthdayMonthMin": 9,
                    "MembershipCapsTechno": "VL"
                },
                "BasketCriteria": {
                    "Techno": "VL",
                    "CapsQuantity": 100
                },
                "Content": {
                    "Claim": "<span class='u-text-big'><strong><em>10€</em> offerts*</strong></span><br/>dès 100 capsules Vertuo commandées<br class='mc-hidden'> <span class='dynamic-hide'>avec le code <span class='reactive-banner__code'>{CodePromo}</span></span>",
                    "HpClaim": "<em>10€</em> offerts*<br/>sur votre commande",
                    "StackClaim": "10€ offerts* dès 100 capsules Vertuo commandées",
                    "CodePromo": "EXPERT10",
                    "CTA": "Order",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/vertuo/",
                    "DynamicContent": {
                        "Start": "<span class='u-text-big'><strong><em>10€</em> offerts*</strong></span><br/>dès 100 capsules Vertuo commandées",
                        "Progress": "<span class='u-text-big'><strong>Plus que <em>[[quantity_caps]]</em> capsules,</strong></span><br/>pour bénéficier de <strong><em>10€</em> offerts*</strong>",
                        "Finish": "<strong><span class='u-text-big'>Félicitations !</span><br> <em>10€</em> offerts*</strong> <br class='no-sticky'>avec le code <span class='reactive-banner__code'>{CodePromo}</span>"
                    },
                    "MobileSticky": {
                        "Claim": "<span class='u-text-big'><strong><em>10€</em> offerts*</strong>",
                        "Code": "avec le code<br/><span class='reactive-banner__code'>{CodePromo}</span>"
                    },
                    "Images": {
                        "Main": "https://www.nespresso.com/ecom/medias/sys_master/public/12295206273054/Offer-DowngradeExpertVL-Parcours.png?impolicy=medium&imwidth=720",
                        "HP": "https://www.nespresso.com/ecom/medias/sys_master/public/12295206207518/Offer-DowngradeExpertVL-Homepage.png",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/13620372013086/Experts-vers-connaiseurs-VL.png"
                    },
                    "Conditions": "Offre valable en France métropolitaine jusqu’au 31/12/2021 inclus, exclusivement sur le site internet www.nespresso.com, sur l'Application Mobile Nespresso, par téléphone au 0800 55 52 53 (Appel et service gratuit depuis un poste fixe) ou dans nos Boutiques Nespresso (selon jours d’ouverture de la Boutique). Bénéficiez d’une remise immédiate de 10€, dès 100 capsules achetées dans la gamme Vertuo, sur indication du code EXPERT10. Offre nominative, limitée à une (1) utilisation par client Expert éligible, non-cumulable avec toute autre offre Nespresso en cours."
                }
            },
            "InactiveAmbassadorOL": {
                "Active": false,
                "Priority": 10,
                "UserCriteria": {
                    "Tier": 3,
                    "MembershipCapsQuantityMax": 790,
                    "MembershipLastCoffeeOrderMonthMin": 5,
                    "MembershipCapsTechno": "OL"
                },
                "BasketCriteria": {
                    "Techno": "OL",
                    "CapsQuantity": 200
                },
                "Content": {
                    "Claim": "<span class='u-text-big'><strong><em>10€</em> offerts*</strong></span><br/>dès 200 capsules Original commandées<br class='mc-hidden'> <span class='dynamic-hide'>avec le code <span class='reactive-banner__code'>{CodePromo}</span></span>",
                    "HpClaim": "<em>10€</em> offerts*<br/>sur votre commande",
                    "StackClaim": "10€ offerts* dès 200 capsules Original commandées",
                    "CodePromo": "10-EUROS",
                    "CTA": "Order",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/original/",
                    "DynamicContent": {
                        "Start": "<span class='u-text-big'><strong><em>10€</em> offerts*</strong></span><br/>dès 200 capsules Original commandées",
                        "Progress": "<span class='u-text-big'><strong>Plus que <em>[[quantity_caps]]</em> capsules,</strong></span><br/>pour bénéficier de <strong><em>10€</em> offerts*</strong>",
                        "Finish": "<strong><span class='u-text-big'>Félicitations !</span><br> <em>10€</em> offerts*</strong> <br class='no-sticky'>avec le code <span class='reactive-banner__code'>{CodePromo}</span>"
                    },
                    "MobileSticky": {
                        "Claim": "<span class='u-text-big'><strong><em>10€</em> offerts*</strong>",
                        "Code": "avec le code<br/><span class='reactive-banner__code'>{CodePromo}</span>"
                    },
                    "Images": {
                        "Main": "https://www.nespresso.com/ecom/medias/sys_master/public/12295205748766/Offer-DowngradeAmbassadorOL-Parcours.png?impolicy=medium&imwidth=720",
                        "HP": "https://www.nespresso.com/ecom/medias/sys_master/public/12295205683230/Offer-DowngradeAmbassadorOL-Homepage.png",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/13620370767902/Ambassadeurs-Vers-Expert-OL.png"
                    },
                    "Conditions": "Offre valable en France métropolitaine jusqu’au 31/12/2021 inclus, exclusivement sur le site internet www.nespresso.com, sur l'Application Mobile Nespresso, par téléphone au 0800 55 52 53 (Appel et service gratuit depuis un poste fixe) ou dans nos Boutiques Nespresso (selon jours d’ouverture de la Boutique). Bénéficiez d’une remise immédiate de 10€, dès 200 capsules achetées dans la gamme Original, sur indication du code 10-EUROS. Offre nominative, limitée à une (1) utilisation par client Ambassadeur éligible, non-cumulable avec toute autre offre Nespresso en cours."
                }
            },
            "InactiveAmbassadorVL": {
                "Active": false,
                "Priority": 10,
                "UserCriteria": {
                    "Tier": 3,
                    "MembershipCapsQuantityMax": 790,
                    "MembershipLastCoffeeOrderMonthMin": 5,
                    "MembershipCapsTechno": "VL"
                },
                "BasketCriteria": {
                    "Techno": "VL",
                    "CapsQuantity": 200
                },
                "Content": {
                    "Claim": "<span class='u-text-big'><strong><em>15€</em> offerts*</strong></span><br/>dès 200 capsules Vertuo commandées<br class='mc-hidden'> <span class='dynamic-hide'>avec le code <span class='reactive-banner__code'>{CodePromo}</span></span>",
                    "HpClaim": "<em>15€</em> offerts*<br/>sur votre commande",
                    "StackClaim": "15€ offerts* dès 200 capsules Vertuo commandées",
                    "CodePromo": "EUROS-15",
                    "CTA": "Order",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/vertuo/",
                    "DynamicContent": {
                        "Start": "<span class='u-text-big'><strong><em>15€</em> offerts*</strong></span><br/>dès 200 capsules Vertuo commandées",
                        "Progress": "<span class='u-text-big'><strong>Plus que <em>[[quantity_caps]]</em> capsules,</strong></span><br/>pour bénéficier de <strong><em>15€</em> offerts*</strong>",
                        "Finish": "<strong><span class='u-text-big'>Félicitations !</span><br> <em>15€</em> offerts*</strong> <br class='no-sticky'>avec le code <span class='reactive-banner__code'>{CodePromo}</span>"
                    },
                    "MobileSticky": {
                        "Claim": "<span class='u-text-big'><strong><em>15€</em> offerts*</strong>",
                        "Code": "avec le code<br/><span class='reactive-banner__code'>{CodePromo}</span>"
                    },
                    "Images": {
                        "Main": "https://www.nespresso.com/ecom/medias/sys_master/public/12295205879838/Offer-DowngradeAmbassadorVL-Parcours.png?impolicy=medium&imwidth=720",
                        "HP": "https://www.nespresso.com/ecom/medias/sys_master/public/12295205814302/Offer-DowngradeAmbassadorVL-Homepage.png",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/13620372013086/Experts-vers-connaiseurs-VL.png"
                    },
                    "Conditions": "Offre valable en France métropolitaine jusqu’au 31/12/2021 inclus, exclusivement sur le site internet www.nespresso.com, sur l'Application Mobile Nespresso, par téléphone au 0800 55 52 53 (Appel et service gratuit depuis un poste fixe) ou dans nos Boutiques Nespresso (selon jours d’ouverture de la Boutique). Bénéficiez d’une remise immédiate de EUROS15, dès 200 capsules achetées dans la gamme Vertuo, sur indication du code EUROS-15. Offre nominative, limitée à une (1) utilisation par client Ambassadeur éligible, non-cumulable avec toute autre offre Nespresso en cours."
                }
            },
            "InactiveExpertOL": {
                "Active": false,
                "Priority": 10,
                "UserCriteria": {
                    "Tier": 2,
                    "MembershipCapsQuantityMax": 390,
                    "MembershipLastCoffeeOrderMonthMin": 7,
                    "MembershipCapsTechno": "OL"
                },
                "BasketCriteria": {
                    "Techno": "OL",
                    "CapsQuantity": 100
                },
                "Content": {
                    "Claim": "<span class='u-text-big'><strong><em>5€</em> offerts*</strong></span><br/>dès 100 capsules Original commandées<br class='mc-hidden'> <span class='dynamic-hide'>avec le code <span class='reactive-banner__code'>{CodePromo}</span></span>",
                    "HpClaim": "<em>5€</em> offerts*<br/>sur votre commande",
                    "StackClaim": "5€ offerts* dès 100 capsules Original commandées",
                    "CodePromo": "05-EUROS",
                    "CTA": "Order",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/original/",
                    "DynamicContent": {
                        "Start": "<span class='u-text-big'><strong><em>5€</em> offerts*</strong></span><br/>dès 100 capsules Original commandées",
                        "Progress": "<span class='u-text-big'><strong>Plus que <em>[[quantity_caps]]</em> capsules,</strong></span><br/>pour bénéficier de <strong><em>5€</em> offerts*</strong>",
                        "Finish": "<strong><span class='u-text-big'>Félicitations !</span><br> <em>5€</em> offerts*</strong> <br class='no-sticky'>avec le code <span class='reactive-banner__code'>{CodePromo}</span>"
                    },
                    "MobileSticky": {
                        "Claim": "<span class='u-text-big'><strong><em>5€</em> offerts*</strong>",
                        "Code": "avec le code<br/><span class='reactive-banner__code'>{CodePromo}</span>"
                    },
                    "Images": {
                        "Main": "https://www.nespresso.com/ecom/medias/sys_master/public/12295206141982/Offer-DowngradeExpertOL-Parcours.png?impolicy=medium&imwidth=720",
                        "HP": "https://www.nespresso.com/ecom/medias/sys_master/public/12295205945374/Offer-DowngradeExpertOL-Homepage.png",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/13620371554334/Experts-vers-connaiseurs-OL.png"
                    },
                    "Conditions": "Offre valable en France métropolitaine jusqu’au 31/12/2021 inclus, exclusivement sur le site internet www.nespresso.com, sur l'Application Mobile Nespresso, par téléphone au 0800 55 52 53 (Appel et service gratuit depuis un poste fixe) ou dans nos Boutiques Nespresso (selon jours d’ouverture de la Boutique). Bénéficiez d’une remise immédiate de 5€, dès 100 capsules achetées dans la gamme Original, sur indication du code 05-EUROS. Offre nominative, limitée à une (1) utilisation par client Expert éligible, non-cumulable avec toute autre offre Nespresso en cours."
                }
            },
            "InactiveExpertVL": {
                "Active": false,
                "Priority": 10,
                "UserCriteria": {
                    "Tier": 2,
                    "MembershipCapsQuantityMax": 390,
                    "MembershipLastCoffeeOrderMonthMin": 7,
                    "MembershipCapsTechno": "VL"
                },
                "BasketCriteria": {
                    "Techno": "VL",
                    "CapsQuantity": 100
                },
                "Content": {
                    "Claim": "<span class='u-text-big'><strong><em>10€</em> offerts*</strong></span><br/>dès 100 capsules Vertuo commandées<br class='mc-hidden'> <span class='dynamic-hide'>avec le code <span class='reactive-banner__code'>{CodePromo}</span></span>",
                    "HpClaim": "<em>10€</em> offerts*<br/>sur votre commande",
                    "StackClaim": "10€ offerts* dès 100 capsules Vertuo commandées",
                    "CodePromo": "EUROS-10",
                    "CTA": "Order",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/vertuo/",
                    "DynamicContent": {
                        "Start": "<span class='u-text-big'><strong><em>10€</em> offerts*</strong></span><br/>dès 100 capsules Vertuo commandées",
                        "Progress": "<span class='u-text-big'><strong>Plus que <em>[[quantity_caps]]</em> capsules,</strong></span><br/>pour bénéficier de <strong><em>10€</em> offerts*</strong>",
                        "Finish": "<strong><span class='u-text-big'>Félicitations !</span><br> <em>10€</em> offerts*</strong> <br class='no-sticky'>avec le code <span class='reactive-banner__code'>{CodePromo}</span>"
                    },
                    "MobileSticky": {
                        "Claim": "<span class='u-text-big'><strong><em>10€</em> offerts*</strong>",
                        "Code": "avec le code<br/><span class='reactive-banner__code'>{CodePromo}</span>"
                    },
                    "Images": {
                        "Main": "https://www.nespresso.com/ecom/medias/sys_master/public/12295206273054/Offer-DowngradeExpertVL-Parcours.png?impolicy=medium&imwidth=720",
                        "HP": "https://www.nespresso.com/ecom/medias/sys_master/public/12295206207518/Offer-DowngradeExpertVL-Homepage.png",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/13620372013086/Experts-vers-connaiseurs-VL.png"
                    },
                    "Conditions": "Offre valable en France métropolitaine jusqu’au 31/12/2021 inclus, exclusivement sur le site internet www.nespresso.com, sur l'Application Mobile Nespresso, par téléphone au 0800 55 52 53 (Appel et service gratuit depuis un poste fixe) ou dans nos Boutiques Nespresso (selon jours d’ouverture de la Boutique). Bénéficiez d’une remise immédiate de 10€, dès 100 capsules achetées dans la gamme Vertuo, sur indication du code EUROS-10. Offre nominative, limitée à une (1) utilisation par client Expert éligible, non-cumulable avec toute autre offre Nespresso en cours."
                }
            }
        },
        "Advantages": {
            "LoyaltyOffice": {
                "Active": false,
                "Priority": 80,
                "UserCriteria": {
                    "CustomerID": "20919",
                    "MembershipCapsQuantityMin": 1000,
                    "UserGroups": ["FR_Stack_Eligibility_1000_Office_MS"]
                },
                "Content": {
                    "Claim": ["<strong>Choisissez votre cadeau <br/>dans votre prochaine commande</strong>"],
                    "HpClaim": "",
                    "StackClaim": "Choisissez votre cadeau dans votre prochaine commande",
                    "ShowHpTierLogo": true,
                    "CTA": "Order",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/original/",
                    "Images": {
                        "Main": "",
                        "HP": "",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/28448479838238/100x100-fid.png?"
                    },
                    "Conditions": "*Dès 1000 capsules achetées depuis votre mois anniversaire Nespresso sur le site internet Nespresso.com, l'application mobile Nespresso, par téléphone au 0 800 55 52 53 (appel et service gratuits, disponibles du lundi au samedi de 8h à 20h, hors 1er mai et jours fériés) ou dans l'une de nos boutiques Nespresso, sélectionnez, lors de votre prochaine commande de café sur ces mêmes canaux, un cadeau de votre choix parmi une liste de 3 cadeaux prédéterminée par Nespresso. Offre strictement nominative, dans la limite des stocks disponibles, limitée à une utilisation par Membre Ambassadeur du Club Nespresso entre le mois anniversaire Nespresso et la veille du prochain mois anniversaire Nespresso, non cumulable avec toute autre offre Nespresso en cours."
                }
            },
            "Loyalty1000": {
                "Active": false,
                "Priority": 50,
                "UserCriteria": {
                    "MembershipCapsQuantityMin": 1000,
                    "CustomerID": "20919",
                    "UserGroups": ["FR_Stack_Eligibility_1000_MS"],
                    "Tier" : 3
                },
                "Content": {
                    "Claim": ["<strong>Choisissez votre cadeau <br/>dans votre prochaine commande</strong>"],
                    "HpClaim": "",
                    "StackClaim": "Choisissez votre cadeau dans votre prochaine commande",
                    "ShowHpTierLogo": true,
                    "CTA": "Order",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/original/",
                    "Images": {
                        "Main": "",
                        "HP": "",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/28448479838238/100x100-fid.png?"
                    },
                    "Conditions": "Dès 1000 capsules achetées depuis votre mois anniversaire Nespresso sur le site internet http://Nespresso.com , l'application mobile Nespresso, par téléphone au 0 800 55 52 53 (appel et service gratuits, disponibles du lundi au samedi de 8h à 20h, hors 1er mai et jours fériés) ou dans l'une de nos boutiques Nespresso, sélectionnez, lors de votre prochaine commande de café sur ces mêmes canaux, un cadeau de votre choix parmi une liste de 3 cadeaux prédéterminée par Nespresso. Offre strictement nominative, dans la limite des stocks disponibles, limitée à une utilisation par Membre Ambassadeur du Club Nespresso entre le mois anniversaire Nespresso et la veille du prochain mois anniversaire Nespresso, non cumulable avec toute autre offre Nespresso en cours."
                }
            },
            "Loyalty500Chocolats": {
                "Active": false,
                "Priority": 40,
                "UserCriteria": {
                    "CustomerID": "20918",
                    "MembershipCapsQuantityMin": 500,
                    "UserGroups": ["FR_Stack_Eligibility_500_MS"]
                },
                "Content": {
                    "Claim": ["<strong>Pour vous remercier<br/>de <em>votre fidélité</em></strong>", "<strong><em>Un coffret de <br/> Chocolat</em> offert*</strong><br><small>dans votre commande</small>"],
                    "HpClaim": "<em>Un coffret de<br/>chocolat</em> offert*",
                    "StackClaim": "Un coffret de chocolat offert* dans votre commande",
                    "ShowHpTierLogo": true,
                    "CTA": "Order",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/",
                    "Images": {
                        "Main": "https://www.nespresso.com/ecom/medias/sys_master/public/14759911391262/1086x465.png?impolicy=medium&imwidth=480",
                        "HP": "https://www.nespresso.com/ecom/medias/sys_master/public/12295203815454/Advantage-Fid500OL-Homepage.jpg",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/15669096611870/100x100.png?"
                    },
                    "Conditions": "Offre valable en France métropolitaine jusqu’au 31/12/2023 inclus, exclusivement sur le site internet Nespresso.com, par téléphone au 0 800 55 52 53 (appel et service gratuits, disponibles du lundi au samedi de 8h à 20h, hors 1er mai et jours fériés). Dès 500 capsules achetées depuis votre mois anniversaire Nespresso, recevez lors de votre prochaine commande de café un cadeau pré-selectionné par Nespresso : une boite de 40 chocolats noirs ou une boite de 15 financiers à la pistache. Offre nominative, limitée à une utilisation par membre Expert ou Ambassadeur du Club Nespresso, non cumulable avec toute autre offre Nespresso en cours. "
                }
            },
            "Loyalty500financiers-AMB": {
                "Active": false,
                "Priority": 40,
                "UserCriteria": {
                    "CustomerID": "20918",
                    "MembershipCapsQuantityMin": 500,
                    "MembershipCapsQuantityMax": 990,
                    "UserGroups": ["FR_Stack_Eligibility_500_MS"],
                    "Tier": 3
                },
                "Content": {
                    "Claim": ["<strong>Choisissez votre cadeau<br/> dans votre prochaine commande></strong>"],
                    "HpClaim": "<em>Un cadeau<br/>fidalité</em> offert*",
                    "StackClaim": "Choisissez votre cadeau dans votre prochaine commande",
                    "ShowHpTierLogo": true,
                    "CTA": "Order",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/original/",
                    "Images": {
                        "Main": "",
                        "HP": "",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/28448479838238/100x100-fid.png?"
                    },
                    "Conditions": "Dès 500 capsules achetées depuis votre mois anniversaire Nespresso sur le site internet http://Nespresso.com , l'application mobile Nespresso, par téléphone au 0 800 55 52 53 (appel et service gratuits, disponibles du lundi au samedi de 8h à 20h, hors 1er mai et jours fériés) ou dans l'une de nos boutiques Nespresso, sélectionnez, lors de votre prochaine commande de café sur ces mêmes canaux, un cadeau de votre choix parmi une liste de 2 cadeaux prédéterminée par Nespresso en fonction des saisons. Offre strictement nominative, dans la limite des stocks disponibles, limitée à une utilisation par Membre Expert ou Ambassadeur du Club Nespresso entre le mois anniversaire Nespresso et la veille du prochain mois anniversaire Nespresso, non cumulable avec toute autre offre Nespresso en cours."
                }
            },
            "Etuis-offert-21493": {
                "Active": false,
                "Priority": 100,
                "UserCriteria": {
                    "CustomerID": "8930",
                    "Tier": ""
                },
                "Content": {
                    "Claim": ["<strong>Un étui offert offert<br/>pour tout achat de café jusqu’au 15/12  </strong>"],
                    "HpClaim": "<em>Un cadeau<br/>fidélité</em> offert*",
                    "StackClaim": "Un étui offert pour tout achat de café jusqu’au 15/12",
                    "ShowHpTierLogo": true,
                    "CTA": "Enjoy",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/original/",
                    "Images": {
                        "Main": "",
                        "HP": "",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/33270053208094/image-stack-offre-etui-offert100x100.png"
                    },
                    "Conditions": "Offre valable en France métropolitaine du 02/12/2024 au 15/12/2024 inclus, sur le site internet Nespresso.com, l'application mobile Nespresso, par téléphone au 0 800 55 52 53 (appel et service gratuits, disponibles du lundi au samedi de 8h à 20h, hors 1er mai et jours fériés) ou dans l'une de nos boutiques Nespresso (selon jours d'ouverture de la boutique). Pour tout achat minimum de 5 étuis de la gamme Original et/ou Vertuo sur le site internet Nespresso.com, l’application mobile Nespresso ou par téléphone au 0 800 55 52 53, ou pour tout achat minimum de 1 étui de la gamme Original et/ou la gamme Vertuo dans l’une de nos boutiques Nespresso, bénéficiez, selon vos habitudes de consommation, soit d’un étui Original Festive Unforgettable Espresso offert d’une valeur commerciale indicative de 5,40 € TTC soit d’un étui Vertuo Festive Unforgettable Double Espresso d’une valeur commerciale indicative de 6,10 € TTC. Offre strictement nominative et non transférable, limitée à une (1) utilisation par Ambassadeur Nespresso, dans la limite des stocks disponibles et non cumulable avec toute autre offre Nespresso en cours."
                }
            },
            "Verre Mixology Barista Offert": {
                "Active": false,
                "Priority": 100,
                "UserCriteria": {
                    "CustomerID": "8930",
                    "Tier": ""
                },
                "Content": {
                    "Claim": ["<strong>1 verre à pied festive offert et 1 flyer pour tout achat café pendant la période*</strong>"],
                    "HpClaim": "<em>1 verre à pied<br/> festive offert*",
                    "StackClaim": "1 verre à pied festive offert et 1 flyer pour tout achat café pendant la période*",
                    "ShowHpTierLogo": true,
                    "CTA": "J'en profite",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/original",
                    "Images": {
                        "Main": "",
                        "HP": "",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/46847744573470/Verre-Pied-Stack-des-offres.png"
                    },
                    "Conditions": "Visuel non contractuel. Offre valable en France métropolitaine (Corse et Monaco inclus) du 15/12/2025 au 21/12/2025 inclus, pour tout achat minimum de trois (3) étuis de la gamme Original et/ou Vertuo sur le site internet www.nespresso.com/fr, l’application mobile Nespresso ou par téléphone au 0 800 55 52 53, ou dans l’une de nos Boutiques Nespresso (selon heures et jours d'ouverture de la Boutique), bénéficiez d’un verre à pied Festive 2024 offert d’une valeur commerciale indicative de 14,00 € TTC. Offre strictement nominative et non transférable, limitée à une (1) utilisation par Expert éligible à cette offre, ne disposant pas d’un abonnement café Nespresso, dans la limite des stocks disponibles et non cumulable avec toute autre offre Nespresso en cours."
                }
            },
            "Etuis-offert-AMB-21423": {
                "Active": false,
                "Priority": 100,
                "UserCriteria": {
                    "CustomerID": "21423",
                    "Tier": "3"
                },
                "Content": {
                    "Claim": ["<strong>Un étui offert<br/> pour tout achat café jusqu'au 13/10</strong>"],
                    "HpClaim": "<em>Un cadeau<br/>fidélité</em> offert*",
                    "StackClaim": "Un cadeau mystère offert pour tout achat de café jusqu'au 13/10",
                    "ShowHpTierLogo": true,
                    "CTA": "Enjoy",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/original/",
                    "Images": {
                        "Main": "",
                        "HP": "",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/33270053208094/image-stack-offre-etui-offert100x100.png"
                    },
                    "Conditions": "Offre valable en France métropolitaine du 16/09/2024 au 13/10/2024 inclus, sur le site internet Nespresso.com, sur l'application mobile Nespresso, par téléphone au 0 800 55 52 53 (appel et service gratuits, disponibles du lundi au samedi de 8h à 20h, hors 1er mai et jours fériés) ou dans l'une de nos Boutiques Nespresso (selon jours d'ouverture de la Boutique). Pour tout achat de 5 étuis de la gamme Original et/ou Vertuo sur le site internet Nespresso.com, sur l’application mobile Nespresso ou par téléphone au 0 800 55 52 53 ou pour tout achat de 1 étui de la gamme Original ou de 1 étui de la gamme Vertuo dans l’une de nos Boutiques Nespresso, bénéficiez, en fonction de vos habitudes de consommation, d’un flyer et d’un étui de café offerts parmi 4 cafés présélectionnés (un étui Volluto d’une valeur commerciale indicative de 4,30 € TTC ; un étui Ristretto Original d’une valeur commerciale indicative de 4,30 € TTC ; un étui Voltesso d’une valeur commerciale indicative de 4,40 € TTC ; ou un étui Ristretto Classico Vertuo d’une valeur commerciale indicative de 4,40 € TTC).  Offre strictement nominative et non transférable, limitée à une (1) utilisation par Ambassadeur Nespresso, dans la limite des stocks disponibles et non cumulable avec toute autre offre Nespresso en cours."
                }
            },
            "Etuis-offert-AMB-21424": {
                "Active": false,
                "Priority": 100,
                "UserCriteria": {
                    "CustomerID": "21424",
                    "Tier": "3"
                },
                "Content": {
                    "Claim": ["<strong>Un étui offert<br/> pour tout achat café jusqu'au 13/10</strong>"],
                    "HpClaim": "<em>Un cadeau<br/>fidélité</em> offert*",
                    "StackClaim": "Un cadeau mystère offert pour tout achat de café jusqu'au 13/10",
                    "ShowHpTierLogo": true,
                    "CTA": "Enjoy",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/original/",
                    "Images": {
                        "Main": "",
                        "HP": "",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/33270053208094/image-stack-offre-etui-offert100x100.png"
                    },
                    "Conditions": "Offre valable en France métropolitaine du 16/09/2024 au 13/10/2024 inclus, sur le site internet Nespresso.com, sur l'application mobile Nespresso, par téléphone au 0 800 55 52 53 (appel et service gratuits, disponibles du lundi au samedi de 8h à 20h, hors 1er mai et jours fériés) ou dans l'une de nos Boutiques Nespresso (selon jours d'ouverture de la Boutique). Pour tout achat de 5 étuis de la gamme Original et/ou Vertuo sur le site internet Nespresso.com, sur l’application mobile Nespresso ou par téléphone au 0 800 55 52 53 ou pour tout achat de 1 étui de la gamme Original ou de 1 étui de la gamme Vertuo dans l’une de nos Boutiques Nespresso, bénéficiez, en fonction de vos habitudes de consommation, d’un flyer et d’un étui de café offerts parmi 4 cafés présélectionnés (un étui Volluto d’une valeur commerciale indicative de 4,30 € TTC ; un étui Ristretto Original d’une valeur commerciale indicative de 4,30 € TTC ; un étui Voltesso d’une valeur commerciale indicative de 4,40 € TTC ; ou un étui Ristretto Classico Vertuo d’une valeur commerciale indicative de 4,40 € TTC).  Offre strictement nominative et non transférable, limitée à une (1) utilisation par Ambassadeur Nespresso, dans la limite des stocks disponibles et non cumulable avec toute autre offre Nespresso en cours."
                }
            },
            "Etuis-offert-AMB-21561": {
                "Active": false,
                "Priority": 100,
                "UserCriteria": {
                    "CustomerID": "21561",
                    "Tier": ""
                },
                "Content": {
                    "Claim": ["<strong>Un étui offert<br/> pour tout achat café jusqu'au 02/03</strong>"],
                    "HpClaim": "Un étui offert*",
                    "StackClaim": "Un étui offert pour tout achat de café jusqu'au 02/03",
                    "ShowHpTierLogo": true,
                    "CTA": "Enjoy",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/original/",
                    "Images": {
                        "Main": "",
                        "HP": "",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/33270053208094/image-stack-offre-etui-offert100x100.png"
                    },
                    "Conditions": "Offre valable en France métropolitaine du 05/02/2025 au 02/03/2025 inclus, sur le site internet www.Nespresso.com, l'application mobile Nespresso, par téléphone au 0 800 55 52 53 (appel et service gratuits, disponibles du lundi au samedi de 8h à 20h, hors jours fériés) ou dans l'une de nos boutiques Nespresso (selon jours d'ouverture de la boutique). Pour tout achat minimum de 5 étuis de la gamme Original et/ou Vertuo sur le site internet www.Nespresso.com, l’application mobile Nespresso ou par téléphone au 0 800 55 52 53, ou pour tout achat minimum de 1 étui de la gamme Original et/ou la gamme Vertuo dans l’une de nos boutiques Nespresso, bénéficiez soit d’un étui Original Master Origins Zambia offert d’une valeur commerciale indicative de 5,20 € TTC si votre panier contient exclusivement des capsules de la gamme Original soit, d’un étui Vertuo Altissio d’une valeur commerciale indicative de 4,40 € TTC si votre panier contient exclusivement des capsules de la gamme Vertuo ou des capsules des deux gammes. Offre strictement nominative et non transférable, limitée à une (1) utilisation par Ambassadeur Nespresso non abonné à l’abonnement café Nespresso, dans la limite des stocks disponibles et non cumulable avec toute autre offre Nespresso en cours. "
                }
            },

            "FreeDelivery": {
                "Active": true,
                "Priority": 5,
                "UserCriteria": {},
                "Content": {
                    "Claim":  "<strong>Livraison <em>offerte*</em></strong><br/><small>pour toute commande</small>",
                    "HpClaim": "Livraison <em>offerte*</em><br/>pour toute commande",
                    "StackClaim": "Livraison offerte",
                    "ShowHpTierLogo": false,
                    "CTA": "Order",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/",
                    "Images": {
                        "Main": "https://www.nespresso.com/ecom/medias/sys_master/public/12295204962334/Advantage-FreeDelivery-Parcours.png?impolicy=medium&imwidth=480",
                        "HP": "https://www.nespresso.com/ecom/medias/sys_master/public/12295204896798/Advantage-FreeDelivery-Homepage.png",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/13620366999582/Livraison-Gratuite.png"
                    },
                    "Conditions": "Livraison en click and collect offerte pour tout achat. Livraison en point de retrait offerte dès 20 € d'achat. Livraison à domicile en Colissimo offerte dès 40 € d'achat. Conditions valables en France métropolitaine, Corse et Monaco, sous réserve du statut fidélité applicable, pour toute commande sur le site www.nespresso.com/fr, depuis l’application mobile Nespresso ou par téléphone au 0 800 55 52 53 (service & appel gratuits disponibles du lundi au samedi de 8h à 20h, hors jours fériés)."
                }
            },
            "BirthdayGiftOL": {
                "Active": false,
                "Priority": 70,
                "UserCriteria": {
                    "ClubStatus": true,
                    "MembershipBirthdayMonth": true,
                    "MembershipCapsTechno": "OL",
                    "UserGroups": ["FR_Stack_Eligibility_BirthdayGift_CS"]
                },
                "Content": {
                    "Claim": ["<small>C'est votre mois</small><strong><br/><em>anniversaire Nespresso</em></strong>", "<strong>un coffret découverte de<br/> <em>7 capsules Original</em> offert*</strong><br/><small>dans votre commande</small>"],
                    "HpClaim": "Un cadeau pour votre<br/><em>anniversaire Nespresso*</em>",
                    "StackClaim": "Pour votre anniversaire Nespresso, recevez un coffret découverte de 7 capsules",
                    "ShowHpTierLogo": false,
                    "CTA": "Order",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/original/",
                    "Images": {
                        "Main": "https://www.nespresso.com/ecom/medias/sys_master/public/12295203749918/Advantage-BirthdayMonth-Parcours.png?impolicy=medium&imwidth=480",
                        "HP": "https://www.nespresso.com/ecom/medias/sys_master/public/12300277415966/Advantage-BirthdayMonth-Homepage.jpg",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/14283132796958/100x100-desktop2.png"
                    },
                    "Conditions": "Recevez, selon vos habitudes de consommation, un coffret découverte de 7 capsules présélectionnées par Nespresso de la gamme Original ou 12 capsules présélectionnées par Nespresso de la gamme Vertuo. Le coffret sera joint à votre commande pour tout achat minimum de 5 étuis de la gamme Original ou 3 étuis de la gamme Vertuo réalisé entre le premier et le dernier jour du mois de votre anniversaire de membre du Club Nespresso, sur le site internet Nespresso.com , par téléphone au 0 800 55 52 53 (appel et service gratuits, disponibles du lundi au samedi de 8h à 20h, hors 1er mai et jours fériés) ou dans l'une de nos Boutiques Nespresso (selon jours d'ouverture de la Boutique). Offre nominative, limitée à une utilisation par membre éligible du Club Nespresso, non cumulable avec toute autre offre Nespresso en cours."
                }
            },
            "BirthdayGiftVL": {
                "Active": false,
                "Priority": 70,
                "UserCriteria": {
                    "ClubStatus": true,
                    "MembershipBirthdayMonth": true,
                    "MembershipCapsTechno": "VL",
                    "UserGroups": ["FR_Stack_Eligibility_BirthdayGift_CS"]
                },
                "Content": {
                    "Claim": ["<small>C'est votre mois</small><strong><br/><em>anniversaire Nespresso</em></strong>", "<strong>un coffret découverte de<br/> <em>12 capsules Vertuo</em> offert*</strong><br/><small>dans votre commande</small>"],
                    "HpClaim": "<em>Pour votre anniversaire Nespresso,</em><br/> recevez un coffret découverte de 12 capsules*",
                    "StackClaim": "Pour votre anniversaire Nespresso, recevez un coffret découverte de 12 capsules",
                    "ShowHpTierLogo": false,
                    "CTA": "Order",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/vertuo/",
                    "Images": {
                        "Main": "https://www.nespresso.com/ecom/medias/sys_master/public/17062808125470/Coffret-Set-Vertuo-cote-1086-465.png?",
                        "HP": "https://www.nespresso.com/ecom/medias/sys_master/public/17062808322078/Coffret-Set-Vertuo-cote-900-515.png?",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/17062810484766/Coffret-Set-Vertuo-face-100-100.png?"
                    },
                    "Conditions": "Recevez, selon vos habitudes de consommation, un coffret découverte de 7 capsules présélectionnées par Nespresso de la gamme Original ou 12 capsules présélectionnées par Nespresso de la gamme Vertuo. Le coffret sera joint à votre commande pour tout achat minimum de 5 étuis de la gamme Original ou 3 étuis de la gamme Vertuo réalisé entre le premier et le dernier jour du mois de votre anniversaire de membre du Club Nespresso, sur le site internet Nespresso.com , par téléphone au 0 800 55 52 53 (appel et service gratuits, disponibles du lundi au samedi de 8h à 20h, hors 1er mai et jours fériés) ou dans l'une de nos Boutiques Nespresso (selon jours d'ouverture de la Boutique). Offre nominative, limitée à une utilisation par membre éligible du Club Nespresso, non cumulable avec toute autre offre Nespresso en cours."
                }
            },
            "EspressoRebateVL": {
                "Active": false,
                "Priority": 20,
                "UserCriteria": {
                    "tier": 3,
                    "MembershipCapsTechno": "VL"
                },
                "Content": {
                    "Claim": "<small>Bénéficiez de</small><br/><strong><em>-10%</em> sur les cafés de<br/>la gamme espresso Vertuo</strong>",
                    "HpClaim": "<em>-10%</em> sur la gamme<br/>espresso Vertuo*",
                    "StackClaim": "-10% sur la gamme Espresso Vertuo",
                    "ShowHpTierLogo": true,
                    "CTA": "Enjoy",
                    "Link": "https://www.nespresso.com/fr/fr/order/capsules/vertuo/",
                    "Images": {
                        "Main": "https://www.nespresso.com/ecom/medias/sys_master/public/12295205355550/Advantage-RebateEspressoVL-Parcours.png?impolicy=medium&imwidth=480",
                        "HP": "https://www.nespresso.com/ecom/medias/sys_master/public/12295205290014/Advantage-RebateEspressoVL-Homepage.png",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/13620226555934/-10-Espresso-VL.png"
                    },
                    "Conditions": "Bénéficiez d’une remise de 10% sur les Espresso de la gamme Vertuo sur le site internet www.nespresso.com, depuis l’Application Nespresso, par téléphone au 0 800 55 52 53 – Services et appels gratuits - ou dans votre Boutique Nespresso (selon jours d’ouverture de la Boutique). Offre nominative réservée aux Clients Ambassadeurs, valable sur chaque commande réalisée avec le numéro de compte client éligible."
                }
            },



            "AccessoriesRebateExpert": {
                "Active": true,
                "Priority": 80,
                "UserCriteria": {
                    "tier": 2
                },
                "Content": {
                    "Claim": "<small>Bénéficiez de</small><br/><strong><em>-15%</em> sur les Accessoires<br/>et les Gourmandises*</strong>",
                    "HpClaim": "<em>-15%</em> sur les Accessoires<br/>et les Gourmandises*",
                    "StackClaim": "-15% sur les Accessoires et les Gourmandises",
                    "ShowHpTierLogo": true,
                    "CTA": "Enjoy",
                    "Link": "https://www.nespresso.com/fr/fr/accessories",
                    "Images": {
                        "Main": "https://www.nespresso.com/ecom/medias/sys_master/public/12306690048030/Advantage-RebateAccessories-Parcours.png?impolicy=medium&imwidth=480",
                        "HP": "https://www.nespresso.com/ecom/medias/sys_master/public/12306689884190/Advantage-RebateAccessories-Homepage.png",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/13620365819934/-15-Accessories.png"
                    },
                    "Conditions": "Bénéficiez d’une remise de 15% sur les accessoires et les gourmandises Nespresso (hors articles d’entretien et pièces détachées des machines) sur le site internet Nespresso.com, depuis l’application mobile Nespresso, par téléphone au 0 800 55 52 53 (appel et service gratuits, disponibles du lundi au samedi de 8h à 20h, hors 1er mai et jours fériés) ou dans l’une de nos Boutiques Nespresso (selon jours d’ouverture de la Boutique). Offre nominative réservée aux membres Experts et Ambassadeurs du Club Nespresso, valable sur chaque commande réalisée avec le numéro de compte membre éligible, non cumulable avec toute autre offre Nespresso en cours."
                }
            },
            "AccessoriesRebateAmbassador": {
                "Active": true,
                "Priority": 80,
                "UserCriteria": {
                    "tier": 3
                },
                "Content": {
                    "Claim": "<small>Bénéficiez de</small><br/><strong><em>-15%</em> sur les Accessoires<br/>et les Gourmandises*</strong>",
                    "HpClaim": "<em>-15%</em> sur les Accessoires<br/>et les Gourmandises*",
                    "StackClaim": "-15% sur les Accessoires et les Gourmandises",
                    "ShowHpTierLogo": true,
                    "CTA": "Discover",
                    "Link": "https://www.nespresso.com/fr/fr/accessories",
                    "Images": {
                        "Main": "https://www.nespresso.com/ecom/medias/sys_master/public/12306690048030/Advantage-RebateAccessories-Parcours.png?impolicy=medium&imwidth=480",
                        "HP": "https://www.nespresso.com/ecom/medias/sys_master/public/12306689884190/Advantage-RebateAccessories-Homepage.png",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/13620365819934/-15-Accessories.png"
                    },
                    "Conditions": "Bénéficiez d’une remise de 15% sur les accessoires et les gourmandises Nespresso (hors articles d’entretien et pièces détachées des machines) sur le site internet Nespresso.com, depuis l’application mobile Nespresso, par téléphone au 0 800 55 52 53 (appel et service gratuits, disponibles du lundi au samedi de 8h à 20h, hors 1er mai et jours fériés) ou dans l’une de nos Boutiques Nespresso (selon jours d’ouverture de la Boutique). Offre nominative réservée aux membres Experts et Ambassadeurs du Club Nespresso, valable sur chaque commande réalisée avec le numéro de compte membre éligible, non cumulable avec toute autre offre Nespresso en cours.."
                }
            },
            "MachineRebateAmbassador": {
                "Active": true,
                "Priority": 90,
                "UserCriteria": {
                    "tier": 3
                },
                "Content": {
                    "Claim": "<small>Bénéficiez de</small><br/><strong><em>-15%</em> sur votre machine Original ou Vertuo</strong><br/>valable 1 fois par an*",
                    "HpClaim": "<em>-15%</em> votre machine Original ou Vertuo,<br/>valable 1 fois par an*",
                    "StackClaim": "-15% sur votre machine Original ou Vertuo, valable 1 fois par an",
                    "ShowHpTierLogo": true,
                    "CTA": "Discover",
                    "Link": "https://www.nespresso.com/fr/fr/order/machines/vertuo",
                    "Images": {
                        "Main": "https://www.nespresso.com/ecom/medias/sys_master/public/14318222966814/Stack-des-offres-avantages-machines-Ambassadeur-1086x465px.png?impolicy=medium&imwidth=480",
                        "HP": "https://www.nespresso.com/ecom/medias/sys_master/public/14318222573598/Stack-des-offres-avantages-machines-Ambassadeur-900x515px.png",
                        "Stack": "https://www.nespresso.com/ecom/medias/sys_master/public/14282930356254/Stack-des-offres-avantages-machines-Ambassadeur-100x100px.png"
                    },
                    "Conditions": "*Bénéficiez d’une remise immédiate de 15% sur l’achat d’une machine de la gamme Original ou Vertuo, exclusivement sur le site internet Nespresso.com, sur l'application mobile Nespresso, par téléphone au 0 800 55 52 53 (appel et service gratuits, disponibles du lundi au samedi de 8h à 20h, hors 1er mai et jours fériés) ou dans l’une de nos Boutiques Nespresso (selon jours d’ouverture de la Boutique). Offre nominative, cumulable avec toute autre offre Nespresso en cours, limitée à une utilisation par membre Ambassadeur du Club Nespresso par an, soit tous les 12 mois après la date du dernier achat machine.​"
                }
            }
        },
        "Statuses": {
            "ConnoisseurToExpert": {
                "Active": false,
                "UserCriteria": {
                    "Tier": 1,
                    "TotalCapsMin": 350
                },
                "BasketCriteria": {
                    "CapsToNextTier": 500
                },
                "Content": {
                    "DynamicContent": {
                        "Progress": "<span class='u-text-big'><strong>Plus que <em>[[quantity_caps]]</em> capsules<sup>*</sup>,</strong></span><br/>pour devenir [[expert_svg]] <br/> et bénéficier de nouveaux avantages",
                        "Finish": "<span class='u-text-big'><strong>Félicitations!</strong></span><br/> Finalisez votre commande pour devenir<br/> [[expert_svg]]"
                    },
                    "Legend": "*Sous réserve des règles de conditionnement",
                    "Images": {
                        "Main": "https://www.nespresso.com/ecom/medias/sys_master/public/12233574023198/Layer-4.png"
                    },
                    "Conditions": "<h3>Le Programme de Fidélité Nespresso</h3><p>Découvrez la sélection d’avantages auxquels vous accédez progressivement:</p><ul><li><strong>Clients <span style='color:#f28b32;'>Connaisseur</span> (vous consommez 1 à 2 cafés par jour)</strong><br/><br/><em>Profitez de</em> :<ul><li>La Livraison gratuite</li><li>Un cadeau pour votre Anniversaire Nespresso</li><li>Des Journées privées</li><li>Nos Ateliers Master Class</li><li>La Dégustation offerte en Boutique</li></ul></li><li><strong>Clients <span style='color:#008ccd;'>Expert</span> (vous consommez 2 à 3 cafés par jour)</strong><br/><br/><em>Profitez des avantages <span style='color:#f28b32;'>Connaisseur</span> ainsi que de</em> :<ul><li>-15% sur les accessoires et gourmandises</li><li>Du Forfait Service Après-Vente Premium</li></ul></li><li><strong>Clients <span style='color:#6c4797;'>Ambassadeur</span> (vous consommez plus de 3 cafés par jour)</strong><br/><br/><em>Profitez des avantages <span style='color:#008ccd;'>Experts</span> ainsi que de</em>:<ul><li>-10% sur les cafés en édition limitée</li><li>-10% sur les espressos de la gamme Vertuo</li></ul></li></ul><style>.popin-page .free-lightbox-title { display:none; }.popin-page .popin-vscroll {text-align: left; margin: 0 40px; font-size: 13px;}.popin-page .popin-vscroll h3 {text-transform: uppercase; font-weight: bold; margin: 30px 0; font-size: 15px; text-align: center;}.popin-page .popin-vscroll em {font-weight: bold; font-style: normal;}.popin-page .popin-vscroll ul {margin: 20px;}.popin-page .popin-vscroll div > ul > li {list-style: initial;}.popin-page .popin-vscroll div > ul > li > strong {font-size: 14px;}.popin-page .popin-vscroll div > ul > li > ul {margin: 3px 0px 25px 40px}.popin-page .popin-vscroll div > ul > li > ul > li {list-style: circle;}</style>"
                }
            },
            "ExpertToAmbassador": {
                "Active": false,
                "UserCriteria": {
                    "Tier": 2,
                    "TotalCapsMin": 700
                },
                "BasketCriteria": {
                    "CapsToNextTier": 1000
                },
                "Content": {
                    "DynamicContent": {
                        "Progress": "<span class='u-text-big'><strong>Plus que <em>[[quantity_caps]]</em> capsules<sup>*</sup>,</strong></span><br/>pour devenir [[ambassador_svg]] <br/> et bénéficier de nouveaux avantages",
                        "Finish": "<span class='u-text-big'><strong>Félicitations!</strong></span><br/> Finalisez votre commande pour devenir<br/> [[ambassador_svg]]"
                    },
                    "Legend": "*Sous réserve des règles de conditionnement",
                    "Images": {
                        "Main": "https://www.nespresso.com/ecom/medias/sys_master/public/12233574023198/Layer-4.png"
                    },
                    "Conditions": "<h3>Le Programme de Fidélité Nespresso</h3><p>Découvrez la sélection d’avantages auxquels vous accédez progressivement:</p><ul><li><strong>Clients <span style='color:#f28b32;'>Connaisseur</span> (vous consommez 1 à 2 cafés par jour)</strong><br/><br/><em>Profitez de</em> :<ul><li>La Livraison gratuite</li><li>Un cadeau pour votre Anniversaire Nespresso</li><li>Des Journées privées</li><li>Nos Ateliers Master Class</li><li>La Dégustation offerte en Boutique</li></ul></li><li><strong>Clients <span style='color:#008ccd;'>Expert</span> (vous consommez 2 à 3 cafés par jour)</strong><br/><br/><em>Profitez des avantages <span style='color:#f28b32;'>Connaisseur</span> ainsi que de</em> :<ul><li>-15% sur les accessoires et gourmandises</li><li>Du Forfait Service Après-Vente Premium</li></ul></li><li><strong>Clients <span style='color:#6c4797;'>Ambassadeur</span> (vous consommez plus de 3 cafés par jour)</strong><br/><br/><em>Profitez des avantages <span style='color:#008ccd;'>Experts</span> ainsi que de</em>:<ul><li>-10% sur les cafés en édition limitée</li><li>-10% sur les espressos de la gamme Vertuo</li></ul></li></ul><style>.popin-page .free-lightbox-title { display:none; }.popin-page .popin-vscroll {text-align: left; margin: 0 40px; font-size: 13px;}.popin-page .popin-vscroll h3 {text-transform: uppercase; font-weight: bold; margin: 30px 0; font-size: 15px; text-align: center;}.popin-page .popin-vscroll em {font-weight: bold; font-style: normal;}.popin-page .popin-vscroll ul {margin: 20px;}.popin-page .popin-vscroll div > ul > li {list-style: initial;}.popin-page .popin-vscroll div > ul > li > strong {font-size: 14px;}.popin-page .popin-vscroll div > ul > li > ul {margin: 3px 0px 25px 40px}.popin-page .popin-vscroll div > ul > li > ul > li {list-style: circle;}</style>"
                }
            }
        },
        "DeliveryBanner": {
            "AdvantagesList": {
                "connoisseur": [
                    "<strong>Un cadeau</strong> pour votre anniversaire Nespresso",
                    "<strong>2 Journées Privées</strong> par an",
                    "<strong>Livraison gratuite</strong> dès 50 capsules"
                ],
                "expert": [
                    "<strong>Un cadeau</strong> pour votre anniversaire Nespresso",
                    "<strong>-15%</strong> sur les accessoires et gourmandises"
                ],
                "ambassador": [
                    "<strong>Un cadeau</strong> pour votre anniversaire Nespresso",
                    "<strong>-10%</strong> sur les cafés en édition limitée",
                    "<strong>-10%</strong> sur les espressos de la gamme Vertuo",
                    "<strong>-15%</strong> sur les accessoires et gourmandises"
                ]
            },
            "AdvantagesModalities": {
                "linkText": "*voir modalités",
                "popinTitle": "Modalités",
                "popinContent": "<strong>*Livraison Gratuite</strong> :<br>Offre valable en France métropolitaine, pour tout achat de 5 étuis minimum parmi tous nos Grands Crus, effectué sur le site Internet www.nespresso.com, depuis l'Application Mobile Nespresso, ou par téléphone au 0 800 55 52 53, hors livraison express.<br><br><strong>**Livraison Premium</strong> :<br>Livraison premium uniquement dans les zones éligibles au service Nespresso Your Time.<br><br><strong>Avantages du programme</strong> :<br> Voir les modalités complètes sur la page dédiée au programme Nespresso : <a href='https://www.nespresso.com/fr/fr/programme' style='text-decoration:underline; color:#000;'>Cliquez ici</a>"
            },
            "Messages": {
                "default": "Commandez <em>aujourd'hui</em> nous vous livrons <em>dès&nbsp;demain<sup>**</sup></em>",
                "weekDayMorning": "Commandez avant <em>12h</em> nous vous livrons <em>aujourd'hui<sup>**</sup></em>",
                "weekDayAfternoon": "Commandez avant <em>20h</em> nous vous livrons <em>demain&nbsp;dès&nbsp;8h<sup>**</sup></em>",
                "saturdayMorning": "Commandez avant <em>12h</em> nous vous livrons <em>aujourd'hui<sup>**</sup></em>",
                "saturdayAfternoon":"Commandez avant <em>20h</em> nous vous livrons <em>demain&nbsp;dès&nbsp;9h<sup>**</sup></em>"
            },
            "UseOnHp": true
        },
        "stack": {
            "enabled": true,
            "offers": true,
            "offerMaxNb": 1,
            "advantages": true,
            "advantagesMaxNb": 3,
            "discoverBloc": false,
            "moreThanBloc": false,
            "targetBloc": "myaccount/leclub/membershipStatus",
            "urlLinkWording": "J'en profite",
            "seeModalitiesWording": "Voir modalités",
            "offerTitleWording": "Vos offres du moment",
            "advantagesTitleWoring": "Vos avantages fidélité",
            "txtAccount": "Votre compte",
            "txtStatus": "Votre statut: ",
            "txtPromoCodeStart": "avec le code",
            "txtPromoCodeEnd": " ",
            "txtUpgradeStatus": "Plus que {capsulesRemaining} capsules pour devenir membre {nextTier}",
            "txtUpgradeStatusCongrats": "Félicitations ! Finalisez votre commande pour devenir {nextTier}",
            "txtSaveStatus": "Commandez plus que {capsulesRemaining} capsules pour conserver vos avantages {tier} avant le {nextAnniversary}",
            "txtSaveStatusCongrats": "Félicitations ! Finalisez votre commande pour conserver vos avantages",
            "txtDiscover": "Découvrez vos autres offres et avantages du moment"
        },
        "Content": {
            "CTA": {
                "Discover": "Je découvre",
                "Order": "Je commande",
                "Enjoy": "J'en profite",
                "More": "En savoir plus"
            },
            "Conditions": {
                "CTA": "*Voir modalités",
                "Title": "Modalités"
            }
        }
    }

</script></div>

<div id="block-8813736482293" class="free-html" data-label=""  >
    <style type="text/css">
    @media screen and (min-width: 996px) {
        #header.stack-enabled #ta-login-dropdown--logged {
            display: none !important;
        }
    }



</style>

<script src="https://www.nespresso.com/shared_res/mos/free_html/fr/ParcoursFrance/main.js"></script>

<script type="text/javascript">

    // force stack
    window.ABTestStack = true;

    if (window.ABTestStack !== undefined) {
        var element = document.getElementById("header");
        element.classList.add("stack-enabled");

        $("#header").on("click", "#stack-container", function () {
            // change content if not logged in
            if (!window[config.padl.namespace].dataLayer.user.isLoggedIn) {
                $("#stack-container").find(".description").html("<span style='line-height: 16px;'>Identifiez-vous pour suivre toutes les actualités de la marque et retrouver vos avantages exclusifs</span>");
            }
        });
    }
</script>
</div>

<div id="block-8830921561589" class="free-html" data-label=""  >
    <div id="page-builder-a814842c-bde3-89bf-8151-a5516fe2ab22" class="page-builder-a814842c-bde3-89bf-8151-a5516fe2ab22">
</div>
<style type="text/css">
  .page-builder-a814842c-bde3-89bf-8151-a5516fe2ab22 {
    min-height: 40px
  }

  @media(min-width:768px) {
    .page-builder-a814842c-bde3-89bf-8151-a5516fe2ab22 {
      min-height: 40px
    }
  }
</style>
<script id="page-builder-data-a814842c-bde3-89bf-8151-a5516fe2ab22"
  type="application/json">{"id":"page-builder-a814842c-bde3-89bf-8151-a5516fe2ab22","version":"latest","created":"","name":"Search Bar - Coveo FR - Final","preload":{"nb-search-bar":{"modern":"/shared_res/agility/next-components/search-bar/v1.1/index.es.min.js"}},"components":[{"uuid":"nb-search-bar-c1447f1a-a11c-be69-5d7f-ed3ea4af5942","module":"nb-search-bar","tag":"nb-search-bar","folder":"/shared_res/agility/next-components/search-bar/","version":"1.1.0","minHeight":"40","minHeightMobile":"40","variations":[{"index":0,"properties":{"copywriting":{"search_page_url":"/search","search_box_modal_title":"RECHERCHER"},"coveo_copywriting":"{\"add-sources\":\"Ajoutez des sources de contenu ou attendez que les sources nouvellement créées finissent d'être indexées.\",\"all-categories\":\"Toutes les catégories\",\"and-up\":\"et plus\",\"apply\":\"Appliquer\",\"approx_day\":\"Environ un jour\",\"approx_month\":\"Environ un mois\",\"approx_month_plural\":\"Environ {{count}} mois\",\"approx_year\":\"Environ un an\",\"approx_year_plural\":\"Environ {{count}} années\",\"author\":\"Auteur\",\"between-parentheses\":\"({{text}})\",\"between-quotations\":\"«{{text}}»\",\"calendar-last-day\":\"[Hier]\",\"calendar-last-week\":\"[Dernier] dddd\",\"calendar-next-day\":\"[Demain]\",\"calendar-next-week\":\"dddd\",\"calendar-same-day\":\"[Aujourd'hui]\",\"cancel\":\"Annuler\",\"cancel-last-action\":\"Annuler la dernière action\",\"cannot-access\":\"Votre organisation {{org}} ne peut être accédée.\",\"check-spelling\":\"Vérifiez l'orthographe de vos mots-clés.\",\"check-your-connection\":\"Votre requête n'a pas pu être envoyée à l'URL suivante : {{url}}. Vérifiez votre connexion.\",\"clear\":\"Supprimer\",\"clear-all-filters\":\"Supprimer tous les filtres\",\"clear-filters\":\"Supprimer le filtre\",\"clear-filters-for-facet\":\"Effacer le filtre {{count}} pour la facette {{label}}\",\"clear-filters-for-facet_plural\":\"Effacer {{count}} filtres pour la facette {{label}}\",\"clear-filters_plural\":\"Effacer {{count}} filtres\",\"clear-recent-searches\":\"Effacer les recherches récentes\",\"close\":\"Fermer\",\"collapse-facet\":\"Réduire la facette {{label}}\",\"collapse-results\":\"Réduire les résultats\",\"collapsed-uri-parts\":\"Parties d'URI réduites\",\"coveo-online-help\":\"Aide en ligne Coveo\",\"cta_add_to_cart\":\"Ajouter au panier\",\"cta_update_cart\":\"Mise à jour panier\",\"date-input-apply\":\"Appliquer des dates de début et de fin personnalisées pour la facette {{label}}\",\"date-input-end\":\"Entrez une date de fin pour la facette {{label}}\",\"date-input-start\":\"Entrez une date de début pour la facette {{label}}\",\"day_plural\":\"Environ {{count}} jours\",\"did-you-mean\":\"Vouliez-vous dire : {{query}}\",\"disconnected\":\"Aucun accès.\",\"edit-insight\":\"Modifier l'aperçu\",\"end\":\"Fin\",\"expand-facet\":\"Développez la facette {{label}}\",\"facet-search\":\"Rechercher des valeurs dans la facette {{label}}\",\"facet-search-input\":\"Recherche\",\"facet-search-results\":\"Valeurs trouvées pour {{query}} dans la facette {{label}}\",\"facet-value\":\"Filtre d'inclusion sur {{value}} ; {{count}} résultat\",\"facet-value_plural\":\"Filtre d'inclusion sur {{value}} ; {{count}} résultats\",\"facet-values\":\"Valeurs pour la facette {{label}}\",\"file-type\":\"Type de fichier\",\"filters\":\"Filtres\",\"if-problem-persists\":\"Si le problème persiste\",\"in\":\"dans\",\"in-seconds\":\"en {{count}} seconde\",\"in-seconds_plural\":\"en {{count}} secondes\",\"in_prd_tecnology\":\"Dans {{prd_technology}}\",\"insight-history\":\"Historique des actions d'information\",\"insight-related-cases\":\"Informations liées à cette affaire\",\"instant-results-suggestion-label\":\"{{title}}\",\"invalid-token\":\"Assurez-vous que le jeton est valide.\",\"keywords-highlight\":\"Mise en évidence des mots-clés\",\"language\":\"Langue\",\"left\":\"Gauche\",\"load-all-results\":\"Charger tous les résultats\",\"load-more-results\":\"Charger plus de résultats\",\"loading-results\":\"Chargement de nouveaux résultats\",\"max\":\"Max\",\"min\":\"Min\",\"minimize\":\"Minimiser\",\"more-info\":\"En apprendre plus\",\"more-matches-for\":\"Plus de correspondances pour {{query}}\",\"most-recent\":\"Le plus récent\",\"n-more\":\"{{value}} de plus...\",\"next\":\"Suivant\",\"next-day\":\"Le jour suivant\",\"next-day_plural\":\"{{count}} prochains jours\",\"next-hour\":\"Heure suivante\",\"next-hour_plural\":\"{{count}} prochaines heures\",\"next-month\":\"Le mois prochain\",\"next-month_plural\":\"{{count}} prochains mois\",\"next-quarter\":\"Prochain trimestre\",\"next-quarter_plural\":\"{{count}} prochains trimestres\",\"next-week\":\"La semaine prochaine\",\"next-week_plural\":\"{{count}} prochaines semaines\",\"next-year\":\"L'année prochaine\",\"next-year_plural\":\"{{count}} prochaines années\",\"no\":\"Non\",\"no-documents-related\":\"Aucun document n'est lié à celui-ci.\",\"no-endpoints\":\"Votre organisation {{org}} n'a pas de contenu disponible.\",\"no-label\":\"Pas d'étiquette\",\"no-matches-found-for\":\"Aucune correspondance trouvée pour {{query}}\",\"no-results\":\"Aucun résultat\",\"no-results-for\":\"Nous n'avons rien trouvé pour {{query}}\",\"no-title\":\"Aucun titre\",\"no-values-found\":\"Aucune valeur trouvée.\",\"notification-n\":\"Notification {{n}} : {{text}}\",\"notifications\":\"Avis\",\"number-input-apply\":\"Appliquer des valeurs numériques personnalisées pour la facette {{label}}\",\"number-input-maximum\":\"Entrez une valeur numérique maximale pour la facette {{label}}\",\"number-input-minimum\":\"Entrez une valeur numérique minimale pour la facette {{label}}\",\"only\":\"seul\",\"organization-is-paused\":\"Votre organisation {{org}} est suspendue en raison d'inactivité et la recherche est actuellement indisponible.\",\"organization-will-resume\":\"Votre organisation est en cours de reprise et sera disponible sous peu.\",\"page-number\":\"Page {{page}}\",\"pagination\":\"Pagination\",\"past-day\":\"Jour passé\",\"past-day_plural\":\"{{count}} jours passés\",\"past-hour\":\"Heure passée\",\"past-hour_plural\":\"{{count}} heures passées\",\"past-month\":\"Mois passé\",\"past-month_plural\":\"{{count}} derniers mois\",\"past-quarter\":\"Trimestre passé\",\"past-quarter_plural\":\"{{count}} derniers trimestres\",\"past-week\":\"La semaine dernière\",\"past-week_plural\":\"{{count}} semaines passées\",\"past-year\":\"L'année passée\",\"past-year_plural\":\"{{count}} dernières années\",\"popover\":\"Menu contextuel pour la facette {{label}}\",\"preview-result\":\"Aperçu du résultat\",\"previous\":\"Précédent\",\"previous_price\":\"était de {{previous_price}}\",\"price_per_sleeve\":\"<strong>{{sleeve_price}} /</strong> Étui de {{sleeve_size}}\",\"printable-uri\":\"Chemin source du résultat\",\"qs_add\":\"Ajouter\",\"qs_button_ok\":\"OK\",\"qs_choose_quantity\":\"Choisissez une quantité\",\"qs_custom_description\":\"Vous pouvez sélectionner une quantité personnalisée en utilisant le champ ci-dessous. Pour valider appuyez sur la touche ESPACE ou ENTRÉE\",\"qs_custom_quantity\":\"Choisissez une quantité personnalisée\",\"qs_description\":\"Sélectionnez une quantité de produit à ajouter à votre panier. Pour quitter ce sélecteur de quantité\",\"qs_label\":\"Sélecteur de quantité\",\"qs_predefined_description\":\"Vous pouvez sélectionner des quantités prédéfinies à l'aide de la liste des boutons ci-dessous\",\"qs_predefined_quantity\":\"Choisissez une quantité prédéfinie\",\"query-auto-corrected-to\":\"La requête a été automatiquement corrigée pour {{query}}\",\"query-result-summary\":\"{{count}} résultat de recherche pour\",\"query-result-summary_plural\":\"{{count}} résultats de recherche pour\",\"query-suggestion-label\":\"«{{query}}»\",\"query-suggestion-list\":\"Suggestions de recherche. Sélectionnez-en une pour rechercher.\",\"query-suggestions-available\":\"{{count}} suggestion de recherche disponible.\",\"query-suggestions-available_plural\":\"{{count}} suggestions de recherche sont disponibles.\",\"query-suggestions-unavailable\":\"Il n'y a pas de suggestions de recherche.\",\"quickview\":\"Aperçu rapide\",\"quickview-add-word\":\"Ajouter des faits saillants\",\"quickview-loaded\":\"Quickview pour le résultat {{title}} chargé. {{first}} sur {{last}} disponibles.\",\"quickview-loading\":\"Chargement de la nouvelle vue rapide\",\"quickview-navigate-keywords\":\"Naviguer entre {{occurrences}} occurrences de {{keyword}}\",\"quickview-next\":\"Prochain aperçu rapideprice_per_sleeve\",\"quickview-previous\":\"Aperçu rapide précédent\",\"quickview-remove-word\":\"Supprimer les faits saillants\",\"quickview-toggle-navigation\":\"Basculer la navigation par mots-clés\",\"rating\":\"Notation\",\"recent-query-suggestion-label\":\"«{{query}}»\",\"recent-searches\":\"Recherches récentes\",\"relevance\":\"Pertinence\",\"remove-filter-on\":\"Supprimer le filtre d'inclusion sur {{value}}\",\"result-summary\":\"{{count}} résultat de recherche\",\"result-summary_plural\":\"{{count}} résultats de recherche\",\"results-per-page\":\"résultats par page\",\"right\":\"Droite\",\"search\":\"Recherche\",\"search-box\":\"Champ de saisie pour effectuer une recherche. Insérez une requête. Pour soumettre\",\"search-box-with-suggestions\":\"Champ de recherche avec suggestions. Pour commencer à parcourir les suggestions\",\"search-box-with-suggestions-keyboardless\":\"Champ de recherche avec suggestions. Des suggestions peuvent être disponibles dans ce champ. Pour soumettre\",\"search-box-with-suggestions-macos\":\"Champ de recherche avec suggestions. Des suggestions peuvent être disponibles dans ce champ. Pour soumettre\",\"search-ellipsis\":\"Recherche...\",\"search-instead-for\":\"Rechercher plutôt {{query}}\",\"search-suggestion-button\":\"{{label}}. Bouton\",\"search-suggestion-double-list\":\"{{label}}. {{position}} sur {{count}}. Dans la liste {{side}}.\",\"search-suggestion-single-list\":\"{{label}}. {{position}} sur {{count}}.\",\"search-suggestions-double-list\":\"Deux listes de suggestions de champs de recherche côte à côte. Pour naviguer entre les suggestions\",\"search-suggestions-single-list\":\"Suggestions de recherche. Pour naviguer entre les suggestions\",\"search-tips\":\"Vous pouvez essayer d'utiliser différents mots-clés\",\"select-fewer-filters\":\"Sélectionnez moins de filtres pour élargir votre recherche.\",\"show-all-results\":\"Voir tous les résultats\",\"show-less\":\"Montrer moins\",\"show-less-facet-values\":\"Afficher moins de valeurs pour la facette {{label}}\",\"show-more\":\"Montre plus\",\"show-more-facet-values\":\"Afficher plus de valeurs pour la facette {{label}}\",\"show-n-more-filters\":\"Afficher {{value}} filtres supplémentaires\",\"showing-results-for\":\"Affichage des résultats pour {{query}}\",\"showing-results-of\":\"Résultat {{first}} sur {{total}} pour {{query}}\",\"showing-results-of-load-more\":\"Affichage de {{last}} résultats sur {{total}}\",\"showing-results-of-with-query\":\"Résultat {{first}} sur {{total}} pour {{query}}\",\"showing-results-of-with-query_plural\":\"Résultats {{first}}-{{last}} sur {{total}} pour {{query}}\",\"showing-results-of_plural\":\"Résultats {{first}}-{{last}} sur {{total}} pour {{query}}\",\"smart-snippet\":\"Réponse potentielle à votre question\",\"smart-snippet-feedback-details\":\"Détails\",\"smart-snippet-feedback-explain-why\":\"Expliquer pourquoi\",\"smart-snippet-feedback-inquiry\":\"Cette information était-elle utile ?\",\"smart-snippet-feedback-reason-does-not-answer\":\"Cela n'a pas du tout répondu à ma question\",\"smart-snippet-feedback-reason-other\":\"Autre\",\"smart-snippet-feedback-reason-partially-answers\":\"Cela n'a répondu qu'en partie à ma question\",\"smart-snippet-feedback-reason-was-not-a-question\":\"Ma demande n'était pas destinée à être perçue en tant que question\",\"smart-snippet-feedback-select-reason\":\"Sélectionnez la raison\",\"smart-snippet-feedback-send\":\"Envoyer des commentaires\",\"smart-snippet-feedback-thanks\":\"Merci pour votre avis !\",\"smart-snippet-people-also-ask\":\"Les utilisateursdemandent également\",\"smart-snippet-source\":\"Source de la réponse\",\"something-went-wrong\":\"Quelque chose s'est mal passé.\",\"sort\":\"Trier\",\"sort-and-filter\":\"Trier et filtrer\",\"sort-by\":\"Trier par\",\"source\":\"Source\",\"stars\":\"une étoile sur {{max}}\",\"stars-only\":\"seulement {{count}} étoiles sur {{count}}\",\"stars-range\":\"{{value}} étoiles sur {{count}} et plus\",\"stars_plural\":\"{{count}} étoiles sur {{max}}\",\"start\":\"Commencer\",\"tab-search\":\"Recherchez des valeurs dans l'onglet {{label}}.\",\"to\":\"{{- start}} à {{- end}}\",\"try-using-fewer-keywords\":\"Essayez d'utiliser des mots-clés moins nombreux\",\"under\":\"{{child}} sous {{parent}}\",\"view-results\":\"Voir les résultats\",\"with-colon\":\"{{text}} :\",\"yes\":\"Oui\",\"money-amount\":\"€ {{amount}}\",\"cup-volume-format\":\"{{cup_size}}\"}","campaign":{"id":"promoid","name":"promoname","creative":"promocreative","position":"before_search_bar"}},"personalisation":null}]}]}</script>
<script type="text/javascript">
  window.nwc = window.nwc || {};
  window.nwc.projects = window.nwc.projects || [];
  window.nwc.projects.push(JSON.parse(document.getElementById('page-builder-data-a814842c-bde3-89bf-8151-a5516fe2ab22').innerHTML));
</script>
<script
  type="text/javascript">(function (p, a, g, e, b, u, i, l, d, r) { p[b] = p[b] || {}; if (p[b].loading) { return; } else if (p[b].loaded) { p[b].ready(); return; }; p[b].loading = 1; p[b].ready = function () { p[b].loading = 0; p[b].loaded = 1; p[b].load(); }; u = a.createElement(g); i = a.getElementsByTagName(g)[0]; u.src = e; u.onload = p[b].ready; i.parentNode.insertBefore(u, i); })(window, document, 'script', '/shared_res/agility/page-builder/assets/js/nwc.min.js', 'nwc')</script>
<!------ HOVER BLACK SEARCH BUTTON HACK CSS  ------>
<!--
<style>
    button#search-bar-button:hover {
        background-color: black !important;
        color: white !important;
    }
</style>
-->
<style>
  /* ============================================================================
   DESKTOP - Surcharge dropdown (≥ 1227px)
   ============================================================================ */
@media screen and (min-width: 1227px) {
    ._dropdown_1o541_48 {
        left: -45px !important;
        width: 152% !important;
    }
}
    /* ============================================================================
   CSS HEADER MOBILE - ORGANISÉ PAR BREAKPOINTS
   ============================================================================ */

/* ============================================================================
   MOBILE LARGE & TABLET (≤ 995px)
   Premier breakpoint principal - Réorganisation du header mobile
   ============================================================================ */
@media screen and (max-width: 995px) {
  
  /* --- NAVIGATION BURGER --- */
  .HeaderNavigationBarItem:first-child {
    display: block !important;
  }
  
  .HeaderNavigationBar__nav {
    margin-top: 0px !important;
  }
  
  /* --- BANNIÈRE APP --- */
  nb-app-banner {
    top: 80px !important;
  }
  
  /* --- STRUCTURE HEADER TOP --- */
  .Header__top-wrapper {
    box-shadow: 0 0 5px #ffffff;
    background-color: white;
    max-height: 0px !important;
  }
  
  .Header__top {
    text-align: center;
    margin-bottom: 57px;
    padding-left: unset;
  }
  
  /* --- ZONE CLIENT (icônes + searchbar) --- */
  /* Le bloc de droite devient un flex qui peut passer sur 2 lignes */
  .Header__customer {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    column-gap: 8px;
    row-gap: 8px;
    width: 100%;
  }
  
  /* 1ère ligne : icônes compte / cadeau / panier */
  .Header__customer .LoginDropdown,
  .Header__customer #stack-container,
  .Header__customer .MiniBasketDropdown {
    order: 1;
    z-index: 2001 !important;
  }
  
  /* 2ème ligne : la searchbar sur toute la largeur */
  .Header__customer .cv-search-host {
    order: 2;
    flex: 1 0 100%;
    width: 100%;
  }
  
  /* --- LOGIN DROPDOWN --- */
      .LoginDropdown {
        margin-top: -53px;
    }
  
  .LoginDropdownButton {
    width: 30px !important;
  }
  
  .LoginDropdownButton__icon {
    top: 7px;
  }
  
  /* --- STACK CONTAINER (bouton cadeau) --- */
    #stack-container {
        margin-top: -53px !important;
        padding: 0 0px 0 0 !important;
    }
  
  #gift-button {
    border-radius: 50px;
  }
  
  
  /* --- MINI PANIER --- */
  .MiniBasketDropdown .MiniBasketButton--not-empty {
    margin-top: -34px;
    margin-bottom: 49px;
  }
  
  i.Glyph--basket.MiniBasketButton__basketIcon {
    font-size: 22px !important;
    left: 8px !important;
  }
  
  .MiniBasketButton__basketIcon {
    top: 14px;
    left: 8px;
    font-size: 25px;
  }
  
  .MiniBasketDropdown {
    top: -27px;
}
  /* --- BARRE DE RECHERCHE --- */
  /* Le bouton = la barre de recherche */
  #search-bar-button {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    width: 100%;
    box-sizing: border-box;
    background: #ffffff;
    border: 1px solid #0000002e;
    padding: 10px 40px 10px 16px;  /* texte + place pour la loupe */
    margin-top: 8px;               /* espace sous les icônes */
    border-radius: unset !important;
    padding-right: 40px; /* laisse de la place pour l'icône à droite */
    z-index: 2001 !important;
  }
  
  button#search-bar-button:hover {
    background-color: transparent;
  }
  
  .search-bar-button,
  .search-bar-button:hover {
    width: 100% !important;
    margin-top: -47px !important;
    background-color: white;
    border: 1px solid black;
  }
  
  /* Texte dans la barre */
  .search-bar-button span {
    margin-top: 2px !important;
    color: #000000 !important;
  }
  
  #search-bar-button span.text {
    font-size: 16px;
    color: #000000;
    margin-top: 0;
    text-transform: none;
  }
  
  /* Icône loupe positionnée à droite */
  #search-bar-button > span:after {
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    margin-right: 0 !important;
    display : none !important
  }
  
  /* Loupe SVG à droite, centrée verticalement */
  #search-bar-button svg {
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
  }
}

/* ============================================================================
   MOBILE LARGE & TABLET (de 768px à 995px)
   Premier breakpoint principal - Réorganisation du header mobile
   ============================================================================ */
@media screen and (min-width: 768px) and (max-width: 995px) {


}

/* ============================================================================
   TABLET & MOBILE LARGE (≤ 768px)
   Ajustements pour tablettes et grands mobiles
   ============================================================================ */
@media only screen and (max-width: 768px) {
  
    /* --- BURGER MENU --- */
    .HeaderNavigationBar--is-open .HeaderNavigationBar__switch {
        left: calc(100% - 40px) !important;
    }

    #stack-container {
        margin-top: -60px !important;
        padding: 0 0px 0 0 !important;
    }

    .search-bar-button,
  .search-bar-button:hover {
    margin-top: -60px !important;
  }

    .LoginDropdownButton__icon {
        top: 3px;
    }

    i.Glyph--basket.MiniBasketButton__basketIcon {
        font-size: 26px !important;
        top: -3px !important;
        left: 14px !important;
    }
  
    .BurgerSwitch {
        width: 42px !important;
        height: 42px !important;
    }
}


/* ============================================================================
   MOBILE STANDARD (≤ 767px)
   Surcharge mobile vs tablet - Réduction des échelles
   ============================================================================ */
@media screen and (max-width: 767px) {
  
  /* --- LOGO --- */
  .Header__logo {
    margin-bottom: 5px;
  }
  
  /* --- ZONE CLIENT --- */
  .Header__customer {
    column-gap: 0px !important;
  }
  
  /* --- LOGIN --- */
  .LoginDropdown {
    margin-top: -80px;
  }
  
  /* --- CADEAU --- */
  #stack-container {
    transform: scale(0.8);
  }
  .Glyph--basket.MiniBasketButton__basketIcon {
    top: 7px !important;
  }
  
  /* --- PANIER --- */
  .MiniBasketDropdown .MiniBasketButton--not-empty {
    margin-top: -44px;
    margin-bottom: 48px;
    transform: scale(0.85);
    left: 15% !important;
    top: 75%;
  }
    .MiniBasketDropdown {
    top: -55px !important;
  }

  /* --- BURGER --- */
  .BurgerSwitch {
    transform: scale(0.8);
    margin-top: -3px;
  }
}


/* ============================================================================
   MOBILE MOYEN (≤ 501px)
   Masquage de l'icône de recherche
   ============================================================================ */
@media screen and (max-width: 501px) {
  
  .search-bar-button .cv-search-icon {
    left: 5px;
    position: relative;
    display: none;
  }
  
}


/* ============================================================================
   MOBILE STANDARD (≤ 425px)
   Ajustements pour mobiles courants (iPhone, Android standard)
   ============================================================================ */
@media screen and (max-width: 425px) {
  
  /* --- LOGO --- */
  .Header__logo {
    margin-bottom: 11px;
    margin-right: 186px;
  }
  
  /* --- LOGIN --- */
  .LoginDropdown {
    margin-top: -95px;
  }
  i.Glyph--basket.MiniBasketButton__basketIcon {
    font-size: 26px !important;
    top: 15px !important;
    left: 14px !important;
  }
  
  /* --- CADEAU --- */
  #gift-button {
    border-radius: 50px;
    margin-top: -8px;
  }
  
  /* --- PANIER --- */
  .MiniBasketDropdown .MiniBasketButton--not-empty {
    left: 15% !important;
    margin-top: -46px;
    margin-bottom: 63px;
    transform: scale(0.95);
    top: 17px !important;
  }

   .MiniBasketDropdown {
    top: -55px !important;
  }
  
  /* --- BURGER --- */
  .BurgerSwitch {
    transform: scale(0.8);
    margin-top: 0px;
  }
}


/* ============================================================================
   MOBILE COMPACT (≤ 375px)
   iPhone SE, petits Android
   ============================================================================ */
@media screen and (max-width: 375px) {
  
  #search-bar-button > span:after {
    margin-right: -5px;
  }
}


/* ============================================================================
   MOBILE TRÈS COMPACT (≤ 335px)
   Très petits écrans
   ============================================================================ */
@media screen and (max-width: 335px) {
  
  /* --- PANIER --- */
  .MiniBasketButton__basketIcon {
    left: 20px;
  }
  
  /* --- CADEAU --- */
  #stack-container {
    left: 15px;
  }
  
  /* --- LOGIN --- */
  .LoginDropdownButton {
    width: 10px !important;
  }
  
  /* --- RECHERCHE --- */
  #search-bar-button > span:after {
    margin-right: -10px !important;
  }
}


/* ============================================================================
   MOBILE MINI (≤ 320px)
   iPhone 5/SE (1ère génération)
   ============================================================================ */
@media screen and (max-width: 320px) {
  
  #search-bar-button > span:after {
    margin-right: -17px;
  }
}
</style>
<!------- SURCHARGE JAVASCRIPT LOUPE ::AFTER BUTTON MOBILE ------>
<script>
// Fonction pour mettre à jour le texte avec la loupe
function updateText() {
    // Chercher dans le DOM normal
    let span = document.querySelector('._text_1jvnj_83');
    
    // Si pas trouvé, chercher dans le shadow DOM du composant nb-search-bar
    if (!span) {
        const searchBar = document.querySelector('nb-search-bar');
        if (searchBar && searchBar.shadowRoot) {
            span = searchBar.shadowRoot.querySelector('._text_1jvnj_83');
        }
    }
    
    if (!span) return false;
    
    // Vérifier si on n'a pas déjà ajouté la loupe
    if (!span.querySelector('.search-icon-svg')) {
        span.innerHTML = 'Bonjour, une envie café ? <svg class="search-icon-svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="display: inline-block; vertical-align: middle; margin-left: 8px;"><circle cx="11" cy="11" r="8"></circle><path d="m21 21-4.35-4.35"></path></svg>';
        console.log('✅ Texte avec loupe ajouté !');
    }
    return true;
}

// Essayer plusieurs fois avec des délais différents
function tryMultipleTimes() {
    updateText();
    setTimeout(updateText, 100);
    setTimeout(updateText, 300);
    setTimeout(updateText, 500);
    setTimeout(updateText, 1000);
    setTimeout(updateText, 2000);
}

// Au chargement
window.addEventListener('load', tryMultipleTimes);
document.addEventListener('DOMContentLoaded', tryMultipleTimes);

// Au scroll
let scrollTimeout;
window.addEventListener('scroll', function() {
    clearTimeout(scrollTimeout);
    scrollTimeout = setTimeout(updateText, 100);
}, { passive: true });

// Au resize
window.addEventListener('resize', updateText);

// Interval de secours
let attempts = 0;
const checkInterval = setInterval(function() {
    if (updateText() || attempts >= 100) {
        clearInterval(checkInterval);
    }
    attempts++;
}, 100);
</script>
<!------- TRACKING GTM AU CLIC SUR LA BARRE DE RECHERCHE ------>
<script>
  // Objet de tracking pour la barre de recherche
  var SearchBarTracking = {
    lastTrackingTime: 0,
    debounceDelay: 1000, // 1 seconde entre chaque tracking

    pushTracking: function () {
      const now = Date.now();

      // Éviter les doublons si le dernier tracking a eu lieu il y a moins de 1 seconde
      if (now - this.lastTrackingTime < this.debounceDelay) {
        return;
      }

      this.lastTrackingTime = now;

      window.gtmDataObject = window.gtmDataObject || [];

      const trackingData = {
        event: "local_event",
        event_raised_by: "local_market_fr",
        local_event_category: "search",
        local_event_action: "click",
        local_event_label: "click_search_bar"
      };

      gtmDataObject.push(trackingData);
    }
  };

  // Utiliser la délégation d'événements sur le document entier
  document.addEventListener('click', function (e) {
    // Vérifier si le clic est sur le bouton de recherche ou un de ses enfants
    const searchButton = e.target.closest('#search-bar-button') ||
      e.target.closest('.search-bar-button') ||
      e.target.closest('button[id*="search-bar"]');

    if (searchButton) {
      SearchBarTracking.pushTracking();
    }
  }, true); // useCapture = true pour attraper l'événement avant le shadow DOM

  // Également tracker le focus sur l'input de recherche
  document.addEventListener('focus', function (e) {
    if (e.target.matches('input[type="search"]') ||
      e.target.matches('input[placeholder*="Recherche"]') ||
      e.target.matches('input[placeholder*="Search"]')) {
      SearchBarTracking.pushTracking();
    }
  }, true);
</script></div>

<div id="block-8834465486325" class="free-html" data-label=""  >
    <style>
/* =========================
   SURCHARGE HEADER – CLEAN
   ========================= */

/* ≥ 996px */
@media screen and (min-width: 996px) {
  /* header */
  .Header { margin-top: 8px; }

  .Header__top {
    margin: 0 auto;
    width: 975.2px !important;
    height: 80px;
  }

  nav.HeaderNavigationBar__nav.ResponsiveContainer {
    max-width: 1195.2px !important;
  }

  #newTextForBtn {
    margin-left: 27px;
  }
  cv-search-bar #search-bar-button {
    text-transform: none;
  }

  cv-search-bar #search-bar-button::after {
    content: "Bonjour, une envie café ?";
    margin-right: 90px;
  }

  cv-search-bar #search-bar-button span {
    display: none;
  }
  /* Bouton cadeau */
  #gift-button {
    filter: invert(1);
    border-radius: 9999px;
    justify-content: space-evenly !important;
  }

  /* Pastille cadeau */
  .pulse-animation {
    width: 20px;
    height: 20px;
  }

  /* Login + panier */
  #ta-login-dropdown--logged,
  #custom-ta-login-dropdown--logged-stack,
  #ta-login-dropdown--not-logged,
  #ta-mini-basket__open {
    border: solid 1px !important;
    border-radius: 22px;
    border-color: var(--atomic-neutral) !important;
    text-transform: lowercase;
    font-size: 12px !important;
    min-height: 43px;
  }

  /* Texte du bouton compte */
  #custom-ta-login-dropdown--logged-stack,
  .newTextForBtn {
    text-transform: none;
    align-items: center;
  }



  .tier-img-btn-account {
    margin: unset;
  }

  /* Variante du bouton compte quand il contient une image de statut */
  #custom-ta-login-dropdown--logged-stack:has(.tier-img-btn-account) {
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    gap: 6px;
    padding: 0 12px;
    min-width: 185px;
  }

  /* Ajuste le texte quand l'image de statut est présente */
  #custom-ta-login-dropdown--logged-stack:has(.tier-img-btn-account) .newTextForBtn {
    margin-top: 4px;
    margin-left: 29px;
  }

  #btn-account-img-override {
    margin-top: -6px;
  }

  /* Taille/ratio bouton cadeau */
  #gift-button {
    height: 42px;
    width: 50px;
  }

  /* Icône login */
  .LoginDropdownButton__icon {
    font-size: 1.5em;
    top: 7px;
    left: 11px;
  }

  /* Largeur mini bouton login */
  .LoginDropdownButton {
    min-width: 171.22px;
  }

  /* Search bar */
  ._search-bar-button_1jvnj_7 {
    width: 306px;
    border-radius: 9999px;
    text-transform: capitalize;
    flex-direction: row-reverse;
    color: #454547;
    margin-right: 1px;
  }

  ._search-bar_1jvnj_1 { justify-content: center; }

  .search-bar-button {
    background: #F6F6F6 !important;
    color: #454547 !important;
    border-color: #F6F6F6 !important;
  }

  #search-input {
    width: 292px;
    border-radius: 9999px;
    background: #F6F6F6 !important;
    color: #454547 !important;
    border-color: #F6F6F6 !important;
  }

  .search-bar-button svg { filter: invert(1); }

  ._text_1jvnj_83 { margin-right: 189px; }

  #ta-login-dropdown--logged:hover .LoginDropdownButton__icon,
  #ta-login-dropdown--not-logged:hover .LoginDropdownButton__icon,
  .MiniBasketButton--not-empty .MiniBasketButton__basketIcon,
  .MiniBasketButton:hover .MiniBasketButton__basketIcon {
    filter: invert(0) !important;
  }

  .MiniBasketDropdown .MiniBasketButton--not-empty:not(.MiniBasketButton--open):not(:hover):not(:active) {
    width: 173px !important;
  }

  .MiniBasketButton__basketIcon { top: 9px; }
  .LoginDropdownButton__icon { top: 9px; }

  .gift-icon {
    display: flex;
    justify-content: center;
    position: relative;
    margin-left: -12px;
    height: 18px;
    width: 18px;
    top: -2px;
  }
}

/* ≥ 1227px */
@media screen and (min-width: 1227px) {
  .Header { margin-top: 96px; }

  .Header__top {
    margin: 0 auto;
    width: 1195.2px !important;
    height: 80px;
  }

  nav.HeaderNavigationBar__nav.ResponsiveContainer {
    max-width: 1195.2px !important;
  }

  #gift-button {
    filter: invert(1);
    border-radius: 9999px;
    justify-content: space-evenly !important;
  }

  .pulse-animation {
    width: 20px;
    height: 20px;
  }

  #ta-login-dropdown--logged,
  #custom-ta-login-dropdown--logged-stack,
  #ta-login-dropdown--not-logged,
  #ta-mini-basket__open {
    border: solid 1px !important;
    border-radius: 22px;
    border-color: var(--atomic-neutral) !important;
    text-transform: lowercase;
  }

  #custom-ta-login-dropdown--logged-stack,
  .newTextForBtn {
    text-transform: none;
    margin-top: 3px;
  }

  #custom-ta-login-dropdown--logged-stack:has(.tier-img-btn-account) {
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    gap: 6px;
    padding: 0 12px;
    min-width: 232px;
  }

  cv-search-bar #search-bar-button::after {
    content: "Bonjour, une envie café ?";
    margin-right: 231px;
  }

  #custom-ta-login-dropdown--logged-stack:has(.tier-img-btn-account) .newTextForBtn {
    margin-top: 4px;
  }

  #btn-account-img-override {
    margin-top: -6px;
  }

  #gift-button {
    height: 42px;
    width: 50px;
  }

  .LoginDropdownButton__icon {
    font-size: 1.5em;
    top: 7px;
    left: 17px;
  }

  .LoginDropdownButton {
    min-width: 171.22px;
  }

  ._search-bar-button_1jvnj_7 {
    width: 450px;
    border-radius: 9999px;
    text-transform: capitalize;
    flex-direction: row-reverse;
    color: #454547;
  }

  ._search-bar_1jvnj_1 { justify-content: center; }

  .search-bar-button {
    background: #F6F6F6 !important;
    color: #454547 !important;
    border-color: #F6F6F6 !important;
  }

  #search-input {
    width: 450px;
    border-radius: 9999px;
    background: #F6F6F6 !important;
    color: #454547 !important;
    border-color: #F6F6F6 !important;
    margin-left: -48px;
  }

  ._container_1o541_11 {
    margin: 0 8px 0 100px;
    position: relative;
    width: 100%;
  }

  .search-bar-button svg { filter: invert(1); }

  ._text_1jvnj_83 { margin-right: 312px; }

  #ta-login-dropdown--logged:hover .LoginDropdownButton__icon,
  #ta-login-dropdown--not-logged:hover .LoginDropdownButton__icon,
  .MiniBasketButton--not-empty .MiniBasketButton__basketIcon,
  .MiniBasketButton:hover .MiniBasketButton__basketIcon {
    filter: invert(0) !important;
  }

  .MiniBasketButton__basketIcon { top: 9px; }
  .LoginDropdownButton__icon { top: 9px; }
  
   ._container_kceh8_11 {
        margin: 0 35px 0 80px;
        position: relative;
        width: 100%;
    }
}
</style>
<script>
// === Objet de tracking pour Stack Offer ===
var StackOfferTracking = {
  pushTracking: function (eventLabel) {
    window.gtmDataObject = window.gtmDataObject || [];
    
    const trackingData = {
      event: "local_event",
      local_event_category: "stack_offer",
      local_event_action: "click",
      local_event_label: eventLabel,
      event_raised_by: "local_market_fr"
    };
    
    gtmDataObject.push(trackingData);
  }
};

window.addEventListener('load', function () {
  (function () {
    // === Remplacement du SVG dans la search bar ===
    const btn = document.getElementById('search-bar-button');
    if (btn) {
      const oldSvg = btn.querySelector('svg');
      if (oldSvg) oldSvg.remove();

      const newSvgMarkup = `
        <svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
          <path d="M15.3793 15.076C15.5393 15.2467 15.614 15.4493 15.6033 15.684C15.6033 15.908 15.518 16.1 15.3473 16.26C15.1873 16.42 14.99 16.5 14.7553 16.5C14.5313 16.5 14.334 16.4147 14.1633 16.244L10.3233 12.244C9.7793 12.628 9.19263 12.9213 8.5633 13.124C7.94463 13.316 7.2993 13.412 6.6273 13.412C5.46463 13.412 4.37663 13.1187 3.3633 12.532C2.39263 11.9667 1.6193 11.1933 1.0433 10.212C0.45663 9.20933 0.163296 8.12667 0.163296 6.964C0.163296 5.79067 0.45663 4.70267 1.0433 3.7C1.6193 2.72933 2.39263 1.956 3.3633 1.38C4.37663 0.793333 5.46463 0.5 6.6273 0.5C7.80063 0.5 8.88863 0.793333 9.8913 1.38C10.862 1.956 11.6353 2.72933 12.2113 3.7C12.798 4.70267 13.0913 5.79067 13.0913 6.964C13.0913 7.72133 12.958 8.45733 12.6913 9.172C12.4353 9.88667 12.062 10.532 11.5713 11.108L15.3793 15.076ZM6.6273 2.18C5.7633 2.18 4.9633 2.39867 4.2273 2.836C3.50196 3.26267 2.92596 3.83333 2.4993 4.548C2.07263 5.29467 1.8593 6.1 1.8593 6.964C1.8593 7.828 2.07263 8.628 2.4993 9.364C2.92596 10.0893 3.50196 10.66 4.2273 11.076C4.9633 11.5133 5.7633 11.732 6.6273 11.732C7.4913 11.732 8.29663 11.5133 9.0433 11.076C9.75796 10.66 10.3286 10.0893 10.7553 9.364C11.182 8.628 11.3953 7.828 11.3953 6.964C11.3953 6.1 11.182 5.29467 10.7553 4.548C10.3286 3.83333 9.75796 3.26267 9.0433 2.836C8.29663 2.39867 7.4913 2.18 6.6273 2.18Z" fill="black"/>
        </svg>
      `;

      // On injecte le nouveau SVG juste avant le texte du bouton
      btn.insertAdjacentHTML('afterbegin', newSvgMarkup);
    }

    // === Tracking au clic sur le bouton Stack Offer ===
    const giftButton = document.getElementById('gift-button');
    if (giftButton) {
      giftButton.addEventListener('click', function() {
        StackOfferTracking.pushTracking('click_stack_offer');
      });
    }

    // === Tracking au clic sur "Connectez-vous" dans le stack offer ===
    // Utiliser un MutationObserver pour détecter l'apparition du bouton dans la popup
    const observeConnectButton = function() {
      const unconnectedSection = document.querySelector('#unconnected button');
      if (unconnectedSection) {
        unconnectedSection.addEventListener('click', function() {
          StackOfferTracking.pushTracking('click_connectez-vous');
        });
      }
    };
    
    // Observer l'apparition du dropdown
    const observer = new MutationObserver(function(mutations) {
      const dropdown = document.getElementById('dropdown');
      if (dropdown && dropdown.classList.contains('unconnected-root-class')) {
        observeConnectButton();
        observer.disconnect(); // Arrêter l'observation une fois le bouton trouvé
      }
    });
    
    // Démarrer l'observation sur le body
    observer.observe(document.body, {
      childList: true,
      subtree: true
    });
    
    // Vérifier aussi au chargement si l'élément existe déjà
    observeConnectButton();
  })();
});
</script>
</div>

<div id="block-8832276518389" class="free-html" data-label=""  >
    <!-- https://nestle.atlassian.net/wiki/spaces/ECOPR/pages/86624088/HQ+-+Global+-+B2C+-+Authentication+-+Login+Popin+with+Account+Benefit+testing -->
<script>
    //Translations
    window.loginPopinCopy = {
      en: {
iconSizes: [24, 20, 24],
        translations: {
          title: "Se connecter",
          login: "S'identifier",
          createAccount: "Créer un compte",
          fastRegister: "Créer un compte",
          guestRegisterTitle: "Continuer avec le paiement sans compte",
          guestRegisterDesc:
            "Si vous continuez votre achat en tant qu'invité, vous ne pourrez peut-être pas profiter de la promotion <strong>Nespresso</strong>.",
          guestRegisterCta: "Continuer en tant qu'invité",
          benefitsTitle:
            "Entrez dans le Club Nespresso dès votre première commande de café et accédez à de nombreux avantages exclusifs selon votre statut :",
          benefit1: "Livraison offerte en point de retrait",
          benefit2:
            "Dégustation offerte en Boutique",
          benefit3: "Profitez de remises personnalisées",
        },
      },
      fr: {
        iconSizes: [24, 20, 24],
        translations: {
          title: "Se connecter",
          login: "S'identifier",
          createAccount: "Créer un compte",
          fastRegister: "Créer un compte",
          guestRegisterTitle: "Continuer avec le paiement sans compte",
          guestRegisterDesc:
            "Si vous continuez votre achat en tant qu'invité, vous ne pourrez peut-être pas profiter de la promotion <strong>Nespresso</strong>.",
          guestRegisterCta: "Continuer en tant qu'invité",
          benefitsTitle:
            "Entrez dans le Club Nespresso dès votre première commande de café et accédez à de nombreux avantages exclusifs selon votre statut :",
          benefit1: "Livraison offerte en point de retrait",
          benefit2:
            "Dégustation offerte en Boutique",
          benefit3: "Profitez de remises personnalisées",
        },
      },
    };
    //Popin script itself
    (() => {
      var e = {
          7757: (e, t, n) => {
            e.exports = n(5666);
          },
          7276: (e, t, n) => {
            "use strict";
            n.d(t, { Z: () => i });
            var o = n(3645),
              r = n.n(o)()(function (e) {
                return e[1];
              });
            r.push([
              e.id,
              ".LoginDropdown.ab-login-popin{position:static}.ab-login-popin .LoginDropdownButton--open{border-radius:3px}.ab-login-popin .LoginDropdown__dropdown{background:#faf9f8;border-radius:24px;left:50%;max-width:80vw;min-height:250px;padding:40px;text-align:left;top:50vh !important;transform:translate(-50%, -44%);transition:none;width:423px}@media screen and (max-width: 767px){.ab-login-popin .LoginDropdown__dropdown{border-radius:24px 24px 0px 0px;bottom:0 !important;left:0;max-height:75vh;max-width:none;padding:8px 16px 16px;position:fixed;right:0;top:auto !important;transform:none;width:auto}}.ab-login-popin .LoginDropdown__dropdown .TextField{margin-bottom:16px;margin-top:16px}.ab-login-popin .LoginDropdown__dropdown .TextField:first-child{margin-top:19px}.ab-login-popin .LoginDropdown__dropdown .DefaultButton{border-radius:2em}.ab-login-popin .LoginDropdown__dropdown .DefaultButton .Glyph{display:none}.ab-login-popin .LoginDropdown__dropdown .LoginForm__submit{background:#000;color:#fff;text-transform:none}.ab-login-popin .LoginDropdown__dropdown .LoginForm__submit:hover:not(:disabled),.ab-login-popin .LoginDropdown__dropdown .LoginForm__submit:focus:not(:disabled){background:#fff;color:#000}.ab-login-popin .LoginDropdown__title{font-size:24px;letter-spacing:1px;text-transform:none}@media screen and (max-width: 767px){.ab-login-popin .LoginDropdown__title{border-bottom:1px solid #e7e7e7;font-size:16px;padding-bottom:10px;padding-top:8px}}.ab-login-popin .poppin-actions{align-items:center;display:flex;justify-content:flex-end;margin-top:2rem}@media screen and (max-width: 767px){.ab-login-popin .poppin-actions{flex-direction:column-reverse;justify-content:center}}.ab-login-popin .poppin-actions .DefaultButton--inverse,.ab-login-popin .poppin-actions .DefaultButton--regular{display:inline-block;margin-left:1rem;min-width:0;width:auto}@media screen and (max-width: 767px){.ab-login-popin .poppin-actions .DefaultButton--inverse,.ab-login-popin .poppin-actions .DefaultButton--regular{display:block;margin-left:0;margin-top:1rem;width:100%}}.ab-login-popin .close-btn{align-items:center;background:#fff;border:0;border-radius:100%;box-shadow:none;display:flex;justify-content:center;padding:12px;position:absolute;right:16px;top:24px}@media screen and (max-width: 767px){.ab-login-popin .close-btn{background:transparent;padding:8px;top:16px}}.ab-login-popin.ab-login-popin-benefits{text-align:left}.ab-login-popin.ab-login-popin-benefits .LoginDropdown__dropdown{width:806px}@media screen and (max-width: 767px){.ab-login-popin.ab-login-popin-benefits .LoginDropdown__dropdown{width:auto}}@media screen and (max-width: 767px){.ab-login-popin.ab-login-popin-benefits .LoginForm__remember-me{margin:8px 0}}.ab-login-popin.ab-login-popin-benefits .popin-grid{display:grid;grid-gap:40px;grid-template-columns:repeat(2, 1fr)}@media screen and (max-width: 767px){.ab-login-popin.ab-login-popin-benefits .popin-grid{display:block}}.ab-login-popin.ab-login-popin-benefits .popin-grid>div{padding-top:16px}@media screen and (max-width: 767px){.ab-login-popin.ab-login-popin-benefits .popin-grid>div{padding-top:8px}}.ab-login-popin.ab-login-popin-benefits .popin-grid>div ul{padding:16px 0}@media screen and (max-width: 767px){.ab-login-popin.ab-login-popin-benefits .popin-grid>div ul{padding:8px 0 0}}.ab-login-popin.ab-login-popin-benefits .popin-grid>div li{font-size:14px;line-height:120%;letter-spacing:.25px;margin-bottom:8px;padding-left:28px}.ab-login-popin.ab-login-popin-benefits .popin-grid>div svg{display:inline-block;height:20px;margin-bottom:-3px;margin-left:-28px;margin-right:4px;width:20px}.ab-login-popin.ab-login-popin-benefits .poppin-actions{margin-top:0}.ab-login-popin.ab-login-popin-benefits .TextField:first-child{margin-top:0}.ab-login-popin-guestcheckout p{margin-bottom:16px;margin-top:16px}",
              "",
            ]);
            const i = r;
          },
          3645: (e) => {
            "use strict";
            e.exports = function (e) {
              var t = [];
              return (
                (t.toString = function () {
                  return this.map(function (t) {
                    var n = e(t);
                    return t[2] ? "@media ".concat(t[2], " {").concat(n, "}") : n;
                  }).join("");
                }),
                (t.i = function (e, n, o) {
                  "string" == typeof e && (e = [[null, e, ""]]);
                  var r = {};
                  if (o)
                    for (var i = 0; i < this.length; i++) {
                      var a = this[i][0];
                      null != a && (r[a] = !0);
                    }
                  for (var c = 0; c < e.length; c++) {
                    var p = [].concat(e[c]);
                    (o && r[p[0]]) ||
                      (n &&
                        (p[2]
                          ? (p[2] = "".concat(n, " and ").concat(p[2]))
                          : (p[2] = n)),
                      t.push(p));
                  }
                }),
                t
              );
            };
          },
          5666: (e) => {
            var t = (function (e) {
              "use strict";
              var t,
                n = Object.prototype,
                o = n.hasOwnProperty,
                r = "function" == typeof Symbol ? Symbol : {},
                i = r.iterator || "@@iterator",
                a = r.asyncIterator || "@@asyncIterator",
                c = r.toStringTag || "@@toStringTag";
              function p(e, t, n) {
                return (
                  Object.defineProperty(e, t, {
                    value: n,
                    enumerable: !0,
                    configurable: !0,
                    writable: !0,
                  }),
                  e[t]
                );
              }
              try {
                p({}, "");
              } catch (e) {
                p = function (e, t, n) {
                  return (e[t] = n);
                };
              }
              function s(e, t, n, o) {
                var r = t && t.prototype instanceof m ? t : m,
                  i = Object.create(r.prototype),
                  a = new C(o || []);
                return (
                  (i._invoke = (function (e, t, n) {
                    var o = u;
                    return function (r, i) {
                      if (o === f)
                        throw new Error("Generator is already running");
                      if (o === g) {
                        if ("throw" === r) throw i;
                        return k();
                      }
                      for (n.method = r, n.arg = i; ; ) {
                        var a = n.delegate;
                        if (a) {
                          var c = E(a, n);
                          if (c) {
                            if (c === h) continue;
                            return c;
                          }
                        }
                        if ("next" === n.method) n.sent = n._sent = n.arg;
                        else if ("throw" === n.method) {
                          if (o === u) throw ((o = g), n.arg);
                          n.dispatchException(n.arg);
                        } else "return" === n.method && n.abrupt("return", n.arg);
                        o = f;
                        var p = l(e, t, n);
                        if ("normal" === p.type) {
                          if (((o = n.done ? g : d), p.arg === h)) continue;
                          return { value: p.arg, done: n.done };
                        }
                        "throw" === p.type &&
                          ((o = g), (n.method = "throw"), (n.arg = p.arg));
                      }
                    };
                  })(e, n, a)),
                  i
                );
              }
              function l(e, t, n) {
                try {
                  return { type: "normal", arg: e.call(t, n) };
                } catch (e) {
                  return { type: "throw", arg: e };
                }
              }
              e.wrap = s;
              var u = "suspendedStart",
                d = "suspendedYield",
                f = "executing",
                g = "completed",
                h = {};
              function m() {}
              function v() {}
              function b() {}
              var y = {};
              p(y, i, function () {
                return this;
              });
              var w = Object.getPrototypeOf,
                x = w && w(w(S([])));
              x && x !== n && o.call(x, i) && (y = x);
              var _ = (b.prototype = m.prototype = Object.create(y));
              function L(e) {
                ["next", "throw", "return"].forEach(function (t) {
                  p(e, t, function (e) {
                    return this._invoke(t, e);
                  });
                });
              }
              function O(e, t) {
                function n(r, i, a, c) {
                  var p = l(e[r], e, i);
                  if ("throw" !== p.type) {
                    var s = p.arg,
                      u = s.value;
                    return u && "object" == typeof u && o.call(u, "__await")
                      ? t.resolve(u.__await).then(
                          function (e) {
                            n("next", e, a, c);
                          },
                          function (e) {
                            n("throw", e, a, c);
                          }
                        )
                      : t.resolve(u).then(
                          function (e) {
                            (s.value = e), a(s);
                          },
                          function (e) {
                            return n("throw", e, a, c);
                          }
                        );
                  }
                  c(p.arg);
                }
                var r;
                this._invoke = function (e, o) {
                  function i() {
                    return new t(function (t, r) {
                      n(e, o, t, r);
                    });
                  }
                  return (r = r ? r.then(i, i) : i());
                };
              }
              function E(e, n) {
                var o = e.iterator[n.method];
                if (o === t) {
                  if (((n.delegate = null), "throw" === n.method)) {
                    if (
                      e.iterator.return &&
                      ((n.method = "return"),
                      (n.arg = t),
                      E(e, n),
                      "throw" === n.method)
                    )
                      return h;
                    (n.method = "throw"),
                      (n.arg = new TypeError(
                        "The iterator does not provide a 'throw' method"
                      ));
                  }
                  return h;
                }
                var r = l(o, e.iterator, n.arg);
                if ("throw" === r.type)
                  return (
                    (n.method = "throw"), (n.arg = r.arg), (n.delegate = null), h
                  );
                var i = r.arg;
                return i
                  ? i.done
                    ? ((n[e.resultName] = i.value),
                      (n.next = e.nextLoc),
                      "return" !== n.method && ((n.method = "next"), (n.arg = t)),
                      (n.delegate = null),
                      h)
                    : i
                  : ((n.method = "throw"),
                    (n.arg = new TypeError("iterator result is not an object")),
                    (n.delegate = null),
                    h);
              }
              function D(e) {
                var t = { tryLoc: e[0] };
                1 in e && (t.catchLoc = e[1]),
                  2 in e && ((t.finallyLoc = e[2]), (t.afterLoc = e[3])),
                  this.tryEntries.push(t);
              }
              function j(e) {
                var t = e.completion || {};
                (t.type = "normal"), delete t.arg, (e.completion = t);
              }
              function C(e) {
                (this.tryEntries = [{ tryLoc: "root" }]),
                  e.forEach(D, this),
                  this.reset(!0);
              }
              function S(e) {
                if (e) {
                  var n = e[i];
                  if (n) return n.call(e);
                  if ("function" == typeof e.next) return e;
                  if (!isNaN(e.length)) {
                    var r = -1,
                      a = function n() {
                        for (; ++r < e.length; )
                          if (o.call(e, r))
                            return (n.value = e[r]), (n.done = !1), n;
                        return (n.value = t), (n.done = !0), n;
                      };
                    return (a.next = a);
                  }
                }
                return { next: k };
              }
              function k() {
                return { value: t, done: !0 };
              }
              return (
                (v.prototype = b),
                p(_, "constructor", b),
                p(b, "constructor", v),
                (v.displayName = p(b, c, "GeneratorFunction")),
                (e.isGeneratorFunction = function (e) {
                  var t = "function" == typeof e && e.constructor;
                  return (
                    !!t &&
                    (t === v || "GeneratorFunction" === (t.displayName || t.name))
                  );
                }),
                (e.mark = function (e) {
                  return (
                    Object.setPrototypeOf
                      ? Object.setPrototypeOf(e, b)
                      : ((e.__proto__ = b), p(e, c, "GeneratorFunction")),
                    (e.prototype = Object.create(_)),
                    e
                  );
                }),
                (e.awrap = function (e) {
                  return { __await: e };
                }),
                L(O.prototype),
                p(O.prototype, a, function () {
                  return this;
                }),
                (e.AsyncIterator = O),
                (e.async = function (t, n, o, r, i) {
                  void 0 === i && (i = Promise);
                  var a = new O(s(t, n, o, r), i);
                  return e.isGeneratorFunction(n)
                    ? a
                    : a.next().then(function (e) {
                        return e.done ? e.value : a.next();
                      });
                }),
                L(_),
                p(_, c, "Generator"),
                p(_, i, function () {
                  return this;
                }),
                p(_, "toString", function () {
                  return "[object Generator]";
                }),
                (e.keys = function (e) {
                  var t = [];
                  for (var n in e) t.push(n);
                  return (
                    t.reverse(),
                    function n() {
                      for (; t.length; ) {
                        var o = t.pop();
                        if (o in e) return (n.value = o), (n.done = !1), n;
                      }
                      return (n.done = !0), n;
                    }
                  );
                }),
                (e.values = S),
                (C.prototype = {
                  constructor: C,
                  reset: function (e) {
                    if (
                      ((this.prev = 0),
                      (this.next = 0),
                      (this.sent = this._sent = t),
                      (this.done = !1),
                      (this.delegate = null),
                      (this.method = "next"),
                      (this.arg = t),
                      this.tryEntries.forEach(j),
                      !e)
                    )
                      for (var n in this)
                        "t" === n.charAt(0) &&
                          o.call(this, n) &&
                          !isNaN(+n.slice(1)) &&
                          (this[n] = t);
                  },
                  stop: function () {
                    this.done = !0;
                    var e = this.tryEntries[0].completion;
                    if ("throw" === e.type) throw e.arg;
                    return this.rval;
                  },
                  dispatchException: function (e) {
                    if (this.done) throw e;
                    var n = this;
                    function r(o, r) {
                      return (
                        (c.type = "throw"),
                        (c.arg = e),
                        (n.next = o),
                        r && ((n.method = "next"), (n.arg = t)),
                        !!r
                      );
                    }
                    for (var i = this.tryEntries.length - 1; i >= 0; --i) {
                      var a = this.tryEntries[i],
                        c = a.completion;
                      if ("root" === a.tryLoc) return r("end");
                      if (a.tryLoc <= this.prev) {
                        var p = o.call(a, "catchLoc"),
                          s = o.call(a, "finallyLoc");
                        if (p && s) {
                          if (this.prev < a.catchLoc) return r(a.catchLoc, !0);
                          if (this.prev < a.finallyLoc) return r(a.finallyLoc);
                        } else if (p) {
                          if (this.prev < a.catchLoc) return r(a.catchLoc, !0);
                        } else {
                          if (!s)
                            throw new Error(
                              "try statement without catch or finally"
                            );
                          if (this.prev < a.finallyLoc) return r(a.finallyLoc);
                        }
                      }
                    }
                  },
                  abrupt: function (e, t) {
                    for (var n = this.tryEntries.length - 1; n >= 0; --n) {
                      var r = this.tryEntries[n];
                      if (
                        r.tryLoc <= this.prev &&
                        o.call(r, "finallyLoc") &&
                        this.prev < r.finallyLoc
                      ) {
                        var i = r;
                        break;
                      }
                    }
                    i &&
                      ("break" === e || "continue" === e) &&
                      i.tryLoc <= t &&
                      t <= i.finallyLoc &&
                      (i = null);
                    var a = i ? i.completion : {};
                    return (
                      (a.type = e),
                      (a.arg = t),
                      i
                        ? ((this.method = "next"), (this.next = i.finallyLoc), h)
                        : this.complete(a)
                    );
                  },
                  complete: function (e, t) {
                    if ("throw" === e.type) throw e.arg;
                    return (
                      "break" === e.type || "continue" === e.type
                        ? (this.next = e.arg)
                        : "return" === e.type
                        ? ((this.rval = this.arg = e.arg),
                          (this.method = "return"),
                          (this.next = "end"))
                        : "normal" === e.type && t && (this.next = t),
                      h
                    );
                  },
                  finish: function (e) {
                    for (var t = this.tryEntries.length - 1; t >= 0; --t) {
                      var n = this.tryEntries[t];
                      if (n.finallyLoc === e)
                        return this.complete(n.completion, n.afterLoc), j(n), h;
                    }
                  },
                  catch: function (e) {
                    for (var t = this.tryEntries.length - 1; t >= 0; --t) {
                      var n = this.tryEntries[t];
                      if (n.tryLoc === e) {
                        var o = n.completion;
                        if ("throw" === o.type) {
                          var r = o.arg;
                          j(n);
                        }
                        return r;
                      }
                    }
                    throw new Error("illegal catch attempt");
                  },
                  delegateYield: function (e, n, o) {
                    return (
                      (this.delegate = {
                        iterator: S(e),
                        resultName: n,
                        nextLoc: o,
                      }),
                      "next" === this.method && (this.arg = t),
                      h
                    );
                  },
                }),
                e
              );
            })(e.exports);
            try {
              regeneratorRuntime = t;
            } catch (e) {
              "object" == typeof globalThis
                ? (globalThis.regeneratorRuntime = t)
                : Function("r", "regeneratorRuntime = r")(t);
            }
          },
          3379: (e) => {
            "use strict";
            var t = [];
            function n(e) {
              for (var n = -1, o = 0; o < t.length; o++)
                if (t[o].identifier === e) {
                  n = o;
                  break;
                }
              return n;
            }
            function o(e, o) {
              for (var i = {}, a = [], c = 0; c < e.length; c++) {
                var p = e[c],
                  s = o.base ? p[0] + o.base : p[0],
                  l = i[s] || 0,
                  u = "".concat(s, " ").concat(l);
                i[s] = l + 1;
                var d = n(u),
                  f = { css: p[1], media: p[2], sourceMap: p[3] };
                -1 !== d
                  ? (t[d].references++, t[d].updater(f))
                  : t.push({ identifier: u, updater: r(f, o), references: 1 }),
                  a.push(u);
              }
              return a;
            }
            function r(e, t) {
              var n = t.domAPI(t);
              return (
                n.update(e),
                function (t) {
                  if (t) {
                    if (
                      t.css === e.css &&
                      t.media === e.media &&
                      t.sourceMap === e.sourceMap
                    )
                      return;
                    n.update((e = t));
                  } else n.remove();
                }
              );
            }
            e.exports = function (e, r) {
              var i = o((e = e || []), (r = r || {}));
              return function (e) {
                e = e || [];
                for (var a = 0; a < i.length; a++) {
                  var c = n(i[a]);
                  t[c].references--;
                }
                for (var p = o(e, r), s = 0; s < i.length; s++) {
                  var l = n(i[s]);
                  0 === t[l].references && (t[l].updater(), t.splice(l, 1));
                }
                i = p;
              };
            };
          },
          569: (e) => {
            "use strict";
            var t = {};
            e.exports = function (e, n) {
              var o = (function (e) {
                if (void 0 === t[e]) {
                  var n = document.querySelector(e);
                  if (
                    window.HTMLIFrameElement &&
                    n instanceof window.HTMLIFrameElement
                  )
                    try {
                      n = n.contentDocument.head;
                    } catch (e) {
                      n = null;
                    }
                  t[e] = n;
                }
                return t[e];
              })(e);
              if (!o)
                throw new Error(
                  "Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."
                );
              o.appendChild(n);
            };
          },
          9216: (e) => {
            "use strict";
            e.exports = function (e) {
              var t = document.createElement("style");
              return e.setAttributes(t, e.attributes), e.insert(t), t;
            };
          },
          3565: (e, t, n) => {
            "use strict";
            e.exports = function (e) {
              var t = n.nc;
              t && e.setAttribute("nonce", t);
            };
          },
          7795: (e) => {
            "use strict";
            e.exports = function (e) {
              var t = e.insertStyleElement(e);
              return {
                update: function (n) {
                  !(function (e, t, n) {
                    var o = n.css,
                      r = n.media,
                      i = n.sourceMap;
                    r ? e.setAttribute("media", r) : e.removeAttribute("media"),
                      i &&
                        "undefined" != typeof btoa &&
                        (o +=
                          "\n/*# sourceMappingURL=data:application/json;base64,".concat(
                            btoa(unescape(encodeURIComponent(JSON.stringify(i)))),
                            " */"
                          )),
                      t.styleTagTransform(o, e);
                  })(t, e, n);
                },
                remove: function () {
                  !(function (e) {
                    if (null === e.parentNode) return !1;
                    e.parentNode.removeChild(e);
                  })(t);
                },
              };
            };
          },
          4589: (e) => {
            "use strict";
            e.exports = function (e, t) {
              if (t.styleSheet) t.styleSheet.cssText = e;
              else {
                for (; t.firstChild; ) t.removeChild(t.firstChild);
                t.appendChild(document.createTextNode(e));
              }
            };
          },
        },
        t = {};
      function n(o) {
        var r = t[o];
        if (void 0 !== r) return r.exports;
        var i = (t[o] = { id: o, exports: {} });
        return e[o](i, i.exports, n), i.exports;
      }
      (n.n = (e) => {
        var t = e && e.__esModule ? () => e.default : () => e;
        return n.d(t, { a: t }), t;
      }),
        (n.d = (e, t) => {
          for (var o in t)
            n.o(t, o) &&
              !n.o(e, o) &&
              Object.defineProperty(e, o, { enumerable: !0, get: t[o] });
        }),
        (n.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t)),
        (window.loginPopinConfig = {
          type: "benefits",
          feature: "",
          optimizely: !1,
          translations: {
            title: "Member Login",
            login: "Log in",
            createAccount: "Create account",
            fastRegister: "Fast Registration",
            guestRegisterTitle: "Checkout without account",
            guestRegisterDesc:
              "You could not benefit from Nespresso&You promotions",
            guestRegisterCta: "Guest checkout",
            benefitsTitle: "Club Member Benefits",
            benefit1: "Repeat & schedule your orders",
            benefit2: "Get Special Offers",
            benefit3: "Easy Checkout Process",
          },
        }),
        (() => {
          "use strict";
          function e(e, t, n) {
            return (
              t in e
                ? Object.defineProperty(e, t, {
                    value: n,
                    enumerable: !0,
                    configurable: !0,
                    writable: !0,
                  })
                : (e[t] = n),
              e
            );
          }
          function t(e, t, n, o, r, i, a) {
            try {
              var c = e[i](a),
                p = c.value;
            } catch (e) {
              return void n(e);
            }
            c.done ? t(p) : Promise.resolve(p).then(o, r);
          }
          function o(e) {
            return function () {
              var n = this,
                o = arguments;
              return new Promise(function (r, i) {
                var a = e.apply(n, o);
                function c(e) {
                  t(a, r, i, c, p, "next", e);
                }
                function p(e) {
                  t(a, r, i, c, p, "throw", e);
                }
                c(void 0);
              });
            };
          }
          var r = n(7757),
            i = n.n(r),
            a = n(3379),
            c = n.n(a),
            p = n(7795),
            s = n.n(p),
            l = n(569),
            u = n.n(l),
            d = n(3565),
            f = n.n(d),
            g = n(9216),
            h = n.n(g),
            m = n(4589),
            v = n.n(m),
            b = n(7276),
            y = {};
          function w(e, t) {
            var n = Object.keys(e);
            if (Object.getOwnPropertySymbols) {
              var o = Object.getOwnPropertySymbols(e);
              t &&
                (o = o.filter(function (t) {
                  return Object.getOwnPropertyDescriptor(e, t).enumerable;
                })),
                n.push.apply(n, o);
            }
            return n;
          }
          function x(t) {
            for (var n = 1; n < arguments.length; n++) {
              var o = null != arguments[n] ? arguments[n] : {};
              n % 2
                ? w(Object(o), !0).forEach(function (n) {
                    e(t, n, o[n]);
                  })
                : Object.getOwnPropertyDescriptors
                ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(o))
                : w(Object(o)).forEach(function (e) {
                    Object.defineProperty(
                      t,
                      e,
                      Object.getOwnPropertyDescriptor(o, e)
                    );
                  });
            }
            return t;
          }
          function _() {
            if (!window.config)
              return console.log("AB - window.config not found"), "en";
            var e = window.config.padl.namespace;
            return e
              ? window[e].dataLayer
                ? window[e].dataLayer.page.page.pageInfo.language
                : (console.log("AB - window[ns].dataLayer not found"), "en")
              : (console.log("AB - padl.namespace not found"), "en");
          }
          function L(e, t) {
  (e = x({ action: "", name: "" }, e)),
    (t = x({ optimizely: !1 }, t)),
    (gtmDataObject = window.gtmDataObject || []);

  // Gestion uniquement pour Optimizely
  if (t.optimizely) {
    gtmDataObject.push({
      event: "optimizely_decision_web",
      cta_name: e.name,
      experiment_name: void 0,
      experiment_variant: void 0,
      event_raised_by: "Optimizely custom event",
    });
  }
}

          function O(e, t) {
            var n = Object.keys(e);
            if (Object.getOwnPropertySymbols) {
              var o = Object.getOwnPropertySymbols(e);
              t &&
                (o = o.filter(function (t) {
                  return Object.getOwnPropertyDescriptor(e, t).enumerable;
                })),
                n.push.apply(n, o);
            }
            return n;
          }
          function E(t) {
            for (var n = 1; n < arguments.length; n++) {
              var o = null != arguments[n] ? arguments[n] : {};
              n % 2
                ? O(Object(o), !0).forEach(function (n) {
                    e(t, n, o[n]);
                  })
                : Object.getOwnPropertyDescriptors
                ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(o))
                : O(Object(o)).forEach(function (e) {
                    Object.defineProperty(
                      t,
                      e,
                      Object.getOwnPropertyDescriptor(o, e)
                    );
                  });
            }
            return t;
          }
          (y.styleTagTransform = v()),
            (y.setAttributes = f()),
            (y.insert = u().bind(null, "head")),
            (y.domAPI = s()),
            (y.insertStyleElement = h()),
            c()(b.Z, y),
            b.Z && b.Z.locals && b.Z.locals;
          var D = window.loginPopinConfig;
          new Promise(function (e, t) {
            var n = window.setInterval(function () {
              var t = document.querySelector("header#top");
              null != t &&
                t.querySelector(".LoginDropdown") &&
                (window.clearInterval(n), e());
            }, 50);
            window.setTimeout(function () {
              window.clearInterval(n), t(new Error("Header not found"));
            }, 1e4);
          })
            .catch(function (e) {
              console.error(e.message);
            })
            .then(
              o(
                i().mark(function e() {
                  var t, n, o, r;
                  return i().wrap(
                    function (e) {
                      for (;;)
                        switch ((e.prev = e.next)) {
                          case 0:
                            return (
                              (e.prev = 0), (e.next = 3), napi.customer().read()
                            );
                          case 3:
                            (t = e.sent), (e.next = 8);
                            break;
                          case 6:
                            (e.prev = 6), (e.t0 = e.catch(0));
                          case 8:
                            if (!t) {
                              e.next = 10;
                              break;
                            }
                            return e.abrupt("return", !1);
                          case 10:
                            return (
                              (n = document.querySelector(
                                "header .LoginDropdown"
                              )).classList.add("ab-login-popin"),
                              (o = n.querySelector("div")),
                              (e.next = 15),
                              napi.cart().read()
                            );
                          case 15:
                            (r = e.sent),
                              new MutationObserver(function (e, t) {
                                var i = o.querySelector(
                                  ".LoginDropdown__description"
                                );
                                if (i) {
                                  var a,
                                    c = (D = E(
                                      E({}, D),
                                      (null === (a = window.loginPopinCopy) ||
                                      void 0 === a
                                        ? void 0
                                        : a[_()]) || {}
                                    )).translations;
                                  L(
                                    {
                                      action: "Open",
                                      name: "Open - Login Menu drop down",
                                    },
                                    { optimizely: D.optimizely }
                                  );
                                  var p = n.querySelector(
                                      ".LoginDropdownButton__icon.LoginDropdownButton__icon--open"
                                    ),
                                    s = o.querySelector(
                                      ".LoginDropdown__spacer--horizontal"
                                    ),
                                    l = o.querySelector(
                                      ".LoginDropdown__register-description"
                                    ),
                                    u = o.querySelector(
                                      ".LoginDropdown__container"
                                    ),
                                    d = u.querySelector("form");
                                  p.classList.replace(
                                    "Glyph--cross",
                                    "Glyph--user"
                                  ),
                                    p.classList.remove(
                                      "LoginDropdownButton__icon--open"
                                    ),
                                    i.parentNode && i.parentNode.removeChild(i),
                                    s.parentNode && s.parentNode.removeChild(s),
                                    l.parentNode && l.parentNode.removeChild(l),
                                    (o.querySelector(
                                      ".LoginDropdown__title"
                                    ).textContent = c.title);
                                  var f = document.getElementById(
                                    "ta-login-form__submit"
                                  );
                                  f.textContent = c.login;
                                  var g = document.getElementById(
                                    "ta-login-dropdown-register"
                                  );
                                  (g.textContent = c.createAccount),
                                    (g.type = "button");
                                  var h = document.createElement("div");
                                  if (
                                    (h.classList.add("poppin-actions"),
                                    d.appendChild(h),
                                    h.appendChild(g),
                                    h.appendChild(f),
                                    f.addEventListener("click", function () {
                                      L(
                                        {
                                          action: "Click",
                                          name: "Click - Login from modal",
                                        },
                                        { optimizely: D.optimizely }
                                      );
                                    }),
                                    g.addEventListener("click", function () {
                                      L(
                                        {
                                          action: "Click",
                                          name: "Click - Register from modal",
                                        },
                                        { optimizely: D.optimizely }
                                      );
                                    }),
                                    "guest_checkout" === D.feature && r.length)
                                  ) {
                                    var m = u.appendChild(
                                      document.createElement("div")
                                    );
                                    m.classList.add(
                                      "ab-login-popin-guestcheckout"
                                    ),
                                      (m.innerHTML =
                                        '<hr class="LoginDropdown__spacer--horizontal" aria-hidden="true">\n<strong>'
                                          .concat(
                                            c.guestRegisterTitle,
                                            "</strong>\n<p>"
                                          )
                                          .concat(
                                            c.guestRegisterDesc,
                                            '</p>\n<a href="">'
                                          )
                                          .concat(c.guestRegisterCta, "</a>"));
                                    var v = m.querySelector("a");
                                    (v.classList = g.classList),
                                      (v.href = "/"
                                        .concat(
                                          (window.config ||
                                            console.log(
                                              "AB - window.config not found"
                                            ),
                                          config.defaults.addressCountry),
                                          "/"
                                        )
                                        .concat(_(), "/guestcheckout#/delivery"));
                                  } else
                                    r.length && (g.textContent = c.fastRegister);
                                  var b = document.createElement("button");
                                  if (
                                    ((b.innerHTML =
                                      '<i class="Glyph Glyph--cross lightbox__close-icon" aria-hidden="true" />'),
                                    b.classList.add("close-btn"),
                                    u.appendChild(b),
                                    b.addEventListener("click", function () {
                                      return document
                                        .getElementById(
                                          "ta-login-dropdown--not-logged"
                                        )
                                        .click();
                                    }),
                                    "benefits" === D.type)
                                  ) {
                                    var y, w, x, O, j, C, S, k, P, T;
                                    n.classList.add("ab-login-popin-benefits");
                                    var z = document.createElement("div");
                                    z.classList.add("popin-grid");
                                    var B = document.createElement("div"),
                                      N = document.createElement("div"),
                                      A = [],
                                      F = d.firstElementChild;
                                    for (A.push(F); (F = F.nextElementSibling); )
                                      A.push(F);
                                    B.append.apply(B, A),
                                      d.appendChild(z),
                                      z.appendChild(B),
                                      z.appendChild(N),
                                      d.appendChild(h),
                                      (N.innerHTML = "<strong>"
                                        .concat(
                                          c.benefitsTitle,
                                          '</strong>\n<ul>\n<li> <svg aria-hidden="true" focusable="false" viewBox="0 0 '
                                        )
                                        .concat(
                                          (null === (y = D.iconSizes) ||
                                          void 0 === y
                                            ? void 0
                                            : y[0]) || 20,
                                          " "
                                        )
                                        .concat(
                                          (null === (w = D.iconSizes) ||
                                          void 0 === w
                                            ? void 0
                                            : w[0]) || 20,
                                          '">\n <use href="#loginPopin1"></use>\n </svg> '
                                        )
                                        .concat(
                                          c.benefit1,
                                          '</li>\n<li><svg aria-hidden="true" focusable="false" viewBox="0 0 '
                                        )
                                        .concat(
                                          (null === (x = D.iconSizes) ||
                                          void 0 === x
                                            ? void 0
                                            : x[1]) || 20,
                                          " "
                                        )
                                        .concat(
                                          (null === (O = D.iconSizes) ||
                                          void 0 === O
                                            ? void 0
                                            : O[1]) || 20,
                                          '">\n <use href="#loginPopin2"></use>\n </svg> '
                                        )
                                        .concat(c.benefit2, "</li>\n")
                                        .concat(
                                          null !== (j = c.benefit3) &&
                                            void 0 !== j &&
                                            j.length
                                            ? '<li><svg aria-hidden="true" focusable="false" viewBox="0 0 '
                                                .concat(
                                                  (null === (C = D.iconSizes) ||
                                                  void 0 === C
                                                    ? void 0
                                                    : C[2]) || 20,
                                                  " "
                                                )
                                                .concat(
                                                  (null === (S = D.iconSizes) ||
                                                  void 0 === S
                                                    ? void 0
                                                    : S[2]) || 20,
                                                  '">\n <use href="#loginPopin3"></use>\n </svg> '
                                                )
                                                .concat(c.benefit3, "</li>")
                                            : "",
                                          "\n"
                                        )
                                        .concat(
                                          null !== (k = c.benefit4) &&
                                            void 0 !== k &&
                                            k.length
                                            ? '<li><svg aria-hidden="true" focusable="false" viewBox="0 0 '
                                                .concat(
                                                  (null === (P = D.iconSizes) ||
                                                  void 0 === P
                                                    ? void 0
                                                    : P[3]) || 20,
                                                  " "
                                                )
                                                .concat(
                                                  (null === (T = D.iconSizes) ||
                                                  void 0 === T
                                                    ? void 0
                                                    : T[3]) || 20,
                                                  '">\n <use href="#loginPopin4"></use>\n </svg> '
                                                )
                                                .concat(c.benefit4, "</li>")
                                            : "",
                                          "\n</ul>"
                                        ));
                                  }
                                }
                              }).observe(o, { childList: !0, subtree: !0 });
                          case 18:
                          case "end":
                            return e.stop();
                        }
                    },
                    e,
                    null,
                    [[0, 6]]
                  );
                })
              )
            );
        })();
    })();
  </script>
  
  <svg
    xmlns="http://www.w3.org/2000/svg"
    width="24"
    height="24"
    viewbox="0 0 24 24"
    fill="none"
    class="ab-test-icon"
  >
    <symbol id="loginPopin1">
      <path
        d="M12 .94 2 6.2v11.6l10 5.27 10-5.27V6.2L12 .94Zm0 1.12 8.43 4.44-3.54 1.86-8.2-4.55L12 2.06Zm-.5 19.61L3 17.2V7.33l8.5 4.47v9.87ZM3.57 6.5l4.06-2.13 8.2 4.55L12 10.94 3.57 6.5ZM21 17.2l-8.5 4.47V11.8l4-2.1v3.1l1-.5V9.17L21 7.33v9.87Z"
        fill="#876C43"
      />
    </symbol>
  </svg>
  <svg
    xmlns="http://www.w3.org/2000/svg"
    width="20"
    height="20"
    viewbox="0 0 20 20"
    fill="none"
    class="ab-test-icon"
  >
    <symbol id="loginPopin2">
      <path
        d="M14.654 6.66667C15.8729 5.90607 16.6666 4.69696 16.6666 3.33333H15.8333C15.8333 4.8465 14.5584 6.11287 12.8287 6.51835C13.6341 5.89497 14.1666 5.04389 14.1666 4.16667C14.1666 3.24748 13.4188 2.5 12.5 2.5C11.2638 2.5 10.4472 3.51298 9.99998 4.73485C9.5528 3.51298 8.73615 2.5 7.49998 2.5C6.58079 2.5 5.83331 3.24748 5.83331 4.16667C5.83331 5.04389 6.36585 5.89497 7.1713 6.51835C5.44152 6.11287 4.16665 4.8465 4.16665 3.33333H3.33331C3.33331 4.69696 4.12707 5.90607 5.346 6.66667H0.833313V16.6667H19.1666V6.66667H14.654ZM18.3333 7.5V11.263H10.4166V7.5H18.3333ZM12.5 3.33333C12.9598 3.33333 13.3333 3.70727 13.3333 4.16667C13.3333 5.19979 12.0369 6.44287 10.4362 6.63981C10.5599 5.15707 11.2833 3.33333 12.5 3.33333ZM6.66665 4.16667C6.66665 3.70727 7.04059 3.33333 7.49998 3.33333C8.71661 3.33333 9.44008 5.15707 9.56419 6.63981C7.96303 6.44287 6.66665 5.19979 6.66665 4.16667ZM9.58331 7.5V11.263H1.66665V7.5H9.58331ZM1.66665 15.8333V12.0963H9.58331V15.8333H1.66665ZM10.4166 15.8333V12.0963H18.3333V15.8333H10.4166Z"
        fill="#876C43"
      />
    </symbol>
  </svg>
  <svg
    xmlns="http://www.w3.org/2000/svg"
    width="24"
    height="24"
    viewbox="0 0 24 24"
    fill="none"
    class="ab-test-icon"
  >
    <symbol id="loginPopin3">
      <path
        d="m12 7.5-2.02 8h1.04l2-8H12ZM8 7c-.6 0-2 .24-2 2.5S7.4 12 8 12c.6 0 2-.24 2-2.5S8.6 7 8 7Zm0 4c-.3 0-1 0-1-1.5S7.7 8 8 8c.3 0 1 0 1 1.5S8.3 11 8 11ZM15 11c-.6 0-2 .24-2 2.5s1.4 2.5 2 2.5c.6 0 2-.24 2-2.5S15.6 11 15 11Zm0 4c-.3 0-1 0-1-1.5s.7-1.5 1-1.5c.3 0 1 0 1 1.5s-.7 1.5-1 1.5Z"
        fill="#876C43"
      />
      <path
        d="M11.7 2H2v9.7l11 11.01L22.7 13l-11-11ZM3 11.3V3h8.3l10 10-8.3 8.3-10-10Z"
        fill="#876C43"
      />
      <path d="M5.5 6.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z" fill="#876C43" />
    </symbol>
  </svg>

  <style>
    .ab-test-icon {
      display: none;
    }
  </style>
  </div>

<div id="block-8834661570037" class="free-html" data-label=""  >
    
<style>
    /* Styles pour toutes les divs iAdvize */
    [id^="iadvize-112025-mon-compte-abo-cafe-"] {
        width: 100%;
        min-height: 0;
        height: auto;
        display: block;
        box-sizing: border-box;
        margin-top: 10px;
    }
    
    /* Le contenu à l'intérieur prendra toute la hauteur nécessaire */
    [id^="iadvize-112025-mon-compte-abo-cafe-"] > * {
        width: 100%;
        height: 100%;
    }
</style>

<script>
(() => {
    'use strict';
        
    // Configuration
    const CONFIG = {
        // ID par défaut pour la page d'accueil (avant le stepper)
        homeDivId: 'iadvize-112025-mon-compte-abo-cafe-home',
        
        // Mapping des étapes du stepper vers les IDs de div (FR et EN)
        stepMapping: {
            // Français
            'Produits': 'iadvize-112025-mon-compte-abo-cafe-produit',
            'Fréquence': 'iadvize-112025-mon-compte-abo-cafe-frequence',
            'Livraison': 'iadvize-112025-mon-compte-abo-cafe-livraison',
            'Paiement': 'iadvize-112025-mon-compte-abo-cafe-paiement',
            'Récapitulatif': 'iadvize-112025-mon-compte-abo-cafe-recap',
            // Anglais
            'Products': 'iadvize-112025-mon-compte-abo-cafe-produit',
            'Frequency': 'iadvize-112025-mon-compte-abo-cafe-frequence',
            'Delivery': 'iadvize-112025-mon-compte-abo-cafe-livraison',
            'Payment': 'iadvize-112025-mon-compte-abo-cafe-paiement',
            'Summary': 'iadvize-112025-mon-compte-abo-cafe-recap'
        },
        checkInterval: 300,
        initialDelay: 2000
    };
    
    let observerActive = false;
    let currentStepDiv = null; // Garde en mémoire la div actuellement injectée
    
    /**
     * Détecte l'étape active du stepper
     * @returns {string|null} Le nom de l'étape active ou null
     */
    const detectActiveStep = () => {
        // Chercher le bouton du stepper avec aria-selected="true"
        const activeStepButton = document.querySelector('[class*="Stepper__step_12141"][aria-selected="true"]');
        
        if (activeStepButton) {
            // Extraire le texte du label
            const stepLabel = activeStepButton.querySelector('[class*="Stepper__stepLabel_12141"]');
            if (stepLabel) {
                const stepText = stepLabel.textContent.trim();
                return stepText; // "Produits" / "Products", "Fréquence" / "Frequency", etc.
            }
        }
        
        return null;
    };
    
    /**
     * Trouve l'élément FAQ avec plusieurs stratégies
     */
    const findFAQElement = () => {
        // Stratégie 1: Chercher par classe partielle
        let faqElement = document.querySelector('[class*="ListFooter__faq"]');
        if (faqElement) {
            return faqElement;
        }
        
        // Stratégie 2: Chercher par texte "Des questions ? Consultez la FAQ"
        const buttons = document.querySelectorAll('button');
        for (const button of buttons) {
            if (button.textContent.includes('Des questions') && button.textContent.includes('FAQ')) {
                faqElement = button.closest('[class*="faq"]') || button.parentElement;
                if (faqElement) {
                    return faqElement;
                }
            }
        }
        
        // Stratégie 3: Chercher par structure (Modal__textLink contenant "FAQ")
        const textLinks = document.querySelectorAll('[class*="Modal__textLink"], [class*="textLink"]');
        for (const link of textLinks) {
            if (link.textContent.includes('FAQ')) {
                faqElement = link.closest('div');
                if (faqElement) {
                    return faqElement;
                }
            }
        }
        
        // Stratégie 4: Chercher dans le container des abonnements
        const standingOrdersContainer = document.querySelector('#standingOrdersOrigin, [id*="standingOrders"]');
        if (standingOrdersContainer) {
            const allDivs = standingOrdersContainer.querySelectorAll('div');
            for (const div of allDivs) {
                if (div.textContent.includes('Des questions') && div.textContent.includes('FAQ')) {
                    return div;
                }
            }
        }
        
        return null;
    };
    
    /**
     * Crée la div iAdvize avec l'ID correspondant à l'étape
     * @param {string} divId - L'ID de la div à créer
     */
    const createIadvizeDiv = (divId) => {
        const div = document.createElement('div');
        div.id = divId;
        return div;
    };
    
    /**
     * Supprime toutes les anciennes divs iAdvize
     */
    const removeAllIadvizeDivs = () => {
        const allIadvizeDivs = document.querySelectorAll('[id^="iadvize-112025-mon-compte-abo-cafe-"]');
        allIadvizeDivs.forEach(div => div.remove());
        currentStepDiv = null;
    };
    
    /**
     * Insère ou met à jour la div iAdvize selon l'étape active (ou page d'accueil)
     */
    const insertIadvizeDiv = () => {
        // Vérifier si le container principal existe
        const standingOrdersContainer = document.querySelector('#standingOrdersOrigin');
        if (!standingOrdersContainer) {
            // Container absent, supprimer toutes les divs
            removeAllIadvizeDivs();
            return false;
        }
        
        // Chercher le stepper
        const stepperElement = document.querySelector('[class*="Stepper_12141"][role="tablist"]');
        
        // Détecter l'étape active du stepper
        const activeStep = detectActiveStep();
        
        let targetDivId;
        let insertionTarget;
        
        if (!activeStep || !stepperElement) {
            // Pas de stepper détecté = page d'accueil
            targetDivId = CONFIG.homeDivId;
            
            // Sur la page d'accueil, injecter au-dessus de la FAQ
            const faqElement = findFAQElement();
            if (!faqElement) {
                return false;
            }
            insertionTarget = { parent: faqElement.parentNode, before: faqElement };
            
        } else if (CONFIG.stepMapping[activeStep]) {
            // Stepper détecté avec une étape connue
            targetDivId = CONFIG.stepMapping[activeStep];
            
            // Dans le stepper, injecter APRÈS le stepper
            insertionTarget = { parent: stepperElement.parentNode, after: stepperElement };
            
        } else {
            // Stepper détecté mais étape inconnue
            return false;
        }
        
        // Si la bonne div existe déjà, ne rien faire
        if (currentStepDiv === targetDivId && document.getElementById(targetDivId)) {
            return true;
        }
        
        // Supprimer toutes les anciennes divs
        removeAllIadvizeDivs();
        
        // Créer la nouvelle div
        const iadvizeDiv = createIadvizeDiv(targetDivId);
        
        // Insérer selon le contexte
        if (insertionTarget.before) {
            // Insérer avant un élément (cas FAQ)
            insertionTarget.parent.insertBefore(iadvizeDiv, insertionTarget.before);
        } else if (insertionTarget.after) {
            // Insérer après un élément (cas stepper)
            if (insertionTarget.after.nextSibling) {
                insertionTarget.parent.insertBefore(iadvizeDiv, insertionTarget.after.nextSibling);
            } else {
                insertionTarget.parent.appendChild(iadvizeDiv);
            }
        }
        
        currentStepDiv = targetDivId;
        
        return true;
    };
    
    /**
     * Tentative d'insertion
     */
    const tryInsert = () => {
        return insertIadvizeDiv();
    };
    
    /**
     * Observe les changements du DOM en permanence pour détecter les changements de stepper
     */
    const observeDOM = () => {
        if (observerActive) {
            return; // Éviter les doublons d'observer
        }
        observerActive = true;
        
        // Tentative immédiate
        tryInsert();
        
        // Configuration du MutationObserver - Ne se déconnecte JAMAIS
        const observer = new MutationObserver((mutations) => {
            // Vérifier en permanence si l'élément FAQ est présent
            tryInsert();
        });
        
        // Observer depuis documentElement pour capturer tout le DOM
        const targetNode = document.documentElement || document.body;
        observer.observe(targetNode, {
            childList: true,
            subtree: true,
            attributes: false
        });
        
        // Interval de secours qui tourne en permanence
        setInterval(() => {
            tryInsert();
        }, CONFIG.checkInterval);
    };
    
    // Fonction de démarrage avec délai
    let scriptStarted = false;
    
    const startScript = () => {
        if (scriptStarted) {
            return;
        }
        scriptStarted = true;
        
        setTimeout(() => {
            observeDOM();
        }, CONFIG.initialDelay);
    };
    
    // Méthode 1: DOMContentLoaded
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', startScript);
    }
    
    // Méthode 2: window.load (garantit que tout est chargé)
    window.addEventListener('load', () => {
        startScript();
    });
    
    // Méthode 3: Démarrage immédiat si le document est déjà prêt
    if (document.readyState === 'interactive' || document.readyState === 'complete') {
        startScript();
    }
    
    // Méthode 4: Fallback avec délai plus long (au cas où tout le reste échoue)
    setTimeout(() => {
        startScript();
    }, 3000);
    
})();
</script></div>

<div id="block-8834710263285" class="free-html" data-label=""  >
    </div>

<div id="block-8834599802357" class="free-html" data-label=""  >
    <style id="keep-overlay-active-style">

#ta-mini-basket-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 900;
  pointer-events: none;
}

/* Le mini-cart doit passer au-dessus de l’overlay */
.MiniBasketDropdown {
  position: relative;
}

/* Empêche totalement le scroll sur la page */
html.has-overlay,
body.has-overlay {
  overflow: hidden !important;
}

/* On masque l’overlay React quand le mini-cart est ouvert */
body[data-mini-cart-open="true"] .Overlay {
  display: none !important;
}


</style>
<script id="keep-overlay-active">
// @bug https://nespresso264070.monday.com/boards/2020536869/pulses/5080249621

 document.addEventListener('DOMContentLoaded', () => {
  // console.log('[mini-cart] init');

  const BODY_OVERLAY_CLASS = 'has-overlay';
  const OVERLAY_ID = 'ta-mini-basket-overlay';

  let isMiniCartOpen = false;

  function getOverlay() {
    return document.getElementById(OVERLAY_ID);
  }

  function createOverlayIfNeeded() {
    let overlay = getOverlay();
    if (!overlay) {
      overlay = document.createElement('div');
      overlay.id = OVERLAY_ID;
      document.body.appendChild(overlay);
      // console.log('[mini-cart] overlay créé');
    }
    overlay.style.pointerEvents = 'none';
    return overlay;
  }

  function openMiniCart() {
    if (isMiniCartOpen) return;
    // console.log('[mini-cart] openMiniCart()');

    isMiniCartOpen = true;

    document.body.dataset.miniCartOpen = 'true';

    // Active overlay custom
    createOverlayIfNeeded();

    // Fige la page : html + body
    document.body.classList.add(BODY_OVERLAY_CLASS);
    document.documentElement.classList.add(BODY_OVERLAY_CLASS);
  }

  function closeMiniCart() {
    if (!isMiniCartOpen) return;
    // console.log('[mini-cart] closeMiniCart()');

    isMiniCartOpen = false;

    document.body.dataset.miniCartOpen = 'false';

    // Défige la page
    document.body.classList.remove(BODY_OVERLAY_CLASS);
    document.documentElement.classList.remove(BODY_OVERLAY_CLASS);

    // Supprime notre overlay
    const overlay = getOverlay();
    if (overlay) overlay.remove();

    // Clique sur le bouton close React pour que le mini-cart se ferme correctement
    const closeBtn = document.querySelector('#ta-mini-basket__close');
    if (closeBtn) closeBtn.click();
  }

  // Écoute tous les clics (DOM peut être recréé → délégation indispensable)
  document.addEventListener(
    'click',
    (event) => {
      const openBtn  = event.target.closest('#ta-mini-basket__open');
      const closeBtn = event.target.closest('#ta-mini-basket__close');
      const miniCartPanel = event.target.closest('.MiniBasketDropdown');

      if (openBtn) {
        // console.log('--- [mini-cart] CLICK OPEN ---');
        openMiniCart();
        return;
      }

      if (closeBtn) {
        // console.log('--- [mini-cart] CLICK CLOSE ---');
        closeMiniCart();
        return;
      }

      // Si mini-cart ouvert et clic à l'extérieur → on ferme
      if (isMiniCartOpen && !miniCartPanel) {
        // console.log('[mini-cart] clic hors mini-cart → closeMiniCart()');
        closeMiniCart();
      }
    },
    true
  );

  // MutationObserver : si React supprime has-overlay → on le remet tant que la mini-cart est open
  const overlayObserver = new MutationObserver(() => {
    if (isMiniCartOpen) {
      if (!document.body.classList.contains(BODY_OVERLAY_CLASS)) {
        // console.log('[mini-cart] ⚠ body.has-overlay retirée → je la remets');
        document.body.classList.add(BODY_OVERLAY_CLASS);
      }
      if (!document.documentElement.classList.contains(BODY_OVERLAY_CLASS)) {
        // console.log('[mini-cart] ⚠ html.has-overlay retirée → je la remets');
        document.documentElement.classList.add(BODY_OVERLAY_CLASS);
      }
    }
  });

  overlayObserver.observe(document.body, {
    attributes: true,
    attributeFilter: ['class']
  });

  // console.log('[mini-cart] prêt');
});


</script></div>

</div>

</header>
<main id="main">
            <span id="a11y-main-area" class="visually-hidden" tabindex="-1">Vous vous trouvez au niveau du contenu principal</span>
            <div id="block-8831253337589" class="free-html" data-label=""  >
    <style>
    .AddToBagButtonSmall:not(:disabled) {
        background-color: #3d8705;
    }
</style></div>

<div id="block-8834965689845" class="free-html" data-label=""  >
    <div class="promo-block">
    <div id="promo-mount"></div>
</div>

<script>
    const DRUPAL_NODES = [
        {
            name: "HP Reveal",
            comment: "HP Content from 18 Mars 2026 (projet Reveal)",
            startAfter: "2026-03-22T23:01:00Z",
            endBefore: "2026-03-23T22:58:00Z",
            containerId: "a9825872-f831-4938-ba83-efb8ea15ee27"
        },        
        {
            name: "HP Reveal + Journée Nespresso",
            comment: "LP FR – Page Promo Offre Journée Nespresso (24 mars 2026 – 26 mars 2026)",
            startAfter: "2026-03-23T23:01:00Z",
            endBefore: "2026-03-26T22:58:00Z",
            containerId: "e4420342-f424-4fc3-a402-615b7522c3b6"
        },
        {
            name: "HP Content from 27 Mars 2026 (Reveal)",
            comment: "HP Content from 27 Mars 2026 (Reveal)",
            startAfter: "2026-03-29T23:01:00Z",
            endBefore: "2026-04-13T21:59:00Z",
            containerId: "687f9526-1859-41f6-b588-1b270eec3012"
        },
        {
            name: "default",
            comment: "HP Content from 27 Mars 2026 (Reveal)",
            containerId: "687f9526-1859-41f6-b588-1b270eec3012"
        }

    ];

</script></div>

<div id="block-8834995607029" class="free-html" data-label=""  >
    <script>
(function() {
  'use strict';
  
  function waitForElement(selector, callback, timeout) {
    timeout = timeout || 5000;
    const startTime = Date.now();
    
    const interval = setInterval(function() {
      const element = document.querySelector(selector);
      
      if (element) {
        clearInterval(interval);
        callback(element);
      } else if (Date.now() - startTime > timeout) {
        clearInterval(interval);
        console.warn('❌ Element not found:', selector);
      }
    }, 100);
  }
  
  // ?? NOUVELLE VERSION : Écouter l'événement Target
  function waitForTestVersion(callback) {
    // Si la variable existe déjà
    if (window.xsellAbTestVersion) {
      console.log('✅ Version déjà définie:', window.xsellAbTestVersion);
      callback(window.xsellAbTestVersion);
      return;
    }
    
    // Timeout de sécurité
    const timeout = setTimeout(function() {
      console.log('⚪ Timeout: mode control');
      callback('control');
    }, 10000);
    
    // Écouter l'événement at-content-rendering-succeeded
    document.addEventListener('at-content-rendering-succeeded', function() {
      clearTimeout(timeout);
      const version = window.xsellAbTestVersion || 'control';
      console.log('✅ Target chargé, version:', version);
      callback(version);
    }, { once: true });
    
    // Plan B : polling avec timeout plus long
    let attempts = 0;
    const maxAttempts = 100; // 10 secondes (100 * 100ms)
    
    const interval = setInterval(function() {
      attempts++;
      
      if (window.xsellAbTestVersion) {
        clearInterval(interval);
        clearTimeout(timeout);
        console.log('✅ Version détectée (polling):', window.xsellAbTestVersion);
        callback(window.xsellAbTestVersion);
      } else if (attempts >= maxAttempts) {
        clearInterval(interval);
        // Le timeout gérera le callback
      }
    }, 100);
  }
  
  function redirectToDestination(slide, version) {
    let destinationUrl;
    let versionLabel;
    
    if (version === 'A') {
      destinationUrl = 'https://www.nespresso.com/fr/fr/order/capsules/original#assortiments-a-prix-avantageux-original';
      versionLabel = 'PLP Capsules Original (Experience A)';
    } else if (version === 'B') {
      destinationUrl = 'https://www.nespresso.com/fr/fr/assortiments-a-prix-avantageux-original';
      versionLabel = 'LP Assortiments (Experience B)';
    } else {
      console.log('⚪ Mode control - comportement par défaut');
      return;
    }
    
    console.log(`?? Version active: ${version}`);
    
    const button = slide.querySelector('button');
    
    if (button) {
      console.log('✅ Bouton trouvé dans le slide');
      
      button.addEventListener('click', function(e) {
        e.preventDefault();
        e.stopPropagation();
        console.log(`?? Redirection vers ${versionLabel}`);
        window.location.href = destinationUrl;
      });
      
      console.log(`✅ Experience ${version} configurée`);
    } else {
      console.warn('❌ Aucun bouton trouvé dans le slide');
    }
    
    slide.addEventListener('click', function(e) {
      e.preventDefault();
      e.stopPropagation();
      console.log(`?? Redirection via slide complet (${versionLabel})`);
      window.location.href = destinationUrl;
    });
  }
  
  const currentPath = window.location.pathname;
  console.log('?? Page actuelle:', currentPath);
  
  if (currentPath === '/fr/fr' || currentPath === '/fr/fr/' || currentPath.includes('/promotions')) {
    console.log('?? Page ciblée détectée');
    
	waitForTestVersion(function(version) {
  waitForElement('#splide01-slide01', function(slide) {
    redirectToDestination(slide, version);
  });
});
  }
  
})();
</script> </div>

<div id="block-8835290027509" class="free-html" data-label=""  >
    <span></span></div>

</main>

        <footer role="contentinfo">
  <div id="footer" class="footer-block">
    <h2 class="visually-hidden">Pied de page</h2>
    <div id="block-8835155154421" class="free-html" data-label=""  >
    <script>window.vtsProgressOffersConfig={"delivery":{"ambassadorMessage":"<div style=\"color: #257A57; display: inline-flex; align-items: center; justify-content: center; width: 100%; font-weight: 500\"><svg style=\"margin-right: 5px\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M12 1.83423L3 6.13867V17.8614L12 22.1659L21 17.8614V6.13867L12 1.83423ZM12 2.66553L19.7559 6.37479L16.6024 7.88303L8.84647 4.17372L12 2.66553ZM11.625 21.1545L3.75 17.3883V6.97002L11.625 10.7362V21.1545ZM4.24411 6.37479L7.97707 4.58951L15.733 8.29882L12 10.0842L4.24411 6.37479ZM20.25 17.3883L12.375 21.1545V10.7362L16.125 8.94274V11.4374L16.875 11.0624V8.58409L20.25 6.97002V17.3883Z\" fill=\"#257A57\"/> </svg><span>Vous bénéficiez de la&nbsp;<strong>livraison à domicile</strong>&nbsp;gratuite.</span></div>","startText":"Plus que 20€ pour profiter de la <strong>livraison offerte en point retrait</strong>.","completedText":"<strong>Félicitations !</strong> vous bénéficiez de la <strong>livraison offerte à domicile</strong> !","steps":[{"threshold":20,"text":"Livraison en point retrait","progressTexts":{"inProgress":"Plus que <strong>{{remaining}}€</strong> pour bénéficier de la <strong>livraison offerte en point retrait</strong> !"}},{"threshold":40,"text":"Livraison à domicile","progressTexts":{"inProgress":"Plus que <strong>{{remaining}}€</strong> pour bénéficier de la <strong>livraison offerte à domicile</strong> !"}}],"modalities":{"label":"*Modalités","text":"Livraison en click and collect offerte pour tout achat. Livraison en point de retrait offerte dès 20 € d'achat. Livraison à domicile en Colissimo offerte dès 40 € d'achat. Conditions valables en France métropolitaine, Corse et Monaco, sous réserve du statut fidélité applicable, pour toute commande sur le site www.nespresso.com/fr, depuis l’application mobile Nespresso ou par téléphone au 0 800 55 52 53 (service & appel gratuits disponibles du lundi au samedi de 8h à 20h, hors jours fériés)."},"deliveryInfo":{"modalites":"Livraison en click and collect offerte pour tout achat. Livraison en point de retrait offerte dès 20 € d'achat. Livraison à domicile en Colissimo offerte dès 40 € d'achat. Conditions valables en France métropolitaine, Corse et Monaco, sous réserve du statut fidélité applicable, pour toute commande sur le site www.nespresso.com/fr, depuis l’application mobile Nespresso ou par téléphone au 0 800 55 52 53 (service & appel gratuits disponibles du lundi au samedi de 8h à 20h, hors jours fériés).","text":"Livraison Click & Collect offerte<br/><span>en boutique Nespresso</span>","loginText":"<a href='#' onclick='window.vtsOpenLoginInCart()'>Connectez-vous</a> pour bénéficier de vos avantages et offres personnalisées","ambassadorText":"Livraison offerte<br/><span>en points de retrait et à domicile toute l'année.</span>"}},"offers":[{"progressType":"caps","endDate":"2026-03-15T22:59Z","productCountingMode":"blacklist","hybrid":true,"priority":50,"completedText":"<strong>Félicitations !</strong> Vous bénéficiez de <strong>-30€</strong> sur tous nos cafés*","name":"JI phase B - Offre Petit PM 03/03-15/03 ","restriction":"customerIds(['22059'])","startText":"Plus que <strong>150 capsules</strong> pour profiter de <strong>-5€</strong> sur tous nos cafés*","modalities":{"label":"*Modalités","text":"(1) Offre valable en France métropolitaine (Corse et Monaco inclus) du 03/03/2026 au 15/03/2026 inclus, exclusivement sur le site internet www.nespresso.com/fr, depuis l’application mobile Nespresso, par téléphone au 0 800 55 52 53 (appels et services gratuits, disponible du lundi au samedi de 8h à 20h, hors 1er mai et jours fériés) ou dans nos boutiques Nespresso (selon jours et horaires d’ouverture de la boutique).  <br><br> Pour tout achat de cent cinquante (150) capsules de la gamme Original et/ou Vertuo**, bénéficiez d’une remise immédiate de 5€ sur le montant de votre commande de café ; ou pour tout achat de deux cents cinquante (250) capsules de la gamme Original et/ou Vertuo**, bénéficiez d’une remise immédiate de 15€ sur le montant de votre commande de café ; ou pour tout achat de quatre cents (400) capsules de la gamme Original et/ou Vertuo**, bénéficiez d’une remise immédiate de 30€ sur le montant de votre commande de café. <br><br> Offre strictement nominative et non transférable, réservée aux Membres du Club Nespresso, limitée à une (1) utilisation par membre du Club Nespresso et non cumulable avec toute autre offre Nespresso en cours. <br><br> **Hors coffrets et assortiments"},"startDate":"2026-03-03T08:00Z","steps":[{"tooltip":"150 capsules","threshold":150,"text":"-5€","progressTexts":{"inProgress":"Plus que <strong>{{remaining}} capsules</strong> pour profiter de <strong>-5€</strong> sur tous nos cafés*"}},{"tooltip":"250 capsules","threshold":250,"text":"-15€","progressTexts":{"inProgress":"Plus que <strong>{{remaining}} capsules</strong> pour profiter de <strong>-15€</strong> sur tous nos cafés*"}},{"tooltip":"400 capsules","threshold":400,"text":"-30€","progressTexts":{"inProgress":"Plus que <strong>{{remaining}} capsules</strong> pour profiter de <strong>-30€</strong> sur tous nos cafés*"}}],"type":"multiStep","products":["KITJOYEUX","KIT100CAPS3","KITGOURMANDOL2","VOLTESSO-120CPS","KIT200CAPS3","DOLCE-120CAPS1","MELOZIO-120CPS","KITGOURMANDSVL","ALTISSIO-120CPS","MN_TSF_COFCAPS","MN_MS_COFCAPS","PETITDEJ_100CAP","RECETTE_100CAP","MO_100CAP","ARPEGGIO_150CAP","ROMA_150CAP","RISTRETT_150CAP","VOLLUTO_150CAP","LIVANTO_150CAP","PARIS_150CAP","NICARAGUA150CAP","SLEEVE_40Y_OL","SLEEVE_40Y_VL","DOL-K-120CAPS1","PETITDEJ100KIT","RECETT100KIT","MO100KIT","ARPEGGIO_150KIT","ROMA150KIT","RISTRETT150CKIT","VOLLUTO_150KIT","LIVANTO150KIT","PARIS_150KIT","NICARAGUA150KIT","VOLTE-K-120CPS","MELO-K-120CPS","ALTI-K-120CPS"]},{"progressType":"caps","endDate":"2026-03-15T22:59Z","productCountingMode":"blacklist","hybrid":true,"priority":50,"completedText":"<strong>Félicitations !</strong> Vous bénéficiez de <strong>-70€</strong> sur tous nos cafés*","name":"JI phase B - Offre Gros PM 03/03-15/03 ","restriction":"customerIds(['22061'])","startText":"Plus que <strong>600 capsules</strong> pour profiter de <strong>-50€</strong> sur tous nos cafés*","modalities":{"label":"*Modalités","text":"(1) Offre valable en France métropolitaine (Corse et Monaco inclus) du 03/03/2026 au 15/03/2026 inclus, exclusivement sur le site internet www.nespresso.com/fr, depuis l’application mobile Nespresso, par téléphone au 0 800 55 52 53 (appels et services gratuits, disponible du lundi au samedi de 8h à 20h, hors 1er mai et jours fériés) ou dans nos boutiques Nespresso (selon jours et horaires d’ouverture de la boutique).<br><br>Pour tout achat de six cents (600) capsules des gammes Original et/ou Vertuo**, bénéficiez d’une remise immédiate de 50€ sur le montant de votre commande de café ; ou pour tout achat de huit cents (800) capsules des gammes Original et/ou Vertuo**, bénéficiez d’une remise immédiate de 70€ sur le montant de votre commande de café.<br><br>Offre strictement nominative et non transférable, réservée aux Membres du Club Nespresso, limitée à une (1) utilisation par membre du Club Nespresso et non cumulable avec toute autre offre Nespresso en cours.<br><br>**Hors coffrets et assortiments"},"startDate":"2026-03-03T08:00Z","steps":[{"tooltip":"600 capsules","threshold":600,"text":"-50€","progressTexts":{"inProgress":"Plus que <strong>{{remaining}} capsules</strong> pour profiter de <strong>-50€</strong> sur tous nos cafés*"}},{"tooltip":"800 capsules","threshold":800,"text":"-70€","progressTexts":{"inProgress":"Plus que <strong>{{remaining}} capsules</strong> pour profiter de <strong>-70€</strong> sur tous nos cafés*"}}],"type":"multiStep","products":["KITJOYEUX","KIT100CAPS3","KITGOURMANDOL2","VOLTESSO-120CPS","KIT200CAPS3","DOLCE-120CAPS1","MELOZIO-120CPS","KITGOURMANDSVL","ALTISSIO-120CPS","MN_TSF_COFCAPS","MN_MS_COFCAPS","PETITDEJ_100CAP","RECETTE_100CAP","MO_100CAP","ARPEGGIO_150CAP","ROMA_150CAP","RISTRETT_150CAP","VOLLUTO_150CAP","LIVANTO_150CAP","PARIS_150CAP","NICARAGUA150CAP","SLEEVE_40Y_OL","SLEEVE_40Y_VL","DOL-K-120CAPS1","PETITDEJ100KIT","RECETT100KIT","MO100KIT","ARPEGGIO_150KIT","ROMA150KIT","RISTRETT150CKIT","VOLLUTO_150KIT","LIVANTO150KIT","PARIS_150KIT","NICARAGUA150KIT","VOLTE-K-120CPS","MELO-K-120CPS","ALTI-K-120CPS"]},{"progressType":"caps","endDate":"2026-03-15T22:59Z","productCountingMode":"blacklist","hybrid":true,"priority":50,"completedText":"<strong>Félicitations !</strong> Vous bénéficiez de <strong>-50€</strong> sur tous nos cafés*","name":"JI phase B - Offre Moyen PM 03/03-15/03 ","restriction":"customerIds(['22060'])","startText":"Plus que <strong>400 capsules</strong> pour profiter de <strong>-30€</strong> sur tous nos cafés*","modalities":{"label":"*Modalités","text":"(1) Offre valable en France métropolitaine (Corse et Monaco inclus) du 03/03/2026 au 15/03/2026 inclus, exclusivement sur le site internet www.nespresso.com/fr, depuis l’application mobile Nespresso, par téléphone au 0 800 55 52 53 (appels et services gratuits, disponible du lundi au samedi de 8h à 20h, hors 1er mai et jours fériés) ou dans nos boutiques Nespresso (selon jours et horaires d’ouverture de la boutique).<br />Pour tout achat de quatre cents (400) capsules des gammes Original et/ou Vertuo**, bénéficiez d’une remise immédiate de 30€ sur le montant de votre commande de café ; ou pour tout achat de six cents (600) capsules des gammes Original et/ou Vertuo**, bénéficiez d’une remise immédiate de 50€ sur le montant de votre commande de café.<br />Offre strictement nominative et non transférable, réservée aux Membres du Club Nespresso, limitée à une (1) utilisation par membre du Club Nespresso et non cumulable avec toute autre offre Nespresso en cours.<br /> **Hors coffrets et assortiments"},"startDate":"2026-03-03T08:00Z","steps":[{"tooltip":"400 capsules","threshold":400,"text":"-30€","progressTexts":{"inProgress":"Plus que <strong>{{remaining}} capsules</strong> pour profiter de <strong>-30€</strong> sur tous nos cafés*"}},{"tooltip":"600 capsules","threshold":600,"text":"-50€","progressTexts":{"inProgress":"Plus que <strong>{{remaining}} capsules</strong> pour profiter de <strong>-50€</strong> sur tous nos cafés*"}}],"type":"multiStep","products":["KITJOYEUX","KIT100CAPS3","KITGOURMANDOL2","VOLTESSO-120CPS","KIT200CAPS3","DOLCE-120CAPS1","MELOZIO-120CPS","KITGOURMANDSVL","ALTISSIO-120CPS","MN_TSF_COFCAPS","MN_MS_COFCAPS","PETITDEJ_100CAP","RECETTE_100CAP","MO_100CAP","ARPEGGIO_150CAP","ROMA_150CAP","RISTRETT_150CAP","VOLLUTO_150CAP","LIVANTO_150CAP","PARIS_150CAP","NICARAGUA150CAP","SLEEVE_40Y_OL","SLEEVE_40Y_VL","DOL-K-120CAPS1","PETITDEJ100KIT","RECETT100KIT","MO100KIT","ARPEGGIO_150KIT","ROMA150KIT","RISTRETT150CKIT","VOLLUTO_150KIT","LIVANTO150KIT","PARIS_150KIT","NICARAGUA150KIT","VOLTE-K-120CPS","MELO-K-120CPS","ALTI-K-120CPS"]}]}</script></div>

<div id="block-8830901048821" class="free-html" data-label=""  >
    <div id="page-builder-ac583ba8-773b-cd88-3d98-61a6f0f8e4c1" class="page-builder-ac583ba8-773b-cd88-3d98-61a6f0f8e4c1"></div>
<style type="text/css">.page-builder-ac583ba8-773b-cd88-3d98-61a6f0f8e4c1:not(:empty) {min-height: 1039px} @media(min-width:768px){.page-builder-ac583ba8-773b-cd88-3d98-61a6f0f8e4c1:not(:empty){min-height: 689px}}</style>
<script id="page-builder-data-ac583ba8-773b-cd88-3d98-61a6f0f8e4c1" type="application/json">{"id":"page-builder-ac583ba8-773b-cd88-3d98-61a6f0f8e4c1","version":"latest","created":"","name":"Footer trop bien","preload":{"nb-footer-logos":{"style":"/shared_res/agility/next-components/footer-logos/v1.1/css/footer-logos.css?1.1.1","modern":"/shared_res/agility/next-components/footer-logos/v1.1/index.es.min.js?1.1.1","deps":["nb-foundations"]},"nb-foundations":{"style":"/shared_res/agility/next-components/foundations/v1.1/css/foundations.css?1.1.1","modern":"/shared_res/agility/next-components/foundations/v1.1/index.es.min.js?1.1.1"},"nb-footer-links":{"style":"/shared_res/agility/next-components/footer-links/v1.1/css/footer-links.css?1.1.2","modern":"/shared_res/agility/next-components/footer-links/v1.1/index.es.min.js?1.1.2","deps":["nb-foundations"]},"nb-footer-bottom":{"style":"/shared_res/agility/next-components/footer-bottom/v1.1/css/footer-bottom.css?1.1.3","modern":"/shared_res/agility/next-components/footer-bottom/v1.1/index.es.min.js?1.1.3","deps":["nb-foundations","nb-dropdown"]},"nb-dropdown":{"style":"/shared_res/agility/next-components/dropdown/v1.1/css/dropdown.css?1.0.0","modern":"/shared_res/agility/next-components/dropdown/v1.1/index.es.min.js?1.0.0"}},"options":{"onlyOriginal":false,"onlyVertuo":false,"onlyPro":false,"onlyXFCards":false,"excludeIE":false,"advanceMode":false,"advanceModeAT":false,"advanceUnMinifyMode":false,"advanceConfigOnlyMode":false,"pdpMode":false,"exportId":"ProductDetails","exportIdVL":"next-v1-vertuo","exportIdOL":"next-v1-original","exportIdPro":"next-v1-pro","exportIdXFCards":"next-v1-xf"},"components":[{"uuid":"nb-footer-logos-0a88a9d3-0ede-ca28-e848-30383fc1ee78","module":"nb-footer-logos","tag":"nb-footer-logos","folder":"/shared_res/agility/next-components/footer-logos/","version":"1.1.1","minHeight":"72","minHeightMobile":"95","variations":[{"index":0,"properties":{"copywriting":{"heading":"Paiement 100% sécurisé","size":"24","is_app_download":"false","is_new_app":false,"items":[{"label":"Mastercard","icon":"logotypes/payment-card/mastercard-card","image":"","link":""},{"label":"Visa","icon":"logotypes/payment-card/visa-card","image":"","link":""},{"label":"Paypal","icon":"logotypes/payment-card/paypal-card","image":"","link":""},{"label":"Apple pay","icon":"logotypes/payment-card/apple-pay-card","image":"","link":""},{"label":"Google pay ","icon":"logotypes/payment-card/google-pay","image":"","link":""}]},"campaign":{"id":"promoid","name":"promoname","creative":"promocreative","position":"before_footer_logos"}},"personalisation":null}]},{"uuid":"nb-footer-links-d90853db-e8a2-c071-16c7-870e69a72be8","module":"nb-footer-links","tag":"nb-footer-links","folder":"/shared_res/agility/next-components/footer-links/","version":"1.1.2","minHeight":"338","minHeightMobile":"260","variations":[{"index":0,"properties":{"copywriting":{"heading":"Bottom page links","columns":[{"heading":"Nos produits","links":[{"label":"Capsules Compostable","link":"https://www.nespresso.com/fr/fr/order/capsules/original/#collection-compostable-original"},{"label":"Capsules de café","link":"https://www.nespresso.com/fr/fr/order/capsules/original"},{"label":"Machine à café","link":"https://www.nespresso.com/fr/fr/order/machines/original  "},{"label":"Accessoires","link":"https://www.nespresso.com/fr/fr/order/accessories/original"},{"label":"Recettes café","link":"https://www.nespresso.com/fr/fr/recettes"},{"label":"Abonnement machines","link":"https://www.nespresso.com/fr/fr/abonnement-machine#/  "},{"label":"Abonnement café","link":"https://www.nespresso.com/fr/fr/abonnement-cafe","target_blank":"false"},{"label":"Nos idées cadeaux","link":"https://www.nespresso.com/fr/fr/nos-idees-cadeaux","target_blank":"false"}]},{"heading":"A propos de Nespresso","links":[{"label":"Boutiques près de chez vous","link":"https://www.nespresso.com/boutiques-fr/nous-trouver"},{"label":"Le club Nespresso","link":"https://www.nespresso.com/fr/fr/programme"},{"label":"Nespresso Agit","link":"https://www.nespresso.com/agit/"},{"label":"Recyclage & compostage","link":"https://www.nespresso.com/agit/ou-deposer-vos-capsules/"},{"label":"Machines reconditionnées","link":"https://www.nespresso.com/fr/fr/machines-reconditionnees-relove  ","target_blank":"true"},{"label":"Nespresso Professionnel","link":"https://www.nespresso.com/pro/fr/fr/","target_blank":"true"},{"label":"Black Friday Nespresso","link":"https://www.nespresso.com/fr/fr/black-friday","target_blank":"true"},{"label":"Promotions Nespresso","link":"https://www.nespresso.com/fr/fr/promotions","target_blank":"true"}]},{"heading":"Assistance","links":[{"label":"FAQ","link":"https://www.nespresso.com/fr/fr/service-faq "},{"label":"Connexion et créer un compte","link":"https://www.nespresso.com/fr/fr/secure/login"},{"label":"Suivi de livraison","link":"https://www.nespresso.com/fr/fr/services-track-and-trace-suivi"},{"label":"Assistance machine","link":"https://www.nespresso.com/fr/fr/service-assistance-machine"},{"label":"Entretien machine","link":"https://www.nespresso.com/fr/fr/assistance-machine#/"},{"label":"Services Nespresso","link":"https://www.nespresso.com/fr/fr/service-customer-care"}]}],"contact":{"heading":"Contact","links":[{"icon":"24/contact/chat","label":"Discutez avec nous","link":"#live-chat","phone":"","sublabel_first_line":"","sublabel_second_line":""},{"icon":"24/contact/phone","label":"Service client","link":"tel:+330800555253","phone":"0800 55 52 53","sublabel_first_line":"Disponible du lundi au samedi de 8h à 20h ","sublabel_second_line":""},{"icon":"24/contact/live-chat","label":"Sourd et malentendants","link":"https://www.nespresso.com/fr/fr/accessibilite-service-clients","target_blank":"true","phone":"","sublabel_first_line":"Nos spécialistes sont à votre disposition pour vous aider.","sublabel_second_line":""}]}},"campaign":{"id":"promoid","name":"promoname","creative":"promocreative","position":"before_footer_links"}},"personalisation":null}]},{"uuid":"nb-footer-logos-71e8f8b8-2488-5f78-3f88-b1cca5e8ff68","module":"nb-footer-logos","tag":"nb-footer-logos","folder":"/shared_res/agility/next-components/footer-logos/","version":"1.1.1","minHeight":"72","minHeightMobile":"95","variations":[{"index":0,"properties":{"copywriting":{"heading":"Découvrez notre application","size":"24","is_app_download":"false","items":[{"label":"Apple","icon":"logotypes/store/apple-black","image":"","link":"https://apps.apple.com/fr/app/nespresso-boutique/id1609639566"},{"label":"Android","icon":"logotypes/store/android-black","image":"","link":"https://play.google.com/store/apps/details?id=com.nestle.nespresso.nespresso&hl=fr"}]},"campaign":{"id":"promoid","name":"promoname","creative":"promocreative","position":"before_footer_logos"},"data-wc-order":"2","id":"nb-footer-logos-52e4819b-e0be-18c5-d9b8-81f83aa87498"},"personalisation":null}]},{"uuid":"nb-footer-bottom-6495d195-7147-3974-f014-ae185c1a2a47","module":"nb-footer-bottom","tag":"nb-footer-bottom","folder":"/shared_res/agility/next-components/footer-bottom/","version":"1.1.3","minHeight":"135","minHeightMobile":"494","variations":[{"index":0,"properties":{"copywriting":{"languages":{"country":{"label_a11y":"Website country location is","label_country":"France","icon":"","location_link":{"label":"Go to country location page","link":"/{market}/{lang}/country"}},"dropdown":{"label_dropdown":"Language","aa_description":"You can select different sorting values from this listbox. To interact with this listbox press SPACE or ENTER key.","aa_listbox_description":"You can navigate through the options using UP or DOWN arrows keys. To exit this listbox press ESCAPE key.","aa_select_description":"To select this option press SPACE or ENTER key."},"langs":[{"code":"en","label":"English"},{"code":"fr","label":"Français"}]},"big_links":[{"label":"Contact","link":"https://www.nespresso.com/fr/fr/service-customer-care"},{"label":"CGV","link":"https://www.nespresso.com/ecom/medias/sys_master/public/46238606196766/07.10.2025-CGV-NESPRESSO-B2C.pdf"},{"label":"Points de vente","link":"https://www.nespresso.com/boutiques-fr/nous-trouver","target_blank":"true"},{"label":"Carrières","link":"https://www.nestle.fr/jobs/search-jobs?keyword=&country=&location=France&career_area=All&company=4441"},{"label":"Espace presse","link":"https://www.nespresso.com/fr/fr/presse"},{"label":"Nos engagements RSE","link":"https://www.nespresso.com/entreprise/"},{"label":"Glossaire","link":"https://www.nespresso.com/fr/fr/glossary"},{"label":"Plan du site","link":"https://www.nespresso.com/fr/fr/plan-du-site"}],"small_links":[{"label":"Mentions légales","link":"https://www.nespresso.com/fr/fr/legal","script":"false"},{"label":"Rétractation","link":"https://www.nespresso.com/ecom/medias/sys_master/public/30164876328990/Formulaire-de-retractation-2024.pdf?","script":"false"},{"label":"Gestion des cookies","link":"https://www.nespresso.com/fr/fr/cookies","script":"true"},{"label":"Politique cookies","link":"https://www.nespresso.com/fr/fr/cookies","script":"false"},{"label":"Accessibilité","link":"https://www.nespresso.com/fr/fr/page-accessibilite?","script":"false"},{"label":"Protection des données","link":"https://www.nespresso.com/fr/fr/politique-protection-des-donnees-personnelles","script":"false"}],"socials":{"heading":"Suivez-nous","links":[{"label":"Facebook","link":"https://www.facebook.com/Nespresso.FR","icon":"logotypes/social/facebook-black"},{"label":"Instagram","link":"https://www.instagram.com/nespresso/","icon":"logotypes/social/instagram-black"},{"label":"LinkedIn","link":"https://www.linkedin.com/company/nestl-nespresso","icon":"logotypes/social/linkedin-black"}]},"page_top":"Haut de la page","homepage_label":"Page d'accueil","copyright":"Nestlé Nespresso S.A.","copyright_a11y":"Copyright","contact":{"telephone":"+33800555253","address":{"street_address":"","address_locality":"","postal_code":""}}},"campaign":{"id":"promoid","name":"promoname","creative":"promocreative","position":"before_footer_bottom"}},"personalisation":null}]},{"uuid":"nb-footer-logos-2ba82e28-19b8-6482-7ff7-11e8a7f1c3ef","module":"nb-footer-logos","tag":"nb-footer-logos","folder":"/shared_res/agility/next-components/footer-logos/","version":"1.1.1","minHeight":"72","minHeightMobile":"95","variations":[{"index":0,"properties":{"copywriting":{"heading":"","size":"64","is_app_download":"false","items":[{"label":"Mastercard","icon":"logotypes/payment-card/mastercard-card","image":"https://www.nespresso.com/ecom/medias/sys_master/public/31949317898270/B-Corp-Logo-Black-RGB.png","link":"https://www.nespresso.com/fr/fr/nos-engagements"}]},"campaign":{"id":"promoid","name":"promoname","creative":"promocreative","position":"before_footer_logos"},"data-wc-order":"4","id":"nb-footer-logos-d8b56428-75f7-85e6-f781-6e887408a2a3"},"personalisation":null}]}]}</script>
<script type="text/javascript">
            window.nwc = window.nwc || {};
            window.nwc.projects = window.nwc.projects || [];
            window.nwc.projects.push(JSON.parse(document.getElementById('page-builder-data-ac583ba8-773b-cd88-3d98-61a6f0f8e4c1').innerHTML));
        </script>
<script type="text/javascript">(function (p, a, g, e, b, u, i, l, d, r) {p[b] = p[b] || {};if (p[b].loading) {return;} else if (p[b].loaded) {p[b].ready();return;};p[b].loading = 1;p[b].ready = function () {p[b].loading = 0;p[b].loaded = 1;p[b].load();};u = a.createElement(g);i = a.getElementsByTagName(g)[0];u.src = e;u.onload = p[b].ready;i.parentNode.insertBefore(u, i);})(window, document, 'script', '/shared_res/agility/page-builder/assets/js/nwc.min.js', 'nwc')</script>
</div>

<div id="block-8819405247989" class="free-html" data-label=""  >
    <!-- 09/03/26 -->
<style>
    .chatbox .idz_btn_fix {
        width: 0px;
        height: 0px;
        position: fixed;
        top: 0;
        left: 0;
        z-index: 9999;
    }
</style>

<!-- START IADVIZE HTML CHAT CALLBACK -->
<div class="chatbox">
    <div class="idz_btn_fix">
        <div id="idzfonline-virtual-agent" style="display: none;"><a href="javascript:void(0)"></a></div>
    </div>
</div>
<!-- END IADVIZE HTML CHAT CALLBACK -->


<!-- START IADVIZE CHAT ASSISTANCE MACHINE CALLBACK -->
<div class="chatbox">
  <div class="idz_btn_fix">
      <div id="idzfonline-assistance-machine" style="display: none;"><a href="javascript:void(0)"></a></div>
  </div>
</div>
<!-- END IADVIZE HTML CHAT CALLBACK -->

<!-- START IADVIZE CHAT  CALLBACK -->
<div class="chatbox">
  <div class="idz_btn_fix">
      <div id="idzfonline-relation-client" style="display: none;"><a href="javascript:void(0)"></a></div>
  </div>
</div>
<!-- END IADVIZE HTML CHAT CALLBACK -->

<script>

  //pushTracking("offer_paper-2023_entree-menu-cafe_collection-compostable","Offer Page Paper 2023");
  function pushTracking(id, name) {
    gtmDataObject.push({
      "event": "promoClick",
      "currencyCode": "EUR",
      "ecommerce": {
        "promoClick": {
          "promotions": [{
            "id": id,
            "name": name,
            "creative": "responsive_menu_pushbanner",
            "position": "basicPageTemplate-header;btg_false"
          }]
        }
      },
      "landscape": "NC2-mosaic",
      "segmentBusiness": "B2C"
    });
    window.location = "https://www.nespresso.com/fr/fr/capsule-compostable";
  }
</script>
<script>

  var dydu = {
    chatbox: {
      togglePopin: function (param) {
        FRGlobalScript.chatbox.open();
      }
    }
  };

  var FRGlobalScript = {
    chatbox: {
      open: function (selector = "#idzfonline-virtual-agent") {
        const element = document.querySelector(selector);

        if (!element) {
          console.error(`### iAdvize:: Élément non trouvé : ${selector}`);
          return;
        }

        element.click()

      },
      openchat:  function (selector = "#idzfonline-relation-client") {
        const element = document.querySelector(selector);

        if (!element) {
          console.error(`### iAdvize:: Élément non trouvé : ${selector}`);
          return;
        }

        element.click()

      },
       openchatmachine:  function (selector = "#idzfonline-assistance-machine") {
        const element = document.querySelector(selector);

        if (!element) {
          console.error(`### iAdvize:: Élément non trouvé : ${selector}`);
          return;
        }

        element.click()

      }
    },

    checkPromoCode: function () {

      var paramID = "code"
      var currentURL = window.location.href
      if (currentURL.indexOf(paramID + "=") > 0) {
        var leftURL = currentURL.substring(currentURL.indexOf(paramID + "=") + paramID.length + 1)
        if (leftURL.indexOf("&") > 0) {
          sessionStorage.setItem('promoCode', leftURL.substring(0, leftURL.indexOf("&")));
        } else {
          sessionStorage.setItem('promoCode', leftURL);
        }
      }

    },

    init: function () {

      this.checkPromoCode();
      //this.chatbox.init();
    }
  };

  $(function () {
    FRGlobalScript.init();
  })

  /*
      On all pages
      Set the version of AB test in localStorage cdcAtVersion
      Set the event of AB test in localStorage cdcAtEvent

      Then, on checkout page
      - check if cdcAtVersion
          - yes -> gtmDataObject = window.gtmDataObject || []; gtmDataObject.push({event from localStorage})
          - no -> set the version of AB test in localStorage cdcAtVersion to 'default', we exclude this user from AB test (perfs)
  */

  // If we did not set the var already
  if (!window.localStorage.getItem('cdcAtVersion')) {
    // listen to the event
    window.addEventListener('abTestShoppingBagModuleRaised', () => {
      // Add to localStorage
      if (window.shoppingBagModuleVersion) {
        var trackingVersion = window.shoppingBagModuleVersion === 'bottom' ? 'B' : 'A'
        window.localStorage.setItem('cdcAtVersion', trackingVersion)
      }
      if (window.shoppingBagModuleEvent) {
        window.localStorage.setItem('cdcAtEvent', JSON.stringify(window.shoppingBagModuleEvent))
      }
    })
  }

</script></div>

<div id="block-8830173828597" class="free-html" data-label=""  >
    <style>
    .n-shipping-bar{
        display:none !important;
    }
</style></div>

<div id="block-8831225484789" class="free-html" data-label=""  >
    <script type="application/json" data-contribution="vts-xsell-cart-v2">
{
  "coveo": {
    "recommendationType": "FrequentlyBoughtTogether",
    "searchHub": "",
    "numberOfResults": 7,
    "productCategoryFilters": ["Capsule"],
    "mode": "allCart"
  },
  "fallback": {
    "enabled": false,
    "productIds": [
      "7921.20",
      "7872.20"
    ]
  },
  "title": "Vous apprécierez également",
  "isMobilePanelClosed": false,
  "useCrossedPrice": false,
  "hideOnAdd": true
}
</script>

<style>
.vtsCartXSell {
  display: none;
}  
</style>

<script type="module">
    ! function() {
    const e = document.createElement("link").relList;
    if (!(e && e.supports && e.supports("modulepreload"))) {
        for (const e of document.querySelectorAll('link[rel="modulepreload"]')) processPreload(e);
        new MutationObserver(e => {
            for (const t of e)
                if ("childList" === t.type)
                    for (const e of t.addedNodes) "LINK" === e.tagName && "modulepreload" === e.rel && processPreload(e)
        }).observe(document, {
            childList: !0,
            subtree: !0
        })
    }

    function processPreload(e) {
        if (e.ep) return;
        e.ep = !0;
        const t = function(e) {
            const t = {};
            return e.integrity && (t.integrity = e.integrity), e.referrerPolicy && (t.referrerPolicy = e.referrerPolicy), "use-credentials" === e.crossOrigin ? t.credentials = "include" : "anonymous" === e.crossOrigin ? t.credentials = "omit" : t.credentials = "same-origin", t
        }(e);
        fetch(e.href, t)
    }
}();
var e = Object.defineProperty,
    __publicField$6 = (t, r, n) => ((t, r, n) => r in t ? e(t, r, {
        enumerable: !0,
        configurable: !0,
        writable: !0,
        value: n
    }) : t[r] = n)(t, "symbol" != typeof r ? r + "" : r, n);
class QuantitySelectorOverflowHandler {
    constructor(e, t) {
        __publicField$6(this, "wrapper"), __publicField$6(this, "options"), __publicField$6(this, "observer"), this.wrapper = e, this.options = t || {}, this.observer = null, this.init()
    }
    init() {
        this.observer = new MutationObserver(() => {
            const e = this.wrapper.querySelector(".QuantitySelector__popin");
            if (!e) return;
            const t = e.classList.contains("QuantitySelector__popin--bottom") ? "bottom" : "top";
            this.updatePosition(e, t), (this.options.scrollParentElement || window).addEventListener("scroll", this.updatePosition.bind(this, e, t))
        }), this.observer.observe(this.wrapper, {
            childList: !0,
            subtree: !0
        })
    }
    updatePosition(e, t = "top") {
        const r = this.wrapper.getBoundingClientRect();
        e.style.setProperty("position", "fixed", "important"), e.style.setProperty("zIndex", "9999", "important"), e.style.setProperty("minWidth", r.width + "px", "important"), "top" === t ? (e.style.setProperty("top", r.bottom - 70 + "px", "important"), e.style.setProperty("left", r.left - 17 + "px", "important")) : (e.style.setProperty("bottom", window.innerHeight - r.top - 55 + "px", "important"), e.style.setProperty("left", r.left - 230 + "px", "important"))
    }
    disconnect() {
        this.observer && this.observer.disconnect()
    }
}
var t = Object.defineProperty,
    __publicField$5 = (e, r, n) => ((e, r, n) => r in e ? t(e, r, {
        enumerable: !0,
        configurable: !0,
        writable: !0,
        value: n
    }) : e[r] = n)(e, "symbol" != typeof r ? r + "" : r, n);
class CoveoRecommendation {
    constructor(e) {
        __publicField$5(this, "coveoApiUrl"), __publicField$5(this, "coveoApiPublicToken"), __publicField$5(this, "numberOfResults"), __publicField$5(this, "recommendationType"), __publicField$5(this, "searchHub"), __publicField$5(this, "productCategoryFilters"), __publicField$5(this, "mode"), this.coveoApiUrl = "https://nespressoproductiong3iqhhz5.org.coveo.com/rest/search/v2", this.coveoApiPublicToken = "xxdde48661-d2b2-4cdc-a240-73f3f7f4ac04", this.recommendationType = e?.recommendationType || "popular", this.numberOfResults = e?.numberOfResults || 5, this.searchHub = e?.searchHub || "Nespresso_FR_Recommendations", this.productCategoryFilters = e?.productCategoryFilters, this.mode = e?.mode || "allCart", window.napi.data().on("cart.update", () => {
            "requestIdleCallback" in window ? requestIdleCallback(async () => await this.getRecommendations(), {
                timeout: 3e3
            }) : setTimeout(async () => await this.getRecommendations(), 3e3)
        })
    }
    async getRecommendations() {
        const e = await this.processCart();
        if (0 !== e.length) try {
            let t = await this.getCoveoResults(e);
            this.productCategoryFilters && this.productCategoryFilters.length > 0 && (t = t.filter(e => this.productCategoryFilters?.includes(e.raw.nes_prd_categories || "")));
            const r = await Promise.all(t.map(async e => await window.napi.catalog().getProduct(e.raw.nes_prd_sku)));
            window.vtsCartXsellRecommandations = r.filter(e => e.inStock)
        } catch (t) {
            console.error("Error fetching Coveo recommendations:", t)
        }
    }
    async processCart() {
        const e = (await window.napi.cart().read()).filter(e => !e.nonRemovable).map(e => e.productId.split("/").pop());
        return "lastProduct" === this.mode ? e.length > 0 ? [e[e.length - 1]] : [] : e
    }
    async getCoveoResults(e) {
        const t = await fetch(this.coveoApiUrl, {
            method: "POST",
            headers: {
                Authorization: `Bearer ${this.coveoApiPublicToken}`,
                "Content-Type": "application/json"
            },
            body: JSON.stringify({
                locale: "fr",
                fieldsToInclude: ["author", "language", "urihash", "objecttype", "collection", "source", "permanentid", "date", "parents", "commontab", "filetype", "nes_prd_sku", "nes_prd_image_url", "nes_prd_categories", "nes_prd_sleeve_main_price", "nes_prd_name", "nes_prd_price", "nes_prd_technology", "faq_question", "faq_answer", "nes_prd_cup_size_oz", "nes_prd_sales_multiple", "nes_prd_cup_size", "nes_prd_unit_quantity", "nes_article_category", "nes_prd_color", "nes_prd_color_css", "nes_prd_usage", "nes_prd_intensity", "nes_prd_quantities", "nes_prd_bundled", "nes_prd_strikethrough_price"],
                recommendation: this.recommendationType,
                mlParameters: {
                    itemIds: e
                },
                numberOfResults: this.numberOfResults,
                searchHub: this.searchHub,
                context: {
                    website: "Nespresso_FR",
                    sitename: "Nespresso_FR",
                    context_website: "Nespresso_FR",
                    context_sitename: "Nespresso_FR",
                    language: "fr",
                    locale: "fr-FR",
                    country: "fr",
                    items: e
                }
            })
        });
        return (await t.json()).results
    }
}
var r = Object.defineProperty,
    __publicField$4 = (e, t, n) => ((e, t, n) => t in e ? r(e, t, {
        enumerable: !0,
        configurable: !0,
        writable: !0,
        value: n
    }) : e[t] = n)(e, "symbol" != typeof t ? t + "" : t, n);
class DesktopProductSlider {
    constructor(e, t, r) {
        __publicField$4(this, "nextButton"), __publicField$4(this, "prevButton"), __publicField$4(this, "scrollContainer"), __publicField$4(this, "productCards"), __publicField$4(this, "scrollTimeout", null), __publicField$4(this, "handleScroll", () => {
            this.scrollTimeout && clearTimeout(this.scrollTimeout), this.scrollTimeout = setTimeout(() => {
                this.updateButtonStatesBasedOnScroll()
            }, 50)
        }), __publicField$4(this, "handleNextClick", () => {
            const e = this.getCardPosition("next"),
                t = this.scrollContainer.scrollHeight - this.scrollContainer.clientHeight;
            this.scrollContainer.scrollTo({
                top: Math.min(e, t),
                behavior: "smooth"
            })
        }), __publicField$4(this, "handlePrevClick", () => {
            const e = this.getCardPosition("prev");
            this.scrollContainer.scrollTo({
                top: Math.max(e, 0),
                behavior: "smooth"
            })
        });
        const n = document.querySelector(e),
            i = document.querySelector(t),
            o = document.querySelector(r);
        if (!n || !i || !o) throw new Error("Required elements not found for DesktopProductSlider");
        this.nextButton = n, this.prevButton = i, this.scrollContainer = o, this.productCards = Array.from(this.scrollContainer.querySelectorAll(".VtsXsellProductCard")), this.init()
    }
    init() {
        this.nextButton.addEventListener("click", this.handleNextClick), this.prevButton.addEventListener("click", this.handlePrevClick), this.scrollContainer.addEventListener("scroll", this.handleScroll, {
            passive: !0
        }), this.updateButtonStatesBasedOnScroll()
    }
    updateButtonStatesBasedOnScroll() {
        requestAnimationFrame(() => {
            const e = this.scrollContainer.scrollTop,
                t = this.scrollContainer.scrollHeight,
                r = e <= 20,
                n = e + this.scrollContainer.clientHeight >= t - 20;
            this.prevButton.style.opacity = r ? "0" : "1", this.prevButton.style.pointerEvents = r ? "none" : "auto", this.nextButton.style.opacity = n ? "0" : "1", this.nextButton.style.pointerEvents = n ? "none" : "auto"
        })
    }
    getCardScrollAmount() {
        if (0 === this.productCards.length) return .3 * this.scrollContainer.clientHeight;
        const e = this.productCards[0],
            t = e.getBoundingClientRect(),
            r = getComputedStyle(e),
            n = parseFloat(r.marginTop) || 0,
            i = parseFloat(r.marginBottom) || 0,
            o = t.height + n + i;
        return Math.max(o, 180)
    }
    getCardPosition(e) {
        const t = this.scrollContainer.getBoundingClientRect(),
            r = this.scrollContainer.scrollTop;
        let n = null;
        for (let i = 0; i < this.productCards.length; i++) {
            const o = this.productCards[i],
                s = o.getBoundingClientRect(),
                a = s.top - t.top + r + s.height / 2,
                l = r + t.height / 2;
            if ("next" === e) {
                if (a > l + 50) {
                    n = o;
                    break
                }
            } else a < l - 50 && (n = o)
        }
        if (n) {
            const e = n.getBoundingClientRect(),
                i = e.top - t.top + r + e.height / 2,
                o = t.height / 2;
            return Math.max(0, i - o)
        }
        return "next" === e ? r + this.getCardScrollAmount() : r - this.getCardScrollAmount()
    }
    destroy() {
        this.nextButton.removeEventListener("click", this.handleNextClick), this.prevButton.removeEventListener("click", this.handlePrevClick), this.scrollContainer.removeEventListener("scroll", this.handleScroll), this.scrollTimeout && (clearTimeout(this.scrollTimeout), this.scrollTimeout = null)
    }
}
var n = Object.defineProperty,
    __publicField$3 = (e, t, r) => ((e, t, r) => t in e ? n(e, t, {
        enumerable: !0,
        configurable: !0,
        writable: !0,
        value: r
    }) : e[t] = r)(e, "symbol" != typeof t ? t + "" : t, r);
class XsellCleanupManager {
    constructor() {
        __publicField$3(this, "desktopProductSlider", null), __publicField$3(this, "mobileProductSlider", null), __publicField$3(this, "quantityHandlers", []), __publicField$3(this, "teleportMobileQuantityHandler", null), __publicField$3(this, "trackingHandler", null)
    }
    setDesktopProductSlider(e) {
        this.desktopProductSlider = e
    }
    setMobileProductSlider(e) {
        this.mobileProductSlider = e
    }
    addQuantityHandler(e) {
        this.quantityHandlers.push(e)
    }
    setTeleportMobileQuantityHandler(e) {
        this.teleportMobileQuantityHandler = e
    }
    setTrackingHandler(e) {
        this.trackingHandler = e
    }
    destroy() {
        this.desktopProductSlider && (this.desktopProductSlider.destroy(), this.desktopProductSlider = null), this.mobileProductSlider && (this.mobileProductSlider.destroy(), this.mobileProductSlider = null), this.teleportMobileQuantityHandler && (this.teleportMobileQuantityHandler.destroy(), this.teleportMobileQuantityHandler = null);
        for (const e of this.quantityHandlers) e.disconnect();
        this.trackingHandler && (this.trackingHandler.destroy(), this.trackingHandler = null)
    }
}
var i = Object.defineProperty,
    __publicField$2 = (e, t, r) => ((e, t, r) => t in e ? i(e, t, {
        enumerable: !0,
        configurable: !0,
        writable: !0,
        value: r
    }) : e[t] = r)(e, "symbol" != typeof t ? t + "" : t, r);
class MobileProductSlider {
    constructor(e, t, r) {
        __publicField$2(this, "currentIndex", 0), __publicField$2(this, "scrollContainer", null), __publicField$2(this, "prevButton", null), __publicField$2(this, "nextButton", null), __publicField$2(this, "productCards", []), __publicField$2(this, "handleScroll", () => {
            if (!this.scrollContainer) return;
            const e = this.scrollContainer.offsetWidth;
            this.currentIndex = Math.round(this.scrollContainer.scrollLeft / e), this.updateButtonStates()
        }), __publicField$2(this, "handlePrevClick", () => {
            this.currentIndex > 0 && this.scrollToCard(this.currentIndex - 1)
        }), __publicField$2(this, "handleNextClick", () => {
            this.currentIndex < this.productCards.length - 1 && this.scrollToCard(this.currentIndex + 1)
        }), this.init(r, e, t)
    }
    init(e, t, r) {
        this.scrollContainer = document.querySelector(e), this.prevButton = document.querySelector(t), this.nextButton = document.querySelector(r), this.productCards = Array.from(document.querySelectorAll(".VtsXsellProductRow")), this.scrollContainer && this.prevButton && this.nextButton && 0 !== this.productCards.length ? (this.bindEvents(), this.updateButtonStates()) : console.warn("MobileProductSlider: can't be initialized due to missing elements")
    }
    bindEvents() {
        this.prevButton?.addEventListener("click", this.handlePrevClick), this.nextButton?.addEventListener("click", this.handleNextClick), this.scrollContainer?.addEventListener("scroll", this.handleScroll, {
            passive: !0
        })
    }
    scrollToCard(e) {
        if (!this.scrollContainer) return;
        const t = e * this.scrollContainer.offsetWidth;
        this.scrollContainer.scrollTo({
            left: t,
            behavior: "smooth"
        })
    }
    updateButtonStates() {
        this.prevButton && this.nextButton && (this.prevButton.disabled = 0 === this.currentIndex, this.nextButton.disabled = this.currentIndex >= this.productCards.length - 1, this.prevButton.style.opacity = this.prevButton.disabled ? "0.5" : "1", this.nextButton.style.opacity = this.nextButton.disabled ? "0.5" : "1")
    }
    getCurrentIndex() {
        return this.currentIndex
    }
    getCurrentViewedElement() {
        return 0 === this.productCards.length ? null : this.productCards[this.currentIndex] || null
    }
    destroy() {
        this.prevButton?.removeEventListener("click", this.handlePrevClick), this.nextButton?.removeEventListener("click", this.handleNextClick), this.scrollContainer?.removeEventListener("scroll", this.handleScroll), this.scrollContainer = null, this.prevButton = null, this.nextButton = null
    }
}
const o = [{
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtcmlzdHJldHRv",
        icon: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M16 8.99994H15.7809L16.0811 6.99994H5.91943L7.37744 16.7226C7.48926 17.4628 8.11328 17.9999 8.86133 17.9999H13.1387C13.876 17.9999 14.5137 17.4511 14.6221 16.7226L15.1057 13.4999H16C18.1748 13.4999 18.5 12.0898 18.5 11.2499C18.5 10.4101 18.1748 8.99994 16 8.99994ZM13.1387 16.9999H8.86133C8.61572 16.9999 8.40332 16.8163 8.3667 16.5742L7.90558 13.4999H14.0945L13.6338 16.5742C13.5967 16.8173 13.3848 16.9999 13.1387 16.9999ZM14.2445 12.4999H7.75555L7.08057 7.99994H14.919L14.2445 12.4999ZM16 12.4999H15.2557L15.6309 9.99994H16C17.3184 9.99994 17.5 10.6005 17.5 11.2499C17.5 11.8993 17.3184 12.4999 16 12.4999Z" fill="#17171A"/></svg>',
        name: "Ristretto"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtZXNwcmVzc28=",
        icon: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M16 8.99994H15.7809L16.0811 6.99994H5.91943L7.37744 16.7226C7.48926 17.4628 8.11328 17.9999 8.86133 17.9999H13.1387C13.876 17.9999 14.5137 17.4511 14.6221 16.7226L15.1057 13.4999H16C18.1748 13.4999 18.5 12.0898 18.5 11.2499C18.5 10.4101 18.1748 8.99994 16 8.99994ZM14.919 7.99994L14.6192 9.99994H7.38055L7.08056 7.99994H14.919ZM13.6338 16.5742C13.5967 16.8173 13.3848 16.9999 13.1387 16.9999H8.86133C8.61572 16.9999 8.40332 16.8163 8.3667 16.5742L7.53058 10.9999H14.4693L13.6338 16.5742ZM16 12.4999H15.2557L15.6309 9.99994H16C17.3184 9.99994 17.5 10.6005 17.5 11.2499C17.5 11.8993 17.3184 12.4999 16 12.4999Z" fill="#17171A"/></svg>',
        name: "Espresso"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtbHVuZ28=",
        icon: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M17.6202 8.00861L18.083 4.99994H4.91699L6.87549 17.7285C6.98926 18.4648 7.61279 18.9999 8.35791 18.9999H14.6416C15.3877 18.9999 16.0117 18.4648 16.125 17.7285L16.8524 12.9999H17.5C19.9795 12.9999 20.5 11.6406 20.5 10.4999C20.5 9.3797 19.9871 8.05585 17.6202 8.00861ZM16.917 5.99994L16.6121 7.98236H6.38794L6.08301 5.99994H16.917ZM15.1367 17.5761C15.0986 17.8212 14.8906 17.9999 14.6416 17.9999H8.35791C8.10937 17.9999 7.90186 17.8212 7.86377 17.5761L6.54181 8.98236H16.4583L15.1367 17.5761ZM17.5 11.9999H17.0062L17.4677 8.99994H17.5C19.2578 8.99994 19.5 9.72064 19.5 10.4999C19.5 11.2792 19.2578 11.9999 17.5 11.9999Z" fill="#17171A"/></svg>',
        name: "Lungo"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtQ2FwcHVjY2luby1BbmQtTGF0dGUtTWFjY2hpYXRv",
        icon: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M17.6202 10.0087L17.7753 9H16.7632L15.1367 19.5762C15.0986 19.8213 14.8906 20 14.6416 20H8.35791C8.10937 20 7.90186 19.8213 7.86377 19.5762L6.23682 9H5.22473L6.87549 19.7285C6.98926 20.4648 7.61279 21 8.35791 21H14.6416C15.3877 21 16.0117 20.4648 16.125 19.7285L16.8524 15H17.5C19.9795 15 20.5 13.6406 20.5 12.5C20.5 11.3798 19.9871 10.0559 17.6202 10.0087ZM17.5 14H17.0062L17.4677 11H17.5C19.2578 11 19.5 11.7207 19.5 12.5C19.5 13.2793 19.2578 14 17.5 14Z" fill="#17171A"/><path d="M18 8V7.5C18 6.75293 17.708 5.5 15.75 5.5C15.4335 5.5 15.1743 5.54187 14.939 5.59991C14.2742 4.60455 13.0591 4 11.5 4C9.94092 4 8.72577 4.60461 8.06097 5.59998C7.82568 5.54187 7.56653 5.5 7.25 5.5C5.29248 5.5 5 6.75293 5 7.5V8H18Z" fill="#17171A"/><path d="M8.01709 14H14.9824L15.752 9H7.24805L8.01709 14Z" fill="#17171A"/></svg>',
        name: "Recette"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtaWNlZFJlY2lwZQ==",
        icon: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.6553 9.14747L11.5581 7.84571L10.2563 10.9414L13.3516 12.2432L14.6553 9.14747ZM12.8184 10.9336L11.5659 10.4072L12.0928 9.15528L13.3447 9.68165L12.8184 10.9336Z" fill="#17171A"/><path d="M13.2266 16.459L11.958 13.3486L8.84815 14.6162L10.1172 17.7266L13.2266 16.459ZM11.4102 14.6514L11.9233 15.9102L10.665 16.4238L10.1519 15.165L11.4102 14.6514Z" fill="#17171A"/><path d="M14.9239 3.98194L15.1455 3.14942L19.082 2.49317L18.918 1.50684L14.3447 2.26856L13.8888 3.98194H6.34521L5.59717 7.00001H6.2038L7.16748 19.6143C7.22656 20.3916 7.8833 21 8.6626 21H14.332C15.1035 21 15.7451 20.4199 15.8242 19.6484L17.0884 7.00001H17.875L17.1279 3.98194H14.9239ZM6.87549 6.00001L7.12744 4.98194H13.6227L13.3518 6.00001H6.87549ZM14.8301 19.5479C14.8037 19.8057 14.5889 20 14.332 20H8.6626C8.40283 20 8.18408 19.7969 8.16455 19.5381L7.20697 7.00001H16.0836L14.8301 19.5479ZM14.387 6.00001L14.6578 4.98194H16.3447L16.5977 6.00001H14.387Z" fill="#17171A"/></svg>',
        name: "Recette glacée"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtZXNwcmVzc28tdmVydHVv",
        icon: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M16.5 8.99994H16V6.99994H6V15.4999C6 16.8788 7.12158 17.9999 8.5 17.9999H13.5C14.8789 17.9999 16 16.8788 16 15.4999V13.9999H16.5C17.709 13.9999 19 13.3427 19 11.4999C19 9.65717 17.709 8.99994 16.5 8.99994ZM15 7.99994V10.9999H7V7.99994H15ZM15 15.4999C15 16.3271 14.3272 16.9999 13.5 16.9999H8.5C7.67285 16.9999 7 16.3271 7 15.4999V11.9999H15V15.4999ZM16.5 12.9999H16V9.99994H16.5C17.1846 9.99994 18 10.2597 18 11.4999C18 12.7402 17.1846 12.9999 16.5 12.9999Z" fill="#17171A"/></svg>',
        name: "Espresso"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtZG91YmxlLWVzcHJlc3NvLXZlcnR1bw==",
        icon: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M18.5 7.99994H18V5.99994H5V15.4999C5 16.8788 6.12158 17.9999 7.5 17.9999H15.5C16.8789 17.9999 18 16.8788 18 15.4999V12.9999H18.5C19.709 12.9999 21 12.3427 21 10.4999C21 8.65717 19.709 7.99994 18.5 7.99994ZM17 6.99994V9.99994H6V6.99994H17ZM17 15.4999C17 16.3271 16.3272 16.9999 15.5 16.9999H7.5C6.67285 16.9999 6 16.3271 6 15.4999V10.9999H17V15.4999ZM18.5 11.9999H18V8.99994H18.5C19.1846 8.99994 20 9.25971 20 10.4999C20 11.7402 19.1846 11.9999 18.5 11.9999Z" fill="#17171A"/></svg>',
        name: "Double Espresso"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtZ3Jhbi1sdW5nbw==",
        icon: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M18 8.99994V4.99994H5V17.4999C5 18.8788 6.12158 19.9999 7.5 19.9999H15.5C16.8789 19.9999 18 18.8788 18 17.4999V14.9999C19.4502 14.9999 21 14.2118 21 11.9999C21 9.78803 19.4502 8.99994 18 8.99994ZM17 5.99994V8.99994H6V5.99994H17ZM15.5 18.9999H7.5C6.67285 18.9999 6 18.3271 6 17.4999V9.99994H17V17.4999C17 18.3271 16.3272 18.9999 15.5 18.9999ZM18 13.9999V9.99994C18.9121 9.99994 20 10.3466 20 11.9999C20 13.6533 18.9121 13.9999 18 13.9999Z" fill="#17171A"/></svg>',
        name: "Gran Lungo"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtY29mZmVl",
        icon: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M18.5 7H18V3H5V19.5C5 20.9 6.1 22 7.5 22H15.5C16.9 22 18 20.9 18 19.5V13H18.5C20 13 21.5 12.2 21.5 10C21.5 7.8 20 7 18.5 7ZM17 4V7H6V4H17ZM15.5 21H7.5C6.7 21 6 20.3 6 19.5V8H17V19.5C17 20.3 16.3 21 15.5 21ZM18.5 12H18V8H18.5C19.4 8 20.5 8.3 20.5 10C20.5 11.7 19.4 12 18.5 12Z" fill="#17171A"/></svg>',
        name: "Mug"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtRG91YmxlLUNhcHB1Y2Npbm8=",
        icon: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M18 6V5.5C18 4.75293 17.708 3.5 15.75 3.5C15.2494 3.5 14.8604 3.58337 14.5546 3.71777C13.9802 2.66235 12.8874 2 11.5 2C10.1125 2 9.01978 2.66248 8.44537 3.7179C8.13965 3.58344 7.75055 3.5 7.25 3.5C5.29248 3.5 5 4.75293 5 5.5V6H18Z" fill="#17171A"/><path d="M16 7H7V15H16V7Z" fill="#17171A"/><path d="M18.5 9H18V7H17V20.5C17 21.3272 16.3272 22 15.5 22H7.5C6.67285 22 6 21.3272 6 20.5V7H5V20.5C5 21.8789 6.12158 23 7.5 23H15.5C16.8789 23 18 21.8789 18 20.5V15H18.5C19.9502 15 21.5 14.2119 21.5 12C21.5 9.78809 19.9502 9 18.5 9ZM18.5 14H18V10H18.5C19.4121 10 20.5 10.3472 20.5 12C20.5 13.6533 19.4121 14 18.5 14Z" fill="#17171A"/></svg>',
        name: "Recette"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtUmV2ZXJzbw==",
        icon: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M18 6V5.5C18 4.75293 17.708 3.5 15.75 3.5C15.2494 3.5 14.8604 3.58337 14.5546 3.71777C13.9802 2.66235 12.8874 2 11.5 2C10.1125 2 9.01978 2.66248 8.44537 3.7179C8.13965 3.58344 7.75055 3.5 7.25 3.5C5.29248 3.5 5 4.75293 5 5.5V6H18Z" fill="#17171A"/><path d="M16 7H7V15H16V7Z" fill="#17171A"/><path d="M18.5 9H18V7H17V20.5C17 21.3272 16.3272 22 15.5 22H7.5C6.67285 22 6 21.3272 6 20.5V7H5V20.5C5 21.8789 6.12158 23 7.5 23H15.5C16.8789 23 18 21.8789 18 20.5V15H18.5C19.9502 15 21.5 14.2119 21.5 12C21.5 9.78809 19.9502 9 18.5 9ZM18.5 14H18V10H18.5C19.4121 10 20.5 10.3472 20.5 12C20.5 13.6533 19.4121 14 18.5 14Z" fill="#17171A"/></svg>',
        name: "Recette"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtaWNlZFJlY2lwZS12ZXJ0dW8=",
        icon: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.6553 9.14747L11.5581 7.84571L10.2563 10.9414L13.3516 12.2432L14.6553 9.14747ZM12.8184 10.9336L11.5659 10.4072L12.0928 9.15528L13.3447 9.68165L12.8184 10.9336Z" fill="#17171A"/><path d="M13.2266 16.459L11.958 13.3486L8.84815 14.6162L10.1172 17.7266L13.2266 16.459ZM11.4102 14.6514L11.9233 15.9102L10.665 16.4238L10.1519 15.165L11.4102 14.6514Z" fill="#17171A"/><path d="M14.9239 3.98194L15.1455 3.14942L19.082 2.49317L18.918 1.50684L14.3447 2.26856L13.8888 3.98194H6.34521L5.59717 7.00001H6.2038L7.16748 19.6143C7.22656 20.3916 7.8833 21 8.6626 21H14.332C15.1035 21 15.7451 20.4199 15.8242 19.6484L17.0884 7.00001H17.875L17.1279 3.98194H14.9239ZM6.87549 6.00001L7.12744 4.98194H13.6227L13.3518 6.00001H6.87549ZM14.8301 19.5479C14.8037 19.8057 14.5889 20 14.332 20H8.6626C8.40283 20 8.18408 19.7969 8.16455 19.5381L7.20697 7.00001H16.0836L14.8301 19.5479ZM14.387 6.00001L14.6578 4.98194H16.3447L16.5977 6.00001H14.387Z" fill="#17171A"/></svg>',
        name: "Recette glacée"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtcmlzdHJldHRvLXZlcnR1bw==",
        icon: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M16.5 9H16V7H6V15.5C6 16.8789 7.12158 18 8.5 18H13.5C14.8789 18 16 16.8789 16 15.5V14H16.5C17.709 14 19 13.3428 19 11.5C19 9.65723 17.709 9 16.5 9ZM15 8V13H7V8H15ZM15 15.5C15 16.3272 14.3272 17 13.5 17H8.5C7.67285 17 7 16.3272 7 15.5V14H15V15.5ZM16.5 13H16V10H16.5C17.1846 10 18 10.2598 18 11.5C18 12.7402 17.1846 13 16.5 13Z" fill="#17171A"/></svg>',
        name: "Ristretto"
    }],
    s = [{
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtcmlzdHJldHRv",
        icon: "cup-original-ristretto",
        name: "Ristretto"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtZXNwcmVzc28=",
        icon: "cup-original-espresso",
        name: "Espresso"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtbHVuZ28=",
        icon: "cup-original-lungo",
        name: "Lungo"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtQ2FwcHVjY2luby1BbmQtTGF0dGUtTWFjY2hpYXRv",
        icon: "cup-original-recipe",
        name: "Recette"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtaWNlZFJlY2lwZQ==",
        icon: "cup-frozen-recipe",
        name: "Recette glacée"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtZXNwcmVzc28tdmVydHVv",
        icon: "cup-vertuo-espresso",
        name: "Espresso"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtZG91YmxlLWVzcHJlc3NvLXZlcnR1bw==",
        icon: "cup-vertuo-double-espresso",
        name: "Double Espresso"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtZ3Jhbi1sdW5nbw==",
        icon: "cup-vertuo-lungo",
        name: "Gran Lungo"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtY29mZmVl",
        icon: "cup-vertuo-mug",
        name: "Mug"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtRG91YmxlLUNhcHB1Y2Npbm8=",
        icon: "cup-vertuo-recipe",
        name: "Recette"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtUmV2ZXJzbw==",
        icon: "cup-vertuo-recipe",
        name: "Recette"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtaWNlZFJlY2lwZS12ZXJ0dW8=",
        icon: "cup-frozen-recipe",
        name: "Recette glacée"
    }, {
        id: "bmVzY2x1YjIuZnIuYjJjL2NhdC9jYXBzdWxlLWN1cFNpemUtcmlzdHJldHRvLXZlcnR1bw==",
        icon: "cup-vertuo-ristretto",
        name: "Ristretto"
    }];
var a = Object.defineProperty,
    __publicField$1 = (e, t, r) => ((e, t, r) => t in e ? a(e, t, {
        enumerable: !0,
        configurable: !0,
        writable: !0,
        value: r
    }) : e[t] = r)(e, t + "", r);
const l = "add-to-bag-teleported";
class TeleportMobileQuantitySelector {
    constructor(e, t) {
        __publicField$1(this, "observer", null), this.observer = new MutationObserver(() => {
            if (window.innerWidth >= 768) return;
            const e = document.getElementById("QuantitySelector__wrapper");
            if (!document.contains(e)) return void[...document.querySelectorAll("." + l)].map(e => {
                const t = e.parentNode;
                t && t.removeChild(e)
            });
            if (document.querySelectorAll("." + l).length > 0) return;
            let r = null;
            e && (r = e.closest(".add-to-bag")), null !== r && (r.classList.add(l), [...r.querySelectorAll(".AddToBagButton")].map(e => {
                e instanceof HTMLElement && (e.style.display = "none")
            }), r.nextElementSibling instanceof HTMLElement && (r.nextElementSibling.style.display = "inline-block", window.mosaic.initializeAllFreeHTMLModules(r.nextElementSibling.parentElement)), (t.teleportToElement || document.body).appendChild(r))
        }), this.observer.observe(e, {
            attributes: !1,
            childList: !0,
            characterData: !1,
            subtree: !0
        })
    }
    destroy() {
        this.observer && this.observer.disconnect()
    }
}
const usePromotions = async (e, t, r) => {
    let n;
    if (window && window.vtsPromotions) {
        const t = new Date,
            i = window.vtsPromotions[e]?.filter(e => {
                const r = new Date(e.start),
                    n = new Date(e.end);
                return t >= r && t <= n
            }) || [];
        if (i && i.length > 0)
            for (const e of i)
                if (!(e.onlyOnPages && e.onlyOnPages.length > 0) || e.onlyOnPages.includes(window.location.pathname)) {
                    if (!e.restriction) {
                        n = e;
                        break
                    }
                    if (await r(e.restriction)) {
                        n = e;
                        break
                    }
                }
    }
    return n ? "percent" === n.promoType ? Math.round(t * (1 - n.promoValue) * 100) / 100 : "amount" === n.promoType ? t - n.promoValue : n.promoValue : t
};

function getDefaultExportFromCjs(e) {
    return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e
}
var c, u = {
        exports: {}
    },
    d = {
        exports: {}
    };

function requireInteropRequireDefault() {
    return c || (c = 1, (e = d).exports = function(e) {
        return e && e.__esModule ? e : {
            default: e
        }
    }, e.exports.__esModule = !0, e.exports.default = e.exports), d.exports;
    var e
}
var p, h = {
        exports: {}
    },
    m = {
        exports: {}
    },
    f = {
        exports: {}
    };

function require_typeof() {
    return p || (p = 1, function(e) {
        function _typeof2(t) {
            return e.exports = _typeof2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                return typeof e
            } : function(e) {
                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
            }, e.exports.__esModule = !0, e.exports.default = e.exports, _typeof2(t)
        }
        e.exports = _typeof2, e.exports.__esModule = !0, e.exports.default = e.exports
    }(f)), f.exports
}
var v, _, y, g = {
    exports: {}
};

function requireToPropertyKey() {
    return _ || (_ = 1, e = m, t = require_typeof().default, r = function() {
        return v || (v = 1, e = g, t = require_typeof().default, e.exports = function(e, r) {
            if ("object" != t(e) || !e) return e;
            var n = e[Symbol.toPrimitive];
            if (void 0 !== n) {
                var i = n.call(e, r || "default");
                if ("object" != t(i)) return i;
                throw new TypeError("@@toPrimitive must return a primitive value.")
            }
            return ("string" === r ? String : Number)(e)
        }, e.exports.__esModule = !0, e.exports.default = e.exports), g.exports;
        var e, t
    }(), e.exports = function(e) {
        var n = r(e, "string");
        return "symbol" == t(n) ? n : n + ""
    }, e.exports.__esModule = !0, e.exports.default = e.exports), m.exports;
    var e, t, r
}
var b, w = {
    exports: {}
};

function requireClassCallCheck() {
    return b || (b = 1, (e = w).exports = function(e, t) {
        if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
    }, e.exports.__esModule = !0, e.exports.default = e.exports), w.exports;
    var e
}
var x, C = {
    exports: {}
};

function requireCreateClass() {
    return x || (x = 1, function(e) {
        var t = requireToPropertyKey();

        function _defineProperties(e, r) {
            for (var n = 0; n < r.length; n++) {
                var i = r[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, t(i.key), i)
            }
        }
        e.exports = function(e, t, r) {
            return t && _defineProperties(e.prototype, t), r && _defineProperties(e, r), Object.defineProperty(e, "prototype", {
                writable: !1
            }), e
        }, e.exports.__esModule = !0, e.exports.default = e.exports
    }(C)), C.exports
}
var S, L, V = {},
    k = {
        exports: {}
    },
    H = {
        exports: {}
    },
    P = {
        exports: {}
    };

function requireArrayLikeToArray() {
    return S || (S = 1, (e = P).exports = function(e, t) {
        (null == t || t > e.length) && (t = e.length);
        for (var r = 0, n = Array(t); r < t; r++) n[r] = e[r];
        return n
    }, e.exports.__esModule = !0, e.exports.default = e.exports), P.exports;
    var e
}
var M, j = {
    exports: {}
};
var B, I = {
    exports: {}
};
var X, E, T, A, Z, Y, N, O = {
    exports: {}
};

function requireToConsumableArray() {
    return E || (E = 1, e = k, t = function() {
        return L || (L = 1, e = H, t = requireArrayLikeToArray(), e.exports = function(e) {
            if (Array.isArray(e)) return t(e)
        }, e.exports.__esModule = !0, e.exports.default = e.exports), H.exports;
        var e, t
    }(), r = function() {
        return M || (M = 1, (e = j).exports = function(e) {
            if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"]) return Array.from(e)
        }, e.exports.__esModule = !0, e.exports.default = e.exports), j.exports;
        var e
    }(), n = function() {
        return B || (B = 1, e = I, t = requireArrayLikeToArray(), e.exports = function(e, r) {
            if (e) {
                if ("string" == typeof e) return t(e, r);
                var n = {}.toString.call(e).slice(8, -1);
                return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ? Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? t(e, r) : void 0
            }
        }, e.exports.__esModule = !0, e.exports.default = e.exports), I.exports;
        var e, t
    }(), i = function() {
        return X || (X = 1, (e = O).exports = function() {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }, e.exports.__esModule = !0, e.exports.default = e.exports), O.exports;
        var e
    }(), e.exports = function(e) {
        return t(e) || r(e) || n(e) || i()
    }, e.exports.__esModule = !0, e.exports.default = e.exports), k.exports;
    var e, t, r, n, i
}

function requireEvaluator() {
    if (Z) return A;
    Z = 1;
    var e = requireInteropRequireDefault(),
        t = e(requireClassCallCheck()),
        r = e(requireCreateClass()),
        n = function() {
            if (T) return V;
            T = 1;
            var e = requireInteropRequireDefault()(requireToConsumableArray()),
                t = {
                    functions: "Jexl Function",
                    transforms: "Transform"
                };
            return V.ArrayLiteral = function(e) {
                return this.evalArray(e.value)
            }, V.BinaryExpression = function(e) {
                var t = this,
                    r = this._grammar.elements[e.operator];
                if (r.evalOnDemand) {
                    var wrap = function(e) {
                        return {
                            eval: function() {
                                return t.eval(e)
                            }
                        }
                    };
                    return r.evalOnDemand(wrap(e.left), wrap(e.right))
                }
                return this.Promise.all([this.eval(e.left), this.eval(e.right)]).then(function(e) {
                    return r.eval(e[0], e[1])
                })
            }, V.ConditionalExpression = function(e) {
                var t = this;
                return this.eval(e.test).then(function(r) {
                    return r ? e.consequent ? t.eval(e.consequent) : r : t.eval(e.alternate)
                })
            }, V.FilterExpression = function(e) {
                var t = this;
                return this.eval(e.subject).then(function(r) {
                    return e.relative ? t._filterRelative(r, e.expr) : t._filterStatic(r, e.expr)
                })
            }, V.Identifier = function(e) {
                return e.from ? this.eval(e.from).then(function(t) {
                    if (null != t) return Array.isArray(t) && (t = t[0]), t[e.value]
                }) : e.relative ? this._relContext[e.value] : this._context[e.value]
            }, V.Literal = function(e) {
                return e.value
            }, V.ObjectLiteral = function(e) {
                return this.evalMap(e.value)
            }, V.FunctionCall = function(r) {
                var n = t[r.pool];
                if (!n) throw new Error("Corrupt AST: Pool '".concat(r.pool, "' not found"));
                var i = this._grammar[r.pool][r.name];
                if (!i) throw new Error("".concat(n, " ").concat(r.name, " is not defined."));
                return this.evalArray(r.args || []).then(function(t) {
                    return i.apply(void 0, (0, e.default)(t))
                })
            }, V.UnaryExpression = function(e) {
                var t = this;
                return this.eval(e.right).then(function(r) {
                    return t._grammar.elements[e.operator].eval(r)
                })
            }, V
        }(),
        i = function() {
            function Evaluator2(e, r, n) {
                var i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : Promise;
                (0, t.default)(this, Evaluator2), this._grammar = e, this._context = r || {}, this._relContext = n || this._context, this.Promise = i
            }
            return (0, r.default)(Evaluator2, [{
                key: "eval",
                value: function(e) {
                    var t = this;
                    return this.Promise.resolve().then(function() {
                        return n[e.type].call(t, e)
                    })
                }
            }, {
                key: "evalArray",
                value: function(e) {
                    var t = this;
                    return this.Promise.all(e.map(function(e) {
                        return t.eval(e)
                    }))
                }
            }, {
                key: "evalMap",
                value: function(e) {
                    var t = this,
                        r = Object.keys(e),
                        n = {},
                        i = r.map(function(r) {
                            return t.eval(e[r])
                        });
                    return this.Promise.all(i).then(function(e) {
                        return e.forEach(function(e, t) {
                            n[r[t]] = e
                        }), n
                    })
                }
            }, {
                key: "_filterRelative",
                value: function(e, t) {
                    var r = this,
                        n = [];
                    return Array.isArray(e) || (e = void 0 === e ? [] : [e]), e.forEach(function(e) {
                        var i = new Evaluator2(r._grammar, r._context, e, r.Promise);
                        n.push(i.eval(t))
                    }), this.Promise.all(n).then(function(t) {
                        var r = [];
                        return t.forEach(function(t, n) {
                            t && r.push(e[n])
                        }), r
                    })
                }
            }, {
                key: "_filterStatic",
                value: function(e, t) {
                    return this.eval(t).then(function(t) {
                        return "boolean" == typeof t ? t ? e : void 0 : e[t]
                    })
                }
            }]), Evaluator2
        }();
    return A = i
}
var q, R = {};

function requireHandlers() {
    return q || (q = 1, R.argVal = function(e) {
        e && this._cursor.args.push(e)
    }, R.arrayStart = function() {
        this._placeAtCursor({
            type: "ArrayLiteral",
            value: []
        })
    }, R.arrayVal = function(e) {
        e && this._cursor.value.push(e)
    }, R.binaryOp = function(e) {
        for (var t = this._grammar.elements[e.value].precedence || 0, r = this._cursor._parent; r && r.operator && this._grammar.elements[r.operator].precedence >= t;) this._cursor = r, r = r._parent;
        var n = {
            type: "BinaryExpression",
            operator: e.value,
            left: this._cursor
        };
        this._setParent(this._cursor, n), this._cursor = r, this._placeAtCursor(n)
    }, R.dot = function() {
        this._nextIdentEncapsulate = this._cursor && "UnaryExpression" !== this._cursor.type && ("BinaryExpression" !== this._cursor.type || "BinaryExpression" === this._cursor.type && this._cursor.right), this._nextIdentRelative = !this._cursor || this._cursor && !this._nextIdentEncapsulate, this._nextIdentRelative && (this._relative = !0)
    }, R.filter = function(e) {
        this._placeBeforeCursor({
            type: "FilterExpression",
            expr: e,
            relative: this._subParser.isRelative(),
            subject: this._cursor
        })
    }, R.functionCall = function() {
        this._placeBeforeCursor({
            type: "FunctionCall",
            name: this._cursor.value,
            args: [],
            pool: "functions"
        })
    }, R.identifier = function(e) {
        var t = {
            type: "Identifier",
            value: e.value
        };
        this._nextIdentEncapsulate ? (t.from = this._cursor, this._placeBeforeCursor(t), this._nextIdentEncapsulate = !1) : (this._nextIdentRelative && (t.relative = !0, this._nextIdentRelative = !1), this._placeAtCursor(t))
    }, R.literal = function(e) {
        this._placeAtCursor({
            type: "Literal",
            value: e.value
        })
    }, R.objKey = function(e) {
        this._curObjKey = e.value
    }, R.objStart = function() {
        this._placeAtCursor({
            type: "ObjectLiteral",
            value: {}
        })
    }, R.objVal = function(e) {
        this._cursor.value[this._curObjKey] = e
    }, R.subExpression = function(e) {
        this._placeAtCursor(e)
    }, R.ternaryEnd = function(e) {
        this._cursor.alternate = e
    }, R.ternaryMid = function(e) {
        this._cursor.consequent = e
    }, R.ternaryStart = function() {
        this._tree = {
            type: "ConditionalExpression",
            test: this._tree
        }, this._cursor = this._tree
    }, R.transform = function(e) {
        this._placeBeforeCursor({
            type: "FunctionCall",
            name: e.value,
            args: [this._cursor],
            pool: "transforms"
        })
    }, R.unaryOp = function(e) {
        this._placeAtCursor({
            type: "UnaryExpression",
            operator: e.value
        })
    }), R
}
var z, F, W, D, $, U, J, G = {};

function requireParser() {
    if (W) return F;
    W = 1;
    var e = requireInteropRequireDefault(),
        t = e(requireClassCallCheck()),
        r = e(requireCreateClass()),
        n = requireHandlers(),
        i = function() {
            if (z) return G;
            z = 1;
            var e = requireHandlers();
            return G.states = {
                expectOperand: {
                    tokenTypes: {
                        literal: {
                            toState: "expectBinOp"
                        },
                        identifier: {
                            toState: "identifier"
                        },
                        unaryOp: {},
                        openParen: {
                            toState: "subExpression"
                        },
                        openCurl: {
                            toState: "expectObjKey",
                            handler: e.objStart
                        },
                        dot: {
                            toState: "traverse"
                        },
                        openBracket: {
                            toState: "arrayVal",
                            handler: e.arrayStart
                        }
                    }
                },
                expectBinOp: {
                    tokenTypes: {
                        binaryOp: {
                            toState: "expectOperand"
                        },
                        pipe: {
                            toState: "expectTransform"
                        },
                        dot: {
                            toState: "traverse"
                        },
                        question: {
                            toState: "ternaryMid",
                            handler: e.ternaryStart
                        }
                    },
                    completable: !0
                },
                expectTransform: {
                    tokenTypes: {
                        identifier: {
                            toState: "postTransform",
                            handler: e.transform
                        }
                    }
                },
                expectObjKey: {
                    tokenTypes: {
                        identifier: {
                            toState: "expectKeyValSep",
                            handler: e.objKey
                        },
                        closeCurl: {
                            toState: "expectBinOp"
                        }
                    }
                },
                expectKeyValSep: {
                    tokenTypes: {
                        colon: {
                            toState: "objVal"
                        }
                    }
                },
                postTransform: {
                    tokenTypes: {
                        openParen: {
                            toState: "argVal"
                        },
                        binaryOp: {
                            toState: "expectOperand"
                        },
                        dot: {
                            toState: "traverse"
                        },
                        openBracket: {
                            toState: "filter"
                        },
                        pipe: {
                            toState: "expectTransform"
                        }
                    },
                    completable: !0
                },
                postArgs: {
                    tokenTypes: {
                        binaryOp: {
                            toState: "expectOperand"
                        },
                        dot: {
                            toState: "traverse"
                        },
                        openBracket: {
                            toState: "filter"
                        },
                        pipe: {
                            toState: "expectTransform"
                        }
                    },
                    completable: !0
                },
                identifier: {
                    tokenTypes: {
                        binaryOp: {
                            toState: "expectOperand"
                        },
                        dot: {
                            toState: "traverse"
                        },
                        openBracket: {
                            toState: "filter"
                        },
                        openParen: {
                            toState: "argVal",
                            handler: e.functionCall
                        },
                        pipe: {
                            toState: "expectTransform"
                        },
                        question: {
                            toState: "ternaryMid",
                            handler: e.ternaryStart
                        }
                    },
                    completable: !0
                },
                traverse: {
                    tokenTypes: {
                        identifier: {
                            toState: "identifier"
                        }
                    }
                },
                filter: {
                    subHandler: e.filter,
                    endStates: {
                        closeBracket: "identifier"
                    }
                },
                subExpression: {
                    subHandler: e.subExpression,
                    endStates: {
                        closeParen: "expectBinOp"
                    }
                },
                argVal: {
                    subHandler: e.argVal,
                    endStates: {
                        comma: "argVal",
                        closeParen: "postArgs"
                    }
                },
                objVal: {
                    subHandler: e.objVal,
                    endStates: {
                        comma: "expectObjKey",
                        closeCurl: "expectBinOp"
                    }
                },
                arrayVal: {
                    subHandler: e.arrayVal,
                    endStates: {
                        comma: "arrayVal",
                        closeBracket: "expectBinOp"
                    }
                },
                ternaryMid: {
                    subHandler: e.ternaryMid,
                    endStates: {
                        colon: "ternaryEnd"
                    }
                },
                ternaryEnd: {
                    subHandler: e.ternaryEnd,
                    completable: !0
                }
            }, G
        }().states;
    return F = function() {
        function Parser2(e, r, n) {
            (0, t.default)(this, Parser2), this._grammar = e, this._state = "expectOperand", this._tree = null, this._exprStr = r || "", this._relative = !1, this._stopMap = n || {}
        }
        return (0, r.default)(Parser2, [{
            key: "addToken",
            value: function(e) {
                if ("complete" === this._state) throw new Error("Cannot add a new token to a completed Parser");
                var t = i[this._state],
                    r = this._exprStr;
                if (this._exprStr += e.raw, t.subHandler) {
                    this._subParser || this._startSubExpression(r);
                    var o = this._subParser.addToken(e);
                    if (o) {
                        if (this._endSubExpression(), this._parentStop) return o;
                        this._state = o
                    }
                } else {
                    if (!t.tokenTypes[e.type]) {
                        if (this._stopMap[e.type]) return this._stopMap[e.type];
                        throw new Error("Token ".concat(e.raw, " (").concat(e.type, ") unexpected in expression: ").concat(this._exprStr))
                    }
                    var s = t.tokenTypes[e.type],
                        a = n[e.type];
                    s.handler && (a = s.handler), a && a.call(this, e), s.toState && (this._state = s.toState)
                }
                return !1
            }
        }, {
            key: "addTokens",
            value: function(e) {
                e.forEach(this.addToken, this)
            }
        }, {
            key: "complete",
            value: function() {
                if (this._cursor && !i[this._state].completable) throw new Error("Unexpected end of expression: ".concat(this._exprStr));
                return this._subParser && this._endSubExpression(), this._state = "complete", this._cursor ? this._tree : null
            }
        }, {
            key: "isRelative",
            value: function() {
                return this._relative
            }
        }, {
            key: "_endSubExpression",
            value: function() {
                i[this._state].subHandler.call(this, this._subParser.complete()), this._subParser = null
            }
        }, {
            key: "_placeAtCursor",
            value: function(e) {
                this._cursor ? (this._cursor.right = e, this._setParent(e, this._cursor)) : this._tree = e, this._cursor = e
            }
        }, {
            key: "_placeBeforeCursor",
            value: function(e) {
                this._cursor = this._cursor._parent, this._placeAtCursor(e)
            }
        }, {
            key: "_setParent",
            value: function(e, t) {
                Object.defineProperty(e, "_parent", {
                    value: t,
                    writable: !0
                })
            }
        }, {
            key: "_startSubExpression",
            value: function(e) {
                var t = i[this._state].endStates;
                t || (this._parentStop = !0, t = this._stopMap), this._subParser = new Parser2(this._grammar, e, t)
            }
        }]), Parser2
    }()
}

function requireExpression() {
    if (J) return U;
    J = 1;
    var e = requireInteropRequireDefault(),
        t = e(requireClassCallCheck()),
        r = e(requireCreateClass()),
        n = requireEvaluator(),
        i = function() {
            if (N) return Y;
            N = 1;
            var e = requireInteropRequireDefault(),
                t = e(requireClassCallCheck()),
                r = e(requireCreateClass()),
                n = /^-?(?:(?:[0-9]*\.[0-9]+)|[0-9]+)$/,
                i = /^[a-zA-Zа-яА-Я_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF$][a-zA-Zа-яА-Я0-9_\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF$]*$/,
                o = /\\\\/,
                s = /^\s*$/,
                a = ["'(?:(?:\\\\')|[^'])*'", '"(?:(?:\\\\")|[^"])*"', "\\s+", "\\btrue\\b", "\\bfalse\\b"],
                l = ["[a-zA-Zа-яА-Я_À-ÖØ-öø-ÿ\\$][a-zA-Z0-9а-яА-Я_À-ÖØ-öø-ÿ\\$]*", "(?:(?:[0-9]*\\.[0-9]+)|[0-9]+)"],
                c = ["binaryOp", "unaryOp", "openParen", "openBracket", "question", "colon"];
            return Y = function() {
                function Lexer2(e) {
                    (0, t.default)(this, Lexer2), this._grammar = e
                }
                return (0, r.default)(Lexer2, [{
                    key: "getElements",
                    value: function(e) {
                        var t = this._getSplitRegex();
                        return e.split(t).filter(function(e) {
                            return e
                        })
                    }
                }, {
                    key: "getTokens",
                    value: function(e) {
                        for (var t = [], r = !1, n = 0; n < e.length; n++) this._isWhitespace(e[n]) ? t.length && (t[t.length - 1].raw += e[n]) : "-" === e[n] && this._isNegative(t) ? r = !0 : (r && (e[n] = "-" + e[n], r = !1), t.push(this._createToken(e[n])));
                        return r && t.push(this._createToken("-")), t
                    }
                }, {
                    key: "tokenize",
                    value: function(e) {
                        var t = this.getElements(e);
                        return this.getTokens(t)
                    }
                }, {
                    key: "_createToken",
                    value: function(e) {
                        var t = {
                            type: "literal",
                            value: e,
                            raw: e
                        };
                        if ('"' === e[0] || "'" === e[0]) t.value = this._unquote(e);
                        else if (e.match(n)) t.value = parseFloat(e);
                        else if ("true" === e || "false" === e) t.value = "true" === e;
                        else if (this._grammar.elements[e]) t.type = this._grammar.elements[e].type;
                        else {
                            if (!e.match(i)) throw new Error("Invalid expression token: ".concat(e));
                            t.type = "identifier"
                        }
                        return t
                    }
                }, {
                    key: "_escapeRegExp",
                    value: function(e) {
                        return (e = e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).match(i) && (e = "\\b" + e + "\\b"), e
                    }
                }, {
                    key: "_getSplitRegex",
                    value: function() {
                        var e = this;
                        if (!this._splitRegex) {
                            var t = Object.keys(this._grammar.elements).sort(function(e, t) {
                                return t.length - e.length
                            }).map(function(t) {
                                return e._escapeRegExp(t)
                            }, this);
                            this._splitRegex = new RegExp("(" + [a.join("|"), t.join("|"), l.join("|")].join("|") + ")")
                        }
                        return this._splitRegex
                    }
                }, {
                    key: "_isNegative",
                    value: function(e) {
                        return !e.length || c.some(function(t) {
                            return t === e[e.length - 1].type
                        })
                    }
                }, {
                    key: "_isWhitespace",
                    value: function(e) {
                        return !!e.match(s)
                    }
                }, {
                    key: "_unquote",
                    value: function(e) {
                        var t = e[0],
                            r = new RegExp("\\\\" + t, "g");
                        return e.substr(1, e.length - 2).replace(r, t).replace(o, "\\")
                    }
                }]), Lexer2
            }()
        }(),
        o = requireParser(),
        s = function() {
            if ($) return D;
            $ = 1;
            var e = requireInteropRequireDefault(),
                t = e(requireClassCallCheck()),
                r = e(requireCreateClass()),
                n = function() {
                    function PromiseSync2(e) {
                        (0, t.default)(this, PromiseSync2), e(this._resolve.bind(this), this._reject.bind(this))
                    }
                    return (0, r.default)(PromiseSync2, [{
                        key: "catch",
                        value: function(e) {
                            if (this.error) try {
                                this._resolve(e(this.error))
                            } catch (t) {
                                this._reject(t)
                            }
                            return this
                        }
                    }, {
                        key: "then",
                        value: function(e, t) {
                            if (!this.error) try {
                                this._resolve(e(this.value))
                            } catch (r) {
                                this._reject(r)
                            }
                            return t && this.catch(t), this
                        }
                    }, {
                        key: "_reject",
                        value: function(e) {
                            this.value = void 0, this.error = e
                        }
                    }, {
                        key: "_resolve",
                        value: function(e) {
                            e instanceof PromiseSync2 ? e.error ? this._reject(e.error) : this._resolve(e.value) : (this.value = e, this.error = void 0)
                        }
                    }]), PromiseSync2
                }();
            return n.all = function(e) {
                return new n(function(t) {
                    t(e.map(function(e) {
                        for (; e instanceof n;) {
                            if (e.error) throw Error(e.error);
                            e = e.value
                        }
                        return e
                    }))
                })
            }, n.resolve = function(e) {
                return new n(function(t) {
                    return t(e)
                })
            }, n.reject = function(e) {
                return new n(function(t, r) {
                    return r(e)
                })
            }, D = n
        }(),
        a = function() {
            function Expression2(e, r) {
                (0, t.default)(this, Expression2), this._grammar = e, this._exprStr = r, this._ast = null
            }
            return (0, r.default)(Expression2, [{
                key: "compile",
                value: function() {
                    var e = new i(this._grammar),
                        t = new o(this._grammar),
                        r = e.tokenize(this._exprStr);
                    return t.addTokens(r), this._ast = t.complete(), this
                }
            }, {
                key: "eval",
                value: function() {
                    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                    return this._eval(e, Promise)
                }
            }, {
                key: "evalSync",
                value: function() {
                    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                        t = this._eval(e, s);
                    if (t.error) throw t.error;
                    return t.value
                }
            }, {
                key: "_eval",
                value: function(e, t) {
                    var r = this;
                    return t.resolve().then(function() {
                        var i = r._getAst();
                        return new n(r._grammar, e, void 0, t).eval(i)
                    })
                }
            }, {
                key: "_getAst",
                value: function() {
                    return this._ast || this.compile(), this._ast
                }
            }]), Expression2
        }();
    return U = a
}
var Q, K, ee = {};
const te = getDefaultExportFromCjs(function() {
    if (K) return u.exports;
    K = 1;
    var e, t, r = requireInteropRequireDefault(),
        n = r((y || (y = 1, e = h, t = requireToPropertyKey(), e.exports = function(e, r, n) {
            return (r = t(r)) in e ? Object.defineProperty(e, r, {
                value: n,
                enumerable: !0,
                configurable: !0,
                writable: !0
            }) : e[r] = n, e
        }, e.exports.__esModule = !0, e.exports.default = e.exports), h.exports)),
        i = r(requireClassCallCheck()),
        o = r(requireCreateClass()),
        s = requireExpression(),
        a = (Q || (Q = 1, ee.getGrammar = function() {
            return {
                elements: {
                    ".": {
                        type: "dot"
                    },
                    "[": {
                        type: "openBracket"
                    },
                    "]": {
                        type: "closeBracket"
                    },
                    "|": {
                        type: "pipe"
                    },
                    "{": {
                        type: "openCurl"
                    },
                    "}": {
                        type: "closeCurl"
                    },
                    ":": {
                        type: "colon"
                    },
                    ",": {
                        type: "comma"
                    },
                    "(": {
                        type: "openParen"
                    },
                    ")": {
                        type: "closeParen"
                    },
                    "?": {
                        type: "question"
                    },
                    "+": {
                        type: "binaryOp",
                        precedence: 30,
                        eval: function(e, t) {
                            return e + t
                        }
                    },
                    "-": {
                        type: "binaryOp",
                        precedence: 30,
                        eval: function(e, t) {
                            return e - t
                        }
                    },
                    "*": {
                        type: "binaryOp",
                        precedence: 40,
                        eval: function(e, t) {
                            return e * t
                        }
                    },
                    "/": {
                        type: "binaryOp",
                        precedence: 40,
                        eval: function(e, t) {
                            return e / t
                        }
                    },
                    "//": {
                        type: "binaryOp",
                        precedence: 40,
                        eval: function(e, t) {
                            return Math.floor(e / t)
                        }
                    },
                    "%": {
                        type: "binaryOp",
                        precedence: 50,
                        eval: function(e, t) {
                            return e % t
                        }
                    },
                    "^": {
                        type: "binaryOp",
                        precedence: 50,
                        eval: function(e, t) {
                            return Math.pow(e, t)
                        }
                    },
                    "==": {
                        type: "binaryOp",
                        precedence: 20,
                        eval: function(e, t) {
                            return e == t
                        }
                    },
                    "!=": {
                        type: "binaryOp",
                        precedence: 20,
                        eval: function(e, t) {
                            return e != t
                        }
                    },
                    ">": {
                        type: "binaryOp",
                        precedence: 20,
                        eval: function(e, t) {
                            return e > t
                        }
                    },
                    ">=": {
                        type: "binaryOp",
                        precedence: 20,
                        eval: function(e, t) {
                            return e >= t
                        }
                    },
                    "<": {
                        type: "binaryOp",
                        precedence: 20,
                        eval: function(e, t) {
                            return e < t
                        }
                    },
                    "<=": {
                        type: "binaryOp",
                        precedence: 20,
                        eval: function(e, t) {
                            return e <= t
                        }
                    },
                    "&&": {
                        type: "binaryOp",
                        precedence: 10,
                        evalOnDemand: function(e, t) {
                            return e.eval().then(function(e) {
                                return e ? t.eval() : e
                            })
                        }
                    },
                    "||": {
                        type: "binaryOp",
                        precedence: 10,
                        evalOnDemand: function(e, t) {
                            return e.eval().then(function(e) {
                                return e || t.eval()
                            })
                        }
                    },
                    in: {
                        type: "binaryOp",
                        precedence: 20,
                        eval: function(e, t) {
                            return "string" == typeof t ? -1 !== t.indexOf(e) : !!Array.isArray(t) && t.some(function(t) {
                                return t === e
                            })
                        }
                    },
                    "!": {
                        type: "unaryOp",
                        precedence: 1 / 0,
                        eval: function(e) {
                            return !e
                        }
                    }
                },
                functions: {},
                transforms: {}
            }
        }), ee).getGrammar,
        l = function() {
            function Jexl2() {
                (0, i.default)(this, Jexl2), this.expr = this.expr.bind(this), this._grammar = a()
            }
            return (0, o.default)(Jexl2, [{
                key: "addBinaryOp",
                value: function(e, t, r, i) {
                    this._addGrammarElement(e, (0, n.default)({
                        type: "binaryOp",
                        precedence: t
                    }, i ? "evalOnDemand" : "eval", r))
                }
            }, {
                key: "addFunction",
                value: function(e, t) {
                    this._grammar.functions[e] = t
                }
            }, {
                key: "addFunctions",
                value: function(e) {
                    for (var t in e) this._grammar.functions[t] = e[t]
                }
            }, {
                key: "addUnaryOp",
                value: function(e, t) {
                    this._addGrammarElement(e, {
                        type: "unaryOp",
                        weight: 1 / 0,
                        eval: t
                    })
                }
            }, {
                key: "addTransform",
                value: function(e, t) {
                    this._grammar.transforms[e] = t
                }
            }, {
                key: "addTransforms",
                value: function(e) {
                    for (var t in e) this._grammar.transforms[t] = e[t]
                }
            }, {
                key: "compile",
                value: function(e) {
                    return this.createExpression(e).compile()
                }
            }, {
                key: "createExpression",
                value: function(e) {
                    return new s(this._grammar, e)
                }
            }, {
                key: "getFunction",
                value: function(e) {
                    return this._grammar.functions[e]
                }
            }, {
                key: "getTransform",
                value: function(e) {
                    return this._grammar.transforms[e]
                }
            }, {
                key: "eval",
                value: function(e) {
                    var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                    return this.createExpression(e).eval(t)
                }
            }, {
                key: "evalSync",
                value: function(e) {
                    var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                    return this.createExpression(e).evalSync(t)
                }
            }, {
                key: "expr",
                value: function(e) {
                    for (var t = arguments.length, r = new Array(t > 1 ? t - 1 : 0), n = 1; n < t; n++) r[n - 1] = arguments[n];
                    var i = e.reduce(function(e, t, n) {
                        return e += t + (n < r.length ? r[n] : "")
                    }, "");
                    return this.createExpression(i)
                }
            }, {
                key: "removeOp",
                value: function(e) {
                    !this._grammar.elements[e] || "binaryOp" !== this._grammar.elements[e].type && "unaryOp" !== this._grammar.elements[e].type || delete this._grammar.elements[e]
                }
            }, {
                key: "_addGrammarElement",
                value: function(e, t) {
                    this._grammar.elements[e] = t
                }
            }]), Jexl2
        }();
    return u.exports = new l, u.exports.Jexl = l, u.exports
}());
let re = null;
te.addFunctions({
    customerIds: e => {
        return t = e, r = re?.selectionIDs, !!r && t.some(e => r.includes(e));
        var t, r
    },
    userGroups: e => {
        return t = e, r = re?.userGroups.userGroups, !!r && t.some(e => r.includes(e));
        var t, r
    },
    url: (e, t) => ((e, t) => {
        let r = window.location.search;
        window.vtsStudioFakeUrlSearch && (r = window.vtsStudioFakeUrlSearch);
        const n = new URLSearchParams(r);
        if (n.has(e) && n.get(e) === t) return window.localStorage.setItem(`plpUrl${e}`, t), !0;
        const i = window.localStorage.getItem(`plpUrl${e}`);
        return !(!i || i !== t)
    })(e, t),
    ambassador: () => {
        return e = re?.productSelections, !!e && e.includes("3841");
        var e
    },
    notLogged: () => !re,
    startAfter: e => (e => {
        const t = new Date(e).getTime();
        return (new Date).getTime() > t
    })(e),
    endBefore: e => (e => {
        const t = new Date(e).getTime();
        return (new Date).getTime() < t
    })(e)
});
var ne = Object.defineProperty,
    __publicField = (e, t, r) => ((e, t, r) => t in e ? ne(e, t, {
        enumerable: !0,
        configurable: !0,
        writable: !0,
        value: r
    }) : e[t] = r)(e, "symbol" != typeof t ? t + "" : t, r);
class Tracking {
    constructor(e, t, r) {
        if (__publicField(this, "observer", null), __publicField(this, "viewedProducts", []), __publicField(this, "scrollTimeout", null), __publicField(this, "products", []), __publicField(this, "handleSelectItem", e => {
                const t = e.currentTarget.getAttribute("data-product-id");
                if (!t) return;
                const r = this.products?.findIndex(e => e.legacyId === t);
                if (void 0 === r || -1 === r) return;
                const n = this.products?.[r];
                window.gtmDataObject.push({
                    event: "select_item",
                    event_raised_by: "local_market_fr",
                    click_location: "cross-sell-mini-cart",
                    action_type: "",
                    subscription_product_included: "",
                    discovery_offer_included: "",
                    ecommerce: {
                        currency: "EUR",
                        value: (n.unitPrice * n.salesMultiple).toFixed(2),
                        items: [{
                            item_id: n.internationalId,
                            item_name: n.internationalName,
                            item_brand: "nespresso",
                            item_category: n.modelType,
                            item_category2: "capsules_original" === n.rootCategory ? "original" : "vertuo",
                            item_category3: n.category,
                            item_category4: n.bundled ? "bundled" : "single",
                            price: n.unitPrice,
                            quantity: 1,
                            affiliation: "nespresso online store",
                            coupon: "",
                            discount: "",
                            item_list_name: "cross-sell-mini-cart-V2",
                            item_list_id: "",
                            index: r + 1,
                            item_market_id: n.legacyId,
                            item_market_name: n.name,
                            item_technology: "capsules_original" === n.rootCategory ? "original" : "vertuo",
                            item_range: n.category,
                            item_type: n.bundled ? "bundled" : "single",
                            item_discovery_offer: !1,
                            item_added_by_user: !1,
                            item_ecotax_applicable: "",
                            item_coffee_cup_size: n.capsuleCupSizes?.join("|"),
                            item_coffee_intensity: n.capsuleProperties?.intensity?.toString(),
                            item_coffee_aromatic_profile: n.capsuleProductAromatics?.join("|"),
                            item_machine_shade: "",
                            item_avg_rating: "",
                            item_number_of_reviews: "",
                            item_selection_list: n.productSelections?.join("|"),
                            item_in_stock: n.inStock ? "in stock" : "out of stock"
                        }]
                    }
                })
            }), this.products = window.vtsCartXsellRecommandations, e.querySelectorAll(".add-to-bag").forEach(e => {
                e.addEventListener("click", this.handleSelectItem)
            }), t && r) {
            const t = r.getCurrentViewedElement(),
                n = t?.getAttribute("data-legacy-id");
            n && (this.handleViewItem(n), this.viewedProducts.push(n)), e.addEventListener("scroll", () => {
                this.scrollTimeout && clearTimeout(this.scrollTimeout), this.scrollTimeout = setTimeout(() => {
                    const e = r.getCurrentViewedElement();
                    if (!e) return;
                    const t = e.getAttribute("data-legacy-id");
                    t && (this.viewedProducts.includes(t) || (this.handleViewItem(t), this.viewedProducts.push(t)))
                }, 150)
            }, {
                passive: !0
            })
        } else this.observer = new IntersectionObserver(e => {
            e.forEach(({
                isIntersecting: e,
                target: t
            }) => {
                if (e) {
                    const e = t.getAttribute("data-legacy-id");
                    if (!e) return;
                    this.handleViewItem(e), this.observer?.unobserve(t)
                }
            }, {
                threshold: .8
            })
        }), e.querySelectorAll(".VtsXsellProductCard").forEach(e => {
            this.observer?.observe(e)
        })
    }
    handleViewItem(e) {
        const t = this.products?.findIndex(t => t.legacyId === e);
        if (void 0 === t || -1 === t) return;
        const r = this.products?.[t];
        window.gtmDataObject.push({
            event: "view_item_list",
            event_raised_by: "local_market_fr",
            subscription_product_included: "",
            discovery_offer_included: "",
            ecommerce: {
                currency: "EUR",
                value: Number((r.unitPrice * r.salesMultiple).toFixed(2)),
                items: [{
                    item_id: r.internationalId,
                    item_name: r.internationalName,
                    item_brand: "nespresso",
                    item_category: r.modelType,
                    item_category2: "capsules_original" === r.rootCategory ? "original" : "vertuo",
                    item_category3: r.category,
                    item_category4: r.bundled ? "bundled" : "single",
                    price: r.unitPrice,
                    quantity: 1,
                    affiliation: "nespresso online store",
                    coupon: "",
                    discount: "",
                    item_list_name: "cross-sell-mini-cart-V2",
                    item_list_id: "",
                    index: Number(t + 1),
                    item_market_id: r.legacyId,
                    item_market_name: r.name,
                    item_technology: "capsules_original" === r.rootCategory ? "original" : "vertuo",
                    item_range: r.category,
                    item_type: r.bundled ? "bundled" : "single",
                    item_discovery_offer: !1,
                    item_added_by_user: !1,
                    item_ecotax_applicable: "",
                    item_coffee_cup_size: r.capsuleCupSizes?.join("|"),
                    item_coffee_intensity: r.capsuleProperties?.intensity?.toString(),
                    item_coffee_aromatic_profile: r.capsuleProductAromatics?.join("|"),
                    item_machine_shade: "",
                    item_avg_rating: "",
                    item_number_of_reviews: "",
                    item_selection_list: r.productSelections?.join("|"),
                    item_in_stock: r.inStock ? "in stock" : "out of stock"
                }]
            }
        })
    }
    destroy() {
        this.observer && (this.observer.disconnect(), this.observer = null), this.scrollTimeout && (clearTimeout(this.scrollTimeout), this.scrollTimeout = null), this.viewedProducts = []
    }
}
const desktopProductCard = e => `\n  <div class="VtsXsellProductCard" data-legacy-id="${e.legacyId}">\n    <div class="VtsXsellProductCard__header">\n      <img src="${e.image}" alt="${e.name} product image" style="width: ${"original"===e.techno?82:112}px; height: ${"original"===e.techno?82:93}px" />\n\n      <div class="VtsXsellProductCard__header-footer">\n        <div class="VtsXsellProductCard__header-intensity">\n          <span class="VtsXsellProductCard__header-intensity-label">Intensité ${e.intensity}</span>\n          ${(e=>{const t=Math.min(Math.max(e,0),13),r=13-t;return`\n    <div class="VtsXsellIntensityBars">\n      ${'<span class="VtsXsellIntensityBars--filled"></span>'.repeat(t)}\n      ${'<span class="VtsXsellIntensityBars--empty"></span>'.repeat(r)}\n    </div>\n  `})(e.intensity)}\n        </div>\n\n        <div class="VtsXsellProductCard__header-cupSizes">\n          ${function(e){let t=o;return window.vtsCartXSellConfigV2?.plpCupSizes&&(t=s),`\n    <div class="VtsXsellCupSizes">\n      ${t.filter(t=>e.includes(t.id)).slice(0,2).map(e=>`\n          <div class="VtsXsellCupSizes__item">\n            ${window.vtsCartXSellConfigV2?.plpCupSizes?`<span class="VtsXsellIcon VtsXsellIcon--${e.icon}"></span>`:e.icon}\n            <span class="VtsXsellCupSizes__label">${e.name}</span>\n          </div>\n        `).join("")}\n    </div>\n  `}(e.supercategories)}\n        </div>\n      </div>\n    </div>\n\n    <div class="VtsXsellProductCard__content">\n      <p class="VtsXsellProductCard__content-name">${e.name}</p>\n      <p class="VtsXsellProductCard__content-headline">${e.headline}</p>\n\n      <div class="VtsXsellPriceWrapper">\n        <div class="VtsXsellPriceWrapper__price">\n          <div>\n            <span class="VtsXsellPriceWrapper__price-value">${e.promoPrice?e.promoPrice:e.price}</span>\n            ${e.promoPrice?`<span class="VtsXsellPriceWrapper__price-promo">${e.price}</span>`:""}\n          </div>\n          ${e.bundled?"":`<span class="VtsXsellPriceWrapper__price-packPrice">${e.packPrice}</span>`}\n        </div>\n\n        <div class="VtsXsellPriceWrapper__a2b">\n          <div class="add-to-bag VtsXsellDesktopA2B" data-product-id="${e.legacyId}" data-button-size="small"></div>\n        </div>\n      </div>\n    </div>\n  </div>\n`;
let ie = null;
async function init() {
    const e = document.querySelector('script[data-contribution="vts-xsell-cart-v2"]');
    if (e && e.textContent && (window.vtsCartXSellConfigV2 = JSON.parse(e.textContent)), window.vtsCartXSellConfigV2?.fallback && window.vtsCartXSellConfigV2?.fallback.enabled) {
        const e = window.vtsCartXSellConfigV2.fallback.productIds.map(e => window.checkRefSwitch(e)),
            t = await Promise.all(e.map(async e => await window.napi.catalog().getProduct(e)));
        window.vtsCartXsellRecommandations = t.filter(e => e.inStock)
    } else {
        const e = new CoveoRecommendation({
            recommendationType: window?.vtsCartXSellConfigV2?.coveo?.recommendationType || "CartRecommender",
            searchHub: window?.vtsCartXSellConfigV2?.coveo?.searchHub,
            numberOfResults: window?.vtsCartXSellConfigV2?.coveo?.numberOfResults || 9,
            productCategoryFilters: window?.vtsCartXSellConfigV2?.coveo?.productCategoryFilters,
            mode: window?.vtsCartXSellConfigV2?.coveo?.mode
        });
        await e.getRecommendations()
    }
    const {
        evaluate: t
    } = await (async () => {
        try {
            const e = await window.napi.customer().read();
            re = e
        } catch (e) {
            setTimeout(async () => {
                re = await window.napi.customer().read()
            }, 1500)
        }
        return {
            evaluate: async e => await te.eval(e)
        }
    })();
    window.vtsCartXSellConfigV2?.hideOnAdd && window.napi.data().on("cart.update", (e, t) => {
        if (window.vtsCartIsOpen && t.cartUpdates && t.cartUpdates.item.length > 0) {
            let e = [];
            e = Array.from(document.querySelectorAll(window.matchMedia("(max-width: 768px)").matches ? ".VtsXsellProductRow" : ".VtsXsellProductCard")), t.cartUpdates.item.forEach(t => {
                t.productInfo && t.productInfo.productLocalSKU && e.find(e => e instanceof HTMLElement && e.dataset.legacyId === t.productInfo.productLocalSKU)?.remove()
            })
        }
    });
    const r = new MutationObserver(async e => {
            for (const r of e)
                if ("attributes" === r.type && "class" === r.attributeName)
                    if (r.target.classList.contains("MiniBasketButton--open")) {
                        if (window.vtsCartIsOpen || !window.vtsCartXsellRecommandations || 0 === window.vtsCartXsellRecommandations.length) return;
                        window.vtsCartIsOpen = !0, ie = new XsellCleanupManager;
                        const e = await Promise.all(window.vtsCartXsellRecommandations.map(async e => {
                            if (window.vtsCartXSellConfigV2?.useCrossedPrice) {
                                const r = await usePromotions(e.legacyId, e.unitPrice, t);
                                if (r !== e.unitPrice) return {
                                    ...e,
                                    promoPrice: r
                                }
                            }
                            return e
                        }));
                        setTimeout(() => {
                            if (window.matchMedia("(max-width: 768px)").matches) {
                                const t = `\n                <div class="VtsXsell VtsXsellMobile ${window.vtsCartXSellConfigV2?.isMobilePanelClosed?"VtsXsellMobile--hidden":""}">\n                  <div class="VtsXsellMobile__header">\n                    <span>\n                      ${window.vtsCartXSellConfigV2?.title||"Vous apprécierez également"}\n                    </span>\n  \n                    <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">\n                      <path fill-rule="evenodd" clip-rule="evenodd" d="M5 6L11 6L7.99481 9.75L5 6Z" fill="#17171A"/>\n                    </svg>\n                  </div>\n                  \n                  <div class="VtsXsellMobile__slider">\n                    <button class="VtsXsellMobile__nav-button VtsXsellMobile__prev-button">\n                      <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">\n                        <path fill-rule="evenodd" clip-rule="evenodd" d="M17.5892 9.6665H19.4888L13.1555 15.9998L19.4888 22.3332H17.5892L11.2559 15.9998L17.5892 9.6665Z" fill="#17171A"/>\n                      </svg>\n                    </button>\n                    \n                    <div class="VtsXsellMobile__content-wrapper">\n                      <div class="VtsXsellMobile__content">\n                        ${e.map(e=>{return`\n  <div class="VtsXsellProductRow" data-legacy-id="${(t={legacyId:e.legacyId,name:e.name,headline:e.headline,image:e.responsiveImages.standard,price:`${e.unitPrice}€`,promoPrice:e?.promoPrice?`${e.promoPrice}€`:void 0,packPrice:`${(e.unitPrice*e.salesMultiple).toFixed(2)}€ par Étui de ${e.salesMultiple}`,bundled:e.bundled}).legacyId}">\n    <div class="VtsXsellProductRow__image">\n      <img src="${t.image}" alt="${t.name} product image" />\n    </div>\n\n    <div class="VtsXsellProductRow__content">\n      <div>\n        <p class="VtsXsellProductRow__content-name">${t.name}</p>\n        <p class="VtsXsellProductRow__content-headline">${t.headline}</p>\n      </div>\n\n      <div class="VtsXsellPriceWrapper">\n        <div class="VtsXsellPriceWrapper__price">\n          <div>\n            <span class="VtsXsellPriceWrapper__price-value">${t.promoPrice?t.promoPrice:t.price}</span>\n            ${t.promoPrice?`<span class="VtsXsellPriceWrapper__price-promo">${t.price}</span>`:""}\n          </div>\n          ${t.bundled?"":`<span class="VtsXsellPriceWrapper__price-packPrice">${t.packPrice}</span>`}\n        </div>\n\n        <div class="VtsXsellPriceWrapper__a2b" data-legacy-id="${t.legacyId}">\n          <div class="add-to-bag VtsXsellDesktopA2B" data-product-id="${t.legacyId}" data-button-size="small"></div>\n        </div>\n      </div>\n    </div>\n  </div>\n`;var t}).join("")}\n                      </div>\n                    </div>\n                    \n                    <button class="VtsXsellMobile__nav-button VtsXsellMobile__next-button">\n                      <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">\n                        <path fill-rule="evenodd" clip-rule="evenodd" d="M14.4108 22.3335H12.5112L18.8445 16.0002L12.5112 9.66683L14.4108 9.66683L20.7441 16.0002L14.4108 22.3335Z" fill="#17171A"/>\n                      </svg>\n                    </button>\n                  </div>\n                </div>\n              `;
                                document.querySelector(".MiniBasketDropdown__content-wrapper").style.paddingBottom = "0px";
                                const n = document.querySelector(".MiniBasketDropdown__content-filled");
                                if (!n) return;
                                Object.assign(n.style, {
                                    height: "100%",
                                    display: "flex",
                                    flexDirection: "column",
                                    justifyContent: "space-between"
                                }), n.insertAdjacentHTML("beforeend", t);
                                try {
                                    const e = new MobileProductSlider(".VtsXsellMobile__prev-button", ".VtsXsellMobile__next-button", ".VtsXsellMobile__content");
                                    ie?.setMobileProductSlider(e), setTimeout(() => {
                                        const t = document.querySelector(".VtsXsellMobile__content");
                                        if (t) {
                                            const r = new Tracking(t, !0, e);
                                            ie?.setTrackingHandler(r)
                                        }
                                    }, 1e3)
                                } catch (r) {
                                    console.warn("Failed to initialize MobileProductSlider:", r)
                                }
                                document.querySelectorAll(".VtsXsellPriceWrapper__a2b").forEach(e => {
                                    e && e.addEventListener("click", () => {
                                        e.insertAdjacentHTML("beforeend", `<div class="add-to-bag VtsXsellDesktopA2B" data-product-id="${e.dataset.legacyId}" data-button-size="small"></div>`)
                                    })
                                });
                                try {
                                    const e = document.querySelector(".VtsXsellMobile"),
                                        t = document.querySelector(".MiniBasketDropdown__dropdown");
                                    if (e && t) {
                                        const r = new TeleportMobileQuantitySelector(e, {
                                            teleportToElement: t
                                        });
                                        ie?.setTeleportMobileQuantityHandler(r)
                                    }
                                } catch (r) {
                                    console.warn("Failed to initialize TeleportMobileQuantitySelector:", r)
                                }
                                document.querySelector(".VtsXsellMobile__header")?.addEventListener("click", e => {
                                    e.currentTarget?.parentElement?.classList.toggle("VtsXsellMobile--hidden")
                                })
                            } else {
                                const t = `\n                <div class="VtsXsell VtsXsellDesktop ${window.xsellAbTestVersion&&"B"===window.xsellAbTestVersion?"VtsXsellDesktop--right":""}">\n                  <button class="VtsXsellDesktop__slider-button VtsXsellDesktop__prev-button">  \n                    <svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">\n                      <g filter="url(#filter0_dd_420_1375)">\n                        <circle cx="32" cy="28" r="20" transform="rotate(-90 32 28)" fill="#F3EEE6"/>\n                        <path fill-rule="evenodd" clip-rule="evenodd" d="M24.5 31.3335L32 24.5875L39.5 31.3335L40.3334 30.6296L32 23.0002L23.6667 30.6346L24.5 31.3335Z" fill="black"/>\n                      </g>\n                      <defs>\n                        <filter id="filter0_dd_420_1375" x="0" y="0" width="64" height="64" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">\n                          <feFlood flood-opacity="0" result="BackgroundImageFix"/>\n                          <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>\n                          <feOffset dy="4"/>\n                          <feGaussianBlur stdDeviation="6"/>\n                          <feColorMatrix type="matrix" values="0 0 0 0 0.0901961 0 0 0 0 0.0901961 0 0 0 0 0.101961 0 0 0 0.14 0"/>\n                          <feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_420_1375"/>\n                          <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>\n                          <feOffset/>\n                          <feGaussianBlur stdDeviation="3"/>\n                          <feColorMatrix type="matrix" values="0 0 0 0 0.0901961 0 0 0 0 0.0901961 0 0 0 0 0.101961 0 0 0 0.1 0"/>\n                          <feBlend mode="normal" in2="effect1_dropShadow_420_1375" result="effect2_dropShadow_420_1375"/>\n                          <feBlend mode="normal" in="SourceGraphic" in2="effect2_dropShadow_420_1375" result="shape"/>\n                        </filter>\n                      </defs>\n                    </svg>\n                  </button>\n  \n                  <p class="VtsXsellDesktop__title">${window.vtsCartXSellConfigV2?.title||"Vous apprécierez également"}</p>\n  \n                  <div class="VtsXsellDesktop__products">    \n                    ${e.map(e=>desktopProductCard({legacyId:e.legacyId,name:e.name,headline:e.headline,image:e.responsiveImages.standard,intensity:e.capsuleProperties.intensity,price:`${e.unitPrice}€`,promoPrice:e?.promoPrice?`${e.promoPrice}€`:void 0,packPrice:`${(e.unitPrice*e.salesMultiple).toFixed(2)}€ par étui de ${e.salesMultiple}`,supercategories:e.supercategories,bundled:e.bundled,techno:"capsules_original"===e.rootCategory?"original":"vertuo"})).join("")}\n                  </div>\n  \n                  <button class="VtsXsellDesktop__slider-button VtsXsellDesktop__next-button">  \n                    <svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">\n                      <g filter="url(#filter0_dd_420_1375)">\n                        <circle cx="32" cy="28" r="20" transform="rotate(90 32 28)" fill="#F3EEE6"/>\n                        <path fill-rule="evenodd" clip-rule="evenodd" d="M39.5 24.6665L32 31.4125L24.5 24.6665L23.6666 25.3704L32 32.9998L40.3333 25.3654L39.5 24.6665Z" fill="black"/>\n                      </g>\n                      <defs>\n                        <filter id="filter0_dd_420_1375" x="0" y="0" width="64" height="64" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">\n                          <feFlood flood-opacity="0" result="BackgroundImageFix"/>\n                          <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>\n                          <feOffset dy="4"/>\n                          <feGaussianBlur stdDeviation="6"/>\n                          <feColorMatrix type="matrix" values="0 0 0 0 0.0901961 0 0 0 0 0.0901961 0 0 0 0 0.101961 0 0 0 0.14 0"/>\n                          <feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_420_1375"/>\n                          <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>\n                          <feOffset/>\n                          <feGaussianBlur stdDeviation="3"/>\n                          <feColorMatrix type="matrix" values="0 0 0 0 0.0901961 0 0 0 0 0.0901961 0 0 0 0 0.101961 0 0 0 0.1 0"/>\n                          <feBlend mode="normal" in2="effect1_dropShadow_420_1375" result="effect2_dropShadow_420_1375"/>\n                          <feBlend mode="normal" in="SourceGraphic" in2="effect2_dropShadow_420_1375" result="shape"/>\n                        </filter>\n                      </defs>\n                    </svg>\n                  </button>\n                </div>\n              `;
                                document.querySelector(".MiniBasketDropdown__wrapper")?.insertAdjacentHTML("afterbegin", t);
                                try {
                                    const e = new DesktopProductSlider(".VtsXsellDesktop__next-button", ".VtsXsellDesktop__prev-button", ".VtsXsellDesktop");
                                    ie?.setDesktopProductSlider(e)
                                } catch (r) {
                                    console.warn("Failed to initialize DesktopProductSlider:", r)
                                }
                                document.querySelectorAll(".VtsXsellDesktopA2B").forEach(e => {
                                    if (!e) return;
                                    const t = new QuantitySelectorOverflowHandler(e, {
                                        scrollParentElement: document.querySelector(".VtsXsellDesktop")
                                    });
                                    ie?.addQuantityHandler(t)
                                }), setTimeout(() => {
                                    const e = document.querySelector(".VtsXsellDesktop");
                                    if (e) {
                                        const t = new Tracking(e, !1);
                                        ie?.setTrackingHandler(t)
                                    }
                                }, 1e3)
                            }
                            const t = document.querySelector(".VtsXsell");
                            t && window.mosaic.initializeAllFreeHTMLModules(t)
                        }, 200)
                    } else {
                        if (!window.vtsCartIsOpen) return;
                        window.vtsCartIsOpen = !1, document.querySelector(".VtsXsell.VtsXsellDesktop")?.remove(), ie && (ie.destroy(), ie = null)
                    }
        }),
        n = document.querySelector(".MiniBasketButton");
    n ? r.observe(n, {
        attributes: !0
    }) : setTimeout(() => {
        const e = document.querySelector(".MiniBasketButton");
        e && r.observe(e, {
            attributes: !0
        })
    }, 500)
}
"requestIdleCallback" in window ? requestIdleCallback(init) : setTimeout(init, 3e3);
</script>
<link rel="stylesheet" crossorigin href="https://www.nespresso.com/shared_res/mos/free_html/fr/xsell-cart/v3/index-CPaUZ9rX.css">
</div>

<div id="block-8833655133685" class="free-html" data-label=""  >
    <!-- Version de débogage avec diagnostics détaillés - 23/07/25 -->
<script id="minicart-translations">
    window.Translations = {
        'fr': {
            'en': {
                'removeTitle': 'Remove',
                'removeAllTitle': 'Remove all items'
            },
            'fr': {
                'removeTitle': 'Supprimer',
                'removeAllTitle': 'Supprimer tous les éléments'
            }
        }
    }
</script>

<script id="minicart-single-delete-debug">
    !function(){"use strict";

        console.log('[MiniCart DEBUG] Script démarré');

        // Configuration globale avec vérifications
        let config;
        try {
            config = {
                language: window.location.href.split("/")[3] || 'fr',
                htmlLang: document.querySelector("html")?.attributes?.lang?.value || 'fr',
                debounceDelay: 500,
                retryDelay: 100,
                maxRetries: 3
            };
            console.log('[MiniCart DEBUG] Configuration:', config);
        } catch (error) {
            console.error('[MiniCart DEBUG] Erreur configuration:', error);
            return; // Arrêt si la configuration échoue
        }

        // Vérification des traductions
        let translations;
        try {
            translations = window.Translations?.[config.language]?.[config.htmlLang];
            if (!translations) {
                console.warn('[MiniCart DEBUG] Traductions manquantes, utilisation des valeurs par défaut');
                translations = { removeTitle: 'Supprimer', removeAllTitle: 'Supprimer tous' };
            }
            console.log('[MiniCart DEBUG] Traductions chargées:', translations);
        } catch (error) {
            console.error('[MiniCart DEBUG] Erreur traductions:', error);
            translations = { removeTitle: 'Supprimer', removeAllTitle: 'Supprimer tous' };
        }

        // État global pour éviter les conflits
        let isInitialized = false;
        let processingTimeout = null;
        let cartData = new Map(); // Cache des données produit

        // Injection des styles une seule fois
        function injectStyles() {
            console.log('[MiniCart DEBUG] Injection des styles...');
            if (document.getElementById('minicart-remove-styles')) {
                console.log('[MiniCart DEBUG] Styles déjà injectés');
                return;
            }

            try {
                const styleSheet = document.createElement('style');
                styleSheet.id = 'minicart-remove-styles';
                styleSheet.textContent = `
                    .minicart-remove-btn {
                        font-weight: 300;
                        font-size: 10px;
                        line-height: 120%;
                        text-decoration-line: underline;
                        color: #17171a;
                        background: none;
                        border: none;
                        cursor: pointer;
                        padding: 2px 4px;
                        margin-left: 6px;
                        transition: color 0.2s ease;
                        opacity: 1;
                        pointer-events: auto;
                    }
                    .minicart-remove-btn:hover {
                        color: #d73527;
                    }
                    .minicart-remove-btn:disabled {
                        opacity: 0.5;
                        cursor: not-allowed;
                        pointer-events: none;
                    }
                    .minicart-processing {
                        opacity: 0.6;
                        pointer-events: none;
                    }
                `;
                document.head.appendChild(styleSheet);
                console.log('[MiniCart DEBUG] Styles injectés avec succès');
            } catch (error) {
                console.error('[MiniCart DEBUG] Erreur injection styles:', error);
            }
        }

        // Fonction pour obtenir les données du panier de façon fiable
        async function getCartData() {
            console.log('[MiniCart DEBUG] Récupération des données du panier...');

            // Vérification des dépendances
            if (!window.napi) {
                console.error('[MiniCart DEBUG] window.napi n\'est pas disponible');
                return new Map();
            }

            try {
                const cartItems = await window.napi.cart().read();
                console.log('[MiniCart DEBUG] Items du panier récupérés:', cartItems?.length || 0);

                const cartMap = new Map();

                if (!cartItems || cartItems.length === 0) {
                    console.log('[MiniCart DEBUG] Panier vide');
                    return cartMap;
                }

                for (const [index, item] of cartItems.entries()) {
                    console.log(`[MiniCart DEBUG] Traitement item ${index + 1}:`, item.productId, 'Prix:', item.unitPrice);

                    if (item.unitPrice !== 0 && !item.nonRemovable) {
                        try {
                            const productDetails = await window.napi.catalog().getProduct(item.productId);
                            cartMap.set(item.productId, {
                                ...item,
                                productName: productDetails.name,
                                isRemovable: true
                            });
                            console.log(`[MiniCart DEBUG] Produit ajouté: ${productDetails.name} (${item.productId})`);
                        } catch (error) {
                            console.warn(`[MiniCart DEBUG] Impossible de récupérer les détails pour ${item.productId}:`, error);
                        }
                    } else {
                        console.log(`[MiniCart DEBUG] Item ${item.productId} non supprimable (prix: ${item.unitPrice}, nonRemovable: ${item.nonRemovable})`);
                    }
                }

                console.log(`[MiniCart DEBUG] Données du panier finales: ${cartMap.size} produits`);
                return cartMap;
            } catch (error) {
                console.error('[MiniCart DEBUG] Erreur lors de la récupération du panier:', error);
                return new Map();
            }
        }

        // Fonction pour nettoyer uniquement nos boutons
        function cleanupRemoveButtons() {
            const existingButtons = document.querySelectorAll('.minicart-remove-btn');
            console.log(`[MiniCart DEBUG] Nettoyage de ${existingButtons.length} boutons existants`);
            existingButtons.forEach(btn => btn.remove());
        }

        // Fonction pour extraire les caractéristiques d'identification d'un élément DOM
        function extractDomProductSignature(domElement) {
            console.log('[MiniCart DEBUG] Extraction signature DOM...');

            const titleSpan = domElement.querySelector('.MiniBasketItem__title span');
            if (!titleSpan) {
                console.warn('[MiniCart DEBUG] Span de titre non trouvé dans:', domElement);
                return null;
            }

            // Récupération du nom du produit
            const productName = titleSpan.textContent.trim().toLowerCase();
            console.log(`[MiniCart DEBUG] Nom produit extrait: "${productName}"`);

            // Recherche de la section parent pour déterminer la technologie
            let technologySection = null;
            let currentElement = domElement;

            // Remonte dans le DOM pour trouver la section (Vertuo Capsules ou Original Capsules)
            while (currentElement && !technologySection) {
                const prevSibling = currentElement.previousElementSibling;
                if (prevSibling && prevSibling.tagName === 'H3') {
                    const sectionTitle = prevSibling.textContent.trim().toLowerCase();
                    console.log(`[MiniCart DEBUG] Section trouvée: "${sectionTitle}"`);
                    if (sectionTitle.includes('vertuo')) {
                        technologySection = 'vertuo';
                    } else if (sectionTitle.includes('original')) {
                        technologySection = 'original';
                    }
                }
                currentElement = currentElement.parentElement;
            }

            // Recherche alternative : parcourir les éléments précédents
            if (!technologySection) {
                console.log('[MiniCart DEBUG] Recherche alternative de technologie...');
                const allElements = Array.from(document.querySelectorAll('.MiniBasketItem, h3'));
                const currentIndex = allElements.indexOf(domElement);

                for (let i = currentIndex - 1; i >= 0; i--) {
                    if (allElements[i].tagName === 'H3') {
                        const sectionTitle = allElements[i].textContent.trim().toLowerCase();
                        console.log(`[MiniCart DEBUG] Section alternative: "${sectionTitle}"`);
                        if (sectionTitle.includes('vertuo')) {
                            technologySection = 'vertuo';
                            break;
                        } else if (sectionTitle.includes('original')) {
                            technologySection = 'original';
                            break;
                        }
                    }
                }
            }

            // Extraction du prix comme identifiant supplémentaire
            const priceElement = domElement.querySelector('.MiniBasketItem__price, [class*="price"]');
            const price = priceElement ? priceElement.textContent.trim() : '';

            const signature = {
                productName,
                technologySection: technologySection || 'unknown',
                price,
                domPosition: Array.from(document.querySelectorAll('.MiniBasketItem')).indexOf(domElement)
            };

            console.log('[MiniCart DEBUG] Signature DOM extraite:', signature);
            return signature;
        }

        // Version simplifiée pour le débogage - retour à l'ancienne logique
        function findMatchingProduct(domElement, cartMap) {
            console.log('[MiniCart DEBUG] Recherche de correspondance...');

            const domSignature = extractDomProductSignature(domElement);
            if (!domSignature) {
                console.warn('[MiniCart DEBUG] Impossible d\'extraire la signature DOM');
                return null;
            }

            let bestMatch = null;
            let bestMatchScore = 0;

            // Version simplifiée du matching pour le débogage
            for (const [productId, productData] of cartMap) {
                console.log(`[MiniCart DEBUG] Test correspondance avec: ${productData.productName} (${productId})`);

                const productNameLower = productData.productName.toLowerCase().trim();
                let score = 0;

                // Correspondance exacte du nom
                if (domSignature.productName === productNameLower) {
                    score += 100;
                    console.log(`[MiniCart DEBUG] Correspondance exacte du nom: +100 points`);
                } else if (domSignature.productName.includes(productNameLower.substring(0, Math.min(15, productNameLower.length)))) {
                    score += 80;
                    console.log(`[MiniCart DEBUG] Correspondance partielle du nom: +80 points`);
                } else {
                    console.log(`[MiniCart DEBUG] Pas de correspondance de nom`);
                    continue;
                }

                console.log(`[MiniCart DEBUG] Score total pour ${productData.productName}: ${score}`);

                if (score > bestMatchScore) {
                    bestMatchScore = score;
                    bestMatch = { productId, ...productData };
                    console.log(`[MiniCart DEBUG] Nouveau meilleur match: ${productData.productName} (score: ${score})`);
                }
            }

            if (bestMatch && bestMatchScore >= 80) {
                console.log(`[MiniCart DEBUG] Correspondance finale: ${bestMatch.productName} (${bestMatch.productId}) - Score: ${bestMatchScore}`);
                return bestMatch;
            } else {
                console.warn(`[MiniCart DEBUG] Aucune correspondance fiable trouvée - Meilleur score: ${bestMatchScore}`);
                return null;
            }
        }

        // Fonction principale pour ajouter les boutons
        async function addRemoveButtons() {
            console.log('[MiniCart DEBUG] === Début addRemoveButtons ===');

            // Vérification que le mini-panier est ouvert
            const miniCart = document.querySelector('.MiniBasketDropdown__dropdown--is-open');
            if (!miniCart) {
                console.log('[MiniCart DEBUG] Mini-panier fermé');
                return;
            }
            console.log('[MiniCart DEBUG] Mini-panier ouvert détecté');

            // Nettoyage préventif
            cleanupRemoveButtons();

            try {
                // Récupération des données fraîches du panier
                cartData = await getCartData();
                if (cartData.size === 0) {
                    console.log('[MiniCart DEBUG] Aucune donnée de panier disponible');
                    return;
                }

                // Sélection de tous les items du panier dans le DOM
                const basketItems = document.querySelectorAll('.MiniBasketItem');
                console.log(`[MiniCart DEBUG] ${basketItems.length} items trouvés dans le DOM`);

                if (basketItems.length === 0) {
                    console.warn('[MiniCart DEBUG] Aucun item .MiniBasketItem trouvé dans le DOM');
                    return;
                }

                let buttonsAdded = 0;

                basketItems.forEach((item, index) => {
                    console.log(`[MiniCart DEBUG] Traitement item ${index + 1}/${basketItems.length}`);

                    // Évite de traiter les éléments déjà traités
                    if (item.querySelector('.minicart-remove-btn')) {
                        console.log(`[MiniCart DEBUG] Item ${index + 1} déjà traité`);
                        return;
                    }

                    const matchingProduct = findMatchingProduct(item, cartData);
                    if (!matchingProduct) {
                        console.warn(`[MiniCart DEBUG] Pas de correspondance pour l'item ${index + 1}`);
                        return;
                    }

                    // Création du bouton de suppression
                    const removeBtn = document.createElement('button');
                    removeBtn.className = 'minicart-remove-btn';
                    removeBtn.textContent = translations.removeTitle;
                    removeBtn.setAttribute('data-product-id', matchingProduct.productId);
                    removeBtn.setAttribute('data-item-index', index);

                    // Insertion du bouton dans le DOM
                    const titleElement = item.querySelector('.MiniBasketItem__title');
                    if (titleElement) {
                        titleElement.appendChild(removeBtn);
                        buttonsAdded++;
                        console.log(`[MiniCart DEBUG] Bouton ajouté pour: ${matchingProduct.productName}`);
                    } else {
                        console.warn(`[MiniCart DEBUG] Élément titre non trouvé pour l'item ${index + 1}`);
                    }
                });

                console.log(`[MiniCart DEBUG] === Fin addRemoveButtons - ${buttonsAdded} boutons ajoutés ===`);

            } catch (error) {
                console.error('[MiniCart DEBUG] Erreur lors de l\'ajout des boutons:', error);
            }
        }

        // Fonction de suppression de produit
        async function removeProduct(productId) {
            console.log(`[MiniCart DEBUG] Suppression du produit: ${productId}`);

            try {
                // Vérification de CartManager
                if (!window.CartManager) {
                    console.error('[MiniCart DEBUG] window.CartManager n\'est pas disponible');
                    return;
                }

                // Désactivation temporaire des boutons pendant le traitement
                document.querySelectorAll('.minicart-remove-btn').forEach(btn => {
                    btn.disabled = true;
                });

                // Tracking GTM (optionnel)
                if (window.gtmDataObject) {
                    console.log('[MiniCart DEBUG] Envoi des événements GTM');
                    window.gtmDataObject.push(
                        {
                            event: "customEvent",
                            eventCategory: "Mini-Cart",
                            eventAction: "Product Remove",
                            eventLabel: "Remove Single"
                        },
                        {
                            event: "mini_cart_interaction",
                            event_raised_by: "local_event_fr",
                            action_type: "Product Remove",
                            cart_quotation: "Remove Single",
                            ga4_code: "true"
                        }
                    );
                }

                // Suppression du produit
                console.log('[MiniCart DEBUG] Appel CartManager.updateItem...');
                await window.CartManager.updateItem(productId, 0);
                console.log('[MiniCart DEBUG] Produit supprimé avec succès');

                // Attente que le DOM se stabilise puis reconstruction
                setTimeout(() => {
                    console.log('[MiniCart DEBUG] Reconstruction des boutons après suppression');
                    addRemoveButtons();
                }, config.retryDelay);

            } catch (error) {
                console.error('[MiniCart DEBUG] Erreur lors de la suppression:', error);
                // Ré-activation des boutons en cas d'erreur
                document.querySelectorAll('.minicart-remove-btn').forEach(btn => {
                    btn.disabled = false;
                });
            }
        }

        // Délégation d'événements globale - UNE SEULE FOIS
        function setupEventDelegation() {
            if (isInitialized) {
                console.log('[MiniCart DEBUG] Délégation déjà initialisée');
                return;
            }

            console.log('[MiniCart DEBUG] Configuration de la délégation d\'événements');

            // Gestionnaire unique pour tous les clics sur les boutons de suppression
            document.addEventListener('click', function(event) {
                // Vérification que c'est bien un de nos boutons
                if (!event.target.classList.contains('minicart-remove-btn')) return;

                console.log('[MiniCart DEBUG] Clic sur bouton de suppression détecté');

                event.preventDefault();
                event.stopPropagation();

                const productId = event.target.getAttribute('data-product-id');
                if (productId && !event.target.disabled) {
                    console.log(`[MiniCart DEBUG] Suppression demandée pour: ${productId}`);
                    removeProduct(productId);
                } else {
                    console.warn('[MiniCart DEBUG] Product ID manquant ou bouton désactivé');
                }
            }, true);

            console.log('[MiniCart DEBUG] Délégation d\'événements configurée');
            isInitialized = true;
        }

        // Observateur avec debouncing intelligent (version simplifiée pour le débogage)
        function setupMutationObserver() {
            console.log('[MiniCart DEBUG] Configuration du MutationObserver');

            const observer = new MutationObserver(function(mutations) {
                let shouldProcess = false;

                mutations.forEach(function(mutation) {
                    if (mutation.type === 'childList') {
                        const addedNodes = Array.from(mutation.addedNodes);
                        const removedNodes = Array.from(mutation.removedNodes);

                        const cartRelated = [...addedNodes, ...removedNodes].some(node => {
                            if (node.nodeType !== Node.ELEMENT_NODE) return false;
                            return node.classList?.contains('MiniBasketDropdown') ||
                                node.classList?.contains('MiniBasketItem') ||
                                node.querySelector?.('.MiniBasketDropdown, .MiniBasketItem');
                        });

                        if (cartRelated) {
                            shouldProcess = true;
                        }
                    }
                });

                if (shouldProcess) {
                    console.log('[MiniCart DEBUG] Changement détecté dans le mini-panier');
                    // Debouncing
                    clearTimeout(processingTimeout);
                    processingTimeout = setTimeout(() => {
                        const miniCartOpen = document.querySelector('.MiniBasketDropdown__dropdown--is-open');
                        if (miniCartOpen) {
                            console.log('[MiniCart DEBUG] Reconstruction des boutons suite à changement DOM');
                            addRemoveButtons();
                        }
                    }, config.debounceDelay);
                }
            });

            observer.observe(document.body, {
                childList: true,
                subtree: true
            });

            console.log('[MiniCart DEBUG] MutationObserver configuré');
        }

        // Initialisation
        function initialize() {
            console.log('[MiniCart DEBUG] === INITIALISATION ===');

            try {
                injectStyles();
                setupEventDelegation();
                setupMutationObserver();

                // Traitement initial si le mini-panier est déjà ouvert
                const miniCartAlreadyOpen = document.querySelector('.MiniBasketDropdown__dropdown--is-open');
                if (miniCartAlreadyOpen) {
                    console.log('[MiniCart DEBUG] Mini-panier déjà ouvert, traitement initial');
                    setTimeout(() => {
                        addRemoveButtons();
                    }, config.retryDelay);
                } else {
                    console.log('[MiniCart DEBUG] Mini-panier fermé au démarrage');
                }

                console.log('[MiniCart DEBUG] === INITIALISATION TERMINÉE ===');
            } catch (error) {
                console.error('[MiniCart DEBUG] Erreur lors de l\'initialisation:', error);
            }
        }

        // Démarrage du script
        try {
            initialize();
        } catch (error) {
            console.error('[MiniCart DEBUG] Erreur fatale au démarrage:', error);
        }

    }();
</script></div>

<div id="block-8833950143989" class="free-html" data-label=""  >
    <link rel="stylesheet" href="https://www.nespresso.com/shared_res/mos/free_html/fr/b2c/newsletter/popin-prospect.css">

<div id="freehtmlmainouterwrapper">
    <div class="newsletter_opt_in track-impression-promotion" data-promotion-item-id="noi_popup" id="newsletter_opt_in"
        data-format="1">
        <div class="wrapper_outter">
            <div class="wrapper_inner">
                <div class="bg_content">
                    <div class="bg_image"></div>
                </div>
                <div class="content_outter">
                    <div class="content_inner">
                        <div class="content_header">
                            <div class="noi_close_wrapper">
                                <div class="noi_close"></div>
                            </div>
                            <div class="noi_logo"></div>
                        </div>
                        <div class="noi_screens_outter">
                            <div class="noi_screens">
                                <div class="noi_content">
                                    <div class="noi_headline" data-text="headline"></div>
                                    <div class="noi_cta_wrapper intro">
                                        <div class="noi_cta" data-text="cta_step1_format_2" id="noi_cta_format2"></div>
                                    </div>
                                    <div class="format_3_content">
                                        <div class="format_3_left">
                                            <div class="noi_logo"></div>
                                        </div>
                                        <div class="format_3_right">
                                            <div class="noi_headline" data-text="headline_format_3"></div>
                                            <div class="noi_intro_text" data-text="intro_text"></div>
                                        </div>
                                    </div>
                                    <div class="basic_content">
                                        <div class="noi_intro_text" data-text="intro_text"></div>
                                        <div class="noi_terms_wrapper">
                                            <label for="noi_terms" class="checkbox_container">
                                                <input type="checkbox" name="noi_terms" id="noi_terms" value="1" />
                                                <span class="checkmark"></span>
                                                <div class="noi_terms_text" data-text="terms_text"></div>
                                            </label>
                                        </div>
                                        <div class="noi_cta_wrapper">
                                            <div class="noi_cta" data-text="cta" id="noi_cta"></div>
                                        </div>
                                        <div class="noi_terms_text_bottom" data-text="legal_text"></div>
                                    </div>
                                </div>
                                <div class="noi_success">
                                    <div class="noi_success_headline" data-text="success_headline"></div>
                                    <div class="noi_success_text" data-text="success_text"></div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="format_3_bg"></div>
            </div>
            <div class="close_wrapper"></div>
        </div>
    </div>
</div>

<script>
    var noi_texts = {
        headline: "<b>CRÉONS UN LIEN PRIVILIÉGÉ</b>",
        headline_format_3: "<b>CRÉONS UN LIEN PRIVILIÉGÉ</b>",
        intro_text: "Recevez par email des offres personnalisées et avantages exclusifs réservés aux Membres du Club Nespresso, ainsi que les nouveautés et collaborations.",
        terms_text:
            "Je souhaite recevoir des e-mails de la <span class='noi_tooltip'><b>Famille Nespresso</b></span> concernant des offres exclusives et des nouveaux cafés*.",
        terms_tooltip: "Nespresso France SAS, Nestlé Nespresso SA, Nestlé France SAS ",
        cta: "JE M'INSCRIS",
        cta_not_loggedin: "MERCI DE VOTRE VISITE",
        cta_step1_format_2: "EN SAVOIR PLUS MAINTENANT",
        legal_text:
            "* Vous pouvez vous désinscrire de la newsletter à tout moment dans la rubrique Mon Compte. Vous trouverez plus d’informations dans notre <a href='https://www.nespresso.com/fr/fr/politique-protection-des-donnees-personnelles' style='color: #986f38' target='_blank'>politique de confidentialité</a>.",
        success_headline: "MERCI,<br/>VOTRE INSCRIPTION EST ENREGISTRÉE",
        success_text: "Vous recevrez prochainement nos communications.<br/>A bientôt !",
    };

    var noi_settings = {
        timeout: 3000,
        show_for_logged_in: true,
        show_for_not_logged_in: false,
    };

    function _typeof(e) {
        return (_typeof =
            "function" == typeof Symbol && "symbol" == typeof Symbol.iterator
                ? function (e) {
                    return typeof e;
                }
                : function (e) {
                    return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype
                        ? "symbol"
                        : typeof e;
                })(e);
    }

    function checkIfClientAlreadyHas() {
        var isSubscribed = false,
            isLoggedIn = false,
            hasConsent = false,
            alreadyClosed = localStorage.getItem("noi_popup_finished_or_closed") !== null;

        if (!alreadyClosed) {
            if (typeof napi !== "undefined" && napi) {
                napi.customer()
                    .read()
                    .then(
                        function (data) {
                            isLoggedIn = true;
                            var optIns = data.optIns || [];
                            for (var i = 0; i < optIns.length; i++) {
                                if (optIns[i] === "Email") {
                                    isSubscribed = true;
                                    break;
                                }
                            }
                            if (!isSubscribed && noi_settings.show_for_logged_in) {
                                showNewsletterOptInPopup(isLoggedIn);
                            }
                        },
                        function () {
                            var cookies = document.cookie.split("; ");
                            for (var i = 0; i < cookies.length; i++) {
                                if (cookies[i].indexOf("_evidon_consent_cookie") !== -1) {
                                    hasConsent = true;
                                    break;
                                }
                            }
                            if (hasConsent && noi_settings.show_for_not_logged_in) {
                                showNewsletterOptInPopup(isLoggedIn);
                            }
                        }
                    );
            }
        }
    }

    async function setClientNewsletterOptIn(successCallback, errorCallback) {
        localStorage.setItem("noi_popup_finished_or_closed", "finished");

        try {
            const res = await fetch("/ecapi/customers/v7/fr/b2c/me/preferences", {
                method: "PATCH",
                credentials: "include",
                headers: { "Content-Type": "application/json" },
                body: JSON.stringify({
                    contactPreferences: {
                        newsSubscription: true,
                        contactMeans: [
                            { name: "Email", accepted: true, changeType: "EXPLICIT" },
                        ],
                    },
                }),
            });

            if (!res.ok) throw new Error(">> Failed to update subscription");

            if (typeof successCallback !== "undefined") successCallback();
        } catch (e) {
            if (typeof errorCallback !== "undefined") errorCallback();
        }
    }

    function showNewsletterOptInPopup(isLoggedIn) {
        if (typeof promotionsOnScroll === "undefined") {
            promotionsOnScroll = { currencyCode: "EUR" };
        }

        promotionsOnScroll.noi_popup = {
            creative: "noi_popup_shown",
            id: "noi_popup",
            name: "noi_popup",
            position: "freehtml_noi_popup",
        };

        $("#newsletter_opt_in").attr("data-loggedin", isLoggedIn);
        if (!isLoggedIn) {
            $("#noi_cta").html(noi_texts.cta_not_loggedin);
        }

        setTimeout(function () {
            $(".newsletter_opt_in .wrapper_outter").addClass("shown");

            if ($("#newsletter_opt_in").data("format") === 1) {
                $("html, body").css("overflow", "hidden");
            }

            window.gtmDataObject = window.gtmDataObject || [];
            gtmDataObject.push({
                event: "local_event",
                event_raised_by: "local_market_fr",
                local_event_category: "newsletter popup",
                local_event_action: "display",
                local_event_label: "newsletter popup",
            });
        }, noi_settings.timeout);
    }

    $().ready(function () {
        if ($("#newsletter_opt_in").data("format") == 2) {
            $("#newsletter_opt_in").addClass("init_small");
            $("#newsletter_opt_in .noi_content").addClass("init_hidden");
        }

        $("#noi_cta_format2").click(function () {
            gtmDataObject = window.gtmDataObject || [];
            gtmDataObject.push({
                event: "local_event",
                eventRaisedBy: "local_market_fr",
                local_event_category: "newsletter popup 2025",
                local_event_action: "click",
                local_event_label: "noi_popup_1ststep_clicked",
            });

            $("#newsletter_opt_in").removeClass("init_small");

            setTimeout(function () {
                $("#newsletter_opt_in .noi_content").removeClass("init_hidden");
            }, 500);
        });

        $.each($("#newsletter_opt_in").find("[data-text!='']"), function (e, t) {
            var key = $(t).data("text");
            if (key != null) $(t).html(noi_texts[key]);
        });

        $(".noi_tooltip").prepend(
            '<span class="inline_tooltip" data-text="terms_tooltip">' +
            noi_texts.terms_tooltip +
            "</span>"
        );

        $("#newsletter_opt_in .noi_close, #newsletter_opt_in .close_wrapper").click(function () {
            var isOverlayClick = $(this).hasClass("close_wrapper");
            var isCloseButtonClick = $(this).hasClass("noi_close");
            var windowWidth = window.innerWidth;
            if (!isOverlayClick || windowWidth > 700) {
                $(".newsletter_opt_in .wrapper_outter").removeClass("shown");
                $("html, body").css("overflow", "scroll");
                localStorage.setItem("noi_popup_finished_or_closed", "closed");
            }

            window.gtmDataObject = window.gtmDataObject || [];

            if (isOverlayClick) {
                gtmDataObject.push({
                    event: "local_event",
                    event_raised_by: "local_market_fr",
                    local_event_category: "newsletter popup",
                    local_event_action: "click",
                    local_event_label: "newsletter popup - overlay",
                });
            } else if (isCloseButtonClick) {
                gtmDataObject.push({
                    event: "local_event",
                    event_raised_by: "local_market_fr",
                    local_event_category: "newsletter popup",
                    local_event_action: "click",
                    local_event_label: "newsletter popup - fermer x",
                });
            }

        });

        $("#newsletter_opt_in #noi_cta").click(function () {
            if ($('#newsletter_opt_in[data-loggedin="true"]').length) {
                if ($("#noi_terms:checked").length) {
                    $("#newsletter_opt_in .content_inner").css(
                        "min-height",
                        $("#newsletter_opt_in .content_inner").outerHeight() + "px"
                    );
                    $("#newsletter_opt_in").addClass("success");

                    gtmDataObject = window.gtmDataObject || [];
                    gtmDataObject.push({
                        event: "local_event",
                        event_raised_by: "local_market_fr",
                        local_event_category: "newsletter popup",
                        local_event_action: "display",
                        local_event_label: "newsletter popup - confirmation",
                    });

                    setClientNewsletterOptIn();
                } else {
                    $(".noi_terms_wrapper").addClass("error");
                    gtmDataObject.push({
                        event: "local_event",
                        event_raised_by: "local_market_fr",
                        local_event_category: "newsletter popup",
                        local_event_action: "display",
                        local_event_label: "newsletter popup - erreur",
                    });
                    setTimeout(function () {
                        $(".noi_terms_wrapper").removeClass("error");
                    }, 2000);
                }
            } else {
                document.location =
                    "https://www.nespresso.com/fr/fr/secure/login?destination-redirect=" +
                    encodeURIComponent(window.location.pathname);
            }
        });

        checkIfClientAlreadyHas();
    });
</script></div>

<div id="block-8833819858421" class="free-html" data-label=""  >
    <style>
    /* Cacher le 0/NaN sur les petits boutons AddToBag (icône +) - PAS les boutons avec texte */
    nb-add-to-cart button.AddToBagButtonSmall {
        font-size: 0 !important;
    }
    nb-add-to-cart button.AddToBagButtonSmall::after {
        content: "+";
        font-size: 1.25rem;
    }

    nb-qs {
        padding: unset !important;
        border-radius: 30px !important;

    }

    nb-qs .custom {
        margin-top: 0rem;
        height: 57px;
    }

    /* Bouton AddToBag */
    .AddToBagButtonSmall {
        border-radius: 30px !important;
    }

    .ProductDetails__information .QuantitySelector__container .QuantitySelector__popin--top {
        transform: translate(53%, -100%) !important;
    }

    .Quickview .QuantitySelector__container .QuantitySelector__popin--top {
        transform: translate(47%, -100%) !important;
    }

    .sku-main-info__container .QuantitySelector__container .QuantitySelector__popin--top {
        transform: translate(105%, -100%) !important;
    }

    nb-sku-accessory .QuantitySelector__container .QuantitySelector__popin--top {
        transform: translate(38%, -100%) !important;
    }

    nb-slider-natural .QuantitySelector__container .QuantitySelector__popin--top {
        transform: translate(70%, -100%) !important;
    }

    nb-qs .QuantitySelector__container .QuantitySelector__popin--top {
        transform: translate(40%, -100%) !important;
    }

    /* Support pour les conteneurs - NOUVELLE STRUCTURE */
    .QuantitySelector__container,
    [class*="PickerDialogTooltip_"]{
        position: relative !important;
    }

    /* Conteneur principal du pop-in - TOUTES STRUCTURES */
    .QuantitySelector__popin,
    .QuantitySelector__container .QuantitySelector__popin,
    [class*="PickerDialogTooltip_"]{
        border-radius: 24px !important;
        background-color: white !important;
        width: 15.6rem !important;
        font-size: .85rem !important;
        padding: 0.8rem !important;
        box-shadow: 0px 0px 14px -1px rgb(208 208 208) !important;
        /* position: relative !important; wtf ????*/
    }

    /* Liste des quantités prédéfinies - TOUTES STRUCTURES */
    .PredefinedQuantityList,
    .QuantitySelector__container .PredefinedQuantityList {
        display: flex !important;
        flex-wrap: wrap !important;
        justify-content: center !important;
        gap: 0 !important;
        margin: 0 !important;
        padding: 0 !important;
        list-style: none !important;
    }

    /* Éléments de quantité individuelle - TOUTES STRUCTURES */
    .PredefinedQuantityList__quantity,
    .QuantitySelector__container .PredefinedQuantityList__quantity {
        border-bottom: .0625rem solid #ebebeb !important;
        width: 2.6rem !important;
        height: 2.6rem !important;
        margin: 0 !important;
        padding: 0 !important;
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
    }

    /* Supprime la bordure du bas pour les 5 derniers éléments - TOUTES STRUCTURES */
    .PredefinedQuantityList__quantity:nth-last-child(-n+5),
    .QuantitySelector__container .PredefinedQuantityList__quantity:nth-last-child(-n+5) {
        border-bottom: none !important;
    }

    /* Boutons de quantité - TOUTES STRUCTURES */
    .PredefinedQuantityList__quantity-button,
    .QuantitySelector__container .PredefinedQuantityList__quantity-button {
        width: 100% !important;
        height: 100% !important;
        border: none !important;
        background: transparent !important;
        border-radius: 12px !important;
        transition: all .25s ease !important;
        cursor: pointer !important;
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
        font-size: inherit !important;
        color: inherit !important;
    }

    .PredefinedQuantityList__quantity-button:enabled:hover,
    .QuantitySelector__container .PredefinedQuantityList__quantity-button:enabled:hover {
        background-color: #f2f2f2 !important;
        font-weight: 500 !important;
        transform: scale(1.05) !important;
    }

    .PredefinedQuantityList__quantity-button:enabled:active,
    .QuantitySelector__container .PredefinedQuantityList__quantity-button:enabled:active {
        background-color: black !important;
        font-weight: 500 !important;
        color: white !important;
        transform: scale(0.95) !important;
    }

    /* Conteneur du champ personnalisé - TOUTES STRUCTURES */
    .QuantitySelectorCustomField__container,
    .QuantitySelector__container .QuantitySelectorCustomField__container {
        display: flex !important;
        margin-top: 1rem !important;
        border-radius: 12px !important;
        overflow: hidden !important;
        border: 1px solid #ebebeb !important;
    }

    /* Champ de texte - TOUTES STRUCTURES */
    .QuantitySelectorCustomField__container .TextField,
    .QuantitySelector__container .QuantitySelectorCustomField__container .TextField {
        flex: 1 !important;
        margin: 0 !important;
    }

    .QuantitySelectorCustomField__container .TextField__group,
    .QuantitySelector__container .QuantitySelectorCustomField__container .TextField__group {
        border: none !important;
        border-radius: 0 !important;
    }

    .QuantitySelectorCustomField__container .TextField__input,
    .QuantitySelector__container .QuantitySelectorCustomField__container .TextField__input {
        border: none !important;
        border-radius: 0 !important;
        padding: 15px 0 5px 12px !important;
        font-size: .85rem !important;
    }

    .TextField__label--compact,
    .QuantitySelector__container .TextField__label--compact {
        left: 12px !important;
        top: 12px !important;
        font-size: .85rem !important;
        color: #999 !important;
        transition: all .25s ease !important;
    }

    .TextField--active .TextField__label--compact,
    .QuantitySelector__container .TextField--active .TextField__label--compact {
        color: #6F6F70 !important;
        text-transform: uppercase !important;
        top: 2px !important;
        font-size: 0.55rem !important;
        font-weight: 500 !important;
    }

    /* Bouton OK - TOUTES STRUCTURES */
    .QuantitySelectorCustomField__button-ok,
    .QuantitySelector__container .QuantitySelectorCustomField__button-ok {
        background: #000 !important;
        color: white !important;
        border: none !important;
        padding: 0 1.5rem !important;
        font-family: inherit !important;
        font-weight: 500 !important;
        cursor: pointer !important;
        transition: all .25s ease !important;
        min-width: 60px !important;
    }

    .QuantitySelectorCustomField__button-ok:hover,
    .QuantitySelector__container .QuantitySelectorCustomField__button-ok:hover {
        background: #333 !important;
        transform: translateY(-1px) !important;
    }

    .QuantitySelectorCustomField__button-ok:active,
    .QuantitySelector__container .QuantitySelectorCustomField__button-ok:active {
        transform: translateY(0) !important;
    }

    /* Loader avec grain de café Nespresso - TOUTES STRUCTURES */
    .qty-selector-loader {
        position: absolute !important;
        top: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
        left: 0 !important;
        background: rgba(255, 255, 255, 0.95) !important;
        z-index: 2100 !important;
        border-radius: 24px !important;
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
        opacity: 0 !important;
        transition: opacity .3s ease !important;
    }

    .qty-selector-loader.is-visible {
        opacity: 1 !important;
    }

    .qty-selector-loader .loader-icon {
        width: 24px !important;
        height: 24px !important;
        background-image: url("https://www.nespresso.com/shared_res/mos/free_html/fr/b2c/pictos/grain_coffee.png") !important;
        background-size: contain !important;
        background-repeat: no-repeat !important;
        animation: spin 1s linear infinite !important;
    }

    @keyframes spin {
        0% {
            transform: rotate(0deg);
        }

        100% {
            transform: rotate(360deg);
        }
    }

    /* Icône de poubelle pour le bouton "0" (supprimer) - TOUTES STRUCTURES */
    #ta-quantity-selector__predefined-0 span.notranslate,
    .QuantitySelector__container #ta-quantity-selector__predefined-0 span.notranslate {
        display: none !important;
    }

    #ta-quantity-selector__predefined-0,
    .QuantitySelector__container #ta-quantity-selector__predefined-0 {
        position: relative !important;
    }

    #ta-quantity-selector__predefined-0:before,
    .QuantitySelector__container #ta-quantity-selector__predefined-0:before {
        content: "" !important;
        display: inline-block !important;
        width: 18px !important;
        height: 17px !important;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='currentColor'%3E%3Cpath d='M16 5c0-1.27-.73-2-2-2h-4c-1.27 0-2 .73-2 2H3v1h1.08l2 16H18l2-16h1V5h-5Zm-6-1h4c.72 0 1 .28 1 1H9c0-.72.28-1 1-1Zm7.12 17H6.96L5.08 6H19l-1.88 15Z'/%3E%3Cpath d='M9.46 19 8.54 8h-1l.92 11h1ZM12.5 8h-1v11h1V8ZM16.46 8h-1l-.92 11h1l.92-11Z'/%3E%3C/svg%3E") !important;
        background-size: contain !important;
        background-repeat: no-repeat !important;
        background-position: center !important;
        vertical-align: middle !important;
    }

    #ta-quantity-selector__predefined-0:hover:before,
    .QuantitySelector__container #ta-quantity-selector__predefined-0:hover:before {
        filter: brightness(0) invert(1) !important;
        transform: scale(1.05) !important;
        transition: all 0.2s ease !important;
    }

    /* Animations pour les interactions - TOUTES STRUCTURES */
    @keyframes button-pulse {
        0% {
            transform: scale(1);
        }

        50% {
            transform: scale(1.1);
        }

        100% {
            transform: scale(1);
        }
    }

    .PredefinedQuantityList__quantity-button.animate-click,
    .QuantitySelector__container .PredefinedQuantityList__quantity-button.animate-click {
        animation: button-pulse 0.3s ease !important;
    }

    /* === STYLES DE DÉMONSTRATION (optionnels) === */
    body {
        font-family: 'Helvetica Neue', Arial, sans-serif;
        background-color: #f5f5f5;
        margin: 0;
    }

    .demo-container {
        max-width: 800px;
        margin: 0 auto;
        background: white;
        padding: 20px;
        border-radius: 12px;
        box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
    }

    .demo-section {
        margin-bottom: 30px;
        padding: 20px;
        border: 1px solid #e0e0e0;
        border-radius: 8px;
    }


    .code-block {
        background: #2c3e50;
        color: #ecf0f1;
        border-radius: 4px;
        padding: 15px;
        font-family: 'Courier New', monospace;
        font-size: 14px;
        overflow-x: auto;
        margin: 10px 0;
    }

    .hidden-elements {
        position: absolute;
        left: -9999px;
        opacity: 0;
    }

    .VisuallyHidden {
        position: absolute;
        width: 1px;
        height: 1px;
        padding: 0;
        margin: -1px;
        overflow: hidden;
        clip: rect(0, 0, 0, 0);
        white-space: nowrap;
        border: 0;
    }

    .TextField {
        position: relative;
    }

    .TextField__label {
        position: absolute;
        pointer-events: none;
        transition: all 0.25s ease;
    }

    nb-qs.hide-bg {
        background-color: transparent !important;
        /* ou display:none sur certains éléments */
        /* cacher ce que tu veux ici */
    }

    nb-qs.hide-bg form {
        display: block !important;
        /* forcer l'affichage du formulaire */
    }
</style>

<style id="abo-cafe">
    /* Parent du bouton : pour que position absolute fonctionne */
    ._ProductList__quantity-show_5el9s_10 {
        position: relative;
    }

    /* Tooltip */
    [class*="PickerDialogTooltip_"]{
        position: absolute !important;
        top: 50% !important;
        right: 100% !important;
        transform: translateX(-230px) translateY(-50%) !important;
        inset: auto !important;
        z-index: 1000;
        width: 270px !important;
    }

    /* Grille des boutons */
    [class*="QuantityPicker__buttons_"] {
        display: grid;
        grid-template-columns: repeat(5, 1fr);
        gap: 0;
    }

    /* Style des cellules */
    .quantity-cell {
        border: 1px solid #ebebeb;
        border-bottom: none;
        border-right: none;
        display: flex;
        align-items: center;
        justify-content: center;
        aspect-ratio: 1 / 1;
        padding: 0;
        margin: 0;
    }

    /* Suppression bordures redondantes */
    [class*="QuantityPicker__buttons_"]>.quantity-cell:nth-child(5n + 1) {
        border-left: none;
    }

    [class*="QuantityPicker__buttons_"]>.quantity-cell:nth-child(-n + 5) {
        border-top: none;
    }

    /* Container des boutons */
    [class*="QuantityPicker__container_"] {
        padding: 0 !important;
    }

    /* Boutons de sélection */
    [class*="QuantityPicker__quantitySelector_"]
    {
        width: 80%;
        height: 80%;
        aspect-ratio: 1 / 1;
        display: flex;
        align-items: center;
        justify-content: center;
        background-color: transparent;
        border: 1px solid transparent;
        border-radius: 50%;
        cursor: pointer;
        transition: border 0.2s, background-color 0.2s;
        font-size: 14px;
    }

    [class*="QuantityPicker__quantitySelector_"]:hover,
    [class*="QuantityPicker__quantitySelector_"]:focus,
    [class*="QuantitySelector_"]:hover:not([disabled]) {
        border-color: #ccc !important;
        color: #000000;
        outline: none;
    }


    /* Responsive boutons */
    @media (max-width: 768px) {
        [class*="QuantityPicker__quantitySelector_"] {
            flex: 1 0 45%;
            max-width: 45%;
        }
    }

    @media (max-width: 480px) {
        [class*="QuantityPicker__quantitySelector_"] {
            flex: 1 0 100%;
            max-width: 100%;
        }

        [class*="QuantityPicker__buttons_"] {
            width: 80%;
            margin: 0 auto;
        }

         [class*="TextFieldButton_"]{
            display: flex;
            align-items: center;
            gap: 10px;
            width: 250px;
            margin: 10px auto 0 auto;
        }

         [class*="TextFieldButton_"]input {
            flex: 1 1 auto;
            min-width: 0;
        }

        #TextFieldButton__button__QuantityPicker__1 {
            flex-shrink: 0;
            width: auto;
            /* ou fixe si tu préfères */
        }

        [class*="QuantitySelector_"],
        [class*="QuantityPicker__quantitySelector_"],
        [class*="QuantitySelector--selected_"] {
            border-radius: 10px !important;
        }
    }

    /* Conteneur input + bouton OK */
     [class*="TextFieldButton_"]{
        margin-top: 10px;
        display: flex;
        gap: 10px;
        flex-wrap: wrap;
    }

    /* Bouton sélectionné */
    [class*="QuantitySelector--selected_"] {
        color: #000000;
        background-color: #e0e0e0;
    }

    /* Centrer l'icône Corbeille */
    [class*="QuantityPicker__quantitySelector_"] img {
        display: block;
        margin: auto;
        pointer-events: none;
        width: 18px;
        height: 18px;
    }

    /* ➤ Supprimer la bordure bleue au focus sur le champ */
    ._textinput_16wjm_1:focus {
        outline: none !important;
        box-shadow: none !important;
        border: 1px solid #e0e0e0 !important;
    }

    label[for^="TextFieldButton__input__QuantityPicker__"] {
        font-size: 13px !important;
    }

    #TextFieldButton__button__QuantityPicker__1 {
        transition: opacity 0.2s ease-in-out;
    }

    /* ➤ Effet hover opacité sur le bouton OK */
    #TextFieldButton__button__QuantityPicker__1:hover {
        opacity: 0.8 !important;
    }

    /* Centrer la modal responsive */
    #PickerDialogModal {
        position: fixed !important;
        top: 50% !important;
        left: 50% !important;
        transform: translate(-50%, -50%) !important;
        margin: 0 !important;
        padding-top: 10px;

        border-radius: 1rem;

        width: 320px !important;
        max-width: 95vw;
        min-width: 200px;

        max-height: 95vh;
        overflow-y: auto;
        z-index: 9999;
    }
</style>

<style id="override-abo">
    .QuantitySelector__popin {
        border: 1px groove !important;
    }

    nb-qs,
    nb-qs fieldset,
    nb-qs .custom input {
        border: none !important;
    }


    ._textinput_16wjm_1,
    [class*="PickerDialogTooltip_"]{
        border-color: #ebebeb !important;
    }
</style>

<script>
    // === NESPRESSO QUANTITY SELECTOR BEAUTIFIER v1.3 - JAVASCRIPT ===

    // Fix NaN sur les boutons AddToBag - Observer et corriger
    (function fixNaNOnAddToBagButtons() {
        const observer = new MutationObserver((mutations) => {
            mutations.forEach((mutation) => {
                if (mutation.type === 'characterData' || mutation.type === 'childList') {
                    const target = mutation.target;
                    // Vérifier si c'est un bouton nb-add-to-cart avec NaN
                    const btn = target.closest ? target.closest('nb-add-to-cart button') : null;
                    if (btn && btn.textContent.trim() === 'NaN') {
                        btn.textContent = '+';
                    }
                    // Vérifier aussi les boutons enfants
                    if (target.querySelectorAll) {
                        target.querySelectorAll('nb-add-to-cart button').forEach(b => {
                            if (b.textContent.trim() === 'NaN') {
                                b.textContent = '+';
                            }
                        });
                    }
                }
            });
        });
        observer.observe(document.body, { childList: true, subtree: true, characterData: true });
        
        // Fix initial au chargement
        document.querySelectorAll('nb-add-to-cart button').forEach(b => {
            if (b.textContent.trim() === 'NaN') {
                b.textContent = '+';
            }
        });
    })();

    $(document).ready(function () {

        // Classe JavaScript pour gérer les interactions
        class QuantitySelectorBeautifier {
            constructor() {
                this.init();
                this.initFieldInteractions();
                this.initQuantitySelectorManagement();
                this.observeForBackup();
                this.observeForAboCoffeeBackup();
            }

            init() {
                // Gestion des clics sur les boutons de quantité prédéfinie
                $(document).on('click', '.PredefinedQuantityList__quantity-button', (event) => {
                    this.handleQuantityButtonClick(event);
                });

                // Gestion du bouton OK du champ personnalisé
                $(document).on('click', '.QuantitySelectorCustomField__button-ok', (event) => {
                    this.handleCustomOkClick(event);
                });

                // Gestion de la soumission du formulaire
                $(document).on('submit', '.QuantitySelectorCustomField__container', (event) => {
                    event.preventDefault();
                    this.handleCustomOkClick(event);
                });
            }

            initQuantitySelectorManagement() {

                // Intercepter les clics sur AddToBag AVANT qu'ils se propagent
                $(document).on('click', '.AddToBagButton, .AddToBagButtonSmall', (event) => {


                    // Vérifier s'il y a des selectors ouverts (deux structures possibles)
                    const $existingSelectors = $('.QuantitySelector__popin:visible, .QuantitySelector__container:visible .QuantitySelector__popin');

                    if ($existingSelectors.length > 0) {

                        // Fermer de manière native avec un clic sur body
                        $(document.body).trigger('click');

                        // Petite pause pour laisser la fermeture se faire
                        setTimeout(() => {
                        }, 50);
                    } else {
                    }

                    // IMPORTANT: Laisser le clic se propager normalement
                });

                // Observer simple pour les logs


            }

            initNbQsToggle() {
                // Cibler les nb-qs
                $(document).on('click', 'nb-qs', (event) => {
                    const $nbQs = $(event.currentTarget);
                    // Toggle class pour cacher le background ou autre
                    $nbQs.toggleClass('hide-bg');

                    // Important : garder visible le formulaire à l'intérieur
                    // Par exemple, on peut forcer l'affichage du form via CSS si besoin
                    $nbQs.find('form').show();

                });
            }

            observeForBackup() {
                const validProductIds = ["7912.20", "7021.20", "7813.20", "7037.20"];

                const coffeeLoaderObserver = new MutationObserver((mutations) => {
                    mutations.forEach((mutation) => {
                        if (mutation.type === 'childList') {
                            mutation.addedNodes.forEach((node) => {
                                if (node.nodeType !== 1) return;

                                const $node = $(node);

                                const isQuantitySelector =
                                    $node.hasClass('QuantitySelector__popin') ||
                                    $node.hasClass('QuantitySelector__container') ||
                                    $node.find('.QuantitySelector__popin').length > 0 ||
                                    $node.find('.QuantitySelector__container').length > 0;

                                if (isQuantitySelector) {

                                    // 1. Cas add-to-bag
                                    const $addToBag = $node.closest('.add-to-bag[data-product-id][data-initialized="true"]');
                                    if ($addToBag.length > 0) {
                                        const productId = String($addToBag.data('product-id'));
                                        if (validProductIds.includes(productId)) {
                                            this.removeLastLiFromProductLists([productId]);
                                        }
                                        return;
                                    }

                                    // 2. Cas nb-add-to-cart
                                    const $nbAddToCart = $node.closest('nb-add-to-cart[sku]');
                                    if ($nbAddToCart.length > 0) {
                                        const sku = String($nbAddToCart.attr('sku'));
                                        if (validProductIds.includes(sku)) {
                                            this.removeLastLiFromProductLists([sku], 5, 'sku');
                                        }
                                        return;
                                    }

                                    // 3. Cas nb-add-to-cart-standalone
                                    const $nbAddToCartStandalone = $node.closest('nb-add-to-cart-standalone');
                                    if ($nbAddToCartStandalone.length > 0) {
                                        const dataAttr = $nbAddToCartStandalone.attr('data');

                                        try {
                                            const parsedData = JSON.parse(dataAttr);
                                            const sku = String(parsedData?.sku);
                                            if (validProductIds.includes(sku)) {
                                                this.removeLastLiFromProductLists([sku], 5, 'sku');
                                            }
                                        } catch (e) {
                                            console.warn('⚠️ Erreur lors du parsing de l\'attribut data:', e);
                                        }

                                        return;
                                    }

                                }

                                // Optionnel : nb-qs
                                if ($node.closest('nb-qs').length > 0) {
                                    this.modifyNbQs($node.closest('nb-qs'));
                                }
                            });
                        }
                    });
                });

                coffeeLoaderObserver.observe(document.body, {
                    childList: true,
                    subtree: true
                });
            }


            observeForAboCoffeeBackup() {
                const quantityCellObserver = new MutationObserver(mutations => {
                    mutations.forEach(mutation => {
                        mutation.addedNodes.forEach(node => {
                            if (node.nodeType === Node.ELEMENT_NODE) {

                                // --- Grille de quantités ---
                                if ([...node.classList].some(c => c.startsWith('QuantityPicker__buttons_'))){
                                    wrapButtons(node);
                                } else {
                                   const container = node.querySelector && node.querySelector('[class*="QuantityPicker__buttons_"]');
                                    if (container) {
                                        wrapButtons(container);
                                    }
                                }

                                // --- Champ input + bouton OK ---
                                if (node.matches && node.matches('[class*="TextFieldButton_"]')) {
                                    customizeQuantityInputUI();
                                } else {
                                    const tfbContainer = node.querySelector && node.querySelector('[class*="TextFieldButton_"]');
                                    if (tfbContainer) {
                                        customizeQuantityInputUI();
                                    }
                                }

                                // --- Suppression du header dans le dialog ---
                                const dialog = node.matches?.('dialog#PickerDialogModal') ? node : node.querySelector?.('dialog#PickerDialogModal');
                                if (dialog) {
                                    const header = dialog.querySelector('header._header_6fiog_60');
                                    if (header) {
                                        header.remove();
                                    }
                                }
                            }
                        });
                    });
                });

                // Fonction pour entourer les boutons d'une div.quantity-cell
                function wrapButtons(container) {
                    const buttons = container.querySelectorAll('[class*="QuantityPicker__quantitySelector_"]');
                    buttons.forEach(button => {
                        if (!button.parentElement.classList.contains('quantity-cell')) {
                            const wrapper = document.createElement('div');
                            wrapper.className = 'quantity-cell';
                            button.replaceWith(wrapper);
                            wrapper.appendChild(button);
                        }

                        if (button.textContent.trim() === '0') {
                            button.innerHTML = `
                    <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='currentColor'%3E%3Cpath d='M16 5c0-1.27-.73-2-2-2h-4c-1.27 0-2 .73-2 2H3v1h1.08l2 16H18l2-16h1V5h-5Zm-6-1h4c.72 0 1 .28 1 1H9c0-.72.28-1 1-1Zm7.12 17H6.96L5.08 6H19l-1.88 15Z'/%3E%3Cpath d='M9.46 19 8.54 8h-1l.92 11h1ZM12.5 8h-1v11h1V8ZM16.46 8h-1l-.92 11h1l.92-11Z'/%3E%3C/svg%3E" 
                         alt="Supprimer" 
                         width="24" 
                         height="24" 
                         style="pointer-events: none;" />
                `;
                        }
                    });
                }

                // Personnalisation de l'input et du bouton OK
                function customizeQuantityInputUI() {
                    const label = document.querySelector('label[for^="TextFieldButton__input__QuantityPicker__"]');
                    if (label) {
                        label.textContent = 'Choisir une quantité';
                    }

                    const okButton = document.getElementById('TextFieldButton__button__QuantityPicker__1');
                    const input = document.querySelector('input[id^="TextFieldButton__input__QuantityPicker__"]');

                    if (okButton && input) {
                        okButton.style.backgroundColor = '#000000';
                        okButton.style.color = '#ffffff';
                        okButton.style.border = 'none';
                        okButton.style.fontWeight = 'bold';

                        // Récupération des valeurs valides depuis les boutons
                        const buttonValues = Array.from(document.querySelectorAll('[class*="QuantityPicker__quantitySelector_"]'))
                            .map(btn => parseInt(btn.textContent.trim(), 10))
                            .filter(val => !isNaN(val))
                            .sort((a, b) => a - b);

                        if (buttonValues.length > 1) {
                            const minStep = buttonValues.reduce((step, val, idx, arr) => {
                                if (idx > 0) {
                                    const diff = val - arr[idx - 1];
                                    if (diff > 0 && diff < step) return diff;
                                }
                                return step;
                            }, Infinity);

                            okButton.addEventListener('click', (e) => {
                                let enteredValue = parseInt(input.value, 10);
                                if (!isNaN(enteredValue) && minStep !== Infinity) {
                                    const roundedValue = Math.round(enteredValue / minStep) * minStep;

                                    // ✅ Mise à jour pour que React la voie
                                    const nativeSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, "value").set;
                                    nativeSetter.call(input, roundedValue);

                                    // ✅ Déclenche un event que React écoute
                                    const event = new Event('input', { bubbles: true });
                                    input.dispatchEvent(event);

                                }
                            }, true); // capture = avant React
                        }
                    }
                }


                // Lancer l’observation du DOM
                quantityCellObserver.observe(document.body, {
                    childList: true,
                    subtree: true
                });

                // Si la modale est déjà là à l'ouverture
                document.querySelectorAll('[class*="QuantityPicker__buttons_"]').forEach(wrapButtons);

                if (document.querySelector('[class*="TextFieldButton_"]')) {
                    customizeQuantityInputUI();
                }


                // Supprimer le header si la modale est déjà ouverte
                const existingDialog = document.querySelector('dialog#PickerDialogModal');
                if (existingDialog) {
                    const existingHeader = existingDialog.querySelector('header._header_6fiog_60');
                    if (existingHeader) {
                        existingHeader.remove();
                    }
                }
            }


            initFieldInteractions() {
                // Gestion de l'état actif du champ de texte
                $(document).on('focus', '.QuantitySelectorCustomField__input', (event) => {
                    $(event.target).closest('.TextField').addClass('TextField--active');
                });

                $(document).on('blur', '.QuantitySelectorCustomField__input', (event) => {
                    const $input = $(event.target);
                    if (!$input.val()) {
                        $input.closest('.TextField').removeClass('TextField--active');
                    }
                });

                // Animation des boutons
                $(document).on('mousedown', '.PredefinedQuantityList__quantity-button', (event) => {
                    $(event.target).addClass('animate-click');
                });

                $(document).on('mouseup mouseleave', '.PredefinedQuantityList__quantity-button', (event) => {
                    setTimeout(() => {
                        $(event.target).removeClass('animate-click');
                    }, 300);
                });
            }

            removeLastLiFromProductLists(identifiers, countToRemove = 5, type = 'productId') {
                identifiers.forEach(id => {
                    let containers = [];

                    if (type === 'productId') {
                        containers = document.querySelectorAll(`.add-to-bag[data-product-id="${id}"][data-initialized="true"]`);
                    } else if (type === 'sku') {
                        containers = [
                            ...document.querySelectorAll(`nb-add-to-cart[sku="${id}"]`),
                            // fallback pour nb-add-to-cart-standalone
                            ...Array.from(document.querySelectorAll('nb-add-to-cart-standalone')).filter(el => {
                                try {
                                    const data = JSON.parse(el.getAttribute('data'));
                                    return data?.sku === id;
                                } catch {
                                    return false;
                                }
                            })
                        ];
                    }

                    if (containers.length === 0) {
                        return;
                    }

                    containers.forEach(container => {
                        // 1. Si dialog classique (add-to-bag ou nb-add-to-cart)
                        let ul = container.querySelector('dialog.QuantitySelector ul.PredefinedQuantityList');

                        // 2. Sinon, si nb-add-to-cart-standalone → chercher dans nb-qs
                        if (!ul) {
                            const nbqs = container.querySelector('nb-qs');
                            if (nbqs) {
                                ul = nbqs.querySelector('ul');
                            }
                        }

                        if (!ul) {
                            return;
                        }

                        const liItems = ul.querySelectorAll('li');
                        const total = liItems.length;

                        for (let i = total - 1; i >= total - countToRemove; i--) {
                            if (liItems[i]) {
                                liItems[i].remove();
                            }
                        }

                    });
                });
            }

            handleQuantityButtonClick(event) {
                const $button = $(event.target).closest('.PredefinedQuantityList__quantity-button');
                const $popin = $button.closest('.QuantitySelector__popin');
                // Récupérer la valeur depuis l'attribut value, ou depuis le texte du bouton/span
                let quantity = $button.attr('value');
                if (!quantity || quantity === 'undefined') {
                    // Fallback: récupérer le texte du span.notranslate ou du bouton directement
                    quantity = $button.find('span.notranslate').text().trim() || $button.text().trim();
                }
                quantity = parseInt(quantity, 10);
                if (isNaN(quantity)) {
                    return;
                }


                // Ajouter une petite animation de feedback
                $button.addClass('animate-click');

                // Ajouter le loader après un petit délai pour l'animation
                setTimeout(() => {
                    this.addLoader($popin);
                }, 150);

                // ?? Dispatch de l'événement personnalisé
                const $productCard = $button.closest('.ProductCard');
                if ($productCard.length === 0) return;

                const sku = $productCard.data('product-item-id'); // "7908.20" par ex.

                const eventCustom = new CustomEvent('quantitySelectorChange', {
                    detail: { sku } // on peut aussi passer la quantité si besoin
                });

                document.dispatchEvent(eventCustom);

            }

            handleCustomOkClick(event) {
                const $target = $(event.target);
                const $popin = $target.closest('.QuantitySelector__popin');
                const $input = $popin.find('.QuantitySelectorCustomField__input');
                const customQuantity = $input.val();

                // Vérifier si le champ n'est pas vide
                if ($input.val() && $input.val().trim() !== '') {

                    // Vérifier s'il n'y a pas d'erreur
                    requestAnimationFrame(() => {
                        if ($popin.find('#CustomQuantityError').length === 0) {
                            this.addLoader($popin);
                        }
                    });
                } else {
                }
            }

            addLoader($popin) {
                // Éviter de créer plusieurs loaders
                if ($popin.find('.qty-selector-loader').length > 0) {
                    return;
                }

                const $loader = $('<div class="qty-selector-loader"><div class="loader-icon"></div></div>');
                $popin.append($loader);

                // Afficher le loader avec animation
                requestAnimationFrame(() => {
                    $loader.addClass('is-visible');
                });

                // Retirer le loader automatiquement après 2 secondes
                setTimeout(() => {
                    $loader.fadeOut(300, function () {
                        $(this).remove();
                    });
                }, 2000);
            }
            modifyNbQs($nbQsEl) {
                // Fermer tous les autres nb-qs encore visibles
                $('nb-qs.isOpen:not(.nb-qs--modified)').removeClass('isOpen').hide();

                // Ajouter notre classe spécifique
                $nbQsEl.addClass('nb-qs--modified');
                if ($nbQsEl.hasClass('nb-qs--beautified')) return;
                $nbQsEl.addClass('nb-qs--beautified');

                $nbQsEl.find('form').addClass('QuantitySelector__popin');
                $nbQsEl.find('fieldset ul > li').addClass('PredefinedQuantityList__quantity');
                $nbQsEl.find('fieldset ul > li > button').each(function() {
                    const $btn = $(this);
                    $btn.addClass('PredefinedQuantityList__quantity-button');
                    // Ne PAS modifier le contenu du bouton pour ne pas casser le composant natif nb-qs
                    // Le wrapInner cassait la lecture de la valeur par le composant natif
                });

                const $customFieldset = $nbQsEl.find('fieldset.custom');
                $customFieldset.wrapInner('<div class="QuantitySelectorCustomField__container"></div>');

                $customFieldset.find('input')
                    .addClass('QuantitySelectorCustomField__input')
                    .attr('placeholder', 'Quantité personnalisée');

                $customFieldset.find('button')
                    .addClass('QuantitySelectorCustomField__button-ok');

                // 1️⃣ Ajouter l'icône poubelle si bouton valeur "0" présent
                const $zeroBtn = $nbQsEl.find('button[value="0"]');
                if ($zeroBtn.length && !$zeroBtn.attr('id')) {
                    $zeroBtn.attr('id', 'ta-quantity-selector__predefined-0');
                    $zeroBtn.find('span.notranslate').hide();
                }

                // 2️⃣ Sur-injecter addLoader pour forcer nettoyage avant chaque loader
                const originalAddLoader = this.addLoader.bind(this);
                this.addLoader = ($popin) => {
                    $popin.find('.qty-selector-loader').remove();
                    originalAddLoader($popin);
                };

                // Retirer le placeholder dès détection de l'input
                $nbQsEl.find('.QuantitySelectorCustomField__input').removeAttr('placeholder');
            }

        }

        // Initialiser la classe
        new QuantitySelectorBeautifier();
    });

    // === CODE D'INJECTION POUR UTILISATION EXTERNE ===
    window.injectQuantitySelectorBeautifier = function () {

        // Vérifier si jQuery est disponible
        if (typeof jQuery === 'undefined') {
            alert('⚠️ jQuery requis ! Veuillez charger jQuery avant d\'exécuter ce script.');
            return false;
        }

        // Injecter le CSS
        const style = document.createElement('style');
        style.id = 'quantity-selector-beautifier-styles-v13';

        // Vérifier si les styles ne sont pas déjà injectés
        if (document.getElementById('quantity-selector-beautifier-styles-v13')) {
            return true;
        }

        style.textContent = `
            /* Nespresso Quantity Selector Beautifier v1.3 - CSS Injection */
            .AddToBagButtonSmall { border-radius: 30px !important; }
            .QuantitySelector__container .QuantitySelector__popin--top { transform: translate(-35%,-100%) !important; }
            .QuantitySelector__container { position: relative !important; }
            .QuantitySelector__popin, .QuantitySelector__container .QuantitySelector__popin { border-radius: 24px !important; background-color: white !important; width: 15.6rem !important; font-size: .85rem !important; padding: 0.8rem !important; box-shadow: 0px 0px 14px -1px rgb(208 208 208) !important; position: relative !important; z-index:12 !important;}
            .PredefinedQuantityList, .QuantitySelector__container .PredefinedQuantityList { display: flex !important; flex-wrap: wrap !important; justify-content: center !important; gap: 0 !important; margin: 0 !important; padding: 0 !important; list-style: none !important; }
            .PredefinedQuantityList__quantity, .QuantitySelector__container .PredefinedQuantityList__quantity { border-bottom: .0625rem solid #ebebeb !important; width: 2.6rem !important; height: 2.6rem !important; margin: 0 !important; padding: 0 !important; display: flex !important; align-items: center !important; justify-content: center !important; }
            .PredefinedQuantityList__quantity:nth-last-child(-n+5), .QuantitySelector__container .PredefinedQuantityList__quantity:nth-last-child(-n+5) { border-bottom: none !important; }
            .PredefinedQuantityList__quantity-button, .QuantitySelector__container .PredefinedQuantityList__quantity-button { width: 100% !important; height: 100% !important; border: none !important; background: transparent !important; border-radius: 12px !important; transition: all .25s ease !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: inherit !important; color: inherit !important; }
            .PredefinedQuantityList__quantity-button:enabled:hover, .QuantitySelector__container .PredefinedQuantityList__quantity-button:enabled:hover { background-color: #f2f2f2 !important; font-weight: 500 !important; transform: scale(1.05) !important; }
            .PredefinedQuantityList__quantity-button:enabled:active, .QuantitySelector__container .PredefinedQuantityList__quantity-button:enabled:active { background-color: black !important; font-weight: 500 !important; color: white !important; transform: scale(0.95) !important; }
            .QuantitySelectorCustomField__container, .QuantitySelector__container .QuantitySelectorCustomField__container { display: flex !important; margin-top: 1rem !important; border-radius: 12px !important; overflow: hidden !important; border: 1px solid #ebebeb !important; }
            .QuantitySelectorCustomField__button-ok, .QuantitySelector__container .QuantitySelectorCustomField__button-ok { background: #000 !important; color: white !important; border: none !important; padding: 0 1.5rem !important; font-family: inherit !important; font-weight: 500 !important; cursor: pointer !important; transition: all .25s ease !important; min-width: 60px !important; }
            .QuantitySelectorCustomField__button-ok:hover, .QuantitySelector__container .QuantitySelectorCustomField__button-ok:hover { background: #333 !important; transform: translateY(-1px) !important; }
            .qty-selector-loader { position: absolute !important; top: 0 !important; right: 0 !important; bottom: 0 !important; left: 0 !important; background: rgba(255, 255, 255, 0.95) !important; z-index: 2100 !important; border-radius: 24px !important; display: flex !important; align-items: center !important; justify-content: center !important; opacity: 0 !important; transition: opacity .3s ease !important; }
            .qty-selector-loader.is-visible { opacity: 1 !important; }
            .qty-selector-loader .loader-icon { width: 24px !important; height: 24px !important; background-image: url("https://www.nespresso.com/shared_res/mos/free_html/fr/b2c/pictos/grain_coffee.png") !important; background-size: contain !important; background-repeat: no-repeat !important; animation: spin 1s linear infinite !important; }
            @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }
            #ta-quantity-selector__predefined-0 span.notranslate, .QuantitySelector__container #ta-quantity-selector__predefined-0 span.notranslate { display: none !important; }
            #ta-quantity-selector__predefined-0, .QuantitySelector__container #ta-quantity-selector__predefined-0 { position: relative !important; }
            #ta-quantity-selector__predefined-0:before, .QuantitySelector__container #ta-quantity-selector__predefined-0:before { content: "" !important; display: inline-block !important; width: 18px !important; height: 17px !important; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='currentColor'%3E%3Cpath d='M16 5c0-1.27-.73-2-2-2h-4c-1.27 0-2 .73-2 2H3v1h1.08l2 16H18l2-16h1V5h-5Zm-6-1h4c.72 0 1 .28 1 1H9c0-.72.28-1 1-1Zm7.12 17H6.96L5.08 6H19l-1.88 15Z'/%3E%3Cpath d='M9.46 19 8.54 8h-1l.92 11h1ZM12.5 8h-1v11h1V8ZM16.46 8h-1l-.92 11h1l.92-11Z'/%3E%3C/svg%3E") !important; background-size: contain !important; background-repeat: no-repeat !important; background-position: center !important; vertical-align: middle !important; }
            #ta-quantity-selector__predefined-0:hover:before, .QuantitySelector__container #ta-quantity-selector__predefined-0:hover:before { filter: brightness(0) invert(1) !important; transform: scale(1.05) !important; transition: all 0.2s ease !important; }
            @keyframes button-pulse { 0% { transform: scale(1); } 50% { transform: scale(1.1); } 100% { transform: scale(1); } }
            .PredefinedQuantityList__quantity-button.animate-click, .QuantitySelector__container .PredefinedQuantityList__quantity-button.animate-click { animation: button-pulse 0.3s ease !important; }
        `;

        document.head.appendChild(style);

        // Notification visuelle améliorée
        const notification = document.createElement('div');
        notification.style.cssText = `
            position: fixed;
            top: 20px;
            right: 20px;
            background: linear-gradient(135deg, #2ecc71, #27ae60);
            color: white;
            padding: 15px 20px;
            border-radius: 10px;
            z-index: 10000;
            font-family: 'Helvetica Neue', Arial, sans-serif;
            font-size: 14px;
            font-weight: 500;
            box-shadow: 0 8px 32px rgba(0,0,0,0.15);
            border: 1px solid rgba(255,255,255,0.2);
            backdrop-filter: blur(10px);
        `;
        notification.innerHTML = '✅ Nespresso Beautifier v1.3 Activé !<br><small>Support structures multiples</small>';
        document.body.appendChild(notification);

        setTimeout(() => {
            notification.style.transition = 'all 0.5s ease';
            notification.style.opacity = '0';
            notification.style.transform = 'translateX(100%)';
            setTimeout(() => notification.remove(), 500);
        }, 4000);

        return true;
    };

    // Fonction de test pour vérifier la présence de selectors
    window.testQuantitySelectors = function () {
        const classicSelectors = document.querySelectorAll('.QuantitySelector__popin');
        const containerSelectors = document.querySelectorAll('.QuantitySelector__container');
        return { classic: classicSelectors.length, container: containerSelectors.length };
    };
</script></div>

<div id="block-8834958611957" class="free-html" data-label=""  >
    <script id="drupalCustomStartStop">
(function () {
  // === 1) CONFIG
  // Format dates STRICT: YYYY-MM-DDTHH:mm:ssZ
  // Priorité d'affichage: HOT > CURRENT > UPCOMING > default (ordre du tableau)
  

     // DO NOT EDIT FURTHER !!!
  var LOADER_SRC = "https://cms.nespresso.com/sites/default/files/_ecom/loader/index.es.min.js";
  var API_BASE_EN = "https://cms.nespresso.com/fr/en/api/container/";
  var API_BASE_FR = "https://cms.nespresso.com/fr/fr/api/container/";

  // === 2) Utils dates (UTC Z only, no timezone calc) ===
  function parseUtcZ(s) {
    if (!s || !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/.test(s)) return null;
    var d = new Date(s);
    return isNaN(d.getTime()) ? null : d;
  }

  // startAfter inclusif, endBefore exclusif
  function isActive(promo, now) {
  // Cas DEFAULT : toujours valide
  if (!promo.startAfter && !promo.endBefore) {
    return true;
  }

  var start = parseUtcZ(promo.startAfter);
  var end   = parseUtcZ(promo.endBefore);
  if (!start || !end) return false;

  return now >= start && now < end;
}


  // === 3) Loader chargé une seule fois ===
  function ensureLoaderOnce(cb) {
    if (window.dwc && window.dwc.loaded) return cb();

    if (window.__nespressoLoaderLoading) {
      var i = setInterval(function () {
        if (window.dwc && window.dwc.loaded) { clearInterval(i); cb(); }
      }, 50);
      return;
    }

    window.__nespressoLoaderLoading = true;
    var s = document.createElement("script");
    s.src = LOADER_SRC;
    s.async = true;
    s.onload = function () { cb(); };
    document.head.appendChild(s);
  }

 function extractUuid(maybeFullId) {
  // Accepte :
  // - UUID
  // - UUID--suffix
  // - nespresso-container-UUID--suffix
  if (!maybeFullId) return null;

  var m = String(maybeFullId).match(
    /([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/i
  );
  return m ? m[1] : null;
}

function extractUuid(maybeFullId) {
  var m = String(maybeFullId || "").match(
    /([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/i
  );
  return m ? m[1] : null;
}

function buildContainer(containerIdOrFullId, label, comment) {
  var frag = document.createDocumentFragment();

  var uuid = extractUuid(containerIdOrFullId);
  if (!uuid) {
    frag.appendChild(
      document.createComment(
        " NESPRESSO PROMO " + (label || "") +
        " | INVALID containerId | " + (comment || "")
      )
    );
    return frag;
  }

  // Commentaire HUMAIN pour voir quel bloc est actif, lisible dans le DOM
  frag.appendChild(
    document.createComment(
      " NESPRESSO PROMO " + (label || "").toUpperCase() +
      " | " + (comment || "") +
      " | uuid=" + uuid
    )
  );

  var el = document.createElement("div");
  el.className = "nespresso-container";

  // Respecte le format d’ID exemple: UUID--suffix
  var raw = String(containerIdOrFullId);
  el.id = raw.indexOf("nespresso-container-") === 0
    ? raw
    : "nespresso-container-" + raw;

  el.setAttribute("data-url", API_BASE_EN + uuid);
  el.setAttribute("data-url-fr", API_BASE_FR + uuid);

  frag.appendChild(el);
  return frag;
}


  // === 4) Render : injecte uniquement le container actif ===
  function renderActive() {
  var mount = document.getElementById("promo-mount");
  if (!mount) return;

  var now = new Date();

  var active = null;
  var fallback = null;

  // 1) Cherche une promo active (dans l'ordre du tableau = priorité)
  // 2) Mémorise la promo "default" si présente
  for (var i = 0; i < DRUPAL_NODES.length; i++) {
    var p = DRUPAL_NODES[i];
    if (!p || !p.containerId) continue;

    if (p.name === "default") {
      fallback = p;
      continue;
    }

    if (isActive(p, now)) {
      active = p;
      break;
    }
  }

  // Si aucune promo datée n'est active, on affiche le fallback (default)
  if (!active && fallback) {
    active = fallback;
  }

  // Clé pour éviter les rerender inutiles
  var key = active
    ? (
        active.name + "|" +
        (active.startAfter || "") + "|" +
        (active.endBefore || "") + "|" +
        active.containerId
      )
    : "none";

  if (mount.getAttribute("data-active-key") === key) return;

  mount.setAttribute("data-active-key", key);
  mount.innerHTML = "";

  if (!active) return;

  // Injecte le container (avec commentaire lisible dans le DOM)
  mount.appendChild(buildContainer(active.containerId, active.name, active.comment));

  // Charge le loader après injection (une seule fois)
  ensureLoaderOnce(function () {
    // rien à faire ici si le loader auto-scan.
    // si un "refresh" est nécessaire, on l'ajoutera ici.
  });
}

  // Initial + recheck pour bascule automatique (ex: à minuit)
  renderActive();
 
})();

</script></div>

<div id="block-8835155088885" class="free-html" data-label=""  >
    <link rel="stylesheet" href="https://www.nespresso.com/shared_res/mos/free_html/fr/progress-bar-cart/120226/progress-bar-cart.css" />

<script src="https://www.nespresso.com/shared_res/mos/free_html/fr/progress-bar-cart/120226/progress-bar-cart.iife.js"></script></div>

<script defer>
    (function() {
      'use strict';
       const getDoPopUpPending =sessionStorage.getItem("doPopUpPending-registration");
        if(getDoPopUpPending){
            $(window).on('load', function () {
            setTimeout(() => {
                 const loginEvent = document.createEvent('Event');
                 loginEvent.initEvent('login.popUpGracePending', true, false);
                 window.dispatchEvent(loginEvent);
                 sessionStorage.removeItem('doPopUpPending-registration');
            }, 1000);
          });
        }
})()
    </script>
  </div>
</footer>
</div>
<div
        id="full-page-loader"
        class="display-none dark-overlay full-page-loader"
        tabindex="-1">

        <div class="loader-outer">
            <div class="loader-inner">
                <img src="/_ui/img/ajax-loader-dark-bg.gif" alt="Chargement en cours" />
            </div>
        </div>
    </div>

    <div id="full-page-loader-discreet" class="display-none overlay full-page-loader"></div>

    <span
        id="a11y-notification-area"
        class="visually-hidden"
        aria-live="assertive"
        aria-relevant="text"
        role="alert"></span>

    <script src="/_ui/generated/responsiveHeader.js?v=b7c362b5ce057e13232ab7cf58fb9ff91b7cf4a2" defer></script>
    <script src="/_ui/generated/allFooter.js?v=b7c362b5ce057e13232ab7cf58fb9ff91b7cf4a2" defer></script>
    <script src="/_ui/generated/smartBanner.js?v=b7c362b5ce057e13232ab7cf58fb9ff91b7cf4a2" defer></script>
    <div
        id="gdpr-consent-lightbox"
        class="gdpr-consent-lightbox"
        style="display: none;"
    >
        <div class="popin">
            <main
                id="gdpr-consent-lightbox__content"
                class="gdpr-consent-lightbox__content"
                data-content-url="/fr/fr/view/FreeHtmlContentBlockController?componentUid=gdprConsentLightboxContent"
            >
                    </main>
            <footer class="gdpr-consent-lightbox__controls">
                <div class="gdpr-consent-lightbox__controls-container">
                    <button
                        class="gdpr-consent-lightbox__change-preferences"
                        data-my-account-url="/fr/fr/myaccount/showMySubscriptions "
                    >
                        <span aria-hidden="true">
                            MODIFIER MES PRÉFÉRENCES</span>
                        <span class="visually-hidden">
                            Appuyez sur ce bouton pour fermer cette page et être redirigé dans la rubrique Préférences de contact de Mon compte ; vous pourrez alors mettre à jour vos paramètres sur la manière dont Nespresso peut vous contacter</span>
                    </button>
                    <button class="gdpr-consent-lightbox__keep-preferences">
                        <span aria-hidden="true">
                            CONSERVER MES PRÉFÉRENCES</span>
                        <span class="visually-hidden">
                            Appuyez sur ce bouton pour confirmer tous vos paramètres actuels sur la manière dont Nespresso vous contactera à l'avenir et pour fermer cette page</span>
                    </button>
                </div>
            </footer>
        </div>
    </div>
<div id="simplelightbox" class="crema-ui-container">
        </div>
<script>
              window.ui = window.ui || [];
              window.ui.push({"id":"simplelightbox","module":"SimpleLightbox","configuration":{"translations":{"lightboxmodule.doubleOptin.gracePeriod.subscription.resendEmail.error":"Une erreur est survenue au niveau de votre demande. Veuillez réessayer.","lightboxmodule.progressive.missingAddress.description":"Please add a delivery address to your profile to complete your purchase. Once added, you will be able to proceed to checkout","lightboxmodule.doubleOptin.gracePeriod.subscription.title":"Le processus d’inscription n’est pas encore terminé","lightboxmodule.registration.processNotCompletedPopin.button.resend":"Envoyer un autre e-mail","lightboxmodule.progressive.missingAddress.addAddress":"Add address","lightboxmodule.doubleOptin.gracePeriod.subscription.description.second":"Veuillez cliquer sur le lien figurant dans l’e-mail que nous venons de vous envoyer ou sur le bouton ci-dessous pour qu’un autre e-mail vous soit envoyé.","lightboxmodule.doubleOptin.gracePeriod.button.later":"Je m’en occuperai plus tard","lightboxmodule.doubleOptin.gracePeriod.button.resend":"Envoyer un autre e-mail","lightboxmodule.doubleOptin.gracePeriod.subscription.description":"Vous devez <strong>confirmer l’adresse e-mail que vous avez enregistrée</strong> pour terminer la souscription d'une  <strong>Commande Récurrente ou d'un Abonnement.</strong>","lightboxmodule.registration.processNotCompletedPopin.head":"VOUS DEVEZ CONFIRMER VOTRE ADRESSE E-MAIL","lightboxmodule.doubleOptin.gracePeriod.description.second":"Veuillez cliquer sur le lien figurant dans l’e-mail que nous venons de vous envoyer ou sur le bouton ci-dessous pour qu’un e-mail vous soit renvoyé.","lightboxmodule.a11y.button.close":"Fermer","lightboxmodule.doubleOptin.gracePeriod.resendEmail.error":"Une erreur est survenue au niveau de votre demande. Veuillez réessayer.","lightboxmodule.registration.processNotCompletedPopin.resendEmail.error":"Une erreur est survenue au niveau de votre demande. Veuillez réessayer.","lightboxmodule.registration.processNotCompletedPopin.description.second":"Veuillez cliquer sur le lien figurant dans l’e-mail que nous venons de vous envoyer ou sur le bouton ci-dessous pour qu’un autre e-mail vous soit envoyé.","lightboxmodule.doubleOptin.gracePeriod.title":"Le processus d’inscription n’est pas encore terminé","lightboxmodule.doubleOptin.gracePeriod.resendEmail.success":"Votre e-mail bien a été renvoyé.","lightboxmodule.doubleOptin.gracePeriod.subscription.resendEmail.success":"Votre e-mail a bien été renvoyé.","lightboxmodule.doubleOptin.gracePeriod.subscription.resend":"Envoyer un autre e-mail","lightboxmodule.registration.processNotCompletedPopin.resendEmail.success":"Votre e-mail a bien été renvoyé.","lightboxmodule.progressive.missingAddress.title":"Add an address to your account","lightboxmodule.registration.processNotCompletedPopin.description":"Pour continuer à utiliser votre compte Nespresso et effectuer de nouveaux achats, vous devez <strong>confirmer l’adresse e-mail que vous avez enregistrée</strong>","lightboxmodule.doubleOptin.gracePeriod.description":"Vous devez <strong>confirmer l’adresse e-mail que vous avez enregistrée</strong> pour terminer le processus d’inscription."},"props":{},"eCommerceData":null}});
            </script>
        <div id="quantityselector" class="crema-ui-container">
        </div>
<script>
              window.ui = window.ui || [];
              window.ui.push({"id":"quantityselector","module":"QuantitySelector","configuration":{"translations":{"quantityselector.customquantity.rounding.message":"Nous avons remplacé la quantité par {productQuantity}","quantityselector.a11y.addproduct.label":"Ajouter {quantity}","quantityselector.a11y.dialog.description":"Choisir une quantité prédéfinie ci-dessous","quantityselector.a11y.REMOVEDproduct.label":"{productName} SUPPRIMÉ de votre panier.","quantityselector.okbutton.label":"OK","quantityselector.customquantity.error.salesMultiple":"Vous ne pouvez acheter ce produit que par multiples de {salesMultiple}","quantityselector.choosehint.label":"Choisir une quantité","quantityselector.a11y.updateproduct.label":"Mettre à jour {quantity}","quantityselector.customquantity.error.maximumAmount":"La quantité maximale que vous pouvez acheter pour ce produit est {maxQuantity}","quantityselector.customquantity.error.invalidQuantity":"La quantité que vous avez choisie n'est pas valide","quantityselector.a11y.dialog.title":"Choix de la quantité"},"props":{"thirdLine":[100,150,200,250,300]},"eCommerceData":null}});
            </script>
        <div
        id="a11yNotification"
        class="visually-hidden"
        aria-live="assertive"
        role="alert" >
    </div>

    <div id="responsive-overlay" class="crema-ui-container">
        </div>
<script>
              window.ui = window.ui || [];
              window.ui.push({id: 'responsive-overlay', module: 'Overlay', configuration: {}});
            </script>
        





<!--[if lt IE 8]>
<div id="outdated-browser" class="display-none">
    <div>
        <h3>Navigateur obsolète</h3>
        <p>Vous utilisez un navigateur qui semble obsolète. Pour une meilleure expérience de navigation, nous vous invitons à mettre à jour votre navigateur.</p>
        <div>
            <a href="#" class="btn black confirm">
                J&#x27;accepte
                <span class="border"></span>
            </a>
        </div>
    </div>
</div>

<script>
    oldBrowser();
</script>

<![endif]-->
<script async> 
	    (function (window) {
            //function getParameterByName is getting a param value from current url 
            function getParameterByName(paramName) {
                var regex = new RegExp("[\\?&]" + paramName + "=([^&#]*)"),
                    paramValue = regex.exec(location.search);
                return paramValue === null
                    ? ""
                    : decodeURIComponent(paramValue[1].toLowerCase().replace(/\+/g, " "));
            }
            
            //Get terminal param to detect if user is in the mobile webview
            const TERMINAL = "terminal";
            const terminalParam = getParameterByName(TERMINAL);
            const MOBAPP = 'mobapp';

			//Publish the SmartBanner To be showed
			if(typeof smartbanner !== "undefined"){
                window.onload = function () {
                    try {
                        if (terminalParam !== MOBAPP){
                            smartbanner.publish();
                        }
                    } catch(err) {
                        console.log(err)
                    }
                };
            }
		})(window);
    </script> 
<script type="text/javascript"  src="/fJLybT03KiUm-3IeiuGoWwsEFyk/GuD7kbNEEa5t8V7i/XGwSAQ/XVsrEQ5/hNicB"></script></body><script src="/_ui/generated/crema/styles.a003e8466298cdaa9190.js" defer="defer"></script>
<script src="/_ui/generated/crema/vendor.babel-runtime.d6013a97875a6a6507d1.js" defer="defer"></script>
<script src="/_ui/generated/crema/vendor.core-js.fb6f86b4365f96ead912.js" defer="defer"></script>
<script src="/_ui/generated/crema/bundle.59e962d81e4993010d6b.js" defer="defer"></script>
<script src="/_ui/generated/crema/vendor.intl-messageformat.d01ac6a8741ec9ba1297.js" defer="defer"></script>
<script src="/_ui/generated/crema/vendor.intl-messageformat-parser.6c48cfa3021be0b991dd.js" defer="defer"></script>
<script src="/_ui/generated/crema/vendor.intl-relativeformat.eb14eb27c4c678f93d34.js" defer="defer"></script>
<script src="/_ui/generated/crema/vendor.react-dom.ea550f681cb5e43cbdcb.js" defer="defer"></script>
<script src="/_ui/generated/crema/vendor.react-intl.023010d6c97d0aea114a.js" defer="defer"></script>
<script src="/_ui/generated/crema/vendor.react-redux.521b1912cab7d8dfbb6a.js" defer="defer"></script>
<script src="/_ui/generated/crema/vendor.react-transition-group.3ed24ddecfd30743dd77.js" defer="defer"></script>
<script src="/_ui/generated/crema/vendor.redux.5d01de17463a7c3385de.js" defer="defer"></script>
<script src="/_ui/generated/crema/vendor.regenerator-runtime.f9ee5c6467733b2b6775.js" defer="defer"></script>
<script src="/_ui/generated/crema/vendor.store2.b9e7f8e4f4e5fc35697f.js" defer="defer"></script>
<script src="/_ui/generated/crema/vendors~bundle.3f6bbd8a7d8a3268dfaf.js" defer="defer"></script>
</html>