/* ═══════════════════════════════════════════════════════════
   GMangé — Brasserie de lac
   Direction : encre, crème, or, sauge (DA Qaro). Éditorial, lent, franc.
   ═══════════════════════════════════════════════════════════ */

:root{
  /* Palette — reprise de la DA Qaro : encre, crème, or, sauge.
     L'or porte l'accent (prix, filets, emphase), la sauge porte les
     surfaces et les actions. Aucune troisième couleur. */
  --ink:        #0D0D0D;
  --ink-2:      #12140F;
  --ink-3:      #1B201A;
  --cream:      #F7F5F0;
  --cream-2:    #E4E0D5;
  --cream-3:    #B7B3A6;
  --gold:       #C4A96A;
  --gold-lit:   #D9C391;
  --sage:       #3D5A4F;
  --sage-lit:   #83A18F;

  /* Type */
  --display: "Instrument Serif", "Iowan Old Style", Georgia, "Times New Roman", serif;
  --sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;

  /* Easing */
  --ease-out:    cubic-bezier(0.23, 1, 0.32, 1);
  --ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);
  --ease-soft:   cubic-bezier(0.4, 0, 0.2, 1);

  /* Rythme */
  --pad: clamp(20px, 5vw, 88px);
  --gap: clamp(32px, 6vw, 96px);
  --section: clamp(96px, 14vh, 200px);
  --maxw: 1560px;
}

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

html{
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
}
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto } }

body{
  margin:0;
  background:var(--ink);
  color:var(--cream);
  font-family:var(--sans);
  font-size:clamp(15px,1.02vw,17px);
  line-height:1.62;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
}
body.is-locked{ overflow:hidden }

img{ display:block; max-width:100%; height:auto }
a{ color:inherit; text-decoration:none }
button{ font:inherit; color:inherit; background:none; border:0; cursor:pointer }

::selection{ background:var(--sage); color:var(--cream) }

.skip{
  position:fixed; top:-100px; left:16px; z-index:200;
  padding:12px 18px; background:var(--cream); color:var(--ink); border-radius:2px;
  transition:top 180ms var(--ease-out);
}
.skip:focus-visible{ top:16px }

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

/* La nav est fixe : une ancre ne doit jamais atterrir dessous. */
[id]{ scroll-margin-top:clamp(76px,9vh,104px) }

/* ── Grain ─────────────────────────────────────────── */
/* `inset:-50%` faisait un calque fixe de 200 % × 200 %. Sur iOS un élément
   fixe qui dépasse élargit la fenêtre visuelle : on pouvait pincer pour
   dézoomer bien au-delà du site. La texture se répète, la surdimensionner
   n'apportait rien. */
.grain{
  position:fixed; inset:0;
  z-index:90; pointer-events:none; opacity:.035;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E");
  mix-blend-mode:overlay;
}

/* ═══════════ TYPO PRIMITIVES ═══════════ */

.eyebrow{
  margin:0 0 clamp(18px,2.4vw,30px);
  font-size:11px; font-weight:500;
  letter-spacing:.22em; text-transform:uppercase;
  color:var(--cream-2);
}

.h-lg{
  font-family:var(--display);
  font-weight:400;
  font-size:clamp(38px,5.6vw,88px);
  line-height:1.02;
  letter-spacing:-.02em;
  margin:0 0 clamp(28px,3.4vw,52px);
}
.h-lg em{ font-style:italic; color:var(--gold) }
.h-lg--light em{ color:var(--gold) }

/* Masque pour révélation ligne par ligne */
.line{ display:block; overflow:hidden; padding-bottom:.06em; margin-bottom:-.06em }
.line > span{ display:block; will-change:transform }

.rule{
  display:block; width:clamp(40px,5vw,72px); height:1px;
  background:var(--gold); margin-bottom:14px;
}

/* ═══════════ BOUTONS ═══════════ */

.btn{
  --bg:transparent; --fg:var(--cream); --bd:transparent;
  display:inline-flex; align-items:center; justify-content:center;
  gap:8px; padding:11px 20px;
  background:var(--bg); color:var(--fg);
  border:1px solid var(--bd); border-radius:999px;
  font-size:13px; font-weight:500; letter-spacing:.02em;
  white-space:nowrap;
  transition:transform 160ms var(--ease-out),
             background-color 200ms var(--ease-soft),
             color 200ms var(--ease-soft),
             border-color 200ms var(--ease-soft);
}
.btn:active{ transform:scale(.97) }

.btn--solid{ --bg:var(--sage); --fg:var(--cream); --bd:var(--sage) }
.btn--gold { --bg:var(--gold); --fg:#14150F; --bd:var(--gold) }
.btn--line { --bd:rgba(247,245,240,.34) }
.btn--ghost{ --fg:var(--cream-3) }
.btn--lg{ padding:15px 30px; font-size:14px }
.btn--full{ width:100%; padding:15px 24px; font-size:14px }

@media (hover:hover) and (pointer:fine){
  .btn--solid:hover{ --bg:#4B6D5F; --bd:#4B6D5F }
  .btn--gold:hover { --bg:var(--gold-lit); --bd:var(--gold-lit) }
  .btn--line:hover { --bd:var(--cream); --bg:rgba(247,245,240,.06) }
  .btn--ghost:hover{ --fg:var(--cream) }
}

/* ═══════════ NAV ═══════════ */

.nav{
  position:fixed; top:0; left:0; right:0; z-index:100;
  display:flex; align-items:center; justify-content:space-between;
  gap:24px;
  padding:clamp(16px,2vw,26px) var(--pad);
  transition:background-color 320ms var(--ease-soft),
             backdrop-filter 320ms var(--ease-soft),
             padding 320ms var(--ease-soft),
             border-color 320ms var(--ease-soft);
  border-bottom:1px solid transparent;
}
.nav.is-stuck{
  background:rgba(13,13,13,.82);
  backdrop-filter:blur(14px) saturate(1.3);
  -webkit-backdrop-filter:blur(14px) saturate(1.3);
  border-bottom-color:rgba(247,245,240,.09);
  padding-top:12px; padding-bottom:12px;
}

.nav__brand{
  display:flex; align-items:center; gap:9px;
  font-family:var(--display); font-size:clamp(21px,2vw,27px); letter-spacing:-.01em;
}
.nav__logo{
  width:clamp(24px,2vw,30px); height:auto; flex:0 0 auto;
  color:var(--cream);
  transition:transform 260ms var(--ease-out);
}
.nav__word{ color:var(--cream) }
@media (hover:hover) and (pointer:fine){
  .nav__brand:hover .nav__logo{ transform:rotate(-8deg) }
}

.nav__links{
  display:flex; gap:clamp(18px,2.4vw,38px);
  font-size:13px; letter-spacing:.02em;
}
.nav__links a{
  position:relative; color:var(--cream-3);
  transition:color 200ms var(--ease-soft);
  padding:4px 0;
}
.nav__links a::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:1px;
  background:var(--gold);
  transform:scaleX(0); transform-origin:left;
  transition:transform 240ms var(--ease-out);
}
@media (hover:hover) and (pointer:fine){
  .nav__links a:hover{ color:var(--cream) }
  .nav__links a:hover::after{ transform:scaleX(1) }
}

.nav__end{ display:flex; align-items:center; gap:10px }

.burger{
  display:none; width:40px; height:40px;
  align-items:center; justify-content:center;
  flex-direction:column; gap:5px;
  transition:transform 160ms var(--ease-out);
}
.burger:active{ transform:scale(.94) }
.burger span{
  display:block; width:20px; height:1.5px; background:var(--cream);
  transition:transform 240ms var(--ease-out), opacity 160ms var(--ease-soft);
}
.burger[aria-expanded="true"] span:first-child{ transform:translateY(3.25px) rotate(45deg) }
.burger[aria-expanded="true"] span:last-child { transform:translateY(-3.25px) rotate(-45deg) }

/* ═══════════ OVERLAY ═══════════ */

.overlay{
  position:fixed; inset:0; z-index:99;
  background:var(--ink-2);
  display:flex; flex-direction:column; justify-content:center;
  padding:calc(var(--pad) + 60px) var(--pad) var(--pad);
  clip-path:inset(0 0 100% 0);
  transition:clip-path 480ms var(--ease-in-out);
}
.overlay[hidden]{ display:none }
.overlay.is-open{ clip-path:inset(0 0 0 0) }

.overlay__nav{ display:flex; flex-direction:column; gap:clamp(6px,1.6vh,14px) }
.overlay__nav a{
  font-family:var(--display); font-size:clamp(30px,8vw,52px); line-height:1.14;
  display:flex; align-items:baseline; gap:16px;
  opacity:0; transform:translateY(18px);
}
.overlay.is-open .overlay__nav a{
  opacity:1; transform:translateY(0);
  transition:opacity 420ms var(--ease-out), transform 500ms var(--ease-out);
}
.overlay.is-open .overlay__nav a:nth-child(1){ transition-delay:110ms }
.overlay.is-open .overlay__nav a:nth-child(2){ transition-delay:160ms }
.overlay.is-open .overlay__nav a:nth-child(3){ transition-delay:210ms }
.overlay.is-open .overlay__nav a:nth-child(4){ transition-delay:260ms }
.overlay.is-open .overlay__nav a:nth-child(5){ transition-delay:310ms }
.overlay__nav em{
  font-family:var(--sans); font-style:normal;
  font-size:11px; letter-spacing:.2em; color:var(--gold);
}
.overlay__foot{
  margin-top:auto; padding-top:36px;
  display:flex; flex-direction:column; gap:4px;
  font-size:14px; color:var(--cream-3);
  border-top:1px solid rgba(247,245,240,.1);
}

/* ═══════════ HERO ═══════════ */

.hero{
  position:relative;
  min-height:100svh;
  display:flex; align-items:flex-end;
  padding:0 var(--pad) clamp(64px,11vh,132px);
  overflow:hidden;
}
.hero__media{ position:absolute; inset:-8% 0; z-index:0 }
.hero__media img{
  width:100%; height:100%; object-fit:cover;
  transform:scale(1.14);
  will-change:transform;
}
.hero__veil{
  position:absolute; inset:0; z-index:1;
  background:
    linear-gradient(to top, rgba(13,13,13,.96) 0%, rgba(13,13,13,.74) 34%, rgba(13,13,13,.38) 68%, rgba(13,13,13,.66) 100%),
    radial-gradient(130% 92% at 12% 100%, rgba(13,13,13,.82), transparent 62%);
}
.hero__inner{ position:relative; z-index:2; max-width:min(980px,92%) }

.hero__title{
  font-family:var(--display); font-weight:400;
  font-size:clamp(46px,8.4vw,142px);
  line-height:.96; letter-spacing:-.028em;
  margin:0 0 clamp(22px,2.6vw,36px);
}
.hero__title em{ font-style:italic; color:var(--gold) }

.hero__lede{
  max-width:56ch; margin:0 0 clamp(28px,3.4vw,44px);
  font-size:clamp(15px,1.28vw,19px); color:var(--cream-2);
}
.hero__lede strong{ color:var(--cream); font-weight:500 }

.hero__cta{ display:flex; flex-wrap:wrap; gap:12px }

.hero__scroll{
  position:absolute; z-index:2; right:var(--pad); bottom:clamp(64px,11vh,132px);
  display:flex; align-items:center; gap:14px;
}
.hero__scroll-label{
  font-size:10px; letter-spacing:.22em; text-transform:uppercase; color:var(--cream-3);
}
.hero__scroll-rail{
  display:block; position:relative; width:1px; height:56px;
  background:rgba(247,245,240,.22); overflow:hidden;
}
.hero__scroll-rail i{
  position:absolute; inset:0; display:block; background:var(--gold);
  animation:railRun 2.1s var(--ease-in-out) infinite;
}
@keyframes railRun{
  0%   { transform:translateY(-100%) }
  55%  { transform:translateY(0) }
  100% { transform:translateY(100%) }
}
@media (max-width:900px){ .hero__scroll{ display:none } }

/* ═══════════ MARQUEE ═══════════ */

.marquee{
  border-top:1px solid rgba(247,245,240,.1);
  border-bottom:1px solid rgba(247,245,240,.1);
  background:var(--ink-2);
  overflow:hidden;
  padding:clamp(14px,1.6vw,22px) 0;
}
.marquee__track{ display:flex; width:max-content; will-change:transform }
.marquee__group{ display:flex; align-items:center; gap:clamp(22px,3vw,44px); padding-right:clamp(22px,3vw,44px) }
.marquee__group b{
  font-family:var(--display); font-weight:400;
  font-size:clamp(20px,2.4vw,34px); letter-spacing:-.01em;
  color:var(--cream-2); white-space:nowrap;
}
.marquee__group i{
  display:inline-block; width:6px; height:6px; flex:0 0 auto;
  background:var(--sage-lit); transform:rotate(45deg);
}

/* ═══════════ MANIFESTE ═══════════ */

.manifesto{
  max-width:var(--maxw); margin:0 auto;
  padding:var(--section) var(--pad) 0;
}
.manifesto__grid{
  display:grid; grid-template-columns:minmax(120px,.9fr) minmax(0,3.4fr);
  gap:var(--gap);
}
/* Sans ça, `min-width:auto` laisse un élément de grille atteindre sa taille
   min-content — c'est ce qui élargissait la page sur mobile. */
.manifesto__grid > *{ min-width:0 }
.team > *{ min-width:0 }
.manifesto__label p{
  margin:0; font-size:11px; letter-spacing:.22em; text-transform:uppercase; color:var(--cream-3);
}

.manifesto__cols{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(min(280px, 100%), 1fr));
  gap:clamp(20px,3vw,48px);
  max-width:1080px;
}
.manifesto__cols p{ margin:0; color:var(--cream-2) }

.facts{
  list-style:none; margin:clamp(48px,6vw,84px) 0 0; padding:0;
  display:grid; grid-template-columns:repeat(auto-fit,minmax(min(200px, 100%), 1fr));
  gap:clamp(20px,3vw,48px);
  border-top:1px solid rgba(247,245,240,.12); padding-top:clamp(28px,3vw,44px);
}
.facts li{ display:flex; flex-direction:column; gap:8px }
.facts b{
  font-family:var(--display); font-weight:400; font-size:clamp(40px,4.4vw,64px);
  line-height:1; color:var(--gold);
}
.facts span{ font-size:14px; color:var(--cream-3); max-width:30ch }

.manifesto__fig{
  margin:clamp(64px,9vw,140px) 0 0;
  position:relative; overflow:hidden;
  clip-path:inset(0 0 0 0);
}
.manifesto__fig img{
  width:100%; height:clamp(300px,58vh,620px); object-fit:cover;
  transform:scale(1.1); will-change:transform;
}
.manifesto__fig figcaption{
  position:absolute; left:0; bottom:0; right:0;
  padding:clamp(18px,2.4vw,34px);
  background:linear-gradient(to top, rgba(13,13,13,.86), transparent);
  font-size:13px; letter-spacing:.02em; color:var(--cream-2);
}

/* ═══════════ CARTE ═══════════ */

.carte{
  max-width:var(--maxw); margin:0 auto;
  padding:var(--section) var(--pad) 0;
}
.carte__head{ max-width:900px }
.carte__note{ max-width:58ch; color:var(--cream-3); font-size:15px; margin:0 }

.carte__tabs{
  display:flex; gap:8px; flex-wrap:wrap;
  margin:clamp(40px,5vw,72px) 0 clamp(32px,4vw,56px);
  position:sticky; top:64px; z-index:40;
  padding:12px 0;
  background:linear-gradient(to bottom, var(--ink) 68%, transparent);
}
.carte__tabs button{
  padding:9px 17px; border-radius:999px;
  border:1px solid rgba(247,245,240,.18);
  font-size:13px; color:var(--cream-3);
  transition:transform 140ms var(--ease-out),
             background-color 180ms var(--ease-soft),
             color 180ms var(--ease-soft),
             border-color 180ms var(--ease-soft);
}
.carte__tabs button:active{ transform:scale(.97) }
.carte__tabs button[aria-selected="true"]{
  background:var(--cream); color:var(--ink); border-color:var(--cream);
}
@media (hover:hover) and (pointer:fine){
  .carte__tabs button:hover{ color:var(--cream); border-color:rgba(247,245,240,.4) }
  .carte__tabs button[aria-selected="true"]:hover{ color:var(--ink) }
}

.course{ margin-bottom:clamp(52px,6vw,88px) }
.course[hidden]{ display:none }
.course__title{
  font-family:var(--display); font-weight:400;
  font-size:clamp(24px,2.6vw,38px); letter-spacing:-.01em;
  margin:0 0 clamp(18px,2vw,28px);
  padding-bottom:12px;
  border-bottom:1px solid rgba(247,245,240,.12);
  color:var(--cream);
}

.dishes{
  list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:repeat(auto-fit,minmax(min(340px, 100%), 1fr));
  gap:2px clamp(28px,4vw,72px);
}
.dish{
  display:flex; align-items:baseline; gap:16px;
  padding:clamp(14px,1.5vw,20px) 0;
  border-bottom:1px solid rgba(247,245,240,.08);
}
.dish--wide{ grid-column:1/-1 }
.dish > div{ flex:1; min-width:0 }
.dish h4{
  margin:0 0 4px; font-size:clamp(16px,1.15vw,18px); font-weight:500;
  letter-spacing:-.005em; color:var(--cream);
}
.dish p{ margin:0; font-size:14px; line-height:1.5; color:var(--cream-3) }
.dish .price{
  font-family:var(--display); font-size:clamp(19px,1.6vw,25px);
  color:var(--gold); white-space:nowrap; letter-spacing:.01em;
}
.price--custom{ font-size:15px !important; font-family:var(--sans) !important; font-style:italic }
/* U+2733 se transforme en emoji couleur sur iOS. On dessine le losange
   plutôt que de le composer : rendu identique partout. */
.dish--star h4::after{
  content:""; display:inline-block;
  width:5px; height:5px; margin-left:9px; vertical-align:3px;
  background:var(--gold); transform:rotate(45deg);
}
.flag{
  display:inline-block; width:15px; height:11px; margin-left:7px;
  vertical-align:1px; border-radius:1px; overflow:hidden;
  background:linear-gradient(to right,
    #1F7A4C 0 33.33%, #F2EDE3 33.33% 66.66%, #C8382F 66.66% 100%);
}

.tag{
  display:inline-block; margin-left:8px; padding:2px 8px;
  border:1px solid rgba(131,161,143,.5); border-radius:999px;
  font-size:10px; letter-spacing:.1em; text-transform:uppercase;
  color:var(--sage-lit); vertical-align:2px;
}

.carte__aside{
  margin-top:clamp(24px,3vw,40px);
  padding:clamp(20px,2.4vw,32px);
  border:1px solid rgba(131,161,143,.24);
  border-left:2px solid var(--gold);
  background:rgba(61,90,79,.16);
  max-width:760px;
}
.carte__aside p{ margin:0; font-size:14px; color:var(--cream-3) }
.carte__aside strong{ color:var(--cream); font-weight:500 }

/* ═══════════ BLEED (terrasse) ═══════════ */

.bleed{
  position:relative; margin-top:var(--section);
  min-height:min(94svh,900px);
  display:flex; align-items:flex-end;
  padding:var(--pad); overflow:hidden;
}
.bleed__media{ position:absolute; inset:-10% 0 }
.bleed__media img{ width:100%; height:100%; object-fit:cover; transform:scale(1.08); will-change:transform }
.bleed__veil{
  position:absolute; inset:0;
  background:linear-gradient(to top, rgba(13,13,13,.9) 6%, rgba(13,13,13,.28) 55%, rgba(13,13,13,.5) 100%);
}
.bleed__text{ position:relative; max-width:min(860px,94%) }
.bleed__lede{ max-width:54ch; margin:0; color:var(--cream-2); font-size:clamp(15px,1.2vw,18px) }

/* ═══════════ GALERIE HORIZONTALE ═══════════ */

.gallery{ position:relative; background:var(--ink-2); }
.gallery__sticky{
  min-height:100svh; display:flex; align-items:center; overflow:hidden;
  padding:clamp(60px,10vh,110px) 0;
}
.gallery__rail{
  display:flex; align-items:center; gap:clamp(16px,2vw,32px);
  padding:0 var(--pad); will-change:transform;
}
.gallery__intro{ flex:0 0 auto; width:min(38vw,420px); padding-right:clamp(16px,3vw,48px) }
.gallery__intro h2{
  font-family:var(--display); font-weight:400;
  font-size:clamp(32px,3.8vw,60px); line-height:1.02; letter-spacing:-.02em;
  margin:0 0 20px;
}
.gallery__intro em{ font-style:italic; color:var(--gold) }
.gallery__intro p{
  margin:0; font-size:11px; letter-spacing:.2em; text-transform:uppercase; color:var(--cream-3);
}

.shot{
  flex:0 0 auto; margin:0; position:relative; overflow:hidden;
  width:clamp(240px,30vw,440px); height:clamp(300px,52vh,540px);
}
.shot--tall{ height:clamp(360px,68vh,700px) }
.shot img{
  width:100%; height:100%; object-fit:cover;
  transition:transform 640ms var(--ease-out);
}
.shot figcaption{
  position:absolute; left:0; right:0; bottom:0;
  padding:18px; font-size:12px; letter-spacing:.02em; color:var(--cream-2);
  background:linear-gradient(to top, rgba(13,13,13,.88), transparent);
}
@media (hover:hover) and (pointer:fine){
  .shot:hover img{ transform:scale(1.045) }
}

/* Repli mobile : défilement horizontal natif */
@media (max-width:900px){
  .gallery__sticky{ min-height:0; padding:clamp(48px,8vh,80px) 0 }
  .gallery__rail{
    overflow-x:auto; scroll-snap-type:x mandatory;
    -webkit-overflow-scrolling:touch; padding-bottom:12px;
  }
  .gallery__rail::-webkit-scrollbar{ height:2px }
  .gallery__rail::-webkit-scrollbar-thumb{ background:rgba(247,245,240,.25) }
  .gallery__intro{ width:min(74vw,320px) }
  .shot{ scroll-snap-align:center; width:min(76vw,340px); height:min(58vh,440px) }
  .shot--tall{ height:min(66vh,500px) }
}

/* ═══════════ ÉQUIPE ═══════════ */

.team{
  max-width:var(--maxw); margin:0 auto;
  padding:var(--section) var(--pad) 0;
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);
  gap:var(--gap); align-items:center;
}
.team__fig{ margin:0; overflow:hidden; }
.team__fig img{
  width:100%; height:clamp(340px,72vh,720px); object-fit:cover;
  transform:scale(1.1); will-change:transform;
}
.team__body p{ color:var(--cream-2); max-width:56ch; margin:0 }

.quote{
  margin:clamp(32px,4vw,52px) 0 0; padding-left:clamp(20px,2.4vw,32px);
  border-left:2px solid var(--sage-lit);
}
.quote p{
  font-family:var(--display); font-size:clamp(21px,2.2vw,32px);
  line-height:1.24; letter-spacing:-.01em; color:var(--cream); margin:0 0 12px;
}
.quote cite{ font-style:normal; font-size:12px; letter-spacing:.16em; text-transform:uppercase; color:var(--cream-3) }

/* ═══════════ VISITE ═══════════ */

.visit{
  max-width:var(--maxw); margin:0 auto;
  padding:var(--section) var(--pad) clamp(80px,10vw,140px);
}
.visit__grid{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(min(290px, 100%), 1fr));
  gap:clamp(36px,5vw,80px);
  border-top:1px solid rgba(247,245,240,.14); padding-top:clamp(40px,5vw,72px);
}
.visit__h{
  font-family:var(--display); font-weight:400; font-size:clamp(24px,2.4vw,34px);
  margin:0 0 clamp(18px,2vw,26px); letter-spacing:-.01em;
}
.hours{ width:100%; border-collapse:collapse; font-size:14px }
.hours th{
  text-align:left; font-weight:500; color:var(--cream);
  padding:9px 12px 9px 0; vertical-align:top; white-space:nowrap;
}
.hours td{ padding:9px 0; color:var(--cream-3); font-variant-numeric:tabular-nums }
.hours tr + tr th, .hours tr + tr td{ border-top:1px solid rgba(247,245,240,.08) }
.closed{ color:var(--sage-lit) !important }

.visit address{ font-style:normal; font-size:15px; color:var(--cream-2); line-height:1.7 }
.visit__links{ margin:18px 0 0; font-size:15px }
.visit__links a{ color:var(--gold); border-bottom:1px solid rgba(196,169,106,.35); transition:border-color 200ms var(--ease-soft) }
@media (hover:hover) and (pointer:fine){ .visit__links a:hover{ border-color:var(--gold) } }
.visit__small{ margin:18px 0 0; font-size:13px; color:var(--cream-3); max-width:38ch }

/* Formulaire */
.rsvp{ display:flex; flex-direction:column; gap:14px }
.field{ display:flex; flex-direction:column; gap:6px }
.field--row{ display:grid; grid-template-columns:1.4fr .8fr; gap:12px }
.field--row > div{ display:flex; flex-direction:column; gap:6px }
.rsvp label{ font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:var(--cream-3) }
.rsvp label span{ text-transform:none; letter-spacing:0; opacity:.7 }
.rsvp input, .rsvp textarea{
  width:100%; padding:12px 14px;
  background:rgba(247,245,240,.04);
  border:1px solid rgba(247,245,240,.16); border-radius:2px;
  color:var(--cream); font-family:var(--sans); font-size:15px;
  transition:border-color 180ms var(--ease-soft), background-color 180ms var(--ease-soft);
}
.rsvp textarea{ resize:vertical; min-height:64px }
.rsvp input::placeholder, .rsvp textarea::placeholder{ color:rgba(183,179,166,.5) }
.rsvp input:focus, .rsvp textarea:focus{
  outline:none; border-color:var(--gold); background:rgba(247,245,240,.07);
}
.rsvp__note{ margin:2px 0 0; font-size:12px; color:var(--cream-3) }
.rsvp.is-sent .btn--full{ --bg:var(--sage); --bd:var(--sage) }

/* ═══════════ FOOTER ═══════════ */

.foot{
  border-top:1px solid rgba(247,245,240,.12);
  padding:clamp(48px,6vw,80px) var(--pad) clamp(28px,3vw,44px);
  overflow:hidden;
}
.foot__big{
  font-family:var(--display); font-weight:400;
  font-size:clamp(74px,19vw,300px); line-height:.82; letter-spacing:-.035em;
  color:rgba(247,245,240,.07);
  margin-bottom:clamp(28px,4vw,56px);
  user-select:none;
}
.foot__grid{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(min(240px, 100%), 1fr));
  gap:clamp(20px,3vw,48px); align-items:start;
  padding-top:clamp(20px,2.4vw,32px);
  border-top:1px solid rgba(247,245,240,.1);
}
.foot__sig{ margin:0; font-size:14px; color:var(--cream-2); max-width:30ch }
.foot__nav{ display:flex; flex-wrap:wrap; gap:8px 22px; font-size:13px; color:var(--cream-3) }
@media (hover:hover) and (pointer:fine){ .foot__nav a:hover{ color:var(--cream) } }
.foot__legal{ margin:0; font-size:12px; line-height:1.7; color:var(--cream-3) }
.foot__fiction{ color:rgba(183,179,166,.55) }

/* ═══════════ ÉTATS D'ENTRÉE (avant GSAP) ═══════════ */

.js .line > span{ transform:translateY(105%) }
.js .reveal{ opacity:0; transform:translateY(20px) }
.js .manifesto__fig, .js .team__fig{ clip-path:inset(0 0 100% 0) }
.js .shot{ opacity:0 }

/* Rideau d'intro */
.curtain{
  position:fixed; inset:0; z-index:150;
  background:var(--ink);
  display:flex; align-items:center; justify-content:center;
}
.lockup{ width:min(62vw,460px); height:auto; overflow:visible }
.lockup__word{
  fill:var(--cream);
  font-family:var(--display); font-size:86px; font-weight:400; letter-spacing:-.015em;
}
.lockup__tag{
  fill:var(--cream-3);
  font-family:var(--sans); font-size:11px; font-weight:500; letter-spacing:.2em;
}

/* ═══════════ RESPONSIVE ═══════════ */

@media (max-width:1080px){
  .manifesto__grid{ grid-template-columns:1fr; gap:28px }
  .team{ grid-template-columns:1fr; gap:40px }
  .team__fig img{ height:min(56vh,420px) }
}

@media (max-width:820px){
  .nav__links, .nav__tel{ display:none }
  .burger{ display:flex }
  .carte__tabs{ top:56px; gap:6px }
  .carte__tabs button{ padding:8px 14px; font-size:12px }
  .dishes{ grid-template-columns:1fr }
  .field--row{ grid-template-columns:1fr 1fr }
  .hero__title{ font-size:clamp(42px,11.5vw,72px) }
}

@media (max-width:520px){
  .hero{ padding-bottom:72px }
  .hero__cta .btn{ flex:1 }
  .foot__big{ font-size:22vw }
}

/* ═══════════ MOUVEMENT RÉDUIT ═══════════ */

@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
  .js .line > span{ transform:none }
  .js .reveal{ opacity:1; transform:none }
  .js .manifesto__fig, .js .team__fig{ clip-path:none }
  .js .shot{ opacity:1 }
  .hero__media img, .manifesto__fig img, .team__fig img, .bleed__media img{ transform:none }
  .hero__scroll-rail i{ animation:none }
  .curtain{ display:none }
}
