{"id":10526,"date":"2026-08-10T20:36:29","date_gmt":"2026-08-10T20:36:29","guid":{"rendered":"https:\/\/2bbiobeauty.com\/trouver-ma-routine\/"},"modified":"2026-08-17T10:59:12","modified_gmt":"2026-08-17T10:59:12","slug":"ma-routine","status":"publish","type":"page","link":"https:\/\/2bbiobeauty.com\/de\/ma-routine\/","title":{"rendered":"Meine Routine finden"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"10526\" class=\"elementor elementor-10526\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8d4eba7 e-con-boxed e-flex sc_layouts_column_icons_position_left e-con e-parent\" data-id=\"8d4eba7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dad22a6 sc_fly_static elementor-widget elementor-widget-html\" data-id=\"dad22a6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n\n<style>.page_content_wrap{padding-top:0!important}.top_panel{position:absolute!important;top:0;left:0;right:0;z-index:60;background:transparent!important;box-shadow:none!important}<\/style>\n<div style=\"position:relative;width:100vw;margin-left:calc(50% - 50vw);min-height:460px;display:flex;align-items:center;overflow:hidden;margin-bottom:28px;\">\n  <img decoding=\"async\" src=\"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/hero-routine2.jpg\" alt=\"Rituel 2B Bio Beauty\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;object-position:72% center;z-index:0;\">\n  <span style=\"position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,#F6F7F1 8%,rgba(246,247,241,.93) 36%,rgba(246,247,241,0) 66%);z-index:1;\"><\/span>\n  <div style=\"position:relative;z-index:2;max-width:1160px;margin:0 auto;width:100%;padding:150px 30px 60px;\">\n    <span style=\"display:inline-block;color:#53720b;font-size:16px;font-weight:600;letter-spacing:.14em;margin-bottom:14px;\">[ changez de peau ]<\/span>\n    <h1 style=\"margin:0 0 12px;font-size:clamp(32px,4.5vw,54px);font-weight:700;letter-spacing:-.02em;line-height:1.05;color:#211102;\">Trouver ma routine<\/h1>\n    <p style=\"margin:0;font-size:18px;line-height:1.5;color:#5d5755;max-width:46ch;\">2B Bio Beauty\u00ae prend soin de votre peau. Trouvez votre rituel beaut\u00e9, en 3 clics.<\/p>\n  <\/div>\n<\/div>\n<div id=\"bb-rf\">\n  \n  <div class=\"rf-bar\">\n    <button id=\"backBtn\" type=\"button\">&larr; Retour<\/button>\n    <div id=\"crumbs\"><\/div>\n    <button id=\"homeLink\" type=\"button\">&#8635; Recommencer<\/button>\n  <\/div>\n  <div id=\"stage\"><\/div>\n  <div id=\"toast\"><\/div>\n<\/div>\n<script>\n(function(){\n\nconst GRID_STYLE = \"display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px\";\nconst GRID2_STYLE = \"display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px\";\nfunction photoCard(opts){\n  const {img, tag, tagColor, title, desc, attr} = opts;\n  return `<div class=\"choice-card photo-card\" ${attr} style=\"position:relative;overflow:hidden;border-radius:15px;min-height:${opts.h||190}px;padding:18px;display:flex;flex-direction:column;justify-content:flex-end;color:#fff;cursor:pointer;\">\n    <img decoding=\"async\" src=\"${img}\" alt=\"\" loading=\"lazy\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;z-index:0;\">\n    <span style=\"position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(180deg,rgba(20,24,10,0) 30%,rgba(20,24,10,.62) 100%);z-index:1;\"><\/span>\n    <span style=\"position:relative;z-index:2;\">\n      ${tag?`<span style=\"display:inline-block;background:${tagColor||'#53720b'};color:#fff;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;border-radius:100px;padding:5px 12px;margin-bottom:9px;\">${tag}<\/span>`:''}\n      <h3 style=\"margin:0;color:#fff;font-size:${opts.ts||20}px;line-height:1.2;\">${title}<\/h3>\n      ${desc?`<p style=\"margin:6px 0 0;color:rgba(255,255,255,.88);font-size:15px;line-height:1.45;\">${desc}<\/p>`:''}\n    <\/span>\n  <\/div>`;\n}\nconst PRODUCT_IDS = {\"2B Bio Net\": 10540, \"2B Bio Puret\u00e9\": 10541, \"2B Bio Clart\u00e9\": 10542, \"2B Bio Gommage\": 10543, \"2B Bio Enzyscrub\": 10544, \"2B Bio Matifiant\": 10545, \"2B SOS Boutons\": 10546, \"2B Bio Douceur\": 10547, \"2B Bio Regard\": 10548, \"2B Bio Nutrition\": 10549, \"2B Bio Purifiant\": 10550, \"2B Bio Oxygel\": 10551, \"2B Bio S\u00e9rum O2\": 10552, \"2B Bio Hydravit\": 10553, \"2B Bio Cocoon\": 10554, \"2B Bio SkinRebirth\": 10555, \"2B Bio HydraWhite\": 10556, \"2B Bio D\u00e9fense BB Cream\": 10181, \"2B Bio D\u00e9fense Whitening BB Cream\": 10558, \"2B Bio Lift\": 10199, \"2B Bio Clean\": 10191, \"2B Bio D\u00e9fense Naturel\": 10181, \"2B Bio D\u00e9fense\": 10181, \"2B Cr\u00e8me Mains\": 10194};\n\nconst PID_KEYS = Object.keys(PRODUCT_IDS).sort((a,b)=>b.length-a.length);\nfunction productIdFor(txt){\n  const plain = String(txt).replace(\/<[^>]+>\/g,'').trim();\n  for (const k of PID_KEYS){ if(plain.startsWith(k)) return PRODUCT_IDS[k]; }\n  return null;\n}\nasync function addIdsToCart(cta){\n  const raw = (cta.getAttribute('data-ids')||'').split(',').filter(Boolean);\n  if(!raw.length){ toast('Produits indisponibles pour le moment'); return; }\n  cta.disabled = true;\n  const orig = cta.textContent;\n  cta.textContent = 'Ajout en cours\u2026';\n  try {\n    for (const id of raw){\n      await fetch('\/2bbio1\/?wc-ajax=add_to_cart', {\n        method:'POST', credentials:'same-origin',\n        headers:{'Content-Type':'application\/x-www-form-urlencoded'},\n        body:'product_id='+encodeURIComponent(id)+'&quantity=1&bb2_routine=1'\n      });\n    }\n    if (window.jQuery) jQuery(document.body).trigger('wc_fragment_refresh');\n    toast(raw.length + ' produits ajout\u00e9s \u00e0 votre panier');\n    cta.textContent = 'Ajout\u00e9 \u2713';\n    if (!cta.nextElementSibling || !cta.nextElementSibling.classList.contains('cta-view')){\n      const a = document.createElement('a');\n      a.href = '\/2bbio1\/panier\/';\n      a.className = 'cta cta-view';\n      a.textContent = 'Voir mon panier \u2192';\n      a.style.marginTop = '10px';\n      cta.insertAdjacentElement('afterend', a);\n    }\n  } catch(e){\n    cta.disabled = false; cta.textContent = orig;\n    toast('Une erreur est survenue, r\u00e9essayez');\n  }\n}\n\nconst PRICES = {\n  \"2B Bio Net\": 33.75, \"2B Bio Clean\": 29.00, \"2B Bio Puret\u00e9\": 32.75, \"2B Bio Clart\u00e9\": 34.75,\n  \"2B Bio Gommage\": 40.75, \"2B Bio Enzyscrub\": 54.75, \"2B Bio Matifiant\": 39.95, \"2B SOS Boutons\": 25.50,\n  \"2B Bio Douceur\": 34.75, \"2B Bio Regard\": 39.95, \"2B Bio Nutrition\": 54.75, \"2B Bio Purifiant\": 54.75,\n  \"2B Bio Oxygel\": 78.95, \"2B Bio S\u00e9rum O2\": 259.75, \"2B Bio Hydravit\": 56.95, \"2B Bio Cocoon\": 92.75,\n  \"2B Bio Lift\": 78.95, \"2B Bio SkinRebirth\": 39.50, \"2B Bio HydraWhite\": 85.95,\n  \"2B Bio D\u00e9fense Whitening\": 56.50, \"2B Bio D\u00e9fense BB Cream\": 53.50, \"2B Bio D\u00e9fense Naturel\": 53.50, \"2B Bio D\u00e9fense\": 53.50\n};\nconst PRICE_KEYS = Object.keys(PRICES).sort((a,b)=>b.length-a.length);\nfunction priceFor(txt){\n  const plain = String(txt).replace(\/<[^>]+>\/g,'').trim();\n  for (const k of PRICE_KEYS){ if(plain.startsWith(k)) return PRICES[k]; }\n  return null;\n}\nfunction remiseFor(n){ return n>=5 ? 30 : n===4 ? 20 : n===3 ? 10 : n===2 ? 5 : 0; }\nfunction eur(v){ return v.toFixed(2).replace('.',',') + '\\u00a0\u20ac'; }\nfunction prix95(t){ let c = Math.floor(t) + 0.95; if (c > t) c -= 1; return Math.max(c, 0.95); }\nfunction panierBlockHtml(title, tagline, list, ctaLabel, spf){\n  \/\/ les cartes sont deja affichees par etape ; on valide la selection pour la barre\n  if (window.rfSelNext && Object.keys(window.rfSelNext).length) {\n    window.rfSel = window.rfSelNext;\n  } else {\n    \/\/ ecran sans etapes detaillees : cartes directes depuis la liste du rituel\n    window.rfSelNext = {};\n    var cards = stepsHtml(list);\n    window.rfSel = window.rfSelNext; window.rfSelNext = null;\n    return `<div class=\"rf-routine\"><div class=\"phase-label\">Votre rituel<\/div>${cards}\n      <div class=\"rituel-notes\"><div class=\"discount-note\">Prix d\u00e9gressif selon le nombre de produits&nbsp;: 2 produits \u22125%, 3 produits \u221210%, 4 produits \u221220%, 5 et plus \u221230%.<\/div>\n      ${spf ? '<div class=\"spf-note\">\u00c0 r\u00e9appliquer toutes les 3-4 heures en cas d\\u2019exposition au soleil.<\/div>' : ''}<\/div><\/div>`;\n  }\n  window.rfSelNext = null;\n  return `<div class=\"rf-routine\">\n    <div class=\"rituel-notes\"><div class=\"discount-note\">Prix d\u00e9gressif selon le nombre de produits&nbsp;: 2 produits \u22125%, 3 produits \u221210%, 4 produits \u221220%, 5 et plus \u221230%.<\/div>\n    ${spf ? '<div class=\"spf-note\">\u00c0 r\u00e9appliquer toutes les 3-4 heures en cas d\\u2019exposition au soleil.<\/div>' : ''}<\/div><\/div>`;\n}\n\nconst IMGS = {\"2B Bio Net\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-net.jpg\", \"2B Bio Clean\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-clean.jpg\", \"2B Bio Puret\u00e9\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-purete.jpg\", \"2B Bio Clart\u00e9\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-clarte.jpg\", \"2B Bio Gommage\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-gommage.jpg\", \"2B Bio Enzyscrub\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-enzyscrub.jpg\", \"2B Bio Matifiant\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-matifiant.jpg\", \"2B SOS Boutons\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/sos-boutons.jpg\", \"2B Bio Douceur\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-douceur.jpg\", \"2B Bio Regard\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-regard.jpg\", \"2B Bio Nutrition\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-nutrition.jpg\", \"2B Bio Purifiant\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-purifiant.jpg\", \"2B Bio Oxygel\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-oxygel.jpg\", \"2B Bio S\u00e9rum O2\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-serum-o2.jpg\", \"2B Bio Serum O2\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-serum-o2.jpg\", \"2B Bio Hydravit\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-hydravit.jpg\", \"2B Bio Cocoon\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-cocoon.jpg\", \"2B Bio Lift\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-lift.jpg\", \"2B Bio SkinRebirth\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-skinrebirth.jpg\", \"2B Bio HydraWhite\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-hydrawhite.jpg\", \"2B Bio D\u00e9fense Whitening BB Cream\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-defense-bb.jpg\", \"2B Bio D\u00e9fense BB Cream\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-defense-bb.jpg\", \"2B Bio D\u00e9fense Naturel\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-defense.jpg\", \"2B Bio D\u00e9fense\": \"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/bio-defense.jpg\"};\nconst IMG_KEYS = Object.keys(IMGS).sort((a,b)=>b.length-a.length);\n\n\/* ---------- Donn\u00e9es ---------- *\/\n\nconst INSTITUT = {\n  peeling: {\n    label: \"2B Bio Peeling\",\n    avantPaniers: {\n      toutes: {label:\"Toutes peaux\", produits:[\"2B Bio Net <i>(si maquillage)<\/i>\",\"2B Bio Clean\",\"2B Bio Douceur\"], panier:[\"2B Bio Net\",\"2B Bio Clean\",\"2B Bio Douceur\"], subtotal:\"97,50\", price:\"67,95\"},\n      grasse: {label:\"Peau grasse\", produits:[\"2B Bio Net <i>(si maquillage)<\/i>\",\"2B Bio Puret\u00e9\",\"2B Bio Clart\u00e9\"], panier:[\"2B Bio Net\",\"2B Bio Puret\u00e9\",\"2B Bio Clart\u00e9\"], subtotal:\"101,25\", price:\"69,95\"}\n    }\n  },\n  enzymatique: {\n    label: \"Soin enzymatique\",\n    apres: {\n      matin: [\"2B Bio Clean\", \"2B Bio Douceur\", \"2B Bio Hydravit\"],\n      soir: [\"2B Bio Net <i>(si maquillage)<\/i>\", \"2B Bio Clean\", \"2B Bio Douceur\", \"2B Bio Hydravit\"],\n      hebdo: [\"2B Bio Enzyscrub\"]\n    },\n    panier: {produits:[\"2B Bio Net\",\"2B Bio Clean\",\"2B Bio Douceur\",\"2B Bio Hydravit\",\"2B Bio Enzyscrub\"], subtotal:\"209,20\", price:\"145,95\"}\n  }\n};\n\n\/* Post-peel-off \u00e0 domicile, d\u00e9clin\u00e9 par type de peau, protocole r\u00e9solu (sans \"ou\")\n   et panier chiffr\u00e9, -30% sur le total, arrondi au ,95 inf\u00e9rieur. *\/\nconst PEELOFF_APRES_TYPES = {\n  toutes: {\n    label: \"Toutes peaux\",\n    matin: [\"2B Bio Clean\", \"2B Bio Douceur\", \"2B Bio Lift\", \"2B Bio Hydravit\", \"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes)\"],\n    soir: [\"2B Bio Net <i>(si maquillage)<\/i>\", \"2B Bio Clean\", \"2B Bio Douceur\", \"2B Bio Lift\", \"2B Bio Hydravit\"],\n    panier: [\"2B Bio Net\", \"2B Bio Clean\", \"2B Bio Douceur\", \"2B Bio Lift\", \"2B Bio Hydravit\", \"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes)\"],\n    subtotal: \"286,90\", price: \"199,95\"\n  },\n  grasse: {\n    label: \"Peau grasse\",\n    matin: [\"2B Bio Puret\u00e9\", \"2B Bio Clart\u00e9\", \"2B Bio Lift\", \"2B Bio Hydravit\", \"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes)\"],\n    soir: [\"2B Bio Net <i>(si maquillage)<\/i>\", \"2B Bio Puret\u00e9\", \"2B Bio Clart\u00e9\", \"2B Bio Lift\", \"2B Bio Hydravit\"],\n    panier: [\"2B Bio Net\", \"2B Bio Puret\u00e9\", \"2B Bio Clart\u00e9\", \"2B Bio Lift\", \"2B Bio Hydravit\", \"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes)\"],\n    subtotal: \"290,65\", price: \"202,95\"\n  }\n};\n\n\/* Post-peeling \u00e0 domicile, d\u00e9clin\u00e9 par type de peau, protocole r\u00e9solu (sans \"ou\")\n   et panier chiffr\u00e9, -30% sur le total, arrondi au ,95 inf\u00e9rieur. *\/\nconst PEELING_APRES_TYPES = {\n  normale: {\n    label: \"Peau normale\",\n    preparer: {matin:[\"2B Bio Clean\"], soir:[\"2B Bio Net <i>(si maquillage)<\/i>\",\"2B Bio Clean\"], hebdo:[\"2B Bio Gommage, 1 fois par semaine, \u00e0 partir de J+3-4 et jusqu'au prochain rendez-vous\"]},\n    apaiser: [\"2B Bio Douceur\",\"2B Bio Regard <i>(contour des yeux et l\u00e8vres)<\/i>\"],\n    nourrir: [\"2B Bio Nutrition\"],\n    traiter: [\"2B Bio Oxygel\",\"2B Bio Hydravit\"],\n    proteger: [\"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes), \u00e0 r\u00e9appliquer toutes les 3-4h au soleil\"],\n    panier: [\"2B Bio Net\",\"2B Bio Clean\",\"2B Bio Douceur\",\"2B Bio Gommage\",\"2B Bio Regard\",\"2B Bio Nutrition\",\"2B Bio Oxygel\",\"2B Bio Hydravit\",\"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes)\"],\n    subtotal: \"422,35\", price: \"294,95\"\n  },\n  seche: {\n    label: \"Peau s\u00e8che\",\n    preparer: {matin:[\"2B Bio Clean\"], soir:[\"2B Bio Net <i>(si maquillage)<\/i>\",\"2B Bio Clean\"], hebdo:[\"2B Bio Gommage, 1 fois par semaine, \u00e0 partir de J+3-4 et jusqu'au prochain rendez-vous\"]},\n    apaiser: [\"2B Bio Douceur\",\"2B Bio Regard\"],\n    nourrir: [\"2B Bio Nutrition\"],\n    traiter: [\"2B Bio Oxygel\",\"2B Bio Cocoon\"],\n    proteger: [\"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes), \u00e0 r\u00e9appliquer toutes les 3-4h au soleil\"],\n    panier: [\"2B Bio Net\",\"2B Bio Clean\",\"2B Bio Douceur\",\"2B Bio Gommage\",\"2B Bio Regard\",\"2B Bio Nutrition\",\"2B Bio Oxygel\",\"2B Bio Cocoon\",\"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes)\"],\n    subtotal: \"458,15\", price: \"319,95\"\n  },\n  mature: {\n    label: \"Peau mature\",\n    preparer: {matin:[\"2B Bio Clean\"], soir:[\"2B Bio Net <i>(si maquillage)<\/i>\",\"2B Bio Clean\"], hebdo:[\"2B Bio Gommage, 1 fois par semaine, \u00e0 partir de J+3-4 et jusqu'au prochain rendez-vous\"]},\n    apaiser: [\"2B Bio Douceur\",\"2B Bio Regard\"],\n    nourrir: [\"2B Bio Nutrition\"],\n    traiter: [\"2B Bio S\u00e9rum O2\",\"2B Bio Cocoon\"],\n    proteger: [\"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes), \u00e0 r\u00e9appliquer toutes les 3-4h au soleil\"],\n    panier: [\"2B Bio Net\",\"2B Bio Clean\",\"2B Bio Douceur\",\"2B Bio Gommage\",\"2B Bio Regard\",\"2B Bio Nutrition\",\"2B Bio S\u00e9rum O2\",\"2B Bio Cocoon\",\"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes)\"],\n    subtotal: \"638,95\", price: \"446,95\"\n  },\n  grasse: {\n    label: \"Peau grasse\",\n    preparer: {matin:[\"2B Bio Puret\u00e9\"], soir:[\"2B Bio Net <i>(si maquillage)<\/i>\",\"2B Bio Puret\u00e9\"], hebdo:[\"2B Bio Gommage, 1 fois par semaine, \u00e0 partir de J+3-4 et jusqu'au prochain rendez-vous\"]},\n    apaiser: [\"2B Bio Clart\u00e9\",\"2B Bio Regard\"],\n    nourrir: [\"2B Bio Purifiant\"],\n    traiter: [\"2B Bio Oxygel\",\"2B Bio Hydravit\"],\n    proteger: [\"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes), \u00e0 r\u00e9appliquer toutes les 3-4h au soleil\"],\n    panier: [\"2B Bio Net\",\"2B Bio Puret\u00e9\",\"2B Bio Clart\u00e9\",\"2B Bio Gommage\",\"2B Bio Regard\",\"2B Bio Purifiant\",\"2B Bio Oxygel\",\"2B Bio Hydravit\",\"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes)\"],\n    subtotal: \"426,10\", price: \"297,95\"\n  },\n  hyperpigmentee: {\n    label: \"Peau hyperpigment\u00e9e\",\n    preparer: {matin:[\"2B Bio Clean\"], soir:[\"2B Bio Net <i>(si maquillage)<\/i>\",\"2B Bio Clean\"], hebdo:[\"2B Bio Gommage, 1 fois par semaine, \u00e0 partir de J+3-4 et jusqu'au prochain rendez-vous\"]},\n    apaiser: [\"2B Bio Douceur\",\"2B Bio Regard\"],\n    nourrir: [\"2B Bio Nutrition\"],\n    traiter: [\"2B Bio Oxygel\",\"2B Bio HydraWhite\"],\n    proteger: [\"2B Bio D\u00e9fense Whitening BB Cream SPF50+, \u00e0 r\u00e9appliquer toutes les 3-4h au soleil\"],\n    panier: [\"2B Bio Net\",\"2B Bio Clean\",\"2B Bio Douceur\",\"2B Bio Gommage\",\"2B Bio Regard\",\"2B Bio Nutrition\",\"2B Bio Oxygel\",\"2B Bio HydraWhite\",\"2B Bio D\u00e9fense Whitening BB Cream SPF50+\"],\n    subtotal: \"454,35\", price: \"317,95\"\n  },\n  grasseHyperpigmentee: {\n    label: \"Peau grasse hyperpigment\u00e9e\",\n    preparer: {matin:[\"2B Bio Puret\u00e9\"], soir:[\"2B Bio Net <i>(si maquillage)<\/i>\",\"2B Bio Puret\u00e9\"], hebdo:[\"2B Bio Gommage, 1 fois par semaine, \u00e0 partir de J+3-4 et jusqu'au prochain rendez-vous\"]},\n    apaiser: [\"2B Bio Clart\u00e9\",\"2B Bio Regard\"],\n    nourrir: [\"2B Bio Purifiant\"],\n    traiter: [\"2B Bio Oxygel\",\"2B Bio HydraWhite\"],\n    proteger: [\"2B Bio D\u00e9fense Whitening BB Cream SPF50+, \u00e0 r\u00e9appliquer toutes les 3-4h au soleil\"],\n    panier: [\"2B Bio Net\",\"2B Bio Puret\u00e9\",\"2B Bio Clart\u00e9\",\"2B Bio Gommage\",\"2B Bio Regard\",\"2B Bio Purifiant\",\"2B Bio Oxygel\",\"2B Bio HydraWhite\",\"2B Bio D\u00e9fense Whitening BB Cream SPF50+\"],\n    subtotal: \"458,10\", price: \"319,95\"\n  }\n};\n\nconst RITUELS = [\n  {id:\"grasse\", symptom:\"Boutons, brillance\", title:\"Rituel Peau Nette\", tagline:\"Matifier, purifier, apaiser.\",\n   products:[\"2B Bio Net\",\"2B Bio Puret\u00e9\",\"2B Bio Matifiant\",\"2B SOS Boutons\",\"2B Bio Purifiant\",\"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes)\"],\n   subtotal:\"240,20\", price:\"167,95\", spf:true,\n   protocol: {\n     matin: [\"2B Bio Puret\u00e9\", \"2B Bio Matifiant\", \"2B SOS Boutons <i>(application locale)<\/i>\", \"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes)\"],\n     soir: [\"2B Bio Net <i>(si maquillage)<\/i>\", \"2B Bio Puret\u00e9\", \"2B Bio Matifiant\", \"2B SOS Boutons <i>(application locale)<\/i>\"],\n     hebdo: [\"2B Bio Purifiant <i>(masque)<\/i>\"]\n   }},\n  {id:\"taches\", symptom:\"Taches, teint irr\u00e9gulier\", title:\"Rituel Teint Unifi\u00e9\", tagline:\"Att\u00e9nuer les taches, uniformiser le teint.\",\n   products:[\"2B Bio Net\",\"2B Bio Clean\",\"2B Bio Douceur\",\"2B Bio HydraWhite\",\"2B Bio D\u00e9fense Whitening BB Cream SPF50+\"],\n   subtotal:\"239,95\", price:\"167,95\", spf:true,\n   protocol: {\n     matin: [\"2B Bio Clean\", \"2B Bio Douceur\", \"2B Bio HydraWhite\", \"2B Bio D\u00e9fense Whitening BB Cream SPF50+\"],\n     soir: [\"2B Bio Net <i>(si maquillage)<\/i>\", \"2B Bio Clean\", \"2B Bio Douceur\", \"2B Bio HydraWhite\"],\n     hebdo: []\n   }},\n  {id:\"mature\", symptom:\"Rides, rel\u00e2chement\", title:\"Rituel Slow-Age\", tagline:\"Nourrir, raffermir, r\u00e9g\u00e9n\u00e9rer.\",\n   products:[\"2B Bio Net\",\"2B Bio Clean\",\"2B Bio Douceur\",\"2B Bio S\u00e9rum O2\",\"2B Bio Lift\",\"2B Bio Cocoon\",\"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes)\"],\n   subtotal:\"582,45\", price:\"406,95\", spf:true,\n   protocol: {\n     matin: [\"2B Bio Clean\", \"2B Bio Douceur\", \"2B Bio S\u00e9rum O2\", \"2B Bio Cocoon\", \"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes)\"],\n     soir: [\"2B Bio Net <i>(si maquillage)<\/i>\", \"2B Bio Clean\", \"2B Bio Douceur\", \"2B Bio Lift\", \"2B Bio Cocoon\"],\n     hebdo: []\n   }},\n  {id:\"secheresse\", symptom:\"S\u00e9cheresse, tiraillements\", title:\"Rituel Grand Confort\", tagline:\"Restaurer le confort, hydrater en profondeur.\",\n   products:[\"2B Bio Net\",\"2B Bio Clean\",\"2B Bio Douceur\",\"2B Bio Hydravit\",\"2B Bio Nutrition\",\"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes)\"],\n   subtotal:\"262,70\", price:\"182,95\", spf:true,\n   protocol: {\n     matin: [\"2B Bio Clean\", \"2B Bio Douceur\", \"2B Bio Hydravit\", \"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes)\"],\n     soir: [\"2B Bio Net <i>(si maquillage)<\/i>\", \"2B Bio Clean\", \"2B Bio Douceur\", \"2B Bio Hydravit\"],\n     hebdo: [\"2B Bio Nutrition <i>(masque)<\/i>\"],\n     hebdoLabel: \"Le soir, en cas de tiraillements\"\n   }},\n  {id:\"sensible\", symptom:\"Sensibilit\u00e9, inconfort\", title:\"Rituel Douceur Absolue\", tagline:\"Apaiser, remin\u00e9raliser, prot\u00e9ger.\",\n   products:[\"2B Bio Net\",\"2B Bio Clean\",\"2B Bio Douceur\",\"2B Bio Cocoon\",\"2B Bio Nutrition\",\"2B Bio Regard\",\"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes)\"],\n   subtotal:\"338,45\", price:\"235,95\", spf:true,\n   protocol: {\n     matin: [\"2B Bio Clean\", \"2B Bio Douceur\", \"2B Bio Cocoon\", \"2B Bio Regard\", \"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes)\"],\n     soir: [\"2B Bio Net <i>(si maquillage)<\/i>\", \"2B Bio Clean\", \"2B Bio Douceur\", \"2B Bio Cocoon\", \"2B Bio Regard\"],\n     hebdo: [\"2B Bio Nutrition <i>(masque)<\/i>\"]\n   }},\n  {id:\"terne\", symptom:\"Teint terne, peau fatigu\u00e9e\", title:\"Rituel Teint Frais\", tagline:\"Relancer l'\u00e9clat, limiter le stress oxydatif.\",\n   products:[\"2B Bio Net\",\"2B Bio Clean\",\"2B Bio Douceur\",\"2B Bio SkinRebirth\",\"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes)\"],\n   subtotal:\"190,50\", price:\"132,95\", spf:true,\n   protocol: {\n     matin: [\"2B Bio Clean\", \"2B Bio Douceur\", \"2B Bio SkinRebirth\", \"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes)\"],\n     soir: [\"2B Bio Net <i>(si maquillage)<\/i>\", \"2B Bio Clean\", \"2B Bio Douceur\", \"2B Bio SkinRebirth\"],\n     hebdo: []\n   }},\n  {id:\"preventif\", symptom:\"Aucun probl\u00e8me pr\u00e9cis\", title:\"Rituel \u00c9quilibre Quotidien\", tagline:\"Entretenir l'\u00e9quilibre naturel de la peau.\",\n   products:[\"2B Bio Net\",\"2B Bio Clean\",\"2B Bio Enzyscrub\",\"2B Bio Hydravit\",\"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes)\"],\n   subtotal:\"227,95\", price:\"158,95\", spf:true,\n   protocol: {\n     matin: [\"2B Bio Clean\", \"2B Bio Hydravit\", \"2B Bio D\u00e9fense Naturel SPF30 ou 2B Bio D\u00e9fense BB Cream SPF50+ (3 teintes)\"],\n     soir: [\"2B Bio Net <i>(si maquillage)<\/i>\", \"2B Bio Clean\", \"2B Bio Hydravit\"],\n     hebdo: [\"2B Bio Enzyscrub\"]\n   }}\n];\n\n\/* ---------- Moteur de navigation ---------- *\/\n\nlet path = [];      \/\/ pile de labels pour le fil d'ariane\n\nconst stage = document.getElementById('stage');\nconst crumbsEl = document.getElementById('crumbs');\nconst backBtn = document.getElementById('backBtn');\n\nfunction renderCrumbs(){\n  crumbsEl.innerHTML = path.map((p,i)=>\n    (i>0?'<span class=\"sep\">\/<\/span>':'') + '<span>'+p+'<\/span>'\n  ).join('');\n  backBtn.style.display = path.length ? 'inline-block' : 'none';\n}\n\nlet history = [];\n\nfunction toast(msg){\n  const t = document.getElementById('toast');\n  t.textContent = msg;\n  t.classList.add('show');\n  setTimeout(()=>t.classList.remove('show'), 2200);\n}\n\n\/* ---------- \u00c9crans ---------- *\/\n\nfunction screenHome(){\n  return `\n  <div class=\"step-title\">Quel type de routine souhaitez-vous ?<\/div>\n  <div style=\"${GRID2_STYLE}\">\n    ${photoCard({img:\"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2025\/07\/2B-BIO-exfolier.jpg\", tag:\"Institut\", tagColor:\"#53720b\", title:\"Apr\u00e8s un soin en institut\", desc:\"2B Bio Peeling, soin enzymatique ou peel-off antioxydant - retrouvez le protocole adapt\u00e9.\", attr:'data-go=\"institutChoice\"', h:210})}\n    ${photoCard({img:\"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2025\/07\/2B-BIO-hydrater.jpg\", tag:\"Maison\", tagColor:\"#b07b1e\", title:\"A la maison, au quotidien\", desc:\"Avec ou sans probl\u00e8me de peau particulier \u00e0 cibler.\", attr:'data-go=\"maisonChoice\"', h:210})}\n  <\/div>`;\n}\n\nfunction screenInstitutChoice(){\n  return `\n  <div class=\"step-title\">Quel soin avez-vous re\u00e7u (ou allez recevoir) ?<\/div>\n  <div style=\"${GRID_STYLE}\">\n    ${photoCard({img:\"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/2B_Bio_Peel_group.jpg\", tag:\"Cabine\", title:\"2B Bio Peeling\", attr:'data-go=\"peelingChoice\"', h:180})}\n    ${photoCard({img:\"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/choix-enzymatique.jpg\", tag:\"Cabine\", title:\"Soin enzymatique\", attr:'data-go=\"enzymatiqueResult\"', h:180})}\n    ${photoCard({img:\"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/peeloff-on-face.png\", tag:\"Cabine\", title:\"Peel-off\", attr:'data-go=\"peeloffApresTypeChoice\"', h:180})}\n  <\/div>\n  <div style=\"margin-top:18px;\">\n    <p style=\"font-size:16.5px;color:var(--ink-soft);margin:0 0 6px;\">Ces soins sont r\u00e9alis\u00e9s exclusivement par un professionnel agr\u00e9\u00e9.<\/p>\n    <a href=\"https:\/\/2bbiobeauty.com\/nos-instituts\/\" style=\"color:var(--institut,#53720b);text-decoration:underline;font-size:17px;font-weight:500;display:inline-block;\">Trouver un sp\u00e9cialiste 2B Bio Beauty\u00ae &rarr;<\/a>\n  <\/div>`;\n}\n\nfunction screenPeelingChoice(){\n  return `\n  <div class=\"step-title\">Avant ou apr\u00e8s votre s\u00e9ance ?<\/div>\n  <div style=\"${GRID2_STYLE}\">\n    ${photoCard({img:\"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2025\/07\/2B-BIO-Nettoyer.jpg\", tag:\"Pr\u00e9-soin\", title:\"Avant la s\u00e9ance\", desc:\"Routine l\u00e9g\u00e8re de double nettoyage et d\u2019\u00e9quilibrage pour pr\u00e9parer la peau.\", attr:'data-go=\"peelingAvant\"', h:200})}\n    ${photoCard({img:\"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2025\/07\/2B-BIO-oxygener.jpg\", tag:\"Post-soin\", title:\"Apr\u00e8s la s\u00e9ance\", desc:\"Protocole complet, adapt\u00e9 \u00e0 votre type de peau.\", attr:'data-go=\"peelingApresTypeChoice\"', h:200})}\n  <\/div>`;\n}\n\nfunction imgFor(txt){\n  const plain = String(txt).replace(\/<[^>]+>\/g,'').trim();\n  for (const k of IMG_KEYS){ if(plain.startsWith(k)) return IMGS[k]; }\n  return null;\n}\nfunction stepsHtml(list, phase){\n  return '<div class=\"rf-cards\">' + cardsHtml(list, phase || '') + '<\/div>';\n}\nfunction groupsHtml(groups){\n  const order = [], map = {};\n  groups.forEach(g => {\n    const phase = g[0] || '', list = g[1] || [];\n    list.forEach(s => {\n      const label = String(s).replace(\/<[^>]*>\/g, '');\n      const pid = (typeof productIdFor === 'function') ? productIdFor(s) : null;\n      const key = pid ? String(pid) : label;\n      if (!map[key]) { map[key] = {item: s, phases: []}; order.push(key); }\n      if (phase && map[key].phases.indexOf(phase) < 0) map[key].phases.push(phase);\n    });\n  });\n  let all = '';\n  order.forEach(k => { all += cardsHtml([map[k].item], mergePhases(map[k].phases)); });\n  return '<div class=\"rf-cards\">' + all + '<\/div>';\n}\nfunction mergePhases(phases){\n  const SEP = ' &middot; ';\n  const groups = [], idx = {};\n  phases.forEach(p => {\n    const i = p.indexOf(SEP);\n    const pre = i > -1 ? p.slice(0, i) : '';\n    const suf = i > -1 ? p.slice(i + SEP.length) : p;\n    if (!(pre in idx)) { idx[pre] = groups.length; groups.push({pre: pre, sufs: []}); }\n    if (groups[idx[pre]].sufs.indexOf(suf) < 0) groups[idx[pre]].sufs.push(suf);\n  });\n  return groups.map(g => {\n    const txt = g.sufs.map((s, n) => n ? s.charAt(0).toLowerCase() + s.slice(1) : s).join(' et ');\n    return g.pre ? g.pre + SEP + txt : txt;\n  }).join('|');\n}\nfunction cardsHtml(list, phase){\n  window.rfSelNext = window.rfSelNext || {};\n  const GAMME = function(n){\n    if (\/Net\\b|Clean|Puret\\u00e9|Clart\\u00e9|Gommage|Enzyscrub\/.test(n)) return 'Nettoyer';\n    if (\/D\\u00e9fense|Oxygel|S\\u00e9rum O2|Serum O2\/.test(n)) return 'Oxyg\\u00e9ner et Prot\\u00e9ger';\n    if (\/Peeling|F1|F2|F3|Mousse calmante|Peel-off\/.test(n)) return 'En institut';\n    return 'Hydrater';\n  };\n  let cards = '';\n  list.forEach(s => {\n    const label = s.replace(\/<[^>]*>\/g, '');\n    const pid = (typeof productIdFor === 'function') ? productIdFor(s) : null;\n    const pr = priceFor(s) || 0, im = imgFor(s) || '';\n    const key = pid ? String(pid) : label;\n    if (!window.rfSelNext[key]) window.rfSelNext[key] = {pid: pid, price: pr, qty: 1, img: im, label: label};\n    cards += '<div class=\"rf-card\" data-key=\"' + key + '\">'\n      + '<div class=\"rf-card-tag\">' + GAMME(label) + '<\/div>'\n      + '<div class=\"rf-card-img\">' + (phase ? '<span class=\"rf-card-phases\">' + phase.split('|').map(function(p){ return '<span class=\"rf-card-phase\">' + p + '<\/span>'; }).join('') + '<\/span>' : '') + (im ? '<img decoding=\"async\" src=\"' + im + '\" alt=\"\">' : '') + '<\/div>'\n      + '<div class=\"rf-card-nom\">' + label + '<\/div>'\n      + (pr ? '<div class=\"rf-card-prix\">' + eur(pr) + '<\/div>' : '<div class=\"rf-card-prix rf-card-institut\">En institut<\/div>')\n      + (pid && pr ? '<div class=\"rf-card-actions\"><span class=\"rf-stepper\"><button type=\"button\" class=\"rf-moins\" data-key=\"' + key + '\">\\u2212<\/button><b class=\"rf-q\">1<\/b><button type=\"button\" class=\"rf-plus\" data-key=\"' + key + '\">+<\/button><\/span><\/div>' : '')\n      + '<\/div>';\n  });\n  return cards;\n}\n\n\nasync function addOneToCart(btn){\n  const id = btn.getAttribute('data-ids');\n  if(!id) return;\n  btn.disabled = true;\n  const svg = btn.innerHTML;\n  btn.innerHTML = '\u2026';\n  try {\n    await fetch('\/2bbio1\/?wc-ajax=add_to_cart', {\n      method:'POST', credentials:'same-origin',\n      headers:{'Content-Type':'application\/x-www-form-urlencoded'},\n      body:'product_id='+encodeURIComponent(id)+'&quantity=1&bb2_routine=1'\n    });\n    if (window.jQuery) jQuery(document.body).trigger('wc_fragment_refresh');\n    btn.innerHTML = '\u2713';\n    btn.style.background = '#53720b';\n    btn.style.color = '#fff';\n    toast('Produit ajout\u00e9 \u00e0 votre panier');\n  } catch(e){\n    btn.disabled = false; btn.innerHTML = svg;\n    toast('Une erreur est survenue, r\u00e9essayez');\n  }\n}\n\ndocument.addEventListener('click', function(e){\n  const b = e.target.closest ? e.target.closest('.rf-atc') : null;\n  if (b && !b.disabled) { e.preventDefault(); e.stopPropagation(); addOneToCart(b); }\n}, true);\n\n\nfunction screenPeelingAvant(){\n  return `\n  <div class=\"step-title\">Quel est votre type de peau ?<\/div>\n  <div class=\"pill-row\" id=\"peelingAvantPills\">\n    <div class=\"pill\" data-type=\"toutes\">Toutes peaux<\/div>\n    <div class=\"pill\" data-type=\"grasse\">Peau grasse<\/div>\n  <\/div>\n  <div id=\"peelingAvantResult\" style=\"margin-top:18px;\"><\/div>`;\n}\n\nfunction screenPeelingAvantType(key){\n  const p = INSTITUT.peeling.avantPaniers[key];\n  return `\n  <div class=\"protocol\">\n    ${groupsHtml([[\"Routine l\u00e9g\u00e8re\", p.produits]])}\n  <\/div>\n  ${panierBlockHtml('Panier '+p.label, 'Les produits de cette routine, r\u00e9unis en un seul panier.', p.panier, 'Ajouter au panier', false)}`;\n}\n\nfunction screenPeelingApresTypeChoice(){\n  return `\n  <div class=\"step-title\">Quel est votre type de peau ?<\/div>\n  <div class=\"pill-row\" id=\"peelingApresPills\">\n    <div class=\"pill\" data-type=\"normale\">Peau normale<\/div>\n    <div class=\"pill\" data-type=\"seche\">Peau s\u00e8che<\/div>\n    <div class=\"pill\" data-type=\"mature\">Peau mature<\/div>\n    <div class=\"pill\" data-type=\"grasse\">Peau grasse<\/div>\n    <div class=\"pill\" data-type=\"hyperpigmentee\">Peau hyperpigment\u00e9e<\/div>\n    <div class=\"pill\" data-type=\"grasseHyperpigmentee\">Peau grasse hyperpigment\u00e9e<\/div>\n  <\/div>\n  <div id=\"peelingApresResult\" style=\"margin-top:18px;\"><\/div>`;\n}\n\nfunction screenPeelingApresType(key){\n  const t = PEELING_APRES_TYPES[key];\n  return `\n  <div class=\"protocol\">\n    ${groupsHtml([\n      [\"Pr\u00e9parer &middot; Matin\", t.preparer.matin],\n      [\"Pr\u00e9parer &middot; Soir\", t.preparer.soir],\n      [\"Pr\u00e9parer &middot; Hebdo\", t.preparer.hebdo],\n      [\"Apaiser &middot; Matin et soir\", t.apaiser],\n      [\"Nourrir &middot; Hebdo\", t.nourrir],\n      [\"Cibler &middot; Matin et soir\", t.traiter],\n      [\"Prot\u00e9ger\", t.proteger]\n    ])}\n  <\/div>\n  ${panierBlockHtml('Panier '+t.label, 'Les produits de ce protocole, r\u00e9unis en un seul panier.', t.panier, 'Ajouter au panier', false)}`;\n}\n\nfunction screenEnzymatiqueResult(){\n  const a = INSTITUT.enzymatique.apres;\n  const p = INSTITUT.enzymatique.panier;\n  return `\n  <div class=\"protocol\">\n    ${groupsHtml([[\"Matin\", a.matin], [\"Soir\", a.soir], [\"Hebdo\", a.hebdo]])}\n  <\/div>\n  ${panierBlockHtml('Panier Soin enzymatique', 'Les produits de cette routine, r\u00e9unis en un seul panier.', p.produits, 'Ajouter au panier', false)}`;\n}\n\nfunction screenPeeloffApresTypeChoice(){\n  return `\n  <div class=\"step-title\">Quel est votre type de peau ?<\/div>\n  <div class=\"pill-row\" id=\"peeloffTypePills\">\n    <div class=\"pill\" data-type=\"toutes\">Toutes peaux<\/div>\n    <div class=\"pill\" data-type=\"grasse\">Peau grasse<\/div>\n  <\/div>\n  <div id=\"peeloffTypeResult\" style=\"margin-top:18px;\"><\/div>`;\n}\n\nfunction screenPeeloffApresType(key){\n  const t = PEELOFF_APRES_TYPES[key];\n  return `\n  <div class=\"protocol\">\n    ${groupsHtml([[\"Matin\", t.matin], [\"Soir\", t.soir]])}\n  <\/div>\n  ${panierBlockHtml('Panier '+t.label, 'Les produits de ce protocole, r\u00e9unis en un seul panier.', t.panier, 'Ajouter au panier', false)}`;\n}\n\nfunction screenMaisonChoice(){\n  return `\n  <div class=\"step-title\">Avez-vous un probl\u00e8me de peau particulier ?<\/div>\n  <div style=\"${GRID2_STYLE}\">\n    ${photoCard({img:\"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2025\/07\/2B-BIO-corriger.jpg\", tag:\"Oui\", tagColor:\"#b07b1e\", title:\"J'ai un probl\u00e8me \u00e0 cibler\", desc:\"Boutons, taches, rides, s\u00e9cheresse, sensibilit\u00e9...\", attr:'data-go=\"symptomChoice\"', h:200})}\n    ${photoCard({img:\"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2025\/07\/2B-BIO-apaiser.jpg\", tag:\"Non\", tagColor:\"#53720b\", title:\"Entretien, pr\u00e9vention\", desc:\"Aucun probl\u00e8me pr\u00e9cis, je veux une routine d'\u00e9quilibre.\", attr:'data-go=\"rituel-preventif\"', h:200})}\n  <\/div>`;\n}\n\nfunction screenSymptomChoice(){\n  const items = RITUELS.filter(r=>r.id!=='preventif');\n  const IMGS = {\"grasse\":\"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/09\/boutons-brillance.jpg\",\"taches\":\"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/09\/taches-teint-irregulier.jpg\",\"mature\":\"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/09\/rides-relachement.jpg\",\"secheresse\":\"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/09\/secheresse-tiraillements.jpg\",\"sensible\":\"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/09\/sensibilite-inconfort.jpg\",\"terne\":\"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/09\/teint-terne-peau-fatiguee.jpg\"};\n  return `\n  <div class=\"step-title\">Quel est votre probl\u00e8me principal ?<\/div>\n  <div id=\"symptomPills\" style=\"${GRID_STYLE}\">\n    ${items.map(r=>photoCard({img:IMGS[r.id], title:r.symptom, attr:`data-type=\"rituel-${r.id}\"`, h:160, ts:18})).join('')}\n    ${photoCard({img:\"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/09\/autre-non-liste.jpg\", tag:\"Conseil\", tagColor:\"#b07b1e\", title:\"Autre \/ non list\u00e9\", attr:'data-type=\"autre\"', h:160, ts:18})}\n  <\/div>\n  <div id=\"symptomResult\" style=\"margin-top:18px;\"><\/div>`;\n}\n\nfunction screenRituel(id){\n  const r = RITUELS.find(x=>x.id===id);\n  const protocolHtml = r.protocol ? `\n  <div class=\"protocol\">\n    ${groupsHtml([[\"Matin\", r.protocol.matin], [\"Soir\", r.protocol.soir], [\"Hebdo\", r.protocol.hebdo || []]])}\n  <\/div>` : '';\n  return `\n  ${protocolHtml}\n  ${panierBlockHtml(r.title, r.tagline, r.products, 'Ajouter le rituel au panier', r.spf)}`;\n}\n\nfunction screenAutre(){\n  return `\n  <div class=\"info-card\">\n    <p>Pour les probl\u00e8mes cutan\u00e9s plus complexes, telles que rougeurs diffuses, cellulite, vergetures, cicatrices, irritations post-rasage,... prenez contact avec un sp\u00e9cialiste 2B Bio Beauty\u00ae, form\u00e9 pour r\u00e9aliser un bilan esth\u00e9tique de votre peau et vous orienter vers un programme de soin personnalis\u00e9.<\/p>\n    <a class=\"cta\" href=\"https:\/\/2bbiobeauty.com\/contact\/\" style=\"display:inline-block;text-decoration:none;text-align:center;\">Trouver un sp\u00e9cialiste 2B Bio Beauty\u00ae<\/a>\n    \n  <\/div>`;\n}\n\n\/* ---------- C\u00e2blage des \u00e9crans ---------- *\/\n\nconst SCREENS = {\n  institutChoice: {fn:screenInstitutChoice, label:\"Institut\"},\n  peelingChoice: {fn:screenPeelingChoice, label:\"Peeling\"},\n  peelingAvant: {fn:screenPeelingAvant, label:\"Avant\"},\n  peelingApresTypeChoice: {fn:screenPeelingApresTypeChoice, label:\"Apr\u00e8s, type de peau\"},\n  enzymatiqueResult: {fn:screenEnzymatiqueResult, label:\"Enzymatique\"},\n  peeloffApresTypeChoice: {fn:screenPeeloffApresTypeChoice, label:\"Peel-off, type de peau\"},\n  maisonChoice: {fn:screenMaisonChoice, label:\"Maison\"},\n  symptomChoice: {fn:screenSymptomChoice, label:\"Sympt\u00f4me\"}\n};\n\nfunction resolveScreen(key){\n  if(SCREENS[key]) return SCREENS[key];\n  if(key.startsWith('rituel-')){\n    const id = key.replace('rituel-','');\n    const r = RITUELS.find(x=>x.id===id);\n    return {fn:()=>screenRituel(id), label:r.title};\n  }\n  return null;\n}\n\nfunction wireCurrentStep(container, currentFn){\n  container.querySelectorAll('[data-go]').forEach(node=>{\n    node.addEventListener('click', ()=>{\n      const key = node.getAttribute('data-go');\n      const screen = resolveScreen(key);\n      path.push(screen.label);\n      history.push(screen.fn);\n      renderCrumbs();\n      stage.innerHTML = '';\n      const el = document.createElement('div');\n      el.className = 'step';\n      el.innerHTML = screen.fn();\n      stage.appendChild(el);\n      wireCurrentStep(el, screen.fn);\n    });\n  });\n  container.querySelectorAll('.ctaAdd').forEach(cta=>{\n    cta.addEventListener('click', ()=>{\n      addIdsToCart(cta);\n    });\n  });\n  const peeloffPills = container.querySelector('#peeloffTypePills');\n  if(peeloffPills){\n    const resultBox = container.querySelector('#peeloffTypeResult');\n    peeloffPills.querySelectorAll('[data-type],.pill').forEach(pill=>{\n      pill.addEventListener('click', ()=>{\n        peeloffPills.querySelectorAll('[data-type],.pill').forEach(p=>p.classList.remove('active'));\n        pill.classList.add('active');\n        const key = pill.getAttribute('data-type');\n        resultBox.innerHTML = screenPeeloffApresType(key);\n        resultBox.querySelectorAll('.ctaAdd').forEach(cta=>{\n          cta.addEventListener('click', ()=>{\n            addIdsToCart(cta);\n          });\n        });\n      });\n    });\n  }\n  const peelingAvantPills = container.querySelector('#peelingAvantPills');\n  if(peelingAvantPills){\n    const resultBox = container.querySelector('#peelingAvantResult');\n    peelingAvantPills.querySelectorAll('[data-type],.pill').forEach(pill=>{\n      pill.addEventListener('click', ()=>{\n        peelingAvantPills.querySelectorAll('[data-type],.pill').forEach(p=>p.classList.remove('active'));\n        pill.classList.add('active');\n        const key = pill.getAttribute('data-type');\n        resultBox.innerHTML = screenPeelingAvantType(key);\n        resultBox.querySelectorAll('.ctaAdd').forEach(cta=>{\n          cta.addEventListener('click', ()=>{\n            addIdsToCart(cta);\n          });\n        });\n      });\n    });\n  }\n  const peelingApresPills = container.querySelector('#peelingApresPills');\n  if(peelingApresPills){\n    const resultBox = container.querySelector('#peelingApresResult');\n    peelingApresPills.querySelectorAll('[data-type],.pill').forEach(pill=>{\n      pill.addEventListener('click', ()=>{\n        peelingApresPills.querySelectorAll('[data-type],.pill').forEach(p=>p.classList.remove('active'));\n        pill.classList.add('active');\n        const key = pill.getAttribute('data-type');\n        resultBox.innerHTML = screenPeelingApresType(key);\n        resultBox.querySelectorAll('.ctaAdd').forEach(cta=>{\n          cta.addEventListener('click', ()=>{\n            addIdsToCart(cta);\n          });\n        });\n      });\n    });\n  }\n  const symptomPills = container.querySelector('#symptomPills');\n  if(symptomPills){\n    const resultBox = container.querySelector('#symptomResult');\n    symptomPills.querySelectorAll('[data-type],.pill').forEach(pill=>{\n      pill.addEventListener('click', ()=>{\n        symptomPills.querySelectorAll('[data-type],.pill').forEach(p=>p.classList.remove('active'));\n        pill.classList.add('active');\n        const type = pill.getAttribute('data-type');\n        if(type === 'autre'){\n          resultBox.innerHTML = screenAutre();\n        } else {\n          const rituelId = type.replace('rituel-','');\n          resultBox.innerHTML = screenRituel(rituelId);\n          resultBox.querySelectorAll('.ctaAdd').forEach(cta=>{\n            cta.addEventListener('click', ()=>{\n              addIdsToCart(cta);\n            });\n          });\n        }\n      });\n    });\n  }\n}\n\nbackBtn.addEventListener('click', ()=>{\n  path.pop();\n  history.pop();\n  stage.innerHTML = '';\n  if(history.length===0){\n    renderHome();\n    return;\n  }\n  const fn = history[history.length-1];\n  renderCrumbs();\n  const el = document.createElement('div');\n  el.className = 'step';\n  el.innerHTML = fn();\n  stage.appendChild(el);\n  wireCurrentStep(el, fn);\n});\n\nfunction renderHome(){\n  path = ['D\u00e9part'];\n  history = [screenHome];\n  renderCrumbs();\n  stage.innerHTML = '';\n  const el = document.createElement('div');\n  el.className = 'step';\n  el.innerHTML = screenHome();\n  stage.appendChild(el);\n  wireCurrentStep(el, screenHome);\n}\n\ndocument.getElementById('homeLink').addEventListener('click', renderHome);\nrenderHome();\n\n})();\n<\/script>\n<script>\n(function () {\n  var TIERS = [[5, 30], [4, 20], [3, 10], [2, 5]];\n  function eur2(v) { return v.toFixed(2).replace('.', ',') + ' \\u20ac'; }\n  function remise2(n) { for (var i = 0; i < TIERS.length; i++) if (n >= TIERS[i][0]) return TIERS[i][1]; return 0; }\n\n  function ensure() {\n    if (document.getElementById('rfBar2')) return;\n    var b = document.createElement('div');\n    b.id = 'rfBar2';\n    b.innerHTML = '<div class=\"rf-bar-titre\">La routine qui vous correspond.<\/div><div class=\"rf-bar-in\">'\n      + '<div class=\"rf-bar-left\"><span class=\"rf-bar-label\">Total<\/span> '\n      + '<span id=\"rfOld2\" class=\"rf-old\" hidden><\/span> <span id=\"rfTot2\" class=\"rf-tot\"><\/span> '\n      + '<span id=\"rfEco2\" class=\"rf-eco\" hidden><\/span><\/div>'\n      + '<div class=\"rf-slots\" id=\"rfSlots2\"><\/div>'\n      + '<button type=\"button\" class=\"cta\" id=\"rfCta2\">Ajouter ma routine au panier<\/button><\/div>';\n    document.body.appendChild(b);\n  }\n\n  function items() {\n    var out = [];\n    for (var k in (window.rfSel || {})) {\n      var it = window.rfSel[k];\n      if (it.qty > 0 && it.pid && it.price) out.push(it);\n    }\n    return out;\n  }\n\n  function sync() {\n    ensure();\n    var bar = document.getElementById('rfBar2');\n    var actifs = items();\n    var n = actifs.reduce(function (t, i) { return t + i.qty; }, 0);\n    var visible = !!document.querySelector('#bb-rf .rf-routine') && n > 0;\n    bar.classList.toggle('rf-bar-on', visible);\n    if (!visible) return;\n    var r = remise2(n), avant = actifs.reduce(function (t, i) { return t + i.price * i.qty; }, 0);\n    var apres = avant * (1 - r \/ 100);\n    document.getElementById('rfTot2').textContent = eur2(apres);\n    var old = document.getElementById('rfOld2');\n    old.hidden = !r; if (r) old.textContent = eur2(avant);\n    var eco = document.getElementById('rfEco2');\n    eco.hidden = false;\n    eco.textContent = r ? eur2(avant - apres) + ' \\u00e9conomis\\u00e9s !' : 'Ajoutez un 2e produit : \\u22125 %';\n    var labels = ['', '\\u22125%', '\\u221210%', '\\u221220%', '\\u221230%', '\\u221230%'];\n    var thumbs = [];\n    actifs.forEach(function (i) { for (var q = 0; q < i.qty; q++) thumbs.push(i); });\n    var htmlS = '';\n    for (var s = 0; s < Math.max(6, thumbs.length); s++) {\n      if (s < thumbs.length) {\n        var it2 = thumbs[s];\n        htmlS += '<span class=\"rf-slot rf-slot-full\" data-key=\"' + (it2.pid ? String(it2.pid) : it2.label) + '\">'\n          + (it2.img ? '<img decoding=\"async\" src=\"' + it2.img + '\" alt=\"\">' : '')\n          + '<span class=\"rf-tip\">' + it2.label + ' \\u00b7 ' + eur2(it2.price) + '<\/span>'\n          + '<span class=\"rf-x\">\\u00d7<\/span><\/span>';\n      } else {\n        htmlS += '<span class=\"rf-slot\">' + (labels[s] || '\\u221230%') + '<\/span>';\n      }\n    }\n    document.getElementById('rfSlots2').innerHTML = htmlS;\n  }\n\n  document.addEventListener('click', function (e) {\n    var slot = e.target.closest('#rfBar2 .rf-slot-full');\n    if (slot) {\n      var ks = slot.getAttribute('data-key');\n      var its = (window.rfSel || {})[ks];\n      if (its) {\n        its.qty = Math.max(0, its.qty - 1);\n        document.querySelectorAll('.rf-card').forEach(function (cd) {\n          if (cd.getAttribute('data-key') === ks) {\n            cd.querySelector('.rf-q').textContent = its.qty;\n            cd.classList.toggle('rf-zero', its.qty === 0);\n          }\n        });\n        sync();\n      }\n      return;\n    }\n    var pm = e.target.closest('.rf-plus, .rf-moins');\n    if (pm) {\n      var k = pm.getAttribute('data-key');\n      var it = (window.rfSel || {})[k];\n      if (!it) return;\n      it.qty = Math.max(0, it.qty + (pm.classList.contains('rf-plus') ? 1 : -1));\n      var card = pm.closest('.rf-card');\n      if (card) { card.querySelector('.rf-q').textContent = it.qty; card.classList.toggle('rf-zero', it.qty === 0); }\n      sync();\n      return;\n    }\n    if (e.target.id === 'rfCta2') {\n      var btn = e.target;\n      btn.disabled = true; btn.textContent = 'Ajout en cours\\u2026';\n      var jobs = items().map(function (i) {\n        return function () {\n          return fetch('\/2bbio1\/?wc-ajax=add_to_cart', {\n            method: 'POST', credentials: 'same-origin',\n            headers: { 'Content-Type': 'application\/x-www-form-urlencoded' },\n            body: 'product_id=' + i.pid + '&quantity=' + i.qty + '&bb2_routine=1'\n          });\n        };\n      });\n      jobs.reduce(function (p, j) { return p.then(j); }, Promise.resolve())\n        .then(function () { window.location = '\/2bbio1\/panier\/'; })\n        .catch(function () { btn.disabled = false; btn.textContent = 'Ajouter ma routine au panier'; });\n    }\n  });\n\n  var app = document.getElementById('bb-rf');\n  if (app) new MutationObserver(function () { sync(); }).observe(app, { childList: true, subtree: true });\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', sync);\n  else sync();\n})();\n\n\/* ---------- Liens profonds : \/ma-routine\/?routine=cle ---------- *\/\n(function(){\n  var DEEP = {\n    'enzymatique':                  [['go','institutChoice'],['go','enzymatiqueResult']],\n    'peeloff':                      [['go','institutChoice'],['go','peeloffApresTypeChoice']],\n    'peeloff-toutes':               [['go','institutChoice'],['go','peeloffApresTypeChoice'],['pill','peeloffTypePills','toutes']],\n    'peeloff-grasse':               [['go','institutChoice'],['go','peeloffApresTypeChoice'],['pill','peeloffTypePills','grasse']],\n    'peeling':                      [['go','institutChoice'],['go','peelingChoice']],\n    'peeling-avant-toutes':         [['go','institutChoice'],['go','peelingChoice'],['go','peelingAvant'],['pill','peelingAvantPills','toutes']],\n    'peeling-avant-grasse':         [['go','institutChoice'],['go','peelingChoice'],['go','peelingAvant'],['pill','peelingAvantPills','grasse']],\n    'peeling-normale':              [['go','institutChoice'],['go','peelingChoice'],['go','peelingApresTypeChoice'],['pill','peelingApresPills','normale']],\n    'peeling-seche':                [['go','institutChoice'],['go','peelingChoice'],['go','peelingApresTypeChoice'],['pill','peelingApresPills','seche']],\n    'peeling-mature':               [['go','institutChoice'],['go','peelingChoice'],['go','peelingApresTypeChoice'],['pill','peelingApresPills','mature']],\n    'peeling-grasse':               [['go','institutChoice'],['go','peelingChoice'],['go','peelingApresTypeChoice'],['pill','peelingApresPills','grasse']],\n    'peeling-hyperpigmentee':       [['go','institutChoice'],['go','peelingChoice'],['go','peelingApresTypeChoice'],['pill','peelingApresPills','hyperpigmentee']],\n    'peeling-grasse-hyperpigmentee':[['go','institutChoice'],['go','peelingChoice'],['go','peelingApresTypeChoice'],['pill','peelingApresPills','grasseHyperpigmentee']]\n  };\n  function run(){\n    var key = null;\n    try { key = new URLSearchParams(window.location.search).get('routine'); } catch(e){ return; }\n    var seq = key && DEEP[key];\n    if (!seq) return;\n    var i = 0;\n    (function step(){\n      if (i >= seq.length) {\n        setTimeout(function(){\n          var res = document.querySelector('#bb-rf .protocol, #bb-rf .rf-cards, #bb-rf .pill-row');\n          if (res && res.scrollIntoView) res.scrollIntoView({behavior:'smooth', block:'start'});\n        }, 200);\n        return;\n      }\n      var a = seq[i++], el = null;\n      if (a[0] === 'go') el = document.querySelector('#bb-rf [data-go=\"' + a[1] + '\"]');\n      else el = document.querySelector('#' + a[1] + ' [data-type=\"' + a[2] + '\"]');\n      if (el) el.click();\n      setTimeout(step, 80);\n    })();\n  }\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', function(){ setTimeout(run, 300); });\n  else setTimeout(run, 300);\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Trouvez votre rituel beaut\u00e9 en 3 clics : apr\u00e8s un soin en institut&hellip;<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-10526","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Trouver ma routine - 2bbiobeauty<\/title>\n<meta name=\"description\" content=\"R\u00e9pondez \u00e0 quelques questions sur votre peau et recevez la routine 2B Bio Beauty adapt\u00e9e \u00e0 vos besoins, \u00e9tape par \u00e9tape, du nettoyage \u00e0 la protection.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/2bbiobeauty.com\/de\/ma-routine\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Trouver ma routine - 2bbiobeauty\" \/>\n<meta property=\"og:description\" content=\"R\u00e9pondez \u00e0 quelques questions sur votre peau et recevez la routine 2B Bio Beauty adapt\u00e9e \u00e0 vos besoins, \u00e9tape par \u00e9tape, du nettoyage \u00e0 la protection.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/2bbiobeauty.com\/de\/ma-routine\/\" \/>\n<meta property=\"og:site_name\" content=\"2bbiobeauty\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/2bbiobeauty.official\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-17T10:59:12+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/2bbiobeauty.com\\\/ma-routine\\\/\",\"url\":\"https:\\\/\\\/2bbiobeauty.com\\\/ma-routine\\\/\",\"name\":\"Trouver ma routine - 2bbiobeauty\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/2bbiobeauty.com\\\/#website\"},\"datePublished\":\"2026-08-10T20:36:29+00:00\",\"dateModified\":\"2026-08-17T10:59:12+00:00\",\"description\":\"R\u00e9pondez \u00e0 quelques questions sur votre peau et recevez la routine 2B Bio Beauty adapt\u00e9e \u00e0 vos besoins, \u00e9tape par \u00e9tape, du nettoyage \u00e0 la protection.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/2bbiobeauty.com\\\/ma-routine\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/2bbiobeauty.com\\\/ma-routine\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/2bbiobeauty.com\\\/ma-routine\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/2bbiobeauty.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Trouver ma routine\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/2bbiobeauty.com\\\/#website\",\"url\":\"https:\\\/\\\/2bbiobeauty.com\\\/\",\"name\":\"2bbiobeauty.com\",\"description\":\"Reverse your age\",\"publisher\":{\"@id\":\"https:\\\/\\\/2bbiobeauty.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/2bbiobeauty.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/2bbiobeauty.com\\\/#organization\",\"name\":\"2bbiobeauty\",\"url\":\"https:\\\/\\\/2bbiobeauty.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/2bbiobeauty.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/2bbiobeauty.com\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/2B-Bio-Beauty-logo-couleur-site-RVB.png\",\"contentUrl\":\"https:\\\/\\\/2bbiobeauty.com\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/2B-Bio-Beauty-logo-couleur-site-RVB.png\",\"width\":1611,\"height\":1502,\"caption\":\"2bbiobeauty\"},\"image\":{\"@id\":\"https:\\\/\\\/2bbiobeauty.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/2bbiobeauty.official\\\/\",\"https:\\\/\\\/www.instagram.com\\\/2bbiobeauty.official\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Trouver ma routine - 2bbiobeauty","description":"R\u00e9pondez \u00e0 quelques questions sur votre peau et recevez la routine 2B Bio Beauty adapt\u00e9e \u00e0 vos besoins, \u00e9tape par \u00e9tape, du nettoyage \u00e0 la protection.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/2bbiobeauty.com\/de\/ma-routine\/","og_locale":"de_DE","og_type":"article","og_title":"Trouver ma routine - 2bbiobeauty","og_description":"R\u00e9pondez \u00e0 quelques questions sur votre peau et recevez la routine 2B Bio Beauty adapt\u00e9e \u00e0 vos besoins, \u00e9tape par \u00e9tape, du nettoyage \u00e0 la protection.","og_url":"https:\/\/2bbiobeauty.com\/de\/ma-routine\/","og_site_name":"2bbiobeauty","article_publisher":"https:\/\/www.facebook.com\/2bbiobeauty.official\/","article_modified_time":"2026-08-17T10:59:12+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/2bbiobeauty.com\/ma-routine\/","url":"https:\/\/2bbiobeauty.com\/ma-routine\/","name":"Trouver ma routine - 2bbiobeauty","isPartOf":{"@id":"https:\/\/2bbiobeauty.com\/#website"},"datePublished":"2026-08-10T20:36:29+00:00","dateModified":"2026-08-17T10:59:12+00:00","description":"R\u00e9pondez \u00e0 quelques questions sur votre peau et recevez la routine 2B Bio Beauty adapt\u00e9e \u00e0 vos besoins, \u00e9tape par \u00e9tape, du nettoyage \u00e0 la protection.","breadcrumb":{"@id":"https:\/\/2bbiobeauty.com\/ma-routine\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/2bbiobeauty.com\/ma-routine\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/2bbiobeauty.com\/ma-routine\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/2bbiobeauty.com\/"},{"@type":"ListItem","position":2,"name":"Trouver ma routine"}]},{"@type":"WebSite","@id":"https:\/\/2bbiobeauty.com\/#website","url":"https:\/\/2bbiobeauty.com\/","name":"2bbiobeauty.com","description":"Kehre dein Alter um","publisher":{"@id":"https:\/\/2bbiobeauty.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/2bbiobeauty.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/2bbiobeauty.com\/#organization","name":"2bbiobeauty","url":"https:\/\/2bbiobeauty.com\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/2bbiobeauty.com\/#\/schema\/logo\/image\/","url":"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/2B-Bio-Beauty-logo-couleur-site-RVB.png","contentUrl":"https:\/\/2bbiobeauty.com\/wp-content\/uploads\/2026\/08\/2B-Bio-Beauty-logo-couleur-site-RVB.png","width":1611,"height":1502,"caption":"2bbiobeauty"},"image":{"@id":"https:\/\/2bbiobeauty.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/2bbiobeauty.official\/","https:\/\/www.instagram.com\/2bbiobeauty.official\/"]}]}},"_links":{"self":[{"href":"https:\/\/2bbiobeauty.com\/de\/wp-json\/wp\/v2\/pages\/10526","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/2bbiobeauty.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/2bbiobeauty.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/2bbiobeauty.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/2bbiobeauty.com\/de\/wp-json\/wp\/v2\/comments?post=10526"}],"version-history":[{"count":1,"href":"https:\/\/2bbiobeauty.com\/de\/wp-json\/wp\/v2\/pages\/10526\/revisions"}],"predecessor-version":[{"id":10560,"href":"https:\/\/2bbiobeauty.com\/de\/wp-json\/wp\/v2\/pages\/10526\/revisions\/10560"}],"wp:attachment":[{"href":"https:\/\/2bbiobeauty.com\/de\/wp-json\/wp\/v2\/media?parent=10526"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}