/* Gabarit « Vivant » (intentions : /app/lib/gabarits/vivant.js). Mobile d'abord, ordinateur
   dès 60rem ; la page posée (et imprimée), puis le mouvement, écran seul. */

@font-face{font-family:"DM Sans";font-weight:100 1000;font-display:swap;src:url(/fonts/f1.woff2) format("woff2");unicode-range:U+0100-02FF,U+0304,U+0308,U+0329,U+1D00-1EFF,U+20A0-20C0,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")}
@font-face{font-family:"Fraunces";font-style:italic;font-weight:100 900;font-display:swap;src:url(/fonts/f5.woff2) format("woff2")}

/* Palettes : chaque couple texte et fond passe AA ; flamme : décor. */
.r--g-vivant, .r--g-vivant.r--rouge{--nuit:#1C1411;--clair:#F7EEE4;--clair-2:#C9B8AA;--vif:#FF917B;--creme:#F6EDE1;--encre:#211712;--encre-2:#6A5446;--fonce:#8E1917;
  --aplat:#B0201E;--sur-aplat:#F7EEE4;--sur-aplat-2:#F4D9C8;--store:#7E1614;--cta:#B0201E;--sur-cta:#F7EEE4;--flamme:#FF7A45;}
.r--g-vivant.r--or{--nuit:#1B160F;--clair:#F7EFE2;--clair-2:#C9BBA5;--vif:#EDB660;--creme:#F6EEDF;--encre:#211910;--encre-2:#6A5640;--fonce:#7A4F13;
  --aplat:#E6AC52;--sur-aplat:#1B160F;--sur-aplat-2:#4A3A22;--store:#96601A;--cta:#EDB660;--sur-cta:#1B160F;--flamme:#FFC56B;}
.r--g-vivant.r--olive{--nuit:#141810;--clair:#F1F0E4;--clair-2:#BFC2AE;--vif:#B7D183;--creme:#F2F0E3;--encre:#1A1D14;--encre-2:#545A45;--fonce:#3C5222;
  --aplat:#4F6B2E;--sur-aplat:#F1F0E4;--sur-aplat-2:#E3ECCF;--store:#3C5222;--cta:#B7D183;--sur-cta:#141810;--flamme:#F2B84B;}
.r--g-vivant.r--ardoise{--nuit:#10151C;--clair:#EEF0F2;--clair-2:#B6BFCB;--vif:#A3C1E6;--creme:#F3F0EA;--encre:#141A22;--encre-2:#4E5A69;--fonce:#233A55;
  --aplat:#2F4A6B;--sur-aplat:#EEF0F2;--sur-aplat-2:#D8E3F1;--store:#233A55;--cta:#A3C1E6;--sur-cta:#10151C;--flamme:#F59A4E;}

.r--g-vivant, .v-s-nuit{--fond:var(--nuit);--texte:var(--clair);--texte-2:var(--clair-2);--relief:var(--vif);--b-fond:var(--cta);--b-texte:var(--sur-cta);--filet:color-mix(in srgb,var(--clair) 17%,transparent);}
.v-s-creme{--fond:var(--creme);--texte:var(--encre);--texte-2:var(--encre-2);--relief:var(--fonce);--b-fond:var(--nuit);--b-texte:var(--clair);--filet:color-mix(in srgb,var(--encre) 16%,transparent);}
.v-s-aplat, .v-marche--jour{--fond:var(--aplat);--texte:var(--sur-aplat);--texte-2:var(--sur-aplat-2);--relief:var(--sur-aplat);--b-fond:var(--nuit);--b-texte:var(--clair);--filet:color-mix(in srgb,var(--sur-aplat) 30%,transparent);}
.v-s-nuit, .v-s-creme, .v-s-aplat, .v-marche--jour{background:var(--fond); color:var(--texte);}
.v-tete{--bande:var(--aplat);--sur-bande:var(--sur-aplat);}
.v-tete--sans{--fond:var(--aplat);--texte:var(--sur-aplat);--b-fond:var(--nuit);--b-texte:var(--clair);--bande:var(--nuit);--sur-bande:var(--clair);}

.r--g-vivant{--marge:clamp(1rem,4.5vw,3.5rem); --pas:clamp(3.75rem,8vw,6.25rem); margin:0; background:var(--nuit); color:var(--clair); overflow-x:clip; overflow-wrap:anywhere;
  font:1.0625rem/1.6 "DM Sans",system-ui,sans-serif; font-variant-numeric:tabular-nums; -webkit-text-size-adjust:100%; text-size-adjust:100%;}
:root:has(.v-appel){scroll-padding-bottom:6rem;}
:where(.r--g-vivant) *{box-sizing:border-box;}
:where(.r--g-vivant) img{display:block; max-width:100%; height:auto;}
:where(.r--g-vivant) a{color:inherit; text-underline-offset:.2em; text-decoration-thickness:1px;}
:where(.r--g-vivant) :is(p,ul,ol,h1,h2,h3){margin:0;}
.r--g-vivant :focus-visible{outline:3px solid var(--focus,var(--texte)); outline-offset:3px; border-radius:6px;}
.v-cache{position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap;}
.v-nom, .v-titre, .v-marche__jour, .v-tel{font-weight:800; line-height:.97; letter-spacing:-.04em; text-wrap:balance;}

.v-actions{display:flex; flex-wrap:wrap; gap:.65rem;}
.v-btn, .v-direct, .v-marque-jour, .v-appel a, .v-nav a{display:inline-flex; align-items:center; justify-content:center; border-radius:999px; text-decoration:none;}
.v-btn{flex-wrap:wrap; column-gap:.4em; min-height:3.25rem; padding:.65rem 1.3rem; border:2px solid transparent; font-weight:700; line-height:1.25; text-align:center;}
.v-btn--cta{background:var(--b-fond); color:var(--b-texte);}
.v-btn--contour{border-color:currentColor; color:var(--texte);}
.v-btn:hover{background:var(--texte); border-color:var(--texte); color:var(--fond);}
.v-btn__num{font-weight:500; white-space:nowrap;}
.v-fleche{display:inline-flex; align-items:center; gap:.55rem; min-height:44px; font-weight:700; text-decoration:none;}
.v-fleche::after{content:""; width:.5rem; height:.5rem; border:solid currentColor; border-width:2px 2px 0 0; rotate:45deg;}
.v-fleche:hover, .v-direct:hover, .v-nav a:hover{text-decoration:underline;}
.v-point{position:relative; display:inline-block; flex:none; width:.6em; height:.6em; border-radius:50%; background:var(--flamme);}
.v-point::after{content:""; position:absolute; inset:0; border-radius:50%; border:2px solid var(--flamme); opacity:0;}
.v-defile__piste li::before, .v-services li::before{content:""; flex:none; width:.5em; height:.5em; background:currentColor; clip-path:polygon(50% 0,61% 39%,100% 50%,61% 61%,50% 100%,39% 61%,0 50%,39% 39%);}

.v-tete{position:relative; isolation:isolate; display:flex; flex-direction:column; min-height:100svh; overflow:clip; background:var(--fond); color:var(--texte);}
.v-tete__photo{position:absolute; inset:0; z-index:-1; overflow:hidden; background:var(--nuit);}
.r--g-vivant .v-tete__img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover;}
.v-tete__photo::after{content:""; position:absolute; inset:0; background:linear-gradient(rgb(0 0 0/.7),rgb(0 0 0/.4) 3.5rem,transparent 8rem 55%,var(--nuit));}
.v-tete__haut{display:flex; align-items:center; justify-content:space-between; gap:1rem; min-height:4.5rem; padding:.75rem var(--marge) 0;}
.v-marque{display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; max-width:36rem; font-size:.78rem; font-weight:800; letter-spacing:.18em; text-transform:uppercase;}
.v-marque span{font:italic 500 1.2rem "Fraunces",Georgia,serif; letter-spacing:0; text-transform:none;}
.v-nav{display:none;}
.v-tete__corps{position:relative; order:2; margin-top:auto; max-width:62rem; padding:1.5rem var(--marge) .75rem;}
.v-direct, .v-marque-jour{gap:.6rem; background:var(--nuit); color:var(--clair); line-height:1.3;}
.v-direct{min-height:44px; margin-bottom:1.1rem; padding:.45rem 1.05rem .45rem .9rem; font-size:.95rem; font-weight:600;}
.v-nom{--k:1; --vw:18vw; margin-bottom:1.1rem; font-size:min(calc(var(--k) * var(--vw)),calc(var(--k) * 11rem)); letter-spacing:-.035em;}
.v-nom--l{--k:.79;} .v-nom--m{--k:.62;} .v-nom--s{--k:.48;}
.v-mot{display:inline-block; max-width:100%;}
.v-accroche{max-width:34rem; margin-bottom:1.6rem; font-size:clamp(1.1rem,4.2vw,1.35rem); line-height:1.45; text-wrap:pretty;}
.v-apercu-note{margin-top:1.25rem; font-size:.85rem; font-weight:600;}
.v-tete__decor{position:absolute; inset:0; z-index:-1; overflow:hidden;}
.v-store{position:absolute; inset:0 0 auto; height:3.6rem; background:repeating-linear-gradient(90deg,var(--store) 0 2.25rem,var(--creme) 0 4.5rem);
  mask:radial-gradient(circle at 50% 0,#000 1.12rem,transparent 1.16rem) 0 100%/2.25rem 1.125rem repeat-x, linear-gradient(#000 0 0) 0 0/100% calc(100% - 1.125rem) no-repeat;}
.v-braise{position:absolute; right:-50%; top:-14%; width:125%; aspect-ratio:1; border-radius:50%; background:radial-gradient(closest-side,color-mix(in srgb,var(--flamme) 60%,transparent),transparent); opacity:.6;}
.v-tete--sans .v-tete__haut{padding-top:3.9rem;}
.v-sceau{order:1; position:relative; z-index:2; flex:none; align-self:flex-end; width:6.4rem; height:6.4rem; margin:.5rem var(--marge) 0 0; overflow:visible;}
.v-tete--sans .v-sceau{width:8.5rem; height:8.5rem; margin-top:1.5rem;}
.v-sceau__disque{fill:var(--b-fond);}
.v-sceau__texte{fill:var(--b-texte); font-size:10.5px; font-weight:800; letter-spacing:.06em;}
.v-sceau__flamme{fill:var(--flamme);}
.v-sceau__tour{transform-origin:60px 60px;}
/* Le bandeau posé : trois éléments, pas de pause. */
.v-defile{order:4; position:relative; z-index:1; padding:1.6rem 0 1.9rem; overflow:clip; --focus:var(--sur-bande);}
.v-defile__bande{display:flex; align-items:center; width:116%; margin-left:-8%; padding:.8rem 8%; rotate:-2.5deg; background:var(--bande); color:var(--sur-bande);}
.v-defile__fenetre{display:flex; flex:1; min-width:0; overflow:hidden;}
.v-defile__piste{flex:1 1 100%; display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:.3rem 0; padding:0; list-style:none;}
.v-defile__piste li{display:flex; align-items:center; gap:.4em; padding:0 .9rem; font-size:clamp(1rem,3.8vw,1.4rem); font-weight:500; line-height:1.25; letter-spacing:-.01em;}
.v-defile__piste li::before{margin-right:1.25rem;}
.v-defile__piste b{font-size:.78em; font-weight:800; letter-spacing:.08em; text-transform:uppercase;}
.v-defile__piste li:is([aria-hidden],:nth-child(n+4)), .v-defile__piste li::before, .v-defile__double, .v-pause{display:none;}
.v-pause{flex:none; appearance:none; width:44px; height:44px; margin:0 var(--marge) 0 .4rem; border:2px solid; border-radius:50%; color:inherit; cursor:pointer;
  background:linear-gradient(currentColor 0 0) 13px 12px/5px 16px no-repeat, linear-gradient(currentColor 0 0) 22px 12px/5px 16px no-repeat;}
.v-pause:checked{background:conic-gradient(from 240deg at 100% 50%,currentColor 0 60deg,transparent 0) 15px 12px/14px 16px no-repeat;}

/* Deux surfaces pareilles à la suite : un intervalle, sans filet. */
.v-rub__in, .v-contact__in, .v-pied__in{width:min(78rem,100%); margin-inline:auto; padding-inline:var(--marge);}
.v-rub, .v-contact{padding-block:var(--pas);}
:is(.v-s-nuit + .v-s-nuit,.v-s-creme + .v-s-creme,.v-s-aplat + .v-s-aplat){padding-top:0;}
.v-sur{display:flex; align-items:center; gap:.7rem; margin-bottom:.9rem; color:var(--relief); font:italic 1.2rem/1.3 "Fraunces",Georgia,serif;}
.v-sur::after, .v-contact--seul .v-sur::before{content:""; flex:0 0 3.5rem; height:1px; background:currentColor; transform-origin:left;}
.v-titre{margin-bottom:2.25rem; font-size:clamp(2.4rem,10.5vw,5.4rem);}
.v-texte{max-width:38rem;}
.v-texte p{margin-bottom:1em; hyphens:auto; text-wrap:pretty;}
.v-texte p:last-child{margin-bottom:0;}
.v-texte--grand p:first-child{font-size:clamp(1.3rem,4.8vw,1.7rem); font-weight:500; line-height:1.38; letter-spacing:-.012em; hyphens:manual;}
.v-note{margin-top:1.5rem; color:var(--relief); font-weight:700;}
.v-rub--evenements .v-actions{margin-top:2.25rem;}

.v-marches, .v-horaires, .v-carte__liste, .v-galerie, .v-services, .v-reseaux{padding:0; list-style:none;}
.v-marches, .v-horaires{border-top:1px solid var(--filet);}
.v-marche{display:grid; grid-template-columns:minmax(0,1fr) auto; grid-template-areas:"jour jour" "lieu lieu" "heures lien"; align-items:center; gap:.4rem 1rem; padding:1.4rem 0 1rem; border-bottom:1px solid var(--filet);}
.v-marche__jour{grid-area:jour; display:flex; flex-wrap:wrap; align-items:center; gap:.4rem 1rem; font-size:clamp(2rem,9vw,3.4rem);}
.v-marche__lieu{grid-area:lieu;}
.v-marche__lieu strong{font-size:1.3rem; letter-spacing:-.01em;}
.v-marche__lieu span{color:var(--texte-2);}
.v-marche__heures{grid-area:heures; font-weight:600;}
.v-marche .v-fleche{grid-area:lien; justify-self:end;}
.v-marche--jour{margin-inline:calc(-1 * var(--marge)); padding-inline:var(--marge); border-bottom-color:transparent;}
.v-marche--jour + .v-marche--jour{box-shadow:inset 0 1px var(--filet);}
.v-marque-jour{gap:.5rem; padding:.3rem .8rem .3rem .65rem; font-size:.9rem; font-weight:700; letter-spacing:0;}

.v-boutique{display:grid; gap:2.5rem;}
.v-adresse{font-size:clamp(1.35rem,5vw,1.75rem); font-weight:700; line-height:1.3; letter-spacing:-.015em;}
.v-boutique__adresse .v-fleche{margin-top:.5rem;}
.v-horaires li{display:flex; flex-wrap:wrap; align-items:baseline; gap:.3rem .6rem; padding:.8rem 0; border-bottom:1px solid var(--filet);}
.v-horaires em{font:italic 1.05rem "Fraunces",Georgia,serif;}
.v-horaires__h{margin-left:auto; text-align:right;}
.v-horaires--ferme :is(b,.v-horaires__h){color:var(--texte-2); font-weight:400;}
.v-horaires--jour{color:var(--relief);}
.v-horaires--jour .v-horaires__h{font-weight:700;}

.v-carte__groupe + .v-carte__groupe{margin-top:3rem;}
.v-carte--longue .v-carte__groupe--court{break-inside:avoid;}
.v-carte__cat{margin-bottom:.4rem; padding-bottom:.6rem; border-bottom:3px solid var(--texte); color:var(--relief); font-size:clamp(1.5rem,6vw,2rem); font-weight:800; line-height:1.1; letter-spacing:-.03em; break-after:avoid;}
.v-plat{padding:1rem 0 1.05rem; border-bottom:1px solid var(--filet); break-inside:avoid;}
.v-plat__ligne{display:flex; align-items:baseline; justify-content:space-between; gap:1.25rem;}
.v-plat__nom{flex:1 1 auto; min-width:0; font-size:1.2rem; font-weight:700; line-height:1.3; letter-spacing:-.01em;}
.v-plat__prix{flex:none; max-width:48%; font-size:1.15rem; font-weight:800; text-align:right;}
.v-plat__desc{max-width:34rem; margin-top:.3rem; color:var(--texte-2);}
.v-plat__allergenes{margin-top:.35rem; color:var(--texte-2); font-size:.88rem;}

.v-galerie{display:flex; gap:.75rem; margin:0 calc(-1 * var(--marge)); padding:0 var(--marge) .25rem; overflow-x:auto; scroll-snap-type:x mandatory; scroll-padding-inline:var(--marge); scrollbar-width:none; overscroll-behavior-x:contain;}
.v-photo{flex:none; scroll-snap-align:start;}
.v-photo img{width:auto; height:min(64svh,26rem); max-width:84vw; object-fit:cover; border-radius:.6rem;}

.v-contact__in{display:grid; gap:2.75rem;}
.v-tel{margin-bottom:1.5rem; font-size:clamp(2.3rem,11vw,5.2rem); white-space:nowrap;}
.v-tel a{text-decoration:none;}
.v-tel a:hover{text-decoration:underline 3px;}
.v-tel--vide{color:var(--texte-2);}
.v-contact--seul .v-contact__in{justify-items:center; text-align:center;}
.v-contact--seul :is(.v-sur,.v-actions){justify-content:center;}
.v-contact__infos{display:grid; gap:1.5rem; align-content:start;}
.v-services{display:grid; gap:.45rem;}
.v-services li{display:flex; align-items:center; gap:.75rem; font-weight:600;}
.v-adresse--contact{font-size:1.2rem;}
.v-contact__lien{margin-top:-1rem;}
.v-reseaux{display:flex; flex-wrap:wrap; gap:0 1.75rem;}
.v-reseau{display:inline-flex; align-items:center; min-height:44px; font-weight:700;}

.v-appel{position:fixed; z-index:20; inset:auto 0 0; display:flex; gap:.5rem; padding:.6rem var(--marge) calc(.6rem + env(safe-area-inset-bottom)); background:var(--nuit); border-top:1px solid var(--filet);}
.v-appel a{flex:1; min-height:3.1rem; font-weight:800;}
.v-appel__tel{background:var(--cta); color:var(--sur-cta);}
.v-appel__wa{border:2px solid var(--clair); color:var(--clair);}
.v-pied{padding-block:2.5rem; color:var(--clair-2); font-size:.92rem;}
.v-appel ~ .v-pied{padding-bottom:calc(6.5rem + env(safe-area-inset-bottom));}
.v-pied__in{display:flex; flex-wrap:wrap; justify-content:space-between; gap:.75rem 2rem;}
.v-pied__nom{color:var(--clair); font-weight:700;}
.v-pied__nom span{color:var(--clair-2); font-weight:400;}
.v-pied a{display:inline-flex; align-items:center; min-height:44px;}

@media (max-width:59.99rem){
  .r--g-vivant:has(.v-appel) .v-tete:not(.v-tete--horizontal){min-height:calc(100svh - 4.3rem - env(safe-area-inset-bottom));}
  .r--g-vivant:has(.v-appel) .v-tete__corps .v-actions{display:none;}
  /* Portrait : le voile suit le texte. */
  .v-tete--vertical .v-tete__photo{bottom:18%;}
  .v-tete--vertical .v-tete__corps::before{content:""; position:absolute; z-index:-1; inset:-6rem 0 -30rem; background:linear-gradient(transparent,color-mix(in srgb,var(--nuit) 80%,transparent) 6rem,var(--nuit) 45%);}
  .v-tete--vertical :is(.v-nom,.v-accroche,.v-marque){text-shadow:0 1px 16px rgb(0 0 0/.4);}
  .v-tete--horizontal{--fond:var(--aplat);--texte:var(--sur-aplat);--b-fond:var(--nuit);--b-texte:var(--clair);--bande:var(--nuit);--sur-bande:var(--clair); min-height:0;}
  .v-tete--horizontal .v-tete__corps{order:1; margin-top:0; padding-top:1.5rem;}
  .v-tete--horizontal .v-sceau{order:2; margin:-1rem var(--marge) -3.2rem 0;}
  .v-tete--horizontal .v-tete__photo{order:3; position:relative; z-index:0; aspect-ratio:4/3;}
  .v-tete--f-large .v-tete__photo{aspect-ratio:16/9;}
  .v-tete--horizontal .v-tete__photo::after{content:none;}
  .v-tete--horizontal .v-defile{margin-top:-2.2rem;}
  .v-rub .v-btn{flex:1 1 100%;}
  .v-btn--deux{border-radius:1.6rem;}
  .v-btn--deux .v-btn__num{flex-basis:100%; font-size:1.25em; font-weight:800;}
}

@media (min-width:60rem){
  .r--g-vivant{font-size:1.125rem;}
  .v-nav{display:flex; gap:.25rem;}
  .v-nav a{flex:none; white-space:nowrap; min-height:44px; padding:0 .9rem; font-weight:600;}
  .v-tete__haut{padding-top:1.25rem;}
  .v-tete__corps{padding-bottom:1rem;}
  .v-nom{--vw:10.5vw;}
  .v-sceau{position:absolute; top:6.5rem; right:var(--marge); width:8.5rem; height:8.5rem; margin:0;}
  .v-braise{right:-14%; top:50%; width:72%; translate:0 -50%;}
  .v-tete--sans .v-sceau{top:50%; right:calc(var(--marge) + 5vw); width:clamp(12rem,20vw,17rem); height:auto; aspect-ratio:1; translate:0 -50%;}
  .v-tete--vertical{display:grid; grid-template:auto minmax(0,1fr) auto / minmax(0,1.08fr) minmax(0,.92fr);
    --fond:var(--aplat);--texte:var(--sur-aplat);--b-fond:var(--nuit);--b-texte:var(--clair);--bande:var(--nuit);--sur-bande:var(--clair);}
  .v-tete--vertical .v-tete__photo{position:relative; grid-area:1 / 2 / 3; z-index:0;}
  .v-tete--vertical .v-tete__photo::after{background:linear-gradient(90deg,rgb(0 0 0/.18),transparent 25%);}
  .v-tete--vertical .v-tete__haut{grid-area:1 / 1;}
  .v-tete--vertical .v-tete__corps{grid-area:2 / 1; padding-right:3.5rem;}
  .v-tete--vertical .v-defile{grid-area:3 / 1 / 4 / 3; margin-top:-2.5rem;}
  .v-tete--vertical .v-sceau{top:42%; right:auto; left:calc(54% - 4.25rem);}
  .v-tete--vertical .v-nom{--vw:8.6vw;}
  /* Paysage : la photo décalée à droite (le sujet hors du texte), fondue à gauche. */
  .v-tete--horizontal .v-tete__photo{left:28%;}
  .v-tete--horizontal .v-tete__photo::after{background:linear-gradient(90deg,var(--nuit),color-mix(in srgb,var(--nuit) 45%,transparent) 20%,transparent 42%);}
  .v-tete--horizontal .v-tete__corps{max-width:min(62rem,54%);}
  .v-tete--horizontal .v-nav{padding:.2rem; border-radius:999px; background:color-mix(in srgb,var(--nuit) 86%,transparent); backdrop-filter:blur(10px);}
  .v-tete--horizontal :is(.v-nom,.v-accroche,.v-marque){text-shadow:0 1px 18px rgb(0 0 0/.4);}

  .v-rub--duo > .v-rub__in{display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:0 clamp(2.5rem,6vw,7rem);}
  .v-rub--duo .v-rub__tete{position:sticky; top:2.5rem; align-self:start;}
  .v-rub--duo .v-titre{font-size:clamp(2.4rem,4.6vw,4.4rem);}
  .v-rub--duo .v-rub__corps{padding-top:.4rem;}
  .v-rub--large .v-titre{margin-bottom:3rem;}
  .v-marche{grid-template:"jour lieu heures lien" / minmax(0,15rem) minmax(0,1fr) minmax(0,12rem) auto; gap:1.5rem; padding:1.6rem 0;}
  .v-marche__jour{font-size:clamp(2rem,3.3vw,3rem);}
  .v-marche__heures{text-align:right;}
  .v-marche--jour{margin-inline:-1.5rem; padding-inline:1.5rem; border-radius:.75rem;}
  .v-carte--longue{columns:2; column-gap:clamp(3rem,6vw,6.5rem);}
  .v-galerie{flex-wrap:wrap; justify-content:center; gap:1rem; margin:0; padding:0; overflow:visible;}
  .v-photo{flex:0 1 calc((100% - 2rem) / 3); aspect-ratio:4 / 5;}
  .v-galerie:has(> :nth-child(4):last-child) .v-photo{flex-basis:calc((100% - 3rem) / 4);}
  .v-photo:only-child{flex-basis:min(100%,46rem); aspect-ratio:auto;}
  .v-photo img{width:100%; height:100%; max-width:none; max-height:36rem;}
  .v-contact__in{grid-template-columns:minmax(0,7fr) minmax(0,5fr); align-items:end; column-gap:clamp(2.5rem,6vw,7rem);}
  .v-contact--seul .v-contact__in{grid-template-columns:1fr;}
  .v-tel{font-size:min(5.4rem,5.4vw);}
  /* La pastille, dans la marge droite des grands écrans, en mouvement seulement. */
  .v-appel{display:none; inset:auto 1rem 1.5rem auto; flex-direction:column; gap:.35rem; padding:.35rem; border:1px solid var(--filet); border-radius:1.8rem; box-shadow:0 18px 40px rgb(0 0 0/.35);}
  .v-appel a{min-height:3rem; padding:0 .9rem; font-size:.9rem;}
  .v-appel ~ .v-pied{padding-bottom:2.5rem;}
}

:root:has(> body.r--apercu){scrollbar-width:none;}

/* Imprimée : noir sur blanc, sans barre ni décor. */
@media print{
  .r.r--g-vivant[class]{--nuit:#fff;--clair:#000;--clair-2:#444;--vif:#000;--creme:#fff;--encre:#000;--encre-2:#444;--fonce:#000;--aplat:#fff;--sur-aplat:#000;--sur-aplat-2:#444;--cta:#fff;--sur-cta:#000;}
  .v-appel, .v-defile, .v-sceau, .v-nav, .v-tete__decor, .v-tete__photo::after, .v-tete__corps::before{display:none;}
  .v-tete{display:block; min-height:0;}
  .v-tete__photo{position:relative; height:9cm;}
  .v-rub, .v-contact{padding-block:1.5rem;}
  .v-rub__tete, .v-sur{break-after:avoid;}
  .v-marche, .v-horaires li{break-inside:avoid;}
  .v-tete :is(.v-nom,.v-accroche,.v-marque){text-shadow:none;}
}

/* ---------- Le mouvement (écran seulement) */
@media screen and (prefers-reduced-motion:no-preference){
  /* La seule boucle : la case pause l'arrête (WCAG 2.2.2). */
  .v-defile__piste{flex:none; flex-wrap:nowrap; animation:v-defile 42s linear infinite;}
  .v-defile__piste li{font-size:clamp(1.15rem,4.6vw,1.9rem); white-space:nowrap;}
  .v-defile__piste li:is([aria-hidden],:nth-child(n+4)), .v-defile__double{display:flex;}
  .v-defile__piste li::before, .v-pause{display:block;}
  .v-defile__fenetre{mask:linear-gradient(90deg,transparent,#000 1.5rem calc(100% - 2.5rem),transparent);}
  .v-defile--vif .v-defile__piste{animation-duration:30s;}
  .v-defile--lent .v-defile__piste{animation-duration:75s;}
  .v-defile:is(:hover,:focus-within,:has(:checked)) .v-defile__piste{animation-play-state:paused;}
  .v-tete__img{animation:v-approche 2.8s cubic-bezier(.2,.65,.2,1) both;}
  .v-mot{animation:v-mot .95s cubic-bezier(.2,.8,.2,1) .15s backwards;}
  .v-mot:nth-child(2){animation-delay:.25s;} .v-mot:nth-child(3){animation-delay:.35s;} .v-mot:nth-child(n+4){animation-delay:.45s;}
  .v-tete__haut, .v-direct, .v-accroche, .v-tete__corps .v-actions{animation:v-apparait .8s ease-out var(--d,.05s) backwards;}
  .v-accroche{--d:.5s;} .v-tete__corps .v-actions{--d:.65s;}
  .v-sceau{animation:v-sceau 1.1s cubic-bezier(.2,.8,.2,1) .55s backwards;}
  .v-defile__bande{animation:v-bande 1s cubic-bezier(.2,.8,.2,1) .35s backwards;}
  .v-direct .v-point::after{animation:v-bat 1.9s ease-out 1s 2;}
  .v-braise{animation:v-braise 4.5s ease-out .3s both;}
  .v-store{transform-origin:top; animation:v-store 1.1s cubic-bezier(.3,.7,.2,1) both;}
  .v-btn, .v-appel a, .v-nav a{transition:background .25s, color .25s, border-color .25s;}
  @supports (animation-timeline:view()){
    .v-tete__img{animation:v-approche 2.8s cubic-bezier(.2,.65,.2,1) both, v-parallaxe linear both; animation-timeline:auto, scroll(root); animation-range:normal, 0 100svh;}
    .v-sceau__tour{animation:v-tourne linear both; animation-timeline:scroll(root); animation-range:0 120svh;}
    .v-sur, .v-titre, .v-marche, .v-plat, .v-carte__cat, .v-horaires li, .v-texte > p, .v-boutique__adresse, .v-note, .v-rub__corps > .v-actions, .v-contact__in > div, .v-services li{animation:v-entre linear both; animation-timeline:view(); animation-range:entry 0% entry 80%;}
    .v-titre{animation-name:v-titre;}
    .v-sur::after{animation:v-trait linear both; animation-timeline:view(); animation-range:entry 30% cover 40%;}
    .v-photo{animation:v-photo linear both; animation-timeline:view(inline); animation-range:entry 0% entry 90%;}
  }
}
@media screen and (prefers-reduced-motion:no-preference) and (min-width:60rem){
  @supports (animation-timeline:view()){
    .v-photo{animation-timeline:view(); animation-range:entry 0% entry 80%;}
  }
}
/* La pastille : du premier écran au contact, là où la marge la contient. */
@media screen and (prefers-reduced-motion:no-preference) and (min-width:90rem){
  @supports (animation-timeline:view()) and (timeline-scope:none){
    .r--g-vivant{timeline-scope:--v-contact;}
    #contact{view-timeline:--v-contact;}
    .v-appel{display:flex; animation:v-barre linear both, v-part linear forwards; animation-timeline:scroll(root), --v-contact; animation-range:35svh 65svh, entry 0% entry 40%;}
  }
}
@keyframes v-defile{to{translate:-100% 0;}}
@keyframes v-approche{from{scale:1.16;}}
@keyframes v-parallaxe{to{translate:0 16%;}}
@keyframes v-mot{from{opacity:0; translate:0 .5em; clip-path:inset(0 -.1em 100% -.1em);} to{clip-path:inset(-.4em -.1em -.4em -.1em);}}
@keyframes v-apparait{from{opacity:0; translate:0 1rem;}}
@keyframes v-sceau{from{opacity:0; scale:.6; rotate:-40deg;}}
@keyframes v-bande{from{translate:30% 0; opacity:0;}}
@keyframes v-tourne{to{rotate:1turn;}}
@keyframes v-bat{from{opacity:.9;} to{opacity:0; scale:2.8;}}
@keyframes v-store{from{scale:1 0;}}
@keyframes v-braise{from{opacity:0; scale:.85;}}
@keyframes v-entre{from{opacity:0; translate:0 2rem;}}
@keyframes v-titre{from{opacity:0; translate:0 .35em; clip-path:inset(0 -.1em 100% -.1em);} to{clip-path:inset(-.3em -.1em -.3em -.1em);}}
@keyframes v-trait{from{scale:0 1;}}
@keyframes v-photo{from{opacity:.25; scale:.9;}}
@keyframes v-barre{from{translate:0 150%; opacity:0; visibility:hidden;}}
@keyframes v-part{to{translate:0 150%; opacity:0; visibility:hidden;}}
