/* Mise en page des pages et des rendus de blocs métier (wp-apidae-io-core, rendu « charte ») :
   grilles et enchaînements. Jetons seulement ; les composants eux-mêmes (cartes, FAQ, témoignage)
   sont dans composants.css, généré. Écrit à la main. */

/* Grille de cartes : autant de colonnes que la largeur en tient, jamais moins de 260 px, les
   colonnes vides repliées (trois cartes occupent la largeur). Les cartes y prennent toute leur
   cellule (leur max-width de composant sert hors grille). */
.wpa-cartes {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
  gap: var(--wpa-espace-50);
  align-items: stretch;
}
.wpa-cartes > :is(.wpa-carte-tarif, .wpa-carte-module) { max-width: none; }
.wpa-cartes > .wpa-carte-tarif { grid-template-rows: auto auto 1fr auto auto auto; }
.wpa-carte-tarif h3 a { color: inherit; text-decoration: none; }
.wpa-carte-tarif h3 a:hover { text-decoration: underline; text-underline-offset: 0.18em; }
.wpa-carte-tarif .extrait { margin: 0; font-size: var(--wpa-taille-s); color: var(--wpa-texte-second); }
.wpa-carte-module .rubrique {
  margin: 0;
  font-size: var(--wpa-taille-xs);
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--wpa-texte-discret);
}

/* Les publics (elabo/accordion) : une colonne chacun, photo, texte, liste. */
.wpa-public { display: grid; gap: var(--wpa-espace-30); align-content: start; }
.wpa-public .visuel {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  border-radius: var(--wpa-rayon-carte);
}
.wpa-public h3 { margin: 0; font: 800 var(--wpa-taille-xl)/var(--wpa-interligne-titre) var(--wpa-police-titre); color: var(--wpa-nuit); }
.wpa-public p { margin: 0; color: var(--wpa-texte-second); }
.wpa-public ul { margin: 0; padding-left: 1.2em; display: grid; gap: var(--wpa-espace-10); }

/* Témoignage et ses actions ; derniers articles. */
.wpa-bloc-temoignage { display: grid; gap: var(--wpa-espace-50); }
.wpa-actions { display: flex; flex-wrap: wrap; gap: var(--wpa-espace-30); align-items: center; margin: 0; }
.wpa-derniers-articles { display: grid; gap: var(--wpa-espace-50); }
.wpa-derniers-articles > h2 { margin: 0; }

/* ——— Sections des pages composées (bin/composer-accueil.php…) ——— */
.entry-content > .wpa-section { margin-block: 0; padding-block: var(--wpa-espace-80); }
.wpa-section--pale { background: var(--wpa-violet-pale); }
.wpa-section > .wp-block-heading,
.wpa-section > p { text-align: center; }
.wpa-section > .wp-block-heading { margin-block-end: var(--wpa-espace-60); }
.wpa-section .wp-block-columns { align-items: center; gap: var(--wpa-espace-70); }
.wpa-section > :is(.wp-block-columns, .wp-block-query, .wp-block-buttons) { margin-block-start: var(--wpa-espace-60); }
.wpa-section > .wp-block-buttons { justify-content: center; }
.wpa-illustration { margin: 0; }
.wpa-illustration img { display: block; width: 100%; height: auto; border-radius: var(--wpa-rayon-carte); }

/* Logos clients : une rangée sobre, en niveaux de gris. */
.wpa-section--logos { padding-block: var(--wpa-espace-60); }
.wpa-logos-titre { margin: 0 0 var(--wpa-espace-40); font-size: var(--wpa-taille-s); color: var(--wpa-texte-discret); }
.wpa-logos { justify-content: center; align-items: center; gap: var(--wpa-espace-60); flex-wrap: wrap; }
.wpa-logos figure { margin: 0; }
.wpa-logos img { display: block; height: 72px; width: auto; max-width: 180px; object-fit: contain; filter: grayscale(1); opacity: 0.8; }

/* Bénéfices et étapes. */
.wpa-section--benefices .wp-block-columns { align-items: start; }
.wpa-section--benefices h3 { margin: 0 0 var(--wpa-espace-20); font-size: var(--wpa-taille-xl); }
.wpa-section--benefices p { margin: 0; color: var(--wpa-texte-second); }
.wpa-section--benefices > p { max-width: 68ch; }

/* Cartes d'une liste de requête (modules) : la grille porte la liste, la carte toute sa cellule. */
.wp-block-post-template.wpa-cartes { list-style: none; margin: 0; padding: 0; }
.wp-block-post-template.wpa-cartes > li { display: flex; margin: 0; }
.wpa-cartes > li > .wpa-carte-module { max-width: none; width: 100%; }
.wpa-carte-module .wp-block-post-featured-image { margin: 0; }
.wpa-carte-module .wp-block-post-title { margin: 0; }
.wpa-carte-module .wp-block-post-excerpt { margin: 0; font-size: var(--wpa-taille-s); color: var(--wpa-texte-second); }
.wpa-carte-module .wp-block-post-excerpt p { margin: 0; }

/* Carte tarif composée en blocs (prix en gras de l'éditeur, boutons empilés). */
.wpa-carte-tarif .prix strong { font: 800 var(--wpa-taille-2xl)/1 var(--wpa-police-titre); color: var(--wpa-nuit); font-variant-numeric: tabular-nums; margin-right: 0.2em; }
.wpa-carte-tarif > * { margin: 0; }
.wpa-carte-tarif .wp-block-buttons { flex-direction: column; align-items: stretch; }
.wpa-carte-tarif .wp-block-button__link { width: 100%; text-align: center; }
.wpa-section--prix .wpa-carte-tarif { margin-inline: auto; }

/* Équipe. */

/* ——— La scène du haut de page (composition du prototype, prototypes/pistes-graphiques.html) :
   un fond illustré, devant lui l'écran et le téléphone du site de démo, qui passent de l'hiver à
   l'été au rythme du sélecteur de saison ; l'inserteur de blocs de l'éditeur à gauche. Le décor
   est caché aux lecteurs d'écran, et tout est figé si le visiteur a réduit les animations : l'état
   de repos est l'hiver. ——— */
.entry-content > .wpa-scene { margin-block: 0; padding-block: var(--wpa-espace-70) 0; text-align: center; background: linear-gradient(180deg, var(--wpa-surface), var(--wpa-fond)); overflow: hidden; }
.wpa-scene-titre { max-width: 20ch; margin: 0 auto var(--wpa-espace-30); font-size: clamp(2.2rem, 1.3rem + 3.2vw, 3.6rem); line-height: 1.06; text-wrap: balance; }
.wpa-scene-titre mark { background: linear-gradient(transparent 58%, var(--wpa-orange) 58%) !important; color: inherit; padding: 0 3px; }
.wpa-scene-chapo { max-width: 56ch; margin: 0 auto var(--wpa-espace-40); font-size: var(--wpa-taille-m); color: var(--wpa-texte-second); }
.wpa-scene > .wp-block-buttons { justify-content: center; }
.entry-content .wpa-scene-plateau { position: relative; aspect-ratio: 16 / 8.2; max-width: 1290px; margin: var(--wpa-espace-60) auto 0; }
.wpa-scene-plateau > * { margin: 0; }
/* Le fond sort du plateau et couvre la fenêtre de bord à bord (avis de Pierre, 05/10 : un fond
   encadré « enferme ») ; son haut se fond dans le dégradé du titre, et la composition flotte devant.
   La section coupe le débord (overflow: hidden) : 100vw y compte la barre de défilement sans
   créer de défilement horizontal. */
/* Décor : il passe sous le titre et les boutons (top négatif) mais ne prend jamais le clic, et les
   boutons restent au-dessus (avis de Pierre, 05/10 : « pas cliquables »). */
.wpa-scene > .wp-block-buttons { position: relative; z-index: 2; }
.wpa-scene-fond { pointer-events: none; position: absolute; top: -12%; bottom: 0; left: 50%; width: 100vw; translate: -50% 0; -webkit-mask-image: linear-gradient(180deg, transparent, var(--wpa-encre) 22%); mask-image: linear-gradient(180deg, transparent, var(--wpa-encre) 22%); }
.wpa-scene-fond img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 60%; }
.wpa-scene-navigateur { position: absolute; left: 21%; top: 7%; width: 54%; display: grid; background: var(--wpa-surface); border-radius: 10px; box-shadow: var(--wpa-ombre-cadre); overflow: hidden; }
.wpa-scene-navigateur > * { grid-column: 1; margin: 0; }
.wpa-scene-adresse {
  grid-row: 1;
  padding: 8px 12px 8px 52px;
  background: var(--wpa-violet-pale) radial-gradient(circle at 16px 50%, var(--wpa-violet-clair) 4.5px, transparent 5px), radial-gradient(circle at 30px 50%, var(--wpa-violet-clair) 4.5px, transparent 5px), radial-gradient(circle at 44px 50%, var(--wpa-violet-clair) 4.5px, transparent 5px);
  background-color: var(--wpa-violet-pale);
  border-bottom: 1px solid var(--wpa-trait);
  font: 500 0.7rem/1.4 var(--wpa-police-mono);
  color: var(--wpa-texte-discret);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; /* une barre d'adresse ne passe pas à la ligne */
  text-align: left;
}
.wpa-scene-navigateur > figure { grid-row: 2; }
.wpa-scene-navigateur img, .wpa-scene-telephone img { display: block; width: 100%; height: auto; }
.wpa-scene-telephone { position: absolute; right: 9%; top: 22%; width: 15%; aspect-ratio: 9 / 19; display: grid; align-content: start; overflow: hidden; background: var(--wpa-surface); border: 7px solid var(--wpa-encre); border-radius: 26px; box-shadow: var(--wpa-ombre-cadre); }
.wpa-scene-telephone > figure { grid-area: 1 / 1; margin: 0; animation: wpa-defile 12s ease-in-out infinite; }
.wpa-scene-plateau .wpa-scene-ete { opacity: 0; animation: wpa-ete 12s ease-in-out infinite; }
.wpa-scene-telephone > .wpa-scene-ete { animation: wpa-ete 12s ease-in-out infinite, wpa-defile 12s ease-in-out infinite; }
@keyframes wpa-ete { 0%, 52% { opacity: 0; } 57%, 93% { opacity: 1; } 98%, 100% { opacity: 0; } }
@keyframes wpa-defile { 0%, 8% { transform: translateY(0); } 40%, 60% { transform: translateY(-45%); } 92%, 100% { transform: translateY(0); } }
/* La scène de la page Fonctionnalités : une seule fiche sur le téléphone, plus courte que l'écran
   à faire défiler, donc fixe. */
.wpa-scene--produit .wpa-scene-telephone > figure { animation: none; }
.wpa-scene--produit .wpa-scene-telephone > .wpa-scene-ete { animation: wpa-ete 12s ease-in-out infinite; } /* le fondu de saison, sans le défilement */
.wpa-scene-decor { position: absolute; inset: 0; pointer-events: none; text-align: left; }
.wpa-scene-inserteur { position: absolute; left: 3%; top: 24%; width: 19%; background: var(--wpa-surface); border-radius: 8px; box-shadow: var(--wpa-ombre-flottant); font-size: 0.66rem; color: var(--wpa-wp-encre); }
.wpa-scene-inserteur .onglets { display: flex; gap: 12px; padding: 9px 12px 0; border-bottom: 1px solid var(--wpa-wp-trait); color: var(--wpa-wp-discret); }
.wpa-scene-inserteur .onglets b { color: var(--wpa-wp-encre); padding-bottom: 7px; box-shadow: inset 0 -2px 0 var(--wpa-wp-accent); }
.wpa-scene-inserteur .recherche { margin: 10px 12px 8px; background: var(--wpa-wp-champ); border-radius: 3px; padding: 6px 8px; }
.wpa-scene-inserteur .categorie { padding: 0 12px 4px; font-size: 0.58rem; font-weight: 600; letter-spacing: 0.06em; color: var(--wpa-wp-discret); text-transform: uppercase; }
.wpa-scene-inserteur .grille { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; padding: 0 6px 8px; }
.wpa-scene-inserteur .grille span { display: flex; flex-direction: column; align-items: center; gap: 5px; padding: 9px 2px 7px; border-radius: 4px; text-align: center; line-height: 1.2; }
.wpa-scene-inserteur svg { width: 20px; height: 20px; fill: currentColor; }
.wpa-scene-inserteur .cible { animation: wpa-survol 12s infinite; }
@keyframes wpa-survol { 0%, 11% { background: transparent; color: var(--wpa-wp-encre); } 12%, 24% { background: var(--wpa-wp-survol); color: var(--wpa-wp-accent); box-shadow: inset 0 0 0 1.5px var(--wpa-wp-accent); } 26%, 100% { background: transparent; color: var(--wpa-wp-encre); } }
.wpa-scene-saison { position: absolute; right: 3%; bottom: 9%; display: flex; flex-direction: column; gap: 6px; padding: 10px 12px; background: var(--wpa-surface); border-radius: 10px; box-shadow: var(--wpa-ombre-flottant); }
.wpa-scene-saison small { color: var(--wpa-texte-discret); font-size: 0.72rem; }
.wpa-scene-saison .bascule { position: relative; display: grid; grid-template-columns: 1fr 1fr; background: var(--wpa-violet-pale); border-radius: 20px; padding: 3px; }
.wpa-scene-saison .bascule::before { content: ""; position: absolute; top: 3px; bottom: 3px; left: 3px; width: calc(50% - 3px); border-radius: 16px; background: var(--wpa-nuit); animation: wpa-pastille 12s cubic-bezier(0.6, 0, 0.3, 1) infinite; }
.wpa-scene-saison .bascule span { position: relative; padding: 4px 12px; text-align: center; font-weight: 600; font-size: 0.75rem; }
.wpa-scene-saison .bascule span:first-child { color: var(--wpa-surface); animation: wpa-libelle-hiver 12s infinite; }
.wpa-scene-saison .bascule span:last-child { color: var(--wpa-texte-discret); animation: wpa-libelle-ete 12s infinite; }
@keyframes wpa-pastille { 0%, 50% { transform: translateX(0); } 54%, 93% { transform: translateX(100%); } 97%, 100% { transform: translateX(0); } }
@keyframes wpa-libelle-hiver { 0%, 51% { color: var(--wpa-surface); } 53%, 94% { color: var(--wpa-texte-discret); } 96%, 100% { color: var(--wpa-surface); } }
@keyframes wpa-libelle-ete { 0%, 51% { color: var(--wpa-texte-discret); } 53%, 94% { color: var(--wpa-surface); } 96%, 100% { color: var(--wpa-texte-discret); } }
@media (prefers-reduced-motion: reduce) {
  .wpa-scene *, .wpa-scene *::before { animation: none !important; }
}
@media (max-width: 760px) {
  .entry-content .wpa-scene-plateau { aspect-ratio: 4 / 5; }
  .wpa-scene-navigateur { left: 4%; width: 78%; top: 6%; }
  .wpa-scene-telephone { right: 5%; width: 34%; top: 34%; }
  .wpa-scene-inserteur { display: none; }
  .wpa-scene-saison { left: 4%; right: auto; bottom: 6%; }
}

/* Retouches après capture (01/10) : la citation sans la bordure de citation de Blocksy, d'un corps
   plus léger (les témoignages réels sont longs) ; le titre des derniers articles centré comme les
   autres titres de section. */
.wpa-temoignage blockquote { border: 0; padding: 0; font-weight: 500; line-height: 1.35; }
@media (max-width: 600px) { .wpa-temoignage blockquote { font-size: var(--wpa-taille-m); } }
.wpa-derniers-articles > h2, .wpa-derniers-articles > .wpa-actions { text-align: center; justify-content: center; }

/* Carte tarif composée en blocs : le visuel est une figure (bloc Image) qui porte la classe. */
.wpa-carte-tarif > figure.visuel { overflow: hidden; }
.wpa-carte-tarif > figure.visuel img { display: block; width: 100%; height: 100%; object-fit: cover; }
/* Garantie : mise en avant par son fond, jamais par un liseré latéral (règle de Pierre, 02/10). */

/* Tarifs : un en-tête sur fond pâle (titre, ce que comprend le cœur, repères de prix) avec la carte
   du cœur à côté, à la place du bandeau de Blocksy (Pierre, 09/10). Garantie dite en texte, sans
   encadré ni liseré latéral (règle du 02/10). */
.entry-content > .wpa-section--tarifs-entete { background: var(--wpa-violet-pale); padding-block: var(--wpa-espace-70) var(--wpa-espace-80); }
.wpa-section--tarifs-entete .wp-block-columns { align-items: center; margin: 0; }
.wpa-section--tarifs-entete .wp-block-column:last-child { flex: 0 0 min(100%, 360px); }
.wpa-section--tarifs-entete .wp-block-column { align-self: center; }
.wpa-section--tarifs-entete .wp-block-column > * { margin-block: 0; }
.wpa-section--tarifs-entete .wpa-carte-tarif { max-width: none; box-shadow: var(--wpa-ombre-carte); border-color: transparent; }
.wpa-section--tarifs-entete .wpa-carte-tarif h2 { margin: 0; font: 800 var(--wpa-taille-xl)/var(--wpa-interligne-titre) var(--wpa-police-titre); color: var(--wpa-nuit); }
.wpa-tarifs-titre { font-size: clamp(2.2rem, 1.3rem + 3.2vw, 3.4rem); line-height: 1.06; }
.wpa-section--tarifs-entete .wpa-tarifs-chapo { max-width: 52ch; margin-block-start: var(--wpa-espace-30); font-size: var(--wpa-taille-m); color: var(--wpa-texte-second); }
.wpa-section--tarifs-entete .wpa-tarifs-surtitre { margin-block-start: var(--wpa-espace-50); font-weight: 700; font-size: var(--wpa-taille-xs); letter-spacing: 0.08em; text-transform: uppercase; color: var(--wpa-nuit); }
.wpa-section--tarifs-entete .wp-block-list { display: grid; gap: var(--wpa-espace-20); margin-block-start: var(--wpa-espace-20); padding: 0; list-style: none; }
.wpa-section--tarifs-entete .wp-block-column:first-child li { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 0.6em; }
.wpa-section--tarifs-entete .wp-block-column:first-child li::before { content: "✓"; color: var(--wpa-etat-succes); font-weight: 700; }
.wpa-section--tarifs-entete .wpa-tarifs-reperes { display: flex; flex-wrap: wrap; gap: var(--wpa-espace-20); margin-block-start: var(--wpa-espace-50); }
.wpa-tarifs-reperes a { padding: 8px 16px; background: var(--wpa-surface); border-radius: 999px; color: var(--wpa-nuit); font-weight: 600; font-size: var(--wpa-taille-s); text-decoration: none; }
.wpa-tarifs-reperes a::after { content: " ↓"; }
.wpa-tarifs-reperes a:hover { text-decoration: underline; text-underline-offset: 0.18em; }
.wpa-section--tarifs-entete .wpa-tarifs-garantie { margin-block-start: var(--wpa-espace-40); font-size: var(--wpa-taille-s); color: var(--wpa-texte-second); }
/* Les modules sur fond blanc : leurs visuels, peints sur fond lavande, se fondaient dans une section
   pâle (Pierre, 09/10). */
.wpa-section--modules-tarifs :is(.wpa-carte-tarif, .wpa-carte-module) { box-shadow: var(--wpa-ombre-carte); }
:is(#modules, #installation) { scroll-margin-top: var(--wpa-espace-60); }
@media (max-width: 781px) {
  .wpa-section--tarifs-entete .wp-block-columns { gap: var(--wpa-espace-60); }
  .wpa-section--tarifs-entete .wp-block-column:last-child { flex-basis: 100%; }
}

/* Frise d'étapes (ancienne timeline Stackable, convertie en groupes .wpa-stk-timeline) :
   un fil vertical, une pastille par étape, l'« Étape n » en surtitre. */
.wpa-stk-timeline {
  position: relative;
  max-width: 760px;
  margin-block: 0;
  padding: 0 0 32px 40px;
  border-left: 2px solid var(--wpa-violet-clair);
  margin-left: 11px;
}
.wpa-stk-timeline:not(:has(+ .wpa-stk-timeline)) { border-left-color: transparent; padding-bottom: 0; margin-bottom: 48px; }
.wpa-stk-timeline::before {
  content: "";
  position: absolute;
  left: -11px;
  top: 2px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--wpa-surface);
  border: 2px solid var(--wpa-nuit);
  box-sizing: border-box;
}
.wpa-stk-timeline > .wpa-stk-texte {
  margin: 0 0 4px;
  font-family: var(--wpa-police-mono);
  font-size: 0.8125rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--wpa-texte-discret);
}
.wpa-stk-timeline > .wpa-stk-texte strong { font-weight: 500; }
.wpa-stk-timeline > h3 { margin: 0 0 8px; }
.wpa-stk-timeline > p:last-child { margin-bottom: 0; }

/* Fiche d'un module : bandeau d'achat en tête du contenu (theme/inc/fiche-module.php). */
.wpa-fiche-achat {
  display: flex;
  flex-wrap: wrap;
  gap: 24px 48px;
  align-items: center;
  justify-content: space-between;
  margin: 0 0 48px;
  padding: 24px 28px;
  background: var(--wpa-surface);
  border: 1px solid var(--wpa-trait);
  border-radius: var(--wpa-rayon-carte);
}
.wpa-fiche-achat-offre { flex: 1 1 380px; }
.wpa-fiche-achat .prix { margin: 0 0 4px; }
.wpa-fiche-achat .prix b { font-family: var(--wpa-police-titre); font-size: 2rem; font-weight: 800; color: var(--wpa-nuit); }
.wpa-fiche-achat-condition { margin: 0 0 16px; font-size: var(--wpa-taille-s); color: var(--wpa-texte-second); }
.wpa-fiche-achat-actions { display: flex; flex-wrap: wrap; gap: 12px; }
.wpa-fiche-achat-infos { display: grid; gap: 6px; margin: 0; font-size: var(--wpa-taille-s); }
.wpa-fiche-achat-infos > div { display: flex; gap: 12px; justify-content: space-between; min-width: 220px; border-bottom: 1px solid var(--wpa-trait); padding-bottom: 6px; }
.wpa-fiche-achat-infos > div:last-child { border-bottom: 0; padding-bottom: 0; }
.wpa-fiche-achat-infos dt { color: var(--wpa-texte-discret); }
.wpa-fiche-achat-infos dd { margin: 0; font-family: var(--wpa-police-mono); color: var(--wpa-encre); }
.wpa-modules-lies { margin-top: 72px; }
.wpa-modules-lies > h2 { margin-bottom: 24px; }
.wpa-modules-lies > .wpa-actions { margin-top: 32px; }
@media (max-width: 760px) {
  .wpa-fiche-achat { padding: 20px; }
  .wpa-fiche-achat-infos { width: 100%; }
}

/* Formulaires (Gravity Forms, thème Orbital réglé dans theme/inc/formulaires.php) : la police de
   la charte, et une colonne de lecture plutôt que toute la largeur. */
.gform_wrapper.gform-theme--orbital { max-width: 760px; margin-inline: 0; font-family: var(--wpa-police-texte); }
.gform_wrapper.gform-theme--orbital :is(input, textarea, select, button) { font-family: inherit; }
.gform_wrapper.gform-theme--orbital .gform_button { font-weight: 600; }

/* Vidéos intégrées : une largeur de lecture, pas toute la page. */
.wp-block-embed.is-type-video { max-width: 960px; }

/* Documentation (weDocs, enveloppe de theme/inc/documentation.php) : l'état actif et les liens du
   menu aux couleurs de la charte, des titres à la taille d'une page de lecture. */
.wpa-docs .wedocs-single-wrap .wedocs-sidebar ul.doc-nav-list > li:is(.current_page_parent, .current_page_item, .current_page_ancestor) > a {
  background: var(--wpa-nuit);
  color: var(--wpa-surface);
}
.wpa-docs .wedocs-sidebar ul.doc-nav-list li > a { color: var(--wpa-encre); }
.wpa-docs .wedocs-sidebar ul.doc-nav-list li.current_page_item > a { font-weight: 600; border-left-color: var(--wpa-nuit); }
.wpa-docs .wedocs-sidebar ul.doc-nav-list > li:is(.current_page_parent, .current_page_item, .current_page_ancestor) > a .wedocs-caret { border-color: currentColor; color: inherit; }
.wpa-docs .wedocs-sidebar .widget-title { font-size: 1.5rem; }
.wpa-docs .wedocs-single-content .entry-title { font-size: clamp(2rem, 3.2vw, 2.75rem); }
.wpa-docs .wedocs-single-content .entry-content h2 { font-size: clamp(1.5rem, 2.4vw, 1.875rem); margin-top: 2em; }
.wpa-docs .wedocs-single-content .entry-content h3 { font-size: clamp(1.25rem, 1.8vw, 1.5rem); }
.wpa-docs .wedocs-breadcrumb, .wpa-docs .wedocs-breadcrumb a { font-size: var(--wpa-taille-s); }

/* Sommaire d'un article (theme/inc/sommaire.php). */
.wpa-sommaire {
  margin: 0 0 40px;
  padding: 20px 24px;
  background: var(--wpa-violet-pale);
  border-radius: var(--wpa-rayon-carte);
}
.wpa-sommaire-titre {
  margin: 0 0 8px;
  font-family: var(--wpa-police-mono);
  font-size: 0.8125rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--wpa-texte-discret);
}
.wpa-sommaire ol { margin: 0; padding-left: 1.25em; display: grid; gap: 4px; }
.wpa-sommaire a { color: var(--wpa-encre); text-underline-offset: 0.18em; }
.wpa-sommaire a:hover { color: var(--wpa-lien); }
:where(.single-post) .entry-content h2[id] { scroll-margin-top: 96px; }

/* Espace client (theme/inc/compte.php) : la navigation en colonne, le contenu à côté. */
.wpa-compte { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 48px; align-items: start; }
.wpa-compte-nav ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; position: sticky; top: 96px; }
.wpa-compte-nav a {
  display: block;
  padding: 10px 14px;
  border-radius: var(--wpa-rayon-bouton);
  color: var(--wpa-encre);
  text-decoration: none;
  font-weight: 500;
}
.wpa-compte-nav a:hover { background: var(--wpa-violet-pale); text-decoration: underline; text-underline-offset: 0.18em; }
.wpa-compte-nav a[aria-current="page"] { background: var(--wpa-nuit); color: var(--wpa-surface); }
.wpa-compte-nav .wpa-compte-sortie { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--wpa-trait); }
.wpa-compte-nav .wpa-compte-sortie a { color: var(--wpa-texte-second); font-weight: 400; }
.wpa-compte-contenu > :first-child { margin-top: 0; }
/* Vue d'ensemble (bloc elabo/compte-accueil de wp-apidae-io-core) : une tuile par rubrique. */
.wpa-compte-bonjour { margin: 0 0 var(--wpa-espace-50); font-size: var(--wpa-taille-l); color: var(--wpa-texte-second); }
.wpa-compte-accueil .edd-account-pending { margin: 0 0 var(--wpa-espace-50); padding: var(--wpa-espace-40); border: 1px solid var(--wpa-etat-attention-trait); border-radius: var(--wpa-rayon-carte); background: var(--wpa-etat-attention-fond); color: var(--wpa-etat-attention); }
.wpa-compte-tuiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: var(--wpa-espace-50); }
.wpa-compte-tuile { display: flex; flex-direction: column; padding: var(--wpa-espace-50); border-radius: var(--wpa-rayon-carte); background: var(--wpa-surface); box-shadow: var(--wpa-ombre-carte); }
.wpa-compte-tuile h2 { margin: 0 0 var(--wpa-espace-30); font-family: var(--wpa-police-texte); font-size: var(--wpa-taille-s); font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: var(--wpa-texte-discret); }
.wpa-compte-tuile-valeur { margin: 0; font-family: var(--wpa-police-titre); font-size: var(--wpa-taille-2xl); line-height: 1.1; color: var(--wpa-nuit); }
.wpa-compte-tuile-detail { margin: var(--wpa-espace-20) 0 var(--wpa-espace-50); color: var(--wpa-texte-second); }
.wpa-compte-tuile-action { margin: auto 0 0; }
.wpa-compte-tuile-action a { font-weight: 600; color: var(--wpa-lien); text-underline-offset: 0.18em; }
@media (max-width: 900px) {
  .wpa-compte { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  .wpa-compte-nav ul { position: static; display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; scrollbar-width: thin; }
  .wpa-compte-nav li { flex: 0 0 auto; }
  .wpa-compte-nav a { padding: 8px 12px; border: 1px solid var(--wpa-trait); background: var(--wpa-surface); white-space: nowrap; }
  .wpa-compte-nav .wpa-compte-sortie { margin: 0; padding: 0; border: 0; }
}

/* Blocs EDD de l'espace client (licences, abonnements, commandes, téléchargements, profil,
   connexion) à la charte. Portée : le contenu du compte, et la connexion de /mon-compte/ (page
   18453, contenu du bloc elabo/compte-accueil pour un visiteur). */
/* Bouton principal : EDD pose la couleur « white » de ses réglages en .edd-submit.button.white
   (edd.min.css, trois classes) ; repris ici au même poids, plus le corps. */
body .edd-submit.button.white { background: var(--wpa-nuit); border: 0; color: var(--wpa-surface); }
body .edd-submit.button.white:is(:hover, :focus, :active) { background: var(--wpa-orange); color: var(--wpa-nuit); text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 0.22em; }
/* Aide sous « Acheter » (wp-apidae-io-core, Edd\Commande::aide_carte, émise en hidden) : visible
   seulement quand le script de Stripe a désactivé le bouton faute de carte complète ; display: block
   l'emporte sur l'attribut hidden. */
.wpa-aide-carte { display: none; margin: var(--wpa-espace-20) 0 0; font-size: var(--wpa-taille-s); color: var(--wpa-texte-second); text-align: center; }
.edd-submit[data-edd-button-state="disabled"] ~ .wpa-aide-carte { display: block; }
/* Actions secondaires : bouton contour de la charte (.wpa-bouton-second). */
:is(.wpa-compte-contenu, .page-id-18453 .entry-content) :is(.edd-licenses__action, .wp-generate-pw, .edd-button-secondary) {
  display: inline-flex; align-items: center; gap: var(--wpa-espace-20);
  padding: 0.6em 1em; border: 1.5px solid var(--wpa-nuit); border-radius: var(--wpa-rayon-bouton);
  background: transparent; color: var(--wpa-nuit); font: 600 var(--wpa-taille-s)/1 var(--wpa-police-texte); text-decoration: none; cursor: pointer;
}
:is(.wpa-compte-contenu, .page-id-18453 .entry-content) :is(.edd-licenses__action, .wp-generate-pw, .edd-button-secondary):hover { background: var(--wpa-violet-pale); box-shadow: inset 0 -3px 0 var(--wpa-orange); text-decoration: underline; text-underline-offset: 0.18em; }
:is(.wpa-compte-contenu, .page-id-18453 .entry-content) :is(.edd-licenses__action, .wp-generate-pw, .edd-button-secondary):focus-visible { outline: 3px solid var(--wpa-lien); outline-offset: 3px; }
/* Cartes : surface blanche, trait et rayon de la charte. */
:is(.wpa-compte-contenu, .page-id-18453 .entry-content) :is(.edd-licenses__item, .edd-blocks-orders__order, .edd-blocks-subscriptions__subscription, .edd-blocks-form fieldset, form.edd-blocks-form:not(:has(fieldset))) {
  background: var(--wpa-surface); border: 1px solid var(--wpa-trait); border-radius: var(--wpa-rayon-carte);
}
.wpa-compte-contenu .edd-blocks-form legend { padding-inline: var(--wpa-espace-20); font-family: var(--wpa-police-titre); font-size: var(--wpa-taille-l); color: var(--wpa-nuit); }

/* Commande (bloc edd/checkout) à la charte. */
/* Bouton plein d'EDD : edd.min.css le pose en .edd-submit.button (deux classes) ; même poids + corps. */
body .edd-submit.button:not(.edd-sl-show-renewal-form) { background: var(--wpa-nuit); border: 0; color: var(--wpa-surface); border-radius: var(--wpa-rayon-bouton); }
body .edd-submit.button:not(.edd-sl-show-renewal-form):is(:hover, :focus) { background: var(--wpa-orange); color: var(--wpa-nuit); }
/* « Renouveler une licence existante » : action secondaire, bouton contour. */
body .edd-submit.button.edd-sl-show-renewal-form {
  background: transparent; color: var(--wpa-nuit); border: 1.5px solid var(--wpa-nuit); border-radius: var(--wpa-rayon-bouton);
  font: 600 var(--wpa-taille-s)/1 var(--wpa-police-texte); padding: 0.75em 1.1em;
}
body .edd-submit.button.edd-sl-show-renewal-form:hover { background: var(--wpa-violet-pale); box-shadow: inset 0 -3px 0 var(--wpa-orange); color: var(--wpa-nuit); text-decoration: underline; text-underline-offset: 0.18em; }
/* Sections du formulaire : surface blanche, trait et rayon de la charte. */
.wp-block-edd-checkout fieldset { background: var(--wpa-surface); border: 1px solid var(--wpa-trait); border-radius: var(--wpa-rayon-carte); }
/* Moyens de paiement : des cartes à choisir, la sélection en nuit. La feuille du bloc d'EDD les vise
   par l'identifiant edd-payment-mode-wrap dans .wp-block-edd-checkout : même chemin ici, plus body.
   L'identifiant est écrit avec un échappement CSS (\65 = e) : en clair, design-system/verifier.py lirait
   son début, dièse puis « edd », comme une couleur hexadécimale. Même sélecteur, même spécificité. */
.wp-block-edd-checkout #\65 dd-payment-mode-wrap { display: flex; flex-wrap: wrap; gap: var(--wpa-espace-30); }
body .wp-block-edd-checkout #\65 dd-payment-mode-wrap label.edd-gateway-option {
  flex: 1 1 220px; display: flex; align-items: center; justify-content: center; gap: var(--wpa-espace-20);
  padding: var(--wpa-espace-40); border: 1.5px solid var(--wpa-trait); border-radius: var(--wpa-rayon-carte);
  background: var(--wpa-surface); color: var(--wpa-nuit); font-weight: 600; cursor: pointer; margin: 0 !important;
}
body .wp-block-edd-checkout #\65 dd-payment-mode-wrap label.edd-gateway-option:hover { border-color: var(--wpa-violet); transform: none; }
body .wp-block-edd-checkout #\65 dd-payment-mode-wrap label.edd-gateway-option.edd-gateway-option-selected { border-color: var(--wpa-nuit); background: var(--wpa-violet-pale); box-shadow: inset 0 0 0 1px var(--wpa-nuit); }
body .wp-block-edd-checkout #\65 dd-payment-mode-wrap label.edd-gateway-option:has(input:focus-visible) { outline: 3px solid var(--wpa-lien); outline-offset: 3px; }

/* ——— Commande : refonte du tunnel (Pierre, 09/10). Le formulaire à gauche en trois étapes
   numérotées, le récapitulatif « Votre commande » à droite, collé pendant le défilement ; une seule
   colonne, récapitulatif d'abord, sous 1000 px. Mise en page seule : le comportement (prix HT,
   passerelles, apparence du cadre Stripe) est dans wp-apidae-io-core, Edd\Commande.
   Les identifiants d'EDD sont écrits échappés (\65 = e), comme plus haut : en clair, leur début se
   lirait comme une couleur (design-system/verifier.py). Des identifiants, et non [id="…"] : les
   règles d'EDD les visent par identifiant, un sélecteur d'attribut perdrait. ——— */
body.edd-checkout { --theme-block-max-width: 1180px; }
body .wp-block-edd-checkout { --wpa-commande-recap: 380px; gap: var(--wpa-espace-50); }
@media (min-width: 1000px) {
  body .wp-block-edd-checkout.edd-checkout__layout--full { display: grid; grid-template-columns: minmax(0, 1fr) var(--wpa-commande-recap); column-gap: var(--wpa-espace-60); align-items: start; }
  body .wp-block-edd-checkout.edd-checkout__layout--full > * { grid-column: 1; }
  body .wp-block-edd-checkout.edd-checkout__layout--full > .edd-blocks__cart { grid-column: 2; grid-row: 1 / span 4; position: sticky; top: var(--wpa-espace-50); }
  body.admin-bar .wp-block-edd-checkout.edd-checkout__layout--full > .edd-blocks__cart { top: calc(32px + var(--wpa-espace-50)); }
}

/* Le récapitulatif : une carte blanche titrée, les montants alignés à droite, le total appuyé. */
body .wp-block-edd-checkout .edd-blocks__cart { display: grid; gap: var(--wpa-espace-40); }
body .wp-block-edd-checkout .edd-blocks-form__cart { padding: var(--wpa-espace-50); background: var(--wpa-surface); border: 0; border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-carte); }
body .wp-block-edd-checkout .edd-blocks-form__cart::before { content: "Votre commande"; display: block; margin-bottom: var(--wpa-espace-30); font: 800 var(--wpa-taille-l)/1.2 var(--wpa-police-titre); color: var(--wpa-nuit); }
body .wp-block-edd-checkout .edd-blocks-form__cart #\65 dd_checkout_cart { border: 0; }
body .wp-block-edd-checkout .edd-blocks-form__cart .edd-blocks-cart__row-header { display: none; }
body .wp-block-edd-checkout .edd-blocks-form__cart .edd-blocks-cart__row,
body .wp-block-edd-checkout .edd-blocks-form__cart .edd_cart_footer_row { flex-wrap: nowrap; gap: var(--wpa-espace-30); padding: var(--wpa-espace-20) 0; border: 0; text-align: left; }
body .wp-block-edd-checkout .edd-blocks-form__cart .edd-blocks-cart__items { padding-bottom: var(--wpa-espace-30); margin-bottom: var(--wpa-espace-20); border-bottom: 1px solid var(--wpa-trait); }
body .wp-block-edd-checkout .edd-blocks-form__cart .edd-blocks-cart__row-item { align-items: flex-start; }
body .wp-block-edd-checkout .edd-blocks-form__cart .edd-blocks-cart__row-item > .edd_cart_item_name { flex: 1 1 auto; min-width: 0; }
body .wp-block-edd-checkout .edd-blocks-form__cart .edd-blocks-cart__row-item > .edd_cart_item_price { flex: 0 0 auto; font-weight: 700; color: var(--wpa-nuit); font-variant-numeric: tabular-nums; white-space: nowrap; }
body .wp-block-edd-checkout .edd_checkout_cart_item_title { display: flex; align-items: center; gap: var(--wpa-espace-20); font-weight: 700; color: var(--wpa-nuit); }
body .wp-block-edd-checkout .edd_cart_item_image img { display: block; width: 32px; height: 32px; border-radius: var(--wpa-rayon-etiquette); }
body .wp-block-edd-checkout .eddr-cart-item-notice { margin: 4px 0 0 calc(32px + var(--wpa-espace-20)); font-size: var(--wpa-taille-xs); color: var(--wpa-texte-second); }
body .wp-block-edd-checkout .eddr-cart-item-notice em { font-style: normal; }
body .wp-block-edd-checkout .edd-blocks-form__cart .edd_cart_footer_row > div { display: flex; justify-content: space-between; gap: var(--wpa-espace-30); width: 100%; font-size: var(--wpa-taille-s); color: var(--wpa-texte-second); }
body .wp-block-edd-checkout .edd-blocks-form__cart .edd_cart_footer_row > div > span { color: var(--wpa-encre); font-variant-numeric: tabular-nums; }
body .wp-block-edd-checkout .edd-blocks-form__cart .edd_cart_footer_row > .edd_cart_total { margin-top: var(--wpa-espace-20); padding-top: var(--wpa-espace-30); border-top: 1px solid var(--wpa-trait); font: 800 var(--wpa-taille-m)/1.3 var(--wpa-police-titre); color: var(--wpa-nuit); }
body .wp-block-edd-checkout .edd-blocks-form__cart .edd_cart_total > span { font-size: var(--wpa-taille-l); color: var(--wpa-nuit); }
body .wp-block-edd-checkout .edd-blocks-cart__action-remove { opacity: 0.6; }
body .wp-block-edd-checkout .edd-blocks-cart__action-remove:is(:hover, :focus-visible) { opacity: 1; }
/* Renouveler une licence : une action secondaire sous le récapitulatif, sur toute sa largeur. */
body .wp-block-edd-checkout .edd-renewal-form--legacy .edd-sl-show-renewal-form { width: 100%; }
body .wp-block-edd-checkout .edd-sl-renewal-form-fields .edd-blocks-form { display: grid; gap: var(--wpa-espace-30); padding: var(--wpa-espace-50); background: var(--wpa-surface); border: 0; border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-carte); }
body .wp-block-edd-checkout .edd-sl-renewal-actions { display: flex; flex-wrap: wrap; gap: var(--wpa-espace-20); }

/* Les étapes du formulaire : des cartes blanches, le titre dedans (EDD le pose sur le trait, en
   légende de fieldset), numéroté. Le paiement compte pour une seule étape, qu'il y ait un choix de
   moyen (gestionnaire) ou non (client). */
body .wp-block-edd-checkout #\65 dd_purchase_form { counter-reset: wpa-etape; display: grid; gap: var(--wpa-espace-50); }
body .wp-block-edd-checkout #\65 dd_purchase_form :is(#\65 dd_checkout_user_info, #\65 dd_cc_address, #\65 dd_payment_mode_select, #\65 dd_cc_fields) {
  margin: 0; padding: var(--wpa-espace-50); background: var(--wpa-surface); border: 0; border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-carte);
}
body .wp-block-edd-checkout #\65 dd_purchase_form :is(#\65 dd_checkout_user_info, #\65 dd_cc_address, #\65 dd_payment_mode_select, #\65 dd_cc_fields) > legend {
  float: left; width: 100%; display: flex; align-items: center; gap: var(--wpa-espace-20); margin: 0 0 var(--wpa-espace-40); padding: 0;
  font: 800 var(--wpa-taille-l)/1.2 var(--wpa-police-titre); color: var(--wpa-nuit);
}
body .wp-block-edd-checkout #\65 dd_purchase_form :is(#\65 dd_checkout_user_info, #\65 dd_cc_address, #\65 dd_payment_mode_select) > legend::before,
body .wp-block-edd-checkout #\65 dd_purchase_form .edd-blocks__payment-details:not(:has(#\65 dd_payment_mode_select)) #\65 dd_cc_fields > legend::before {
  counter-increment: wpa-etape; content: counter(wpa-etape); display: inline-grid; place-items: center; flex: 0 0 auto; width: 30px; height: 30px; border-radius: 50%;
  background: var(--wpa-nuit); color: var(--wpa-surface); font: 700 var(--wpa-taille-s)/1 var(--wpa-police-texte);
}
body .wp-block-edd-checkout #\65 dd_purchase_form :is(#\65 dd_checkout_user_info, #\65 dd_cc_address, #\65 dd_payment_mode_select, #\65 dd_cc_fields) > legend + * { clear: both; }
/* Le choix du moyen puis la carte : une seule étape, deux cartes collées. */
body .wp-block-edd-checkout .edd-blocks__payment-details:has(#\65 dd_payment_mode_select) #\65 dd_cc_fields > legend { font-size: var(--wpa-taille-m); }
body .wp-block-edd-checkout .edd-blocks__payment-details { display: grid; gap: var(--wpa-espace-30); }
body .wp-block-edd-checkout .edd-blocks__user-details { display: grid; gap: var(--wpa-espace-40); }

/* Les champs : libellé nuit, champ de 16 px (pas de zoom sur iPhone), focus visible. */
body .wp-block-edd-checkout #\65 dd_purchase_form .edd-blocks-form__group { margin-bottom: var(--wpa-espace-40); }
body .wp-block-edd-checkout #\65 dd_purchase_form .edd-blocks-form__group > label,
body .wp-block-edd-checkout #\65 dd_purchase_form .edd-blocks-form__group .edd-label { display: block; margin-bottom: 6px; font: 600 var(--wpa-taille-s)/1.3 var(--wpa-police-texte); color: var(--wpa-nuit); }
body .wp-block-edd-checkout #\65 dd_purchase_form :is(input[type="text"], input[type="email"], input[type="tel"], select) {
  width: 100%; min-height: 48px; padding: 10px 14px; font-size: 16px; color: var(--wpa-encre); background: var(--wpa-surface);
  border: 1px solid var(--wpa-trait); border-radius: var(--wpa-rayon-carte); box-shadow: none;
}
body .wp-block-edd-checkout #\65 dd_purchase_form :is(input[type="text"], input[type="email"], input[type="tel"], select):focus { border-color: var(--wpa-nuit); outline: 3px solid var(--wpa-violet-clair); outline-offset: 0; }
body .wp-block-edd-checkout #\65 dd_purchase_form .edd-description { margin: 6px 0 0; font-size: var(--wpa-taille-xs); color: var(--wpa-texte-second); }
@media (min-width: 640px) {
  body .wp-block-edd-checkout #\65 dd_checkout_user_info { display: grid; grid-template-columns: 1fr 1fr; column-gap: var(--wpa-espace-40); }
  body .wp-block-edd-checkout #\65 dd_checkout_user_info > :is(legend, .edd-blocks-form__group-edd_email) { grid-column: 1 / -1; }
}
body .wp-block-edd-checkout #\65 dd_secure_site_wrapper { display: flex; align-items: center; gap: var(--wpa-espace-20); margin: 0 0 var(--wpa-espace-40); font-size: var(--wpa-taille-s); color: var(--wpa-texte-second); }
body .wp-block-edd-checkout #\65 dd_secure_site_wrapper .padlock svg { width: 14px; height: 18px; fill: var(--wpa-etat-succes); }

/* La validation : les deux engagements, puis un bouton plein, large, à la mesure du geste. */
body .wp-block-edd-checkout #\65 dd_purchase_form #\65 dd_purchase_submit { display: grid; gap: var(--wpa-espace-30); margin: var(--wpa-espace-40) 0 0; padding: var(--wpa-espace-50); background: var(--wpa-surface); border: 0; border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-carte); }
body .wp-block-edd-checkout #\65 dd_purchase_form #\65 dd_purchase_submit fieldset { margin: 0; padding: 0; border: 0; box-shadow: none; }
body .wp-block-edd-checkout #\65 dd_purchase_form #\65 dd_purchase_submit :is(.edd-privacy-policy-agreement, .edd-terms-agreement) { display: flex; align-items: flex-start; gap: var(--wpa-espace-20); }
body .wp-block-edd-checkout #\65 dd_purchase_form #\65 dd_purchase_submit input[type="checkbox"] { flex: 0 0 auto; width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--wpa-nuit); }
body .wp-block-edd-checkout #\65 dd_purchase_form #\65 dd_purchase_submit :is(.edd-privacy-policy-agreement, .edd-terms-agreement) label { font: 400 var(--wpa-taille-s)/1.45 var(--wpa-police-texte); color: var(--wpa-encre); }
body .wp-block-edd-checkout #\65 dd_purchase_form #\65 dd_purchase_submit .edd-show-terms { margin: 0 0 4px; font-size: var(--wpa-taille-xs); }
body .wp-block-edd-checkout #\65 dd_purchase_form #\65 dd_purchase_submit .edd-terms { max-height: 240px; overflow: auto; padding: var(--wpa-espace-30); font-size: var(--wpa-taille-xs); background: var(--wpa-fond); border-radius: var(--wpa-rayon-carte); }
body .wp-block-edd-checkout #\65 dd_purchase_form #\65 dd_purchase_submit #\65 dd-purchase-button { width: 100%; min-height: 56px; margin-top: var(--wpa-espace-20); font: 700 var(--wpa-taille-m)/1 var(--wpa-police-texte); border-radius: var(--wpa-rayon-bouton); }
body .wp-block-edd-checkout #\65 dd_purchase_form #\65 dd_purchase_submit #\65 dd-purchase-button:disabled { opacity: 0.55; cursor: not-allowed; }

/* ——— Confirmation et reçu (blocs edd/confirmation, edd/receipt) : le remerciement en tête, puis des
   cartes — la commande, ce qu'on a acheté, l'abonnement. La pastille d'état garde sa taille, la clé
   de licence se lit en chasse fixe, le fichier se télécharge par un bouton. ——— */
.wpa-confirmation-merci, .wpa-echec { margin-bottom: var(--wpa-espace-60); padding: var(--wpa-espace-50) var(--wpa-espace-60); background: var(--wpa-etat-succes-fond); border-radius: var(--wpa-rayon-carte); }
/* La mise en page contrainte de WordPress centre les enfants avec margin-inline: auto !important. */
body .entry-content :is(.wpa-confirmation-merci, .wpa-echec).is-layout-constrained > * { margin-block: 0; margin-left: 0 !important; margin-right: 0 !important; max-width: none; }
:is(.wpa-confirmation-merci, .wpa-echec) > .wp-block-heading { display: flex; align-items: center; gap: var(--wpa-espace-30); font-size: var(--wpa-taille-xl); }
:is(.wpa-confirmation-merci, .wpa-echec) > .wp-block-heading::before { content: "✓"; display: inline-grid; place-items: center; flex: 0 0 auto; width: 40px; height: 40px; border-radius: 50%; background: var(--wpa-etat-succes); color: var(--wpa-surface); font-size: 22px; }
body .entry-content :is(.wpa-confirmation-merci, .wpa-echec).is-layout-constrained > p { margin-top: var(--wpa-espace-30); max-width: 60ch; color: var(--wpa-encre); }
body .entry-content :is(.wpa-confirmation-merci, .wpa-echec).is-layout-constrained > .wp-block-buttons { margin-top: var(--wpa-espace-40); }
/* Page d'échec du paiement (bin/composer/echec.php) : la même carte, en teinte d'erreur. */
.wpa-echec { background: var(--wpa-etat-erreur-fond); }
.wpa-echec > .wp-block-heading::before { content: "!"; background: var(--wpa-etat-erreur); }
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) { display: grid; gap: var(--wpa-espace-40); }
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) > h3 { margin: var(--wpa-espace-30) 0 0; font: 800 var(--wpa-taille-l)/1.2 var(--wpa-police-titre); color: var(--wpa-nuit); }
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) :is(.edd-blocks-receipt__totals, .edd-blocks-receipt__items) {
  margin: 0; padding: var(--wpa-espace-30) var(--wpa-espace-50); background: var(--wpa-surface); border: 0; border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-carte);
}
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) .edd-blocks-receipt__totals .edd-blocks__row {
  display: flex; justify-content: space-between; align-items: center; gap: var(--wpa-espace-30); padding: var(--wpa-espace-20) 0; border-bottom: 1px solid var(--wpa-trait); font-size: var(--wpa-taille-s);
}
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) .edd-blocks-receipt__totals .edd-blocks__row:last-child { border-bottom: 0; }
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) .edd-blocks__row-label { font-weight: 600; color: var(--wpa-texte-second); }
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) .edd-blocks__row-value { text-align: right; color: var(--wpa-encre); font-variant-numeric: tabular-nums; }
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) .edd-blocks-receipt__row-header .edd-blocks__row-value { font: 800 var(--wpa-taille-m)/1.2 var(--wpa-police-titre); color: var(--wpa-nuit); }
/* La pastille d'état garde ses couleurs par statut (habillage-natif.css) : ici, sa taille seule. */
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) .edd-blocks__row-value.edd_receipt_payment_status { flex: 0 0 auto; width: auto; }
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) .edd-blocks__row-sublabel { font-weight: 600; color: var(--wpa-nuit); }
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) .edd-blocks-receipt__row-item--license-key { flex-wrap: wrap; }
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) .edd_sl_license_key { display: inline-block; max-width: 100%; padding: 4px 10px; overflow-wrap: anywhere; background: var(--wpa-violet-pale); border-radius: var(--wpa-rayon-etiquette); font: 500 var(--wpa-taille-s)/1.4 var(--wpa-police-mono); color: var(--wpa-nuit); user-select: all; }
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) .edd-blocks-receipt__item { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--wpa-espace-40); padding: var(--wpa-espace-30) 0; }
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) .edd-blocks-receipt__item-details > .edd-blocks__row-label { font: 700 var(--wpa-taille-m)/1.3 var(--wpa-police-texte); color: var(--wpa-nuit); }
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) .edd_purchase_receipt_files { margin: var(--wpa-espace-30) 0; padding: 0; list-style: none; }
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) .edd_download_file_link {
  display: inline-flex; align-items: center; gap: 8px; padding: 10px 16px; border-radius: var(--wpa-rayon-bouton); background: var(--wpa-nuit); color: var(--wpa-surface); font-weight: 600; font-size: var(--wpa-taille-s); text-decoration: none;
}
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) .edd_download_file_link::before { content: "↓"; font-weight: 700; }
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) .edd_download_file_link:is(:hover, :focus-visible) { background: var(--wpa-orange); color: var(--wpa-nuit); text-decoration: underline; text-underline-offset: 0.18em; }
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) .edd-blocks-receipt__item-quantity { font-size: var(--wpa-taille-xs); color: var(--wpa-texte-second); }
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) .edd-blocks-receipt__item-price { font-weight: 700; color: var(--wpa-nuit); white-space: nowrap; font-variant-numeric: tabular-nums; }
/* L'abonnement : un tableau lisible, qui défile dans sa carte sur mobile au lieu de déborder. */
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) #\65 dd_subscription_receipt { display: table; width: 100%; margin: 0; border-collapse: separate; border-spacing: 0; overflow: hidden; background: var(--wpa-surface); border: 0; border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-carte); font-size: var(--wpa-taille-s); }
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) #\65 dd_subscription_receipt :is(th, td) { padding: var(--wpa-espace-30) var(--wpa-espace-40); border: 0; border-bottom: 1px solid var(--wpa-trait); text-align: left; vertical-align: top; }
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) #\65 dd_subscription_receipt th { font-weight: 700; color: var(--wpa-nuit); background: var(--wpa-violet-pale); }
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) #\65 dd_subscription_receipt tbody tr:last-child td { border-bottom: 0; }
/* En bloc, un tableau ne s'étire plus sur sa carte : il ne le devient que là où il doit défiler.
   Au-dessus, les cellules reviennent à la ligne au lieu de déborder. */
@media (max-width: 900px) {
  :is(.wp-block-edd-receipt, .wp-block-edd-confirmation) #\65 dd_subscription_receipt { display: block; overflow-x: auto; }
  :is(.wp-block-edd-receipt, .wp-block-edd-confirmation) #\65 dd_subscription_receipt :is(th, td) { white-space: nowrap; }
}
:is(.wp-block-edd-receipt, .wp-block-edd-confirmation) .edd_subscription_billing_cycle { font-size: var(--wpa-taille-xs); color: var(--wpa-texte-second); }

/* ——— Accueil v2 (avis de Pierre du 05/10, .chantier/accueil-v2.md) : des sections composées
   plutôt qu'un même gabarit texte + image répété — débords, décalages, alternance de fonds. ——— */

/* Logos clients : recadrés sur leur encre (design-system/logos-clients/), en grand, en couleur
   au survol. */
.wpa-section--logos { padding-block: var(--wpa-espace-70); border-bottom: 1px solid var(--wpa-trait); }
.wpa-logos { gap: var(--wpa-espace-50) var(--wpa-espace-80); }
.wpa-logos img { height: 68px; max-width: 240px; opacity: 0.85; transition: filter var(--wpa-duree-courte), opacity var(--wpa-duree-courte); }
.wpa-logos figure:hover img { filter: none; opacity: 1; }
@media (max-width: 1024px) { .wpa-logos img { height: 56px; max-width: 200px; } }
@media (max-width: 600px) { .wpa-logos { gap: var(--wpa-espace-40) var(--wpa-espace-50); } .wpa-logos img { height: 46px; max-width: 150px; } }

/* Bénéfices : trois colonnes, chacune ouverte par une vignette d'interface (inserteur de blocs,
   fiche mise à jour, trois habillages) du même vocabulaire que le haut de page. Ni numéros ni
   décalage (avis de Pierre, 05/10 : « 01, 02, 03 fait IA »). */
.wpa-section--benefices .wp-block-columns { gap: var(--wpa-espace-60); }
.wpa-vignette { display: grid; place-items: center; height: 210px; margin-bottom: var(--wpa-espace-40); padding: var(--wpa-espace-40); background: var(--wpa-violet-pale); border-radius: var(--wpa-rayon-carte); overflow: hidden; font-size: 0.72rem; color: var(--wpa-wp-encre); text-align: left; }
.wpa-vignette svg { width: 20px; height: 20px; fill: currentColor; }
.wpa-vignette--inserteur > * { width: min(100%, 250px); }
.wpa-vignette--inserteur .recherche { margin-bottom: 8px; padding: 7px 10px; background: var(--wpa-surface); border-radius: 4px; box-shadow: var(--wpa-ombre-carte); }
.wpa-vignette--inserteur .grille { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.wpa-vignette--inserteur .grille span { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 12px 4px 10px; background: var(--wpa-surface); border-radius: 6px; text-align: center; line-height: 1.2; }
.wpa-vignette--inserteur .cible { color: var(--wpa-wp-accent); box-shadow: inset 0 0 0 1.5px var(--wpa-wp-accent); }
.wpa-vignette--fiche { position: relative; }
.wpa-vignette--fiche .fiche { display: grid; gap: 4px; width: 170px; padding-bottom: 10px; background: var(--wpa-surface); border-radius: 8px; overflow: hidden; box-shadow: var(--wpa-ombre-cadre); }
.wpa-vignette--fiche .fiche img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.wpa-vignette--fiche .fiche b, .wpa-vignette--fiche .fiche span { padding-inline: 10px; }
.wpa-vignette--fiche b { font: 800 0.82rem/1.2 var(--wpa-police-titre); color: var(--wpa-nuit); }
.wpa-vignette--fiche s { color: var(--wpa-texte-discret); }
.wpa-vignette--fiche ins { text-decoration: none; font-weight: 600; background: var(--wpa-etat-attention-fond); border-radius: 3px; padding: 0 3px; }
.wpa-vignette--fiche .avis { position: absolute; top: 14px; right: 12px; max-width: 150px; padding: 6px 9px; background: var(--wpa-nuit); color: var(--wpa-surface); border-radius: 8px; box-shadow: var(--wpa-ombre-flottant); line-height: 1.3; }
.wpa-vignette--habillages { grid-template-columns: repeat(3, 1fr); gap: 8px; align-items: end; }
.wpa-vignette--habillages .habillage { display: grid; gap: 4px; padding-bottom: 8px; background: var(--wpa-surface); overflow: hidden; box-shadow: var(--wpa-ombre-carte); }
.wpa-vignette--habillages img { width: 100%; aspect-ratio: 1; object-fit: cover; }
.wpa-vignette--habillages b, .wpa-vignette--habillages small { padding-inline: 7px; line-height: 1.2; }
.wpa-vignette--habillages small { color: var(--wpa-texte-discret); font-size: 0.62rem; }
.habillage--1 { border-radius: 10px; }
.habillage--1 b { font: 800 0.74rem/1.2 var(--wpa-police-titre); color: var(--wpa-nuit); }
.habillage--2 { border-radius: 0; }
.habillage--2 b { font: 700 0.6rem/1.2 var(--wpa-police-texte); text-transform: uppercase; letter-spacing: 0.06em; }
.wpa-vignette--habillages .habillage--3 { border-radius: 18px; background: var(--wpa-nuit); color: var(--wpa-surface); }

/* Maquettes des fiches de module (bin/composer/module-*.php) : ce que rend un bloc, dessiné à la
   charte d'après son rendu réel (render.php du module). Une carte blanche posée sur le panneau de la
   section ; les libellés sont ceux que le bloc affiche. */
.wpa-maquette { display: grid; gap: var(--wpa-espace-30); justify-items: center; padding-block: var(--wpa-espace-40); font-size: 0.8rem; color: var(--wpa-encre); }
.wpa-maquette .fiche { width: min(100%, 360px); display: grid; gap: 8px; padding-bottom: 14px; background: var(--wpa-surface); border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-cadre); overflow: hidden; }
.wpa-maquette .fiche > :not(img) { margin-inline: 16px; }
.wpa-maquette img { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.wpa-maquette .categorie { font-size: 0.66rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--wpa-texte-discret); }
.wpa-maquette b { font: 800 1.05rem/1.2 var(--wpa-police-titre); color: var(--wpa-nuit); }
.wpa-maquette .icones { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.wpa-maquette .etoiles { color: var(--wpa-orange); font-size: 1rem; letter-spacing: 1px; }
.wpa-maquette .label { padding: 3px 8px; border-radius: var(--wpa-rayon-etiquette); background: var(--wpa-violet-pale); color: var(--wpa-nuit); font-size: 0.66rem; font-weight: 600; }
.wpa-maquette .dates { display: flex; flex-wrap: wrap; gap: 6px; }
.wpa-maquette .dates span { padding: 4px 9px; border-radius: var(--wpa-rayon-etiquette); background: var(--wpa-nuit); color: var(--wpa-surface); font-size: 0.7rem; font-weight: 600; }
.wpa-maquette .dates span + span { background: var(--wpa-violet-pale); color: var(--wpa-nuit); }
.wpa-maquette .proches { width: min(100%, 460px); display: grid; gap: 10px; }
.wpa-maquette .proches > b { font-size: 1rem; }
.wpa-maquette .proches > div { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.wpa-maquette .proche { display: grid; gap: 4px; padding-bottom: 10px; background: var(--wpa-surface); border-radius: 8px; box-shadow: var(--wpa-ombre-carte); overflow: hidden; font-size: 0.7rem; }
.wpa-maquette .proche img { aspect-ratio: 4 / 3; }
.wpa-maquette .proche > :not(img) { margin-inline: 8px; }
.wpa-maquette .proche strong { font: 700 0.76rem/1.2 var(--wpa-police-titre); color: var(--wpa-nuit); }
.wpa-maquette .reseaux { display: flex; gap: 8px; }
.wpa-maquette .reseaux span { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: var(--wpa-surface); box-shadow: var(--wpa-ombre-carte); }
.wpa-maquette .reseaux svg { width: 20px; height: 20px; }
.wpa-maquette .lecteur { position: relative; width: min(100%, 460px); aspect-ratio: 16 / 9; border-radius: var(--wpa-rayon-carte); overflow: hidden; box-shadow: var(--wpa-ombre-cadre); }
.wpa-maquette .lecteur img { height: 100%; aspect-ratio: auto; }
.wpa-maquette .lecteur i { position: absolute; inset: 50% auto auto 50%; width: 54px; height: 54px; margin: -27px 0 0 -27px; border-radius: 50%; background: var(--wpa-surface); box-shadow: var(--wpa-ombre-flottant); }
.wpa-maquette .lecteur i::after { content: ""; position: absolute; left: 21px; top: 16px; border-style: solid; border-width: 11px 0 11px 17px; border-color: transparent transparent transparent var(--wpa-nuit); }
:is(.wpa-maquette, .wpa-signalement) .signaler { width: min(100%, 380px); display: grid; gap: 12px; padding: 18px; background: var(--wpa-surface); border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-cadre); }
:is(.wpa-maquette, .wpa-signalement) .signaler p { margin: 0; line-height: 1.5; color: var(--wpa-texte-second); }
:is(.wpa-maquette, .wpa-signalement) .signaler .bouton { justify-self: start; padding: 8px 14px; border-radius: var(--wpa-rayon-bouton); background: var(--wpa-nuit); color: var(--wpa-surface); font-weight: 600; }
/* Signaler : la carte du bloc posée sur le coin de la fenêtre de messagerie qu'ouvre son bouton. */
/* Hors de .wpa-maquette, dont les images sont des vignettes en 16:9 : celles-ci gardent le ratio
   que leur donnent leurs attributs width et height. */
.wpa-signalement { position: relative; display: grid; padding-block: var(--wpa-espace-40); font-size: 0.8rem; color: var(--wpa-encre); }
/* L'image porte une marge transparente (l'ombre de la fenêtre s'y éteint), proportionnelle à sa
   largeur : un margin-bottom en %, rapporté lui aussi à la largeur, la suit à toute taille. La carte descend juste sur le haut de la fenêtre, sans masquer sa barre d'outils. */
.wpa-signalement .signaler { position: relative; z-index: 1; justify-self: start; width: min(100%, 300px); margin-bottom: -14%; }
@media (max-width: 781px) { .wpa-signalement .signaler { margin-bottom: -8%; } }
.wpa-signalement .messagerie { margin: 0; }
.wpa-signalement .messagerie img, .wpa-maquette-image img { display: block; width: 100%; height: auto; }
/* Saisons : la même page en hiver et en été, deux téléphones côte à côte, décalés. */
.wpa-maquette--saisons { grid-template-columns: repeat(2, minmax(0, 200px)); justify-content: center; align-items: start; gap: var(--wpa-espace-40); }
.wpa-maquette--saisons figure { position: relative; margin: 0; padding: 8px; background: var(--wpa-nuit); border-radius: 26px; box-shadow: var(--wpa-ombre-cadre); }
.wpa-maquette--saisons figure + figure { margin-top: var(--wpa-espace-60); }
.wpa-maquette--saisons img { aspect-ratio: 9 / 17; object-position: top; border-radius: 19px; }
.wpa-maquette--saisons .saison { position: absolute; z-index: 1; top: -14px; left: 50%; translate: -50% 0; padding: 4px 12px; border-radius: var(--wpa-rayon-etiquette); background: var(--wpa-surface); box-shadow: var(--wpa-ombre-carte); color: var(--wpa-nuit); font-weight: 700; white-space: nowrap; }
/* Saisons : les trois façons de choisir, dessinées d'après l'administration du module. */
.wpa-maquette--modes { justify-items: stretch; width: min(100%, 400px); margin-inline: auto; gap: var(--wpa-espace-20); }
.wpa-maquette--modes .mode { display: grid; gap: 8px; padding: 14px 16px; background: var(--wpa-surface); border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-carte); }
.wpa-maquette--modes .quoi { font-size: 0.66rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--wpa-texte-discret); }
.wpa-maquette--modes b { font-size: 0.9rem; }
.wpa-maquette--modes .champ { display: flex; align-items: center; justify-content: space-between; gap: 10px; color: var(--wpa-texte-second); }
.wpa-maquette--modes .champ em { font-style: normal; padding: 4px 10px; border: 1px solid var(--wpa-trait); border-radius: 6px; color: var(--wpa-nuit); font-weight: 600; }
.wpa-maquette--modes .case { display: flex; gap: 8px; align-items: flex-start; color: var(--wpa-texte-second); line-height: 1.4; }
.wpa-maquette--modes .case i { flex: none; width: 16px; height: 16px; margin-top: 1px; border-radius: 4px; background: var(--wpa-nuit); position: relative; }
.wpa-maquette--modes .case i::after { content: ""; position: absolute; left: 5px; top: 2px; width: 4px; height: 8px; border: solid var(--wpa-surface); border-width: 0 2px 2px 0; rotate: 45deg; }
.wpa-maquette--modes .periode { display: flex; gap: 8px; color: var(--wpa-texte-second); }
.wpa-maquette--modes .periode b { min-width: 3.2em; font-size: 0.8rem; }
.wpa-maquette--modes .selecteur { justify-self: start; display: flex; gap: 2px; padding: 3px; border-radius: 999px; background: var(--wpa-violet-pale); }
.wpa-maquette--modes .selecteur span { padding: 5px 12px; border-radius: 999px; color: var(--wpa-texte-second); font-weight: 600; }
.wpa-maquette--modes .selecteur .actif { background: var(--wpa-nuit); color: var(--wpa-surface); }
/* Saisons : les six habillages du sélecteur. */
.wpa-maquette--habillages { grid-template-columns: repeat(2, minmax(0, 1fr)); justify-items: stretch; width: min(100%, 520px); margin-inline: auto; gap: var(--wpa-espace-20); }
.wpa-maquette--habillages .habillage { display: grid; gap: 10px; align-content: start; padding: 14px 16px; background: var(--wpa-surface); border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-carte); }
.wpa-maquette--habillages .quoi { font-size: 0.66rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--wpa-texte-discret); }
.wpa-maquette--habillages .selecteur { justify-self: start; display: flex; flex-wrap: wrap; align-items: center; gap: 4px; font-size: 0.72rem; color: var(--wpa-texte-second); white-space: nowrap; }
.wpa-maquette--habillages .selecteur span { padding: 4px 10px; border-radius: 999px; }
.wpa-maquette--habillages .actif { color: var(--wpa-nuit); font-weight: 700; }
.wpa-maquette--habillages .is-onglets { gap: 10px; } .wpa-maquette--habillages .is-onglets span { padding: 2px 0 4px; border-radius: 0; }
.wpa-maquette--habillages .is-onglets .actif { box-shadow: inset 0 -2px var(--wpa-nuit); }
.wpa-maquette--habillages .is-boutons span { box-shadow: inset 0 0 0 1.5px var(--wpa-trait); } .wpa-maquette--habillages .is-boutons .actif { background: var(--wpa-nuit); color: var(--wpa-surface); box-shadow: none; }
.wpa-maquette--habillages :is(.is-interrupteur, .is-saisonnier, .is-bascule) { gap: 2px; padding: 3px; border-radius: 999px; background: var(--wpa-violet-pale); }
.wpa-maquette--habillages :is(.is-interrupteur, .is-saisonnier, .is-bascule) .actif { background: var(--wpa-nuit); color: var(--wpa-surface); }
.wpa-maquette--habillages .is-texte { gap: 6px; } .wpa-maquette--habillages .is-texte span { padding: 0; } .wpa-maquette--habillages .is-texte .actif { text-decoration: underline; text-underline-offset: 3px; } .wpa-maquette--habillages .is-texte i { font-style: normal; color: var(--wpa-trait); }
.wpa-maquette--habillages .is-bascule .actif { background: var(--wpa-surface); color: var(--wpa-nuit); box-shadow: var(--wpa-ombre-carte); }
/* Polylang : le même panneau de filtres dans les six langues importées. */
.wpa-maquette--langues { grid-template-columns: repeat(3, minmax(0, 1fr)); width: min(100%, 560px); margin-inline: auto; justify-items: stretch; align-items: start; gap: var(--wpa-espace-30) var(--wpa-espace-20); }
.wpa-maquette--langues .panneau { position: relative; display: grid; gap: 8px; padding: 20px 14px 14px; font-size: 0.82rem; background: var(--wpa-surface); border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-cadre); }
.wpa-maquette--langues .panneau:nth-child(3n+2) { margin-top: var(--wpa-espace-40); }
.wpa-maquette--langues .langue { position: absolute; top: -12px; left: 16px; padding: 3px 10px; border-radius: var(--wpa-rayon-etiquette); background: var(--wpa-nuit); color: var(--wpa-surface); font-weight: 700; }
.wpa-maquette--langues .case { display: flex; align-items: center; gap: 8px; color: var(--wpa-texte-second); }
.wpa-maquette--langues .case i { flex: none; width: 15px; height: 15px; border: 1.5px solid var(--wpa-trait); border-radius: 4px; }
.wpa-maquette--langues .case.coche i { background: var(--wpa-nuit); border-color: var(--wpa-nuit); }
.wpa-maquette--etapes { justify-items: stretch; width: min(100%, 400px); margin-inline: auto; gap: var(--wpa-espace-20); }
.wpa-maquette--etapes .etape { display: flex; gap: 14px; align-items: flex-start; padding: 14px 16px; background: var(--wpa-surface); border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-carte); line-height: 1.45; color: var(--wpa-texte-second); }
.wpa-maquette--etapes .numero { flex: none; display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: var(--wpa-orange); color: var(--wpa-nuit); font-weight: 800; }
.wpa-maquette--etapes .ou { display: block; margin-bottom: 2px; font-family: var(--wpa-police-mono); font-size: 0.68rem; color: var(--wpa-texte-discret); }
@media (max-width: 1100px) { .wpa-maquette--langues { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--wpa-espace-30) var(--wpa-espace-20); } .wpa-maquette--langues .panneau:nth-child(3n+2) { margin-top: 0; } .wpa-maquette--langues .panneau:nth-child(2n) { margin-top: var(--wpa-espace-40); } }
/* En scène produit, l'interrupteur de saison passe à gauche : à droite, il passerait sous le téléphone et le bouton de consentement. */
.wpa-scene--produit .wpa-scene-saison { left: 3%; right: auto; }
@media (max-width: 781px) { .wpa-maquette--habillages { grid-template-columns: 1fr; } .wpa-maquette--saisons { gap: var(--wpa-espace-20); } .wpa-maquette--saisons figure + figure { margin-top: var(--wpa-espace-40); } }
.habillage--3 img { border-radius: 18px 18px 0 0; }
.habillage--3 small { color: var(--wpa-violet-clair); }

/* De la sélection à la page : les trois gestes en phrases, sans numéros, puis le film (v4, validé le
   30/09) sur un panneau lavande qui sort du bord droit. */
.wpa-section--flux { overflow-x: clip; }
.wpa-section--flux .wp-block-column:first-child { flex: 2 1 0; }
.wpa-section--flux .wp-block-column:last-child { flex: 3 1 0; position: relative; isolation: isolate; padding-block: var(--wpa-espace-60); }
.wpa-section--flux .wp-block-column:last-child::before { content: ""; position: absolute; z-index: -1; inset: 0 -100vw 0 22%; background: var(--wpa-violet-pale); border-radius: var(--wpa-rayon-scene) 0 0 var(--wpa-rayon-scene); }
.wpa-film { margin: 0; }
.wpa-film video { display: block; width: 100%; height: auto; aspect-ratio: 16 / 9; background: var(--wpa-surface); border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-cadre); }
.wpa-film figcaption { margin-top: var(--wpa-espace-20); font-size: var(--wpa-taille-s); color: var(--wpa-texte-second); text-align: left; }
.wpa-section--flux ul { display: grid; gap: var(--wpa-espace-30); margin: var(--wpa-espace-40) 0 0; padding-left: 1.2em; font-size: var(--wpa-taille-m); }
.wpa-section--flux ul li::marker { color: var(--wpa-orange); }
/* Variante texte : la colonne de droite porte une liste, pas un visuel. Le panneau part du bord
   de la colonne et le texte s'y retire d'une marge, sinon il déborde du fond. */
.wpa-section--flux-texte .wp-block-column:last-child { padding-inline: var(--wpa-espace-60) 0; }
.wpa-section--flux-texte .wp-block-column:last-child::before { inset-inline-start: 0; }
.wpa-section--flux-texte ul { margin-top: 0; }
@media (max-width: 781px) { .wpa-section--flux-texte .wp-block-column:last-child { padding-inline: var(--wpa-espace-40); } }

/* Pour qui : chaque public en grand, image et texte alternés. Le texte est un seul conteneur
   (.corps, rendu du cœur) : un texte en plusieurs paragraphes reste dans sa colonne. .wpa-publics
   est aussi .wpa-cartes, donc déjà une grille ; elle passe ici à une colonne. */
.wpa-publics { grid-template-columns: 1fr; gap: var(--wpa-espace-80); }
.wpa-public { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); column-gap: var(--wpa-espace-70); align-items: center; }
.wpa-public:nth-child(even) { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); }
.wpa-public:nth-child(even) .visuel { order: 1; }
.wpa-public .visuel { aspect-ratio: 3 / 2; box-shadow: var(--wpa-ombre-cadre); }
.wpa-public .corps { display: grid; gap: var(--wpa-espace-30); align-content: center; }
.wpa-public h3 { font-size: var(--wpa-taille-2xl); }
@media (max-width: 781px) {
  .wpa-publics { gap: var(--wpa-espace-70); }
  .wpa-public, .wpa-public:nth-child(even) { grid-template-columns: 1fr; row-gap: var(--wpa-espace-30); }
  .wpa-public:nth-child(even) .visuel { order: 0; }
  .wpa-public h3 { font-size: var(--wpa-taille-xl); }
}

/* Démo : bande sombre, l'image du village en grand. */
.wpa-section--demo { background: var(--wpa-nuit); color: var(--wpa-violet-pale); overflow-x: clip; }
.wpa-section--demo h2 { color: var(--wpa-surface); }
.wpa-section--demo p { color: var(--wpa-violet-clair); }
.wpa-section--demo .wp-block-column:first-child { flex: 2 1 0; }
.wpa-section--demo .wp-block-column:last-child { flex: 3 1 0; }
.wpa-section--demo .wp-block-button:not(.is-style-outline) .wp-block-button__link { background: var(--wpa-orange); color: var(--wpa-nuit); }
.wpa-section--demo .wp-block-button.is-style-outline .wp-block-button__link { background: transparent; color: var(--wpa-surface); border-color: var(--wpa-surface); }
.wpa-section--demo .wp-block-button__link:hover { text-decoration: underline; text-underline-offset: 0.22em; }
/* Sur le fond nuit, le principal est déjà orange : il passe au blanc ; le contour blanc, au violet pâle. */
body .wpa-section--demo .wp-block-buttons .wp-block-button:not(.is-style-outline) > .wp-block-button__link:hover { background: var(--wpa-surface); color: var(--wpa-nuit); }
body .wpa-section--demo .wp-block-buttons .wp-block-button.is-style-outline > .wp-block-button__link:hover { background: var(--wpa-violet-pale); color: var(--wpa-nuit); border-color: var(--wpa-violet-pale); }

/* Témoignage : resserré (avis de Pierre, 05/10 : « disproportionné »), ses deux actions mises en
   valeur dessous, au centre. */
.wpa-section--temoignage .wpa-bloc-temoignage { max-width: 880px; margin-inline: auto; justify-items: center; }
.wpa-section--temoignage .wpa-temoignage { grid-template-columns: minmax(0, 120px) minmax(0, 1fr); column-gap: var(--wpa-espace-50); border: 0; background: var(--wpa-violet-pale); padding: var(--wpa-espace-50) var(--wpa-espace-60); }
.wpa-section--temoignage .wpa-temoignage blockquote { font: 700 var(--wpa-taille-l)/1.45 var(--wpa-police-titre); color: var(--wpa-nuit); }
.wpa-section--temoignage .wpa-actions { justify-content: center; }
@media (max-width: 600px) { .wpa-section--temoignage .wpa-temoignage { grid-template-columns: minmax(0, 1fr); padding: var(--wpa-espace-40); } .wpa-section--temoignage .wpa-temoignage .portrait { width: 96px; } .wpa-section--temoignage .wpa-temoignage blockquote { font-size: var(--wpa-taille-m); line-height: 1.5; } }

/* Modules : les cartes seules, la plus vendue en tête (menu_order posé par le composeur d'après les
   ventes) et mise en avant sur deux colonnes ; les sept modules remplissent deux rangées de quatre. */
.wpa-section--modules > :is(h2, p) { text-align: center; }
.wpa-section--modules .wp-block-post-template.wpa-cartes { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.wpa-section--modules .wpa-cartes > li:first-child { grid-column: span 2; }
.wpa-section--modules .wpa-cartes > li:first-child .wpa-carte-module { position: relative; }
.wpa-section--modules .wpa-cartes > li:first-child .wpa-carte-module::before { content: "Le plus choisi"; position: absolute; z-index: 1; top: var(--wpa-espace-30); left: var(--wpa-espace-30); padding: 4px 10px; background: var(--wpa-orange); color: var(--wpa-nuit); border-radius: var(--wpa-rayon-etiquette); font: 600 var(--wpa-taille-xs)/1.3 var(--wpa-police-texte); }
/* La tête : sur deux colonnes, son visuel en bandeau 32:9 (les visuels des modules portent leur nom
   au centre : un bandeau le garde entier, une demi-largeur le coupait), à la hauteur de ses voisines. */
.wpa-section--modules .wpa-cartes > li:first-child img { aspect-ratio: 32 / 9; }
.wpa-section--modules .wpa-cartes > li:first-child .wp-block-post-title { font-size: var(--wpa-taille-2xl); }
@media (max-width: 1024px) { .wpa-section--modules .wp-block-post-template.wpa-cartes { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .wpa-section--modules .wp-block-post-template.wpa-cartes { grid-template-columns: 1fr; } .wpa-section--modules .wpa-cartes > li:first-child { grid-column: auto; } }

/* Derniers articles : les illustrations générées sont carrées (1254 px) ; en 16:9 la carte coupait
   leur sujet (pieds du randonneur, calendrier). 4:3 garde l'essentiel, pour une image un tiers plus
   haute ; le carré allongerait encore la carte. */
.wpa-derniers-articles .wpa-carte-module img { aspect-ratio: 4 / 3; }
/* Events Calendar : une fiche Apidae devient un événement, et l’écran de réglages du module. */
.wpa-maquette--evenement { justify-items: stretch; width: min(100%, 360px); margin-inline: auto; gap: 0; }
.wpa-maquette--evenement :is(.fiche, .cree) { display: grid; gap: 6px; padding: 16px 18px; background: var(--wpa-surface); border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-cadre); }
.wpa-maquette--evenement .fiche { grid-template-columns: auto 1fr; column-gap: 14px; align-items: center; }
.wpa-maquette--evenement .fiche .date { grid-row: span 3; display: grid; place-items: center; align-content: center; width: 52px; height: 58px; border-radius: 10px; background: var(--wpa-violet-pale); color: var(--wpa-nuit); }
.wpa-maquette--evenement .date small { font-size: 0.66rem; font-weight: 700; text-transform: uppercase; } .wpa-maquette--evenement .date b { font-size: 1.35rem; line-height: 1; }
.wpa-maquette--evenement .categorie { font-size: 0.66rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--wpa-texte-discret); }
.wpa-maquette--evenement b { font-family: var(--wpa-police-titre); font-weight: 800; color: var(--wpa-nuit); }
.wpa-maquette--evenement .dates { color: var(--wpa-texte-second); font-size: 0.85rem; }
.wpa-maquette--evenement .fleche { justify-self: center; width: 2px; height: 34px; background: var(--wpa-trait); position: relative; }
.wpa-maquette--evenement .fleche::after { content: ""; position: absolute; left: -5px; bottom: -2px; border: 6px solid transparent; border-top-color: var(--wpa-trait); border-bottom: 0; }
.wpa-maquette--evenement .cree { margin-left: var(--wpa-espace-30); background: var(--wpa-nuit); }
.wpa-maquette--evenement .cree b { color: var(--wpa-surface); } .wpa-maquette--evenement .cree .categorie { color: var(--wpa-violet-clair); }
.wpa-maquette--evenement .ligne { display: flex; align-items: center; gap: 9px; color: var(--wpa-surface); font-size: 0.85rem; }
.wpa-maquette--evenement .ligne i { flex: none; width: 7px; height: 7px; border-radius: 50%; background: var(--wpa-orange); }
.wpa-maquette--reglages { width: min(100%, 470px); margin-inline: auto; }
.wpa-maquette--reglages .ecran { display: grid; gap: 0; padding: 0 18px 8px; background: var(--wpa-surface); border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-cadre); font-size: 0.8rem; color: var(--wpa-texte-second); }
.wpa-maquette--reglages .onglets { display: flex; flex-wrap: wrap; gap: 16px; padding: 14px 0 0; border-bottom: 1px solid var(--wpa-trait); }
.wpa-maquette--reglages .onglets > * { padding-bottom: 9px; } .wpa-maquette--reglages .onglets b { color: var(--wpa-nuit); box-shadow: inset 0 -2px var(--wpa-nuit); }
.wpa-maquette--reglages .r { display: grid; grid-template-columns: 9.5em 1fr; gap: 12px; padding: 11px 0; border-bottom: 1px solid var(--wpa-trait); }
.wpa-maquette--reglages .r:last-child { border-bottom: 0; }
.wpa-maquette--reglages .l { font-weight: 700; color: var(--wpa-nuit); }
.wpa-maquette--reglages .r > span:last-child { display: flex; flex-wrap: wrap; gap: 6px 14px; }
.wpa-maquette--reglages .case { display: inline-flex; align-items: center; gap: 7px; }
.wpa-maquette--reglages .case i { flex: none; width: 14px; height: 14px; border: 1.5px solid var(--wpa-trait); border-radius: 4px; }
.wpa-maquette--reglages .case.coche i { background: var(--wpa-nuit); border-color: var(--wpa-nuit); }
.wpa-maquette--reglages .choix { justify-self: start; padding: 3px 10px; border: 1.5px solid var(--wpa-trait); border-radius: 6px; color: var(--wpa-nuit); }
@media (max-width: 781px) { .wpa-maquette--reglages .r { grid-template-columns: 1fr; gap: 6px; } .wpa-maquette--evenement .cree { margin-left: var(--wpa-espace-20); } }
/* Elementor et Divi : le catalogue des widgets, rangé comme dans le panneau du constructeur. */
.wpa-maquette--catalogue { justify-items: stretch; width: min(100%, 460px); margin-inline: auto; gap: var(--wpa-espace-20); }
.wpa-maquette--catalogue .panneau { display: grid; gap: 12px; padding: 18px; background: var(--wpa-surface); border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-cadre); }
.wpa-maquette--catalogue b { display: flex; align-items: center; gap: 8px; font-family: var(--wpa-police-titre); font-weight: 800; color: var(--wpa-nuit); }
.wpa-maquette--catalogue b small { padding: 1px 8px; border-radius: 999px; background: var(--wpa-orange); color: var(--wpa-nuit); font-family: var(--wpa-police-texte); font-size: 0.72rem; }
.wpa-maquette--catalogue .puces { display: flex; flex-wrap: wrap; gap: 6px; }
.wpa-maquette--catalogue .puces span { padding: 4px 10px; border-radius: 6px; background: var(--wpa-violet-pale); color: var(--wpa-nuit); font-size: 0.78rem; font-weight: 600; }
/* Rando & Vélo : le niveau dans sa couleur sur la ligne « En bref », et les fiches le long du tracé. */
.wpa-maquette--niveaux { justify-items: stretch; width: min(100%, 440px); margin-inline: auto; gap: 10px; }
.wpa-maquette--niveaux .itineraire { display: grid; gap: 4px; padding: 13px 16px; background: var(--wpa-surface); border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-carte); }
.wpa-maquette--niveaux b { font-family: var(--wpa-police-titre); font-weight: 800; color: var(--wpa-nuit); }
.wpa-maquette--niveaux .ligne { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; font-size: 0.8rem; color: var(--wpa-texte-second); }
.wpa-maquette--niveaux .niveau { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; color: var(--wpa-nuit); }
.wpa-maquette--niveaux .niveau i { width: 20px; height: 6px; border-radius: 3px; }
.wpa-maquette--niveaux .is-vert i { background: var(--wpa-niveau-vert); } .wpa-maquette--niveaux .is-bleu i { background: var(--wpa-niveau-bleu); } .wpa-maquette--niveaux .is-rouge i { background: var(--wpa-niveau-rouge); } .wpa-maquette--niveaux .is-noir i { background: var(--wpa-niveau-noir); }
.wpa-maquette--chemin { width: min(100%, 400px); margin-inline: auto; }
.wpa-maquette--chemin .trace { position: relative; display: grid; gap: 12px; padding: 18px 18px 18px 22px; background: var(--wpa-surface); border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-cadre); }
.wpa-maquette--chemin .trace::before { content: ""; position: absolute; left: 52px; top: 30px; bottom: 30px; border-left: 3px dashed var(--wpa-violet-clair); }
.wpa-maquette--chemin .pas { position: relative; display: grid; grid-template-columns: 62px 1fr; gap: 14px; align-items: center; }
.wpa-maquette--chemin .km { justify-self: center; z-index: 1; padding: 3px 8px; border-radius: 999px; background: var(--wpa-orange); color: var(--wpa-nuit); font-size: 0.72rem; font-weight: 800; white-space: nowrap; }
.wpa-maquette--chemin .pas:first-child .km, .wpa-maquette--chemin .pas:last-child .km { background: var(--wpa-nuit); color: var(--wpa-surface); }
.wpa-maquette--chemin small { display: block; font-size: 0.7rem; color: var(--wpa-texte-discret); } .wpa-maquette--chemin b { font-family: var(--wpa-police-titre); color: var(--wpa-nuit); }

/* ——— Blog (theme/inc/blog.php, billet .chantier/blog.md) ——— */

/* Liste : grille de six colonnes. Page 1 du blog : la une sur toute la largeur, deux cartes en relief
   (trois colonnes chacune), puis des cartes de deux colonnes ; ailleurs, trois cartes par rangée.
   Cartes de la charte (celles des derniers articles de l'accueil) : toute la carte mène à l'article
   par le lien de son titre, étiré. */
:is(.blog, .category) .entries[data-layout="grid"] { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: var(--wpa-espace-60) var(--wpa-espace-50); }
:is(.blog, .category) .entries > .entry-card {
  --card-inner-spacing: var(--wpa-espace-50);
  --card-element-spacing: var(--wpa-espace-30);
  position: relative; grid-column: span 2; display: flex; flex-direction: column;
  background: var(--wpa-surface); border: 0; border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-carte);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
:is(.blog, .category) .entries > .entry-card:hover { transform: translateY(-3px); box-shadow: var(--wpa-ombre-flottant); }
:is(.blog, .category) .entries > .entry-card > * { margin-block: 0 var(--card-element-spacing); }
:is(.blog, .category) .entries > .entry-card > :last-child { margin-block-end: 0; margin-block-start: auto; }
:is(.blog, .category) .entry-card .ct-media-container { border-radius: var(--wpa-rayon-carte) var(--wpa-rayon-carte) 0 0; overflow: hidden; }
:is(.blog, .category) .entry-card .ct-media-container img { transition: transform 0.4s ease; }
:is(.blog, .category) .entry-card:hover .ct-media-container img { transform: scale(1.03); }
:is(.blog, .category) .entry-card .entry-title { font: 800 var(--wpa-taille-l)/var(--wpa-interligne-titre) var(--wpa-police-titre); }
:is(.blog, .category) .entry-card .entry-title a { color: var(--wpa-nuit); text-decoration: none; }
:is(.blog, .category) .entry-card .entry-title a::after { content: ""; position: absolute; inset: 0; z-index: 1; border-radius: inherit; }
:is(.blog, .category) .entry-card:hover .entry-title a { text-decoration: underline; text-underline-offset: 0.18em; }
:is(.blog, .category) .entry-card .entry-title a:focus-visible { outline: none; }
:is(.blog, .category) .entry-card:has(.entry-title a:focus-visible) { outline: 3px solid var(--wpa-lien); outline-offset: 3px; }
:is(.blog, .category) .entry-card .entry-excerpt { font-size: var(--wpa-taille-s); color: var(--wpa-texte-second); }
:is(.blog, .category, .single-post) .entry-meta { font-size: var(--wpa-taille-xs); font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: var(--wpa-texte-discret); }

/* Les deux cartes en relief : trois colonnes, image plus large. */
.blog .entries > .entry-card.wpa-relief { grid-column: span 3; }
.blog .entry-card.wpa-relief .ct-media-container img { aspect-ratio: 16 / 9 !important; }
.blog .entry-card.wpa-relief .entry-title { font-size: var(--wpa-taille-xl); }

/* La une : image à gauche (sept douzièmes), texte à droite, sur fond pâle. */
.blog .entries > .entry-card.wpa-une {
  grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
  grid-template-rows: 1fr auto auto auto auto 1fr; column-gap: var(--wpa-espace-70);
  padding: 0; background: var(--wpa-violet-pale); box-shadow: none; overflow: hidden;
}
.blog .entry-card.wpa-une > * { grid-column: 2; margin: 0 var(--wpa-espace-70) var(--wpa-espace-40) 0; }
.blog .entry-card.wpa-une > .ct-media-container { grid-column: 1; grid-row: 1 / -1; width: 100%; margin: 0; border-radius: var(--wpa-rayon-carte) 0 0 var(--wpa-rayon-carte); }
.blog .entry-card.wpa-une .ct-media-container img { aspect-ratio: 16 / 10 !important; width: 100%; height: 100%; object-fit: cover; }
.blog .entry-card.wpa-une > .wpa-une-etiquette { grid-row: 2; }
.blog .entry-card.wpa-une > .entry-title { grid-row: 3; font-size: var(--wpa-taille-2xl); }
.blog .entry-card.wpa-une > .entry-excerpt { grid-row: 4; font-size: var(--wpa-taille-m); color: var(--wpa-encre); }
.blog .entry-card.wpa-une > .wpa-une-action { grid-row: 5; margin-block: var(--wpa-espace-20) var(--wpa-espace-40); }
.blog .entry-card.wpa-une > .entry-meta { grid-row: 6; align-self: start; margin-block-start: 0; }
.wpa-une-etiquette {
  justify-self: start; padding: 4px 10px; border-radius: var(--wpa-rayon-etiquette);
  background: var(--wpa-orange); color: var(--wpa-nuit);
  font: 700 var(--wpa-taille-xs)/1.2 var(--wpa-police-texte); letter-spacing: 0.04em; text-transform: uppercase;
}
.wpa-une-action .wpa-bouton { pointer-events: none; }
.blog .entry-card.wpa-une:hover .wpa-une-action .wpa-bouton { background: var(--wpa-orange); color: var(--wpa-nuit); }

@media (max-width: 1000px) {
  :is(.blog, .category) .entries[data-layout="grid"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  :is(.blog, .category) .entries > .entry-card, .blog .entries > .entry-card.wpa-relief { grid-column: span 1; }
  .blog .entries > .entry-card.wpa-une { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
}
@media (max-width: 690px) {
  :is(.blog, .category) .entries[data-layout="grid"] { grid-template-columns: minmax(0, 1fr); }
  .blog .entries > .entry-card.wpa-une { display: flex; flex-direction: column; grid-column: auto; padding-block-end: var(--wpa-espace-50); }
  .blog .entry-card.wpa-une > * { margin-inline: var(--wpa-espace-50); }
  .blog .entry-card.wpa-une > .ct-media-container { margin: 0 0 var(--wpa-espace-40); border-radius: var(--wpa-rayon-carte) var(--wpa-rayon-carte) 0 0; }
  .blog .entry-card.wpa-une .ct-media-container img { min-height: 0; aspect-ratio: 4 / 3 !important; }
  .blog .entry-card.wpa-une > .entry-meta { margin-block-start: var(--wpa-espace-30); }
}

/* Article : l'en-tête sur fond pâle, texte à gauche, image à la une à droite. */
.wpa-article-entete {
  display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--wpa-espace-70); align-items: center;
  max-width: 1290px; margin: 0 auto var(--wpa-espace-80);
  padding: var(--wpa-espace-70); background: var(--wpa-violet-pale); border-radius: var(--wpa-rayon-scene);
  box-sizing: border-box; width: calc(100% - 2 * var(--wpa-espace-50));
}
.wpa-article-entete-texte { display: grid; gap: var(--wpa-espace-40); align-content: center; }
.wpa-article-entete-texte > * { margin: 0; }
.wpa-article-surtitre { display: flex; flex-wrap: wrap; gap: 0.25em 0; font-size: var(--wpa-taille-xs); font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: var(--wpa-texte-second); }
.wpa-article-surtitre { column-gap: 1.2em; }
@media (min-width: 600px) {
  .wpa-article-surtitre { column-gap: 0; }
  .wpa-article-surtitre > * + *::before { content: "·"; margin-inline: 0.6em; color: var(--wpa-texte-discret); }
}
.wpa-article-surtitre a { color: var(--wpa-lien); text-decoration: none; }
.wpa-article-surtitre a:hover { text-decoration: underline; text-underline-offset: 0.18em; }
.wpa-article-titre { font: 800 var(--wpa-taille-3xl)/1.08 var(--wpa-police-titre); letter-spacing: -0.02em; color: var(--wpa-nuit); text-wrap: balance; }
.wpa-article-chapo { font-size: var(--wpa-taille-l); line-height: 1.5; color: var(--wpa-encre); }
.wpa-article-auteur { display: flex; align-items: center; gap: var(--wpa-espace-30); font-size: var(--wpa-taille-s); font-weight: 600; color: var(--wpa-nuit); }
.wpa-article-auteur img { width: 40px; height: 40px; border-radius: 50%; }
.wpa-article-visuel { margin: 0; }
/* L'image à son format d'origine, jamais recadrée : un carré reste carré, un 3:2 reste 3:2. Une
   image très haute est bornée en hauteur et centrée dans sa colonne. */
.wpa-article-visuel { display: flex; justify-content: center; min-width: 0; }
.wpa-article-visuel img { display: block; max-width: 100%; width: auto; height: auto; max-height: 560px; border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-cadre); }
/* Image paysage : toujours à côté du texte, mais sur une moitié de la largeur au lieu de cinq
   douzièmes, et entière (2:1) : l'image est alors moins haute que le texte qu'elle accompagne. */
.wpa-article-entete--paysage { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.wpa-article-entete--paysage .wpa-article-visuel img { width: 100%; max-height: none; }
@media (max-width: 900px) {
  .wpa-article-entete { grid-template-columns: minmax(0, 1fr); padding: var(--wpa-espace-50); width: calc(100% - 2 * var(--wpa-espace-40)); }
  .wpa-article-visuel img { max-height: 420px; }
}

/* Corps : intertitres à l'échelle d'un texte, plus de respiration. */
.single-post .entry-content { font-size: var(--wpa-taille-m); line-height: 1.7; }
.single-post .entry-content h2 { --theme-font-size: clamp(1.5rem, 1.25rem + 1vw, 1.875rem); margin-block: 2em 0.6em; }
.single-post .entry-content h3 { --theme-font-size: clamp(1.2rem, 1.1rem + 0.5vw, 1.375rem); margin-block: 1.8em 0.5em; }
.single-post .entry-content > :first-child { margin-block-start: 0; }

/* Sommaire : un dépliant au fil du texte ; à partir de 1380 px, une colonne collée à gauche du texte
   (hauteur nulle : il ne pousse rien, il suit la lecture), la section lue soulignée. */
.wpa-sommaire details > summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; margin: 0; }
.wpa-sommaire details > summary::-webkit-details-marker { display: none; }
.wpa-sommaire details > summary::after { content: "+"; font: 700 1.1rem/1 var(--wpa-police-texte); color: var(--wpa-nuit); }
.wpa-sommaire details[open] > summary::after { content: "−"; }
.wpa-sommaire details[open] > summary { margin-block-end: 8px; }
.wpa-sommaire a[aria-current="location"] { color: var(--wpa-nuit); font-weight: 700; text-decoration: underline; text-decoration-color: var(--wpa-orange); text-decoration-thickness: 3px; }
/* Seuil : la colonne de texte (750 px), l'écart (40 px), le sommaire (240 px) et une marge de 24 px
   de chaque côté tiennent à partir de 2 × (375 + 40 + 240 + 24) = 1358 px ; 1380 px par prudence. */
@media (min-width: 1380px) {
  .single-post .entry-content > .wpa-sommaire {
    position: sticky; top: 110px; z-index: 2; height: 0; margin-block: 0 !important; padding: 0; overflow: visible;
    background: none; width: 240px; max-width: 240px;
    /* Centré par la mise en page contrainte, il recule de la moitié de la colonne de texte de Blocksy
       (750 px), de l'écart (40 px) et de sa propre moitié (120 px). */
    transform: translateX(calc(-1 * (375px + 40px + 120px)));
  }
  .single-post .entry-content > .wpa-sommaire details { padding: 18px 20px; background: var(--wpa-violet-pale); border-radius: var(--wpa-rayon-carte); font-size: var(--wpa-taille-s); max-height: calc(100vh - 160px); overflow-y: auto; }
  /* Tenu ouvert par le script seulement : sans lui, le dépliant reste un dépliant qu'on ouvre. */
  .single-post .entry-content > .wpa-sommaire--fixe summary { pointer-events: none; }
  .single-post .entry-content > .wpa-sommaire--fixe summary::after { content: none; }
  .admin-bar.single-post .entry-content > .wpa-sommaire { top: 142px; }
  .single-post .entry-content > .wpa-sommaire ol { gap: 8px; }
}

/* Barre de lecture (composants.js), en haut de la fenêtre (sous la barre d'administration). */
.admin-bar .wpa-lecture { top: 32px; }
@media (max-width: 782px) { .admin-bar .wpa-lecture { top: 46px; } }
.wpa-lecture { position: fixed; inset: 0 0 auto 0; z-index: 100; height: 4px; background: var(--wpa-orange); transform-origin: 0 50%; transform: scaleX(0); pointer-events: none; }

/* Encart produit, en fin d'article : fond pâle, visuel du module, deux actions. */
.wpa-encart-produit {
  display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: var(--wpa-espace-60); align-items: center;
  margin-block: var(--wpa-espace-80) 0; padding: var(--wpa-espace-60); background: var(--wpa-violet-pale); border-radius: var(--wpa-rayon-scene);
  box-sizing: border-box;
}
.wpa-encart-produit:not(:has(.wpa-encart-visuel)) { grid-template-columns: minmax(0, 1fr); }
.wpa-encart-visuel { display: block; width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-carte); }
.wpa-encart-texte { display: grid; gap: var(--wpa-espace-30); }
.wpa-encart-texte > p { margin: 0; color: var(--wpa-texte-second); }
.wpa-encart-texte > .wpa-encart-surtitre { font-size: var(--wpa-taille-xs); font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--wpa-texte-discret); }
.wpa-encart-texte > .wpa-encart-titre { font: 800 var(--wpa-taille-xl)/var(--wpa-interligne-titre) var(--wpa-police-titre); color: var(--wpa-nuit); }
.wpa-encart-texte > .wpa-actions { margin-block-start: var(--wpa-espace-20); }
@media (max-width: 690px) { .wpa-encart-produit { grid-template-columns: minmax(0, 1fr); padding: var(--wpa-espace-50); } .wpa-encart-visuel { aspect-ratio: 16 / 9; } }

/* Fiche pratique pour l'office, au fil des articles (bloc Groupe « fiche-pratique » repris de l'ancien
   site, demande de Pierre du 10/10). Le bloc nomme les couleurs et espacements de l'ancienne palette
   (primary, primary-light, large, small), absents de la charte : ils y sont rattachés ici, dans le
   bloc seulement, sans réécrire les articles. Carte blanche, distincte de l'encart produit
   (fond pâle) qui clôt l'article ; surtitre, liste à coches ; pas de liseré (règle du 02/10). */
.single-post .entry-content .fiche-pratique {
  --wp--preset--spacing--large: var(--wpa-espace-60);
  --wp--preset--spacing--small: var(--wpa-espace-20);
  margin-block: var(--wpa-espace-70); background: var(--wpa-surface); border-radius: var(--wpa-rayon-scene); box-shadow: var(--wpa-ombre-carte); box-sizing: border-box;
}
.single-post .entry-content .fiche-pratique > p:first-child {
  margin: 0;
  font-size: var(--wpa-taille-xs); font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--wpa-nuit);
}
.single-post .entry-content .fiche-pratique > p:first-child::before { content: ""; display: inline-block; width: 8px; height: 8px; margin-inline-end: var(--wpa-espace-20); border-radius: 50%; background: var(--wpa-orange); vertical-align: 0.1em; }
.single-post .entry-content .fiche-pratique > h2 { margin-block-end: var(--wpa-espace-40); color: var(--wpa-nuit); }
.single-post .entry-content .fiche-pratique > ul { display: grid; gap: var(--wpa-espace-30); margin: 0; padding: 0; list-style: "\200B"; }
.single-post .entry-content .fiche-pratique > ul > li { position: relative; padding-inline-start: 2em; color: var(--wpa-encre); }
.single-post .entry-content .fiche-pratique > ul > li::before {
  content: "✓"; position: absolute; inset-inline-start: 0; top: 0.2em; display: grid; place-items: center; width: 1.35em; height: 1.35em;
  border-radius: 50%; background: var(--wpa-violet-pale); color: var(--wpa-nuit); font-size: 0.85em; font-weight: 700; line-height: 1;
}
@media (max-width: 690px) { .single-post .entry-content .fiche-pratique { --wp--preset--spacing--large: var(--wpa-espace-50); } }

/* À lire aussi : les cartes de la liste. */
.single-post .ct-related-posts-container { background: var(--wpa-fond); }
.single-post .ct-related-posts .ct-module-title { font: 800 var(--wpa-taille-2xl)/var(--wpa-interligne-titre) var(--wpa-police-titre); color: var(--wpa-nuit); margin-block-end: var(--wpa-espace-60); }
.single-post .ct-related-posts-items > article > .hentry {
  position: relative; height: 100%; display: flex; flex-direction: column; gap: var(--wpa-espace-20);
  padding-block-end: var(--wpa-espace-50); background: var(--wpa-surface); border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-carte);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.single-post .ct-related-posts-items > article > .hentry:hover { transform: translateY(-3px); box-shadow: var(--wpa-ombre-flottant); }
.single-post .ct-related-posts .hentry > * { margin: 0 var(--wpa-espace-50); }
.single-post .ct-related-posts .hentry > .ct-media-container { margin: 0 0 var(--wpa-espace-30); border-radius: var(--wpa-rayon-carte) var(--wpa-rayon-carte) 0 0; }
/* Comme les cartes de la liste : 3:2, qui recadre peu une illustration carrée comme un visuel 2:1. */
.single-post .ct-related-posts .ct-media-container img { aspect-ratio: 3 / 2 !important; object-fit: cover; }
.single-post .ct-related-posts .related-entry-title { font: 800 var(--wpa-taille-l)/var(--wpa-interligne-titre) var(--wpa-police-titre); }
.single-post .ct-related-posts .related-entry-title a { color: var(--wpa-nuit); text-decoration: none; }
.single-post .ct-related-posts .related-entry-title a::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.single-post .ct-related-posts .hentry:hover .related-entry-title a { text-decoration: underline; text-underline-offset: 0.18em; }

@media (prefers-reduced-motion: reduce) {
  :is(.blog, .category) .entries > .entry-card, :is(.blog, .category) .entry-card .ct-media-container img, .single-post .ct-related-posts-items > article > .hentry { transition: none; }
  :is(.blog, .category) .entries > .entry-card:hover, .single-post .ct-related-posts-items > article > .hentry:hover, :is(.blog, .category) .entry-card:hover .ct-media-container img { transform: none; }
}

/* ——— Pages captives (bin/composer/tourisme.php, contact.php, demande-demo.php ; billet
   .chantier/pages-captives.md) : en-tête illustré, cartes illustrées, formulaire en carte. ——— */
.entry-content > .wpa-section--entete { padding-block: var(--wpa-espace-70) var(--wpa-espace-80); background: linear-gradient(180deg, var(--wpa-surface) 70%, var(--wpa-fond)); }
.wpa-section--entete .wp-block-column:first-child { flex: 5 1 0; }
.wpa-section--entete .wp-block-column:last-child { flex: 6 1 0; }
.wpa-entete-titre { margin: 0 0 var(--wpa-espace-30); font-size: clamp(2rem, 1.2rem + 2.6vw, 3.2rem); line-height: 1.08; text-wrap: balance; }
.wpa-entete-chapo { margin: 0 0 var(--wpa-espace-40); font-size: var(--wpa-taille-m); color: var(--wpa-texte-second); }
/* Les illustrations ont un fond blanc : posées sur une carte blanche, le bord ne se voit pas. */
.wpa-vignette-image { margin: 0 0 var(--wpa-espace-40); background: var(--wpa-surface); border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-carte); overflow: hidden; }
.wpa-vignette-image img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: contain; }
.wpa-section--engagement .wp-block-column:first-child { flex: 3 1 0; }
.wpa-section--engagement .wp-block-column:last-child { flex: 2 1 0; }
.wpa-section--engagement .wp-block-column:first-child p { color: var(--wpa-texte-second); }
.wpa-engagement { display: grid; justify-items: center; gap: var(--wpa-espace-20); padding: var(--wpa-espace-50); background: var(--wpa-surface); border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-carte); text-align: center; }
.wpa-engagement > * { margin: 0; }
.wpa-engagement-badge img { display: block; width: 132px; height: auto; }
.wpa-engagement h3 { font-size: var(--wpa-taille-xl); }
.wpa-engagement p { color: var(--wpa-texte-second); }
.wpa-section--appel .wp-block-column { text-align: center; }
.wpa-section--appel .wp-block-column > p { max-width: 60ch; margin-inline: auto; }
.wpa-section--appel .wp-block-buttons { justify-content: center; }

.entry-content > .wpa-section--formulaire { padding-block: var(--wpa-espace-40) var(--wpa-espace-80); }
.wpa-formulaire { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--wpa-espace-70); align-items: start; }
.wpa-formulaire-aside > * { margin-block: 0; }
.wpa-formulaire-aside > * + * { margin-block-start: var(--wpa-espace-30); }
.wpa-formulaire-illustration { margin-block-end: var(--wpa-espace-40); }
.wpa-formulaire-illustration img { display: block; width: 100%; height: auto; border-radius: var(--wpa-rayon-carte); }
.wpa-formulaire-aside h2 { font-size: var(--wpa-taille-xl); text-align: left; }
.wpa-formulaire-aside ul { display: grid; gap: var(--wpa-espace-30); padding-left: 1.2em; color: var(--wpa-texte-second); }
.wpa-formulaire-aside li::marker { color: var(--wpa-orange); }
.wpa-formulaire-aside strong { color: var(--wpa-nuit); }
.wpa-formulaire-carte { padding: var(--wpa-espace-60); background: var(--wpa-surface); border-radius: var(--wpa-rayon-carte); box-shadow: var(--wpa-ombre-carte); }
.wpa-formulaire-carte .gform_wrapper.gform-theme--orbital { max-width: none; }
@media (max-width: 900px) {
  .wpa-formulaire { grid-template-columns: minmax(0, 1fr); gap: var(--wpa-espace-50); }
  .wpa-formulaire-illustration { display: none; }
  .wpa-formulaire-carte { padding: var(--wpa-espace-40); }
}

/* Page de maintenance de la bascule (bloc de contenu Blocksy, bin/composer/maintenance.php) : en-tête
   et pied de Blocksy coupés, tout tient dans un écran, centré, sur le fond pâle de la charte. */
.wpa-section--maintenance { min-height: 100vh; display: grid; place-items: center; background: var(--wpa-violet-pale); padding-block: var(--wpa-espace-60); }
.wpa-maintenance { max-width: 40rem; margin-inline: auto; text-align: center; display: grid; justify-items: center; gap: var(--wpa-espace-30); }
.wpa-maintenance .wpa-maintenance-logo img { width: 180px; height: auto; }
.wpa-maintenance .wpa-maintenance-illustration img { width: min(420px, 100%); height: auto; border-radius: var(--wpa-rayon-carte, 16px); }
.wpa-maintenance h1 { margin: 0; }
.wpa-maintenance p { margin: 0; max-width: 34rem; }

/* Audit des pages avant la bascule (10/10). */
/* Fiches de module : la puce orange de la charte dans les sections pâles aussi, de l'air sous
   « Voir tous les modules » avant le pied, et le nom du produit jamais coupé à son tiret. */
.wpa-section--pale ul li::marker { color: var(--wpa-orange); }
.wpa-modules-lies { padding-bottom: var(--wpa-espace-80, 72px); }
.wpa-insecable { white-space: nowrap; }
/* Documentation : les tableaux défilent au lieu de couper les mots lettre à lettre, le code garde ses
   lignes et défile, sur le fond pâle du code en ligne ; légendes détachées du texte qui suit ; les
   étiquettes techniques de version (v-v6, v-v5-legacy) ne s'affichent pas. */
.wpa-docs .entry-content .wp-block-table { overflow-x: auto; }
.wpa-docs .entry-content .wp-block-table table { table-layout: auto; min-width: 100%; width: max-content; max-width: none; }
.wpa-docs .entry-content :is(td, th) { word-break: normal; overflow-wrap: normal; min-width: 8ch; }
.wpa-docs .entry-content :is(td, th) code { white-space: nowrap; }
@media (min-width: 761px) { .wpa-docs .entry-content .wp-block-table table { width: 100%; } }
.wpa-docs .entry-content pre, .wpa-docs .entry-content pre code { white-space: pre; word-break: normal; overflow-wrap: normal; }
body .wpa-docs .entry-content :is(pre, pre.wp-block-code) { overflow-x: auto; background: var(--wpa-violet-pale); border: 1px solid var(--wpa-trait); border-radius: var(--wpa-rayon-carte); padding: var(--wpa-espace-30) var(--wpa-espace-40); }
.wpa-docs .entry-content figcaption { margin-bottom: var(--wpa-espace-40); }
.wpa-docs .tags-links { display: none; }
.wpa-docs .entry-content .wpa-alerte { margin-bottom: var(--wpa-espace-50); }
/* Recherche des docs : le raccourci « ⌘K » de weDocs ne parle qu'aux claviers Mac, et pas en français. */
.wpa-docs .wedocs-single-search-input .short-key { display: none; }
/* Espace client : sur téléphone les onglets passent à la ligne au lieu de défiler (l'onglet courant
   restait hors de l'écran) ; la grille des achats tient dans sa colonne (EDD pose 2 × 50 % plus un
   espacement, soit 16 px de trop) ; la clé de licence finit par « … » quand elle ne tient pas. */
@media (max-width: 760px) {
  .wpa-compte-nav ul { flex-wrap: wrap; overflow-x: visible; padding-bottom: 0; }
}
.wpa-compte-contenu .edd-blocks__columns:not([class*="edd-blocks__columns-"]) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 760px) { .wpa-compte-contenu .edd-blocks__columns:not([class*="edd-blocks__columns-"]) { grid-template-columns: minmax(0, 1fr); } }
.wpa-compte-contenu .edd-licenses__key-input { width: 100%; min-width: 0; text-overflow: ellipsis; font-family: var(--wpa-police-code, ui-monospace, monospace); }
/* Citations des contenus : Blocksy les marque d'un épais liseré à gauche, hors charte (règle de
   Pierre) ; elles se distinguent ici par leur fond pâle et leur police de titre. */
.entry-content .wp-block-quote:not(.wpa-temoignage blockquote) { border: 0; margin-inline: 0; padding: var(--wpa-espace-40) var(--wpa-espace-50); background: var(--wpa-violet-pale); border-radius: var(--wpa-rayon-carte); color: var(--wpa-nuit); }
.entry-content .wp-block-quote:not(.wpa-temoignage blockquote) > :last-child { margin-bottom: 0; }
.entry-content .wp-block-quote cite { display: block; margin-top: var(--wpa-espace-20); font-size: var(--wpa-taille-s); font-style: normal; color: var(--wpa-texte-second); }
/* Le chapô du bandeau de page reste lisible sur téléphone (Blocksy le masquait : ct-hidden-sm). */
@media (max-width: 689.98px) { .hero-section .page-description.ct-hidden-sm { display: block !important; } } /* Blocksy masque en !important */
/* Groupes en ligne sans retour (hérités de l'ancien site, page Services) : sur téléphone, ils passent
   à la ligne au lieu d'écraser leurs colonnes et de déborder de l'écran. */
@media (max-width: 760px) { .entry-content .wp-block-group.is-layout-flex.is-nowrap { flex-wrap: wrap; } .entry-content .wp-block-group.is-layout-flex.is-nowrap > * { flex-basis: 100%; } }
/* Politique de cookies (Complianz) : les noms de service ne se coupent plus lettre à lettre. */
.entry-content :is(.cmplz-service-header, .cmplz-cookies-table, .cmplz-document) :is(h3, h4, td, th, summary, span, p) { word-break: normal; overflow-wrap: break-word; hyphens: none; }
