/* ==========================================================================
   Cave Saint Etienne · cse-wp.css · raccords WordPress (ajout du lot 2)
   Chargé après cse-components.css, sur le site et dans l'éditeur.
   N'ajoute aucune valeur nouvelle : uniquement des variables --cse-… existantes
   et des neutralisations de styles automatiques de WordPress.
   ========================================================================== */

/* ---- Bandeau d'infos ------------------------------------------------------ */
/* Les paragraphes d'un groupe reçoivent un écart vertical automatique (blockGap). */
.cse-topbar > *{margin:0}
.cse-topbar p{max-width:none}
/* Maquette de l'accueil (lot 6) : sous 600 px, l'adresse disparaît et la phrase du samedi,
   entière, est centrée (au lieu de masquer « chaque samedi · » comme le composant). */
@media (max-width: 600px){ .cse-topbar .cse-topbar__adr{display:none} .cse-topbar{justify-content:center} }

/* ---- En-tête collant -------------------------------------------------------- */
/* WordPress enveloppe la partie « header » dans un div : un élément sticky ne colle
   que dans son parent. On efface l'enveloppe pour que .cse-header colle à la page. */
.wp-block-template-part:has(> .cse-header){display:contents}
/* Le pied de page colle à la dernière section : pas d'écart de blockGap au-dessus. */
.wp-site-blocks > .wp-block-template-part:has(> .cse-footer){margin-block-start:0}
/* Conteneur de l'en-tête : fond et bordure pleine largeur, contenu à la largeur du site (.cse-wrap). */
.cse-header:has(> .cse-header__in){display:block; padding-inline:0}
.cse-header > .cse-header__in{display:flex; align-items:center; gap:24px; margin-inline:auto}
.cse-header__in > *{margin:0}
/* Plus large que le contenu : 90 % de l'écran au-delà de la tablette ; en dessous, pleine largeur avec la gouttière. */
@media (min-width: 861px){ .cse-header > .cse-header__in{max-width:90%; padding-inline:0} }
@media (max-width: 600px){ .cse-header__in{gap:10px} }
.admin-bar .cse-header{top:var(--wp-admin--admin-bar--height, 0px)}
/* Écarts verticaux automatiques (blockGap) à neutraliser dans la barre flex. */
.cse-header > *{margin:0}
/* Rien ne doit glisser sous l'en-tête collant : ni la cible du lien d'évitement (#contenu),
   ni un élément qui reçoit le focus au clavier (WCAG 2.4.11, constaté au lot 4 en tabulant
   à rebours à 360 px). Hauteur de l'en-tête : logo 58 px + 2 × 12 px de marge interne
   + filet de 1 px, valeurs du composant (le logo de 48 px sur mobile laisse 10 px de marge). */
html{scroll-padding-top:calc(58px + 24px + 1px + var(--wp-admin--admin-bar--height, 0px))}

/* Logo lié à l'accueil */
.cse-header__home{display:flex; flex:none; border-radius:var(--cse-radius-pill)}

/* Téléphone en bouton plein « Appeler le 02 31 38 26 80 » (lot 6, maquette de l'accueil).
   « Appeler le » disparaît sous 1 180 px, faute de place à côté du menu : le numéro reste.
   Sous 600 px, bouton resserré pour tenir sur une ligne dès 320 px. */
@media (max-width: 1180px){ .cse-header__tel-label{display:none} }
@media (max-width: 600px){ .cse-header .cse-header__tel{padding-inline:14px; font-size:.875rem} }

/* ---- Bloc Navigation habillé comme .cse-nav --------------------------------- */
/* Mêmes déclarations que .cse-nav / .cse-nav a du composant EnTete. */
.cse-header .cse-header__nav{margin-left:auto; gap:24px}
.cse-header .cse-header__nav .wp-block-navigation__container{gap:24px}
.cse-header .wp-block-navigation-item__content{position:relative; color:var(--cse-brun); text-decoration:none; font-weight:500; font-size:.875rem; padding-block:6px}
.cse-header .wp-block-navigation-item__content[aria-current="page"]{color:var(--cse-bordeaux); box-shadow:inset 0 -2px 0 var(--cse-bordeaux)}
.cse-header .wp-block-navigation-item__content:hover{color:var(--cse-bordeaux)}
/* Cible tactile de 44 px sans changer l'aspect du lien : zone cliquable étendue. */
.cse-header .wp-block-navigation-item__content::before{content:""; position:absolute; inset:50% 0 auto; height:var(--cse-tap-min); transform:translateY(-50%)}

/* ---- Menu mobile (repli sous 980 px, overlay natif du bloc Navigation) ------- */
/* Le bloc replie nativement sous 600 px ; la charte replie sous 980 px. */
@media (max-width: 980px){
  .cse-header .wp-block-navigation__responsive-container-open:not(.always-shown){display:inline-flex}
  .cse-header .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open){display:none}
  /* Ordre logo, « Menu », téléphone : celui du code. Le bouton « Menu » est dans le bloc
     Navigation, placé avant le téléphone ; un `order` CSS qui le passerait après (ordre de la
     maquette) inverserait l'ordre de tabulation et l'ordre visuel (lot 6, étape 10). */
}
/* Boutons « Menu » et « Fermer » habillés comme .cse-menu-toggle (classes répétées
   pour passer devant les règles du bloc, de spécificité 0,3,0). */
.cse-header .wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open,
.cse-header .wp-block-navigation__responsive-container-close.wp-block-navigation__responsive-container-close.wp-block-navigation__responsive-container-close{align-items:center; min-height:var(--cse-tap-min); padding:0 16px; border:1px solid rgba(42,27,23,.4); border-radius:var(--cse-radius-pill); background:none; font:500 var(--cse-fs-label) var(--cse-font-etiq); letter-spacing:.12em; text-transform:uppercase; color:var(--cse-brun)}
.cse-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close{display:inline-flex}
/* Sous 600 px, « Menu » resserré comme dans la maquette de l'accueil (lot 6). */
@media (max-width: 600px){ .cse-header .wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open{padding:0 12px} }
/* backdrop-filter crée un bloc conteneur pour position:fixed : l'overlay serait
   enfermé dans la hauteur de l'en-tête. On le coupe pendant l'ouverture. */
.cse-header:has(.is-menu-open){backdrop-filter:none}
/* Liens du menu ouvert : déclarations de .cse-header[data-open] .cse-nav a. */
.cse-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container{gap:0; width:100%; align-items:stretch}
.cse-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item{align-items:stretch}
.cse-header .cse-header__nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content{display:block; padding:14px 0; font-size:1.0625rem; border-bottom:1px solid var(--cse-line)}
/* Le menu ouvert est un panneau sous l'en-tête, comme .cse-header[data-open] .cse-nav
   (position absolue, inset:100% 0 auto 0) : logo, « Menu » et téléphone restent visibles.
   La fenêtre native (aria-modal, piège du focus, Échap) est conservée. */
.cse-header .cse-header__nav{position:static}
.cse-header .wp-block-navigation__responsive-container.is-menu-open{position:absolute; inset:100% 0 auto 0; padding:8px var(--cse-gutter) 20px; border-bottom:1px solid var(--cse-line); max-height:calc(100dvh - 120px); overflow:auto; animation:none}
.cse-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-dialog{display:flex; flex-direction:column; margin-top:0}
.cse-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close{position:static; align-self:flex-end}
.cse-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content{padding-top:0}

/* ---- Pied de page (disposition de la maquette de l'accueil, lot 6) ----------- */
.cse-footer{color-scheme:dark}
.cse-footer__grid, .cse-footer__evin{max-width:calc(var(--cse-content) - 2 * var(--cse-gutter))}
/* Quatre colonnes de la maquette ; la troisième (lettre d'information) reste vide jusqu'au
   lot Brevo, pour que « Le site » et « Suivre la cave » gardent leur place. */
.cse-footer__grid{grid-template-columns:minmax(0,1.1fr) minmax(0,.8fr) minmax(0,1.4fr) minmax(0,.8fr)}
.cse-footer__grid > .cse-footer__social{grid-column:4}
.cse-footer__grid > *, .cse-footer__grid > * > *{margin:0; min-width:0}
.cse-footer__grid h4{margin-bottom:10px}
.cse-footer__id{display:grid; gap:14px; align-content:start}
/* Logo sur fond sombre : liseré crème de 2 px. */
.cse-footer__logo{width:72px; height:72px; border-radius:50%; box-shadow:0 0 0 2px var(--cse-creme)}
.cse-footer__id p{font-size:.9375rem; color:var(--cse-sable)}
/* Listes de liens : cibles de 44 px (la maquette les espace de 8 px sur une ligne de texte). */
.cse-footer__links{display:grid; gap:0; margin:0; padding:0; list-style:none; font-size:.9375rem}
.cse-footer__links a{text-decoration:none} .cse-footer__links a:hover{text-decoration:underline}
.cse-footer a{display:inline-flex; align-items:center; min-height:var(--cse-tap-min)}
.cse-footer__evin{display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:10px 24px}
.cse-footer__evin > *{margin:0; max-width:none}
.cse-footer__evin a{color:var(--cse-sable)}
@media (max-width: 980px){
  .cse-footer__grid{grid-template-columns:1fr 1fr}
  .cse-footer__grid > .cse-footer__social{grid-column:auto}
}
@media (max-width: 560px){ .cse-footer__grid{grid-template-columns:1fr} }

/* ---- Focus dans les sections sombres ---------------------------------------- */
/* theme.json pose un anneau bordeaux sur a:focus ; sur fond brun il passe en ambre
   comme le prévoit --cse-focus du thème « cave ». */
:where(.is-style-cave, [data-theme="cave"]) a:focus{outline-color:var(--cse-focus)}

/* ---- Hero (ajout du lot 3) ---------------------------------------------------- */
/* La photo est un bloc Image (remplaçable dans l'éditeur) : la classe .cse-hero__media
   est posée sur la <figure>, l'image doit remplir la figure comme dans le composant. */
.cse-hero .cse-hero__media{margin:0}
.cse-hero .cse-hero__media img{width:100%; height:100%; object-fit:cover}
/* Écart automatique (blockGap) à neutraliser : le chapô suit le titre de 20 px
   (marge basse de .cse-hero .cse-display), la méta est une rangée flex. */
.cse-hero__in > .cse-lead{margin-block-start:0}
.cse-hero__meta > *{margin:0}

/* ---- Bloc « Sam. » (ajout du lot 3) ------------------------------------------- */
/* Blocs Paragraphe dans la grille : écarts automatiques (blockGap) neutralisés. */
.cse-samedi > *{margin:0}
/* Le lien flèche est dans un paragraphe (bloc natif) : la règle du composant qui le
   passe en pleine ligne sous 600 px s'applique ici à son paragraphe. */
@media (max-width: 600px){ .cse-samedi > .cse-samedi__lien{grid-column:1/-1} }
/* Cible tactile de 44 px pour le lien flèche (11 px de haut dans le composant). */
.cse-samedi .cse-link-arrow{display:inline-flex; align-items:center; min-height:var(--cse-tap-min)}

/* ---- Bandeau des univers (ajout du lot 3, blocs natifs au lot 5) ---------------- */
/* Le composant attend nav > a > i + strong + span ; les blocs natifs donnent
   nav > div.cse-univers-strip__item > div.cse-univers-strip__robe + p.cse-univers-strip__nom > a + p.cse-univers-strip__texte.
   Mêmes déclarations que .cse-univers-strip > a / i / strong / span du composant. */
.cse-univers-strip > *{margin:0}
.cse-univers-strip > .cse-univers-strip__item{position:relative; display:grid; align-content:start; gap:6px; padding:22px 24px; border-right:1px solid var(--cse-line)}
.cse-univers-strip > .cse-univers-strip__item:last-child{border-right:0}
/* Pas de fond au survol : c'est la goutte qui réagit (voir « Robes du bandeau des univers »). */
.cse-univers-strip__item > *{margin:0}
/* Carré de robe : Groupe vide dont la couleur d'arrière-plan est la robe (palette).
   Le padding automatique des groupes colorés de WordPress est neutralisé. */
.cse-univers-strip__item .cse-univers-strip__robe{width:14px; height:14px; padding:0; margin-bottom:8px}
/* Le composant utilise strong et span : on retire aux paragraphes la largeur maximale
   et la coupure « pretty » que la charte donne à tous les p, pour garder les mêmes lignes. */
.cse-univers-strip__item .cse-univers-strip__nom{max-width:none; text-wrap:wrap; font:400 1.3125rem/1.1 var(--cse-font-titre)}
.cse-univers-strip__item .cse-univers-strip__texte{max-width:none; text-wrap:wrap; font-size:var(--cse-fs-small); color:var(--cse-text-muted); line-height:1.4}
/* Le lien du nom couvre toute la case (zone cliquable du composant). */
.cse-univers-strip .cse-univers-strip__nom a{color:inherit; text-decoration:none}
.cse-univers-strip .cse-univers-strip__nom a::after{content:""; position:absolute; inset:0}
/* Focus : l'anneau entoure la case, décalé vers l'intérieur car les cases touchent les
   bords de la fenêtre (un anneau extérieur serait coupé à gauche et à droite). */
.cse-univers-strip .cse-univers-strip__nom a:focus{outline:0}
.cse-univers-strip .cse-univers-strip__nom a:focus::after{outline:var(--cse-focus-ring); outline-offset:calc(-1 * var(--cse-focus-offset))}
/* Dans l'éditeur, la zone étendue masquerait les autres blocs de la case. */
.cse-univers-strip__item.block-editor-block-list__block .cse-univers-strip__nom a::after{display:none}
@media (max-width: 760px){
  .cse-univers-strip > .cse-univers-strip__item{padding:16px 18px; border-bottom:1px solid var(--cse-line)}
  .cse-univers-strip > .cse-univers-strip__item:nth-child(2n){border-right:0}
}

/* Focus : pas d'anneau au clic ni au toucher ; il reste visible à la navigation au clavier (:focus-visible, WCAG 2.2 AA). */
:where(a, button, input, select, textarea, summary, [tabindex]):focus:not(:focus-visible){outline:none; box-shadow:none}
.cse-univers-strip .cse-univers-strip__nom a:focus:not(:focus-visible)::after{outline:none}

/* Fond de page blanc (demande du 5 nov. 2026), au lieu du papier de la charte. */
body{background:var(--cse-blanc)}

/* En-tête : fond plein (opaque, aussi en défilant), sans bordure basse ni ombre. */
.cse-header{background:var(--cse-papier); backdrop-filter:none; border-bottom:0; box-shadow:none}

/* Bouton plein : fond en « tache de vin » (SVG en masque, couleur du bouton conservée, survol compris). */
.cse-btn--primary{position:relative; isolation:isolate; background:none; border-color:transparent; border-radius:0}
.cse-btn--primary::before{content:""; position:absolute; inset:-5px -9px; z-index:-1; background:var(--cse-btn-bg); -webkit-mask:url("../images/tache-de-vin.svg") center/100% 100% no-repeat; mask:url("../images/tache-de-vin.svg") center/100% 100% no-repeat; transition:background-color var(--cse-dur-fast) var(--cse-ease)}
.cse-btn--primary:hover{background:none}
.cse-btn--primary:hover::before{background:var(--cse-btn-bg-hover)}

/* Bouton contour : même tache de vin, en trait seul (SVG en masque, trait d'épaisseur constante). */
.cse-btn--outline{position:relative; isolation:isolate; border-color:transparent; border-radius:0}
.cse-btn--outline:hover{border-color:transparent}
.cse-btn--outline::before{content:""; position:absolute; inset:-5px -9px; z-index:-1; background:var(--cse-btn-outline); -webkit-mask:url("../images/tache-de-vin-contour.svg") center/100% 100% no-repeat; mask:url("../images/tache-de-vin-contour.svg") center/100% 100% no-repeat; transition:background-color var(--cse-dur-fast) var(--cse-ease)}
.cse-btn--outline:hover::before{background:var(--cse-btn-outline-fg)}

/* Bords « niveau de liquide » : vague douce au lieu d'une coupe droite (masque SVG).
   Classes réutilisables dans l'éditeur : cse-vague-haut, cse-vague-bas. */
:root{--cse-vague-h:clamp(14px, 2.6vw, 38px)}
.cse-vague-bas, .cse-hero, .cse-section.futs{
  -webkit-mask:linear-gradient(#000 0 0) top/100% calc(100% - var(--cse-vague-h)) no-repeat, url("../images/vague-bas.svg") bottom/100% var(--cse-vague-h) no-repeat;
          mask:linear-gradient(#000 0 0) top/100% calc(100% - var(--cse-vague-h)) no-repeat, url("../images/vague-bas.svg") bottom/100% var(--cse-vague-h) no-repeat}
.cse-vague-haut{
  -webkit-mask:url("../images/vague-haut.svg") top/100% var(--cse-vague-h) no-repeat, linear-gradient(#000 0 0) bottom/100% calc(100% - var(--cse-vague-h)) no-repeat;
          mask:url("../images/vague-haut.svg") top/100% var(--cse-vague-h) no-repeat, linear-gradient(#000 0 0) bottom/100% calc(100% - var(--cse-vague-h)) no-repeat}
.cse-section.futs{
  -webkit-mask:url("../images/vague-haut.svg") top/100% var(--cse-vague-h) no-repeat, linear-gradient(#000 0 0) center/100% calc(100% - 2 * var(--cse-vague-h)) no-repeat, url("../images/vague-bas.svg") bottom/100% var(--cse-vague-h) no-repeat;
          mask:url("../images/vague-haut.svg") top/100% var(--cse-vague-h) no-repeat, linear-gradient(#000 0 0) center/100% calc(100% - 2 * var(--cse-vague-h)) no-repeat, url("../images/vague-bas.svg") bottom/100% var(--cse-vague-h) no-repeat;
  position:relative; z-index:1}
/* La bande suivante passe sous la vague pour que le creux montre sa couleur, pas le fond de page. */
.cse-section.futs + *{margin-top:calc(-1 * var(--cse-vague-h)); padding-top:var(--cse-vague-h)}

/* Robes du bandeau des univers : goutte au lieu du carré (la couleur reste celle choisie dans l'éditeur).
   Découpe en clip-path: path() plutôt qu'en masque pour pouvoir l'animer : au survol ou au focus d'une case liée,
   la goutte s'étire en flèche pointée vers le haut pendant qu'elle pivote d'un quart de tour vers la droite.
   Les deux tracés ont les mêmes commandes (8 courbes, sens horaire depuis la pointe) : le navigateur interpole la forme. */
.cse-univers-strip__item .cse-univers-strip__robe{width:22px; height:22px;
  clip-path:path("M8.4 0.6 C8.4 0.6 11.43 4.47 12.6 6.6 C13.77 8.73 15.43 11.28 15.4 13.4 C15.37 15.52 13.6 18.13 12.4 19.3 C11.2 20.47 9.62 20.4 8.2 20.4 C6.78 20.4 5.12 20.47 3.9 19.3 C2.68 18.13 0.88 15.52 0.9 13.4 C0.92 11.28 2.75 8.73 4 6.6 C5.25 4.47 8.4 0.6 8.4 0.6 Z");
  transition:clip-path 560ms cubic-bezier(.34,1.25,.5,1), rotate 560ms cubic-bezier(.34,1.25,.5,1)}
.cse-univers-strip__item:has(a):is(:hover, :focus-within) .cse-univers-strip__robe{rotate:90deg;
  clip-path:path("M11 0.6 C11 0.6 19.49 9.17 19.6 9.6 C19.71 10.03 13.48 8.77 13.2 9.2 C12.92 9.63 12.81 18.68 12.5 20.4 C12.19 22.12 11.54 21.5 11 21.5 C10.46 21.5 9.81 22.12 9.5 20.4 C9.19 18.68 9.08 9.63 8.8 9.2 C8.52 8.77 2.29 10.03 2.4 9.6 C2.51 9.17 11 0.6 11 0.6 Z")}
/* Libellé « vers » (« Nos dégustations ») : sur la ligne de la goutte, devant elle. Replié au repos (largeur nulle),
   il se déplie au survol en poussant la goutte devenue flèche vers la droite. Toujours dans le texte de la page
   (lecteurs d'écran) ; déplié dans l'éditeur pour rester modifiable. */
html body :is(.cse-univers-strip.univers, .cse-univers-strip) > .cse-univers-strip__item{grid-template-columns:auto minmax(0,1fr); column-gap:0}
.cse-univers-strip__item > *{grid-column:1 / -1}
.cse-univers-strip__item > .cse-univers-strip__robe{grid-row:1; grid-column:2; justify-self:start}
.cse-univers-strip__item > .cse-univers-strip__vers{grid-row:1; grid-column:1; align-self:center; max-width:0; margin:0 0 8px; overflow:hidden; white-space:nowrap; opacity:0;
  font:500 var(--cse-fs-label)/22px var(--cse-font-etiq); letter-spacing:.12em; text-transform:uppercase; color:var(--cse-accent);
  transition:max-width 560ms cubic-bezier(.34,1.1,.5,1), margin-right 560ms cubic-bezier(.34,1.1,.5,1), opacity 300ms ease 120ms}
.cse-univers-strip__item:has(a):is(:hover, :focus-within) > .cse-univers-strip__vers{max-width:16em; margin-right:10px; opacity:1}
.editor-styles-wrapper .cse-univers-strip__item > .cse-univers-strip__vers{max-width:none; margin-right:10px; opacity:1}
@media (prefers-reduced-motion: reduce){ .cse-univers-strip__item .cse-univers-strip__robe, .cse-univers-strip__item > .cse-univers-strip__vers{transition:none} }
/* Étiquettes d'univers (agenda, cartes, fiches) : même goutte devant le libellé. */
.cse-univers::before{width:10px; height:13px; -webkit-mask:url("../images/goutte.svg") center/contain no-repeat; mask:url("../images/goutte.svg") center/contain no-repeat}

/* Estampille posée sur la carte du samedi de la page Dégustations (SVG ajouté par functions.php, décoratif : l'information est dans le texte). */
.deg__photo, .rdv{position:relative}
.rdv:has(> .cse-estampille){overflow:visible}
.rdv:has(> .cse-estampille) .rdv__band{border-radius:var(--cse-radius-m) var(--cse-radius-m) 0 0}
.cse-estampille{position:absolute; top:-46px; right:-34px; z-index:2; width:118px; height:118px; rotate:-10deg; pointer-events:none; color:var(--cse-creme)}
.cse-estampille circle.disque{fill:var(--cse-bordeaux)}
.cse-estampille .filet{fill:none; stroke:currentColor; stroke-width:.75; opacity:.7}
.cse-estampille .tour{font:500 7.4px var(--cse-font-texte); letter-spacing:.2em; text-transform:uppercase; fill:currentColor}
.cse-estampille .centre{font:300 23px var(--cse-font-titre); fill:currentColor}
.cse-estampille .heures{font:500 6.6px var(--cse-font-texte); letter-spacing:.14em; fill:currentColor; opacity:.85}
@media (max-width: 1240px){ .cse-estampille{right:-6px; top:-52px} }
@media (max-width: 600px){ .cse-estampille{width:92px; height:92px; top:-40px; right:-4px} }
/* La légende de la photo du samedi devient une étiquette de papier posée sur la photo. */
.deg__photo figcaption{position:absolute; left:18px; bottom:-16px; z-index:1; margin:0; padding:10px 22px 9px; width:max-content; max-width:calc(100% - 36px); white-space:normal; box-sizing:border-box; background:url("../images/etiquette.svg?v=3") center/100% 100% no-repeat; color:var(--cse-brun); rotate:-2.5deg; filter:drop-shadow(0 1px 1.5px rgba(42,27,23,.1))}
.deg__photo{margin-bottom:24px}

/* Retouches d'ensemble (5 nov. 2026). */
/* Paragraphes en 400 : le corps reste à --cse-fw-texte (500) pour les listes, libellés et données ;
   les classes qui fixent leur propre graisse (boutons, étiquettes, liens flèche) ne changent pas. */
p{font-weight:400}
/* Rangées de boutons : la tache de vin déborde de 9 px de chaque côté (5 px en haut et en bas),
   l'écart est donc compté à partir du dessin, pas de la boîte : environ 16 px visibles entre deux boutons. */
:root{--cse-gap-ctas:calc(var(--cse-space-3) + 10px) calc(var(--cse-space-4) + 18px)}
body :is(.cse-hero__ctas, .p-head__ctas, .ev-hero__ctas, .acces__ctas, .cvenir__ctas, .ct-ctas, .devis__ok-actions, .wp-block-buttons){gap:var(--cse-gap-ctas)}
/* Plus de filets gris (5 nov. 2026) : depuis que les sections sont séparées par des vagues, les lignes droites
   des listes, les séparateurs verticaux des grilles et les contours des cartes sont supprimés ; l'espace et
   l'ombre des cartes suffisent. :is() prend la spécificité de son sélecteur le plus fort, ce qui passe devant
   les feuilles de page chargées après celle-ci. Restent voulus : trait foncé des mois de l'agenda, contour
   ambre de l'offre, barres de couleur des adresses et citations, cases des formulaires. */
html body :is(.cse-univers-strip, .cse-univers-strip > .cse-univers-strip__item, .voie, .ensuite__li, .raccourcis__a a, .moyens__li, .ct-hor__ligne, .ev, .plus, .avis .quote, .horaires .horaires__ligne, .rayons > li, .cvenir .horaires__row, .bt thead th, .bt tbody tr, .occ__list li, .futs-faq details, .faq details, .devis__recap > div, .cuvees li, .ag-row, .etapes > li, .nuancier li, .infos dl > div, .bref__row, .bref dl > div, .rdv__info, .pack__list li, .cse-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content, .cse-header .wp-block-navigation__responsive-container.is-menu-open){border-bottom:0}
html body :is(.ct-bref__infos, .rdv__infos, .ensuite__steps, .raccourcis__liste, .moyens, .agenda, .avis__list, .horaires__liste, .bref__list, .pers__fut, .renforts, .pers__parcours, .rayons, .cvenir .horaires__list, .bref dl, .pack__list, .futs-deroule .cse-steps li, .deroule .cse-steps li, .occ__list, .faq__list, .futs-faq .faq__list, .devis__recap, .cuvees, .ag-list, .init .init__quote, .etapes, .nuancier, .ev-article .ev-quote, .infos dl, .cse-footer__evin, .cse-stats, .cse-hero .hero__samedi, .ag-vide){border-top:0}
html body :is(.cse-stats, .cse-hero .hero__samedi, .ag-vide){border-bottom:0}
html body :is(.cse-univers-strip > .cse-univers-strip__item, .cse-univers-strip > a, .bref__row:nth-child(odd), .bref dl > div:nth-child(odd), .rdv__info:nth-child(odd)){border-right:0}
html body .pack__list li:nth-child(even){border-left:0}
html body :is(.cse-card, .contact__form, .ct-hor__liste, .plan, .bref, .pers, .presse__item, .pack, .calc__box, .une, .rdv, .infos, .venir li){border-color:transparent}
