/* =====================================================================
   La Brasserie du Boucher — premium French meat brasserie
   ===================================================================== */
:root{
  --char:   #18120D;   /* warm espresso-black */
  --char-2: #221912;
  --cream:  #F4ECDB;
  --cream-2:#ECE1C9;
  --ink:    #211910;
  --paper:  #F4ECDB;
  --red:    #A52234;
  --red-2:  #C03247;
  --gold:   #C49A4B;
  --gold-2: #DBB868;
  --mut-d:  #B7A88E;   /* muted on dark */
  --mut-l:  #7C6E55;   /* muted on cream */
  --line-d: rgba(244,236,219,.16);
  --line-l: rgba(33,25,16,.14);
  --maxw: 1280px;
  --pad: clamp(18px, 4.5vw, 72px);
  --disp: "Playfair Display", Georgia, serif;
  --sans: "Inter", system-ui, sans-serif;
  --ease: cubic-bezier(.22,1,.36,1);
}
*{ margin:0; padding:0; box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body{ font-family:var(--sans); background:var(--char); color:var(--cream); line-height:1.6; overflow-x:hidden; -webkit-font-smoothing:antialiased; }
body.is-loading{ overflow:hidden; height:100vh; }
a{ color:inherit; text-decoration:none; }
ul{ list-style:none; }
button{ font:inherit; color:inherit; background:none; border:none; cursor:pointer; }
img{ display:block; max-width:100%; }
em{ font-style:italic; }
::selection{ background:var(--gold); color:var(--char); }

.grain{ position:fixed; inset:-50%; z-index:9000; pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.72' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");
  opacity:.04; mix-blend-mode:overlay; }

/* loader */
.loader{ position:fixed; inset:0; z-index:9800; background:var(--char); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:18px; }
.loader__logo{ width:84px; height:84px; border-radius:50%; }
.loader__t{ font-family:var(--disp); font-size:clamp(1.4rem,4vw,2rem); letter-spacing:.02em; }

/* top bar */
.topbar{ background:var(--char-2); border-bottom:1px solid var(--line-d); display:flex; align-items:center; gap:20px; justify-content:center; padding:8px var(--pad); font-size:12.5px; color:var(--mut-d); position:relative; z-index:60; }
.topbar__c{ color:var(--cream); } .topbar__lang{ margin-left:auto; } .topbar__lang b{ color:var(--gold); } .topbar__lang a:hover{ color:var(--cream); }
@media (max-width:760px){ .topbar__c{ display:none; } }

/* nav */
.nav{ position:sticky; top:0; z-index:600; display:flex; align-items:center; gap:24px; padding:14px var(--pad); background:rgba(24,18,13,.82); backdrop-filter:blur(10px); border-bottom:1px solid var(--line-d); transition:transform .4s var(--ease); }
.brand{ display:flex; align-items:center; gap:12px; }
.brand__logo{ width:46px; height:46px; border-radius:50%; }
.brand__txt{ font-family:var(--disp); font-size:18px; line-height:1.04; }
.brand__txt i{ color:var(--gold); }
.nav__links{ display:flex; gap:28px; margin-left:auto; font-size:14px; font-weight:500; letter-spacing:.01em; }
.nav__links a{ position:relative; color:var(--mut-d); transition:color .25s; }
.nav__links a:hover{ color:var(--cream); }
.nav__links a::after{ content:""; position:absolute; left:0; bottom:-5px; width:100%; height:1.5px; background:var(--gold); transform:scaleX(0); transform-origin:right; transition:transform .35s var(--ease); }
.nav__links a:hover::after{ transform:scaleX(1); transform-origin:left; }
.nav__burger{ display:none; flex-direction:column; gap:6px; width:40px; height:38px; align-items:flex-end; justify-content:center; margin-left:auto; }
.nav__burger span{ height:1.6px; background:var(--cream); transition:.35s var(--ease); } .nav__burger span:first-child{ width:26px; } .nav__burger span:last-child{ width:18px; }

/* mobile menu */
.menu{ position:fixed; inset:0; z-index:590; background:var(--char); padding:120px var(--pad) 40px; transform:translateY(-100%); transition:transform .6s var(--ease); }
.menu.is-open{ transform:translateY(0); }
.menu__nav{ display:flex; flex-direction:column; gap:4px; }
.menu__nav a{ font-family:var(--disp); font-size:clamp(2rem,9vw,3.2rem); padding:10px 0; border-bottom:1px solid var(--line-d); }
.menu__cta{ color:var(--gold); }
.menu-open .nav__burger span:first-child{ transform:translateY(3.8px) rotate(45deg); width:26px; }
.menu-open .nav__burger span:last-child{ transform:translateY(-3.8px) rotate(-45deg); width:26px; }

/* buttons */
.btn{ display:inline-flex; align-items:center; gap:9px; font-family:var(--sans); font-weight:600; font-size:14px; letter-spacing:.02em; padding:13px 26px; border-radius:2px; border:1.5px solid transparent; transition:transform .25s var(--ease), background .3s, color .3s; }
.btn--gold{ background:var(--gold); color:var(--char); }
.btn--gold:hover{ background:var(--gold-2); transform:translateY(-2px); }
.btn--ghost{ border-color:var(--cream); color:var(--cream); }
.btn--ghost:hover{ background:var(--cream); color:var(--char); }
.btn--lg{ padding:16px 32px; font-size:15px; }

/* shared */
.eyebrow,.kicker{ font-family:var(--sans); font-weight:600; font-size:12.5px; letter-spacing:.18em; text-transform:uppercase; color:var(--mut-d); }
.eyebrow--gold,.kicker--gold{ color:var(--gold); }
.kicker{ color:var(--mut-l); }
.h2{ font-family:var(--disp); font-weight:500; font-size:clamp(2.2rem,5vw,4rem); line-height:1.06; letter-spacing:-0.01em; }
.h2 em{ color:var(--red); }
.h2--c{ text-align:center; } .h2--c em{ color:var(--gold); }
.lead{ font-size:clamp(1rem,1.3vw,1.15rem); color:var(--mut-d); }
section{ position:relative; }
.link-arrow{ display:inline-flex; align-items:center; gap:8px; font-weight:600; color:var(--gold); }
.link-arrow i{ transition:transform .3s var(--ease); } .link-arrow:hover i{ transform:translateX(5px); }

/* ===== HERO ===== */
.hero{ position:relative; min-height:100vh; display:flex; flex-direction:column; justify-content:flex-end; padding:0 var(--pad) 38px; overflow:hidden; }
.hero__media{ position:absolute; inset:0; z-index:0; }
.hero__media img{ width:100%; height:115%; object-fit:cover; object-position:center 35%; }
.hero__veil{ position:absolute; inset:0; z-index:1; background:linear-gradient(180deg, rgba(24,18,13,.6) 0%, rgba(24,18,13,.2) 32%, rgba(24,18,13,.55) 66%, rgba(24,18,13,.96) 100%); }
.hero__in{ position:relative; z-index:2; max-width:var(--maxw); width:100%; margin:auto auto 0; padding-bottom:30px; }
.hero .eyebrow{ text-shadow:0 1px 12px rgba(20,14,10,.62), 0 1px 3px rgba(20,14,10,.4); }
.hero__title{ font-family:var(--disp); font-weight:500; font-size:clamp(3rem,9vw,8rem); line-height:.96; letter-spacing:-0.02em; margin:14px 0 18px; }
.hero__title .l{ display:block; overflow:hidden; }
.hero__title .l>span{ display:block; will-change:transform; }
.hero__title em{ color:var(--gold); font-style:italic; }
.hero__sub{ font-size:clamp(1.05rem,1.6vw,1.35rem); max-width:46ch; color:#EDE3CE; }
.hero__cta{ display:flex; gap:14px; flex-wrap:wrap; margin-top:30px; }
.hero__foot{ position:relative; z-index:2; max-width:var(--maxw); width:100%; margin:24px auto 0; padding-top:20px; border-top:1px solid var(--line-d); display:flex; align-items:center; gap:18px; flex-wrap:wrap; font-size:13px; color:var(--mut-d); }
.hero__foot b{ color:var(--cream); } .hero__foot a{ margin-left:auto; color:var(--gold); }
.hero__sep{ width:5px; height:5px; border-radius:50%; background:var(--gold); opacity:.6; }

/* ===== SPÉCIALITÉS ===== */
.specs{ background:var(--red); color:var(--cream); display:grid; grid-template-columns:repeat(3,1fr); }
.spec{ padding:clamp(40px,5vw,64px) clamp(24px,3vw,48px); border-right:1px solid rgba(244,236,219,.18); }
.spec:last-child{ border-right:none; }
.spec__n{ font-family:var(--disp); font-style:italic; font-size:1.4rem; color:var(--gold-2); }
.spec h3{ font-family:var(--disp); font-weight:500; font-size:clamp(1.4rem,2.4vw,1.9rem); margin:14px 0 10px; }
.spec p{ font-size:14.5px; color:#F0E6D2; opacity:.9; max-width:32ch; }

/* ===== MAISON ===== */
.maison{ background:var(--cream-2); color:var(--ink); padding:clamp(54px,7vw,120px) var(--pad) clamp(30px,4vw,64px); }
.maison__card{ max-width:var(--maxw); margin:0 auto; background:#FBF6EA; border:1px solid rgba(24,18,13,.07); border-radius:6px; box-shadow:0 34px 80px -46px rgba(24,18,13,.5); display:grid; grid-template-columns:1fr 1fr; gap:clamp(30px,4.5vw,70px); align-items:center; padding:clamp(28px,4vw,60px); }
.maison__img{ position:relative; border-radius:3px; overflow:hidden; }
.maison__img img{ width:100%; aspect-ratio:4/3.4; object-fit:cover; transition:transform 1.2s var(--ease); }
.maison__img:hover img{ transform:scale(1.04); }
.maison__img figcaption{ position:absolute; left:0; bottom:0; padding:10px 16px; font-size:12px; letter-spacing:.04em; text-transform:uppercase; color:var(--cream); background:linear-gradient(0deg, rgba(24,18,13,.7), transparent); width:100%; }
.maison__txt .h2{ margin:14px 0 22px; }
.maison__txt .lead{ color:var(--mut-l); margin-bottom:16px; }
.maison__txt .lead strong{ color:var(--ink); font-weight:600; }

/* ===== CARTE ===== */
.carte{ background:var(--char); padding:clamp(70px,9vw,140px) var(--pad); }
.carte__head{ text-align:center; max-width:720px; margin:0 auto clamp(34px,4vw,54px); }
.carte__head .kicker{ display:block; margin-bottom:14px; }
.carte__note{ color:var(--mut-d); margin-top:14px; font-size:14.5px; }
.carte__tabswrap{ position:relative; max-width:var(--maxw); margin:0 auto clamp(30px,4vw,50px); }
.carte__tabs{ display:flex; gap:10px; justify-content:center; flex-wrap:nowrap; overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
.carte__tabs::-webkit-scrollbar{ display:none; }
.carte__tabs button{ font-family:var(--disp); font-style:italic; font-size:clamp(1.1rem,2vw,1.5rem); color:var(--mut-d); padding:8px 18px; border-bottom:2px solid transparent; transition:.3s var(--ease); white-space:nowrap; flex:0 0 auto; }
.carte__tabs button.is-on{ color:var(--gold); border-color:var(--gold); }
.carte__tabswrap.is-overflow .carte__tabs{ justify-content:flex-start; }
.carte__tabswrap::after{ content:""; position:absolute; top:0; right:0; bottom:0; width:80px; background:linear-gradient(90deg, transparent, var(--char)); pointer-events:none; opacity:0; transition:opacity .3s; }
.carte__tabswrap.can-right::after{ opacity:1; }
.carte__tabswrap::before{ content:""; position:absolute; top:0; left:0; bottom:0; width:80px; background:linear-gradient(270deg, transparent, var(--char)); pointer-events:none; opacity:0; transition:opacity .3s; z-index:1; }
.carte__tabswrap.can-left::before{ opacity:1; }
.carte__tabsnext,.carte__tabsprev{ position:absolute; top:50%; transform:translateY(-50%); z-index:2; display:none; align-items:center; justify-content:center; width:34px; height:34px; border-radius:50%; color:var(--gold); font-size:1.5rem; line-height:1; padding-bottom:4px; opacity:0; transition:opacity .3s; }
.carte__tabsnext{ right:0; animation:tabnudge 1.6s ease-in-out infinite; }
.carte__tabsprev{ left:0; animation:tabnudgeL 1.6s ease-in-out infinite; }
.carte__tabswrap.can-right .carte__tabsnext{ display:flex; opacity:1; }
.carte__tabswrap.can-left .carte__tabsprev{ display:flex; opacity:1; }
@keyframes tabnudge{ 0%,100%{ transform:translateY(-50%) translateX(0); } 50%{ transform:translateY(-50%) translateX(4px); } }
@keyframes tabnudgeL{ 0%,100%{ transform:translateY(-50%) translateX(0); } 50%{ transform:translateY(-50%) translateX(-4px); } }
.carte__grid{ display:grid; grid-template-columns:1fr; max-width:820px; margin:0 auto; align-items:start; }
.panel{ display:none; } .panel.is-on{ display:block; }
.dish{ display:grid; grid-template-columns:auto 1fr auto; gap:6px 12px; align-items:baseline; padding:18px 0; border-bottom:1px solid var(--line-d); }
.dish__n{ font-family:var(--disp); font-size:clamp(1.15rem,2vw,1.5rem); } .dish__n i{ font-size:.7em; color:var(--gold); font-style:italic; }
.dish__dots{ border-bottom:1.5px dotted rgba(244,236,219,.25); transform:translateY(-4px); }
.dish__p{ font-family:var(--disp); font-size:1.3rem; color:var(--gold); } .dish__p small{ font-size:.6em; color:var(--mut-d); }
.dish__d{ grid-column:1 / -1; font-size:13.5px; color:var(--mut-d); margin-top:2px; }

/* ===== GALERIE ===== */
.galerie{ background:var(--cream); color:var(--ink); padding:clamp(70px,9vw,140px) var(--pad); }
.galerie__head{ max-width:var(--maxw); margin:0 auto clamp(34px,4vw,54px); }
.galerie__head .kicker{ display:block; margin-bottom:12px; }
.galerie__grid{ max-width:var(--maxw); margin:0 auto; display:grid; grid-template-columns:repeat(4,1fr); grid-auto-rows:230px; grid-auto-flow:dense; gap:14px; }
.g{ position:relative; overflow:hidden; border-radius:3px; background:var(--cream-2); }
.g img{ width:100%; height:100%; object-fit:cover; transition:transform 1s var(--ease); }
.g:hover img{ transform:scale(1.07); }
.g--tall{ grid-row:span 2; } .g--wide{ grid-column:span 2; }
.g::after{ content:""; position:absolute; inset:0; background:rgba(24,18,13,0); transition:background .4s; }
.g:hover::after{ background:rgba(24,18,13,.12); }

/* ===== AVIS ===== */
.avis{ background:var(--char-2); padding:clamp(70px,9vw,140px) var(--pad); }
.avis__head{ text-align:center; margin-bottom:clamp(34px,4vw,56px); }
.avis__head .kicker{ display:block; margin-bottom:14px; }
.avis__sub{ color:var(--gold); margin-top:16px; letter-spacing:.1em; font-size:13px; }
.avis__grid{ max-width:var(--maxw); margin:0 auto; display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
.avis__c{ background:var(--char); border:1px solid var(--line-d); border-radius:3px; padding:28px; }
.avis__c p{ font-family:var(--disp); font-style:italic; font-size:1.12rem; line-height:1.5; color:#EBE1CD; }
.avis__c footer{ margin-top:18px; font-weight:600; font-size:14px; color:var(--gold); }
.avis__c footer span{ color:var(--mut-d); font-weight:400; }
.avis__c:nth-child(4),.avis__c:nth-child(5){ grid-column:span 1; }

/* ===== RÉSERVER ===== */
.reserver{ background:var(--cream); color:var(--ink); display:grid; grid-template-columns:1fr 1fr; gap:clamp(34px,5vw,70px); max-width:var(--maxw); margin:0 auto; padding:clamp(70px,9vw,140px) var(--pad); }
.reserver__form .kicker{ display:block; margin-bottom:14px; }
.reserver__form .h2{ margin:0 0 22px; }
.reserver__form .lead{ color:var(--mut-l); font-size:1.05rem; line-height:1.6; margin-bottom:28px; max-width:42ch; }
.phone-cta{ font-family:var(--disp); font-size:1.2rem; letter-spacing:.02em; }
.carte__empty{ text-align:center; color:var(--mut-d); font-style:italic; padding:40px 0; }
.rrow{ display:flex; gap:12px; margin-bottom:12px; flex-wrap:wrap; }
.rform input,.rform textarea{ flex:1; min-width:120px; font-family:var(--sans); font-size:15px; padding:14px 16px; border:1.5px solid var(--line-l); border-radius:2px; background:#FBF6EA; color:var(--ink); }
.rform textarea{ width:100%; resize:vertical; }
.rform input:focus,.rform textarea:focus{ outline:none; border-color:var(--gold); }
.rform .btn{ margin-top:6px; }
.rform__ok{ margin-top:16px; font-family:var(--disp); font-style:italic; font-size:1.2rem; color:var(--red); }
.rform__fine{ margin-top:16px; font-size:13.5px; color:var(--mut-l); } .rform__fine a{ color:var(--red); font-weight:600; }
.reserver__info{ display:flex; flex-direction:column; gap:22px; }
.info__k{ font-family:var(--sans); font-weight:600; font-size:11.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--gold); }
.info p{ font-family:var(--disp); font-size:1.25rem; line-height:1.35; margin-top:6px; }
.info p em{ font-size:.78em; color:var(--mut-l); }
.info--row{ display:flex; gap:30px; } .info--row p{ font-size:1rem; } .info--row a{ color:var(--red); }
.map{ margin-top:6px; border-radius:3px; overflow:hidden; border:1.5px solid var(--line-l); }
.map iframe{ width:100%; height:240px; border:0; display:block; filter:saturate(.85) contrast(.95); }

/* ===== PARTNER ===== */
.partner{ background:var(--char); text-align:center; padding:clamp(50px,7vw,90px) var(--pad); border-top:1px solid var(--line-d); }
.partner .kicker{ display:block; margin-bottom:14px; }
.partner h3{ font-family:var(--disp); font-weight:500; font-size:clamp(1.6rem,3.5vw,2.6rem); } .partner h3 em{ color:var(--gold); }
.partner p{ color:var(--mut-d); margin-top:12px; font-size:14.5px; } .partner p a{ color:var(--gold); }

/* ===== FOOTER ===== */
.foot{ background:var(--char-2); padding:clamp(40px,5vw,70px) var(--pad) 28px; }
.foot__top{ max-width:var(--maxw); margin:0 auto; display:flex; justify-content:space-between; align-items:center; padding-bottom:34px; border-bottom:1px solid var(--line-d); flex-wrap:wrap; gap:16px; }
.brand--foot .brand__logo{ width:56px; height:56px; } .brand--foot .brand__txt{ font-size:22px; }
.foot__totop{ font-size:13px; letter-spacing:.04em; color:var(--mut-d); } .foot__totop:hover{ color:var(--gold); }
.foot__grid{ max-width:var(--maxw); margin:0 auto; display:grid; grid-template-columns:repeat(4,1fr); gap:24px; padding:34px 0; }
.foot__col{ display:flex; flex-direction:column; gap:8px; font-size:14px; color:var(--mut-d); }
.foot__h{ font-family:var(--sans); font-weight:600; font-size:11.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--gold); margin-bottom:4px; }
.foot__col a:hover{ color:var(--cream); }
.foot__bottom{ max-width:var(--maxw); margin:0 auto; padding-top:24px; border-top:1px solid var(--line-d); display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; font-size:12px; color:var(--mut-d); }

/* lightbox */
.lightbox{ position:fixed; inset:0; z-index:9700; background:rgba(18,13,9,.94); display:flex; align-items:center; justify-content:center; padding:40px; opacity:0; pointer-events:none; transition:opacity .4s var(--ease); }
.lightbox.is-on{ opacity:1; pointer-events:auto; }
.lightbox img{ max-width:90vw; max-height:86vh; border-radius:3px; transform:scale(.96); transition:transform .4s var(--ease); }
.lightbox.is-on img{ transform:scale(1); }
.lightbox__x{ position:absolute; top:24px; right:30px; font-size:26px; color:var(--cream); }

/* reveal */
[data-rev],[data-row]{ opacity:0; transform:translateY(24px); }
[data-rev].is-in,[data-row].is-in{ opacity:1; transform:none; transition:opacity .9s var(--ease), transform .9s var(--ease); }

/* responsive */
@media (max-width:980px){
  .nav__links{ display:none; } .nav .btn--gold{ display:none; } .nav__burger{ display:flex; }
  .specs{ grid-template-columns:1fr; } .spec{ border-right:none; border-bottom:1px solid rgba(244,236,219,.18); }
  .maison__card{ grid-template-columns:1fr; }
  .avis__grid{ grid-template-columns:1fr 1fr; }
  .reserver{ grid-template-columns:1fr; } .galerie__grid{ grid-template-columns:repeat(2,1fr); grid-auto-rows:200px; }
  .foot__grid{ grid-template-columns:1fr 1fr; }
}
@media (max-width:560px){
  .avis__grid{ grid-template-columns:1fr; } .g--wide,.g--tall{ grid-column:span 2; grid-row:span 1; }
  .info--row{ flex-direction:column; gap:18px; } .rrow{ flex-direction:column; }
  .hero{ justify-content:flex-end; }
}
@media (prefers-reduced-motion:reduce){
  *{ animation-duration:.001ms !important; transition-duration:.01ms !important; }
  .grain{ animation:none; } [data-rev],[data-row]{ opacity:1; transform:none; }
}
