/* ==========================================================================
   EXPAWORLD Glossaire
   - Hub /outils/glossaire : refonte « direction A » (hero outil centré,
     style docs/Algolia). Fond crème, recherche en héros, stat strip,
     index A-Z compact, grille de cartes.
   - Single terme + bloc PDF : design aligné sur reader/astra-child,
     conservé tel quel.
   Scopé sous .exwg pour éviter toute collision avec le thème.
   ========================================================================== */

.exwg {
  --exwg-accent: #F26522;
  --exwg-accent-hover: #D85510;
  --exwg-accent-soft: #FFF7ED;
  --exwg-text: #1A1A1A;
  --exwg-text-dim: #555555;
  --exwg-text-muted: #6B7280;
  --exwg-text-soft: #888888;
  --exwg-bg: #FFFFFF;
  --exwg-bg-soft: #FAFAFA;
  --exwg-bg-cream: #FAFAF8;
  --exwg-border: #E5E7EB;
  --exwg-border-soft: #F0F0F0;
  /* Palette crème chaud du hub (refresh direction A). */
  --bg: #F8F4EC;
  --exwg-cream: #F8F4EC;
  --exwg-surface: #FBF8F1;
  --exwg-ink: #2B2620;
  --exwg-az-faint: #A99E8A;
  --exwg-az-hover-bg: #EAE1D1;
  --exwg-az-accent: #D2691E;
  --exwg-line2: rgba(43, 38, 32, 0.12);
  --exwg-hairline: rgba(0, 0, 0, 0.15);
  --exwg-hairline-faint: rgba(0, 0, 0, 0.08);
  --exwg-card-border: rgba(0, 0, 0, 0.1);
  --exwg-radius: 8px;
  --exwg-radius-lg: 12px;
  --exwg-radius-xl: 16px;
  --exwg-shadow-sm: 0 1px 2px rgba(0,0,0,0.04);
  --exwg-shadow-card: 0 6px 20px rgba(0,0,0,0.06);
  --exwg-content-max: 1080px;
  --exwg-reading-max: 740px;
  /* Hero à image du hub : jetons --ew-hero-* du thème, et en repli leurs
     valeurs, pour que le hub reste juste si la feuille du thème ne les sert
     pas. Plancher sur trois paliers sans media query : 670px au-dessus de
     1024px de large, 540px jusqu'à 1024px, 450px jusqu'à 768px. Marge haute
     de 70px sous le header : 182px quand il passe sur la photo, au-delà du
     shell mobile (1240px), 70px en dessous. */
  --exwg-sombre: #140B06;
  --exwg-hero-max: var(--ew-hero-content-max, 1140px);
  --exwg-hero-plancher: var(--ew-hero-min-height, max(450px, min(540px, (100vw - 768px) * 1000), min(670px, (100vw - 1024px) * 1000)));
  --exwg-hero-haut: var(--ew-hero-pad-top, max(70px, min(182px, (100vw - 1240.9px) * 10000)));
  --exwg-hero-bas: var(--ew-hero-pad-bottom, 70px);
}

.exwg-wrap {
  max-width: var(--exwg-content-max);
  margin: 0 auto;
  padding: 28px 20px 80px;
  font-family: var(--ew-font-body, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif);
  color: var(--exwg-text);
  font-size: 16px;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
}

/* Fond crème chaud commun à l'archive et au single : la fiche d'un terme
   reprend exactement la même teinte que l'archive (#F8F4EC), pour qu'on
   n'ait aucune rupture visuelle quand on clique sur une carte. */
body.exwg-archive,
body.exwg-single {
  background-color: var(--bg);
}

/* Header du thème transparent sur les fiches : pas de bande blanche entre
   le menu et le contenu, le crème circule de bout en bout. Sur le hub, le
   header passe sur la photo du hero par le mécanisme natif d'Astra (filtre
   astra_is_transparent_header, includes/templates.php) : position, menu
   blanc et logo viennent de ses réglages, rien n'est redéclaré ici.
   #page / .site passe en position: relative pour caler le header sous
   l'éventuelle barre d'admin WordPress. */
body.exwg-single #page,
body.exwg-single .site {
  position: relative;
}
body.exwg-single #masthead,
body.exwg-single .site-header,
body.exwg-single .ast-primary-header-bar,
body.exwg-single .main-header-bar,
body.exwg-single .ast-above-header,
body.exwg-single .ast-below-header {
  background-color: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
}
/* Le menu doit rester lisible sur le crème des fiches. */
body.exwg-single #masthead a,
body.exwg-single .site-header a,
body.exwg-single .main-header-menu a,
body.exwg-single .site-title a,
body.exwg-single .ast-site-identity a {
  color: var(--exwg-text) !important;
}
/* Icônes du header global (compte, panier, recherche) en ink sur les
   fiches du glossaire. Astra peut poser fill="#FFFFFF" sur les <path> en
   inline, donc une règle sur <svg> ne suffit pas : on cible aussi
   svg path / circle pour écraser l'attribut. Tous les sélecteurs sont
   strictement scopés body.single-glossaire_terme pour ne pas fuiter sur le
   reste du site. */
body.single-glossaire_terme #masthead svg,
body.single-glossaire_terme #masthead svg path,
body.single-glossaire_terme #masthead svg circle,
body.single-glossaire_terme .site-header svg,
body.single-glossaire_terme .site-header svg path,
body.single-glossaire_terme .site-header svg circle,
body.single-glossaire_terme .ast-header-account-wrap svg,
body.single-glossaire_terme .ast-header-account-wrap svg path,
body.single-glossaire_terme .ast-cart-menu-wrap svg,
body.single-glossaire_terme .ast-cart-menu-wrap svg path {
  fill: var(--exwg-ink) !important;
  stroke: var(--exwg-ink);
  color: var(--exwg-ink) !important;
}
/* Compteur du panier : pastille (background ink + texte crème) ET
   conteneurs texte associés (.count, .ast-woo-header-cart-info-wrap) */
body.single-glossaire_terme .ast-cart-menu-wrap .ast-cart-count,
body.single-glossaire_terme .ast-addon-cart-wrap .ast-cart-count {
  background-color: var(--exwg-ink) !important;
  color: var(--exwg-cream) !important;
  border-color: var(--exwg-ink) !important;
}
body.single-glossaire_terme .ast-cart-menu-wrap .count,
body.single-glossaire_terme .ast-cart-menu-wrap .ast-cart-menu-icon-count,
body.single-glossaire_terme .ast-cart-menu-wrap .ast-woo-header-cart-info-wrap {
  color: var(--exwg-ink) !important;
}
body.single-glossaire_terme .ast-account-text,
body.single-glossaire_terme .ast-header-account-wrap {
  color: var(--exwg-ink) !important;
}
/* Pastille compteur du panier Astra : c'est un pseudo-element ::after
   du <i class="astra-icon ast-icon-shopping-bag" data-cart-total="0"> qui
   utilise content: attr(data-cart-total). Astra le rend en blanc par
   defaut, invisible sur creme. On force ink + creme avec !important. */
body.single-glossaire_terme .astra-icon.ast-icon-shopping-bag::after,
body.single-glossaire_terme .astra-icon.ast-icon-shopping-bag::before {
  background: var(--exwg-ink) !important;
  background-color: var(--exwg-ink) !important;
  color: var(--exwg-cream) !important;
  border-color: var(--exwg-ink) !important;
}

/* Masquer le breadcrumb global (Astra / Yoast / Rank Math) sur les
   pages glossaire : le hub a son propre repérage (hero + index A-Z),
   le fil d'Ariane fait double emploi. Le glossaire n'en rend aucun ;
   cette règle couvre ceux que d'autres extensions pourraient injecter. */
body.post-type-archive-glossaire_terme .ast-breadcrumbs,
body.post-type-archive-glossaire_terme #ast-breadcrumbs,
body.post-type-archive-glossaire_terme .breadcrumb-trail,
body.post-type-archive-glossaire_terme .yoast-breadcrumb,
body.post-type-archive-glossaire_terme .rank-math-breadcrumb,
body.post-type-archive-glossaire_terme .exwg-breadcrumb,
body.single-glossaire_terme .ast-breadcrumbs,
body.single-glossaire_terme #ast-breadcrumbs,
body.single-glossaire_terme .breadcrumb-trail,
body.single-glossaire_terme .yoast-breadcrumb,
body.single-glossaire_terme .rank-math-breadcrumb,
body.single-glossaire_terme .exwg-breadcrumb {
  display: none !important;
}
/* Le header étant sorti du flux, on supprime l'espacement haut des
   conteneurs de contenu du thème pour que le bandeau parte du tout
   en haut de la page (scopé archive). */
body.exwg-archive .exwg-wrap,
body.exwg-archive #content,
body.exwg-archive .site-content,
body.exwg-archive #primary {
  padding-top: 0;
  margin-top: 0;
}

/* Conteneurs Astra : fond transparent pour que le crème du body soit
   continu (pas de bande blanche entre header et contenu, pas de blanc
   en bas de page sous l'article). Scopé archive + single. */
body.exwg-archive #content,
body.exwg-archive .site-content,
body.exwg-archive #primary,
body.exwg-archive .ast-container,
body.exwg-archive .entry-content,
body.exwg-single #content,
body.exwg-single .site-content,
body.exwg-single #primary,
body.exwg-single .ast-container,
body.exwg-single .entry-content {
  background-color: transparent !important;
}

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

/* ---- Breadcrumb ---- */
.exwg-breadcrumb {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: var(--exwg-text-muted);
  margin-bottom: 28px;
}
.exwg-breadcrumb a {
  color: var(--exwg-text-muted);
  text-decoration: none;
  transition: color .2s;
}
.exwg-breadcrumb a:hover { color: var(--exwg-accent); }
.exwg-bc-sep { color: var(--exwg-text-soft); font-size: 11px; }
.exwg-bc-current { color: var(--exwg-text); font-weight: 500; }

/* ==========================================================================
   Hub - Hero à image
   ========================================================================== */
/* Modèle du hero de la page Presse du thème : photo plein cadre sous un
   voile, header transparent d'Astra posé dessus, contenu calé en bas et
   aligné à gauche. Pleine largeur par width:100vw et margin-left:calc(50% -
   50vw), qui sortent le bandeau du conteneur centré .exwg-wrap. Plancher et
   marges : variables --exwg-hero-* de .exwg. Le hero grandit avec son
   contenu, jamais sous le plancher. */
.exwg-hero {
  position: relative;
  box-sizing: border-box;
  width: 100vw;
  margin-left: calc(50% - 50vw);
  min-height: var(--exwg-hero-plancher);
  display: flex;
  align-items: flex-end;
  padding: var(--exwg-hero-haut) 24px var(--exwg-hero-bas);
  background-color: var(--exwg-sombre);
  color: #FFFFFF;
  overflow: hidden;
}
/* Photo : l'homme lit au centre droit, de 40 à 72 % de la largeur. 62 % le
   garde entier sur téléphone, où le hero est haut et étroit. Au-delà, l'image
   couvre toute la largeur et seule la hauteur joue : 30 % garde la tête sous
   le menu jusqu'à 2560px. */
.exwg-hero-image {
  position: absolute;
  inset: 0;
  z-index: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 62% 30%;
}
/* Voile uni, de la teinte sombre du hub, sans dégradé. Il remplace le
   2026-09-13 un voile en quatre couches, dense à gauche et clair à droite, qui
   coupait la photo en deux. 60 % est la plus faible opacité unie qui tienne
   4,5:1 partout sur le titre, le sous-titre, la méta et le menu : le
   sous-titre, blanc à 88 %, décide de la valeur. Une dégressivité vers la
   droite ne gagne rien, le texte courant jusqu'au bord droit aux petites
   largeurs.

   MESURE. Page de production servie avec ce gabarit et cette feuille, captures
   de Chrome, contraste WCAG calculé pixel par pixel sur les boîtes de ligne, à
   390, 600, 768, 1024, 1100, 1240, 1241, 1440, 1680, 1920 et 2560px. Pire
   pixel : titre 5,92:1 (à 1680px), sous-titre 4,78:1 (à 390px), méta 5,70:1,
   menu 7,08:1. Le surtitre orange, étiquette décorative, n'est pas tenu : 2,3
   à 2,8:1. Changer l'image, la hauteur du hero ou la largeur du texte oblige à
   refaire cette mesure. */
.exwg-hero-voile {
  position: absolute;
  inset: 0;
  z-index: 1;
  background-color: color-mix(in srgb, var(--exwg-sombre) 60%, transparent);
}
.exwg-hero-inner {
  position: relative;
  z-index: 2;
  width: 100%;
  max-width: var(--exwg-hero-max);
  margin: 0 auto;
}
/* Typographie du hero de la page Presse : jetons du thème, leurs valeurs en
   repli. */
.exwg-hero-kicker {
  margin: 0 0 var(--ew-hero-eyebrow-margin, 26px);
  font-size: var(--ew-hero-eyebrow-size, 11px);
  font-weight: var(--ew-hero-eyebrow-weight, 600);
  line-height: var(--ew-hero-eyebrow-line-height, 1.6);
  letter-spacing: var(--ew-hero-eyebrow-tracking, 0.18em);
  text-transform: uppercase;
  color: var(--ew-hero-eyebrow-color, var(--exwg-accent));
}
.exwg-hero-title {
  margin: 0 0 var(--ew-hero-h1-margin, 24px);
  font-size: var(--ew-hero-h1-size, clamp(38px, 4.4vw, 64px));
  font-weight: var(--ew-hero-h1-weight, 500);
  line-height: var(--ew-hero-h1-line-height, 1.3);
  letter-spacing: var(--ew-hero-h1-tracking, -0.013em);
  color: var(--ew-hero-h1-color, #FFFFFF);
}
/* « décodé » garde l'orange de l'accent du comparateur (#E07A2F, soit
   var(--exwc-accent)), posé en dur : comparateur.css n'est pas chargé sur les
   pages du glossaire. Sur le voile uni, il ne tient que 2,35:1 au pire pixel
   (à 390px), sous le minimum de 4,5:1 du titre. */
.exwg-hero-accent { color: #E07A2F; }
.exwg-hero-sub {
  max-width: var(--ew-hero-subtitle-max, 64ch);
  margin: 0 0 var(--ew-hero-subtitle-margin, 34px);
  font-size: var(--ew-hero-subtitle-size, clamp(16px, 1.35vw, 19px));
  line-height: var(--ew-hero-subtitle-line-height, 1.65);
  color: var(--ew-hero-subtitle-color, color-mix(in srgb, #FFFFFF 88%, transparent));
}
/* Ligne de méta : à la place du libellé du champ de la page Presse, 10px
   au-dessus de la recherche. Éléments séparés par « · », 9px de part et
   d'autre, et seulement entre deux éléments d'une même ligne. Le point est
   posé avant chaque élément, hors du flux, dans l'écart qui le précède ; celui
   de l'élément qui ouvre une ligne tombe à gauche de la boîte, où overflow le
   masque. Quand la ligne se replie, aucun point ne la finit ni ne l'ouvre.
   L'écart vaut les deux marges plus la chasse du point dans Plus Jakarta Sans,
   0,286em, mesurée dans Chrome. */
.exwg-hero-meta {
  display: flex;
  flex-wrap: wrap;
  column-gap: calc(2 * var(--ew-hero-meta-separator-margin, 9px) + 0.286em);
  margin: 0 0 10px;
  overflow: hidden;
  font-size: var(--ew-hero-meta-size, 15px);
  font-weight: var(--ew-hero-meta-weight, 400);
  line-height: var(--ew-hero-meta-line-height, 1.6);
  color: var(--ew-hero-meta-color, color-mix(in srgb, #FFFFFF 88%, transparent));
}
.exwg-hero-meta > span {
  position: relative;
}
.exwg-hero-meta > span::before {
  content: "·";
  position: absolute;
  right: 100%;
  margin-right: var(--ew-hero-meta-separator-margin, 9px);
}

/* ---- Recherche (dans le hero, facture du champ de la page Presse) ----
   Centrée dans le hero, comme sur la page Presse et le comparateur. Le
   surtitre, le titre, le sous-titre et la méta restent alignés à gauche. */
.exwg-search {
  position: relative;
  display: flex;
  align-items: center;
  max-width: 680px;
  margin: 0 auto;
}
.exwg-search-ico {
  position: absolute;
  left: 18px;
  color: var(--exwg-text-muted);
  pointer-events: none;
}
.exwg-search input {
  width: 100%;
  height: 56px;
  margin: 0;
  font: inherit;
  font-size: 17px;
  line-height: 1.5;
  padding: 14px 18px 14px 50px;
  border: 1px solid color-mix(in srgb, #FFFFFF 35%, transparent);
  border-radius: var(--exwg-radius);
  background-color: color-mix(in srgb, #FFFFFF 94%, transparent);
  color: var(--exwg-text);
  transition: border-color .18s, background-color .18s;
}
.exwg-search input::placeholder { color: var(--exwg-text-muted); }
.exwg-search input:focus {
  outline: none;
  border-color: var(--exwg-accent);
  background-color: #FFFFFF;
}

/* ---- Chips filtres ----
   Sous le hero, comme la barre de filtres de la page Presse, alignées à
   gauche comme son contenu. 10 catégories + bouton Tout : tenir sur une
   ligne en desktop large, wrap autorisé si besoin. Chaque pill catégorie
   lit sa teinte dans les variables --exwg-cat-* que pose .exwg-chip--{slug}
   (générées depuis exwg_categories_map()). Actif = fond ink, texte crème. */
.exwg-chips {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  gap: 6px;
  margin-top: 28px;
}
.exwg-chip {
  flex: 0 0 auto;
  font: inherit;
  font-size: 13.5px;
  font-weight: 500;
  line-height: 1;
  padding: 7px 15px;
  border: 1px solid var(--exwg-cat-bord, var(--exwg-hairline));
  border-radius: 22px;
  background: var(--exwg-cat-fond, #FFFFFF);
  color: var(--exwg-cat-texte, var(--exwg-text-dim));
  cursor: pointer;
  transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.exwg-chip:hover {
  filter: brightness(0.97);
}
.exwg-chip.is-active {
  background: var(--exwg-ink);
  border-color: var(--exwg-ink);
  color: var(--exwg-cream);
}

/* Tout : bouton de reset en première position, actif par défaut. */
.exwg-chip--all {
  background: var(--exwg-ink);
  border-color: var(--exwg-ink);
  color: var(--exwg-cream);
}
.exwg-chip--all .exwg-chip-count {
  margin-left: 6px;
  opacity: 0.5;
}

/* ==========================================================================
   Hub - Subrow : index A-Z à gauche, compteur + toggle vue à droite
   ========================================================================== */
.exwg-subrow {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  margin-top: 24px;
  padding: 12px 0 18px;
  border-top: 0.5px solid var(--exwg-hairline-faint);
  border-bottom: 0.5px solid var(--exwg-hairline-faint);
}
.exwg-subrow-right {
  display: flex;
  align-items: center;
  gap: 14px;
  font-size: 13px;
  color: var(--exwg-text-dim);
}
.exwg-count-label #exwg-count {
  font-weight: 600;
  color: var(--exwg-ink);
}

/* ==========================================================================
   Hub - Index A-Z compact (resserré)
   ========================================================================== */
.exwg-az {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1px;
}
.exwg-az-link {
  padding: 3px 6px;
  font-size: 12.5px;
  font-weight: 500;
  color: var(--exwg-ink);
  text-decoration: none;
  border-radius: 4px;
  transition: color .15s, background-color .15s;
}
.exwg-az-link:hover,
.exwg-az-link:focus-visible {
  background-color: var(--exwg-az-hover-bg);
  color: var(--exwg-az-accent);
}
.exwg-az-link.is-empty {
  color: var(--exwg-az-faint);
  pointer-events: none;
}
.exwg-az-link.is-active {
  background: var(--exwg-ink);
  color: var(--exwg-cream);
}
.exwg-az-link.is-active:hover {
  background: var(--exwg-ink);
  color: var(--exwg-cream);
}

/* ==========================================================================
   Hub - Toggle grille / liste
   ========================================================================== */
.exwg-toggle {
  display: flex;
  border: 1px solid var(--exwg-line2);
  border-radius: 8px;
  overflow: hidden;
}
.exwg-toggle button {
  border: none;
  cursor: pointer;
  background: #FFFFFF;
  color: var(--exwg-text-muted);
  padding: 7px 11px;
  font-size: 16px;
  line-height: 1;
}
.exwg-toggle button.on {
  background: var(--exwg-ink);
  color: var(--exwg-cream);
}

/* ==========================================================================
   Hub - Grille de cartes
   ========================================================================== */
.exwg-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 14px;
  margin-top: 18px;
}
/* Vue liste : 1 colonne, cartes en row (badge | titre 260px | def flex). */
.exwg-grid.list { grid-template-columns: 1fr; }
.exwg-grid.list .exwg-card {
  flex-direction: row;
  align-items: center;
  gap: 16px;
}
.exwg-grid.list .exwg-card-top {
  flex: 0 0 auto;
}
.exwg-grid.list .exwg-card-title {
  flex: 0 0 260px;
}
.exwg-grid.list .exwg-card-def {
  flex: 1;
}
@media (max-width: 767px) {
  .exwg-grid.list .exwg-card { flex-direction: column; align-items: flex-start; }
  .exwg-grid.list .exwg-card-title { flex: 0 0 auto; }
}
/* Titre de section lettre : pleine largeur, sert aussi d'ancre de scroll.
   La règle [hidden] doit primer sur display:block, sinon une ancre
   masquée laisse une rangée vide (fix round J1 à préserver). */
.exwg-anchor,
.exwg-letter-title {
  display: block;
  scroll-margin-top: 90px;
  grid-column: 1 / -1;
  font-family: var(--ew-font-title, 'Plus Jakarta Sans', sans-serif);
  font-weight: var(--ew-weight-title, 500);
  font-size: 26px;
  line-height: 1;
  color: var(--exwg-ink);
  margin: 16px 0 6px;
  padding-bottom: 10px;
  border-bottom: 0.5px solid var(--exwg-line2);
}
.exwg-anchor[hidden],
.exwg-letter-title[hidden] { display: none; }

.exwg-card {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 18px;
  border: 0.5px solid var(--exwg-card-border);
  border-radius: var(--exwg-radius-lg);
  background: var(--exwg-bg);
  text-decoration: none;
  color: inherit;
  transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.exwg-card:hover {
  border-color: rgba(0, 0, 0, 0.18);
  box-shadow: var(--exwg-shadow-card);
  transform: translateY(-1px);
}
.exwg-card[hidden] { display: none; }
.exwg-card-top {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.exwg-card-title {
  font-family: var(--ew-font-title, 'Plus Jakarta Sans', sans-serif);
  font-weight: var(--ew-weight-title, 500);
  font-size: 17px;
  line-height: 1.25;
  margin-bottom: 0;
  color: var(--exwg-text);
}
.exwg-card-def {
  font-size: 13px;
  color: #666666;
  line-height: 1.5;
}

/* ---- Badges ---- */
/* Base partagée avec le single. Les badges de catégorie lisent les
   variables --exwg-cat-* posées par .exwg-badge--{slug}, comme les chips ;
   le badge pays garde le gris neutre de repli. */
.exwg-badge {
  display: inline-block;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 999px;
  color: var(--exwg-cat-texte, #6B7280);
  background: var(--exwg-cat-fond, color-mix(in srgb, #6B7280 10%, #fff));
  border: 1px solid var(--exwg-cat-bord, color-mix(in srgb, #6B7280 22%, #fff));
}
.exwg-badge-pays {
  text-transform: none;
  letter-spacing: 0;
}

/* Badges des cartes du hub : compacts, code couleur par catégorie. */
.exwg-card .exwg-badge {
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 3px 7px;
  border: 0;
  border-radius: 4px;
  background: var(--exwg-cat-fond, #EFEAE1);
  color: var(--exwg-cat-texte, #5B5142);
}
.exwg-card .exwg-badge-pays {
  background: #EFEAE1;
  color: #6B5B45;
  text-transform: none;
  letter-spacing: 0;
}

.exwg-empty {
  text-align: center;
  color: var(--exwg-text-muted);
  padding: 48px 0;
  font-size: 15px;
}

/* ---- Focus visible (accessibilité) ---- */
.exwg-card:focus-visible,
.exwg-chip:focus-visible,
.exwg-search input:focus-visible {
  outline: 2px solid var(--exwg-accent);
  outline-offset: 2px;
}

/* ==========================================================================
   Single terme - layout 2 colonnes (contenu + sidebar sticky)
   ========================================================================== */
/* Quand la fiche a une sidebar, on élargit le canevas et on bascule
   en grid 2 colonnes. Sans sidebar (terme sans synonymes/liens/sources),
   on conserve la largeur de lecture compacte. */
.exwg-single .exwg-article {
  max-width: var(--exwg-reading-max);
  margin: 0 auto;
}
.exwg-single .exwg-article--has-sidebar {
  max-width: 1180px;
}
.exwg-single .exwg-wrap {
  /* Le wrap parent reste centré, on relève simplement son plafond pour
     que le grid 2col respire au-delà de l'ancien max 1080px. */
  max-width: 1240px;
}
.exwg-2col {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 48px;
  align-items: flex-start;
}
.exwg-article--has-sidebar .exwg-2col {
  grid-template-columns: minmax(0, 1fr) 320px;
}
.exwg-content {
  min-width: 0;
}
.exwg-sidebar {
  display: flex;
  flex-direction: column;
  gap: 16px;
  position: sticky;
  /* Espace pour passer sous le header global (Astra ~70-90px) + air. */
  top: 110px;
}
.exwg-sidebar-block {
  background: var(--exwg-surface);
  border: 1px solid var(--exwg-az-hover-bg);
  border-radius: 14px;
  padding: 22px 22px 20px;
  margin: 0;
}
.exwg-sidebar-block + .exwg-sidebar-block { margin-top: 0; }
.exwg-sidebar-title {
  font-family: var(--ew-font-title, 'Plus Jakarta Sans', sans-serif);
  font-weight: var(--ew-weight-title, 500);
  font-size: 16px;
  letter-spacing: -0.005em;
  margin: 0 0 12px;
  padding-bottom: 10px;
  border-bottom: 0.5px solid var(--exwg-line2);
  color: var(--exwg-ink);
}
/* Liste « Pour aller plus loin » : densité réduite en sidebar. */
.exwg-sidebar .exwg-links { gap: 4px; }
.exwg-sidebar .exwg-links li {
  padding: 8px 10px;
  border-radius: 8px;
  font-size: 14px;
}
.exwg-sidebar .exwg-link-type {
  font-size: 11px;
}
.exwg-sidebar .exwg-syn {
  font-size: 14px;
  line-height: 1.55;
}
.exwg-sidebar .exwg-src-list { font-size: 13px; }
.exwg-sidebar .exwg-src-list li { padding: 6px 0; }

@media (max-width: 900px) {
  /* Mobile : sidebar passe sous le contenu, pas de sticky. */
  .exwg-article--has-sidebar .exwg-2col {
    grid-template-columns: 1fr;
    gap: 32px;
  }
  .exwg-sidebar {
    position: static;
    top: auto;
  }
}
.exwg-term-head { margin-bottom: 28px; }
.exwg-term-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin-bottom: 16px;
}
.exwg-verif {
  font-size: 12px;
  color: var(--exwg-text-muted);
}
.exwg-h1 {
  font-family: var(--ew-font-title, 'Plus Jakarta Sans', sans-serif);
  font-weight: var(--ew-weight-title-strong, 600);
  font-size: 32px;
  line-height: 1.15;
  letter-spacing: -0.018em;
  margin: 0 0 12px;
  color: var(--exwg-text);
}
.exwg-lede {
  font-size: 17px;
  color: var(--exwg-text-dim);
  margin: 0;
  max-width: 60ch;
}
.exwg-single .exwg-h1 { font-size: 34px; }
.exwg-single .exwg-lede {
  font-size: 18px;
  margin-top: 14px;
  color: var(--exwg-text-dim);
}

.exwg-body {
  font-size: 17px;
  line-height: 1.75;
  color: var(--exwg-text);
}
.exwg-body p { margin: 0 0 1.1em; }
.exwg-body a { color: var(--exwg-accent); text-decoration: underline; text-underline-offset: 2px; }
.exwg-body a:hover { color: var(--exwg-accent-hover); }

.exwg-section { margin-top: 44px; }
.exwg-h2 {
  font-family: var(--ew-font-title, 'Plus Jakarta Sans', sans-serif);
  font-weight: var(--ew-weight-title-strong, 600);
  font-size: 22px;
  letter-spacing: -0.012em;
  margin: 0 0 18px;
  color: var(--exwg-text);
}

.exwg-examples {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.exwg-example {
  padding: 18px 20px;
  background: var(--exwg-bg-cream);
  border: 1px solid var(--exwg-border-soft);
  border-left: 3px solid var(--exwg-accent);
  border-radius: var(--exwg-radius);
  font-size: 15px;
  color: var(--exwg-text-dim);
}
.exwg-example p { margin: 0 0 .8em; }
.exwg-example p:last-child { margin-bottom: 0; }

.exwg-syn {
  font-size: 15px;
  color: var(--exwg-text-dim);
  margin: 0;
}

.exwg-links {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.exwg-links li {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  padding: 14px 16px;
  border: 1px solid var(--exwg-border);
  border-radius: var(--exwg-radius);
  transition: border-color .15s;
}
.exwg-links li:hover { border-color: var(--exwg-accent); }
.exwg-links a {
  color: var(--exwg-text);
  text-decoration: none;
  font-weight: 500;
}
.exwg-links a:hover { color: var(--exwg-accent); }
.exwg-link-type {
  font-size: 12px;
  color: var(--exwg-text-soft);
  white-space: nowrap;
}

.exwg-sources .exwg-src-list {
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: 14px;
}
.exwg-src-list li {
  padding: 7px 0;
  border-bottom: 1px solid var(--exwg-border-soft);
  color: var(--exwg-text-dim);
}
.exwg-src-list li:last-child { border-bottom: 0; }
.exwg-src-list a { color: var(--exwg-accent); text-decoration: none; }
.exwg-src-list a:hover { text-decoration: underline; }

.exwg-back {
  margin-top: 48px;
  font-size: 15px;
}
.exwg-back a {
  color: var(--exwg-accent);
  text-decoration: none;
  font-weight: 500;
}
.exwg-back a:hover { color: var(--exwg-accent-hover); }

/* ==========================================================================
   Téléchargement du PDF (hub et fiches)
   ========================================================================== */
.exwg-lead {
  /* 28px (au lieu de 64) : le bloc PDF suit le bloc CTA de fin de fiche, on
     le rapproche. La séparation nette d'avec le contenu est portée
     par le bloc CTA au-dessus (.exw-cta-guide, margin-top 64px). */
  margin: 28px auto 0;
  max-width: var(--exwg-reading-max);
  background: var(--exwg-bg-cream);
  border: 1px solid var(--exwg-border);
  border-radius: var(--exwg-radius-xl);
  padding: 36px 28px;
}
.exwg-lead-inner { max-width: 520px; margin: 0 auto; text-align: center; }
.exwg-lead-title {
  font-family: var(--ew-font-title, 'Plus Jakarta Sans', sans-serif);
  font-weight: var(--ew-weight-title-strong, 600);
  font-size: 22px;
  letter-spacing: -0.01em;
  /* 22px : l'écart que portait le sous-titre du formulaire, retiré. */
  margin: 0 0 22px;
  color: var(--exwg-text);
}
.exwg-btn {
  font: inherit;
  font-size: 16px;
  font-weight: 600;
  padding: 13px 24px;
  border: 0;
  border-radius: var(--exwg-radius);
  background: var(--exwg-accent);
  color: #fff;
  cursor: pointer;
  transition: background .18s ease;
}
.exwg-btn:hover { background: var(--exwg-accent-hover); }
/* Le bouton sert désormais de lien de téléchargement : sans soulignement ni
   changement de couleur au survol hérité des liens du thème. */
a.exwg-btn,
a.exwg-btn:hover {
  display: inline-block;
  color: #fff;
  text-decoration: none;
}
/* Mention sous un lien partenaire de fiche (ancienne mention RGPD du
   formulaire, mêmes réglages). */
.exwg-mention {
  font-size: 12px;
  color: var(--exwg-text-muted);
  margin: 16px 0 0;
  line-height: 1.5;
}

/* ==========================================================================
   Responsive
   - Mobile  < 600px  : 1 colonne
   - Tablet  600-991  : 2 colonnes
   - Desktop >= 992px : 3 colonnes
   Le hero du hub n'a aucune règle ici : plancher, marges et tailles
   suivent la largeur sans media query.
   ========================================================================== */

/* Mobile : les chips défilent horizontalement sans scrollbar visible. */
@media (max-width: 599px) {
  .exwg-chips {
    flex-wrap: nowrap;
    justify-content: flex-start;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    margin-left: -20px;
    margin-right: -20px;
    padding: 0 20px;
  }
  .exwg-chips::-webkit-scrollbar { display: none; }
}

@media (min-width: 600px) {
  .exwg-grid { grid-template-columns: repeat(2, 1fr); gap: 14px; }
}

@media (min-width: 768px) {
  .exwg-wrap { padding: 40px 32px 96px; }
  .exwg-single .exwg-h1 { font-size: 42px; }
}

@media (min-width: 992px) {
  .exwg-grid { grid-template-columns: repeat(3, 1fr); gap: 16px; }
}

/* Bloc de conversion en fin de fiche terme (single uniquement). Même facture
   que le bloc PDF (fin de fiche), fond chaud accent + bouton orange
   de marque. Préfixe .exw-cta- ; aucune règle globale. Tokens du glossaire. */
.exw-cta-guide {
  /* 64px : premier bloc après le contenu de la fiche, il se détache nettement.
     Le bloc PDF qui le suit se rapproche (.exwg-lead, margin-top 28px). */
  margin: 64px auto 0;
  max-width: var(--exwg-reading-max);
  background: var(--exwg-accent-soft);
  border: 1px solid var(--exwg-border);
  border-radius: var(--exwg-radius-xl);
  padding: 32px 28px;
  text-align: center;
}
.exw-cta-title {
  font-family: var(--ew-font-title, 'Plus Jakarta Sans', sans-serif);
  font-weight: var(--ew-weight-title-strong, 600);
  font-size: 22px;
  letter-spacing: -0.01em;
  margin: 0 0 8px;
  color: var(--exwg-text);
}
.exw-cta-text {
  font-size: 15px;
  color: var(--exwg-text-dim);
  margin: 0 auto 22px;
  max-width: 46ch;
}
.exw-cta-btn {
  display: inline-block;
  font-size: 16px;
  font-weight: 600;
  padding: 13px 24px;
  border-radius: var(--exwg-radius);
  background: var(--exwg-accent);
  color: #fff;
  text-decoration: none;
  transition: background .18s ease;
}
.exw-cta-btn:hover { background: var(--exwg-accent-hover); }

@media (prefers-reduced-motion: reduce) {
  .exwg-card, .exwg-chip, .exwg-btn, .exwg-search input, .exw-cta-btn { transition: none; }
  .exwg-card:hover { transform: none; }
}
