/* Gabarit « Signature » : voir /app/lib/gabarits/signature.js. */

/* Polices : les fichiers de /socle.css (Fraunces : opsz 9 à 144). */
@font-face{font-family:"DM Sans";font-weight:100 1000;font-display:swap;src:url(/fonts/f1.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"DM Sans";font-weight:100 1000;font-display:swap;src:url(/fonts/f2.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Fraunces";font-style:italic;font-weight:100 900;font-display:swap;src:url(/fonts/f3.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}
@font-face{font-family:"Fraunces";font-style:italic;font-weight:100 900;font-display:swap;src:url(/fonts/f4.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Fraunces";font-style:italic;font-weight:100 900;font-display:swap;src:url(/fonts/f5.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Fraunces";font-weight:100 900;font-display:swap;src:url(/fonts/f6.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}
@font-face{font-family:"Fraunces";font-weight:100 900;font-display:swap;src:url(/fonts/f7.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Fraunces";font-weight:100 900;font-display:swap;src:url(/fonts/f8.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

/* ---------- Papier, encre, palette (bis : la carte ; clair : sur l'encre) */
.r{
  --carton:#FCF9F4;--encre:#171412;--encre-2:#4B433C;--filet:#CFC4B6;--nuit-1:#EFE8DC;--nuit-2:#B9AF9F;
  --serif:"Fraunces",Georgia,"Times New Roman",serif;
  --sans:"DM Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --marge:clamp(1.25rem,5vw,4.5rem);--gout:clamp(1rem,2.2vw,2rem);
  --large:min(84rem,100% - 2 * var(--marge));
  margin:0;background:var(--papier);color:var(--encre);
  font:400 1.0625rem/1.6 var(--serif);
  -webkit-text-size-adjust:100%;text-size-adjust:100%;
}
.r,.r--rouge{--accent:#B0201E;--accent-fonce:#8E1917;--accent-clair:#F2A594;--papier:#F6EEE4;--bis:#F0DDD3}
.r--or{--accent:#96601A;--accent-fonce:#7A4F13;--accent-clair:#E8B868;--papier:#F5EFE0;--bis:#EEE0C3}
.r--olive{--accent:#4F6B2E;--accent-fonce:#3C5222;--accent-clair:#BDD08F;--papier:#F2F0E4;--bis:#E2E5CD}
.r--ardoise{--accent:#2F4A6B;--accent-fonce:#233A55;--accent-clair:#AAC2E0;--papier:#F1F0EB;--bis:#DFE4EA}

/* Remises à zéro sans poids (:where). */
.r *,.r *::before,.r *::after{box-sizing:border-box}
:where(.r) img{display:block;max-width:100%;height:auto;object-fit:cover}
:where(.r) :is(p,h1,h2,h3,ul,ol,figure){margin:0;font-weight:inherit;font-size:inherit}
:where(.r) :is(ul,ol){list-style:none;padding:0}
:where(.r) a{color:inherit}
.r :focus-visible{outline:2px solid var(--accent);outline-offset:3px}

/* Petites capitales simulées (la police n'en a pas). */
.s-pc,.s-pied__nom{font-family:var(--sans);font-size:.75rem;font-weight:600;line-height:1.5;letter-spacing:.16em;text-transform:uppercase}
.s-cache{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

.s-tete,.s-sommaire,.s-avis,.s-rub,.s-contact,.s-pied{width:var(--large);margin-inline:auto}
/* Un aplat bord à bord, sans défilement horizontal. */
.s-rub--carte{background:var(--bis);border-image:linear-gradient(var(--bis),var(--bis)) fill 0//0 100vw}
.s-contact,.s-pied{background:var(--encre);border-image:linear-gradient(var(--encre),var(--encre)) fill 0//0 100vw}

/* ---------- Boutons et liens */
.s-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem;margin-top:2rem}
.s-btn{
  display:inline-flex;flex:1 1 100%;align-items:center;justify-content:center;min-height:3.25rem;padding:.8rem 1.4rem;
  border:1px solid var(--accent-fonce);font:600 .9375rem/1.3 var(--sans);letter-spacing:.08em;text-transform:uppercase;
  text-align:center;text-decoration:none;text-wrap:balance;transition:background-color .2s,color .2s,border-color .2s;
}
.r a.s-btn{background:var(--accent-fonce);color:var(--papier)}
.r a.s-btn--trait{background:transparent;border-color:var(--encre);color:var(--encre)}
.r a.s-btn:hover{background:var(--encre);border-color:var(--encre);color:var(--papier)}
.s-lien{
  display:inline-flex;align-items:center;min-height:44px;min-width:44px;font:500 .875rem/1.3 var(--sans);letter-spacing:.02em;
  text-decoration:underline 1px var(--accent);text-underline-offset:.35em;
}
.s-lien:hover{text-decoration-thickness:2px}
/* Points de conduite, après le dernier mot. */
.s-mene{overflow:hidden}
.s-mene::after{content:"";display:inline-block;width:100vw;margin:0 -100vw 0 .5em;border-bottom:1px dotted var(--encre-2);vertical-align:.3em}

/* ---------- L'en-tête : le frontispice (centré sur téléphone) */
.s-tete{padding-top:.75rem}
.s-bandeau{display:flex;justify-content:space-between;gap:1rem;padding-bottom:.55rem;border-bottom:4px double var(--accent);color:var(--encre-2)}
.s-bandeau p:first-child{flex:none}
.s-bandeau p+p{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.s-couverture{margin-top:1.25rem;padding:.4rem;border:1px solid var(--encre)}
.s-couverture img{width:100%;aspect-ratio:4/5;max-height:42vh;max-height:42svh}
.s-tete--paysage .s-couverture img,.s-tete--large .s-couverture img{aspect-ratio:3/2}
.s-frontispice{padding-top:clamp(1.75rem,6vw,5rem);text-align:center}
.s-nom{
  font-weight:340;font-size:clamp(2.9rem,1.4rem + 7vw,7.25rem);line-height:.98;letter-spacing:-.02em;
  text-wrap:balance;overflow-wrap:anywhere;
}
.s-nom em{font-weight:300}
.s-nom--long{font-size:clamp(2.4rem,1.3rem + 4.6vw,5.5rem);line-height:1.02}
.s-nom--tres-long{font-size:clamp(1.9rem,1.2rem + 3.2vw,4rem);line-height:1.06;letter-spacing:-.01em}
.s-orne{display:flex;align-items:center;justify-content:center;gap:.7rem;margin:clamp(1.4rem,4vw,2.4rem) 0 clamp(1.1rem,3vw,1.75rem);color:var(--accent)}
.s-orne::before,.s-orne::after{content:"";height:1px;background:var(--accent);flex:0 0 3rem}
.s-orne span{width:.5rem;height:.5rem;background:currentColor;transform:rotate(45deg)}
.s-accroche{
  max-width:26em;margin-inline:auto;font-style:italic;font-weight:350;font-size:clamp(1.25rem,1.05rem + .9vw,1.625rem);line-height:1.4;
  color:var(--encre-2);text-wrap:balance;overflow-wrap:anywhere;
}
.s-rdv{max-width:32rem;margin:1.75rem auto 0;padding-top:1rem;border-top:1px solid var(--filet)}
.s-rdv__quand{color:var(--accent-fonce)}
.s-rdv__ou{margin-top:.3rem;font-size:1.125rem;line-height:1.45;overflow-wrap:anywhere}
.s-rdv__ou span+span::before{content:"\B7\A0";color:var(--encre-2)}
.s-rdv__h{font:500 1rem/1.45 var(--sans)}
.s-rdv__suite{margin-top:.1rem}

/* Sans photo : le frontispice entre deux filets doubles, un sceau. */
.s-tete--nu .s-frontispice{padding-block:clamp(3rem,12vw,7.5rem);border-bottom:4px double var(--accent)}
.s-tete--nu .s-nom{font-size:clamp(3.1rem,1.4rem + 8vw,8.5rem)}
.s-tete--nu .s-nom--long{font-size:clamp(2.5rem,1.3rem + 5.2vw,6rem)}
.s-tete--nu .s-nom--tres-long{font-size:clamp(2rem,1.2rem + 3.4vw,4.25rem)}

/* Le sceau : l'initiale dans un double cercle. */
.s-sceau{display:grid;place-items:center;width:5.75rem;height:5.75rem;margin:0 auto 2.25rem;border:1px solid var(--accent);border-radius:50%;outline:1px solid var(--accent);outline-offset:-6px;font-style:italic;font-weight:300;font-size:2.75rem;line-height:1;color:var(--accent)}
.s-sceau span{transform:translateY(-.04em)}
.s-sceau--petit{width:3.5rem;height:3.5rem;margin-bottom:1rem;outline-offset:-4px;font-size:1.6rem}

/* ---------- L'encart du moment, le sommaire */
.s-avis{margin-top:clamp(2.75rem,8vw,5rem);padding:1.75rem 0 2rem;border-block:4px double var(--encre);text-align:center}
.s-avis__titre{color:var(--accent-fonce)}
.s-avis__texte{max-width:30em;margin:.9rem auto 0;font-style:italic;font-size:clamp(1.2rem,1.05rem + .8vw,1.625rem);line-height:1.45;text-wrap:balance;overflow-wrap:anywhere}
.s-avis__texte p+p{margin-top:.6em}
.s-avis__date{margin-top:1.1rem;color:var(--encre-2)}

.s-sommaire{margin-top:clamp(2.5rem,7vw,4rem);text-align:center}
.s-sommaire__titre{color:var(--encre-2);padding-bottom:.4rem}
.s-sommaire ol{display:flex;flex-wrap:wrap;justify-content:center;column-gap:1.4rem;padding-block:.2rem .5rem;border-block:1px solid var(--filet)}
.s-sommaire li{min-width:0}
.s-sommaire__lien{display:flex;align-items:baseline;gap:.4rem;min-height:44px;padding-top:.65rem;text-decoration:none;line-height:1.25;text-align:left}
.s-sommaire__num{flex:none;font-style:italic;color:var(--accent-fonce)}
.s-sommaire__nom{min-width:0;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-wrap:anywhere}
.s-sommaire__lien:hover .s-sommaire__nom{text-decoration:underline 1px var(--accent);text-underline-offset:.3em}

/* ---------- Les rubriques : un filet, un numéro, un titre */
.s-rub{padding-top:clamp(4rem,11vw,7rem)}
.s-rub::before{content:"";display:block;border-top:1px solid var(--accent);margin-bottom:1.1rem;transform-origin:left}
.s-rub__tete{margin-bottom:2rem}
.s-num{margin-bottom:.5rem;font-style:italic;font-weight:300;font-size:clamp(2rem,1.7rem + 1.2vw,2.75rem);line-height:1;color:var(--accent)}
.s-titre{font-weight:380;font-size:clamp(2.35rem,1.5rem + 3.2vw,4rem);line-height:1.04;letter-spacing:-.01em;text-wrap:balance;overflow-wrap:anywhere}
.s-texte{max-width:35em;font-size:clamp(1.0625rem,1rem + .3vw,1.1875rem);line-height:1.65;text-wrap:pretty;hyphens:auto;overflow-wrap:break-word}
.s-texte p+p{margin-top:1em}
.s-etiquette{color:var(--encre-2);margin-bottom:.5rem}
.s-rub--breve{padding-top:clamp(3rem,9vw,5rem)}
.s-rub--breve .s-rub__tete{margin-bottom:1.25rem}

/* La lettrine de « Qui nous sommes ». */
.s-rub--lettrine .s-texte>p:first-child::first-letter{float:left;margin:.07em .09em 0 0;font-size:4.1em;line-height:.8;font-weight:300;color:var(--accent)}
@supports (initial-letter:3){
  .s-rub--lettrine .s-texte>p:first-child::first-letter{float:none;margin:0 .1em 0 0;font-size:inherit;line-height:inherit;initial-letter:3}
}

/* ---------- Le semainier (téléphone : frise, puis jours de marché) */
.s-frise{display:flex;justify-content:space-between;max-width:23rem;margin-bottom:1.75rem}
.s-frise__j{display:grid;place-items:center;width:2.4rem;height:2.4rem;border:1px solid var(--filet);border-radius:50%;font:600 .8125rem/1 var(--sans);color:var(--encre-2)}
.s-frise__j--oui{background:var(--accent-fonce);border-color:var(--accent-fonce);color:var(--papier)}
.s-frise__j--auj{box-shadow:0 0 0 3px var(--papier),0 0 0 4px var(--accent)}
.s-semaine{border-bottom:1px solid var(--filet)}
.s-jour{display:grid;grid-template-columns:6.25rem minmax(0,1fr);column-gap:1rem;padding-block:1.1rem;border-top:1px solid var(--filet)}
.s-jour--libre:not(.s-jour--auj){display:none}
.s-jour__nom{font-style:italic;font-size:1.25rem;line-height:1.3}
.s-jour__auj{display:block;margin-top:.25rem;font-style:normal;color:var(--accent-fonce)}
.s-jour--auj{border-top:2px solid var(--accent)}
.s-jour__rien{align-self:center;font-style:italic;color:var(--encre-2)}
.s-jour__marches{display:grid;gap:1.4rem}
.s-marche__commune{font-size:1.375rem;line-height:1.2;overflow-wrap:anywhere;hyphens:auto}
.s-marche__lieu{margin-top:.15rem;font-style:italic;color:var(--encre-2);line-height:1.4;overflow-wrap:anywhere}
.s-marche__heures{margin-top:.3rem;font:500 .9375rem/1.4 var(--sans);overflow-wrap:anywhere}

/* ---------- La boutique */
.s-boutique{display:grid;gap:2.25rem}
.s-adresse{font-size:1.5rem;font-weight:350;line-height:1.3;text-wrap:balance;overflow-wrap:anywhere}
.s-horaire{display:grid;grid-template-columns:minmax(5.5rem,1fr) auto;column-gap:.6rem;align-items:last baseline;padding-block:.45rem}
.s-horaire__jour{font-size:1.0625rem;white-space:nowrap}
.s-horaire__h{font:500 .9375rem/1.4 var(--sans);text-align:right}
.s-horaire--ferme .s-horaire__h{font:italic 400 1rem/1.4 var(--serif);color:var(--encre-2)}
.s-horaire--auj :is(.s-horaire__jour,.s-horaire__h){font-style:italic;color:var(--accent-fonce)}
.s-horaire--auj .s-horaire__jour::after{border-bottom-color:var(--accent)}

/* ---------- La carte, comme un menu imprimé, sur son papier */
.s-rub--carte{margin-top:clamp(4rem,11vw,7rem);padding-block:clamp(3rem,9vw,5.5rem)}
.s-rub--carte::before{display:none}
.s-rub--carte .s-rub__tete{text-align:center}
.s-menu{padding-block:2rem 1.25rem;border-block:4px double var(--encre)}
.s-menu__groupe+.s-menu__groupe{margin-top:2.25rem}
.s-menu__groupe--court{break-inside:avoid}
.s-menu:not(.s-menu--colonnes) .s-menu__groupe{max-width:42rem;margin-inline:auto}
.s-menu__cat{display:flex;align-items:center;gap:1rem;margin-bottom:.75rem;text-align:center;color:var(--accent-fonce);overflow-wrap:anywhere}
.s-menu__cat::before,.s-menu__cat::after{content:"";flex:1 1 1.5rem;min-width:1.5rem;border-top:1px solid var(--accent)}
.s-plat{padding-block:.7rem;break-inside:avoid}
.s-plat__ligne{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:.5rem;align-items:last baseline}
.s-plat__nom{font-size:1.1875rem;font-weight:450;line-height:1.3;overflow-wrap:anywhere}
.s-plat__prix{font-size:1.125rem;font-weight:450;text-align:right;white-space:nowrap}
.s-plat__desc{max-width:32em;margin-top:.2rem;font-style:italic;font-size:1rem;line-height:1.45;color:var(--encre-2);overflow-wrap:anywhere}
.s-plat__allergenes{margin-top:.35rem;font:600 .6875rem/1.5 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--encre-2);overflow-wrap:anywhere}

/* ---------- Les photos */
.s-galerie{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}
.s-photo img{width:100%}

/* ---------- La carte de visite sur l'encre, le colophon */
.s-contact{margin-top:clamp(4.5rem,13vw,9rem);padding-block:clamp(3rem,10vw,6.5rem) clamp(2.5rem,7vw,4.5rem)}
.s-rub--carte+.s-contact{margin-top:0}
.s-visite{
  max-width:60rem;margin-inline:auto;padding:clamp(2.25rem,6vw,3.75rem) clamp(1.25rem,5vw,3.75rem);color:var(--encre);
  background:var(--carton);border:1px solid var(--accent);outline:1px solid var(--accent);outline-offset:-8px;text-align:center;
}
.s-visite__titre{color:var(--accent-fonce);margin-bottom:1.75rem}
.s-visite__nom{font-weight:350;font-size:clamp(1.75rem,1.3rem + 2vw,2.625rem);line-height:1.08;text-wrap:balance;overflow-wrap:anywhere}
.s-visite__metier{margin-top:.7rem;color:var(--encre-2);overflow-wrap:anywhere}
.s-visite__tel{margin-top:1.1rem}
.s-visite__num{display:inline-flex;align-items:center;min-height:44px;font-weight:350;font-size:clamp(2.1rem,1.5rem + 2.8vw,3.25rem);letter-spacing:-.01em;text-decoration:none;white-space:nowrap;color:var(--accent-fonce)}
.s-visite__num:hover{color:var(--encre)}
.s-visite__tel--vide{font-style:italic;color:var(--encre-2)}
.s-visite .s-actions{margin-top:1rem}
.s-visite__dos{display:grid;gap:1.1rem;justify-items:center;margin-top:2rem;padding-top:1.75rem;border-top:1px solid var(--filet)}
.s-visite__adresse{font-size:1.125rem;line-height:1.4;overflow-wrap:anywhere}
.s-visite__adresse+p{margin-top:-.9rem}
.s-visite__services{display:flex;flex-wrap:wrap;justify-content:center;gap:.35rem 1.1rem;color:var(--encre-2)}
.s-visite__reseaux{display:flex;flex-wrap:wrap;justify-content:center;gap:0 1.5rem;max-width:100%}
.s-visite__reseaux li{min-width:0;max-width:100%}
.s-visite__reseaux .s-lien{overflow-wrap:anywhere}
.s-pied{padding-block:.5rem 3rem;text-align:center;color:var(--nuit-2);font-size:.9375rem}
.s-pied .s-sceau{border-color:var(--accent-clair);outline-color:var(--accent-clair);color:var(--accent-clair)}
.s-pied__nom{color:var(--nuit-1);overflow-wrap:anywhere}
.s-pied__mention{margin-top:.4rem}
.s-pied a{display:inline-flex;align-items:center;min-height:44px;text-underline-offset:.3em}
.s-pied :focus-visible{outline-color:var(--accent-clair)}

/* ---------- Téléphone : l'appel de l'en-tête devient la barre du bas */
@media (max-width:47.99em){
  .s-tete .s-btn--appel{position:fixed;z-index:10;inset:auto 0 0;min-height:calc(3.6rem + env(safe-area-inset-bottom));padding-bottom:calc(.8rem + env(safe-area-inset-bottom));box-shadow:0 -1px 0 var(--papier),0 -8px 22px rgb(23 20 18/.2)}
  .s-tete .s-btn--appel:focus-visible{outline:2px solid var(--papier);outline-offset:-7px}
  .s-actions--appel{margin:0}
  :root:has(.s-btn--appel){scroll-padding-bottom:5rem}
  .r:has(.s-btn--appel) .s-pied{padding-bottom:calc(6.5rem + env(safe-area-inset-bottom))}
  .s-rdv__h{display:block}
  .s-rdv__ou .s-rdv__h::before{content:none}
}
@media (max-width:22em){
  .s-jour{grid-template-columns:minmax(0,1fr)}
  .s-frise__j{width:2.1rem;height:2.1rem}
}
@media (max-width:59.99em){
  .s-galerie>:first-child{grid-column:1/-1}
  .s-galerie>:first-child img{max-height:80svh}
  .s-galerie>:not(:first-child) img{aspect-ratio:4/5}
  .s-galerie>:last-child:nth-child(even){grid-column:1/-1}
  .s-galerie>:last-child:nth-child(even) img{aspect-ratio:3/2}
}
@media (min-width:48em){
  .s-btn{flex:0 1 auto}
}

/* ---------- Ordinateur : la grille de douze colonnes */
@media (min-width:60em){
  .s-tete--cote .s-tete__grille{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gout);align-items:center;padding:clamp(2.5rem,5vw,4.5rem) 0 1rem}
  .s-tete--cote .s-frontispice{grid-area:1/1/2/8;padding:0 1rem 0 0;text-align:left}
  .s-tete--cote .s-couverture{grid-area:1/8/2/13;margin:0;padding:.7rem}
  .s-tete--haut .s-frontispice{grid-column:1/9}
  .s-tete--haut .s-couverture{grid-column:9/13}
  .s-tete--paysage .s-frontispice{grid-column:1/7}
  .s-tete--paysage .s-couverture{grid-column:7/13}
  .s-tete--cote .s-couverture img{aspect-ratio:auto;max-height:calc(100vh - 10rem)}
  .s-tete--cote :is(.s-orne,.s-actions){justify-content:flex-start}
  .s-tete--cote .s-orne::before{flex-basis:4rem}
  .s-tete--cote .s-orne::after{flex-basis:1.25rem}
  .s-tete--cote :is(.s-accroche,.s-rdv){margin-inline:0;text-wrap:pretty}
  .s-tete--bandeau .s-tete__grille{display:flex;flex-direction:column}
  .s-tete--bandeau .s-couverture{order:2;margin-top:3.5rem;padding:0;border:0}
  .s-tete--bandeau .s-couverture img{aspect-ratio:auto;max-height:78vh}
  .s-tete--nu .s-frontispice{min-height:min(46rem,78vh);display:flex;flex-direction:column;justify-content:center}
  :is(.s-tete--nu,.s-tete--bandeau) .s-actions{max-width:40rem;margin-inline:auto}

  .s-sommaire{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gout);text-align:left}
  .s-sommaire__titre{grid-column:1/3;padding-top:.8rem;border-top:1px solid var(--filet)}
  .s-sommaire ol{grid-column:3/-1;display:grid;grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));column-gap:var(--gout);padding:0;border-top:0}
  .s-sommaire__lien{padding:.7rem 0 .6rem;border-top:1px solid var(--filet)}
  .s-sommaire__num{flex-basis:2em}

  .s-rub{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gout)}
  .s-rub::before{grid-column:1/-1;margin-bottom:1.5rem}
  .s-rub--cote .s-rub__tete{grid-column:1/5;position:sticky;top:2rem;align-self:start;padding-right:1rem}
  .s-rub--cote .s-titre{font-size:clamp(2.5rem,1.4rem + 2.2vw,3.5rem)}
  .s-rub--cote .s-rub__corps{grid-column:5/-1;padding-top:.35rem}
  .s-rub--large .s-rub__tete,.s-rub--large .s-rub__corps{grid-column:1/-1}
  .s-rub--large .s-rub__tete{margin-bottom:3rem}

  .s-breves{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(2rem,4vw,4rem);width:var(--large);margin-inline:auto}
  .s-breves--3{grid-template-columns:repeat(3,minmax(0,1fr))}
  .s-breves .s-rub{display:block;width:auto;margin:0;padding-top:clamp(4rem,9vw,6.5rem)}
  .s-breves .s-rub__tete{position:static;margin-bottom:1.25rem;padding:0}
  .s-breves .s-titre{font-size:clamp(2rem,1.3rem + 1.3vw,2.625rem)}
  .s-breves .s-texte{font-size:1.0625rem}
  .s-breves .s-actions{margin-top:1.5rem}
  .s-breves .s-btn{flex-basis:100%;font-size:.875rem}

  .s-frise{display:none}
  .s-semaine{display:flex;gap:var(--gout);border:0}
  .s-jour,.s-jour--libre:not(.s-jour--auj){display:block;flex:1 1 0;min-width:0;padding:1rem 0 0;border-top:1px solid var(--encre)}
  .s-jour:not(.s-jour--libre){flex-grow:2}
  .s-jour--auj{border-top:3px solid var(--accent);padding-top:calc(1rem - 2px)}
  .s-jour__nom{min-height:3.4rem;margin-bottom:.9rem}
  .s-jour--libre::after{content:"";display:block;height:6rem;background:repeating-linear-gradient(135deg,transparent 0 7px,var(--filet) 7px 8px);opacity:.55}

  .s-menu{padding-block:2.75rem 2rem}
  .s-menu--colonnes{columns:2;column-gap:5rem;column-rule:1px solid var(--filet)}
  .s-menu__cat{break-after:avoid}

  /* Une grande, deux petites à sa hauteur, puis une petite et une grande. */
  .s-galerie{grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--gout)}
  .s-galerie img{height:100%;aspect-ratio:7/6}
  .s-galerie>:nth-child(1){grid-column:1/8;grid-row:1/3}
  .s-galerie>:nth-child(1) img{aspect-ratio:4/5}
  .s-galerie>:nth-child(2){grid-column:8/13}
  .s-galerie>:nth-child(3){grid-column:8/13;grid-row:2}
  .s-galerie>:nth-child(4){grid-column:1/6;grid-row:3}
  .s-galerie>:nth-child(4) img{aspect-ratio:1}
  .s-galerie>:nth-child(5){grid-column:6/13;grid-row:3}
  .s-galerie>:nth-child(5) img{aspect-ratio:3/2}
  .s-galerie--n2>*{grid-row:auto;align-self:end}
  .s-galerie--n2>:nth-child(2){grid-column:8/12}
  .s-galerie--n2 img{height:auto;aspect-ratio:4/5}
  .s-galerie--n4>:nth-child(4){grid-column:3/11}
  .s-galerie--n4>:nth-child(4) img{aspect-ratio:2/1}
  .s-galerie--n1>:nth-child(1){grid-column:3/11;grid-row:auto}
  .s-galerie--n1>:nth-child(1) img{height:auto;aspect-ratio:auto;max-height:85vh}

  .s-visite{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;text-align:left}
  .s-visite__titre{grid-column:1/-1;text-align:center}
  .s-visite__face{padding-right:3rem}
  .s-visite__dos{justify-items:start;margin:0;padding:0 0 0 3rem;border-top:0;border-left:1px solid var(--filet)}
  .s-visite .s-actions,.s-visite__services,.s-visite__reseaux{justify-content:flex-start}
  .s-visite--seule{grid-template-columns:minmax(0,1fr);text-align:center}
  .s-visite--seule .s-visite__face{padding:0}
  .s-visite--seule .s-actions{justify-content:center}
}
@media (min-width:75em){
  .s-boutique{grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:4rem}
}

/* ---------- Le mouvement (sous no-preference seulement) */
@media screen and (prefers-reduced-motion:no-preference){
  .s-orne::before,.s-orne::after{animation:s-trace 1.1s .2s cubic-bezier(.2,.65,.2,1) both}
  .s-orne::before{transform-origin:right}
  .s-orne::after{transform-origin:left}
  .s-nom{animation:s-encre 1.3s cubic-bezier(.2,.65,.2,1) both}
  .s-couverture img{animation:s-devoile 1.2s .3s cubic-bezier(.6,0,.2,1) both}
  .s-accroche,.s-actions>*,.s-rdv,.s-pc{animation:s-monte .8s .5s both}
  .s-tete .s-sceau{animation:s-cachet .6s .6s cubic-bezier(.5,0,.4,1.4) both}
  @supports (animation-timeline:view()){
    .s-rub::before{animation:s-trace linear both;animation-timeline:view();animation-range:entry 0% cover 35%}
    .s-rub__tete,.s-texte>p,.s-menu__cat,.s-plat,.s-marche,.s-jour,.s-horaire,.s-photo,.s-visite{animation:s-monte linear both;animation-timeline:view();animation-range:entry 0% entry 75%}
    .s-plat__prix{animation:s-prix linear both;animation-timeline:view();animation-range:entry 20% entry 90%}
  }
}
@keyframes s-trace{from{transform:scaleX(0)}}
@keyframes s-encre{from{opacity:0;letter-spacing:.05em;filter:blur(8px)}}
@keyframes s-devoile{from{clip-path:inset(0 0 100% 0)}}
@keyframes s-monte{from{opacity:0;translate:0 1.1rem}}
@keyframes s-cachet{from{opacity:0;scale:1.9;rotate:-30deg}}
@keyframes s-prix{from{opacity:0;translate:1.5rem 0}}

/* ---------- L'impression : ni barre fixe ni aplat, rien de coupé */
@media print{
  .r{background:none}
  .s-tete .s-btn--appel{position:static;box-shadow:none}
  .s-rub--carte,.s-contact,.s-pied{background:none;border-image:none;color:var(--encre)}
  .s-pied :is(.s-sceau,.s-pied__nom){color:var(--encre);border-color:currentColor;outline-color:currentColor}
  .s-rub__tete{position:static;break-after:avoid}
  .s-couverture img,.s-galerie img{max-height:40vh}
  .s-photo,.s-visite,.s-jour,.s-rub__tete,.s-rdv,.s-pied{break-inside:avoid}
}

/* L'aperçu : sans barre de défilement. */
:root:has(> body.r--apercu){scrollbar-width:none}
:root:has(> body.r--apercu)::-webkit-scrollbar{display:none}
