Showing source for: https://www.terra-ross.fr/blogs/truffle-guides
Duration: 1.240451s
Server: cloudflare
<!doctype html>
<html class="no-js" lang="fr" dir="ltr">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, height=device-height, minimum-scale=1.0">
<link rel="shortcut icon" href="//www.terra-ross.fr/cdn/shop/files/favicon-new-4.png?crop=center&height=48&v=1757053379&width=48" type="image/png" /><title>Guides sur les Truffes | Truffes blanches et noires – Terra Ross
</title><meta name="description" content="Guides des truffes noires et blanches : espèces, saisons, arômes et usages culinaires. Comment choisir, acheter et conserver vos truffes selon leur forme."><meta property="og:site_name" content="Terra Ross">
<meta property="og:url" content="https://www.terra-ross.fr/blogs/truffle-guides">
<meta property="og:title" content="Guides sur les Truffes | Truffes blanches et noires">
<meta property="og:type" content="website">
<meta property="og:description" content="Guides des truffes noires et blanches : espèces, saisons, arômes et usages culinaires. Comment choisir, acheter et conserver vos truffes selon leur forme."><meta property="og:image" content="https://www.terra-ross.fr/cdn/shop/files/terra-ross-fresh-black-white-truffles-og_4a6a833e-75b6-4349-9c6f-a374195e03ba.webp?v=1784359870&width=1200">
<meta property="og:image:secure_url" content="https://www.terra-ross.fr/cdn/shop/files/terra-ross-fresh-black-white-truffles-og_4a6a833e-75b6-4349-9c6f-a374195e03ba.webp?v=1784359870&width=1200">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="Fresh black and white European truffles selected and supplied by Terra Ross"><meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Guides sur les Truffes | Truffes blanches et noires">
<meta name="twitter:description" content="Guides des truffes noires et blanches : espèces, saisons, arômes et usages culinaires. Comment choisir, acheter et conserver vos truffes selon leur forme."><meta name="twitter:image" content="https://www.terra-ross.fr/cdn/shop/files/terra-ross-fresh-black-white-truffles-og_4a6a833e-75b6-4349-9c6f-a374195e03ba.webp?v=1784359870&width=1200">
<meta name="twitter:image:alt" content="Fresh black and white European truffles selected and supplied by Terra Ross"><link rel="canonical" href="https://www.terra-ross.fr/blogs/truffle-guides">
<link rel="preconnect" href="https://cdn.shopify.com"><link rel="preconnect" href="https://fonts.shopifycdn.com" crossorigin><link href="//www.terra-ross.fr/cdn/shop/t/27/assets/theme.css?v=116664019511233992671789890991" as="style" rel="preload"><link href="//www.terra-ross.fr/cdn/shop/t/27/assets/section-header.css?v=38854884185764721981786777741" as="style" rel="preload"><link href="//www.terra-ross.fr/cdn/shop/t/27/assets/component-blog-item.css?v=165969672717598901641786777715" as="style" rel="preload">
<link rel="preload" href="//www.terra-ross.fr/cdn/fonts/open_sans/opensans_n5.500dcf21ddee5bc5855ad3a20394d3bc363c217c.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="//www.terra-ross.fr/cdn/fonts/open_sans/opensans_n4.c32e4d4eca5273f6d4ee95ddf54b5bbb75fc9b61.woff2" as="font" type="font/woff2" crossorigin>
<style type="text/css">
@font-face {
font-family: "Open Sans";
font-weight: 500;
font-style: normal;
font-display: swap;
src: url("//www.terra-ross.fr/cdn/fonts/open_sans/opensans_n5.500dcf21ddee5bc5855ad3a20394d3bc363c217c.woff2") format("woff2"),
url("//www.terra-ross.fr/cdn/fonts/open_sans/opensans_n5.af1a06d824dccfb4d400ba874ef19176651ec834.woff") format("woff");
}
@font-face {
font-family: "Open Sans";
font-weight: 400;
font-style: normal;
font-display: swap;
src: url("//www.terra-ross.fr/cdn/fonts/open_sans/opensans_n4.c32e4d4eca5273f6d4ee95ddf54b5bbb75fc9b61.woff2") format("woff2"),
url("//www.terra-ross.fr/cdn/fonts/open_sans/opensans_n4.5f3406f8d94162b37bfa232b486ac93ee892406d.woff") format("woff");
}
@font-face {
font-family: "Open Sans";
font-weight: 500;
font-style: normal;
font-display: swap;
src: url("//www.terra-ross.fr/cdn/fonts/open_sans/opensans_n5.500dcf21ddee5bc5855ad3a20394d3bc363c217c.woff2") format("woff2"),
url("//www.terra-ross.fr/cdn/fonts/open_sans/opensans_n5.af1a06d824dccfb4d400ba874ef19176651ec834.woff") format("woff");
}
@font-face {
font-family: "Open Sans";
font-weight: 400;
font-style: italic;
font-display: swap;
src: url("//www.terra-ross.fr/cdn/fonts/open_sans/opensans_i4.6f1d45f7a46916cc95c694aab32ecbf7509cbf33.woff2") format("woff2"),
url("//www.terra-ross.fr/cdn/fonts/open_sans/opensans_i4.4efaa52d5a57aa9a57c1556cc2b7465d18839daa.woff") format("woff");
}
</style>
<style type="text/css">
:root {
/* Direction */
--direction:ltr;
/* Font variables */
--font-stack-headings: "Open Sans", sans-serif;
--font-weight-headings: 500;
--font-style-headings: normal;
--font-stack-body: "Open Sans", sans-serif;
--font-weight-body: 400;--font-weight-body-bold: 500;--font-style-body: normal;--font-weight-buttons: var(--font-weight-body-bold);--font-weight-menu: var(--font-weight-body-bold);--base-headings-size: 45;
--base-headings-line: 1.5;
--base-headings-spacing: 0.0em;
--base-body-size: 16;
--base-body-line: 1.6;
--base-body-spacing: -0.01em;
--base-menu-size: 15;
/* Color variables */
--color-background-header: #ffffff;
--color-secondary-background-header: rgba(29, 29, 29, 0.08);
--color-opacity-background-header: rgba(255, 255, 255, 0);
--color-text-header: #1d1d1d;
--color-foreground-header: #ffffff;
--color-accent-header: #000000;
--color-foreground-accent-header: #ffffff;
--color-borders-header: rgba(29, 29, 29, 0.1);
--color-background-main: #ffffff;
--color-secondary-background-main: rgba(29, 29, 29, 0.08);
--color-third-background-main: rgba(29, 29, 29, 0.04);
--color-fourth-background-main: rgba(29, 29, 29, 0.02);
--color-opacity-background-main: rgba(255, 255, 255, 0);
--color-text-main: #1d1d1d;
--color-foreground-main: #ffffff;
--color-secondary-text-main: rgba(29, 29, 29, 0.62);
--color-accent-main: #000000;
--color-foreground-accent-main: #ffffff;
--color-borders-main: rgba(29, 29, 29, 0.15);
--color-background-cards: #ffffff;
--color-gradient-cards: ;
--color-text-cards: #1d1d1d;
--color-foreground-cards: #ffffff;
--color-secondary-text-cards: rgba(29, 29, 29, 0.6);
--color-accent-cards: #1d1d1d;
--color-foreground-accent-cards: #ffffff;
--color-borders-cards: #e1e1e1;
--color-background-footer: #efefef;
--color-text-footer: #000000;
--color-accent-footer: #298556;
--color-borders-footer: rgba(0, 0, 0, 0.15);
--color-borders-forms-primary: rgba(29, 29, 29, 0.3);
--color-borders-forms-secondary: rgba(29, 29, 29, 0.6);
/* Borders */
--border-width-cards: 1px;
--border-radius-cards: 10px;
--border-width-buttons: 1px;
--border-radius-buttons: 30px;
--border-width-forms: 1px;
--border-radius-forms: 5px;
/* Shadows */
--shadow-x-cards: 0px;
--shadow-y-cards: 0px;
--shadow-blur-cards: 0px;
--color-shadow-cards: rgba(0,0,0,0);
--shadow-x-buttons: 0px;
--shadow-y-buttons: 0px;
--shadow-blur-buttons: 0px;
--color-shadow-buttons: rgba(0,0,0,0);
/* Layout */
--grid-gap-original-base: 26px;
--theme-max-width: 1750px;
--container-vertical-space-base: 100px;
--image-fit-padding: 10%;
}
@media screen and (max-width: 767px) {
:root {
--border-radius-cards: clamp(8px, 5px, 10px);
}
}
.facets__summary, #main select, .sidebar select, .modal-content select {
background-image: url('data:image/svg+xml;utf8,<svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="%231d1d1d"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="%231d1d1d"/></svg>');
}
.card .star-rating__stars {
background-image: url('data:image/svg+xml;utf8,<svg width="20" height="13" viewBox="0 0 14 13" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="m7 0 1.572 4.837h5.085l-4.114 2.99 1.572 4.836L7 9.673l-4.114 2.99 1.571-4.837-4.114-2.99h5.085L7 0Z" stroke="%231d1d1d" stroke-width="1"/></svg>');
}
.card .star-rating__stars-active {
background-image: url('data:image/svg+xml;utf8,<svg width="20" height="13" viewBox="0 0 14 13" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="m7 0 1.572 4.837h5.085l-4.114 2.99 1.572 4.836L7 9.673l-4.114 2.99 1.571-4.837-4.114-2.99h5.085L7 0Z" fill="%23058041" stroke-width="0"/></svg>');
}
.star-rating__stars {
background-image: url('data:image/svg+xml;utf8,<svg width="20" height="13" viewBox="0 0 14 13" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="m7 0 1.572 4.837h5.085l-4.114 2.99 1.572 4.836L7 9.673l-4.114 2.99 1.571-4.837-4.114-2.99h5.085L7 0Z" stroke="%231d1d1d" stroke-width="1"/></svg>');
}
.star-rating__stars-active {
background-image: url('data:image/svg+xml;utf8,<svg width="20" height="13" viewBox="0 0 14 13" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="m7 0 1.572 4.837h5.085l-4.114 2.99 1.572 4.836L7 9.673l-4.114 2.99 1.571-4.837-4.114-2.99h5.085L7 0Z" fill="%231d1d1d" stroke-width="0"/></svg>');
}
.product-item {--color-text-cards: #111111;}</style>
<style id="root-height">
:root {
--window-height: 100vh;
}
</style>
<script type="text/javascript">
window.KrownAssetLoader = {
loadedScripts: new Set(),
loadScript: function(url) {
if (this.loadedScripts.has(url)) return;
this.loadedScripts.add(url);
const script = document.createElement('script');
script.src = url;
script.defer = true;
document.head.appendChild(script);
}
};
</script><link href="//www.terra-ross.fr/cdn/shop/t/27/assets/theme.css?v=116664019511233992671789890991" rel="stylesheet" type="text/css" media="all" />
<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script><meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/91251933506/digital_wallets/dialog">
<meta id="in-context-paypal-metadata" data-shop-id="91251933506" data-venmo-supported="false" data-environment="production" data-locale="fr_FR" data-paypal-v4="true" data-currency="EUR">
<link rel="ucp" href="/.well-known/ucp" version="2026-08-25"><link rel="alternate" type="application/atom+xml" title="Feed" href="/blogs/truffle-guides.atom" />
<link rel="next" href="/blogs/truffle-guides?page=2">
<script async="async" src="/checkouts/internal/preloads.js?locale=fr-BE&default_configuration_id=5247238466"></script>
<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=fr-BE&default_configuration_id=5247238466&shop_id=91251933506" crossorigin="anonymous"></script>
<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":91251933506,"countryCode":"BG","currencyCode":"EUR","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/91251933506","merchantName":"Terra Ross","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","maestro","masterCard","amex"],"total":{"type":"pending","label":"Terra Ross","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
<script id="shopify-features" type="application/json">{"accessToken":"7238f307064f2db3443dfa43ed771836","betas":["rich-media-storefront-analytics"],"domain":"www.terra-ross.fr","predictiveSearch":true,"shopId":91251933506,"locale":"fr"}</script>
<script>var Shopify = Shopify || {};
Shopify.shop = "truffle-house-en.myshopify.com";
Shopify.locale = "fr";
Shopify.currency = {"active":"EUR","rate":"1.0"};
Shopify.country = "BE";
Shopify.theme = {"name":"Local 4.1.2 - Main","id":192095682882,"schema_name":"Local","schema_version":"4.1.2","theme_store_id":1651,"role":"main"};
Shopify.theme.handle = "null";
Shopify.theme.style = {"id":null,"handle":null};
Shopify.cdnHost = "www.terra-ross.fr/cdn";
Shopify.routes = Shopify.routes || {};
Shopify.routes.root = "/";
Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
Shopify.SignInWithShop = Shopify.SignInWithShop || {};
Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
Shopify.SignInWithShop.User.recognized = false;</script>
<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
<script>
window.ShopifyPay = window.ShopifyPay || {};
window.ShopifyPay.apiHost = "shop.app\/pay";
window.ShopifyPay.redirectState = null;
</script>
<script>
window.Shopify = window.Shopify || {};
window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 };
window.Shopify.SignInWithShop.eligible = true;
</script>
<script id="shop-js-analytics" type="application/json">{"pageType":"blog"}</script>
<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.fr.esm.js"></script>
<script type="module">
await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.fr.esm.js");
window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});
</script>
<script>
window.Shopify = window.Shopify || {};
if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
window.Shopify.featureAssets['shop-js'] = {"avatar":["modules/v2/loader.avatar.fr.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.fr.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.fr.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.fr.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.fr.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.fr.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.fr.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.fr.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.fr.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.fr.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.fr.esm.js"],"listener":["modules/v2/loader.listener.fr.esm.js"],"pay-button":["modules/v2/loader.pay-button.fr.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.fr.esm.js"],"shop-button":["modules/v2/loader.shop-button.fr.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.fr.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.fr.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.fr.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.fr.esm.js"],"shop-login":["modules/v2/loader.shop-login.fr.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.fr.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.fr.esm.js"]};
</script>
<script id="__st">var __st={"a":91251933506,"offset":10800,"reqid":"69cf991e-f20d-4a50-a748-59ec08edba7a-1792169995","pageurl":"www.terra-ross.fr\/blogs\/truffle-guides","s":"blogs-125042229570","u":"b3337dd51cbd","p":"blog","rtyp":"blog","rid":125042229570};</script>
<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.3.iife.js',D={infoText:'Protégé par hCaptcha',privacyText:'Confidentialité',termsText:'Conditions'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();</script>
<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//www.terra-ross.fr/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion < 126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion < 150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion < 27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//www.terra-ross.fr/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script><script crossorigin="anonymous" defer="defer" src="//www.terra-ross.fr/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-f0e26bdf.js?v=20250812"></script>
<script id="shopify-origin-trials" async="async" integrity="sha256-qJbe/jEZBHtr5W/BlA2cKAz3vkXu6vJQyLjgvgCC86g=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-318ab40a.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
<script>
window.Shopify = window.Shopify || {};
window.Shopify.MCP = window.Shopify.MCP || {};
window.Shopify.MCP.enabled = true;
window.Shopify.MCP.shop = "truffle-house-en.myshopify.com";
window.Shopify.MCP.mcpEndpoint = "https:\/\/www.terra-ross.fr\/api\/mcp";
window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n - What is your return policy?\n - What is your shipping policy?\n - What is your phone number?\n - What are your hours of operation?\"\nSet policy_types to also get the store's written policies (full text and URL).\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."},"policy_types":{"type":"array","items":{"type":"string","enum":["refund","shipping","privacy","terms_of_service","terms_of_sale","subscription","legal_notice","contact"]},"description":"Policy kinds to fetch, chosen from the user's question — e.g. [\"refund\"] for returns\/exchanges\/damaged items, [\"contact\"] for phone\/hours\/address. Include every kind the question touches. Omit it to get only FAQ answers."}},"required":["query"]}}];
</script>
<script>(()=>{var d="shopify:webmcp_adapter_loaded",n=Symbol.for("shopify.webmcp_adapter_loading");function s(c,a,{win:r=window,doc:o=document}={}){function p(){try{return r.localStorage.getItem(d)==="true"}catch{return!1}}function l(){try{r.localStorage.setItem(d,"true")}catch{}}function u(){return typeof(o.modelContext||r.navigator?.modelContext)?.registerTool=="function"}function f(){if(r[n]||!u())return;let t=o.head||o.getElementsByTagName("head")[0];if(!t)return;let e=o.createElement("script");e.type="module",e.crossOrigin="anonymous",a&&(e.integrity=a),e.src=c,e.addEventListener("load",l,{once:!0}),e.addEventListener("error",()=>{r[n]=!1},{once:!0}),t.appendChild(e),r[n]=!0}function _(t){let e=o.getElementById("shopify-origin-trials");if(!e||r.__shopifyOriginTrialsDone){t();return}e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0})}function i(){_(()=>r.setTimeout(f,0))}function m(){o.addEventListener("DOMContentLoaded",i,{once:!0})}p()?i():m()}s("\/\/www.terra-ross.fr\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-f427de6a.js","sha256-ypGF+5vIq4Psw4WG7nsVtdd\/TCfsJWnrNuACdqLCElY=");})();
</script>
<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://www.terra-ross.fr/cdn/shopifycloud/portable-wallets/latest/portable-wallets.fr.js",t.type="module",document.head.appendChild(t)}};
</script>
<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent);
</script>
<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}}));
</script>
<script id='scb4127' type='text/javascript' async='' src='https://www.terra-ross.fr/cdn/shopifycloud/privacy-banner/storefront-banner.js'></script><link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://www.terra-ross.fr/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous">
<style id="shopify-accelerated-checkout-cart">
#shopify-buyer-consent {
margin-top: 1em;
display: inline-block;
width: 100%;
}
#shopify-buyer-consent.hidden {
display: none;
}
#shopify-subscription-policy-button {
background: none;
border: none;
padding: 0;
text-decoration: underline;
font-size: inherit;
cursor: pointer;
}
#shopify-subscription-policy-button::before {
box-shadow: none;
}
</style>
<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
<script>
const rbi = [];
const ribSetSize = (img) => {
if ( img.offsetWidth / img.dataset.ratio < img.offsetHeight ) {
img.setAttribute('sizes', `${Math.ceil(img.offsetHeight * img.dataset.ratio)}px`);
} else {
img.setAttribute('sizes', `${Math.ceil(img.offsetWidth)}px`);
}
}
const debounce = (fn, wait) => {
let t;
return (...args) => {
clearTimeout(t);
t = setTimeout(() => fn.apply(this, args), wait);
};
}
window.KEYCODES = {
TAB: 9,
ESC: 27,
DOWN: 40,
RIGHT: 39,
UP: 38,
LEFT: 37,
RETURN: 13
};
window.addEventListener('resize', debounce(()=>{
for ( let img of rbi ) {
ribSetSize(img);
}
}, 250));
</script><noscript>
<link rel="stylesheet" href="//www.terra-ross.fr/cdn/shop/t/27/assets/theme-noscript.css?v=42099867224588620941786777750">
</noscript>
<!-- BEGIN app block: shopify://apps/hreflang-tags/blocks/hreglang_tag/9a38367c-c3ce-4d6e-93ea-48ab8009c8a5 --><!-- Hreflang tags managed by apps.shopify.com/hreflang-tags -->
<link rel="alternate" hreflang="bg-BG" href="https://www.truffles.bg/blogs/truffle-guides">
<link rel="alternate" hreflang="cs-CZ" href="https://www.terra-ross.eu/blogs/truffle-guides">
<link rel="alternate" hreflang="da-DK" href="https://www.terra-ross.eu/da/blogs/truffle-guides">
<link rel="alternate" hreflang="de-AT" href="https://www.terra-ross.de/blogs/truffle-guides">
<link rel="alternate" hreflang="de-CH" href="https://www.terra-ross.ch/blogs/truffle-guides">
<link rel="alternate" hreflang="de-DE" href="https://www.terra-ross.de/blogs/truffle-guides">
<link rel="alternate" hreflang="de-LI" href="https://www.terra-ross.de/blogs/truffle-guides">
<link rel="alternate" hreflang="el-GR" href="https://www.terra-ross.eu/el/blogs/truffle-guides">
<link rel="alternate" hreflang="en" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-AE" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-AM" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-AR" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-AU" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-AZ" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-BR" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-CA" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-CN" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-CY" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-DM" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-DO" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-EE" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-EG" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-GB" href="https://www.terra-ross.uk/blogs/truffle-guides">
<link rel="alternate" hreflang="en-GI" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-HK" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-HR" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-ID" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-IE" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-IL" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-IN" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-IS" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-KR" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-LT" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-LV" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-MT" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-MX" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-RS" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-SA" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-SG" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-SI" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-SK" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-SM" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-TH" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-TR" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-TW" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-US" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-VA" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="en-ZA" href="https://www.terra-ross.com/blogs/truffle-guides">
<link rel="alternate" hreflang="es-ES" href="https://www.terra-ross.es/blogs/truffle-guides">
<link rel="alternate" hreflang="fi-FI" href="https://www.terra-ross.eu/fi/blogs/truffle-guides">
<link rel="alternate" hreflang="fr-BE" href="https://www.terra-ross.fr/blogs/truffle-guides">
<link rel="alternate" hreflang="fr-FR" href="https://www.terra-ross.fr/blogs/truffle-guides">
<link rel="alternate" hreflang="fr-LU" href="https://www.terra-ross.fr/blogs/truffle-guides">
<link rel="alternate" hreflang="fr-MC" href="https://www.terra-ross.fr/blogs/truffle-guides">
<link rel="alternate" hreflang="hu-HU" href="https://www.terra-ross.eu/hu/blogs/truffle-guides">
<link rel="alternate" hreflang="it-IT" href="https://www.terra-ross.it/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-AM" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-AR" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-AU" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-AZ" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-BR" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-CN" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-DM" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-DO" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-EG" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-GI" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-HK" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-ID" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-IL" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-IN" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-IS" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-JP" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-KR" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-MX" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-RS" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-SA" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-SG" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-SM" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-TH" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-TR" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-TW" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-VA" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="ja-ZA" href="https://www.terra-ross.com/ja/blogs/truffle-guides">
<link rel="alternate" hreflang="nl-NL" href="https://www.terra-ross.eu/nl/blogs/truffle-guides">
<link rel="alternate" hreflang="no-NO" href="https://www.terra-ross.eu/no/blogs/truffle-guides">
<link rel="alternate" hreflang="pl-PL" href="https://www.terra-ross.eu/pl/blogs/truffle-guides">
<link rel="alternate" hreflang="pt-PT" href="https://www.terra-ross.eu/pt-pt/blogs/truffle-guides">
<link rel="alternate" hreflang="ro-RO" href="https://www.terra-ross.eu/ro/blogs/truffle-guides">
<link rel="alternate" hreflang="sv-SE" href="https://www.terra-ross.eu/sv/blogs/truffle-guides">
<link rel="alternate" hreflang="x-default" href="https://www.terra-ross.com/blogs/truffle-guides">
<!-- END app block --><!-- BEGIN app block: shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507 -->
<script async src="https://static.klaviyo.com/onsite/js/RnW6mY/klaviyo.js?company_id=RnW6mY"></script>
<script>!function(){if(!window.klaviyo){window._klOnsite=window._klOnsite||[];try{window.klaviyo=new Proxy({},{get:function(n,i){return"push"===i?function(){var n;(n=window._klOnsite).push.apply(n,arguments)}:function(){for(var n=arguments.length,o=new Array(n),w=0;w<n;w++)o[w]=arguments[w];var t="function"==typeof o[o.length-1]?o.pop():void 0,e=new Promise((function(n){window._klOnsite.push([i].concat(o,[function(i){t&&t(i),n(i)}]))}));return e}}})}catch(n){window.klaviyo=window.klaviyo||[],window.klaviyo.push=function(){var n;(n=window._klOnsite).push.apply(n,arguments)}}}}();</script>
<script>
window.klaviyoReviewsProductDesignMode = false
</script>
<!-- END app block --><!-- BEGIN app block: shopify://apps/judge-me-reviews/blocks/judgeme_core/61ccd3b1-a9f2-4160-9fe9-4fec8413e5d8 --><!-- Start of Judge.me Core -->
<link rel="dns-prefetch" href="https://cdn.judge.me">
<link rel="dns-prefetch" href="https://cdn1.judge.me">
<link rel="dns-prefetch" href="https://api.judge.me">
<script data-cfasync='false' class='jdgm-settings-script'>window.jdgmSettings={"pagination":5,"disable_web_reviews":true,"coupon_receiving_condition":"","coupon_value_type":"percentage","coupon_value_percentage":10,"coupon_value_fixed_amount":0,"coupon_discount_type":"tiered","coupon_tier_text_enabled":true,"coupon_tier_text_percentage":5,"coupon_tier_text_fixed_amount":0,"coupon_tier_photo_enabled":true,"coupon_tier_photo_percentage":8,"coupon_tier_photo_fixed_amount":0,"coupon_tier_video_enabled":true,"coupon_tier_video_percentage":10,"coupon_tier_video_fixed_amount":0,"enable_coupons":true,"badge_no_review_text":"Aucun avis","badge_n_reviews_text":"{{ n }} avis","hide_badge_preview_if_no_reviews":true,"badge_hide_text":false,"enforce_center_preview_badge":false,"widget_title":"Avis Clients","widget_open_form_text":"Écrire un avis","widget_close_form_text":"Annuler l'avis","widget_refresh_page_text":"Actualiser la page","widget_summary_text":"Basé sur {{ number_of_reviews }} avis","widget_no_review_text":"Soyez le premier à écrire un avis","widget_name_field_text":"Nom d'affichage","widget_verified_name_field_text":"Nom vérifié (public)","widget_name_placeholder_text":"Nom d'affichage","widget_required_field_error_text":"Ce champ est obligatoire.","widget_email_field_text":"Adresse email","widget_verified_email_field_text":"Email vérifié (privé, ne peut pas être modifié)","widget_email_placeholder_text":"Votre adresse email","widget_email_field_error_text":"Veuillez entrer une adresse email valide.","widget_rating_field_text":"Évaluation","widget_review_title_field_text":"Titre de l'avis","widget_review_title_placeholder_text":"Donnez un titre à votre avis","widget_review_body_field_text":"Contenu de l'avis","widget_review_body_placeholder_text":"Commencez à écrire ici...","widget_pictures_field_text":"Photo/Vidéo (facultatif)","widget_submit_review_text":"Soumettre l'avis","widget_submit_verified_review_text":"Soumettre un avis vérifié","widget_submit_success_msg_with_auto_publish":"Merci ! Veuillez actualiser la page dans quelques instants pour voir votre avis. Vous pouvez supprimer ou modifier votre avis en vous connectant à \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_submit_success_msg_no_auto_publish":"Merci ! Votre avis sera publié dès qu'il sera approuvé par l'administrateur de la boutique. Vous pouvez supprimer ou modifier votre avis en vous connectant à \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_show_default_reviews_out_of_total_text":"Affichage de {{ n_reviews_shown }} sur {{ n_reviews }} avis.","widget_show_all_link_text":"Tout afficher","widget_show_less_link_text":"Afficher moins","widget_author_said_text":"{{ reviewer_name }} a dit :","widget_days_text":"il y a {{ n }} jour/jours","widget_weeks_text":"il y a {{ n }} semaine/semaines","widget_months_text":"il y a {{ n }} mois","widget_years_text":"il y a {{ n }} an/ans","widget_yesterday_text":"Hier","widget_today_text":"Aujourd'hui","widget_replied_text":"\u003e\u003e {{ shop_name }} a répondu :","widget_read_more_text":"Lire plus","widget_reviewer_name_as_initial":"last_initial","widget_rating_filter_color":"#fbcd0a","widget_rating_filter_see_all_text":"Voir tous les avis","widget_sorting_most_recent_text":"Plus récents","widget_sorting_highest_rating_text":"Meilleures notes","widget_sorting_lowest_rating_text":"Notes les plus basses","widget_sorting_with_pictures_text":"Uniquement les photos","widget_sorting_most_helpful_text":"Plus utiles","widget_open_question_form_text":"Poser une question","widget_reviews_subtab_text":"Avis","widget_questions_subtab_text":"Questions","widget_question_label_text":"Question","widget_answer_label_text":"Réponse","widget_question_placeholder_text":"Écrivez votre question ici","widget_submit_question_text":"Soumettre la question","widget_question_submit_success_text":"Merci pour votre question ! Nous vous notifierons dès qu'elle aura une réponse.","verified_badge_text":"Vérifié","verified_badge_bg_color":"","verified_badge_text_color":"","verified_badge_placement":"left-of-reviewer-name","widget_review_max_height":"","widget_hide_border":false,"widget_social_share":false,"widget_thumb":true,"widget_review_location_show":true,"widget_location_format":"","all_reviews_include_out_of_store_products":true,"all_reviews_out_of_store_text":"(hors boutique)","all_reviews_pagination":100,"all_reviews_product_name_prefix_text":"à propos de","enable_review_pictures":true,"enable_question_anwser":false,"widget_theme":"default","review_date_format":"dd/mm/yyyy","default_sort_method":"most-recent","enable_ai_review_visibility":true,"widget_product_reviews_subtab_text":"Avis Produits","widget_shop_reviews_subtab_text":"Avis Boutique","widget_other_products_reviews_text":"Avis pour d'autres produits","widget_store_reviews_subtab_text":"Avis de la boutique","widget_product_variant_reference_text":"Avis pour","widget_no_store_reviews_text":"Cette boutique n'a pas encore reçu d'avis","widget_web_restriction_product_reviews_text":"Ce produit n'a pas encore reçu d'avis","widget_no_items_text":"Aucun élément trouvé","widget_show_more_text":"Afficher plus","widget_write_a_store_review_text":"Écrire un avis sur la boutique","widget_product_and_store_reviews_text":"Avis sur les produits et la boutique","widget_reviews_in_collection_text":"Avis dans cette collection","widget_other_languages_heading":"Avis dans d'autres langues","widget_translate_review_text":"Traduire l'avis en {{ language }}","widget_translating_review_text":"Traduction en cours...","widget_show_original_translation_text":"Afficher l'original ({{ language }})","widget_translate_review_failed_text":"Impossible de traduire cet avis.","widget_translate_review_retry_text":"Réessayer","widget_translate_review_try_again_later_text":"Réessayez plus tard","show_product_url_for_grouped_product":false,"widget_sorting_pictures_first_text":"Photos en premier","show_pictures_on_all_rev_page_mobile":false,"show_pictures_on_all_rev_page_desktop":false,"floating_tab_hide_mobile_install_preference":false,"floating_tab_button_name":"★ Avis","floating_tab_title":"Laissons nos clients parler pour nous","floating_tab_button_color":"","floating_tab_button_background_color":"","floating_tab_url":"","floating_tab_url_enabled":false,"floating_tab_tab_style":"text","all_reviews_text_badge_text":"Les clients nous notent {{ shop.metafields.judgeme.all_reviews_rating | round: 1 }}/5 basé sur {{ shop.metafields.judgeme.all_reviews_count }} avis.","all_reviews_text_badge_text_branded_style":"{{ shop.metafields.judgeme.all_reviews_rating | round: 1 }} sur 5 étoiles basé sur {{ shop.metafields.judgeme.all_reviews_count }} avis","is_all_reviews_text_badge_a_link":false,"show_stars_for_all_reviews_text_badge":false,"all_reviews_text_badge_url":"","all_reviews_text_style":"branded","all_reviews_text_color_style":"judgeme_brand_color","all_reviews_text_color":"#108474","all_reviews_text_show_jm_brand":false,"featured_carousel_show_header":true,"featured_carousel_title":"Laissons nos clients parler pour nous","testimonials_carousel_title":"Les clients nous disent","videos_carousel_title":"Histoire de clients réels","cards_carousel_title":"Les clients nous disent","featured_carousel_count_text":"sur {{ n }} avis","featured_carousel_add_link_to_all_reviews_page":false,"featured_carousel_url":"","featured_carousel_show_images":true,"featured_carousel_autoslide_interval":5,"featured_carousel_arrows_on_the_sides":true,"featured_carousel_height":250,"featured_carousel_width":80,"featured_carousel_image_size":0,"featured_carousel_image_height":250,"featured_carousel_arrow_color":"#eeeeee","verified_count_badge_style":"branded","verified_count_badge_orientation":"horizontal","verified_count_badge_color_style":"judgeme_brand_color","verified_count_badge_color":"#108474","is_verified_count_badge_a_link":false,"verified_count_badge_url":"","verified_count_badge_show_jm_brand":true,"widget_rating_preset_default":5,"widget_first_sub_tab":"product-reviews","widget_show_histogram":true,"widget_histogram_use_custom_color":false,"widget_pagination_use_custom_color":false,"widget_star_use_custom_color":false,"widget_verified_badge_use_custom_color":false,"widget_write_review_use_custom_color":false,"picture_reminder_submit_button":"Télécharger des photos","enable_review_videos":true,"mute_video_by_default":false,"widget_sorting_videos_first_text":"Vidéos en premier","widget_review_pending_text":"En attente","featured_carousel_items_for_large_screen":3,"social_share_options_order":"Facebook,Twitter","remove_microdata_snippet":true,"disable_json_ld":false,"enable_json_ld_products":false,"preview_badge_show_question_text":false,"preview_badge_no_question_text":"Aucune question","preview_badge_n_question_text":"{{ number_of_questions }} question/questions","qa_badge_show_icon":false,"qa_badge_position":"same-row","remove_judgeme_branding":false,"widget_add_search_bar":false,"widget_search_bar_placeholder":"Recherche","widget_sorting_verified_only_text":"Vérifiés uniquement","widget_sorting_most_relevant_text":"Plus pertinents","featured_carousel_theme":"gallery","featured_carousel_show_rating":true,"featured_carousel_show_title":true,"featured_carousel_show_body":true,"featured_carousel_show_date":false,"featured_carousel_show_reviewer":true,"featured_carousel_show_product":false,"featured_carousel_header_background_color":"#108474","featured_carousel_header_text_color":"#ffffff","featured_carousel_name_product_separator":"reviewed","featured_carousel_full_star_background":"#108474","featured_carousel_empty_star_background":"#dadada","featured_carousel_vertical_theme_background":"#f9fafb","featured_carousel_verified_badge_enable":true,"featured_carousel_verified_badge_color":"#108474","featured_carousel_border_style":"round","featured_carousel_review_line_length_limit":3,"featured_carousel_more_reviews_button_text":"Lire plus d'avis","featured_carousel_view_product_button_text":"Voir le produit","all_reviews_page_load_reviews_on":"scroll","all_reviews_page_load_more_text":"Charger plus d'avis","disable_fb_tab_reviews":false,"enable_ajax_cdn_cache":false,"widget_advanced_speed_features":5,"widget_public_name_text":"affiché publiquement comme","default_reviewer_name":"John Smith","default_reviewer_name_has_non_latin":true,"widget_reviewer_anonymous":"Anonyme","medals_widget_title":"Médailles d'avis Judge.me","medals_widget_background_color":"#f9fafb","medals_widget_position":"footer_all_pages","medals_widget_border_color":"#f9fafb","medals_widget_verified_text_position":"left","medals_widget_use_monochromatic_version":false,"medals_widget_elements_color":"#108474","show_reviewer_avatar":true,"widget_invalid_yt_video_url_error_text":"Pas une URL de vidéo YouTube","widget_max_length_field_error_text":"Veuillez ne pas dépasser {0} caractères.","widget_show_country_flag":true,"widget_show_collected_via_shop_app":true,"widget_verified_by_shop_badge_style":"light","widget_verified_by_shop_text":"Vérifié par la boutique","widget_show_photo_gallery":false,"widget_load_with_code_splitting":true,"widget_ugc_install_preference":false,"widget_ugc_title":"Fait par nous, partagé par vous","widget_ugc_subtitle":"Taguez-nous pour voir votre photo mise en avant sur notre page","widget_ugc_arrows_color":"#ffffff","widget_ugc_primary_button_text":"Acheter maintenant","widget_ugc_primary_button_background_color":"#108474","widget_ugc_primary_button_text_color":"#ffffff","widget_ugc_primary_button_border_width":"0","widget_ugc_primary_button_border_style":"none","widget_ugc_primary_button_border_color":"#108474","widget_ugc_primary_button_border_radius":"25","widget_ugc_secondary_button_text":"Charger plus","widget_ugc_secondary_button_background_color":"#ffffff","widget_ugc_secondary_button_text_color":"#108474","widget_ugc_secondary_button_border_width":"2","widget_ugc_secondary_button_border_style":"solid","widget_ugc_secondary_button_border_color":"#108474","widget_ugc_secondary_button_border_radius":"25","widget_ugc_reviews_button_text":"Voir les avis","widget_ugc_reviews_button_background_color":"#ffffff","widget_ugc_reviews_button_text_color":"#108474","widget_ugc_reviews_button_border_width":"2","widget_ugc_reviews_button_border_style":"solid","widget_ugc_reviews_button_border_color":"#108474","widget_ugc_reviews_button_border_radius":"25","widget_ugc_reviews_button_link_to":"judgeme-reviews-page","widget_ugc_show_post_date":true,"widget_ugc_max_width":"800","widget_rating_metafield_value_type":true,"widget_primary_color":"#058041","widget_enable_secondary_color":false,"widget_secondary_color":"#edf5f5","widget_summary_average_rating_text":"{{ average_rating }} sur 5","widget_media_grid_title":"Photos \u0026 vidéos clients","widget_media_grid_see_more_text":"Voir plus","widget_round_style":false,"widget_show_product_medals":true,"widget_verified_by_judgeme_text":"Vérifié par Judge.me","widget_show_store_medals":true,"widget_verified_by_judgeme_text_in_store_medals":"Vérifié par Judge.me","widget_media_field_exceed_quantity_message":"Désolé, nous ne pouvons accepter que {{ max_media }} pour un avis.","widget_media_field_exceed_limit_message":"{{ file_name }} est trop volumineux, veuillez sélectionner un {{ media_type }} de moins de {{ size_limit }}MB.","widget_review_submitted_text":"Avis soumis !","widget_question_submitted_text":"Question soumise !","widget_close_form_text_question":"Annuler","widget_write_your_answer_here_text":"Écrivez votre réponse ici","widget_enabled_branded_link":true,"widget_show_collected_by_judgeme":false,"widget_reviewer_name_color":"","widget_write_review_text_color":"","widget_write_review_bg_color":"","widget_collected_by_judgeme_text":"collecté par Judge.me","widget_pagination_type":"standard","widget_load_more_text":"Charger plus","widget_load_more_color":"#108474","widget_full_review_text":"Avis complet","widget_read_more_reviews_text":"Lire plus d'avis","widget_read_questions_text":"Lire les questions","widget_questions_and_answers_text":"Questions \u0026 Réponses","widget_verified_by_text":"Vérifié par","widget_verified_text":"Vérifié","widget_number_of_reviews_text":"{{ number_of_reviews }} avis","widget_back_button_text":"Retour","widget_next_button_text":"Suivant","widget_custom_forms_filter_button":"Filtres","custom_forms_style":"horizontal","widget_show_review_information":false,"how_reviews_are_collected":"Comment les avis sont-ils collectés ?","widget_show_review_keywords":false,"widget_gdpr_statement":"Comment nous utilisons vos données : Nous vous contacterons uniquement à propos de l'avis que vous avez laissé, et seulement si nécessaire. En soumettant votre avis, vous acceptez les \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003econditions\u003c/a\u003e, la \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003epolitique de confidentialité\u003c/a\u003e et les \u003ca href='https://judge.me/content-policy' target='_blank' rel='nofollow noopener'\u003epolitiques de contenu\u003c/a\u003e de Judge.me.","widget_multilingual_sorting_enabled":true,"widget_translate_review_content_enabled":true,"widget_translate_review_content_method":"automatic","popup_widget_review_selection":"automatically","popup_widget_round_border_style":true,"popup_widget_show_title":true,"popup_widget_show_body":true,"popup_widget_show_reviewer":true,"popup_widget_show_product":true,"popup_widget_show_pictures":true,"popup_widget_use_review_picture":true,"popup_widget_show_on_home_page":false,"popup_widget_show_on_product_page":true,"popup_widget_show_on_collection_page":true,"popup_widget_show_on_cart_page":false,"popup_widget_position":"bottom_right","popup_widget_first_review_delay":5,"popup_widget_duration":5,"popup_widget_interval":5,"popup_widget_review_count":3,"popup_widget_hide_on_mobile":true,"popup_widget_source_mode":"auto","popup_widget_page_product":"current_product","popup_widget_page_collection":"current_collection","popup_widget_page_cart":"cart_mode","popup_widget_page_home":"all","popup_widget_star_rating":"all","popup_widget_review_type":"all","popup_widget_top_up_thin_pages":true,"popup_widget_corner_styling":"soft","review_snippet_widget_round_border_style":true,"review_snippet_widget_card_color":"#FFFFFF","review_snippet_widget_text_color":"#000000","review_snippet_widget_lighter_text_color":"#7B7B7B","review_snippet_widget_slider_arrows_background_color":"#FFFFFF","review_snippet_widget_slider_arrows_color":"#000000","review_snippet_widget_star_color":"#058041","show_product_variant":false,"all_reviews_product_variant_label_text":"Variante : ","widget_show_verified_branding":true,"widget_ai_summary_title":"Les clients disent","widget_ai_summary_disclaimer":"Résumé et sélectionné par IA à partir des avis clients récents","widget_show_ai_summary":false,"widget_show_ai_summary_bg":false,"write_review_button_visibility":"everyone","store_summary_widget_heading":"Les clients évaluent cette boutique","store_summary_widget_button_text":"Voir les avis clients","store_summary_widget_button_theme_text":"Voir le résumé des avis par l'IA","widget_show_review_title_input":true,"widget_autofill_review_title":true,"redirect_reviewers_invited_via_email":"external_form","request_store_review_after_product_review":true,"request_review_other_products_in_order":true,"review_form_color_scheme":"default","review_form_corner_style":"square","review_form_star_color":"#058041","review_form_text_color":"#333333","review_form_background_color":"#ffffff","review_form_field_background_color":"#fafafa","review_form_button_color":"#058041","review_form_button_text_color":"#ffffff","review_form_modal_overlay_color":"#000000","review_form_theme":"multi_step","review_form_location":"in_store_popup","review_form_external_page_background_color":"#C5F7F0","review_content_screen_title_text":"Comment évalueriez-vous ce produit ?","review_content_introduction_text":"Nous serions ravis que vous partagiez un peu votre expérience.","store_review_form_title_text":"Comment évalueriez-vous cette boutique ?","store_review_form_introduction_text":"Nous serions ravis que vous partagiez un peu votre expérience.","show_review_guidance_text":true,"one_star_review_guidance_text":"Mauvais","five_star_review_guidance_text":"Excellent","customer_information_screen_title_text":"À propos de vous","customer_information_introduction_text":"Veuillez nous en dire plus sur vous.","custom_questions_screen_title_text":"Votre expérience en détail","custom_questions_introduction_text":"Voici quelques questions pour nous aider à mieux comprendre votre expérience.","review_submitted_screen_title_text":"Merci pour votre avis !","review_submitted_screen_thank_you_text":"Nous le traitons et il apparaîtra bientôt dans la boutique.","review_submitted_screen_email_verification_text":"Veuillez confirmer votre email en cliquant sur le lien que nous venons de vous envoyer. Cela nous aide à maintenir des avis authentiques.","confirm_email_screen_title_text":"Confirmez votre e-mail","confirm_email_screen_message_text":"Pour maintenir des avis authentiques, nous vous enverrons un lien sécurisé pour continuer à rédiger votre avis. Cela ne prend qu'un instant.","check_email_screen_title_text":"Vérifiez votre e-mail","check_email_screen_message_text":"Nous vous avons envoyé un e-mail à {{ email }}. Cliquez sur le bouton dans l'e-mail pour continuer.","check_email_screen_resend_message_text":"E-mail renvoyé !","check_email_resend_hint_text":"Vous n'avez pas reçu l'e-mail ? Vérifiez votre dossier spam ou [renvoyez l'e-mail].","verification_email_rate_limit_error_text":"Vous avez atteint la limite de tentatives d'avis pour ce produit. Veuillez vérifier votre boîte de réception ou réessayer plus tard.","review_submitted_request_store_review_text":"Aimeriez-vous partager votre expérience d'achat avec nous ?","review_submitted_review_other_products_text":"Aimeriez-vous évaluer ces produits ?","store_review_screen_title_text":"Voulez-vous partager votre expérience de shopping avec nous ?","store_review_introduction_text":"Nous apprécions votre retour d'expérience et nous l'utilisons pour nous améliorer. Veuillez partager vos pensées ou suggestions.","reviewer_media_screen_title_picture_text":"Partager une photo","reviewer_media_introduction_picture_text":"Téléchargez une photo pour étayer votre avis.","reviewer_media_screen_title_video_text":"Partager une vidéo","reviewer_media_introduction_video_text":"Téléchargez une vidéo pour étayer votre avis.","reviewer_media_screen_title_picture_or_video_text":"Partager une photo ou une vidéo","reviewer_media_introduction_picture_or_video_text":"Téléchargez une photo ou une vidéo pour étayer votre avis.","reviewer_media_youtube_url_text":"Collez votre URL Youtube ici","advanced_settings_next_step_button_text":"Suivant","advanced_settings_close_review_button_text":"Fermer","modal_write_review_flow":true,"write_review_flow_required_text":"Obligatoire","write_review_flow_privacy_message_text":"Nous respectons votre vie privée.","write_review_flow_anonymous_text":"Avis anonyme","write_review_flow_visibility_text":"Ne sera pas visible pour les autres clients.","write_review_flow_multiple_selection_help_text":"Sélectionnez autant que vous le souhaitez","write_review_flow_single_selection_help_text":"Sélectionnez une option","write_review_flow_required_field_error_text":"Ce champ est obligatoire","write_review_flow_invalid_email_error_text":"Veuillez saisir une adresse email valide","write_review_flow_max_length_error_text":"Max. {{ max_length }} caractères.","write_review_flow_media_upload_text":"\u003cb\u003eCliquez pour télécharger\u003c/b\u003e ou glissez-déposez","write_review_flow_gdpr_statement":"Nous vous contacterons uniquement au sujet de votre avis si nécessaire. En soumettant votre avis, vous acceptez nos \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003econditions d'utilisation\u003c/a\u003e et notre \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003epolitique de confidentialité\u003c/a\u003e.","rating_only_reviews_enabled":false,"show_negative_reviews_help_screen":false,"new_review_flow_help_screen_rating_threshold":3,"negative_review_resolution_screen_title_text":"Dites-nous plus","negative_review_resolution_text":"Votre expérience est importante pour nous. S'il y a eu des problèmes avec votre achat, nous sommes là pour vous aider. N'hésitez pas à nous contacter, nous aimerions avoir l'opportunité de corriger les choses.","negative_review_resolution_button_text":"Contactez-nous","negative_review_resolution_proceed_with_review_text":"Laisser un avis","negative_review_resolution_subject":"Problème avec l'achat de {{ shop_name }}.{{ order_name }}","coupon_promo_intro_any_review_text":"Rédigez un avis et obtenez un coupon de {{ amount }} de réduction sur votre prochain achat","coupon_promo_intro_with_photo_text":"Rédigez un avis et ajoutez une photo ou une vidéo pour obtenir un coupon de {{ amount }} de réduction sur votre prochain achat","coupon_promo_intro_with_video_text":"Rédigez un avis et ajoutez une vidéo pour obtenir un coupon de {{ amount }} de réduction sur votre prochain achat","coupon_promo_intro_up_to_any_review_text":"Rédigez un avis et obtenez un coupon de réduction jusqu'à {{ amount }} sur votre prochain achat","coupon_promo_intro_up_to_with_photo_text":"Rédigez un avis et ajoutez une photo ou une vidéo pour obtenir un coupon de réduction jusqu'à {{ amount }} sur votre prochain achat","coupon_promo_intro_external_text":"Rédigez un avis et obtenez une récompense pour votre prochain achat","coupon_promo_intro_external_with_photo_text":"Rédigez un avis et ajoutez une photo ou une vidéo pour obtenir une récompense pour votre prochain achat","coupon_promo_intro_external_with_video_text":"Rédigez un avis et ajoutez une vidéo pour obtenir une récompense pour votre prochain achat","coupon_promo_media_photo_text":"Ajoutez une photo ou une vidéo et obtenez un coupon de {{ amount }} de réduction sur votre prochain achat","coupon_promo_media_photo_only_text":"Ajoutez une photo et obtenez un coupon de {{ amount }} de réduction sur votre prochain achat","coupon_promo_media_video_text":"Ajoutez une vidéo et obtenez un coupon de {{ amount }} de réduction sur votre prochain achat","coupon_promo_media_external_photo_text":"Ajoutez une photo ou une vidéo et obtenez une récompense pour votre prochain achat","coupon_promo_media_external_photo_only_text":"Ajoutez une photo et obtenez une récompense pour votre prochain achat","coupon_promo_media_external_video_text":"Ajoutez une vidéo et obtenez une récompense pour votre prochain achat","coupon_promo_success_text":"Vous avez obtenu un coupon pour votre prochain achat chez {{ shop_name }} !","coupon_promo_success_subtext":"Vous recevrez votre coupon par e-mail dans l'heure.","preview_badge_collection_page_install_status":false,"widget_review_custom_css":"","preview_badge_custom_css":"","preview_badge_stars_count":"5-stars","featured_carousel_custom_css":"","floating_tab_custom_css":"","all_reviews_widget_custom_css":"","medals_widget_custom_css":"","verified_badge_custom_css":"","all_reviews_text_custom_css":"","transparency_badges_collected_via_store_invite":false,"transparency_badges_from_another_provider":false,"transparency_badges_collected_from_store_visitor":true,"transparency_badges_collected_by_verified_review_provider":true,"transparency_badges_earned_reward":false,"transparency_badges_collected_via_store_invite_text":"Avis collecté via l'invitation du magasin","transparency_badges_from_another_provider_text":"Avis collecté d'un autre fournisseur","transparency_badges_collected_from_store_visitor_text":"Avis collecté d'un visiteur du magasin","transparency_badges_written_in_google_text":"Avis écrit sur Google","transparency_badges_written_in_etsy_text":"Avis écrit sur Etsy","transparency_badges_written_in_shop_app_text":"Avis écrit sur Shop App","transparency_badges_earned_reward_text":"Avis a gagné une récompense pour une commande future","product_review_widget_per_page":4,"widget_other_languages_reviews_per_page":3,"widget_store_review_label_text":"Avis de la boutique","widget_cart_mode_aggregate_heading_text":"Les clients évaluent cette boutique","widget_sort_by_text":"Trier par","checkout_comment_extension_title_on_product_page":"Customer Comments","checkout_comment_extension_num_latest_comment_show":5,"checkout_comment_extension_format":"name_and_timestamp","checkout_comment_customer_name":"last_initial","checkout_comment_comment_notification":true,"preview_badge_collection_page_install_preference":false,"preview_badge_home_page_install_preference":false,"preview_badge_product_page_install_preference":false,"review_widget_install_preference":"","review_carousel_install_preference":false,"floating_reviews_tab_install_preference":"none","verified_reviews_count_badge_install_preference":false,"all_reviews_text_install_preference":false,"review_widget_best_location":false,"judgeme_medals_install_preference":false,"review_widget_revamp_enabled":true,"review_widget_qna_enabled":false,"review_widget_revamp_dual_publish_end_date":"2026-09-07T07:42:26.000+00:00","review_widget_header_theme":"minimal","review_widget_widget_title_enabled":true,"review_widget_header_text_size":"medium","review_widget_header_text_weight":"regular","review_widget_average_rating_style":"compact","review_widget_bar_chart_enabled":true,"review_widget_bar_chart_type":"numbers","review_widget_bar_chart_style":"standard","review_widget_expanded_media_gallery_enabled":false,"review_widget_show_review_highlights":false,"review_widget_show_review_keywords_in_gray":false,"review_widget_reviews_section_theme":"cards","review_widget_image_style":"thumbnails","review_widget_review_image_ratio":"square","review_widget_stars_size":"medium","review_widget_verified_badge":"standard_text","review_widget_review_title_text_size":"medium","review_widget_review_text_size":"medium","review_widget_review_text_length":"tall","review_widget_number_of_columns_desktop":4,"review_widget_carousel_transition_speed":5,"review_widget_custom_questions_answers_display":"always","review_widget_card_section_size":"tall","review_widget_button_text_color":"#FFFFFF","review_widget_text_color":"#000000","review_widget_lighter_text_color":"#7B7B7B","review_widget_corner_styling":"rounded","review_widget_custom_css":".jdgm-review-card,\n.jdgm-review-card__content {\n background: #EFEFEF !important;\n}","review_widget_review_word_singular":"avis","review_widget_review_word_plural":"avis","review_widget_voting_label":"Utile?","review_widget_shop_reply_label":"Réponse de {{ shop_name }} :","review_widget_filters_title":"Filtres","review_widget_filter_rating_title":"Note","review_widget_filter_keyword_title":"Mot-clé","review_widget_clear_filters_text":"Effacer les filtres","review_widget_expand_more_text":"Plus","review_widget_review_highlights_title":"Points forts des avis","qna_widget_question_word_singular":"Question","qna_widget_question_word_plural":"Questions","qna_widget_answer_reply_label":"Réponse de {{ answerer_name }} :","qna_content_screen_title_text":"Poser une question sur ce produit","qna_widget_question_required_field_error_text":"Veuillez entrer votre question.","qna_widget_flow_gdpr_statement":"Nous vous contacterons uniquement au sujet de votre question si nécessaire. En soumettant votre question, vous acceptez nos \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003econditions d'utilisation\u003c/a\u003e et notre \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003epolitique de confidentialité\u003c/a\u003e.","qna_widget_question_submitted_text":"Merci pour votre question !","qna_widget_close_form_text_question":"Fermer","qna_widget_question_submit_success_text":"Nous vous enverrons un email lorsque nous répondrons à votre question.","all_reviews_widget_v2025_enabled":false,"all_reviews_widget_v2025_header_theme":"default","all_reviews_widget_v2025_widget_title_enabled":true,"all_reviews_widget_v2025_header_text_size":"medium","all_reviews_widget_v2025_header_text_weight":"regular","all_reviews_widget_v2025_average_rating_style":"compact","all_reviews_widget_v2025_bar_chart_enabled":true,"all_reviews_widget_v2025_bar_chart_type":"numbers","all_reviews_widget_v2025_bar_chart_style":"standard","all_reviews_widget_v2025_expanded_media_gallery_enabled":false,"all_reviews_widget_v2025_show_store_medals":true,"all_reviews_widget_v2025_show_photo_gallery":true,"all_reviews_widget_v2025_show_review_keywords":false,"all_reviews_widget_v2025_show_ai_summary":false,"all_reviews_widget_v2025_show_ai_summary_bg":false,"all_reviews_widget_v2025_show_review_highlights":false,"all_reviews_widget_v2025_show_review_keywords_in_gray":false,"all_reviews_widget_v2025_add_search_bar":false,"all_reviews_widget_v2025_default_sort_method":"most-recent","all_reviews_widget_v2025_reviews_per_page":10,"all_reviews_widget_v2025_reviews_section_theme":"default","all_reviews_widget_v2025_image_style":"thumbnails","all_reviews_widget_v2025_review_image_ratio":"square","all_reviews_widget_v2025_stars_size":"medium","all_reviews_widget_v2025_verified_badge":"standard_text","all_reviews_widget_v2025_review_title_text_size":"medium","all_reviews_widget_v2025_review_text_size":"medium","all_reviews_widget_v2025_review_text_length":"medium","all_reviews_widget_v2025_number_of_columns_desktop":3,"all_reviews_widget_v2025_carousel_transition_speed":5,"all_reviews_widget_v2025_custom_questions_answers_display":"always","all_reviews_widget_v2025_review_dates":false,"all_reviews_widget_v2025_card_section_size":"small","all_reviews_widget_v2025_show_product_variant":false,"all_reviews_widget_v2025_show_reviewer_avatar":true,"all_reviews_widget_v2025_reviewer_name_as_initial":"","all_reviews_widget_v2025_review_location_show":false,"all_reviews_widget_v2025_location_format":"","all_reviews_widget_v2025_show_country_flag":false,"all_reviews_widget_v2025_widget_thumb":false,"all_reviews_widget_v2025_verified_by_shop_badge_style":"light","all_reviews_widget_v2025_social_share":false,"all_reviews_widget_v2025_social_share_options_order":"Facebook,Twitter,LinkedIn,Pinterest","all_reviews_widget_v2025_pagination_type":"standard","all_reviews_widget_v2025_button_text_color":"#FFFFFF","all_reviews_widget_v2025_text_color":"#000000","all_reviews_widget_v2025_lighter_text_color":"#7B7B7B","all_reviews_widget_v2025_corner_styling":"soft","all_reviews_widget_v2025_title":"Avis clients","all_reviews_widget_v2025_ai_summary_title":"Les clients disent à propos de cette boutique","all_reviews_widget_v2025_no_review_text":"Soyez le premier à écrire un avis","all_reviews_widget_v2025_review_highlights_title":"Points forts des avis","reviews_grid_widget_show_sample_reviews":false,"reviews_grid_widget_review_selection":"all","reviews_grid_widget_select_products":[],"reviews_grid_widget_show_media_only":false,"reviews_grid_widget_display_order":"media_first","reviews_grid_widget_card_grouping":"per_media","reviews_grid_widget_columns_desktop":3,"reviews_grid_widget_rows_desktop":3,"reviews_grid_widget_columns_mobile":2,"reviews_grid_widget_rows_mobile":6,"reviews_grid_widget_show_stars":true,"reviews_grid_widget_show_reviewer_name":true,"reviews_grid_widget_show_review_title_on_hover_desktop":true,"reviews_grid_widget_corner_styling":"soft","reviews_grid_widget_card_spacing":"medium","reviews_grid_widget_header_text_color":"#000000","reviews_grid_widget_star_and_reviewer_name_color":"#F9F9F9","reviews_grid_widget_overlay_and_background_color":"#000000","reviews_grid_widget_content_color":"#F9F9F9","reviews_grid_widget_header_text":"De nos clients","reviews_grid_widget_show_average_rating":true,"trust_badge_enabled":true,"trust_badge_structure":"outline","trust_badge_color":"black","trust_badge_star":"black","trust_badge_rating_display_default":"show_trust_badge","platform":"shopify","branding_url":"https://app.judge.me/reviews/stores/terra-ross.com","branding_text":"Powered by Judge.me","locale":"fr","reply_name":"Terra Ross","shop_currency":"EUR","widget_version":"3.0","footer":true,"autopublish":true,"review_dates":true,"enable_custom_form":false,"shop_use_review_site":true,"shop_locale":"en","enable_multi_locales_translations":true,"show_review_title_input":true,"autofill_review_title":true,"review_verification_email_status":"always","require_verification_before_submit":false,"sign_in_with_shop_enabled":false,"customer_account_validation_enabled":true,"most_relevant_sort_enabled":false,"widget_events_v4_impressions_enabled":false,"widget_events_review_grain_enabled":false,"widget_events_v4_time_in_view_enabled":false,"widget_events_v4_session_key_enabled":false,"widget_events_v4_interactions_enabled":false,"widget_attribution_exposure_timestamps_enabled":false,"widget_attribution_v4_exposures_enabled":false,"coupon_promo_invited_eligible":true,"coupon_promo_web_eligible":false,"uses_coupon_integration":false,"uses_external_coupon":false,"hostname_allowlist":"","can_be_branded":true,"rtl_stars_enabled_ar":true,"rtl_stars_enabled_he":true,"reply_name_text":"Terra Ross"};</script> <style class='jdgm-settings-style'>.jdgm-xx{left:0}:root{--jdgm-primary-color: #058041;--jdgm-secondary-color: rgba(5,128,65,0.1);--jdgm-star-color: #058041;--jdgm-write-review-text-color: white;--jdgm-write-review-bg-color: #058041;--jdgm-paginate-color: #058041;--jdgm-border-radius: 0;--jdgm-reviewer-name-color: #058041}.jdgm-histogram__bar-content{background-color:#058041}.jdgm-rev[data-verified-buyer=true] .jdgm-rev__icon.jdgm-rev__icon:after,.jdgm-rev__buyer-badge.jdgm-rev__buyer-badge{color:white;background-color:#058041}.jdgm-review-widget--small .jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"Voir plus"}@media only screen and (min-width: 768px){.jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"Voir plus"}}.jdgm-rev__thumb-btn{color:#058041}.jdgm-rev__thumb-btn:hover{opacity:0.8}.jdgm-rev__thumb-btn:not([disabled]):hover,.jdgm-rev__thumb-btn:hover,.jdgm-rev__thumb-btn:active,.jdgm-rev__thumb-btn:visited{color:#058041}.jdgm-widget .jdgm-write-rev-link{display:none}.jdgm-widget .jdgm-rev-widg[data-number-of-reviews='0']{display:none}.jdgm-prev-badge[data-average-rating='0.00']{display:none !important}.jdgm-author-fullname{display:none !important}.jdgm-author-all-initials{display:none !important}.jdgm-rev-widg__title{visibility:hidden}.jdgm-rev-widg__summary-text{visibility:hidden}.jdgm-prev-badge__text{visibility:hidden}.jdgm-rev__prod-link-prefix:before{content:'à propos de'}.jdgm-rev__variant-label:before{content:'Variante : '}.jdgm-rev__out-of-store-text:before{content:'(hors boutique)'}@media only screen and (min-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}@media only screen and (max-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}.jdgm-preview-badge[data-template="product"]{display:none !important}.jdgm-preview-badge[data-template="collection"]{display:none !important}.jdgm-preview-badge[data-template="index"]{display:none !important}.jdgm-review-widget[data-from-snippet="true"]{display:none !important}.jdgm-verified-count-badget[data-from-snippet="true"]{display:none !important}.jdgm-carousel-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-all-reviews-text[data-from-snippet="true"]{display:none !important}.jdgm-medals-section[data-from-snippet="true"]{display:none !important}.jdgm-ugc-media-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_via_store_invitation"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_from_another_provider"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_earned_for_future_purchase"]{display:none !important}.jdgm-review-snippet-widget{--jdgm-snippet-card-color: #fff;--jdgm-snippet-text-color: #000;--jdgm-snippet-lighter-text-color: #7B7B7B;--jdgm-snippet-star-color: #058041;--jdgm-snippet-border-radius: 8px;--jdgm-snippet-arrows-bg-color: #fff;--jdgm-snippet-arrows-color: #000}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__cards-container .jdgm-rev-snippet-card{border-radius:8px;background:#fff}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__cards-container .jdgm-rev-snippet-card__rev-rating .jdgm-star{color:#058041}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__prev-btn,.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__next-btn{border-radius:50%;background:#fff}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__prev-btn>svg,.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__next-btn>svg{fill:#000}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jm-mfp-content,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__icon,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__pic-img,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__reply{border-radius:8px}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev[data-verified-buyer="true"] .jdgm-full-rev__icon::after{border-radius:8px}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-rev__buyer-badge{border-radius:calc( 8px / 2 )}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__replier::before{content:'Terra Ross'}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__product-button{border-radius:calc( 8px * 6 )}
</style> <style class='jdgm-settings-style'>.jdgm-review-widget .jdgm-review-card,.jdgm-review-widget .jdgm-review-card__content{background:#EFEFEF !important}
</style>
<style class='jdgm-miracle-styles'>
@-webkit-keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@font-face{font-family:'JudgemeStar';src:url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAScAA0AAAAABrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEgAAAABoAAAAcbyQ+3kdERUYAAARgAAAAHgAAACAAMwAGT1MvMgAAAZgAAABGAAAAVi+vS9xjbWFwAAAB8AAAAEAAAAFKwBMjvmdhc3AAAARYAAAACAAAAAj//wADZ2x5ZgAAAkAAAAEJAAABdH33LXtoZWFkAAABMAAAAC0AAAA2BroQKWhoZWEAAAFgAAAAHAAAACQD5QHQaG10eAAAAeAAAAAPAAAAFAYAAABsb2NhAAACMAAAAA4AAAAOAO4AeG1heHAAAAF8AAAAHAAAACAASgAvbmFtZQAAA0wAAADeAAABkorWfVZwb3N0AAAELAAAACkAAABEp3ubLXgBY2BkYADhPPP4OfH8Nl8ZuJkYQODS2fRrCPr/aSYGxq1ALgcDWBoAO60LkwAAAHgBY2BkYGDc+v80gx4TAwgASaAICmABAFB+Arl4AWNgZGBgYGPQYWBiAAIwyQgWc2AAAwAHVQB6eAFjYGRiYJzAwMrAwejDmMbAwOAOpb8ySDK0MDAwMbByMsCBAAMCBKS5pjA4PGB4wMR44P8BBj3GrQymQGFGkBwAjtgK/gAAeAFjYoAAEA1jAwAAZAAHAHgB3crBCcAwDEPRZydkih567CDdf4ZskmLwFBV8xBfCaC4BXkOUmx4sU0h2ngNb9V0vQCxaRKIAevT7fGWuBrEAAAAAAAAAAAA0AHgAugAAeAF9z79Kw1AUx/FzTm7un6QmJtwmQ5Bg1abgEGr/BAqlU6Gju+Cgg1MkQ/sA7Vj7BOnmO/gUvo2Lo14NqIO6/IazfD8HEODtmQCfoANwNsyp2/GJt3WKQrd1NLiYYWx2PBqOsmJMEOznPOTzfSCrhAtbbLdmeFLJV9eKd63WLrZcIcuaEVdssWCKM6pLCfTVOYbz/0pNSMSZKLIZpvh78sAUH6PlMrreTCabP9r+Z/puPZ2ur/RqpQHgh+MIegCnXeM4MRAPjYN//5tj4ZtTjkFqEdmeMShlEJ7tVAly2TAkx6R68Fl4E/aVvn8JqHFQ4JS1434gXKcuL31dDhzs3YbsEOAd/IU88gAAAHgBfY4xTgMxEEVfkk0AgRCioKFxQYd2ZRtpixxgRU2RfhU5q5VWseQ4JdfgAJyBlmNwAM7ABRhZQ0ORwp7nr+eZAa54YwYg9zm3ynPOeFRe8MCrciXOh/KSS76UV5L/iDmrLiS5AeU519wrL3jmSbkS5115yR2fyivJv9kx0ZMZ2RLZw27q87iNQi8EBo5FSPIMw3HqBboi5lKTGAGDp8FKXWP+t9TU01Lj5His1Ba6uM9dTEMwvrFmbf5GC/q2drW3ruXUhhsCiQOjznFlCzYhHUZp4xp76vsvQh89CQAAeAFjYGJABowM6IANLMrEyMTIzMjCXpyRWJBqZshWXJJYBKOMAFHFBucAAAAAAAAB//8AAngBY2BkYGDgA2IJBhBgAvKZGViBJAuYxwAABJsAOgAAeAFjYGBgZACCk535hiD60tn0azAaAEqpB6wAAA==") format("woff");font-weight:normal;font-style:normal}.jdgm-star{font-family:'JudgemeStar';display:inline !important;text-decoration:none !important;padding:0 4px 0 0 !important;margin:0 !important;font-weight:bold;opacity:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.jdgm-star:hover{opacity:1}.jdgm-star:last-of-type{padding:0 !important}.jdgm-star.jdgm--on:before{content:"\e000"}.jdgm-star.jdgm--off:before{content:"\e001"}.jdgm-star.jdgm--half:before{content:"\e002"}.jdgm-widget *{margin:0;line-height:1.4;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch}.jdgm-hidden{display:none !important;visibility:hidden !important}.jdgm-temp-hidden{display:none}.jdgm-spinner{width:40px;height:40px;margin:auto;border-radius:50%;border-top:2px solid #eee;border-right:2px solid #eee;border-bottom:2px solid #eee;border-left:2px solid #ccc;-webkit-animation:jdgm-spin 0.8s infinite linear;animation:jdgm-spin 0.8s infinite linear}.jdgm-spinner:empty{display:block}.jdgm-prev-badge{display:block !important}
</style>
<script data-cfasync='false' class='jdgm-script'>
!function(e){window.jdgm=window.jdgm||{};
/* INF-1976 */
var _jdgmBlocked=function(){var raw=(window.jdgmSettings||{}).hostname_allowlist;var list=(raw==null?"":""+raw).split(/[\s,]+/).map(function(h){return h.trim().toLowerCase().replace(/\.$/,"");}).filter(function(h){return h;});if(!list.length)return false;var host=(e.location.hostname||"").toLowerCase().replace(/\.$/,"");if(/(^|\.)shopifypreview\.com$/.test(host))return false;var bare=host.replace(/^www\./,"");for(var i=0;i<list.length;i++){var en=list[i];if(en.indexOf("*.")===0){var b=en.slice(2);if(host===b||host.slice(-(b.length+1))==="."+b)return false;}else if(bare===en.replace(/^www\./,""))return false;}return true;}();
if(_jdgmBlocked){jdgm._loaderExecuted=true;jdgm._blocked=true;var _jdgmS=e.createElement("style");_jdgmS.textContent='[class^="jdgm-"],[class*=" jdgm-"]{display:none !important}';(e.head||e.documentElement).appendChild(_jdgmS);return;}
jdgm.CDN_HOST="https://cdnwidget.judge.me/",jdgm.CDN_HOST_ALT="https://cdn2.judge.me/cdn/widget_frontend/",jdgm.API_HOST="https://api.judge.me/",jdgm.CDN_BASE_URL="https://cdn.shopify.com/extensions/01a14416-995f-7951-a981-854ef92a0fd4/judgeme-786/assets/",jdgm.CDN_API_HOST="https://cdn.judge.me/",
jdgm.docReady=function(d){(e.attachEvent?"complete"===e.readyState:"loading"!==e.readyState)?
setTimeout(d,0):e.addEventListener("DOMContentLoaded",d)},jdgm.loadCSS=function(d,t,o,a){
!o&&jdgm.loadCSS.requestedUrls.indexOf(d)>=0||(jdgm.loadCSS.requestedUrls.push(d),
(a=e.createElement("link")).rel="stylesheet",a.class="jdgm-stylesheet",a.media="nope!",
a.href=d,a.onload=function(){this.media="all",t&&setTimeout(t)},e.body.appendChild(a))},
jdgm.loadCSS.requestedUrls=[],jdgm.loadJS=function(e,d){var t=new XMLHttpRequest;
t.onreadystatechange=function(){4===t.readyState&&t.status>=200&&t.status<300&&(Function(t.response)(),d&&d(t.response))},
t.open("GET",e),t.onerror=function(){if(e.indexOf(jdgm.CDN_HOST)===0&&jdgm.CDN_HOST_ALT!==jdgm.CDN_HOST){var f=e.replace(jdgm.CDN_HOST,jdgm.CDN_HOST_ALT);jdgm.loadJS(f,d)}},t.send()},jdgm.docReady((function(){(window.jdgmLoadCSS||e.querySelectorAll(
".jdgm-widget, .jdgm-all-reviews-page").length>0)&&(jdgmSettings.widget_load_with_code_splitting?
parseFloat(jdgmSettings.widget_version)>=3?jdgm.loadCSS(jdgm.CDN_BASE_URL+"widget_v3_base.css"):
jdgm.loadCSS(jdgm.CDN_BASE_URL+"widget_base.css"):jdgm.loadCSS(jdgm.CDN_BASE_URL+"shopify_v2.css")
)}))}(document);
</script>
<noscript><link rel="stylesheet" type="text/css" media="all" href="https://cdn.shopify.com/extensions/01a14416-995f-7951-a981-854ef92a0fd4/judgeme-786/assets/shopify_v2.css"></noscript>
<!-- BEGIN app snippet: theme_fix_tags -->
<script>
(function() {
var jdgmThemeFixes = null;
if (!jdgmThemeFixes) return;
// "All themes" fix: CSS and JS applied on every theme. CSS is injected
// before the per-theme fix so the theme-specific CSS wins the cascade.
// HTML is never applied globally (too risky).
var allThemesFix = jdgmThemeFixes['all'];
if (allThemesFix && allThemesFix.css) {
var allStyleTag = document.createElement('style');
allStyleTag.classList.add('jdgm-theme-fix-style-all');
allStyleTag.innerHTML = allThemesFix.css;
document.head.append(allStyleTag);
};
if (allThemesFix && allThemesFix.js) {
var allScriptTag = document.createElement('script');
allScriptTag.classList.add('jdgm-theme-fix-script-all');
allScriptTag.innerHTML = allThemesFix.js;
document.head.append(allScriptTag);
};
var thisThemeFix = jdgmThemeFixes[Shopify.theme.id];
if (!thisThemeFix) return;
if (thisThemeFix.html) {
document.addEventListener("DOMContentLoaded", function() {
var htmlDiv = document.createElement('div');
htmlDiv.classList.add('jdgm-theme-fix-html');
htmlDiv.innerHTML = thisThemeFix.html;
document.body.append(htmlDiv);
});
};
if (thisThemeFix.css) {
var styleTag = document.createElement('style');
styleTag.classList.add('jdgm-theme-fix-style');
styleTag.innerHTML = thisThemeFix.css;
document.head.append(styleTag);
};
if (thisThemeFix.js) {
var scriptTag = document.createElement('script');
scriptTag.classList.add('jdgm-theme-fix-script');
scriptTag.innerHTML = thisThemeFix.js;
document.head.append(scriptTag);
};
})();
</script>
<!-- END app snippet -->
<!-- End of Judge.me Core -->
<!-- END app block --><!-- BEGIN app block: shopify://apps/nabu-redirect-manager/blocks/script-block/1ec76215-4f32-4e94-950a-ce6073ea1b48 -->
<script>
(function() {
const storageKeyMap = {
redirectChain: 'ADNABU_REDIRECT_CHAIN',
redirectLog: 'ADNABU_REDIRECT_LOG',
debugMode: 'ADNABU_REDIRECT_DEBUG_MODE',
sessionId: 'ADNABU_REDIRECT_MANAGER_SESSION_ID',
}
// Storage access can throw (Safari with site data blocked, sandboxed frames);
// an unguarded throw here would abort the whole script tag, geo runtime included.
// The area is passed by name because even reading window.localStorage throws in
// sandboxed frames — it must be dereferenced inside the try.
function safeStorageGet(area, key) {
try {
return window[area].getItem(key);
} catch (error) {
return null;
}
}
function safeStorageSet(area, key, value) {
try {
window[area].setItem(key, value);
return true;
} catch (error) {
return false;
}
}
function safeStorageRemove(area, key) {
try {
window[area].removeItem(key);
} catch (error) {
// Storage is blocked; there is nothing to remove
}
}
const redirectConfig = {
mappings: null,
apiEndpoint: "https://nabu-seo.adnabu.com/flux",
shopId: "truffle-house-en.myshopify.com",
debugMode: safeStorageGet('localStorage', storageKeyMap.debugMode) || false,
};
// Utility functions
function log(message, data = null) {
if (redirectConfig.debugMode) {
console.log('[Nabu Redirect Manager]', message, data);
}
}
function generateUUID() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
// Session ID management functions
function getSessionId() {
let sessionId = safeStorageGet('sessionStorage', storageKeyMap.sessionId);
if (!sessionId) {
sessionId = generateUUID();
safeStorageSet('sessionStorage', storageKeyMap.sessionId, sessionId);
log('New session ID generated', sessionId);
}
return sessionId;
}
function clearSessionId() {
safeStorageRemove('sessionStorage', storageKeyMap.sessionId);
log('Session ID cleared');
}
function sendLogs(endpoint, logData) {
if (!endpoint || !logData) return;
// Use sendBeacon for better reliability, especially during page unload/redirect
if (navigator.sendBeacon) {
const blob = new Blob([JSON.stringify(logData)], { type: 'application/json' });
const success = navigator.sendBeacon(endpoint, blob);
if (success) {
log('Log sent successfully via sendBeacon');
safeStorageRemove('localStorage', storageKeyMap.redirectLog);
} else {
log('Failed to send log via sendBeacon');
}
} else {
// Fallback to XMLHttpRequest for older browsers
var xhr = new XMLHttpRequest();
xhr.open("POST", endpoint, true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
log('Log sent successfully via XHR fallback');
safeStorageRemove('localStorage', storageKeyMap.redirectLog);
} else {
log('Failed to send log via XHR fallback', xhr.status);
}
}
};
xhr.send(JSON.stringify(logData));
}
}
function containsValidDomain(url) {
const regex = /^(https?:\/\/)?(www\.)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}/;
return regex.test(url);
}
function patternMatchesPath(pattern, path, caseInsensitive) {
// Used when there is no query in the pattern
let regex;
const isRegexPattern = pattern.startsWith('^');
if (isRegexPattern) {
regex = new RegExp(pattern, caseInsensitive ? 'i' : '');
} else {
// Convert wildcard pattern to regex - make wildcards capturing groups
const regexPattern = '^' + pattern.replace(/\$([0-9]+)/g, '([^/]+)').replace(/\*/g, '(.*)') + '/?$';
regex = new RegExp(regexPattern, caseInsensitive ? 'i' : '');
}
return path.match(regex);
}
function patternMatchesPathWithQuery(pattern, path, caseInsensitive) {
const isRegexPattern = pattern.startsWith('^');
if (isRegexPattern) {
const regex = new RegExp(pattern, caseInsensitive ? 'i' : '');
return path.match(regex);
}
// Split pattern and path into base path and query parts
const [patternBase, patternQuery] = pattern.split('?');
const [pathBase, pathQuery] = path.split('?');
// Check base path match first
const baseRegex = '^' + patternBase
.replace(/[.+^{}()|[\]\\]/g, '\\$&') // Escape special regex chars
.replace(/\$([0-9]+)/g, '([^/]+)') // Handle $1, $2, etc. placeholders
.replace(/\*/g, '(.*)') + '/?$'; // Handle wildcards as capturing groups
const baseMatch = pathBase.match(new RegExp(baseRegex, caseInsensitive ? 'i' : ''));
if (!baseMatch) {
return null;
}
// If no query in pattern, but query in path, still match base path
if (!patternQuery) {
return baseMatch;
}
// If pattern has query but path doesn't, no match
if (!pathQuery) {
return null;
}
// Parse query parameters from both pattern and path
function parseQueryParams(queryString) {
const params = {};
if (!queryString) return params;
queryString.split('&').forEach(param => {
const [key, value] = param.split('=');
if (key) {
params[decodeURIComponent(key)] = value ? decodeURIComponent(value) : '';
}
});
return params;
}
const patternParams = parseQueryParams(patternQuery);
const pathParams = parseQueryParams(pathQuery);
// Check if all pattern query parameters match
for (const [key, patternValue] of Object.entries(patternParams)) {
const pathValue = pathParams[key];
// If key doesn't exist in path, no match
if (pathValue === undefined) {
return null;
}
// Create regex for the parameter value (handle wildcards and placeholders)
let valueRegex = '^' + patternValue
.replace(/[.+^{}()|[\]\\]/g, '\\$&') // Escape special regex chars
.replace(/\$([0-9]+)/g, '(.+)') // Handle $1, $2, etc. placeholders
.replace(/\*/g, '(.*)') + '$'; // Handle wildcards as capturing groups
const valueMatch = pathValue.match(new RegExp(valueRegex, caseInsensitive ? 'i' : ''));
if (!valueMatch) {
return null;
}
// Merge any captured groups from query parameter matches
if (valueMatch.length > 1) {
baseMatch.push(...valueMatch.slice(1));
}
}
return baseMatch;
}
function smartPatternMatch(pattern, path, caseInsensitive) {
// Check if either pattern or path contains query parameters
const patternHasQuery = pattern.includes('?');
const pathHasQuery = path.includes('?');
// If either has query parameters, use the query-aware function
if (patternHasQuery || pathHasQuery) {
return patternMatchesPathWithQuery(pattern, path, caseInsensitive);
}
// Otherwise, use the simpler function
return patternMatchesPath(pattern, path, caseInsensitive);
}
function getEventType(pattern) {
// Determine event type based on whether pattern starts with ^
return pattern.startsWith('^') ? 'REGEX_REDIRECT' : 'WILDCARD_REDIRECT';
}
function parseQueryParams(queryString) {
const params = {};
if (!queryString) return params;
queryString.split('&').forEach(param => {
const [key, value] = param.split('=');
if (key) {
params[decodeURIComponent(key)] = value ? decodeURIComponent(value) : '';
}
});
return params;
}
function buildQueryString(params) {
const queryParts = [];
for (const [key, value] of Object.entries(params)) {
if (value === '') {
queryParts.push(encodeURIComponent(key));
} else {
queryParts.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));
}
}
return queryParts.join('&');
}
function handleRedirect(path, target, match) {
// First, handle $n pattern replacements
const usedGroups = new Set();
target = target.replace(/\$(\d+)/g, function(_, groupIndex) {
const index = parseInt(groupIndex);
usedGroups.add(index);
return match[index] || '';
});
// Then handle wildcard (*) replacements with remaining capture groups
let wildcardGroupIndex = 1;
target = target.replace(/\*/g, function() {
// Find next unused capture group
while (usedGroups.has(wildcardGroupIndex) && wildcardGroupIndex < match.length) {
wildcardGroupIndex++;
}
const replacement = match[wildcardGroupIndex] || '';
wildcardGroupIndex++;
return replacement;
});
// Now handle query parameter merging
const [currentPathBase, currentQuery] = path.split('?');
const [targetBase, targetQuery] = target.split('?');
// If no query parameters in current path, return target as is
if (!currentQuery) {
return target;
}
const currentParams = parseQueryParams(currentQuery);
const targetParams = parseQueryParams(targetQuery);
// Merge parameters with target taking precedence (target overrides current)
const mergedParams = { ...currentParams, ...targetParams };
// Build final target with merged query parameters
const mergedQuery = buildQueryString(mergedParams);
return targetBase + (mergedQuery ? '?' + mergedQuery : '');
}
function isPageNotFound() {
// Multiple ways to detect 404 pages
return document.title.toLowerCase().includes('404') ||
document.title.toLowerCase().includes('not found') ||
window.location.pathname.includes('404') ||
document.body.classList.contains('template-404') ||
document.querySelector('.template-404') !== null;
}
function getRedirectChain() {
const chainData = safeStorageGet('sessionStorage', storageKeyMap.redirectChain);
if (!chainData) {
return { urls: [], count: 0, sessionId: getSessionId() };
}
try {
const chain = JSON.parse(chainData);
// Ensure we use the persistent session ID
chain.sessionId = getSessionId();
return chain;
} catch (e) {
log('Error parsing redirect chain, resetting', e);
return { urls: [], count: 0, sessionId: getSessionId() };
}
}
function updateRedirectChain(url) {
const chain = getRedirectChain();
chain.urls.push(url);
chain.count++;
safeStorageSet('sessionStorage', storageKeyMap.redirectChain, JSON.stringify(chain));
return chain;
}
function clearRedirectChain() {
safeStorageRemove('sessionStorage', storageKeyMap.redirectChain);
}
function isCircularRedirect(targetUrl, chain) {
// Check if we've already visited this URL in the current chain
return chain.urls.includes(targetUrl);
}
function hasExceededRedirectLimit(chain) {
const MAX_REDIRECTS = 5;
return chain.count >= MAX_REDIRECTS;
}
function getSanitizedCurrentPath() {
let currentPath = window.location.pathname;
// Remove trailing slash from currentPath (except for root path)
if (currentPath.length > 1 && currentPath.endsWith('/')) {
currentPath = currentPath.slice(0, -1);
}
return currentPath;
}
function handle404Redirects() {
const currentPath = getSanitizedCurrentPath();
const queryParams = window.location.search;
const fullPath = currentPath + queryParams;
const currentUrl = window.location.origin + fullPath;
const locationHref = window.location.href;
// Get current redirect chain
const redirectChain = getRedirectChain();
// Create log entry
let redirectLog = {
'from_url': fullPath,
'from_path': currentPath,
'full_path': locationHref,
'session_id': redirectChain.sessionId,
'referrer': document.referrer,
'timestamp': Date.now() / 1000,
'shop_id': redirectConfig.shopId,
'user_agent': navigator.userAgent,
'market_country_code': Shopify.country,
'market_locale': Shopify.locale,
};
log('Checking for redirects', {
path: fullPath,
is404: isPageNotFound(),
redirectChain: redirectChain
});
// Only process redirects if this is a 404 page
if (isPageNotFound() && redirectConfig.mappings && Array.isArray(redirectConfig.mappings)) {
log('Processing 404 redirects');
// Check if we've exceeded the redirect limit
if (hasExceededRedirectLimit(redirectChain)) {
log('Redirect limit exceeded, breaking chain', redirectChain);
redirectLog['event_type'] = "CIRCULAR_REDIRECT_DETECTED";
redirectLog['redirect_id'] = null;
redirectLog['matched_regex'] = null;
redirectLog['to_url'] = null;
redirectLog['error'] = 'redirect_limit_exceeded';
redirectLog['success'] = false;
sendLogs(redirectConfig.apiEndpoint, redirectLog);
clearRedirectChain();
return;
}
// Iterate through redirect mappings
for (const mapping of redirectConfig.mappings) {
const pattern = mapping.pattern;
if (!pattern) continue;
const redirectId = mapping.redirect_id;
const caseInsensitive = mapping.case_insensitive || false;
const match = smartPatternMatch(pattern, fullPath, caseInsensitive);
if (match) {
log('Pattern matched', {pattern, match});
let target = mapping.target;
target = handleRedirect(fullPath, target, match);
// Handle external vs internal redirects
let targetUrl = target;
if (containsValidDomain(target)) {
if (!/^https?:\/\//i.test(target)) {
targetUrl = 'https://' + target;
}
} else {
// Internal redirect - construct full URL
targetUrl = window.location.origin + (target.startsWith('/') ? target : '/' + target);
}
// Check for circular redirect
if (isCircularRedirect(targetUrl, redirectChain)) {
log('Circular redirect detected', {
current: currentUrl,
target: targetUrl,
chain: redirectChain.urls
});
redirectLog['event_type'] = getEventType(pattern);
redirectLog['error'] = 'circular_redirect_detected';
redirectLog['to_url'] = targetUrl;
redirectLog['redirect_id'] = redirectId;
redirectLog['matched_regex'] = pattern;
redirectLog['success'] = false;
sendLogs(redirectConfig.apiEndpoint, redirectLog);
clearRedirectChain();
return;
}
// Update redirect chain before redirecting
updateRedirectChain(currentUrl);
// Add target to log
redirectLog['event_type'] = getEventType(pattern);
redirectLog['redirect_id'] = redirectId;
redirectLog['to_url'] = targetUrl;
redirectLog['matched_regex'] = pattern;
redirectLog['success'] = true;
safeStorageSet('localStorage', storageKeyMap.redirectLog, JSON.stringify(redirectLog));
sendLogs(redirectConfig.apiEndpoint, redirectLog);
log('Redirecting to', targetUrl);
// Perform redirect
window.location.replace(targetUrl);
return;
}
}
}
// No redirect found - log the 404
if (isPageNotFound()) {
redirectLog['event_type'] = "404_NO_REDIRECT";
// Direct marker only for 404s; keep in sync with DIRECT_REFERRER_SENTINEL in adnabu-api.
redirectLog['referrer'] = document.referrer || '__DIRECT__';
redirectLog['to_url'] = null;
redirectLog['redirect_id'] = null;
redirectLog['matched_regex'] = null;
redirectLog['success'] = false;
sendLogs(redirectConfig.apiEndpoint, redirectLog);
clearRedirectChain();
log('No redirect found, logging 404');
}
}
function checkForSuccessfulRedirect() {
// Check if there's a redirect log in localStorage (indicates successful redirect)
const redirectLog = safeStorageGet('localStorage', storageKeyMap.redirectLog);
if (redirectLog && !isPageNotFound()) {
log('Successful redirect detected, sending completion log');
sendLogs(redirectConfig.apiEndpoint, JSON.parse(redirectLog));
// Clear redirect chain on successful landing
clearRedirectChain();
log('Redirect chain cleared after successful landing');
}
}
// Initialize based on page type
function init() {
log('Redirect Manager initialized', redirectConfig);
// Run redirect logic immediately
if (isPageNotFound()) {
// Handle 404 redirects
handle404Redirects();
} else {
// Check for successful redirects
checkForSuccessfulRedirect();
// If we're on a valid page and there's no redirect log,
// clear any stale redirect chains (manual navigation)
const redirectLog = safeStorageGet('localStorage', storageKeyMap.redirectLog);
if (!redirectLog) {
const chain = getRedirectChain();
if (chain.count > 0) {
log('Clearing stale redirect chain due to manual navigation');
clearRedirectChain();
}
}
}
}
// Run when DOM is ready
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
// Expose configuration update function for dynamic updates
window.updateRedirectConfig = function(newConfig) {
Object.assign(redirectConfig, newConfig);
log('Configuration updated', redirectConfig);
};
// Expose redirect chain debugging functions
window.getRedirectChainInfo = function() {
return getRedirectChain();
};
window.clearRedirectChainDebug = function() {
clearRedirectChain();
log('Redirect chain cleared manually');
};
window.enableRedirectDebugMode = function() {
safeStorageSet('localStorage', storageKeyMap.debugMode, 'true');
redirectConfig.debugMode = true;
log('Debug mode enabled');
};
window.disableRedirectDebugMode = function() {
safeStorageRemove('localStorage', storageKeyMap.debugMode);
redirectConfig.debugMode = false;
log('Debug mode disabled');
};
window.getAdNabuRedirectManagerSessionId = function() {
return getSessionId();
};
window.clearAdNabuRedirectManagerSessionId = function() {
clearSessionId();
log('Session ID cleared manually');
};
})();
</script>
<script>
/* ADNABU_GEO_START */
(function() {
const STORAGE_KEYS = {
handled: 'ADNABU_GEO_REDIRECT_HANDLED',
sessionId: 'ADNABU_REDIRECT_MANAGER_SESSION_ID',
debug: 'ADNABU_REDIRECT_DEBUG_MODE',
detectedCountry: 'ADNABU_GEO_DETECTED_COUNTRY',
detectionAttempted: 'ADNABU_GEO_DETECTION_ATTEMPTED',
};
// The extra replace keeps merchant copy from breaking out of this script tag: a literal
// closing tag would end it early, and an opening comment plus script tag flips the HTML
// tokenizer into its double-escaped state.
// Escaping every '<' (it only ever appears inside JSON strings) covers both and stays valid JS.
const config = {"enabled":false};
// Fallback only — localization.country.iso_code reflects the current market context,
// not the visitor's IP country; browsing_context_suggestions.json is the primary source.
const visitorCountryFromLiquid = "BE";
const apiEndpoint = 'https://nabu-seo.adnabu.com/flux';
const shopId = 'truffle-house-en.myshopify.com';
// Storage access throws in Safari with site data blocked and in sandboxed frames, which
// would otherwise kill the whole runtime — reads fall back to null, writes become no-ops.
function storageGet(area, key) {
try { return window[area].getItem(key); } catch (_e) { return null; }
}
function storageSet(area, key, value) {
try { window[area].setItem(key, value); } catch (_e) {}
}
const debug = storageGet('localStorage', STORAGE_KEYS.debug) === 'true';
// Shopify's routes.root ends with a slash, but a theme overriding Shopify.routes
// without one would silently produce paths like '/frlocalization'
function getRoutesRoot() {
const root = (window.Shopify && window.Shopify.routes && window.Shopify.routes.root) || '/';
return root.replace(/\/*$/, '/');
}
let detectedCountryCache = storageGet('sessionStorage', STORAGE_KEYS.detectedCountry) || null;
// A miss (blocked endpoint, no country in the response, fetch failure) leaves detectedCountry
// unset, so remember that detection ran to avoid refetching the endpoint on every pageview
let detectionAttempted = storageGet('sessionStorage', STORAGE_KEYS.detectionAttempted) === '1';
async function warmUpCountryDetection() {
if (detectedCountryCache || detectionAttempted) return;
try {
const res = await fetch(getRoutesRoot() + 'browsing_context_suggestions.json?country[enabled]=true', {cache: 'no-store'});
if (!res.ok) return;
const data = await res.json();
const country = data && data.detected_values && data.detected_values.country && data.detected_values.country.handle;
if (country) {
// Shopify's handle casing isn't guaranteed; market country_codes are uppercase
detectedCountryCache = String(country).toUpperCase();
storageSet('sessionStorage', STORAGE_KEYS.detectedCountry, detectedCountryCache);
}
} catch (_e) {
} finally {
detectionAttempted = true;
storageSet('sessionStorage', STORAGE_KEYS.detectionAttempted, '1');
}
}
function detectVisitorCountry() {
return detectedCountryCache
|| visitorCountryFromLiquid
|| (window.Shopify && Shopify.country)
|| null;
}
// Prefer the visitor's detected country when the market covers it; otherwise fall back
// to the market's primary country code. With region_detection off the visitor's location
// must not influence anything, so the detected country is ignored entirely.
function pickDisplayCountry(market) {
const visitor = config.region_detection !== false ? detectVisitorCountry() : null;
const codes = (market && market.country_codes) || [];
if (visitor && codes.indexOf(visitor) !== -1) return visitor;
// Visitor's country isn't in the target market (e.g. a no-market country routed to the
// fallback market): prefer the merchant's chosen fallback country over the market's
// first country, which is otherwise arbitrary for a multi-country market
if (config.fallback_country && codes.indexOf(config.fallback_country) !== -1) return config.fallback_country;
return codes[0] || config.fallback_country || visitor || null;
}
function log() {
if (debug) console.log.apply(console, ['[Nabu Geo Redirect]'].concat([].slice.call(arguments)));
}
// Accept a boolean true or the string "true" so a metafield written as a string
// doesn't silently disable the feature
if (!config || (config.enabled !== true && config.enabled !== 'true')) {
log('Disabled or config missing', config);
return;
}
if (storageGet('sessionStorage', STORAGE_KEYS.handled) === '1') {
log('Already handled this session');
return;
}
function uuid() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
const r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
function getSessionId() {
let id = storageGet('sessionStorage', STORAGE_KEYS.sessionId);
if (!id) {
id = uuid();
storageSet('sessionStorage', STORAGE_KEYS.sessionId, id);
}
return id;
}
function sendEvent(eventType, extra) {
const payload = Object.assign({
event_type: eventType,
shop_id: shopId,
session_id: getSessionId(),
timestamp: Date.now() / 1000,
visitor_country_code: config.region_detection !== false ? detectVisitorCountry() : null,
visitor_locale: (window.Shopify && Shopify.locale) || null,
// market_* mirrors the 404 event schema — the current market context, not the visitor's IP country
market_country_code: (window.Shopify && Shopify.country) || null,
market_locale: (window.Shopify && Shopify.locale) || null,
user_agent: navigator.userAgent,
}, extra || {});
try {
if (navigator.sendBeacon) {
navigator.sendBeacon(apiEndpoint, new Blob([JSON.stringify(payload)], {type: 'application/json'}));
} else {
const xhr = new XMLHttpRequest();
xhr.open('POST', apiEndpoint, true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify(payload));
}
} catch (e) {
log('sendEvent failed', e);
}
}
// Returns whether the marker actually persisted — with storage blocked the guard at the
// top of the IIFE never trips, and AUTO mode must not redirect without that brake.
function markHandled() {
storageSet('sessionStorage', STORAGE_KEYS.handled, '1');
return storageGet('sessionStorage', STORAGE_KEYS.handled) === '1';
}
// return_to must be locale-root-relative; a locale-prefixed path would pin the old language.
// The locale home page has no trailing slash ('/fr' with root '/fr/'), so compare without it.
function toLocaleRootRelative(returnTo) {
let returnPath = returnTo || '/';
const rootNoSlash = getRoutesRoot().replace(/\/+$/, '');
if (rootNoSlash && returnPath.indexOf(rootNoSlash) === 0) {
const rest = returnPath.slice(rootNoSlash.length);
if (rest === '') returnPath = '/';
else if (rest.charAt(0) === '/') returnPath = rest;
}
// Collapse leading slashes, backslashes and control chars: '//evil.example/x',
// '/\evil.example/x' and control-char-prefixed forms all normalize to a
// protocol-relative URL in browsers, not a path
return '/' + returnPath.replace(/^[/\\\x00-\x1f]+/, '');
}
// Submit Shopify's localization form so Shopify updates country/market/currency and
// redirects to the locale-aware URL; self-built market URLs are brittle.
function switchCountry(countryCode, returnTo, localeCode) {
const form = document.createElement('form');
form.method = 'POST';
form.action = getRoutesRoot() + 'localization';
form.hidden = true;
const fields = [
['_method', 'PUT'],
['country_code', countryCode || ''],
['return_to', toLocaleRootRelative(returnTo) + (window.location.search || '')],
];
if (localeCode) fields.push(['locale_code', localeCode]);
for (const pair of fields) {
const input = document.createElement('input');
input.type = 'hidden';
input.name = pair[0];
input.value = pair[1];
form.appendChild(input);
}
document.body.appendChild(form);
form.submit();
}
function findTargetMarket() {
// With region_detection off, skip the country lookup and go straight to fallback
if (config.region_detection !== false) {
const byCountry = marketForCountry(detectVisitorCountry());
if (byCountry) return byCountry;
}
if (config.fallback_market_id) {
const byId = (config.markets || []).find(function(m) { return m.shopify_id === config.fallback_market_id; });
if (byId) return byId;
}
return marketForCountry(config.fallback_country);
}
// Auto-detect (no saved default_language) maps the visitor's browser language(s) to a locale the
// market publishes: an exact locale match wins, then a base-language match (e.g. fr-FR -> fr).
function detectBrowserLocale(locales) {
if (!locales || !locales.length) return null;
const nav = window.navigator || {};
const prefs = (nav.languages && nav.languages.length) ? nav.languages : (nav.language ? [nav.language] : []);
for (let i = 0; i < prefs.length; i++) {
const pref = String(prefs[i]).toLowerCase();
const base = pref.split('-')[0];
const exact = locales.find(function(l) { return String(l).toLowerCase() === pref; });
if (exact) return exact;
const baseMatch = locales.find(function(l) { return String(l).toLowerCase().split('-')[0] === base; });
if (baseMatch) return baseMatch;
}
return null;
}
// Prefer the shop-wide default_language URL when the market supports it, then the visitor's
// browser language, then the market's own locales, then primary_url (which can point at the
// shop root on partially-configured shops).
function pickMarketUrl(market) {
if (!market) return null;
const localeUrls = market.locale_urls || {};
const globalDefault = config.default_language;
if (globalDefault && localeUrls[globalDefault]) return localeUrls[globalDefault];
const detected = detectBrowserLocale(market.locales || []);
if (detected && localeUrls[detected]) return localeUrls[detected];
const marketDefault = (market.locales && market.locales[0]) || null;
if (marketDefault && localeUrls[marketDefault]) return localeUrls[marketDefault];
const anyLocaleUrl = Object.values(localeUrls)[0];
if (anyLocaleUrl) return anyLocaleUrl;
return market.primary_url || null;
}
// Analytics to_url should be where the visitor actually lands — the market URL joined
// with the return path and query string, matching what switchCountry submits as return_to
function buildDestinationUrl(market, returnTo) {
const base = pickMarketUrl(market);
if (!base) return null;
return base.replace(/\/+$/, '') + toLocaleRootRelative(returnTo) + (window.location.search || '');
}
function marketPathFromUrl(url) {
try {
const path = new URL(url).pathname.replace(/\/+$/, '');
return path || '/';
} catch (_e) { return null; }
}
function isSameOrigin(url) {
try { return new URL(url).origin.toLowerCase() === window.location.origin.toLowerCase(); }
catch (_e) { return false; }
}
// Detect the market the visitor is currently browsing by matching subfolder prefixes
function findVisitorMarketPath() {
const markets = config.markets || [];
const visitorPath = window.location.pathname.replace(/\/+$/, '') || '/';
const sorted = markets.slice().sort(function(a, b) {
return (marketPathFromUrl(b.primary_url) || '').length - (marketPathFromUrl(a.primary_url) || '').length;
});
for (const m of sorted) {
// A market on another domain can share a subfolder with a locale prefix on this
// one, so only same-origin markets can claim the current path.
if (!isSameOrigin(m.primary_url)) continue;
const mp = marketPathFromUrl(m.primary_url);
if (!mp) continue;
if (mp === '/') return '/';
if (visitorPath === mp || visitorPath.startsWith(mp + '/')) return mp;
}
return null;
}
// Compare against the market's primary_url on both sides — pickMarketUrl() prefers a
// locale URL whose path prefix differs from the primary one, which would flag visitors
// already in the right market as needing a switch.
function isAlreadyInMarket(market, targetUrl) {
const referenceUrl = (market && market.primary_url) || targetUrl;
if (!isSameOrigin(referenceUrl)) return false;
// Markets can share one domain with no subfolder (the context then comes from the
// buyer's localization cookie), so the URL alone can't prove the market — the
// current context country must also be covered by the target market.
if (visitorCountryFromLiquid && market
&& (market.country_codes || []).indexOf(visitorCountryFromLiquid) === -1) {
return false;
}
// Without a primary_url there is no path to anchor a comparison — same origin plus
// a covered context country is the strongest signal left.
if (!market || !market.primary_url) return true;
return findVisitorMarketPath() === marketPathFromUrl(referenceUrl);
}
// Display names resolve in the storefront's locale and are memoized — Intl.DisplayNames
// construction is expensive and countryName() runs inside the dropdown sort comparator.
const displayNameResolvers = {};
const displayNameCaches = {region: {}, language: {}};
function resolveDisplayName(type, locale, code) {
const resolverKey = type + ':' + locale;
if (!(resolverKey in displayNameResolvers)) {
try { displayNameResolvers[resolverKey] = new Intl.DisplayNames([locale], {type: type}); }
catch (_e) { displayNameResolvers[resolverKey] = null; }
}
const resolver = displayNameResolvers[resolverKey];
if (!resolver) return code;
try { return resolver.of(code) || code; }
catch (_e) { return code; }
}
function countryName(code) {
if (!code) return '';
const locale = (window.Shopify && Shopify.locale) || 'en';
const cache = displayNameCaches.region;
if (cache[code] === undefined) cache[code] = resolveDisplayName('region', locale, code);
return cache[code];
}
// SVG flag from flagcdn.com — same source as the admin preview; emoji flags don't render on Windows
function flagImgMarkup(countryCode) {
if (!countryCode || !/^[A-Za-z]{2}$/.test(countryCode)) return '';
const cc = String(countryCode).toLowerCase();
// onerror removes the img so a CSP-blocked or unreachable CDN never shows a broken icon
return '<img src="https://flagcdn.com/' + cc + '.svg" alt="" width="16" height="12" '
+ 'referrerpolicy="no-referrer" loading="lazy" onerror="this.remove()" '
+ 'style="display:inline-block;vertical-align:middle;object-fit:cover;" />';
}
function languageName(code) {
if (!code) return '';
const cache = displayNameCaches.language;
if (cache[code] === undefined) cache[code] = resolveDisplayName('language', code, code);
return cache[code];
}
function substituteTokens(template, replacements) {
if (typeof template !== 'string' || !template) return '';
return template
.replace(/\{country\}/g, replacements.country || '')
.replace(/\{language\}/g, replacements.language || '')
.replace(/\{currency\}/g, replacements.currency || '');
}
// Injects the flag SVG before the country name; all template segments are escaped
function renderHeaderHtml(template, replacements, flagHtml) {
if (typeof template !== 'string' || !template) return '';
const parts = template.split('{country}');
const substituteNonCountry = function(segment) {
return substituteTokens(segment, Object.assign({}, replacements, {country: ''}));
};
const before = escapeHtml(substituteNonCountry(parts[0]));
if (parts.length === 1) return before;
const country = escapeHtml(replacements.country || '');
// Later {country} occurrences render the plain name — the flag only decorates the first
const after = escapeHtml(substituteTokens(parts.slice(1).join('{country}'), replacements));
return before + flagHtml + (flagHtml ? ' ' : '') + country + after;
}
function escapeHtml(str) {
return String(str == null ? '' : str)
.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')
.replace(/"/g, '"').replace(/'/g, ''');
}
function marketForCountry(code) {
return (config.markets || []).find(function(m) {
return (m.country_codes || []).indexOf(code) !== -1;
}) || null;
}
function collectMarketCountryCodes() {
const codes = [];
(config.markets || []).forEach(function(m) {
(m.country_codes || []).forEach(function(code) {
if (code && codes.indexOf(code) === -1) codes.push(code);
});
});
return codes.sort(function(a, b) { return countryName(a).localeCompare(countryName(b)); });
}
function localesForCountry(code, fallbackMarket) {
const market = marketForCountry(code) || fallbackMarket;
const locales = (market && market.locales) || [];
if (locales.length) return locales;
return config.shop_primary_locale ? [config.shop_primary_locale] : [];
}
function preferredLocaleFor(market) {
if (config.default_language) return config.default_language;
const locales = (market && market.locales) || [];
return detectBrowserLocale(locales)
|| locales[0]
|| config.shop_primary_locale || '';
}
// Detected/default value first (and preselected); the rest keep their order
function orderedWithFirst(list, first) {
if (!first || list.indexOf(first) === -1) return list;
return [first].concat(list.filter(function(item) { return item !== first; }));
}
function selectOptionsMarkup(values, labelFor) {
return values.map(function(value, index) {
return '<option value="' + escapeHtml(value) + '"' + (index === 0 ? ' selected' : '') + '>'
+ escapeHtml(labelFor(value)) + '</option>';
}).join('');
}
function selectFieldMarkup(id, label, attribute, optionsHtml) {
// label for + matching id ties the visible caption to the select, so voice-control
// users can target it (an aria-label alone is invisible and not voice-addressable)
return [
'<div>',
'<label for="' + id + '" style="display:block;margin:0 0 4px;font-size:11px;color:#6b7280;">' + escapeHtml(label) + '</label>',
'<select id="' + id + '" ' + attribute + ' style="width:100%;background:#fff;border:1px solid #dfe3e8;border-radius:6px;padding:4px 0;font-size:12px;color:#111827;">' + optionsHtml + '</select>',
'</div>',
].join('');
}
function renderModal(market, targetUrl) {
const modalCopy = config.modal_copy || {};
const allCountryCodes = collectMarketCountryCodes();
const picked = pickDisplayCountry(market);
// The header/CTA must describe the same country the dropdown preselects, so a pick
// no market covers (empty country_codes + uncovered fallback) falls back to the list
const countryCode = allCountryCodes.indexOf(picked) !== -1 ? picked : (allCountryCodes[0] || picked);
const preferredLanguage = preferredLocaleFor(market);
const languageOptions = orderedWithFirst(localesForCountry(countryCode, market), preferredLanguage);
// {language} copy must name the option the dropdown actually preselects — a
// default_language the target market doesn't publish is dropped from the list
const languageCode = languageOptions[0] || preferredLanguage;
const flagHtml = flagImgMarkup(countryCode);
const replacements = {
country: countryName(countryCode) || market.name || '',
language: languageName(languageCode),
currency: (marketForCountry(countryCode) || market).currency_code || '',
};
// Hex-only guard: cta_color lands in a style attribute, so reject arbitrary CSS
const ctaColor = /^#[0-9a-fA-F]{3,8}$/.test(modalCopy.cta_color || '') ? modalCopy.cta_color : '#1F1F1F';
const headerTemplate = modalCopy.header || 'It looks like you are shopping from {country}';
const descriptionTemplate = modalCopy.description || 'Visit our {country} store for {currency} pricing.';
const ctaTemplate = modalCopy.cta_label || 'Continue to {country} store';
const countryOptions = orderedWithFirst(allCountryCodes, countryCode);
const overlay = document.createElement('div');
overlay.setAttribute('data-adnabu-geo-modal', '');
overlay.style.cssText = 'position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(15,15,15,0.32);z-index:2147483646;display:flex;align-items:center;justify-content:center;font-family:system-ui,-apple-system,BlinkMacSystemFont,sans-serif;';
overlay.innerHTML = [
'<div role="dialog" aria-modal="true" data-adnabu-geo-dialog aria-label="' + escapeHtml(substituteTokens(headerTemplate, replacements)) + '" style="background:#fff;border-radius:14px;box-shadow:0 12px 32px rgba(0,0,0,0.18);padding:20px;max-width:340px;width:calc(100% - 40px);">',
'<div style="display:flex;justify-content:space-between;align-items:flex-start;gap:12px;">',
'<p data-adnabu-geo-header aria-live="polite" style="margin:0;font-size:15px;font-weight:500;line-height:1.35;">' + renderHeaderHtml(headerTemplate, replacements, flagHtml) + '</p>',
'<button type="button" aria-label="Close" data-adnabu-geo-dismiss style="background:transparent;border:none;padding:0;cursor:pointer;color:#5c6a7a;font-size:20px;line-height:1;">×</button>',
'</div>',
'<p data-adnabu-geo-description aria-live="polite" style="margin:12px 0 0;font-size:13px;color:#374151;line-height:1.4;">' + escapeHtml(substituteTokens(descriptionTemplate, replacements)) + '</p>',
'<div style="display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px;">',
selectFieldMarkup('adnabu-geo-country-select', modalCopy.country_field_label || 'Country', 'data-adnabu-geo-country', selectOptionsMarkup(countryOptions, countryName)),
selectFieldMarkup('adnabu-geo-language-select', modalCopy.language_field_label || 'Language', 'data-adnabu-geo-language', selectOptionsMarkup(languageOptions, languageName)),
'</div>',
'<button type="button" data-adnabu-geo-accept style="margin-top:16px;width:100%;background:' + escapeHtml(ctaColor) + ';color:#fff;border:none;border-radius:8px;padding:10px 14px;font-weight:600;font-size:13px;cursor:pointer;">',
escapeHtml(substituteTokens(ctaTemplate, replacements)),
'</button>',
'</div>',
].join('');
const previouslyFocused = document.activeElement;
const previousBodyOverflow = document.body.style.overflow;
// Lock background scroll so the page doesn't scroll behind the overlay on mobile
document.body.style.overflow = 'hidden';
document.body.appendChild(overlay);
const dialogElement = overlay.querySelector('[data-adnabu-geo-dialog]');
const headerElement = overlay.querySelector('[data-adnabu-geo-header]');
const descriptionElement = overlay.querySelector('[data-adnabu-geo-description]');
const countrySelect = overlay.querySelector('[data-adnabu-geo-country]');
const languageSelect = overlay.querySelector('[data-adnabu-geo-language]');
const acceptButton = overlay.querySelector('[data-adnabu-geo-accept]');
// All templated copy tracks the current selection, not just the CTA — a modal that
// still says "Shopping from France?" above a "Continue to Germany store" button lies
function updateModalCopy() {
const chosenCountry = countrySelect.value || countryCode;
const chosenMarket = marketForCountry(chosenCountry) || market;
const chosen = {
country: countryName(chosenCountry) || chosenMarket.name || '',
language: languageName(languageSelect.value || languageCode),
currency: chosenMarket.currency_code || '',
};
headerElement.innerHTML = renderHeaderHtml(headerTemplate, chosen, flagImgMarkup(chosenCountry));
descriptionElement.textContent = substituteTokens(descriptionTemplate, chosen);
acceptButton.textContent = substituteTokens(ctaTemplate, chosen);
dialogElement.setAttribute('aria-label', substituteTokens(headerTemplate, chosen));
}
function handleKeydown(e) {
if (e.key === 'Escape') { dismiss(); return; }
if (e.key !== 'Tab') return;
// Keep Tab cycling inside the dialog while it is open
const focusables = overlay.querySelectorAll('select, button');
const first = focusables[0];
const last = focusables[focusables.length - 1];
if (e.shiftKey && document.activeElement === first) { e.preventDefault(); last.focus(); }
else if (!e.shiftKey && document.activeElement === last) { e.preventDefault(); first.focus(); }
}
function dismiss() {
sendEvent('GEO_MODAL_DISMISSED', {target_country_code: countryCode, target_market_id: market.shopify_id});
document.removeEventListener('keydown', handleKeydown);
document.body.style.overflow = previousBodyOverflow;
overlay.remove();
if (previouslyFocused && typeof previouslyFocused.focus === 'function') previouslyFocused.focus();
}
function accept() {
// Guard against double submission — the first click already navigates
if (acceptButton.disabled) return;
acceptButton.disabled = true;
document.removeEventListener('keydown', handleKeydown);
document.body.style.overflow = previousBodyOverflow;
const chosenCountry = countrySelect.value || countryCode;
const chosenMarket = marketForCountry(chosenCountry) || market;
sendEvent('GEO_MODAL_ACCEPTED', {
target_country_code: chosenCountry, target_market_id: chosenMarket.shopify_id,
to_url: buildDestinationUrl(chosenMarket, window.location.pathname) || targetUrl,
});
switchCountry(chosenCountry, window.location.pathname, languageSelect.value || languageCode);
}
countrySelect.addEventListener('change', function() {
// Same preference order as the initial render, so toggling a country away and
// back preselects the same language
const chosenMarket = marketForCountry(countrySelect.value) || market;
const locales = orderedWithFirst(localesForCountry(countrySelect.value, market), preferredLocaleFor(chosenMarket));
languageSelect.innerHTML = selectOptionsMarkup(locales, languageName);
updateModalCopy();
});
languageSelect.addEventListener('change', updateModalCopy);
overlay.querySelector('[data-adnabu-geo-dismiss]').addEventListener('click', dismiss);
acceptButton.addEventListener('click', accept);
overlay.addEventListener('click', function(e) { if (e.target === overlay) dismiss(); });
document.addEventListener('keydown', handleKeydown);
// Emitted only after a successful render + wiring, so a throw above (caught in run())
// never counts an impression for a modal the visitor can't see
sendEvent('GEO_MODAL_SHOWN', {target_country_code: countryCode, target_market_id: market.shopify_id});
countrySelect.focus({preventScroll: true});
}
// Best-effort bot exclusion: JS-rendering crawlers (Googlebot, Bingbot) keep their bot UA
// while rendering, and navigator.webdriver catches headless automation.
// Redirecting crawlers by IP breaks indexing of localized markets, so bots get neither
// redirects nor modals — and never reach sendEvent, keeping analytics human-only.
function isBot() {
if (navigator.webdriver) return true;
return /bot|crawler|spider|crawling|slurp|lighthouse|headless|bingpreview|facebookexternalhit|whatsapp|telegram|pinterest|semrush|ahrefs|screaming frog/i
.test(navigator.userAgent);
}
const botDetected = isBot();
async function run() {
if (botDetected) {
log('Bot or automation detected; skipping geo handling');
return;
}
await countryDetectionReady;
const targetMarket = findTargetMarket();
if (!targetMarket) {
log('No target market found for visitor country', detectVisitorCountry());
return;
}
const targetUrl = pickMarketUrl(targetMarket);
if (!targetUrl) {
log('No URL resolved for target market', targetMarket);
return;
}
if (isAlreadyInMarket(targetMarket, targetUrl)) {
log('Visitor already in target market origin', targetUrl);
return;
}
if (config.mode === 'AUTO') {
// Submit only a country the target market covers, so the reported market and
// the market Shopify resolves can't diverge
const targetCountries = targetMarket.country_codes || [];
const picked = pickDisplayCountry(targetMarket);
const submitCountry = targetCountries.indexOf(picked) !== -1 ? picked : targetCountries[0];
if (!submitCountry) {
log('Target market has no country to submit; skipping AUTO redirect');
return;
}
// No persisted marker means no brake against reload loops — storage-blocked
// visitors usually block the localization cookie too, so the switch won't stick
if (!markHandled()) {
log('Session marker not persisted; skipping AUTO redirect');
return;
}
sendEvent('GEO_AUTO_REDIRECTED', {
target_country_code: submitCountry, target_market_id: targetMarket.shopify_id,
to_url: buildDestinationUrl(targetMarket, window.location.pathname) || targetUrl,
});
// Honor default_language when the target market publishes it, matching pickMarketUrl's choice
const autoLocale = config.default_language
&& (targetMarket.locales || []).indexOf(config.default_language) !== -1
? config.default_language : null;
switchCountry(submitCountry, window.location.pathname, autoLocale);
return;
}
if (config.mode !== 'MODAL') {
log('Unknown redirection mode; skipping', config.mode);
return;
}
// Mark handled only after a successful render — a throw partway would otherwise cost
// the visitor the modal for the whole session and leave a dead overlay on the page
try {
renderModal(targetMarket, targetUrl);
} catch (renderError) {
const partialOverlay = document.querySelector('[data-adnabu-geo-modal]');
if (partialOverlay) partialOverlay.remove();
log('Modal render failed', renderError);
return;
}
markHandled();
}
// Detection starts at script evaluation (this block targets head) so the network round
// trip overlaps document parsing instead of delaying the redirect past DOMContentLoaded.
// With region_detection off the visitor is never geolocated — no lookup, no cache.
const countryDetectionReady = !botDetected && config.region_detection !== false
? warmUpCountryDetection() : Promise.resolve();
// async run() would otherwise surface storage/network failures as unhandled rejections
function startGeo() {
run().catch(function(e) { log('Geo run failed', e); });
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', startGeo);
} else {
startGeo();
}
})();
/* ADNABU_GEO_END */
</script>
<!-- END app block --><!-- BEGIN app block: shopify://apps/t-lab-ai-language-translate/blocks/custom_translations/b5b83690-efd4-434d-8c6a-a5cef4019faf --><!-- BEGIN app snippet: custom_translation_scripts --><script>
var __assign=this&&this.__assign||function(){return(__assign=Object.assign||function(r){for(var n,t=1,e=arguments.length;t<e;t++)for(var a in n=arguments[t])Object.prototype.hasOwnProperty.call(n,a)&&(r[a]=n[a]);return r}).apply(this,arguments)},__spreadArray=this&&this.__spreadArray||function(r,n,t){if(t||2===arguments.length)for(var e,a=0,i=n.length;a<i;a++)!e&&a in n||((e=e||Array.prototype.slice.call(n,0,a))[a]=n[a]);return r.concat(e||Array.prototype.slice.call(n))};(()=>{var C=/\([0-9]+?\)$/,G=/\r?\n|\r|\t|\xa0|\u200B|\u200E| | /g,t=/<\/?[a-z][\s\S]*>/i,p=/^(https?:\/\/|\/\/)[^\s/$.?#].[^\s]*$/i,J=/\{\{\s*([a-zA-Z_]\w*)\s*\}\}/g,g=/\{\{\s*([a-zA-Z_]\w*)\s*\}\}/,tr=/\{\{\s*[a-zA-Z_]\w*\s*\}\}/g,l=/^(https:)?\/\/cdn\.shopify\.com\/(.+)\.(png|jpe?g|gif|webp|svgz?|bmp|tiff?|ico|avif)/i,m=/^(https:)?\/\/cdn\.shopify\.com/i,s=/\b(?:https?|ftp)?:?\/\/?[^\s\/]+\/[^\s]+\.(?:png|jpe?g|gif|webp|svgz?|bmp|tiff?|ico|avif)\b/i,h=/url\(['"]?(.*?)['"]?\)/,v="__label:",n=document.createElement("textarea"),o=new DOMParser,z=new Set(["SCRIPT","IFRAME","OBJECT","EMBED","LINK","META","BASE"]),W=/^(on\w+|srcdoc)$/i,F=/(expression|javascript:|@import|url\s*\()/i,q=new Set(["href","action","formaction","xlink:href"]),er=/^(?:javascript|vbscript|data):/i,ar=document.createElement("template"),O={t:"a",i:"button",u:"div",o:"iframe",l:"img",v:"input",p:"p",g:"picture",m:"section",h:"source",T:"span",S:"textarea",_:"video"},x={M:["src","data-src","data-source","data-href","data-zoom","data-master","data-bg","base-src"],A:"src",k:"data-src",I:["srcset","data-srcset"],R:"srcset",C:"data-srcset",O:["alt"],N:["href","data-href"],D:["href","data-href","data-src","data-zoom"],L:["src","data-src","data-bg"],P:["data-bgset"],H:["data-href"],U:["src"],j:["srcset","data-srcset"],W:["src"],F:["src"],q:["poster"],G:"value",J:"type",$:"value",B:["placeholder"],V:["placeholder"],Y:["data-label","title"],Z:["data-tooltip"],X:"class",K:"href"},k=Array.from(new Set(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([],x.M,!0),x.I,!0),x.F,!0),x.q,!0),x.O,!0),["style"],!1),x.P,!0))),ir=new Set(k),ur=new Set([O.l,O.g,O.i,O.p,O.t,O.v]),or=new Set([O.l,O.g,O.u,O.m,O._]),I=new Set([O.l,O.h]),fr=new Set([O.g,O._]),R=[O.l,O.g,O.h].join(", "),N=[O._,"".concat(O.u,"[data-bg]"),"".concat(O.u,"[data-src]"),"".concat(O.u,"[data-bgset]"),"".concat(O.m,"[data-bg]"),"".concat(O.m,"[data-src]"),"".concat(O.m,"[data-bgset]")].join(", "),u=R+", "+N,cr=16.67,lr=500,D=function(r){return r.nodeType===Node.ELEMENT_NODE},L=function(r){return r.nodeType===Node.TEXT_NODE};function P(r){return r&&"none"!==r&&(r=r.match(h))&&r[1]?r[1]:null}function H(r){r=r.trim();return l.test(r)||s.test(r)}function U(r){return t.test(r)}function j(r){r=r.trim();return"/"===r[0]&&"/"!==r[1]}var $=function(r){return!r||0===r.trim().length};function B(r){return r.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function V(t){var e=new Map;return{get:function(r){var n;if(e.has(r))return n=e.get(r),e.delete(r),e.set(r,n),n},set:function(r,n){e.has(r)?e.delete(r):e.size>=t&&e.delete(e.keys().next().value),e.set(r,n)}}}function Y(r,n){var t=r.get(n);return t||r.set(n,t=[]),t}function Z(r){return-1===r.indexOf("&")?r:(n.innerHTML=r,n.value)}function d(r){return X(Z(r))}function X(r){return r.trim().replace(C,"").replace(G,"").trim()}var b=1e3;function K(r){var n=r.length>b;return{key:n?gr(r):r,rr:n,nr:r.length}}function Q(r){return K(r.trim().replace(G,"").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(/&/g,"&").trim())}function rr(r){return Q(r).key}var w=/<\s*([a-z][\w:-]*)\b(?:[^>"']|"[^"]*"|'[^']*')*>/gi,f="__IGNORED__";function r(r){return new RegExp("(\\s)(".concat(r,")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s\"'=<>]+)"),"i")}var a,i,c=[{name:x.X,pattern:r(x.X)},{name:x.K,pattern:r(x.K),tr:O.t}];function sr(r){return r.replace(w,function(r,n){for(var t,e=n.toLowerCase(),a=r,i=0;i<c.length;i++){var u=c[i];void 0!==u.tr&&u.tr!==e||(t=a,u=u.pattern,a=t.replace(u,function(r,n,t){return"".concat(n).concat(t,'="').concat(f,'"')}))}return a})}function vr(r){for(var n,t=[],e=/<\s*(\/?)\s*([a-z][\w:-]*)\b/gi;null!==(n=e.exec(r));)t.push(n[1]+n[2].toLowerCase());return t.join("|")}function dr(r){for(var r=o.parseFromString(r,"text/html"),i=r.body.querySelectorAll("*"),n=function(r){for(var a=i[r],n=Array.from(a.attributes).map(function(r){var n,t,e=r.name.toLowerCase();return{name:e,value:(n=a.localName,t=e,c.some(function(r){return r.name===t&&(void 0===r.tr||r.tr===n)})?f:r.value)}}).sort(function(r,n){return r.name.localeCompare(n.name)||r.value.localeCompare(n.value)});0<a.attributes.length;)a.removeAttribute(a.attributes[0].name);for(var t=0;t<n.length;t++){var e=n[t];a.setAttribute(e.name,e.value)}},t=0;t<i.length;t++)n(t);return r.body.innerHTML}function T(r,n,t){r=r.getAttribute(t);null===r?n.removeAttribute(t):n.setAttribute(t,r)}function pr(r,n){var r=o.parseFromString(r,"text/html"),n=o.parseFromString(n,"text/html"),t=r.body.querySelectorAll("*"),e=n.body.querySelectorAll("*");if(((r,n)=>{if(r.length===n.length){for(var t=0;t<r.length;t++)if(r[t].localName!==n[t].localName)return;return 1}})(t,e))for(var a=0;a<t.length;a++)T(t[a],e[a],x.X);var i=r.body.querySelectorAll(O.t),u=n.body.querySelectorAll(O.t);if(i.length!==u.length)return null;for(a=0;a<i.length;a++)T(i[a],u[a],x.K);return n.body.innerHTML}function nr(r){return r.trim().toLowerCase().replace(/^https:/i,"")}function gr(r){for(var n=5381,t=0;t<r.length;t++)n=(n<<5)+n^r.charCodeAt(t);return(n>>>0).toString(36)}function mr(r,n,t){void 0===t&&(t=20);for(var e=r,a=0;e&&e.parentElement&&a<t;){for(var i=e.parentElement,u=0,o=n;u<o.length;u++)for(var f=o[u],c=0,l=f.er;c<l.length;c++){var s=l[c];switch(s.type){case"class":for(var v=0,d=i.classList;v<d.length;v++){var p=d[v];if(s.value.test(p))return f.label}break;case"id":if(i.id&&s.value.test(i.id))return f.label;break;case"attribute":if(i.hasAttribute(s.name)){if(!s.value)return f.label;var g=i.getAttribute(s.name);if(g&&s.value.test(g))return f.label}}}e=i,a++}return"unknown"}function hr(){var l=/([^\s]+)\.(png|jpe?g|gif|webp|svgz?|bmp|tiff?|ico|avif)$/i,s=/_(\{width\}x*|\{width\}x\{height\}|\d{3,4}x\d{3,4}|\d{3,4}x|x\d{3,4}|pinco|icon|thumb|small|compact|medium|large|grande|original|master)(_crop_\w+)*(@[2-3]x)*(.progressive)*$/i,v=/^(https?|ftp|file):\/\//i;function t(r){var n,t="".concat(r.path).concat(r.ar).concat(null!=(t=r.size)?t:"",".").concat(r.ir);return r.ur&&(t="".concat(r.path).concat(r.ur,"/").concat(r.ar).concat(null!=(n=r.size)?n:"",".").concat(r.ir)),r.host&&(t="".concat(null!=(n=r.protocol)?n:"","//").concat(r.host).concat(t)),r.cr&&(t+=r.cr),t}return{lr:function(r){var n,t=!0,e=(v.test(r)||r.startsWith("//")||(t=!1,r="https://example.com"+r),t);r.startsWith("//")&&(e=!1,r="https:"+r);try{n=new URL(r)}catch(r){return null}var a,i,u,o,f,c,r=n.pathname.split("/").filter(function(r){return r});return r.length<1||(i=r.pop(),a=null!=(a=r.pop())?a:null,null===(i=i.match(l)))?null:(c=i[1],i=i[2],u=c.match(s),o=c,(f=null)!==u&&(o=c.substring(0,u.index),f=u[0]),c=0<r.length?"/"+r.join("/")+"/":"/",{protocol:e?n.protocol:null,host:t?n.host:null,path:c,cr:n.search,ur:a,ar:o,size:f,ir:i,version:n.searchParams.get("v"),width:n.searchParams.get("width")})},sr:t,vr:function(r){var n=r.ur?"/".concat(r.ur):"";return"".concat(n,"/").concat(r.ar,".").concat(r.ir)},dr:function(r,n){return t(__assign(__assign({},n),{size:r.size}))}}}function y(p,r){var u={},o={},f=new Map,c=[],l=new Map,s=new Map,v=new Map,d=new Map,i=new Map,a=new Map,t=new Map,g=function(r){return r.toLowerCase().replace(/[\s\W_]+/g,"")},m=new Set(r.pr.map(g)),h=0,b=0,w=0,T=!1,y=!1,S=!0,_=[],M=new Set,A=/\w/;function E(r){if(!u[r])for(var n=0;n<_.length;n++){var t=_[n];if(!(r===t||r.length>t.length))for(var e=t.indexOf(r);-1!==e;){var a=0<e?t[e-1]:null,i=e+r.length<t.length?t[e+r.length]:null;if(!(null!==a&&A.test(a)||null!==i&&A.test(i)))return u[r]=t,void((a=f.get(r))&&(o[r]=X(a)));e=t.indexOf(r,e+1)}}}var k=hr();function I(r,n,t){return r&&n&&!(0<m.size&&m.has(g(r)))&&(t.set(r,n),T=!0)}function R(r){var n=k.vr(r);return["".concat(n,"?v=").concat(r.version||"0").toLowerCase(),n.toLowerCase()]}function H(r){var n=[nr(r)],r=k.lr(r);if(r)for(var t=0,e=R(r);t<e.length;t++){var a=e[t];n.push(a)}return n}var U=16;function C(r,f,c,i,n){if(0!==f.size){var l=new Set,s=[];f.forEach(function(r,n){for(var t=new Set,e=r;e;){var a=c(e);if(-1!==a.indexOf(n))return void s.push(n);if(a.some(function(r){return t.has(r)}))break;for(var i=0,u=a;i<u.length;i++){var o=u[i];t.add(o)}e=(r=>{for(var n=0,t=c(r);n<t.length;n++){var e=t[n];if(l.has(e))return null!=(e=f.get(e))?e:null}return null})(e)}l.add(n)});for(var t=0,e=s;t<e.length;t++){var a=e[t];f.delete(a),null!=n&&n(a,null)}var u=[];f.forEach(function(r,n){for(var t=r,e=U;0<e;e--){var a=i(t);if(!a)break;t=a}t!==r&&u.push([n,t])});for(var o=0,v=u;o<v.length;o++){var d=v[o],a=d[0],d=d[1];f.set(a,d),null!=n&&n(a,d)}(0<s.length||0<u.length)&&p.log("dictionary","Cycles resolved in ".concat(r,". Dropped:"),s,"Collapsed:",u)}}var e=new Map;function j(r,n){r=e.get(r);r&&(null===n?f.delete(r):f.set(r,n))}function z(r,n){var t,e;return $(r)||0===f.size&&0===c.length?null:(t=X(r),S||M.has(t)||!f.has(t)||(M.add(t),E(t)),(e=u[t])&&(p.log("dictionary",'Overlapping text: "'.concat(r,'" related to html: "').concat(e,'"')),n)&&(r=>{if(r&&!D(r.textContent))for(var n=x(r.outerHTML),t=n.gr,e=(n.mr||(t=0),r.parentElement),a=0;e&&a<5;){if(D(e.textContent))return;var i=x(e.outerHTML),u=i.mr,i=i.gr;if(u){if(p.log("dictionary","Ancestor depth ".concat(a,": overlap score=").concat(i.toFixed(3),", base=").concat(t.toFixed(3))),t<i)return 1;if(i<t&&0<t)return}e=e.parentElement,a++}})(n)?(p.log("dictionary",'Skipping text translation for "'.concat(r,'" because an ancestor HTML translation exists')),null):f.get(t)||($(e=r)||0===c.length?null:(e=e.trim(),void 0===(n=N.get(e))&&(n=(r=>{for(var n,t,e=r.replace(/\s+/g,""),a=0;a<c.length;a++){var i=c[a];if(!i.hr||-1!==e.indexOf(i.hr)){var u=r.match(i.br);if(u&&1<u.length){n=i.mr,t=u;break}}}if(n&&t){var o=t.slice(1),f=n.match(J);if(f&&f.length===o.length)return f.reduce(function(r,n,t){return r.replace(n,function(){return o[t]})},n)}return null})(e),N.set(e,n)),n)))}var O=V(500);function x(r){if($(r)||0===l.size)return{mr:null,gr:0};var r=Q(r),t=r.key;if(t.length>b)return{mr:null,gr:0};var e=null,a=0,n=l.get(t);if(null!=n)return{mr:n,gr:1};if(r.rr)return{mr:null,gr:0};n=O.get(t);if(n)return n;l.forEach(function(r,n){-1!==n.indexOf(t)&&(n=t.length/n.length,a<n)&&(a=n,e=r)});r={mr:e,gr:a};return O.set(t,r),r}var N=V(1e3);function D(r){var n=w;if(r&&!(r.length<=n))for(var t=0,e=0;e<r.length;e++){var a=r.charCodeAt(e);if(32!==a&&9!==a&&10!==a&&13!==a&&160!==a&&8203!==a&&8206!==a&&++t>n)return!0}return!1}function W(r){if($(r)||0===l.size)return null;var n=l.get(rr(r));if(null!=n)return n;if(0===s.size)return null;if(-1===r.indexOf("<"))return null;var n=vr(r),t=d.get(n);if(!t||0===t.length)return null;var e,n=sr(r),n=v.get(n);if(n&&0<n.length)return e=n[0].mr,n.some(function(r){return r.mr!==e})?null:pr(r,e);for(var a=dr(r),i=null,u=0;u<t.length;u++){var o=t[u];if(null!=o.wr||(o.wr=dr(o.Tr)),a===o.wr){if(i&&i.mr!==o.mr)return null;i=o}}return i?pr(r,i.mr):null}function L(r){if(!$(r)&&0!==i.size){var n=i.get(nr(r));if(n)return n;n=k.lr(r);if(n)for(var t=0,e=R(n);t<e.length;t++){var a=e[t],a=i.get(a);if(a)return a}}return null}function P(r){return!$(r)&&0!==a.size&&null!=(r=a.get(nr(r)))?r:null}function F(r){var n;return!$(r)&&0!==t.size&&null!=(n=null!=(n=t.get(X(r)))?n:t.get(rr(r)))?n:null}function q(){var r={yr:f,Sr:c.map(function(r){return{pattern:r.br.source,mr:r.mr}}),_r:l,Mr:i,Ar:a,Er:t,kr:T,Ir:0<i.size,Rr:h,Cr:o};return JSON.stringify(r,function(r,n){var t;return n instanceof Map?(t={},n.forEach(function(r,n){t[String(n)]=r}),t):n})}return{Or:function(r,n){I(r,n,f)},Nr:function(r,n){if(r&&n&&!(0<m.size&&m.has(g(r)))){var r=r.trim(),t=r.match(J);if(t&&0!==t.length){var e,a=B(r);t.forEach(function(r){a=a.replace(B(r),function(){return"([\\s\\S]*)"})}),a="\\s*"+(a=a.replace(/\s+/g,"\\s+"))+"\\s*";try{e=new RegExp("^"+a+"$")}catch(r){return void p.log("dictionary","Skipping invalid string template pattern",a,String(r))}for(var i=r.split(tr).map(function(r){return r.replace(/\s+/g,"")}),u="",o=0;o<i.length;o++)i[o].length>u.length&&(u=i[o]);c.push({br:e,mr:n,hr:u}),T=!0}}},Dr:function(r,n){var t,e,a;r!==n&&I(e=(t=K(Z(r).trim().replace(G,"").trim())).key,n,l)&&((a=s.get(r))?(a.mr=n,a.wr=void 0):(a={mr:n,Tr:sr(r)},s.set(r,a),Y(v,a.Tr).push(a),Y(d,vr(r)).push(a)),h=Math.max(h,r.length),b=Math.max(b,e.length),w=Math.max(w,t.nr))},Lr:function(r,n){if(I(r,n,i),r=k.lr(r))for(var t=0,e=R(r);t<e.length;t++)I(e[t],n,i)},Pr:function(r,n){I(r,n,a)},Hr:function(r,n,t){I(r,t,a),I(n,t,f),e.set(r,n)},Ur:function(r,n){y=!0,I(r,n,t)},jr:function(){var n,t,e;return C("images",i,H,L),C("links",a,function(r){return[nr(r)]},P,j),p.log("dictionary","Translation dictionaries: ",q),0<l.size&&0<f.size&&(n=Array.from(f.keys()),_=Array.from(l.keys()),S=!1,t=0,(e=function(){for(var r=performance.now();t<n.length;)if(E(n[t++]),8<=performance.now()-r)return void window.setTimeout(e,0);S=!0,p.log("dictionary","appliedTextTranslations: ",function(){return JSON.stringify(o)}),p.log("dictionary","overlappingTexts: ",function(){return JSON.stringify(u)})})()),{kr:T,Ir:0<i.size,zr:y,Wr:D,Fr:z,qr:W,Gr:L,Jr:P,$r:F}}}}function S(r,n,t){function l(r,n){n=r.split(n);return 2===n.length?n[1].trim()?n:[n[0]]:[r]}var s=y(t,n);return r.forEach(function(r){if(r){var f,c=r.name,r=r.value;if(c&&r){if("string"==typeof r)try{f=JSON.parse(r)}catch(r){return void t.log("dictionary","Invalid metafield JSON for "+c,function(){return String(r)})}else f=r;f&&Object.keys(f).forEach(function(e){if(e){var r,n,a=f[e];if(a)if(e!==a)if(c.includes("judge"))r=d(e),s.Ur(r,a);else if(e.startsWith("[img-src]"))n=nr(e.replace("[img-src]","")),s.Lr(n,a);else if(U(e))s.Dr(e,a);else if(H(e))n=nr(e),s.Lr(n,a);else if(r=(r=e).trim(),p.test(r)||m.test(r))n=nr(e),s.Pr(n,a);else if(j(e))n=nr(e),o=d(e),s.Hr(n,o,a);else if(g.test(e))s.Nr(e,a);else if(e.startsWith(v))n=a.replace(v,""),o=e.replace(v,""),s.Or(d(o),n);else{if("product_tags"===c)for(var t=0,i=["_",":"];t<i.length;t++){var u=(r=>{if(e.includes(r)){var n=l(e,r),t=l(a,r);if(n.length===t.length)return n.forEach(function(r,n){r!==t[n]&&(s.Or(d(r),t[n]),s.Or(d("".concat(r,":")),"".concat(t[n],":")))}),{value:void 0}}})(i[t]);if("object"==typeof u)return u.value}var o=d(e);o!==a&&s.Or(o,a)}}})}}}),s.jr()}function _(u,a){var e=[{label:"judge-me",er:[{type:"class",value:/jdgm/i},{type:"class",value:/^jm-review/i},{type:"id",value:/judge-me/i},{type:"attribute",name:"data-widget-name",value:/review_widget/i}]}],f=hr(),n=new Set(a.Br),i=0,o=new WeakMap;function c(r){var n,t=r.parentElement;return t?(n=o.get(t))&&n.Vr===i?n.Yr:(n=mr(r,e,5),o.set(t,{Vr:i,Yr:n}),n):mr(r,e,5)}var l=new WeakMap;function s(r,n,t){r.getAttribute(n)!==t&&r.setAttribute(n,t);var e=l.get(r);e||l.set(r,e={}),e[n]=t}function v(r,n,t){r=l.get(r);return r&&r[n]===t}function d(r,n,t){if(r.hasAttributes())for(var e=0;e<n.length;e++){var a=n[e],i=r.getAttribute(a);!i||v(r,a,i)||(i=t(a,i))&&s(r,a,i)}}function p(r,n,t){d(r,n,function(r,n){return r.includes("href")&&null!=(r=t.Jr(n))?r:t.Fr(n)})}function g(r,n,t){d(r,n,function(r,n){return t.Jr(n)})}function m(r,n,t){d(r,[n],function(r,n){return t.Fr(n)})}function h(r,n,t){for(var e,a,i,u,o,f=0;f<n.length;f++)a=n[f],i=t,o=u=void 0,(o=(e=r).getAttribute(a))&&!v(e,a,o)&&(o=nr(o.split("&")[0]),(u=S(o,i))?s(e,a,u):(u=i.Jr(o))&&s(e,a,u))}function b(r,n,t){for(var e,a,i,u,o=0;o<n.length;o++)a=n[o],i=t,u=void 0,(u=(e=r).getAttribute(a))&&!v(e,a,u)&&(u=((r,n)=>{if(0!==(r=r.split(",").filter(function(r){return r&&""!==r.trim()}).map(y)).length){var t=r[0].url,t=S(t=r[0].version?"".concat(t,"?").concat(r[0].version):t,n);if(t){var u=f.lr(t);if(u)return r.map(function(r){var n,t,e=u,a=r.url,i=f.lr(a);return i&&(a=f.dr(i,e)),r.Zr&&(i=r.Zr.split("&"),n=i.map(function(r){return r.split("=")[0]}),e=a.indexOf("?"),t=-1===e?[]:a.slice(e+1).split("&").filter(function(r){return-1===n.indexOf(r.split("=")[0])}),e=-1===e?a:a.slice(0,e),a="".concat(e,"?").concat(t.concat(i).join("&"))),a=r.size?"".concat(a," ").concat(r.size):a}).join(",")}}})(u,i))&&s(e,a,u)}function w(r,n){for(var t=r.childNodes,e=0;e<t.length;e++){var a=t[e],i=a.localName?n[a.localName]:null;i&&i(a)}}function T(r){return(r=r&&(null==(r=r.split(",")[0])?void 0:r.trim()))&&r.split(/\s+/)[0]||null}function y(r){var r=r.trim().split(/\s+/),n=r[0].split("?"),t=n[0],n=n[1],n=n?n.split("&"):[];return{url:t,version:((r,n)=>{for(var t=0;t<r.length;t++)if(n(r[t]))return r[t];return null})(n,function(r){return r.startsWith("v=")}),Zr:n.filter(function(r){return!r.startsWith("v=")}).join("&"),size:r[1]}}function S(r,n){var t=f.lr(r);return null===t?null:(r=n.Gr(r))?null===(r=f.lr(r))?null:f.dr(t,r):(r=f.vr(t),null===(n=n.Gr(r))||null===(r=f.lr(n))?null:f.dr(t,r))}function _(r,n,t){var e,a;if(e=x.D,a=n,d(r,e,function(r,n){return H(n)?a.Gr(n):a.Jr(n)}),t.Xr)for(var i=r,u=x.N,o=t.Kr,f=0;f<u.length;f++){var c,l=u[f],s=i.getAttribute(l);s&&(c=s===o||s.startsWith(o+"/")||s.startsWith(o+"?")||s.startsWith(o+"#"),j(s))&&!c&&(c="".concat(o).concat(s),i.setAttribute(l,c))}}function M(r,n){((r,n)=>{if(r instanceof HTMLImageElement&&!r.getAttribute(x.A))for(var t=[r.currentSrc,r.getAttribute(x.k),T(r.getAttribute(x.R)),T(r.getAttribute(x.C))],e=0;e<t.length;e++){var a=t[e];if(a){a=S(a,n);if(a)return s(r,x.A,a)}}})(r,n),h(r,x.M,n),b(r,x.I,n),p(r,x.O,n)}function A(r,n){h(r,x.U,n),b(r,x.j,n)}function E(r,n){g(r,x.U,n)}function k(r,n){var n=u.Gr(n);return!!n&&(n='url("'.concat(n,'")'),r.style.backgroundImage!==n)&&(r.style.backgroundImage=n,!0)}function I(r){var n,t,e,a,i;switch(r.localName){case O.l:M(r,u);break;case O.g:i=u,w(a=r,((a={})[O.h]=function(r){return A(r,i)},a[O.l]=function(r){return M(r,i)},a));break;case O.u:case O.m:a=u,(e=P((t=r).style.backgroundImage||t.getAttribute("data-bg")||""))&&k(t,e),h(t,x.L,a),b(t,x.P,a),p(t,x.H,a);break;case O._:n=u,g(e=r,x.F,n),h(e,x.q,n),w(e,((e={})[O.h]=function(r){return E(r,n)},e));break;case O.h:((null==(t=r.parentElement)?void 0:t.localName)===O._?E:A)(r,u)}}function R(r,n){n=(r=>{var n=ar;try{n.innerHTML=r;for(var t=[],e=document.createTreeWalker(n.content,NodeFilter.SHOW_ELEMENT),a=e.nextNode();a;a=e.nextNode()){var i=a;if(z.has(i.nodeName))t.push(i);else{for(var u,o=i.attributes.length-1;0<=o;--o){var f,c=i.attributes[o].name;W.test(c)?i.removeAttribute(c):q.has(c.toLowerCase())&&(f=(i.attributes[o].value||"").replace(/[\u0000-\u0020]+/g,""),er.test(f))&&i.removeAttribute(c)}i.hasAttribute("style")&&(u=i.getAttribute("style")||"",F.test(u))&&i.removeAttribute("style")}}for(o=0;o<t.length;o++)t[o].remove();return n.innerHTML}finally{n.innerHTML=""}})(n);return r.innerHTML!==n&&(r.innerHTML=n,1)}return{Qr:function(r){return!(!r||!D(r)||n.has((r=r).localName)||r.classList.contains("tl-switcher-container")||(r=r.parentNode)&&["SCRIPT","STYLE"].includes(r.nodeName.toUpperCase()))},rn:function(r){if(L(r)&&null!=(n=r.textContent)&&n.trim()){if(u.zr)if("judge-me"===c(r)){var n=u.$r(r.textContent);if(n)return void(r.textContent=Z(n))}var t=u.Fr(r.textContent,r.parentElement||void 0);t&&(U(t)?(n=r.parentElement)&&1===n.childNodes.length&&R(n,t):(n=r.textContent.trim().replace(C,"").trim(),r.textContent=Z(r.textContent.replace(n,function(){return t}))))}},nn:function(r){if(!!$(r.textContent)||!r.innerHTML)return!1;if(u.zr&&"judge-me"===c(r)){var n,t=u.$r(r.innerHTML);if((t=t?t:(n=u.$r(r.textContent))&&(e=r,1!==(e=Array.from(e.childNodes).filter(function(r){return!$(X(null!=(r=r.textContent)?r:""))})).length||!D(e[0]))?n:null)&&R(r,t))return!0}var e=u.Wr(r.textContent)?null:u.qr(r.innerHTML);return!(!e||!R(r,e))},tn:function(r){switch(p(r,x.Y,u),r.localName){case O.T:p(r,x.Z,u);break;case O.t:_(r,u,a);break;case O.v:t=u,!(e=(n=r).getAttribute(x.J))||"submit"!==e&&"button"!==e||m(n,x.$,t),p(n,x.B,t);break;case O.S:p(r,x.V,u);break;case O.l:case O.g:case O.u:case O.m:case O._:I(r);break;case O.i:m(r,x.G,u);break;case O.o:g(r,x.W,u)}var n,t,e},en:I,an:k,un:function(r){var n;return!!r&&(n=r.localName,!!or.has(n)||n===O.h&&!!r.parentElement&&fr.has(r.parentElement.localName))},on:function(r){return u.zr||!u.Wr(r.textContent)},zr:function(){return u.zr},fn:function(){i++},Ir:function(){return u.Ir},getImageTranslation:function(r){return S(r,u)}}}function e(n){var t=[],e=0;function a(){0!==e&&(e===t.length?e=t.length=0:64<e&&t.length<=2*e&&(t.splice(0,e),e=0))}return{cn:function(r){return!(n<=t.length-e||(a(),t.push(r),0))},ln:function(){var r;return t.length<=e?(a(),null):(r=t[e++],a(),r)},sn:function(){return e<t.length}}}function br(r,t){var n=new Map([["high",0],["normal",1],["deferred",2]]);function u(r){return null!=(r=n.get(r))?r:1}var o=[e(r),e(r),e(r)],f=new WeakMap;function i(r){var n=navigator.scheduling;return n&&"function"==typeof n.isInputPending&&n.isInputPending()||performance.now()-r>=t}function c(){return o[0].sn()||o[1].sn()||o[2].sn()}function l(r,n,t,e){if(void 0===e&&(e=!1),r.sn()){if(!e&&i(n))return!1;e=r.ln();e&&e.isActive&&((n=f.get(e.node))&&n[e.kind]===e&&delete n[e.kind],t(e))}return!0}return{vn:function(r,n,t,e){var a=f.get(r),i=null!=(i=null==a?void 0:a[n])?i:null;return i&&u(e)>=u(i.priority)?"deduped":(t={node:r,kind:n,source:t,priority:e,isActive:!0},o[u(e)].cn(t)?(i&&(i.isActive=!1),a?a[n]=t:f.set(r,((e={})[n]=t,e)),"enqueued"):"dropped")},dn:c,pn:function(r){var n=performance.now();if(c()){for(var t=0;t<o.length;t++)l(o[t],n,r,!0);for(;!i(n);){for(var e=!1,t=0;t<o.length;t++){var a=o[t];if(a.sn()){e=!0;if(!l(a,n,r))return}}if(!e)break}}}}}function wr(d,t){var p=new WeakSet,g=new WeakMap,m=new WeakSet;function e(r,n){return!(!r.isConnected||!d.un(r)||(d.en(r),t.log("media","Processed media attributes immediately",n,r),0))}function a(r,n){for(var t=0;t<r.length;t++)e(r[t],n)}function i(r,n,t){D(r)&&(e(r,n),I.has(r.localName)||a(r.querySelectorAll(t),n))}function n(){if(d.Ir()){for(var r=document.querySelectorAll('[style*="background"]'),n=0;n<r.length;n++)s(r[n]);for(var t=[],e=document.styleSheets,n=0;n<e.length;n++){var a=e[n];if(!p.has(a)){var i=void 0;try{i=a.cssRules}catch(r){p.add(a);continue}var u=g.get(a);if(u&&u.gn===i.length)for(var o=0;o<u.mn.length;o++)t.push(u.mn[o]);else{var f=[];v(i,f),g.set(a,{gn:i.length,mn:f});for(o=0;o<f.length;o++)t.push(f[o])}}}if(0<t.length)for(var c=0;c<t.length;c+=200)for(var l=document.querySelectorAll(t.slice(c,c+200).join(", ")),n=0;n<l.length;n++)s(l[n])}function s(r){var n;m.has(r)||(n=P(getComputedStyle(r).backgroundImage))&&d.an(r,n)&&m.add(r)}function v(r,n){for(var t=0;t<r.length;t++){var e,a=r[t];a.type===CSSRule.STYLE_RULE?((r,n)=>{var t;if(null!=(t=r.style)&&t.backgroundImage&&r.selectorText){try{document.documentElement.matches(r.selectorText)}catch(r){return}n.push(r.selectorText)}})(a,n):(e=void 0,(e=(a=a).type===CSSRule.MEDIA_RULE?(e=a,"function"!=typeof window.matchMedia||window.matchMedia(e.conditionText).matches?e.cssRules:null):"cssRules"in a?a.cssRules:null)&&v(e,n))}}}return{hn:e,bn:function(r,n){i(r,n,u)},wn:function(r,n){i(r,n,N)},Tn:function(r){a(document.querySelectorAll(u),r),n()},yn:n}}function M(p,g,m){var a=br(lr,2*cr),h=new WeakMap,t=new WeakMap,r=null,i=null,u=!1,b=wr(p,m);function o(){null===r&&a.dn()&&(r=requestAnimationFrame(v))}function w(r,n,t,e){if(r&&("subtree"!==n||r.nodeType!==Node.TEXT_NODE||p.Qr(r.parentElement))&&("subtree"===n||r.isConnected)){t=a.vn(r,n,t,e);if("enqueued"!==t)return"dropped"!==t||(u=!0,m.log("messageHandler","Dropped work item, queue full:",n,r),!1);"subtree"===n&&D(r)&&"deferred"===e&&i&&i.observe(r),o()}return!0}function T(r,n){return r.nodeType===Node.TEXT_NODE?w(r,"characterData",n,"high"):!p.Qr(r)||w(r,"subtree",n,ur.has(r.localName)?"high":i?"deferred":"normal")}function e(){if(document.body){for(var r=document.createTreeWalker(document.body,NodeFilter.SHOW_TEXT),n=[],t=r.nextNode();t;t=r.nextNode())n.push(t);for(var e,a=0;a<n.length;a++)L(e=n[a])&&e.isConnected&&p.Qr(e.parentElement)&&null!=(e=e.textContent)&&e.trim()&&f(n[a])}}function f(r){var n;!p.Qr(r.parentElement)||h.has(r)&&r.textContent===h.get(r)||(n=r.textContent,p.rn(r),r.textContent!==n&&h.set(r,null!=(n=r.textContent)?n:""))}var c=new WeakMap;function l(r){for(var n=r.childNodes,t=!0,e=0;e<n.length;e++)T(n[e],"continuation")||(t=!1);return t}function n(r){r=r.node;if(i&&D(r)&&i.unobserve(r),r.isConnected)if(r.nodeType===Node.TEXT_NODE)f(r);else if(p.Qr(r))if(m.log("messageHandler","Processing element:",r),p.Qr(r)){if(p.tn(r),!(r!==document.body&&p.on(r)))return void(n=r.textContent,n="".concat(r.childNodes.length,":").concat(n?gr(n):""),c.get(r)===n||l(r)&&c.set(r,n));var n=r.innerHTML;t.get(r)!==n&&(p.nn(r)?r.innerHTML!==n&&t.set(r,r.innerHTML):(m.log("messageHandler","Child nodes:",r.childNodes),l(r)))}}function s(r){switch(r.kind){case"subtree":n(r);break;case"attributes":p.Qr(r.node)&&p.tn(r.node);break;case"mediaAttributes":b.hn(r.node,r.source);break;case"mediaSubtree":b.wn(r.node,r.source);break;case"characterData":!g.Sn&&"mutation"===r.source||f(r.node)}}function v(){try{a.pn(s)}finally{r=null,o()}}"undefined"!=typeof IntersectionObserver&&(i=new IntersectionObserver(function(r){for(var n=0;n<r.length;n++){var t=r[n];t.isIntersecting&&(null!=i&&i.unobserve(t.target),w(t.target,"subtree","intersection","high"))}},{rootMargin:"300px"}));var d=["class","id","data-widget-name"],y=new Set(d),S=p.zr(),_={subtree:!0,childList:!0,attributes:!0,attributeFilter:g._n?void 0:S?k.concat(d):k,characterData:g.Sn},M=new WeakMap;var A=new MutationObserver(function(r){m.log("observer","Observer:",r);for(var n=0;n<r.length;n++){var t=r[n];switch(t.type){case"childList":S&&p.fn();for(var e=t.addedNodes,a=0;a<e.length;a++){o=u=i=void 0;var i=e[a];if(D(i))if(I.has(i.localName)||i.localName===O.g)b.bn(i,"mutation");else{for(var u=i.querySelectorAll(R),o=0;o<u.length;o++)b.hn(u[o],"mutation");(p.un(i)||i.querySelector(N))&&w(i,"mediaSubtree","mutation","high")}if(T(e[a],"mutation"),g.Mn&&D(e[a])&&e[a].shadowRoot){var f=e[a].shadowRoot;A.observe(f,_);for(var c=0;c<f.childNodes.length;c++)T(f.childNodes[c],"mutation")}}break;case"attributes":S&&t.attributeName&&y.has(t.attributeName)&&p.fn();var l=t.target;if(p.Qr(l)){var s=l;if(t.attributeName&&ir.has(t.attributeName)&&p.un(s)){if("style"===t.attributeName){var v=s.style.backgroundImage||"";if(M.get(s)===v)break;M.set(s,v)}b.hn(s,"mutation");break}g._n&&s&&w(s,"attributes","mutation","normal")}break;case"characterData":if(g.Sn){var d=t.target;if(d&&d.nodeType===Node.TEXT_NODE){if(h.has(d)&&d.textContent===h.get(d))break;w(d,"characterData","mutation","high")}}}}}),E=(A.observe(document.documentElement,_),!1);return{An:function(){if(e(),document.body)for(var r=document.createTreeWalker(document.body,NodeFilter.SHOW_ELEMENT),n=r.nextNode();n;n=r.nextNode()){var t=n;p.Qr(t)&&p.tn(t)}!document.body||E&&!u||(u=!1,w(document.body,"subtree","page-load","high")),E?b.yn():(b.Tn("page-load"),E=!0)}}}void 0===window.TranslationLab&&(window.TranslationLab={}),window.TranslationLab.CustomTranslations=(a=(()=>{var a;try{a=window.localStorage.getItem("tlab_debug_mode")||null}catch(r){a=null}return{log:function(r,n){for(var t=[],e=2;e<arguments.length;e++)t[e-2]=arguments[e];!a||"observer"===r&&"all"===a||("all"===a||a===r||"custom"===r&&"custom"===a)&&(r=t.map(function(r){if("function"==typeof r)try{return r()}catch(r){return"Error generating parameter: ".concat(r.message)}return r}),console.log.apply(console,[n].concat(r)))}}})(),i=null,{init:function(r,n){var t,e;r&&!r.isPrimaryLocale&&r.translationsMetadata&&r.translationsMetadata.length&&(0<(n=((r,n,t,e)=>{function a(r,n){for(var t=[],e=2;e<arguments.length;e++)t[e-2]=arguments[e];for(var a=0,i=t;a<i.length;a++){var u=i[a];if(u&&void 0!==u[r])return u[r]}return n}var i=null;try{i=window.localStorage.getItem("tlab_feature_options")}catch(r){e.log("dictionary","localStorage unavailable for tlab_feature_options",String(r))}var u=null;if(i)try{u=JSON.parse(i)}catch(r){e.log("dictionary","Invalid tlab_feature_options JSON",String(r))}var t=a("useMessageHandler",!0,u,i=t),o=a("localizeUrls",!1,u,i),f=a("processShadowRoot",!1,u,i),c=a("attributesMutations",!1,u,i),l=a("processCharacterData",!1,u,i),s=a("excludedTemplates",[],u,i),u=a("phraseIgnoreList",[],u,i);return e.log("dictionary","useMessageHandler:",t),e.log("dictionary","localizeUrls:",o),e.log("dictionary","processShadowRoot:",f),e.log("dictionary","attributesMutations:",c),e.log("dictionary","processCharacterData:",l),e.log("dictionary","excludedTemplates:",s),e.log("dictionary","phraseIgnoreList:",u),{Br:["html","head","meta","script","noscript","style","link","canvas","svg","g","path","ellipse","br","hr"],locale:r,Kr:n,kn:t,Xr:o,Mn:f,_n:c,Sn:l,En:s,pr:u}})(r.locale,r.Kr,n,a)).En.length&&n.En.includes(r.template)||n.kn&&(r=S(r.translationsMetadata,n,a),t=i=_(r,n),r.kr)&&(e=M(t,n,a),r=function(){e.An(),window.setTimeout(function(){return e.An()},500)},"loading"===document.readyState?window.addEventListener("DOMContentLoaded",r,{once:!0}):r(),"complete"!==document.readyState)&&window.addEventListener("load",function(){return e.An()},{once:!0}))},getImageTranslation:function(r){return a.log("dictionary","translationManager: ",i),i?i.getImageTranslation(r):null}})})();
</script><!-- END app snippet --><script>
(function() {
var ctx = {
locale: "fr",
isPrimaryLocale: false,
rootUrl: "",
translationsMetadata: [{"name":"custom-resource-h39iog4c2d","value":{"I agree to the terms and conditions":"J'accepte les conditions générales'utilisateur"}},{"name":"custom-resource-wimppsqshg","value":{"Read More":"Lire plus"}},{"name":"custom-resource-nm517bf972","value":{"Read Less":"Lire moins"}},{"name":"custom-resource-8h162pcqcc","value":{"Often bought together":"Souvent achetés ensemble"}},{"name":"custom-resource-29z8f01v92","value":{"I would like an invoice":"Je souhaiterais une facture"}}],
template: "blog.blog-truffle-guides",
};
var settings = null;
TranslationLab.CustomTranslations.init(ctx, settings);
})();
</script>
<!-- END app block --><!-- BEGIN app block: shopify://apps/inbox/blocks/chat/841fc607-4181-4ad1-842d-e24d7f8bad6b --><link rel='modulepreload' href='https://cdn.shopify.com/storefront/web-components/chat.js' crossorigin fetchpriority='low'>
<script id='shopify-chat-app-embed-data' type='application/json'>
{
"settings": {
"invertActivatorColors": false,
"greetingMessage": "",
"showFeaturedProducts": true,
"featuredProducts": [],
"horizontalPosition": "bottom_right",
"icon": "chat_bubble",
"buttonLabel": "Chat"
}
}
</script>
<style data-shopify>
/* Shadow DOM content does not prevent theme-wide :empty rules from matching the host. */
shopify-chat:defined:empty {
display: grid;
}
:root {
--shopify-chat-bg-color: #ffffff;
--shopify-chat-text-color: #000000;
--shopify-chat-accent-bg-color: #000000;
--shopify-chat-accent-text-color: #ffffff;
--shopify-chat-activator-offset: 80px;
--shopify-chat-activator-font-size: 13px;
--shopify-chat-border-radius: 16px;
}
</style>
<script src='https://cdn.shopify.com/storefront/web-components/chat.js' type='module' crossorigin fetchpriority='low' async></script>
<!-- END app block --><script src="https://cdn.shopify.com/extensions/01a14416-995f-7951-a981-854ef92a0fd4/judgeme-786/assets/loader.js" type="text/javascript" defer="defer"></script>
<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 91251933506,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "blog"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
<script>
window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
</script>
<script>(function(){var wpmLoader=function(){"use strict";var e=/Googlebot|Storebot-Google|bingbot|Baiduspider|YandexBot|DuckDuckBot|Slurp|facebookexternalhit|Twitterbot|LinkedInBot|Applebot|AdsBot-Google|Mediapartners-Google|APIs-Google|PetalBot|SemrushBot|AhrefsBot|MJ12bot|DotBot|Acunetix|PerplexityBot|Perplexity-User/i,t=/bytedance/i;function i(){try{var e=document.cookie;if(!e||"string"!=typeof e)return;for(var t=0,i=e.split(";");t<i.length;t++){var n=i[t],r=n.indexOf("=");if(-1!==r){var o=n.slice(0,r).trim();if(o){var a=void 0;try{a=decodeURIComponent(o)}catch(e){a=o}if("_shopify_s"===a){var d=n.slice(r+1).trim();try{return decodeURIComponent(d)}catch(e){return d}}}}}return}catch(e){return}}function n(e){try{"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(e)}catch(e){}}function r(e,t){return"string"==typeof e&&e.length>0&&e.length<=t?e:void 0}function o(e){var t;switch(null==(t=null==e?void 0:e.navigation)?void 0:t.type){case 0:return"navigate";case 1:return"reload";case 2:return"back_forward";default:return}}function a(){var e,t,i;try{var n=null==(i=null==(t=null==(e=self.ShopifyAnalytics)?void 0:e.lib)?void 0:t.trekkie)?void 0:i.state;return"awaiting-consent"===n||"initialized"===n?n:void 0}catch(e){return}}return function(d,s,u,l){var c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};try{var p=c.trekkieShim;!0!==p&&"true"!==p||null!=window.__TREKKIE_SHIM_QUEUE||(window.__TREKKIE_SHIM_QUEUE=[])}catch(e){}var f,v,h,y,g=(v=(f={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,h=f.legacy,(y=navigator.userAgent).match(e)?"bot":y.match(v)?"modern":y.match(h)?"legacy":y.match(t)?"bot":"unknown"),m=function(e){var t,i,n=r(e,128);try{var a=window.performance,d=null==(t=null==a?void 0:a.getEntriesByType)?void 0:t.call(a,"navigation")[0];if(!d)return{requestId:n,navigationType:o(a)};var s="type"in d?r(d.type,64):void 0,u="serverTiming"in d&&Array.isArray(d.serverTiming)?d.serverTiming:[];return{requestId:null!=n?n:r(null==(i=u.find(function(e){return"requestID"===e.name}))?void 0:i.description,128),navigationType:s}}catch(e){return{requestId:n}}}(c.requestId),w=function(e){var t=e.version,r=e.browserTarget,o=e.surface,a=e.shopId,d=e.monorailEndpoint,s=window.location.href;return{emit:function(e){var u=e.status,l=e.errorMsg,c=e.failureReason,p=e.useKeepaliveFallback,f=void 0!==p&&p,v=e.navigationType,h=e.pagehidePersisted,y=e.requestId,g=e.trekkieState;if(d){var m,w;try{var b=(new Date).getTime();m=JSON.stringify({metadata:{event_sent_at_ms:b},events:[{schema_id:"web_pixels_manager_load/3.3",payload:{version:t,bundle_target:r,page_url:s,status:u,surface:o,error_msg:l,failure_reason:c,navigation_type:v,pagehide_persisted:h,request_id:y,trekkie_state:g,shop_id:a,visit_token:i()},metadata:{event_created_at_ms:b}}]})}catch(e){return}try{if("function"==typeof window.navigator.sendBeacon&&-1===(w=window.navigator.userAgent).indexOf("iPhone; CPU iPhone OS 12_")&&-1===w.indexOf("iPad; CPU OS 12_")&&-1===w.indexOf("iPod touch; CPU iPhone OS 12_")&&window.navigator.sendBeacon.bind(window.navigator)(d,m))return}catch(e){}if(f)try{"function"==typeof window.fetch&&window.fetch(d,{method:"POST",headers:{"Content-Type":"text/plain"},body:m,keepalive:!0}).catch(function(){})}catch(e){}else try{var _=new XMLHttpRequest;_.open("POST",d,!0),_.setRequestHeader("Content-Type","text/plain"),_.send(m)}catch(e){n("[Web Pixels Manager] Got an unhandled error while logging to Monorail.")}}else n("[Web Pixels Manager] No Monorail endpoint provided, skipping logging.")}}}({version:u,browserTarget:g,surface:d.surface,shopId:d.shopId,monorailEndpoint:d.monorailEndpoint});if(Boolean(null==(_=null==(b=window.Shopify)?void 0:b.analytics)?void 0:_.replayQueue))w.emit({status:"setup-skipped",errorMsg:"replay queue already initialized."});else{var b,_;w.emit({status:"setup-started"}),window.Shopify=window.Shopify||{};var S=window.Shopify;S.analytics=S.analytics||{};var P=S.analytics;P.replayQueue=[],P.publish=function(e,t,i){return P.replayQueue.push([e,t,i]),!0};try{self.performance.mark("wpm:start")}catch(e){}var k,C="modern"===g?"modern":"legacy",E=(null!=l?l:{modern:"",legacy:""})[C],I=[(k={baseUrl:s,hashVersion:u,buildTarget:C}).baseUrl,"/wpm","/b",k.hashVersion,"modern"===k.buildTarget?"m":"l",".js"].join(""),O=!1,T=!1;try{c.browserTarget=g,function(){O=!0;try{window.addEventListener("pagehide",M)}catch(e){O=!1}}(),R(function(){try{R(x)}catch(e){D(e)}}),w.emit({status:"loading",requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()})}catch(e){D(e)}}function U(){var e;if(q(),!function(){var e,t;return Boolean(null==(t=null==(e=window.Shopify)?void 0:e.analytics)?void 0:t.initialized)}()){var t,i,n;try{if("function"!=typeof(null==(e=window.webPixelsManager)?void 0:e.init))return void A();if(!(null!==(n=i=t=window.webPixelsManager.init(d))&&"function"!=typeof n&&Object(n)===n&&"publish"in i&&"function"==typeof i.publish&&"publishCustomEvent"in i&&"function"==typeof i.publishCustomEvent&&"visitor"in i&&"function"==typeof i.visitor))return void A()}catch(e){return void A(e)}var r=window.Shopify.analytics;r.replayQueue.forEach(function(e){var i=e[0],n=e[1],r=e[2];t.publishCustomEvent(i,n,r)}),r.replayQueue=[],r.publish=t.publishCustomEvent,r.visitor=t.visitor,r.initialized=!0}}function A(e){B("manager_api_unavailable",void 0===e?void 0:Q(e))}function x(){B("script_load_failed","".concat(I," has failed to load"))}function B(e,t){T||(T=!0,q(),w.emit({status:"failed",errorMsg:t,failureReason:e,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function M(e){O&&(q(),w.emit({status:"pagehide-while-loading",useKeepaliveFallback:!0,pagehidePersisted:e.persisted,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function q(){O=!1;try{window.removeEventListener("pagehide",M)}catch(e){}}function R(e){var t;!function(e){var t=e.src,i=e.async,n=void 0===i||i,r=e.onload,o=e.onerror,a=e.sri,d=e.scriptDataAttributes,s=void 0===d?{}:d,u=document.createElement("script"),l=document.querySelector("head"),c=document.querySelector("body");if(u.async=n,u.src=t,a&&(u.integrity=a,u.crossOrigin="anonymous"),s)for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))try{u.dataset[p]=String(s[p])}catch(e){}if(r&&u.addEventListener("load",r),o&&u.addEventListener("error",o),l)l.appendChild(u);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(u)}}({src:I,async:!0,onload:U,onerror:e,sri:(t=E,"string"==typeof t&&/^sha384-[A-Za-z0-9+/=]+$/.test(t)?E:""),scriptDataAttributes:c})}function D(e){B("script_append_failed",Q(e))}function Q(e){return e instanceof Error?e.message:"Unknown error"}}}();wpmLoader({shopId: 91251933506,storefrontBaseUrl: "https://www.terra-ross.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://www.terra-ross.fr/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab"],webPixelsConfigList: [{"id":"3320643906","configuration":"{\"shopId\":\"91251933506\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"83adcaf06c5deacff41ffdf8f92d9129","type":"APP","apiClientId":246667608065,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_phone","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"3075047746","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"GT-T5MG45W8\\\"],\\\"target_country\\\":\\\"ZZ\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":\\\"G-ZPFDG6M4MC\\\"},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":\\\"G-ZPFDG6M4MC\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":\\\"G-ZPFDG6M4MC\\\"},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":\\\"G-ZPFDG6M4MC\\\"},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":\\\"G-ZPFDG6M4MC\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":\\\"G-ZPFDG6M4MC\\\"},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":\\\"G-ZPFDG6M4MC\\\"}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"a3321ca85cf5aaf6b57585fcd8d67b3a","type":"APP","apiClientId":1780363,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"2426044738","configuration":"{\"accountID\":\"91251933506\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"9cf281f576a3744d05c8685f9f7f3f72","type":"APP","apiClientId":10250649601,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1120207170","configuration":"{\"webPixelName\":\"Judge.me\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"8acc938b1a30dc7624e304493ca567d7","type":"APP","apiClientId":683015,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Terra Ross","paymentSettings":{"currencyCode":"EUR"},"myshopifyDomain":"truffle-house-en.myshopify.com","countryCode":"BG","storefrontUrl":"https:\/\/www.terra-ross.fr"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://www.terra-ross.fr/cdn","a0997fe8w295f0e6bp67eaea81m1ea6ab9e",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"false","themeId":"192095682882","themeStoreId":"1651","themePublished":"true","eventMetadataId":"c1fdf762-9eb5-4054-b8cf-62567ac3b79d","pageType":"blog","resourceId":"125042229570","shopId":"91251933506","storefrontBaseUrl":"https:\/\/www.terra-ross.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\"]","isMerchantRequest":"false","hashVersion":"a0997fe8w295f0e6bp67eaea81m1ea6ab9e","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script><script>
window.ShopifyAnalytics = window.ShopifyAnalytics || {};
window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
window.ShopifyAnalytics.meta.currency = 'EUR';
var meta = {"page":{"pageType":"blog","resourceType":"blog","resourceId":125042229570,"requestId":"69cf991e-f20d-4a50-a748-59ec08edba7a-1792169995"}};
for (var attr in meta) {
window.ShopifyAnalytics.meta[attr] = meta[attr];
}
</script>
<script class="analytics">
(function () {
var customDocumentWrite = function(content) {
var jquery = null;
if (window.jQuery) {
jquery = window.jQuery;
} else if (window.Checkout && window.Checkout.$) {
jquery = window.Checkout.$;
}
if (jquery) {
jquery('body').append(content);
}
};
var hasLoggedConversion = function(token) {
if (token) {
return document.cookie.indexOf('loggedConversion=' + token) !== -1;
}
return false;
}
var setCookieIfConversion = function(token) {
if (token) {
var twoMonthsFromNow = new Date(Date.now());
twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
}
}
var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
window.ShopifyAnalytics.lib.trekkie = window.trekkie;
if (trekkie.integrations) {
return;
}
trekkie.methods = [
'identify',
'page',
'ready',
'track',
'trackForm',
'trackLink'
];
trekkie.factory = function(method) {
return function() {
var args = Array.prototype.slice.call(arguments);
args.unshift(method);
trekkie.push(args);
if (method == 'track' || method == 'page') {
var pageUrl;
try {
pageUrl = window.location.href;
} catch (e) {}
var pageReferrer;
try {
pageReferrer = document.referrer;
} catch (e) {}
try {
if (window.__TREKKIE_SHIM_QUEUE == null) {
window.__TREKKIE_SHIM_QUEUE = [];
}
window.__TREKKIE_SHIM_QUEUE.push({
from: 'trekkie-stub',
method: method,
args: args.slice(1),
pageContext: {
url: pageUrl,
referrer: pageReferrer
}
});
} catch (e) {
// no-op
}
}
return trekkie;
};
};
for (var i = 0; i < trekkie.methods.length; i++) {
var key = trekkie.methods[i];
trekkie[key] = trekkie.factory(key);
}
trekkie.load = function(config) {
trekkie.config = config || {};
trekkie.config.initialDocumentCookie = document.cookie;
var first = document.getElementsByTagName('script')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.onerror = function(e) {
var scriptFallback = document.createElement('script');
scriptFallback.type = 'text/javascript';
scriptFallback.onerror = function(error) {
var Monorail = {
produce: function produce(monorailDomain, schemaId, payload) {
var currentMs = new Date().getTime();
var event = {
schema_id: schemaId,
payload: payload,
metadata: {
event_created_at_ms: currentMs,
event_sent_at_ms: currentMs
}
};
return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
},
sendRequest: function sendRequest(endpointUrl, payload) {
// Try the sendBeacon API
if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
var blobData = new window.Blob([payload], {
type: 'text/plain'
});
if (window.navigator.sendBeacon(endpointUrl, blobData)) {
return true;
} // sendBeacon was not successful
} // XHR beacon
var xhr = new XMLHttpRequest();
try {
xhr.open('POST', endpointUrl);
xhr.setRequestHeader('Content-Type', 'text/plain');
xhr.send(payload);
} catch (e) {
console.log(e);
}
return false;
},
isIos12: function isIos12() {
return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
}
};
Monorail.produce('monorail-edge.shopifysvc.com',
'trekkie_storefront_load_errors/1.1',
{shop_id: 91251933506,
theme_id: 192095682882,
app_name: "storefront",
context_url: window.location.href,
source_url: "//www.terra-ross.fr/cdn/s/trekkie.storefront.32ff6085714fe9c4d5859e332c5de5f8759a859e.min.js"});
};
scriptFallback.async = true;
scriptFallback.src = '//www.terra-ross.fr/cdn/s/trekkie.storefront.32ff6085714fe9c4d5859e332c5de5f8759a859e.min.js';
first.parentNode.insertBefore(scriptFallback, first);
};
script.async = true;
script.src = '//www.terra-ross.fr/cdn/s/trekkie.storefront.32ff6085714fe9c4d5859e332c5de5f8759a859e.min.js';
first.parentNode.insertBefore(script, first);
};
trekkie.load(
{"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":91251933506,"isMerchantRequest":null,"themeId":192095682882,"themeCityHash":"14328319629423137921","contentLanguage":"fr","currency":"EUR","eventMetadataId":"c1fdf762-9eb5-4054-b8cf-62567ac3b79d"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}}
);
var loaded = false;
trekkie.ready(function() {
if (loaded) return;
loaded = true;
window.ShopifyAnalytics.lib = window.trekkie;
var originalDocumentWrite = document.write;
document.write = customDocumentWrite;
try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
document.write = originalDocumentWrite;
var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
var token = match? match[1]: undefined;
if (!hasLoggedConversion(token)) {
setCookieIfConversion(token);
}
});
window.ShopifyAnalytics.lib.page(null,{"pageType":"blog","resourceType":"blog","resourceId":125042229570,"requestId":"69cf991e-f20d-4a50-a748-59ec08edba7a-1792169995","shopifyEmitted":true});
var eventsListenerScript = document.createElement('script');
eventsListenerScript.async = true;
eventsListenerScript.src = "//www.terra-ross.fr/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
})();</script>
<script
defer
src="https://www.terra-ross.fr/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.11.0.min.js"
data-application="storefront-renderer"
data-shop-id="91251933506"
data-render-region="gcp-europe-west1"
data-page-type="blog"
data-theme-instance-id="192095682882"
data-theme-name="Local"
data-theme-version="4.1.2"
data-monorail-region="shop_domain"
data-resource-timing-sampling-rate="10"
data-shs="true"
data-shs-beacon="true"
data-shs-export-with-fetch="true"
data-shs-logs-sample-rate="1"
data-shs-beacon-endpoint="https://www.terra-ross.fr/api/collect"
></script>
<script src="https://cdn.shopify.com/storefront/web-components/account.js" type="module" crossorigin fetchpriority="low" async></script><script id="shopify-customer-account-data" type="application/json">{"customer":null,"shop":{"id":"91251933506","customerAccountTranslations":[{"key":"account_menu.signed_out_state.alternate_divider","value":"OU"},{"key":"account_menu.signed_in_state.greeting_with_name","value":"Bonjour, {{first_name}}"},{"key":"account_menu.signed_in_state.greeting_without_name","value":"Compte"},{"key":"account_menu.signed_in_state.orders_button","value":"Commandes"},{"key":"account_menu.signed_in_state.profile_button","value":"Profil"},{"key":"account_menu.location_picker.sheet_title","value":"Emplacements"},{"key":"account_menu.location_picker.search_field_placeholder","value":"Rechercher"},{"key":"account_menu.aria_labels.close_menu","value":"Fermer le menu"},{"key":"account_menu.aria_labels.back_to_main_menu","value":"Retour au menu principal depuis {{title}}"},{"key":"account_menu.aria_labels.open_submenu","value":"{{title}}, ouvre le sous-menu"},{"key":"account_menu.aria_labels.loading_menu","value":"Chargement du menu"},{"key":"account_menu.aria_labels.loading","value":"Chargement"},{"key":"account_menu.aria_labels.account","value":"Compte"},{"key":"account_menu.aria_labels.sign_in_with_email","value":"Se connecter avec e-mail"},{"key":"account_menu.aria_labels.sign_in","value":"Se connecter"}],"socialLoginProviders":[{"handle":"Shop"},{"handle":"Google"},{"handle":"Facebook"}],"legacyCustomerAccounts":false,"signInLinksVisible":true,"b2bEnabled":true,"marketingConsentSigninEnabled":true,"marketingConsentPreselected":true},"visitor":{"country":"BE","language":"fr"}}</script>
<script id="shopify-chat-page-data" type="application/json">{"greetingMessage":"Bienvenue sur Terra Ross. Comment puis-je vous aider ?","customerServiceEmail":"[email protected]","onlineStorePasswordProtected":false,"continueAsChip":true,"exportCommand":false,"shopName":"Terra Ross","translations":[{"key":"agent_chat.panel.open_chat","value":"Ouvrir le chat"},{"key":"agent_chat.panel.ask_anything","value":"Posez votre question"},{"key":"agent_chat.panel.title","value":"Storekick"},{"key":"agent_chat.panel.unread_replies","value":"Réponses non lues"},{"key":"agent_chat.panel.back_to_chat","value":"Retour au chat"},{"key":"agent_chat.panel.see_history","value":"Voir l’historique du chat"},{"key":"agent_chat.panel.new_chat","value":"Créer un nouveau chat"},{"key":"agent_chat.panel.close","value":"Fermer le chat"},{"key":"agent_chat.panel.undock","value":"Détacher le chat"},{"key":"agent_chat.panel.dock","value":"Ancrer le chat"},{"key":"agent_chat.panel.expand","value":"Agrandir le chat"},{"key":"agent_chat.panel.contract","value":"Réduire le chat"},{"key":"agent_chat.panel.jump_to_latest","value":"Aller au plus récent"},{"key":"agent_chat.panel.loading_chat","value":"Chargement du chat"},{"key":"agent_chat.input.label","value":"Saisissez votre message"},{"key":"agent_chat.input.placeholder","value":"Posez votre question..."},{"key":"agent_chat.input.send","value":"Envoyer"},{"key":"agent_chat.input.stop","value":"Arrêter la génération"},{"key":"agent_chat.thinking","value":"Réflexion..."},{"key":"agent_chat.first_response_delayed","value":"L’agent met plus de temps à répondre…"},{"key":"agent_chat.searching","value":"Recherche..."},{"key":"agent_chat.message.sent_timestamp","value":"Envoyé · {{time}}"},{"key":"agent_chat.message.automated_label","value":"Automatisé"},{"key":"agent_chat.message.automated_timestamp","value":"Automatisé · {{time}}"},{"key":"agent_chat.liveAgentHandoff","value":"Un membre de notre équipe vous répondra sous peu"},{"key":"agent_chat.human_handoff.action","value":"Discuter avec notre équipe"},{"key":"agent_chat.human_handoff.request","value":"J’aimerais parler à un membre de votre équipe"},{"key":"agent_chat.human_handoff.ai_assistant","value":"Assistant IA"},{"key":"agent_chat.greeting.default","value":"Bonjour !"},{"key":"agent_chat.greeting.with_name","value":"Bonjour {{name}} !"},{"key":"agent_chat.greeting.welcome","value":"Vous pouvez poser des questions sur les achats, les tailles\/dimensions, l’expédition, les retours ou le statut de la commande."},{"key":"agent_chat.greeting.welcome_back","value":"Bon retour sur %{shop_name} ! Comment puis-je vous aider ?"},{"key":"agent_chat.greeting.welcome_back_no_shop","value":"Bon retour ! Comment puis-je vous aider ?"},{"key":"agent_chat.greeting.welcome_to_shop","value":"Bienvenue sur %{shop_name}. Comment puis-je vous aider ?"},{"key":"agent_chat.greeting.generic","value":"Comment puis-je vous aider ?"},{"key":"agent_chat.disclaimer.text","value":"Ce chat utilise l’IA de Shopify et peut commettre des erreurs. Vos messages sont visibles par {{shop_name}}. Consulter la"},{"key":"agent_chat.disclaimer.text_human","value":"Vos messages sont visibles par {{shop_name}} et par Shopify pour la fourniture et l’amélioration des services. Voir"},{"key":"agent_chat.disclaimer.link_text","value":"politique de confidentialité"},{"key":"agent_chat.error.response_unavailable","value":"Réponse indisponible"},{"key":"agent_chat.error.generic","value":"Une erreur est survenue."},{"key":"agent_chat.error.response_failed","value":"Impossible de charger ce message"},{"key":"agent_chat.error.message_send_failed","value":"Votre message n’a pas pu être envoyé"},{"key":"agent_chat.error.attachment_upload_failed","value":"Votre pièce jointe n’a pas été chargée"},{"key":"agent_chat.error.first_response_stalled","value":"L’agent n’a pas pu répondre"},{"key":"agent_chat.error.try_again","value":"Réessayer"},{"key":"agent_chat.error.unavailable","value":"Le chat n’est pas disponible pour le moment, veuillez réessayer plus tard"},{"key":"agent_chat.error.usage_limit","value":"Limite de messages atteinte : réessayez plus tard ou envoyez-nous un e-mail à {{email}}"},{"key":"agent_chat.error.usage_limit_no_email","value":"Limite de messages atteinte : réessayez plus tard"},{"key":"agent_chat.error.cost_quota_unhandled","value":"Le chat n’est pas disponible pour le moment, envoyez-nous un e-mail à {{email}}"},{"key":"agent_chat.error.cost_quota_unhandled_no_email","value":"Le chat n’est pas disponible pour le moment"},{"key":"agent_chat.error.cost_quota_handover","value":"L’assistant IA n’est pas disponible pour le moment : notre équipe vous répondra sous peu"},{"key":"agent_chat.unavailable.title","value":"Le chat n’est pas disponible pour le moment"},{"key":"agent_chat.unavailable.description","value":"Une erreur s’est produite lors du chargement du chat."},{"key":"agent_chat.history.heading","value":"Historique du chat"},{"key":"agent_chat.history.loading","value":"Chargement de l’historique des conversations"},{"key":"agent_chat.history.aria_label","value":"Historique des conversations"},{"key":"agent_chat.history.no_conversations","value":"Aucune conversation"},{"key":"agent_chat.history.conversation.one","value":"conversation"},{"key":"agent_chat.history.conversation.other","value":"conversations"},{"key":"agent_chat.history.conversation.many","value":"conversations"},{"key":"agent_chat.history.error_message","value":"Une erreur est survenue."},{"key":"agent_chat.history.try_again","value":"Réessayer"},{"key":"agent_chat.history.no_past","value":"Aucune conversation antérieure"},{"key":"agent_chat.history.start_new","value":"Démarrer un nouveau chat"},{"key":"agent_chat.history.untitled","value":"Conversation sans titre"},{"key":"agent_chat.history.resume","value":"Reprendre : {{title}}"},{"key":"agent_chat.history.resume_with_time","value":"Reprendre : {{title}}, {{time}}"},{"key":"agent_chat.history.delete","value":"Supprimer la conversation : {{title}}"},{"key":"agent_chat.history.delete_failed","value":"Impossible de supprimer la conversation"},{"key":"agent_chat.feedback.group_label","value":"Retour d’expérience sur le message"},{"key":"agent_chat.feedback.thumbs_up","value":"Pouce levé"},{"key":"agent_chat.feedback.thumbs_down","value":"Pouce baissé"},{"key":"agent_chat.feedback.add_comment","value":"Ajouter un commentaire"},{"key":"agent_chat.feedback.thanks","value":"Merci pour votre retour d’expérience"},{"key":"agent_chat.feedback.placeholder_up","value":"Dites-nous ce qui s’est bien passé"},{"key":"agent_chat.feedback.placeholder_down","value":"Dites-nous ce qui pourrait être amélioré"},{"key":"agent_chat.feedback.comment_label","value":"Commentaire de retour d’expérience"},{"key":"agent_chat.feedback.cancel","value":"Annuler"},{"key":"agent_chat.feedback.submit","value":"Soumettre"},{"key":"agent_chat.feedback.character_count","value":"{{current}}\/{{max}}"},{"key":"agent_chat.feedback.character_limit_reached","value":"Longueur maximale atteinte. Le retour d’expérience est limité à {{max}} caractères."},{"key":"agent_chat.buyer_profile.button.open","value":"Profil de l’acheteur"},{"key":"agent_chat.buyer_profile.title","value":"Profil de l’acheteur"},{"key":"agent_chat.buyer_profile.empty","value":"Aucun profil de l’acheteur disponible."},{"key":"agent_chat.buyer_profile.close","value":"Fermer"},{"key":"agent_chat.suggestions.empty_state_label","value":"Questions suggérées"},{"key":"agent_chat.suggestions.quick_reply_label","value":"Réponses suggérées"},{"key":"agent_chat.auth.sign_in_to_continue","value":"Se connecter pour continuer"},{"key":"agent_chat.auth.sign_in","value":"Se connecter"},{"key":"agent_chat.auth.skip_and_chat","value":"Ignorer et démarrer le chat"},{"key":"agent_chat.auth.pre_chat_title","value":"Connectez-vous pour personnaliser et enregistrer vos chats"},{"key":"agent_chat.auth.pre_chat_subtitle","value":"Connectez-vous ou créez un compte"},{"key":"agent_chat.auth.staff_chat_required_title","value":"Ne manquez aucune réponse"},{"key":"agent_chat.auth.staff_chat_required_subtitle","value":"Connectez-vous pour discuter avec notre équipe. Nous vous enverrons un e-mail si vous quittez le chat."},{"key":"agent_chat.auth.share_disclaimer","value":"En continuant, Shop partagera votre nom et votre e-mail avec cette boutique. Consultez ses {{terms_link}} et sa {{privacy_link}}"},{"key":"agent_chat.auth.terms_link","value":"conditions"},{"key":"agent_chat.auth.privacy_link","value":"politique de confidentialité"},{"key":"agent_chat.auth.declined_pre_chat","value":"Je ne peux pas vous mettre en relation avec la boutique si vous ne vous connectez pas."},{"key":"agent_chat.reply_by_email.continuation_prompt","value":"Si vous quittez le chat, nous vous enverrons un e-mail en cas de réponse."},{"key":"agent_chat.reply_by_email.sign_in_prompt","value":"Connectez-vous pour recevoir un e-mail en cas de réponse."},{"key":"agent_chat.order_lookup.track_order","value":"Suivre ma commande"},{"key":"agent_chat.order_lookup.track_another_order","value":"Suivre une autre commande"},{"key":"agent_chat.order_lookup.new_conversation","value":"Nouvelle conversation"},{"key":"agent_chat.order_lookup.follow_up_label","value":"Actions de recherche de commande"},{"key":"agent_chat.order_lookup.enter_order_information","value":"Saisir les informations de la commande"},{"key":"agent_chat.order_lookup.prompt","value":"Pour consulter le statut de votre commande, veuillez fournir les détails de la commande."},{"key":"agent_chat.order_lookup.form_title","value":"Suivre ma commande"},{"key":"agent_chat.order_lookup.form_subtitle","value":"Veuillez fournir vos informations."},{"key":"agent_chat.order_lookup.order_number_label","value":"Numéro de commande"},{"key":"agent_chat.order_lookup.email_label","value":"Adresse e-mail"},{"key":"agent_chat.order_lookup.submit","value":"Suivre ma commande"},{"key":"agent_chat.order_lookup.cancel","value":"Annuler"},{"key":"agent_chat.order_lookup.invalid_order_number","value":"Veuillez saisir un numéro de commande valide composé uniquement de chiffres et de lettres, sans espaces (par ex. 1006)."},{"key":"agent_chat.order_lookup.invalid_order_number_whitespace","value":"Veuillez saisir un numéro de commande valide composé uniquement de chiffres et de lettres, sans espaces (par ex. 1006)."},{"key":"agent_chat.order_lookup.invalid_email","value":"Veuillez saisir une adresse e-mail valide"},{"key":"agent_chat.order_lookup.generic_error","value":"Un problème s’est produit lors de la recherche de votre commande. Veuillez réessayer."},{"key":"agent_chat.order_lookup.rate_limited_error","value":"Trop de tentatives. Réessayez plus tard."},{"key":"agent_chat.order_lookup.locked_composer_status","value":"La recherche de commande est en cours. Démarrez une nouvelle conversation pour poser une autre question."},{"key":"agent_chat.legacy_contact.form_title","value":"Avant de commencer"},{"key":"agent_chat.legacy_contact.form_subtitle","value":"Veuillez fournir vos coordonnées afin que nous puissions vous répondre si vous quittez le chat."},{"key":"agent_chat.legacy_contact.first_name_label","value":"Prénom"},{"key":"agent_chat.legacy_contact.last_name_label","value":"Nom"},{"key":"agent_chat.legacy_contact.email_label","value":"E-mail"},{"key":"agent_chat.legacy_contact.marketing_opt_in","value":"M’envoyer des actualités et des offres par e-mail"},{"key":"agent_chat.legacy_contact.submit","value":"Démarrer le chat"},{"key":"agent_chat.legacy_contact.cancel","value":"Annuler"},{"key":"agent_chat.legacy_contact.invalid_first_name","value":"Saisissez un prénom valide."},{"key":"agent_chat.legacy_contact.invalid_last_name","value":"Saisissez un nom valide."},{"key":"agent_chat.legacy_contact.invalid_email","value":"Saisissez une adresse e-mail valide."},{"key":"agent_chat.legacy_contact.invalid_email_length","value":"L’adresse e-mail est trop longue."},{"key":"agent_chat.legacy_contact.generic_error","value":"Un problème est survenu."},{"key":"agent_chat.legacy_contact.rate_limited_error","value":"Trop de tentatives. Réessayez plus tard."},{"key":"agent_chat.discountCard.useDiscount","value":"Utiliser la réduction"},{"key":"agent_chat.discountCard.discountApplicationContext","value":"S’applique automatiquement lors du paiement"},{"key":"agent_chat.cart.checkout","value":"Paiement"},{"key":"agent_chat.product.add_to_cart","value":"Ajouter au panier"},{"key":"agent_chat.product.view_details","value":"Afficher les détails"},{"key":"agent_chat.product.out_of_stock","value":"En rupture de stock"},{"key":"agent_chat.product.compare_suggestions","value":"Comparer les suggestions"},{"key":"agent_chat.product.hide_suggestions","value":"Masquer les suggestions"},{"key":"agent_chat.product.sold_out","value":"Épuisé"},{"key":"agent_chat.order.item.one","value":"article"},{"key":"agent_chat.order.item.other","value":"articles"},{"key":"agent_chat.order.item.many","value":"articles"},{"key":"agent_chat.order.less_items.one","value":"- masquer {{count}} article"},{"key":"agent_chat.order.less_items.other","value":"- masquer {{count}} articles"},{"key":"agent_chat.order.less_items.many","value":"- masquer {{count}} articles"},{"key":"agent_chat.order.more_items.one","value":"+ {{count}} autre article"},{"key":"agent_chat.order.more_items.other","value":"+ {{count}} autres articles"},{"key":"agent_chat.order.more_items.many","value":"+ {{count}} autres articles"},{"key":"agent_chat.order.view_order","value":"Afficher la commande {{orderId}}"},{"key":"agent_chat.order.track_shipment","value":"Suivre l’envoi"},{"key":"agent_chat.order.of_total","value":"{{index}} sur {{total}}"},{"key":"agent_chat.order.label","value":"Commande {{number}}"},{"key":"agent_chat.order.count.one","value":"{{count}} commande"},{"key":"agent_chat.order.count.other","value":"{{count}} commandes"},{"key":"agent_chat.order.count.many","value":"{{count}} commandes"},{"key":"agent_chat.order.ordered_on","value":"Commandé le {{date}}"},{"key":"agent_chat.order.select","value":"Sélectionner la commande {{number}}"},{"key":"agent_chat.return.heading","value":"Sélection des articles à retourner"},{"key":"agent_chat.return.toggle_item","value":"Sélectionner {{name}}"},{"key":"agent_chat.return.select_item_non_returnable","value":"{{name}}, non retournable"},{"key":"agent_chat.return.quantity_label","value":"Quantité à retourner"},{"key":"agent_chat.return.reason_label","value":"Motif de retour"},{"key":"agent_chat.return.reason_placeholder","value":"Sélectionner un motif"},{"key":"agent_chat.return.confirm","value":"Demander un retour"},{"key":"agent_chat.return.confirmed","value":"Retour demandé"},{"key":"agent_chat.return.reason.size_too_small","value":"Taille trop petite"},{"key":"agent_chat.return.reason.size_too_large","value":"Taille trop grande"},{"key":"agent_chat.return.reason.unwanted","value":"Non désiré"},{"key":"agent_chat.return.reason.not_as_described","value":"Non conforme à la description"},{"key":"agent_chat.return.reason.wrong_item","value":"Mauvais article"},{"key":"agent_chat.return.reason.defective","value":"Défectueux"},{"key":"agent_chat.return.reason.style","value":"Style"},{"key":"agent_chat.return.reason.color","value":"Couleur"},{"key":"agent_chat.return.reason.other_reason","value":"Autre"},{"key":"agent_chat.scroll.previous","value":"Précédent"},{"key":"agent_chat.scroll.next","value":"Suivant"}]}</script>
<meta name="shopify-y" content="00000000-0000-0000-5000-000000000000" data-expiration="1823727595000"><meta name="shopify-s" content="00000000-0000-0000-5000-000000000000" data-expiration="1792171795000">
</head>
<body id="guides-sur-les-truffes-truffes-blanches-et-noires" class="no-touchevents
template-blog template-blog-blog-truffle-guides
">
<script type="text/javascript">
if ( 'ontouchstart' in window || window.DocumentTouch && document instanceof DocumentTouch ) { document.querySelector('body').classList.remove('no-touchevents'); document.querySelector('body').classList.add('touchevents'); }
</script>
<a href="#main" class="visually-hidden skip-to-content" tabindex="0" data-js-inert>Passer au contenu</a>
<div id="screen-reader-info" aria-live="polite" class="visually-hidden"></div>
<header>
<link href="//www.terra-ross.fr/cdn/shop/t/27/assets/section-header.css?v=38854884185764721981786777741" rel="stylesheet" type="text/css" media="all" />
<!-- BEGIN sections: header-group -->
<div id="shopify-section-sections--28394383573314__announcement" class="shopify-section shopify-section-group-header-group mount-announcement-bar"><script src="//www.terra-ross.fr/cdn/shop/t/27/assets/section-announcement-bar.js?v=16459133832327406681786777739" defer></script><announcement-bar
id="announcement-sections--28394383573314__announcement"
style="display:block"
data-js-inert
data-autoplay="true"
data-autoplay-interval="6000"
>
<div class="container--large">
<div class="announcement-bar">
<div class="announcement-bar__social-icons lap-hide"></div>
<div class="announcement-bar__content"><button
class="announcement-bar__content-nav announcement-bar__content-nav--left announcement-bar__content-nav--disabled"
tabindex="0"
>
<span class="visually-hidden">Précédent</span><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></button><div class="announcement-bar__slider" data-js-slider><span class="announcement" ><a
href="/pages/b2b"
>NUMÉRO DE TVA UE VALIDE ? INSCRIVEZ-VOUS ICI POUR BÉNÉFICIER DE PRIX 20 % MOINS ÉLEVÉS
</a></span><span class="announcement" ><a
href="/pages/need-delivery-see-estimates"
>LIVRAISON GRATUITE: UE, ROYAUME-UNI ET SUISSE — POUR LES COMMANDES SUPÉRIEURES À 149 €
</a></span></div><button class="announcement-bar__content-nav announcement-bar__content-nav--right" tabindex="0">
<span class="visually-hidden">Suivant</span><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></button></div>
<div class="announcement-bar__localization-form lap-hide"><link href="//www.terra-ross.fr/cdn/shop/t/27/assets/component-localization-form.css?v=123939860244224298581789063618" rel="stylesheet" type="text/css" media="all" />
<form method="post" action="/localization" id="localization_form-ancmt" accept-charset="UTF-8" class="localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/blogs/truffle-guides" /><localization-form class="localization-form__item">
<span class="visually-hidden" id="currency-heading-ancmt">Pays/région</span>
<input type="hidden" name="country_code" id="CurrencySelector-ancmt" value="BE" />
<button class="localization-form__item-button" data-js-localization-form-button aria-expanded="false" aria-controls="country-list-ancmt" data-location="ancmt">
<span class="localization-form__item-text">
<span class="localization-form__country">Belgique</span><span class="localization-form__flag" style="
background-image: url(//cdn.shopify.com/static/images/flags/be.svg?width=20);
"></span><span class="localization-form__currency">EUR €</span>
</span>
<span class="localization-form__item-symbol" aria-hidden="true"><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></span>
</button>
<ul id="country-list-ancmt" class="localization-form__content" data-js-localization-form-content data-js-localization-form-insert-helper-content>
</ul>
</localization-form></form><script src="//www.terra-ross.fr/cdn/shop/t/27/assets/component-localization-form.js?v=93090086328802551921786777722" defer></script></div>
</div>
</div>
</announcement-bar>
<style data-shopify>
#announcement-sections--28394383573314__announcement .announcement-bar, #announcement-sections--28394383573314__announcement .announcement-bar a, #announcement-sections--28394383573314__announcement .announcement-bar .localization-form__item-text {
color: #ffffff;
}
#announcement-sections--28394383573314__announcement .announcement-bar svg *, #announcement-sections--28394383573314__announcement .announcement-bar .localization-form__item-symbol * {
fill: #ffffff;
}#announcement-sections--28394383573314__announcement, #announcement-sections--28394383573314__announcement .announcement-bar__content-nav {
background: #0b0a0a;
}</style>
</div><div id="shopify-section-sections--28394383573314__marquee_NEje4h" class="shopify-section shopify-section-group-header-group mount-scrolling-text">
</div><div id="shopify-section-sections--28394383573314__header" class="shopify-section shopify-section-group-header-group site-header-container mount-header"><style data-shopify>
.header__top {
--header-logo: 70px;
}
@media screen and (max-width: 767px) {
.header__top {
--header-logo: 40px;
}
#logo-sticky .logo-img {
--header-logo: 40px
}
}
@media screen and (min-width: 1751px) {
.site-nav.style--classic .submenu.mega-menu {
width: 100vw;
max-width: 100%;
margin-inline-start: 0;
}
}
</style>
<main-header
id="site-header"
class="site-header "
data-js-inert
data-sticky-header
>
<div class="header-container header-container--top hide-border-on-portable ">
<div class="header__top container--large">
<!-- logo -->
<div id="logo" class="logo"><a class="logo-img logo-img--mobile" title="Terra Ross" href="/"><img
src="//www.terra-ross.fr/cdn/shop/files/terra-ross-logo-mobile.fw.jpg?v=1766075497"
alt="Terra Ross"
width="600"
height="132"
style="width: 182px; object-fit:contain"
>
</a><a
class="logo-img logo-img--desk-only "
title="Terra Ross"
href="/"
style="height:var(--header-logo)"
><img
src="//www.terra-ross.fr/cdn/shop/files/new-logo-1.png?v=1736001697"
alt="Terra Ross"
width="600"
height="200"
style="width: 210px; object-fit:contain"
>
</a>
</div>
<!-- header blocks -->
<div class="header-actions header-actions--buttons header-actions--show-search portable-hide"><search-form style="position:relative">
<div class="button button--outline button--icon button--outline-hover button--no-padding button--no-hover site-search-handle">
<span class="button__icon" role="img" aria-hidden="true"><svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="10.5" cy="10.5" r="7.5" stroke="black" stroke-width="2" style="fill:none!important"/><path d="M17.1213 15.2929L16.4142 14.5858L15 16L15.7071 16.7071L17.1213 15.2929ZM19.2426 20.2426C19.6331 20.6332 20.2663 20.6332 20.6568 20.2426C21.0473 19.8521 21.0473 19.219 20.6568 18.8284L19.2426 20.2426ZM15.7071 16.7071L19.2426 20.2426L20.6568 18.8284L17.1213 15.2929L15.7071 16.7071Z" fill="black" style="stroke:none!important"/></svg></span>
<form action="/search" method="get" role="search" autocomplete="off">
<input
name="q"
type="search"
autocomplete="off"
placeholder="Rechercher..."
aria-label="Rechercher..."
data-js-search-input
data-js-focus-overlay="search-results-overlay-desktop"
>
<button type="submit" style="display:none">Soumettre</button>
</form>
</div>
<div
class="search-results-overlay"
id="search-results-overlay-desktop"
onclick="this.classList.remove('active')"
style="display:none"
></div>
<div class="search-results-container" data-js-search-results></div>
</search-form><span class="button button--outline button--icon button--account-handle">
<shopify-store store-domain="https://www.terra-ross.fr" country="BE" language="fr"></shopify-store>
<shopify-account menu="customer-account-main-menu">
<div slot="signed-out-avatar">
Compte
<span class="button__icon" role="img" aria-hidden="true"><svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M18.3333 19.25V17.4167C18.3333 16.4442 17.947 15.5116 17.2593 14.8239C16.5717 14.1363 15.6391 13.75 14.6666 13.75H7.33329C6.36083 13.75 5.4282 14.1363 4.74057 14.8239C4.05293 15.5116 3.66663 16.4442 3.66663 17.4167V19.25" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="fill:none!important"/><path d="M11 10.0833C13.0251 10.0833 14.6667 8.44171 14.6667 6.41667C14.6667 4.39162 13.0251 2.75 11 2.75C8.975 2.75 7.33337 4.39162 7.33337 6.41667C7.33337 8.44171 8.975 10.0833 11 10.0833Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="fill:none!important"/></svg></span>
</div>
</shopify-account>
</span><a
class="button button--solid button--icon no-js-hidden button--cart-handle"
data-js-sidebar-handle aria-expanded="false" aria-controls="site-cart-sidebar" role="button"
title="Ouvrir le panier"
tabindex="0"
>
<span class="visually-hidden">Ouvrir le panier</span>
<span class="button__icon" role="img" aria-hidden="true"><svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" style="margin-left:-2px"><path class="circle" d="M9.5 20C9.77614 20 10 19.7761 10 19.5C10 19.2239 9.77614 19 9.5 19C9.22386 19 9 19.2239 9 19.5C9 19.7761 9.22386 20 9.5 20Z" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path class="circle" d="M18.5 20C18.7761 20 19 19.7761 19 19.5C19 19.2239 18.7761 19 18.5 19C18.2239 19 18 19.2239 18 19.5C18 19.7761 18.2239 20 18.5 20Z" fill="white" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /><path d="M3 3H6.27273L8.46545 13.7117C8.54027 14.08 8.7452 14.4109 9.04436 14.6464C9.34351 14.8818 9.71784 15.0069 10.1018 14.9997H18.0545C18.4385 15.0069 18.8129 14.8818 19.112 14.6464C19.4112 14.4109 19.6161 14.08 19.6909 13.7117L21 6.9999H7.09091" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="fill:none !important"/></svg></span>
<span class="visually-hidden">Panier
Total:</span
>
<span data-header-cart-total>€0,00</span>
<span data-header-cart-count class="element--wrap-paranth" aria-hidden="true">0</span>
<span class="visually-hidden"> produit dans votre panier</span>
</a>
<noscript>
<a
class="button button--solid button--icon button--regular data-js-hidden"
href="/cart"
tabindex="0"
>
<span class="button__icon" role="img" aria-hidden="true"><svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" style="margin-left:-2px"><path class="circle" d="M9.5 20C9.77614 20 10 19.7761 10 19.5C10 19.2239 9.77614 19 9.5 19C9.22386 19 9 19.2239 9 19.5C9 19.7761 9.22386 20 9.5 20Z" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path class="circle" d="M18.5 20C18.7761 20 19 19.7761 19 19.5C19 19.2239 18.7761 19 18.5 19C18.2239 19 18 19.2239 18 19.5C18 19.7761 18.2239 20 18.5 20Z" fill="white" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /><path d="M3 3H6.27273L8.46545 13.7117C8.54027 14.08 8.7452 14.4109 9.04436 14.6464C9.34351 14.8818 9.71784 15.0069 10.1018 14.9997H18.0545C18.4385 15.0069 18.8129 14.8818 19.112 14.6464C19.4112 14.4109 19.6161 14.08 19.6909 13.7117L21 6.9999H7.09091" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="fill:none !important"/></svg></span>
<span data-header-cart-total aria-hidden="true">€0,00</span
> (<span data-header-cart-count aria-hidden="true">0</span>)
</a>
</noscript>
</div>
<div class="mobile-header-left hide portable-show">
<button
data-js-sidebar-handle
class="mobile-menu-button"
aria-expanded="false"
aria-controls="site-menu-sidebar"
>
<span class="visually-hidden">Ouvrir le menu</span><svg fill="none" height="16" viewBox="0 0 20 16" width="20" xmlns="http://www.w3.org/2000/svg"><g fill="#000"><path d="m0 0h20v2h-20z"/><path d="m0 7h20v2h-20z"/><path d="m0 14h20v2h-20z"/></g></svg></button>
<button
type="button"
class="mobile-search-button"
data-header-mobile-search-toggle
aria-expanded="false"
aria-controls="header-mobile-search"
>
<span class="visually-hidden">Recherche ouverte</span><svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="10.5" cy="10.5" r="7.5" stroke="black" stroke-width="2" style="fill:none!important"/><path d="M17.1213 15.2929L16.4142 14.5858L15 16L15.7071 16.7071L17.1213 15.2929ZM19.2426 20.2426C19.6331 20.6332 20.2663 20.6332 20.6568 20.2426C21.0473 19.8521 21.0473 19.219 20.6568 18.8284L19.2426 20.2426ZM15.7071 16.7071L19.2426 20.2426L20.6568 18.8284L17.1213 15.2929L15.7071 16.7071Z" fill="black" style="stroke:none!important"/></svg></button>
</div>
<div class="mobile-header-actions hide portable-show"><span class="mobile-account-button">
<shopify-account menu="customer-account-main-menu">
<div slot="signed-out-avatar">
<span class="button__icon" role="img" aria-hidden="true"><svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M18.3333 19.25V17.4167C18.3333 16.4442 17.947 15.5116 17.2593 14.8239C16.5717 14.1363 15.6391 13.75 14.6666 13.75H7.33329C6.36083 13.75 5.4282 14.1363 4.74057 14.8239C4.05293 15.5116 3.66663 16.4442 3.66663 17.4167V19.25" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="fill:none!important"/><path d="M11 10.0833C13.0251 10.0833 14.6667 8.44171 14.6667 6.41667C14.6667 4.39162 13.0251 2.75 11 2.75C8.975 2.75 7.33337 4.39162 7.33337 6.41667C7.33337 8.44171 8.975 10.0833 11 10.0833Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="fill:none!important"/></svg></span>
</div>
</shopify-account>
</span><a
data-js-sidebar-handle aria-expanded="false" aria-controls="site-cart-sidebar" role="button"
class="mobile-cart-button"
title="Ouvrir le panier"
tabindex="0"
>
<span class="visually-hidden">Ouvrir le panier</span><svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg" style="margin-left:-2px"><path class="circle" d="M9.5 20C9.77614 20 10 19.7761 10 19.5C10 19.2239 9.77614 19 9.5 19C9.22386 19 9 19.2239 9 19.5C9 19.7761 9.22386 20 9.5 20Z" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path class="circle" d="M18.5 20C18.7761 20 19 19.7761 19 19.5C19 19.2239 18.7761 19 18.5 19C18.2239 19 18 19.2239 18 19.5C18 19.7761 18.2239 20 18.5 20Z" fill="white" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /><path d="M3 3H6.27273L8.46545 13.7117C8.54027 14.08 8.7452 14.4109 9.04436 14.6464C9.34351 14.8818 9.71784 15.0069 10.1018 14.9997H18.0545C18.4385 15.0069 18.8129 14.8818 19.112 14.6464C19.4112 14.4109 19.6161 14.08 19.6909 13.7117L21 6.9999H7.09091" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="fill:none !important"/></svg><span data-header-cart-count aria-hidden="true">0</span>
</a>
</div>
</div>
</div>
<!-- header menu --><div
class="
header-container header-container--bottom
portable-hide
"
>
<div class="header__bottom container--large">
<span class="scrollable-navigation-button scrollable-navigation-button--left" aria-hidden="true"><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></span>
<scrollable-navigation class="header-links"><div class="site-nav style--classic">
<div class="site-nav-container">
<nav><ul class="link-list"><li
class="has-submenu"
id="menu-item-fresh-truffles-classic"
>
<a
class="menu-link "
href="/collections/fresh-truffles-in-season"
aria-controls="SiteNavLabel-fresh-truffles-classic" aria-expanded="false" aria-haspopup="true"
>
<span><span class="text-animation--underline-in-header">Truffes fraîches</span></span>
<span class="icon"><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></span>
</a>
<ul
class="submenu normal-menu "
id="SiteNavLabel-fresh-truffles-classic"
>
<div class="submenu-holder "><li
><a class="menu-link no-focus-link "
href="/collections/fresh-truffles-in-season"
>
<span><span class="text-animation--underline-in-header">Produits de saison</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/seasonal-truffles-online"
>
<span><span class="text-animation--underline-in-header">Toutes les espèces de truffes fraîches</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/tuber-magnatum-white-truffles"
>
<span><span class="text-animation--underline-in-header">Truffe blanche | Tuber magnatum</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/spring-white-truffle-tuber-borchii"
>
<span><span class="text-animation--underline-in-header">Truffe blanche de printemps | Tuber borchii</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/terra-ross-black-diamond-truffle-tuber-melanosporum"
>
<span><span class="text-animation--underline-in-header">Truffe noire | Tuber melanosporum</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/burgundy-truffle-tuber-uncinatum-collection"
>
<span><span class="text-animation--underline-in-header">Truffe d'automne | Tuber uncinatum</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/tuber-aestivum-black-summer-truffle"
>
<span><span class="text-animation--underline-in-header">Truffe d'été | Tuber aestivum</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/winter-truffle-tuber-brumale"
>
<span><span class="text-animation--underline-in-header">Truffe noire d'hiver | Tuber brumale</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/tuber-macrosporum-garlic-truffle"
>
<span><span class="text-animation--underline-in-header">Truffe noire lisse | Tuber macrosporum</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/bagnoli-truffle-tuber-mesentericum-powerful-phenolic-aroma"
>
<span><span class="text-animation--underline-in-header">Truffe Bagnoli | Tuber mesentericum</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/chinese-black-truffles-tuber-indicum"
>
<span><span class="text-animation--underline-in-header">Truffe noire chinoise | Tuber indicum</span></span></a></li></div>
</ul>
</li><li
id="menu-item-frozen-truffles-classic"
>
<a
class="menu-link no-focus-link "
href="/collections/frozen-truffles"
>
<span><span class="text-animation--underline-in-header">Truffes surgelées</span></span>
</a>
</li><li
class="has-submenu"
id="menu-item-truffle-products-classic"
>
<a
class="menu-link "
href="/collections/exquisite-truffle-products-online"
aria-controls="SiteNavLabel-truffle-products-classic" aria-expanded="false" aria-haspopup="true"
>
<span><span class="text-animation--underline-in-header">Produits à base de truffes</span></span>
<span class="icon"><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></span>
</a>
<ul
class="submenu normal-menu "
id="SiteNavLabel-truffle-products-classic"
>
<div class="submenu-holder "><li
><a class="menu-link no-focus-link "
href="/collections/exquisite-truffle-products-online"
>
<span><span class="text-animation--underline-in-header">Tous les produits à base de truffes</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/dried-truffle-delights"
>
<span><span class="text-animation--underline-in-header">Truffes et champignons séchés</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/gourmet-truffle-gift-sets"
>
<span><span class="text-animation--underline-in-header">Cadeaux à la truffe et cartes-cadeaux</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/products/truffle-gift-card"
>
<span><span class="text-animation--underline-in-header">Carte cadeau truffe</span></span></a></li></div>
</ul>
</li><li
id="menu-item-wholesale-classic"
>
<a
class="menu-link no-focus-link "
href="/collections/premium-truffle-products-for-restaurants-b2b-clients"
>
<span><span class="text-animation--underline-in-header">Vente en gros</span></span>
</a>
</li><li
id="menu-item-dog-training-classic"
>
<a
class="menu-link no-focus-link "
href="/collections/truffle-hunting-dog-training"
>
<span><span class="text-animation--underline-in-header">Dressage canin</span></span>
</a>
</li><li
class="has-submenu"
id="menu-item-knowledge-center-classic"
>
<a
class="menu-link active "
href="/blogs/truffle-guides"
aria-controls="SiteNavLabel-knowledge-center-classic" aria-expanded="false" aria-haspopup="true"
>
<span><span class="text-animation--underline-in-header">Centre de connaissances</span></span>
<span class="icon"><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></span>
</a>
<ul
class="submenu normal-menu "
id="SiteNavLabel-knowledge-center-classic"
>
<div class="submenu-holder "><li
><a class="menu-link active no-focus-link "
href="/blogs/truffle-guides"
>
<span><span class="text-animation--underline-in-header">Guides sur la truffe</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/blogs/buying-guides"
>
<span><span class="text-animation--underline-in-header">Guides d'achat</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/blogs/storage-guides"
>
<span><span class="text-animation--underline-in-header">Guides de conservation</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/blogs/recipes"
>
<span><span class="text-animation--underline-in-header">Recettes</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/blogs/market-guides"
>
<span><span class="text-animation--underline-in-header">Guides des marchés</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/blogs/food-manufacturing-guides"
>
<span><span class="text-animation--underline-in-header">Guides de fabrication alimentaire</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/blogs/dog-training"
>
<span><span class="text-animation--underline-in-header">Guides de dressage canin</span></span></a></li></div>
</ul>
</li><!---->
</ul></nav>
</div>
</div></scrollable-navigation>
<span class="scrollable-navigation-button scrollable-navigation-button--right" aria-hidden="true"><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></span>
<div class="header-actions header-actions--blocks" data-js-header-actions>
<a href="/pages/b2b" target="_self" id="site-header-block-1" class="header-info-block"
data-type="info"><div class="header-info-block__image"><img src="//www.terra-ross.fr/cdn/shop/files/purchase-order-256.webp?crop=center&height=76&v=1786874043&width=76" width="256" height="256" style="width:38px;height:38px" alt="Illustration vectorielle minimaliste en noir et blanc d'une liste de contrôle, comportant cinq barres horizontales aux extrémités rectangulaires arrondies et deux petites coches ovales sur chaque barre, sur fond blanc uni."></div><div class="header-info-block__text"><span class="header-info-block__caption text-size--xsmall">Entreprise ?</span><span class="header-info-block__title">
<span class="text-animation--underline-in-header" >B2B et vente en gros</span>
</span></div></a>
<a href="/pages/faqs" target="_self" id="site-header-block-2" class="header-info-block"
data-type="info"><div class="header-info-block__image"><img src="//www.terra-ross.fr/cdn/shop/files/support-256.png?crop=center&height=76&v=1737989943&width=76" width="256" height="256" style="width:38px;height:38px" alt="Icône « Une question ? »"></div><div class="header-info-block__text"><span class="header-info-block__caption text-size--xsmall">FAQ</span><span class="header-info-block__title">
<span class="text-animation--underline-in-header" >Besoin d’aide ?</span>
</span></div></a>
</div>
</div>
</div>
<!-- header mobile search --><div
id="header-mobile-search"
class="
header-container header--container--bottom container--large mobile-search
mobile-search--compact hide
"
data-header-mobile-search-panel
>
<search-form style="position:relative">
<div class="button button--outline button--icon button--outline-hover button--no-padding button--no-hover site-search-handle">
<form action="/search" method="get" role="search" autocomplete="off">
<input
name="q"
type="search"
autocomplete="off"
placeholder="Rechercher..."
aria-label="Rechercher..."
data-js-search-input
data-js-focus-overlay="search-results-overlay-mobile"
>
<button type="submit" style="display:none">Soumettre</button>
</form>
</div>
<div
id="search-results-overlay-mobile"
class="search-results-overlay"
onclick="this.classList.remove('active')"
style="display:none"
></div>
<div class="search-results-container" data-js-search-results></div>
</search-form>
</div></main-header>
<sidebar-drawer
id="site-menu-sidebar"
class="sidebar sidebar--left"
tabindex="-1"
role="dialog"
aria-modal="true"
aria-hidden="true"
style="display:none"
>
<div class="sidebar__header">
<span class="sidebar__title h5">
Menu
</span>
<button class="sidebar__close" data-js-close>
<span class="visually-hidden">Fermer la barre latérale</span>
<span aria-hidden="true"><svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M17 1L1 17" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M1 1L17 17" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></span>
</button>
</div>
<div class="sidebar__body">
<mobile-navigation data-show-header-actions="true"><div class="site-nav style--sidebar">
<div class="site-nav-container">
<nav><ul class="link-list"><li
class="has-submenu"
id="menu-item-fresh-truffles-sidebar"
>
<a
class="menu-link "
href="/collections/fresh-truffles-in-season"
aria-controls="SiteNavLabel-fresh-truffles-sidebar" aria-expanded="false" aria-haspopup="true"
>
<span><span class="">Truffes fraîches</span></span>
<span class="icon"><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></span>
</a>
<ul
class="submenu normal-menu "
id="SiteNavLabel-fresh-truffles-sidebar"
>
<div class="submenu-holder "><li class="submenu-back">
<button type="button">
<span class="icon" aria-hidden="true"><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></span>
Retour
</button>
</li><li
><a class="menu-link no-focus-link "
href="/collections/fresh-truffles-in-season"
>
<span><span class="">Produits de saison</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/seasonal-truffles-online"
>
<span><span class="">Toutes les espèces de truffes fraîches</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/tuber-magnatum-white-truffles"
>
<span><span class="">Truffe blanche | Tuber magnatum</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/spring-white-truffle-tuber-borchii"
>
<span><span class="">Truffe blanche de printemps | Tuber borchii</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/terra-ross-black-diamond-truffle-tuber-melanosporum"
>
<span><span class="">Truffe noire | Tuber melanosporum</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/burgundy-truffle-tuber-uncinatum-collection"
>
<span><span class="">Truffe d'automne | Tuber uncinatum</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/tuber-aestivum-black-summer-truffle"
>
<span><span class="">Truffe d'été | Tuber aestivum</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/winter-truffle-tuber-brumale"
>
<span><span class="">Truffe noire d'hiver | Tuber brumale</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/tuber-macrosporum-garlic-truffle"
>
<span><span class="">Truffe noire lisse | Tuber macrosporum</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/bagnoli-truffle-tuber-mesentericum-powerful-phenolic-aroma"
>
<span><span class="">Truffe Bagnoli | Tuber mesentericum</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/chinese-black-truffles-tuber-indicum"
>
<span><span class="">Truffe noire chinoise | Tuber indicum</span></span></a></li></div>
</ul>
</li><li
id="menu-item-frozen-truffles-sidebar"
>
<a
class="menu-link no-focus-link "
href="/collections/frozen-truffles"
>
<span><span class="">Truffes surgelées</span></span>
</a>
</li><li
class="has-submenu"
id="menu-item-truffle-products-sidebar"
>
<a
class="menu-link "
href="/collections/exquisite-truffle-products-online"
aria-controls="SiteNavLabel-truffle-products-sidebar" aria-expanded="false" aria-haspopup="true"
>
<span><span class="">Produits à base de truffes</span></span>
<span class="icon"><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></span>
</a>
<ul
class="submenu normal-menu "
id="SiteNavLabel-truffle-products-sidebar"
>
<div class="submenu-holder "><li class="submenu-back">
<button type="button">
<span class="icon" aria-hidden="true"><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></span>
Retour
</button>
</li><li
><a class="menu-link no-focus-link "
href="/collections/exquisite-truffle-products-online"
>
<span><span class="">Tous les produits à base de truffes</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/dried-truffle-delights"
>
<span><span class="">Truffes et champignons séchés</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/collections/gourmet-truffle-gift-sets"
>
<span><span class="">Cadeaux à la truffe et cartes-cadeaux</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/products/truffle-gift-card"
>
<span><span class="">Carte cadeau truffe</span></span></a></li></div>
</ul>
</li><li
id="menu-item-wholesale-sidebar"
>
<a
class="menu-link no-focus-link "
href="/collections/premium-truffle-products-for-restaurants-b2b-clients"
>
<span><span class="">Vente en gros</span></span>
</a>
</li><li
id="menu-item-dog-training-sidebar"
>
<a
class="menu-link no-focus-link "
href="/collections/truffle-hunting-dog-training"
>
<span><span class="">Dressage canin</span></span>
</a>
</li><li
class="has-submenu"
id="menu-item-knowledge-center-sidebar"
>
<a
class="menu-link active "
href="/blogs/truffle-guides"
aria-controls="SiteNavLabel-knowledge-center-sidebar" aria-expanded="false" aria-haspopup="true"
>
<span><span class="">Centre de connaissances</span></span>
<span class="icon"><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></span>
</a>
<ul
class="submenu normal-menu "
id="SiteNavLabel-knowledge-center-sidebar"
>
<div class="submenu-holder "><li class="submenu-back">
<button type="button">
<span class="icon" aria-hidden="true"><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></span>
Retour
</button>
</li><li
><a class="menu-link active no-focus-link "
href="/blogs/truffle-guides"
>
<span><span class="">Guides sur la truffe</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/blogs/buying-guides"
>
<span><span class="">Guides d'achat</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/blogs/storage-guides"
>
<span><span class="">Guides de conservation</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/blogs/recipes"
>
<span><span class="">Recettes</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/blogs/market-guides"
>
<span><span class="">Guides des marchés</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/blogs/food-manufacturing-guides"
>
<span><span class="">Guides de fabrication alimentaire</span></span></a></li><li
><a class="menu-link no-focus-link "
href="/blogs/dog-training"
>
<span><span class="">Guides de dressage canin</span></span></a></li></div>
</ul>
</li><!--<li id="menu-item-account">
<a class="menu-link" href="https://www.terra-ross.fr/customer_authentication/redirect?locale=fr®ion_country=BE" title="Compte">
<span style="display: inline-flex; align-items: center;">
<span aria-hidden="true" style="display:flex; margin-inline-end:6px;"><svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M18.3333 19.25V17.4167C18.3333 16.4442 17.947 15.5116 17.2593 14.8239C16.5717 14.1363 15.6391 13.75 14.6666 13.75H7.33329C6.36083 13.75 5.4282 14.1363 4.74057 14.8239C4.05293 15.5116 3.66663 16.4442 3.66663 17.4167V19.25" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="fill:none!important"/><path d="M11 10.0833C13.0251 10.0833 14.6667 8.44171 14.6667 6.41667C14.6667 4.39162 13.0251 2.75 11 2.75C8.975 2.75 7.33337 4.39162 7.33337 6.41667C7.33337 8.44171 8.975 10.0833 11 10.0833Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="fill:none!important"/></svg></span>
Compte
</span>
</a>
</li>-->
</ul></nav>
</div>
</div></mobile-navigation>
</div>
<div class="sidebar__footer site-menu-sidebar-footer"><link href="//www.terra-ross.fr/cdn/shop/t/27/assets/component-localization-form.css?v=123939860244224298581789063618" rel="stylesheet" type="text/css" media="all" />
<form method="post" action="/localization" id="localization_form-header" accept-charset="UTF-8" class="localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/blogs/truffle-guides" /><localization-form class="localization-form__item">
<span class="visually-hidden" id="currency-heading-header">Pays/région</span>
<input type="hidden" name="country_code" id="CurrencySelector-header" value="BE" />
<button class="localization-form__item-button" data-js-localization-form-button aria-expanded="false" aria-controls="country-list-header" data-location="header">
<span class="localization-form__item-text">
<span class="localization-form__country">Belgique</span><span class="localization-form__flag" style="
background-image: url(//cdn.shopify.com/static/images/flags/be.svg?width=20);
"></span><span class="localization-form__currency">EUR €</span>
</span>
<span class="localization-form__item-symbol" aria-hidden="true"><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></span>
</button>
<ul id="country-list-header" class="localization-form__content" data-js-localization-form-content data-js-localization-form-insert-helper-content>
</ul>
</localization-form></form><script src="//www.terra-ross.fr/cdn/shop/t/27/assets/component-localization-form.js?v=93090086328802551921786777722" defer></script></div>
<link
rel="stylesheet"
href="//www.terra-ross.fr/cdn/shop/t/27/assets/component-mobile-navigation.css?v=156292183670265648561789060149"
media="print"
onload="this.media='all'"
>
</sidebar-drawer>
<style> #shopify-section-sections--28394383573314__header h2 {font-size: 28px;} #shopify-section-sections--28394383573314__header h3 {font-size: 24px;} #shopify-section-sections--28394383573314__header h4 {font-size: 20px;} #shopify-section-sections--28394383573314__header h5 {font-size: 18px;} </style></div>
<!-- END sections: header-group --></header>
<link href="//www.terra-ross.fr/cdn/shop/t/27/assets/component-slider.css?v=20392564870709467991789102548" rel="stylesheet" type="text/css" media="all" />
<link href="//www.terra-ross.fr/cdn/shop/t/27/assets/component-video.css?v=61547995474515706101786777737" rel="stylesheet" type="text/css" media="all" />
<script src="//www.terra-ross.fr/cdn/shop/t/27/assets/component-product-form.js?v=118387121960085889251786777726" defer></script>
<main id="main" class="main-content
main-content--align-product-items
"><div class="breadcrumb-main ">
<div class="breadcrumb-container">
<link href="//www.terra-ross.fr/cdn/shop/t/27/assets/component-breadcrumb.css?v=111254562021816194791786777715" rel="stylesheet" type="text/css" media="all" />
<nav class="breadcrumb" role="navigation" aria-label="breadcrumbs">
<span class="breadcrumb__link"><a href="/">Accueil</a></span><span class="breadcrumb__separator">/</span><span class="breadcrumb__link"><a href="/blogs/truffle-guides">Guides sur la Truffe</a></span></nav>
</div>
</div><div id="shopify-section-template--28394380951874__main" class="shopify-section"><link href="//www.terra-ross.fr/cdn/shop/t/27/assets/component-blog-item.css?v=165969672717598901641786777715" rel="stylesheet" type="text/css" media="all" />
<div class="container--large container--vertical-space-small">
<div
class="gutter-bottom--page"
>
<h1 class="title h2">Guides sur la Truffe</h1>
</div><div class="grid grid--layout grid-2 grid-lap-1 grid--gap-bottom"><div class="blog-item
spacing--large
remove-empty-space"><a class="blog-item__image element--has-border element--border-radius increased-spacing" href="/blogs/truffle-guides/tuber-mesentericum" title="Truffe de Bagnoli (Tuber mesentericum) : Saison, arôme et identification"><figure
class="lazy-image lazy-image--animation element--border-radius
"
data-ratio="1.33333" style="padding-top: 75.00018750046875%"
data-crop="false"
>
<img
src="//www.terra-ross.fr/cdn/shop/articles/tuber-mesentericum-species-guide-1600x900_df3894f6-a589-4f95-ba97-e0f238cc9fb5.webp?v=1787752795&width=480" alt="Truffe de Bagnoli (Tuber mesentericum) : Saison, arôme et identification"
srcset="//www.terra-ross.fr/cdn/shop/articles/tuber-mesentericum-species-guide-1600x900_df3894f6-a589-4f95-ba97-e0f238cc9fb5.webp?crop=center&height=180&v=1787752795&width=240 240w,//www.terra-ross.fr/cdn/shop/articles/tuber-mesentericum-species-guide-1600x900_df3894f6-a589-4f95-ba97-e0f238cc9fb5.webp?crop=center&height=270&v=1787752795&width=360 360w,//www.terra-ross.fr/cdn/shop/articles/tuber-mesentericum-species-guide-1600x900_df3894f6-a589-4f95-ba97-e0f238cc9fb5.webp?crop=center&height=315&v=1787752795&width=420 420w,//www.terra-ross.fr/cdn/shop/articles/tuber-mesentericum-species-guide-1600x900_df3894f6-a589-4f95-ba97-e0f238cc9fb5.webp?crop=center&height=360&v=1787752795&width=480 480w,//www.terra-ross.fr/cdn/shop/articles/tuber-mesentericum-species-guide-1600x900_df3894f6-a589-4f95-ba97-e0f238cc9fb5.webp?crop=center&height=480&v=1787752795&width=640 640w,//www.terra-ross.fr/cdn/shop/articles/tuber-mesentericum-species-guide-1600x900_df3894f6-a589-4f95-ba97-e0f238cc9fb5.webp?crop=center&height=510&v=1787752795&width=680 680w,//www.terra-ross.fr/cdn/shop/articles/tuber-mesentericum-species-guide-1600x900_df3894f6-a589-4f95-ba97-e0f238cc9fb5.webp?crop=center&height=540&v=1787752795&width=720 720w,//www.terra-ross.fr/cdn/shop/articles/tuber-mesentericum-species-guide-1600x900_df3894f6-a589-4f95-ba97-e0f238cc9fb5.webp?crop=center&height=630&v=1787752795&width=840 840w,//www.terra-ross.fr/cdn/shop/articles/tuber-mesentericum-species-guide-1600x900_df3894f6-a589-4f95-ba97-e0f238cc9fb5.webp?crop=center&height=810&v=1787752795&width=1080 1080w"
class="img"
width="1600"
height="900"
data-ratio="1.33333"
sizes="(max-width: 767px) 100vw, (max-width: 1750px) 50vw, calc(1750px / 2)"
style="
"
onload="this.parentNode.classList.add('lazyloaded')"
/>
</figure></a><div class="blog-item__title-holder" >
<a href="/blogs/truffle-guides/tuber-mesentericum" title="Truffe de Bagnoli (Tuber mesentericum) : Saison, arôme et identification">
<span class=" text-size--xlarge text-line-height--small text-weight--bold text-animation--underline">Truffe de Bagnoli (Tuber mesentericum) : Saison, arôme et identification</span>
</a>
</div><div class="blog-item__meta text-color--opacity" ></div><div class="blog-item__excerpt" >
<span class="element--is-inline-block">Un guide factuel sur la truffe de Bagnoli (Tuber mesentericum), expliquant la terminologie de la truffe de Bagnoli, la révision taxonomique en trois espèces, la morphologie, la microscopie, l’écologie, la saison, l’arôme et l’authentification responsable.</span>
</div></div><div class="blog-item
spacing--large
remove-empty-space"><a class="blog-item__image element--has-border element--border-radius increased-spacing" href="/blogs/truffle-guides/tuber-macrosporum" title="Guide de Tuber macrosporum"><figure
class="lazy-image lazy-image--animation element--border-radius
"
data-ratio="1.33333" style="padding-top: 75.00018750046875%"
data-crop="false"
>
<img
src="//www.terra-ross.fr/cdn/shop/articles/tuber-macrosporum-species-guide-1600x900_e365c8c8-fce8-401c-9b89-d2b76bb5b3c3.webp?v=1786948597&width=480" alt="Guide de Tuber macrosporum"
srcset="//www.terra-ross.fr/cdn/shop/articles/tuber-macrosporum-species-guide-1600x900_e365c8c8-fce8-401c-9b89-d2b76bb5b3c3.webp?crop=center&height=180&v=1786948597&width=240 240w,//www.terra-ross.fr/cdn/shop/articles/tuber-macrosporum-species-guide-1600x900_e365c8c8-fce8-401c-9b89-d2b76bb5b3c3.webp?crop=center&height=270&v=1786948597&width=360 360w,//www.terra-ross.fr/cdn/shop/articles/tuber-macrosporum-species-guide-1600x900_e365c8c8-fce8-401c-9b89-d2b76bb5b3c3.webp?crop=center&height=315&v=1786948597&width=420 420w,//www.terra-ross.fr/cdn/shop/articles/tuber-macrosporum-species-guide-1600x900_e365c8c8-fce8-401c-9b89-d2b76bb5b3c3.webp?crop=center&height=360&v=1786948597&width=480 480w,//www.terra-ross.fr/cdn/shop/articles/tuber-macrosporum-species-guide-1600x900_e365c8c8-fce8-401c-9b89-d2b76bb5b3c3.webp?crop=center&height=480&v=1786948597&width=640 640w,//www.terra-ross.fr/cdn/shop/articles/tuber-macrosporum-species-guide-1600x900_e365c8c8-fce8-401c-9b89-d2b76bb5b3c3.webp?crop=center&height=510&v=1786948597&width=680 680w,//www.terra-ross.fr/cdn/shop/articles/tuber-macrosporum-species-guide-1600x900_e365c8c8-fce8-401c-9b89-d2b76bb5b3c3.webp?crop=center&height=540&v=1786948597&width=720 720w,//www.terra-ross.fr/cdn/shop/articles/tuber-macrosporum-species-guide-1600x900_e365c8c8-fce8-401c-9b89-d2b76bb5b3c3.webp?crop=center&height=630&v=1786948597&width=840 840w,//www.terra-ross.fr/cdn/shop/articles/tuber-macrosporum-species-guide-1600x900_e365c8c8-fce8-401c-9b89-d2b76bb5b3c3.webp?crop=center&height=810&v=1786948597&width=1080 1080w"
class="img"
width="1600"
height="900"
data-ratio="1.33333"
sizes="(max-width: 767px) 100vw, (max-width: 1750px) 50vw, calc(1750px / 2)"
style="
"
onload="this.parentNode.classList.add('lazyloaded')"
/>
</figure></a><div class="blog-item__title-holder" >
<a href="/blogs/truffle-guides/tuber-macrosporum" title="Guide de Tuber macrosporum">
<span class=" text-size--xlarge text-line-height--small text-weight--bold text-animation--underline">Guide de Tuber macrosporum</span>
</a>
</div><div class="blog-item__meta text-color--opacity" ></div><div class="blog-item__excerpt" >
<span class="element--is-inline-block">Guide factuel sur la Tuber macrosporum, la truffe noire lisse, couvrant son identification reconnue, la terminologie italienne, sa morphologie, la microscopie, son habitat, ses hôtes, sa saison, son arôme, sa culture et son identification responsable.</span>
</div></div><div class="blog-item
spacing--large
remove-empty-space"><a class="blog-item__image element--has-border element--border-radius increased-spacing" href="/blogs/truffle-guides/tuber-uncinatum" title="Guide de Tuber uncinatum"><figure
class="lazy-image lazy-image--animation element--border-radius
"
data-ratio="1.33333" style="padding-top: 75.00018750046875%"
data-crop="false"
>
<img
src="//www.terra-ross.fr/cdn/shop/articles/tuber-uncinatum-species-guide-hero.webp?v=1786948612&width=480" alt="Guide de Tuber uncinatum"
srcset="//www.terra-ross.fr/cdn/shop/articles/tuber-uncinatum-species-guide-hero.webp?crop=center&height=180&v=1786948612&width=240 240w,//www.terra-ross.fr/cdn/shop/articles/tuber-uncinatum-species-guide-hero.webp?crop=center&height=270&v=1786948612&width=360 360w,//www.terra-ross.fr/cdn/shop/articles/tuber-uncinatum-species-guide-hero.webp?crop=center&height=315&v=1786948612&width=420 420w,//www.terra-ross.fr/cdn/shop/articles/tuber-uncinatum-species-guide-hero.webp?crop=center&height=360&v=1786948612&width=480 480w,//www.terra-ross.fr/cdn/shop/articles/tuber-uncinatum-species-guide-hero.webp?crop=center&height=480&v=1786948612&width=640 640w,//www.terra-ross.fr/cdn/shop/articles/tuber-uncinatum-species-guide-hero.webp?crop=center&height=510&v=1786948612&width=680 680w,//www.terra-ross.fr/cdn/shop/articles/tuber-uncinatum-species-guide-hero.webp?crop=center&height=540&v=1786948612&width=720 720w,//www.terra-ross.fr/cdn/shop/articles/tuber-uncinatum-species-guide-hero.webp?crop=center&height=630&v=1786948612&width=840 840w,//www.terra-ross.fr/cdn/shop/articles/tuber-uncinatum-species-guide-hero.webp?crop=center&height=810&v=1786948612&width=1080 1080w"
class="img"
width="1600"
height="900"
data-ratio="1.33333"
sizes="(max-width: 767px) 100vw, (max-width: 1750px) 50vw, calc(1750px / 2)"
loading="lazy"
style="
"
onload="this.parentNode.classList.add('lazyloaded')"
/>
</figure></a><div class="blog-item__title-holder" >
<a href="/blogs/truffle-guides/tuber-uncinatum" title="Guide de Tuber uncinatum">
<span class=" text-size--xlarge text-line-height--small text-weight--bold text-animation--underline">Guide de Tuber uncinatum</span>
</a>
</div><div class="blog-item__meta text-color--opacity" ></div><div class="blog-item__excerpt" >
<span class="element--is-inline-block">Guide factuel sur la Tuber uncinatum, expliquant la terminologie relative aux truffes de Bourgogne et d'automne, leur lien avec la Tuber aestivum, leur morphologie, leur écologie, leur saison, leur arôme et leur identification responsable.</span>
</div></div><div class="blog-item
spacing--large
remove-empty-space"><a class="blog-item__image element--has-border element--border-radius increased-spacing" href="/blogs/truffle-guides/tuber-borchii" title="Guide de Tuber borchii"><figure
class="lazy-image lazy-image--animation element--border-radius
"
data-ratio="1.33333" style="padding-top: 75.00018750046875%"
data-crop="false"
>
<img
src="//www.terra-ross.fr/cdn/shop/articles/tuber-borchii-species-guide-1600x900.webp?v=1788585458&width=480" alt="Guide de Tuber borchii"
srcset="//www.terra-ross.fr/cdn/shop/articles/tuber-borchii-species-guide-1600x900.webp?crop=center&height=180&v=1788585458&width=240 240w,//www.terra-ross.fr/cdn/shop/articles/tuber-borchii-species-guide-1600x900.webp?crop=center&height=270&v=1788585458&width=360 360w,//www.terra-ross.fr/cdn/shop/articles/tuber-borchii-species-guide-1600x900.webp?crop=center&height=315&v=1788585458&width=420 420w,//www.terra-ross.fr/cdn/shop/articles/tuber-borchii-species-guide-1600x900.webp?crop=center&height=360&v=1788585458&width=480 480w,//www.terra-ross.fr/cdn/shop/articles/tuber-borchii-species-guide-1600x900.webp?crop=center&height=480&v=1788585458&width=640 640w,//www.terra-ross.fr/cdn/shop/articles/tuber-borchii-species-guide-1600x900.webp?crop=center&height=510&v=1788585458&width=680 680w,//www.terra-ross.fr/cdn/shop/articles/tuber-borchii-species-guide-1600x900.webp?crop=center&height=540&v=1788585458&width=720 720w,//www.terra-ross.fr/cdn/shop/articles/tuber-borchii-species-guide-1600x900.webp?crop=center&height=630&v=1788585458&width=840 840w,//www.terra-ross.fr/cdn/shop/articles/tuber-borchii-species-guide-1600x900.webp?crop=center&height=810&v=1788585458&width=1080 1080w"
class="img"
width="1600"
height="900"
data-ratio="1.33333"
sizes="(max-width: 767px) 100vw, (max-width: 1750px) 50vw, calc(1750px / 2)"
loading="lazy"
style="
"
onload="this.parentNode.classList.add('lazyloaded')"
/>
</figure></a><div class="blog-item__title-holder" >
<a href="/blogs/truffle-guides/tuber-borchii" title="Guide de Tuber borchii">
<span class=" text-size--xlarge text-line-height--small text-weight--bold text-animation--underline">Guide de Tuber borchii</span>
</a>
</div><div class="blog-item__meta text-color--opacity" ></div><div class="blog-item__excerpt" >
<span class="element--is-inline-block">Guide factuel sur Tuber borchii, de la terminologie et de l'écologie du bianchetto au contexte saisonnier, à la variation des arômes et à l'authentification responsable des espèces.</span>
</div></div><div class="blog-item
spacing--large
remove-empty-space"><a class="blog-item__image element--has-border element--border-radius increased-spacing" href="/blogs/truffle-guides/white-black-truffle-aroma-volatile-compounds" title="Qu'est-ce qui crée l'arôme des Truffes blanches et noires ?"><figure
class="lazy-image lazy-image--animation element--border-radius
"
data-ratio="1.33333" style="padding-top: 75.00018750046875%"
data-crop="false"
>
<img
src="//www.terra-ross.fr/cdn/shop/articles/tuber-magnatum-melanosporum-aroma-chemistry-hero.webp?v=1788466760&width=480" alt="Qu'est-ce qui crée l'arôme des Truffes blanches et noires ?"
srcset="//www.terra-ross.fr/cdn/shop/articles/tuber-magnatum-melanosporum-aroma-chemistry-hero.webp?crop=center&height=180&v=1788466760&width=240 240w,//www.terra-ross.fr/cdn/shop/articles/tuber-magnatum-melanosporum-aroma-chemistry-hero.webp?crop=center&height=270&v=1788466760&width=360 360w,//www.terra-ross.fr/cdn/shop/articles/tuber-magnatum-melanosporum-aroma-chemistry-hero.webp?crop=center&height=315&v=1788466760&width=420 420w,//www.terra-ross.fr/cdn/shop/articles/tuber-magnatum-melanosporum-aroma-chemistry-hero.webp?crop=center&height=360&v=1788466760&width=480 480w,//www.terra-ross.fr/cdn/shop/articles/tuber-magnatum-melanosporum-aroma-chemistry-hero.webp?crop=center&height=480&v=1788466760&width=640 640w,//www.terra-ross.fr/cdn/shop/articles/tuber-magnatum-melanosporum-aroma-chemistry-hero.webp?crop=center&height=510&v=1788466760&width=680 680w,//www.terra-ross.fr/cdn/shop/articles/tuber-magnatum-melanosporum-aroma-chemistry-hero.webp?crop=center&height=540&v=1788466760&width=720 720w,//www.terra-ross.fr/cdn/shop/articles/tuber-magnatum-melanosporum-aroma-chemistry-hero.webp?crop=center&height=630&v=1788466760&width=840 840w,//www.terra-ross.fr/cdn/shop/articles/tuber-magnatum-melanosporum-aroma-chemistry-hero.webp?crop=center&height=810&v=1788466760&width=1080 1080w"
class="img"
width="1600"
height="900"
data-ratio="1.33333"
sizes="(max-width: 767px) 100vw, (max-width: 1750px) 50vw, calc(1750px / 2)"
loading="lazy"
style="
"
onload="this.parentNode.classList.add('lazyloaded')"
/>
</figure></a><div class="blog-item__title-holder" >
<a href="/blogs/truffle-guides/white-black-truffle-aroma-volatile-compounds" title="Qu'est-ce qui crée l'arôme des Truffes blanches et noires ?">
<span class=" text-size--xlarge text-line-height--small text-weight--bold text-animation--underline">Qu'est-ce qui crée l'arôme des Truffes blanches et noires ?</span>
</a>
</div><div class="blog-item__meta text-color--opacity" ></div><div class="blog-item__excerpt" >
<span class="element--is-inline-block">La science des composés volatils et odorants chez Tuber magnatum et Tuber melanosporum</span>
</div></div><div class="blog-item
spacing--large
remove-empty-space"><a class="blog-item__image element--has-border element--border-radius increased-spacing" href="/blogs/truffle-guides/tuber-melanosporum-vs-tuber-indicum" title="Tuber melanosporum vs Tuber indicum : différences, identification et utilisation culinaire"><figure
class="lazy-image lazy-image--animation element--border-radius
"
data-ratio="1.33333" style="padding-top: 75.00018750046875%"
data-crop="false"
>
<img
src="//www.terra-ross.fr/cdn/shop/articles/terra-ross-tuber-melanosporum-vs-tuber-indicum.webp?v=1788532993&width=480" alt="Tuber melanosporum vs Tuber indicum : différences, identification et utilisation culinaire"
srcset="//www.terra-ross.fr/cdn/shop/articles/terra-ross-tuber-melanosporum-vs-tuber-indicum.webp?crop=center&height=180&v=1788532993&width=240 240w,//www.terra-ross.fr/cdn/shop/articles/terra-ross-tuber-melanosporum-vs-tuber-indicum.webp?crop=center&height=270&v=1788532993&width=360 360w,//www.terra-ross.fr/cdn/shop/articles/terra-ross-tuber-melanosporum-vs-tuber-indicum.webp?crop=center&height=315&v=1788532993&width=420 420w,//www.terra-ross.fr/cdn/shop/articles/terra-ross-tuber-melanosporum-vs-tuber-indicum.webp?crop=center&height=360&v=1788532993&width=480 480w,//www.terra-ross.fr/cdn/shop/articles/terra-ross-tuber-melanosporum-vs-tuber-indicum.webp?crop=center&height=480&v=1788532993&width=640 640w,//www.terra-ross.fr/cdn/shop/articles/terra-ross-tuber-melanosporum-vs-tuber-indicum.webp?crop=center&height=510&v=1788532993&width=680 680w,//www.terra-ross.fr/cdn/shop/articles/terra-ross-tuber-melanosporum-vs-tuber-indicum.webp?crop=center&height=540&v=1788532993&width=720 720w,//www.terra-ross.fr/cdn/shop/articles/terra-ross-tuber-melanosporum-vs-tuber-indicum.webp?crop=center&height=630&v=1788532993&width=840 840w,//www.terra-ross.fr/cdn/shop/articles/terra-ross-tuber-melanosporum-vs-tuber-indicum.webp?crop=center&height=810&v=1788532993&width=1080 1080w"
class="img"
width="1600"
height="900"
data-ratio="1.33333"
sizes="(max-width: 767px) 100vw, (max-width: 1750px) 50vw, calc(1750px / 2)"
loading="lazy"
style="
"
onload="this.parentNode.classList.add('lazyloaded')"
/>
</figure></a><div class="blog-item__title-holder" >
<a href="/blogs/truffle-guides/tuber-melanosporum-vs-tuber-indicum" title="Tuber melanosporum vs Tuber indicum : différences, identification et utilisation culinaire">
<span class=" text-size--xlarge text-line-height--small text-weight--bold text-animation--underline">Tuber melanosporum vs Tuber indicum : différences, identification et utilisation culinaire</span>
</a>
</div><div class="blog-item__meta text-color--opacity" ></div><div class="blog-item__excerpt" >
<span class="element--is-inline-block">Une comparaison pratique et factuelle de Tuber melanosporum et Tuber indicum, couvrant l’apparence, la microscopie, l’arôme, le contexte culinaire et les cas où une authentification plus précise de l’espèce peut être appropriée.</span>
</div></div></div><link href="//www.terra-ross.fr/cdn/shop/t/27/assets/component-pagination.css?v=68922467715751716971786777724" rel="stylesheet" type="text/css" media="all" />
<nav role="navigation">
<ul class="pagination"><li class="prev disabled">
<span class="visually-hidden">Précédent</span>
<span aria-hidden="true"><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></span>
</li><li class="lap-hide active" aria-current="page">
<span class="visually-hidden">page</span> 1
</li><li class="lap-hide">
<a href="/blogs/truffle-guides?page=2">
<span class="visually-hidden">page</span> 2
</a>
</li><li class="lap-hide">
<a href="/blogs/truffle-guides?page=3">
<span class="visually-hidden">page</span> 3
</a>
</li><li class="lap-hide">
<a href="/blogs/truffle-guides?page=4">
<span class="visually-hidden">page</span> 4
</a>
</li><li class="mobile"><div
style="margin-inline-start:-12px"
>
1 / 4</div>
</li><li class="next">
<a href="/blogs/truffle-guides?page=2">
<span class="visually-hidden">Suivant</span>
<span aria-hidden="true"><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></span>
</a>
</li></ul>
</nav></div>
</div><div id="shopify-section-template--28394380951874__rich_text_JEQmGt" class="shopify-section can-be-fullwidth no-fullwidth-padding"><link href="//www.terra-ross.fr/cdn/shop/t/27/assets/section-rich-text.css?v=103663202022890615311786777747" rel="stylesheet" type="text/css" media="all" />
<div
class="
container--large
container--vertical-space
"
>
<div
id="element-template--28394380951874__rich_text_JEQmGt"
class="
card
element--height-regular
rich-text
"
>
<div class="rich-text__container rich-text__container--image-right "><div
class="
rich-text__image
"
><figure
class="lazy-image
"
data-ratio="1.3333333333333333" style="padding-top: 75.0%"
data-crop="true"
>
<img
src="//www.terra-ross.fr/cdn/shop/files/white-black-truffles-guide.webp?v=1788591403&width=480" alt="Truffes blanches et noires entières, avec une truffe noire coupée révélant son intérieur marbré, sur une surface en pierre claire."
srcset="//www.terra-ross.fr/cdn/shop/files/white-black-truffles-guide.webp?v=1788591403&width=240 240w,//www.terra-ross.fr/cdn/shop/files/white-black-truffles-guide.webp?v=1788591403&width=360 360w,//www.terra-ross.fr/cdn/shop/files/white-black-truffles-guide.webp?v=1788591403&width=420 420w,//www.terra-ross.fr/cdn/shop/files/white-black-truffles-guide.webp?v=1788591403&width=480 480w,//www.terra-ross.fr/cdn/shop/files/white-black-truffles-guide.webp?v=1788591403&width=640 640w,//www.terra-ross.fr/cdn/shop/files/white-black-truffles-guide.webp?v=1788591403&width=680 680w,//www.terra-ross.fr/cdn/shop/files/white-black-truffles-guide.webp?v=1788591403&width=720 720w,//www.terra-ross.fr/cdn/shop/files/white-black-truffles-guide.webp?v=1788591403&width=840 840w,//www.terra-ross.fr/cdn/shop/files/white-black-truffles-guide.webp?v=1788591403&width=1080 1080w,//www.terra-ross.fr/cdn/shop/files/white-black-truffles-guide.webp?v=1788591403&width=1280 1280w,//www.terra-ross.fr/cdn/shop/files/white-black-truffles-guide.webp?v=1788591403&width=1540 1540w"
class="img"
width="1600"
height="1200"
data-ratio="1.3333333333333333"
loading="lazy"
style="
object-position: 50.0% 50.0%;
"
id="responsive-background-template--28394380951874__rich_text_JEQmGt"
onload="this.parentNode.classList.add('lazyloaded')"
/>
</figure><script>
rbi.push(document.getElementById('responsive-background-template--28394380951874__rich_text_JEQmGt'));
ribSetSize(document.getElementById('responsive-background-template--28394380951874__rich_text_JEQmGt'));
</script></div><div
class="rich-text__text align-content align-content--horizontal-left align-content--vertical-middle"
>
<div
class="
card__text
element--width-100 spacing--large
gutter--xlarge
remove-empty-space
"
><h2
class="h2 rte rich-text__title"
>
Guides spécialisés sur les truffes blanches, noires et de saison
</h2>
<div
class="rte text-size--regular"
>
<p>Découvrez les guides Terra Ross consacrés aux truffes blanches et noires fraîches : identification des espèces, saisons de récolte, profils aromatiques, usages culinaires, catégories de qualité, conservation et conseils d’achat.<br/><br/>Apprenez à connaître <em>Tuber magnatum, Tuber melanosporum, Tuber aestivum</em> et d’autres espèces européennes de truffes grâce à des articles pratiques destinés aux cuisiniers amateurs, aux chefs, aux professionnels de l’alimentation et aux passionnés de truffes.</p>
</div>
</div>
</div></div>
</div>
</div>
</div>
</main>
<footer><!-- BEGIN sections: footer-group -->
<div id="shopify-section-sections--28394383540546__footer" class="shopify-section shopify-section-group-footer-group main-footer"><link href="//www.terra-ross.fr/cdn/shop/t/27/assets/section-footer.css?v=92580148604769442531786777741" rel="stylesheet" type="text/css" media="all" />
<div class="container--large gutter-top--xlarge gutter-bottom--xlarge footer-top" data-js-inert>
<div class="grid grid--layout grid--gap-xlarge grid-5 grid-portable-4 grid-lap-3 grid-palm-2 smel"><div class="footer-item" ><h2
class="footer-item__title h4 "
style="display:block"
>Terra Ross | Truffes fraîches et produits à la truffe</h2><div class="footer-item__content rte"><p><strong>Expertise en truffes fraîches</strong></p><p>Terra Ross est spécialisée dans l'approvisionnement, la sélection, l'emballage et la fourniture de truffes fraîches, congelées et séchées, ainsi que de produits à base de truffes soigneusement sélectionnés pour les clients privés, les restaurants et les professionnels de l'alimentation.</p><p><strong>Sécurité alimentaire</strong></p><p>Les produits sont manipulés et préparés conformément aux procédures de sécurité alimentaire applicables de l'entreprise. Une documentation qualité spécifique au produit est disponible sur demande, le cas échéant.</p><p><strong>Livraison internationale</strong></p><p>Les services de livraison disponibles, les frais d'expédition et les délais de transport estimés dépendent de la destination et du service sélectionné et sont indiqués lors du paiement. Les commandes de truffes fraîches sont préparées dans un emballage protecteur isolé avec des matériaux de refroidissement.</p><p><strong>Utilisation responsable de l'énergie</strong></p><p>Environ 90 % de l'énergie utilisée par Terra Ross est fournie par le système d'énergie solaire de l'entreprise, soutenant un processus de production plus efficace.</p><div style="display: inline-flex; align-items: center; padding: 8px 12px; margin-top: 12px; background-color: #191919; border-radius: 999px;"><script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.shop-follow-button.fr.esm.js"></script>
<script type="module">
await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.shop-follow-button.fr.esm.js");
</script>
<shop-follow-button ux-mode="windoid" return-uri="https://www.terra-ross.fr/account/redirect" proxy="true"></shop-follow-button>
</div></div></div><div class="footer-item" ><h2
class="footer-item__title h5 "
style="display:block"
>Liens utiles</h2><nav class="footer-item__menu rte"><span>
<a
href="/collections/fresh-truffles-in-season"
>Truffes fraîches de saison</a>
</span><span>
<a
href="/collections/premium-truffle-products-for-restaurants-b2b-clients"
>Truffes B2B pour restaurants et fabricants de produits alimentaires</a>
</span><span>
<a
href="/collections/frozen-truffles"
>Truffes surgelées</a>
</span><span>
<a
href="/collections/tuber-aestivum-black-summer-truffle"
>Truffe d'été</a>
</span><span>
<a
href="/collections/truffle-hunting-dog-training"
>Produits de dressage pour chiens truffiers</a>
</span><span>
<a
href="/pages/about-us-terra-ross-ltd-your-trusted-partner"
>À propos de Terra Ross</a>
</span><span>
<a
href="/pages/contact-terra-ross"
>Contact Terra Ross</a>
</span></nav></div><div class="footer-item" ><h2
class="footer-item__title h5 "
style="display:block"
>Liens clients</h2><nav class="footer-item__menu rte"><span>
<a
href="https://account.terra-ross.com/orders?locale=fr®ion_country=BE&buyer_flags=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ0cnVmZmxlLWhvdXNlLWVuLm15c2hvcGlmeS5jb20iLCJmbGFncyI6W10sImV4cCI6MTc5Mjc3NDc5NSwibmJmIjoxNzkyMTY5OTk1fQ.c1X393mpnpzTlk3Mb3N2sUlkzBX-OfYjVurxtYk06uk"
>Commandes</a>
</span><span>
<a
href="https://account.terra-ross.com/profile?locale=fr®ion_country=BE&buyer_flags=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ0cnVmZmxlLWhvdXNlLWVuLm15c2hvcGlmeS5jb20iLCJmbGFncyI6W10sImV4cCI6MTc5Mjc3NDc5NSwibmJmIjoxNzkyMTY5OTk1fQ.c1X393mpnpzTlk3Mb3N2sUlkzBX-OfYjVurxtYk06uk"
>Compte | Adresse</a>
</span><span>
<a
href="https://account.terra-ross.com/pages/83c32665-6c37-4ad0-a13c-bd21069b037f?locale=fr®ion_country=BE&buyer_flags=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ0cnVmZmxlLWhvdXNlLWVuLm15c2hvcGlmeS5jb20iLCJmbGFncyI6W10sImV4cCI6MTc5Mjc3NDc5NSwibmJmIjoxNzkyMTY5OTk1fQ.c1X393mpnpzTlk3Mb3N2sUlkzBX-OfYjVurxtYk06uk"
>Avis clients</a>
</span><span>
<a
href="/pages/faqs"
>FAQ</a>
</span></nav></div><div class="footer-item" ><h2
class="footer-item__title h5 "
style="display:block"
>Liens vers les politiques</h2><nav class="footer-item__menu rte"><span>
<a
href="/policies/terms-of-service"
>Conditions générales d'utilisation</a>
</span><span>
<a
href="/policies/legal-notice"
>Mentions légales</a>
</span><span>
<a
href="/policies/shipping-policy"
>Politique d'expédition</a>
</span><span>
<a
href="/policies/refund-policy"
>Politique de remboursement</a>
</span><span>
<a
href="/policies/privacy-policy"
>Politique de confidentialité</a>
</span><span>
<a
href="/policies/subscription-policy"
>Politique d'abonnement</a>
</span><span>
<a
href="/policies/contact-information"
>Informations de contact</a>
</span></nav></div><div class="footer-item" ><h2
class="footer-item__title h5 "
style="display:block"
>Offres et inscription à la newsletter</h2><div class="footer-item__newsletter"><form method="post" action="/contact#newsletter-footer-block" id="newsletter-footer-block" accept-charset="UTF-8" class=""><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="✓" /><fieldset>
<input type="hidden" name="contact[tags]" value="newsletter">
<div class="form-row" style="position:relative;padding-top:0;">
<input
type="email"
class="newsletter__input"
value=""
placeholder="Entrez votre e-mail"
name="contact[email]"
id="Email-newsletter-footer-block"
aria-label="Entrez votre e-mail"
autocorrect="off"
autocapitalize="off"
required
>
<button
type="submit"
id="Subscribe-newsletter-footer-block"
aria-label="Soumettre"
>
<span class="visually-hidden">Soumettre</span>
<span aria-hidden="true" role="img"><svg width="52" height="52" viewBox="0 0 52 52" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M47.5 2.5 22.75 27.25M47.5 2.5l-15.75 45-9-20.25-20.25-9 45-15.75Z" stroke="#fff" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/></svg></span>
</button>
</div>
</fieldset></form></div></div></div>
</div><div class="footer-bottom" data-js-inert>
<div class="container--large gutter-top--regular gutter-bottom--regular rte">
<span>
Droits d'auteur © 2026
<a href="/">Terra Ross</a>.<span class="powered-by-shopify"><a target="_blank" rel="nofollow" href="https://www.shopify.com?utm_campaign=poweredby&utm_medium=shopify&utm_source=onlinestore">Propulsé par Shopify</a></span></span></div>
</div>
</div>
<!-- END sections: footer-group --></footer><div id="shopify-section-popups" class="shopify-section"><style>
.sidebar--top {
border-radius: 0px;
}
</style>
</div><div id="shopify-section-popup-age-verification" class="shopify-section mount-popup">
</div><div id="shopify-section-exit-intent-popup" class="shopify-section element--has-section-borders mount-exit-intent-popup">
</div><div id="shopify-section-store-selector" class="shopify-section mount-popup mount-store-selector mount-map">
</div><script src="//www.terra-ross.fr/cdn/shop/t/27/assets/component-modal.js?v=183852734125365992941786777723" defer></script>
<link rel="stylesheet" href="//www.terra-ross.fr/cdn/shop/t/27/assets/component-modal.css?v=68846274709650022401786777722" media="print" onload="this.media='all'">
<link rel="stylesheet" href="//www.terra-ross.fr/cdn/shop/t/27/assets/component-popup.css?v=53532109820971467261786777725" media="print" onload="this.media='all'">
<script type="text/javascript">
KROWN = {
themeName: "Local",
themeVersion: "4.1.2",
compare: {
storageKey: 'compare-products',
toggleKey: 'compare-mode-active',
maxProducts: 4
},
settings: {
shop_money_format: '€{{amount_with_comma_separator}}',
iso_code: '',
cart_action: "overlay",
google_maps_api_key: "AIzaSyDazcrXquJd7VrnZ8ef7f7cWibRRdVS270",
google_maps_map_id: "",
routes: {
cart_url: "/cart",
cart_add_url: "/cart/add",
cart_change_url: "/cart/change",
cart_update_url: "/cart/update",
predictive_search_url: "/search/suggest",
product_recommendations_url: "/recommendations/products"
},
locales: {
products_add_to_cart_button: `Ajouter au panier`,
products_preorder_button: `Précommander`,
products_sold_out_variant: `Épuisé`,
products_unavailable_variant: `Indisponible`,
products_variant_required: `Choisissez d'abord une variante`,
products_one_product: `<span class="pill"><span class="pill__icon" aria-hidden="true"><svg height="64" viewBox="0 0 64 64" width="64" xmlns="http://www.w3.org/2000/svg"><g style="fill:none;stroke:#202020;stroke-linecap:round;stroke-miterlimit:10;stroke-width:2;stroke-linejoin:round"><path d="m54 6v10h-10m-12 43a27 27 0 1 1 21.751-43m-8.766 39.678a26.819 26.819 0 0 1 -6.985 2.653m15.751-10.331a27.159 27.159 0 0 1 -4.711 4.945m8.751-12.932a26.821 26.821 0 0 1 -1.58 3.952"/><circle cx="32" cy="32" r="3"/><path d="m33.961 34.261 10.039 7.739m-12-30v17"/></g></svg></span><span class="pill__text text-size--small">Il ne reste qu'un seul produit !</span></span>`,
products_few_products: `<span class="pill"><span class="pill__icon" aria-hidden="true"><svg height="64" viewBox="0 0 64 64" width="64" xmlns="http://www.w3.org/2000/svg"><g style="fill:none;stroke:#202020;stroke-linecap:round;stroke-miterlimit:10;stroke-width:2;stroke-linejoin:round"><path d="m54 6v10h-10m-12 43a27 27 0 1 1 21.751-43m-8.766 39.678a26.819 26.819 0 0 1 -6.985 2.653m15.751-10.331a27.159 27.159 0 0 1 -4.711 4.945m8.751-12.932a26.821 26.821 0 0 1 -1.58 3.952"/><circle cx="32" cy="32" r="3"/><path d="m33.961 34.261 10.039 7.739m-12-30v17"/></g></svg></span><span class="pill__text text-size--small">Il reste {{ count }} produits</span></span>`,
products_many_products: `<span class="pill"><span class="pill__icon" aria-hidden="true"><svg style="transform:scale(.9)" height="64" viewBox="0 0 64 64" width="64" xmlns="http://www.w3.org/2000/svg"><g style="fill:none;stroke:#202020;stroke-miterlimit:10;stroke-width:2;stroke-linejoin:round;stroke-linecap:round"><circle cx="32" cy="32" r="30" transform="matrix(.70710678 -.70710678 .70710678 .70710678 -13.254834 32)"/><path d="m20.998 32.015 8.992 8.992 16.011-16.011"/></g></svg></span><span class="pill__text text-size--small">Il reste {{ count }} produits</span></span>`,
products_no_products: `<span class="pill"><span class="pill__icon" aria-hidden="true"><svg style="transform:scale(.9)" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg"><g style="fill:none;stroke:#202020;stroke-miterlimit:10;stroke-width:2;stroke-linejoin:round;stroke-linecap:round"><circle cx="32" cy="32" r="30"/><path d="m32 15v24"/><circle cx="32" cy="47" r="2"/></g></svg></span><span class="pill__text text-size--small">Il ne reste plus de produits</span></span>`,
products_preorder: `<span class="pill"><span class="pill__icon" aria-hidden="true"><svg style="transform:scale(.9)" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg"><g style="fill:none;stroke:#202020;stroke-miterlimit:10;stroke-width:2;stroke-linejoin:round;stroke-linecap:round"><circle cx="32" cy="32" r="30"/><path d="m32 15v24"/><circle cx="32" cy="47" r="2"/></g></svg></span><span class="pill__text text-size--small">Ce produit est en rupture de stock, mais vous pouvez toujours le commander.</span></span>`,
products_enough_products: `<span class="pill"><span class="pill__icon" aria-hidden="true"><svg style="transform:scale(.9)" height="64" viewBox="0 0 64 64" width="64" xmlns="http://www.w3.org/2000/svg"><g style="fill:none;stroke:#202020;stroke-miterlimit:10;stroke-width:2;stroke-linejoin:round;stroke-linecap:round"><circle cx="32" cy="32" r="30" transform="matrix(.70710678 -.70710678 .70710678 .70710678 -13.254834 32)"/><path d="m20.998 32.015 8.992 8.992 16.011-16.011"/></g></svg></span><span class="pill__text text-size--small">En stock</span></span>`,
cart_general_error: `Une erreur s'est produite. Veuillez actualiser la page et réessayer.`,
cart_announcement: `Article ajouté à votre panier`,
cart_discount_code_error: `<span class="alert alert--error text-size--small">Le code de réduction ne peut pas être appliqué à votre panier</span>`,
store_selector_title_default: `Tu viens chercher ?`,
store_selector_title_selected: `Ma boutique`,
store_selector_label: `Sélectionner un magasin`,
shipping_calculator_results_heading_one: `Il y a un seul tarif d'expédition pour votre adresse`,
shipping_calculator_results_heading_multiple: `Tarifs d'expédition pour votre adresse`,
shipping_notice_remaining_to_free: `Il vous reste {{ remaining_amount }} pour bénéficier de la livraison gratuite.`,
shipping_notice_eligible_for_free: `Vous êtes éligible à la livraison gratuite !`,
slider_next_button_label: `Diapositive suivante`,
slider_prev_button_label: `Diapositive précédente`,
slider_thumbnail_label: `Afficher la diapositive {{ count }}`
},
symbols: {
zoom_out: `<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="9.08008" cy="9" r="8" stroke="var(--main-text)" stroke-width="2" style="fill:none!important" /><rect x="14.2988" y="15.9062" width="1.98612" height="6.65426" transform="rotate(-45 14.2988 15.9062)" fill="#111111"/><path d="M13.0801 8V10L5.08008 10L5.08008 8L13.0801 8Z" fill="#111111"/></svg>`,
zoom_loader: `<svg class="zoom__loader-element" viewBox="25 25 50 50"><circle cx="50" cy="50" r="20" fill="none" stroke-width="4"/></svg>`,
close: `<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M17 1L1 17" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M1 1L17 17" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>`,
toggle_pack: `<span class="toggle__icon"><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></span>`,
toggle_pack_alternate: `<span class="toggle__icon-alternate"><span class="toggle__icon--plus"><svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5 0H7V12H5V0Z" fill="black" style="stroke:none"/><path d="M12 5V7H0L1.19209e-07 5L12 5Z" fill="black" style="stroke:none"/></svg></span><span class="toggle__icon--minus"><svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 5V7H0L1.19209e-07 5L12 5Z" fill="black" style="stroke:none"/></svg></span></span>`
},
predictive_search_enabled: "true",
predictive_search_fields: "title,product_type,variants.title,vendor,variants.sku,variants.barcode,tag",
predictive_search_script: "//www.terra-ross.fr/cdn/shop/t/27/assets/component-predictive-search.js?v=46222849696953245241786777725",
predictive_search_placeholder: `<div class="search-results"><div class="search-block"><a class="search-item search-item--blank"><div class="thumbnail"></div><div class="content"><span class="title"></span><span class="caption"></span></div></a><a class="search-item search-item--blank"><div class="thumbnail"></div><div class="content"><span class="title"></span><span class="caption"></span></div></a><a class="search-item search-item--blank"><div class="thumbnail"></div><div class="content"><span class="title"></span><span class="caption"></span></div></a></div></div>`
},
functions: {
eventDispatcher: (eventType, detail) => {
document.dispatchEvent(new CustomEvent(eventType, {
bubbles: true,
detail: detail
}));
}
}
}
</script>
<script src="//www.terra-ross.fr/cdn/shop/t/27/assets/component-quick-buy.js?v=75831469797571166711786777729" defer></script>
<script src="//www.terra-ross.fr/cdn/shop/t/27/assets/component-pickup-availability.js?v=59313063598970683791786777724" defer></script>
<script src="//www.terra-ross.fr/cdn/shop/t/27/assets/component-slider.js?v=112308150742794689361789206638" defer></script><sidebar-drawer id="site-cart-sidebar" class="sidebar sidebar--right cart-is-empty " tabindex="-1" role="dialog" aria-modal="true" aria-hidden="true" data-cart-items="0" style="display:none" data-js-site-cart-sidebar>
<div class="sidebar__header">
<span class="sidebar__title h5">
Panier
(<span data-header-cart-count>0</span>)
</span>
<button class="sidebar__close" data-js-close>
<span class="visually-hidden">Fermer la barre latérale</span>
<span aria-hidden="true" aria-role="img"><svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M17 1L1 17" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M1 1L17 17" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></span>
</button>
</div>
<div class="sidebar__body sidebar__body--flex">
<div class="sidebar__body-top">
<div class="cart-form"><cart-form id="AjaxCartForm"><shipping-notice
class="cart-notice hide-if-empty-cart"
data-free-shipping="14900"
data-cart-total-amount="0"
></shipping-notice>
<script src="//www.terra-ross.fr/cdn/shop/t/27/assets/component-shipping-notice.js?v=126034721894511375741786777732" defer></script><form action="/cart" method="post" novalidate class="cart__form cart--empty " id="cart">
<div class="cart-holder" data-items="0">
<div class="cart__items">Votre panier est actuellement vide.
</div>
</div>
</form>
<span class="cart__count hidden" aria-hidden="true" data-cart-count>0</span>
<span class="cart__total hidden" aria-hidden="true" data-cart-total>€0,00</span>
</cart-form><a href="/collections/all" class="cart-continue button button--fullwidth button--solid button--regular">
Continuer la navigation
</a>
</div><cart-recommendations id="cart-recommendations" data-section="cart-recommendations" data-limit="6"></cart-recommendations>
<script src="//www.terra-ross.fr/cdn/shop/t/27/assets/component-cart-recommendations.js?v=26923185994243591031786777716" defer></script></div><div class="sidebar__body-bottom hide-if-empty-cart"><div class="cart__instructions cart-detail--collapsible-true"><details class="cart__accordion-details">
<summary class="align-content align-content--vertical-middle">
<span class="cart__accordion-title cart__note-title">
Instructions de commande
</span>
<span class="cart__accordion-icon cart__note-icon" aria-hidden="true"><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></span>
</summary><div class="form-field">
<cart-note>
<label for="CartDrawer-Note" class="visually-hidden">
Instructions de commande
</label>
<textarea id="CartDrawer-Note" name="note"></textarea>
</cart-note>
</div></details></div><div class="cart-detail--collapsible-true">
<details class="cart__accordion-details">
<summary class="align-content align-content--vertical-middle">
<span class="cart__accordion-title cart__discount-title">
Codes de réduction
</span>
<span class="cart__accordion-icon cart__discount-icon" aria-hidden="true"><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></span>
</summary><div class="form-field">
<cart-discounts>
<label for="CartPage-Discount" class="visually-hidden">
Codes de réduction
</label>
<form class="cart__coupons-form">
<input id="CartPage-Discount" name="discount" type="text" data-js-discount-input>
<button type="submit" id="cartDiscountSubmit" class="button button--small button--small-mobile button--solid" data-js-discount-submit>
Appliquer
</button>
</form><div class="cart__coupons-error" data-js-discount-error></div>
<div class="cart__coupons-codes" data-js-discount-codes></div>
</cart-discounts>
</div></details></div></div></div><div class="sidebar__footer hide-if-empty-cart"
><div id="AjaxCartSubtotal"><div class="cart__details
cart--empty
"><div class="cart__total">
<span>Total</span>
<strong class="text-size--heading">€0,00</strong>
</div><div data-js-discount-codes style="display: none !important"></div><div class="cart__shipping text-color--opacity text-size--small">Taxes incluses. <a href="/policies/shipping-policy">Frais de livraison</a> calculés lors du paiement.</div><invoice-request
data-value="No"
style="display: block; margin-bottom: 1rem;"
>
<div class="agree-to-terms gutter-top--small">
<input
type="hidden"
name="attributes[Invoice requested]"
value="No"
form="cart"
data-invoice-value
>
<input
type="checkbox"
id="InvoiceRequest-sidebar"
class="styled-checkbox"
data-invoice-checkbox
aria-describedby="InvoiceRequestError-sidebar"
>
<label
for="InvoiceRequest-sidebar"
class="text-size--small"
>
I would like an invoice
</label>
</div>
<p
id="InvoiceRequestError-sidebar"
class="text-size--small"
role="alert"
data-invoice-error
hidden
>
Your choice could not be saved. Please try again.
</p>
</invoice-request><terms-checkbox>
<div class="agree-to-terms gutter-top--small">
<input type="checkbox" id="AgreeToTos" class="styled-checkbox" required>
<label for="AgreeToTos" class="text-size--small">
I agree to the terms and conditions
</label>
</div>
</terms-checkbox>
<script src="//www.terra-ross.fr/cdn/shop/t/27/assets/component-terms-checkbox.js?v=128965975763693775411790940747" defer></script><div class="flex-buttons"><a
id="ViewCart"
href="/cart"
class="button button--regular button--outline"
>
Voir le panier
</a><button
id="CheckOut"
class="button button--regular button--solid"
type="submit"
name="checkout"
form="cart"
disabled
>
Passer à la caisse
</button></div></div>
</div></div>
</sidebar-drawer>
<script>
new MutationObserver((mutations, observer) => {
if ( document.getElementById('cart').classList.contains('cart--empty') ) {
document.getElementById('site-cart-sidebar').classList.add('cart-is-empty');
} else {
document.getElementById('site-cart-sidebar').classList.remove('cart-is-empty');
}
}).observe(document.querySelector('.cart-form'), {
attributes: false, childList: true, subtree: true
})
</script><link rel="stylesheet" href="//www.terra-ross.fr/cdn/shop/t/27/assets/component-cart.css?v=113166854762746971021786777716" media="print" onload="this.media='all'">
<script src="//www.terra-ross.fr/cdn/shop/t/27/assets/component-quantity-selector.js?v=107340247695255654671786777728" defer></script><script src="//www.terra-ross.fr/cdn/shop/t/27/assets/component-cart.js?v=25031518693597556841786777716" defer></script><link rel="stylesheet" href="//www.terra-ross.fr/cdn/shop/t/27/assets/component-sidebar.css?v=112015281036912637291786777732" media="print" onload="this.media='all';">
<script src="//www.terra-ross.fr/cdn/shop/t/27/assets/section-header.js?v=140053913013082127551789060149" defer></script><div class="site-overlay" style="display:none"></div>
<link rel="stylesheet" href="//www.terra-ross.fr/cdn/shop/t/27/assets/section-main-product.css?v=58460561246436703791789103194" media="print" onload="this.media='all';"><span id="go-top" class="main-go-top"
onclick="window.scrollTo({ top: 0, behavior: 'smooth' })"
>
<span class="visually-hidden">Aller en haut</span>
<span class="main-go-top__icon" aria-hidden="true"><svg width="13" height="8" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.414.086 7.9 6.57 6.485 7.985 0 1.5 1.414.086Z" fill="#000"/><path d="M12.985 1.515 6.5 8 5.085 6.586 11.571.101l1.414 1.414Z" fill="#000"/></svg></span>
</span>
<script>
window.addEventListener('scroll', ()=>{
if ( window.scrollY > 100 ) {
document.getElementById('go-top').classList.add('show');
} else {
document.getElementById('go-top').classList.remove('show');
}
}, {passive: true});
</script><script>
document.querySelectorAll('.rte a img').forEach(elm=>{
elm.parentNode.style.border = 'none';
});
</script><script src="//www.terra-ross.fr/cdn/shop/t/27/assets/instantpage.js?v=99963444960178710701786777738" type="module" defer></script><style>
.lazy-image img,
.lazy-image img:hover {
transition: all 0ms !important;
opacity: 1 !important;
transform: none !important;
}
.no-touchevents a:hover .lazy-image.lazy-image--zoom-animation img,
.no-touchevents .card--animation:hover .lazy-image.lazy-image--animation img {
top: 0;
left: 0;
height: 100%;
width: 100%;
object-fit: cover;
}
</style>
<script type="module">
import * as SE from 'https://cdn.shopify.com/storefront/standard-events.js';
window.Shopify = window.Shopify || {};
window.Shopify.StandardEvents = SE;
const dispatchPageView = () => {
document.dispatchEvent(new SE.PageViewEvent({
page: {
template: "blog",
title: document.title,
url: window.location.href
}
}));
};
if (document.readyState === 'complete') {
dispatchPageView();
} else {
document.addEventListener('DOMContentLoaded', dispatchPageView, { once: true });
}
</script>
<script>
document.addEventListener('DOMContentLoaded', () => {
if ( ! window.Shopify || ! window.Shopify.actions ) return;
Shopify.actions.openCart.configure({
handler() {
const drawer = document.getElementById('site-cart-sidebar');
if ( drawer && typeof drawer.show === 'function' ) {
drawer.show();
} else {
window.location.href = window.KROWN.settings.routes.cart_url;
}
}
});
Shopify.actions.updateCart.configure({
eventTarget: () => document.getElementById('AjaxCartForm') || document.body,
async handler(defaultHandler) {
const result = await defaultHandler();
await fetch('?section_id=helper-cart')
.then(response => response.text())
.then(text => {
if ( document.getElementById('AjaxCartForm') && typeof window.renderHelperCart === 'function' ) {
window.renderHelperCart(text);
} else {
const sectionInnerHTML = new DOMParser().parseFromString(text, 'text/html');
const cartCount = sectionInnerHTML.querySelector('[data-cart-count]');
const cartTotal = sectionInnerHTML.querySelector('[data-cart-total]');
if ( cartCount ) {
document.querySelectorAll('[data-header-cart-count]').forEach(elm => elm.textContent = cartCount.textContent);
}
if ( cartTotal ) {
document.querySelectorAll('[data-header-cart-total]').forEach(elm => elm.textContent = cartTotal.textContent);
}
}
})
.catch(error => console.warn('standard-events: updateCart refresh', error));
return result;
}
});
});
</script>
<!-- Customisation-->
<script>
document.addEventListener('DOMContentLoaded', function () {
const maximumCollapsedHeight = 100;
const headingGap = 12;
const reducedMotion = window.matchMedia(
'(prefers-reduced-motion: reduce)'
).matches;
/*
* Calculates the collapsed height for each collection description.
*
* Rules:
* - Short descriptions <= 180px remain fully visible.
* - If introductory paragraphs exist before the first H2,
* collapse immediately before that H2.
* - Never exceed 180px.
* - Older descriptions that begin directly with an H2
* keep the standard 180px behavior until their content
* is migrated to the new H1 → intro → H2 structure.
*/
const getCollapsedHeight = function (content) {
const firstHeading = content.querySelector('h2');
if (!firstHeading) {
return maximumCollapsedHeight;
}
let sibling = firstHeading.previousElementSibling;
let hasIntroParagraph = false;
while (sibling) {
if (
sibling.tagName === 'P' &&
sibling.textContent.trim() !== ''
) {
hasIntroParagraph = true;
break;
}
sibling = sibling.previousElementSibling;
}
if (!hasIntroParagraph) {
return maximumCollapsedHeight;
}
const headingTop = firstHeading.offsetTop;
if (headingTop <= 0) {
return maximumCollapsedHeight;
}
return Math.min(
maximumCollapsedHeight,
Math.max(0, headingTop - headingGap)
);
};
const prepareDescription = function (wrapper) {
const content = wrapper.querySelector(
'.collection-description-content'
);
const button = wrapper.querySelector(
'.collection-description-toggle'
);
if (!content || !button) {
return;
}
const fullHeight = content.scrollHeight;
/*
* Short descriptions do not need Read More.
*/
if (fullHeight <= maximumCollapsedHeight) {
content.classList.remove('is-collapsed');
content.style.maxHeight = 'none';
content.style.removeProperty(
'--collection-collapsed-height'
);
button.hidden = true;
button.setAttribute('aria-expanded', 'true');
return;
}
const collapsedHeight =
getCollapsedHeight(content);
content.dataset.collapsedHeight =
collapsedHeight;
content.style.setProperty(
'--collection-collapsed-height',
collapsedHeight + 'px'
);
button.hidden = false;
/*
* Preserve expanded state when recalculating after
* resize, font loading or translation changes.
*/
if (
button.getAttribute('aria-expanded') === 'true' &&
!content.classList.contains('is-collapsed')
) {
content.style.maxHeight = 'none';
return;
}
content.classList.add('is-collapsed');
content.style.maxHeight =
collapsedHeight + 'px';
button.setAttribute(
'aria-expanded',
'false'
);
};
const prepareAllDescriptions = function () {
document
.querySelectorAll(
'.collection-description-wrapper'
)
.forEach(function (wrapper) {
prepareDescription(wrapper);
});
};
prepareAllDescriptions();
/*
* Recalculate after full page load because fonts,
* images or translation scripts may change text flow.
*/
window.addEventListener(
'load',
prepareAllDescriptions
);
/*
* T Lab and other storefront scripts can update
* translated text shortly after DOMContentLoaded.
*/
window.setTimeout(
prepareAllDescriptions,
750
);
/*
* Recalculate on responsive layout changes.
*/
let resizeTimer;
window.addEventListener(
'resize',
function () {
window.clearTimeout(resizeTimer);
resizeTimer = window.setTimeout(
prepareAllDescriptions,
150
);
}
);
document.addEventListener(
'click',
function (event) {
const button = event.target.closest(
'.collection-description-toggle'
);
if (!button) {
return;
}
const wrapper = button.closest(
'.collection-description-wrapper'
);
if (!wrapper) {
return;
}
const content = wrapper.querySelector(
'.collection-description-content'
);
if (!content) {
return;
}
const collapsedHeight =
parseFloat(
content.dataset.collapsedHeight
) || maximumCollapsedHeight;
/*
* EXPAND
*/
if (
content.classList.contains(
'is-collapsed'
)
) {
const fullHeight =
content.scrollHeight;
content.style.maxHeight =
fullHeight + 'px';
content.classList.remove(
'is-collapsed'
);
button.setAttribute(
'aria-expanded',
'true'
);
if (reducedMotion) {
content.style.maxHeight =
'none';
return;
}
let fallbackTimer;
const finishExpandedState =
function () {
if (
!content.classList.contains(
'is-collapsed'
)
) {
content.style.maxHeight =
'none';
}
content.removeEventListener(
'transitionend',
onExpanded
);
if (fallbackTimer) {
window.clearTimeout(
fallbackTimer
);
}
};
const onExpanded =
function (transitionEvent) {
if (
transitionEvent.target ===
content &&
transitionEvent.propertyName ===
'max-height'
) {
finishExpandedState();
}
};
content.addEventListener(
'transitionend',
onExpanded
);
fallbackTimer =
window.setTimeout(
finishExpandedState,
600
);
}
/*
* COLLAPSE
*/
else {
content.style.maxHeight =
content.scrollHeight + 'px';
void content.offsetHeight;
content.classList.add(
'is-collapsed'
);
content.style.maxHeight =
collapsedHeight + 'px';
button.setAttribute(
'aria-expanded',
'false'
);
}
}
);
});
</script>
<style>
.collection-description-wrapper {
position: relative;
}
.collection-description-content {
position: relative;
overflow: hidden;
transition:
max-height .45s cubic-bezier(.4, 0, .2, 1);
}
/*
* SEO / UX:
* meaningful introductory content remains visible
* immediately, without depending on JavaScript.
*/
.collection-description-content.is-collapsed {
max-height: var(
--collection-collapsed-height,
100px
);
}
/*
* Fade is visible only in the collapsed state.
*/
.collection-description-content.is-collapsed::after {
content: '';
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: 50px;
pointer-events: none;
background: linear-gradient(
to bottom,
var(--color-opacity-background-main),
var(--color-background-main)
);
}
/*
* The button itself uses the native Local theme
* button classes defined in the section markup.
*/
.collection-description-toggle {
margin-top: 18px;
}
.collection-description-toggle__less {
display: none;
}
.collection-description-toggle[aria-expanded="true"]
.collection-description-toggle__more {
display: none;
}
.collection-description-toggle[aria-expanded="true"]
.collection-description-toggle__less {
display: inline;
}
.collection-description-toggle[hidden] {
display: none !important;
}
@media screen and (max-width: 767px) {
.collection-description-toggle {
margin-top: 16px;
}
}
@media (prefers-reduced-motion: reduce) {
.collection-description-content,
.collection-description-toggle {
transition: none;
}
}
</style>
<!--End Customisation-->
<script>
/* Terra Ross: add missing alt to Judge.me verified badge */
(() => {
const selector = '.jdgm-verified-badge__image img';
function fixBadge(root) {
if (!(root instanceof Element)) return;
const images = root.matches(selector)
? [root]
: root.querySelectorAll(selector);
images.forEach((img) => {
if (!img.hasAttribute('alt')) {
img.setAttribute(
'alt',
'Judge.me verified customer reviews'
);
}
});
}
fixBadge(document.body);
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
if (mutation.type === 'attributes') {
fixBadge(mutation.target);
} else {
mutation.addedNodes.forEach(fixBadge);
}
});
});
observer.observe(document.body, {
childList: true,
subtree: true,
attributes: true,
attributeFilter: ['alt']
});
})();
</script>
<style>
/* Target the teaser close button, without changing modal close buttons.
The sibling selector uses the teaser class seen in the supplied report
and does not depend on the language of the accessible button label. */
[class*="Teaser-pointer-"] ~ button.klaviyo-close-form {
box-sizing: border-box !important;
width: 44px !important;
height: 44px !important;
min-width: 44px !important;
min-height: 44px !important;
max-width: none !important;
max-height: none !important;
padding: 10px !important;
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
}
[class*="Teaser-pointer-"] ~ button.klaviyo-close-form svg {
width: 20px !important;
height: 20px !important;
flex-shrink: 0;
}
[class*="Teaser-pointer-"] ~ button.klaviyo-close-form:focus-visible {
outline: 2px solid #315643 !important;
outline-offset: 2px !important;
}
</style>
<script>
(() => {
if (window.terraRossVideoTitlesInstalled) return;
window.terraRossVideoTitlesInstalled = true;
const selector = '.jdgm-videos-carousel iframe';
function labelFrame(frame) {
if (!frame.matches(selector)) return;
if ((frame.getAttribute('title') || '').trim()) return;
const carousel = frame.closest('.jdgm-videos-carousel');
const card = frame.closest('.jdgm-card');
const cards = Array.from(carousel.querySelectorAll('.jdgm-card'));
const index = cards.indexOf(card);
const suffix = index >= 0 ? ' ' + (index + 1) : '';
frame.setAttribute('title', 'Terra Ross customer video review' + suffix);
}
function scan(root) {
if (!(root instanceof Element)) return;
if (root.matches(selector)) labelFrame(root);
root.querySelectorAll(selector).forEach(labelFrame);
}
scan(document.body);
// Handle app content added later. Only inspect added subtrees, not the
// entire document on every mutation. Title writes are idempotent.
const observer = new MutationObserver(records => {
records.forEach(record => {
if (record.type === 'attributes') {
if (record.target.matches(selector)) labelFrame(record.target);
} else {
record.addedNodes.forEach(scan);
}
});
});
observer.observe(document.body, {
childList: true,
subtree: true,
attributes: true,
attributeFilter: ['title']
});
})();
</script>
<script>
/* Terra Ross: keep Judge.me accessible names aligned with visible labels. */
(() => {
'use strict';
if (window.terraRossJudgeMeLabelFix) return;
window.terraRossJudgeMeLabelFix = true;
const selector = 'a.jm-average-rating-display, button.jm-voting-controls__button';
const labels = new WeakMap();
const normalize = (value) => (value || '').replace(/\s+/g, ' ').trim();
function fixLabel(element) {
if (!element.isConnected || element.hasAttribute('aria-labelledby')) return;
// The rating link already contains its meaningful accessible name.
// Let the browser derive it from the content instead of duplicating it.
if (element.matches('a.jm-average-rating-display')) {
if (element.hasAttribute('aria-label')) element.removeAttribute('aria-label');
return;
}
const visible = normalize(element.innerText);
const current = normalize(element.getAttribute('aria-label'));
// Leave unlabelled controls and empty/hidden controls to the widget.
if (!visible || !current) return;
const previous = labels.get(element);
const original = previous && current === previous.applied
? previous.original : current;
// Retain the action description, including helpful / not helpful.
const next = original.toLocaleLowerCase().includes(visible.toLocaleLowerCase())
? original : visible + ' — ' + original;
labels.set(element, { original: original, applied: next });
if (current !== next) element.setAttribute('aria-label', next);
}
function scan(root) {
if (!(root instanceof Element)) return;
if (root.matches(selector)) fixLabel(root);
root.querySelectorAll(selector).forEach(fixLabel);
}
function start() {
scan(document.body);
const observer = new MutationObserver((mutations) => {
const changed = new Set();
mutations.forEach((mutation) => {
const target = mutation.target instanceof Element
? mutation.target : mutation.target.parentElement;
const control = target && target.closest(selector);
if (control) changed.add(control);
if (mutation.type === 'childList') mutation.addedNodes.forEach(scan);
});
changed.forEach(fixLabel);
});
observer.observe(document.body, {
childList: true,
characterData: true,
subtree: true,
attributes: true,
attributeFilter: ['aria-label']
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', start, { once: true });
} else {
start();
}
})();
</script>
<script src="//www.terra-ross.fr/cdn/shop/t/27/assets/component-invoice-request.js?v=159716906997312218141791782194" defer></script>
<style> span.powered-by-shopify {display: none;} .product-item__text.text-size--xsmall.text-line-height--medium.equalize-white-space {min-height: 28px;} .restock-rocket-button.restock-rocket-button-collection {margin-top: 10px !important;} .product-item__icons.restock-rocket-collection-rendered {margin-top: 12px;} .product-item__text {justify-content: end;} .css-slider-container .product-item:has([href*="shipping-insurance"]) {display: none !important;} .shop-the-look__slider .star-rating__caption {display: block;} @media screen and (max-width: 474px) {.palm-hide {display: block !important; }} @media screen and (min-width: 1024px) {.site-nav.style--classic nav > ul > li:first-child > .submenu.normal-menu {width: max-content; min-width: 330px; max-width: none; } .site-nav.style--classic nav > ul > li:first-child > .submenu.normal-menu .menu-link {white-space: nowrap; }} @media screen and (max-width: 767px) {footer .footer-item__menu, footer .footer-item__menu > span {min-width: 0; max-width: 100%; } footer .footer-item__menu a {white-space: normal; overflow-wrap: anywhere; }} /* Междуредие за статиите в падащото търсене */.search-results-container a[href*="/blogs/"] {display: block; line-height: 1.45 !important;} </style>
<div id="shopify-block-AWitpMC8rZDJCSlg4R__15573056287721514228" class="shopify-block shopify-app-block json-ld-for-seo"><!-- generated: 2026-10-16 19:59:55 +0300 -->
<!-- BEGIN app snippet: json_ld_for_seo_web_page --><script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"@id": "https:\/\/www.terra-ross.fr\/blogs\/truffle-guides#json-ld-for-seo-webpage",
"url": "https:\/\/www.terra-ross.fr\/blogs\/truffle-guides",
"image": null,
"primaryImageOfPage": null,
"dateCreated": null,
"datePublished": null
}
</script>
<!-- END app snippet -->
<!-- wp 0 --><!-- BEGIN app snippet: json_ld_for_seo_organization -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "OnlineStore","@id": "https:\/\/www.terra-ross.com\/#org",
"name": "Terra Ross",
"url": "https:\/\/www.terra-ross.fr",
"description": "Achetez de la truffe fraîche en ligne : truffes noires et blanches de saison. Livraison express en France, Belgique, Luxembourg et Monaco.",
"telephone": "+49 177 1592737",
"logo": "https:\/\/www.terra-ross.com\/cdn\/shop\/files\/new-logo-1_392713c8-060a-4ce1-9c90-6501b655ab28.png?v=1742573686",
"image": "https:\/\/www.terra-ross.com\/cdn\/shop\/files\/new-logo-1_392713c8-060a-4ce1-9c90-6501b655ab28.png?v=1742573686",
"sameAs": ["","https:\/\/www.facebook.com\/people\/Terra-Ross-Truffles\/61575664750779\/"],
"brand": {
"@type": "Brand",
"name": "Terra Ross"
},
"address": {
"@type": "PostalAddress",
"streetAddress": "3 Mebelna Street",
"addressLocality": "Razgrad",
"addressRegion": "Razgrad",
"postalCode": "7200",
"addressCountry": "BG"
},
"contactPoint": [
{
"@type": "ContactPoint",
"telephone": "+49 177 1592737",
"email": "[email protected]"
}
]}
</script>
<!-- END app snippet --> <!-- o 1 --><!-- BEGIN app snippet: json_ld_for_seo_product_group --><!-- END app snippet -->
<!-- p 1 --><!-- A 4 -->
</div><div id="shopify-block-AVXBQNStRQmpsZWtaO__12914283376487586735" class="shopify-block shopify-app-block">
<script type="application/json" id="octava-cart-embed-config">
{
"buttonText": "Select Pickup Office",
"enhanceCheckout": true,
"compatibilityMode": true,
"shop": "truffle-house-en.myshopify.com",
"appHandle": "izpratibg",
"backendBaseUrl": "",
"appProxyBaseUrl": "",
"attributionLogoUrl": "https:\/\/cdn.shopify.com\/extensions\/01a14534-96e8-7c71-bf3b-5f44b282c53f\/shpfy-240-d02de962\/assets\/trimitein-logo.png",
"showCompanyForm": false,
"showAdditionalText": false,
"doNotRequireEmail": false,
"requireCitySelection": false,
"showAddressLine2": false,
"checkoutBrowserGeolocationEnabled": true,
"checkoutMapEnabled": true,
"initialDeliveryOptionSort": "carrier",
"deliveryTypeOrder": "office_locker_address",
"showPrecheckoutPaymentMethod": false,
"showNextStepPaymentHint": false,
"destinationTarget": "cart",
"checkoutFlow": "prefilled_cart",
"precheckoutTemplate": "compact",
"popupSize": "full",
"containerId": "octava-checkout-popup-embed",
"locale": "fr",
"language": "fr",
"country": "BE",
"allProductsUrl": "\/collections\/all",
"hideDynamicCheckoutButtons": true,
"attributionPoweredByPrefix": "Powered by ",
"attributionMarkWord": "ИЗПРАТИ.БГ",
"attributionUrl": "https:\/\/izprati.bg",
"demoBannerText": "Demo mode — preview only. Enable \u0026quot;Enable for customers\u0026quot; in this embed for shoppers.",
"demoEmbedActiveText": "Pre-checkout embed is active on this page (demo link). Click Check out to test.",
"demoEcontCompatButtonLabel": "Test Izprati.BG",
"demoEmptyCartText": "Add a product to test the checkout preview.",
"demoChooseProductLabel": "Choose a product",
"demoCancelPreviewLabel": "Cancel preview"
}
</script>
<script type="application/json" id="octava-cart-embed-labels">
{
"modalTitle": "Delivery \u0026 checkout",
"contactTitle": "Contact",
"phoneLabel": "Phone",
"phonePlaceholder": "Phone",
"emailLabel": "Email",
"emailPlaceholder": "Email address",
"optionalLabel": "optional",
"firstName": "First name",
"lastName": "Last name",
"deliveryMethodTitle": "Delivery method",
"toOffice": "To Office",
"toBox": "To locker",
"toOfficeAndLocker": "To office \/ locker",
"office": "Office",
"locker": "Locker",
"toAddress": "To Address",
"toShopifyPickup": "Store pickup",
"shopifyPickupDescription": "Pick up from the store location",
"shopifyPickupCarrier": "Store pickup",
"orderSummary": "Order Summary",
"subtotal": "Subtotal",
"delivery": "Delivery",
"freeDelivery": "For free",
"chooseDelivery": "Choose delivery",
"codTax": "COD fee",
"total": "Total",
"discount": "Discount",
"youSave": "You save",
"promoPlaceholder": "Discount code",
"promoApply": "Apply",
"promoInvalid": "Enter a discount code",
"promoError": "Could not apply discount code",
"promoApplying": "Applying...",
"promoApplied": "Applied",
"promoRemove": "Remove",
"promoRemoving": "Removing...",
"promoUpdating": "Updating discount and delivery...",
"deliveryPricesUpdating": "Updating delivery prices...",
"deliveryPriceVerifying": "Checking delivery price...",
"deliveryPriceChanged": "Delivery price changed. Please review and continue again.",
"cartAvailabilityChanged": "Some items in your cart are no longer available or their quantities changed. Please review your cart before continuing.",
"addressRevalidating": "Checking address...",
"addressUnavailable": "Unavailable for this address",
"suggestedLocalityContext": "Suggested location: {locality}",
"promoNotApplicable": "This discount code is not valid for your cart",
"promoFreeDeliveryExcluded": "This promo code cannot be combined with free delivery. Delivery is charged separately.",
"wheelRewardApplied": "Wheel reward applied",
"wheelRewardNotApplied": "Wheel reward could not be applied",
"quantityLabel": "Qty",
"decreaseQuantity": "Decrease quantity for {item}",
"increaseQuantity": "Increase quantity for {item}",
"removeItem": "Remove",
"removeItemAria": "Remove {item}",
"cartItemUpdateError": "Could not update this item. Please try again.",
"continueLabel": "Continue →",
"nextStepLabel": "Next step →",
"nextStepPaymentHint": "You will choose your payment method in the next step.",
"deliverySoon": "Delivery options will be available soon.",
"noShippingOptions": "No shipping options available for this delivery method.",
"deliveryNotRequiredNotice": "No delivery is required for the products in your cart.",
"deliveryNotRequiredSummary": "Not required",
"softCalculationError": "It\u0026#39;s not possible to calculate delivery at this step. Please continue to the next step.",
"softCalculationRetry": "Retry",
"processing": "Processing...",
"creatingOrder": "Creating your order...",
"orderCreatedRedirecting": "Order created. Redirecting...",
"invalidEmail": "Invalid email format",
"invalidPhone": "Phone is invalid",
"pleaseSelectDeliveryMethod": "Please select a delivery method",
"pleaseSelectShippingOption": "Please select a shipping option",
"pleaseSelectPickupPoint": "Please select a pickup point",
"pleaseSelectPaymentMethod": "Please select a payment method",
"pleaseAcceptTerms": "Please accept the terms and conditions",
"requiredField": "{field} is required",
"loading": "Loading...",
"errorLoadingForm": "Error loading form",
"localityLabel": "City",
"localityPlaceholder": "Start typing to search for your city",
"localityNoResults": "No cities found",
"pleaseSelectLocality": "Please select a city",
"pickupSearchPlaceholder": "Search by city, office, or address",
"pickupChangePoint": "Change pickup point",
"pickupNoResults": "No locations found",
"nearMe": "Near me",
"servicePointSortLabel": "Sort:",
"servicePointSortNearest": "Nearest",
"servicePointSortAlphabetical": "A–Z",
"allCarriers": "Carriers",
"locating": "Locating...",
"searchingMore": "Searching...",
"paginationPrevious": "Previous",
"paginationNext": "Next",
"paginationPage": "Page",
"paginationPageOf": "Page {page} of {total}",
"mapTitle": "Pickup map",
"pickupPoints": "pickup points",
"noServicePoints": "No pickup points found",
"mapLegend": "Legend",
"mapCarrierLabel": "Carrier",
"mapSelectPoint": "Select",
"mapSelectedPoint": "Selected",
"mapCurrentLocation": "Current location",
"tabOffices": "Offices",
"tabLockers": "Lockers",
"addressPostcodeLabel": "Postcode (optional)",
"addressPostcodePlaceholder": "Postcode (optional)",
"addressStreet1Label": "Street",
"addressStreet1Placeholder": "Street",
"addressStreet2Label": "Street 2",
"addressStreet2Placeholder": "Street 2 (optional)",
"paymentMethodTitle": "Payment method",
"cashOnDelivery": "Cash on delivery",
"paymentCard": "Card",
"paymentPayPal": "PayPal",
"paymentManual": "Manual payment",
"prepaidOnlyBadge": "Prepaid only",
"prepaidOnlyNotice": "Payment is available online only",
"completeOrderLabel": "Complete Order",
"selectOfficePlaceholder": "Select office\/locker",
"filterByCity": "Filter by city (optional)",
"companySectionTitle": "Company",
"companyNameLabel": "Company name",
"companyNamePlaceholder": "Legal company name",
"companyEikLabel": "Company tax ID",
"companyEikPlaceholder": "E.g. EIK \/ UIC \/ VAT number",
"companyVatRegisteredLabel": "Registered for VAT",
"additionalTextLabel": "Additional text",
"additionalTextPlaceholder": "Additional delivery details",
"fiscalIdLabel": "Fiscal ID \/ Tax Number",
"fiscalIdPlaceholder": "Enter fiscal ID (optional)",
"poweredByPrefix": "Powered by ",
"poweredByMarkWord": "ИЗПРАТИ.БГ",
"attributionUrl": "https:\/\/izprati.bg",
"noCalculatorRatesNotice": "To show delivery options, finish setup in the Izprati.bg app: open Home, find «Office selection at checkout (Basic)», and tap Configure.",
"noCalculatorRatesDocsLabel": "setup guide",
"noCalculatorRatesDocsUrl": "https:\/\/izprati.bg\/docs\/custom-chekout\/",
"noCalculatorRatesHelpPrefix": "For help, contact ",
"noCalculatorRatesContactLabel": "izprati.bg",
"noCalculatorRatesContactUrl": "https:\/\/izprati.bg",
"freePlanBrandingNote": "Branding is removed when you activate a paid subscription.",
"termsAcceptPrefix": "I agree to the ",
"termsLinkLabel": "terms and conditions",
"termsAcceptSuffix": ".",
"privacyAcceptPrefix": "I have read the ",
"privacyLinkLabel": "privacy policy",
"privacyAcceptSuffix": "."
}
</script>
<script
src="https://cdn.shopify.com/extensions/01a14534-96e8-7c71-bf3b-5f44b282c53f/shpfy-240-d02de962/assets/cart-button-injector.js?v=1792169995"
defer
data-custom-delivery-injector
data-enabled="false"
data-css-url="https://cdn.shopify.com/extensions/01a14534-96e8-7c71-bf3b-5f44b282c53f/shpfy-240-d02de962/assets/checkout-popup.css?v=1792169995"
data-popup-js-url="https://cdn.shopify.com/extensions/01a14534-96e8-7c71-bf3b-5f44b282c53f/shpfy-240-d02de962/assets/delivery-selector-runtime.js?v=1792169995"
></script>
<link href="//cdn.shopify.com/extensions/01a14534-96e8-7c71-bf3b-5f44b282c53f/shpfy-240-d02de962/assets/cart-button-injector.css?v=1792169995" rel="stylesheet" type="text/css" media="all" />
</div><script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
<shopify-chat></shopify-chat>
</body>
</html>
| # |
Url |
Url |
Source |
Date |
| 1 |
https://www.terra-ross.fr/blogs/tr… |
|
2026-10-16 16:59:56 |
| 2 |
https://auth.acog.org/OAuth/SignIn… |
|
2026-10-16 16:59:56 |
| 3 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 16:59:56 |
| 4 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 16:59:56 |
| 5 |
https://auth.mediacorp.sg/u/login?… |
|
2026-10-16 16:59:55 |
| 6 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 16:59:54 |
| 7 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 16:59:54 |
| 8 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 16:59:53 |
| 9 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 16:59:53 |
| 10 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 16:59:53 |
| 11 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 16:59:52 |
| 12 |
https://filedn.eu/lXvDNJGJo3S0aUrN… |
|
2026-10-16 16:59:51 |
| 13 |
https://www.ky58.cc/dz/home.php?mo… |
|
2026-10-16 16:59:51 |
| 14 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 16:59:51 |
| 15 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 16:59:50 |
| 16 |
https://childrensbunkbeds91954.is-… |
|
2026-10-16 16:59:50 |
| 17 |
https://www.texarkanatwins.com/%25… |
|
2026-10-16 16:59:50 |
| 18 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 16:59:49 |
| 19 |
https://auth.mediacorp.sg/u/login?… |
|
2026-10-16 16:59:49 |
| 20 |
https://www.retart.sk/?URL=https%3… |
|
2026-10-16 16:59:49 |