/*
Theme Name: L'Art des Sens — Boutique
Theme URI: https://lartdessens-soins.com
Author: Otaweb
Author URI: https://otaweb.fr
Description: Thème sur mesure de la boutique L'Art des Sens (Marrakech). Direction artistique de la maison : nuit profonde, ivoire, or chaud — Fraunces / Cormorant Garamond / Montserrat. Aucun page-builder, aucune dépendance : HTML/CSS/JS écrits à la main, mobile-first.
Version: 1.0.0
Requires at least: 6.5
Tested up to: 6.8
Requires PHP: 8.1
License: Propriétaire — usage réservé à L'Art des Sens
Text Domain: lartdessens
*/

/* ============================================================
   L'ART DES SENS — BOUTIQUE
   Tokens repris À L'IDENTIQUE de la boutique Shopify d'origine
   (thème Horizon 4.1.1 + couche maison `lartdessens-da.css`),
   source : _sauvegarde_boutique_2026-07-22/theme/.
   La boutique a SA propre DA : plus claire en ivoire, angles plus
   doux, accroche plus généreuse que le site vitrine.
   ============================================================ */

:root{
  /* — Couleur — valeurs exactes de `lartdessens-da.css` — */
  --bg:#0A0A0A;         /* --da-noir */
  --bg2:#120E0A;        /* fond de section « nuit » (dégradé continu) */
  --bg3:#0E0B08;
  --media-bg:#2C2A26;   /* --da-brun : fond des médias, cartes, galerie */
  --ivory:#F4EEE1;      /* --da-ivoire */
  --ivory-soft:color-mix(in oklab,var(--ivory) 88%,transparent);
  --ivory-faint:color-mix(in oklab,var(--ivory) 55%,transparent);
  --gold:#C9A96E;       /* --da-or */
  --gold-warm:#D8B57E;
  --gold-deep:#9E7C44;  /* --da-or-profond */
  --gold-pale:#E4CFA1;  /* --da-or-clair */
  --gold-grad:linear-gradient(100deg,#9E7C44 0%,#D8B57E 42%,#E4CFA1 68%,#C9A96E 100%);
  --line:rgba(201,169,110,.26); --line-soft:rgba(201,169,110,.13);
  --line-media:rgba(201,169,110,.16);  /* filet des médias (galerie, cartes) */
  --success:#8FB08A; --alert:#D8B57E;

  /* — Typographie — les 4 familles de la boutique — */
  --serif-display:'Fraunces',Georgia,serif;
  --serif:'Cormorant Garamond',Georgia,serif;
  --sans:'Montserrat',system-ui,-apple-system,sans-serif;
  --script:'Petit Formal Script',cursive;

  /* — Espace & structure — */
  --pad-x:clamp(22px,5vw,84px);
  --maxw:1380px;
  --maxw-read:70ch;
  --space-section:clamp(72px,9vw,140px);   /* --da-space-section */
  --space-block:clamp(34px,6vw,64px);

  /* — Formes & mouvement — un curseur par famille, comme la référence — */
  --r:10px;             /* --da-radius-button : CTA, variantes, quantité */
  --r-input:4px;        /* champs de formulaire (inputs_border_radius) */
  --r-photo:12px;       /* --da-radius-media : photos, cartes, galerie */
  --ease:cubic-bezier(.16,1,.3,1);          /* --da-ease */
  --ease-sine:cubic-bezier(.45,.05,.55,.95);/* --da-ease-sine */
  --sheen-from:rgba(216,181,126,1); --sheen-mid:rgba(246,228,190,1); --sheen-to:rgba(201,169,110,1);

  /* — Grade photo UNIQUE — --da-grade, valeur exacte — */
  --grade:saturate(1.04) contrast(1.04) brightness(.99);

  --header-h:64px;
}

/* ============ RESET / BASE ============ */
*,*::before,*::after{box-sizing:border-box;}
body,h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd,ul,ol{margin:0;padding:0;}
ul,ol{list-style:none;}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;}
body{
  background:var(--bg);color:var(--ivory);
  /* Montserrat 400 + le micro-interlettrage de la référence (`lartdessens-da.css`). */
  font-family:var(--sans);font-weight:400;font-size:16px;line-height:1.7;letter-spacing:.005em;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{display:block;max-width:100%;height:auto;}
a{color:inherit;text-decoration:none;}
em{font-style:italic;}
button,input,select,textarea{font:inherit;color:inherit;}
:focus-visible{outline:2px solid var(--gold-warm);outline-offset:3px;border-radius:2px;}
::selection{background:var(--gold);color:var(--bg);}

.wrap{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--pad-x);}
.wrap--read{max-width:calc(var(--maxw-read) + var(--pad-x)*2);}
/* Réservé aux lecteurs d'écran. `.screen-reader-text` est la classe de
   WordPress ET de WooCommerce. Vérifié : `woocommerce.css` la masque déjà,
   donc rien ne s'affichait — on la porte ici pour que le thème ne dépende
   plus d'une feuille de plugin, et pour rendre au clavier les liens
   d'évitement (ce que la règle de WooCommerce ne fait pas). */
.sr-only,
.screen-reader-text{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;}
/* Un lien d'évitement doit redevenir visible au clavier. */
.screen-reader-text:focus{
  position:fixed!important;top:0;left:0;z-index:200;
  width:auto;height:auto;clip:auto;clip-path:none;margin:0;
  padding:12px 20px;background:var(--gold);color:var(--bg);
  font-size:12px;letter-spacing:.2em;text-transform:uppercase;
}
.skip-link{position:fixed;left:0;top:0;z-index:200;background:var(--gold);color:var(--bg);
  padding:12px 20px;font-size:12px;letter-spacing:.2em;text-transform:uppercase;
  transform:translateY(-140%);transition:transform .25s var(--ease);}
.skip-link:focus{transform:none;}

/* ============ TYPOGRAPHIE ============ */
.display,h1.display,.hero h1,.phero h1,.shead h2,.editorial h2{
  font-family:var(--serif-display);font-optical-sizing:auto;
  font-variation-settings:'opsz' 144,'SOFT' 0,'WONK' 0;
  font-weight:300;letter-spacing:-.012em;line-height:1.02;
}
/* Micro-label or lettré, AVEC son filet dégradé : c'est la signature
   `.da-eyebrow` de la boutique (interlettrage .42em, or franc, filet avant). */
.eyebrow{
  display:inline-flex;align-items:center;gap:1em;
  font-family:var(--sans);font-size:clamp(10.5px,1.6vw,12.8px);font-weight:500;
  letter-spacing:.42em;text-transform:uppercase;color:var(--gold);line-height:1.4;
}
.eyebrow::before{
  content:'';flex:none;width:clamp(28px,4vw,54px);height:1px;
  background:linear-gradient(90deg,transparent,var(--gold));
}
.shead--center .eyebrow,.offer .eyebrow{justify-content:center;}
.script{font-family:var(--script);font-weight:400;text-transform:none;letter-spacing:0;}
/* Accroche : Cormorant italique, échelle généreuse de la référence (.da-lede). */
.lede{
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:clamp(20px,2.4vw,30px);line-height:1.5;letter-spacing:.01em;
  color:color-mix(in oklab,var(--ivory) 92%,transparent);
}
.rule{width:56px;height:1px;background:linear-gradient(90deg,var(--gold-warm),rgba(201,169,110,0));border:0;margin:0;}

/* ============ MATIÈRE (règle zéro : aucun fond nu) ============ */
/* grain global — une seule couche pour tout le site (cohésion) */
.grain{
  position:fixed;inset:0;z-index:1;pointer-events:none;
  opacity:.055;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3'/%3E%3C/filter%3E%3Crect width='220' height='220' filter='url(%23n)'/%3E%3C/svg%3E");
}
/* halo doré qui dérive — habille les sections sans photo */
.sec--halo{position:relative;isolation:isolate;overflow:hidden;}
.sec--halo::before{
  content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(64% 52% at 20% 14%,rgba(201,169,110,.15),transparent 64%),
    radial-gradient(58% 58% at 84% 82%,rgba(154,123,67,.13),transparent 68%);
  animation:drift 34s var(--ease) infinite alternate;
}
@keyframes drift{
  from{transform:translate3d(0,0,0) scale(1);}
  to{transform:translate3d(-3%,2.5%,0) scale(1.12);}
}
/* fond continu : dégradé de nuit d'une section à l'autre (jamais de couture) */
.sec--night{background:linear-gradient(180deg,var(--bg) 0%,var(--bg2) 48%,var(--bg) 100%);}

/* ============ REVEAL (rejouable, compositor-only) ============ */
.js .rv{opacity:0;transform:translateY(28px);transition:opacity .9s var(--ease),transform .95s var(--ease);will-change:opacity,transform;}
.rv.in{opacity:1;transform:none;}
.js .rv[data-d="1"]{transition-delay:.11s;}
.js .rv[data-d="2"]{transition-delay:.22s;}
.js .rv[data-d="3"]{transition-delay:.33s;}
.js .rv[data-d="4"]{transition-delay:.44s;}
.js .rv-stagger>*{opacity:0;transform:translateY(22px);transition:opacity .95s var(--ease),transform .95s var(--ease);}
.js .rv-stagger.in>*{opacity:1;transform:none;transition-delay:calc(var(--i,0)*.08s);}
.rv-stagger>*:nth-child(1){--i:0;} .rv-stagger>*:nth-child(2){--i:1;}
.rv-stagger>*:nth-child(3){--i:2;} .rv-stagger>*:nth-child(4){--i:3;}
.rv-stagger>*:nth-child(5){--i:4;} .rv-stagger>*:nth-child(6){--i:5;}
.rv-stagger>*:nth-child(7){--i:6;} .rv-stagger>*:nth-child(8){--i:7;}

/* ============ BOUTONS ============ */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:12px;
  min-height:48px;padding:15px 30px;border-radius:var(--r);border:1px solid transparent;
  font-family:var(--sans);font-size:12px;font-weight:500;letter-spacing:.24em;text-transform:uppercase;
  cursor:pointer;transition:background .45s var(--ease),color .45s var(--ease),border-color .45s var(--ease),transform .45s var(--ease);
}
.btn--solid{position:relative;overflow:hidden;background:var(--gold);color:var(--bg);border-color:var(--gold);}
.btn--solid:hover{background:var(--gold-warm);border-color:var(--gold-warm);transform:translateY(-2px);}
.btn--solid::after{ /* sheen — sans bordure ajoutée */
  content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(100deg,transparent 38%,rgba(255,255,255,.42) 50%,transparent 62%);
  transform:translateX(-120%);transition:transform .9s var(--ease);
}
.btn--solid:hover::after{transform:translateX(120%);}
.btn--ghost{background:transparent;color:var(--gold-warm);border-color:var(--line);}
.btn--ghost:hover{background:var(--gold);color:var(--bg);border-color:var(--gold);}
.btn--text{
  display:inline-flex;align-items:center;gap:11px;min-height:44px;padding:6px 0;
  font-size:12px;font-weight:500;letter-spacing:.24em;text-transform:uppercase;color:var(--gold-warm);
  position:relative;
}
.btn--text::before{content:'→';transition:transform .4s var(--ease);}
.btn--text:hover::before{transform:translateX(6px);}
.btn--text::after{content:'';position:absolute;left:0;bottom:2px;height:1px;width:100%;background:var(--gold);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease);}
.btn--text:hover::after,.btn--text:focus-visible::after{transform:scaleX(1);}
.btn--block{width:100%;}

/* ============ EN-TÊTE ============ */
.hdr{
  position:fixed;top:0;left:0;right:0;z-index:90;
  display:flex;align-items:center;justify-content:space-between;gap:18px;
  padding:14px var(--pad-x);
  transition:background .5s var(--ease),padding .5s var(--ease),box-shadow .5s var(--ease);
}
.hdr.is-solid{
  background:rgba(11,9,7,.72);
  -webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%);
  box-shadow:0 14px 40px -26px rgba(0,0,0,.85);
}
.hdr__brand{display:flex;flex-direction:column;line-height:1;gap:4px;}
.hdr__brand b{font-family:var(--serif-display);font-optical-sizing:auto;font-weight:300;font-size:19px;letter-spacing:.005em;color:var(--ivory);}
.hdr__brand span{font-size:8.5px;font-weight:500;letter-spacing:.42em;text-transform:uppercase;color:var(--gold-warm);}
.hdr__nav{display:none;font-size:11.5px;font-weight:400;letter-spacing:.2em;text-transform:uppercase;color:var(--ivory-soft);}
.hdr__menu{display:flex;gap:30px;}
.hdr__nav a{position:relative;display:block;padding:6px 0;transition:color .35s;}
.hdr__nav a::after{content:'';position:absolute;left:0;bottom:0;width:0;height:1px;background:var(--gold);transition:width .4s var(--ease);}
.hdr__nav a:hover,.hdr__nav .current-menu-item>a{color:var(--ivory);}
.hdr__nav a:hover::after,.hdr__nav .current-menu-item>a::after{width:100%;}
.hdr__tools{display:flex;align-items:center;gap:6px;}
.hdr__ico{
  position:relative;display:inline-flex;align-items:center;justify-content:center;
  width:46px;height:46px;background:none;border:0;cursor:pointer;color:var(--ivory);
}
.hdr__ico svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round;}
.hdr__count{
  position:absolute;top:6px;right:5px;min-width:17px;height:17px;padding:0 4px;
  display:grid;place-items:center;border-radius:9px;background:var(--gold);color:var(--bg);
  font-size:9.5px;font-weight:600;letter-spacing:0;line-height:1;
}
.hdr__count[data-empty="1"]{display:none;}
.hdr__burger span{display:block;width:22px;height:1.5px;background:currentColor;margin:3px auto;transition:transform .4s var(--ease),opacity .3s;}
.is-menu-open .hdr__burger span:nth-child(1){transform:translateY(4.5px) rotate(45deg);}
.is-menu-open .hdr__burger span:nth-child(2){opacity:0;}
.is-menu-open .hdr__burger span:nth-child(3){transform:translateY(-4.5px) rotate(-45deg);}

/* voile mobile */
.drawer{
  position:fixed;inset:0;z-index:95;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:6px;
  background:rgba(9,7,5,.82);-webkit-backdrop-filter:blur(28px) saturate(1.3);backdrop-filter:blur(28px) saturate(1.3);
  opacity:0;visibility:hidden;transition:opacity .5s var(--ease),visibility .5s;
}
.drawer.is-open{opacity:1;visibility:visible;}
.drawer__menu{display:flex;flex-direction:column;align-items:center;gap:2px;}
.drawer a{
  font-family:var(--script);font-weight:400;font-size:clamp(30px,8vw,46px);line-height:1.18;padding:6px 14px;
  background:var(--gold-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;
  transition:opacity .3s;
}
.drawer a:hover{opacity:.68;}
.drawer__close{position:absolute;top:16px;right:14px;width:46px;height:46px;background:none;border:0;color:var(--gold-warm);font-size:22px;cursor:pointer;}

@media (min-width:1000px){
  .hdr{padding:18px var(--pad-x);}
  .hdr__nav{display:flex;}
  .hdr__burger{display:none;}
  .hdr__brand b{font-size:22px;}
}

/* ============ HERO ============ */
.hero{
  position:relative;min-height:100svh;display:flex;align-items:flex-end;
  overflow:hidden;background:var(--bg);
}
.hero__media{position:absolute;inset:0;z-index:0;overflow:hidden;}
.hero__media img{
  width:100%;height:100%;object-fit:cover;object-position:center 62%;
  filter:var(--grade);
  animation:kenburns 26s ease-in-out infinite alternate;
  will-change:transform;
}
@keyframes kenburns{from{transform:scale(1.045) translate3d(0,0,0);}to{transform:scale(1.14) translate3d(-1.4%,-1.8%,0);}}
/* La photo du hero est claire (mur de travertin) : sans un voile franc,
   l'ivoire et l'or du titre passent sous le seuil de contraste AA. */
.hero__scrim{
  position:absolute;inset:0;z-index:2;pointer-events:none;
  background:
    linear-gradient(180deg,rgba(11,9,7,.55) 0%,rgba(11,9,7,.08) 20%,rgba(11,9,7,.62) 44%,rgba(11,9,7,.93) 66%,rgba(11,9,7,.985) 100%),
    radial-gradient(160% 66% at 24% 100%,rgba(11,9,7,.86),transparent 66%);
}
.hero__inner{position:relative;z-index:5;width:100%;padding:0 var(--pad-x) clamp(64px,11vh,120px);max-width:var(--maxw);margin-inline:auto;}
.hero .eyebrow{color:#EBD3AB;}
.hero .script{display:block;font-size:clamp(28px,6.4vw,50px);color:var(--gold-warm);line-height:1.06;margin:10px 0 6px;}
.hero h1{font-weight:300;font-size:clamp(46px,11vw,126px);line-height:.98;letter-spacing:.005em;max-width:15ch;text-shadow:0 4px 70px rgba(0,0,0,.6);}
.hero h1 em{color:var(--gold-warm);font-style:normal;}
.hero__lede{margin-top:20px;max-width:34ch;color:var(--ivory);}
.hero__cta{display:flex;flex-wrap:wrap;gap:14px;margin-top:30px;}
.hero__scroll{
  position:absolute;left:50%;bottom:18px;z-index:5;transform:translateX(-50%);
  width:1px;height:46px;background:linear-gradient(180deg,transparent,var(--gold));
  animation:pulse 3.2s ease-in-out infinite;
}
@keyframes pulse{0%,100%{opacity:.25;} 50%{opacity:.9;}}

/* ============ BANDEAU DE RÉASSURANCE ============ */
.trust{border-block:1px solid var(--line-soft);background:rgba(18,14,10,.55);}
.trust ul{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  max-width:var(--maxw);margin-inline:auto;padding:0 var(--pad-x);
}
.trust li{
  display:flex;align-items:center;justify-content:center;gap:10px;
  padding:16px 12px;text-align:center;
  font-size:10.5px;font-weight:400;letter-spacing:.16em;text-transform:uppercase;color:var(--ivory-soft);
}
.trust li + li{border-left:1px solid var(--line-soft);}
.trust svg{width:16px;height:16px;flex:none;stroke:var(--gold);fill:none;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round;}
@media (max-width:640px){
  .trust ul{grid-template-columns:1fr 1fr;}
  .trust li:nth-child(odd){border-left:0;}
  .trust li:nth-child(n+3){border-top:1px solid var(--line-soft);}
}

/* ============ SECTIONS GÉNÉRIQUES ============ */
.sec{padding-block:var(--space-section);position:relative;}
.shead{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--pad-x);margin-bottom:var(--space-block);}
.shead .eyebrow{margin-bottom:14px;}
.shead h2{font-size:clamp(34px,7.2vw,62px);}
.shead h2 em{color:var(--gold-warm);font-style:normal;}
.shead p{margin-top:16px;max-width:56ch;}
.shead--center{text-align:center;}
.shead--center .rule{margin-inline:auto;}

/* ============ MANIFESTE (éditorial ancré) ============ */
.manif{position:relative;text-align:center;padding-block:var(--space-section);}
.manif__q{
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:clamp(26px,5.6vw,50px);line-height:1.28;color:var(--ivory);
  max-width:22ch;margin-inline:auto;
}
.manif__q em{font-style:normal;font-family:var(--script);color:var(--gold-warm);font-size:1.1em;}
.manif__sig{margin-top:26px;font-size:10.5px;letter-spacing:.32em;text-transform:uppercase;color:var(--ivory-faint);}

/* ============ SPOTLIGHT (produit signature) ============ */
.spot{display:grid;gap:0;align-items:stretch;}
.spot__media{position:relative;overflow:hidden;min-height:62svh;}
.spot__media img{width:100%;height:100%;object-fit:cover;filter:var(--grade);
  animation:kenburns 32s ease-in-out infinite alternate;}
.spot__media::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(11,9,7,.72));}
.spot__copy{padding:var(--space-block) var(--pad-x);display:flex;flex-direction:column;justify-content:center;gap:16px;}
.spot__copy h2{font-family:var(--serif-display);font-optical-sizing:auto;font-weight:300;font-size:clamp(32px,6.6vw,56px);line-height:1.04;letter-spacing:-.012em;}
.spot__price{font-family:var(--serif);font-size:26px;color:var(--gold-warm);}
.spot__list{display:flex;flex-direction:column;gap:10px;margin-top:4px;}
.spot__copy .btn,.spot__copy .btn--text{align-self:flex-start;}
.spot__list li{display:flex;gap:12px;font-size:14.5px;color:var(--ivory-soft);line-height:1.55;}
.spot__list li::before{content:'';flex:none;width:14px;height:1px;background:var(--gold);margin-top:12px;}
@media (min-width:900px){
  .spot{grid-template-columns:1.05fr .95fr;}
  .spot--flip .spot__media{order:2;}
  .spot__copy{padding-inline:clamp(38px,5vw,80px);}
  .spot__media{min-height:78svh;}
}

/* ============ GAMMES (éditorial asymétrique) ============ */
.gammes{display:grid;gap:clamp(30px,5vw,58px);max-width:var(--maxw);margin-inline:auto;padding-inline:var(--pad-x);}
.gamme{display:grid;gap:20px;align-items:center;}
.gamme__media{position:relative;overflow:hidden;border-radius:var(--r-photo);aspect-ratio:4/5;}
.gamme__media img{width:100%;height:100%;object-fit:cover;filter:var(--grade);transition:transform 1.1s var(--ease);}
.gamme:hover .gamme__media img{transform:scale(1.05);}
.gamme__media::after{content:'';position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(11,9,7,.14) 0%,rgba(11,9,7,.06) 42%,rgba(11,9,7,.58) 100%);}
.gamme__num{font-family:var(--serif);font-style:italic;font-size:clamp(40px,10vw,74px);line-height:.8;color:var(--gold-deep);opacity:.5;display:block;margin-bottom:6px;}
.gamme__copy h3{font-family:var(--serif-display);font-optical-sizing:auto;font-weight:300;font-size:clamp(27px,5.6vw,42px);line-height:1.06;letter-spacing:-.012em;margin-bottom:12px;}
.gamme__copy p{color:var(--ivory-soft);font-size:15px;line-height:1.7;max-width:46ch;}
.gamme__copy .btn--text{margin-top:18px;}
@media (min-width:860px){
  .gamme{grid-template-columns:1fr 1fr;gap:clamp(36px,5vw,72px);}
  .gamme:nth-child(even) .gamme__media{order:2;}
  .gamme:nth-child(odd){padding-right:clamp(0px,6vw,90px);}
  .gamme:nth-child(even){padding-left:clamp(0px,6vw,90px);}
  .gamme__media{aspect-ratio:3/4;}
}

/* ============ RAIL / GRILLE PRODUITS ============ */
.rail{
  display:grid;grid-auto-flow:column;grid-auto-columns:minmax(66vw,1fr);
  gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;
  padding:4px var(--pad-x) 20px;
  scrollbar-width:none;-ms-overflow-style:none;
}
.rail::-webkit-scrollbar{display:none;}
.rail > *{scroll-snap-align:start;}
@media (min-width:700px){.rail{grid-auto-columns:minmax(300px,1fr);}}
@media (min-width:1100px){
  .rail{grid-auto-flow:row;grid-template-columns:repeat(4,1fr);overflow:visible;
    max-width:var(--maxw);margin-inline:auto;gap:clamp(18px,2vw,30px);}
}

/* ============ CARTE PRODUIT ============ */
ul.products{
  display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(14px,3vw,32px);
  max-width:var(--maxw);margin-inline:auto;padding-inline:var(--pad-x);
}
@media (min-width:900px){ul.products{grid-template-columns:repeat(3,1fr);}}
@media (min-width:1300px){ul.products{grid-template-columns:repeat(4,1fr);}}

.pcard{position:relative;display:flex;flex-direction:column;}
.pcard__media{
  position:relative;overflow:hidden;border-radius:var(--r-photo);
  aspect-ratio:4/5;background:var(--bg2);margin-bottom:14px;
}
.pcard__media::after{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,rgba(11,9,7,.1),rgba(11,9,7,.34));}
.pcard__media img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  filter:var(--grade);transition:opacity .7s var(--ease),transform 1.1s var(--ease);
}
.pcard__media img.pcard__alt{opacity:0;}
.pcard:hover .pcard__media img.pcard__main{opacity:0;}
.pcard:hover .pcard__media img.pcard__alt{opacity:1;}
.pcard:hover .pcard__media img{transform:scale(1.04);}
.pcard__badge{
  position:absolute;top:10px;left:10px;z-index:2;
  padding:6px 11px;border:1px solid var(--line);border-radius:100px;
  background:rgba(11,9,7,.55);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  font-size:9px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-warm);
}
.pcard__kicker{font-size:9.5px;font-weight:500;letter-spacing:.26em;text-transform:uppercase;color:var(--gold-deep);margin-bottom:7px;}
.pcard__name{
  font-family:var(--serif);font-weight:400;font-size:clamp(17px,4.4vw,21px);line-height:1.22;color:var(--ivory);
}
.pcard__name a::after{content:'';position:absolute;inset:0;z-index:1;} /* toute la carte cliquable */
.pcard__price{margin-top:7px;font-family:var(--serif);font-size:16.5px;color:var(--gold-warm);}
.pcard__price del{opacity:.5;margin-right:8px;}
.pcard__price ins{text-decoration:none;}
.pcard__price .woocommerce-Price-amount{white-space:nowrap;}
.pcard__cta{
  position:relative;z-index:2;margin-top:12px;align-self:flex-start;
  min-height:44px;display:inline-flex;align-items:center;gap:9px;
  font-size:10.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--gold-warm);
  border-bottom:1px solid var(--line);padding:6px 0;transition:color .4s,border-color .4s;
}
.pcard__cta:hover{color:var(--gold-pale);border-color:var(--gold);}
.pcard.is-out .pcard__media{opacity:.55;}

/* ══════════════════════════════════════════════════════════════════════
   ACCUEIL — réplique des 6 sections de l'accueil Shopify d'origine.
   Chaque valeur est reprise du `{% stylesheet %}` de la section `da-*`
   correspondante (_sauvegarde_boutique_2026-07-22/theme/sections/).
   ══════════════════════════════════════════════════════════════════════ */

/* ---- 1. HÉRO (`da-hero.liquid`) ---- */
.da-hero{position:relative;min-height:92svh;display:flex;align-items:flex-end;overflow:hidden;isolation:isolate;}
.da-hero__media{position:absolute;inset:0;z-index:0;}
.da-hero__media img{width:100%;height:100%;object-fit:cover;object-position:82% 26%;filter:var(--grade);}
@media (prefers-reduced-motion:no-preference){
  .da-hero__media img{animation:daKenBurns 28s ease-in-out infinite alternate;will-change:transform;}
  @keyframes daKenBurns{
    from{transform:scale(1.04) translate(0,0);}
    to{transform:scale(1.12) translate(-1.4%,-1.2%);}
  }
}
.da-hero__scrim{
  position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(to top,rgba(10,8,5,.94) 1%,rgba(10,8,5,.30) 40%,rgba(10,8,5,.08) 64%),
    linear-gradient(100deg,rgba(10,8,5,.62) 0%,rgba(10,8,5,.12) 52%,transparent 72%);
}
.da-hero__inner{
  position:relative;z-index:2;width:100%;max-width:1380px;margin-inline:auto;
  padding:0 clamp(24px,5vw,84px) clamp(56px,9vh,120px);
  display:flex;flex-direction:column;align-items:flex-start;gap:clamp(18px,2.4vw,30px);
}
.da-hero__title{
  font-family:var(--serif-display);font-optical-sizing:auto;
  font-variation-settings:'opsz' 144;font-weight:300;
  font-size:clamp(2.6rem,6.4vw,5.6rem);line-height:1.02;letter-spacing:-.022em;
  color:var(--ivory);max-width:16ch;
}
/* Le mot mis en avant passe en Cormorant italique or clair — pas en Fraunces. */
.da-hero__title em,.da-hero__title i,
.da-editorial__title em,.da-gammes__title em,.da-spot__title em{
  font-family:var(--serif);font-style:italic;font-weight:300;color:var(--gold-pale);
}
.da-hero__lede{max-width:42ch;}
.da-hero__actions{display:flex;align-items:center;gap:clamp(20px,3vw,40px);flex-wrap:wrap;margin-top:6px;}
/* Médaillon or : repère de défilement, masqué sur téléphone comme la référence. */
.da-medallion{
  position:fixed;right:clamp(14px,2vw,30px);bottom:clamp(20px,4vh,44px);z-index:8;
  width:48px;height:48px;display:grid;place-items:center;border-radius:50%;
  border:1px solid rgba(201,169,110,.45);
  background:radial-gradient(circle,rgba(201,169,110,.18),rgba(10,8,5,.6));
  color:var(--gold);pointer-events:none;
  animation:daMedFloat 4.8s ease-in-out infinite;
}
.da-medallion svg{width:18px;height:18px;opacity:.85;}
@keyframes daMedFloat{0%,100%{translate:0 -6px;}50%{translate:0 6px;}}
@media (max-width:749px){.da-medallion{display:none;}}

/* ---- 2. ÉDITORIAL (`da-editorial.liquid`) ---- */
.da-editorial{position:relative;min-height:86svh;display:flex;align-items:center;overflow:hidden;isolation:isolate;}
.da-editorial__bg{position:absolute;inset:0;z-index:0;}
.da-editorial__bg img{width:100%;height:100%;object-fit:cover;object-position:center;filter:var(--grade);}
.da-editorial__scrim{
  position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(95deg,rgba(10,8,5,.93) 0%,rgba(10,8,5,.74) 42%,rgba(10,8,5,.30) 72%,rgba(10,8,5,.10) 100%),
    linear-gradient(to bottom,rgba(10,8,5,.5),transparent 30%,transparent 72%,rgba(10,8,5,.55));
}
.da-editorial__inner{
  position:relative;z-index:2;width:100%;max-width:1380px;margin-inline:auto;
  padding:clamp(64px,9vw,120px) clamp(24px,5vw,84px);
  display:flex;flex-direction:column;align-items:flex-start;gap:clamp(16px,2vw,26px);
}
.da-editorial__title{
  font-family:var(--serif-display);font-optical-sizing:auto;
  font-variation-settings:'opsz' 120;font-weight:300;
  font-size:clamp(2rem,4.4vw,3.5rem);line-height:1.08;letter-spacing:-.018em;
  color:var(--ivory);max-width:18ch;
}
.da-editorial__body{max-width:52ch;}
.da-editorial__body p{
  font-family:var(--serif);font-weight:300;
  font-size:clamp(1.1rem,1.7vw,1.45rem);line-height:1.6;
  color:color-mix(in oklab,var(--ivory) 92%,transparent);
}
.da-editorial__body p + p{margin-top:.7em;}
@media (min-width:1024px){.da-editorial__inner{padding-left:clamp(24px,6vw,110px);}}

/* ---- 3. LES TROIS GAMMES (`da-gammes.liquid`) ---- */
.da-gammes{max-width:1380px;margin-inline:auto;padding:clamp(64px,9vw,130px) clamp(24px,5vw,84px);}
.da-gammes__head{margin-bottom:clamp(36px,5vw,68px);}
.da-gammes__title{
  font-family:var(--serif-display);font-optical-sizing:auto;
  font-variation-settings:'opsz' 120;font-weight:300;
  font-size:clamp(1.9rem,4vw,3.2rem);line-height:1.06;letter-spacing:-.018em;
  color:var(--ivory);margin-top:.4em;max-width:16ch;
}
.da-gammes__grid{display:grid;gap:clamp(16px,2.2vw,30px);grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));}
/* Décrochage éditorial : la 2ᵉ carte descend — magazine, pas grille rigide. */
@media (min-width:760px){.da-gamme:nth-child(2){transform:translateY(34px);}}
.da-gamme{display:block;color:inherit;}
.da-gamme__media{
  position:relative;aspect-ratio:4/5;overflow:hidden;border-radius:var(--r-photo);
  border:1px solid var(--line-media);background:#0a0805;
}
.da-gamme__media img{width:100%;height:100%;object-fit:cover;filter:var(--grade);transition:transform 1s var(--ease);}
.da-gamme:hover .da-gamme__media img{transform:scale(1.06);}
.da-gamme__media::after{content:'';position:absolute;inset:0;background:linear-gradient(to top,rgba(10,8,5,.55),transparent 45%);}
.da-gamme__body{padding:clamp(16px,2vw,24px) 2px 0;}
.da-gamme__kicker{font-family:var(--sans);font-size:.64rem;font-weight:500;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);}
.da-gamme__name{
  font-family:var(--serif-display);font-optical-sizing:auto;
  font-variation-settings:'opsz' 72;font-weight:400;
  font-size:clamp(1.4rem,2.2vw,1.85rem);line-height:1.1;letter-spacing:-.01em;
  color:var(--ivory);margin:.35em 0 .3em;
}
.da-gamme__desc{
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:1.08rem;line-height:1.45;max-width:34ch;margin-bottom:.9em;
  color:color-mix(in oklab,var(--ivory) 80%,transparent);
}
.da-gamme__cta{pointer-events:none;}
.da-gamme:hover .da-gamme__cta::before{transform:translateX(6px);}
.da-gamme:hover .da-gamme__cta::after{transform:scaleX(1);}
/* Slider à points sur téléphone (la référence bascule sous 760 px). */
.da-gammes__dots{display:none;}
@media (max-width:759.98px){
  .da-gammes__grid{
    display:flex;grid-template-columns:none;gap:clamp(14px,4vw,20px);
    overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;
    -webkit-overflow-scrolling:touch;scrollbar-width:none;
  }
  .da-gammes__grid::-webkit-scrollbar{display:none;}
  .da-gammes__grid .da-gamme{flex:0 0 84%;scroll-snap-align:center;}
  /* en slider, les cartes hors écran ne reçoivent jamais `.in` : on les montre */
  .js .da-gammes__grid .da-gamme.rv{opacity:1!important;transform:none!important;}
  .da-gamme:nth-child(2){transform:none;}
  .da-gammes__dots{display:flex;justify-content:center;align-items:center;margin-top:clamp(14px,4vw,24px);}
  /* Le point mesure 7 px comme dans la référence ; c'est le padding qui porte
     la zone tactile. La référence tombait à 19×27 px, sous le minimum de
     24×24 px (WCAG 2.2 « target-size ») : on passe le padding latéral à 9 px
     → 25×27 px de zone, POINT VISUEL INCHANGÉ (`background-clip: content-box`). */
  .da-gammes__dot{
    appearance:none;-webkit-appearance:none;border:0;cursor:pointer;box-sizing:content-box;
    width:7px;height:7px;padding:10px 9px;border-radius:99px;
    background-color:color-mix(in oklab,var(--gold) 30%,transparent);background-clip:content-box;
    transition:width .4s var(--ease),background-color .4s;
  }
  .da-gammes__dot.is-active{width:24px;background-color:var(--gold);}
}

/* ---- 4. SPOTLIGHT SIGNATURE (`da-spotlight.liquid`) ---- */
.da-spot{max-width:1380px;margin-inline:auto;padding:clamp(64px,9vw,130px) clamp(24px,5vw,84px);}
.da-spot__head{margin-bottom:clamp(28px,4vw,48px);}
.da-spot__title{
  font-family:var(--serif-display);font-optical-sizing:auto;
  font-variation-settings:'opsz' 120;font-weight:300;
  font-size:clamp(2rem,4.2vw,3.4rem);line-height:1.07;letter-spacing:-.018em;
  color:var(--ivory);margin-top:.4em;max-width:16ch;
}
.da-spot__inner{display:grid;grid-template-columns:1fr;gap:clamp(36px,5vw,72px);align-items:center;}
.da-spot__visual{position:relative;isolation:isolate;}
.da-spot__halo{
  position:absolute;z-index:0;top:50%;left:50%;translate:-50% -50%;
  width:92%;aspect-ratio:1;pointer-events:none;filter:blur(6px);
  background:radial-gradient(circle at 50% 42%,rgba(201,169,110,.34),rgba(201,169,110,.10) 46%,transparent 70%);
  animation:daSpotHalo 7s var(--ease-sine) infinite alternate;
}
@keyframes daSpotHalo{from{opacity:.72;scale:.98;}to{opacity:1;scale:1.04;}}
.da-spot__media{
  position:relative;z-index:1;aspect-ratio:1;overflow:hidden;border-radius:var(--r-photo);
  border:1px solid rgba(201,169,110,.18);background:#0a0805;
}
.da-spot__media img{width:100%;height:100%;object-fit:cover;object-position:center;filter:var(--grade);}
/* Pastille de prix posée sur le visuel (bureau seulement, sinon doublon). */
.da-spot__price{
  position:absolute;z-index:2;right:clamp(10px,2vw,20px);bottom:clamp(10px,2vw,20px);display:none;
  font-family:var(--serif-display);font-optical-sizing:auto;font-variation-settings:'opsz' 48;font-weight:300;
  font-size:clamp(1.1rem,1.6vw,1.4rem);letter-spacing:.01em;
  color:var(--bg);background:var(--gold);padding:.42em .9em;border-radius:2px;
  box-shadow:0 6px 22px rgba(0,0,0,.32);
}
.da-spot__price del,.da-spot__price-inline del{display:none;}
.da-spot__price ins,.da-spot__price-inline ins{text-decoration:none;}
.da-spot__lede{margin-top:clamp(14px,2vw,22px);max-width:46ch;}
.da-spot__lede p{
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:clamp(1.1rem,1.6vw,1.4rem);line-height:1.55;
  color:color-mix(in oklab,var(--ivory) 90%,transparent);
}
/* Les 3 actifs : liste éditoriale à filets, jamais des cartes. */
.da-spot__actifs{margin:clamp(26px,3.4vw,40px) 0 clamp(26px,3.4vw,38px);border-top:1px solid rgba(201,169,110,.18);max-width:50ch;}
.da-spot__actif{display:flex;flex-direction:column;gap:.2em;padding:clamp(14px,1.8vw,18px) 0;border-bottom:1px solid rgba(201,169,110,.18);}
.da-spot__actif-name{
  font-family:var(--serif-display);font-optical-sizing:auto;font-variation-settings:'opsz' 48;font-weight:400;
  font-size:clamp(1.05rem,1.5vw,1.22rem);letter-spacing:-.01em;color:var(--ivory);
}
.da-spot__actif-benefit{
  font-family:var(--sans);font-weight:400;font-size:.8rem;letter-spacing:.02em;line-height:1.5;
  color:color-mix(in oklab,var(--ivory) 64%,transparent);
}
.da-spot__cta-row{display:flex;align-items:center;gap:clamp(18px,3vw,34px);flex-wrap:wrap;}
.da-spot__price-inline{
  font-family:var(--serif-display);font-optical-sizing:auto;font-variation-settings:'opsz' 48;font-weight:300;
  font-size:clamp(1.15rem,1.6vw,1.45rem);letter-spacing:.01em;color:var(--gold-pale);
}
@media (min-width:900px){
  .da-spot__inner{grid-template-columns:minmax(0,1.02fr) minmax(0,1fr);}
  .da-spot__price{display:inline-block;}
  .da-spot__price-inline{display:none;}
}

/* ---- 5. LES SOINS LES PLUS DÉSIRÉS (`product-list`) ---- */
.da-desires{max-width:1380px;margin-inline:auto;padding-inline:clamp(24px,5vw,84px);}
.da-desires__head{
  display:flex;align-items:flex-end;justify-content:space-between;gap:12px;
  flex-wrap:wrap;margin-bottom:clamp(24px,3vw,32px);
}
/* La référence règle ce titre en `h4` (1 rem) : c'est un intertitre, pas un H2 de section. */
.da-desires__title{
  font-family:var(--serif-display);font-optical-sizing:auto;font-variation-settings:'opsz' 72;font-weight:400;
  font-size:clamp(1.25rem,2vw,1.6rem);line-height:1.1;letter-spacing:-.01em;color:var(--ivory);
}
/* 4 colonnes sur bureau, 2 sur téléphone — une GRILLE, jamais un rail. */
.da-desires__grid{grid-template-columns:repeat(2,1fr);gap:36px 16px;padding-inline:0;max-width:none;}
@media (min-width:900px){.da-desires__grid{grid-template-columns:repeat(4,1fr);}}

/* ---- 6. RÉASSURANCE + OFFRE (`da-reassurance.liquid`) ---- */
.da-reassur{position:relative;overflow:hidden;isolation:isolate;}
.da-reassur__veil{position:absolute;inset:0;z-index:0;opacity:.5;}
.da-reassur__veil img{width:100%;height:100%;object-fit:cover;filter:var(--grade);}
.da-reassur::after{
  content:'';position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(to bottom,rgba(10,8,5,.7),rgba(10,8,5,.5),rgba(10,8,5,.7));
}
.da-reassur__inner{
  position:relative;z-index:2;max-width:1380px;margin-inline:auto;
  padding:clamp(56px,7vw,100px) clamp(24px,5vw,84px);
  display:flex;flex-direction:column;align-items:center;text-align:center;gap:clamp(34px,5vw,60px);
}
.da-reassur__offer{
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:clamp(1.3rem,2.6vw,2rem);line-height:1.4;color:var(--ivory);max-width:30ch;
}
.da-reassur__offer-mark{
  display:block;font-family:var(--sans);font-style:normal;font-weight:500;
  font-size:.68rem;letter-spacing:.34em;text-transform:uppercase;color:var(--gold);margin-bottom:.9em;
}
.da-reassur__pillars{
  display:grid;gap:clamp(28px,4vw,56px);width:100%;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));
  border-top:1px solid rgba(201,169,110,.18);padding-top:clamp(34px,4vw,54px);
}
.da-pillar{display:flex;flex-direction:column;gap:.55em;}
.da-pillar__title{
  font-family:var(--serif-display);font-optical-sizing:auto;font-variation-settings:'opsz' 48;font-weight:400;
  font-size:1.2rem;color:var(--gold-pale);
}
.da-pillar__text{
  font-family:var(--sans);font-weight:300;font-size:.9rem;line-height:1.6;
  color:color-mix(in oklab,var(--ivory) 78%,transparent);max-width:30ch;margin-inline:auto;
}

@media (max-width:749px){
  .da-hero{min-height:88svh;}
  .da-hero__media img{object-position:64% 22%;}
  .da-hero__title{font-size:clamp(2.3rem,11vw,3.4rem);}
}
@media (prefers-reduced-motion:reduce){
  .da-hero__media img,.da-spot__halo,.da-medallion{animation:none;}
}

/* ============ BANDEAU DE PAGE (catégorie / page) ============ */
.phero{position:relative;min-height:clamp(300px,52svh,540px);display:flex;align-items:flex-end;overflow:hidden;}
.phero__media{position:absolute;inset:0;z-index:0;overflow:hidden;}
.phero__media img{width:100%;height:100%;object-fit:cover;object-position:center 50%;filter:var(--grade);
  animation:kenburns 34s ease-in-out infinite alternate;}
.phero__scrim{position:absolute;inset:0;z-index:2;background:
  linear-gradient(180deg,rgba(11,9,7,.62) 0%,rgba(11,9,7,.16) 30%,rgba(11,9,7,.72) 72%,rgba(11,9,7,.98) 100%),
  radial-gradient(140% 58% at 20% 100%,rgba(11,9,7,.7),transparent 62%);}
.phero__inner{position:relative;z-index:5;width:100%;max-width:var(--maxw);margin-inline:auto;padding:0 var(--pad-x) clamp(30px,5vw,54px);}
.phero h1{font-size:clamp(34px,8vw,74px);font-weight:300;margin-top:12px;}
.phero p{margin-top:16px;max-width:58ch;}
/* En-tête de page sans photo propre. Il était PLAT (fond noir, halo annulé) et
   c'est ce que Rayan a vu : « ça fait trop fade ». La référence ne laisse jamais
   un titre de page sur du noir nu — `da-coffrets` et `da-gamme` posent tous deux
   un VOILE D'OR d'ambiance derrière l'écriture (`da-voile-or.webp` + fondu +
   Ken Burns). On applique ici ce même traitement, en une seule règle : les six
   gabarits qui portent `phero--flat` (nos soins, contact, page, article, 404,
   index) reprennent d'un coup l'en-tête cinématographique de la maison. */
.phero--flat{
  min-height:clamp(240px,38svh,420px);
  padding-top:calc(var(--header-h) + clamp(48px,10vw,110px));
  background:var(--bg);
}
.phero--flat::after{
  content:'';position:absolute;inset:0;z-index:0;pointer-events:none;
  /* Une seule couche : le voile en fond, le fondu de lisibilité par-dessus.
     Le fondu est celui de `da-coffrets__hero-scrim` — assez franc pour tenir le
     contraste AA de l'ivoire et de l'or, assez ouvert pour laisser voir l'or. */
  background:
    linear-gradient(to top,
      rgba(8,6,4,.96) 2%,rgba(8,6,4,.86) 26%,rgba(8,6,4,.62) 48%,
      rgba(8,6,4,.34) 70%,rgba(8,6,4,.40) 100%),
    radial-gradient(120% 80% at 50% 116%,rgba(201,169,110,.16),transparent 58%),
    image-set(
      url('assets/img/da-voile-or-1200.webp') 1x,
      url('assets/img/da-voile-or-2000.webp') 2x
    ) center/cover no-repeat;
  filter:var(--grade);
  animation:kenburns 40s ease-in-out infinite alternate;
}
@media (max-width:700px){
  /* Le voile est décoratif : sur téléphone on sert la variante légère. */
  .phero--flat::after{
    background-image:
      linear-gradient(to top,
        rgba(8,6,4,.96) 2%,rgba(8,6,4,.86) 26%,rgba(8,6,4,.62) 48%,
        rgba(8,6,4,.34) 70%,rgba(8,6,4,.40) 100%),
      radial-gradient(120% 80% at 50% 116%,rgba(201,169,110,.16),transparent 58%),
      url('assets/img/da-voile-or-760.webp');
  }
}
.cat-intro{padding:clamp(26px,5vw,44px) 0 0;}
.cat-intro .lede{max-width:min(62ch,var(--maxw));margin-inline:auto;padding-inline:var(--pad-x);}
.phero--flat .phero__scrim{display:none;}

/* fil d'ariane */
.crumbs{font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--ivory-faint);}
.crumbs a{transition:color .3s;}
.crumbs a:hover{color:var(--gold-warm);}
.crumbs .sep{margin-inline:8px;color:var(--gold-deep);}

/* ============ FICHE PRODUIT ============ */
.pdp{max-width:var(--maxw);margin-inline:auto;padding:calc(var(--header-h) + 26px) var(--pad-x) var(--space-section);}
.pdp__grid{display:grid;gap:clamp(26px,5vw,60px);}
@media (min-width:960px){
  /* `desktop_media_position: left` + `gap: 48` de la référence :
     la photo à gauche, l'achat à droite AU MÊME NIVEAU, détails collants. */
  .pdp__grid{grid-template-columns:1.06fr .94fr;align-items:start;column-gap:48px;}
  .pdp__grid > .gal{grid-column:1;grid-row:1;}
  .pdp__grid > .buy{grid-column:2;grid-row:1 / span 2;}
  .pdp__grid > .acc{grid-column:1;grid-row:2;margin-top:0;}
}

/* ---- galerie ----------------------------------------------------------
   Réplique du bloc `_product-media-gallery` (product.json) :
   ratio portrait 1/1.25 (= 4/5), rayon 12 px, image gap 4 px,
   vignettes À GAUCHE en 64 px de large avec un rayon de 8 px,
   et le packshot qui respire sur le brun sous un halo doré
   (`lartdessens-da.css` § « Galerie produit »).                        */
.gal{position:relative;}
.gal__stage:focus-visible,.rail:focus-visible{outline:2px solid var(--gold-warm);outline-offset:4px;}
.gal__stage{
  display:grid;grid-auto-flow:column;grid-auto-columns:100%;
  gap:4px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;
  border-radius:var(--r-photo);
}
.gal__stage::-webkit-scrollbar{display:none;}
.gal__stage figure{
  position:relative;scroll-snap-align:center;margin:0;aspect-ratio:1/1.25;
  border-radius:var(--r-photo);overflow:hidden;
  border:1px solid var(--line-media);
  background:
    radial-gradient(80% 70% at 50% 34%,rgba(201,169,110,.07),transparent 72%),
    var(--media-bg);
}
.gal__stage img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:var(--grade);}
/* Points de la galerie : pastille visible de 7 px, zone tactile de 25 px
   (WCAG 2.2 « target-size » — un point de 7 px ne se vise pas au doigt).
   `background-clip: content-box` garde la pastille exactement à 7 px. */
.gal__dots{display:flex;justify-content:center;gap:0;margin-top:8px;}
.gal__dots button{
  box-sizing:content-box;width:7px;height:7px;padding:9px;border:0;
  border-radius:50%;background-color:var(--line);background-clip:content-box;
  cursor:pointer;transition:background-color .35s,width .35s,height .35s,padding .35s;
}
/* Le point actif grossit, mais la BOÎTE reste à 25 px : un `transform: scale()`
   agrandirait aussi la zone tactile, qui recouvrirait ses voisines (mesuré :
   zone utile ramenée à 20,6 px). On joue donc taille + padding à somme constante. */
.gal__dots button[aria-current="true"]{
  background-color:var(--gold);width:11px;height:11px;padding:7px;
}
.gal__thumbs{display:none;}
@media (min-width:960px){
  .gal{display:grid;grid-template-columns:64px 1fr;gap:12px;align-items:start;}
  .gal__stage{grid-column:2;grid-row:1;}
  .gal__dots{display:none;}
  .gal__thumbs{display:flex;flex-direction:column;gap:4px;grid-column:1;grid-row:1;}
  .gal__thumbs button{
    padding:0;border:1px solid transparent;border-radius:8px;overflow:hidden;background:var(--media-bg);cursor:pointer;
    aspect-ratio:1/1.25;transition:border-color .35s,opacity .35s,outline-color .35s;opacity:.62;
    outline:1px solid transparent;
  }
  /* « ferrure or » du sélectionné — filet + liseré, comme la référence. */
  .gal__thumbs button[aria-current="true"]{border-color:var(--gold);outline-color:rgba(201,169,110,.5);opacity:1;}
  .gal__thumbs button:hover{opacity:1;}
  .gal__thumbs img{width:100%;height:100%;object-fit:cover;filter:var(--grade);}
}

/* ---- colonne d'achat --------------------------------------------------
   Ordre et échelles du bloc `_product-details` (product.json) :
   titre Fraunces (opsz 96) → prix Fraunces doré → filet → contenance →
   quantité + panier → renfort. Le gap de 24 px est celui de la référence. */
.buy{display:flex;flex-direction:column;gap:24px;}
@media (min-width:960px){.buy{position:sticky;top:calc(var(--header-h) + 24px);}}
.buy h1{
  font-family:var(--serif-display);font-optical-sizing:auto;
  font-variation-settings:'opsz' 96;font-weight:300;
  font-size:clamp(1.9rem,3.4vw,2.9rem);line-height:1.08;letter-spacing:-.018em;
  color:var(--ivory);
}
/* Le prix est le point de décision : serif Fraunces, doré, généreux. */
.buy__price{
  font-family:var(--serif-display);font-optical-sizing:auto;font-weight:400;
  font-size:clamp(1.5rem,2.4vw,1.85rem);line-height:1.1;letter-spacing:.005em;
  color:var(--gold);
}
.buy__price del{opacity:.45;font-size:.72em;margin-right:10px;}
.buy__price ins{text-decoration:none;}
/* filet `_divider` : 1 px, pleine largeur, couleur de bordure de la DA */
.buy__rule{border:0;height:1px;background:var(--line-media);margin:0;}
/* Les deux premiers blocs se répondent de près (gap 10 dans la référence) :
   le titre et le prix forment un seul groupe, le filet ouvre l'achat. */
.buy h1 + .buy__price{margin-top:-14px;}

/* variantes */
.buy .variations{width:100%;border-collapse:collapse;}
.buy .variations tr{display:block;}
.buy .variations th,.buy .variations td{display:block;padding:0;text-align:left;}
/* Libellé du groupe d'option (« Contenance ») : or lettré, comme la référence. */
.buy .variations th label{
  font-family:var(--sans);font-size:.66rem;font-weight:500;letter-spacing:.3em;
  text-transform:uppercase;color:var(--gold);margin-bottom:10px;display:block;
}
/* Pastilles de variante — `variant_style: buttons` de la référence :
   Montserrat lettré, filet or discret, sélectionné = or plein sur noir. */
.lds-swatches{display:flex;flex-wrap:wrap;gap:9px;}
.lds-swatch{
  min-height:46px;padding:12px 20px;
  border:1px solid rgba(201,169,110,.34);border-radius:var(--r);
  background:transparent;color:var(--ivory);cursor:pointer;
  font-family:var(--sans);font-size:.72rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;
  transition:border-color .4s var(--ease),color .4s var(--ease),background .4s var(--ease);
}
.lds-swatch:hover{border-color:var(--gold);}
.lds-swatch[aria-pressed="true"]{background:var(--gold);border-color:var(--gold);color:var(--bg);}
.lds-swatch[disabled]{opacity:.35;cursor:not-allowed;text-decoration:line-through;}
.buy .variations select{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px;}
/* UN SEUL PRIX, comme sur la fiche Shopify : celui du haut (`.buy__price`)
   se met à jour selon la contenance choisie (voir app.js). Le prix que
   WooCommerce ré-affiche sous les pastilles est donc un doublon — il
   repoussait le bouton d'achat de 84 px vers le bas (mesuré). Idem pour la
   disponibilité, déjà portée par le badge « En stock » du renfort. */
.woocommerce-variation-price,
.woocommerce-variation-availability{display:none;}
.buy__price[data-variante]{transition:opacity .25s var(--ease);}
.woocommerce-variation-availability{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ivory-faint);}
.reset_variations{display:none!important;}

/* quantité + ajout */
.buy form.cart{display:flex;flex-direction:column;gap:16px;margin:0;}
.buy form.cart .woocommerce-variation-add-to-cart,
.buy .woocommerce-variation-add-to-cart{display:flex;gap:12px;align-items:stretch;flex-wrap:wrap;}
.buy form.cart.cart:not(.variations_form){align-items:stretch;}
.buy form.cart > .quantity + .single_add_to_cart_button{flex:1;}
.buy form.cart:has(> .quantity){flex-direction:row;flex-wrap:wrap;align-items:stretch;}
.buy .woocommerce-variation{display:flex;flex-direction:column;gap:10px;}
.buy .quantity{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:var(--r);flex:none;}
.buy .quantity .qbtn{width:44px;min-height:48px;background:none;border:0;color:var(--gold-warm);font-size:17px;line-height:1;cursor:pointer;transition:color .3s;}
.buy .quantity .qbtn:hover{color:var(--gold-pale);}
.buy .quantity label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}
.buy .quantity input{
  width:44px;min-height:48px;text-align:center;background:none;border:0;
  font-family:var(--serif);font-size:17px;color:var(--ivory);appearance:textfield;-moz-appearance:textfield;
}
.buy .quantity input::-webkit-outer-spin-button,.buy .quantity input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.buy .single_add_to_cart_button{flex:1;position:relative;overflow:hidden;}
/* Reflet qui traverse le CTA, comme `daBtnSheenP` dans la référence. */
@media (prefers-reduced-motion:no-preference){
  .buy .single_add_to_cart_button:not(.disabled)::after{
    content:'';position:absolute;inset:0;pointer-events:none;
    background:linear-gradient(105deg,transparent 38%,rgba(255,248,233,.5) 50%,transparent 62%);
    transform:translateX(-120%);
    animation:sheenAtc 5s ease-in-out 2s infinite;
  }
  @keyframes sheenAtc{0%{transform:translateX(-120%);}18%,100%{transform:translateX(120%);}}
}
.buy .stock.out-of-stock{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--alert);}

/* ---- renfort de buy-box (`da-buybox-inline`) --------------------------
   Sous le bouton : l'accroche du produit en italique, l'état de stock réel,
   la date d'expédition, puis les arguments. Valeurs de la référence.       */
.bbx{
  margin-top:clamp(14px,2vw,20px);padding-top:clamp(16px,2vw,20px);
  border-top:1px solid rgba(201,169,110,.22);
  display:flex;flex-direction:column;gap:clamp(14px,2vw,18px);
}
.bbx__benefit{
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:clamp(1.12rem,1.4vw,1.34rem);line-height:1.42;
  color:color-mix(in oklab,var(--ivory) 86%,transparent);
  max-width:46ch;
}
.bbx__benefit p + p{margin-top:10px;}
.bbx__status{display:flex;flex-wrap:wrap;align-items:center;gap:.55em .9em;}
.bbx__stock{
  display:inline-flex;align-items:center;gap:.55em;
  font-family:var(--sans);font-size:.66rem;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;
  padding:.42em .85em;border-radius:999px;
  border:1px solid rgba(201,169,110,.28);background:rgba(201,169,110,.06);
  color:color-mix(in oklab,var(--ivory) 82%,transparent);
}
.bbx__dot{width:6px;height:6px;border-radius:50%;flex:none;background:#8FBE8A;box-shadow:0 0 0 3px rgba(143,190,138,.18);}
.bbx__stock.is-out .bbx__dot{background:var(--gold);box-shadow:0 0 0 3px rgba(201,169,110,.16);}
.bbx__eta{
  font-family:var(--sans);font-size:.78rem;font-weight:300;line-height:1.4;
  color:color-mix(in oklab,var(--ivory) 62%,transparent);
}
.bbx__eta strong{font-weight:600;letter-spacing:.02em;color:color-mix(in oklab,var(--ivory) 88%,transparent);}
.bbx__trust{display:flex;flex-direction:column;gap:.78em;}
.bbx__trust li{
  display:flex;align-items:center;gap:.7em;
  font-family:var(--sans);font-size:.72rem;font-weight:500;
  letter-spacing:.1em;text-transform:uppercase;
  color:color-mix(in oklab,var(--ivory) 70%,transparent);
}
.bbx__trust svg{
  width:19px;height:19px;flex:none;opacity:.92;
  stroke:var(--gold);fill:none;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round;
}

/* ---- réassurance de fiche (`da-product-reassur`) ---------------------- */
.preassur__inner{
  max-width:1100px;margin-inline:auto;
  padding:clamp(40px,6vw,80px) clamp(24px,5vw,84px);
  display:flex;flex-direction:column;align-items:center;text-align:center;
  gap:clamp(34px,5vw,58px);
}
.preassur__offer{max-width:34ch;}
.preassur__offer-mark{
  display:block;font-family:var(--sans);font-size:.66rem;font-weight:500;
  letter-spacing:.32em;text-transform:uppercase;color:var(--gold);margin-bottom:.8em;
}
.preassur__offer-text{
  display:block;font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:clamp(1.25rem,2.4vw,1.85rem);line-height:1.4;color:var(--ivory);
}
.preassur__pillars{
  display:grid;gap:clamp(28px,4vw,52px);width:100%;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));
  padding-top:clamp(32px,4vw,50px);border-top:1px solid rgba(201,169,110,.18);
}
.preassur__pillar{display:flex;flex-direction:column;align-items:center;gap:.6em;}
.preassur__pillar-icon{color:var(--gold);line-height:0;}
.preassur__pillar-icon svg{
  width:30px;height:30px;opacity:.9;
  stroke:currentColor;fill:none;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round;
}
.preassur__pillar-title{
  font-family:var(--serif-display);font-optical-sizing:auto;
  font-variation-settings:'opsz' 48;font-weight:400;font-size:1.15rem;color:var(--gold-pale);
}
.preassur__pillar-text{
  font-family:var(--sans);font-weight:300;font-size:.88rem;line-height:1.6;max-width:28ch;
  color:color-mix(in oklab,var(--ivory) 76%,transparent);
}
.preassur__reviews{
  width:100%;padding-top:clamp(32px,4vw,50px);
  border-top:1px solid rgba(201,169,110,.18);
  display:flex;flex-direction:column;align-items:center;gap:.7em;
}
.preassur__reviews .eyebrow{justify-content:center;}
.preassur__reviews-empty{
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:clamp(1.2rem,2.2vw,1.6rem);line-height:1.4;color:var(--ivory);max-width:28ch;
}
.preassur__reviews-soon{
  font-family:var(--sans);font-weight:300;font-size:.82rem;letter-spacing:.02em;
  color:color-mix(in oklab,var(--ivory) 55%,transparent);
}
/* Le formulaire d'avis reste accessible, replié, aligné à gauche pour être lisible. */
.preassur__form{width:100%;max-width:60ch;margin-top:.6em;text-align:left;border-top:0;}

/* ---- accordéons de fiche (`da-product-detail`) ---- */
.acc__eyebrow{margin-bottom:14px;}
.acc{border-top:1px solid var(--line-soft);margin-top:6px;}
.acc:has(> .acc__eyebrow){border-top:0;}
.acc__eyebrow + details{border-top:1px solid var(--line-soft);}
.acc details{border-bottom:1px solid var(--line-soft);}
.acc summary{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:19px 0;min-height:48px;cursor:pointer;list-style:none;
  font-size:11.5px;font-weight:500;letter-spacing:.24em;text-transform:uppercase;color:var(--ivory);
  transition:color .35s;
}
.acc summary::-webkit-details-marker{display:none;}
.acc summary:hover{color:var(--gold-warm);}
.acc summary::after{content:'+';font-size:17px;color:var(--gold);transition:transform .4s var(--ease);flex:none;}
.acc details[open] summary::after{transform:rotate(45deg);}
.acc__body{padding:0 0 22px;color:var(--ivory-soft);font-size:15px;line-height:1.75;}
.acc__body p + p{margin-top:12px;}
.acc__body ul{display:flex;flex-direction:column;gap:9px;margin-top:4px;}
.acc__body li{display:flex;gap:12px;}
.acc__body li::before{content:'';flex:none;width:13px;height:1px;background:var(--gold);margin-top:12px;}
.acc__body strong{color:var(--ivory);font-weight:500;}

/* ---- barre d'achat collante (`sticky-add-to-cart`) --------------------
   Réplique de la barre Horizon : elle porte LA PHOTO du produit (celle de la
   variante choisie), le titre en Cormorant italique, la variante, le prix
   doré lettré, puis le bouton. Fond nuit + liseré or de la référence.      */
.satc[hidden]{display:none;}
.satc{
  position:fixed;left:0;right:0;bottom:0;z-index:88;
  display:flex;align-items:center;gap:12px;
  padding:10px var(--pad-x) calc(10px + env(safe-area-inset-bottom));
  background:rgba(18,14,9,.92);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);
  border-top:1px solid rgba(201,169,110,.4);
  transform:translateY(110%);transition:transform .5s var(--ease);
}
.satc.is-in{transform:none;}
.satc__media{
  flex:none;width:46px;aspect-ratio:1/1.25;overflow:hidden;
  border-radius:8px;border:1px solid var(--line-media);background:var(--media-bg);
}
.satc__media img{width:100%;height:100%;object-fit:cover;filter:var(--grade);}
.satc__info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;}
.satc__name{
  font-family:var(--serif);font-style:italic;font-weight:400;font-size:15px;color:var(--ivory);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.satc__variant{
  font-family:var(--sans);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;
  color:color-mix(in oklab,var(--ivory) 60%,transparent);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.satc__variant[hidden]{display:none;}
.satc__price{
  flex:none;font-family:var(--sans);font-weight:500;font-size:14px;letter-spacing:.08em;color:var(--gold);
  white-space:nowrap;
}
.satc__price del{display:none;}          /* la barre ne montre que le prix payé */
.satc__price ins{text-decoration:none;}
.satc .btn{padding-inline:20px;white-space:nowrap;}
@media (max-width:400px){
  .satc{gap:9px;padding-inline:14px;}
  .satc__media{width:40px;}
  .satc__price{font-size:13px;}
  .satc .btn{padding-inline:15px;font-size:11px;}
}
@media (min-width:960px){.satc{display:none;}}

/* ============ PAGES / CONTENU ÉDITORIAL ============ */
.entry{max-width:calc(var(--maxw-read) + var(--pad-x)*2);margin-inline:auto;padding:0 var(--pad-x) var(--space-section);}
.entry > * + *{margin-top:20px;}
.entry p,.entry li{color:var(--ivory-soft);font-size:16px;line-height:1.78;}
.entry h2{font-family:var(--serif-display);font-optical-sizing:auto;font-weight:300;font-size:clamp(26px,5.4vw,40px);line-height:1.1;letter-spacing:-.012em;color:var(--ivory);margin-top:var(--space-block);}
.entry h3{font-family:var(--serif);font-weight:400;font-size:clamp(20px,4.4vw,26px);color:var(--ivory);margin-top:calc(var(--space-block)*.6);}
.entry h4{font-size:12px;font-weight:500;letter-spacing:.24em;text-transform:uppercase;color:var(--gold-warm);margin-top:26px;}
.entry ul,.entry ol{display:flex;flex-direction:column;gap:10px;}
.entry ul li{display:flex;gap:13px;}
.entry ul li::before{content:'';flex:none;width:14px;height:1px;background:var(--gold);margin-top:13px;}
.entry ol{counter-reset:n;}
.entry ol li{display:flex;gap:13px;counter-increment:n;}
.entry ol li::before{content:counter(n);flex:none;font-family:var(--serif);font-style:italic;color:var(--gold);width:18px;}
/* Les liens de prose se soulignent — mais un bouton n'est pas de la prose :
   sans cette exclusion, `.entry a` repeignait le libellé en or sur fond or. */
.entry a:not(.btn):not(.btn--text){color:var(--gold-warm);border-bottom:1px solid var(--line);transition:border-color .35s;}
.entry a:not(.btn):not(.btn--text):hover{border-color:var(--gold);}
.entry a.btn--solid{color:var(--bg);}
.entry strong{color:var(--ivory);font-weight:500;}
.entry blockquote{border-left:1px solid var(--gold);padding-left:22px;font-family:var(--serif);font-style:italic;font-size:20px;color:var(--ivory);}
.entry table{width:100%;border-collapse:collapse;font-size:14.5px;}
.entry th,.entry td{padding:12px 10px;border-bottom:1px solid var(--line-soft);text-align:left;}
.entry th{font-family:var(--sans);font-size:11px;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-warm);}
.entry img{border-radius:var(--r-photo);}

/* ============ OFFRE / BANDEAU FINAL ============ */
.offer{position:relative;overflow:hidden;text-align:center;}
.offer__media{position:absolute;inset:0;z-index:0;overflow:hidden;}
.offer__media img{width:100%;height:100%;object-fit:cover;filter:var(--grade) brightness(.8);
  animation:kenburns 38s ease-in-out infinite alternate;}
.offer__scrim{position:absolute;inset:0;z-index:1;background:
  linear-gradient(180deg,rgba(11,9,7,.93) 0%,rgba(11,9,7,.76) 46%,rgba(11,9,7,.93) 100%),
  radial-gradient(90% 70% at 50% 50%,rgba(11,9,7,.5),transparent 72%);}
.offer__inner{position:relative;z-index:3;max-width:var(--maxw);margin-inline:auto;padding:var(--space-section) var(--pad-x);}
.offer .script{display:block;font-size:clamp(28px,7vw,50px);color:var(--gold-warm);line-height:1;margin-bottom:4px;}
.offer h2{font-family:var(--serif-display);font-optical-sizing:auto;font-weight:300;font-size:clamp(30px,6.6vw,58px);line-height:1.04;letter-spacing:-.012em;}
.offer p{margin:18px auto 0;max-width:46ch;color:var(--ivory);}
.code{
  display:inline-flex;align-items:center;gap:12px;margin-top:26px;
  padding:14px 26px;border:1px dashed var(--gold);border-radius:var(--r);
  font-family:var(--sans);font-size:15px;font-weight:500;letter-spacing:.28em;color:var(--gold-pale);
}

/* Le tunnel reste sobre — mais jamais un noir mort. */
.is-tunnel .entry{position:relative;isolation:isolate;padding-top:clamp(20px,4vw,36px);}
.is-tunnel .entry::before{
  content:'';position:absolute;inset:-8% -10%;z-index:-1;pointer-events:none;
  background:radial-gradient(52% 42% at 78% 6%,rgba(201,169,110,.1),transparent 66%);
}
.entry--wide{max-width:var(--maxw);}

/* ============ PIED DE PAGE ============ */
.ftr{position:relative;border-top:1px solid var(--line-soft);background:var(--bg3);}
.ftr__inner{max-width:var(--maxw);margin-inline:auto;padding:var(--space-block) var(--pad-x) 26px;
  display:grid;gap:clamp(30px,5vw,54px);}
@media (min-width:820px){.ftr__inner{grid-template-columns:1.3fr 1fr 1fr;}}
.ftr__brand b{display:block;font-family:var(--serif-display);font-optical-sizing:auto;font-weight:300;font-size:26px;color:var(--ivory);margin-bottom:6px;}
.ftr__brand .script{display:block;font-size:22px;color:var(--gold-warm);margin-bottom:16px;}
.ftr address{font-style:normal;font-size:14px;line-height:1.75;color:var(--ivory-soft);}
.ftr h3{font-size:10.5px;font-weight:500;letter-spacing:.3em;text-transform:uppercase;color:var(--gold-warm);margin-bottom:16px;}
.ftr__list{display:flex;flex-direction:column;gap:11px;font-size:14px;color:var(--ivory-soft);}
.ftr__list a{transition:color .3s;min-height:24px;display:inline-block;}
.ftr__list a:hover{color:var(--gold-warm);}
.ftr__legal{
  max-width:var(--maxw);margin-inline:auto;padding:20px var(--pad-x) 30px;
  border-top:1px solid var(--line-soft);
  display:flex;flex-wrap:wrap;gap:10px 20px;justify-content:space-between;
  font-size:11.5px;color:var(--ivory-faint);
}
.ftr__legal a:hover{color:var(--gold-warm);}

/* ============ WOOCOMMERCE — messages, panier, commande ============ */
.woocommerce-message,.woocommerce-info,.woocommerce-error,.wc-block-components-notice-banner{
  border:1px solid var(--line)!important;border-left:2px solid var(--gold)!important;
  background:rgba(18,14,10,.8)!important;color:var(--ivory)!important;
  border-radius:var(--r)!important;padding:15px 18px!important;margin-bottom:22px!important;
  font-size:14px!important;list-style:none!important;
}
.woocommerce-message a.button,.woocommerce-info a.button{
  float:right;background:none;border:0;color:var(--gold-warm);
  font-size:11px;letter-spacing:.2em;text-transform:uppercase;padding:2px 0;
  border-bottom:1px solid var(--line);
}
.woocommerce-error li{color:var(--ivory);}

/* panier & commande en blocs — repeindre la nuit */
.wc-block-components-panel,
.wc-block-cart,.wc-block-checkout{color:var(--ivory);}
.wc-block-components-product-name,
.wc-block-components-totals-item__label,
.wc-block-components-title,
.wc-block-cart__submit-container,
.wc-block-components-checkout-step__title{color:var(--ivory)!important;}
.wc-block-components-product-name{font-family:var(--serif)!important;font-size:18px!important;}
.wc-block-components-formatted-money-amount,.wc-block-components-totals-item__value{
  font-family:var(--serif)!important;color:var(--gold-warm)!important;}
.wc-block-cart-items__header{
  font-family:var(--sans)!important;font-size:10.5px!important;letter-spacing:.24em!important;
  text-transform:uppercase!important;color:var(--gold-deep)!important;border-bottom:1px solid var(--line-soft)!important;}
.wc-block-cart-items__row{border-bottom:1px solid var(--line-soft)!important;}
.wc-block-components-sidebar .wc-block-components-panel,
.wc-block-components-totals-wrapper{border-color:var(--line-soft)!important;}
.wc-block-components-sidebar-layout .wc-block-components-sidebar{
  background:rgba(18,14,10,.7);border:1px solid var(--line-soft);border-radius:var(--r-photo);padding:22px;}
.wc-block-components-button:not(.is-link){
  background:var(--gold)!important;color:var(--bg)!important;border-radius:var(--r)!important;
  font-family:var(--sans)!important;font-size:12px!important;font-weight:500!important;
  letter-spacing:.24em!important;text-transform:uppercase!important;min-height:52px!important;
  border:1px solid var(--gold)!important;
}
.wc-block-components-button:not(.is-link):hover{background:var(--gold-warm)!important;border-color:var(--gold-warm)!important;}
.wc-block-components-text-input input,.wc-block-components-textarea,
.wc-block-components-combobox-control input,
.wc-blocks-components-select__select,
.wc-block-components-form select,
.woocommerce-ordering select,
select.wc-blocks-components-select__select{
  background:rgba(11,9,7,.6)!important;border:1px solid var(--line)!important;
  color:var(--ivory)!important;border-radius:var(--r-input)!important;min-height:52px!important;
}
.wc-block-components-text-input label,.wc-blocks-components-select__label{color:var(--ivory-faint)!important;}
.wc-block-components-quantity-selector{border:1px solid var(--line)!important;border-radius:var(--r)!important;}
.wc-block-components-quantity-selector__button,.wc-block-components-quantity-selector__input{color:var(--ivory)!important;background:transparent!important;}
.wc-block-components-product-metadata,.wc-block-components-order-summary-item__description{color:var(--ivory-soft)!important;}
.wc-block-components-checkout-step__description,.wc-block-components-checkout-step__heading-content{color:var(--ivory-faint)!important;}
.wc-block-cart__empty-cart__title,.wc-block-components-title{font-family:var(--serif-display)!important;font-weight:300!important;}
.wp-block-woocommerce-cart,.wp-block-woocommerce-checkout{max-width:var(--maxw);margin-inline:auto;}
.wc-block-components-sidebar-layout{color:var(--ivory);}
.is-large.wc-block-cart .wc-block-cart-items td,
.is-large.wc-block-checkout .wc-block-components-order-summary-item{border-color:var(--line-soft)!important;}
a.wc-block-components-product-name:hover{color:var(--gold-warm)!important;}

/* Boutons WooCommerce classiques.
   WooCommerce peint ses boutons `.alt` en violet avec des sélecteurs plus
   spécifiques que les nôtres : on ne dépend pas de l'ordre des feuilles. */
.button,button.button,input.button,a.button,
.woocommerce #respond input#submit,
.single_add_to_cart_button{
  display:inline-flex;align-items:center;justify-content:center;gap:12px;
  min-height:48px;padding:15px 30px;border-radius:var(--r);
  border:1px solid var(--gold);
  background:var(--gold);color:var(--bg);
  font-family:var(--sans);font-size:12px;font-weight:500;letter-spacing:.24em;text-transform:uppercase;
  line-height:1.3;text-align:center;
  transition:background .45s var(--ease),transform .45s var(--ease);
}
.woocommerce a.button.alt,.woocommerce button.button.alt,
.woocommerce input.button.alt,.woocommerce #respond input#submit.alt,
.woocommerce button.button.alt.disabled,
.woocommerce a.button.alt.disabled,
.woocommerce .single_add_to_cart_button,
button.button.alt,a.button.alt,input.button.alt{
  background-color:var(--gold)!important;color:var(--bg)!important;border-color:var(--gold)!important;
}
.button:hover,a.button:hover,button.button:hover,
.woocommerce a.button.alt:hover,.woocommerce button.button.alt:hover{
  background-color:var(--gold-warm)!important;border-color:var(--gold-warm)!important;
  color:var(--bg)!important;transform:translateY(-2px);}
/* Un bouton grisé par l'opacité devient illisible. On garde un vrai contraste :
   il reste inactif, mais son libellé se lit encore. */
.button:disabled,button.button:disabled,.button.disabled,button.button.disabled,
.woocommerce button.button.alt.disabled,.woocommerce a.button.alt.disabled{
  opacity:1;transform:none;cursor:not-allowed;
  background-color:#3B3128!important;color:var(--ivory)!important;border-color:var(--line)!important;}
.button.disabled::after{display:none;}
.woocommerce .button.added_to_cart,.added_to_cart{background:transparent!important;color:var(--gold-warm)!important;border-color:var(--line)!important;}

.pdp .related,.pdp .upsells{margin-top:var(--space-section);}
.pdp .related > h2,.pdp .upsells > h2{
  font-family:var(--serif-display);font-optical-sizing:auto;font-weight:300;
  font-size:clamp(26px,5.4vw,42px);line-height:1.06;letter-spacing:-.012em;
  margin-bottom:var(--space-block);
}
.pdp ul.products{padding-inline:0;max-width:none;}

/* avis */
.pdp__avis{margin-top:var(--space-block);}
#reviews{margin-top:4px;}
.woocommerce-Reviews-title{display:none;}
.woocommerce-noreviews{color:var(--ivory-soft);font-size:15px;}
#reviews .comment-form{margin-top:14px;}
#reviews .comment-form label{display:block;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--ivory-faint);margin-bottom:8px;}
#reviews input[type=text],#reviews input[type=email],#reviews textarea{
  width:100%;background:rgba(11,9,7,.6);border:1px solid var(--line);color:var(--ivory);
  border-radius:var(--r-input);padding:13px 15px;min-height:48px;margin-bottom:16px;}
#reviews .stars a{color:var(--gold);}
.commentlist{display:flex;flex-direction:column;gap:22px;margin-bottom:26px;}
.commentlist .comment_container{display:flex;gap:16px;}
.commentlist img.avatar{width:44px;height:44px;border-radius:50%;}
.commentlist .meta{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-deep);margin-bottom:8px;}

/* tri / résultats d'archive */
.shop-toolbar{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px;
  max-width:var(--maxw);margin:0 auto var(--space-block);padding-inline:var(--pad-x);
}
.woocommerce-result-count{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--ivory-faint);margin:0;}
.woocommerce-ordering select{
  background:rgba(18,14,10,.8);border:1px solid var(--line);color:var(--ivory);
  border-radius:var(--r-input);padding:11px 14px;min-height:44px;font-size:12.5px;
}
.woocommerce-pagination{margin-top:var(--space-block);text-align:center;}
.woocommerce-pagination ul{display:inline-flex;gap:8px;}
.woocommerce-pagination a,.woocommerce-pagination span{
  display:grid;place-items:center;min-width:44px;min-height:44px;
  border:1px solid var(--line-soft);border-radius:var(--r);font-size:13px;color:var(--ivory-soft);}
.woocommerce-pagination .current{background:var(--gold);border-color:var(--gold);color:var(--bg);}

/* Le tableau du panier garde une largeur intrinsèque de 325 px : sous 360 px
   d'écran, il poussait la page. On le force à tenir dans son conteneur. */
.wc-block-cart-items{table-layout:fixed;width:100%;}
.wc-block-cart-item__image{width:72px;}
.wc-block-cart-item__image img{width:100%;height:auto;}
@media (max-width:400px){
  .wc-block-cart-item__image{width:56px;}
  .is-tunnel .entry{--pad-x:16px;}
}
/* WooCommerce planque ce champ à -9999em : la largeur du document s'en ressent. */
.wc-block-components-address-form__address_2-hidden-input{
  position:absolute!important;left:auto!important;width:1px!important;height:1px!important;
  overflow:hidden!important;clip-path:inset(50%)!important;
}

/* ============ NOS GAMMES — RANGÉES DÉFILANTES ============
   Réplique de `sections/da-rangees.liquid` (échelles, gouttières et couleurs
   reprises une à une). Seul écart assumé : le retrait latéral utilise
   `--pad-x` (22px mini) au lieu du `clamp(24px,5vw,84px)` de la référence,
   pour que les rangées s'alignent sur l'en-tête et le pied de NOTRE thème —
   2 px d'écart invisibles contre un décalage visible sur toute la page. */
.da-rangees{max-width:var(--maxw);margin:0 auto;padding:clamp(40px,6vw,72px) 0 clamp(64px,9vw,120px);}
.da-rangees__title{
  font-family:var(--serif-display);font-weight:300;font-variation-settings:"opsz" 120;
  font-size:clamp(2rem,4.4vw,3.4rem);line-height:1.06;letter-spacing:-.018em;
  color:var(--ivory);margin:.3em 0 0;
}
.da-rangees__title em{font-family:var(--serif);font-style:italic;color:var(--gold-pale);}
.da-rangees__intro{
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:clamp(1.05rem,1.6vw,1.24rem);line-height:1.5;
  color:color-mix(in oklab,var(--ivory) 78%,transparent);
  max-width:52ch;margin:.8em auto 0;
}
.da-rangees__intro p{margin:0;}

/* En-tête de page centré (« Nos gammes ») — même voile, même échelle que les
   autres pages, seul l'axe change. */
.phero--center .phero__inner{max-width:min(820px,100%);text-align:center;padding-bottom:clamp(34px,5vw,58px);}
.phero--center .eyebrow{justify-content:center;}
.phero--center .crumbs{justify-content:center;}

/* ---- une rangée ---- */
.da-rangee{margin-bottom:clamp(44px,6vw,78px);}
.da-rangee:last-child{margin-bottom:0;}
.da-rangee__head{
  display:flex;align-items:flex-end;justify-content:space-between;gap:20px;
  padding:0 var(--pad-x);margin-bottom:clamp(16px,2.2vw,26px);
}
.da-rangee__kicker{
  font-family:var(--sans);font-size:.64rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);
}
.da-rangee__name{
  font-family:var(--serif-display);font-weight:400;font-variation-settings:"opsz" 72;
  font-size:clamp(1.35rem,2.4vw,2rem);line-height:1.1;letter-spacing:-.01em;
  color:var(--ivory);margin:.28em 0 0;
}
.da-rangee__tools{display:flex;align-items:center;gap:clamp(12px,1.6vw,22px);flex:0 0 auto;}
.da-rangee__all{white-space:nowrap;}

/* Les flèches n'apparaissent que si la rangée déborde (`is-on`, posé par app.js) :
   une gamme à 2 produits n'affiche pas deux boutons morts. */
.da-rangee__nav{display:none;gap:8px;}
.da-rangee__nav.is-on{display:flex;}
.da-rangee__arrow{
  -webkit-appearance:none;appearance:none;cursor:pointer;
  display:grid;place-items:center;width:38px;height:38px;border-radius:99px;
  border:1px solid rgba(201,169,110,.28);background:transparent;color:var(--gold);
  transition:background-color .35s,border-color .35s,opacity .35s;
}
.da-rangee__arrow:hover{background:rgba(201,169,110,.12);border-color:rgba(201,169,110,.5);}
.da-rangee__arrow:disabled{opacity:.3;cursor:default;}
.da-rangee__arrow:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}

/* ---- le rail ---- */
.da-rangee__rail{
  display:flex;gap:18px;margin:0;padding:0 var(--pad-x);
  /* Sans `scroll-padding`, l'accroche colle la 1re carte au bord et mange le
     retrait : le rail se désaligne du titre de sa rangée (noté en référence). */
  scroll-padding-inline:var(--pad-x);
  overflow-x:auto;overscroll-behavior-x:contain;
  scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;
  /* Sans confinement de peinture, les cartes du rail élargissent la largeur de
     défilement du DOCUMENT (mesuré : 1075px au lieu de 390 sur iPhone, 1497 au
     lieu de 1440 sur ordinateur ; le débordement suit la largeur des cartes).
     `overflow-x:auto` fait défiler mais ne suffit pas à isoler le rail du calcul
     de la page. `body{overflow-x:hidden}` masque aujourd'hui le symptôme —
     c'est exactement la façon dont le débordement du panier est resté invisible
     pendant des semaines. On confine, et on remesure. */
  contain:paint;
}
.da-rangee__rail::-webkit-scrollbar{display:none;}
.da-rangee__rail:focus-visible{outline:2px solid var(--gold-warm);outline-offset:4px;}
.da-prod{flex:0 0 300px;scroll-snap-align:start;}

.da-prod__link{display:block;text-decoration:none;color:inherit;}
.da-prod__media{
  position:relative;aspect-ratio:4/5;overflow:hidden;
  border-radius:var(--r-photo);border:1px solid var(--line-media);
  background:#0a0805;
}
.da-prod__media img{
  width:100%;height:100%;object-fit:cover;filter:var(--grade);
  transition:transform 1s var(--ease);
}
.da-prod__link:hover .da-prod__media img{transform:scale(1.06);}
.da-prod__media::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(to top,rgba(10,8,5,.5),transparent 45%);
}
.da-prod__body{padding:clamp(12px,1.4vw,16px) 2px 0;}
.da-prod__name{
  font-family:var(--serif-display);font-weight:400;font-variation-settings:"opsz" 72;
  font-size:1.06rem;line-height:1.25;letter-spacing:-.005em;color:var(--ivory);margin:0 0 .3em;
}
.da-card-vol{
  font-family:var(--sans);font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;
  color:var(--gold);margin:0 0 .35em;
}
.da-prod__price{
  font-family:var(--sans);font-size:.8rem;letter-spacing:.04em;
  color:color-mix(in oklab,var(--ivory) 72%,transparent);
}
.da-prod__price del{opacity:.55;margin-left:.5em;}
.da-prod__price ins{text-decoration:none;color:var(--gold-pale);}

@media (max-width:759.98px){
  .da-rangee__nav{display:none!important;} /* le doigt suffit */
  .da-prod{flex:0 0 62%;}
}

/* ============ SUIVI DE LIVRAISON ============
   Le bloc que voit la cliente (page de remerciement, « Mon compte », et la
   page « Suivi de commande »), plus le formulaire natif de WooCommerce que
   l'on rhabille au lieu de le laisser en champs de navigateur nus. */
.suivi{
  margin-top:clamp(24px,4vw,40px);
  padding:clamp(20px,3.4vw,30px);
  border:1px solid var(--line);border-radius:var(--r-photo);
  background:linear-gradient(150deg,rgba(201,169,110,.07),transparent 62%),var(--bg2);
}
.suivi .eyebrow{margin-bottom:14px;}
.suivi__attente{color:var(--ivory-soft);margin:0;}
.suivi__ligne{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;margin:0 0 16px;}
.suivi__label{
  font-family:var(--sans);font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);
}
.suivi__numero{
  font-family:var(--sans);font-size:1.05rem;letter-spacing:.08em;color:var(--ivory);
  /* La cliente doit pouvoir le sélectionner d'un geste pour le coller. */
  user-select:all;-webkit-user-select:all;
}
.suivi__action{margin:0;}
.suivi__aide{margin:12px 0 0;font-size:.82rem;color:var(--ivory-faint);}

/* Formulaire natif « Suivi de commande » (shortcode WooCommerce).
   ⚠️ SPÉCIFICITÉ : `woocommerce.css` cible `.woocommerce form .form-row
   input.input-text` (0,3,2) et `.woocommerce button.button` — un sélecteur
   plus court est ÉCRASÉ, et les champs restent blancs (constaté à l'écran).
   On empile donc les classes du formulaire pour repasser devant, plutôt que
   de dégainer un `!important` qui rendrait la suite impossible à ajuster. */
.track_order{max-width:min(56ch,100%);}
.track_order p{margin-bottom:18px;color:var(--ivory-soft);}
.track_order .form-row{display:flex;flex-direction:column;gap:9px;margin-bottom:18px;}
.track_order label{
  font-family:var(--sans);font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);
}
.track_order.woocommerce-form .form-row input.input-text{
  width:100%;padding:15px 17px;border-radius:var(--r-input);
  border:1px solid var(--line);background:var(--bg2);color:var(--ivory);
  font-family:var(--sans);font-size:.95rem;line-height:1.4;
  transition:border-color .35s,background-color .35s;
}
.track_order.woocommerce-form .form-row input.input-text::placeholder{color:var(--ivory-faint);}
.track_order.woocommerce-form .form-row input.input-text:focus{
  border-color:var(--gold);background:var(--bg3);
}
.track_order.woocommerce-form .form-row input.input-text:focus-visible{
  outline:2px solid var(--gold);outline-offset:2px;
}
.track_order.woocommerce-form .form-row button.button{
  display:inline-flex;align-items:center;justify-content:center;gap:12px;
  min-height:48px;padding:15px 30px;border-radius:var(--r);border:1px solid transparent;
  font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;
  background:var(--gold-grad);color:#1A1206;cursor:pointer;
  transition:filter .35s var(--ease),transform .35s var(--ease);
}
.track_order.woocommerce-form .form-row button.button:hover{filter:brightness(1.07);}
.track_order.woocommerce-form .form-row button.button:focus-visible{outline:2px solid var(--gold);outline-offset:3px;}

/* ============ RESPECT DU MOUVEMENT RÉDUIT ============ */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  .js .rv,.js .rv-stagger>*{opacity:1;transform:none;transition:none;}
  .hero__media img,.phero__media img,.spot__media img,.offer__media img{animation:none;transform:none;}
  .sec--halo::before{animation:none;}
  .hero__scroll{animation:none;}
  *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;}
}

/* ============ ALLÈGEMENT MOBILE (coût GPU) ============ */
@media (max-width:700px){
  .grain{opacity:.045;}
  .sec--halo::before{animation-duration:44s;}
  .hdr.is-solid{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);}
}

/* ==========================================================================
   COMPOSEUR DE COFFRET — réplique de `sections/da-composer.liquid`
   Les jetons `--da-*` de la référence sont traduits en jetons du thème.
   L'ambiance est en `absolute` sous `overflow:clip`, non en `fixed` comme sur
   Shopify : posée en fixed, elle recouvrait toute la page hors de sa section.
   ========================================================================== */
.dac{position:relative;display:block;background:var(--bg);color:var(--ivory);overflow:clip;isolation:isolate;}
.dac::before{
  content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(60% 50% at 80% 14%,rgba(201,169,110,.15),transparent 70%),
    radial-gradient(55% 50% at 12% 86%,rgba(158,124,68,.12),transparent 72%),
    radial-gradient(120% 90% at 50% 50%,transparent 55%,rgba(7,5,3,.55) 100%);
}
@media (prefers-reduced-motion:no-preference){
  .dac::before{animation:dacDrift 34s ease-in-out infinite alternate;}
  @keyframes dacDrift{from{transform:translate3d(-2%,-1.5%,0) scale(1);}to{transform:translate3d(2.5%,2%,0) scale(1.06);}}
}

/* Le fil d'Ariane vit hors de la grille : sans son propre dégagement, il passait
   sous l'en-tête fixe et se collait au bord gauche (mesuré 18/08). Même
   dégagement que `.pdp`, pour que les deux fiches s'ouvrent à la même hauteur. */
.dac > .crumbs{
  display:block;position:relative;z-index:1;max-width:var(--maxw);margin-inline:auto;
  padding:calc(var(--header-h) + 26px) var(--pad-x) 0;
}
.dac__grid{
  position:relative;z-index:1;max-width:var(--maxw);margin:0 auto;
  padding:clamp(20px,3vw,34px) var(--pad-x) clamp(48px,7vw,90px);
  display:grid;gap:clamp(28px,5vw,64px);
}
@media (min-width:900px){
  .dac__grid{grid-template-columns:minmax(0,42%) 1fr;align-items:start;}
  .dac__media{position:sticky;top:calc(var(--header-h) + 20px);}
}

.dac__media{
  position:relative;aspect-ratio:4/5;overflow:hidden;border-radius:var(--r-photo);
  border:1px solid var(--line-media);
  background:radial-gradient(70% 70% at 50% 40%,rgba(201,169,110,.12),transparent 72%),var(--media-bg);
}
.dac__media img{width:100%;height:100%;object-fit:cover;filter:var(--grade);}
.dac__media::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(to top,rgba(8,6,4,.34),transparent 52%);}

.dac__title{
  font-family:var(--serif-display);font-weight:300;font-variation-settings:'opsz' 120;
  font-size:clamp(2rem,5.5vw,3.1rem);line-height:1.04;letter-spacing:-.02em;
  color:var(--ivory);margin:.3em 0 0;
}
.dac__intro{margin-top:.8em;max-width:46ch;}
.dac__intro,.dac__intro p{
  font-family:var(--serif);font-style:italic;font-weight:300;
  font-size:clamp(1.05rem,2.2vw,1.24rem);line-height:1.55;
  color:var(--ivory-soft);margin:0 0 .5em;
}

.dac__step{margin-top:clamp(26px,4vw,40px);}
.dac__step-label{
  display:flex;align-items:center;gap:.6em;
  font-family:var(--sans);font-size:.72rem;font-weight:600;
  letter-spacing:.22em;text-transform:uppercase;color:var(--ivory);margin:0 0 1em;
}
.dac__num{
  display:grid;place-items:center;width:1.7em;height:1.7em;flex:none;
  border:1px solid rgba(201,169,110,.5);border-radius:50%;
  color:var(--gold-pale);font-size:.82em;
}
.dac__counter{
  margin-left:auto;font-size:.68rem;letter-spacing:.16em;
  color:var(--gold);border:1px solid rgba(201,169,110,.3);
  border-radius:999px;padding:.3em .7em;white-space:nowrap;
}
.dac.is-full .dac__counter{background:var(--gold);color:var(--bg);border-color:var(--gold);}

/* Écrins */
.dac__ecrins{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:10px;}
.dac__ecrin{
  display:flex;flex-direction:column;gap:.25em;align-items:flex-start;
  padding:.85em 1em;text-align:left;cursor:pointer;
  background:rgba(10,8,5,.4);border:1px solid rgba(201,169,110,.28);
  border-radius:var(--r);color:var(--ivory);
  transition:border-color .35s var(--ease),background .35s var(--ease);
}
.dac__ecrin:hover{border-color:rgba(201,169,110,.6);}
.dac__ecrin[aria-pressed='true']{border-color:var(--gold);background:rgba(201,169,110,.12);}
.dac__ecrin-name{font-family:var(--serif-display);font-size:1.02rem;}
.dac__ecrin-price{font-family:var(--sans);font-size:.68rem;letter-spacing:.1em;color:var(--gold);}

/* Résumé */
.dac__summary{list-style:none;margin:0 0 .8em;padding:0;display:flex;flex-direction:column;gap:8px;}
.dac-chip{
  display:flex;align-items:center;gap:.7em;padding:.5em .6em;
  background:rgba(10,8,5,.4);border:1px solid rgba(201,169,110,.2);border-radius:10px;
  animation:dacChipIn .4s var(--ease);
}
@keyframes dacChipIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
.dac-chip__img{width:40px;height:50px;object-fit:cover;border-radius:6px;flex:none;filter:var(--grade);}
.dac-chip__name{font-family:var(--serif);font-style:italic;font-size:1.02rem;flex:1;min-width:0;}
.dac-chip__price{font-family:var(--sans);font-size:.7rem;letter-spacing:.08em;color:var(--gold);white-space:nowrap;}
.dac-chip__remove{
  flex:none;width:26px;height:26px;display:grid;place-items:center;
  background:transparent;border:1px solid rgba(201,169,110,.28);border-radius:50%;
  color:var(--ivory);font-size:1.1rem;line-height:1;cursor:pointer;transition:border-color .3s,color .3s;
}
.dac-chip__remove:hover{border-color:var(--gold);color:var(--gold-pale);}
.dac__empty{font-family:var(--serif);font-style:italic;font-size:1.05rem;color:var(--ivory-faint);margin:0 0 1em;}

.dac__open{
  display:flex;align-items:center;justify-content:space-between;gap:1em;width:100%;
  padding:.95em 1.2em;cursor:pointer;background:transparent;
  border:1px dashed rgba(201,169,110,.45);border-radius:var(--r);
  font-family:var(--sans);font-size:.74rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;
  color:var(--gold-pale);transition:border-color .35s,background .35s,color .35s;
}
.dac__open:hover{border-color:var(--gold);background:rgba(201,169,110,.08);}
.dac__open-plus{font-size:1.3em;}
.dac__error{margin:.7em 0 0;font-family:var(--sans);font-size:.72rem;letter-spacing:.05em;color:#E9B7A0;}

.dac__foot{margin-top:clamp(26px,4vw,38px);border-top:1px solid var(--line-soft);padding-top:clamp(18px,3vw,26px);}
.dac__total-row{display:flex;align-items:baseline;justify-content:space-between;gap:1em;margin-bottom:1em;}
.dac__total-label{font-family:var(--sans);font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ivory-soft);}
.dac__total{font-family:var(--serif-display);font-size:clamp(1.5rem,3vw,2rem);color:var(--gold-pale);}
.dac__add{
  display:flex;align-items:center;justify-content:center;gap:.7em;width:100%;
  padding:1.05em 1.4em;cursor:pointer;background:var(--gold);color:var(--bg);border:none;
  border-radius:var(--r);font-family:var(--sans);font-size:.76rem;font-weight:600;
  letter-spacing:.18em;text-transform:uppercase;position:relative;overflow:hidden;
  transition:transform .5s var(--ease),opacity .3s;
}
.dac__add:hover:not(:disabled){transform:translateY(-2px);}
.dac__add:disabled{background:color-mix(in oklab,var(--gold) 28%,var(--media-bg));color:var(--ivory-faint);cursor:not-allowed;}
.dac__add.is-loading{opacity:.7;pointer-events:none;}
.dac__add-total{font-weight:700;}
.dac__add-total:empty{display:none;}
.dac__note{margin:.9em 0 0;font-family:var(--sans);font-size:.66rem;letter-spacing:.04em;color:var(--ivory-faint);text-align:center;}
.dac__done{margin:.9em 0 0;font-family:var(--sans);font-size:.72rem;letter-spacing:.06em;color:var(--gold-pale);text-align:center;}
.dac__done-link{color:var(--gold);text-decoration:underline;text-underline-offset:3px;}

/* Sélecteur de soins */
.dac__dialog{
  width:min(920px,94vw);max-width:94vw;max-height:88svh;margin:auto;padding:0;
  border:none;background:transparent;color:var(--ivory);overflow:visible;
}
.dac__dialog::backdrop{background:rgba(6,4,2,.72);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);}
.dac__dialog-inner{
  display:flex;flex-direction:column;max-height:88svh;overflow:hidden;
  background:linear-gradient(160deg,#211812,#14100a 60%,#0e0b07);
  border:1px solid rgba(201,169,110,.22);border-radius:16px;box-shadow:0 30px 80px rgba(0,0,0,.6);
}
.dac__dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1em;padding:clamp(18px,3vw,28px) clamp(18px,3vw,30px) clamp(12px,2vw,18px);}
.dac__dialog-title{font-family:var(--serif-display);font-weight:300;font-variation-settings:'opsz' 96;font-size:clamp(1.4rem,3vw,2rem);margin:.2em 0 0;}
.dac__dialog-head-right{display:flex;align-items:center;gap:.8em;}
.dac__dialog-close{
  width:40px;height:40px;display:grid;place-items:center;background:transparent;
  border:1px solid rgba(201,169,110,.3);border-radius:50%;color:var(--ivory);
  font-size:1.4rem;line-height:1;cursor:pointer;transition:border-color .3s,color .3s;
}
.dac__dialog-close:hover{border-color:var(--gold);color:var(--gold-pale);}

.dac__tabs{display:flex;gap:6px;padding:0 clamp(18px,3vw,30px);overflow-x:auto;scrollbar-width:none;}
.dac__tabs::-webkit-scrollbar{display:none;}
.dac__tab{
  flex:none;padding:.6em 1.1em;cursor:pointer;white-space:nowrap;background:transparent;
  border:1px solid rgba(201,169,110,.22);border-radius:999px;
  font-family:var(--sans);font-size:.66rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ivory-soft);transition:background .3s var(--ease),border-color .3s var(--ease),color .3s var(--ease);
}
.dac__tab:hover{border-color:rgba(201,169,110,.5);color:var(--ivory);}
.dac__tab[aria-selected='true']{background:var(--gold);border-color:var(--gold);color:var(--bg);}

.dac__scroll{overflow-y:auto;padding:clamp(14px,2.5vw,22px) clamp(18px,3vw,30px) clamp(8px,2vw,16px);-webkit-overflow-scrolling:touch;}
.dac__products{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));gap:14px;}
.dac__products[hidden]{display:none;}

.dac-card{display:flex;gap:12px;padding:10px;background:rgba(10,8,5,.36);border:1px solid var(--line-media);border-radius:12px;}
.dac-card__media{flex:none;width:76px;aspect-ratio:4/5;overflow:hidden;border-radius:8px;border:1px solid var(--line-media);background:var(--media-bg);}
.dac-card__media img{width:100%;height:100%;object-fit:cover;filter:var(--grade);}
.dac-card__body{display:flex;flex-direction:column;min-width:0;flex:1;}
.dac-card__name{font-family:var(--serif-display);font-weight:400;font-size:1rem;line-height:1.15;margin:0 0 .5em;color:var(--ivory);}
.dac-card__opts{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;}
.dac-opt{
  display:inline-flex;align-items:center;gap:.5em;cursor:pointer;padding:.42em .7em;
  background:transparent;border:1px solid rgba(201,169,110,.3);border-radius:999px;
  font-family:var(--sans);font-size:.66rem;font-weight:600;letter-spacing:.06em;color:var(--ivory);
  transition:border-color .3s,background .3s,color .3s,opacity .3s;
}
.dac-opt:hover{border-color:var(--gold);}
.dac-opt__mark{position:relative;width:14px;height:14px;display:grid;place-items:center;}
.dac-opt__plus,.dac-opt__check{grid-area:1/1;transition:opacity .25s,transform .25s;}
.dac-opt__check{opacity:0;transform:scale(.5);}
.dac-opt[aria-pressed='true']{background:var(--gold);border-color:var(--gold);color:var(--bg);}
.dac-opt[aria-pressed='true'] .dac-opt__plus{opacity:0;transform:scale(.5);}
.dac-opt[aria-pressed='true'] .dac-opt__check{opacity:1;transform:none;}
.dac-opt.is-locked{opacity:.34;pointer-events:none;}

.dac__dialog-foot{
  display:flex;align-items:center;justify-content:space-between;gap:1em;
  padding:clamp(14px,2.4vw,20px) clamp(18px,3vw,30px);
  border-top:1px solid var(--line-media);background:rgba(10,8,5,.4);
}
.dac__dialog-total{font-family:var(--sans);font-size:.78rem;letter-spacing:.08em;color:var(--ivory-soft);}
.dac__dialog-total strong{color:var(--gold-pale);font-weight:600;}
.dac__dialog-done{
  padding:.8em 1.4em;cursor:pointer;background:var(--gold);color:var(--bg);border:none;
  border-radius:var(--r);font-family:var(--sans);font-size:.72rem;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;transition:transform .4s var(--ease);
}
.dac__dialog-done:hover{transform:translateY(-2px);}

@media (prefers-reduced-motion:reduce){
  .dac::before{animation:none;}
  .dac-chip{animation:none;}
  .dac__add,.dac__dialog-done,.dac-opt,.dac__ecrin{transition:none;}
}
