/* =========================================================
   Lottart — atelier de gravure laser & impression 3D
   Thème clair chaleureux : crème, blé, ambre, rouille, cognac
   Angles nets : rayon max 4px
   ========================================================= */

:root{
  /* fonds clairs */
  --paper:  #faf2e3;   /* page */
  --shell:  #f2e5d0;   /* bandes alternées */
  --card:   #fffbf0;   /* cartes et panneaux */
  --wheat:  #e9d6b8;   /* aplats chauds */

  /* encres */
  --ink:      #2f1c10;
  --text:     #5c4028;
  --text-dim: #8b6a4c;

  /* accents chauds */
  --amber:  #e08a2e;
  --honey:  #f0b972;
  --rust:   #b8552a;
  --cognac: #8a4a22;
  --terra:  #c4703c;
  --ember:  #ff8f2e;

  /* sombres (bandes d'accent, pied de page) */
  --espresso: #2a1a10;
  --bark:     #3a2617;
  --cream:    #fbf3e7;

  --line:   rgba(102,62,28,.16);
  --line-2: rgba(102,62,28,.30);
  --line-d: rgba(251,243,231,.16);

  --shadow:   0 2px 4px rgba(94,58,26,.05), 0 14px 30px -18px rgba(94,58,26,.30);
  --shadow-l: 0 4px 10px rgba(94,58,26,.07), 0 26px 50px -24px rgba(94,58,26,.38);

  --ff-display: "Bricolage Grotesque", "Trebuchet MS", sans-serif;
  --ff-body:    "Karla", "Helvetica Neue", Arial, sans-serif;
  --ff-mono:    "JetBrains Mono", ui-monospace, "SFMono-Regular", monospace;
  --ff-serif:   "Fraunces", Georgia, serif;

  --wrap: 1180px;
  --r: 3px;
  --r-sm: 2px;
  --pad-band: clamp(68px, 8vw, 118px);
}

*,*::before,*::after{ box-sizing:border-box; }

/* l'attribut hidden doit toujours l'emporter sur un display: de composant */
[hidden]{ display:none !important; }

html{ scroll-behavior:smooth; scroll-padding-top:96px; }

body{
  margin:0;
  background:var(--paper);
  color:var(--text);
  font-family:var(--ff-body);
  font-size:16.5px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
body.is-locked{ overflow:hidden; }

h1,h2,h3{ margin:0; font-family:var(--ff-display); font-weight:800; line-height:1.03; letter-spacing:-.025em; color:var(--ink); }
p{ margin:0; }
img,svg{ display:block; max-width:100%; }
button{ font:inherit; color:inherit; }
a{ color:inherit; text-decoration:none; }

.wrap{ width:min(var(--wrap), 100% - 40px); margin-inline:auto; }

.skip{
  position:absolute; left:-9999px; top:0; z-index:99;
  background:var(--ink); color:var(--cream); padding:10px 16px;
}
.skip:focus{ left:0; }

:focus-visible{ outline:2px solid var(--rust); outline-offset:3px; border-radius:0; }

.sr{
  position:absolute; width:1px; height:1px; overflow:hidden;
  clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap;
}

/* ---------------------------------------------------------
   Bandeau d'annonce
   --------------------------------------------------------- */
.topbar{ background:var(--cognac); color:var(--cream); }
.topbar-in{
  display:flex; align-items:center; justify-content:space-between; gap:20px;
  height:38px; font-family:var(--ff-mono); font-size:.7rem; letter-spacing:.08em;
}
.topbar-links{ display:flex; gap:10px; color:rgba(251,243,231,.76); }
.topbar-links a:hover{ color:var(--cream); text-decoration:underline; }

/* ---------------------------------------------------------
   Navigation
   --------------------------------------------------------- */
.nav{
  position:sticky; top:0; z-index:40;
  background:rgba(250,242,227,.88);
  backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
  transition:box-shadow .3s, background .3s;
}
.nav.is-stuck{ background:rgba(250,242,227,.96); box-shadow:0 10px 24px -20px rgba(94,58,26,.7); }

.nav-in{ display:flex; align-items:center; gap:32px; height:72px; }

.brand{ display:flex; align-items:center; gap:11px; }
.brand-mark{ width:30px; height:30px; flex:none; }
.brand-mark svg{ width:100%; height:100%; fill:var(--rust); }
.brand-mark .mark{ fill:var(--paper); }
.brand-txt{ display:grid; }
.brand-name{
  font-family:var(--ff-display); font-weight:800; font-size:1.3rem;
  letter-spacing:-.03em; color:var(--ink); line-height:1.05;
}
.brand-sub{
  font-family:var(--ff-mono); font-size:.6rem; letter-spacing:.2em;
  text-transform:uppercase; color:var(--text-dim);
}

.nav-links{ display:flex; gap:26px; margin-left:auto; font-size:.93rem; }
.nav-links a{ color:var(--text); position:relative; padding:6px 0; }
.nav-links a::after{
  content:""; position:absolute; left:0; bottom:0; height:2px; width:0;
  background:var(--rust); transition:width .28s ease;
}
.nav-links a:hover{ color:var(--ink); }
.nav-links a:hover::after{ width:100%; }

.nav-end{ display:flex; align-items:center; gap:14px; }
.devis-link{
  font-family:var(--ff-mono); font-size:.72rem; letter-spacing:.13em; text-transform:uppercase;
  color:var(--cognac); border:1px solid var(--line-2); padding:9px 14px;
  transition:border-color .25s, background .25s, color .25s;
}
.devis-link:hover{ border-color:var(--rust); background:rgba(184,85,42,.08); color:var(--rust); }

.icon-btn{
  display:grid; place-items:center; background:none; border:1px solid transparent;
  cursor:pointer; padding:7px; color:var(--ink); transition:color .22s, border-color .22s, background .22s;
}
.icon-btn:hover{ color:var(--rust); border-color:var(--line-2); }
.icon-btn svg{ width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; }

.cart{ position:relative; }
.cart-count{
  position:absolute; top:-3px; right:-5px; min-width:19px; height:19px; padding:0 4px;
  background:var(--rust); color:var(--cream);
  font-family:var(--ff-mono); font-weight:500; font-size:.66rem; line-height:19px; text-align:center;
  transform:scale(0); transition:transform .3s cubic-bezier(.2,1.5,.4,1);
}
.cart-count.is-on{ transform:scale(1); }
.cart-count.pop{ animation:pop .4s ease; }
@keyframes pop{ 40%{ transform:scale(1.45); } 100%{ transform:scale(1); } }

.burger{
  display:none; position:relative; width:34px; height:34px; padding:0;
  background:none; border:0; cursor:pointer; color:var(--ink);
}
.burger span[aria-hidden]{ position:absolute; inset:0; }
.burger span[aria-hidden]::before,
.burger span[aria-hidden]::after{
  content:""; position:absolute; left:6px; right:6px; height:2px;
  background:currentColor; transition:transform .3s cubic-bezier(.3,1,.4,1), top .2s;
}
.burger span[aria-hidden]::before{ top:12px; }
.burger span[aria-hidden]::after{ top:20px; }
.nav.is-open .burger span[aria-hidden]::before{ top:16px; transform:rotate(45deg); }
.nav.is-open .burger span[aria-hidden]::after{ top:16px; transform:rotate(-45deg); }

/* ---------------------------------------------------------
   Boutons
   --------------------------------------------------------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  border:1px solid transparent; border-radius:var(--r-sm); cursor:pointer;
  font-family:var(--ff-body); font-weight:700; font-size:.94rem; letter-spacing:-.01em;
  padding:14px 26px; transition:transform .18s ease, background .22s, color .22s, border-color .22s;
}
.btn:active{ transform:translateY(1px); }
.btn-primary{ background:var(--rust); color:var(--cream); }
.btn-primary:hover{ background:var(--cognac); }
.btn-ghost{ border-color:var(--line-2); color:var(--ink); background:transparent; }
.btn-ghost:hover{ border-color:var(--rust); background:rgba(184,85,42,.07); color:var(--rust); }
.btn-dark{ background:var(--amber); color:var(--espresso); }
.btn-dark:hover{ background:var(--honey); }
.btn-sand{ background:var(--cream); color:var(--cognac); }
.btn-sand:hover{ background:var(--wheat); color:var(--ink); }
.btn-full{ width:100%; }
.btn-mini{
  padding:9px 15px; font-size:.82rem; border-color:var(--line-2); color:var(--ink);
  background:transparent;
}
.btn-mini:hover{ background:var(--rust); color:var(--cream); border-color:var(--rust); }
.btn.is-added{ background:var(--cognac); color:var(--cream); border-color:var(--cognac); }

/* ---------------------------------------------------------
   Hero
   --------------------------------------------------------- */
.hero{
  position:relative; overflow:hidden;
  padding:clamp(52px, 6.5vw, 92px) 0 clamp(66px, 8vw, 108px);
  background:
    radial-gradient(110% 76% at 88% -6%, rgba(224,138,46,.20), transparent 58%),
    radial-gradient(86% 68% at -8% 104%, rgba(184,85,42,.14), transparent 62%),
    var(--paper);
}
.hero-in{
  display:grid; grid-template-columns:1fr 1.02fr; gap:clamp(38px,5vw,74px); align-items:center;
}

.eyebrow{
  font-family:var(--ff-mono); font-size:.71rem; letter-spacing:.2em; text-transform:uppercase;
  color:var(--rust); margin-bottom:20px;
}
.eyebrow-light{ color:rgba(251,243,231,.82); }

.hero-title{
  font-size:clamp(2.9rem, 6.2vw, 5rem);
  margin-bottom:24px;
}
.hero-title .hl{
  font-family:var(--ff-serif); font-weight:600; font-style:italic;
  letter-spacing:-.01em; color:var(--rust);
}

.lede{ font-size:1.06rem; color:var(--text); max-width:46ch; margin-bottom:32px; }

.hero-cta{ display:flex; flex-wrap:wrap; gap:12px; margin-bottom:44px; }

.hero-stats{ display:flex; gap:36px; margin:0; padding-top:24px; border-top:1px solid var(--line); }
.hero-stats dt{
  font-family:var(--ff-mono); font-size:.66rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--text-dim); margin-bottom:5px;
}
.hero-stats dd{ margin:0; font-family:var(--ff-display); font-weight:600; font-size:1.2rem; color:var(--ink); }

/* --- l'établi (élément signature du héros) --- */
.hero-craft{ display:grid; gap:16px; }

.etabli{
  background:var(--card); border:1px solid var(--line); border-radius:var(--r);
  padding:22px; box-shadow:var(--shadow-l);
}
.etabli-tete{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding-bottom:14px; margin-bottom:4px; border-bottom:1px solid var(--line);
  font-family:var(--ff-mono); font-size:.64rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--text-dim);
}
.etabli-tete .live{ display:flex; align-items:center; gap:7px; color:var(--rust); }
.etabli-tete .live::before{
  content:""; width:6px; height:6px; background:var(--ember);
  box-shadow:0 0 8px 2px rgba(255,143,46,.5); animation:blink 1.8s ease-in-out infinite;
}
@keyframes blink{ 50%{ opacity:.25; } }

.machines{ list-style:none; margin:0; padding:0; }
.machines li{
  display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:16px;
  padding:18px 0; border-bottom:1px solid var(--line);
  transition:transform .22s ease;
}
.machines li:hover{ transform:translateX(3px); }
.mach-mat{
  width:52px; height:52px; border-radius:var(--r-sm);
  box-shadow:inset 0 0 22px rgba(60,28,6,.32), 0 8px 16px -12px rgba(70,38,12,.6);
}
.mach-txt strong{
  display:block; font-family:var(--ff-display); font-weight:700; font-size:1.02rem;
  letter-spacing:-.02em; color:var(--ink);
}
.mach-txt em{ display:block; font-style:normal; font-size:.86rem; color:var(--text-dim); margin-top:3px; }
.mach-n{
  font-family:var(--ff-mono); font-size:.72rem; letter-spacing:.1em; color:var(--text-dim);
}

.etabli-pied{ padding-top:18px; }
.etabli-label{
  font-family:var(--ff-mono); font-size:.62rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--text-dim); margin-bottom:11px;
}
.matieres{ display:flex; flex-wrap:wrap; gap:6px; list-style:none; margin:0; padding:0; }
.matieres li{
  border:1px solid var(--line-2); border-radius:var(--r-sm); padding:6px 11px;
  font-size:.8rem; color:var(--text);
}

/* --- champs de formulaire --- */
.config-row{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.field{ display:block; min-width:0; }
.field-label{
  display:block; font-family:var(--ff-mono); font-size:.66rem; letter-spacing:.16em;
  text-transform:uppercase; color:var(--text-dim); margin-bottom:8px;
}
.field-label-light{ color:rgba(251,243,231,.72); }
.field input,
.field select{
  width:100%; background:var(--paper); border:1px solid var(--line-2); border-radius:var(--r-sm);
  color:var(--ink); padding:12px 14px; font-family:var(--ff-body); font-size:.98rem;
  transition:border-color .22s, background .22s;
}
.field input::placeholder{ color:var(--text-dim); }
.field input:focus,
.field select:focus{ border-color:var(--rust); background:#fff; outline:none; }

.opt{ border:0; padding:0; margin:0; min-width:0; }
.opt legend{ padding:0; }
.chips{ display:flex; flex-wrap:wrap; gap:7px; }
.chip{
  background:transparent; border:1px solid var(--line-2); border-radius:var(--r-sm); cursor:pointer;
  padding:9px 15px; font-size:.85rem; color:var(--text);
  transition:background .22s, color .22s, border-color .22s;
}
.chip:hover{ border-color:var(--rust); color:var(--ink); }
.chip.is-on{ background:var(--ink); border-color:var(--ink); color:var(--cream); font-weight:700; }

/* ---------------------------------------------------------
   Bandeau défilant
   --------------------------------------------------------- */
.marquee{ overflow:hidden; background:var(--cognac); color:var(--cream); }
.marquee-track{
  display:flex; align-items:center; gap:26px; width:max-content;
  padding:13px 0; font-family:var(--ff-mono); font-size:.74rem;
  letter-spacing:.18em; text-transform:uppercase; white-space:nowrap;
  animation:slide 42s linear infinite;
}
.marquee-track i{ color:var(--honey); font-style:normal; }
@keyframes slide{ to{ transform:translateX(-50%); } }

/* ---------------------------------------------------------
   Bandes
   --------------------------------------------------------- */
.band{ padding:var(--pad-band) 0; }
.band-alt{ background:var(--shell); }
.band-dark{ background:var(--espresso); color:rgba(251,243,231,.78); }
.band-burn{
  color:var(--cream);
  background:linear-gradient(150deg, var(--rust), var(--cognac) 62%, #6b3a15);
}

.band-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:24px; flex-wrap:wrap; margin-bottom:40px; }
.band-eyebrow{
  font-family:var(--ff-mono); font-size:.68rem; letter-spacing:.2em; text-transform:uppercase;
  color:var(--rust); margin-bottom:10px;
}
.h2{ font-size:clamp(1.9rem, 3.5vw, 2.8rem); }
.h3{ font-size:clamp(1.25rem, 2vw, 1.6rem); font-weight:600; }
.h2-light{ color:var(--cream); }
.band-dark .h2, .band-dark .h3{ color:var(--cream); }
.band-dark .band-eyebrow{ color:var(--honey); }
.band-note{
  font-family:var(--ff-mono); font-size:.72rem; letter-spacing:.13em; text-transform:uppercase;
  color:var(--text-dim);
}

/* Fond de repli des cadres : évite le trou blanc tant qu'une photo charge.
   Déclaré avant les matières pour que celles-ci reprennent la main. */
.card-visual, .bs-visual, .modal-visual, .produit-photo{
  background:linear-gradient(150deg, #f4e7d2, #e6d3b6);
}

/* ---------------------------------------------------------
   Matières (les visuels produits sont faits de la matière)
   --------------------------------------------------------- */
.mat-wood{
  background:
    repeating-linear-gradient(93deg, rgba(60,26,6,.09) 0 1px, rgba(0,0,0,0) 1px 24px),
    repeating-linear-gradient(88deg, rgba(255,236,208,.05) 0 1px, transparent 1px 39px),
    linear-gradient(155deg, #c98d52, #a4602c 52%, #75401b);
}
.mat-resin{
  background:
    radial-gradient(120% 92% at 24% 8%, rgba(255,248,236,.55), transparent 56%),
    radial-gradient(80% 60% at 88% 98%, rgba(120,66,22,.32), transparent 62%),
    linear-gradient(155deg, #f2e0c2, var(--honey) 46%, #c97e39);
}
.mat-filament{
  background:
    repeating-linear-gradient(0deg, rgba(50,18,4,.13) 0 1px, rgba(255,230,196,.06) 1px 2px, transparent 2px 10px),
    linear-gradient(155deg, #d3814c, var(--rust) 58%, #8a3f1c);
}
.mat-mixed{
  background:
    repeating-linear-gradient(0deg, rgba(50,18,4,.11) 0 1px, transparent 1px 11px),
    linear-gradient(118deg, #a4602c 0 46%, #d3814c 46% 100%);
}

/* silhouettes : masse sombre + détails « gravés » en clair */
.silhouette{
  width:min(62%, 260px); height:auto;
  fill:rgba(52,24,6,.68); stroke:rgba(52,24,6,.68);
  filter:drop-shadow(0 14px 20px rgba(50,24,6,.28));
  transition:transform .5s cubic-bezier(.2,.8,.3,1);
}
.silhouette .deep{ fill:rgba(34,14,2,.82); }
.silhouette .mark{ fill:rgba(255,244,226,.42); }
.silhouette .ring{ fill:none; stroke-width:8; }

/* ---------------------------------------------------------
   Meilleures ventes
   --------------------------------------------------------- */
.bestsellers{ display:grid; grid-template-columns:1.35fr 1fr; gap:18px; align-items:stretch; }

.bs-main{
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.15fr); gap:0;
  background:var(--card); border:1px solid var(--line); border-radius:var(--r);
  overflow:hidden; box-shadow:var(--shadow);
}
/* Le visuel occupe toute la hauteur de la carte : une photo remplit le cadre
   au lieu de flotter en petit carré au milieu du fond. */
.bs-visual{
  position:relative; display:grid; place-items:center; overflow:hidden; padding:30px;
}
.bs-main .bs-visual{ min-height:min(30vw, 420px); }
.bs-main .silhouette{ width:min(72%, 300px); }
.rank{
  position:absolute; top:14px; left:14px; z-index:2;
  font-family:var(--ff-mono); font-size:.68rem; letter-spacing:.14em;
  background:var(--espresso); color:var(--honey); padding:6px 11px;
}
.bs-body{ padding:clamp(22px,3vw,34px); display:flex; flex-direction:column; }
.kicker{
  font-family:var(--ff-mono); font-size:.66rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--rust); margin-bottom:10px;
}
.bs-title{ font-size:clamp(1.45rem,2.4vw,1.95rem); margin-bottom:10px; }
.bs-desc{ color:var(--text); font-size:.97rem; margin-bottom:20px; }

.stars{ display:flex; align-items:center; gap:5px; margin-bottom:16px; }
.stars svg{ width:14px; height:14px; fill:var(--amber); }
.stars svg.off{ fill:rgba(224,138,46,.3); }
.stars span{ font-family:var(--ff-mono); font-size:.7rem; color:var(--text-dim); margin-left:6px; }
.stars-lg svg{ width:17px; height:17px; }

.spec{ list-style:none; margin:0 0 20px; padding:0; display:grid; gap:0; }
.spec li{
  display:flex; align-items:baseline; justify-content:space-between; gap:20px; text-align:right;
  font-family:var(--ff-mono); font-size:.75rem; color:var(--ink);
  padding:9px 0; border-top:1px solid var(--line);
}
.spec li:last-child{ border-bottom:1px solid var(--line); }
.spec span{
  flex:none; text-align:left; color:var(--text-dim); letter-spacing:.06em;
  text-transform:uppercase; font-size:.66rem;
}

.sales{ margin-bottom:20px; }
.sales-bar{ height:3px; background:rgba(102,62,28,.14); overflow:hidden; }
.sales-bar i{ display:block; height:100%; width:var(--w); background:linear-gradient(90deg,var(--cognac),var(--amber)); }
.sales-n{ font-family:var(--ff-mono); font-size:.7rem; color:var(--text-dim); margin-top:8px; }

.buy{ display:flex; align-items:center; justify-content:space-between; gap:16px; margin-top:auto; }
.price{ font-family:var(--ff-display); font-weight:800; font-size:1.5rem; color:var(--ink); letter-spacing:-.03em; }

.bs-side{ display:grid; grid-template-rows:1fr 1fr; gap:18px; }
.bs-alt{
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);
  background:var(--card); border:1px solid var(--line); border-radius:var(--r);
  overflow:hidden; box-shadow:var(--shadow);
}
.bs-alt .bs-visual{ padding:18px; min-height:180px; }
.bs-alt .silhouette{ width:min(78%,150px); }
.bs-alt-body{ padding:20px; display:flex; flex-direction:column; justify-content:center; }
.bs-alt-body .buy{ margin-top:6px; }
.bs-alt-title{ font-size:1.12rem; margin-bottom:8px; font-weight:600; }
.bs-alt .price{ font-size:1.18rem; }
.spec-line{ font-family:var(--ff-mono); font-size:.71rem; color:var(--text-dim); margin-bottom:16px; }

.bs-main:hover .silhouette,
.bs-alt:hover .silhouette,
.card:hover .silhouette{ transform:translateY(-7px) scale(1.04); }

/* ---------------------------------------------------------
   Catégories
   --------------------------------------------------------- */
.cats{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
.cat{
  display:flex; align-items:center; gap:16px;
  background:var(--card); border:1px solid var(--line); border-radius:var(--r);
  padding:14px; transition:border-color .26s, transform .26s ease, box-shadow .26s;
}
.cat:hover{ border-color:var(--rust); transform:translateY(-3px); box-shadow:var(--shadow-l); }
.cat-mat{ width:62px; height:62px; border-radius:var(--r-sm); flex:none; }
.cat-body{ display:grid; gap:2px; }
.cat-name{ font-family:var(--ff-display); font-weight:600; font-size:1.02rem; color:var(--ink); letter-spacing:-.02em; }
.cat-desc{ font-size:.85rem; color:var(--text-dim); }
.cat-n{ font-family:var(--ff-mono); font-size:.64rem; letter-spacing:.1em; color:var(--rust); margin-top:3px; }
/* chapô d'une page catégorie */
.cat-lede{ color:var(--text); font-size:1.02rem; max-width:52ch; margin-top:10px; }
.cat-arrow{ margin-left:auto; color:var(--text-dim); transition:transform .26s ease, color .26s; }
.cat:hover .cat-arrow{ transform:translateX(4px); color:var(--rust); }

/* ---------------------------------------------------------
   Boutique
   --------------------------------------------------------- */
.shopbar{
  display:flex; align-items:center; justify-content:space-between; gap:18px; flex-wrap:wrap;
  margin-bottom:26px; padding-bottom:18px; border-bottom:1px solid var(--line);
}
.filters{ display:flex; flex-wrap:wrap; gap:7px; }
.sort select{
  background:var(--card); color:var(--text); border:1px solid var(--line-2); border-radius:var(--r-sm);
  padding:9px 12px; font-family:var(--ff-mono); font-size:.74rem; letter-spacing:.06em; cursor:pointer;
}
.sort select:focus{ outline:none; border-color:var(--rust); }

.grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
.card{
  display:flex; flex-direction:column; overflow:hidden;
  background:var(--card); border:1px solid var(--line); border-radius:var(--r);
  transition:transform .28s ease, border-color .28s, box-shadow .28s;
}
.card:hover{ transform:translateY(-5px); border-color:var(--line-2); box-shadow:var(--shadow-l); }
.card.is-hidden{ display:none; }
.card.is-filtering{ animation:fadeUp .4s ease both; }
@keyframes fadeUp{ from{ opacity:0; transform:translateY(12px); } to{ opacity:1; transform:none; } }

.card-visual{ position:relative; display:grid; place-items:center; aspect-ratio:1/1; padding:22px; overflow:hidden; }
.tag{
  position:absolute; top:11px; right:11px; z-index:2;
  font-family:var(--ff-mono); font-size:.62rem; letter-spacing:.1em;
  background:rgba(42,26,16,.84); color:var(--cream); padding:5px 9px;
}
.badge{
  position:absolute; top:11px; left:11px; z-index:2;
  font-family:var(--ff-mono); font-size:.62rem; letter-spacing:.1em; text-transform:uppercase;
  background:var(--rust); color:var(--cream); padding:5px 9px; font-weight:500;
}
.badge-new{ background:var(--cream); color:var(--ink); }
.qv-btn{
  position:absolute; left:0; right:0; bottom:0; padding:11px;
  background:rgba(42,26,16,.9); color:var(--cream); border:0; cursor:pointer;
  font-family:var(--ff-mono); font-size:.68rem; letter-spacing:.14em; text-transform:uppercase;
  transform:translateY(100%); transition:transform .28s cubic-bezier(.2,.8,.3,1);
}
.card:hover .qv-btn,
.qv-btn:focus-visible{ transform:none; }

.card-body{ padding:16px; display:flex; flex-direction:column; flex:1; }
.card-cat{
  font-family:var(--ff-mono); font-size:.62rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--rust); margin-bottom:7px;
}
.card-title{ font-size:1rem; font-weight:600; margin-bottom:6px; line-height:1.25; }
.card .price{ font-size:1.14rem; }

.empty{ text-align:center; color:var(--text-dim); padding:60px 0; font-family:var(--ff-mono); font-size:.85rem; }

/* ---------------------------------------------------------
   Avis
   --------------------------------------------------------- */
.avis{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
.avis-card{
  margin:0; padding:26px; background:var(--card);
  border:1px solid var(--line); border-radius:var(--r);
  border-top:3px solid var(--amber); box-shadow:var(--shadow);
}
.avis-card p{ color:var(--text); font-size:.97rem; }
.avis-card footer{ margin-top:20px; padding-top:16px; border-top:1px solid var(--line); display:grid; gap:2px; }
.avis-card strong{ color:var(--ink); font-size:.94rem; }
.avis-card span{ font-family:var(--ff-mono); font-size:.68rem; color:var(--text-dim); }

/* ---------------------------------------------------------
   Atelier (bande sombre)
   --------------------------------------------------------- */
.atelier{ display:grid; grid-template-columns:.85fr 1.15fr; gap:clamp(34px,5vw,68px); align-items:start; }
.atelier-lede{ font-size:1.04rem; color:rgba(251,243,231,.72); margin:18px 0 28px; max-width:34ch; }
.steps{ list-style:none; margin:0; padding:0; display:grid; gap:0; }
.steps li{ padding:24px 0; border-top:1px solid var(--line-d); }
.steps li:last-child{ border-bottom:1px solid var(--line-d); }
.step-n{
  font-family:var(--ff-mono); font-size:.66rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--honey);
}
.step-t{ font-size:1.3rem; color:var(--cream); margin:8px 0; font-weight:600; }
.steps p{ color:rgba(251,243,231,.7); font-size:.96rem; max-width:56ch; }

/* ---------------------------------------------------------
   Sur-mesure
   --------------------------------------------------------- */
.surmesure{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(34px,5vw,68px); align-items:center; }
.sur-lede{ color:rgba(251,243,231,.86); font-size:1.04rem; margin-top:18px; max-width:44ch; }
.sur-list{ list-style:none; margin:24px 0 0; padding:0; display:grid; gap:9px; }
.sur-list li{
  position:relative; padding-left:24px; font-family:var(--ff-mono); font-size:.76rem;
  letter-spacing:.06em; color:rgba(251,243,231,.9);
}
.sur-list li::before{
  content:""; position:absolute; left:0; top:.55em; width:11px; height:2px; background:var(--honey);
}
.sur-form{ display:grid; gap:15px; }
.band-burn .field input,
.band-burn .field select{ background:rgba(42,26,16,.3); border-color:rgba(251,243,231,.3); color:var(--cream); }
.band-burn .field input::placeholder{ color:rgba(251,243,231,.55); }
.band-burn .field input:focus,
.band-burn .field select:focus{ border-color:var(--cream); background:rgba(42,26,16,.45); }
.form-note{ font-family:var(--ff-mono); font-size:.74rem; color:var(--cream); min-height:1.2em; }

/* ---------------------------------------------------------
   FAQ
   --------------------------------------------------------- */
.faq-wrap{ display:grid; grid-template-columns:.8fr 1.2fr; gap:clamp(34px,5vw,68px); align-items:start; }
.faq-head .h2{ margin-bottom:16px; }
.faq-note{ color:var(--text-dim); font-size:.92rem; }
.faq-note a{ color:var(--rust); text-decoration:underline; text-underline-offset:3px; }
.faq-list details{ border-top:1px solid var(--line); }
.faq-list details:last-child{ border-bottom:1px solid var(--line); }
.faq-list summary{
  list-style:none; cursor:pointer; padding:20px 34px 20px 0; position:relative;
  font-family:var(--ff-display); font-weight:600; font-size:1.04rem; color:var(--ink);
  letter-spacing:-.015em; transition:color .2s;
}
.faq-list summary::-webkit-details-marker{ display:none; }
.faq-list summary:hover{ color:var(--rust); }
.faq-list summary::after{
  content:""; position:absolute; right:6px; top:50%; width:11px; height:11px;
  border-right:2px solid var(--rust); border-bottom:2px solid var(--rust);
  transform:translateY(-70%) rotate(45deg); transition:transform .26s ease;
}
.faq-list details[open] summary::after{ transform:translateY(-30%) rotate(225deg); }
.faq-list details p{ padding:0 40px 22px 0; color:var(--text); font-size:.96rem; }

/* ---------------------------------------------------------
   Newsletter
   --------------------------------------------------------- */
.news{ background:var(--shell); border-top:1px solid var(--line); }
.news-in{
  display:grid; grid-template-columns:1fr auto; gap:32px; align-items:center;
  padding:clamp(38px,5vw,60px) 0;
}
.news-in p{ color:var(--text); font-size:.95rem; margin-top:8px; max-width:52ch; }
.news-form{ display:flex; gap:9px; flex-wrap:wrap; }
.news-form input{
  min-width:260px; background:var(--card); border:1px solid var(--line-2); border-radius:var(--r-sm);
  color:var(--ink); padding:14px 15px; font-family:var(--ff-body); font-size:.96rem;
}
.news-form input::placeholder{ color:var(--text-dim); }
.news-form input:focus{ outline:none; border-color:var(--rust); }

/* ---------------------------------------------------------
   Pied de page
   --------------------------------------------------------- */
.foot{ background:var(--espresso); color:rgba(251,243,231,.74); padding-top:clamp(52px,6vw,82px); }
.foot .brand-name{ color:var(--cream); }
.foot-in{ display:grid; grid-template-columns:1.6fr 1fr 1fr 1.1fr; gap:34px; padding-bottom:44px; }
.foot-brand p{ color:rgba(251,243,231,.6); font-size:.92rem; margin-top:10px; }
.foot-col{ display:flex; flex-direction:column; gap:8px; }
.foot-col h3{
  font-family:var(--ff-mono); font-weight:400; font-size:.66rem; letter-spacing:.16em;
  text-transform:uppercase; color:var(--honey); margin-bottom:6px;
}
.foot-col a{ color:rgba(251,243,231,.74); font-size:.92rem; transition:color .2s; }
.foot-col a:hover{ color:var(--cream); }
.foot-addr{ font-family:var(--ff-mono); font-size:.7rem; color:rgba(251,243,231,.5); margin-top:10px; line-height:1.7; }

.foot-bar{
  display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap;
  padding:18px 0 24px; border-top:1px solid var(--line-d);
  font-family:var(--ff-mono); font-size:.7rem; color:rgba(251,243,231,.55);
}
.pay{ display:flex; gap:7px; }
.pay span{ border:1px solid var(--line-d); padding:4px 9px; letter-spacing:.06em; }

/* ---------------------------------------------------------
   Panier latéral
   --------------------------------------------------------- */
.scrim{
  position:fixed; inset:0; z-index:50; background:rgba(47,28,16,.45);
  opacity:0; transition:opacity .3s ease;
}
.scrim.is-on{ opacity:1; }

.drawer{
  position:fixed; top:0; right:0; bottom:0; z-index:55; width:min(420px, 100%);
  display:flex; flex-direction:column;
  background:var(--paper); border-left:1px solid var(--line);
  transform:translateX(100%); transition:transform .34s cubic-bezier(.3,.9,.3,1);
  box-shadow:-30px 0 60px -34px rgba(70,40,16,.55);
}
.drawer.is-open{ transform:none; }
.drawer-head{
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:20px 22px; border-bottom:1px solid var(--line);
}
.drawer-head .h3{ color:var(--ink); }
.drawer-body{ flex:1; overflow-y:auto; padding:18px 22px; }
.drawer-empty{
  text-align:center; padding:50px 10px; color:var(--text-dim);
  font-family:var(--ff-mono); font-size:.82rem; line-height:2;
}
.drawer-empty span{ font-size:.72rem; }

.cart-list{ list-style:none; margin:0; padding:0; display:grid; gap:14px; }
.cart-row{ display:grid; grid-template-columns:64px 1fr; gap:14px; padding-bottom:14px; border-bottom:1px solid var(--line); }
.cart-thumb{ width:64px; height:64px; border-radius:var(--r-sm); }
.cart-info{ display:grid; gap:6px; align-content:start; min-width:0; }
.cart-name{ font-size:.94rem; color:var(--ink); font-weight:700; line-height:1.3; }
.cart-price{ font-family:var(--ff-mono); font-size:.74rem; color:var(--text-dim); }
.qty{ display:flex; align-items:center; gap:10px; margin-top:4px; }
.qty button{
  width:26px; height:26px; display:grid; place-items:center; cursor:pointer;
  background:transparent; border:1px solid var(--line-2); color:var(--ink);
  font-family:var(--ff-mono); line-height:1; transition:background .2s, color .2s, border-color .2s;
}
.qty button:hover{ background:var(--rust); border-color:var(--rust); color:var(--cream); }
.qty output{ font-family:var(--ff-mono); font-size:.84rem; color:var(--ink); min-width:16px; text-align:center; }
.qty .drop{ margin-left:auto; border:0; width:auto; color:var(--text-dim); font-size:.7rem; letter-spacing:.1em; text-transform:uppercase; }
.qty .drop:hover{ background:none; color:var(--rust); }

.drawer-foot{ border-top:1px solid var(--line); padding:18px 22px 22px; display:grid; gap:14px; background:var(--shell); }
.ship{
  font-family:var(--ff-mono); font-size:.7rem; letter-spacing:.06em; color:var(--cognac);
  background:rgba(224,138,46,.14); border:1px solid var(--line); padding:9px 12px;
}
.ship strong{ color:var(--ink); }
.ship.is-free{ color:#4c6b32; background:rgba(120,160,80,.16); }
.totals{ margin:0; display:grid; gap:8px; }
.totals div{ display:flex; justify-content:space-between; gap:16px; }
.totals dt{ font-family:var(--ff-mono); font-size:.72rem; letter-spacing:.06em; color:var(--text-dim); }
.totals dd{ margin:0; font-family:var(--ff-mono); font-size:.82rem; color:var(--text); }
.totals-main{ padding-top:8px; border-top:1px solid var(--line); }
.totals-main dt{ color:var(--ink); font-size:.8rem; }
.totals-main dd{ font-family:var(--ff-display); font-weight:800; font-size:1.3rem; color:var(--ink); letter-spacing:-.03em; }
.drawer-note{ font-family:var(--ff-mono); font-size:.66rem; color:var(--text-dim); text-align:center; }

/* ---------------------------------------------------------
   Aperçu rapide
   --------------------------------------------------------- */
.modal{
  position:fixed; inset:0; z-index:60; display:grid; place-items:center; padding:24px;
  background:rgba(47,28,16,.55); opacity:0; pointer-events:none; transition:opacity .28s ease;
}
.modal.is-open{ opacity:1; pointer-events:auto; }
.modal-card{
  position:relative; width:min(880px,100%); max-height:88vh; overflow:auto;
  display:grid; grid-template-columns:1fr 1fr;
  background:var(--card); border:1px solid var(--line); border-radius:var(--r);
  box-shadow:0 40px 90px -40px rgba(50,26,8,.6);
  transform:translateY(14px) scale(.985); transition:transform .3s cubic-bezier(.2,.9,.3,1);
}
.modal.is-open .modal-card{ transform:none; }
.modal-close{ position:absolute; top:10px; right:10px; z-index:2; background:var(--card); }
.modal-visual{ position:relative; display:grid; place-items:center; min-height:320px; padding:34px; }
.modal-visual .silhouette{ width:min(74%,280px); }
.modal-body{ padding:clamp(24px,3vw,34px); display:flex; flex-direction:column; }
.modal-title{ margin-bottom:12px; }
.modal-desc{ color:var(--text); font-size:.97rem; margin-bottom:20px; }

/* ---------------------------------------------------------
   Notification
   --------------------------------------------------------- */
.toast{
  position:fixed; left:50%; bottom:26px; z-index:70;
  transform:translate(-50%, 18px); opacity:0; pointer-events:none;
  background:var(--espresso); color:var(--cream);
  font-family:var(--ff-mono); font-size:.76rem; letter-spacing:.02em;
  padding:12px 20px; border-radius:var(--r-sm); box-shadow:0 18px 40px -18px rgba(50,26,8,.7);
  transition:opacity .3s, transform .3s cubic-bezier(.2,1,.3,1);
}
.toast.is-on{ opacity:1; transform:translate(-50%,0); }

/* ---------------------------------------------------------
   Apparition au défilement
   --------------------------------------------------------- */
.reveal{ opacity:0; transform:translateY(16px); transition:opacity .6s ease, transform .6s cubic-bezier(.2,.8,.3,1); }
.reveal.is-in{ opacity:1; transform:none; }

/* ---------------------------------------------------------
   Adaptatif
   --------------------------------------------------------- */
@media (max-width:1060px){
  .grid{ grid-template-columns:repeat(2,1fr); }
  .cats{ grid-template-columns:repeat(2,1fr); }
  .bestsellers{ grid-template-columns:1fr; }
  .avis{ grid-template-columns:1fr; }
  .faq-wrap{ grid-template-columns:1fr; }
  .foot-in{ grid-template-columns:1fr 1fr; }
  .news-in{ grid-template-columns:1fr; }
}

@media (max-width:900px){
  .burger{ display:block; }
  .nav-links{
    position:absolute; top:100%; left:0; right:0;
    display:grid; gap:0; margin:0; padding:4px 20px 18px;
    background:var(--paper); border-bottom:1px solid var(--line);
    box-shadow:0 20px 30px -24px rgba(70,40,16,.6);
    opacity:0; transform:translateY(-8px); pointer-events:none;
    transition:opacity .26s ease, transform .26s ease;
  }
  .nav-links a{ padding:14px 0; border-bottom:1px solid var(--line); font-size:1.02rem; }
  .nav-links a::after{ display:none; }
  .nav.is-open .nav-links{ opacity:1; transform:none; pointer-events:auto; }
  .hero-in{ grid-template-columns:1fr; }
  .atelier{ grid-template-columns:1fr; }
  .surmesure{ grid-template-columns:1fr; }
  .modal-card{ grid-template-columns:1fr; }
  .modal-visual{ min-height:220px; }
}

@media (max-width:680px){
  body{ font-size:16px; }
  .topbar-links{ display:none; }
  .topbar-in{ justify-content:center; height:auto; padding:9px 0; font-size:.64rem; text-align:center; }
  .grid{ grid-template-columns:1fr; }
  .cats{ grid-template-columns:1fr; }
  .bs-main{ grid-template-columns:1fr; }
  .bs-alt{ grid-template-columns:1fr; }
  /* Empilé, le visuel n'a plus de colonne à remplir : on lui redonne un format. */
  .bs-main .bs-visual,
  .bs-alt .bs-visual{ aspect-ratio:4/3; min-height:0; }
  .config-row{ grid-template-columns:1fr; }
  .machines li{ gap:12px; padding:15px 0; }
  .mach-mat{ width:42px; height:42px; }
  .hero-stats{ gap:20px; }
  .hero-stats dd{ font-size:1.04rem; }
  .devis-link{ display:none; }
  .band-head{ margin-bottom:30px; }
  .foot-in{ grid-template-columns:1fr; gap:26px; }
  .buy{ flex-wrap:wrap; }
  .news-form input{ min-width:0; flex:1; }
  .qv-btn{ transform:none; }
}

/* ---------------------------------------------------------
   Mouvement réduit
   --------------------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{
    animation-duration:.001ms !important; animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
  .reveal{ opacity:1; transform:none; }
  .marquee-track{ animation:none; }
  .cart-count{ transform:scale(1); }
  .cart-count:not(.is-on){ display:none; }
}

/* ---------------------------------------------------------
   Contenu dynamique (photos envoyées depuis l'espace gestion)
   --------------------------------------------------------- */
.photo{
  width:100%; height:100%; object-fit:cover; position:absolute; inset:0;
  opacity:0; transition:opacity .45s ease, transform .5s cubic-bezier(.2,.8,.3,1);
}
.photo.est-chargee{ opacity:1; }
.card:hover .photo,
.bs-main:hover .photo,
.bs-alt:hover .photo{ transform:scale(1.04); }
.card-visual, .bs-visual, .modal-visual{ overflow:hidden; }
.cart-thumb{ background-size:cover; background-position:center; }

/* champ piège à robots */
.pot{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

/* formulaire de commande dans le panier */
.drawer-form{
  display:grid; gap:12px; margin-top:20px; padding-top:18px;
  border-top:1px solid var(--line);
}
.drawer-form[hidden]{ display:none; }
.drawer-form-titre{
  font-family:var(--ff-mono); font-size:.68rem; letter-spacing:.16em;
  text-transform:uppercase; color:var(--rust);
}
.drawer-form .form-note{ color:var(--rust); }

.buy .btn{ white-space:nowrap; }

/* ---------------------------------------------------------
   Cartes cliquables (lien étendu sur tout le bloc)
   --------------------------------------------------------- */
.card{ position:relative; }
.card-title a,
.bs-title a,
.bs-alt-title a{ color:inherit; }
.card-title a::after{ content:""; position:absolute; inset:0; z-index:1; }
.card-title a:hover,
.bs-title a:hover,
.bs-alt-title a:hover{ color:var(--rust); }
.card .qv-btn{ z-index:2; }
.card .buy{ position:relative; z-index:2; }

/* ---------------------------------------------------------
   Fiche produit
   --------------------------------------------------------- */
.fil{
  display:flex; align-items:center; gap:9px; flex-wrap:wrap;
  padding:22px 0 0; font-family:var(--ff-mono); font-size:.72rem;
  letter-spacing:.06em; color:var(--text-dim);
}
.fil a:hover{ color:var(--rust); text-decoration:underline; text-underline-offset:3px; }

.produit{
  display:grid; grid-template-columns:1.05fr 1fr; gap:clamp(28px,4vw,60px);
  align-items:start; padding:clamp(24px,3vw,40px) 0 clamp(60px,7vw,96px);
}
.produit-visuels{ position:sticky; top:96px; display:grid; gap:12px; }
.produit-photo{
  position:relative; aspect-ratio:1/1; display:grid; place-items:center;
  border:1px solid var(--line); border-radius:var(--r); overflow:hidden;
  box-shadow:var(--shadow);
}
.produit-photo .silhouette{ width:min(64%,320px); }
.produit-miniatures{ display:flex; gap:10px; flex-wrap:wrap; }
.mini{
  width:72px; height:72px; padding:0; cursor:pointer; overflow:hidden;
  background:var(--card); border:1px solid var(--line-2); border-radius:var(--r-sm);
  transition:border-color .2s, transform .2s;
}
.mini img{ width:100%; height:100%; object-fit:cover; }
.mini:hover{ transform:translateY(-2px); }
.mini.is-on{ border-color:var(--rust); border-width:2px; }

.produit-infos{ min-width:0; }
.produit-titre{
  font-family:var(--ff-display); font-weight:800; letter-spacing:-.03em;
  font-size:clamp(1.9rem,3.4vw,2.7rem); color:var(--ink); margin:6px 0 10px;
}
.produit-accroche{ font-family:var(--ff-mono); font-size:.8rem; color:var(--text-dim); margin-bottom:14px; }

.produit-prix{ display:flex; align-items:baseline; gap:14px; flex-wrap:wrap; margin:18px 0 8px; }
.produit-ttc{
  font-family:var(--ff-display); font-weight:800; font-size:2.1rem;
  color:var(--ink); letter-spacing:-.03em;
}
.produit-ht{ font-family:var(--ff-mono); font-size:.74rem; color:var(--text-dim); }

.produit-dispo{
  display:inline-block; font-family:var(--ff-mono); font-size:.72rem; letter-spacing:.06em;
  padding:7px 12px; border-radius:var(--r-sm); margin-bottom:22px;
}
.est-dispo{ background:rgba(111,154,69,.18); color:#3f6423; }
.est-commande{ background:rgba(224,138,46,.2); color:#8a4a22; }

.produit-achat{ display:flex; gap:12px; align-items:stretch; flex-wrap:wrap; margin-bottom:22px; }
.qty-achat{
  border:1px solid var(--line-2); border-radius:var(--r-sm); padding:0 6px; gap:6px;
}
.qty-achat button{ width:34px; height:100%; min-height:44px; border:0; background:none; }
.qty-achat button:hover{ background:none; color:var(--rust); }
.qty-achat output{ min-width:26px; font-size:.95rem; }
.produit-achat .btn{ flex:1; min-width:200px; }

.produit-arguments{ list-style:none; margin:0 0 28px; padding:0; display:grid; gap:8px; }
.produit-arguments li{
  position:relative; padding-left:22px; font-size:.9rem; color:var(--text);
}
.produit-arguments li::before{
  content:""; position:absolute; left:0; top:.6em; width:10px; height:2px; background:var(--rust);
}
.produit-arguments a{ color:var(--rust); text-decoration:underline; text-underline-offset:3px; }

.produit-bloc{ padding-top:22px; margin-top:22px; border-top:1px solid var(--line); }
.produit-bloc .h3{ margin-bottom:12px; }
.produit-desc{ color:var(--text); font-size:.98rem; }

.modele3d{
  display:flex; align-items:center; gap:14px; padding:14px 16px;
  background:var(--card); border:1px solid var(--line); border-radius:var(--r);
}
.modele3d .f3-ico{
  display:grid; place-items:center; width:38px; height:38px; flex:none;
  background:var(--cognac); color:var(--cream); border-radius:var(--r-sm);
}
.modele3d .f3-txt{ min-width:0; }
.modele3d .f3-txt strong{ display:block; color:var(--ink); font-size:.94rem; word-break:break-all; }
.modele3d .f3-txt em{ font-style:normal; font-family:var(--ff-mono); font-size:.7rem; color:var(--text-dim); }
.modele3d .btn{ margin-left:auto; }

.produit-absent{ padding:clamp(60px,10vw,120px) 0; text-align:center; display:grid; gap:16px; justify-items:center; }
.produit-absent p{ color:var(--text-dim); }

@media (max-width:900px){
  .produit{ grid-template-columns:1fr; }
  .produit-visuels{ position:static; }
}

/* ---------------------------------------------------------
   Visionneuse 3D
   --------------------------------------------------------- */
.produit-3d{ position:relative; background:var(--paper); display:block; }
.viewer-canvas{ display:block; width:100%; height:100%; touch-action:none; cursor:grab; }
.viewer-canvas:active{ cursor:grabbing; }
.viewer-etat{
  position:absolute; inset:0; display:grid; place-items:center; padding:24px; text-align:center;
  font-family:var(--ff-mono); font-size:.78rem; color:var(--text-dim);
}
.viewer-btn{
  position:absolute; top:12px; right:12px; cursor:pointer;
  background:rgba(42,26,16,.86); color:var(--cream); border:0; padding:7px 12px;
  border-radius:var(--r-sm); font-family:var(--ff-mono); font-size:.64rem;
  letter-spacing:.1em; text-transform:uppercase;
}
.viewer-btn:hover{ background:var(--rust); }
.viewer-aide{
  position:absolute; left:12px; bottom:12px;
  font-family:var(--ff-mono); font-size:.62rem; letter-spacing:.06em;
  color:var(--text-dim); background:rgba(250,242,227,.8); padding:5px 9px; border-radius:var(--r-sm);
}
.mini-3d{
  display:grid; place-items:center; gap:2px; align-content:center;
  font-family:var(--ff-mono); font-size:.6rem; letter-spacing:.1em; color:var(--cognac);
}
.mini-3d span{ font-size:1rem; }

/* logo personnalisé */
.brand-logo img{ width:100%; height:100%; object-fit:contain; }

.bs-body .buy{ flex-wrap:wrap; row-gap:12px; }

/* mentions factuelles remplaçant les notes fictives */
.produit-ventes{
  font-family:var(--ff-mono); font-size:.74rem; color:var(--text-dim); margin-bottom:6px;
}
.modal-stock{
  font-family:var(--ff-mono); font-size:.74rem; color:var(--text-dim); margin-bottom:14px;
}

/* ---------------------------------------------------------
   Pages légales
   --------------------------------------------------------- */
.legal{ padding:clamp(40px,6vw,80px) 0 clamp(60px,8vw,110px); }
.legal .wrap{ max-width:760px; }
.legal h1{ margin-bottom:26px; }
.legal-sommaire{
  display:flex; flex-wrap:wrap; gap:8px; margin-bottom:40px;
  padding-bottom:24px; border-bottom:1px solid var(--line);
}
.legal-sommaire a{
  border:1px solid var(--line-2); border-radius:var(--r-sm); padding:9px 15px;
  font-family:var(--ff-mono); font-size:.74rem; letter-spacing:.06em; color:var(--text);
  transition:border-color .2s, color .2s, background .2s;
}
.legal-sommaire a:hover{ border-color:var(--rust); color:var(--rust); background:rgba(184,85,42,.06); }

.legal-bloc{ margin-bottom:52px; scroll-margin-top:96px; }
.legal-bloc .h3{ margin-bottom:20px; padding-bottom:12px; border-bottom:2px solid var(--amber); }
.legal-bloc h3{
  font-family:var(--ff-display); font-weight:600; font-size:1.05rem; color:var(--ink);
  margin:26px 0 8px; letter-spacing:-.02em;
}
.legal-bloc p{ color:var(--text); margin-bottom:12px; }
.legal-bloc strong{ color:var(--ink); }

.legal-liste{ margin:0 0 18px; display:grid; gap:0; }
.legal-liste div{
  display:flex; gap:20px; justify-content:space-between; align-items:baseline;
  padding:10px 0; border-top:1px solid var(--line); flex-wrap:wrap;
}
.legal-liste dt{
  font-family:var(--ff-mono); font-size:.68rem; letter-spacing:.1em;
  text-transform:uppercase; color:var(--text-dim); flex:none;
}
.legal-liste dd{ margin:0; text-align:right; color:var(--ink); font-size:.95rem; }
.legal-manquant{
  font-family:var(--ff-mono); font-size:.72rem; color:var(--rust);
  background:rgba(184,85,42,.1); padding:3px 8px; border-radius:var(--r-sm);
}
.legal-lien{ color:var(--rust); }
.legal-maj{ font-family:var(--ff-mono); font-size:.72rem; color:var(--text-dim); }

/* acceptation des CGV */
.cgv{ display:flex; gap:10px; align-items:flex-start; font-size:.84rem; color:var(--text); }
.cgv input{ margin-top:3px; accent-color:var(--rust); flex:none; width:16px; height:16px; }
.cgv a{ color:var(--rust); text-decoration:underline; text-underline-offset:3px; }

/* ---------------------------------------------------------
   Sur-mesure : aide, éditeur enrichi, pièces jointes
   --------------------------------------------------------- */
.sur-aide{
  color:rgba(251,243,231,.88); font-size:.94rem; line-height:1.65;
  border-left:3px solid var(--honey); padding-left:14px; margin-bottom:6px;
}
.opt-libre{
  font-style:normal; font-family:var(--ff-mono); font-size:.62rem;
  letter-spacing:.1em; text-transform:uppercase; opacity:.7;
}

.editeur{
  background:rgba(42,26,16,.3); border:1px solid rgba(251,243,231,.3); border-radius:var(--r-sm);
  overflow:hidden;
}
.editeur:focus-within{ border-color:var(--cream); }
.editeur-barre{
  display:flex; align-items:center; gap:4px; padding:6px 8px;
  background:rgba(42,26,16,.35); border-bottom:1px solid rgba(251,243,231,.18);
}
.editeur-barre button{
  min-width:30px; height:28px; padding:0 8px; cursor:pointer;
  background:transparent; border:1px solid transparent; border-radius:var(--r-sm);
  color:var(--cream); font-size:.82rem; line-height:1;
  transition:background .18s, border-color .18s;
}
.editeur-barre button:hover{ background:rgba(251,243,231,.16); border-color:rgba(251,243,231,.3); }
.editeur-compteur{
  margin-left:auto; font-family:var(--ff-mono); font-size:.64rem;
  letter-spacing:.06em; color:rgba(251,243,231,.6);
}
.editeur-compteur.is-plein{ color:#ffd2b0; }
.editeur-zone{
  min-height:150px; max-height:340px; overflow-y:auto; padding:14px;
  color:var(--cream); font-size:.98rem; line-height:1.6; outline:none;
}
.editeur-zone.est-vide::before{
  content:attr(data-vide); color:rgba(251,243,231,.45); pointer-events:none;
}
.editeur-zone ul, .editeur-zone ol{ margin:6px 0; padding-left:22px; }
.editeur-zone p{ margin:0 0 8px; }

.depot{
  display:flex; align-items:center; gap:14px; width:100%; cursor:pointer;
  padding:16px; background:rgba(42,26,16,.22);
  border:2px dashed rgba(251,243,231,.32); border-radius:var(--r);
  transition:border-color .2s, background .2s;
}
.depot:hover, .depot:focus-visible, .depot.is-over{
  border-color:var(--cream); background:rgba(42,26,16,.34);
}
.depot-ico{
  display:grid; place-items:center; width:38px; height:38px; flex:none;
  background:var(--cream); color:var(--cognac); border-radius:var(--r-sm); font-size:1.1rem;
}
.depot-txt strong{ display:block; color:var(--cream); font-size:.94rem; }
.depot-txt em{
  display:block; font-style:normal; font-family:var(--ff-mono);
  font-size:.68rem; color:rgba(251,243,231,.7); margin-top:3px;
}
.depot-liste{ list-style:none; margin:10px 0 0; padding:0; display:grid; gap:6px; }
.depot-item{
  display:flex; align-items:center; gap:10px; padding:8px 12px;
  background:rgba(42,26,16,.3); border:1px solid rgba(251,243,231,.2); border-radius:var(--r-sm);
  font-size:.86rem; color:var(--cream);
}
.depot-nom{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.depot-poids{
  margin-left:auto; font-family:var(--ff-mono); font-size:.68rem; color:rgba(251,243,231,.65);
}
.depot-item button{
  width:22px; height:22px; flex:none; cursor:pointer; line-height:1;
  background:transparent; border:1px solid rgba(251,243,231,.3); border-radius:var(--r-sm);
  color:var(--cream);
}
.depot-item button:hover{ background:var(--cream); color:var(--rust); }
