/* ==========================================================================
   L'Ardoise Rose — feuille de style unique
   Sommaire : 1. Polices  2. Variables  3. Base  4. Mise en page
   5. En-tête & navigation  6. Boutons & étiquettes  7. Accueil
   8. Ardoise  9. Horaires & carte  10. Pied de page & barre d'appel
   11. Pages intérieures  12. La Carte  13. Galerie & visionneuse
   14. Privatisation & formulaire  15. Pages légales & 404
   16. Animations  17. Impression  18. Réservation, avis, CTA unique (v3)
   ========================================================================== */

/* 1. Polices (auto-hébergées, licence SIL Open Font License) ------------- */
@font-face {
  font-family: "Fraunces";
  src: url("../fonts/fraunces-var-latin.woff2") format("woff2");
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Caveat";
  src: url("../fonts/caveat-var-latin.woff2") format("woff2");
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Source Sans 3";
  src: url("../fonts/source-sans-3-var-latin.woff2") format("woff2");
  font-weight: 300 800;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Source Sans 3";
  src: url("../fonts/source-sans-3-italic-var-latin.woff2") format("woff2");
  font-weight: 300 800;
  font-style: italic;
  font-display: swap;
}

/* 2. Variables ----------------------------------------------------------- */
:root {
  --creme: #F6EFE3;
  --papier: #FCF8F1;
  --encre: #2B211B;
  --noyer: #6B4A33;
  --chene: #C99A5B;
  --terracotta: #B04A2A;
  --terracotta-fonce: #8C3A20;
  --olive: #5F6B3A;
  --olive-texte: #4F5A2C;
  --ardoise: #2F3533;
  --craie: #F3EEE4;
  --craie-rose: #E8A08A;
  --bois-fonce: #3B2A1E;
  --vert-ouvert: #3E6B2B;

  --font-titre: "Fraunces", Georgia, "Times New Roman", serif;
  --font-main: "Caveat", "Segoe Print", "Bradley Hand", cursive;
  --font-texte: "Source Sans 3", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;

  --max: 1180px;
  --gutter: clamp(1rem, 4vw, 2rem);
  --header-h: 64px;
  --radius: 8px;
  --radius-lg: 14px;
  --ease: cubic-bezier(.2, .7, .2, 1);
  --ombre: 0 1px 2px rgba(43, 33, 27, .06), 0 10px 28px -14px rgba(43, 33, 27, .35);
  --ombre-forte: 0 2px 4px rgba(43, 33, 27, .06), 0 22px 44px -20px rgba(43, 33, 27, .5);
  --filet: 1px solid rgba(107, 74, 51, .16);

  /* Grain de papier et poussière de craie (SVG inline, quelques octets) */
  --grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .42 0 0 0 0 .29 0 0 0 0 .2 0 0 0 .16 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  --craie-poussiere: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .13 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* 3. Base ---------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--header-h) + 1rem);
}

body {
  margin: 0;
  font-family: var(--font-texte);
  font-size: 1.0625rem;
  line-height: 1.65;
  color: var(--encre);
  background-color: var(--creme);
  background-image: var(--grain);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

img, svg { display: block; max-width: 100%; }
img { height: auto; }

a { color: var(--terracotta); text-decoration-thickness: 1px; text-underline-offset: .18em; }
a:hover { color: var(--terracotta-fonce); }

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

h1, h2, h3, h4 {
  font-family: var(--font-titre);
  font-weight: 600;
  line-height: 1.12;
  letter-spacing: -.012em;
  margin: 0 0 .5em;
  color: var(--encre);
  text-wrap: balance;
}
h1 { font-size: clamp(2.5rem, 6vw + 1rem, 4.6rem); }
h2 { font-size: clamp(1.9rem, 2.6vw + 1rem, 2.85rem); }
h3 { font-size: 1.3rem; }
p { margin: 0 0 1em; }
p:last-child { margin-bottom: 0; }
strong { font-weight: 650; }

.icon { width: 1.25em; height: 1.25em; flex: none; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }

.visually-hidden {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

.skip-link {
  position: absolute; left: 1rem; top: -100px; z-index: 100;
  background: var(--encre); color: var(--creme); padding: .75rem 1rem; border-radius: var(--radius);
  font-weight: 600; text-decoration: none;
}
.skip-link:focus { top: 1rem; color: var(--creme); }

/* 4. Mise en page -------------------------------------------------------- */
.container { width: min(100% - 2 * var(--gutter), var(--max)); margin-inline: auto; }
.container--narrow { max-width: 48rem; }

.section { padding-block: clamp(3.25rem, 7vw, 5.5rem); position: relative; }
.section--papier { background: var(--papier); border-block: var(--filet); }
.section--tight { padding-block: clamp(2.5rem, 5vw, 3.75rem); }

.section-head { text-align: center; max-width: 42rem; margin: 0 auto clamp(2rem, 4vw, 3rem); }
.section-head p { color: var(--noyer); font-size: 1.1rem; }
.section-head--left { text-align: left; margin-inline: 0; }

.kicker {
  display: inline-block;
  font-family: var(--font-main);
  font-weight: 600;
  font-size: 1.6rem;
  line-height: 1;
  color: var(--terracotta);
  transform: rotate(-2deg);
  margin-bottom: .35rem;
}

.lead { font-size: clamp(1.1rem, 1vw + .9rem, 1.3rem); color: var(--noyer); }

/* Séparateur illustré : brin d'olivier entre deux filets */
.ornament { display: flex; align-items: center; justify-content: center; gap: .9rem; color: var(--olive); margin: .25rem auto 1.1rem; }
.ornament::before, .ornament::after { content: ""; height: 1px; width: min(18vw, 90px); background: currentColor; opacity: .45; }
.ornament svg { width: 58px; height: 20px; }
.section-head--left .ornament { justify-content: flex-start; }
.section-head--left .ornament::before { display: none; }

.split { display: grid; gap: clamp(2rem, 5vw, 4.5rem); align-items: center; }
@media (min-width: 900px) {
  .split { grid-template-columns: 1.05fr .95fr; }
  .split--reverse > :first-child { order: 2; }
}

.grid-2, .grid-3, .grid-4 { display: grid; gap: 1.25rem; }
@media (min-width: 640px) { .grid-2, .grid-3, .grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 960px) {
  .grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* 5. En-tête & navigation ----------------------------------------------- */
.site-header {
  position: sticky; top: 0; z-index: 50;
  background: rgba(246, 239, 227, .94);
  -webkit-backdrop-filter: saturate(1.3) blur(10px);
  backdrop-filter: saturate(1.3) blur(10px);
  border-bottom: var(--filet);
  transition: box-shadow .3s ease;
}
.site-header.is-scrolled { box-shadow: 0 8px 24px -16px rgba(43, 33, 27, .45); }
.header-inner { display: flex; align-items: center; justify-content: space-between; gap: 1rem; height: var(--header-h); }

.logo { display: inline-flex; align-items: center; gap: .65rem; color: var(--encre); text-decoration: none; }
.logo:hover { color: var(--encre); }
.logo__badge { width: 42px; height: 42px; flex: none; transition: transform .4s var(--ease); }
.logo:hover .logo__badge { transform: rotate(-4deg); }
.logo__text { display: flex; flex-direction: column; line-height: 1; white-space: nowrap; }
.logo__name { font-family: var(--font-titre); font-weight: 650; font-size: 1.28rem; letter-spacing: -.015em; }
.logo__sub { font-family: var(--font-main); font-weight: 600; font-size: 1.08rem; color: var(--terracotta); margin-top: .1rem; }

.nav-toggle {
  display: inline-flex; align-items: center; justify-content: center;
  width: 46px; height: 46px; border: 0; border-radius: var(--radius);
  background: transparent; color: var(--encre); cursor: pointer;
}
.nav-toggle .icon { width: 28px; height: 28px; }
.nav-toggle .icon-close { display: none; }
.nav-toggle[aria-expanded="true"] .icon-open { display: none; }
.nav-toggle[aria-expanded="true"] .icon-close { display: block; }

.nav__list { list-style: none; margin: 0; padding: 0; }
.nav__link { color: var(--encre); text-decoration: none; font-weight: 600; }
.nav__link[aria-current="page"] { color: var(--terracotta); }
.nav__link, .header-cta, .header-phone { white-space: nowrap; }
.nav__phone { display: none; }

@media (max-width: 899.98px) {
  .nav {
    position: absolute; left: 0; right: 0; top: 100%;
    background: var(--papier); background-image: var(--grain);
    border-bottom: var(--filet);
    box-shadow: 0 24px 40px -24px rgba(43, 33, 27, .5);
    padding: .5rem var(--gutter) 1.5rem;
    opacity: 0; visibility: hidden; transform: translateY(-8px);
    transition: opacity .25s ease, transform .25s var(--ease), visibility 0s linear .25s;
    max-height: calc(100svh - var(--header-h)); overflow-y: auto;
  }
  .nav.is-open { opacity: 1; visibility: visible; transform: none; transition: opacity .25s ease, transform .25s var(--ease); }
  .nav__list li + li { border-top: 1px dashed rgba(107, 74, 51, .22); }
  .nav__link { display: flex; align-items: center; justify-content: space-between; padding: .9rem .25rem; font-family: var(--font-titre); font-size: 1.3rem; font-weight: 550; }
  .nav__link::after { content: "→"; font-family: var(--font-texte); color: var(--chene); }
  .nav__phone { display: block; margin: 1rem .25rem 0; font-size: .95rem; color: var(--noyer); }
  .nav__phone a { font-weight: 700; color: var(--encre); }
  body.nav-open { overflow: hidden; }
}

.header-actions { display: none; }

@media (min-width: 900px) {
  :root { --header-h: 76px; }
  .nav-toggle { display: none; }
  .nav { display: flex; align-items: center; }
  .nav__list { display: flex; gap: clamp(1rem, 2vw, 1.9rem); }
  .nav__link { position: relative; padding: .4rem 0; font-size: 1rem; }
  .nav__link::after {
    content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px;
    background: var(--terracotta); transform: scaleX(0); transform-origin: left;
    transition: transform .35s var(--ease);
  }
  .nav__link:hover { color: var(--terracotta); }
  .nav__link:hover::after, .nav__link[aria-current="page"]::after { transform: scaleX(1); }
  .header-actions { display: flex; align-items: center; gap: 1.1rem; }
}

/* 6. Boutons & étiquettes ----------------------------------------------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .55rem;
  min-height: 48px; padding: .72rem 1.35rem;
  border: 2px solid transparent; border-radius: 999px;
  font-family: var(--font-texte); font-size: 1.02rem; font-weight: 650; line-height: 1.15;
  text-decoration: none; cursor: pointer;
  transition: transform .25s var(--ease), background-color .2s ease, color .2s ease, box-shadow .25s ease, border-color .2s ease;
}
.btn .icon { width: 1.2em; height: 1.2em; }
.btn:active { transform: translateY(0) scale(.98); }

.btn--call, .btn--primary { background: var(--terracotta); color: #fff; box-shadow: 0 10px 22px -12px rgba(140, 58, 32, .9); }
.btn--call:hover, .btn--primary:hover { background: var(--terracotta-fonce); color: #fff; transform: translateY(-2px); box-shadow: 0 16px 26px -14px rgba(140, 58, 32, .95); }
.btn--call .btn__num { font-variant-numeric: tabular-nums; letter-spacing: .01em; }

.btn--ghost { border-color: rgba(43, 33, 27, .75); color: var(--encre); background: transparent; }
.btn--ghost:hover { background: var(--encre); color: var(--creme); }

.btn--light { border-color: rgba(243, 238, 228, .75); color: var(--craie); background: rgba(243, 238, 228, .06); }
.btn--light:hover { background: var(--craie); color: var(--encre); }

.btn--small { min-height: 42px; padding: .5rem 1.05rem; font-size: .95rem; }

.link-arrow { display: inline-flex; align-items: center; gap: .4rem; font-weight: 650; text-decoration: none; }
.link-arrow .icon { transition: transform .3s var(--ease); }
.link-arrow:hover .icon { transform: translateX(4px); }

.tags { display: flex; flex-wrap: wrap; gap: .35rem; margin: 0; padding: 0; list-style: none; }
.tag {
  display: inline-flex; align-items: center; gap: .3rem;
  padding: .18rem .6rem; border-radius: 999px;
  font-size: .8rem; font-weight: 650; line-height: 1.4;
  background: rgba(95, 107, 58, .13); color: var(--olive-texte);
}
.tag .icon { width: 1em; height: 1em; }
.tag--maison { background: rgba(107, 74, 51, .11); color: var(--noyer); }
.tag--midi { background: rgba(176, 74, 42, .12); color: var(--terracotta-fonce); }

/* 7. Accueil -------------------------------------------------------------- */
.hero {
  position: relative; isolation: isolate; overflow: hidden;
  display: grid; align-items: end;
  min-height: min(88svh, 780px);
  color: var(--craie);
  background: var(--ardoise);
}
.hero__media { position: absolute; inset: 0; z-index: -2; }
.hero__media img { width: 100%; height: 100%; object-fit: cover; object-position: center 55%; animation: hero-zoom 2.2s var(--ease) both; }
.hero::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background:
    linear-gradient(180deg, rgba(24, 19, 16, .30) 0%, rgba(24, 19, 16, .28) 35%, rgba(24, 19, 16, .86) 100%),
    linear-gradient(90deg, rgba(24, 19, 16, .45) 0%, rgba(24, 19, 16, 0) 65%);
}
/* Lambrequin : bord festonné comme un store de bistrot */
.hero::after, .page-hero::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 12px;
  background: radial-gradient(circle at 50% 0, transparent 11px, var(--creme) 11.5px) 0 0 / 24px 12px repeat-x;
}
.hero__content { padding-block: 7rem 4.25rem; max-width: 42rem; animation: fade-up 1s var(--ease) .15s both; }
.hero__kicker { font-family: var(--font-main); font-weight: 600; font-size: clamp(1.55rem, 3vw, 2.1rem); color: var(--craie-rose); display: inline-block; transform: rotate(-2deg); }
.hero h1 { color: var(--craie); margin-bottom: .3em; text-shadow: 0 2px 30px rgba(0, 0, 0, .35); font-size: clamp(3rem, 8vw + .5rem, 5.8rem); }
.hero__lead { font-size: clamp(1.12rem, 1.2vw + .9rem, 1.4rem); color: rgba(243, 238, 228, .94); max-width: 33rem; }
.hero__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.5rem; margin-top: 1.8rem; }
.hero__meta { display: flex; flex-direction: column; gap: .2rem; font-size: .96rem; color: rgba(243, 238, 228, .9); }
.hero__meta .icon { width: 1.05em; height: 1.05em; }
.hero__meta span { display: inline-flex; align-items: center; gap: .4rem; }
.hero .link-arrow { color: var(--craie); }
.hero .link-arrow:hover { color: var(--craie-rose); }

.strip { background: var(--papier); border-bottom: var(--filet); }
.strip__list { list-style: none; margin: 0; padding: 1.35rem 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem 1.25rem; }
.strip__item { display: flex; align-items: center; gap: .7rem; font-size: .95rem; line-height: 1.3; color: var(--noyer); }
.strip__item strong { display: block; color: var(--encre); font-size: 1rem; }
.strip__icon { width: 44px; height: 44px; flex: none; display: grid; place-items: center; border-radius: 50%; background: rgba(95, 107, 58, .12); color: var(--olive); }
.strip__icon .icon { width: 22px; height: 22px; }
@media (max-width: 599.98px) {
  .strip__item { flex-direction: column; text-align: center; gap: .45rem; font-size: .9rem; }
}
@media (min-width: 960px) { .strip__list { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* Photo « posée » sur la page, avec morceau de ruban adhésif */
.photo-frame {
  position: relative; margin: 0;
  background: #fff; padding: .7rem .7rem 3rem;
  box-shadow: var(--ombre-forte);
  transform: rotate(1.6deg);
  transition: transform .6s var(--ease);
}
.photo-frame:hover { transform: rotate(0deg) translateY(-3px); }
.photo-frame--left { transform: rotate(-1.6deg); }
.photo-frame img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.photo-frame figcaption {
  position: absolute; left: 0; right: 0; bottom: .55rem;
  text-align: center; font-family: var(--font-main); font-size: 1.45rem; font-weight: 600; color: var(--noyer);
}
.photo-frame::before {
  content: ""; position: absolute; top: -13px; left: 50%; z-index: 1;
  width: 104px; height: 28px; transform: translateX(-50%) rotate(-3deg);
  background: rgba(201, 154, 91, .5); box-shadow: 0 1px 2px rgba(0, 0, 0, .08);
}
.photo-stack { position: relative; max-width: 460px; margin-inline: auto; padding: 1rem .5rem 0; }
.photo-stack__note {
  position: absolute; right: -.75rem; top: -.25rem; z-index: 2;
  background: var(--ardoise); background-image: var(--craie-poussiere);
  color: var(--craie); font-family: var(--font-main); font-size: 1.35rem; line-height: 1.1;
  padding: .8rem 1rem; transform: rotate(5deg); box-shadow: var(--ombre-forte);
  border: 6px solid #6B4A33; max-width: 12rem; text-align: center;
}
.photo-stack__note b { color: var(--craie-rose); font-weight: 700; }

.checklist { list-style: none; padding: 0; margin: 1.25rem 0 1.5rem; display: grid; gap: .6rem; }
.checklist li { display: flex; gap: .65rem; align-items: flex-start; }
.checklist .icon { color: var(--olive); margin-top: .18em; }

.chef { position: relative; }
.chef__quote {
  font-family: var(--font-main); font-weight: 600; font-size: clamp(1.7rem, 2.2vw + 1rem, 2.35rem);
  line-height: 1.15; color: var(--terracotta-fonce); margin: 0 0 1.25rem; padding: 0; border: 0;
}
.chef__quote p::before { content: "« "; }
.chef__quote p::after { content: " »"; }
.chef__sign { display: flex; align-items: center; gap: .9rem; margin-top: 1.5rem; }
.chef__sign strong { display: block; font-family: var(--font-titre); font-size: 1.15rem; }
.chef__sign span { color: var(--noyer); font-size: .95rem; }
.chef__sign-line { width: 48px; height: 2px; background: var(--chene); }

.dish-card {
  display: flex; flex-direction: column; overflow: hidden;
  background: var(--papier); border-radius: var(--radius-lg); border: var(--filet);
  box-shadow: var(--ombre);
  transition: transform .45s var(--ease), box-shadow .45s var(--ease);
}
.dish-card:hover { transform: translateY(-5px); box-shadow: var(--ombre-forte); }
.dish-card__media { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: #e8dfcf; }
.dish-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 1s var(--ease); }
.dish-card:hover .dish-card__media img { transform: scale(1.05); }
.dish-card__course {
  position: absolute; left: .85rem; top: .85rem;
  background: rgba(252, 248, 241, .94); color: var(--noyer);
  font-size: .78rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  padding: .25rem .6rem; border-radius: 999px;
}
.dish-card__body { display: flex; flex-direction: column; gap: .45rem; padding: 1.15rem 1.25rem 1.35rem; flex: 1; }
.dish-card__top { display: flex; justify-content: space-between; align-items: baseline; gap: .75rem; }
.dish-card h3 { margin: 0; font-size: 1.22rem; }
.dish-card p { color: var(--noyer); font-size: .98rem; margin: 0; }
.dish-card .tags { margin-top: auto; padding-top: .5rem; }
.price { font-family: var(--font-main); font-weight: 700; font-size: 1.7rem; line-height: 1; color: var(--terracotta); white-space: nowrap; }

.center-link { text-align: center; margin-top: 2.25rem; }

/* 8. Ardoise (tableau noir encadré de bois) ------------------------------ */
.ardoise {
  position: relative;
  color: var(--craie);
  background-color: var(--ardoise);
  background-image:
    var(--craie-poussiere),
    radial-gradient(ellipse at 20% 15%, rgba(255, 255, 255, .07), transparent 55%),
    radial-gradient(ellipse at 85% 90%, rgba(255, 255, 255, .05), transparent 50%);
  border: 12px solid #6B4A33;
  border-image: linear-gradient(135deg, #7d5a3c 0%, #5a3d28 30%, #86623f 55%, #4e3423 80%, #71503a 100%) 1;
  box-shadow: inset 0 0 70px rgba(0, 0, 0, .5), 0 26px 46px -24px rgba(0, 0, 0, .6);
  padding: clamp(1.5rem, 4vw, 2.6rem);
}
.ardoise h2, .ardoise h3 { color: var(--craie); }
.ardoise__title { font-family: var(--font-main); font-weight: 700; font-size: clamp(2.2rem, 3vw + 1rem, 3rem); line-height: 1; margin: 0 0 .15rem; color: var(--craie); text-shadow: 0 0 1px rgba(243, 238, 228, .6); }
.ardoise__sub { font-family: var(--font-main); font-size: 1.35rem; color: var(--craie-rose); margin-bottom: 1.1rem; }
.ardoise__list { list-style: none; padding: 0; margin: 0; display: grid; gap: .9rem; }
.ardoise__row { display: flex; align-items: baseline; gap: .6rem; font-family: var(--font-main); font-size: 1.55rem; line-height: 1.15; text-shadow: 0 0 1px rgba(243, 238, 228, .5); }
.ardoise__row .dots { flex: 1; border-bottom: 2px dotted rgba(243, 238, 228, .38); transform: translateY(-.3em); min-width: 1.5rem; }
.ardoise__row .ardoise__price { color: var(--craie-rose); font-weight: 700; font-size: 1.8rem; white-space: nowrap; }
.ardoise__note { margin-top: 1.4rem; padding-top: 1rem; border-top: 1px dashed rgba(243, 238, 228, .3); font-size: .98rem; color: rgba(243, 238, 228, .88); }
.ardoise__chalk { font-family: var(--font-main); font-size: 1.3rem; color: var(--craie); opacity: .9; }
.ardoise__week { margin-top: 1.25rem; display: grid; gap: .3rem; font-family: var(--font-main); font-size: 1.35rem; line-height: 1.2; }
.ardoise__week span { color: var(--craie-rose); }
.ardoise__week p { margin: 0; }

/* 9. Horaires & plan ----------------------------------------------------- */
.info-card {
  background: var(--papier); border: var(--filet); border-radius: var(--radius-lg);
  padding: clamp(1.25rem, 3vw, 1.75rem); box-shadow: var(--ombre);
}
.info-card h3 { display: flex; align-items: center; gap: .55rem; font-size: 1.25rem; }
.info-card h3 .icon { color: var(--olive); }
.info-card address { font-style: normal; }

.hours { width: 100%; border-collapse: collapse; font-size: 1rem; }
.hours th { text-align: left; font-weight: 600; padding: .5rem .5rem .5rem 0; }
.hours td { text-align: right; padding: .5rem 0; font-variant-numeric: tabular-nums; }
.hours td span, .footer-hours dd span { display: inline-block; white-space: nowrap; }
.hours tr + tr { border-top: 1px dashed rgba(107, 74, 51, .25); }
.hours .is-closed td { color: var(--noyer); font-style: italic; }
.hours tr.is-today th, .hours tr.is-today td { color: var(--terracotta-fonce); font-weight: 700; }
.hours tr.is-today th::before { content: ""; display: inline-block; width: .45rem; height: .45rem; border-radius: 50%; background: var(--terracotta); margin-right: .45rem; vertical-align: .15em; }

.status { display: inline-flex; align-items: center; gap: .5rem; font-weight: 650; font-size: .98rem; }
.status::before { content: ""; width: .62rem; height: .62rem; border-radius: 50%; background: currentColor; flex: none; }
.status--open { color: var(--vert-ouvert); }
.status--open::before { animation: pulse 2.4s ease-in-out infinite; }
.status--closed { color: var(--noyer); }
.hero .status--open, .page-hero .status--open, .call-bar .status--open { color: #B8DB8F; }
.hero .status--closed, .page-hero .status--closed, .call-bar .status--closed { color: var(--craie-rose); }

.map {
  position: relative; overflow: hidden; min-height: 280px; height: 100%;
  border-radius: var(--radius-lg); border: var(--filet);
  background: #EAE2D0 url("../img/deco/plan.svg") center / cover no-repeat;
  box-shadow: var(--ombre);
}
.map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.map__placeholder {
  position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: .7rem; padding: 1.5rem; text-align: center;
}
.map__pin { width: 54px; height: 54px; color: var(--terracotta); filter: drop-shadow(0 6px 8px rgba(43, 33, 27, .3)); animation: pin-drop 1.2s var(--ease) both; }
.map__pin .icon { width: 100%; height: 100%; fill: var(--terracotta); stroke: var(--papier); stroke-width: 1.2; }
.map__label { background: var(--papier); border-radius: var(--radius); padding: .6rem .9rem; box-shadow: var(--ombre); max-width: 22rem; font-size: .95rem; }
.map__label strong { display: block; font-family: var(--font-titre); font-size: 1.05rem; }
.map__note { font-size: .82rem; color: var(--noyer); max-width: 20rem; background: rgba(252, 248, 241, .9); padding: .35rem .6rem; border-radius: 6px; }
.map.is-loaded .map__placeholder { display: none; }

.infos-grid { display: grid; gap: 1.25rem; }
@media (min-width: 700px) {
  .infos-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .infos-grid > :last-child { grid-column: 1 / -1; min-height: 340px; }
}
@media (min-width: 1200px) {
  .infos-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.25fr); }
  .infos-grid > :last-child { grid-column: auto; }
}

.contact-lines { list-style: none; padding: 0; margin: 0 0 1.25rem; display: grid; gap: .7rem; }
.contact-lines li { display: flex; gap: .65rem; align-items: flex-start; }
.contact-lines .icon { color: var(--olive); margin-top: .2em; }
.contact-lines a { color: var(--encre); font-weight: 600; }
.contact-lines a:hover { color: var(--terracotta); }

/* 10. Pied de page & barre d'appel -------------------------------------- */
.site-footer {
  position: relative; margin-top: 0;
  background-color: var(--bois-fonce);
  background-image: var(--grain), repeating-linear-gradient(90deg, rgba(255, 255, 255, .018) 0 2px, transparent 2px 9px);
  color: rgba(243, 238, 228, .86);
  padding: 4rem 0 2rem;
  font-size: .98rem;
}
.site-footer::before {
  content: ""; position: absolute; left: 0; right: 0; top: 0; height: 12px;
  background: radial-gradient(circle at 50% 0, var(--footer-feston, var(--creme)) 11px, transparent 11.5px) 0 0 / 24px 12px repeat-x;
}
.site-footer a { color: var(--craie); text-decoration-color: rgba(243, 238, 228, .35); }
.site-footer a:hover { color: var(--craie-rose); }
.site-footer h2 { font-size: 1.05rem; color: var(--craie); font-family: var(--font-texte); font-weight: 700; letter-spacing: .08em; text-transform: uppercase; margin-bottom: .9rem; }
.footer-grid { display: grid; gap: 2.25rem; }
@media (min-width: 640px) { .footer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .footer-grid { grid-template-columns: 1.4fr 1fr 1fr 1fr; } }
.footer-brand .logo { color: var(--craie); }
.footer-brand .logo__sub { color: var(--craie-rose); }
.footer-brand p { margin-top: 1rem; max-width: 22rem; }
.footer-list { list-style: none; padding: 0; margin: 0; display: grid; gap: .45rem; }
.footer-hours { display: grid; grid-template-columns: auto 1fr; gap: .25rem 1rem; margin: 0; }
.footer-hours dt { font-weight: 600; color: var(--craie); }
.footer-hours dd { margin: 0; font-variant-numeric: tabular-nums; }
.site-footer address { font-style: normal; }
.social { display: flex; gap: .6rem; margin-top: 1.1rem; }
.social a {
  width: 44px; height: 44px; display: grid; place-items: center; border-radius: 50%;
  border: 1px solid rgba(243, 238, 228, .3); color: var(--craie);
  transition: background-color .2s ease, color .2s ease, transform .3s var(--ease);
}
.social a:hover { background: var(--craie); color: var(--bois-fonce); transform: translateY(-2px); }
.social .icon { width: 20px; height: 20px; }
.footer-bottom {
  margin-top: 2.75rem; padding-top: 1.35rem; border-top: 1px solid rgba(243, 238, 228, .16);
  display: flex; flex-wrap: wrap; justify-content: space-between; gap: .6rem 1.5rem; font-size: .88rem;
}
.footer-bottom ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem 1.1rem; }
.demo-badge { display: inline-block; padding: .1rem .55rem; margin-right: .35rem; border-radius: 999px; background: rgba(232, 160, 138, .18); color: var(--craie-rose); font-weight: 700; font-size: .78rem; letter-spacing: .03em; }

.call-bar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 60;
  display: flex; align-items: center; justify-content: space-between; gap: .75rem;
  padding: .6rem var(--gutter) calc(.6rem + env(safe-area-inset-bottom));
  background: rgba(47, 53, 51, .97);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  box-shadow: 0 -10px 28px -14px rgba(0, 0, 0, .55);
  color: var(--craie);
}
.call-bar__info { display: flex; flex-direction: column; font-size: .8rem; line-height: 1.3; min-width: 0; }
.call-bar__info strong { font-size: .86rem; }
.call-bar__info strong, .call-bar__info span { white-space: nowrap; }
.call-bar__cta { flex: 1 1 auto; min-height: 50px; padding-inline: 1rem; max-width: 15rem; margin-left: auto; }
.call-bar__cta .icon { display: none; }
.call-bar__phone {
  flex: none; width: 50px; height: 50px; display: grid; place-items: center; border-radius: 50%;
  border: 1.5px solid rgba(243, 238, 228, .55); color: var(--craie);
  transition: background-color .2s ease, color .2s ease;
}
.call-bar__phone:hover, .call-bar__phone:focus-visible { background: var(--craie); color: var(--ardoise); }
.call-bar__phone .icon { width: 22px; height: 22px; }
@media (max-width: 899.98px) { body { padding-bottom: calc(72px + env(safe-area-inset-bottom)); } }
@media (max-width: 369.98px) { .call-bar__info { display: none; } .call-bar__cta { max-width: none; } }
@media (min-width: 420px) { .call-bar__cta .icon { display: block; } }
@media (min-width: 900px) { .call-bar { display: none; } }

/* 11. Pages intérieures -------------------------------------------------- */
.page-hero {
  position: relative; isolation: isolate; overflow: hidden;
  color: var(--craie);
  background-color: var(--ardoise);
  background-image: var(--craie-poussiere), radial-gradient(ellipse at 15% 20%, rgba(255, 255, 255, .08), transparent 55%);
  padding-block: clamp(3.5rem, 9vw, 6.5rem) clamp(2.75rem, 6vw, 4.25rem);
}
.page-hero__media { position: absolute; inset: 0; z-index: -2; }
.page-hero__media img { width: 100%; height: 100%; object-fit: cover; animation: hero-zoom 2.2s var(--ease) both; }
.page-hero--photo::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(180deg, rgba(24, 19, 16, .3), rgba(24, 19, 16, .74)), linear-gradient(90deg, rgba(24, 19, 16, .45), transparent 70%);
}
.page-hero__inner { max-width: 44rem; animation: fade-up .9s var(--ease) .1s both; }
.page-hero h1 { color: var(--craie); font-size: clamp(2.6rem, 6vw + .5rem, 4.4rem); margin-bottom: .25em; }
.page-hero .kicker { color: var(--craie-rose); }
.page-hero p { font-size: clamp(1.08rem, 1vw + .9rem, 1.28rem); color: rgba(243, 238, 228, .92); max-width: 36rem; }

.breadcrumb { font-size: .88rem; margin-bottom: 1rem; }
.breadcrumb ol { list-style: none; display: flex; flex-wrap: wrap; gap: .35rem; margin: 0; padding: 0; }
.breadcrumb li + li::before { content: "/"; margin-right: .35rem; opacity: .6; }
.breadcrumb a { color: var(--craie); }
.breadcrumb [aria-current] { color: rgba(243, 238, 228, .8); }

.cta-band { padding-block: clamp(2.5rem, 5vw, 3.5rem); }
.cta-band__inner {
  display: grid; gap: 1.25rem; align-items: center;
  background: var(--papier); border: var(--filet); border-radius: var(--radius-lg);
  padding: clamp(1.5rem, 4vw, 2.5rem); box-shadow: var(--ombre);
}
.cta-band__inner h2 { font-size: clamp(1.6rem, 2vw + 1rem, 2.2rem); margin-bottom: .25em; }
.cta-band__inner p { color: var(--noyer); }
@media (min-width: 800px) { .cta-band__inner { grid-template-columns: 1fr auto; } }

/* 12. La Carte ---------------------------------------------------------- */
.menu-nav {
  position: sticky; top: var(--header-h); z-index: 40;
  background: rgba(246, 239, 227, .96); border-bottom: var(--filet);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
}
.menu-nav ul {
  list-style: none; margin: 0; padding: .65rem 0; display: flex; gap: .5rem;
  overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch;
}
.menu-nav ul::-webkit-scrollbar { display: none; }
.menu-nav a {
  display: inline-flex; align-items: center; min-height: 40px; padding: .35rem .95rem; border-radius: 999px;
  border: 1px solid rgba(107, 74, 51, .3); color: var(--encre); text-decoration: none; white-space: nowrap;
  font-weight: 600; font-size: .95rem; transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}
.menu-nav a:hover { border-color: var(--terracotta); color: var(--terracotta); }
.menu-nav a[aria-current="true"] { background: var(--encre); border-color: var(--encre); color: var(--creme); }

.menu-layout { display: grid; gap: 2rem; }
@media (min-width: 960px) {
  .menu-layout { grid-template-columns: minmax(0, 1fr) 340px; gap: 3.5rem; align-items: start; }
  .menu-layout__aside { position: sticky; top: calc(var(--header-h) + 5rem); }
  .menu-layout--flip { grid-template-columns: 340px minmax(0, 1fr); }
  .menu-layout--flip .menu-layout__aside { order: -1; }
}
.menu-layout__aside { display: none; }
@media (min-width: 960px) { .menu-layout__aside { display: block; } }
.menu-layout__aside .photo-frame img { aspect-ratio: 3 / 4; }

.menu-list { list-style: none; padding: 0; margin: 0; display: grid; gap: 1.6rem; }
.menu-item { padding-bottom: 1.5rem; border-bottom: 1px dashed rgba(107, 74, 51, .22); }
.menu-item:last-child { border-bottom: 0; padding-bottom: 0; }
.menu-item__head { display: flex; align-items: baseline; gap: .6rem; }
.menu-item__name { font-family: var(--font-titre); font-weight: 600; font-size: 1.22rem; line-height: 1.25; margin: 0; }
.menu-item__head .dots { flex: 1; min-width: 1.5rem; border-bottom: 2px dotted rgba(107, 74, 51, .35); transform: translateY(-.3em); }
.menu-item__price { font-family: var(--font-titre); font-weight: 650; font-size: 1.18rem; font-variant-numeric: tabular-nums; white-space: nowrap; color: var(--terracotta-fonce); }
.menu-item__desc { color: var(--noyer); margin: .3rem 0 .6rem; }
.menu-item__meta { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .9rem; }

.allergens { display: flex; flex-wrap: wrap; gap: .35rem; list-style: none; margin: 0; padding: 0; }
.allergens__label { font-size: .78rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--noyer); }
.allergen {
  display: inline-flex; align-items: center; gap: .28rem;
  padding: .14rem .5rem .14rem .38rem; border-radius: 6px;
  background: rgba(107, 74, 51, .08); border: 1px solid rgba(107, 74, 51, .16);
  font-size: .82rem; font-weight: 600; color: var(--noyer); line-height: 1.35;
}
.allergen .icon { width: 1.15em; height: 1.15em; stroke-width: 1.6; }

.menu-section + .menu-section { margin-top: clamp(3rem, 6vw, 4.5rem); }
.menu-section__head { margin-bottom: 1.75rem; }
.menu-section__head h2 { margin-bottom: .15em; }
.menu-section__head p { color: var(--noyer); margin: 0; }

.formule { display: grid; gap: 2rem; align-items: center; }
@media (min-width: 900px) { .formule { grid-template-columns: .9fr 1.1fr; gap: 3.5rem; } }

.producers { display: grid; gap: 1rem; list-style: none; padding: 0; margin: 0; }
@media (min-width: 640px) { .producers { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .producers { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.producer { display: flex; gap: .85rem; align-items: flex-start; background: var(--creme); border-radius: var(--radius); padding: 1rem 1.1rem; border: var(--filet); }
.producer .icon { color: var(--olive); width: 26px; height: 26px; margin-top: .1rem; }
.producer strong { display: block; font-family: var(--font-titre); font-size: 1.05rem; }
.producer span { color: var(--noyer); font-size: .95rem; }

.wine-group + .wine-group { margin-top: 2rem; }
.wine-group h3 { display: flex; align-items: center; gap: .6rem; font-size: 1.2rem; margin-bottom: .6rem; }
.wine-dot { width: .8rem; height: .8rem; border-radius: 50%; flex: none; }
.wine-dot--rouge { background: #7A1F2B; }
.wine-dot--blanc { background: #E3CF7A; border: 1px solid #b9a24c; }
.wine-dot--rose { background: #E8A08A; }
.wine-dot--doux { background: #C4862E; }
.wine-table { width: 100%; border-collapse: collapse; font-size: 1rem; }
.wine-table caption { text-align: left; }
.wine-table thead th { font-size: .8rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--noyer); padding: 0 0 .5rem; text-align: right; }
.wine-table thead th:first-child { text-align: left; }
.wine-table tbody th { text-align: left; font-weight: 400; padding: .6rem 1rem .6rem 0; }
.wine-table tbody th strong { display: block; font-family: var(--font-titre); font-weight: 600; font-size: 1.08rem; }
.wine-table tbody th span { color: var(--noyer); font-size: .92rem; }
.wine-table td { text-align: right; padding: .6rem 0 .6rem .75rem; font-variant-numeric: tabular-nums; font-weight: 600; white-space: nowrap; vertical-align: top; }
.wine-table tbody tr { border-top: 1px dashed rgba(107, 74, 51, .22); }

.drinks { display: grid; gap: .1rem 2.5rem; list-style: none; padding: 0; margin: 0; }
@media (min-width: 700px) { .drinks { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.drinks li { display: flex; align-items: baseline; gap: .5rem; padding: .55rem 0; border-bottom: 1px dashed rgba(107, 74, 51, .22); }
.drinks .dots { flex: 1; }
.drinks b { font-weight: 650; font-variant-numeric: tabular-nums; white-space: nowrap; }
.drinks small { color: var(--noyer); font-size: .88rem; }

.legend { display: grid; gap: .55rem; list-style: none; padding: 0; margin: 0; grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 700px) { .legend { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .legend { grid-template-columns: repeat(7, minmax(0, 1fr)); } }
.legend li { display: flex; flex-direction: column; align-items: center; gap: .35rem; text-align: center; padding: .8rem .4rem; background: var(--creme); border: var(--filet); border-radius: var(--radius); font-size: .88rem; font-weight: 600; color: var(--noyer); line-height: 1.2; }
.legend .icon { width: 30px; height: 30px; color: var(--encre); stroke-width: 1.4; }

.notice-list { list-style: none; padding: 0; margin: 1.5rem 0 0; display: grid; gap: .5rem; font-size: .95rem; color: var(--noyer); }
.notice-list li { display: flex; gap: .55rem; align-items: flex-start; }
.notice-list .icon { color: var(--olive); margin-top: .2em; width: 1.1em; height: 1.1em; }
.evin { font-size: .88rem; color: var(--noyer); font-style: italic; margin-top: 1.25rem; }

/* 13. Galerie & visionneuse -------------------------------------------- */
.gallery-nav { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem; margin-bottom: 2.5rem; list-style: none; padding: 0; }
.gallery-nav a { display: inline-flex; align-items: center; gap: .45rem; min-height: 44px; padding: .4rem 1.05rem; border-radius: 999px; border: 1px solid rgba(107, 74, 51, .3); color: var(--encre); text-decoration: none; font-weight: 600; background: var(--papier); }
.gallery-nav a:hover { border-color: var(--terracotta); color: var(--terracotta); }
.gallery-nav .count { font-size: .8rem; color: var(--noyer); font-weight: 700; }

.gallery-section + .gallery-section { margin-top: clamp(3rem, 6vw, 4.5rem); }
.gallery-section__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .5rem 1.5rem; margin-bottom: 1.25rem; }
.gallery-section__head h2 { margin: 0; }
.gallery-section__head p { margin: 0; color: var(--noyer); max-width: 34rem; }

.gallery { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 150px; grid-auto-flow: dense; gap: .6rem; list-style: none; padding: 0; margin: 0; }
@media (min-width: 700px) { .gallery { grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-rows: 190px; gap: .8rem; } }
@media (min-width: 1100px) { .gallery { grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: 210px; } }
.gallery__item { position: relative; overflow: hidden; border-radius: var(--radius); background: #e8dfcf; }
.gallery__item--tall { grid-row: span 2; }
.gallery__item--wide { grid-column: span 2; }
.gallery__link { position: absolute; inset: 0; display: block; color: #fff; }
.gallery__link img { width: 100%; height: 100%; object-fit: cover; transition: transform .9s var(--ease), filter .5s ease; }
.gallery__link::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 50%, rgba(24, 19, 16, .72)); opacity: 0; transition: opacity .4s ease; }
.gallery__caption {
  position: absolute; left: .85rem; right: .85rem; bottom: .75rem; z-index: 1;
  font-size: .9rem; font-weight: 600; line-height: 1.3; color: #fff;
  opacity: 0; transform: translateY(8px); transition: opacity .4s ease, transform .4s var(--ease);
}
.gallery__zoom { position: absolute; top: .6rem; right: .6rem; z-index: 1; width: 36px; height: 36px; display: grid; place-items: center; border-radius: 50%; background: rgba(252, 248, 241, .92); color: var(--encre); opacity: 0; transform: scale(.85); transition: opacity .3s ease, transform .3s var(--ease); }
.gallery__zoom .icon { width: 18px; height: 18px; }
.gallery__link:hover img, .gallery__link:focus-visible img { transform: scale(1.06); }
.gallery__link:hover::after, .gallery__link:focus-visible::after,
.gallery__link:hover .gallery__caption, .gallery__link:focus-visible .gallery__caption,
.gallery__link:hover .gallery__zoom, .gallery__link:focus-visible .gallery__zoom { opacity: 1; transform: none; }
.gallery__link:focus-visible { outline-offset: -3px; outline-color: var(--craie); }
@media (hover: none) {
  .gallery__link::after { opacity: .9; background: linear-gradient(180deg, transparent 60%, rgba(24, 19, 16, .7)); }
  .gallery__caption { opacity: 1; transform: none; font-size: .8rem; }
}

.lightbox { width: 100vw; height: 100vh; height: 100dvh; max-width: 100vw; max-height: 100vh; max-height: 100dvh; margin: 0; padding: 0; border: 0; background: transparent; color: var(--craie); overflow: hidden; }
.lightbox::backdrop { background: rgba(18, 15, 13, .94); }
.lightbox[open] { animation: fade-in .3s ease both; }
.lightbox__figure { margin: 0; height: 100%; display: grid; grid-template-rows: minmax(0, 1fr) auto; justify-items: center; align-items: center; padding: 4.25rem 1rem 1.25rem; gap: .75rem; }
.lightbox__img { max-width: min(100%, 1400px); max-height: 100%; width: auto; height: auto; object-fit: contain; border-radius: 4px; box-shadow: 0 30px 60px -20px rgba(0, 0, 0, .7); transition: opacity .3s ease; touch-action: pan-y; user-select: none; }
.lightbox__img.is-loading { opacity: .35; }
.lightbox__caption { text-align: center; max-width: 44rem; font-size: 1rem; color: rgba(243, 238, 228, .92); }
.lightbox__caption small { display: block; color: rgba(243, 238, 228, .6); font-size: .8rem; margin-top: .2rem; }
.lightbox__count { position: absolute; top: 1.1rem; left: 1.25rem; margin: 0; font-family: var(--font-main); font-size: 1.4rem; color: var(--craie-rose); }
.lightbox__btn { position: absolute; width: 52px; height: 52px; display: grid; place-items: center; border-radius: 50%; border: 1px solid rgba(243, 238, 228, .25); background: rgba(243, 238, 228, .08); color: var(--craie); cursor: pointer; transition: background-color .2s ease, transform .2s var(--ease); }
.lightbox__btn:hover { background: rgba(243, 238, 228, .2); }
.lightbox__btn .icon { width: 24px; height: 24px; }
.lightbox__close { top: .8rem; right: .9rem; }
.lightbox__prev, .lightbox__next { top: 50%; transform: translateY(-50%); }
.lightbox__prev { left: .9rem; }
.lightbox__next { right: .9rem; }
.lightbox__prev:hover { transform: translateY(-50%) translateX(-2px); }
.lightbox__next:hover { transform: translateY(-50%) translateX(2px); }
@media (max-width: 699.98px) {
  .lightbox__prev, .lightbox__next { top: auto; bottom: 1rem; transform: none; }
  .lightbox__prev:hover, .lightbox__next:hover { transform: none; }
  .lightbox__figure { padding-bottom: 5.25rem; }
}

/* 14. Privatisation & formulaire --------------------------------------- */
.stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; list-style: none; padding: 0; margin: 0; }
@media (min-width: 900px) { .stats { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.stat { background: var(--papier); border: var(--filet); border-radius: var(--radius-lg); padding: 1.1rem 1.2rem; text-align: center; box-shadow: var(--ombre); }
.stat b { display: block; font-family: var(--font-titre); font-weight: 650; font-size: clamp(2rem, 3vw + 1rem, 2.6rem); line-height: 1; color: var(--terracotta); }
.stat span { display: block; margin-top: .35rem; color: var(--noyer); font-size: .95rem; line-height: 1.3; }

.offer {
  position: relative; background: var(--papier); border: var(--filet); border-radius: var(--radius-lg);
  padding: 1.5rem 1.4rem 1.4rem; box-shadow: var(--ombre);
  transition: transform .45s var(--ease), box-shadow .45s var(--ease), border-color .3s ease;
}
.offer:hover { transform: translateY(-4px); box-shadow: var(--ombre-forte); border-color: rgba(176, 74, 42, .35); }
.offer__icon { width: 52px; height: 52px; display: grid; place-items: center; border-radius: 50%; background: rgba(176, 74, 42, .1); color: var(--terracotta); margin-bottom: 1rem; }
.offer__icon .icon { width: 26px; height: 26px; }
.offer h3 { font-size: 1.25rem; margin-bottom: .4rem; }
.offer p { color: var(--noyer); font-size: .98rem; }
.offer__foot { margin-top: .9rem; font-family: var(--font-main); font-size: 1.35rem; font-weight: 600; color: var(--terracotta-fonce); line-height: 1.1; }

.space { display: grid; overflow: hidden; background: var(--papier); border: var(--filet); border-radius: var(--radius-lg); box-shadow: var(--ombre); }
.space__media { aspect-ratio: 16 / 10; overflow: hidden; }
.space__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 1s var(--ease); }
.space:hover .space__media img { transform: scale(1.04); }
.space__body { padding: 1.35rem 1.4rem 1.5rem; }
.space__body h3 { margin-bottom: .3rem; }
.space__body p { color: var(--noyer); }
.space__cap { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .9rem; }

.group-menu {
  position: relative; background: var(--papier); background-image: var(--grain);
  border-radius: 4px; padding: 2rem 1.5rem 1.75rem; text-align: center;
  box-shadow: var(--ombre); outline: 1px solid rgba(107, 74, 51, .35); outline-offset: -10px;
  display: flex; flex-direction: column;
  transition: transform .45s var(--ease), box-shadow .45s var(--ease);
}
.group-menu:hover { transform: translateY(-4px) rotate(-.4deg); box-shadow: var(--ombre-forte); }
.group-menu--featured { outline-color: var(--terracotta); outline-width: 2px; }
.group-menu__ribbon { position: absolute; top: -.8rem; left: 50%; transform: translateX(-50%); background: var(--terracotta); color: #fff; font-size: .78rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; padding: .3rem .8rem; border-radius: 999px; white-space: nowrap; }
.group-menu h3 { font-size: 1.45rem; margin-bottom: .1rem; }
.group-menu__price { font-family: var(--font-main); font-weight: 700; font-size: 2.3rem; line-height: 1; color: var(--terracotta); margin: .35rem 0 .15rem; }
.group-menu__per { font-size: .85rem; color: var(--noyer); }
.group-menu ul { list-style: none; padding: 0; margin: 1.25rem 0 0; display: grid; gap: .5rem; flex: 1; }
.group-menu li { font-size: .98rem; }
.group-menu li + li::before { content: "~"; display: block; color: var(--chene); font-family: var(--font-main); font-size: 1.3rem; line-height: .8; margin-bottom: .35rem; }
.group-menu__wine { margin-top: 1rem; font-size: .88rem; color: var(--olive-texte); font-weight: 600; }

.steps { list-style: none; counter-reset: step; padding: 0; margin: 0; display: grid; gap: 1.25rem; }
@media (min-width: 800px) { .steps { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.steps li { counter-increment: step; position: relative; padding: 1.25rem 1.25rem 1.25rem 4.4rem; background: var(--papier); border: var(--filet); border-radius: var(--radius-lg); }
.steps li::before { content: counter(step); position: absolute; left: 1.1rem; top: .75rem; font-family: var(--font-main); font-weight: 700; font-size: 2.8rem; line-height: 1; color: var(--terracotta); }
.steps strong { display: block; font-family: var(--font-titre); font-size: 1.1rem; margin-bottom: .2rem; }
.steps span { color: var(--noyer); font-size: .96rem; }

.faq { display: grid; gap: .75rem; }
.faq details { background: var(--papier); border: var(--filet); border-radius: var(--radius); }
.faq summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: 1rem 1.2rem; font-weight: 650; font-size: 1.05rem; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; font-family: var(--font-titre); font-size: 1.5rem; line-height: 1; color: var(--terracotta); transition: transform .3s var(--ease); }
.faq details[open] summary::after { transform: rotate(45deg); }
.faq details > div { padding: 0 1.2rem 1.1rem; color: var(--noyer); }

/* Formulaire de devis — composant « cf- » (anti-spam, anti double envoi) */
.devis { display: grid; gap: 2rem; align-items: start; }
@media (min-width: 960px) { .devis { grid-template-columns: .8fr 1.2fr; gap: 3.5rem; } }
.devis__aside .contact-lines { margin-top: 1.25rem; }
.cf-card { background: var(--papier); border: var(--filet); border-radius: var(--radius-lg); padding: clamp(1.25rem, 4vw, 2.25rem); box-shadow: var(--ombre-forte); position: relative; }
.cf-grid { display: grid; gap: 0 1.1rem; }
@media (min-width: 640px) { .cf-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .cf-field--full { grid-column: 1 / -1; } }
.cf-field { margin-bottom: 1.1rem; }
.cf-label { display: block; font-size: .92rem; font-weight: 650; color: var(--encre); margin-bottom: .35rem; }
.cf-required { color: var(--terracotta); }
.cf-hint { font-weight: 400; color: var(--noyer); font-size: .85rem; }
.cf-input, .cf-textarea, .cf-select {
  width: 100%; min-height: 48px; padding: .7rem .85rem;
  border: 1.5px solid rgba(107, 74, 51, .35); border-radius: var(--radius);
  font: inherit; font-size: 1rem; color: var(--encre); background: #fff;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.cf-select { appearance: none; -webkit-appearance: none; padding-right: 2.5rem; background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' fill='none' stroke='%236B4A33' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M1 1l6 6 6-6'/%3E%3C/svg%3E") no-repeat right .9rem center; }
.cf-input:focus, .cf-textarea:focus, .cf-select:focus { outline: none; border-color: var(--terracotta); box-shadow: 0 0 0 3px rgba(176, 74, 42, .18); }
.cf-input[aria-invalid="true"], .cf-textarea[aria-invalid="true"], .cf-select[aria-invalid="true"] { border-color: #B42318; }
.cf-textarea { resize: vertical; min-height: 130px; }
.cf-error-msg { display: none; margin-top: .3rem; font-size: .85rem; color: #B42318; font-weight: 600; }
.cf-error-msg.show { display: block; }
.cf-honeypot { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.cf-submit {
  width: 100%; min-height: 52px; margin-top: .4rem; padding: .85rem 1.5rem;
  display: flex; align-items: center; justify-content: center; gap: .6rem;
  background: var(--terracotta); color: #fff; border: 0; border-radius: 999px;
  font: inherit; font-size: 1.05rem; font-weight: 700; cursor: pointer;
  transition: background-color .15s ease, transform .1s ease;
}
.cf-submit:hover:not(:disabled) { background: var(--terracotta-fonce); }
.cf-submit:active:not(:disabled) { transform: scale(.99); }
.cf-submit:disabled { opacity: .72; cursor: not-allowed; }
.cf-spinner { display: none; width: 20px; height: 20px; border: 2.5px solid rgba(255, 255, 255, .4); border-top-color: #fff; border-radius: 50%; animation: cf-spin .7s linear infinite; }
.cf-submit.loading .cf-spinner { display: inline-block; }
.cf-submit.loading .cf-submit-label { display: none; }
.cf-submit.loading::after { content: "Envoi en cours…"; }
.cf-status { display: none; align-items: flex-start; gap: .55rem; margin-top: 1rem; padding: .9rem 1rem; border-radius: var(--radius); font-size: .95rem; font-weight: 600; }
.cf-status.show { display: flex; }
.cf-status.success { background: #EEF5E6; color: #2F5220; border: 1px solid #C4DDAE; }
.cf-status.error { background: #FDF0EE; color: #9A2A18; border: 1px solid #F1C3B9; }
.cf-legal { margin-top: 1.1rem; font-size: .84rem; color: var(--noyer); line-height: 1.5; }

/* 15. Pages légales & 404 ---------------------------------------------- */
.prose { max-width: 46rem; }
.prose h2 { font-size: clamp(1.45rem, 1.2vw + 1rem, 1.8rem); margin-top: 2.5rem; padding-top: 1.5rem; border-top: 1px dashed rgba(107, 74, 51, .25); }
.prose h2:first-of-type { margin-top: 1.5rem; }
.prose h3 { font-size: 1.12rem; margin-top: 1.5rem; }
.prose ul { padding-left: 1.2rem; margin: 0 0 1em; }
.prose li { margin-bottom: .35rem; }
.prose dl { display: grid; grid-template-columns: minmax(0, 12rem) 1fr; gap: .35rem 1.25rem; margin: 0 0 1em; }
.prose dt { font-weight: 650; }
.prose dd { margin: 0; }
@media (max-width: 599.98px) { .prose dl { grid-template-columns: 1fr; } .prose dd { margin-bottom: .6rem; } }
.prose table { width: 100%; border-collapse: collapse; margin: 0 0 1.25rem; font-size: .95rem; }
.prose th, .prose td { text-align: left; padding: .6rem .5rem; border-bottom: 1px dashed rgba(107, 74, 51, .25); vertical-align: top; }
.prose thead th { font-size: .8rem; letter-spacing: .05em; text-transform: uppercase; color: var(--noyer); }
.table-scroll { overflow-x: auto; }
.callout { background: var(--papier); border: var(--filet); border-left: 4px solid var(--terracotta); padding: 1.1rem 1.25rem; margin: 0 0 1.5rem; }
.callout p { margin-bottom: .5em; }
.callout--todo { border-left-color: var(--chene); background: #FBF3E4; }
.callout strong { color: var(--terracotta-fonce); }
.toc { background: var(--papier); border: var(--filet); border-radius: var(--radius); padding: 1rem 1.25rem; margin-bottom: 1rem; }
.toc ol { margin: .4rem 0 0; padding-left: 1.2rem; columns: 2 14rem; }
.toc li { margin-bottom: .25rem; }

.error-page { min-height: 62vh; display: grid; place-items: center; text-align: center; padding-block: 4rem; }
.error-page .ardoise { max-width: 34rem; margin: 0 auto 2rem; transform: rotate(-1deg); }
.error-page__code { font-family: var(--font-main); font-size: clamp(4rem, 12vw, 6.5rem); line-height: .9; color: var(--craie-rose); }
.error-actions { display: flex; flex-wrap: wrap; gap: .75rem; justify-content: center; }

/* 16. Animations --------------------------------------------------------- */
.reveal { transition: opacity .9s var(--ease), transform .9s var(--ease); }
.reveal--pending { opacity: 0; transform: translateY(24px); }
.reveal[data-delay="1"] { transition-delay: .08s; }
.reveal[data-delay="2"] { transition-delay: .16s; }
.reveal[data-delay="3"] { transition-delay: .24s; }

@keyframes fade-up { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@keyframes fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes hero-zoom { from { transform: scale(1.07); } to { transform: scale(1); } }
@keyframes pin-drop { 0% { opacity: 0; transform: translateY(-18px); } 60% { opacity: 1; transform: translateY(2px); } 100% { transform: none; } }
@keyframes pulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(62, 107, 43, .45); } 50% { box-shadow: 0 0 0 6px rgba(62, 107, 43, 0); } }
@keyframes cf-spin { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; transition-delay: 0s !important; }
  .reveal--pending { opacity: 1; transform: none; }
}

/* 17. Impression : la carte tient sur 2 pages A4 ---------------------------- */
.print-only { display: none; }
@media print {
  @page { size: A4; margin: 11mm 13mm; }
  html { scroll-behavior: auto; }
  body { background: #fff !important; color: #000; font-size: 9pt; line-height: 1.32; padding: 0 !important; }
  .site-header, .call-bar, .menu-nav, .site-footer, .skip-link, .page-hero__media, .menu-layout__aside,
  .page-hero__tools, .breadcrumb, .print-hide, .ornament, .kicker, .lightbox, #producteurs,
  .tags, .allergens__label, .notice-list .icon, .checklist, .formule .section-head p { display: none !important; }
  .print-only { display: block !important; }
  a { color: #000 !important; text-decoration: none !important; }
  .reveal, .reveal--pending { opacity: 1 !important; transform: none !important; transition: none !important; }
  .container { width: 100% !important; max-width: none !important; }
  .section, .section--papier, .section--tight { padding: 0 !important; margin: 0 0 3.5mm !important; background: none !important; border: 0 !important; }
  .page-hero { background: none !important; color: #000; padding: 0 0 1mm !important; }
  .page-hero::after { display: none !important; }
  .page-hero h1 { color: #000; font-size: 20pt; margin: 0; }
  .page-hero p { color: #000; font-size: 9pt; max-width: none; margin: 0; }
  .print-card { border-top: 1.5pt solid #000; border-bottom: .5pt solid #000; padding: 1.5mm 0; margin: 1mm 0 3mm; font-size: 8.5pt; }
  .print-card p { margin: 0; }
  h2 { font-size: 13pt; margin: 0 0 1.2mm; break-after: avoid; }
  h3 { font-size: 10pt; }
  .section-head, .menu-section__head { margin: 0 0 1.5mm !important; text-align: left; }
  .menu-section__head p, .section-head p { font-size: 8.5pt; color: #333; }
  .lead { font-size: 9pt; color: #000; }
  .formule { display: grid; grid-template-columns: 1fr 1.1fr; gap: 4mm; align-items: start; }
  .ardoise { color: #000; background: none !important; border: .8pt solid #000 !important; border-image: none !important; box-shadow: none !important; padding: 2.5mm 3mm !important; }
  .ardoise * { color: #000 !important; text-shadow: none !important; }
  .ardoise__title { font-size: 14pt; }
  .ardoise__sub, .ardoise__week { font-size: 10pt; margin-bottom: 1mm; }
  .ardoise__row { font-size: 11pt; }
  .ardoise__row .ardoise__price { font-size: 12pt; }
  .ardoise__list { gap: .8mm; }
  .ardoise__note { font-size: 8pt; margin-top: 1.5mm; padding-top: 1mm; }
  .menu-layout { display: block; }
  .menu-list { display: block; columns: 2; column-gap: 7mm; }
  .menu-item { break-inside: avoid; padding: 0 0 1.6mm; margin: 0 0 1.6mm; border-bottom: .4pt dotted #999; }
  .menu-item__name { font-size: 10pt; }
  .menu-item__price { font-size: 10pt; color: #000; }
  .menu-item__desc { font-size: 8.5pt; margin: .3mm 0 .6mm; color: #222; }
  .allergens { gap: 0 1.2mm; }
  .allergen { border: 0; background: none; padding: 0; font-size: 7.5pt; color: #333; gap: .6mm; }
  .allergen .icon { width: 8pt; height: 8pt; }
  .menu-section + .menu-section { margin-top: 3mm; }
  #vins { break-before: page; }
  .wine-group + .wine-group { margin-top: 2mm; }
  .wine-group h3 { margin-bottom: .5mm; }
  .wine-table { font-size: 8.5pt; }
  .wine-table tbody th, .wine-table td { padding: .6mm 0; }
  .wine-table tbody th strong { font-size: 9pt; display: inline; }
  .wine-table tbody th span { font-size: 8pt; }
  .wine-table tbody th span::before { content: " · "; }
  .evin { font-size: 7.5pt; margin-top: 1mm; }
  .drinks { display: block; columns: 2; column-gap: 7mm; }
  .drinks li { padding: .5mm 0; break-inside: avoid; }
  .legend { grid-template-columns: repeat(7, 1fr); gap: 1mm; }
  .legend li { padding: 1mm .5mm; font-size: 7pt; border-color: #999; background: none; }
  .legend .icon { width: 12pt; height: 12pt; }
  .notice-list { margin-top: 1.5mm; font-size: 7.5pt; gap: .5mm; color: #222; }
  .page-hero p, .ardoise__note, .wine-dot { display: none !important; }
  .ardoise__week { font-size: 9.5pt; margin-top: 1.5mm; gap: .3mm; }
  .formule .lead { font-size: 8.5pt; }
  .drinks small { font-size: 7.5pt; }
}

/* Compléments ------------------------------------------------------------ */
body[data-feston="papier"] { --footer-feston: var(--papier); }
.allergens-wrap { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .5rem; }
.map .btn--ghost { background: var(--papier); }
.map .btn--ghost:hover { background: var(--encre); color: var(--creme); }
.lead-small { margin-top: 1rem; font-size: .92rem; color: var(--noyer); }
.more-link { margin-top: 1rem; }
.info-card .btn { margin-top: .25rem; }
mark.todo { background: #FBE7C6; color: var(--encre); padding: .05rem .3rem; border-radius: 3px; font-weight: 600; }
.page-carte section[id], .page-galerie section[id] { scroll-margin-top: calc(var(--header-h) + 4.75rem); }
.h3-like { display: flex; align-items: center; gap: .55rem; font-size: 1.25rem; }
.h3-like .icon { color: var(--olive); }
.big-phone { font-family: var(--font-titre); font-weight: 650; font-size: clamp(1.7rem, 2vw + 1rem, 2.1rem); font-variant-numeric: tabular-nums; margin: .25rem 0 1rem; }
.big-phone a { color: var(--encre); text-decoration: none; }
.big-phone a:hover { color: var(--terracotta); }
.big-address { font-style: normal; font-size: 1.1rem; line-height: 1.5; margin-bottom: .75rem; }
.access-list { list-style: none; padding: 0; margin: 0; display: grid; gap: 1.1rem; }
.access-list li { display: flex; gap: .9rem; align-items: flex-start; }
.access-list .icon { width: 30px; height: 30px; padding: 6px; box-sizing: content-box; border-radius: 50%; background: rgba(95, 107, 58, .12); color: var(--olive); }
.access-list strong { display: block; font-family: var(--font-titre); font-size: 1.08rem; }
.access-list span { color: var(--noyer); }
.map-tall .map { min-height: 420px; }
.social-cards { display: grid; gap: .75rem; margin: 1.5rem 0; }
@media (min-width: 560px) { .social-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.social-card { display: flex; align-items: center; gap: .9rem; padding: 1rem 1.1rem; background: var(--papier); border: var(--filet); border-radius: var(--radius-lg); color: var(--encre); text-decoration: none; box-shadow: var(--ombre); transition: transform .35s var(--ease), border-color .2s ease; }
.social-card:hover { color: var(--encre); transform: translateY(-3px); border-color: var(--terracotta); }
.social-card .icon { width: 34px; height: 34px; color: var(--terracotta); }
.social-card strong { display: block; font-family: var(--font-titre); font-size: 1.1rem; }
.social-card span span, .social-card > span:not(.visually-hidden) { color: var(--noyer); font-size: .92rem; line-height: 1.35; }
.social-card strong { color: var(--encre); }
.credits { columns: 2 14rem; column-gap: 2rem; padding-left: 1.2rem; }
.credit-count { color: var(--noyer); font-size: .88rem; }
.page-hero .hero__actions { margin-top: 1.5rem; }
.page-hero .hero__meta { color: rgba(243, 238, 228, .9); }
.error-page .ardoise__title { font-size: clamp(2rem, 4vw + 1rem, 2.8rem); }

/* 18. Réservation, avis, CTA unique (v3) --------------------------------- */
.header-phone { display: none; align-items: center; gap: .4rem; color: var(--encre); text-decoration: none; font-weight: 650; font-variant-numeric: tabular-nums; }
.header-phone .icon { width: 1.05em; height: 1.05em; color: var(--terracotta); }
.header-phone:hover { color: var(--terracotta); }
@media (min-width: 1200px) { .header-phone { display: inline-flex; } }
@media (max-width: 899.98px) { .hero__cta { display: none; } }
.hero__meta a { color: inherit; text-decoration-color: rgba(243, 238, 228, .45); }
.hero__meta a:hover { color: var(--craie-rose); }

.status-link { display: block; margin-top: .3rem; font-weight: 650; font-size: .95rem; }
.hero .status-link, .page-hero .status-link { color: var(--craie-rose); }

.demo-badge--light { background: rgba(176, 74, 42, .1); color: var(--terracotta-fonce); border: 1px solid rgba(176, 74, 42, .25); margin-right: 0; font-size: .8rem; }

.gallery__item--big { grid-column: span 2; grid-row: span 2; }

/* Accueil : formule midi réunie avec les plats */
.formule--home { margin-top: clamp(2.5rem, 5vw, 3.5rem); }
@media (min-width: 900px) { .formule--home { grid-template-columns: 1.1fr .9fr; } }
.formule__text h3 { font-size: clamp(1.5rem, 1.5vw + 1rem, 1.9rem); }

/* Accueil : avis (exemple de présentation) */
.reviews { display: grid; gap: 1.1rem; }
@media (min-width: 700px) { .reviews { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .reviews { grid-template-columns: 1.05fr repeat(3, minmax(0, 1fr)); } }
.reviews__summary { background: var(--ardoise); background-image: var(--craie-poussiere); color: var(--craie); border-radius: var(--radius-lg); padding: 1.5rem; display: flex; flex-direction: column; align-items: flex-start; gap: .4rem; }
.reviews__summary p { margin: 0; }
.reviews__score { font-family: var(--font-titre); line-height: 1; }
.reviews__note { font-size: 3.2rem; font-weight: 650; }
.reviews__max { font-size: 1.3rem; color: rgba(243, 238, 228, .7); margin-left: .15rem; }
.reviews__count { font-size: .95rem; color: rgba(243, 238, 228, .85); }
.reviews__summary .link-arrow { color: var(--craie); font-size: .95rem; }
.reviews__summary .link-arrow[aria-disabled="true"] { opacity: .75; cursor: not-allowed; }
.reviews__demo { margin-top: auto !important; padding-top: .6rem; }
.reviews__summary .demo-badge--light { background: rgba(232, 160, 138, .16); color: var(--craie-rose); border-color: rgba(232, 160, 138, .4); }
.review { margin: 0; background: var(--creme); border: var(--filet); border-radius: var(--radius-lg); padding: 1.35rem 1.35rem 1.2rem; display: flex; flex-direction: column; gap: .7rem; }
.review blockquote { margin: 0; font-size: 1.02rem; line-height: 1.55; }
.review blockquote p::before { content: "« "; }
.review blockquote p::after { content: " »"; }
.review figcaption { margin-top: auto; font-size: .9rem; color: var(--noyer); }
.review figcaption strong { color: var(--encre); }
.review--aside { margin: 1.5rem 0; background: var(--creme); }
.review__demo { margin: 0; }
.stars { position: relative; display: inline-flex; line-height: 0; }
.stars .icon { width: 20px; height: 20px; fill: currentColor; stroke: none; }
.stars__base { display: inline-flex; gap: 2px; color: rgba(107, 74, 51, .22); }
.stars__fill { position: absolute; inset: 0; display: inline-flex; gap: 2px; overflow: hidden; color: #D9892B; white-space: nowrap; }
.reviews__summary .stars .icon { width: 24px; height: 24px; }
.reviews__summary .stars__base { color: rgba(243, 238, 228, .25); }
.reviews__summary .stars__fill { color: #F2B45C; }
.stars--100 .stars__fill { width: 100%; }
.stars--94 .stars__fill { width: 94%; }
.stars--80 .stars__fill { width: 80%; }

/* Accueil : bloc groupes */
.teaser-stats { list-style: none; margin: 1.25rem 0 1.75rem; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; }
.teaser-stats li { background: var(--papier); border: var(--filet); border-radius: var(--radius); padding: .8rem .7rem; text-align: center; }
.teaser-stats b { display: block; font-family: var(--font-titre); font-size: 1.7rem; font-weight: 650; line-height: 1.1; color: var(--terracotta); }
.teaser-stats span { display: block; font-size: .85rem; line-height: 1.3; color: var(--noyer); margin-top: .2rem; }

/* Infos pratiques : réservation */
.reserve-ways { display: grid; gap: 1rem; margin: 1.25rem 0; }
@media (min-width: 640px) and (max-width: 959.98px) { .reserve-ways { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.reserve-way { background: var(--creme); border: var(--filet); border-radius: var(--radius-lg); padding: 1.1rem 1.2rem; }
.reserve-way h3 { display: flex; align-items: center; gap: .5rem; font-size: 1.15rem; margin-bottom: .35rem; }
.reserve-way h3 .icon { color: var(--olive); }
.reserve-way .big-phone { margin: 0 0 .35rem; font-size: 1.7rem; }
.reserve-way p { font-size: .98rem; }
.cf-demo { margin: 0 0 .75rem; }
.cf-title { font-size: 1.35rem; margin-bottom: 1rem; }
.cf-choice { border: 0; padding: 0; min-width: 0; }
.cf-choice legend { padding: 0; }
.cf-segmented { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; }
.cf-segmented label { position: relative; display: block; cursor: pointer; }
.cf-segmented input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.cf-segmented span { display: flex; flex-direction: column; justify-content: center; min-height: 48px; padding: .45rem .8rem; border: 1.5px solid rgba(107, 74, 51, .35); border-radius: var(--radius); background: #fff; font-weight: 650; line-height: 1.2; transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease; }
.cf-segmented small { font-weight: 400; font-size: .82rem; color: var(--noyer); }
.cf-segmented input:checked + span { border-color: var(--terracotta); background: rgba(176, 74, 42, .08); box-shadow: inset 0 0 0 1px var(--terracotta); }
.cf-segmented input:focus-visible + span { outline: 3px solid var(--terracotta); outline-offset: 2px; }
.cf-segmented input[aria-invalid="true"] + span { border-color: #B42318; }
.cf-select:disabled { background-color: #F3EEE6; color: var(--noyer); cursor: not-allowed; }
.cf-note { margin: .45rem 0 0; font-size: .88rem; color: var(--terracotta-fonce); font-weight: 600; }
.cf-textarea--short { min-height: 90px; }

/* Liens de démonstration désactivés */
.social a[aria-disabled="true"], .social-card[aria-disabled="true"] { cursor: not-allowed; }
.social a[aria-disabled="true"] { opacity: .6; }
.social a[aria-disabled="true"]:hover { background: transparent; color: var(--craie); transform: none; }
.social-card[aria-disabled="true"] { opacity: .8; }
.social-card[aria-disabled="true"]:hover { transform: none; border-color: rgba(107, 74, 51, .16); }

.page-hero__tools { margin-top: 1.25rem; }
@media (max-width: 699.98px) { .map { min-height: 380px; } }
/* Barre mobile compacte : bouton principal toujours sur une ligne */
.call-bar { gap: .5rem; }
.call-bar__cta { white-space: nowrap; font-size: .95rem; padding-inline: .85rem; }
.call-bar__phone { width: 46px; height: 46px; }
.call-bar__info { font-size: .74rem; }
.call-bar__info strong { font-size: .78rem; }
@media (max-width: 369.98px) { .call-bar__cta { flex: 1 1 auto; } }
