:root{
  --bg:#12150f; --bg2:#1a1f16; --card:#1f251b; --line:#2f3a28;
  --ink:#eef0e8; --dim:#a9b39d; --amber:#d08a2c; --amber2:#b8741f;
  --amber-h:#eba444; --max:1180px;
  --air:#0185d7; --odeur:#ff671e;   /* RutDrift : Rut = l'air (Navy Blue 30604), Drift = l'air chargé d'odeur (Orange 30301) */
  --fs:1;   /* taille du texte, réglée par A− / A+ */
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
/* l'en-tete collant fait environ 56 px : sans cette marge, le titre de la
   section visee se retrouve cache dessous a chaque saut d'ancre. */
[id]{scroll-margin-top:76px}
body{
  margin:0; background:var(--bg); color:var(--ink);
  font:calc(16px * var(--fs))/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%; height:auto; display:block}
a{color:inherit}
.plink{color:var(--amber); font-weight:600; text-decoration:none; white-space:nowrap}
.plink:hover{color:var(--amber-h); text-decoration:underline}
h1,h2,h3,h4{line-height:1.2; margin:0 0 .5em}
h1{font-size:calc(clamp(30px,5.2vw,52px) * var(--fs)); letter-spacing:-.02em}
h2{font-size:calc(clamp(24px,3.4vw,34px) * var(--fs)); letter-spacing:-.01em}
h3{font-size:calc(19px * var(--fs))}
p{margin:0 0 1em}

.hdr{
  position:sticky; top:0; z-index:40; display:flex; gap:16px; align-items:center;
  padding:12px 20px; background:rgba(18,21,15,.92); backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
}
.logo{display:inline-flex; align-items:center; font-weight:800; letter-spacing:.02em; text-decoration:none; font-size:20px}
.logo-mark{width:13.4px; height:24px; margin-right:8px; flex:none; display:block}
.rut{color:var(--air)}
.drift{color:var(--odeur)}
.nav{display:none; gap:20px; margin-left:auto}
.nav a{color:var(--dim); text-decoration:none; font-size:14px; white-space:nowrap}
.nav a:hover{color:var(--ink)}
.hdr-right{margin-left:auto; display:flex; gap:10px; align-items:center}
.nav + .hdr-right{margin-left:20px}
.lang{color:var(--dim); text-decoration:none; font-size:13px; white-space:nowrap; border:1px solid var(--line); padding:6px 10px; border-radius:999px}
.lang:hover{color:var(--ink); border-color:var(--amber)}
.cart-btn{
  background:var(--amber); color:#14170f; border:0; border-radius:999px;
  padding:8px 14px; font-weight:700; font-size:14px; cursor:pointer; white-space:nowrap;
}
.cart-btn:hover{background:var(--amber-h)}
.pill{background:rgba(0,0,0,.25); border-radius:999px; padding:1px 7px; margin-left:4px; font-size:12px}
/* Le menu complet demande de la place : en dessous, logo, A− / A+, langue et panier seulement. */
@media(min-width:1140px){ .nav{display:flex} }

.paid{
  max-width:var(--max); margin:18px auto 0; padding:16px 20px;
  background:#20351f; border:1px solid #395c33; border-radius:12px;
}
.paid p{margin:.3em 0 0; color:var(--dim)}

.hero{
  max-width:var(--max); margin:0 auto; padding:44px 20px 24px;
  display:grid; gap:28px; align-items:center;
}
@media(min-width:880px){ .hero{grid-template-columns:1.15fr .85fr; padding:72px 20px 40px} }
.kicker{color:var(--amber); font-size:calc(13px * var(--fs)); letter-spacing:.14em; text-transform:uppercase; margin:0 0 10px}
/* La question qui ouvre le site, juste au-dessus du titre. */
.hook{color:var(--ink); font-size:calc(clamp(17px,2vw,21px) * var(--fs)); line-height:1.45; max-width:50ch; margin:0 0 14px; font-weight:500}
.lead{color:var(--dim); font-size:calc(clamp(16px,1.8vw,19px) * var(--fs)); max-width:56ch}
.cta-row{display:flex; gap:12px; flex-wrap:wrap; margin-top:22px}
.btn{
  display:inline-block; background:var(--amber); color:#14170f; text-decoration:none;
  padding:13px 22px; border-radius:10px; font-weight:700; border:0; cursor:pointer; font-size:calc(15px * var(--fs));
}
.btn:hover{background:var(--amber-h)}
.btn.ghost{background:transparent; color:var(--ink); border:1px solid var(--line)}
.btn.ghost:hover{border-color:var(--amber); background:transparent}
.btn.wide{width:100%; padding:15px; font-size:calc(16px * var(--fs))}
.hero-img img{border-radius:16px; max-height:520px; width:auto; margin:0 auto; box-shadow:0 20px 50px rgba(0,0,0,.45)}

.proof{max-width:var(--max); margin:0 auto; padding:10px 20px 40px}
.proof figure{margin:0; background:var(--card); border:1px solid var(--line); border-radius:16px; overflow:hidden}
.proof img{width:100%}
.proof figcaption{padding:14px 18px; color:var(--dim); font-size:calc(14px * var(--fs))}
.proof strong{color:var(--ink)}

.band{max-width:var(--max); margin:0 auto; padding:46px 20px}
.band.alt{max-width:none; background:var(--bg2); border-top:1px solid var(--line); border-bottom:1px solid var(--line)}
.band.alt > *{max-width:var(--max); margin-left:auto; margin-right:auto}
.sub{color:var(--dim); max-width:70ch}

.grid3{display:grid; gap:20px; margin-top:26px}
@media(min-width:760px){ .grid3{grid-template-columns:repeat(3,1fr)} }
.grid3 article{background:var(--card); border:1px solid var(--line); border-radius:14px; overflow:hidden}
.grid3 article img{aspect-ratio:3/4; object-fit:cover; width:100%}
.grid3 article h3, .grid3 article p{padding:0 18px}
.grid3 article h3{margin-top:16px}
.grid3 article p{color:var(--dim); font-size:calc(15px * var(--fs)); padding-bottom:18px}
/* Quatre cartes : deux par rangée, puis quatre sur grand écran. */
@media(min-width:600px){ .grid4{grid-template-columns:repeat(2,1fr)} }
@media(min-width:900px){ .grid4{grid-template-columns:repeat(4,1fr); gap:16px} }


.cards{display:grid; gap:18px; margin-top:26px}
@media(min-width:660px){ .cards{grid-template-columns:repeat(2,1fr)} }
@media(min-width:1000px){ .cards{grid-template-columns:repeat(4,1fr)} }
.card{background:var(--card); border:1px solid var(--line); border-radius:14px; padding:16px; display:flex; flex-direction:column; position:relative}
.card .ph{background:#171c13; border-radius:10px; aspect-ratio:3/4; display:flex; align-items:center; justify-content:center; padding:10px; margin-bottom:12px; overflow:hidden}
.card .ph img{max-width:100%; max-height:100%; width:auto; height:auto; object-fit:contain}
.card h3{font-size:calc(17px * var(--fs)); margin-bottom:4px}
.card .short{color:var(--dim); font-size:calc(14px * var(--fs)); margin-bottom:10px}
.card ul{margin:0 0 14px; padding-left:18px; color:var(--dim); font-size:calc(13.5px * var(--fs))}
.card li{margin:2px 0}
.card .row{margin-top:auto; display:flex; align-items:center; gap:10px}
.card .price{font-size:calc(22px * var(--fs)); font-weight:800}
.card .add{margin-left:auto; background:var(--amber); color:#14170f; border:0; border-radius:9px; padding:10px 16px; font-weight:700; cursor:pointer}
.card .add:hover{background:var(--amber-h)}
/* Pastilles en coin, l'une sous l'autre. z-index : la photo (.ph, positionnée pour la note *1)
   vient après dans la carte et les couvrirait. */
.badges{position:absolute; top:12px; right:12px; z-index:2; display:flex; flex-direction:column; align-items:flex-end; gap:5px}
.badge{display:inline-block; background:var(--amber2); color:#fff; font-size:calc(11px * var(--fs)); font-weight:700; padding:4px 9px; border-radius:999px; letter-spacing:.03em}
.badge[hidden]{display:none}
/* Page produit : les pastilles se posent au-dessus du titre, côte à côte, pas en coin. */
.pp-info .badges{position:static; flex-direction:row; flex-wrap:wrap; align-items:center; margin:0 0 10px}

table{width:100%; border-collapse:collapse; font-size:calc(15px * var(--fs))}
th,td{padding:11px 12px; border-bottom:1px solid var(--line); text-align:left}
th{color:var(--amber); font-size:calc(13px * var(--fs)); letter-spacing:.06em; text-transform:uppercase}
td:first-child{color:var(--dim)}

.steps{display:grid; gap:26px; margin-top:22px; align-items:center}
@media(min-width:820px){ .steps{grid-template-columns:1.1fr .9fr} }
.steps ol{margin:0; padding-left:22px}
.steps li{margin:0 0 14px; color:var(--dim)}
.steps li::marker{color:var(--amber); font-weight:800}

.faq{margin-top:18px; max-width:80ch}
details{border-bottom:1px solid var(--line); padding:14px 0}
summary{cursor:pointer; font-weight:600; list-style:none}
summary::-webkit-details-marker{display:none}
summary::before{content:"+"; color:var(--amber); font-weight:800; margin-right:10px}
details[open] summary::before{content:"–"}
details p{color:var(--dim); margin:10px 0 0; padding-left:24px}
/* Une reponse de FAQ avec une petite photo a gauche du texte. */
.faq-pic{display:flex; gap:16px; align-items:flex-start; margin-top:10px; padding-left:24px}
.faq-photos{display:grid; grid-template-columns:repeat(3,minmax(0,170px)); gap:10px; align-items:start; margin:10px 0 4px; padding-left:24px}
.faq-photos img{display:block; width:100%; height:auto; border-radius:10px; border:1px solid var(--line)}
@media (max-width:520px){.faq-photos{grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; padding-left:0}}
.faq-pic img{width:120px; height:auto; flex:none; border-radius:10px; border:1px solid var(--line)}
.faq-pic p{margin:0; padding-left:0; min-width:0}
/* Dans la FAQ, un lien peut passer à la ligne : sinon il déborde de l'écran (téléphone, texte agrandi). */
.faq-pic .plink, .faq .plink{white-space:normal}
@media(max-width:720px){ .plink{white-space:normal} }
@media(max-width:480px){ .faq-pic{padding-left:0} .faq-pic img{width:96px} }

.ftr{max-width:var(--max); margin:0 auto; padding:40px 20px 60px; color:var(--dim); font-size:calc(14px * var(--fs))}
.ftr .logo{font-size:17px; margin-bottom:8px}

/* Pages produits (/fr/produits/…, /en/products/…) */
.pp{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:28px; align-items:start; margin:6px 0 10px}
.pp-ph img{width:100%; height:auto; border-radius:14px; background:#171c13; display:block}
/* Photos produits verticales (bouteilles debout) : jamais plus hautes que l'écran. */
@media(min-width:721px){ .pp-ph img{width:auto; max-width:100%; max-height:82vh; margin:0 auto} }
.pp-info h1{margin:8px 0 4px}
.pp-prix{font-size:calc(26px * var(--fs)); font-weight:800; color:var(--amber-h); margin:0 0 10px}
.pp-info .btn, .lg a.btn{display:inline-block; text-decoration:none; margin-top:6px; color:#12150f}
.pp-fil{color:var(--dim); font-size:calc(14px * var(--fs))}
.card h3 a{color:inherit; text-decoration:none}
.card h3 a:hover{text-decoration:underline}
@media(max-width:720px){ .pp{grid-template-columns:1fr} }

/* Confidentialité et mentions légales (/fr/legal/, /en/legal/) */
.lg{max-width:800px; margin:0 auto; padding:24px 20px 60px; font-size:calc(16px * var(--fs)); line-height:1.6}
.lg h1{font-size:calc(28px * var(--fs)); margin:10px 0 4px}
.lg h2{font-size:calc(20px * var(--fs)); margin:30px 0 8px}
.lg a{color:var(--amber)}
.lg-date{color:var(--dim); margin:0 0 18px; font-size:calc(14px * var(--fs))}
.lg-bref{background:var(--card); border:1px solid var(--line); border-radius:12px; padding:4px 18px 8px}
.lg-bref h2{margin-top:14px}
.lg li{margin:4px 0}
.lg-table{overflow-x:auto; margin:10px 0}
.lg-table table{width:100%; border-collapse:collapse; font-size:calc(14.5px * var(--fs))}
.lg-table th,.lg-table td{border:1px solid var(--line); padding:8px 10px; text-align:left; vertical-align:top}
.lg-table th{background:var(--bg2); color:var(--dim); font-weight:600}
.ftr a{color:var(--amber)}
/* Note sur la duree, appelee par l'asterisque du titre et du tableau. */
.duree-note{font-size:calc(13px * var(--fs)); line-height:1.55; max-width:78ch; margin:0 0 26px; padding:12px 14px;
  border:1px solid var(--line); border-radius:10px; color:var(--dim)}
.duree-note + .duree-note{margin-top:-16px}
/* Paiement par Stripe : rassure au début des produits et sur chaque page produit. */
.paie-note{font-size:calc(14px * var(--fs)); line-height:1.5; max-width:78ch; margin:12px 0 0; padding:10px 14px;
  border:1px solid var(--line); border-left:3px solid var(--amber); border-radius:10px; color:var(--dim)}
.pp-info .paie-note{margin:0 0 14px}
.ast{color:var(--amber); text-decoration:none; font-size:.55em; vertical-align:super; margin-left:2px}
/* *1 sur les photos du produit : renvoie à l'avis « le produit évolue » au bas de la page */
/* Enveloppe du *1 : toute la largeur, pour que la photo garde sa place avant
   d'être chargée (en largeur « fit-content », elle faisait 0 px et la page sautait
   à son arrivée, ce qui faussait aussi les liens directs vers une section). Seules
   les photos centrées à largeur naturelle (haut de page, page produit sur
   ordinateur) gardent une enveloppe à leur taille : elles ont leurs dimensions. */
.phw{position:relative; display:block; width:100%; max-width:100%; margin-inline:auto}
.hero-img .phw{width:fit-content}
@media(min-width:721px){ .pp-ph .phw{width:fit-content} }
.phw > img{max-width:100%}
.card .ph{position:relative}
.ph-note{position:absolute; right:7px; bottom:7px; z-index:1; font-size:calc(11px * var(--fs)); line-height:1; font-weight:700;
  padding:3px 5px; border-radius:6px; background:rgba(18,21,15,.72); color:var(--amber-h); text-decoration:none}
.ph-note:hover{background:rgba(18,21,15,.9)}
td .ast{font-size:.8em}
.small{font-size:calc(12.5px * var(--fs)); color:#77826d}

.drawer{position:fixed; inset:0; z-index:60}
.drawer-bg{position:absolute; inset:0; background:rgba(0,0,0,.55)}
.drawer-panel{
  position:absolute; right:0; top:0; bottom:0; width:min(420px,100%);
  background:var(--bg2); border-left:1px solid var(--line); padding:18px;
  display:flex; flex-direction:column; overflow-y:auto;
}
.drawer-panel header{display:flex; align-items:center; margin-bottom:8px}
.drawer-panel h2{margin:0; font-size:calc(20px * var(--fs))}
.drawer-panel header button{margin-left:auto; background:none; border:0; color:var(--dim); font-size:calc(28px * var(--fs)); cursor:pointer; line-height:1}
.ci{display:flex; gap:12px; padding:12px 0; border-bottom:1px solid var(--line)}
.ci img{width:54px; height:54px; object-fit:contain; background:#171c13; border-radius:8px; padding:4px}
.ci .n{font-size:calc(14.5px * var(--fs)); font-weight:600}
.ci .p{color:var(--dim); font-size:calc(13px * var(--fs))}
.qty{margin-left:auto; display:flex; align-items:center; gap:8px}
.qty button{width:26px; height:26px; border-radius:7px; border:1px solid var(--line); background:transparent; color:var(--ink); cursor:pointer}
.qty button:hover{border-color:var(--amber)}
/* Ajouts (mèches, accessoires) et commande minimum, dans le panier. */
.badge.addon{background:#2f3a28; color:var(--ink); border:1px solid var(--line)}
.addons{margin-top:12px; padding:10px 12px; border:1px dashed var(--line); border-radius:10px}
.addons > .small{margin:0 0 4px}
.addons.more{margin-top:18px; border-style:solid}
.addon{display:flex; align-items:center; gap:10px; padding:6px 0}
.addon img{width:38px; height:38px; object-fit:contain; background:#171c13; border-radius:6px; padding:3px}
.addon .n{flex:1; font-size:calc(13.5px * var(--fs))}
.addon .p{color:var(--dim); font-size:calc(13px * var(--fs)); white-space:nowrap}
.add-mini{min-height:40px; padding:0 12px; border-radius:8px; border:1px solid var(--amber); background:transparent;
  color:var(--amber); font-weight:600; cursor:pointer}
.add-mini:hover{background:rgba(208,138,44,.1)}
.cart-min{margin:0 0 10px; padding:10px 12px; border-radius:10px; font-size:calc(14px * var(--fs)); color:var(--ink);
  background:rgba(208,138,44,.1); border:1px solid rgba(208,138,44,.35)}

/* Livraison : code postal, puis services de Postes Canada au prix coûtant. */
.ship-box{margin-top:14px; padding-top:12px; border-top:1px solid var(--line)}
.ship-box label[for=postal]{display:block; font-size:calc(14px * var(--fs)); font-weight:600; margin:0 0 6px}
.ship-box input#postal{width:100%; box-sizing:border-box; padding:11px 12px; border-radius:10px; border:1px solid var(--line);
  background:#171c13; color:var(--ink); font-size:calc(16px * var(--fs)); letter-spacing:.08em; text-transform:uppercase}
.ship-box input#postal:focus{outline:none; border-color:var(--amber)}
.ship-msg{margin:8px 0 0; color:var(--dim); font-size:calc(13.5px * var(--fs))}
.ship-opts{display:grid; gap:6px; margin:10px 0 0}
.cart-gratuit{margin:14px 0 4px}
.cart-gratuit .t{margin:0 0 6px; font-weight:600; color:var(--amber-h); font-size:calc(14.5px * var(--fs))}
.cart-gratuit.ok .t{color:#7fcf8f}
.cart-gratuit .barre{height:8px; border-radius:99px; background:var(--line); overflow:hidden}
.cart-gratuit .barre span{display:block; height:100%; width:0; background:var(--amber); border-radius:99px; transition:width .3s}
.cart-gratuit.ok .barre span{background:#5fbf7a}
.ship-opt{display:flex; align-items:center; gap:10px; padding:9px 11px; min-height:44px; box-sizing:border-box;
  border:1px solid var(--line); border-radius:10px; cursor:pointer; font-size:calc(14px * var(--fs))}
.ship-opt:has(input:checked){border-color:var(--amber); background:rgba(208,138,44,.08)}
.ship-opt input{accent-color:var(--amber); margin:0}
.ship-opt .n{display:block; font-weight:600}
.ship-opt .d{display:block; color:var(--dim); font-size:calc(12.5px * var(--fs))}
.ship-opt .m{margin-left:auto; font-weight:600; white-space:nowrap}
.ship-note{margin:8px 0 0}
.ship-etoile{margin:4px 0 10px; color:var(--dim)}
.totals{margin-top:14px; padding-top:12px; border-top:1px solid var(--line)}
.totals p{display:flex; justify-content:space-between; margin:.35em 0; font-size:calc(15px * var(--fs))}
.totals p:first-child{font-weight:700; font-size:calc(17px * var(--fs))}
.secure{margin-top:12px; text-align:center}
#cartSur{font-weight:700}   /* « Est-ce sécuritaire ? » en gras (demande du propriétaire) */

.story .kicker{margin-bottom:6px}
.story-grid{display:grid; gap:26px; margin-top:20px}
@media(min-width:860px){ .story-grid{grid-template-columns:1fr 1fr; align-items:start} }
.story-txt p{color:var(--dim); max-width:56ch}
.story-lead{color:var(--ink) !important; font-size:calc(18px * var(--fs))}
.story-note{border-left:3px solid var(--amber); padding-left:14px; color:var(--ink) !important; font-style:italic}
.story-pics{display:grid; gap:14px}
@media(min-width:520px){ .story-pics{grid-template-columns:1fr 1fr} }
.story-pics figure{margin:0; background:var(--card); border:1px solid var(--line); border-radius:12px; overflow:hidden}
.story-pics img{width:100%; aspect-ratio:4/5; object-fit:cover}
.story-pics figcaption{padding:10px 12px; font-size:calc(12.5px * var(--fs)); color:var(--dim)}

  border:1px solid var(--line); border-radius:14px; overflow:hidden}

/* Le panache du mâle récolté au Saint-Maurice, la bouteille suspendue à une palme. */
.panache-fig{margin:18px 0 6px; background:var(--card); border:1px solid var(--line); border-radius:14px; overflow:hidden}
.panache-fig .phw{width:100%}
.panache-fig img{width:100%; display:block}
.panache-fig figcaption{padding:12px 16px; font-size:calc(14px * var(--fs)); color:var(--dim); line-height:1.5}
.panache-fig figcaption strong{color:var(--ink); font-size:calc(16px * var(--fs)); margin-right:4px}
.map-fig{margin:22px 0 0; background:var(--card); border:1px solid var(--line); border-radius:14px; overflow:hidden}
.map-fig img{width:100%}
.map-fig figcaption{padding:12px 16px; font-size:calc(13.5px * var(--fs)); color:var(--dim)}

.howto{list-style:none; counter-reset:step; display:grid; gap:18px; margin:26px 0 0; padding:0}
@media(min-width:680px){ .howto{grid-template-columns:repeat(2,1fr)} }
@media(min-width:1000px){ .howto{grid-template-columns:repeat(3,1fr)} }
.howto li{counter-increment:step; background:var(--card); border:1px solid var(--line); border-radius:14px; overflow:hidden; position:relative}
.howto li img{width:100%; aspect-ratio:4/5; object-fit:cover; display:block}
.howto-change{margin:22px 0 0; background:var(--card); border:1px solid var(--line); border-left:3px solid var(--amber); border-radius:14px; padding:16px 18px}
.howto-change h3{margin:0 0 6px}
.howto-change p{margin:0; color:var(--dim)}
.howto li::before{
  content:counter(step); position:absolute; top:12px; left:12px; z-index:2;
  width:30px; height:30px; border-radius:999px; background:var(--amber); color:#14170f;
  font-weight:800; display:grid; place-items:center; font-size:calc(15px * var(--fs));
  box-shadow:0 2px 10px rgba(0,0,0,.4);
}
.howto li p{margin:0; padding:16px 18px 20px; color:var(--dim); font-size:calc(15px * var(--fs))}

/* Le prix de l'attractant : pose l'enjeu avant la section tampon. */
.prix{display:grid; gap:22px; align-items:center; margin-bottom:38px; padding-bottom:34px; border-bottom:1px solid var(--line)}
@media(min-width:880px){ .prix{grid-template-columns:minmax(0,420px) 1fr; gap:40px} }   /* photo en hauteur : colonne etroite */
.prix figure{margin:0; background:var(--card); border:1px solid var(--line); border-radius:14px; overflow:hidden}
.prix img{display:block; width:100%; height:auto}
.prix figcaption{padding:10px 14px; font-size:calc(13px * var(--fs)); color:var(--dim)}
.prix h2{margin:0 0 12px}
.prix p{margin:0; color:var(--dim); font-size:calc(17px * var(--fs)); line-height:1.6}

/* Comparaison tampon hygienique / RutDrift : le X se trace sur le tampon.
   Le viewBox du SVG reprend les pixels de la photo d'origine, donc les
   coordonnees du X sont lues directement sur l'image. */
.tampon .lead{margin-bottom:24px}
.tampon-fig{
  position:relative; margin:0; max-width:860px; background:var(--card);
  border:1px solid var(--line); border-radius:14px; overflow:hidden;
}
.tampon-fig img{display:block; width:100%; height:auto}
.tampon-x{position:absolute; inset:0; width:100%; height:100%; pointer-events:none}
.tampon-x path{
  fill:none; stroke:#e5372a; stroke-width:46; stroke-linecap:round;
  stroke-dasharray:900; stroke-dashoffset:900;
  filter:drop-shadow(0 0 7px rgba(0,0,0,.6));
}
.tampon-x g{animation:xfade 6s linear infinite}
.tampon-x .s1{animation:xdraw1 6s ease-out infinite}
.tampon-x .s2{animation:xdraw2 6s ease-out infinite}
@keyframes xdraw1{ 0%{stroke-dashoffset:900} 12%,100%{stroke-dashoffset:0} }
@keyframes xdraw2{ 0%,10%{stroke-dashoffset:900} 22%,100%{stroke-dashoffset:0} }
@keyframes xfade{ 0%,88%{opacity:1} 96%,100%{opacity:0} }
.tampon-fig .tag{
  position:absolute; bottom:14px; padding:7px 13px; border-radius:999px;
  font-size:calc(13.5px * var(--fs)); font-weight:600; backdrop-filter:blur(4px);
}
.tampon-fig .bad{left:14px; background:rgba(160,36,26,.88); color:#ffe8e4}
.tampon-fig .good{right:14px; background:rgba(38,110,46,.88); color:#e4ffe8}
.tampon-pts{list-style:none; display:grid; gap:14px; margin:26px 0 0; padding:0}
@media(min-width:820px){ .tampon-pts{grid-template-columns:1fr 1fr} }
.tampon-pts li{background:var(--card); border:1px solid var(--line); border-radius:12px;
  padding:16px 18px; color:var(--dim); font-size:calc(15px * var(--fs))}
.tampon-pts b{display:block; margin-bottom:5px; color:var(--ink); font-size:calc(15.5px * var(--fs))}
.tampon-close{margin:24px 0 0; padding-left:16px; border-left:3px solid #e5372a; font-size:calc(17px * var(--fs)); max-width:70ch}
@media (prefers-reduced-motion: reduce){
  .tampon-x g{animation:none}
  .tampon-x path{animation:none; stroke-dashoffset:0}
}

/* Les meches a odeur du commerce : photo a gauche, argument a droite. */
/* Les variantes maison du tampon (cruche découpée, bouteille fermée) : essayées, même défaut. */
.variantes{margin-top:34px; padding-top:30px; border-top:1px solid var(--line)}
.variantes h3{margin:0 0 8px; font-size:calc(19px * var(--fs))}
.var-lead{margin:0; color:var(--dim); font-size:calc(15.5px * var(--fs)); max-width:75ch}
.var-grid{display:grid; gap:16px; margin-top:18px}
@media(min-width:820px){ .var-grid{grid-template-columns:1fr 1fr} }
.var-grid article{display:grid; grid-template-columns:120px 1fr; gap:16px; align-items:start; background:var(--card);
  border:1px solid var(--line); border-left:3px solid #e5372a; border-radius:12px; padding:16px 18px}
@media(max-width:420px){ .var-grid article{grid-template-columns:90px 1fr; gap:12px} }
.var-grid figure{margin:0; border-radius:10px; overflow:hidden; background:#e9e5d8}
.var-grid img{display:block; width:100%; height:auto}
.var-grid h4{margin:0 0 6px; font-size:calc(16.5px * var(--fs))}
.var-grid p{margin:0; color:var(--dim); font-size:calc(15px * var(--fs))}
.var-x{color:#e5372a; font-weight:800; margin-right:8px}
.var-close{margin:20px 0 0; padding-left:16px; border-left:3px solid var(--amber); font-size:calc(16.5px * var(--fs)); max-width:75ch}
.feutre{display:grid; gap:22px; margin-top:34px; padding-top:30px; border-top:1px solid var(--line); align-items:center}
@media(min-width:820px){ .feutre{grid-template-columns:.7fr 1.3fr; gap:32px} }
.feutre figure{margin:0; max-width:360px; background:var(--card); border:1px solid var(--line); border-radius:14px; overflow:hidden}
.feutre img{display:block; width:100%; height:auto}
.feutre h3{margin:0 0 10px; font-size:calc(19px * var(--fs))}
.feutre p{margin:0 0 12px; color:var(--dim); font-size:calc(15.5px * var(--fs))}
.feutre-sol{color:var(--ink) !important; border-left:3px solid var(--amber); padding-left:14px}

/* Schema anime : vent au travers, pluie qui reste dehors */
.protect{display:grid; gap:26px; margin-top:24px; align-items:center}
@media(min-width:900px){ .protect{grid-template-columns:1.15fr .85fr} }
.schema{width:100%; height:auto; display:block; background:#151a12; border:1px solid var(--line); border-radius:14px}
/* Légendes du schéma : grossissent avec A− / A+ (var(--fs)) et passent à la ligne. */
.schema foreignObject{overflow:visible}
.sl{margin:0; color:#b9c2b0; font:600 calc(15px * var(--fs))/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
.sl > span{background:rgba(21,26,18,.82); padding:1px 4px; border-radius:4px;
  -webkit-box-decoration-break:clone; box-decoration-break:clone}
.schema-leg{display:none; list-style:none; margin:14px 0 0; padding:0; gap:10px}
.schema-leg li{position:relative; padding-left:20px; color:var(--dim); font-size:calc(15px * var(--fs)); line-height:1.5}
.schema-leg li::before{content:""; position:absolute; left:0; top:.5em; width:11px; height:11px; border-radius:50%; background:var(--c)}
.schema-leg b{color:var(--c)}
@media(max-width:700px){ .schema .lbl-fo, .schema .leads{display:none} .schema-leg{display:grid} }
.schema .air .flow{stroke-dasharray:16 18; animation:flow 1.5s linear infinite}
.schema .air .d1{animation-delay:-.4s} .schema .air .d2{animation-delay:-.8s} .schema .air .d3{animation-delay:-1.2s}
/* Mèches : points orange qui montent lentement, la capillarité. */
.schema .capil .flow{stroke-dasharray:3 9; animation:capil .9s linear infinite}
@keyframes capil{to{stroke-dashoffset:-12}}
@keyframes flow{ to{ stroke-dashoffset:-34 } }
.schema .rain .trail{fill:none; stroke:#7ea8d8; stroke-width:2.5; stroke-dasharray:6 9; opacity:.6}
.schema .rain .dropdot circle{fill:#bcd8f7; stroke:#6f9fd0; stroke-width:1}
@media (prefers-reduced-motion: reduce){
  .schema .air .flow{animation:none}
  .schema .rain .dropdot{display:none}
}
/* Le materiau et la fabrication : trois blocs de meme poids. */
.matiere{display:grid; gap:16px; margin:26px 0 0}
@media(min-width:900px){ .matiere{grid-template-columns:repeat(3,1fr)} }
.matiere article{background:var(--card); border:1px solid var(--line); border-radius:12px; padding:18px 20px}
.matiere h3{margin:0 0 8px; font-size:calc(16.5px * var(--fs))}
.matiere p{margin:0; color:var(--dim); font-size:calc(15px * var(--fs))}
.mat-close{margin:22px 0 0; padding-left:16px; border-left:3px solid var(--amber); font-size:calc(17px * var(--fs)); max-width:70ch}

/* Brevet en instance, sous les boutons du haut. */
.brevet{display:flex; flex-wrap:wrap; gap:8px; margin:16px 0 0}
.brevet span{padding:5px 12px; border:1px solid var(--line); border-radius:999px;
  color:var(--dim); font-size:calc(12px * var(--fs)); letter-spacing:.12em; text-transform:uppercase}
.brevet span.reuse{color:var(--amber); border-color:rgba(208,138,44,.55); background:rgba(208,138,44,.08)}

/* Attention aux imitations : deux defauts, cote a cote. */
.imit .kicker{color:#e5372a}
.imit-grid{display:grid; grid-template-columns:minmax(0,1fr); gap:24px; margin:24px 0 0}
@media(min-width:880px){ .imit-grid{grid-template-columns:minmax(0,420px) 1fr; align-items:start} }
.imit-fig{margin:0; max-width:420px; width:100%; justify-self:center}
.imit-fig img{display:block; width:100%; height:auto; border-radius:12px}
.imit-fig figcaption{margin:8px 2px 0; color:var(--dim); font-size:calc(13px * var(--fs))}
.imit-pts{display:grid; gap:16px; align-content:start}
.imit-pts .num{display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; margin-right:10px;
  border-radius:50%; background:#e5372a; color:#fff; font-size:calc(14px * var(--fs)); font-weight:700; vertical-align:2px}
.imit-pts article{background:var(--card); border:1px solid var(--line); border-left:3px solid #e5372a; border-radius:12px; padding:18px 20px}
.imit-pts h3{margin:0 0 8px; font-size:calc(17px * var(--fs))}
.imit-pts p{margin:0; color:var(--dim); font-size:calc(15px * var(--fs))}
/* Remplissage RutDrift avec l'entonnoir : boucle de 12 s, la liste s'allume en même temps. */
.rf{display:grid; gap:20px 28px; margin:30px 0 0; align-items:center}
@media(min-width:900px){ .rf{grid-template-columns:minmax(0,1fr) minmax(0,1fr)} }
.lg .rf{margin:6px 0 26px}
.rf-svg{max-width:560px; justify-self:center}
.rf-h{margin:0 0 10px; font-weight:700; color:var(--ink); font-size:calc(19px * var(--fs))}
.rf-etapes{margin:0; padding:0; list-style:none; counter-reset:rf; display:grid; gap:8px}
.rf-etapes li{counter-increment:rf; position:relative; padding:9px 12px 9px 46px; border:1px solid var(--line); border-radius:10px;
  color:var(--dim); font-size:calc(15px * var(--fs)); line-height:1.45; animation:rf-li 12s linear infinite}
.rf-etapes li::before{content:counter(rf); position:absolute; left:12px; top:9px; width:24px; height:24px; border-radius:50%;
  background:#2a3324; color:var(--amber); font-weight:800; font-size:13px; display:flex; align-items:center; justify-content:center}
.rf-etapes li:nth-child(2){animation-name:rf-li2} .rf-etapes li:nth-child(3){animation-name:rf-li3} .rf-etapes li:nth-child(4){animation-name:rf-li4}
@keyframes rf-li { 0%,2%{background:none; color:var(--dim)} 3%,13%{background:#2a3324; color:var(--ink)} 14%,100%{background:none; color:var(--dim)} }
@keyframes rf-li2{ 0%,13%{background:none; color:var(--dim)} 14%,25%{background:#2a3324; color:var(--ink)} 26%,100%{background:none; color:var(--dim)} }
@keyframes rf-li3{ 0%,25%{background:none; color:var(--dim)} 26%,64%{background:#2a3324; color:var(--ink)} 65%,100%{background:none; color:var(--dim)} }
@keyframes rf-li4{ 0%,65%{background:none; color:var(--dim)} 66%,92%{background:#2a3324; color:var(--ink)} 93%,100%{background:none; color:var(--dim)} }
.rf-gel{margin:14px 0 0; padding:10px 12px; border:1px solid rgba(111,195,232,.35); border-radius:10px; background:rgba(111,195,232,.07);
  color:#c6dde8; font-size:calc(15px * var(--fs)); line-height:1.5}
.rf-fin{margin:14px 0 0; padding-left:14px; border-left:3px solid #5fae6a; color:var(--dim); font-size:calc(15px * var(--fs))}
.rf-svg .rf-scene{animation:rf-scene 12s linear infinite}
.rf-bouchon{transform-box:fill-box; transform-origin:50% 50%; animation:rf-bouchon 12s ease-in-out infinite}
.rf-entonnoir{animation:rf-entonnoir 12s ease-in-out infinite}
.rf-verse, .rf-flux{opacity:0; animation:rf-verse 12s linear infinite}
.rf-tube, .rf-jet{stroke-dasharray:10 8; animation:rflow .5s linear infinite}
.rf-niveau{animation:rf-niveau 12s ease-in-out infinite}
.rf-ok{opacity:0; animation:rf-ok 12s ease-out infinite}
@keyframes rf-scene{ 0%{opacity:0} 3%,96%{opacity:1} 100%{opacity:0} }
@keyframes rf-bouchon{ 0%,4%{transform:none} 13%,80%{transform:translate(-190px,-20px) rotate(-14deg)} 90%,100%{transform:none} }
@keyframes rf-entonnoir{ 0%,14%{transform:translateY(-500px)} 24%,66%{transform:none} 77%,100%{transform:translateY(-500px)} }
@keyframes rf-verse{ 0%,25%{opacity:0} 27%,62%{opacity:1} 65%,100%{opacity:0} }
@keyframes rf-niveau{ 0%,27%{transform:translateY(85px)} 58%,100%{transform:none} }
.rf-suinte{opacity:0; animation:rf-suinte 12s linear infinite}
@keyframes rf-suinte{ 0%,56%{opacity:0} 58%,95%{opacity:1} 100%{opacity:0} }
.rf-goutte{opacity:0; animation:rf-goutte 12s linear infinite}
.rf-goutte.g2{animation-delay:.55s} .rf-goutte.g3{animation-delay:1.1s}
@keyframes rf-goutte{ 0%,57%{opacity:0; transform:none} 58%{opacity:1; transform:none} 63%{opacity:1; transform:translateY(78px)} 64%,100%{opacity:0; transform:translateY(78px)} }
@keyframes rf-ok{ 0%,89%{opacity:0} 92%,100%{opacity:1} }
@media (prefers-reduced-motion: reduce){
  .rf-svg .rf-scene, .rf-entonnoir, .rf-niveau, .rf-etapes li{animation:none}
  .rf-bouchon{animation:none; transform:translate(-190px,-20px) rotate(-14deg)}
  .rf-verse, .rf-flux{animation:none; opacity:1} .rf-tube, .rf-jet{animation:none} .rf-ok{animation:none}
  .rf-suinte{animation:none; opacity:1} .rf-goutte{display:none}
}
/* Point 4 : remplir un diffuseur bon marché, puis RutDrift avec son entonnoir (animation). */
.remplir{display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:12px; margin:14px 0 0}
.r-pan{margin:0; display:flex; flex-direction:column; background:#151a12; border:1px solid var(--line); border-radius:12px; padding:10px 10px 0}
.r-pan figcaption{color:var(--dim); font-size:calc(13.5px * var(--fs)); line-height:1.45; min-height:4.4em}
.r-pan figcaption b{display:block; margin-bottom:2px; font-size:calc(15px * var(--fs))}
.r-pan.ko b{color:#e5372a} .r-pan.ok b{color:#7fd08a}
.r-svg{display:block; width:100%; height:auto; margin-top:auto}
.r-flow{fill:none; stroke:#d38f2f; stroke-width:5; stroke-linecap:round; stroke-dasharray:8 7; animation:rflow .6s linear infinite}
.r-in{stroke-width:3.5; opacity:.9}
.r-tube{stroke-width:8}
@keyframes rflow{to{stroke-dashoffset:-15}}
.r-trail{fill:none; stroke:#d38f2f; stroke-width:1.5; stroke-dasharray:2 5; opacity:.45}
.r-drop ellipse{fill:#e09a3a}
.r-tache{fill:#c07a22; opacity:0; animation:rtache 6s ease-in infinite}
.r-tache.t1{animation-delay:.35s} .r-tache.t2{animation-delay:.7s} .r-tache.t3{animation-delay:1.05s}
@keyframes rtache{0%,15%{opacity:0} 30%,90%{opacity:.9} 100%{opacity:0}}
.r-niveau{animation:rniveau 6s ease-out infinite}
@keyframes rniveau{0%{transform:translateY(96px)} 70%,100%{transform:translateY(0)}}
@media (prefers-reduced-motion: reduce){
  .r-flow{animation:none} .r-drop{display:none} .r-tache{animation:none; opacity:.9} .r-niveau{animation:none}
}
.imit-close{margin:6px 0 0; padding-left:16px; border-left:3px solid var(--amber); font-size:calc(17px * var(--fs)); max-width:70ch}

/* Les meches : la capillarite et le moment de les changer. */
.wick{display:grid; gap:22px; margin-top:30px; padding-top:26px; border-top:1px solid var(--line)}
@media(min-width:860px){ .wick{grid-template-columns:1fr 1fr; gap:34px} }
.wick h3{margin:0 0 10px; font-size:calc(18px * var(--fs))}
.wick p{margin:0 0 12px; color:var(--dim); font-size:calc(15px * var(--fs))}
.wick p:last-child{margin-bottom:0}
/* La photo du test : la mèche fait monter l'eau colorée jusqu'en haut. */
.wick-pic{float:right; width:min(42%, 240px); margin:4px 0 12px 18px}
.wick-pic img{display:block; width:100%; height:auto; border-radius:10px}
.wick-pic figcaption{margin:6px 0 0; color:var(--dim); font-size:calc(12.5px * var(--fs)); line-height:1.45}
.wick article{overflow:hidden}   /* la photo flottante reste dans son bloc */
@media(max-width:520px){ .wick-pic{float:none; width:100%; max-width:300px; margin:4px auto 14px} }
/* Vidéos YouTube (build.mjs, carteVideo) : un aperçu d'ici (leur miniature), le lecteur au clic, son coupé (app.js). */
.yt{clear:both; margin:18px 0 0}
.yt-cadre{position:relative}
.yt-lancer,.yt iframe{display:block; width:100%; aspect-ratio:16/9; border:0; border-radius:12px; background:#000}
.yt-lancer{position:relative; overflow:hidden; border:1px solid var(--line); color:var(--ink); text-decoration:none}
.yt-lancer img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; filter:brightness(.85); transition:filter .2s}
.yt-rond{position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:62px; height:62px; border-radius:50%;
  background:rgba(208,138,44,.94); display:grid; place-items:center; box-shadow:0 6px 20px rgba(0,0,0,.5); transition:transform .2s, background .2s}
.yt-rond svg{width:28px; height:28px; margin-left:4px; fill:#12150f}
.yt-duree{position:absolute; right:8px; bottom:8px; padding:3px 8px; border-radius:6px; background:rgba(0,0,0,.78);
  color:#eef0e8; font-size:calc(12.5px * var(--fs)); font-weight:600; line-height:1.3}
.yt-lancer:hover img,.yt-lancer:focus-visible img{filter:brightness(1)}
.yt-lancer:hover .yt-rond,.yt-lancer:focus-visible .yt-rond{transform:translate(-50%,-50%) scale(1.08); background:var(--amber-h)}
.yt-lancer:focus-visible{outline:3px solid var(--amber-h); outline-offset:3px}
.yt figcaption{margin:8px 0 0; color:var(--dim); font-size:calc(12.5px * var(--fs)); line-height:1.45}
.wick-note{margin:20px 0 0; padding-left:16px; border-left:3px solid var(--amber); font-size:calc(15.5px * var(--fs))}

.protect-txt h3{margin-top:0}
.protect-txt p{color:var(--dim)}
.versus{margin-top:18px; border:1px solid var(--line); border-radius:12px; overflow:hidden}
.versus div{display:grid; grid-template-columns:1fr 1fr; gap:0}
.versus div > *{padding:12px 14px; font-size:calc(14.5px * var(--fs)); border-bottom:1px solid var(--line)}
.versus div > *:nth-child(odd){background:#2a1f1c; color:#e0a596}
.versus div > *:nth-child(even){background:#1e2b1d; color:#a9dc96}
.versus h4{margin:0; padding:10px 14px; font-size:calc(13px * var(--fs)); letter-spacing:.06em; text-transform:uppercase}

.bear{text-align:center}
.bear figure{margin:22px auto 0; max-width:760px; background:var(--card); border:1px solid var(--line); border-radius:14px; overflow:hidden}
.bear figure img{width:100%}
.bear figcaption{padding:14px 18px; font-size:calc(14.5px * var(--fs)); color:var(--dim)}
.bear-note{max-width:640px; margin:18px auto 0; color:var(--ink); font-size:calc(16.5px * var(--fs))}

/* RutDrift en action : témoignages, vidéos et photos du terrain (worker/en-action.js). */
.ea[hidden],.ea [hidden]{display:none}
/* Code rabais dans le panier (worker/rabais.js) */
.rabais-x{border:0;background:none;color:inherit;text-decoration:underline;cursor:pointer;font:inherit;padding:0}
.ea .kicker{margin-bottom:6px}
.ea-lead{color:var(--dim); max-width:62ch}
.ea-tems{display:grid; gap:14px; margin:22px 0 6px}
@media(min-width:760px){ .ea-tems{grid-template-columns:repeat(2,1fr)} }
.ea-tem{margin:0; background:var(--card); border:1px solid var(--line); border-left:4px solid var(--amber); border-radius:12px; padding:18px 20px}
.ea-tem blockquote{margin:0}
.ea-tem blockquote p{margin:0; font-size:calc(19px * var(--fs)); line-height:1.45; font-style:italic}
.ea-tem figcaption{margin-top:10px; color:var(--amber-h); font-weight:700}
.ea-lieu{color:var(--dim); font-weight:400}
.ea-trad{display:block; margin-top:2px; color:#77826d; font-weight:400; font-size:calc(12.5px * var(--fs))}
.ea-videos{display:flex; flex-wrap:wrap; gap:14px; justify-content:center; margin:22px 0 6px}
.ea-video{margin:0; flex:1 1 480px; max-width:760px; background:var(--card); border:1px solid var(--line); border-radius:12px; overflow:hidden}
.ea-video.portrait{flex:0 1 340px}
.ea-cadre{position:relative}
.ea-video .ea-cadre{background:#000}
.ea-video video{display:block; width:100%; height:100%; background:#000}
.ea-video figcaption,.ea-photo figcaption{padding:10px 12px; font-size:calc(13px * var(--fs)); color:var(--dim)}
.ea-video.yt{margin:0; clear:none}
.ea-video.yt .yt-lancer,.ea-video.yt iframe{border:0; border-radius:0}
.ea-video.yt figcaption{margin:0}
.ea-videos.yt-terrain{margin-bottom:0}
.yt-note{margin:6px 0 0; text-align:center; color:var(--dim); font-size:calc(12.5px * var(--fs))}
/* Légende longue : 8 lignes, puis « Lire la suite » allonge la carte (src/app.js). */
.ea-txt{display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:8; line-clamp:8; overflow:hidden}
.ea-ouvert .ea-txt{display:block; -webkit-line-clamp:unset; line-clamp:none; overflow:visible}
.ea-plus{display:inline-block; margin-top:6px; padding:2px 0; border:0; background:none; color:var(--amber-h); font:inherit; font-weight:700; cursor:pointer}
.ea-photos{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin:22px 0 0}
@media(min-width:760px){ .ea-photos{grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px} }
.ea-photo{margin:0; background:var(--card); border:1px solid var(--line); border-radius:12px; overflow:hidden}
.ea-photo img{width:100%; aspect-ratio:4/5; object-fit:cover}
.ea-zoom{display:block; cursor:zoom-in}
.ph-note.haut{top:7px; bottom:auto}
.ea-boite{padding:0; border:0; background:transparent; max-width:96vw; max-height:96vh; overflow:visible}
.ea-boite::backdrop{background:rgba(0,0,0,.86)}
.ea-boite img{max-width:96vw; max-height:88vh; width:auto; height:auto; border-radius:8px; margin:auto}
.ea-fermer{position:fixed; top:12px; right:12px; z-index:2; border:1px solid var(--line); border-radius:99px; background:rgba(18,21,15,.9);
  color:var(--ink); font:inherit; font-weight:700; padding:6px 14px; cursor:pointer}

.trap-grid{display:grid; gap:26px; margin-top:22px; align-items:center}
@media(min-width:880px){ .trap-grid{grid-template-columns:1.25fr .75fr} }
.trap-txt p{color:var(--dim); max-width:62ch}
.trap-key{border-left:3px solid var(--amber); padding-left:14px; color:var(--ink) !important; font-size:calc(17px * var(--fs))}
.trap-grid figure{margin:0; border:1px solid var(--line); border-radius:14px; overflow:hidden}
.trap-grid figure img{width:100%; display:block}

/* Telephone : une cible tactile fait au moins 44 px de haut, et les
   legendes remontent a 13,5 px pour rester lisibles a bout de bras. */
@media(max-width:700px){
  .cart-btn,.lang{display:inline-flex; align-items:center; min-height:44px}
  .btn,.add{min-height:44px}
  .add{padding-left:18px; padding-right:18px}
  summary{display:flex; align-items:center; min-height:44px}
  figcaption{font-size:calc(13.5px * var(--fs))}
  .small{font-size:calc(13px * var(--fs))}
  .ftr a{display:inline-block; padding:10px 0}   /* « Nous ecrire » etait haut de 17 px */
  .map-fig img{cursor:zoom-in}
}

.cart-err{margin:0 0 10px; padding:11px 13px; border-radius:10px; font-size:calc(14.5px * var(--fs));
  background:#2a1f1c; border:1px solid #5c3a32; color:#f0c4b8}

/* A propos : une colonne de texte, a la premiere personne. */
.about-txt{max-width:62ch; margin-top:18px}
.about-txt p{color:var(--dim); font-size:calc(16.5px * var(--fs)); line-height:1.7}
.about-txt p:first-child{color:var(--ink); font-size:calc(18px * var(--fs))}
.about-sign{color:var(--amber) !important; font-weight:600; margin-top:22px}

/* Taille du texte : A− / A+ dans l'en-tête. L'en-tête lui-même ne grossit pas. */
.fs{display:flex; gap:4px}
.fs-btn{min-width:36px; height:32px; padding:0 8px; border:1px solid var(--line); border-radius:999px; background:transparent;
  color:var(--ink); font-weight:700; font-size:14px; line-height:1; cursor:pointer}
.fs-btn.up{font-size:17px}
.fs-btn:hover{border-color:var(--amber)}
.fs-btn:disabled{opacity:.35; cursor:default; border-color:var(--line)}
.cart-ico{width:18px; height:18px; display:none; flex:none}
.l-short{display:none}
@media(max-width:700px){
  .hdr{padding:10px 12px; gap:8px}
  .hdr-right{gap:6px}
  .fs-btn{min-width:36px; height:44px; padding:0 6px}
  .l-long,.cart-txt{display:none}
  .l-short{display:inline}
  .cart-ico{display:block}
  .cart-btn{padding:8px 10px; gap:5px}
  .lang{padding:6px 11px}
}
@media(max-width:420px){ .logo{font-size:16px; letter-spacing:.05em} .logo-mark{width:11.7px; height:21px; margin-right:6px} .hdr-right{gap:5px} }
@media(max-width:350px){ .hdr{padding:10px 8px; gap:6px} .hdr-right{gap:4px} .logo{font-size:14px; letter-spacing:.03em}
  .logo-mark{width:10.6px; height:19px; margin-right:5px} .fs-btn{min-width:32px; padding:0 4px} .lang{padding:6px 8px} .cart-btn{padding:8px 8px} }

/* L'enjeu, juste sous le haut : une expédition à 5 000 $ contre un diffuseur à quelques dollars. */
.band.enjeu{padding-top:8px; padding-bottom:8px}
.enjeu > div{border:1px solid rgba(208,138,44,.5); border-left:4px solid var(--amber); border-radius:14px; padding:22px 24px;
  background:linear-gradient(135deg, rgba(208,138,44,.14), rgba(208,138,44,.03))}
.enjeu h2{margin:0 0 10px; font-size:calc(clamp(21px,2.6vw,28px) * var(--fs))}
.enjeu p{margin:0 0 10px; max-width:72ch; color:var(--ink); font-size:calc(16.5px * var(--fs))}
.enjeu p:last-child{margin:0}

/* Promo photos (/fr/photos/, /en/photos/) : tes photos contre des mèches gratuites. */
.promo .lead{max-width:none}
.promo h2{margin-top:30px}
.promo-prix{display:grid; gap:14px; margin:22px 0 6px}
@media(min-width:620px){ .promo-prix{grid-template-columns:1fr 1fr} }
.promo-prix article{background:var(--card); border:1px solid var(--line); border-radius:14px; padding:16px 18px}
.promo-prix p{margin:0}
.promo-n{font-size:calc(46px * var(--fs)); font-weight:800; line-height:1; color:var(--amber)}
.promo-u{color:var(--amber); font-weight:700; letter-spacing:.08em; text-transform:uppercase; font-size:calc(13px * var(--fs)); margin:2px 0 10px !important}
.promo-liste,.promo-etapes{padding-left:22px}
.promo-etapes li{margin:6px 0}
.promo-form{margin:30px 0 10px}
.promo-form fieldset{border:1px solid var(--line); border-radius:14px; background:var(--card); padding:14px 18px 16px; margin:0 0 14px; min-width:0}
.promo-form legend{font-weight:700; font-size:calc(17px * var(--fs)); padding:0 6px}
.promo-form label{display:block; margin:10px 0 0; font-size:calc(15px * var(--fs))}
.promo-form input:not([type=checkbox]):not([type=radio]):not([type=file]),.promo-form select,.promo-form textarea{
  display:block; width:100%; margin-top:5px; padding:11px 12px; border-radius:10px; border:1px solid var(--line);
  background:var(--bg); color:var(--ink); font:inherit; font-size:calc(16px * var(--fs))}
.promo-form input:focus,.promo-form select:focus,.promo-form textarea:focus{outline:none; border-color:var(--amber)}
.promo-grille{display:grid; gap:0 14px}
@media(min-width:620px){ .promo-grille{grid-template-columns:1fr 1fr} .promo-grille .promo-large{grid-column:1 / -1} }
.promo-fac{color:var(--dim); font-size:calc(13.5px * var(--fs))}
.promo-chk{display:flex !important; gap:10px; align-items:flex-start; line-height:1.5}
.promo-chk input{accent-color:var(--amber); width:20px; height:20px; flex:none; margin:2px 0 0}
.promo-q{margin:16px 0 0; font-weight:700}
.promo-aide{color:var(--dim); font-size:calc(13.5px * var(--fs)); margin:10px 0 0}
.promo-choisir{position:relative; display:inline-block !important; margin:6px 0 0 !important}
.promo-choisir input{position:absolute; inset:0; opacity:0; cursor:pointer; width:100%}
.promo-choisir .btn{pointer-events:none}
.promo-apercus{display:grid; grid-template-columns:repeat(auto-fill,minmax(88px,1fr)); gap:8px; margin-top:12px}
.promo-apercus:empty{display:none}
.promo-apercus figure{position:relative; margin:0; aspect-ratio:1/1; border-radius:10px; overflow:hidden; background:var(--bg); border:1px solid var(--line)}
.promo-apercus img{width:100%; height:100%; object-fit:cover}
.promo-x{position:absolute; top:4px; right:4px; width:28px; height:28px; border-radius:50%; border:0; background:rgba(18,21,15,.85);
  color:var(--ink); font-size:18px; line-height:1; cursor:pointer}
.promo-piege{position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden}
.promo-form .btn{font-size:calc(16px * var(--fs)); padding:14px 26px}
.promo-form .btn:disabled{opacity:.6; cursor:default}
.promo-etat{margin-top:12px; min-height:1.5em; font-weight:600}
.promo-etat.bad{color:#ff9a86}
.promo-fini{background:var(--card); border:1px solid var(--amber); border-radius:14px; padding:18px 20px; margin:26px 0}

/* Fournisseurs locaux (/fr/fournisseurs/) : la commande de gros. */
.gros{margin:14px 0 0}
.gros-qui{font-weight:700; color:var(--amber-h)}
.gros td.n,.gros th.n{text-align:right; white-space:nowrap}
.gros-prix{font-weight:700; color:var(--amber-h)}
.gros-qte{width:84px; padding:8px 9px; border-radius:8px; border:1px solid var(--line); background:var(--bg); color:var(--ink); font:inherit; text-align:right}
.gros-livraison{margin:14px 0 0}
.gros-livraison fieldset{max-width:520px}
.gros-total{font-weight:700; font-size:calc(16.5px * var(--fs))}
@media(max-width:560px){ .gros td .promo-fac{display:none} .gros th:nth-child(2),.gros td:nth-child(2){display:none} .gros-qte{width:64px} }

/* Portail fournisseur (/fr/fournisseurs/portail/). */
.pt-tete{display:flex; flex-wrap:wrap; gap:10px 18px; align-items:center; justify-content:space-between; margin:6px 0 10px}
.pt-entreprise{font-size:calc(21px * var(--fs)); font-weight:800; margin:0}
.pt-alerte{border:1px solid #6a2f28; background:#2a1714; border-radius:12px; padding:12px 16px; margin:12px 0}
.pt-alerte p{margin:6px 0 0}
.pt-orange{border-color:#6a5328; background:#2a2214}
.pt-dl{display:grid; grid-template-columns:auto 1fr; gap:6px 16px; margin:10px 0}
.pt-dl dt{color:var(--dim)}
.pt-dl dd{margin:0}
.pt-fil{display:grid; gap:8px; margin:8px 0 12px}
.pt-msg{border:1px solid var(--line); border-radius:12px; padding:10px 14px; background:var(--card); max-width:640px}
.pt-msg p{margin:0}
.pt-msg p + p{margin-top:4px; white-space:pre-wrap}
.pt-msg-rd{border-left:4px solid var(--amber)}
.pt-msg-toi{margin-left:auto; border-right:4px solid #6fc3e8}
.pt-regles{list-style:none; margin:10px 0 0; padding:0; font-size:calc(13.5px * var(--fs)); color:#ff9a86}
.pt-regles li.ok{color:#8ee09a}
.pt-somme{border:1px solid var(--amber); border-radius:14px; background:var(--card); padding:14px 18px; margin:12px 0}
.pt-somme p{margin:0}
.pt-somme-v{font-size:calc(24px * var(--fs)); font-weight:800; color:var(--amber-h)}
.pt-qr svg{display:block; width:180px; height:180px; margin:8px 0; border-radius:8px}

/* Promo photos : deux exemples, côte à côte à la même hauteur (colonnes au ratio de chaque photo). */
.promo-exemples{display:grid; gap:12px; margin:16px 0 6px}
@media(min-width:620px){ .promo-exemples{grid-template-columns:.858fr 1.777fr; align-items:start} }
.promo-exemples figure{margin:0}
.promo-exemples img{display:block; width:100%; height:auto; border-radius:12px; border:1px solid var(--line)}
.promo-exemples figcaption{margin:6px 2px 0; color:var(--dim); font-size:calc(13.5px * var(--fs)); line-height:1.45}
.promo-exemples figcaption b{color:var(--ink)}

/* Case des promotions du panier : décochée par défaut, qui écrit et comment se désabonner dessous. */
.promos-box{margin:0 0 12px; padding:11px 13px; border:1px solid var(--line); border-radius:10px; background:var(--bg)}
.promos-chk{display:flex; gap:10px; align-items:flex-start; cursor:pointer; font-size:calc(14.5px * var(--fs)); line-height:1.45}
.promos-chk input{accent-color:var(--amber); width:20px; height:20px; flex:none; margin:1px 0 0}
.promos-qui{margin:7px 0 0 30px; color:var(--dim); font-size:calc(12.5px * var(--fs)); line-height:1.45}
.promos-qui a{color:var(--dim)}

/* Invite un ami : champ du panier et bandeau d'arrivée par le lien d'un ami. */
.ami-box{margin-top:12px; padding-top:10px; border-top:1px solid var(--line)}
.ami-lien{background:none; border:0; padding:0; color:var(--amber); font:inherit; font-size:calc(14px * var(--fs)); font-weight:600; cursor:pointer; text-decoration:underline}
.ami-box label{display:block; font-size:calc(14px * var(--fs)); font-weight:600; margin:0 0 6px}
.ami-box input{width:100%; box-sizing:border-box; padding:11px 12px; border-radius:10px; border:1px solid var(--line);
  background:var(--bg); color:var(--ink); font:inherit; font-size:calc(16px * var(--fs)); letter-spacing:.06em; text-transform:uppercase}
.ami-box input:focus{outline:none; border-color:var(--amber)}
.ami-msg{margin:8px 0 0; font-size:calc(13.5px * var(--fs)); color:var(--dim)}
.ami-msg.ok{color:#8ee09a}
.ami-msg.bad{color:#ff9a86}
.ami-bandeau{display:flex; gap:12px; align-items:center; max-width:var(--max); margin:12px auto 0; padding:12px 16px; width:calc(100% - 32px);
  background:#231e14; border:1px solid var(--amber); border-radius:12px}
.ami-bandeau p{margin:0; flex:1; font-size:calc(15px * var(--fs))}
.ami-bandeau button{background:none; border:0; color:var(--ink); font-size:24px; line-height:1; cursor:pointer; padding:0 4px}
.ami-resultat{margin:26px 0; padding:18px 20px; background:var(--card); border:1px solid var(--amber); border-radius:14px; text-align:center}
.ami-titre{margin:0; color:var(--dim); font-weight:600}
.ami-code{margin:4px 0 14px; font-size:calc(34px * var(--fs)); font-weight:800; letter-spacing:.1em; color:var(--amber)}
.ami-boutons{display:flex; gap:10px; justify-content:center; flex-wrap:wrap}
.ami-etat{min-height:1.4em; margin:10px 0 0; font-weight:600; color:#8ee09a}

/* Où acheter (/fr/ou-acheter/, src/ou-acheter.js) : en ligne d'abord, puis les revendeurs locaux. */
.oa-titre{margin:34px 0 0; font-size:calc(22px * var(--fs))}
.oa-choix{display:grid; gap:14px; margin:22px 0 10px}
@media(min-width:620px){ .oa-choix{grid-template-columns:1fr 1fr} }
.oa-choix article{background:var(--card); border:1px solid var(--line); border-radius:14px; padding:16px 18px}
.oa-choix article.oa-enligne{border-color:var(--amber)}
.lg .oa-choix a.btn.ghost{color:var(--ink)}   /* .lg a.btn (texte foncé sur ambre) ne vaut pas pour le bouton fantôme */
.oa-choix h2,.oa-choix h3{margin:0 0 6px}
.oa-choix p{margin:0 0 10px}
.oa-carte{height:420px; margin:18px 0 10px; border:1px solid var(--line); border-radius:14px; overflow:hidden; background:#1a1f16}
@media(max-width:620px){ .oa-carte{height:320px} }
.oa-carte .leaflet-popup-content{color:#1c2118; font-size:calc(14px * var(--fs))}
.oa-carte .leaflet-popup-content a{color:#b8741f}
.oa-liste{list-style:none; padding:0; margin:14px 0; display:grid; gap:10px}
.oa-item{background:var(--card); border:1px solid var(--line); border-radius:14px; padding:14px 16px}
.oa-item p{margin:0 0 4px}
.oa-item-enligne{border-color:var(--amber)}
.oa-nom{font-size:calc(17px * var(--fs))}
.oa-km{color:var(--amber-h); font-weight:700; margin-left:6px; white-space:nowrap}
.oa-type,.oa-heures{color:var(--dim)}
.oa-liens a{color:var(--amber-h)}
.oa-voir{margin-top:6px; padding:0; border:0; background:none; color:var(--ink); text-decoration:underline; font:inherit; cursor:pointer}
.oa-note{margin-top:4px}
.oa-note a{color:var(--dim)}

/* Carte des territoires des fournisseurs (src/carte-territoire.js), dans le portail */
.rdc{margin:8px 0}.rdc-carte{height:400px;border:1px solid var(--line);border-radius:12px;margin:8px 0}
@media(max-width:620px){ .rdc-carte{height:320px} }
.rdc-legende{margin:0 0 6px;color:var(--dim);font-size:calc(14px * var(--fs))}.rdc-pastille{display:inline-block;width:11px;height:11px;border-radius:50%;vertical-align:middle}
.rdc-recherche input{width:100%;max-width:520px}
.rdc-resultats{list-style:none;margin:6px 0;padding:0;max-height:240px;overflow:auto;display:grid;gap:4px}
.rdc-ajout{background:var(--card);border:1px solid var(--line);border-radius:9px;color:var(--ink);padding:6px 10px;cursor:pointer;text-align:left;font:inherit;width:100%}
.rdc-ajout:disabled{opacity:.6;cursor:default}.rdc-dim{color:var(--dim);font-size:calc(13px * var(--fs))}
.rdc-liste{list-style:none;margin:8px 0;padding:0}.rdc-liste li{margin:3px 0}.rdc-titre{font-weight:700;margin-top:8px!important}
.rdc-retrait{background:none;border:0;color:#e06a5a;cursor:pointer;margin-left:6px;font:inherit}
.rdc-action{background:none;border:1px solid var(--line);border-radius:8px;color:var(--ink);cursor:pointer;margin-left:6px;font:inherit;font-size:calc(13px * var(--fs));padding:1px 8px}
.rdc-msg{min-height:1em;margin:4px 0;color:var(--amber-h);font-size:calc(14px * var(--fs))}
.rdc .leaflet-container{font:inherit}.rdc .leaflet-tooltip{color:#1c2118}

/* « Nous suivre » au pied des pages : lien vers la page Facebook RutDrift, logo « f » dessiné dans la page (build.mjs). */
.suivre{margin:14px 0}
.suivre a{display:inline-flex; align-items:center; gap:9px; padding:7px 14px 7px 16px; border:1px solid var(--line); border-radius:999px;
  color:var(--ink); font-weight:700; text-decoration:none}
.suivre a:hover,.suivre a:focus-visible{border-color:#0866ff; background:rgba(8,102,255,.12)}
.suivre svg{display:block; flex:none}
