/* ==========================================================================
   Moulures & Déco : pages v2 (fiche produit, boutique, panier, commande,
   contact, notre maison, module rendez-vous).
   Chargée APRÈS main.css. N'écrase aucune règle existante hors § Extensions.
   ========================================================================== */

:root {
	--snz-sand: #FAF7F3;
	--snz-sand-2: #FBF8F4;
	--snz-line-w: #EFE7DC;
	--snz-line-2: #E6DCD0;
	--snz-body: #5A514A;
	--snz-mute: #A79A8C;
	--snz-topbar-h: 38px;
}

/* ------------------------------------------------------------ Utilitaires */
.snz-v2 { background: var(--snz-white); }
.snz-scrollx { overflow-x: auto; scrollbar-width: none; -ms-overflow-style: none; }
.snz-scrollx::-webkit-scrollbar { display: none; }

.snz-eyebrow--v2 { font-size: 10px; font-weight: 400; letter-spacing: 0.20em; text-transform: uppercase; color: var(--snz-grey); margin: 0 0 12px; }
.snz-h2--v2 { font-family: var(--snz-font-title); font-size: clamp(24px, 2.6vw, 40px); line-height: 1.06; letter-spacing: 0.02em; text-transform: uppercase; margin: 0; }
.snz-lead { font-size: 14.5px; line-height: 1.85; color: var(--snz-body); }
.snz-copy { font-size: 13.5px; line-height: 1.75; color: var(--snz-body); }

.snz-fade-to-cream { background: linear-gradient(180deg, #FFF 0%, var(--snz-sand) 45%, var(--snz-cream) 100%); }
.snz-fade-to-white { background: linear-gradient(180deg, var(--snz-cream) 0%, var(--snz-sand) 45%, #FFF 100%); }

/* Boutons luxe : plus fins que .snz-btn, jamais gras */
.snz-btn--pill {
	display: inline-flex; align-items: center; justify-content: center;
	height: 42px; padding: 0 26px; border-radius: 999px;
	font-size: 10px; font-weight: 400; letter-spacing: 0.16em; text-transform: uppercase;
	border: 1px solid var(--snz-brown); background: var(--snz-brown); color: #fff;
	transition: background .35s var(--snz-ease), border-color .35s var(--snz-ease), color .35s var(--snz-ease);
}
.snz-btn--pill:hover { background: var(--snz-bordeaux); border-color: var(--snz-bordeaux); color: #fff; }
.snz-btn--ghost { background: transparent; color: var(--snz-ink); border-color: var(--snz-line-2); }
.snz-btn--ghost:hover { background: var(--snz-brown); border-color: var(--snz-brown); color: #fff; }
.snz-btn--onbrown { background: var(--snz-cream); border-color: var(--snz-cream); color: var(--snz-ink); }
.snz-btn--onbrown:hover { background: var(--snz-nude); border-color: var(--snz-nude); color: var(--snz-ink); }
.snz-btn--onbrown-ghost { background: transparent; border-color: rgba(245,239,232,.32); color: var(--snz-cream); }
.snz-btn--onbrown-ghost:hover { background: rgba(245,239,232,.06); border-color: var(--snz-cream); color: var(--snz-cream); }

.snz-underlink {
	display: inline-flex; align-items: center; gap: 8px;
	padding-bottom: 4px; border-bottom: 1px solid #DDD3C6;
	font-size: 10.5px; letter-spacing: 0.16em; text-transform: uppercase;
	transition: border-color .3s var(--snz-ease);
}
.snz-underlink:hover { border-color: var(--snz-ink); color: var(--snz-ink); }

/* Onglet / filtre en typo signature */
.snz-sigtab {
	flex: 0 0 auto; background: none; border: 0; padding: 0 0 12px;
	font-family: var(--snz-font-title); font-size: clamp(17px, 1.5vw, 22px);
	line-height: 1; letter-spacing: 0.03em; text-transform: uppercase;
	white-space: nowrap; color: var(--snz-mute);
	background-image: linear-gradient(currentColor, currentColor);
	background-repeat: no-repeat; background-position: 0 100%; background-size: 0% 1px;
	transition: color .35s var(--snz-ease), background-size .4s var(--snz-ease);
}
.snz-sigtab:hover { color: var(--snz-ink); }
.snz-sigtab.is-active { color: var(--snz-ink); background-size: 100% 1px; }

/* Accordéon sans saut de ligne résiduel */
.snz-collapse { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .45s var(--snz-ease); }
.snz-collapse.is-open { grid-template-rows: 1fr; }
.snz-collapse > * { overflow: hidden; min-height: 0; }
.snz-collapse__toggle {
	width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 20px;
	padding: 16px 0; background: none; border: 0; text-align: left; color: var(--snz-ink);
	font-family: inherit; font-size: 14px; line-height: 1.4;
}
.snz-collapse__icon { flex: 0 0 auto; font-size: 16px; font-weight: 300; line-height: 1; color: var(--snz-grey); transition: transform .4s var(--snz-ease); }
.is-open > .snz-collapse__toggle .snz-collapse__icon,
.snz-collapse__toggle[aria-expanded="true"] .snz-collapse__icon { transform: rotate(45deg); }

/* Parallaxe : le décalage est borné au débord, l'image ne sort jamais du cadre */
[data-parallax] { will-change: transform; }

/* Révélation (complète [data-reveal] du thème sans le redéfinir) */
.snz-rv { opacity: 0; transform: translateY(22px); transition: opacity 1s var(--snz-ease), transform 1s var(--snz-ease); }
.snz-rv.is-inview { opacity: 1; transform: none; }

@keyframes snzRise { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@keyframes snzWipe { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }
@keyframes snzPulse { 0%, 100% { opacity: .35; transform: scale(1); } 50% { opacity: 0; transform: scale(2.4); } }
@keyframes snzCheck { from { stroke-dashoffset: 34; } to { stroke-dashoffset: 0; } }

/* ==========================================================================
   Extensions de classes existantes (seule zone de recouvrement avec main.css)
   ========================================================================== */

.snz-card__badge--new { background: #fff; color: var(--snz-ink); }
.snz-card__badge--sale { background: var(--snz-bordeaux); color: #fff; }
.snz-card__old { color: var(--snz-grey); text-decoration: line-through; margin-right: 7px; }

/* Slider au survol : zones de détection + pastilles */
.snz-card__zones { position: absolute; inset: 0; z-index: 3; display: flex; }
.snz-card__zone { flex: 1; }
.snz-card__dots { position: absolute; left: 0; right: 0; bottom: 10px; z-index: 4; display: flex; justify-content: center; gap: 5px; opacity: 0; transition: opacity .35s var(--snz-ease); }
.snz-card:hover .snz-card__dots { opacity: 1; }
.snz-card__dot { width: 14px; height: 1px; background: rgba(23,19,16,.28); transition: background .3s; }
.snz-card__dot.is-active { background: var(--snz-ink); }
.snz-card__img--slide { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .5s var(--snz-ease); }
.snz-card__img--slide.is-active { opacity: 1; }

/* ==========================================================================
   Boutique et catégories
   ========================================================================== */

.snz-shop--v2 { background: var(--snz-white); }

.snz-shop__hero--v2 { position: relative; height: clamp(280px, 34vh, 380px); overflow: hidden; background: var(--snz-brown); display: flex; align-items: flex-end; }
.snz-shop__hero--v2 img { position: absolute; inset: -12% 0; width: 100%; height: 124%; object-fit: cover; }
.snz-shop__hero--v2::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(23,19,16,.42) 0%, rgba(23,19,16,.18) 45%, rgba(23,19,16,.62) 100%); }
.snz-shop__heroin { position: relative; z-index: 2; width: 100%; padding-bottom: clamp(26px, 3vw, 40px); color: #fff; }
.snz-shop__crumb { font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase; opacity: .78; margin-bottom: auto; padding-top: clamp(18px, 2.4vw, 30px); animation: snzRise .8s var(--snz-ease) both; }
.snz-shop__crumb a:hover { color: #fff; opacity: .7; }
.snz-shop__title--v2 { font-family: var(--snz-font-title); font-size: clamp(30px, 3.6vw, 52px); line-height: 1.02; letter-spacing: 0.02em; text-transform: uppercase; margin: 0 0 8px; animation: snzRise .9s .06s var(--snz-ease) both; }
.snz-shop__desc--v2 { max-width: 520px; font-size: 14px; line-height: 1.6; opacity: .85; margin: 0; animation: snzRise .9s .12s var(--snz-ease) both; }

/* Barre de filtres : suit le header, y compris la barre promo */
.snz-filterbar {
	position: sticky; top: var(--snz-header-h); z-index: 60;
	background: rgba(255,255,255,.94); backdrop-filter: blur(16px);
	border-bottom: 1px solid var(--snz-line-w);
	transition: top .25s var(--snz-ease), box-shadow .4s var(--snz-ease);
}
body.snz-has-topbar .snz-filterbar { top: calc(var(--snz-header-h) + var(--snz-topbar-h)); }
body.snz-has-topbar.is-scrolled .snz-filterbar { top: var(--snz-header-h); }
.snz-filterbar.is-stuck { box-shadow: 0 1px 18px -8px rgba(23,19,16,.18); }

.snz-filterbar__in { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: clamp(14px, 2vw, 28px); height: 64px; }
.snz-filterbar__scroll { position: relative; min-width: 0; }
.snz-filterbar__track { display: flex; align-items: center; gap: clamp(18px, 2.2vw, 34px); scroll-behavior: smooth; }
.snz-filterbar__fade { position: absolute; top: 0; bottom: 0; width: 40px; pointer-events: none; opacity: 0; transition: opacity .3s; }
.snz-filterbar__fade--l { left: 0; background: linear-gradient(90deg, #fff, rgba(255,255,255,0)); }
.snz-filterbar__fade--r { right: 0; width: 56px; background: linear-gradient(270deg, #fff, rgba(255,255,255,0)); }
.snz-filterbar__scroll.can-l .snz-filterbar__fade--l,
.snz-filterbar__scroll.can-r .snz-filterbar__fade--r { opacity: 1; }
.snz-filterbar__next {
	position: absolute; right: 0; top: 50%; transform: translateY(-50%);
	width: 26px; height: 26px; border-radius: 999px; border: 1px solid var(--snz-line-2);
	background: #fff; color: var(--snz-ink); display: flex; align-items: center; justify-content: center;
	opacity: 0; pointer-events: none; transition: opacity .3s;
}
.snz-filterbar__scroll.can-r .snz-filterbar__next { opacity: 1; pointer-events: auto; }
.snz-filterbar__aside { display: flex; align-items: center; gap: 14px; padding-left: clamp(14px, 2vw, 24px); border-left: 1px solid var(--snz-line-w); }
.snz-shop__count--v2 { font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--snz-grey); white-space: nowrap; margin: 0; }

.snz-sortbtn { display: inline-flex; align-items: center; gap: 8px; height: 32px; padding: 0 15px; border: 1px solid var(--snz-line-2); background: #fff; border-radius: 999px; font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase; white-space: nowrap; transition: border-color .3s; }
.snz-sortbtn:hover { border-color: var(--snz-brown); }
.snz-sortbtn--m { display: none; }
/* Le select WooCommerce reste dans le DOM : il porte le comportement de tri */
.snz-shop__orderby--v2 { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

.snz-sortsheet { position: fixed; left: 50%; bottom: 0; z-index: 171; width: min(420px, 100%); background: #fff; transform: translateX(-50%) translateY(100%); transition: transform .5s var(--snz-ease); box-shadow: 0 -20px 50px -30px rgba(23,19,16,.5); }
.snz-sortsheet.is-open { transform: translateX(-50%) translateY(0); }
.snz-sortsheet__head { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid var(--snz-line-w); }
.snz-sortsheet__opt { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 13px 20px; background: none; border: 0; text-align: left; font-size: 13.5px; transition: background .25s; }
.snz-sortsheet__opt:hover { background: var(--snz-sand); }
.snz-sortsheet__tick { font-size: 12px; color: var(--snz-bordeaux); opacity: 0; }
.snz-sortsheet__opt.is-active .snz-sortsheet__tick { opacity: 1; }
.snz-sheetveil { position: fixed; inset: 0; z-index: 170; background: rgba(23,19,16,.4); backdrop-filter: blur(2px); opacity: 0; visibility: hidden; transition: opacity .4s var(--snz-ease), visibility .4s; }
.snz-sheetveil.is-open { opacity: 1; visibility: visible; }

.snz-shop__grid--v2 { background: #fff; }
.snz-shopgrid--v2 { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(16px, 1.8vw, 26px) clamp(12px, 1.4vw, 20px); padding: clamp(22px, 2.6vw, 34px) 0 clamp(40px, 4.6vw, 64px); }
.snz-shop__sentinel { height: 1px; }
.snz-shop__more { text-align: center; padding: 10px 0 0; }
.snz-shop__status { text-align: center; margin: 38px 0 0; font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--snz-grey); }

/* Guide SEO */
.snz-guide { background: linear-gradient(180deg, #FFF 0%, var(--snz-sand) 55%, var(--snz-cream) 100%); }
.snz-guide__grid { display: grid; grid-template-columns: 1.25fr 0.75fr; gap: clamp(28px, 4vw, 72px); align-items: start; padding: clamp(44px, 5vw, 76px) 0; }
.snz-guide__media { position: relative; min-height: 320px; overflow: hidden; background: #F2ECE4; }
.snz-guide__media img { position: absolute; inset: -8% 0; width: 100%; height: 116%; object-fit: cover; }
.snz-guide p + p { margin-top: 14px; }

/* ==========================================================================
   Bloc showroom (réutilisé sur 4 pages)
   ========================================================================== */

.snz-showroom { background: var(--snz-brown); color: var(--snz-cream); overflow: hidden; }
.snz-showroom__grid { display: grid; grid-template-columns: 1fr 1.05fr; align-items: stretch; max-width: var(--snz-container); margin: 0 auto; }
.snz-showroom__grid--flip { grid-template-columns: 1.05fr 1fr; }
.snz-showroom__media { position: relative; min-height: clamp(280px, 34vw, 480px); overflow: hidden; }
.snz-showroom__media img { position: absolute; inset: -8% 0; width: 100%; height: 116%; object-fit: cover; }
.snz-showroom__body { padding: clamp(40px, 5vw, 80px) var(--snz-gutter); display: flex; flex-direction: column; justify-content: center; }
.snz-showroom__eyebrow { font-size: 10px; letter-spacing: 0.20em; text-transform: uppercase; color: var(--snz-nude); margin: 0 0 14px; }
.snz-showroom__title { font-family: var(--snz-font-title); font-size: clamp(26px, 2.8vw, 40px); line-height: 1.06; letter-spacing: 0.02em; text-transform: uppercase; margin: 0 0 18px; }
.snz-showroom__text { max-width: 440px; font-size: 14px; line-height: 1.75; color: rgba(245,239,232,.72); margin: 0 0 26px; }
.snz-showroom__actions { display: flex; flex-wrap: wrap; gap: 10px; }
.snz-showroom__rows { display: grid; max-width: 400px; margin: 0 0 26px; }
.snz-showroom__row { display: flex; justify-content: space-between; gap: 14px; padding: 9px 0; border-bottom: 1px solid rgba(245,239,232,.14); font-size: 12.5px; }
.snz-showroom__row span:first-child { color: rgba(245,239,232,.66); }
.snz-showroom__live { position: absolute; left: 18px; top: 18px; z-index: 2; display: inline-flex; align-items: center; gap: 8px; background: rgba(38,24,15,.72); backdrop-filter: blur(8px); padding: 8px 13px; font-size: 9.5px; letter-spacing: 0.16em; text-transform: uppercase; }
.snz-showroom__pulse { position: relative; width: 6px; height: 6px; border-radius: 999px; background: #8FBF7F; }
.snz-showroom__pulse::after { content: ""; position: absolute; inset: 0; border-radius: 999px; background: #8FBF7F; animation: snzPulse 2.4s infinite; }

/* ==========================================================================
   Bloc FAQ (section autonome)
   ========================================================================== */

.snz-faq { background: var(--snz-cream); border-top: 1px solid var(--snz-line-w); }
.snz-faq__in { max-width: 920px; margin: 0 auto; padding: clamp(44px, 5vw, 80px) var(--snz-gutter); }
.snz-faq__head { text-align: center; margin-bottom: clamp(24px, 3vw, 38px); }
.snz-faq__list { border-top: 1px solid var(--snz-line); }
.snz-faq__item { border-bottom: 1px solid var(--snz-line); }
.snz-faq__item .snz-collapse__toggle { font-size: 14.5px; padding: 18px 0; }
.snz-faq__answer { margin: 0; padding: 0 0 20px; font-size: 14px; line-height: 1.8; color: var(--snz-body); max-width: 660px; }
.snz-faq__foot { text-align: center; margin: clamp(24px, 3vw, 34px) 0 0; font-size: 13px; color: var(--snz-grey); }
.snz-faq--onwhite { background: #fff; border-top-color: var(--snz-line-w); }

/* ==========================================================================
   Fiche produit
   ========================================================================== */

.snz-pdp { background: #fff; }
.snz-pdp__crumb { font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--snz-grey); padding: 16px 0 0; }
.snz-pdp__grid { display: grid; grid-template-columns: 1.28fr 1fr; gap: clamp(28px, 4vw, 68px); align-items: start; padding: clamp(14px, 1.8vw, 24px) 0 clamp(40px, 5vw, 72px); max-width: 1420px; margin: 0 auto; }

/* Galerie carrousel */
.snz-gal { position: relative; aspect-ratio: 4/5; overflow: hidden; background: #F2ECE4; }
.snz-gal__slide { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .7s var(--snz-ease), transform 1.4s var(--snz-ease); }
.snz-gal__slide.is-active { opacity: 1; }
.snz-gal:hover .snz-gal__slide.is-active { transform: scale(1.03); }
.snz-gal__nav { position: absolute; top: 50%; z-index: 4; width: 38px; height: 38px; border-radius: 999px; border: 0; background: rgba(255,255,255,.92); color: var(--snz-ink); display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity .4s var(--snz-ease), transform .4s var(--snz-ease); }
.snz-gal__nav--prev { left: 14px; transform: translateY(-50%) translateX(-8px); }
.snz-gal__nav--next { right: 14px; transform: translateY(-50%) translateX(8px); }
.snz-gal:hover .snz-gal__nav { opacity: 1; transform: translateY(-50%) translateX(0); }
.snz-gal__count { position: absolute; top: 14px; right: 14px; z-index: 4; background: rgba(255,255,255,.92); padding: 5px 10px; font-size: 9px; letter-spacing: 0.14em; text-transform: uppercase; }
.snz-gal__thumbs {
	position: absolute; left: 0; right: 0; bottom: 0; z-index: 4;
	display: flex; gap: 6px; justify-content: center; padding: 14px;
	background: linear-gradient(180deg, rgba(23,19,16,0) 0%, rgba(23,19,16,.42) 100%);
	transform: translateY(100%); opacity: 0;
	transition: transform .5s var(--snz-ease), opacity .4s var(--snz-ease);
}
.snz-gal:hover .snz-gal__thumbs { transform: translateY(0); opacity: 1; }
.snz-gal__thumb { flex: 0 0 auto; width: 58px; aspect-ratio: 3/4; padding: 0; border: 0; overflow: hidden; background: #F2ECE4; outline: 1px solid transparent; outline-offset: -1px; opacity: .55; transition: opacity .35s var(--snz-ease), outline-color .35s; }
.snz-gal__thumb.is-active { opacity: 1; outline-color: #fff; }
.snz-gal__thumb img { width: 100%; height: 100%; object-fit: cover; }

/* Galerie mobile : slider plein format, sans vignettes */
.snz-galm { position: relative; display: none; }
.snz-galm__track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; }
.snz-galm__slide { flex: 0 0 100%; scroll-snap-align: center; aspect-ratio: 4/5; overflow: hidden; background: #F2ECE4; }
.snz-galm__slide img { width: 100%; height: 100%; object-fit: cover; }
.snz-galm__dots { position: absolute; left: 0; right: 0; bottom: 14px; display: flex; justify-content: center; gap: 6px; z-index: 3; }
.snz-galm__dot { width: 16px; height: 2px; background: rgba(23,19,16,.25); transition: background .3s; }
.snz-galm__dot.is-active { background: var(--snz-ink); }
.snz-pdp__mhead { display: none; padding: 20px var(--snz-gutter) 0; }

/* Colonne d'achat */
.snz-pdp__info { position: sticky; top: calc(var(--snz-header-h) + 20px); padding-bottom: 20px; }
.snz-pdp__brand { font-size: 9px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--snz-grey); margin: 0 0 6px; }
.snz-pdp__title { font-family: var(--snz-font-title); font-size: clamp(26px, 2.7vw, 40px); line-height: 1.04; letter-spacing: 0.02em; text-transform: uppercase; margin: 0 0 12px; }
.snz-pdp__excerpt { font-size: 13.5px; line-height: 1.75; color: var(--snz-body); max-width: 420px; margin: 0 0 20px; }
.snz-pdp__price { display: flex; align-items: baseline; gap: 10px; margin: 0 0 26px; font-size: 23px; }
.snz-pdp__price .snz-price-unit,
.snz-pdp__price small { font-size: 11px; color: var(--snz-grey); }

.snz-buybox { background: var(--snz-sand); padding: clamp(18px, 1.8vw, 24px); margin-bottom: 22px; }
.snz-buybox__label { font-size: 9px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--snz-grey); margin: 0 0 9px; }
.snz-buybox__row { margin-bottom: 18px; }
.snz-buybox__row:last-of-type { margin-bottom: 0; }

.snz-swatches { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.snz-swatch { padding: 11px 13px; text-align: left; border-radius: 2px; border: 1px solid var(--snz-line-2); background: #fff; color: var(--snz-ink); transition: all .3s var(--snz-ease); }
.snz-swatch b { display: block; font-size: 12px; font-weight: 400; line-height: 1.3; }
.snz-swatch small { display: block; font-size: 10px; margin-top: 2px; color: var(--snz-mute); }
.snz-swatch.is-active { background: var(--snz-brown); border-color: var(--snz-brown); color: #fff; }
.snz-swatch.is-active small { color: rgba(255,255,255,.6); }

.snz-pills { display: flex; gap: 8px; flex-wrap: wrap; }
.snz-pill { flex: 0 0 auto; height: 30px; padding: 0 13px; border-radius: 999px; border: 1px solid var(--snz-line-2); background: #fff; color: var(--snz-ink); font-size: 10.5px; letter-spacing: 0.08em; white-space: nowrap; transition: all .3s var(--snz-ease); }
.snz-pill.is-active { background: var(--snz-brown); border-color: var(--snz-brown); color: #fff; }
.snz-pill[disabled] { opacity: .4; text-decoration: line-through; }

.snz-qty { flex: 0 0 auto; display: flex; align-items: center; border: 1px solid var(--snz-line-2); border-radius: 999px; height: 46px; background: #fff; }
.snz-qty button { width: 38px; height: 44px; background: none; border: 0; font-size: 15px; color: var(--snz-ink); }
.snz-qty input { width: 34px; text-align: center; border: 0; background: none; font-family: inherit; font-size: 13px; color: var(--snz-ink); -moz-appearance: textfield; }
.snz-qty input::-webkit-outer-spin-button, .snz-qty input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.snz-qty--sm { height: 38px; }
.snz-qty--sm button { width: 32px; height: 36px; font-size: 14px; }

.snz-buybox__cta { display: flex; gap: 9px; align-items: stretch; }
.snz-addcart { flex: 1; height: 46px; border-radius: 999px; border: 1px solid var(--snz-brown); background: var(--snz-brown); color: #fff; font-size: 10.5px; font-weight: 400; letter-spacing: 0.16em; text-transform: uppercase; white-space: nowrap; transition: background .35s var(--snz-ease), border-color .35s; }
.snz-addcart:hover { background: var(--snz-bordeaux); border-color: var(--snz-bordeaux); }
.snz-addcart.is-done { background: var(--snz-bordeaux); border-color: var(--snz-bordeaux); }
.snz-buybox__total { margin: 11px 0 0; font-size: 11.5px; color: var(--snz-grey); }

.snz-pdp__assur { display: flex; flex-wrap: wrap; gap: 22px; margin-bottom: 24px; }
.snz-pdp__assur li { display: flex; align-items: center; gap: 9px; font-size: 11.5px; line-height: 1.4; color: var(--snz-body); }
.snz-pdp__assur svg { width: 17px; height: 17px; color: var(--snz-nude); flex: 0 0 auto; }
.snz-pdp__links { display: flex; gap: 18px; flex-wrap: wrap; }
.snz-pdp__links button, .snz-pdp__links a { display: inline-flex; align-items: center; gap: 7px; background: none; border: 0; padding: 0 0 3px; border-bottom: 1px solid #DDD3C6; font-size: 10.5px; letter-spacing: 0.13em; text-transform: uppercase; color: var(--snz-ink); transition: border-color .3s; }
.snz-pdp__links button:hover, .snz-pdp__links a:hover { border-color: var(--snz-ink); }

/* Onglets techniques */
.snz-pdptabs { background: var(--snz-cream); border-top: 1px solid var(--snz-line-w); }
.snz-pdptabs__in { padding: clamp(30px, 3.4vw, 48px) 0 clamp(40px, 4.6vw, 66px); }
.snz-pdptabs__nav { display: flex; gap: clamp(20px, 2.4vw, 38px); border-bottom: 1px solid var(--snz-line); margin-bottom: clamp(22px, 2.6vw, 34px); }
.snz-pdptabs__grid { display: grid; grid-template-columns: 1.15fr 0.85fr; gap: clamp(24px, 3.4vw, 60px); align-items: start; }
.snz-pdptabs__panel { display: none; }
.snz-pdptabs__panel.is-active { display: block; animation: snzRise .5s var(--snz-ease) both; }
.snz-pdptabs__panel p { font-size: 14.5px; line-height: 1.85; color: #3E3630; margin: 0 0 14px; }
.snz-specs { background: #fff; padding: clamp(18px, 2vw, 26px); }
.snz-specs__label { font-size: 9px; letter-spacing: 0.20em; text-transform: uppercase; color: var(--snz-grey); margin: 0 0 14px; }
.snz-specs__row { display: flex; justify-content: space-between; gap: 14px; padding: 8px 0; font-size: 12.5px; }
.snz-specs__row dt { color: var(--snz-grey); margin: 0; }
.snz-specs__row dd { margin: 0; }

/* Produits associés */
.snz-related { border-top: 1px solid var(--snz-line-w); }
.snz-related__head { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; flex-wrap: wrap; margin-bottom: clamp(16px, 1.8vw, 24px); }
.snz-related__arrows { display: flex; gap: 6px; }
.snz-related__arrow { width: 38px; height: 38px; border-radius: 999px; border: 1px solid var(--snz-line-2); background: #fff; color: var(--snz-ink); display: inline-flex; align-items: center; justify-content: center; transition: background .3s, border-color .3s, color .3s; }
.snz-related__arrow:hover { background: var(--snz-brown); border-color: var(--snz-brown); color: #fff; }
.snz-related__nav { display: flex; gap: clamp(18px, 2.2vw, 34px); border-bottom: 1px solid var(--snz-line); margin-bottom: clamp(20px, 2.4vw, 30px); }
.snz-related__track { display: flex; gap: clamp(12px, 1.4vw, 20px); scroll-snap-type: x mandatory; scroll-behavior: smooth; }
.snz-related__track > * { flex: 0 0 clamp(190px, 17vw, 250px); scroll-snap-align: start; }

/* Barre collante */
.snz-stickybar {
	position: fixed; left: 0; right: 0; bottom: 0; z-index: 150;
	background: rgba(255,255,255,.95); backdrop-filter: blur(16px);
	border-top: 1px solid var(--snz-line-w); padding: 10px 0;
	transform: translateY(110%); transition: transform .55s var(--snz-ease);
}
.snz-stickybar.is-visible { transform: translateY(0); }
.snz-stickybar__in { display: flex; align-items: center; gap: clamp(10px, 1.6vw, 22px); min-height: 62px; }
.snz-stickybar__thumb { flex: 0 0 auto; width: 42px; height: 42px; overflow: hidden; background: #F2ECE4; }
.snz-stickybar__thumb img { width: 100%; height: 100%; object-fit: cover; }
.snz-stickybar__id { flex: 0 0 auto; min-width: 118px; }
.snz-stickybar__id p { margin: 0; font-size: 12.5px; line-height: 1.3; white-space: nowrap; }
.snz-stickybar__id small { font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--snz-grey); white-space: nowrap; }
.snz-stickybar__opts { flex: 1; min-width: 0; display: flex; align-items: center; gap: 6px; }
.snz-stickybar__sep { flex: 0 0 auto; width: 1px; height: 20px; background: var(--snz-line); margin: 0 3px; }
.snz-stickybar__cta { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 10px; height: 38px; padding: 0 20px; border-radius: 999px; border: 1px solid var(--snz-brown); background: var(--snz-brown); color: #fff; font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; white-space: nowrap; min-width: max-content; transition: background .35s var(--snz-ease); }
.snz-stickybar__cta:hover { background: var(--snz-bordeaux); }
.snz-stickybar__cta span { white-space: nowrap; }
.snz-stickybar__cta em { font-style: normal; opacity: .62; }
.snz-stickyspace { height: 84px; }

/* Panneau dessin technique */
.snz-techveil { position: fixed; inset: 0; z-index: 190; background: rgba(23,19,16,.45); backdrop-filter: blur(2px); opacity: 0; visibility: hidden; transition: opacity .4s var(--snz-ease), visibility .4s; }
.snz-techveil.is-open { opacity: 1; visibility: visible; }
.snz-techpanel { position: fixed; top: 0; right: 0; bottom: 0; width: min(520px, 100%); background: #fff; z-index: 200; display: flex; flex-direction: column; transform: translateX(100%); transition: transform .5s var(--snz-ease); box-shadow: -24px 0 60px -30px rgba(23,19,16,.4); }
.snz-techpanel.is-open { transform: translateX(0); }
.snz-techpanel__head { display: flex; align-items: center; justify-content: space-between; padding: 22px var(--snz-gutter); border-bottom: 1px solid var(--snz-line-w); }
.snz-techpanel__body { padding: clamp(24px, 3vw, 40px); overflow-y: auto; }
.snz-techpanel__draw { background: var(--snz-sand); padding: clamp(20px, 3vw, 40px); display: flex; justify-content: center; }

/* ==========================================================================
   Panier
   ========================================================================== */

.snz-cart { background: #fff; }
.snz-cart__in { max-width: 1240px; margin: 0 auto; padding: clamp(22px, 3vw, 40px) var(--snz-gutter) clamp(48px, 5vw, 80px); }
.snz-cart__head { display: flex; align-items: baseline; justify-content: space-between; gap: 20px; flex-wrap: wrap; margin-bottom: 6px; }
.snz-cart__title { font-family: var(--snz-font-title); font-size: clamp(26px, 3vw, 42px); line-height: 1.04; letter-spacing: 0.02em; text-transform: uppercase; margin: 0; }
.snz-cart__count { margin: 0 0 clamp(20px, 2.4vw, 30px); font-size: 12px; color: var(--snz-grey); }
.snz-steps { display: flex; align-items: center; gap: 10px; margin-bottom: clamp(24px, 3vw, 36px); }
.snz-steps__i { display: flex; align-items: center; gap: 7px; padding-right: 10px; border-right: 1px solid var(--snz-line); }
.snz-steps__i:last-child { border-right: 0; padding-right: 0; }
.snz-steps__dot { width: 6px; height: 6px; border-radius: 999px; background: #D6CCC0; }
.snz-steps__i.is-active .snz-steps__dot { background: var(--snz-brown); }
.snz-steps__i span { font-size: 9.5px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--snz-grey); }
.snz-steps__i.is-active span { color: var(--snz-ink); }

.snz-cart__grid { display: grid; grid-template-columns: 1fr 316px; gap: clamp(24px, 3.4vw, 52px); align-items: start; }
.snz-cart__thead { display: grid; grid-template-columns: 1fr auto auto; gap: 14px; padding-bottom: 10px; border-bottom: 1px solid var(--snz-line); font-size: 9px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--snz-grey); }
.snz-cart__line { display: grid; grid-template-columns: 70px 1fr auto auto; gap: 14px; align-items: start; padding: 16px 0; border-bottom: 1px solid var(--snz-line); animation: snzRise .6s var(--snz-ease) both; }
.snz-cart__media { display: block; width: 70px; aspect-ratio: 3/4; overflow: hidden; background: #F2ECE4; }
.snz-cart__media img { width: 100%; height: 100%; object-fit: cover; }
.snz-cart__ref { margin: 0 0 2px; font-size: 9px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--snz-grey); }
.snz-cart__name { display: block; font-size: 14px; line-height: 1.35; margin-bottom: 3px; }
.snz-cart__meta { margin: 0 0 6px; font-size: 12px; color: var(--snz-grey); }
.snz-cart__unit { margin: 0; font-size: 12px; color: var(--snz-body); }
.snz-cart__remove { margin-top: 7px; background: none; border: 0; padding: 0; font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--snz-grey); border-bottom: 1px solid transparent; transition: color .3s, border-color .3s; }
.snz-cart__remove:hover { color: var(--snz-bordeaux); border-color: var(--snz-bordeaux); }
.snz-cart__sub { margin: 0; min-width: 70px; text-align: right; font-size: 14px; }

.snz-recap { position: sticky; top: calc(var(--snz-header-h) + 20px); }
.snz-recap__box { background: #fff; border: 1px solid var(--snz-line-w); padding: 18px 18px 20px; }
.snz-recap--onwhite .snz-recap__box { background: var(--snz-sand-2); }
.snz-recap__label { margin: 0 0 14px; font-size: 10px; letter-spacing: 0.18em; text-transform: uppercase; }
.snz-recap__rows { display: grid; gap: 8px; font-size: 13px; }
.snz-recap__row { display: flex; justify-content: space-between; gap: 12px; }
.snz-recap__row span:first-child { color: #6E635C; }
.snz-recap__row--vat { color: var(--snz-grey); font-size: 11.5px; }
.snz-recap__row--disc { color: var(--snz-bordeaux); }
.snz-recap__total { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--snz-line-w); display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.snz-recap__total dt { font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase; margin: 0; }
.snz-recap__total dd { font-size: 19px; margin: 0; }
.snz-recap__checkout { display: flex; align-items: center; justify-content: center; height: 44px; margin-top: 14px; border-radius: 999px; background: var(--snz-brown); color: #fff; font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; white-space: nowrap; transition: background .35s var(--snz-ease); }
.snz-recap__checkout:hover { background: var(--snz-bordeaux); color: #fff; }
.snz-recap__promo { margin-top: 12px; border-top: 1px solid var(--snz-line-w); }
.snz-recap__promo .snz-collapse__toggle { padding: 11px 0 0; font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; }
.snz-recap__promoform { display: flex; gap: 6px; padding-top: 10px; }
.snz-recap__promoform input { flex: 1; min-width: 0; height: 36px; padding: 0 12px; border: 1px solid var(--snz-line); background: var(--snz-sand-2); font-family: inherit; font-size: 12px; color: var(--snz-ink); }
.snz-recap__promoform button { flex: 0 0 auto; height: 36px; padding: 0 15px; border: 1px solid var(--snz-brown); background: none; font-size: 9.5px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--snz-ink); transition: background .3s, color .3s; }
.snz-recap__promoform button:hover { background: var(--snz-brown); color: #fff; }
.snz-recap__trust { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--snz-line-w); display: grid; gap: 8px; }
.snz-recap__trust li { display: flex; gap: 9px; align-items: center; font-size: 11.5px; line-height: 1.45; color: #6E635C; }
.snz-recap__trust svg { flex: 0 0 auto; width: 15px; height: 15px; color: var(--snz-bordeaux); }
.snz-recap__pays { margin-top: 13px; padding-top: 11px; border-top: 1px solid var(--snz-line-w); display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.snz-recap__pays span { height: 20px; padding: 0 8px; border: 1px solid var(--snz-line-w); border-radius: 3px; display: inline-flex; align-items: center; font-size: 8.5px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--snz-grey); }

.snz-cross { margin-top: clamp(30px, 3.6vw, 48px); border-top: 1px solid var(--snz-line); padding-top: clamp(22px, 2.6vw, 32px); }
.snz-cross__track { display: flex; gap: 12px; }
.snz-cross__card { flex: 0 0 178px; background: #fff; border: 1px solid var(--snz-line-w); }
.snz-cross__card img { aspect-ratio: 1; width: 100%; object-fit: cover; transition: transform .8s var(--snz-ease); }
.snz-cross__card:hover img { transform: scale(1.05); }
.snz-cross__body { padding: 10px 11px 12px; }

/* ==========================================================================
   Commande
   ========================================================================== */

.snz-co { background: linear-gradient(180deg, #FFF 0%, var(--snz-sand-2) 320px); min-height: 100vh; }
.snz-co__in { max-width: 1180px; margin: 0 auto; padding: clamp(22px, 3vw, 38px) var(--snz-gutter) clamp(44px, 5vw, 72px); }
.snz-co__grid { display: grid; grid-template-columns: 1fr 330px; gap: clamp(24px, 3.4vw, 54px); align-items: start; }
.snz-co__form { display: grid; gap: clamp(22px, 2.6vw, 34px); }
.snz-co__step { animation: snzRise .6s var(--snz-ease) both; }
.snz-co__steph { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.snz-co__num { width: 20px; height: 20px; border-radius: 999px; background: var(--snz-brown); color: #fff; font-size: 10px; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; }
.snz-co__steph h2 { font-size: 10.5px; letter-spacing: 0.18em; text-transform: uppercase; margin: 0; }
.snz-co__rule { flex: 1; height: 1px; background: var(--snz-line); }

.snz-co input[type="text"], .snz-co input[type="email"], .snz-co input[type="tel"],
.snz-co input[type="password"], .snz-co select, .snz-co textarea {
	width: 100%; height: 42px; padding: 0 13px; border: 1px solid var(--snz-line);
	background: #fff; font-family: inherit; font-size: 13px; color: var(--snz-ink);
	border-radius: 0; outline: none; transition: border-color .3s var(--snz-ease);
}
.snz-co textarea { height: auto; padding: 11px 13px; line-height: 1.6; resize: vertical; }
.snz-co input:focus, .snz-co select:focus, .snz-co textarea:focus { border-color: var(--snz-brown); }
.snz-co .form-row { margin: 0 0 9px; padding: 0; }
.snz-co .form-row-first, .snz-co .form-row-last { width: 100%; float: none; }
.snz-co label { font-size: 11.5px; color: #6E635C; }

.snz-co__opt { display: flex; gap: 11px; align-items: flex-start; padding: 13px 14px; background: #fff; border: 1px solid var(--snz-line-w); transition: border-color .3s var(--snz-ease); margin: 0 0 7px; }
.snz-co__opt.is-active, .snz-co__opt:has(input:checked) { border-color: var(--snz-brown); }
.snz-co__opt b { display: block; font-size: 13px; font-weight: 400; line-height: 1.4; }
.snz-co__opt small { display: block; font-size: 11.5px; color: var(--snz-grey); margin-top: 1px; }
.snz-co__opt input[type="radio"] { accent-color: var(--snz-brown); margin-top: 1px; }
.snz-co__paybox { background: #fff; border: 1px solid var(--snz-line-w); margin: 0 0 7px; transition: border-color .3s var(--snz-ease); }
.snz-co__paybox.is-active { border-color: var(--snz-brown); }
.snz-co__paylabel { display: flex; gap: 10px; align-items: center; padding: 12px 14px; }
.snz-co__paylabel span { flex: 1; font-size: 13px; }
.snz-co__paytag { font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--snz-grey); }
.snz-co__paybody { padding: 0 14px 14px; }
.snz-co__place { width: 100%; height: 48px; border-radius: 999px; border: 1px solid var(--snz-brown); background: var(--snz-brown); color: #fff; font-size: 10.5px; letter-spacing: 0.16em; text-transform: uppercase; white-space: nowrap; transition: background .35s var(--snz-ease); }
.snz-co__place:hover { background: var(--snz-bordeaux); }
.snz-co__legal { margin: 10px 0 0; font-size: 11px; color: var(--snz-grey); text-align: center; }

.snz-co__item { display: grid; grid-template-columns: 44px 1fr auto; gap: 11px; align-items: center; }
.snz-co__item img { width: 44px; aspect-ratio: 3/4; object-fit: cover; background: #F2ECE4; }
.snz-co__item b { display: block; font-size: 12.5px; font-weight: 400; line-height: 1.35; }
.snz-co__item small { display: block; font-size: 11px; color: var(--snz-grey); }
.snz-co__helper { margin-top: 12px; display: flex; gap: 11px; align-items: center; padding: 0 2px; }
.snz-co__helper img { flex: 0 0 auto; width: 52px; aspect-ratio: 1; object-fit: cover; background: #F2ECE4; }
.snz-co__helper p { margin: 0; font-size: 11.5px; line-height: 1.55; color: var(--snz-grey); }

/* ==========================================================================
   Contact
   ========================================================================== */

.snz-ct { background: #fff; }
.snz-ct__hero { position: relative; min-height: clamp(320px, 42vh, 460px); display: flex; align-items: flex-end; overflow: hidden; background: var(--snz-brown); }
.snz-ct__hero img { position: absolute; inset: -14% 0; width: 100%; height: 128%; object-fit: cover; }
.snz-ct__hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(23,19,16,.5) 0%, rgba(23,19,16,.2) 40%, rgba(23,19,16,.72) 100%); }
.snz-ct__heroin { position: relative; z-index: 2; width: 100%; padding-bottom: clamp(30px, 3.6vw, 50px); color: #fff; }
.snz-ct__herotitle { font-family: var(--snz-font-title); font-size: clamp(30px, 4vw, 58px); line-height: 1; letter-spacing: 0.02em; text-transform: uppercase; margin: 0 0 12px; animation: snzWipe 1.1s .1s var(--snz-ease) both; }

.snz-ct__quick { background: var(--snz-cream); border-bottom: 1px solid var(--snz-line); }
.snz-ct__quickgrid { display: grid; grid-template-columns: repeat(3, 1fr); }
.snz-ct__qi { display: flex; align-items: center; gap: 14px; padding: clamp(20px, 2.4vw, 30px) clamp(14px, 2vw, 26px); border-right: 1px solid #DCD2C6; transition: background .4s var(--snz-ease); }
.snz-ct__qi:last-child { border-right: 0; }
.snz-ct__qi:hover { background: #fff; color: var(--snz-ink); }
.snz-ct__qi svg { flex: 0 0 auto; width: 22px; height: 22px; color: var(--snz-bordeaux); transition: transform .4s var(--snz-ease); }
.snz-ct__qi:hover svg { transform: translateY(-2px); }
.snz-ct__qi small { display: block; font-size: 9.5px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--snz-grey); margin-bottom: 4px; }
.snz-ct__qi b { display: block; font-size: 15px; font-weight: 400; line-height: 1.4; }
.snz-ct__qi em { display: block; font-style: normal; font-size: 11.5px; color: var(--snz-grey); margin-top: 2px; }
.snz-ct__qarrow { margin-left: auto; font-size: 14px; color: var(--snz-grey); opacity: 0; transform: translateX(-6px); transition: all .4s var(--snz-ease); }
.snz-ct__qi:hover .snz-ct__qarrow { opacity: 1; transform: translateX(0); }

.snz-ct__grid { display: grid; grid-template-columns: 1.15fr 0.85fr; gap: clamp(28px, 4vw, 72px); align-items: start; padding: clamp(40px, 5vw, 76px) 0; }
.snz-ct__subjects { display: flex; gap: 7px; flex-wrap: wrap; margin-bottom: 20px; }
.snz-ct__form { display: grid; gap: 10px; }
.snz-ct__form input, .snz-ct__form textarea { width: 100%; height: 44px; padding: 0 13px; border: 1px solid var(--snz-line); background: #fff; font-family: inherit; font-size: 13.5px; color: var(--snz-ink); outline: none; transition: border-color .3s var(--snz-ease); }
.snz-ct__form textarea { height: auto; padding: 12px 13px; line-height: 1.6; resize: vertical; }
.snz-ct__form input:focus, .snz-ct__form textarea:focus { border-color: var(--snz-brown); }
.snz-ct__file { display: flex; gap: 11px; align-items: center; padding: 13px; border: 1px dashed #D6CCC0; background: var(--snz-sand-2); transition: border-color .3s, background .3s; }
.snz-ct__file:hover { border-color: var(--snz-brown); background: #fff; }
.snz-ct__send { margin-top: 6px; height: 48px; border-radius: 999px; border: 1px solid var(--snz-brown); background: var(--snz-brown); color: #fff; font-size: 10.5px; letter-spacing: 0.16em; text-transform: uppercase; transition: background .35s var(--snz-ease); }
.snz-ct__send:hover { background: var(--snz-bordeaux); }

/* Carrousel éditorial */
.snz-carousel { position: relative; aspect-ratio: 3/4; overflow: hidden; background: #EDE5DB; }
.snz-carousel__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 1.2s var(--snz-ease), transform 6s linear; }
.snz-carousel__img.is-active { opacity: 1; transform: scale(1.06); }
.snz-carousel::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(23,19,16,.34) 0%, rgba(23,19,16,.05) 38%, rgba(23,19,16,.72) 100%); }
.snz-carousel__cap { position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; padding: 22px 22px 20px; color: #fff; }
.snz-carousel__texts { position: relative; height: 74px; overflow: hidden; margin-bottom: 16px; }
.snz-carousel__text { position: absolute; left: 0; right: 0; top: 0; opacity: 0; transform: translateY(22px); transition: opacity .7s var(--snz-ease), transform .8s var(--snz-ease); }
.snz-carousel__text.is-active { opacity: 1; transform: translateY(0); }
.snz-carousel__text small { display: block; font-size: 9px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--snz-nude); margin-bottom: 6px; }
.snz-carousel__text b { display: block; font-family: var(--snz-font-title); font-size: clamp(19px, 1.8vw, 25px); font-weight: 400; line-height: 1.12; letter-spacing: 0.02em; text-transform: uppercase; }
.snz-carousel__bars { display: flex; gap: 5px; }
.snz-carousel__bar { flex: 1; height: 2px; padding: 0; border: 0; background: rgba(255,255,255,.28); overflow: hidden; }
.snz-carousel__bar i { display: block; height: 100%; background: #fff; transform-origin: left; transform: scaleX(0); transition: transform .3s; }
.snz-carousel__bar.is-done i { transform: scaleX(1); }
.snz-carousel__bar.is-active i { transform: scaleX(1); transition: transform 4.9s linear; }

.snz-ct__cta { display: flex; align-items: center; justify-content: space-between; gap: 14px; width: 100%; padding: 18px 20px; background: #fff; border: 1px solid var(--snz-line-w); text-align: left; transition: border-color .35s var(--snz-ease), background .35s; }
.snz-ct__cta:hover { border-color: var(--snz-brown); background: var(--snz-sand-2); }
.snz-ct__cta b { display: block; font-family: var(--snz-font-title); font-size: 21px; font-weight: 400; line-height: 1.1; letter-spacing: 0.02em; text-transform: uppercase; }
.snz-ct__cta small { display: block; font-size: 9px; letter-spacing: 0.20em; text-transform: uppercase; color: var(--snz-grey); margin-bottom: 4px; }
.snz-ct__cta i { flex: 0 0 auto; width: 34px; height: 34px; border-radius: 999px; background: var(--snz-brown); color: #fff; display: inline-flex; align-items: center; justify-content: center; }

.snz-ct__delays { background: var(--snz-brown); color: var(--snz-cream); padding: 22px 22px 24px; }
.snz-ct__delays h3 { font-size: 9.5px; letter-spacing: 0.20em; text-transform: uppercase; color: var(--snz-nude); margin: 0 0 12px; }

.snz-flow { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: var(--snz-line); border: 1px solid var(--snz-line); }
.snz-flow__i { background: #fff; padding: clamp(20px, 2.4vw, 28px) clamp(16px, 1.8vw, 24px); transition: background .4s var(--snz-ease); }
.snz-flow__i:hover { background: var(--snz-sand-2); }
.snz-flow__n { display: block; font-family: var(--snz-font-title); font-size: 26px; line-height: 1; color: var(--snz-nude); margin-bottom: 14px; transition: color .4s var(--snz-ease); }
.snz-flow__i:hover .snz-flow__n { color: var(--snz-bordeaux); }

/* ==========================================================================
   Notre maison
   ========================================================================== */

.snz-ab { background: #fff; }
.snz-ab__hero { position: relative; min-height: clamp(360px, 54vh, 560px); display: flex; align-items: flex-end; overflow: hidden; background: var(--snz-brown); }
.snz-ab__hero img { position: absolute; inset: -14% 0; width: 100%; height: 128%; object-fit: cover; }
.snz-ab__hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(23,19,16,.46) 0%, rgba(23,19,16,.16) 42%, rgba(23,19,16,.74) 100%); }
.snz-ab__heroin { position: relative; z-index: 2; width: 100%; padding-bottom: clamp(32px, 4vw, 56px); color: #fff; }
.snz-ab__herotitle { font-family: var(--snz-font-title); font-size: clamp(32px, 4.4vw, 64px); line-height: .98; letter-spacing: 0.02em; text-transform: uppercase; margin: 0 0 14px; animation: snzWipe 1.2s .1s var(--snz-ease) both; }

.snz-ab__story { display: grid; grid-template-columns: 0.42fr 0.58fr; gap: clamp(28px, 4vw, 72px); align-items: start; padding: clamp(44px, 5.4vw, 84px) 0; }
.snz-ab__sticky { position: sticky; top: calc(var(--snz-header-h) + 26px); }
.snz-ab__stickymedia { position: relative; aspect-ratio: 3/4; overflow: hidden; background: #F2ECE4; margin-top: clamp(20px, 2.4vw, 32px); }
.snz-ab__stickymedia img { position: absolute; inset: -8% 0; width: 100%; height: 116%; object-fit: cover; }
.snz-ab__caption { margin: 12px 0 0; font-size: 11.5px; line-height: 1.6; color: var(--snz-grey); }
.snz-ab__prose p { font-size: 14.5px; line-height: 1.8; color: var(--snz-body); margin: 0 0 16px; }
.snz-ab__prose p:first-child { font-size: 15.5px; color: var(--snz-ink); }

.snz-ab__band { position: relative; height: clamp(260px, 38vw, 480px); overflow: hidden; background: var(--snz-brown); }
.snz-ab__band img { position: absolute; inset: -10% 0; width: 100%; height: 120%; object-fit: cover; }
.snz-ab__band::after { content: ""; position: absolute; inset: 0; background: rgba(23,19,16,.28); }
.snz-ab__bandcap { position: absolute; left: var(--snz-gutter); bottom: clamp(20px, 2.6vw, 34px); z-index: 2; margin: 0; max-width: 420px; font-size: 12.5px; line-height: 1.65; color: rgba(245,239,232,.9); }

.snz-pillars { background: var(--snz-cream); }
.snz-pillars__grid { display: grid; grid-template-columns: 0.42fr 0.58fr; gap: clamp(28px, 4vw, 72px); align-items: start; padding: clamp(44px, 5.4vw, 84px) 0; }
.snz-pillar { position: relative; display: grid; grid-template-columns: 52px 1fr; gap: clamp(14px, 1.8vw, 26px); align-items: start; padding: clamp(26px, 3vw, 38px) clamp(16px, 2vw, 28px) clamp(26px, 3vw, 38px) clamp(20px, 2.4vw, 34px); transition: background .5s var(--snz-ease); }
.snz-pillar::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 1px; background: var(--snz-line); transition: background .5s var(--snz-ease); }
.snz-pillar:hover { background: #fff; }
.snz-pillar:hover::before { background: var(--snz-bordeaux); }
.snz-pillar__n { font-family: var(--snz-font-title); font-size: 15px; line-height: 1.6; letter-spacing: 0.08em; color: var(--snz-nude); transition: color .5s var(--snz-ease); }
.snz-pillar:hover .snz-pillar__n { color: var(--snz-bordeaux); }
.snz-pillar__t { margin: 0 0 10px; font-family: var(--snz-font-title); font-size: clamp(21px, 1.9vw, 28px); line-height: 1.05; letter-spacing: 0.02em; text-transform: uppercase; transition: color .5s var(--snz-ease); }
.snz-pillar:hover .snz-pillar__t { color: var(--snz-bordeaux); }
.snz-pillar__d { margin: 0; font-size: 14.5px; line-height: 1.85; color: var(--snz-body); max-width: 540px; }

.snz-works { border-top: 1px solid var(--snz-line-w); background: linear-gradient(180deg, #FFF 0%, var(--snz-sand) 50%, var(--snz-cream) 100%); }
.snz-works__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(12px, 1.4vw, 20px); }
.snz-works__fig { margin: 0; }
.snz-works__media { display: block; position: relative; aspect-ratio: 4/5; overflow: hidden; background: #E6DCD0; }
.snz-works__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--snz-ease); }
.snz-works__fig:hover img { transform: scale(1.05); }

.snz-abcta { background: linear-gradient(180deg, var(--snz-cream) 0%, var(--snz-sand-2) 45%, #FFF 100%); }
.snz-abcta__in { max-width: 1000px; margin: 0 auto; padding: clamp(52px, 6.4vw, 104px) var(--snz-gutter); text-align: center; }
.snz-abcta__title { font-family: var(--snz-font-title); font-size: clamp(28px, 3.6vw, 54px); line-height: 1.02; letter-spacing: 0.02em; text-transform: uppercase; margin: 0 0 18px; }
.snz-abcta__actions { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }

/* ==========================================================================
   Module rendez-vous
   ========================================================================== */

.snz-rdvveil { position: fixed; inset: 0; z-index: 400; background: rgba(23,19,16,.55); backdrop-filter: blur(4px); opacity: 0; visibility: hidden; transition: opacity .45s var(--snz-ease), visibility .45s; }
.snz-rdvveil.is-open { opacity: 1; visibility: visible; }
.snz-rdv {
	position: fixed; left: 50%; top: 50%; z-index: 401;
	width: min(760px, calc(100vw - 28px)); height: min(600px, calc(100vh - 40px));
	background: #fff; box-shadow: 0 40px 90px -40px rgba(23,19,16,.6);
	opacity: 0; visibility: hidden;
	transform: translate(-50%, -50%) scale(.97) translateY(10px);
	transition: opacity .45s var(--snz-ease), transform .5s var(--snz-ease), visibility .45s;
}
.snz-rdv.is-open { opacity: 1; visibility: visible; transform: translate(-50%, -50%) scale(1) translateY(0); }
.snz-rdv__grid { display: grid; grid-template-columns: 230px 1fr; height: 100%; }
.snz-rdv__aside { position: relative; background: var(--snz-brown); color: var(--snz-cream); padding: 26px 24px; display: flex; flex-direction: column; overflow: hidden; }
.snz-rdv__aside img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .22; }
.snz-rdv__asidein { position: relative; z-index: 2; display: flex; flex-direction: column; height: 100%; }
.snz-rdv__asidetitle { font-family: var(--snz-font-title); font-size: 26px; line-height: 1.05; text-transform: uppercase; letter-spacing: 0.02em; margin: 0 0 22px; }
.snz-rdv__recap { display: grid; gap: 1px; background: rgba(245,239,232,.16); }
.snz-rdv__recap div { background: var(--snz-brown); padding: 11px 0; }
.snz-rdv__recap dt { margin: 0 0 2px; font-size: 8.5px; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(245,239,232,.5); }
.snz-rdv__recap dd { margin: 0; font-size: 13px; line-height: 1.4; }
.snz-rdv__recap dd:empty::after, .snz-rdv__recap dd.is-empty { content: "-"; color: rgba(245,239,232,.4); }
.snz-rdv__main { display: flex; flex-direction: column; min-height: 0; }
.snz-rdv__head { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 24px; border-bottom: 1px solid var(--snz-line-w); }
.snz-rdv__steps { display: flex; align-items: center; gap: 9px; }
.snz-rdv__steps b { font-size: 9px; font-weight: 400; letter-spacing: 0.16em; text-transform: uppercase; color: var(--snz-mute); margin-right: 8px; transition: color .35s var(--snz-ease); }
.snz-rdv__steps b:last-child { margin-right: 0; }
.snz-rdv__steps b.is-active { color: var(--snz-ink); }
.snz-rdv__steps i { width: 5px; height: 5px; border-radius: 999px; background: #D6CCC0; transition: background .35s var(--snz-ease); }
.snz-rdv__steps i.is-done { background: var(--snz-brown); }
.snz-rdv__body { flex: 1; overflow-y: auto; padding: 24px; }
.snz-rdv__pane { display: none; }
.snz-rdv__pane.is-active { display: block; animation: snzRise .5s var(--snz-ease) both; }
.snz-rdv__panetitle { font-family: var(--snz-font-title); font-size: 24px; line-height: 1.1; text-transform: uppercase; letter-spacing: 0.02em; margin: 0 0 18px; }

.snz-cal__head { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 14px; }
.snz-cal__month { margin: 0; font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase; }
.snz-cal__nav { width: 32px; height: 32px; border-radius: 999px; border: 1px solid var(--snz-line-2); background: #fff; color: var(--snz-ink); display: inline-flex; align-items: center; justify-content: center; transition: border-color .3s; }
.snz-cal__nav:hover:not([disabled]) { border-color: var(--snz-brown); }
.snz-cal__nav[disabled] { opacity: .35; }
.snz-cal__dow, .snz-cal__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.snz-cal__dow { margin-bottom: 6px; }
.snz-cal__dow span { text-align: center; font-size: 9px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--snz-mute); }
.snz-cal__day { height: 36px; padding: 0; border-radius: 999px; border: 1px solid var(--snz-line-w); background: #fff; font-family: inherit; font-size: 12.5px; color: var(--snz-ink); transition: all .28s var(--snz-ease); }
.snz-cal__day:hover:not([disabled]) { border-color: var(--snz-brown); }
.snz-cal__day[disabled] { background: none; border-color: transparent; color: #D6CCC0; }
.snz-cal__day.is-blank { border: 0; background: none; }
.snz-cal__day.is-active { background: var(--snz-brown); border-color: var(--snz-brown); color: #fff; }

.snz-slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 7px; margin-bottom: 22px; }
.snz-slot { height: 38px; border-radius: 2px; border: 1px solid var(--snz-line-w); background: #fff; font-family: inherit; font-size: 12.5px; color: var(--snz-ink); transition: all .28s var(--snz-ease); }
.snz-slot:hover:not([disabled]) { border-color: var(--snz-brown); }
.snz-slot[disabled] { background: var(--snz-sand); color: #D6CCC0; text-decoration: line-through; }
.snz-slot.is-active { background: var(--snz-brown); border-color: var(--snz-brown); color: #fff; }

.snz-rdv__kinds { display: grid; gap: 6px; }
.snz-rdv__kind { padding: 11px 13px; text-align: left; border-radius: 2px; border: 1px solid var(--snz-line-w); background: #fff; transition: all .3s var(--snz-ease); }
.snz-rdv__kind b { display: block; font-size: 13px; font-weight: 400; line-height: 1.35; }
.snz-rdv__kind small { display: block; font-size: 10.5px; margin-top: 2px; color: var(--snz-mute); }
.snz-rdv__kind.is-active { background: var(--snz-brown); border-color: var(--snz-brown); color: #fff; }
.snz-rdv__kind.is-active small { color: rgba(255,255,255,.6); }

.snz-rdv__fields { display: grid; gap: 9px; }
.snz-rdv__fields input, .snz-rdv__fields textarea { width: 100%; height: 42px; padding: 0 13px; border: 1px solid var(--snz-line-2); background: #fff; font-family: inherit; font-size: 13px; color: var(--snz-ink); outline: none; transition: border-color .3s var(--snz-ease); }
.snz-rdv__fields textarea { height: auto; padding: 11px 13px; line-height: 1.6; resize: vertical; }
.snz-rdv__fields input:focus, .snz-rdv__fields textarea:focus { border-color: var(--snz-brown); }
.snz-rdv__two { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }

.snz-rdv__done { text-align: center; padding: 30px 0; animation: snzRise .6s var(--snz-ease) both; }
.snz-rdv__done svg { margin: 0 auto 20px; display: block; }
.snz-rdv__done path { stroke-dasharray: 34; animation: snzCheck .8s .2s var(--snz-ease) both; }
.snz-rdv__foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 24px; border-top: 1px solid var(--snz-line-w); background: var(--snz-sand-2); }
.snz-rdv__back { height: 38px; padding: 0 18px; border-radius: 999px; border: 1px solid var(--snz-line-2); background: none; font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--snz-ink); transition: border-color .3s var(--snz-ease); }
.snz-rdv__back:hover { border-color: var(--snz-brown); }
.snz-rdv__next { height: 38px; padding: 0 22px; border-radius: 999px; border: 1px solid var(--snz-brown); background: var(--snz-brown); color: #fff; font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; white-space: nowrap; transition: all .3s var(--snz-ease); }
.snz-rdv__next[disabled] { background: #DED4C8; border-color: #DED4C8; }
.snz-rdv.is-done .snz-rdv__foot { display: none; }

/* ==========================================================================
   Responsive
   ========================================================================== */

@media (max-width: 1024px) {
	.snz-pdp__grid { grid-template-columns: 1fr; gap: 0; }
	.snz-pdp__info { position: static; padding: 0 var(--snz-gutter) 40px; }
	.snz-pdp__crumb, .snz-gal { display: none; }
	.snz-galm, .snz-pdp__mhead { display: block; }
	.snz-stickybar__thumb, .snz-stickybar__id { display: none; }
	.snz-pdptabs__grid, .snz-guide__grid, .snz-showroom__grid, .snz-showroom__grid--flip,
	.snz-ct__grid, .snz-ab__story, .snz-pillars__grid { grid-template-columns: 1fr; }
	.snz-showroom__media { min-height: clamp(240px, 46vw, 360px); }
	.snz-ab__sticky { position: static; }
	.snz-ct__quickgrid, .snz-flow { grid-template-columns: 1fr; }
	.snz-ct__qi { border-right: 0; border-bottom: 1px solid #DCD2C6; }
	.snz-shopgrid--v2, .snz-works__grid { grid-template-columns: repeat(2, 1fr); }
	.snz-rdv__grid { grid-template-columns: 1fr; }
	.snz-rdv__aside { display: none; }
}

@media (max-width: 960px) {
	.snz-cart__grid, .snz-co__grid { grid-template-columns: 1fr; }
	.snz-recap, .snz-co__recap { position: static; }
	.snz-co__recap { order: -1; }
}

@media (max-width: 640px) {
	.snz-shopgrid--v2 { grid-template-columns: repeat(2, 1fr); gap: 12px 10px; }
	.snz-works__grid { grid-template-columns: 1fr; }
	.snz-filterbar__aside { display: none; }
	.snz-sortbtn--m { display: inline-flex; }
	.snz-cart__line { grid-template-columns: 70px 1fr; }
	.snz-cart__line .snz-qty { grid-column: 2; justify-self: start; }
	.snz-cart__sub { grid-column: 2; text-align: left; }
	.snz-co__grid .snz-co__form { gap: 22px; }
	.snz-rdv__two { grid-template-columns: 1fr; }
	.snz-swatches { grid-template-columns: 1fr; }
}

/* ==========================================================================
   Mouvement réduit
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
	[data-parallax] { transform: none !important; }
	.snz-rv { opacity: 1; transform: none; }
	.snz-carousel__img.is-active { transform: none; }
	.snz-gal__thumbs, .snz-gal__nav { opacity: 1; transform: none; }
	.snz-gal__nav--prev { transform: translateY(-50%); }
	.snz-gal__nav--next { transform: translateY(-50%); }
}

/* ==========================================================================
   Sans JavaScript
   ========================================================================== */

.no-js .snz-collapse { grid-template-rows: 1fr; }
.no-js .snz-pdptabs__panel { display: block; }
.no-js .snz-pdptabs__nav { display: none; }
.no-js .snz-carousel__img:first-child { opacity: 1; }
.no-js .snz-gal__slide:first-child { opacity: 1; }
.no-js .snz-shop__more { display: block; }
.no-js .snz-rdvveil, .no-js .snz-rdv { display: none; }

/* ====================================================================
   Ajustements d'intégration Snazzy (v3.0.1) : pastilles de variation,
   paiement, livraison, utilitaires manquants. Mêmes tokens que le reste.
   ==================================================================== */

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

/* Pastilles de variation générées depuis les <select> WooCommerce */
.snz-varhidden { position: absolute; left: -9999px; opacity: 0; pointer-events: none; }
.snz-opts { margin: 0 0 14px; }
.snz-opts__label { margin: 0 0 8px; font-size: 9px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--snz-mute); }
.snz-opts__row { display: flex; flex-wrap: wrap; gap: 7px; }
.snz-opt {
	flex: 0 0 auto;
	height: 30px;
	padding: 0 13px;
	border-radius: 999px;
	border: 1px solid #E6DCD0;
	background: #fff;
	color: #171310;
	font-family: var(--snz-font-body);
	font-size: 10.5px;
	letter-spacing: 0.08em;
	white-space: nowrap;
	cursor: pointer;
	transition: all 0.3s var(--snz-ease);
}
.snz-opt:hover { border-color: var(--snz-ink); color: var(--snz-ink); }
.snz-opt.is-active { background: #26180F; border-color: #26180F; color: #fff; }
.snz-opts--sm { margin: 0; }
.snz-opts--sm .snz-opts__row { flex-wrap: nowrap; }
.snz-opts--sm .snz-opt { font-size: 10px; padding: 6px 11px; }
.snz-buybox .reset_variations { display: inline-block; margin: 2px 0 10px; font-size: 10.5px; color: var(--snz-mute); border-bottom: 1px solid var(--snz-line-2); }
.snz-buybox .woocommerce-variation-price { display: none; }
.snz-buybox .woocommerce-variation-availability { font-size: 11.5px; color: var(--snz-body); margin-bottom: 8px; }

/* Étape mode de livraison : les rangs natifs posés dans une vraie table */
.snz-co__shiptable { width: 100%; border-collapse: collapse; }
.snz-co__shiptable th { display: none; }
.snz-co__shiptable td { padding: 0; }
.snz-co__shiptable ul#shipping_method, .snz-co__shiptable ul.woocommerce-shipping-methods { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.snz-co__shiptable ul li { background: var(--snz-white); border: 1px solid var(--snz-line-w); padding: 12px 14px; display: flex; gap: 10px; align-items: baseline; font-size: 13px; transition: border-color 0.25s var(--snz-ease); }
.snz-co__shiptable ul li:has(input:checked) { border-color: var(--snz-brown); }
.snz-co__shiptable input[type="radio"] { accent-color: var(--snz-brown); }
.snz-co__shiptable label { cursor: pointer; }
.snz-co__shiptable .woocommerce-shipping-destination, .snz-co__shiptable .woocommerce-shipping-calculator { font-size: 11px; color: var(--snz-mute); margin: 8px 0 0; }
/* Les rangs livraison de la table de droite sont masqués (évite le doublon) */
.woocommerce-checkout-review-order-table tr.woocommerce-shipping-totals { display: none; }

/* Paiement : les blocs natifs WooCommerce aux tokens de la page */
.woocommerce-checkout #payment { background: transparent; }
.wc_payment_methods { list-style: none; margin: 0 0 14px; padding: 0; display: grid; gap: 8px; }
.wc_payment_method { background: var(--snz-white); border: 1px solid var(--snz-line-w); padding: 13px 15px; transition: border-color 0.25s var(--snz-ease); }
.wc_payment_method:has(input:checked) { border-color: var(--snz-brown); }
.wc_payment_method > label { font-size: 13px; cursor: pointer; display: inline-flex; gap: 9px; align-items: center; }
.wc_payment_method input[type="radio"] { accent-color: var(--snz-brown); }
.wc_payment_method .payment_box { margin: 10px 0 0; font-size: 11.5px; line-height: 1.6; color: var(--snz-body); background: var(--snz-sand-2); padding: 10px 12px; }
.woocommerce-checkout #payment .form-row.place-order { margin: 0; padding: 0; }
.woocommerce-terms-and-conditions-wrapper { font-size: 10.5px; line-height: 1.6; color: var(--snz-mute); margin-bottom: 12px; }
#place_order {
	width: 100%;
	border: 0;
	background: var(--snz-brown);
	color: #fff;
	font-family: var(--snz-font-body);
	font-size: 10px;
	font-weight: 400;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	padding: 16px 18px;
	border-radius: 999px;
	cursor: pointer;
	transition: background 0.3s var(--snz-ease), letter-spacing 0.3s var(--snz-ease);
	white-space: nowrap;
}
#place_order:hover { background: var(--snz-ink); letter-spacing: 0.18em; }
.woocommerce-checkout .blockUI.blockOverlay { background: rgba(250, 247, 243, 0.6) !important; }

/* Formulaire coupon natif : fonctionnel mais hors champ (notre champ le pilote) */
.woocommerce-form-coupon-toggle, form.checkout_coupon { position: absolute; left: -9999px; opacity: 0; }

/* Notice d'erreur inline sous la buybox */
.snz-formnotice { background: var(--snz-sand-2); border-left: 2px solid var(--snz-bordeaux); padding: 11px 14px; font-size: 12px; color: var(--snz-body); margin: 0 0 12px; }

/* ------------------------------------------------------------------
   Produits simples : formulaire natif WooCommerce habille comme la
   maquette. Le JS pose snz-qty et snz-addcart (styles ci-dessus) ;
   les regles suivantes assurent le meme rendu avant JS et sans JS.
   Portee stricte : jamais les formulaires a variations.
   ------------------------------------------------------------------ */
.snz-buybox form.cart:not(.variations_form) { display: flex; align-items: center; gap: 12px; }
.snz-buybox form.cart:not(.variations_form) .quantity { flex: 0 0 auto; display: flex; align-items: center; height: 46px; border: 1px solid var(--snz-line-2); border-radius: 999px; background: #fff; }
.snz-buybox form.cart:not(.variations_form) .quantity .qty { width: 44px; height: 44px; text-align: center; border: 0; background: none; font-family: inherit; font-size: 13px; color: var(--snz-ink); -moz-appearance: textfield; }
.snz-buybox form.cart:not(.variations_form) .quantity .qty::-webkit-outer-spin-button,
.snz-buybox form.cart:not(.variations_form) .quantity .qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.snz-buybox form.cart:not(.variations_form) .single_add_to_cart_button { flex: 1; height: 46px; border-radius: 999px; border: 1px solid var(--snz-brown); background: var(--snz-brown); color: #fff; font-size: 10.5px; font-weight: 400; letter-spacing: 0.16em; text-transform: uppercase; white-space: nowrap; cursor: pointer; transition: background .35s var(--snz-ease), border-color .35s; }
.snz-buybox form.cart:not(.variations_form) .single_add_to_cart_button:hover { background: var(--snz-bordeaux); border-color: var(--snz-bordeaux); }

/* ------------------------------------------------------------------
   Carte produit : bouton "Voir le produit" en pilule compacte, remonte
   au-dessus de la zone basse de l'image pour ne plus gener le slider
   au survol. Redefinit les deux etats apres main.css.
   ------------------------------------------------------------------ */
.snz-card .snz-card__view { left: 50%; right: auto; bottom: 58px; width: auto; transform: translate(-50%, 10px); padding: 9px 18px; font-size: 10.5px; letter-spacing: 0.14em; border-radius: 999px; background: rgba(28, 24, 20, 0.9); white-space: nowrap; }
.snz-card:hover .snz-card__view, .snz-card:focus-within .snz-card__view { opacity: 1; transform: translate(-50%, 0); }

/* ------------------------------------------------------------------
   Panier et commande : ces pages ont un fond blanc, le header creme y
   dessinait un bandeau beige au-dessus du contenu. Header blanc des le
   chargement sur ces deux pages uniquement.
   ------------------------------------------------------------------ */
body.woocommerce-cart .snz-header, body.woocommerce-checkout .snz-header { background: var(--snz-white); box-shadow: 0 1px 0 var(--snz-line); }

/* ------------------------------------------------------------------
   Avis Google : bandeau au-dessus du footer.
   ------------------------------------------------------------------ */
.snz-gavis { background: var(--snz-white); border-top: 1px solid var(--snz-line); padding: 64px 0 58px; }
.snz-gavis__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 14px; margin-bottom: 30px; }
.snz-gavis__score { display: flex; align-items: center; gap: 10px; }
.snz-gavis__g { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border: 1px solid var(--snz-line-2); border-radius: 50%; font-weight: 600; font-size: 15px; color: var(--snz-ink); background: #fff; }
.snz-gavis__note { font-family: 'the-seasons', 'Cormorant Garamond', Georgia, serif; font-size: 24px; color: var(--snz-ink); }
.snz-gavis__stars { color: var(--snz-line-2); font-size: 14px; letter-spacing: 2px; }
.snz-gavis__star.is-on { color: #C9A24B; }
.snz-gavis__stars--sm { font-size: 12px; margin: 0 0 10px; }
.snz-gavis__count { font-size: 12px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--snz-ink-2); }
.snz-gavis__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.snz-gavis__card { margin: 0; padding: 22px 20px; background: var(--snz-sand-2); border: 1px solid var(--snz-line); }
.snz-gavis__text { margin: 0 0 14px; font-size: 13.5px; line-height: 1.7; color: var(--snz-ink); }
.snz-gavis__meta { font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--snz-ink-2); }
.snz-gavis__more { margin: 26px 0 0; text-align: center; }
@media (max-width: 1023px) { .snz-gavis__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 639px) { .snz-gavis { padding: 46px 0 42px; } .snz-gavis__grid { grid-template-columns: 1fr; } }

/* ------------------------------------------------------------------
   Ils nous ont fait confiance : marquee en defilement continu.
   Piste dupliquee, pause au survol, respect de la preference de
   reduction des animations.
   ------------------------------------------------------------------ */
.snz-trust { background: var(--snz-white); padding: 8px 0 56px; overflow: hidden; }
.snz-trust__label { margin: 0 0 22px; text-align: center; font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--snz-ink-2); }
.snz-trust__viewport { position: relative; }
.snz-trust__viewport::before, .snz-trust__viewport::after { content: ""; position: absolute; top: 0; bottom: 0; width: 90px; z-index: 2; pointer-events: none; }
.snz-trust__viewport::before { left: 0; background: linear-gradient(90deg, var(--snz-white), transparent); }
.snz-trust__viewport::after { right: 0; background: linear-gradient(270deg, var(--snz-white), transparent); }
.snz-trust__track { display: flex; width: max-content; animation: snz-trust-scroll 36s linear infinite; }
.snz-trust__viewport:hover .snz-trust__track { animation-play-state: paused; }
.snz-trust__group { display: flex; align-items: center; flex: 0 0 auto; }
.snz-trust__item { font-family: 'the-seasons', 'Cormorant Garamond', Georgia, serif; font-size: clamp(20px, 2.4vw, 30px); text-transform: uppercase; letter-spacing: 0.04em; color: var(--snz-ink); white-space: nowrap; padding: 0 26px; }
.snz-trust__sep { color: var(--snz-line-2); font-size: 14px; }
@keyframes snz-trust-scroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .snz-trust__track { animation: none; flex-wrap: wrap; justify-content: center; width: 100%; } .snz-trust__group[aria-hidden="true"] { display: none; } }

/* ------------------------------------------------------------------
   Galerie fiche produit : les visuels catalogue Orac sont des detoures
   blancs, le cadrage cover les recoupait n'importe comment. Passage en
   contain centre sur le fond sable : produit toujours entier et centre.
   ------------------------------------------------------------------ */
.snz-gal__slide { object-fit: contain; }
.snz-galm__slide img { object-fit: contain; }

/* ------------------------------------------------------------------
   Correctifs d'audit 5.4.1.
   ------------------------------------------------------------------ */

/* Quantite produit simple : les steppers peuvent venir de main.js
   (.snz-qtywrap) ou du pont v2. Style unique pour les deux origines,
   et neutralisation des styles de formulaire globaux sur le champ. */
.snz-buybox form.cart:not(.variations_form) .quantity button { width: 38px; height: 44px; background: none; border: 0; font-size: 15px; color: var(--snz-ink); cursor: pointer; }
.snz-buybox form.cart:not(.variations_form) .snz-qtywrap { display: flex; align-items: center; }
.snz-qty input[type="number"], .snz-buybox form.cart:not(.variations_form) .quantity input[type="number"] { border: 0; background: transparent; box-shadow: none; height: 44px; padding: 0; width: 38px; text-align: center; font-family: inherit; font-size: 13px; color: var(--snz-ink); }
.snz-qty--sm input[type="number"] { height: 36px; }

/* Fil d'Ariane fiche produit : quelle que soit l'extension qui en
   imprime un second hors du gabarit (SEO, constructeur), seul celui du
   gabarit v2 reste visible. */
body.single-product .woocommerce-breadcrumb { display: none; }
body.single-product .snz-pdp__crumb .woocommerce-breadcrumb { display: block; }

/* Topbar : le message inactif est entierement masque, plus de
   superposition de deux messages pendant la rotation. */
.snz-topbar__msg { opacity: 0; visibility: hidden; }
.snz-topbar__msg.is-active { opacity: 1; visibility: visible; }

/* ------------------------------------------------------------------
   Modale rendez-vous : panneau lateral en aplat #26180F strictement
   conforme au prototype (Rendez-vous.dc.html). La photo de fond ajoutee
   ensuite eclaircissait le panneau et faisait ressortir les blocs du
   recapitulatif comme des pavés.
   ------------------------------------------------------------------ */
.snz-rdv__aside img { display: none; }

/* ------------------------------------------------------------------
   Fidelite au prototype Produit.dc.html (5.6.0).
   ------------------------------------------------------------------ */

/* Icones des liens fiche produit : taille compacte garantie meme si un
   SVG arrive sans dimensions. */
.snz-pdp__links svg { width: 15px; height: 15px; flex: 0 0 auto; }
.snz-pdp__assur svg { width: 15px; height: 15px; flex: 0 0 auto; }

/* Galerie et cartes : les photos catalogue Orac sont des JPG a fond
   blanc, leur blanc recouvrait le fond sable et la page ressortait
   vide. Le mode de fusion multiply rend le blanc transparent : le
   produit se pose sur le sable comme dans le prototype. */
.snz-gal__slide, .snz-galm__slide img, .snz-gal__thumb img { mix-blend-mode: multiply; }
.snz-card__media img { mix-blend-mode: multiply; }
.snz-card__media { background: #F2ECE4; }

/* ------------------------------------------------------------------
   Prose des pages editoriales (a propos) et de l'onglet description :
   intertitres de contenu dans la direction artistique, espacements,
   listes et liens, et verrous anti debordement (les contenus importes
   contiennent des URLs longues insecables qui faisaient exploser la
   colonne de grille et decalaient toute la page).
   ------------------------------------------------------------------ */
.snz-ab__story > *, .snz-pdptabs__grid > * { min-width: 0; }
.snz-ab__prose, .snz-pdptabs__panel { overflow-wrap: anywhere; }

.snz-ab__prose h2, .snz-ab__prose h3, .snz-ab__prose h4,
.snz-pdptabs__panel h2, .snz-pdptabs__panel h3, .snz-pdptabs__panel h4 {
	font-family: 'the-seasons', 'Cormorant Garamond', Georgia, serif;
	font-weight: 400;
	text-transform: uppercase;
	letter-spacing: 0.02em;
	line-height: 1.15;
	color: var(--snz-ink);
	margin: 34px 0 12px;
}
.snz-ab__prose h2, .snz-pdptabs__panel h2 { font-size: 24px; }
.snz-ab__prose h3, .snz-pdptabs__panel h3 { font-size: 20px; }
.snz-ab__prose h4, .snz-pdptabs__panel h4 { font-size: 16px; letter-spacing: 0.08em; }
.snz-ab__prose > h2:first-child, .snz-ab__prose > h3:first-child,
.snz-pdptabs__panel > h2:first-child, .snz-pdptabs__panel > h3:first-child { margin-top: 0; }

.snz-ab__prose ul, .snz-ab__prose ol, .snz-pdptabs__panel ul, .snz-pdptabs__panel ol { margin: 0 0 16px; padding-left: 18px; }
.snz-ab__prose li, .snz-pdptabs__panel li { font-size: 14.5px; line-height: 1.8; color: var(--snz-body); margin: 0 0 6px; }
.snz-ab__prose a, .snz-pdptabs__panel a { color: var(--snz-ink); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: #C9BBA8; word-break: break-all; }
.snz-ab__prose a:hover, .snz-pdptabs__panel a:hover { text-decoration-color: var(--snz-ink); }
.snz-ab__prose img, .snz-pdptabs__panel img { max-width: 100%; height: auto; }

/* Fiche produit : page blanche des le header comme le prototype
   Produit.dc.html, plus de bande beige autour du haut de fiche. */
body.single-product { background: var(--snz-white); }
body.single-product .snz-header { background: var(--snz-white); box-shadow: 0 1px 0 var(--snz-line); }

/* ------------------------------------------------------------------
   Correctifs 5.7.1.
   ------------------------------------------------------------------ */

/* Formulaire contact : la regle generique des champs (largeur 100 %,
   hauteur 44 px) s'appliquait aussi a la case a cocher RGPD, affichee
   en enorme pave brun. Retour a une case native compacte. */
.snz-ct__form input[type="checkbox"] { width: 15px; height: 15px; min-height: 0; padding: 0; flex: 0 0 auto; accent-color: var(--snz-brown); }

/* Panneau dessin technique : le conteneur centrait l'image en flex
   ligne, le texte et le bouton du repli Orac se retrouvaient cote a
   cote et le bouton s'ecrasait sur trois lignes. Passage en colonne
   centree, bouton insecable. */
.snz-techpanel__draw { flex-direction: column; align-items: center; }
.snz-techpanel__draw .snz-btn--pill { white-space: nowrap; }

/* ------------------------------------------------------------------
   Correctifs 5.7.2, fidelite haut de fiche et galerie.
   ------------------------------------------------------------------ */

/* Haut de fiche strictement conforme au prototype : le blanc demarre
   immediatement sous le header, fil d'Ariane a 16 px, aucune marge
   parasite, conteneur de notices vide masque. */
body.single-product .snz-main { background: var(--snz-white); margin-top: 0; padding-top: 0; }
body.single-product .snz-pdp { margin-top: 0; padding-top: 0; }
body.single-product .woocommerce-notices-wrapper:empty { display: none; margin: 0; padding: 0; }

/* Galerie : les vignettes des autres photos sont visibles en
   permanence des qu'il y a plusieurs images, plus seulement au survol. */
.snz-gal__thumbs { opacity: 1; transform: none; }

/* ------------------------------------------------------------------
   5.7.3 : fiche produit blanche bord a bord, garantie inconditionnelle.
   Quel que soit le conteneur qui enveloppe la fiche (extension, cache,
   reglage), le bloc s'etend sur toute la largeur de la fenetre comme le
   prototype. La formule est inerte quand le parent est deja pleine
   largeur.
   ------------------------------------------------------------------ */
body.single-product, body.single-product .snz-main { background: var(--snz-white); }
@media (min-width: 1025px) {
	.snz-pdp { width: 100vw; max-width: 100vw; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); }
}

/* ------------------------------------------------------------------
   Correctifs 5.8.0, fiche produit desktop et mobile.
   ------------------------------------------------------------------ */

/* Galerie desktop : hauteur plafonnee a la fenetre, la colonne 4/5 sur
   grand ecran depassait largement la hauteur visible. */
.snz-gal { max-height: calc(100vh - 170px); }

@media (max-width: 1024px) {
	/* Doublon titre, reference et prix : l'entete desktop restait
	   affichee en plus de l'entete mobile. */
	.snz-pdp__deskhead { display: none; }

	/* Trous sous le header : le conteneur du fil d'Ariane (masque en
	   mobile) laissait sa hauteur, et les marges hautes s'empilaient. */
	.snz-pdp > .snz-container:has(> .snz-pdp__crumb) { display: none; }
	.snz-pdp { margin-top: 0; padding-top: 0; }
	body.single-product .snz-main { padding-top: 0; }

	/* Galerie mobile : hauteur plafonnee. */
	.snz-galm__slide { max-height: 64vh; }
}

/* ------------------------------------------------------------------
   Correctifs 5.8.1, mobile.
   ------------------------------------------------------------------ */
@media (max-width: 1024px) {
	/* Barre d'achat collante : la vignette produit etait volontairement
	   masquee en mobile, elle est retablie en petit format. */
	.snz-stickybar__thumb { display: block; width: 38px; height: 46px; flex: 0 0 auto; overflow: hidden; background: #F2ECE4; }
	.snz-stickybar__thumb img { width: 100%; height: 100%; object-fit: contain; mix-blend-mode: multiply; }

	/* Cartes produit : le bouton Voir le produit, toujours visible en
	   tactile, recouvrait la photo et interceptait le balayage gauche
	   droite du slider. Toute la carte est deja cliquable : le bouton
	   est retire en mobile, le balayage des photos est retabli. */
	.snz-card .snz-card__view { display: none; }
}

/* ------------------------------------------------------------------
   Correctifs 5.8.3.
   ------------------------------------------------------------------ */

/* Bande beige vide sous le header des fiches : le fil d'Ariane en
   double imprime par une extension etait masque mais son conteneur
   restait en bande vide. Le conteneur entier est masque ; seul le fil
   d'Ariane du gabarit reste visible. */
body.single-product .woocommerce-breadcrumb { display: none; }
body.single-product .snz-main > :has(> .woocommerce-breadcrumb):not(.snz-pdp) { display: none; }
body.single-product .snz-pdp__crumb .woocommerce-breadcrumb { display: block; }
@media (max-width: 1024px) {
	body.single-product .snz-pdp__crumb { display: none; }
}

/* Header mobile sur les fiches : position fixe garantie, le contenu
   est decale de la hauteur du header, la topbar est retiree sur ces
   pages pour eviter le chevauchement. */
@media (max-width: 1024px) {
	body.single-product .snz-topbar { display: none; }
	body.single-product .snz-header { position: fixed; top: 0; left: 0; right: 0; z-index: 120; }
	body.single-product { padding-top: var(--snz-header-h); }
}

/* ------------------------------------------------------------------
   Correctifs 5.9.0, fidelite fiche produit pour tous les produits.
   ------------------------------------------------------------------ */

/* Quantite et bouton d'achat : memes pilules pour les produits
   variables que pour les simples (les regles precedentes excluaient
   variations_form). Etat desactive elegant en attendant la selection. */
.snz-buybox form.cart .quantity { display: flex; align-items: center; height: 46px; border: 1px solid var(--snz-line-2); border-radius: 999px; background: #fff; flex: 0 0 auto; }
.snz-buybox form.cart .quantity button { width: 38px; height: 44px; background: none; border: 0; font-size: 15px; color: var(--snz-ink); cursor: pointer; }
.snz-buybox form.cart .quantity input[type="number"] { border: 0; background: transparent; box-shadow: none; height: 44px; padding: 0; width: 38px; text-align: center; font-family: inherit; font-size: 13px; color: var(--snz-ink); -moz-appearance: textfield; }
.snz-buybox form.cart .single_add_to_cart_button { flex: 1; height: 46px; border-radius: 999px; border: 1px solid var(--snz-brown); background: var(--snz-brown); color: #fff; font-size: 10.5px; letter-spacing: 0.16em; text-transform: uppercase; white-space: nowrap; cursor: pointer; transition: background .35s var(--snz-ease), opacity .35s; }
.snz-buybox form.cart .single_add_to_cart_button:hover { background: var(--snz-bordeaux); border-color: var(--snz-bordeaux); }
.snz-buybox form.cart .single_add_to_cart_button.disabled, .snz-buybox form.cart .single_add_to_cart_button:disabled { opacity: .45; cursor: not-allowed; background: var(--snz-brown); }
.snz-buybox form.cart { display: flex; align-items: center; gap: 12px; }
.snz-buybox form.cart table.variations { display: none; }


/* Panneau dessin technique : le prototype ne montre que le dessin, le
   bloc de caracteristiques (deja present dans l'onglet Description)
   est retire du panneau. */
.snz-techpanel .snz-specs, .snz-techpanel .snz-specs__row { display: none; }

/* Formulaire variable : la quantite et le bouton vivent dans le
   wrapper interne WooCommerce, c'est lui qui porte l'alignement. Le
   prix de variation duplique dans le formulaire est masque, le prix
   d'entete etant mis a jour en direct. */
.snz-buybox form.cart .single_variation_wrap { width: 100%; }
.snz-buybox .woocommerce-variation-add-to-cart { display: flex; align-items: center; gap: 12px; width: 100%; }
.snz-buybox .woocommerce-variation-price, .snz-buybox .woocommerce-variation-availability { display: none; }

/* ------------------------------------------------------------------
   6.1.0, fidelite au prototype Produit.dc.html.
   ------------------------------------------------------------------ */

/* Premier attribut variable : gros blocs descriptifs du prototype
   (intitule et sous-titre), deux colonnes, etat actif en brun plein.
   Les labels des valeurs sont capitalises. */
.snz-opts--boxes .snz-opts__row { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.snz-optbox { display: block; text-align: left; padding: 11px 13px; border-radius: 2px; border: 1px solid #E6DCD0; background: #fff; color: #171310; cursor: pointer; font-family: inherit; transition: all .3s var(--snz-ease); }
.snz-optbox strong { display: block; font-size: 13.5px; font-weight: 400; color: inherit; text-transform: capitalize; }
.snz-optbox span { display: block; font-size: 10px; margin-top: 2px; color: #A79A8C; }
.snz-optbox.is-active { background: #26180F; border-color: #26180F; color: #fff; }
.snz-optbox.is-active span { color: rgba(255, 255, 255, .6); }
.snz-opt { text-transform: capitalize; }
@media (max-width: 640px) { .snz-opts--boxes .snz-opts__row { grid-template-columns: 1fr; } }


/* ------------------------------------------------------------------
   6.2.1, responsive de la fiche par paliers.
   Ecrans intermediaires (portables 14 a 16 pouces) : la galerie prend
   plus de place, les colonnes se rapprochent, la grille exploite la
   largeur disponible. Le tres grand ecran garde les proportions du
   prototype (1420 px centre).
   ------------------------------------------------------------------ */
@media (min-width: 1025px) and (max-width: 1640px) {
	.snz-pdp__grid { max-width: none; padding-left: var(--snz-gutter); padding-right: var(--snz-gutter); grid-template-columns: 1.4fr 1fr; gap: clamp(20px, 2.4vw, 40px); }
	.snz-pdp__info { padding-right: 0; }
}
@media (min-width: 1025px) and (max-width: 1280px) {
	.snz-pdp__grid { grid-template-columns: 1.2fr 1fr; gap: 20px; }
}

/* ==================================================================
   6.3.0 : galerie Sklum, beige nucléarisé, mobile full width.
   ================================================================== */

/* 1. Bande beige sous le header des fiches : sur une fiche produit, le
   conteneur principal ne contient legitimement que la fiche elle-meme.
   Tout autre element injecte (conteneur de fil d'Ariane d'extension,
   bandeau vide) est neutralise, quelle que soit sa structure. */
body.single-product .snz-main > *:not(.snz-pdp) {
	display: block !important;
	width: auto !important;
	max-width: none !important;
	margin: 0 !important;
	padding: 0 !important;
	background: transparent !important;
	border: 0 !important;
	min-height: 0 !important;
}

/* 2. Galerie desktop facon Sklum : toutes les photos visibles
   directement, en grille par deux, la page defile et la colonne
   d'achat reste collante. Carrousel, fleches, compteur et vignettes
   retires sur desktop. */
@media (min-width: 1025px) {
	.snz-gal { aspect-ratio: auto; max-height: none; height: auto; overflow: visible; background: transparent; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
	.snz-gal__slide { position: static; inset: auto; opacity: 1; transform: none; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: contain; background: #F2ECE4; transition: none; }
	.snz-gal:hover .snz-gal__slide.is-active { transform: none; }
	.snz-gal__slide:first-child:nth-last-child(odd) { grid-column: 1 / -1; aspect-ratio: 8 / 7; }
	.snz-gal__count, .snz-gal__thumbs, .snz-gal__nav { display: none; }
}

/* 3. Mobile : photo pleine largeur bord a bord et formulaire d'achat
   pleine largeur bord a bord, contenu interieur garde ses gouttieres. */
@media (max-width: 1024px) {
	.snz-galm { margin-left: calc(-1 * var(--snz-gutter)); margin-right: calc(-1 * var(--snz-gutter)); }
	.snz-pdp__info .snz-buybox { margin-left: calc(-1 * var(--snz-gutter)); margin-right: calc(-1 * var(--snz-gutter)); padding-left: var(--snz-gutter); padding-right: var(--snz-gutter); }
}

/* ==================================================================
   6.4.0 : galerie photos pleines + zoom, associes, mobile harmonieux.
   ================================================================== */

/* Scrollers horizontaux : jamais de defilement vertical parasite
   (overflow-x auto forcait overflow-y en auto, les cartes associees
   defilaient de haut en bas). */
.snz-scrollx { overflow-y: hidden; }

/* Galerie desktop : les photos remplissent leurs tuiles bord a bord,
   fond blanc, plus de cadre beige de calage. Curseur zoom. */
@media (min-width: 1025px) {
	.snz-gal { gap: 10px; }
	.snz-gal__slide { object-fit: cover; background: #fff; mix-blend-mode: normal; cursor: zoom-in; }
}

/* Zoom plein ecran, desktop et mobile. */
.snz-zoom { position: fixed; inset: 0; z-index: 400; display: none; align-items: center; justify-content: center; background: rgba(255, 255, 255, .97); padding: clamp(16px, 4vw, 56px); }
.snz-zoom.is-open { display: flex; }
.snz-zoom img { max-width: 100%; max-height: 100%; object-fit: contain; }
.snz-zoom__close { position: absolute; top: 18px; right: 18px; width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--snz-line-2); background: #fff; font-size: 18px; line-height: 1; cursor: pointer; color: var(--snz-ink); }
.snz-galm__slide img { cursor: zoom-in; }

/* Indicateurs de la galerie mobile : traits fins et discrets, style
   maison. L'apparence native des boutons n'etait pas reinitialisee et
   produisait de gros rectangles gris. */
.snz-galm__dot { appearance: none; -webkit-appearance: none; border: 0; padding: 0; width: 18px; height: 2px; border-radius: 999px; background: rgba(23, 19, 16, .22); transition: background .3s var(--snz-ease), width .3s var(--snz-ease); }
.snz-galm__dot.is-active { background: var(--snz-ink); width: 26px; }

/* Mobile harmonieux : la carte d'achat passe en blanc delimite par des
   filets fins (le pave beige colle manquait de raffinement), les
   grandes sections respirent avec un rythme constant. */
@media (max-width: 1024px) {
	.snz-pdp__mhead { padding-top: 24px; }
	.snz-pdp__info .snz-buybox { background: var(--snz-white); border-top: 1px solid var(--snz-line); border-bottom: 1px solid var(--snz-line); padding-top: 18px; padding-bottom: 18px; }
	.snz-pdptabs { margin-top: 28px; }
	.snz-related { background: var(--snz-white); }
	.snz-related > .snz-container { padding-top: 34px; }
}

/* ==================================================================
   6.4.1 : respiration et degrades beige blanc.
   ================================================================== */

/* Bloc description (onglets) : de l'air au-dessus et des entrees et
   sorties en degrade blanc vers creme, fini l'aplat beige pose sec. */
.snz-pdptabs {
	border-top: 0;
	margin-top: clamp(48px, 6vw, 88px);
	background: linear-gradient(180deg, var(--snz-white) 0, var(--snz-cream) 110px, var(--snz-cream) calc(100% - 110px), var(--snz-white) 100%);
	padding-top: clamp(34px, 4vw, 56px);
	padding-bottom: clamp(34px, 4vw, 56px);
}

/* La FAQ et le guide, s'ils sont en creme, recoivent la meme entree
   douce. Sans effet s'ils sont blancs. */
.snz-faq--cream, .snz-guide--cream {
	background: linear-gradient(180deg, var(--snz-white) 0, var(--snz-cream) 110px, var(--snz-cream) calc(100% - 110px), var(--snz-white) 100%);
}

@media (max-width: 1024px) {
	/* Les grands blocs colores passent bord a bord : plus de couloir
	   blanc sur les cotes des paves beiges. */
	.snz-pdp .snz-pdptabs,
	.snz-pdp .snz-showroom {
		margin-left: calc(50% - 50vw);
		margin-right: calc(50% - 50vw);
	}
	.snz-pdptabs {
		margin-top: 34px;
		background: linear-gradient(180deg, var(--snz-white) 0, var(--snz-cream) 64px, var(--snz-cream) calc(100% - 64px), var(--snz-white) 100%);
	}
}

/* ==================================================================
   6.4.2 : bloc description aere, achat epure, degrade d'entree seul.
   ================================================================== */

/* Le contenu du bloc description retrouve le conteneur du site : les
   onglets et la prose etaient colles au bord gauche de l'ecran, sur
   ordinateur comme sur mobile. */
.snz-pdptabs__nav,
.snz-pdptabs__grid {
	max-width: var(--snz-container);
	margin-left: auto;
	margin-right: auto;
	padding-left: var(--snz-gutter);
	padding-right: var(--snz-gutter);
}

/* Degrade d'entree uniquement : le bloc s'ouvre en fondu blanc vers
   creme puis reste creme jusqu'a sa fin, sans retour au blanc. */
.snz-pdptabs { background: linear-gradient(180deg, var(--snz-white) 0, var(--snz-cream) 110px); }

@media (max-width: 1024px) {
	.snz-pdptabs { background: linear-gradient(180deg, var(--snz-white) 0, var(--snz-cream) 64px); }

	/* Carte d'achat epuree : tout blanc, sans les deux filets. */
	.snz-pdp__info .snz-buybox { border-top: 0; border-bottom: 0; background: var(--snz-white); }
}

/* ==================================================================
   6.4.3 : buybox blanche en desktop, contact cale et formulaire sticky.
   ================================================================== */

/* Carte d'achat desktop : plus de pave beige, les elements respirent
   sur le blanc de la page. */
@media (min-width: 1025px) {
	.snz-buybox { background: transparent; padding-left: 0; padding-right: 0; padding-top: 4px; }
}

/* Page contact : la colonne formulaire est calee sur la grille du site
   quel que soit le conteneur parent (elle se collait au bord gauche),
   l'image reste en pleine fuite a droite. Le formulaire devient
   collant pour accompagner le defilement de l'image et supprimer le
   grand blanc en bas de colonne. */
@media (min-width: 1025px) {
	.snz-ct__grid { padding-left: max(var(--snz-gutter), calc((100vw - var(--snz-container)) / 2 + var(--snz-gutter))); }
	.snz-ct__grid > :first-child {
		position: sticky;
		top: calc(var(--snz-header-h) + 24px);
		align-self: start;
		max-width: 760px;
	}
}
@media (max-width: 1024px) {
	.snz-ct__grid { padding-left: var(--snz-gutter); padding-right: var(--snz-gutter); }
}

/* ==================================================================
   6.4.4 : header mobile consolide, galerie mobile blanche.
   ================================================================== */
@media (max-width: 1024px) {
	/* Header des fiches : une seule verite. Les anciennes regles de la
	   fiche v1 (position absolute, decalage topbar) entraient en
	   conflit avec la position fixe et creaient un bloc blanc au-dessus
	   du header. */
	body.single-product .snz-topbar { display: none !important; }
	body.single-product .snz-header {
		position: fixed !important;
		top: 0 !important;
		left: 0 !important;
		right: 0 !important;
		background: var(--snz-white) !important;
	}
	body.single-product { padding-top: var(--snz-header-h) !important; margin-top: 0 !important; }
	body.single-product .snz-pdp { margin-top: 0 !important; }

	/* Galerie mobile : photos pleines sur fond blanc, comme la grille
	   desktop. Fini le fond beige de calage autour des visuels. */
	.snz-galm__slide { background: var(--snz-white); }
	.snz-galm__slide img { object-fit: cover; mix-blend-mode: normal; }
}

/* ==================================================================
   6.4.5 : mobile fiche produit, topbar de retour + header colle dessous.
   ================================================================== */
@media (max-width: 1024px) {
	/* La barre d'annonces revient, fixee tout en haut. Le header se
	   colle juste en dessous. Le contenu est decale de la somme des
	   deux hauteurs. Sur les sites sans topbar (classe snz-has-topbar
	   absente), le header reste seul en haut. */
	body.single-product .snz-topbar {
		display: block !important;
		position: fixed !important;
		top: 0 !important;
		left: 0 !important;
		right: 0 !important;
		z-index: 121;
	}
	body.single-product .snz-header { top: 0 !important; }
	body.snz-has-topbar.single-product .snz-header { top: 38px !important; }
	body.single-product { padding-top: var(--snz-header-h) !important; }
	body.snz-has-topbar.single-product { padding-top: calc(38px + var(--snz-header-h)) !important; }
}

/* ==================================================================
   6.4.6 : mobile, plus de vide blanc entre l'achat et la description.
   ================================================================== */
@media (max-width: 1024px) {
	.snz-pdp__info { padding-bottom: 10px; }
	.snz-pdptabs { margin-top: 0; background: linear-gradient(180deg, var(--snz-white) 0, var(--snz-cream) 40px); }
	.snz-pdptabs__nav { padding-top: 26px; }
}

/* ==================================================================
   6.5.0 : compte mobile, bloc matiere, newsletter, recherche.
   ================================================================== */

/* Panneau et page Mon compte : les champs du formulaire de connexion
   s'empilent toujours, jamais deux sur la meme ligne dans le tiroir
   etroit ou sur mobile. */
.snz-drawer .form-row,
.snz-drawer .form-row-first,
.snz-drawer .form-row-last { width: 100% !important; display: block !important; margin-right: 0 !important; }
@media (max-width: 1024px) {
	.woocommerce-account .form-row-first,
	.woocommerce-account .form-row-last { width: 100%; display: block; margin-right: 0; }
}

/* A propos, bloc Pourquoi le polymere : la grille photo texte est
   posee en style inline dans le gabarit, la regle mobile ne pouvait
   pas la casser. Photo au-dessus, texte en dessous. */
@media (max-width: 1024px) {
	.snz-ab__story[style] { grid-template-columns: 1fr !important; }
}

/* Footer, newsletter mobile : champ e-mail pleine largeur et lisible
   (16 px, pas de zoom force sur iOS), bouton pleine largeur dessous. */
@media (max-width: 1024px) {
	.snz-news__row { flex-wrap: wrap; }
	.snz-news input[type="email"] { flex: 1 1 100%; width: 100%; height: 50px; font-size: 16px; }
	.snz-news__btn { flex: 1 1 100%; justify-content: center; height: 50px; }
}
