/* ============================================================
   ORVÉA — Joaillerie, Bordeaux
   Feuille de style principale
   ============================================================ */

/* ---------- 1. Jetons de design ---------- */
:root{
  --ink:#14120E;
  --ink-2:#3A3630;
  --muted:#736E64;
  --muted-2:#9A948A;
  --line:#E7E3DC;
  --line-2:#F1EEE8;
  --bg:#FFFFFF;
  --bg-soft:#FAF8F4;
  --bg-warm:#F5F1EA;
  --gold:#A9853F;
  --gold-l:#C9A968;
  --gold-bg:#F7F1E4;

  --ff-display:"Cormorant Garamond", "Times New Roman", Georgia, serif;
  --ff-body:"Jost", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;

  --pad:clamp(20px, 5vw, 64px);
  --sec:clamp(72px, 9vw, 150px);
  --maxw:1560px;

  --ease:cubic-bezier(.22,.61,.36,1);
  --hdr:78px;
}

/* ---------- 2. Base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%; scroll-behavior:smooth}
body{
  margin:0; background:var(--bg); color:var(--ink);
  font-family:var(--ff-body); font-weight:300;
  font-size:15px; line-height:1.68; letter-spacing:.012em;
  -webkit-font-smoothing:antialiased; overflow-x:hidden;
}
img,svg{display:block; max-width:100%}
a{color:inherit; text-decoration:none}
button,input,select,textarea{font:inherit; color:inherit}
button{background:none; border:0; cursor:pointer}
h1,h2,h3,h4{margin:0; font-weight:300; letter-spacing:-.012em}

.wrap{max-width:var(--maxw); margin-inline:auto; padding-inline:var(--pad)}
.wrap-n{max-width:1120px; margin-inline:auto; padding-inline:var(--pad)}
.sec{padding-block:var(--sec)}

.d1{font-family:var(--ff-display); font-size:clamp(40px,6.4vw,84px); line-height:1.03; letter-spacing:-.02em}
.d2{font-family:var(--ff-display); font-size:clamp(31px,4.1vw,56px); line-height:1.1; letter-spacing:-.015em}
.d3{font-family:var(--ff-display); font-size:clamp(23px,2.4vw,33px); line-height:1.2}
.lead{font-size:clamp(15px,1.35vw,18px); color:var(--muted); line-height:1.78; font-weight:300}
.eyebrow{
  font-size:10.5px; letter-spacing:.26em; text-transform:uppercase;
  color:var(--gold); font-weight:400; margin:0 0 22px;
}
.eyebrow.mute{color:var(--muted-2)}
.rule{height:1px; background:var(--line); border:0; margin:0}

/* ---------- 3. Boutons ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:11px;
  padding:15px 34px; border-radius:999px; font-size:11.5px; font-weight:400;
  letter-spacing:.16em; text-transform:uppercase; cursor:pointer;
  transition:background .4s var(--ease), color .4s var(--ease), border-color .4s var(--ease), transform .4s var(--ease);
  border:1px solid transparent; white-space:nowrap;
}
.btn--dark{background:var(--ink); color:#fff}
.btn--dark:hover{background:#000; transform:translateY(-2px)}
.btn--line{border-color:var(--ink); color:var(--ink)}
.btn--line:hover{background:var(--ink); color:#fff}
.btn--ghost{border-color:rgba(255,255,255,.55); color:#fff}
.btn--ghost:hover{background:#fff; color:var(--ink)}
.btn--gold{background:var(--gold); color:#fff}
.btn--gold:hover{background:#8E6E31}
.btn--sm{padding:11px 24px; font-size:10.5px}
.btn[disabled]{opacity:.4; pointer-events:none}

.lnk{
  display:inline-flex; align-items:center; gap:10px; font-size:11.5px;
  letter-spacing:.16em; text-transform:uppercase; padding-bottom:5px;
  border-bottom:1px solid var(--line); transition:border-color .4s var(--ease), gap .4s var(--ease);
}
.lnk:hover{border-color:var(--ink); gap:16px}
.lnk svg{width:13px; height:13px; flex:none}

/* ---------- 4. Bandeau + en-tête ---------- */
.ticker{
  background:var(--ink); color:#EFEAE0; font-size:10.5px; letter-spacing:.19em;
  text-transform:uppercase; overflow:hidden; height:38px; display:flex; align-items:center;
}
.ticker__row{display:flex; gap:64px; white-space:nowrap; animation:slide 44s linear infinite}
.ticker span{display:inline-flex; align-items:center; gap:12px; opacity:.85}
.ticker i{width:3px; height:3px; border-radius:50%; background:var(--gold-l); display:block}
@keyframes slide{to{transform:translateX(-50%)}}

/* Le conteneur d'injection ne doit pas former de boîte : un élément collant ne peut
   pas dépasser les limites de son parent, et l'en-tête décrocherait au bout de 116 px. */
#site-header{display:contents}

.hdr{
  position:sticky; top:0; z-index:90; background:rgba(255,255,255,.94);
  backdrop-filter:saturate(180%) blur(14px); -webkit-backdrop-filter:saturate(180%) blur(14px);
  border-bottom:1px solid transparent; transition:border-color .4s var(--ease), background .4s var(--ease);
}
.hdr.is-stuck{border-bottom-color:var(--line)}
.hdr__in{
  display:grid; grid-template-columns:1fr auto 1fr; align-items:center;
  gap:24px; height:var(--hdr); max-width:var(--maxw); margin-inline:auto; padding-inline:var(--pad);
}
.brand{
  font-family:var(--ff-display); font-size:26px; letter-spacing:.30em;
  text-indent:.30em; text-transform:uppercase; justify-self:center; line-height:1; white-space:nowrap;
}
/* Un nom long ne tient pas avec un tel interlettrage : on le resserre. */
.brand.brand--long{font-size:21px; letter-spacing:.17em; text-indent:.17em}
.brand.brand--long small{letter-spacing:.34em; text-indent:.34em; font-size:7px}
@media(max-width:780px){.brand.brand--long{font-size:17px; letter-spacing:.12em; text-indent:.12em}}
.brand small{
  display:block; font-family:var(--ff-body); font-size:7.5px; letter-spacing:.42em;
  text-indent:.42em; color:var(--muted-2); margin-top:5px; font-weight:300;
}
.nav{display:flex; gap:30px; align-items:center}
.nav a{
  white-space:nowrap;
  font-size:11.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--ink-2);
  position:relative; padding-block:8px; transition:color .3s var(--ease);
}
.nav a::after{
  content:""; position:absolute; left:0; bottom:2px; height:1px; width:0;
  background:var(--ink); transition:width .45s var(--ease);
}
.nav a:hover{color:var(--ink)} .nav a:hover::after,.nav a[aria-current]::after{width:100%}
.hdr__r{justify-self:end; display:flex; gap:26px; align-items:center}
.icon-btn{display:grid; place-items:center; width:34px; height:34px; border-radius:50%; transition:background .3s}
.icon-btn:hover{background:var(--bg-warm)}
.icon-btn svg{width:17px; height:17px; stroke:var(--ink); fill:none; stroke-width:1.3}
.burger{display:none}
@media(max-width:1080px){
  .nav{display:none} .burger{display:grid} .hdr__in{grid-template-columns:auto 1fr auto}
  .brand{justify-self:start}
}
@media(max-width:780px){
  .hdr__r .btn{display:none}          /* le CTA vit dans le menu sur mobile */
  .hdr__in{grid-template-columns:auto 1fr auto; gap:12px}
  .brand{font-size:22px; letter-spacing:.24em; text-indent:.24em}
  :root{--hdr:66px}
}
@media(max-width:560px){
  .hero{min-height:auto}
  .hero .d1{font-size:clamp(34px,10vw,46px)}
  .hero__meta{gap:24px}
  .hero__meta div{flex:1 1 40%}
}

/* menu mobile */
.mnav{
  position:fixed; inset:0; z-index:120; background:#fff; padding:26px var(--pad);
  transform:translateY(-100%); transition:transform .6s var(--ease); overflow-y:auto;
}
.mnav.is-open{transform:none}
.mnav__top{display:flex; justify-content:space-between; align-items:center; margin-bottom:44px}
.mnav a{display:block; font-family:var(--ff-display); font-size:34px; padding:12px 0; border-bottom:1px solid var(--line-2)}
.mnav__sub{font-family:var(--ff-body)!important; font-size:12px!important; letter-spacing:.14em; text-transform:uppercase; color:var(--muted)}

/* ---------- 5. Héros ---------- */
.hero{position:relative; min-height:min(90vh,860px); display:grid; align-items:center; overflow:hidden}
.hero__media{position:absolute; inset:0}
.hero__media img{width:100%; height:100%; object-fit:cover; object-position:60% 40%}
.hero__media::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(100deg, rgba(255,255,255,.96) 0%, rgba(255,255,255,.86) 32%, rgba(255,255,255,.15) 62%, rgba(255,255,255,0) 100%);
}
.hero__in{position:relative; max-width:var(--maxw); margin-inline:auto; padding:clamp(56px,8vw,110px) var(--pad); width:100%}
.hero__c{max-width:610px}
.hero .d1{margin:0 0 26px}
.hero .lead{max-width:470px; margin:0 0 40px}
.hero__cta{display:flex; gap:14px; flex-wrap:wrap}
.hero__meta{
  display:flex; gap:38px; margin-top:56px; padding-top:28px; border-top:1px solid var(--line);
  flex-wrap:wrap; max-width:520px;
}
.hero__meta div{font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted)}
.hero__meta b{display:block; font-family:var(--ff-display); font-size:26px; letter-spacing:0; color:var(--ink); text-transform:none; font-weight:400}

/* ---------- 6. Grille produits ---------- */
.grid{display:grid; gap:clamp(20px,2.4vw,42px) clamp(14px,1.6vw,26px)}
.grid--4{grid-template-columns:repeat(4,1fr)}
.grid--3{grid-template-columns:repeat(3,1fr)}
.grid--2{grid-template-columns:repeat(2,1fr)}
@media(max-width:1180px){.grid--4{grid-template-columns:repeat(3,1fr)}}
@media(max-width:880px){.grid--4,.grid--3{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.grid--2{grid-template-columns:1fr}}

.card{position:relative; display:block}
.card__media{
  position:relative; aspect-ratio:1; background:var(--bg-soft); border-radius:3px;
  overflow:hidden; display:grid; place-items:center;
  transition:background .5s var(--ease);
}
.card:hover .card__media{background:var(--bg-warm)}
.card__media .jewel, .card__media img{
  width:88%; height:88%; object-fit:contain;
  transition:transform .8s var(--ease), opacity .5s var(--ease);
}
.card__media .jewel--alt{position:absolute; inset:6%; opacity:0}
.card:hover .card__media .jewel--main{opacity:0; transform:scale(1.04)}
.card:hover .card__media .jewel--alt{opacity:1; transform:scale(1.04)}
.card:hover .card__media img{transform:scale(1.045)}
.card__tag{
  position:absolute; top:12px; left:12px; z-index:2; background:#fff; color:var(--ink);
  font-size:9px; letter-spacing:.17em; text-transform:uppercase; padding:6px 11px; border-radius:2px;
}
.card__tag--gold{background:var(--gold); color:#fff}
.card__fav{
  position:absolute; top:9px; right:9px; z-index:2; width:32px; height:32px; border-radius:50%;
  display:grid; place-items:center; opacity:0; transition:opacity .4s var(--ease), background .3s;
}
.card:hover .card__fav{opacity:1}
.card__fav:hover{background:#fff}
.card__fav svg{width:16px; height:16px; stroke:var(--ink); fill:none; stroke-width:1.2}
.card__fav.is-on svg{fill:var(--gold); stroke:var(--gold)}
.card__b{padding:16px 4px 0; display:flex; flex-direction:column; gap:5px}
.card__n{font-family:var(--ff-display); font-size:19px; line-height:1.25}
.card__d{font-size:11.5px; color:var(--muted-2); letter-spacing:.05em;
  display:-webkit-box; -webkit-line-clamp:1; -webkit-box-orient:vertical; overflow:hidden}
.card__p{font-size:13px; letter-spacing:.04em; margin-top:3px; display:flex; flex-wrap:wrap; align-items:baseline; gap:0 2px}
.card__p small{color:var(--muted-2); font-size:10.5px; letter-spacing:.1em; text-transform:uppercase}
.card__was{color:var(--muted-2); text-decoration:line-through; margin-left:8px; font-size:11.5px; white-space:nowrap}
.card__metals{display:flex; gap:5px; margin-top:7px}
.card__metals i{width:11px; height:11px; border-radius:50%; display:block; border:1px solid rgba(0,0,0,.1)}

/* ---------- 7. Sections ---------- */
.sec__head{display:flex; justify-content:space-between; align-items:flex-end; gap:32px; margin-bottom:clamp(30px,4vw,58px); flex-wrap:wrap}
.sec__head p{margin:14px 0 0; max-width:470px}
.center{text-align:center}
.center .sec__head{flex-direction:column; align-items:center; text-align:center}
.center .sec__head p{margin-inline:auto}

.split{display:grid; grid-template-columns:1fr 1fr; align-items:center; gap:clamp(34px,6vw,96px)}
@media(max-width:940px){.split{grid-template-columns:1fr}}
.split__media{position:relative; aspect-ratio:4/5; overflow:hidden; border-radius:3px}
.split__media img{width:100%; height:100%; object-fit:cover}
.split__media--tall{aspect-ratio:3/4}
.split__body{max-width:520px}
.split__body .d2{margin:0 0 22px}
.split__body .lead{margin:0 0 32px}

/* liste de valeurs */
.vals{display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line)}
@media(max-width:920px){.vals{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.vals{grid-template-columns:1fr}}
.val{background:#fff; padding:clamp(26px,3vw,44px) clamp(20px,2.4vw,34px)}
.val svg{width:26px; height:26px; stroke:var(--gold); fill:none; stroke-width:1.1; margin-bottom:20px}
.val h3{font-family:var(--ff-display); font-size:21px; margin-bottom:9px}
.val p{margin:0; font-size:13px; color:var(--muted); line-height:1.72}

/* ---------- 8. Best-seller ---------- */
.hero-prod{background:var(--bg-soft)}
.hero-prod__in{display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(30px,5vw,80px); align-items:center}
.hero-prod__in--prod{align-items:start}
.pgal{position:sticky; top:calc(var(--hdr) + 22px)}
@media(max-width:940px){.pgal{position:static}}
@media(max-width:940px){.hero-prod__in{grid-template-columns:1fr}}
.hero-prod__media{position:relative; background:#fff; border-radius:3px; overflow:hidden; aspect-ratio:1}
.hero-prod__media img{width:100%; height:100%; object-fit:contain}
.hero-prod__thumbs{display:flex; gap:9px; margin-top:12px}
.hero-prod__thumbs button{
  width:66px; aspect-ratio:1; background:#fff; border:1px solid var(--line); border-radius:2px;
  overflow:hidden; transition:border-color .3s;
}
.hero-prod__thumbs button.is-on{border-color:var(--ink)}
.hero-prod__thumbs img{width:100%; height:100%; object-fit:contain}
.price{display:flex; align-items:baseline; gap:14px; flex-wrap:wrap; margin:6px 0 4px}
.price__now{font-family:var(--ff-display); font-size:clamp(30px,3.4vw,44px); line-height:1}
.price__was{color:var(--muted-2); text-decoration:line-through; font-size:16px}
.price__save{
  background:var(--gold-bg); color:var(--gold); font-size:10px; letter-spacing:.14em;
  text-transform:uppercase; padding:5px 11px; border-radius:2px;
}

/* ---------- 9. Configurateur ---------- */
.cfg{display:flex; flex-direction:column; gap:26px}
.cfg__grp{border-top:1px solid var(--line); padding-top:20px}
.cfg__lbl{
  display:flex; justify-content:space-between; align-items:baseline; gap:12px; margin-bottom:14px;
  font-size:10.5px; letter-spacing:.19em; text-transform:uppercase; color:var(--muted);
}
.cfg__lbl b{color:var(--ink); font-weight:400; letter-spacing:.06em; text-transform:none; font-size:13px}
.opts{display:flex; gap:8px; flex-wrap:wrap}
.opt{
  border:1px solid var(--line); border-radius:2px; padding:9px 15px; font-size:12px;
  letter-spacing:.04em; transition:border-color .3s var(--ease), background .3s var(--ease), color .3s;
  display:inline-flex; align-items:center; gap:8px; background:#fff;
}
.opt:hover{border-color:var(--muted-2)}
.opt.is-on{border-color:var(--ink); background:var(--ink); color:#fff}
.opt small{opacity:.6; font-size:10.5px}
.opt.is-on small{opacity:.7}
.opt--metal{padding:7px 13px 7px 8px}
.opt--metal i{width:19px; height:19px; border-radius:50%; display:block; border:1px solid rgba(0,0,0,.12)}
.opt--sw{width:40px; height:40px; padding:0; border-radius:50%; display:grid; place-items:center}
.opt--sw i{width:26px; height:26px; border-radius:50%; display:block}
.opt--sw.is-on{background:#fff; border-color:var(--ink); box-shadow:inset 0 0 0 2px #fff}
.opt--shape{width:46px; height:46px; padding:0; display:grid; place-items:center}
.opt--shape svg{width:24px; height:24px}
.opt--shape.is-on{background:#fff; border-color:var(--ink)}
.sel{
  width:100%; border:1px solid var(--line); border-radius:2px; padding:12px 14px; background:#fff;
  font-size:13px; appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%2314120E' fill='none' stroke-width='1.2'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 14px center; background-size:11px;
}
.cfg__sum{background:#fff; border:1px solid var(--line); padding:20px 22px; border-radius:3px}
.cfg__sum dl{margin:0; display:grid; grid-template-columns:auto 1fr; gap:9px 18px; font-size:12.5px}
.cfg__sum dt{color:var(--muted)} .cfg__sum dd{margin:0; text-align:right}
.cfg__note{font-size:11.5px; color:var(--muted-2); line-height:1.6}
.cfg__actions{display:flex; gap:11px; flex-wrap:wrap}
.cfg__actions .btn{flex:1; min-width:190px}

/* ---------- 10. Bandeau défilant produits ---------- */
.rail{display:flex; gap:clamp(14px,1.6vw,26px); overflow-x:auto; scroll-snap-type:x mandatory;
  padding-bottom:14px; scrollbar-width:thin}
.rail::-webkit-scrollbar{height:2px}
.rail::-webkit-scrollbar-thumb{background:var(--line)}
.rail > *{flex:0 0 clamp(210px,23vw,320px); scroll-snap-align:start}

/* ---------- 11. Filtres catalogue ---------- */
.cat__bar{
  position:sticky; top:var(--hdr); z-index:40; background:rgba(255,255,255,.95);
  backdrop-filter:blur(12px); border-block:1px solid var(--line); padding-block:13px;
}
.cat__bar-in{display:flex; align-items:center; justify-content:space-between; gap:18px; flex-wrap:wrap}
.chips{display:flex; gap:7px; flex-wrap:wrap}
.chip{
  border:1px solid var(--line); border-radius:999px; padding:7px 15px; font-size:11px;
  letter-spacing:.09em; text-transform:uppercase; transition:.3s var(--ease); white-space:nowrap;
}
.chip:hover{border-color:var(--muted-2)}
.chip.is-on{background:var(--ink); color:#fff; border-color:var(--ink)}
.cat__count{font-size:11.5px; color:var(--muted); letter-spacing:.09em}
.filters{display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:12px; padding-block:18px}
.filters-toggle{display:none}
@media(max-width:900px){
  .cat__bar{position:static}
  .cat__bar-in{gap:12px}
  .chips{flex-wrap:nowrap; overflow-x:auto; padding-bottom:4px; -webkit-overflow-scrolling:touch}
  .chips::-webkit-scrollbar{display:none}
  .filters{display:none}
  .filters.is-open{display:grid}
  .filters-toggle{display:inline-flex}
}

/* ---------- 12. Storytelling ---------- */
.story{background:var(--bg-warm)}
.quote{max-width:830px; margin-inline:auto; text-align:center}
.quote p{font-family:var(--ff-display); font-size:clamp(23px,3vw,40px); line-height:1.32; margin:0 0 28px}
.quote cite{font-style:normal; font-size:11px; letter-spacing:.2em; text-transform:uppercase; color:var(--muted)}

.tl{display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line); margin-top:14px}
@media(max-width:900px){.tl{grid-template-columns:repeat(2,1fr)}}
@media(max-width:540px){.tl{grid-template-columns:1fr}}
.tl__i{background:var(--bg-warm); padding:34px 26px}
.tl__y{font-family:var(--ff-display); font-size:34px; color:var(--gold); margin-bottom:10px}
.tl__i h4{font-size:12px; letter-spacing:.15em; text-transform:uppercase; margin-bottom:9px}
.tl__i p{margin:0; font-size:13px; color:var(--muted); line-height:1.7}

.mosaic{display:grid; grid-template-columns:repeat(12,1fr); gap:clamp(10px,1.4vw,20px)}
.mosaic img{width:100%; height:100%; object-fit:cover; border-radius:3px}
.m-a{grid-column:span 7; aspect-ratio:4/3}
.m-b{grid-column:span 5; aspect-ratio:1}
.m-c{grid-column:span 4; aspect-ratio:3/4}
.m-d{grid-column:span 4; aspect-ratio:3/4}
.m-e{grid-column:span 4; aspect-ratio:3/4}
@media(max-width:760px){
  .m-a,.m-b{grid-column:span 12} .m-c,.m-d,.m-e{grid-column:span 4}
}

/* ---------- 13. Formulaire RDV ---------- */
.form{display:grid; gap:18px}
.form__row{display:grid; grid-template-columns:1fr 1fr; gap:14px}
@media(max-width:620px){.form__row{grid-template-columns:1fr}}
.field label{display:block; font-size:10.5px; letter-spacing:.18em; text-transform:uppercase; color:var(--muted); margin-bottom:8px}
.field input,.field textarea,.field select{
  width:100%; border:0; border-bottom:1px solid var(--line); background:transparent;
  padding:11px 0; font-size:14px; transition:border-color .3s;
}
.field input:focus,.field textarea:focus,.field select:focus{outline:0; border-bottom-color:var(--ink)}
.field textarea{resize:vertical; min-height:96px}
.field select{appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%2314120E' fill='none' stroke-width='1.2'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 2px center; background-size:11px}
.slots{display:grid; grid-template-columns:repeat(auto-fill,minmax(96px,1fr)); gap:8px}
.slot{border:1px solid var(--line); border-radius:2px; padding:11px 4px; font-size:12.5px; text-align:center; transition:.3s var(--ease)}
.slot:hover:not([disabled]){border-color:var(--ink)}
.slot.is-on{background:var(--ink); color:#fff; border-color:var(--ink)}
.slot[disabled]{opacity:.32; text-decoration:line-through; cursor:not-allowed}
.days{display:flex; gap:8px; overflow-x:auto; padding-bottom:6px}
.day{
  flex:0 0 78px; border:1px solid var(--line); border-radius:2px; padding:12px 6px; text-align:center;
  transition:.3s var(--ease);
}
.day:hover{border-color:var(--muted-2)}
.day.is-on{background:var(--ink); color:#fff; border-color:var(--ink)}
.day b{display:block; font-family:var(--ff-display); font-size:22px; font-weight:400; line-height:1.1}
.day span{font-size:9.5px; letter-spacing:.13em; text-transform:uppercase; opacity:.7}
.day[disabled]{opacity:.3; pointer-events:none}

.notice{
  display:flex; gap:14px; align-items:flex-start; background:var(--gold-bg); border-radius:3px;
  padding:16px 18px; font-size:12.5px; line-height:1.6; color:#5E4A20;
}
.notice svg{width:17px; height:17px; flex:none; stroke:var(--gold); fill:none; stroke-width:1.3; margin-top:2px}

/* ---------- 14. Modale ---------- */
.modal{position:fixed; inset:0; z-index:200; display:none; place-items:center; padding:20px}
.modal.is-open{display:grid}
.modal__bd{position:absolute; inset:0; background:rgba(20,18,14,.5); backdrop-filter:blur(4px); animation:fade .4s var(--ease)}
.modal__c{
  position:relative; background:#fff; border-radius:4px; max-width:560px; width:100%;
  max-height:90vh; overflow-y:auto; padding:clamp(28px,4vw,52px); animation:pop .5s var(--ease);
}
@keyframes fade{from{opacity:0}} @keyframes pop{from{opacity:0; transform:translateY(18px)}}
.modal__x{position:absolute; top:16px; right:16px; width:34px; height:34px; display:grid; place-items:center; border-radius:50%}
.modal__x:hover{background:var(--bg-warm)}
.modal__x svg{width:15px; height:15px; stroke:var(--ink); stroke-width:1.4}
.ok-mark{width:56px; height:56px; border-radius:50%; background:var(--gold-bg); display:grid; place-items:center; margin-bottom:22px}
.ok-mark svg{width:24px; height:24px; stroke:var(--gold); fill:none; stroke-width:1.6}

/* ---------- 15. Pied de page ---------- */
.ftr{background:var(--ink); color:#D9D3C7; padding-block:clamp(52px,6vw,86px) 30px; margin-top:auto}
.ftr a{color:#D9D3C7; transition:color .3s} .ftr a:hover{color:#fff}
.ftr__top{display:grid; grid-template-columns:1.5fr 1fr 1fr 1.3fr; gap:clamp(26px,3vw,52px); padding-bottom:48px}
@media(max-width:960px){.ftr__top{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.ftr__top{grid-template-columns:1fr}}
.ftr h4{font-size:10.5px; letter-spacing:.2em; text-transform:uppercase; color:#fff; margin-bottom:20px}
.ftr ul{list-style:none; margin:0; padding:0; display:grid; gap:11px; font-size:13px}
.ftr .brand{justify-self:start; color:#fff; margin-bottom:18px}
.ftr .brand small{color:#8B857A}
.ftr__p{font-size:13px; line-height:1.75; color:#9E9789; max-width:290px; margin:0 0 22px}
.ftr__nl{display:flex; gap:0; border-bottom:1px solid #38342C; padding-bottom:9px}
.ftr__nl input{flex:1; background:transparent; border:0; color:#fff; font-size:13px; padding:6px 0}
.ftr__nl input:focus{outline:0}
.ftr__nl button{font-size:10.5px; letter-spacing:.16em; text-transform:uppercase; color:#fff}
.ftr__bot{
  border-top:1px solid #2B2820; padding-top:26px; display:flex; justify-content:space-between;
  gap:20px; flex-wrap:wrap; font-size:11px; letter-spacing:.06em; color:#7E786C;
}
.ftr__bot nav{display:flex; gap:22px; flex-wrap:wrap}
.socials{display:flex; gap:12px; margin-top:22px}
.socials a{width:34px; height:34px; border:1px solid #35312A; border-radius:50%; display:grid; place-items:center}
.socials a:hover{background:#fff; border-color:#fff}
.socials svg{width:15px; height:15px; stroke:currentColor; fill:none; stroke-width:1.3}
.socials a:hover svg{stroke:var(--ink)}

/* ---------- 16. Utilitaires + animations ---------- */
.rv{opacity:0; transform:translateY(26px); transition:opacity .9s var(--ease), transform .9s var(--ease)}
.rv.is-in{opacity:1; transform:none}
.rv-d1{transition-delay:.09s} .rv-d2{transition-delay:.18s} .rv-d3{transition-delay:.27s}
@media(prefers-reduced-motion:reduce){
  .rv{opacity:1; transform:none} .ticker__row{animation:none}
  html{scroll-behavior:auto}
}
.bg-soft{background:var(--bg-soft)} .bg-warm{background:var(--bg-warm)}
.mt0{margin-top:0} .mb0{margin-bottom:0}
.sr{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap}
.crumb{font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--muted-2); padding-block:22px}
.crumb a:hover{color:var(--ink)}
.empty{text-align:center; padding:80px 20px; color:var(--muted)}
.page-min{min-height:60vh}
body{display:flex; flex-direction:column; min-height:100vh}
main{flex:1}

/* ---------- 17. Configurateur en lignes dépliables ---------- */
.cfx{display:flex; flex-direction:column}
.cfx__tabs{display:grid; grid-template-columns:1fr 1fr; margin-bottom:26px}
.cfx__tab{
  padding:14px 8px 15px; font-size:12px; letter-spacing:.11em; text-transform:uppercase;
  color:var(--muted); border-bottom:1px solid var(--line); text-align:center;
  transition:color .3s var(--ease), border-color .3s var(--ease);
}
.cfx__tab:hover{color:var(--ink)}
.cfx__tab.is-on{color:var(--ink); border-bottom:2px solid var(--ink)}

.cfx__cta{
  display:flex; align-items:center; gap:14px; width:100%; text-align:left;
  border:1px solid var(--line); border-radius:6px; padding:16px 18px; margin-bottom:22px;
  font-size:14px; transition:border-color .3s var(--ease), background .3s var(--ease);
}
.cfx__cta:hover{border-color:var(--ink-2); background:var(--bg-soft)}
.cfx__cta svg{width:19px; height:19px; stroke:var(--ink); fill:none; stroke-width:1.2; flex:none}
.cfx__cta .chev{margin-left:auto; width:15px; height:15px; stroke:var(--muted)}
.cfx__cta em{font-style:normal; color:var(--muted); margin-left:auto; margin-right:12px; font-size:13px}

.cfx__row{border-bottom:1px solid var(--line-2)}
.cfx__hd{
  display:flex; align-items:center; gap:10px; width:100%; text-align:left;
  padding:19px 2px; font-size:14.5px; transition:color .25s;
}
.cfx__hd:hover{color:var(--gold)}
.cfx__lbl{white-space:nowrap}
.cfx__i{
  width:17px; height:17px; border-radius:50%; border:1px solid var(--muted-2); color:var(--muted);
  font-size:9.5px; line-height:1; display:grid; place-items:center; flex:none; font-style:italic;
  transition:.25s var(--ease);
}
.cfx__i:hover{border-color:var(--ink); color:var(--ink)}
.cfx__val{
  margin-left:auto; display:flex; align-items:center; gap:9px; color:var(--ink);
  font-size:14px; text-align:right;
}
.cfx__val i{width:17px; height:17px; border-radius:50%; display:block; border:1px solid rgba(0,0,0,.14); flex:none}
.cfx__val svg.shape{width:19px; height:19px; stroke:var(--ink); fill:none; flex:none}
.cfx__chev{width:14px; height:14px; stroke:var(--ink); fill:none; stroke-width:1.4; flex:none;
  transition:transform .4s var(--ease)}
.cfx__row.is-open .cfx__chev{transform:rotate(180deg)}
.cfx__body{display:none; padding:2px 2px 22px}
.cfx__row.is-open .cfx__body{display:block; animation:cfxIn .35s var(--ease)}
@keyframes cfxIn{from{opacity:0; transform:translateY(-6px)}}
.cfx__note{font-size:12.5px; color:var(--muted); line-height:1.65; margin:12px 0 0}
.cfx__help{
  display:none; font-size:12.5px; color:var(--muted); line-height:1.65;
  background:var(--bg-soft); border-radius:4px; padding:13px 15px; margin:0 0 14px;
}
.cfx__row.help-on .cfx__help{display:block}

.cfx__adv{
  display:flex; align-items:center; gap:14px; padding:20px 2px; font-size:14.5px;
  border-bottom:1px solid var(--line-2); width:100%; text-align:left;
}
.cfx__adv span.plus{
  width:30px; height:30px; border-radius:50%; border:1px solid var(--line); display:grid;
  place-items:center; font-size:16px; color:var(--ink); transition:.3s var(--ease);
}
.cfx__adv:hover span.plus{border-color:var(--ink); background:var(--ink); color:#fff}
.cfx__adv.is-on span.plus{transform:rotate(45deg)}
.cfx__extra{display:none}
.cfx__extra.is-open{display:block}
.cfx__code{
  display:flex; justify-content:space-between; gap:14px; padding:20px 2px;
  font-size:14px; color:var(--ink); border-bottom:1px solid var(--line-2);
}
.cfx__code span{color:var(--muted)}
.cfx__code b{font-weight:400; letter-spacing:.05em}

/* ---------- 18. Bandeau presse ---------- */
.presse__head{display:flex; align-items:center; gap:26px; margin-bottom:clamp(26px,3.5vw,46px)}
.presse__head h2{white-space:nowrap; font-family:var(--ff-display); font-size:clamp(22px,2.6vw,34px)}
.presse__head h2 em{font-style:italic; color:var(--muted)}
.presse__head hr{flex:1; height:1px; background:var(--line); border:0}
.presse{display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(14px,2vw,32px)}
@media(max-width:760px){.presse{grid-template-columns:1fr}}
.presse__item{
  border:1px solid var(--line); border-radius:5px; min-height:128px;
  display:grid; place-items:center; padding:26px; text-align:center;
}
.presse__vide{
  border:1px dashed var(--line); border-radius:4px; width:100%; padding:26px 14px;
  font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--muted-2);
}
.presse__item img{max-height:52px; width:auto; object-fit:contain}

/* ---------- 19. Boutiques ---------- */
.btq{position:relative}
.btq__media{width:100%; aspect-ratio:16/10; overflow:hidden; border-radius:4px}
.btq__media img{width:100%; height:100%; object-fit:cover}
@media(max-width:860px){.btq__media{aspect-ratio:4/3}}
.btq__in{display:grid; grid-template-columns:1fr 1fr; gap:clamp(30px,5vw,80px); align-items:center; margin-top:clamp(34px,5vw,70px)}
@media(max-width:860px){.btq__in{grid-template-columns:1fr}}
.btq__villes{list-style:none; margin:26px 0 34px; padding:0; display:grid; gap:2px}
.btq__villes button{
  display:flex; align-items:baseline; gap:14px; width:100%; text-align:left;
  font-family:var(--ff-display); font-size:clamp(24px,2.6vw,32px); padding:11px 0;
  color:var(--muted-2); transition:color .3s var(--ease);
  border-bottom:1px solid transparent;
}
.btq__villes button:hover{color:var(--ink)}
.btq__villes button.is-on{color:var(--ink); border-bottom-color:var(--ink)}
.btq__villes small{
  font-family:var(--ff-body); font-size:10px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--muted-2);
}
.btq__villes button.is-on small{color:var(--gold)}
.btq__fiche{
  background:var(--bg-soft); border-radius:4px; padding:clamp(22px,3vw,34px);
  animation:cfxIn .4s var(--ease);
}
.btq__fiche dl{margin:0; display:grid; grid-template-columns:auto 1fr; gap:12px 24px; font-size:13.5px}
.btq__fiche dt{color:var(--muted)} .btq__fiche dd{margin:0}
.btq__fiche .btn{margin-top:26px}

/* ============================================================
   20. Mobile — confort tactile et particularités iOS
   ============================================================ */

/* Encoche et barre gestuelle : on respecte les zones sûres. */
@supports(padding:max(0px)){
  .wrap, .wrap-n, .hdr__in, .mnav, .cat__bar-in{
    padding-left:max(var(--pad), env(safe-area-inset-left));
    padding-right:max(var(--pad), env(safe-area-inset-right));
  }
  .ftr__bot{padding-bottom:max(0px, env(safe-area-inset-bottom))}
  .mnav{padding-bottom:max(26px, env(safe-area-inset-bottom))}
}

/* Hauteur d'écran fiable : 100vh déborde sous la barre d'adresse mobile. */
@supports(height:100svh){
  .hero{min-height:min(88svh, 860px)}
  .modal{max-height:100svh}
}

@media(hover:none) and (pointer:coarse){
  /* Cibles tactiles : 44 px est le minimum confortable au pouce. */
  .icon-btn{width:44px; height:44px}
  .chip{padding:11px 17px; min-height:42px; display:inline-flex; align-items:center}
  .opt{padding:12px 16px; min-height:44px}
  .opt--metal{padding:9px 15px 9px 10px}
  .opt--sw{width:46px; height:46px}
  .opt--shape{width:50px; height:50px}
  .slot{padding:14px 4px; min-height:46px}
  .day{padding:14px 6px}
  .lnk{padding-block:11px 9px; min-height:42px}
  .card__fav{width:42px; height:42px; opacity:1}
  .hero-prod__thumbs button{width:60px}
  .ftr ul{gap:4px}
  .ftr ul a{display:inline-block; padding-block:9px}
  .ftr__bot nav a{padding-block:8px}
  .crumb a{display:inline-block; padding-block:6px}
  .cfx__i{width:22px; height:22px; font-size:11px}
  .cfx__hd{padding:21px 2px}
  .btq__villes button{padding:15px 0}
  .socials a{width:44px; height:44px}
  .ftr__nl{padding-bottom:11px}
  .ftr__nl input{padding-block:11px}
  .ftr__nl button{padding:12px 0 12px 14px; min-height:44px}
  .mnav a{padding:15px 0}
  /* Le survol n'existe pas au doigt : on montre les deux vues d'emblée. */
  .card:hover .card__media .jewel--main{opacity:1; transform:none}
  .card:hover .card__media .jewel--alt{opacity:0}
  .card:hover .card__media img{transform:none}
}

/* iOS zoome sur tout champ sous 16 px : on verrouille à 16. */
@media(max-width:900px){
  .field input, .field textarea, .field select, .sel{font-size:16px}
  .ftr__nl input{font-size:16px}
}

@media(max-width:640px){
  /* Fiche produit : image d'abord, plein cadre. */
  .hero-prod__in{gap:26px}
  .hero-prod__media{border-radius:3px}
  .price__now{font-size:34px}
  .cfg__actions .btn{min-width:0; width:100%}
  .cfx__tabs{grid-template-columns:1fr 1fr}
  .cfx__tab{font-size:10.5px; letter-spacing:.07em; padding:13px 4px}
  .cfx__val{font-size:13px}
  .cfx__cta{padding:15px 15px; font-size:13.5px; gap:11px}
  .cfx__cta em{font-size:12px; margin-right:8px}
  /* Récapitulatif et fiches : deux colonnes serrées passent mal. */
  .cfg__sum dl, .btq__fiche dl{grid-template-columns:1fr; gap:3px 0}
  .cfg__sum dt, .btq__fiche dt{margin-top:11px}
  .cfg__sum dd{text-align:left}
  /* Modale : plein écran, plus confortable qu'une carte flottante. */
  .modal{padding:0; place-items:stretch}
  .modal__c{max-width:none; max-height:100%; border-radius:0; padding:64px 22px 30px}
  .modal__x{top:14px; right:14px; width:42px; height:42px}
  /* Mosaïque et grilles */
  .mosaic{gap:8px}
  .m-c,.m-d,.m-e{grid-column:span 6}
  .m-e{display:none}
  .vals{grid-template-columns:1fr}
  .quote p{font-size:22px}
  .presse__item{min-height:110px}
  .tl__i{padding:26px 20px}
  /* Tableaux longs : on les fait défiler dans leur propre cadre. */
  .wrap table{display:block; overflow-x:auto; -webkit-overflow-scrolling:touch}
}

@media(max-width:420px){
  .grid--4, .grid--3{grid-template-columns:repeat(2,1fr); gap:16px 10px}
  .card__n{font-size:16px}
  .card__d{font-size:11px}
  .card__p{font-size:12.5px}
  .hero__cta .btn{width:100%}
  .btn{padding:15px 24px}
}
