@font-face {
  font-family: "Libre Baskerville";
  src: url("fonts/libre-baskerville.woff2") format("woff2");
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Libre Baskerville";
  src: url("fonts/libre-baskerville-italic.woff2") format("woff2");
  font-weight: 400;
  font-style: italic;
  font-display: swap;
}
@font-face {
  font-family: "Work Sans";
  src: url("fonts/work-sans.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

:root {
  --rouge: #a3202f;
  --rouge-pli: #8c1a28;
  --lambrequin: #741522;
  --or: #d4af5a;
  --marine: #1d2943;
  --blanc: #f3f2ee;
  --serif: "Libre Baskerville", Georgia, "Times New Roman", serif;
  --sans: "Work Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --head: 72px;
  --gutter: 40px;
  --radius: 2px;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: calc(var(--head) + 16px); }
body {
  margin: 0;
  background: var(--blanc);
  color: var(--marine);
  font-family: var(--sans);
  font-size: 18px;
  line-height: 1.6;
  letter-spacing: 0;
  -webkit-font-smoothing: antialiased;
}
img { display: block; max-width: 100%; height: auto; }
a { color: var(--rouge); text-underline-offset: 0.2em; text-decoration-thickness: 1px; }
h1, h2, h3, p, ul, ol, dl, dd, blockquote, figure { margin: 0; padding: 0; }
ul, ol { list-style: none; }

.wrap { width: 100%; max-width: 1400px; margin: 0 auto; padding: 0 var(--gutter); }
.skip { position: absolute; left: -9999px; }
.skip:focus { left: 16px; top: 16px; z-index: 50; background: var(--blanc); padding: 8px 16px; }

/* Buttons: one radius, no shadow */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 56px; padding: 0 32px;
  background: var(--rouge); color: #fff;
  font: 600 17px/1 var(--sans); text-decoration: none;
  border-radius: var(--radius);
  transition: background-color 0.3s;
}
.link {
  display: inline-flex; align-items: center; min-height: 56px;
  color: var(--marine); font-weight: 600; font-size: 17px;
  text-decoration: underline; text-underline-offset: 0.3em;
}
@media (hover: hover) and (pointer: fine) {
  .btn:hover { background: var(--lambrequin); }
  .link:hover { color: var(--rouge); }
}
:focus-visible { outline: 2px solid var(--or); outline-offset: 3px; }

/* Header */
.top {
  position: sticky; top: 0; z-index: 20;
  background: var(--marine); color: var(--blanc);
}
.top .wrap { display: flex; align-items: center; height: var(--head); gap: 32px; }
.brand { color: var(--blanc); text-decoration: none; display: flex; align-items: baseline; gap: 12px; margin-right: auto; }
.brand b { font: 700 22px/1 var(--serif); }
.brand span { font-size: 14px; opacity: 0.7; }
.nav ul { display: flex; gap: 32px; }
.nav a { color: var(--blanc); text-decoration: none; font-size: 16px; font-weight: 500; }
@media (hover: hover) and (pointer: fine) { .nav a:hover { text-decoration: underline; } }
.top .btn { min-height: 44px; padding: 0 20px; font-size: 16px; }
.menu-btn {
  display: none; background: none; border: 0; color: var(--blanc);
  font: 600 16px/1 var(--sans); padding: 12px 0 12px 16px; cursor: pointer;
}

/* Hero: the awning */
.hero { min-height: calc(100vh - var(--head)); min-height: calc(100svh - var(--head)); display: flex; flex-direction: column; }
.awning {
  height: clamp(72px, 19vh, 220px);
  background-color: var(--rouge);
  background-image: repeating-linear-gradient(90deg, transparent 0 calc(16.666% - 2px), var(--rouge-pli) calc(16.666% - 2px) 16.666%);
}
.valance { background: var(--lambrequin); color: var(--or); }
.valance .wrap { display: flex; align-items: baseline; justify-content: space-between; gap: 24px; padding-top: 20px; padding-bottom: 28px; }
.valance h1, .valance .name {
  font: 700 clamp(44px, 9.2vw, 152px)/1 var(--serif);
  letter-spacing: 0.04em; text-transform: uppercase; white-space: nowrap;
}
.valance .side { font: 700 clamp(15px, 2.4vw, 40px)/1 var(--serif); letter-spacing: 0.08em; text-transform: uppercase; }

.hero-body { flex: 1; display: flex; align-items: center; padding: 56px 0 64px; }
.hero-body .wrap { display: grid; grid-template-columns: 7fr 5fr; gap: 40px 64px; align-items: end; }
.claim { font: 700 clamp(32px, 5.6vw, 64px)/1.12 var(--serif); letter-spacing: 0; max-width: 15em; }
.lede { font-size: 20px; max-width: 30em; }
.proof { margin-top: 16px; font-size: 16px; display: flex; align-items: center; gap: 8px; }
.proof b { font: 700 20px/1 var(--serif); }
.proof .star { color: var(--rouge); font-size: 18px; }
.actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 32px; margin-top: 32px; }

/* Sections */
section { padding: 128px 0; }
.h2 { font: 700 clamp(32px, 4.3vw, 64px)/1.12 var(--serif); }
.reveal-hide { }

/* Proof: the quote */
.avis { padding: 120px 0 112px; }
.avis blockquote { max-width: 1080px; margin: 0 auto; }
.avis blockquote p { font: italic 400 clamp(26px, 3.2vw, 46px)/1.38 var(--serif); }
.avis .mark { display: block; font: 700 96px/0.6 var(--serif); color: var(--rouge); margin-bottom: 24px; }
.avis cite { display: flex; flex-wrap: wrap; gap: 4px 16px; margin-top: 32px; font-style: normal; font-size: 16px; }

/* The walls */
.murs { background: var(--marine); color: var(--blanc); }
.photos { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.murs-text { display: grid; grid-template-columns: 7fr 5fr; gap: 24px 64px; align-items: end; margin-top: 64px; }
.murs p { font-size: 20px; max-width: 26em; }
.murs p + p { margin-top: 16px; }

/* Comptoir, table, terrasse */
.carte .wrap { display: grid; grid-template-columns: 7fr 5fr; gap: 48px 80px; align-items: start; }
.carte .h2 { grid-column: 1 / -1; max-width: 14em; }
.board { border-top: 1px solid var(--marine); }
.board div { display: grid; grid-template-columns: 200px 1fr; gap: 8px 32px; padding: 24px 0; border-bottom: 1px solid rgba(29, 41, 67, 0.25); }
.board dt { font: 700 24px/1.3 var(--serif); }
.board dd { font-size: 19px; }
.slate { background: var(--marine); color: var(--blanc); padding: 40px; border-radius: var(--radius); }
.slate h3 { font: italic 400 32px/1.2 var(--serif); margin-bottom: 16px; }
.slate p { font-size: 20px; white-space: pre-line; }
.slate small { display: block; margin-top: 24px; font-size: 14px; opacity: 0.7; }

/* The circuit */
.circuit { background: var(--lambrequin); color: var(--blanc); padding: 112px 0; }
.circuit .wrap { display: grid; grid-template-columns: auto 1fr; gap: 24px 64px; align-items: center; }
.circuit .km { font: 700 clamp(104px, 17vw, 248px)/0.9 var(--serif); color: var(--or); white-space: nowrap; }
.circuit p { font: 700 clamp(24px, 2.8vw, 40px)/1.25 var(--serif); max-width: 16em; }
.circuit .en { margin-top: 24px; font: 400 18px/1.6 var(--sans); }
.circuit a { color: var(--blanc); font-weight: 600; }

/* Find us */
.acces .addr { font: 700 clamp(36px, 5.6vw, 88px)/1.08 var(--serif); white-space: pre-line; margin-bottom: 64px; }
.acces .cols { display: grid; grid-template-columns: 5fr 4fr 4fr; gap: 48px 64px; }
.acces h3 { font: 600 14px/1.4 var(--sans); text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 16px; }
.hours li { display: flex; justify-content: space-between; gap: 16px; padding: 8px 0; border-bottom: 1px solid rgba(29, 41, 67, 0.2); }
.hours .slots span + span::before { content: " · "; }
.hours .tbd { opacity: 0.55; }
.hours-note { margin-top: 16px; font-size: 16px; }
.tel-big { font: 700 clamp(26px, 2.6vw, 36px)/1.2 var(--serif); color: var(--marine); text-decoration: none; }
@media (hover: hover) and (pointer: fine) { .tel-big:hover { color: var(--rouge); } }
.acces .cols p { font-size: 18px; }
.acces .cols p + p { margin-top: 8px; }

/* Close */
.fin { padding: 112px 0 96px; text-align: center; }
.fin .h2 { max-width: 16em; margin: 0 auto 40px; }
.edge .awning { height: 40px; }
.edge .valance .wrap { padding-top: 16px; padding-bottom: 20px; justify-content: center; gap: clamp(24px, 6vw, 96px); }
.edge .valance span { font: 700 clamp(15px, 2.2vw, 32px)/1 var(--serif); letter-spacing: 0.1em; text-transform: uppercase; white-space: nowrap; }

/* Footer */
.foot { background: var(--marine); color: var(--blanc); padding: 56px 0 48px; font-size: 16px; }
.foot .wrap { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 32px; }
.foot b { font: 700 22px/1.2 var(--serif); display: block; margin-bottom: 8px; }
.foot a { color: var(--blanc); }
.foot .legal { margin-top: 16px; display: flex; flex-wrap: wrap; gap: 8px 24px; font-size: 14px; }
.foot .by { opacity: 0.8; }

/* Pinned call, phone only */
.callbar { display: none; }

/* Reveal: once, 28px up, 0.9s, children 0.08s apart */
.js [data-reveal] > * { opacity: 0; transform: translateY(28px); transition: opacity 0.9s ease, transform 0.9s ease; }
.js [data-reveal].in > * { opacity: 1; transform: none; }
.js [data-reveal].in > *:nth-child(2) { transition-delay: 0.08s; }
.js [data-reveal].in > *:nth-child(3) { transition-delay: 0.16s; }
.js [data-reveal].in > *:nth-child(4) { transition-delay: 0.24s; }
@media (prefers-reduced-motion: reduce) {
  .js [data-reveal] > * { opacity: 1; transform: none; transition: none; }
  .btn { transition: none; }
}

/* Tablet */
@media (max-width: 1100px) {
  .nav ul { gap: 24px; }
  .hero-body .wrap, .murs-text, .carte .wrap { grid-template-columns: 1fr; }
  .acces .cols { grid-template-columns: 1fr 1fr; }
  .acces .cols > div:first-child { grid-column: 1 / -1; }
  .board div { grid-template-columns: 160px 1fr; }
}

/* Phone */
@media (max-width: 860px) {
  :root { --head: 60px; --gutter: 20px; }
  body { font-size: 17px; }
  .menu-btn { display: block; }
  .top .btn { display: none; }
  .nav { display: none; position: absolute; left: 0; right: 0; top: var(--head); background: var(--marine); padding: 8px 20px 24px; }
  .nav.open { display: block; }
  .nav ul { flex-direction: column; gap: 0; }
  .nav a { display: block; padding: 14px 0; font-size: 20px; border-top: 1px solid rgba(243, 242, 238, 0.15); }
  .brand span { display: none; }

  .awning { height: clamp(56px, 10svh, 96px); }
  .valance .wrap { flex-wrap: wrap; justify-content: space-between; padding-top: 16px; padding-bottom: 20px; gap: 8px 16px; }
  .valance h1, .valance .name { order: 3; flex-basis: 100%; text-align: center; font-size: clamp(36px, 11.6vw, 80px); }
  .hero-body { padding: 32px 0 40px; align-items: flex-start; }
  .hero-body .wrap { gap: 20px; }
  .lede { font-size: 18px; }
  .actions { margin-top: 24px; flex-direction: column; align-items: stretch; gap: 0; }
  .actions .btn { width: 100%; }
  .actions .link { justify-content: center; }

  section { padding: 80px 0; }
  .avis { padding: 80px 0 72px; }
  .avis .mark { font-size: 72px; margin-bottom: 16px; }
  .photos { grid-template-columns: 1fr; }
  .photos img { aspect-ratio: 16 / 9; object-fit: cover; width: 100%; }
  .murs-text { margin-top: 40px; }
  .murs p { font-size: 18px; }
  .board div { grid-template-columns: 1fr; gap: 4px; padding: 20px 0; }
  .board dt { font-size: 22px; }
  .board dd { font-size: 17px; }
  .slate { padding: 32px 24px; }
  .slate h3 { font-size: 28px; }
  .slate p { font-size: 18px; }
  .circuit { padding: 80px 0; }
  .circuit .wrap { grid-template-columns: 1fr; }
  .acces .addr { margin-bottom: 40px; font-size: clamp(28px, 8.2vw, 48px); }
  .acces .cols { grid-template-columns: 1fr; gap: 40px; }
  .acces .cols > div:first-child { grid-column: auto; }
  .fin { padding: 80px 0 72px; }
  .fin .btn { width: 100%; }
  .edge .awning { height: 28px; }
  .foot { padding: 48px 0 calc(104px + env(safe-area-inset-bottom)); }
  .foot .wrap { grid-template-columns: 1fr; gap: 24px; }

  .callbar {
    display: flex; position: fixed; z-index: 30; left: 0; right: 0; bottom: 0;
    padding: 8px 12px calc(8px + env(safe-area-inset-bottom)); background: var(--marine);
  }
  .callbar .btn { width: 100%; }
}
