/* ============================================================
   MAISON LEPOUTÈRE — site vitrine
   Charte « Galerie Blanche » (validée 2026-07-04)
   ============================================================ */
:root{
  --ecru:#EFE9DE; --surf:#FFFFFF; --charbon:#2F2B26; --cognac:#8F4E26;
  --cuir:#5C3A24; --lin:#CBBBA0; --hair:#D8CDB8; --hair-soft:#E4DBCB;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{transition:none!important;animation:none!important}
}
body{background:var(--surf);color:var(--charbon);font-family:'Jost',sans-serif;font-weight:300;line-height:1.62;-webkit-font-smoothing:antialiased;overflow-x:clip}
a{color:inherit;text-decoration:none}
a:focus-visible,button:focus-visible{outline:2px solid var(--cognac);outline-offset:3px}
img{max-width:100%;display:block}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}

.wrap{max-width:1240px;margin:0 auto;padding:0 48px}

/* ---------- chrome typographique ---------- */
.eyebrow{font-weight:400;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--cognac)}
.caps{font-weight:400;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--cognac)}
.frau{font-family:'Fraunces',serif;font-style:italic;font-weight:400}
.sign{font-family:'Fraunces',serif;font-style:italic;font-weight:400;color:var(--cognac)}

/* ---------- header / nav ---------- */
.hdr{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--hair)}
.hdr-in{display:flex;align-items:center;justify-content:space-between;gap:14px 18px;padding-top:14px;padding-bottom:14px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:14px}
.brand img{height:34px;width:auto}
.brand .bname{font-weight:300;font-size:15px;letter-spacing:.22em;text-transform:uppercase;white-space:nowrap}
.brand .bsub{font-family:'Fraunces',serif;font-style:italic;font-size:11.5px;color:var(--cognac);display:block;letter-spacing:.02em;text-transform:none;margin-top:1px}
.nav{display:flex;gap:30px;align-items:center;min-width:0}
.nav a .srt{display:none}
.nav a{font-weight:400;font-size:11.5px;letter-spacing:.18em;text-transform:uppercase;padding:6px 0;border-bottom:1px solid transparent;transition:border-color .25s,color .25s}
.nav a:hover{border-bottom-color:var(--cognac);color:var(--cognac)}
.nav a[aria-current="page"]{border-bottom-color:var(--cognac);color:var(--cognac)}
.nav .cta{border:1px solid var(--charbon);padding:9px 18px;transition:background .25s,color .25s,border-color .25s}
.nav .cta:hover{background:var(--charbon);color:var(--ecru);border-bottom-color:var(--charbon)}

@media (max-width:1020px){
  .works{grid-template-columns:repeat(3,1fr)}
  .nav{gap:20px}
  .nav a{font-size:10.5px;letter-spacing:.14em}
  .nav .cta{padding:8px 14px}
  .brand img{height:28px}
  .brand .bname{font-size:13px;letter-spacing:.18em}
}

/* ---------- sections ---------- */
.sec{padding:72px 0;border-top:1px solid var(--hair)}
.sec.first{border-top:none}
.sec-head{display:flex;gap:20px;align-items:baseline;flex-wrap:wrap;margin-bottom:10px}
.sec h2,.h2{font-weight:300;font-size:clamp(28px,3.4vw,42px);letter-spacing:.01em;line-height:1.15}
.lead{font-size:16px;max-width:62ch;opacity:.82;margin-top:14px}

/* ---------- footer ---------- */
.ftr{border-top:1px solid var(--hair);background:var(--ecru);margin-top:30px}
.ftr-in{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:40px;padding:46px 0 38px}
.ftr .fsign{font-family:'Fraunces',serif;font-style:italic;font-size:20px;color:var(--cognac)}
.ftr .k{font-weight:400;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--cognac);margin-bottom:8px}
.ftr .v{font-size:13.5px;line-height:2}
.ftr .v a:hover{color:var(--cognac)}
.ftr-base{border-top:1px solid var(--hair);padding:16px 0;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:11px;letter-spacing:.08em;opacity:.65}

/* ---------- reveal ---------- */
.rv{opacity:0;transform:translateY(16px);transition:opacity .7s ease,transform .7s ease}
.rv.on{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.rv{opacity:1;transform:none}}

/* ---------- grille d'œuvres ---------- */
.works{display:grid;grid-template-columns:repeat(4,1fr);gap:38px 26px;margin-top:32px}
.work{cursor:zoom-in}
.work .frame{position:relative;overflow:hidden;background:var(--ecru);border:1px solid var(--hair-soft)}
.work .frame img{width:100%;height:100%;object-fit:cover;aspect-ratio:3/4;transition:transform .8s cubic-bezier(.2,.6,.2,1)}
.work:hover .frame img{transform:scale(1.025)}
.work .frame .tag{position:absolute;top:14px;left:14px;background:var(--surf);border:1px solid var(--hair);padding:5px 10px;font-size:9.5px;font-weight:400;letter-spacing:.16em;text-transform:uppercase;color:var(--cognac)}
.work .frame .tag.so{color:var(--charbon);opacity:.72}
.work .frame .loupe{position:absolute;right:14px;bottom:14px;width:34px;height:34px;border:1px solid var(--hair);background:rgba(255,255,255,.9);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s}
.work:hover .frame .loupe{opacity:1}
.cartel{padding:14px 2px 0}
.cartel .t{font-family:'Fraunces',serif;font-style:italic;font-size:18px;line-height:1.3}
.cartel .m{font-weight:400;font-size:11px;letter-spacing:.07em;opacity:.62;margin-top:4px}
.cartel .p{font-weight:400;font-size:13px;margin-top:6px;color:var(--cognac);letter-spacing:.04em}

/* filtres galerie */
.filters{display:flex;gap:10px;flex-wrap:wrap;margin-top:26px}
.filters button{border:1px solid var(--hair);padding:9px 18px;font-size:11px;font-weight:400;letter-spacing:.14em;text-transform:uppercase;transition:all .25s}
.filters button:hover{border-color:var(--cognac);color:var(--cognac)}
.filters button.on{background:var(--charbon);color:var(--ecru);border-color:var(--charbon)}

/* ---------- LIGHTBOX / salle de zoom ---------- */
.lb{position:fixed;inset:0;z-index:100;background:rgba(250,248,244,.98);display:none}
.lb.open{display:flex}
.lb-stage{flex:1;position:relative;overflow:hidden;cursor:grab;touch-action:none}
.lb-stage.grabbing{cursor:grabbing}
.lb-stage img{position:absolute;top:50%;left:50%;transform-origin:center;will-change:transform;user-select:none;-webkit-user-drag:none;max-width:none;box-shadow:0 24px 80px rgba(47,43,38,.18)}
.lb-panel{width:340px;flex-shrink:0;border-left:1px solid var(--hair);background:var(--surf);padding:80px 32px 32px;overflow-y:auto}
.lb-panel .serie{font-weight:400;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--cognac)}
.lb-panel h3{font-family:'Fraunces',serif;font-style:italic;font-weight:400;font-size:28px;line-height:1.2;margin-top:10px}
.lb-panel .specs{margin-top:22px;border-top:1px solid var(--hair);}
.lb-panel .specs div{display:flex;justify-content:space-between;gap:14px;padding:9px 0;border-bottom:1px solid var(--hair-soft);font-size:12.5px}
.lb-panel .specs .k{font-weight:400;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--cognac);padding-top:2px}
.lb-panel .desc{font-size:13.5px;line-height:1.75;opacity:.85;margin-top:20px}
.lb-panel .price{font-weight:400;font-size:19px;color:var(--cognac);margin-top:22px;letter-spacing:.03em}
.lb-panel .status{font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:400;margin-top:6px;opacity:.7}
.lb-bar{position:absolute;top:0;left:0;right:340px;display:flex;justify-content:space-between;align-items:center;padding:18px 24px;z-index:5}
.lb-bar .lbl{font-weight:400;font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--cognac)}
.lb-ctl{display:flex;gap:8px}
.lb-ctl button{width:40px;height:40px;border:1px solid var(--hair);background:var(--surf);font-size:16px;font-weight:300;transition:all .25s;display:flex;align-items:center;justify-content:center}
.lb-ctl button:hover{border-color:var(--cognac);color:var(--cognac)}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:5}
.lb-nav.prev{left:18px}.lb-nav.next{right:358px}
.lb-nav button{width:44px;height:44px;border:1px solid var(--hair);background:var(--surf);font-size:17px;transition:all .25s}
.lb-nav button:hover{border-color:var(--cognac);color:var(--cognac)}
.lb-hint{position:absolute;bottom:16px;left:24px;font-size:10.5px;letter-spacing:.1em;opacity:.5;z-index:5}

/* lightbox fiche produit : galerie pure, sans panneau */
.lb.nopanel .lb-panel{display:none}
.lb.nopanel .lb-bar{right:0}
.lb.nopanel .lb-nav.next{right:18px}
.lb.single .lb-nav{display:none}
.lb.single .lb-count{visibility:hidden}

/* ---------- responsive ---------- */
@media (max-width:1020px){
  .lb-panel{width:300px}
  .lb-bar{right:300px}
  .lb-nav.next{right:316px}
  /* densité tablette : le header passe sur 2 lignes ici, on resserre le rythme vertical */
  .sec{padding:56px 0}
  main .gal-hero,main .mq-hero,main .ap-hero,main .co-hero{padding-top:36px}
  .works{margin-top:26px}
  .filters{margin-top:24px}
  .ftr{margin-top:24px}
  .ftr-in{padding:44px 0 36px}
}
@media (max-width:760px){
  .wrap{padding:0 20px}
  .sec{padding:44px 0}
  .hdr-in{padding-top:10px;padding-bottom:12px}
  .brand img{height:26px}
  .brand .bname{font-size:12px;letter-spacing:.16em}
  .nav{gap:6px 18px;width:100%;overflow:visible;flex-wrap:wrap}
  .nav .cta{display:none}
  .nav a{font-size:10.5px;white-space:nowrap}
  .nav a .lng{display:none}
  .nav a .srt{display:inline}
  main .gal-hero,main .mq-hero,main .ap-hero,main .co-hero{padding-top:24px}
  .works{margin-top:22px}
  .filters{margin-top:20px}
  .ftr{margin-top:18px}
  .works{grid-template-columns:repeat(2,1fr);gap:26px 14px}
  .cartel .t{font-size:14px}
  .cartel .m{font-size:9.5px}
  .cartel .p{font-size:11.5px}
  .work .frame .tag{top:8px;left:8px;padding:4px 7px;font-size:8px}
  .work .frame .loupe{display:none}
  .ftr-in{grid-template-columns:1fr;gap:26px;padding:40px 0 30px}
  .lb{flex-direction:column}
  .lb-panel{width:100%;border-left:none;border-top:1px solid var(--hair);padding:22px 20px;max-height:44vh}
  .lb-bar{right:0}
  .lb-nav.next{right:18px}
  .lb-nav{top:32vw}
}
