/* Garde-fou global : les bandes full-bleed (100vw) ne doivent jamais
   créer de scroll horizontal (sinon iOS dézoome et casse le header). */
html, body { overflow-x: clip; max-width: 100%; }

/**
 * Styles des widgets Eridanis (thème enfant).
 *
 * Les widgets PHP produisent un HTML sémantique portant ces classes ;
 * tout le style vit ici, keyé sur les noms de classe. Les valeurs viennent
 * des tokens de style.css. Aucune couleur ni taille en dur (hormis
 * structurel sans token).
 */

/* -------------------------------------------------------------- Layout --- */
.eri-container { max-width: var(--eri-container); margin-inline: auto; padding-inline: 1.5rem; }
.eri-stack { display: flex; flex-direction: column; gap: 1.25rem; }
.eri-stack--center { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 1.25rem; }
.eri-media { display: flex; gap: 4rem; align-items: flex-start; }
.eri-figure { flex: 0 0 clamp(280px, 42%, 520px); }
.eri-figure img { display: block; width: 100%; height: auto; border-radius: var(--eri-radius-card); }
.eri-prose-col { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: .75rem; }
.eri-grid-4 { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1rem; }

/* --------------------------------------------------------- Sections ------ */
.eri-section { padding-block: var(--eri-space-section); }
.eri-section--tinted { background: var(--eri-surface-2); }

/* Bande de section rendue par le widget (enjeux, FAQ, silo…).
   La variante teintée sort en pleine largeur (full-bleed) pour que le fond
   touche les bords y compris sur mobile, où le conteneur natif garde 20px. */
.eri-band { position: relative; }
.eri-band--tinted {
	background: #EDF1F7;
	padding-block: var(--eri-space-section);
	position: relative;
	width: 100vw;
	left: 50%;
	right: 50%;
	margin-left: -50vw;
	margin-right: -50vw;
}

/* ------------------------------------------------------- Typographie ----- */
.eri-hero-kicker { font-family: var(--eri-font-display); font-size: 1.125rem; font-weight: 600; color: var(--eri-blue); margin: 0; }
.elementor .eri-display-1 { font-family: var(--eri-font-display); font-size: clamp(2.5rem, 5vw, 4rem); font-weight: 800; line-height: 1.05; letter-spacing: -1.5px; color: var(--eri-navy); margin: 0; }
.elementor .eri-display-2 { font-family: var(--eri-font-display); font-size: clamp(1.875rem, 3vw, 2.75rem); font-weight: 800; line-height: 1.1; letter-spacing: -1px; color: var(--eri-navy); margin: 0; }
.elementor .eri-display-2--light { font-family: var(--eri-font-display); font-size: clamp(1.875rem, 3vw, 2.75rem); font-weight: 800; line-height: 1.1; letter-spacing: -1px; color: var(--eri-on-accent); margin: 0 0 1.25rem; }
.eri-lead { font-family: var(--eri-font-body); font-size: 1.125rem; line-height: 1.6; color: var(--eri-text-muted); margin: 0; }
.eri-hero-lead { max-width: 640px; margin-inline: auto; }
.eri-eyebrow { font-family: var(--eri-font-display); font-size: var(--eri-eyebrow); font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--eri-blue); margin: 0 0 1rem; }
.elementor .eri-subhead { font-family: var(--eri-font-display); font-size: 1.1875rem; font-weight: 600; color: var(--eri-navy); margin: 1rem 0 0; }
.eri-prose { font-family: var(--eri-font-body); color: var(--eri-text-body); line-height: 1.7; }
.eri-prose p { margin: 0 0 1rem; }
.eri-prose p:last-child { margin-bottom: 0; }

/* ------------------------------------------------------------ Cards ------ */
.eri-card { background: var(--eri-surface-0); border: 1px solid rgba(220,227,237,.6); border-radius: var(--eri-radius-card); padding: 1.5rem; box-shadow: 0 1px 3px rgba(14,30,67,.04), 0 12px 30px -14px rgba(14,30,67,.12); }
.eri-stat-value { font-family: var(--eri-font-display); font-size: clamp(2.25rem, 3vw, 3rem); font-weight: 600; line-height: 1; margin: 0 0 .5rem; color: var(--eri-blue); }
.eri-stat-value.eri-c--blue { color: var(--eri-blue); }
.eri-stat-value.eri-c--teal { color: var(--eri-teal); }
.eri-stat-value.eri-c--mustard { color: var(--eri-mustard); }
.eri-stat-value.eri-c--green { color: #1FA971; }
.eri-stat-label { font-family: var(--eri-font-body); font-size: .9375rem; color: var(--eri-text-muted); margin: 0; line-height: 1.5; }
.eri-card .eri-stat-value { margin: 0 0 .5rem; }
.eri-card .eri-stat-label { margin: 0; }

.eri-rule-accent { display: block; width: 40px; height: 3px; background: var(--eri-blue); margin-bottom: 1rem; }

/* ------------------------------------------------------------ Bouton ----- */
.eri-btn { display: inline-flex; align-items: center; gap: .5rem; padding: .85rem 1.75rem; border-radius: var(--eri-radius-pill); background: var(--eri-blue); color: var(--eri-on-accent); font-family: var(--eri-font-display); font-weight: 500; text-decoration: none; transition: background .2s ease, transform .2s ease; }
.eri-btn:hover, .eri-btn:focus-visible { background: #2f7bea; color: var(--eri-on-accent); }
/* Le kit Elementor (.elementor-kit-12 a, spéc. 0,1,1) impose sa couleur de
   lien aux boutons <a>. On scope sous .elementor a.eri-btn (0,2,1) pour gagner. */
.elementor a.eri-btn, .elementor a.eri-btn:visited, .elementor a.eri-btn:hover, .elementor a.eri-btn:focus { color: var(--eri-on-accent); }
.elementor a.eri-btn--ghost { background: transparent; border: 1px solid var(--eri-blue); color: var(--eri-blue); }
.elementor a.eri-btn--ghost:hover, .elementor a.eri-btn--ghost:focus { background: rgba(63,142,252,.08); color: var(--eri-blue); }

/* ------------------------------------------------ Exemple concret (bande) --- */
.eri-band--dark { background: linear-gradient(120deg, var(--eri-navy-deep) 0%, #12315f 55%, #14494f 105%); padding-block: clamp(56px, 6vw, 96px); position: relative; width: 100vw; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; }
.eri-band-inner { max-width: var(--eri-content-row); margin-inline: auto; padding-inline: 1.5rem; }
.eri-band--dark .eri-eyebrow { color: var(--eri-blue-light); }
.eri-band--dark .eri-prose { color: rgba(255,255,255,.82); }
.eri-band--dark .eri-prose strong { color: var(--eri-on-accent); font-weight: 700; }

.eri-band--dark .eri-stat-value--white { color: var(--eri-on-accent); }
.eri-case-stats { display: flex; justify-content: center; flex-wrap: wrap; gap: clamp(2rem, 6vw, 7rem); text-align: center; margin-top: 2.75rem; }
.eri-case-stats > * { display: flex; flex-direction: column; align-items: center; gap: .4rem; }
.eri-case-stats p { margin: 0; }
.eri-stat-value--white { font-family: var(--eri-font-display); font-size: clamp(2.25rem, 3vw, 3rem); font-weight: 600; line-height: 1; margin: 0 0 .5rem; color: var(--eri-on-accent); }
.eri-stat-label--light { font-family: var(--eri-font-body); font-size: .9375rem; color: var(--eri-blue-light); margin: 0; }

/* --------------------------------------------------------------- FAQ ----- */
.eri-faq { max-width: var(--eri-content-row); margin-inline: auto; padding-inline: 1.5rem; }
.elementor .eri-faq__heading { font-family: var(--eri-font-display); font-size: clamp(1.875rem, 3vw, 2.75rem); font-weight: 800; color: var(--eri-navy); text-align: center; margin: 0 0 2rem; }
.eri-faq__list { display: flex; flex-direction: column; gap: .75rem; }
.eri-faq__item { background: var(--eri-surface-0); border-radius: var(--eri-radius-card); padding: 1.125rem 1.5rem; box-shadow: 0 1px 3px rgba(14,30,67,.04), 0 12px 30px -14px rgba(14,30,67,.10); }
.eri-faq__question { display: flex; justify-content: space-between; align-items: center; gap: 1rem; font-family: var(--eri-font-display); font-weight: 500; color: var(--eri-navy); cursor: pointer; list-style: none; }
.eri-faq__question::-webkit-details-marker { display: none; }
.eri-faq__question::after { content: ''; flex: 0 0 auto; width: .6rem; height: .6rem; border-right: 2px solid var(--eri-blue); border-bottom: 2px solid var(--eri-blue); transform: rotate(45deg); transition: transform .2s ease; }
.eri-faq__item[open] > .eri-faq__question::after { transform: rotate(-135deg); }
.eri-faq__question:focus-visible { outline: 2px solid var(--eri-blue); outline-offset: 4px; }
.eri-faq__answer { font-family: var(--eri-font-body); color: var(--eri-text-body); line-height: 1.7; padding-top: .875rem; }
.eri-faq__answer > :last-child { margin-bottom: 0; }

/* -------------------------------------------------------------- Silo ----- */
.eri-silo { max-width: var(--eri-content-row); margin-inline: auto; text-align: center; padding-inline: 1.5rem; }
.elementor .eri-silo__heading { font-family: var(--eri-font-display); font-size: clamp(1.875rem, 3vw, 2.75rem); font-weight: 800; color: var(--eri-navy); margin: 0; }
.eri-silo__subheading { font-family: var(--eri-font-body); color: var(--eri-text-muted); margin: .5rem 0 2rem; }
.eri-silo__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1rem; }
.eri-silo__link { display: flex; flex-direction: row; align-items: center; gap: .75rem; height: 100%; text-align: start; padding: 1rem 1.25rem; background: var(--eri-surface-0); border: 1px solid rgba(220,227,237,.6); border-radius: var(--eri-radius-card); text-decoration: none; box-shadow: 0 1px 3px rgba(14,30,67,.04), 0 12px 30px -14px rgba(14,30,67,.10); transition: box-shadow .2s ease, border-color .2s ease; }
.eri-silo__link:hover, .eri-silo__link:focus-visible { border-color: var(--eri-blue); }
.eri-silo__tag { font-family: var(--eri-font-display); font-size: var(--eri-eyebrow); font-weight: 600; letter-spacing: .08em; text-transform: uppercase; white-space: nowrap; }
.eri-silo__item:nth-child(3n+1) .eri-silo__tag { color: var(--eri-blue); }
.eri-silo__item:nth-child(3n+2) .eri-silo__tag { color: var(--eri-teal); }
.eri-silo__item:nth-child(3n+3) .eri-silo__tag { color: var(--eri-mustard); }
.eri-silo__title { font-family: var(--eri-font-display); font-weight: 500; color: var(--eri-navy); }

/* ------------------------------------------------------------ Mobile ----- */
@media (max-width: 768px) {
  .eri-media { flex-direction: column; gap: 2rem; }
  /* L'image passe toujours AU-DESSUS du texte en mobile, quel que soit le
     sens (image à gauche ou à droite) : le variant « image à droite » a un
     ordre DOM texte+image qui, sans cela, placerait le texte en premier. */
  .eri-media .eri-figure { order: -1; }
  .eri-figure { flex-basis: auto; max-width: 100%; }
  .eri-silo__link { flex-direction: column; align-items: flex-start; }
}
@media (prefers-reduced-motion: reduce) {
  .eri-faq__question::after, .eri-btn, .eri-silo__link { transition: none; }
}

/* ------------------------------------------------------- Fil d'Ariane ---- */
.eri-breadcrumb { font-family: var(--eri-font-body); font-size: .9375rem; color: var(--eri-text-muted); }
.eri-breadcrumb .eri-container { text-align: center; }
.eri-breadcrumb--start .eri-container { text-align: start; }
.eri-breadcrumb a { color: var(--eri-text-muted); text-decoration: none; }
.eri-breadcrumb a:hover { color: var(--eri-blue); }
.eri-breadcrumb .aioseo-breadcrumbs span[aria-current], .eri-breadcrumb .eri-breadcrumb__sep { color: var(--eri-navy); }

/* Titre de section centré pour certains blocs (enjeux). */
.elementor-widget-eri-stat-cards .eri-display-2 { text-align: center; }

/* ==================================================== Solution v2 =========== */

/* Bandeau domaines : sur-titre centré + rangée de pills. */
/* Bandeau domaines : bande « section claire » pleine largeur (#F5F7FA), chips
   blanches à ombre douce, piste défilante avec fondus de 120px sur les bords.
   Valeurs relevées sur la maquette (nœud Figma 1025:28672). */
.eri-domains { text-align: center; background: var(--eri-section-light); padding-block: 30px 40px; position: relative; width: 100vw; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; }
.eri-domains__eyebrow { color: var(--eri-pills-eyebrow, var(--eri-text-soft)); font-family: var(--eri-font-display); font-size: 16px; font-weight: 600; letter-spacing: 1.4px; text-transform: uppercase; margin: 0; }
/* Pas d'overflow ici : c'est la bande .eri-domains (100vw, overflow:hidden) qui
   rogne le défilement aux bords du viewport. Rogner sur le marquee couperait les
   ombres des pastilles (bande basse). */
.eri-domains__marquee { position: relative; margin-top: 1.5rem; }
/* Fondus latéraux (120px) vers le fond de section, comme la maquette. */
.eri-domains__marquee::before,
.eri-domains__marquee::after { content: ''; position: absolute; top: 0; bottom: 0; width: 120px; z-index: 2; pointer-events: none; }
.eri-domains__marquee::before { left: 0; background: linear-gradient(90deg, var(--eri-domains-bg, var(--eri-section-light)), rgba(245,247,250,0)); }
.eri-domains__marquee::after { right: 0; background: linear-gradient(270deg, var(--eri-domains-bg, var(--eri-section-light)), rgba(245,247,250,0)); }
.eri-domains__track { display: flex; flex-wrap: nowrap; width: max-content; gap: 13px; animation: eri-marquee var(--eri-marquee-dur, 45s) linear infinite; will-change: transform; }
.eri-domains__marquee:hover .eri-domains__track { animation-play-state: paused; }
.eri-domains__pill { font-family: var(--eri-font-display); font-size: 12px; font-weight: 500; line-height: 18px; letter-spacing: .4px; color: var(--eri-pill-text, var(--eri-badge-text)); background: var(--eri-pill-bg, var(--eri-surface-0)); border: 1px solid var(--eri-section-light); border-radius: 999px; padding: 11px 19px 11px 15px; white-space: nowrap; flex: 0 0 auto; box-shadow: 0 2px 8px rgba(13,38,89,.05); }
/* La distance de translation = une période exacte (posée par eri-widgets.js dans
   --eri-marquee-w) → raccord invisible. Repli -50% si le JS n'a pas tourné. */
@keyframes eri-marquee { from { transform: translateX(0); } to { transform: translateX(calc(-1 * var(--eri-marquee-w, 50%))); } }
@media (prefers-reduced-motion: reduce) { .eri-domains__track { animation: none; flex-wrap: wrap; justify-content: center; width: auto; } }

/* Timeline déploiement : ligne + étapes en cartes. */
/* Timeline de déploiement : piste horizontale (dégradé vert→bleu, pastilles)
   + cartes descriptives dessous. */
/* Bande « section claire » pleine largeur + espacement généreux (maquette). */
.eri-tl-band { background: var(--eri-section-light); padding-block: clamp(64px, 7vw, 104px); position: relative; width: 100vw; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; }
.eri-tl { display: flex; flex-direction: column; gap: 1rem; }
.elementor .eri-tl__title { margin: 0; text-align: left; }
.eri-tl__lead { margin: 0 0 1.5rem; max-width: 44rem; }
.eri-tl__track { display: flex; align-items: center; padding: 0 22px; margin-bottom: -22px; position: relative; z-index: 1; }
.eri-tl__seg { flex: 1 1 0; height: 3px; background: linear-gradient(90deg, #4ED88F, #3F8EFC); }
.eri-tl__node { flex: 0 0 auto; width: 44px; height: 44px; border-radius: 50%; background: #fff; display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 10px rgba(14,30,67,.10); font-weight: 700; }
.eri-tl__node--dot { width: 34px; height: 34px; border: 3px solid #EAF0FA; }
.eri-tl__node--dot::after { content: ''; width: 12px; height: 12px; border-radius: 50%; background: var(--eri-blue); }
.eri-tl__node--check { border: 3px solid; font-size: 1.1rem; }
.eri-tl__node--green { border-color: #4ED88F; color: #1FA971; }
.eri-tl__node--blue { border-color: var(--eri-blue); color: var(--eri-blue); }
.eri-tl__cards { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: var(--eri-tl-cols, repeat(3, minmax(0,1fr))); gap: 1.5rem; align-items: start; }
/* Option « hauteur égale » (par défaut) : les cartes s'étirent sur la plus
   haute ; l'étiquette est poussée en bas pour un rendu propre. */
.eri-tl--eqh .eri-tl__cards { align-items: stretch; }
.eri-tl--eqh .eri-tl__tag { margin-top: auto; }
.eri-tl__card { background: var(--eri-surface-0); border: 1px solid rgba(220,227,237,.7); border-radius: var(--eri-radius-card); padding: 1.75rem; box-shadow: 0 1px 3px rgba(14,30,67,.04), 0 14px 34px -18px rgba(14,30,67,.12); display: flex; flex-direction: column; align-items: flex-start; gap: .75rem; }
.elementor .eri-tl__card-title { font-family: var(--eri-font-display); font-size: 1.25rem; font-weight: 600; color: var(--eri-navy); margin: 0; line-height: 1.25; }
.eri-tl__card-body { margin: 0; font-family: var(--eri-font-body); color: var(--eri-text-body); line-height: 1.6; }
.eri-tl__tag { display: inline-flex; align-items: center; gap: .4rem; font-family: var(--eri-font-display); font-size: .8125rem; font-weight: 500; border-radius: var(--eri-radius-pill); padding: .3rem .8rem; margin-top: .25rem; }
.eri-tl__tag::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.eri-tl__tag--blue { color: var(--eri-blue); background: var(--eri-blue-light); }
.eri-tl__tag--green { color: #1FA971; background: rgba(31,169,113,.12); }
@media (max-width: 860px) {
  .eri-tl__track { display: none; }
  .eri-tl__cards { grid-template-columns: 1fr; }
}

/* Hero de conversion (Solution) : bande bleue pleine largeur, texte blanc. */
.eri-hero-sol { background: linear-gradient(118deg, #2C74F0 0%, #4E8DF6 52%, #8FB8FB 100%); padding-block: clamp(56px, 6vw, 96px); position: relative; width: 100vw; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; overflow: hidden; }
.eri-hero-sol__grid { display: grid; grid-template-columns: 1.02fr .98fr; gap: 3rem; align-items: center; }
.eri-hero-sol__copy { display: flex; flex-direction: column; align-items: flex-start; gap: 1.5rem; }
.elementor .eri-hero-sol .eri-display-1 { text-align: left; color: #fff; }
.eri-hero-sol .eri-accent { color: #EAF2FF; }
.eri-hero-sol .eri-lead { color: rgba(255,255,255,.92); }
.eri-hero-sol__cta { display: flex; gap: 1rem; flex-wrap: wrap; margin-top: .5rem; }
/* Boutons sur bande bleue : primaire = bleu foncé/texte blanc, secondaire = blanc/texte navy. */
.elementor .eri-hero-sol a.eri-btn { background: #0E4FD1; color: #fff; }
.elementor .eri-hero-sol a.eri-btn:hover { background: #0B44B8; color: #fff; }
.elementor .eri-hero-sol a.eri-btn--ghost { background: #fff; border: 0; color: var(--eri-navy); }
.elementor .eri-hero-sol a.eri-btn--ghost:hover { background: #EAF2FF; color: var(--eri-navy); }
.eri-hero-sol__proof { display: flex; align-items: center; gap: .5rem 1.25rem; flex-wrap: wrap; font-family: var(--eri-font-body); font-size: .9375rem; color: rgba(255,255,255,.85); margin-top: .5rem; }
.eri-proof__item { display: inline-flex; align-items: baseline; gap: .35rem; }
.eri-proof__item + .eri-proof__item::before { content: '•'; color: rgba(255,255,255,.5); margin-right: 1.25rem; }
.eri-proof__item strong { color: #fff; font-weight: 700; }
.eri-hero-sol__media img { display: block; width: 100%; height: auto; border-radius: var(--eri-radius-card); box-shadow: 0 30px 70px -25px rgba(6,22,60,.45); }
@media (max-width: 768px) { .eri-hero-sol__grid { grid-template-columns: 1fr; } }

/* Ce que change Ouranos (section 03 Solution) : en-tête + cartes numérotées. */
.eri-change { display: flex; flex-direction: column; gap: 2.5rem; }
.eri-change__head { display: flex; justify-content: space-between; align-items: flex-start; gap: 2rem; flex-wrap: wrap; }
.elementor .eri-change__title { margin: 0; text-align: left; max-width: 26rem; }
.eri-change__intro-col { display: flex; flex-direction: column; gap: 1.5rem; max-width: 23rem; margin-left: auto; }
.eri-change__intro { margin: 0; }
.eri-change__intro-col .eri-btn { align-self: flex-end; }
/* Grille : la carte active occupe ~2,4 fois la largeur d'une carte repliée et
   déborde verticalement (comme la maquette : elle « sort » du rang, en haut et
   en bas). Les colonnes s'animent, d'où la transition sur grid-template-columns. */
/* Flex plutôt que grid : flex-grow s'interpole (les unités fr de grid ne
   s'animent pas de façon fiable), donc l'élargissement de la carte active est
   réellement animé. */
/* La rangée réserve d'emblée la hauteur de l'état déployé (470px) et centre les
   cartes dedans : la carte active peut « dépasser » visuellement sans jamais
   déplacer le contenu situé en dessous. */
/* Hauteur de rangée FIXE (pas min-height) : ainsi la carte active peut déborder
   en haut et en bas sans agrandir la rangée — donc sans déplacer les cartes
   voisines (c'était la cause du tremblement vertical). */
.eri-change__grid { display: flex; gap: 1.25rem; align-items: center; justify-content: center; height: 580px; }
/* Une seule courbe et une seule durée pour TOUTES les propriétés animées, sinon
   les fins d'animation se décalent et le mouvement paraît rebondir. min-height
   n'est pas animée (la rangée réserve déjà la hauteur). */
/* Largeurs en pourcentages FIXES (pas flex-grow) : avec flex-grow, les largeurs
   calculées des cartes non concernées varient en sous-pixel à chaque frame et
   leur texte vibre. Ici seules la carte qui s'ouvre et celle qui se referme
   changent de flex-basis ; les deux autres gardent exactement 18.5 %. */
/* Hauteur fixe pour les cartes repliées : aucune variation verticale possible. */
.eri-change__card { flex: 0 0 18.5%; min-width: 0; background: var(--eri-surface-2); border-radius: 18px; padding: 1.75rem; display: flex; flex-direction: column; height: 400px; transition: flex-basis .45s ease-in-out, background .45s ease-in-out, box-shadow .45s ease-in-out; }
/* Hauteur fixe aussi pour la carte active : rien ne dépend du contenu, donc
   aucune variation de hauteur possible pendant la transition. */
.eri-change__card--featured { flex-basis: 38.5%; height: 580px; }
/* Carte active : plus haute (déborde le rang), fond blanc, ombre portée. */
/* Padding identique dans les deux états : le faire varier décale le texte à
   chaque frame de la transition de largeur (effet de tremblement). */
.eri-change__card--featured { background: var(--eri-surface-0); box-shadow: 0 24px 60px -22px rgba(14,30,67,.28); z-index: 2; position: relative; }
/* Pas de transition sur font-size : l'interpolation sub-pixel de la typo pendant
   le changement de largeur produit un tremblement. La taille change d'un coup,
   masquée par le fondu du contenu. */
.eri-change__num { font-family: var(--eri-font-display); font-size: 2.75rem; font-weight: 600; color: var(--eri-blue); line-height: 1; }
/* Média : grand visuel au-dessus du numéro dans l'état déployé. */
.eri-change__media { max-height: 0; opacity: 0; overflow: hidden; margin: 0; order: -1; transition: max-height .45s ease-in-out, opacity .45s ease-in-out, margin .45s ease-in-out; }
.eri-change__card--featured .eri-change__media { max-height: 220px; opacity: 1; margin: 0 0 1.5rem; }
.eri-change__media img { display: block; width: 100%; height: auto; border-radius: 12px; }
/* Pied : puce + titre ancrés en bas dans l'état replié ; dans l'état déployé le
   titre grossit et la description apparaît juste sous le numéro. */
.eri-change__foot { margin-top: auto; display: flex; flex-direction: column; }
.eri-change__card--featured .eri-change__foot { margin-top: .85rem; }
/* Ligne du numéro : le numéro à gauche, la pastille à sa droite (état déployé). */
.eri-change__topline { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.eri-change__dot { width: 10px; height: 10px; border-radius: 50%; background: var(--eri-blue); }
/* Point du pied : visible seulement quand la carte est repliée, avec un halo
   bleuté diffus autour (glow), comme la maquette. */
.eri-change__dot--foot { margin-bottom: .85rem; box-shadow: 0 0 0 6px rgba(63,142,252,.14), 0 6px 14px rgba(63,142,252,.45); }
.eri-change__card--featured .eri-change__dot--foot { display: none; }
/* Pastille de tête : visible seulement quand la carte est déployée, au niveau
   du numéro et donc SOUS l'image (comme la maquette). */
.eri-change__dot--head { display: none; }
/* Pastille bleue arrondie avec un POINT rond blanc au centre (un inset
   box-shadow donnerait un carré, pas un point). */
.eri-change__card--featured .eri-change__dot--head { display: flex; align-items: center; justify-content: center; width: 42px; height: 42px; border-radius: 12px; background: var(--eri-blue); flex: 0 0 auto; }
.eri-change__card--featured .eri-change__dot--head::after { content: ''; width: 12px; height: 12px; border-radius: 50%; background: #fff; }
.elementor .eri-change__card-title { font-family: var(--eri-font-display); font-size: 1.0625rem; font-weight: 600; color: var(--eri-navy); margin: 0; line-height: 1.35; }
.elementor .eri-change__card--featured .eri-change__card-title { font-size: 1.5rem; font-weight: 600; line-height: 1.25; }
.eri-change__desc { max-height: 0; opacity: 0; overflow: hidden; margin: 0; transition: max-height .45s ease-in-out, opacity .45s ease-in-out, margin .45s ease-in-out; }
.eri-change__card--featured .eri-change__desc { max-height: 320px; opacity: 1; margin: .85rem 0 0; }
.eri-change__desc p { margin: 0; }
@media (max-width: 900px) { .eri-change__grid { flex-wrap: wrap; min-height: 0; } .eri-change__card, .eri-change__card--featured { flex-basis: calc(50% - .625rem); } }
@media (max-width: 768px) {
  .eri-change__head { flex-direction: column; }
  .eri-change__intro-col { margin-left: 0; max-width: none; }
  .eri-change__intro-col .eri-btn { align-self: flex-start; }
  .eri-change__grid { flex-direction: column; min-height: 0; }
  .eri-change__card, .eri-change__card--featured { flex-basis: auto; min-height: 0; }
  /* Sur mobile, chaque carte montre son contenu (pas de carrousel utile). */
  .eri-change__media, .eri-change__desc { max-height: none; opacity: 1; margin-top: .85rem; }
  .eri-change__dot--head { display: none !important; }
}

/* Ouranos en production (section 05 Solution) : bande navy pleine largeur. */
/* .eri-prod n'est plus la bande : le fond navy pleine largeur + padding sont
   portés par la section s_prod (réglages natifs + full-bleed CSS). */
.eri-prod { position: relative; }
.eri-prod__inner { display: flex; flex-direction: column; gap: 2.5rem; }
.eri-prod__head { display: flex; justify-content: space-between; align-items: flex-start; gap: 2.5rem; flex-wrap: wrap; }
.elementor .eri-prod .eri-display-2--light { margin: 0; max-width: 22rem; text-align: left; }
.eri-accent-light { color: var(--eri-blue-light); }
.eri-prod__intro { color: rgba(255,255,255,.72); font-family: var(--eri-font-body); line-height: 1.6; max-width: 24rem; margin: 0; }
.eri-prod__stats { display: flex; flex-wrap: wrap; gap: 0; }
.eri-prod__stat { display: flex; flex-direction: column; gap: .35rem; padding: 0 2.5rem; flex: 1 1 0; min-width: 140px; }
.eri-prod__stat + .eri-prod__stat { border-left: 1px solid rgba(255,255,255,.18); }
.eri-prod__stat:first-child { padding-left: 0; }
.eri-prod__stat-value { font-family: var(--eri-font-display); font-size: clamp(2.25rem, 3vw, 3rem); font-weight: 600; line-height: 1; color: #fff; }
.eri-prod__stat-label { font-family: var(--eri-font-body); font-size: .9375rem; color: rgba(255,255,255,.65); }
.eri-prod__eyebrow { color: rgba(255,255,255,.55); margin: 0; }
.eri-prod__eyebrow--center { text-align: center; margin-top: 1rem; }
.eri-prod__measures { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.25rem; }
.eri-prod__measure img { display: block; width: 100%; height: auto; border-radius: var(--eri-radius-card); }
.eri-prod__case { display: flex; background: #fff; border-radius: 20px; overflow: hidden; box-shadow: 0 30px 70px -30px rgba(0,0,0,.5); }
.eri-prod__case-map { flex: 0 0 44%; }
.eri-prod__case-map img { display: block; width: 100%; height: 100%; object-fit: cover; }
.eri-prod__case-body { flex: 1 1 0; padding: clamp(1.75rem, 3vw, 2.75rem); display: flex; flex-direction: column; align-items: flex-start; gap: 1rem; }
.eri-tag { display: inline-block; font-family: var(--eri-font-display); font-size: .75rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; border-radius: var(--eri-radius-pill); padding: .3rem .8rem; }
.eri-tag--green { color: #1FA971; background: rgba(31,169,113,.12); }
.elementor .eri-prod__case-title { font-family: var(--eri-font-display); font-size: clamp(1.375rem, 2.2vw, 1.75rem); font-weight: 700; color: var(--eri-navy); margin: 0; line-height: 1.2; }
.eri-prod__case-desc { font-family: var(--eri-font-body); color: var(--eri-text-body); line-height: 1.6; margin: 0; }
.eri-prod__case-stats { display: flex; gap: 2rem; flex-wrap: wrap; margin: .25rem 0 .5rem; }
.eri-prod__case-stat { display: flex; flex-direction: column; gap: .2rem; }
.eri-prod__case-stat-value { font-family: var(--eri-font-display); font-size: 1.5rem; font-weight: 700; color: var(--eri-blue); line-height: 1; }
.eri-prod__case-stat-label { font-family: var(--eri-font-body); font-size: .8125rem; color: var(--eri-text-muted); line-height: 1.4; }
.eri-prod__logos img { display: block; width: 100%; max-width: 1120px; height: auto; margin: 0 auto; }
@media (max-width: 900px) {
  .eri-prod__measures { grid-template-columns: 1fr; }
  .eri-prod__case { flex-direction: column; }
  .eri-prod__case-map { flex-basis: auto; }
  .eri-prod__case-map img { height: 220px; }
}
@media (max-width: 768px) {
  .eri-prod__head { flex-direction: column; }
  .eri-prod__stat { padding: 0; border-left: 0 !important; flex-basis: 45%; }
  .eri-prod__logos img { width: 100%; }
}

/* Grille de domaines (dossier chapitre 02). */
.eri-domcards { display: flex; flex-direction: column; gap: 1.75rem; }
.elementor .eri-domcards__title { margin: 0; text-align: left; }
.eri-domcards__intro { margin: 0; max-width: 46rem; }
.eri-domcards__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.eri-domcards__card { background: var(--eri-surface-2); border-radius: var(--eri-radius-card); padding: 1.5rem; display: flex; flex-direction: column; gap: .5rem; }
.eri-domcards__dot { width: 10px; height: 10px; border-radius: 50%; background: var(--eri-blue); }
.elementor .eri-domcards__name { font-family: var(--eri-font-display); font-size: 1.0625rem; font-weight: 600; color: var(--eri-navy); margin: .25rem 0 0; }
.eri-domcards__metric { font-family: var(--eri-font-body); font-size: .875rem; color: var(--eri-text-muted); }
@media (max-width: 900px) { .eri-domcards__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .eri-domcards__grid { grid-template-columns: 1fr; } }

/* Citation (dossier). */
.eri-quote { max-width: var(--eri-content-row); margin-inline: auto; }
.eri-quote__block { position: relative; margin: 0; padding: 0 0 0 2.5rem; }
.eri-quote__mark { position: absolute; left: 0; top: -.4rem; font-family: var(--eri-font-display); font-size: 4rem; line-height: 1; color: var(--eri-blue); }
.eri-quote__text { font-family: var(--eri-font-display); font-size: clamp(1.375rem, 2.4vw, 1.875rem); font-weight: 600; color: var(--eri-navy); line-height: 1.35; margin: 0; }
.eri-quote__cite { display: block; margin-top: 1rem; font-style: normal; font-family: var(--eri-font-body); color: var(--eri-text-muted); }


/* CTA bande bleue + briques (section 08 Solution). */
.eri-ctaband { background: linear-gradient(180deg, #1277FF 0%, #0E63F2 100%); padding-block: clamp(56px, 6vw, 96px); position: relative; width: 100vw; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; }
.eri-ctaband__inner { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 1.1rem; }
.eri-ctaband__title { font-family: var(--eri-font-display); font-size: clamp(1.75rem, 3vw, 2.5rem); font-weight: 700; color: #fff; margin: 0; }
.eri-ctaband__lead { color: rgba(255,255,255,.85); margin: 0; max-width: 40rem; }
.eri-ctaband__cta { display: flex; gap: 1rem; flex-wrap: wrap; justify-content: center; margin-top: .75rem; }
.elementor a.eri-ctaband__btn { display: inline-flex; align-items: center; gap: .6rem; background: #fff; color: var(--eri-navy); font-family: var(--eri-font-display); font-weight: 600; font-size: .9375rem; border-radius: var(--eri-radius-pill); padding: .8rem 1.35rem; text-decoration: none; }
.elementor a.eri-ctaband__btn:hover { background: #EAF2FF; color: var(--eri-navy); }
.eri-ctaband__arrow { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 50%; background: var(--eri-blue); color: #fff; font-size: .75rem; }
.eri-ctaband__rule { width: 100%; border: 0; border-top: 1px solid rgba(255,255,255,.25); margin: 2.5rem 0 0; }
.eri-ctaband__eyebrow { color: rgba(255,255,255,.75); align-self: flex-start; margin: 1.5rem 0 1rem; }
.eri-ctaband__briques { width: 100%; display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; }
.elementor a.eri-ctaband__brique { position: relative; display: flex; align-items: flex-start; min-height: 128px; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.18); border-radius: 14px; padding: 1.25rem; text-decoration: none; color: #fff; transition: background .2s ease; }
.elementor a.eri-ctaband__brique:hover { background: rgba(255,255,255,.2); }
.eri-ctaband__brique-title { font-family: var(--eri-font-display); font-weight: 600; font-size: 1.0625rem; color: #fff; max-width: 72%; line-height: 1.3; text-align: left; }
.eri-ctaband__arrow-circle { position: absolute; right: 1.1rem; bottom: 1.1rem; width: 34px; height: 34px; border-radius: 50%; background: #fff; color: var(--eri-blue); display: flex; align-items: center; justify-content: center; font-size: .9rem; }
@media (max-width: 900px) { .eri-ctaband__briques { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .eri-ctaband__briques { grid-template-columns: 1fr; } }

/* ==========================================================================
   Fidélité maquette « Solution — Version 2 » — correctifs transversaux.
   Issus de l'audit section par section (specs Figma). Placés en fin de
   fichier : à spécificité égale, ils surchargent les règles héritées.
   ========================================================================== */

/* --- Fonds de bande (§2.1) --- */
.eri-hero-sol { background: var(--eri-grad-hero), var(--eri-surface-0); overflow: visible; overflow-x: clip; }
/* (fond navy déplacé sur la section s_prod) */
.eri-ctaband { background: var(--eri-azure-500); }
.eri-domcards-band, .eri-crit-band { background: var(--eri-section-light); padding-block: var(--eri-band-pad); position: relative; width: 100vw; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; }

/* --- Titres H2 : Poppins 500 / 36px / -0.54px / #141922 (§2.2) --- */
.elementor .eri-tl__title,
.elementor .eri-change__title,
.elementor .eri-domcards__title,
.elementor .eri-crit__title,
.elementor .eri-chapter-title,
.elementor .eri-mediatext__title,
.elementor .eri-statement,
.elementor .eri-prod .eri-display-2--light,
.elementor .eri-ctaband__title {
	font-family: var(--eri-font-display);
	font-size: clamp(1.75rem, 2.6vw, 2.25rem);
	font-weight: 500;
	line-height: 1.2222;
	letter-spacing: -.54px;
	color: var(--eri-ink);
	text-align: left;
	margin: 0;
}
.elementor .eri-prod .eri-display-2--light,
.elementor .eri-ctaband__title { color: var(--eri-on-accent); }
.elementor .eri-ctaband__title { text-align: center; max-width: 1000px; }
.elementor .eri-prod .eri-display-2--light { max-width: 640px; }
.elementor .eri-tl__title { max-width: 860px; }
.elementor .eri-change__title { max-width: 40rem; }
.elementor .eri-mediatext__title, .elementor .eri-chapter-title { max-width: 780px; }
@media (max-width: 768px) {
	.elementor .eri-tl__title, .elementor .eri-change__title, .elementor .eri-domcards__title,
	.elementor .eri-crit__title, .elementor .eri-faq__heading, .elementor .eri-chapter-title,
	.elementor .eri-mediatext__title { font-size: 1.75rem; line-height: 2.25rem; }
}

/* --- Accent bleu inline (§2.3) --- */
.elementor .eri-accent { color: var(--eri-azure-500); }
.elementor .eri-hero-sol .eri-accent { color: var(--eri-azure-500); }
.elementor .eri-accent-light { color: var(--eri-azure-300); }
.elementor .eri-change__title .eri-accent,
.elementor .eri-prod .eri-accent-light { display: block; }
@media (min-width: 1100px) { .elementor .eri-hero-sol .eri-accent { display: block; } }

/* --- Corps de texte, chapôs, eyebrows (§2.4) --- */
.eri-tl__lead, .eri-domcards__intro, .eri-crit__lead, .eri-intro-sub {
	font-family: var(--eri-font-body); font-size: 1.125rem; font-weight: 500;
	line-height: 1.6667; color: var(--eri-badge-text); margin: 0; max-width: 700px;
}
.eri-tl__lead { max-width: 640px; }
.eri-crit__lead, .eri-intro-sub { color: var(--eri-text-soft); }
.elementor-widget-eri-media-text .eri-prose,
.eri-textcols__body, .eri-crit__note, .eri-prod__case-desc, .eri-change__intro {
	font-family: var(--eri-font-body); font-size: 1rem; line-height: 1.75; color: var(--eri-text-soft);
}
.eri-crit__note, .eri-change__intro { color: var(--eri-badge-text); }
.eri-tl__card-body, .eri-crit__card-body, .eri-note__text,
.eri-change__card--featured .eri-change__desc, .eri-faq__answer, .eri-alerts__label {
	font-family: var(--eri-font-body); font-size: .875rem; line-height: 1.7143; color: var(--eri-text-soft);
}
.eri-domains__eyebrow, .eri-prod__eyebrow, .eri-ctaband__eyebrow {
	font-family: var(--eri-font-display); font-size: 1rem; font-weight: 600; line-height: 1;
	letter-spacing: .014em; text-transform: uppercase; margin: 0;
}
.eri-domains__eyebrow { color: var(--eri-text-soft); }
.eri-prod__eyebrow { color: var(--eri-on-accent); }
.eri-prod__eyebrow--center { color: var(--eri-azure-300); } /* #86C3FF, maquette */
.eri-ctaband__eyebrow { color: var(--eri-azure-100); }
.eri-prod__eyebrow--center { text-align: center; }
.eri-alerts__eyebrow { font-family: var(--eri-font-display); font-size: 11px; font-weight: 600; line-height: 16px; letter-spacing: 1.4px; text-transform: uppercase; color: var(--eri-text-soft); margin: 0; }

/* --- Boutons (§2.5) --- */
.elementor .eri-hero-sol a.eri-btn,
.elementor .eri-change__intro-col a.eri-btn,
.elementor .eri-prod a.eri-btn {
	background: var(--eri-azure-500); color: var(--eri-on-accent);
	font-family: var(--eri-font-display); font-weight: 500; min-height: 48px;
}
.elementor .eri-hero-sol a.eri-btn:hover, .elementor .eri-hero-sol a.eri-btn:focus-visible,
.elementor .eri-change__intro-col a.eri-btn:hover, .elementor .eri-change__intro-col a.eri-btn:focus-visible,
.elementor .eri-prod a.eri-btn:hover, .elementor .eri-prod a.eri-btn:focus-visible {
	background: var(--eri-accent-hover); color: var(--eri-on-accent);
}
.elementor .eri-hero-sol a.eri-btn { font-size: .9375rem; padding: 0 26px; }
.elementor .eri-change__intro-col a.eri-btn,
.elementor .eri-prod a.eri-btn { font-size: .8125rem; padding: 14px 22px 14px 24px; gap: 9px; }
.elementor .eri-hero-sol a.eri-btn--ghost {
	background: var(--eri-surface-0); border: 1px solid var(--eri-border-soft);
	color: var(--eri-badge-text); min-height: 50px; padding: 0 27px; font-size: .9375rem; font-weight: 500;
}
.elementor .eri-hero-sol a.eri-btn--ghost:hover,
.elementor .eri-hero-sol a.eri-btn--ghost:focus-visible { background: var(--eri-section-light); color: var(--eri-badge-text); }
.elementor a.eri-ctaband__btn {
	display: inline-flex; align-items: center; gap: 9px; background: var(--eri-surface-0);
	color: var(--eri-badge-text); border: 1.4px solid var(--eri-border-strong);
	font-family: var(--eri-font-display); font-weight: 500; font-size: .875rem; line-height: 1;
	border-radius: var(--eri-radius-pill); padding: 16px 24px 16px 26px; text-decoration: none;
}
.elementor a.eri-ctaband__btn--primary { box-shadow: 0 8px 20px rgba(0,26,89,.22); }
.elementor a.eri-ctaband__btn:hover { background: var(--eri-section-light); color: var(--eri-badge-text); }
.eri-ctaband__arrow { display: none; }
.elementor a.eri-prod__case-arrow {
	flex: 0 0 56px; width: 56px; height: 56px; border-radius: var(--eri-radius-pill);
	background: var(--eri-azure-500); color: var(--eri-on-accent); display: grid; place-items: center;
	box-shadow: 0 8px 20px rgba(5,20,64,.25); transition: background .2s ease;
}
.elementor a.eri-prod__case-arrow:hover, .elementor a.eri-prod__case-arrow:focus-visible { background: var(--eri-accent-hover); }
.eri-ico-24 { flex: 0 0 24px; width: 24px; height: 24px; display: block; }

/* --- Badges pilules (§2.6) --- */
.eri-tl__tag, .eri-crit__badge, .eri-alerts__badge, .eri-prod__case-tag, .eri-domains__pill--live {
	display: inline-flex; align-items: center; gap: 8px;
	padding: 7px 16px 7px 12px; border-radius: var(--eri-radius-pill);
	font-family: var(--eri-font-display); font-weight: 500; font-size: .6875rem; line-height: normal;
}
.eri-tl__tag::before, .eri-crit__badge::before, .eri-alerts__dot, .eri-domains__dot {
	content: ''; flex: 0 0 auto; width: 6px; height: 6px; border-radius: 50%; background: var(--eri-badge-dot);
}
.eri-tl__tag--blue,  .eri-crit__badge--info    { background: var(--eri-badge-info-bg);    color: var(--eri-badge-info-text);    --eri-badge-dot: var(--eri-badge-info-dot); }
.eri-tl__tag--green, .eri-crit__badge--success { background: var(--eri-badge-success-bg); color: var(--eri-badge-success-text); --eri-badge-dot: var(--eri-badge-success-dot); }
.eri-crit__badge--warning                      { background: var(--eri-badge-warning-bg); color: var(--eri-badge-warning-text); --eri-badge-dot: var(--eri-badge-warning-dot); }
/* Étiquette timeline : couleur libre par étape (teinte le pill via color-mix +
   le texte + le point). Ne s'applique que si --eri-tag-c est posé. */
.eri-tl__tag[style*="--eri-tag-c"] { background: color-mix(in srgb, var(--eri-tag-c) 14%, #fff); color: var(--eri-tag-c); --eri-badge-dot: var(--eri-tag-c); }
.eri-crit__badge, .eri-prod__case-tag { font-weight: 600; font-size: .625rem; letter-spacing: .4px; text-transform: uppercase; }
.eri-prod__case-tag { background: var(--eri-grad-pill); color: var(--eri-ink); letter-spacing: 1.1px; --eri-badge-dot: var(--eri-azure-500); }
/* Accent libre de la carte étude de cas (flèche + chiffres), si --eri-case-c posé. */
.eri-prod__case[style*="--eri-case-c"] .eri-prod__case-arrow { background: var(--eri-case-c); }
.eri-prod__case[style*="--eri-case-c"] .eri-prod__case-stat-value { color: var(--eri-case-c); }
.eri-domains__pill--live { font-size: 13px; letter-spacing: 0; border-color: var(--eri-border-strong); --eri-badge-dot: var(--eri-azure-500); }
.eri-domains__dot { width: 9px; height: 9px; box-shadow: 0 0 6px 1px rgba(0,122,255,.55); }
.eri-alerts__badge { flex: 0 0 140px; justify-content: center; min-height: 26px; }
.eri-alerts__row--danger  .eri-alerts__badge { background: var(--eri-badge-danger-bg);  color: var(--eri-badge-danger-text); }
.eri-alerts__row--warning .eri-alerts__badge { background: var(--eri-badge-warning-bg); color: var(--eri-badge-warning-text); }
.eri-alerts__row--success .eri-alerts__badge { background: var(--eri-badge-success-bg); color: var(--eri-badge-success-text); }
.eri-alerts__row--danger  .eri-alerts__dot { background: var(--eri-badge-danger-dot); }
.eri-alerts__row--warning .eri-alerts__dot { background: var(--eri-badge-warning-dot); }
.eri-alerts__row--success .eri-alerts__dot { background: var(--eri-badge-success-dot); }

/* --- Rayons et ombres : la V2 est en 10px (§2.7) --- */
.eri-tl__card, .eri-change__card, .eri-crit__card, .eri-domcards__card, .eri-domcards__icon,
.eri-alerts, .eri-alerts__row, .eri-faq__item, .eri-note, .eri-note__icon, .eri-summary,
.eri-summary__pill, .eri-prod__case, .eri-prod__measure, .eri-ctaband__brique,
.elementor a.eri-faq__contact, .eri-hero-sol__shot,
.elementor-widget-eri-media-text .eri-figure { border-radius: var(--eri-radius-10); }
.eri-tl__card { box-shadow: none; border: 1px solid var(--eri-section-light); }
.eri-crit__card, .eri-note, .elementor a.eri-faq__contact { box-shadow: var(--eri-shadow-card2); }
.eri-change__card--featured { box-shadow: var(--eri-shadow-feat); }
.eri-prod__case { box-shadow: var(--eri-shadow-case); }
.eri-hero-sol__shot, .eri-hero-sol__pin { box-shadow: var(--eri-shadow-l); }
.eri-hero-sol__media img { box-shadow: var(--eri-shadow-l); border-radius: var(--eri-radius-10); }
.eri-domains__pill { box-shadow: var(--eri-shadow-pill); }
.eri-change__dot--foot { box-shadow: none; }

/* --- Rythme vertical de bande (§2.8) --- */
.eri-tl-band, .eri-domcards-band, .eri-crit-band { padding-block: var(--eri-band-pad); }
.eri-hero-sol { padding-block: clamp(64px, 9.2vw, 176px) clamp(56px, 8vw, 152px); }
.eri-ctaband  { padding-block: clamp(56px, 6vw, 96px) clamp(64px, 7vw, 114px); }
.eri-domains  { padding-block: 30px 46px; }
.eri-tl, .eri-change, .eri-prod__inner, .eri-crit, .eri-domcards { gap: var(--eri-band-gap); }
.eri-change__grid, .eri-crit__grid, .eri-domcards__grid, .eri-prod__measures { gap: 24px; }
.eri-tl__cards { gap: 30px; }
.eri-hero-sol__copy { gap: 26px; max-width: 680px; }
.eri-hero-sol__cta { gap: 16px; margin-top: 0; }
.eri-hero-sol__proof { gap: .5rem 1.75rem; margin-top: 0; }
.eri-hero-sol__grid { grid-template-columns: 680fr 620fr; gap: 120px; align-items: start; }
@media (max-width: 768px) {
	.eri-hero-sol { padding-block: 56px 48px; }
	.eri-hero-sol__grid { grid-template-columns: 1fr; gap: 40px; }
	.eri-hero-sol__copy { max-width: none; }
	.eri-hero-sol .eri-proof__item + .eri-proof__item::before { display: none; }
	.eri-hero-sol__pin { display: none; }
}

/* --- Fondus latéraux du marquee sur toute la hauteur de bande (§2.9) --- */
.eri-domains { overflow: hidden; }
.eri-domains::before, .eri-domains::after { content: ''; position: absolute; top: 0; bottom: 0; width: 120px; z-index: 2; pointer-events: none; }
.eri-domains::before { left: 0;  background: linear-gradient(90deg,  var(--eri-domains-bg, var(--eri-section-light)), transparent); }
.eri-domains::after  { right: 0; background: linear-gradient(270deg, var(--eri-domains-bg, var(--eri-section-light)), transparent); }

/* Dans l'éditeur Elementor, eri-widgets.js ne tourne pas (pas de clonage ni
   d'animation) : on affiche les domaines en une rangée qui passe à la ligne,
   sans la 2e copie du marquee, pour un aperçu propre au lieu d'un défilement
   rogné. Le marquee ne s'anime que sur le front. */
body.elementor-editor-active .eri-domains__track { flex-wrap: wrap; justify-content: center; width: auto; animation: none; transform: none; }
body.elementor-editor-active .eri-domains__pill[aria-hidden="true"] { display: none; }
.eri-domains__marquee { margin-top: 22px; }
.eri-domains__marquee::before, .eri-domains__marquee::after { content: none; }

/* --- Mouvement réduit (§2.10) --- */
@media (prefers-reduced-motion: reduce) {
	.eri-faq__toggle, .eri-faq__toggle::after, .eri-btn, .eri-silo__link,
	.eri-change__card, .eri-crit__card, .eri-prod__case, .elementor a.eri-prod__case-arrow { transition: none; }
	.eri-prod__case:hover { transform: none; }
}

/* ==========================================================================
   Fidélité maquette Solution V2 — correctifs par section
   --------------------------------------------------------------------------
   Fusion des 10 blocs produits section par section (01-hero → 08-cta).
   Règle de fusion : rien n'est redéclaré de ce que couvre déjà le bloc
   transversal ci-dessus (fonds de bande §2.1, titres H2 §2.2, accents §2.3,
   corps de texte §2.4, boutons §2.5, badges §2.6, rayons/ombres §2.7, rythme
   de bande §2.8, marquee §2.9, mouvement réduit §2.10). Les seules reprises
   sont signalées « ARBITRAGE » ou « LACUNE §2 » ci-dessous.
   Placé en fin de fichier : à spécificité égale, la dernière règle gagne, donc
   ces valeurs surchargent les blocs V1 sans qu'il faille les supprimer.
   ========================================================================== */

/* ------------------------------------------------------------------------- */
/* §3.0 — LACUNES DU BLOC TRANSVERSAL                                        */
/* Trois familles de règles que les agents de section supposaient présentes   */
/* dans le bloc §2 mais qui n'y figurent pas. Sans elles, le rendu casse.     */
/* ------------------------------------------------------------------------- */

/* a) Bande full-bleed de la citation (06b). §2.1 traite hero / prod / ctaband /
      domcards-band / crit-band, mais PAS `.eri-quote`, dont la bande bleue est
      désormais peinte par le widget (section Elementor en mode « flush »).
      `max-width: none` neutralise le `.eri-quote { max-width: var(--eri-content-row) }`
      de la V1 (l.346), qui briderait la bande à 1120px. */
.eri-quote {
	background: var(--eri-azure-500);
	padding-block: clamp(48px, 6vw, var(--eri-band-pad));
	position: relative; width: 100vw; max-width: none;
	left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw;
}
/* Full-bleed du CTA réaffirmé : demandé par l'agent 08 pour survivre au retrait
   éventuel du bloc V1 l.354 (le fond, lui, vient de §2.1). */
.eri-ctaband {
	position: relative; width: 100vw; max-width: none;
	left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw;
}

/* b) Gabarit des titres de CARTE (H3 / H4). §2.2 ne traite que les H2, alors
      que les agents 03 / 06c / 06e s'y référaient (« gabarit H3 28/36 »,
      « Poppins 500 / 22px / blanc », « le margin:0 mutualisé des H4 »).
      Sans ces règles : .eri-domcards__name et .eri-summary__title restent navy
      (illisibles sur photo et sur l'aplat azure), .eri-crit__card-title,
      .eri-textcols__title et .eri-note__title n'ont aucune typographie, et la
      carte active de 03 reste à 24px au lieu de 28px. */
.elementor .eri-domcards__name,
.elementor .eri-summary__title,
.elementor .eri-textcols__title,
.elementor .eri-crit__card-title,
.eri-note__title,
.elementor .eri-change__card--featured .eri-change__card-title {
	font-family: var(--eri-font-display); font-weight: 500; letter-spacing: -.2px; margin: 0;
}
.elementor .eri-domcards__name,
.elementor .eri-summary__title { font-size: 1.375rem; line-height: 1.2727; color: var(--eri-on-accent); }
.elementor .eri-textcols__title { font-size: 1.375rem; line-height: 1.2727; color: var(--eri-ink); }
.elementor .eri-crit__card-title { font-size: 1.125rem; line-height: 1.4444; color: var(--eri-ink); }
.eri-note__title { font-size: 1rem; line-height: 1.5; color: var(--eri-ink); }
.elementor .eri-change__card--featured .eri-change__card-title { font-size: 1.75rem; line-height: 2.25rem; color: var(--eri-ink); }

/* c) Titre du hero. §2.1 fait descendre le dégradé du hero vers le blanc, donc
      le `color: #fff` de la V1 (l.196) rend le H1 invisible. L'agent 01 a passé
      chapô et preuves en sombre mais a laissé le titre : on l'aligne sur
      --eri-ink, l'encre des H2 de §2.2. */
.elementor .eri-hero-sol .eri-display-1 { color: var(--eri-ink); }

/* ------------------------------------------------------------------------- */
/* §3.1 — 01-hero : composition de droite, épingles, coupure du H1            */
/* La bande full-bleed vient de .eri-hero-sol (l.193 + §2.1) ; les couleurs   */
/* sont scopées « .elementor » pour battre le kit quel que soit l'ordre.      */
/* ------------------------------------------------------------------------- */
.eri-hero-sol__media { position: relative; overflow: visible; }
.eri-hero-sol__shot { display: block; width: 100%; height: auto; }
.eri-hero-sol__pin {
	display: inline-block;
	background: var(--eri-surface-0); border-radius: var(--eri-radius-pill);
	padding: 10px 17px 10px 14px;
	font-family: var(--eri-font-display); font-weight: 500; font-size: .75rem; line-height: 1.25;
	color: var(--eri-badge-text); white-space: nowrap;
}
/* Position et rotation des épingles : réglages natifs Elementor (Avancé →
   Positionnement / Transformation), cf. spin() dans build_solution.php. */
.eri-hero-sol__pin-label { display: block; }
.eri-hero-sol__pin-sub { display: block; margin-top: 2px; font-weight: 400; font-size: .6875rem; color: var(--eri-text-soft); }

/* Coupure du H1 : le mot d'accent passe seul à la ligne au-delà de 1100px
   (via `.eri-accent { display: block }` de §2.3) ; en dessous, flux inline. */
.elementor .eri-hero-sol__title-main { display: inline; }
@media (min-width: 1100px) {
	.elementor .eri-hero-sol__title-main { display: block; text-wrap: balance; }
}

/* Chapô et preuves : encre sombre (remplace le blanc V1 des l.198, 205-208). */
.elementor .eri-hero-sol .eri-lead { color: var(--eri-badge-text); font-size: 1rem; line-height: 1.75; max-width: 590px; }
.elementor .eri-hero-sol__proof { color: var(--eri-text-soft); font-size: .875rem; line-height: 1.5rem; }
.elementor .eri-hero-sol .eri-proof__item { display: inline-flex; align-items: center; gap: 6px; }
.elementor .eri-hero-sol .eri-proof__item strong {
	font-family: var(--eri-font-display); font-weight: 600; font-size: 1.0625rem; color: var(--eri-azure-700);
}
/* Séparateur : pastille grise de 4px, à la place de la puce « • » blanche. */
.elementor .eri-hero-sol .eri-proof__item + .eri-proof__item::before {
	content: ''; flex: 0 0 auto; width: 4px; height: 4px; border-radius: 50%;
	background: var(--eri-text-faint); margin-right: 1.75rem; align-self: center;
}

/* Tablette : on rentre les épingles pour qu'elles ne soient pas rognées par
   l'overflow-x: clip de la bande. */
@media (max-width: 1100px) {
	.eri-hero-sol__pin { padding: 8px 13px; font-size: .6875rem; }
}
/* Mobile : les épingles sont masquées par §2.8 ; le chapô reprend la largeur. */
@media (max-width: 768px) {
	.elementor .eri-hero-sol .eri-lead { max-width: none; }
	.elementor .eri-hero-sol__title-main { display: inline; }
}

/* ------------------------------------------------------------------------- */
/* §3.2 — 03-change : agencement de la rangée « Ce que change Ouranos »       */
/* Section en mode « plain » (fond blanc, aucune bande colorée).              */
/* ------------------------------------------------------------------------- */
.eri-change__head { align-items: center; gap: 10rem; }
.eri-change__intro-col { max-width: 25rem; gap: 20px; margin-left: auto; }

/* La hauteur de l'état déployé (478px) est réservée d'emblée et les cartes sont
   alignées EN HAUT : la carte active occupe toute la hauteur, les repliées sont
   décalées de 76px vers le bas (escalier de la maquette).
   ARBITRAGE — gap 20px et non les 24px de §2.8 : 45% + 3 × 16,67% ne laissent
   que ~62px pour 3 gouttières dans un conteneur de 1244px ; à 24px la rangée
   déborde de ~10px (flex-shrink: 0) et crée un scroll horizontal. */
.eri-change__grid { align-items: flex-start; justify-content: center; height: 478px; gap: 20px; }
.eri-change__card {
	flex: 0 0 16.67%;
	height: 372px;
	margin-top: 76px;
	padding: 25px 21px 48px;
	background: var(--eri-section-light);
	border: 1px solid var(--eri-section-light);
	/* Une seule courbe et une seule durée pour toutes les propriétés animées :
	   largeur, hauteur, décalage et padding doivent finir ensemble. */
	transition: flex-basis .45s ease-in-out, height .45s ease-in-out, margin-top .45s ease-in-out,
	            padding .45s ease-in-out, background .45s ease-in-out, box-shadow .45s ease-in-out;
}
.eri-change__card--featured {
	flex-basis: 45%;
	height: 478px;
	margin-top: 0;
	padding: 20px;
	background: var(--eri-surface-0);
	border-color: var(--eri-azure-50);
}

/* Numéro : Poppins 500 / 52px, azure, très resserré. */
.eri-change__num {
	font-family: var(--eri-font-display);
	font-size: 3.25rem;
	font-weight: 500;
	letter-spacing: -2px;
	line-height: 1;
	color: var(--eri-azure-500);
}
.eri-change__card--featured .eri-change__num { line-height: 60px; }

/* Pastilles : azure 500 (et non --eri-blue de la V1). */
.eri-change__dot,
.eri-change__card--featured .eri-change__dot--head { background: var(--eri-change-c, var(--eri-azure-500)); }
.eri-change__dot--foot { margin-bottom: 18px; }
/* Carré arrondi 34px à point blanc central, aligné sur le numéro. */
.eri-change__card--featured .eri-change__dot--head { width: 34px; height: 34px; border-radius: var(--eri-radius-10); }
.eri-change__card--featured .eri-change__dot--head::after { width: 11px; height: 11px; }

/* Média de la carte active : cadre 204px, dégradé 145° peint par le conteneur
   (l'export peut être transparent), image cadrée en haut à gauche. */
.eri-change__card--featured .eri-change__media {
	max-height: 204px;
	margin: 0 0 12px;
	overflow: hidden;
	background-image: linear-gradient(145.15deg, var(--eri-azure-50) 0%, var(--eri-section-light) 44.44%, var(--eri-section-light) 74.07%);
}
/* Ajustement du visuel — piloté par le contrôle « media_fit » du widget
   (classe .eri-change--fit-*). « auto » = hauteur libre, image entière, jamais
   rognée (défaut). « contain » / « cover » = cadre fixe 204px, entière ou rognée. */
.eri-change__media img { display: block; width: 100%; border-radius: var(--eri-radius-10); }
.eri-change--fit-auto .eri-change__media img { height: auto; }
.eri-change--fit-contain .eri-change__media img { height: 204px; object-fit: contain; object-position: top left; }
.eri-change--fit-cover .eri-change__media img { height: 204px; object-fit: cover; object-position: top left; }

/* Titres : 16/18,4 medium sur les cartes repliées, mesure bridée à 150px pour
   forcer les retours de la maquette. La carte active garde le gabarit 28/36
   posé en §3.0.b (spécificité 0,3,0 > 0,2,0 ici). */
.elementor .eri-change__card-title {
	font-size: 1rem;
	font-weight: 500;
	line-height: 1.15;
	color: var(--eri-ink);
	max-width: 150px;
}
.elementor .eri-change__card--featured .eri-change__card-title { max-width: 430px; }
.eri-change__card--featured .eri-change__desc { max-width: 430px; }

/* Tablette : la rangée se remet à plat, plus d'escalier ni de hauteur fixe. */
@media (max-width: 900px) {
	.eri-change__head { gap: 2.5rem; }
	.eri-change__grid { height: auto; }
	.eri-change__card,
	.eri-change__card--featured { margin-top: 0; height: auto; padding: 24px 21px; }
	.elementor .eri-change__card-title { max-width: none; }
}
/* Mobile : une carte par ligne, contenus toujours visibles. */
@media (max-width: 768px) {
	.eri-change__head { gap: 1.5rem; }
	.eri-change__intro-col { max-width: none; gap: 16px; }
	.eri-change__num { font-size: 2.5rem; letter-spacing: -1px; }
	.eri-change__card--featured .eri-change__num { line-height: 1; }
	/* Le média n'est plus bridé : l'image se déroule à sa hauteur naturelle. */
	.eri-change__card--featured .eri-change__media { max-height: none; margin: 0 0 12px; }
	.eri-change__media img { height: auto; }
	.elementor .eri-change__card--featured .eri-change__card-title,
	.eri-change__card--featured .eri-change__desc { max-width: none; }
}

/* ------------------------------------------------------------------------- */
/* §3.3 — 04-timeline : piste continue + pastilles 58px                      */
/* Bande « tinted » : .eri-tl-band garde son full-bleed et son padding (§2.8).*/
/* ------------------------------------------------------------------------- */

/* ARBITRAGE — §2.8 pose `.eri-tl { gap: var(--eri-band-gap) }` ; la maquette a
   des écarts inégaux entre titre, chapô, piste et cartes. Le gap de bande est
   donc annulé ici et le rythme porté par les marges des enfants (dont le
   `margin-bottom: 60px` du chapô, qui surcharge le `margin: 0` de §2.4). */
.eri-tl { gap: 0; }
.eri-tl__lead { margin: 0 0 var(--eri-band-gap); }

/* Piste : un seul trait continu peint par ::before (pas de segments
   interrompus). isolation: isolate confine le z-index:-1 du trait au
   conteneur : il passe sous les pastilles sans passer sous le fond de bande. */
/* Piste : un seul trait continu peint par ::before, n+1 points répartis
   élastiquement (segments flex). isolation: isolate confine le z-index:-1. */
.eri-tl__track {
	display: flex; align-items: center; position: relative;
	padding: 0; margin: 0 0 39px; z-index: auto; isolation: isolate;
}
.eri-tl__track::before {
	content: ''; position: absolute; left: 0; right: 0; top: 50%; height: 5px;
	transform: translateY(-50%); border-radius: var(--eri-radius-pill);
	background: var(--eri-grad-spring-sky); z-index: -1;
}
/* Les segments ne peignent plus rien : simples espaceurs élastiques. */
.eri-tl__seg { flex: 1 1 0; height: 5px; background: none; }

/* Pastilles : 58px, fond blanc, filet fin azure, ombre portée douce. */
.eri-tl__node {
	flex: 0 0 auto; width: 58px; height: 58px; border-radius: var(--eri-radius-pill);
	background: var(--eri-surface-0); border: 1.5px solid var(--eri-azure-200);
	box-shadow: 0 6px 18px rgba(13,38,102,.10);
	display: flex; align-items: center; justify-content: center; font-weight: 400;
}
.eri-tl__node--dot { width: 58px; height: 58px; border-width: 1.5px; }
.eri-tl__node--dot::after { content: ''; width: 12px; height: 12px; border-radius: 50%; background: var(--eri-azure-300); }
/* Check : SVG 30px hérité de currentColor, plus d'entité typographique. */
.eri-tl__node--check { border-width: 1.5px; font-size: 0; }
.eri-tl__node--check svg { width: 30px; height: 30px; display: block; }
/* --green = 1re pastille (azure 300), --blue = dernière (azure 500) : noms de
   classes conservés pour ne pas toucher au PHP de rendu. */
.eri-tl__node--green { border-color: var(--eri-azure-200); color: var(--eri-azure-300); }
.eri-tl__node--blue  { border-color: var(--eri-azure-500); color: var(--eri-azure-500); }
/* Couleur de piste configurable : ne s'applique que si --eri-tl-accent est posé
   sur .eri-tl (sinon le dégradé de marque vert→bleu reste). */
.eri-tl[style*="--eri-tl-accent"] .eri-tl__track::before { background: var(--eri-tl-accent); }
.eri-tl[style*="--eri-tl-accent"] .eri-tl__node--green,
.eri-tl[style*="--eri-tl-accent"] .eri-tl__node--blue { border-color: var(--eri-tl-accent); color: var(--eri-tl-accent); }
.eri-tl[style*="--eri-tl-accent"] .eri-tl__node--dot::after { background: var(--eri-tl-accent); }

/* Cartes : padding 24px et interlignage interne 13px (Figma). */
.eri-tl__card { padding: 24px; gap: 13px; }

/* Sous 1024px la piste horizontale n'a plus de sens (cartes empilées) :
   remplace le palier 860px de la V1 (l.187), plus large. */
@media (max-width: 1024px) {
	.eri-tl__cards { grid-template-columns: 1fr; }
	.eri-tl__track { display: none; }
	.eri-tl__lead { margin-bottom: 32px; }
}

/* ------------------------------------------------------------------------- */
/* §3.4 — 05-production : blocs de respiration, étude de cas, logos en chips  */
/* Bande navy full-bleed + padding : §2.1 / §2.8. Pilule .eri-prod__case-tag  */
/* et bouton rond .eri-prod__case-arrow : §2.6 / §2.5.                       */
/* ------------------------------------------------------------------------- */

/* Le conteneur de bande espace ses enfants de 60px (--eri-band-gap) ; les
   couples (sur-titre + contenu) doivent respirer beaucoup moins. */
.eri-prod__block { display: flex; flex-direction: column; gap: 24px; }
.eri-prod__block--logos { gap: 20px; align-items: center; }

/* En-tête : titre et chapô sur la même ligne de base optique, 160px d'écart. */
.eri-prod__head { display: flex; align-items: center; justify-content: flex-start; gap: 160px; flex-wrap: wrap; }
.eri-prod__intro { flex: 0 1 400px; max-width: 400px; color: var(--eri-on-accent);
	font-family: var(--eri-font-body); font-size: 1rem; line-height: 1.75; margin: 0; }

/* Statistiques : filets de 86px calés en bas de colonne (et non des bordures
   pleine hauteur), colonnes de 240px espacées de 30px. */
.eri-prod__stats { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 30px; }
.eri-prod__stat { position: relative; display: flex; flex-direction: column; gap: 8px; padding: 0;
	flex: 1 1 240px; max-width: 240px; min-width: 160px; }
.eri-prod__stat + .eri-prod__stat { border-left: 0; }
.eri-prod__stat + .eri-prod__stat::before { content: ''; position: absolute; left: -15px; bottom: 0;
	width: 1px; height: 86px; background: var(--eri-border-soft); }
.eri-prod__stat-value { font-family: var(--eri-font-display); font-weight: 500;
	font-size: clamp(2.5rem, 3.4vw, 3.25rem); line-height: 60px; letter-spacing: -2px; color: var(--eri-on-accent); }
.eri-prod__stat-label { font-family: var(--eri-font-body); font-size: .875rem; line-height: 1.5rem; color: var(--eri-azure-300); }

/* Cartes-mesure : le graphique occupe toute la carte (ratio 384/340). Le rayon
   est porté par la carte (§2.7) qui rogne l'image : `border-radius: 0` annule
   le radius-card que la V1 posait sur l'img (l.307). */
.eri-prod__measure { position: relative; margin: 0; overflow: hidden; background: var(--eri-surface-0); }
.eri-prod__measure img { display: block; width: 100%; height: 100%; aspect-ratio: 384 / 340; object-fit: cover; border-radius: 0; }
/* Les chiffres existent désormais en texte dans le DOM (SEO + lecteurs
   d'écran). Les visuels de la maquette les portent déjà en incrustation :
   la variante --sr les masque à l'œil sans les retirer de l'accessibilité. */
.eri-prod__measure-cap { display: flex; flex-direction: column; gap: 6px; padding: 16px; }
.eri-prod__measure-cap--sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0; }
.eri-prod__measure-badge { font-family: var(--eri-font-display); font-weight: 600; font-size: .625rem;
	letter-spacing: 1.1px; text-transform: uppercase; color: var(--eri-azure-700); }
.eri-prod__measure-value { font-family: var(--eri-font-display); font-weight: 500; font-size: 1.625rem;
	line-height: 1.1; letter-spacing: -.8px; color: var(--eri-ink); }
.eri-prod__measure-caption { font-family: var(--eri-font-body); font-size: .875rem; line-height: 1.7143; color: var(--eri-text-soft); }

/* Étude de cas : carte 41,67 % à gauche, corps peu padé, rangée haute. */
.eri-prod__case { display: flex; gap: 20px; align-items: center; overflow: hidden; background: var(--eri-surface-0);
	transition: transform .25s ease, box-shadow .25s ease; }
.eri-prod__case:hover { transform: translateY(-2px); box-shadow: 0 36px 80px rgba(5,20,64,.42); }
.eri-prod__case-map { flex: 0 0 41.67%; align-self: stretch; }
.eri-prod__case-body { flex: 1 1 0; min-width: 0; padding: 16px; display: flex; flex-direction: column; align-items: flex-start; gap: 12px; }
.eri-prod__case-top { display: flex; align-items: flex-start; justify-content: space-between; width: 100%; gap: 1rem; }
/* La flèche reste à droite même sans étiquette à sa gauche. */
.eri-prod__case-top .eri-prod__case-arrow { margin-left: auto; }
/* Pastille de la pilule : élément réel (<i>), le ::before est déjà pris par §2.6. */
.eri-prod__case-tag i { flex: 0 0 6px; width: 6px; height: 6px; border-radius: 50%; background: var(--eri-badge-dot); }
.eri-prod__case-desc { max-width: 530px; }
.eri-prod__case-stats { display: flex; flex-wrap: wrap; gap: 40px; margin: 0; }
.eri-prod__case-stat { gap: 3px; }
.eri-prod__case-stat-value { font-family: var(--eri-font-display); font-weight: 500; font-size: 1.625rem;
	line-height: 1.1; letter-spacing: -.8px; color: var(--eri-azure-500); }
.eri-prod__case-stat-label { font-family: var(--eri-font-body); font-size: .75rem; line-height: 1.125rem; color: var(--eri-text-faint); }

/* --- Section 05 : chiffres + étude de cas en éléments Elementor NATIFS. ------
   Les classes feuilles ci-dessus sont posées sur des WIDGETS natifs (Titre /
   Éditeur de texte). Ce pont force l'élément interne (.elementor-heading-title
   ou le <p>) à hériter de la typo/couleur du wrapper, sinon le kit Elementor /
   Astra reprennent la main sur les balises internes. */
.eri-prod__stat-value .elementor-heading-title, .eri-prod__stat-label .elementor-heading-title,
.eri-prod__eyebrow .elementor-heading-title,
.eri-prod__case-title .elementor-heading-title, .eri-prod__case-stat-value .elementor-heading-title,
.eri-prod__case-stat-label .elementor-heading-title,
.eri-prod__case-desc .elementor-widget-container, .eri-prod__case-desc .elementor-widget-container > * {
	font: inherit; color: inherit; letter-spacing: inherit; text-transform: inherit; margin: 0;
}
/* Badge : le point (<i>) et le texte en ligne dans le titre du widget. */
.eri-prod__case-tag .elementor-heading-title { display: inline-flex; align-items: center; gap: 6px; }
/* Carte étude de cas native : coins clippés, image de carte en cover pleine hauteur. */
.elementor-element-p_case { overflow: hidden; }
.eri-prod__case-map .elementor-widget-container { height: 100%; }

/* Mur de logos : une chip par collectivité (logo + nom), plus d'image-bande. */
.eri-prod__logos { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 20px; }
/* Carrousel logos : bande qui rogne + piste défilante (réutilise @keyframes
   eri-marquee ; période posée par eri-widgets.js dans --eri-marquee-w). */
.eri-prod__logos-marquee { position: relative; width: 100%; overflow: hidden; }
.eri-prod__logos.eri-prod__logos-track { flex-wrap: nowrap; width: max-content; justify-content: flex-start;
	animation: eri-marquee var(--eri-marquee-dur, 45s) linear infinite; will-change: transform; }
.eri-prod__logos-track .eri-prod__logo { flex: 0 0 auto; }
.eri-prod__logos-marquee:hover .eri-prod__logos-track { animation-play-state: paused; }
@media (prefers-reduced-motion: reduce) {
	.eri-prod__logos.eri-prod__logos-track { animation: none; flex-wrap: wrap; justify-content: center; width: auto; }
}
/* NB : l'animation tourne AUSSI dans l'éditeur Elementor (demande client). Le
   rendu PHP pose 2 copies → le repli `translateX(-50%)` du keyframe boucle sans
   couture même si eri-widgets.js ne s'exécute pas dans l'aperçu de l'éditeur. */
.eri-prod__logo { display: flex; align-items: center; gap: 10px; padding: 13px 10px; border-radius: 12px;
	background: rgba(255,255,255,.20); border: 1px solid rgba(255,255,255,.30); }
.eri-prod__logo-mark { flex: 0 0 30px; width: 30px; height: 30px; border-radius: 5px; background: var(--eri-surface-0);
	overflow: hidden; display: grid; place-items: center; }
/* width/margin/max-width remis à plat : annule l'ancienne règle
   `.eri-prod__logos img` (l.320 et l.330), de spécificité égale mais antérieure. */
.eri-prod__logo-mark img { display: block; width: 100%; height: 100%; max-width: 100%; margin: 0; object-fit: contain; }
.eri-prod__logo-name { font-family: var(--eri-font-display); font-weight: 500; font-size: .75rem;
	color: var(--eri-on-accent); white-space: nowrap; }

@media (max-width: 1100px) {
	.eri-prod__head { gap: 2.5rem; }
	/* Neutralise le palier 900px hérité (l.322), qui passait directement à une
	   colonne : à spécificité égale, cette déclaration postérieure gagne. */
	.eri-prod__measures { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 900px) {
	/* La carte de cas s'empile : neutralise le flex-basis de 41,67 %, qui
	   deviendrait une hauteur imposée en direction colonne. */
	.eri-prod__case { flex-direction: column; align-items: stretch; gap: 0; }
	.eri-prod__case-map { flex: 0 0 auto; align-self: auto; }
	.eri-prod__case-map img { height: 220px; }
	.eri-prod__case-body { padding: 20px; }
}
@media (max-width: 768px) {
	.eri-prod__stats { gap: 24px; }
	.eri-prod__stat { max-width: none; }
	/* Les colonnes passent à la ligne : les filets verticaux n'ont plus de sens. */
	.eri-prod__stat + .eri-prod__stat::before { display: none; }
	.eri-prod__case-stats { gap: 20px; }
	.eri-prod__logos { gap: 12px; }
	.eri-prod__logo-name { white-space: normal; }
}
@media (max-width: 640px) {
	.eri-prod__measures { grid-template-columns: 1fr; }
	.eri-prod__measure img { aspect-ratio: auto; height: auto; }
	.eri-prod__block { gap: 18px; }
}

/* ------------------------------------------------------------------------- */
/* §3.5 — 06a / 06d : chapitre « image + texte » (widget eri-media-text)      */
/* Le widget rend son propre conteneur `.eri-mediatext` (plus de              */
/* `.eri-container`) : titre H2 pleine largeur au-dessus de la rangée,        */
/* figure 580px, colonne rédactionnelle 560px, encart en pied de colonne.     */
/* ------------------------------------------------------------------------- */
.eri-mediatext { display: flex; flex-direction: column; gap: var(--eri-band-gap); }
.eri-mediatext .eri-media { gap: 60px; align-items: flex-start; }
.eri-mediatext .eri-figure {
	flex: 1 1 580px; min-width: 0; max-width: 580px;
	background: var(--eri-section-light); border: 1px solid var(--eri-border-soft); overflow: hidden;
}
/* Le rayon est porté par le cadre (§2.7) qui rogne l'image : l'image reste carrée. */
.eri-mediatext .eri-figure img { border-radius: 0; width: 100%; height: auto; }
.eri-mediatext .eri-prose-col { flex: 1 1 560px; max-width: 560px; gap: 43px; }
/* Une sous-partie = un bloc : le gap de 43px sépare les blocs entre eux, et non
   le sous-titre de son propre texte (12px). */
.eri-mediatext__block { display: flex; flex-direction: column; gap: 12px; }
.elementor .eri-mediatext .eri-subhead { margin: 0; }
.eri-mediatext .eri-prose > p { margin: 0 0 30px; }
.eri-mediatext .eri-prose > p:last-child { margin-bottom: 0; }
/* Chapô de dossier (06a) : wrapper sans gap, pour que les 24px s'appliquent
   vraiment (le gap de 60px de `.eri-mediatext` s'ajouterait sinon). */
.eri-mediatext__intro { display: block; }
.eri-statement + .eri-intro-sub { margin-top: 24px; }

/* Encart de pied de colonne (06d) : texte à gauche, tuile d'icône à droite. */
.eri-note {
	display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; padding: 16px;
	background: var(--eri-surface-0); border: 1px solid var(--eri-section-light);
}
.eri-note__icon {
	flex: 0 0 48px; width: 48px; height: 48px; display: grid; place-items: center;
	background: var(--eri-teal-500); box-shadow: 0 6px 14px rgba(45,212,191,.35); color: var(--eri-on-accent);
}
.eri-note__icon svg, .eri-note__icon i { width: 24px; height: 24px; font-size: 24px; fill: currentColor; }
.eri-note__body { display: flex; flex-direction: column; gap: 10px; max-width: 420px; }

/* 06d natif : l'encart est un conteneur Elementor (chrome via réglages natifs) ;
   ici on ajoute l'ombre de carte (token) et on peint la tuile teal + cadenas. */
.elementor .elementor-element-s06d_note { box-shadow: var(--eri-shadow-card2); }
/* Tuile teal 48×48 : fond/rayon en réglages natifs ; ici seulement la taille
   figée et l'ombre (token). Le cadenas est un widget Icône enfant. */
.elementor .elementor-element-s06d_tile {
	flex: 0 0 48px; width: 48px; min-height: 48px; align-self: flex-start;
	box-shadow: 0 6px 14px rgba(16,198,168,.35);
}
.elementor .elementor-element-d6d_lock { line-height: 0; }
.elementor .elementor-element-d6d_lock .elementor-icon i { font-size: 24px; }

@media (max-width: 768px) {
	.eri-mediatext { gap: 2rem; }
	/* `.eri-media` passe en colonne (règle mobile générique l.120) : il faut
	   neutraliser les flex-basis de 580/560px, qui deviendraient des HAUTEURS. */
	.eri-mediatext .eri-media { gap: 2rem; }
	.eri-mediatext .eri-figure,
	.eri-mediatext .eri-prose-col { flex: 0 0 auto; max-width: none; }
	.eri-mediatext .eri-prose-col { gap: 1.75rem; }
	.eri-mediatext .eri-prose > p { margin-bottom: 1.75rem; }
}

/* ------------------------------------------------------------------------- */
/* §3.6 — 06b : citation (widget eri-quote)                                  */
/* Le fond de bande est en §3.0.a ; la largeur de lecture est portée par __row */
/* pour que l'aplat bleu reste pleine largeur.                               */
/* ------------------------------------------------------------------------- */
.eri-quote__row {
	display: flex;
	align-items: center;
	gap: 40px;
	max-width: var(--eri-container);
	margin-inline: auto;
	padding-inline: 1.5rem;
}
/* Portrait circulaire 260px — flex-basis figée pour que le texte prenne le reste. */
.eri-quote__photo { flex: 0 0 260px; width: 260px; height: 260px; margin: 0; }
.eri-quote__photo img { display: block; width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }

/* Le padding gauche réserve la gouttière du guillemet décoratif. */
.eri-quote__block { position: relative; margin: 0; padding: 0 0 0 104px; border: 0; }
/* Guillemet ouvrant surdimensionné, en filigrane. Sorti du flux : son
   line-height de 1.5 déborde volontairement vers le haut, d'où le top négatif. */
.eri-quote__mark {
	position: absolute; left: 0; top: -113px;
	font-family: var(--eri-font-display); font-size: 150px; font-weight: 500; line-height: 1.5;
	color: var(--eri-quote-mark, var(--eri-on-accent)); opacity: .28; pointer-events: none;
}
/* Scopé `.elementor` : le kit écrase sinon la couleur et la graisse. */
.elementor .eri-quote__text {
	font-family: var(--eri-font-display);
	font-size: clamp(1.5rem, 2.4vw, 2.25rem);
	font-weight: 500;
	line-height: 1.222;
	letter-spacing: -.015em;
	color: var(--eri-on-accent);
	margin: 0;
	max-width: 825px;
	font-style: normal;
}
.eri-quote__cite {
	display: block; margin-top: 1rem; font-style: normal;
	font-family: var(--eri-font-body); color: rgba(255, 255, 255, .72);
}
/* Tablette / mobile : empilement, portrait réduit, le guillemet repasse
   au-dessus du texte (plus de gouttière latérale). */
@media (max-width: 900px) {
	.eri-quote__row { flex-direction: column; align-items: flex-start; gap: 28px; }
	.eri-quote__photo { flex: 0 0 180px; width: 180px; height: 180px; }
	.eri-quote__block { padding-left: 0; padding-top: 56px; }
	.eri-quote__mark { top: -18px; font-size: 96px; }
}

/* ------------------------------------------------------------------------- */
/* §3.7 — 06c : cartes photo de domaines, texte bi-colonne, panneau d'alertes */
/* Les 3 widgets vivent dans UNE section « flush » : la bande claire est       */
/* segmentée (start / mid / end) pour ne pas empiler 80px + 80px entre blocs.  */
/* Le full-bleed de .eri-domcards-band vient de §2.1.                        */
/* ------------------------------------------------------------------------- */
/* Double classe pour battre le `padding-block` de §2.8 (spécificité 0,2,0). */
.eri-domcards-band.eri-domcards-band--start { padding-block: var(--eri-band-pad) 0; }
.eri-domcards-band.eri-domcards-band--mid   { padding-block: var(--eri-band-gap) 0; }
.eri-domcards-band.eri-domcards-band--end   { padding-block: var(--eri-band-gap) var(--eri-band-pad); }

/* --- Cartes-photo de domaines --- */
.eri-domcards__head { display: flex; flex-direction: column; gap: 18px; max-width: 700px; }
/* la grille est un <ul> : on neutralise les puces (colonnes et gap : §2.8) */
.eri-domcards__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); list-style: none; margin: 0; padding: 0; }
.eri-domcards__card { position: relative; aspect-ratio: 384/300; min-height: 280px; overflow: hidden;
	background: var(--eri-ink); border: 0; padding: 0; display: block; }
.eri-domcards__media { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
/* À défaut de photo : tache dégradée colorée (teinte du domaine), sur le fond ink. */
.eri-domcards__card::before { content: ''; position: absolute; inset: 0; z-index: 0;
	background: radial-gradient(115% 85% at 80% 6%, var(--eri-dc-glow, transparent) 0%, transparent 56%); }
/* voile dégradé du bas : garantit la lisibilité du nom quelle que soit la photo */
.eri-domcards__card::after { content: ''; position: absolute; inset: 0;
	background: linear-gradient(180deg, rgba(20,25,34,0) 0%, rgba(20,25,34,.10) 42%, rgba(20,25,34,.66) 100%); }
.eri-domcards__icon { position: absolute; z-index: 2; top: 22px; left: 22px; width: 56px; height: 56px;
	background: var(--eri-surface-0); display: grid; place-items: center; box-shadow: 0 4px 6px rgba(0,0,0,.14); }
/* img = icône en médiathèque (.eri-domcards__icon-img) ; svg = repli Eri_Icons
   (.eri-domcards__icon-svg, tracé en currentColor). */
.eri-domcards__icon img,
.eri-domcards__icon svg { display: block; width: 30px; height: 30px; color: var(--eri-dc-icon, var(--eri-ink)); }
.eri-domcards__body { position: absolute; z-index: 2; left: 24px; right: 24px; bottom: 24px; }
.eri-domcards__metric { display: block; font-family: var(--eri-font-body); font-size: .875rem;
	line-height: 1.5rem; color: var(--eri-on-accent); opacity: .9; }
/* .elementor .eri-domcards__name (Poppins 500 / 22px / blanc) : §3.0.b. */

@media (max-width: 1024px) { .eri-domcards__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) {
	.eri-domcards__grid { grid-template-columns: 1fr; }
	.eri-domcards__card { aspect-ratio: 16 / 10; min-height: 220px; }
	.eri-domcards__icon { top: 16px; left: 16px; width: 48px; height: 48px; }
	.eri-domcards__icon img, .eri-domcards__icon svg { width: 26px; height: 26px; }
	.eri-domcards__body { left: 18px; right: 18px; bottom: 18px; }
	.eri-domcards__head { gap: 14px; }
}

/* --- Texte en deux colonnes --- */
.eri-textcols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 52px; }
.eri-textcols__col { display: flex; flex-direction: column; gap: 20px; }
/* le WYSIWYG peut contenir plusieurs <p> / <ul> : rythme interne discret */
.eri-textcols__body > :first-child { margin-top: 0; }
.eri-textcols__body > :last-child { margin-bottom: 0; }
.eri-textcols__body p { margin: 0 0 14px; }
.eri-textcols__body ul { margin: 0 0 14px; padding-left: 1.2em; }
@media (max-width: 900px) { .eri-textcols { grid-template-columns: 1fr; gap: 32px; } }

/* 06c natif : en-tête (titre + chapô) et 2 colonnes = conteneurs Elementor
   « boxed 1244 » (pas le widget eri-text-cols). Le .e-con-inner est déjà
   centré à 1244 ; on ajoute le gutter 24px À L'INTÉRIEUR pour aligner le
   contenu sur les widgets voisins (.eri-container : max 1244 + padding 1.5rem). */
.elementor .elementor-element-s06c_head > .e-con-inner,
.elementor .elementor-element-s06c_cols > .e-con-inner,
.elementor .elementor-element-s06e_head > .e-con-inner,
.elementor .elementor-element-s06e_note > .e-con-inner,
.elementor .elementor-element-cta_head > .e-con-inner,
.elementor .elementor-element-cta_briq > .e-con-inner { padding-inline: 1.5rem; }
/* La grille 2 colonnes est portée par le conteneur boxed s06c_cols. */
.elementor .elementor-element-s06c_cols > .e-con-inner {
	display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 52px; align-items: start;
}
@media (max-width: 900px) {
	.elementor .elementor-element-s06c_cols > .e-con-inner { grid-template-columns: 1fr; gap: 32px; }
}

/* --- Panneau d'alertes qualifiées --- */
.eri-alerts { background: var(--eri-surface-0); border: 1px solid var(--eri-section-light);
	padding: 16px 28px; display: flex; flex-direction: column; gap: 9px; }
/* les lignes sont un <ul> (sémantique de liste) : le flex/gap 9px vit ici */
.eri-alerts__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 9px; }
.eri-alerts__row { display: flex; align-items: center; gap: 13px; min-height: 44px; padding: 0 17px;
	background: var(--eri-section-light); border: 1px solid var(--eri-section-light); }
.eri-alerts__dot { width: 9px; height: 9px; }           /* 6px par défaut en §2.6 */
.eri-alerts__label { flex: 1 1 auto; margin: 0; color: var(--eri-ink); }
@media (max-width: 600px) {
	.eri-alerts { padding: 14px 16px; }
	.eri-alerts__row { flex-wrap: wrap; padding: 10px 14px; }
	.eri-alerts__badge { flex: 0 0 auto; padding-inline: 14px; }
}

/* ------------------------------------------------------------------------- */
/* §3.8 — 06e : critères de comparaison + encart « En résumé »               */
/* Bande claire full-bleed .eri-crit-band et son padding : §2.1 / §2.8.      */
/* ------------------------------------------------------------------------- */
.eri-crit { display: flex; flex-direction: column; }
.eri-crit__head { display: flex; flex-direction: column; gap: 22px; max-width: 780px; }
.eri-crit__grid { display: grid; grid-template-columns: repeat(3, 1fr); }
.eri-crit__card { position: relative; min-height: 280px; padding: 27px;
	background: var(--eri-surface-0); border: 1px solid var(--eri-section-light); }

/* Tuile d'icône 48px : le fond porte la tonalité, le tracé SVG suit
   currentColor (une seule icône sert sur fond bleu, vert ou ambre). */
.eri-crit__icon { display: grid; place-items: center; width: 48px; height: 48px;
	border-radius: var(--eri-radius-10); color: var(--eri-on-accent); }
.eri-crit__icon svg { width: 24px; height: 24px; }
.eri-crit__icon--info    { background: var(--eri-azure-500); box-shadow: 0 6px 14px rgba(46,144,250,.32); }
.eri-crit__icon--success { background: var(--eri-teal-500); }
.eri-crit__icon--warning { background: var(--eri-saffron-500); }
/* Couleur libre par carte critère : recolore la tuile d'icône ET le badge
   (« tonalité »). N'agit que si --eri-crit-c est posé sur la carte. */
.eri-crit__card[style*="--eri-crit-c"] .eri-crit__icon { background: var(--eri-crit-c); }
.eri-crit__card[style*="--eri-crit-c"] .eri-crit__badge { background: color-mix(in srgb, var(--eri-crit-c) 14%, #fff); color: var(--eri-crit-c); --eri-badge-dot: var(--eri-crit-c); }

/* Badge en absolu : il s'aligne sur la hauteur de la tuile d'icône sans entrer
   dans le flux vertical de la carte (icône → titre → texte). */
.eri-crit__badge { position: absolute; top: 37px; right: 27px; white-space: nowrap; }
/* Le titre de carte reçoit sa typo en §3.0.b (dont `margin: 0`) : on ne pousse
   ici que le décalage vertical sous la tuile d'icône. */
.elementor .eri-crit__card-title { margin-top: 28px; }
.eri-crit__card-body { margin: 14px 0 0; }
.eri-crit__card-body > p { margin: 0; }
.eri-crit__card-body > p + p { margin-top: .75rem; }
.eri-crit__note { max-width: 900px; margin: 0; }
.eri-crit__note > p { margin: 0; }
.eri-crit__note > p + p { margin-top: 1rem; }

/* --- Encart « En résumé » : aplat azure, texte blanc --- */
.eri-summary { background: var(--eri-azure-500); padding: 34px 36px 36px; }
/* Fond + texte configurables (n'agit que si les vars sont posées sur l'aside). */
.eri-summary[style*="--eri-sum-bg"] { background: var(--eri-sum-bg); }
.eri-summary[style*="--eri-sum-text"] .eri-summary__title,
.eri-summary[style*="--eri-sum-text"] .eri-summary__lead,
.eri-summary[style*="--eri-sum-text"] .eri-summary__sub,
.eri-summary[style*="--eri-sum-text"] .eri-summary__pill span { color: var(--eri-sum-text); }
.eri-summary__head { display: flex; align-items: center; gap: 14px; }
.eri-summary__icon { flex: 0 0 34px; width: 34px; height: 34px; color: var(--eri-on-accent); }
.eri-summary__icon svg { display: block; width: 34px; height: 34px; }
/* Couleur de coche configurable (pastille check-badge) : ne s'applique que si
   --eri-sum-check est posé sur la puce (sinon la coche azure du glyphe reste). */
.eri-summary__icon[style*="--eri-sum-check"] svg path + path { stroke: var(--eri-sum-check); }
.eri-summary__lead { font-family: var(--eri-font-display); font-size: 1rem; font-weight: 500;
	line-height: 1.5rem; color: var(--eri-on-accent); max-width: 820px; margin: 20px 0 0; }
.eri-summary__sub { font-family: var(--eri-font-body); font-size: .875rem; line-height: 1.5rem;
	color: var(--eri-azure-100); max-width: 820px; margin: 14px 0 0; }
.eri-summary__pills { list-style: none; margin: 34px 0 0; padding: 0;
	display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.eri-summary__pill { min-height: 72px; padding: 19px;
	background: rgba(255,255,255,.2); border: 1px solid rgba(255,255,255,.3); }
/* Filet blanc de 24px au-dessus du libellé (maquette). */
.eri-summary__pill::before { content: ''; display: block; width: 24px; height: 3px;
	border-radius: var(--eri-radius-pill); background: var(--eri-on-accent); margin-bottom: 13px; }
.eri-summary__pill span { font-family: var(--eri-font-display); font-size: .75rem; font-weight: 500;
	line-height: 1.125rem; letter-spacing: .4px; color: var(--eri-on-accent); }

@media (max-width: 900px) {
	.eri-crit__grid, .eri-summary__pills { grid-template-columns: 1fr; }
	.eri-crit__card { min-height: 0; }
}
@media (max-width: 640px) {
	/* Sur mobile la carte est trop étroite pour un badge en absolu : il repasse
	   dans le flux, sous la tuile d'icône. */
	.eri-crit__card { display: flex; flex-direction: column; align-items: flex-start; padding: 22px; }
	.eri-crit__badge { position: static; margin-top: 16px; }
	.elementor .eri-crit__card-title { margin-top: 16px; }
	.eri-summary { padding: 26px 22px 28px; }
}

/* ------------------------------------------------------------------------- */
/* §3.9 — 07 : FAQ en deux colonnes (aside + liste)                          */
/* Section « plain » : fond blanc et rythme 80px viennent d'Elementor, pas    */
/* d'une bande colorée. Typo du titre §2.2, de la réponse §2.4, rayon 10px et */
/* ombre de la carte de contact §2.7.                                        */
/* ------------------------------------------------------------------------- */
.eri-faq { display: flex; align-items: flex-start; gap: var(--eri-band-gap); }
.eri-faq__aside { flex: 0 0 460px; max-width: 460px; display: flex; flex-direction: column; gap: 23px; }
.eri-faq__list  { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 14px; }
.eri-faq__lead  { font-family: var(--eri-font-body); font-size: 1rem; line-height: 1.75;
	color: var(--eri-text-soft); max-width: 360px; margin: 0; }

/* Question fermée : posée sur le gris de section, sans ombre ; ouverte :
   carte blanche cerclée d'azur, comme la maquette. */
.eri-faq__item { background: var(--eri-section-light); border: 1px solid transparent;
	padding: 24px 22px 24px 26px; box-shadow: none;
	transition: background .2s ease, border-color .2s ease, box-shadow .2s ease; }
.eri-faq__item[open] { background: var(--eri-surface-0); border-color: var(--eri-azure-50);
	box-shadow: var(--eri-shadow-card2); }
.eri-faq__question { display: flex; align-items: center; justify-content: space-between; gap: 14px;
	font-family: var(--eri-font-display); font-size: 1rem; font-weight: 500; line-height: 1.2;
	color: var(--eri-ink); cursor: pointer; list-style: none; }
.eri-faq__question::-webkit-details-marker { display: none; }
.eri-faq__question::after { content: none; }   /* neutralise le chevron V1 (l.99) */
.eri-faq__item[open] > .eri-faq__question::after { content: none; }
.eri-faq__question:focus-visible { outline: 2px solid var(--eri-azure-500); outline-offset: 4px; }
.eri-faq__q-text { flex: 1 1 auto; }

/* Pastille de couleur : cycle azur → matisse → safran → sarcelle. */
.eri-faq__dot { flex: 0 0 10px; width: 10px; height: 10px;
	border-radius: var(--eri-radius-pill); background: var(--eri-azure-500); }
.eri-faq__item:nth-of-type(4n+2) .eri-faq__dot { background: var(--eri-matisse-700); }
.eri-faq__item:nth-of-type(4n+3) .eri-faq__dot { background: var(--eri-saffron-500); }
.eri-faq__item:nth-of-type(4n+4) .eri-faq__dot { background: var(--eri-teal-500); }

/* Bouton 32px : « + » qui devient « − » (la barre verticale se replie). */
.eri-faq__toggle { position: relative; flex: 0 0 32px; width: 32px; height: 32px;
	border-radius: var(--eri-radius-pill); background: var(--eri-surface-0);
	border: 1px solid var(--eri-azure-50); transition: background .2s ease, border-color .2s ease; }
.eri-faq__toggle::before, .eri-faq__toggle::after { content: ''; position: absolute; left: 50%; top: 50%;
	background: var(--eri-text-soft); border-radius: var(--eri-radius-pill); }
.eri-faq__toggle::before { width: 13px; height: 2px; transform: translate(-50%, -50%); }
.eri-faq__toggle::after  { width: 2px; height: 13px; transform: translate(-50%, -50%);
	transition: transform .2s ease, opacity .2s ease; }
.eri-faq__item[open] .eri-faq__toggle { background: var(--eri-azure-500); border-color: var(--eri-azure-500); }
.eri-faq__item[open] .eri-faq__toggle::before { background: var(--eri-on-accent); }
.eri-faq__item[open] .eri-faq__toggle::after { background: var(--eri-on-accent); opacity: 0;
	transform: translate(-50%, -50%) scaleY(0); }

.eri-faq__answer { padding-top: 14px; }
.eri-faq__answer > :last-child { margin-bottom: 0; }

/* Carte « une autre question ? ». Scopée .elementor : le kit impose sinon la
   couleur et le soulignement des liens. La variante <div> (carte sans lien)
   récupère rayon et ombre, non couverts par le sélecteur `a.` de §2.7. */
.elementor a.eri-faq__contact,
.elementor div.eri-faq__contact { display: flex; align-items: center; justify-content: space-between;
	gap: 16px; background: var(--eri-surface-0); border: 1px solid var(--eri-section-light);
	padding: 28px 24px; text-decoration: none; transition: box-shadow .2s ease; }
.elementor div.eri-faq__contact { border-radius: var(--eri-radius-10); box-shadow: var(--eri-shadow-card2); }
.elementor a.eri-faq__contact:hover { box-shadow: 0 4px 8px rgba(28,41,84,.06), 0 14px 32px rgba(28,41,84,.12); }
.eri-faq__contact-icon { flex: 0 0 48px; width: 48px; height: 48px; display: grid; place-items: center;
	background: var(--eri-azure-500); border-radius: var(--eri-radius-10);
	box-shadow: 0 6px 14px rgba(46,144,250,.32); color: var(--eri-on-accent); }
.eri-faq__contact-body { display: flex; flex-direction: column; gap: 6px; }
.elementor .eri-faq__contact-title { font-family: var(--eri-font-display); font-size: 1rem;
	font-weight: 500; color: var(--eri-ink); }
.eri-faq__contact-text { font-family: var(--eri-font-body); font-size: .875rem; line-height: 1.5rem;
	color: var(--eri-text-soft); }
.eri-faq__contact-arrow { flex: 0 0 34px; width: 34px; height: 34px; display: grid; place-items: center;
	background: var(--eri-section-light); border-radius: var(--eri-radius-pill); color: var(--eri-ink); }

@media (max-width: 768px) {
	.eri-faq { flex-direction: column; gap: 32px; }
	.eri-faq__aside { flex-basis: auto; max-width: none; width: 100%; }
	.eri-faq__lead { max-width: none; }
	.eri-faq__item { padding: 18px 16px 18px 18px; }
	.eri-faq__question { gap: 10px; }
	.elementor a.eri-faq__contact,
	.elementor div.eri-faq__contact { padding: 20px 18px; gap: 14px; }
	.eri-faq__contact-arrow { display: none; }   /* la carte entière est cliquable */
}

/* ------------------------------------------------------------------------- */
/* §3.10 — 08 : CTA bande bleue + briques                                    */
/* Complète §2.1 (fond), §2.2 (titre), §2.4 (eyebrow), §2.5 (boutons),       */
/* §2.7 (rayon 10px), §2.8 (padding de bande) et §3.0.a (full-bleed).        */
/* ------------------------------------------------------------------------- */
/* Les écarts viennent des marges des enfants (valeurs Figma), pas d'un gap
   uniforme : le bloc « briques » est deux fois plus détaché que l'accroche. */
.eri-ctaband__inner { gap: 0; }
.eri-ctaband__lead {
	font-family: var(--eri-font-body); font-size: 1rem; line-height: 1.75;
	color: var(--eri-azure-100); max-width: 760px; margin: 36px 0 0;
}
.eri-ctaband__cta { gap: 14px; margin-top: 44px; }
.eri-ctaband__rule { width: 100%; height: 1px; border: 0; background: var(--eri-surface-0); margin: 111px 0 0; }
/* ARBITRAGE — surcharge le `margin: 0` mutualisé des eyebrows (§2.4) : le
   rythme de cette bande est donné par la maquette (33px / 32px). */
.eri-ctaband__eyebrow { align-self: flex-start; text-align: left; margin: 33px 0 32px; }
.eri-ctaband__briques { gap: 20px; }

/* Effet « verre » sur l'aplat azure : voiles blancs en rgba (aucun token ne
   décrit une transparence, c'est l'exception admise au « pas de hex en dur »).
   `border-radius` repris ici : la règle V1 `.elementor a.eri-ctaband__brique`
   (l.365, spécificité 0,2,1) battait le radius-10 de §2.7 (0,1,0). */
.elementor a.eri-ctaband__brique {
	position: relative;          /* ancre la pastille-flèche en absolu */
	display: flex;
	align-items: flex-start;
	text-decoration: none;
	color: var(--eri-on-accent);
	min-height: 132px;
	box-sizing: border-box;
	padding: 43px 21px 21px;
	border-radius: var(--eri-radius-10);
	background: rgba(255, 255, 255, .2);
	border: 1px solid rgba(255, 255, 255, .3);
}
.elementor a.eri-ctaband__brique:hover,
.elementor a.eri-ctaband__brique:focus-visible { background: rgba(255, 255, 255, .3); }
.eri-ctaband__brique-title {
	font-family: var(--eri-font-display); font-weight: 500; font-size: 1.125rem;
	line-height: 1.5625rem; color: var(--eri-on-accent); max-width: 200px; text-align: left;
}
.eri-ctaband__arrow-circle {
	position: absolute; right: 21px; bottom: 21px; width: 34px; height: 34px;
	border-radius: 50%; background: var(--eri-section-light); color: var(--eri-briq-arrow, var(--eri-azure-500));
	display: grid; place-items: center;
}
/* Flèche partagée (Eri_Icons::get( 'arrow-right' )) : la maquette la trace en
   1.5px, l'icône du thème est en 2px — on affine sur cette bande seulement. */
.eri-ctaband .eri-ico-24 path { stroke-width: 1.5; }

@media (max-width: 768px) {
	/* Rythme Figma pensé pour 1440px : on resserre, et les CTA passent en
	   colonne pleine largeur (deux pilules côte à côte débordent sous 400px). */
	.eri-ctaband__lead { margin-top: 24px; }
	.eri-ctaband__cta { margin-top: 32px; width: 100%; flex-direction: column; align-items: stretch; }
	.elementor a.eri-ctaband__btn { justify-content: center; }
	.eri-ctaband__rule { margin-top: 56px; }
	.eri-ctaband__eyebrow { margin: 24px 0 20px; }
	.elementor a.eri-ctaband__brique { min-height: 108px; padding: 28px 18px 18px; }
	.eri-ctaband__brique-title { max-width: calc(100% - 44px); }
}

/* ------------------------------------------------------------------------- */
/* §3.11 — Gouttière des widgets qui rendent leur propre conteneur           */
/* Les sections de la page Solution ont un padding latéral de 0 : sans ça, le */
/* texte touche le bord de l'écran. Regroupé (FAQ + media-text partagent la   */
/* même mesure de lecture ; la citation utilise --eri-container en §3.6).     */
/* ------------------------------------------------------------------------- */
.eri-faq, .eri-mediatext { max-width: var(--eri-content-row); margin-inline: auto; padding-inline: 1.5rem; }

/* ------------------------------------------------------------------------- */
/* §3.12 — Mouvement réduit (consolidé)                                      */
/* Réaffirmé APRÈS §2.10 : les transitions ci-dessus, de spécificité égale et */
/* postérieures, l'emporteraient sinon sur lui.                              */
/* ------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	.eri-change__card, .eri-faq__item, .eri-faq__toggle, .eri-faq__toggle::after,
	.elementor a.eri-faq__contact, .eri-prod__case,
	.elementor a.eri-ctaband__brique { transition: none; }
	.eri-prod__case:hover { transform: none; }
}

/* Repli une colonne du widget FAQ.
   Le widget est partagé avec la page Expertise, dont la maquette veut une FAQ
   centrée sur toute la largeur : sans accroche ni carte de contact, on annule
   la mise en page à deux colonnes de la page Solution. */
.eri-faq--stack { display: block; }
.eri-faq--stack .eri-faq__aside { flex-basis: auto; max-width: none; width: auto; margin-bottom: 2rem; }
.elementor .eri-faq--stack .eri-faq__heading { text-align: center; max-width: none; }

/* Titre de FAQ : le gabarit « Solution V2 » (Poppins 500 / 36px / #141922) ne
   s'applique qu'à la mise en page deux colonnes de cette page. En repli une
   colonne (Expertise), le titre garde son style d'origine. */
.elementor .eri-faq:not(.eri-faq--stack) .eri-faq__heading {
	font-family: var(--eri-font-display);
	font-size: clamp(1.75rem, 2.6vw, 2.25rem);
	font-weight: 500;
	line-height: 1.2222;
	letter-spacing: -.54px;
	color: var(--eri-ink);
	text-align: left;
	margin: 0;
}

/* Puce de logo à fond sombre : pour les monogrammes blancs, invisibles sur la
   puce claire par défaut (Noisy-le-Grand dans la maquette). */
.eri-prod__logo-mark--dark { background: var(--eri-ink); }

/* --- Hero Solution : valeurs relevées sur le nœud Figma 1025:28597 ---------
   Le titre est BLANC (il occupe la zone haute, encore bleue du dégradé) et le
   mot d'accent est en azure. Corrige un arbitrage antérieur qui le passait en
   encre foncée. */
.elementor .eri-hero-sol .eri-display-1 {
	font-family: var(--eri-font-display);
	font-size: clamp(2rem, 3.4vw, 3rem);   /* 48px */
	font-weight: 500;
	line-height: 1.1667;                    /* 56/48 */
	letter-spacing: -1.44px;
	color: var(--eri-on-accent);
	max-width: 680px;
}
.elementor .eri-hero-sol .eri-accent { color: var(--eri-azure-500); }
/* Le dégradé quitte le bleu plus vite que la première approximation : le chapô
   et les preuves tombent sur du blanc, d'où leurs couleurs sombres. */
.eri-hero-sol { background: linear-gradient(180deg, #2E90FA 0%, #6BA8F7 20%, #BBD7FC 44%, #FFFFFF 74%); }
.eri-hero-sol .eri-lead { color: var(--eri-badge-text); font-size: 1rem; line-height: 1.75; max-width: 590px; }
.eri-hero-sol__proof { gap: 28px; }
.elementor .eri-hero-sol .eri-proof__item strong { font-family: var(--eri-font-display); font-weight: 600; font-size: 1.0625rem; color: var(--eri-azure-700); }
.eri-hero-sol .eri-proof__item { font-family: var(--eri-font-body); font-size: .875rem; line-height: 1.5rem; color: var(--eri-text-soft); gap: 6px; }
.eri-hero-sol .eri-proof__item + .eri-proof__item::before { content: ''; flex: 0 0 auto; width: 4px; height: 4px; border-radius: 50%; background: var(--eri-text-faint); margin-right: 28px; }

/* Colonne de texte élargie : à 48px, le titre doit tenir sur 3 lignes comme la
   maquette (« Logiciel d'hypervision : Centralisez » / « vos données » /
   « simplement »), ce que 563px ne permettait pas. */
.eri-hero-sol__grid { grid-template-columns: 1.08fr 1fr; gap: 60px; }
/* Le séparateur des preuves vit DANS le gap de 28px : lui ajouter une marge
   poussait « 5 M+ » à la ligne. */
.eri-hero-sol .eri-proof__item + .eri-proof__item::before { margin-right: 0; }
.eri-hero-sol__proof { flex-wrap: nowrap; }
@media (max-width: 1100px) { .eri-hero-sol__proof { flex-wrap: wrap; } }

/* Tailles du hero en PIXELS : la racine du site n'est pas à 16px, donc 3rem
   donnait 51px au lieu des 48px de la maquette. */
.elementor .eri-hero-sol .eri-display-1 { font-size: clamp(32px, 3.2vw, 48px); line-height: 56px; max-width: 660px; }
.eri-hero-sol__grid { grid-template-columns: minmax(0, 660px) 1fr; }
/* Chaque preuve reste sur une ligne ; c'est la rangée qui passe à la ligne. */
.eri-hero-sol .eri-proof__item { white-space: nowrap; }
@media (max-width: 1200px) { .elementor .eri-hero-sol .eri-display-1 { font-size: 40px; line-height: 48px; } }

/* Cartes-mesure de la bande production : les graphiques sont exportés avec un
   canal alpha et des pistes inactives en blanc translucide — ils exigent donc
   un fond sombre. La deuxième carte porte le dégradé « Spring Lime » de la
   maquette. */
.eri-prod__measure { background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.10); overflow: hidden; }
.eri-prod__measure:nth-child(2) { background: var(--eri-grad-spring-lime); border-color: transparent; }

/* Épingles enrichies du hero (HTML, pas d'image : les exports Figma de ces
   nœuds incluaient le fond gris du frame). Position/rotation = réglages natifs
   Elementor portés par le wrapper du widget (cf. spin()). */
.eri-hero-sol__pin--alert { display: flex; align-items: flex-start; gap: 9px; text-align: left; }
.eri-hero-sol__pin-dot { flex: 0 0 auto; width: 8px; height: 8px; margin-top: 5px; border-radius: 50%; }
.eri-hero-sol__pin-dot--danger  { background: var(--eri-badge-danger-dot); box-shadow: 0 0 0 3px rgba(240,68,56,.15); }
.eri-hero-sol__pin-dot--success { background: var(--eri-badge-success-dot); }
/* Couleur d'accent d'épingle configurable : ne surcharge la pastille que si
   --eri-pin-c est posé sur l'épingle (sinon le preset danger/success/info reste). */
.eri-hero-sol__pin[style*="--eri-pin-c"] .eri-hero-sol__pin-dot { background: var(--eri-pin-c); }
.eri-hero-sol__pin-dot--info    { background: var(--eri-azure-500); }
.eri-hero-sol__pin-body { display: flex; flex-direction: column; }
/* Carte « énergie » : sur-titre, valeur, mention, courbe. */
.eri-hero-sol__pin--card { display: flex; flex-direction: column; gap: 4px; align-items: flex-start; text-align: left; border-radius: var(--eri-radius-10); padding: 14px 16px 12px; min-width: 176px; }
.eri-hero-sol__pin-eyebrow { font-family: var(--eri-font-display); font-size: 9.5px; font-weight: 600; letter-spacing: .5px; text-transform: uppercase; color: var(--eri-text-faint); }
.eri-hero-sol__pin-value { display: inline-flex; align-items: baseline; gap: 6px; font-family: var(--eri-font-display); font-size: 22px; font-weight: 600; color: var(--eri-azure-500); line-height: 1.1; }
.eri-hero-sol__pin-vsub { font-family: var(--eri-font-body); font-size: 10px; font-weight: 400; color: var(--eri-text-faint); }
.eri-hero-sol__spark { display: block; width: 100%; height: 28px; margin-top: 2px; color: var(--eri-pin-c, var(--eri-teal-500)); }

/* --- Hero Solution v2 (natif) : les rares points sans réglage natif --------
   a) Bande pleine largeur — Elementor borne les conteneurs racine
      (:is(.elementor-section-wrap,[data-elementor-id]) > .e-con à 0,2,0), d'où
      le sélecteur à 0,3,0 ci-dessous ; overflow-x: clip global évite le scroll.
   b) Contexte de positionnement des épingles (elles sont en position absolue).
   c) Rangée de preuves : le <strong> du chiffre et le point séparateur (bloc). */
.elementor .e-con.elementor-element-s_hero { --width: 100vw; --margin-left: -50vw; --margin-right: -50vw; max-width: none; left: 50%; }
/* 04 — Déploiement : bande claire peinte par la section (fond natif), rendue
   pleine largeur ici (même patron full-bleed que le hero). */
.elementor .e-con.elementor-element-s_deploy { --width: 100vw; --margin-left: -50vw; --margin-right: -50vw; max-width: none; left: 50%; }
/* 05 — Ouranos en production : bande navy peinte par la section, pleine largeur. */
.elementor .e-con.elementor-element-s_prod { --width: 100vw; --margin-left: -50vw; --margin-right: -50vw; max-width: none; left: 50%; }
/* 06c — Ce que couvre Ouranos : bande claire peinte par la section, pleine largeur. */
.elementor .e-con.elementor-element-s_06c { --width: 100vw; --margin-left: -50vw; --margin-right: -50vw; max-width: none; left: 50%; }
/* 06e — Critères + « En résumé » : bande claire peinte par la section, pleine largeur. */
.elementor .e-con.elementor-element-s_06e { --width: 100vw; --margin-left: -50vw; --margin-right: -50vw; max-width: none; left: 50%; }
/* 08 — CTA : aplat azure peint par la section, pleine largeur. */
.elementor .e-con.elementor-element-s_cta { --width: 100vw; --margin-left: -50vw; --margin-right: -50vw; max-width: none; left: 50%; }
/* Boutons natifs du CTA : ombre du primaire + survol. */
.elementor .eri-cta-btn--shadow .elementor-button { box-shadow: 0 8px 20px rgba(0,26,89,.22); }
.elementor .eri-cta-btn .elementor-button:hover { background: var(--eri-section-light); color: var(--eri-badge-text); }
.elementor-element-h_stage { position: relative; }
/* Épingles-conteneurs (alerte, carte). Deux points sans équivalent natif propre :
   - largeur : un conteneur Elementor absolu reste en width:100% (il s'étirait sur
     toute la colonne) ; le contrôle natif « Largeur » ne propose que du fixe, pas
     de fit-content → on épouse le contenu ici (scopé sous .elementor pour battre
     la règle .e-con, 0,1,0) ;
   - rotation : Elementor ne génère PAS la variable de transform pour un conteneur
     écrit par script (--e-transform-rotateZ vide, .e-transform non posé), donc la
     rotation « un peu tournée » de la maquette est figée ici par id. */
.elementor .elementor-element-h_pin2,
.elementor .elementor-element-h_pin3 { width: max-content; max-width: 280px; }
.elementor .elementor-element-h_pin2 { transform: rotate(3deg); }
.elementor .elementor-element-h_pin3 { transform: rotate(-4deg); }
.eri-hero-proof .elementor-widget-container { display: inline-flex; align-items: baseline; gap: 6px; white-space: nowrap; }
.eri-hero-proof p { margin: 0; }
.eri-hero-proof strong { font-family: var(--eri-font-display); font-weight: 600; font-size: 17px; color: var(--eri-azure-700); }
.eri-hero-proof__sep { display: block; width: 4px; height: 4px; border-radius: 50%; background: var(--eri-azure-500); }

/* Le visuel du dashboard embarque déjà sa carte blanche arrondie et son ombre
   portée : en rajouter en CSS dessinait une seconde carte décalée derrière. */
.eri-hero-sol__shot,
.eri-hero-sol__media img { box-shadow: none; border-radius: 0; }

/* Séparateur entre les preuves du hero : token Figma « Fond/Accent » #007AFF
   (et non un gris neutre). Scopé sous .elementor pour battre la règle
   homonyme déjà scopée ainsi, sinon elle garde la main. */
.elementor .eri-hero-sol .eri-proof__item + .eri-proof__item::before { background: var(--eri-azure-500); }

/* ===========================================================================
 * PAGE EXPERTISE « Hypervision » — Version 2 (build_expertise.php)
 * Sections 01 hero · 02 enjeux · 03 définition · 04 bénéfices · 05 cas d'usage
 * · 06 exemple concret · 07 FAQ · 08 CTA + aller plus loin.
 * =========================================================================== */

/* 01 — Hero : l'accent azure vient de la règle globale `.elementor .eri-accent`.
   Pilule eyebrow : point ::before EN FLEX (centrage vertical garanti quel que soit
   le cap-height des capitales), gouttière 9px, point 7px. */
.eri-hero-eyebrow .elementor-widget-container {
	display: inline-flex; align-items: center; gap: 9px;
}
.eri-hero-eyebrow .elementor-widget-container::before {
	content: ""; flex: none; width: 7px; height: 7px; border-radius: 50%;
	background: var(--eri-azure-500, #007AFF);
}
/* Cockpit : classe de widget (les widgets rendent `_css_classes`), pas d'id partagé. */
.eri-hero-shot img {
	border-radius: 12px;
	box-shadow: 0 30px 70px -30px rgba(6,22,60,.35), 0 8px 24px -12px rgba(6,22,60,.16);
}

/* 02 — Enjeux : colonnes séparées par un filet (pas de cartes). */
.elementor .eri-stats__title { font-family: var(--eri-font-display); font-weight: 500; font-size: 36px; line-height: 44px; letter-spacing: -.54px; color: var(--eri-ink, #141922); text-align: left; }
.eri-stats__sub { font-family: var(--eri-font-body); font-size: 16px; line-height: 28px; color: var(--eri-text-muted, #6B7788); margin: 12px 0 0; max-width: 780px; text-align: left; }
.eri-stats--divided { align-items: stretch; }
.eri-stats--divided .eri-grid-4 { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 0; margin-top: 44px; }
.eri-stats--divided .eri-card { background: none; border: 0; box-shadow: none; border-radius: 0; padding: 0 40px; }
.eri-stats--divided .eri-card:first-child { padding-left: 0; }
.eri-stats--divided .eri-card + .eri-card { border-left: 1px solid var(--eri-border-soft, #E4E9F0); }
.eri-stats--divided .eri-stat-value { font-size: 48px; line-height: 1; letter-spacing: -1px; margin: 0 0 12px; }
.eri-stats--divided .eri-stat-label { font-size: 16px; line-height: 1.5; color: var(--eri-text-muted, #6B7788); }
@media (max-width: 900px) {
	.eri-stats--divided .eri-grid-4 { grid-template-columns: 1fr 1fr; gap: 32px 0; }
	.eri-stats--divided .eri-card { padding: 0 24px; }
	.eri-stats--divided .eri-card:nth-child(odd) { padding-left: 0; border-left: 0; }
}
@media (max-width: 520px) {
	.eri-stats--divided .eri-grid-4 { grid-template-columns: 1fr; }
	.eri-stats--divided .eri-card { padding: 0; border-left: 0; }
}

/* 03/04 — Micro-scènes : les exports Figma embarquent DÉJÀ leur carte/cadre.
   Aucun rayon ni ombre ajoutés ici (sinon double cadre autour de l'image). */

/* 05 — Cas d'usage : rangées icône + titre/texte + étiquettes chiffrées. */
.eri-usecase { display: flex; flex-direction: column; gap: 20px; }
.eri-usecase__row {
	--eri-uc-c: var(--eri-azure-500, #007AFF);
	display: grid; grid-template-columns: 40px minmax(0,1fr) auto; align-items: start; column-gap: 20px;
	background: var(--eri-surface-0, #fff); border: 1px solid var(--eri-border-soft, #E4E9F0);
	border-radius: 10px; box-shadow: 0 6px 18px rgba(20,31,56,.06); padding: 32px;
}
.eri-usecase__icon { grid-column: 1; grid-row: 1; display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 10px; background: color-mix(in srgb, var(--eri-uc-c) 14%, #fff); color: var(--eri-uc-c); flex: none; }
.eri-usecase__glyph { width: 22px; height: 22px; }
.eri-usecase__body { grid-column: 2; grid-row: 1; min-width: 0; }
.eri-usecase__title { font-family: var(--eri-font-display); font-size: 22px; font-weight: 500; line-height: 30px; color: var(--eri-ink, #141922); margin: 0; }
.eri-usecase__text { font-family: var(--eri-font-body); font-size: 14px; line-height: 24px; color: var(--eri-text-body, #363F4D); margin: 8px 0 0; max-width: 680px; }
.eri-usecase__metrics { grid-column: 3; grid-row: 1; align-self: center; display: flex; gap: 16px; margin-left: 28px; }
.eri-usecase__chip { background: var(--eri-section-light, #F5F7FA); border-radius: 8px; padding: 14px 16px; min-width: 170px; }
.eri-usecase__chip-label { display: block; font-family: var(--eri-font-display); font-size: 11px; font-weight: 500; letter-spacing: .6px; text-transform: uppercase; color: var(--eri-text-muted, #6B7788); }
.eri-usecase__chip-value { display: block; font-family: var(--eri-font-display); font-size: 22px; font-weight: 500; letter-spacing: -.4px; color: var(--eri-ink, #141922); margin-top: 6px; }
@media (max-width: 900px) {
	.eri-usecase__row { grid-template-columns: 40px minmax(0,1fr); }
	.eri-usecase__metrics { grid-column: 1 / -1; grid-row: 2; margin-left: 0; margin-top: 20px; flex-wrap: wrap; }
}

/* 06 — Exemple concret : bande #103B6B, 2 colonnes (texte | chiffres empilés). */
/* Fond de la bande = contrôle `band_bg` du widget (voir class-eri-case-band). */
.eri-caseband { display: grid; grid-template-columns: minmax(0,1fr) 320px; gap: 60px; align-items: start; max-width: 1056px; }
.eri-caseband__text { display: flex; flex-direction: column; gap: 26px; align-items: flex-start; }
.elementor .eri-caseband .eri-display-2--light { font-family: var(--eri-font-display); font-weight: 500; font-size: 36px; line-height: 44px; letter-spacing: -.54px; margin: 0; color: #fff; }
.eri-caseband .eri-eyebrow { display: inline-flex; align-items: center; background: linear-gradient(168deg, #A3D5FF 14%, #E1FFA3 86%); border: 1px solid rgba(255,255,255,.28); border-radius: 999px; padding: 7px 16px; margin: 0; color: #363F4D; font-family: var(--eri-font-display); font-size: 11px; font-weight: 600; letter-spacing: 1.4px; text-transform: uppercase; }
.eri-caseband .eri-prose { display: flex; flex-direction: column; gap: 18px; color: #D9ECFF; font-size: 15px; line-height: 26px; }
.eri-caseband .eri-prose p { margin: 0; }
.eri-caseband .eri-prose strong { color: #fff; font-weight: 500; }
.eri-caseband .eri-case-stats { display: flex; flex-direction: column; gap: 14px; margin: 0; }
.eri-caseband .eri-case-stats__card { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 6px; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.16); border-radius: 10px; padding: 24px; min-height: 150px; text-align: left; }
.eri-caseband .eri-stat-value--white { font-family: var(--eri-font-display); font-weight: 500; font-size: 40px; letter-spacing: -1.2px; line-height: 1; margin: 0; color: #fff; }
.eri-caseband .eri-stat-label--light { font-family: var(--eri-font-body); font-size: 13px; line-height: 20px; color: #86C3FF; margin: 0; }
@media (max-width: 900px) { .eri-caseband { grid-template-columns: 1fr; gap: 32px; } }

/* 08 — CTA + aller plus loin (bande azure). */
/* Boutons CTA : ombre = contrôle box-shadow natif (build). Flèche 20px via la
   classe de widget eri-cta-pill (maquette : flèche ~24px, texte 14px). */
.eri-cta-pill .elementor-button .elementor-button-icon svg { width: 20px; height: 20px; }
.eri-cta-rule { border: 0; border-top: 1px solid rgba(255,255,255,.9); width: 100%; margin: 0; }
.eri-next-flush .eri-next { max-width: none; padding-inline: 0; }
.eri-next { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 20px; --eri-next-bg: rgba(255,255,255,.2); --eri-next-bd: rgba(255,255,255,.3); --eri-next-fg: #fff; }
.eri-next__card { position: relative; display: block; min-height: 132px; background: var(--eri-next-bg); border: 1px solid var(--eri-next-bd); border-radius: 10px; padding: 43px 21px; text-decoration: none; transition: background .2s ease, transform .2s ease; }
.eri-next__card:hover { background: rgba(255,255,255,.30); transform: translateY(-2px); }
.eri-next__title { display: block; max-width: 210px; color: var(--eri-next-fg); font-family: var(--eri-font-display); font-size: 18px; font-weight: 500; line-height: 25px; }
.eri-next__arrow { position: absolute; right: 20px; bottom: 19px; display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 999px; background: var(--eri-section-light, #F5F7FA); color: var(--eri-azure-500, #007AFF); }
.eri-next__ico { width: 24px; height: 24px; }
@media (max-width: 900px) { .eri-next { grid-template-columns: 1fr; } }

/* Bandes pleine largeur RÉELLE : content_width:full est plafonné par
   .ast-container (max-width:1960) → sur écran large / 4K les bandes s'arrêtent
   à 1960px. Breakout 100vw (comme les bandes de widgets) pour atteindre les
   bords à toute résolution. Le hero (fond dégradé) et le CTA (fond azure) en
   ont besoin aussi. */
/* s_hero et s_cta sont déjà en full-bleed par les règles globales de la page
   Solution (plus haut). Ces deux bandes de l'Expertise utilisent des ids UNIQUES
   (xp_enj / xp_ben) au lieu des ids courts partagés par ~40 pages — pas besoin de
   scoper au corps de page, la règle ne peut fuir nulle part. */
.elementor .e-con.elementor-element-xp_enj,
.elementor .e-con.elementor-element-xp_ben {
	--width: 100vw; --margin-left: -50vw; --margin-right: -50vw; max-width: none; left: 50%;
}

/* 02 — Enjeux natif : séparateur = filet azur 1×86 px (maquette : #007AFF,
   « Bordure/Accent »), aligné en bas comme les colonnes (flex-end). L'écart de
   30px vient du flex_gap natif du conteneur. */
.eri-enj-sep { display: block; width: 1px; height: 86px; background: var(--eri-azure-500, #007AFF); flex: none; align-self: flex-end; }
@media (max-width: 600px) { .eri-enj-sep { display: none; } }

/* 05 — Icône via le sélecteur Elementor (police ou SVG), teintée par --eri-uc-c. */
.eri-usecase__icon i, .eri-usecase__icon svg { color: var(--eri-uc-c); fill: currentColor; font-size: 22px; width: 22px; height: 22px; }

/* ===========================================================================
 * PAGE ARTICLE « Souveraineté des données » — Version 2 (build_article.php)
 * =========================================================================== */
/* 01 — Hero : bande pleine largeur (id UNIQUE ar_hero → pas de collision).
   Contenu borné (content_width:boxed 1411) centré dans la bande 100vw. */
.elementor .e-con.elementor-element-ar_hero { --width: 100vw; --margin-left: -50vw; --margin-right: -50vw; max-width: none; left: 50%; }
/* Carte illustration (classe de widget) + rang de méta à puces. */
.eri-hero-shield img { border-radius: 18px; box-shadow: 0 24px 60px -30px rgba(6,22,60,.30), 0 6px 16px -8px rgba(6,22,60,.12); }
.eri-art-meta { margin: 0; }
.eri-art-meta i { display: inline-block; width: 4px; height: 4px; border-radius: 50%; background: #94A0B3; vertical-align: middle; margin: 0 6px; }

/* Pilule eyebrow « spring sky » (dégradé), réutilisée (essentiel, chaîne, callout). */
.eri-eyebrow--grad { display: inline-flex; align-items: center; background: linear-gradient(165deg, #A3D5FF 14%, #E1FFA3 86%); border-radius: 999px; padding: 7px 16px; margin: 0; color: #363F4D; font-family: var(--eri-font-display); font-size: 11px; font-weight: 600; line-height: 1; letter-spacing: 1.4px; text-transform: uppercase; }

/* 02 — bande L'essentiel + sommaire (id unique ar_ess → full-bleed). */
.elementor .e-con.elementor-element-ar_ess { --width: 100vw; --margin-left: -50vw; --margin-right: -50vw; max-width: none; left: 50%; }
.eri-essential { height: 100%; box-sizing: border-box; display: flex; flex-direction: column; gap: 24px; align-items: flex-start; background: var(--eri-ess-bg, #fff); border: 1px solid var(--eri-border-soft, #E4E9F0); border-radius: 10px; box-shadow: var(--eri-shadow-l); padding: 35px; }
.eri-essential__text { font-family: var(--eri-font-body); font-size: 18px; line-height: 30px; color: var(--eri-ess-fg, #363F4D); margin: 0; }
.eri-essential__text p { margin: 0; color: inherit; }
.elementor-element-ar_toc, .elementor-element-ar_essential { align-self: stretch; }
.eri-toc { height: 100%; box-sizing: border-box; }
.eri-toc { background: #fff; border: 1px solid var(--eri-border-soft, #E4E9F0); border-radius: 10px; box-shadow: var(--eri-shadow-l); padding: 27px 27px 31px; }
.eri-toc__label { font-family: var(--eri-font-display); font-size: 10px; font-weight: 600; letter-spacing: 1.2px; text-transform: uppercase; color: var(--eri-toc-label, #6B7788); margin: 0 0 20px; }
.eri-toc__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 21px; }
.eri-toc__link { display: flex; gap: 12px; align-items: center; text-decoration: none; }
.eri-toc__num { flex: none; width: 26px; height: 26px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; background: var(--eri-toc-numbg, var(--eri-section-light, #F5F7FA)); color: #6B7788; font-family: var(--eri-font-display); font-size: 11px; font-weight: 500; }
.eri-toc__txt { font-family: var(--eri-font-body); font-size: 14px; line-height: 24px; color: var(--eri-toc-fg, #363F4D); }
.eri-toc__item--active .eri-toc__num { background: var(--eri-toc-accent, var(--eri-azure-500, #007AFF)); color: #fff; }
.eri-toc__item--active .eri-toc__txt { color: var(--eri-toc-accent, #0A55AC); }
@media (max-width: 900px) { .elementor-element-ar_ess .e-con-inner > .e-con, .elementor-element-ar_essrow { } }

/* Corps d'article : mesure, titres et prose (natif). */
.eri-art-h2 { font-family: var(--eri-font-display); font-weight: 500; font-size: 36px; line-height: 44px; letter-spacing: -.54px; color: var(--eri-ink, #141922); }
.eri-art-h3 { font-family: var(--eri-font-display); font-weight: 500; font-size: 24px; line-height: 32px; letter-spacing: -.2px; color: var(--eri-ink, #141922); }
.eri-art-prose p { font-family: var(--eri-font-body); font-size: 17px; line-height: 29px; color: #363F4D; margin: 0 0 20px; }
.eri-art-prose p:last-child { margin-bottom: 0; }

/* 04 — citation en exergue. */
/* 04 — citation en exergue : encart azur pleine largeur de colonne (widget eri-pullquote). */
.eri-pullquote { display: flex; align-items: center; justify-content: space-between; gap: 30px; margin: 6px 0; padding: 20px 28px; min-height: 135px; border-radius: 10px; box-sizing: border-box; background: var(--eri-pq-bg, var(--eri-azure-500, #007AFF)); }
.eri-pullquote__mark { flex: none; align-self: flex-start; font-family: var(--eri-font-display); font-weight: 500; font-size: 90px; line-height: 1; color: var(--eri-pq-mark, rgba(255,255,255,.3)); }
.eri-pullquote__text { margin: 0; font-family: var(--eri-font-display); font-weight: 400; font-size: 20px; line-height: 30px; color: var(--eri-pq-fg, #fff); }
@media (max-width: 640px) { .eri-pullquote { flex-direction: column; align-items: flex-start; gap: 4px; } .eri-pullquote__mark { font-size: 60px; } }

/* 05 — grille des risques (2×2). */
.eri-risk { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.eri-risk__card { --eri-risk-c: #F04438; display: flex; flex-direction: column; align-items: flex-start; gap: 10px; background: var(--eri-section-light, #F5F7FA); border: 1px solid var(--eri-border-soft, #E4E9F0); border-radius: 10px; padding: 20px 22px; }
.eri-risk__icon { display: inline-flex; color: var(--eri-risk-c); }
.eri-risk__icon i, .eri-risk__icon svg { width: 28px; height: 28px; font-size: 28px; color: var(--eri-risk-c); fill: currentColor; }
.elementor .eri-risk__title { font-family: var(--eri-font-display); font-size: 16px; font-weight: 500; color: var(--eri-ink, #141922); margin: 0; }
.eri-risk__text { font-family: var(--eri-font-body); font-size: 14px; line-height: 24px; color: #6B7788; margin: 0; }
@media (max-width: 700px) { .eri-risk { grid-template-columns: 1fr; } }

/* 06 — la chaîne de contrôle (bande #103B6B, widget eri-chain). */
.eri-chain .eri-band-inner { max-width: 1200px; }
.eri-chain__eyebrow { border: 1px solid rgba(255,255,255,.28); }
.elementor .eri-chain__title { font-family: var(--eri-font-display); font-weight: 500; font-size: 36px; line-height: 44px; letter-spacing: -.54px; color: #fff; margin: 30px 0; max-width: 900px; }
.eri-chain__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.eri-chain__card { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; background: var(--eri-chain-card, rgba(255,255,255,.06)); border: 1px solid rgba(255,255,255,.16); border-radius: 10px; padding: 17px 22px; }
.eri-chain__num { font-family: var(--eri-font-display); font-size: 11px; font-weight: 600; letter-spacing: 1px; color: var(--eri-chain-num, #86C3FF); }
.eri-chain__label { font-family: var(--eri-font-display); font-size: 10px; font-weight: 600; letter-spacing: 1px; text-transform: uppercase; color: #fff; }
.eri-chain__name { font-family: var(--eri-font-display); font-size: 17px; font-weight: 400; line-height: 24px; color: var(--eri-chain-name, #fff); }
.eri-chain__tag { display: inline-flex; align-items: center; gap: 7px; background: var(--eri-chain-tagbg, #ECFDF3); border-radius: 999px; padding: 5px 13px 5px 10px; font-family: var(--eri-font-display); font-size: 10px; font-weight: 500; line-height: 1; color: var(--eri-chain-tagfg, #027A48); }
.eri-chain__tag i { width: 6px; height: 6px; border-radius: 50%; background: #12B76A; display: inline-block; }
.eri-chain__note { font-family: var(--eri-font-body); font-size: 14px; color: #86C3FF; margin: 30px 0 0; }
@media (max-width: 900px) { .eri-chain__grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .eri-chain__grid { grid-template-columns: 1fr; } }

/* 07 — callout « exemple terrain » + encart auteur (blocs HTML natifs). */
.eri-art-callout { background: var(--eri-co-bg, var(--eri-section-light, #F5F7FA)); border: 1px solid var(--eri-co-bd, var(--eri-border-soft, #E4E9F0)); border-radius: 14px; padding: 30px 32px; display: flex; flex-direction: column; align-items: flex-start; gap: 14px; }
.elementor .eri-art-callout__title { font-family: var(--eri-font-display); font-weight: 500; font-size: 22px; line-height: 30px; color: var(--eri-co-title, var(--eri-ink, #141922)); margin: 0; }
.eri-art-callout__text { font-family: var(--eri-font-body); font-size: 15px; line-height: 24px; color: #363F4D; margin: 0; }
.eri-art-callout__text.eri-muted { color: #94A0B3; }
.eri-art-author { display: grid; grid-template-columns: 64px 1fr; gap: 16px; align-items: start; background: var(--eri-au-bg, var(--eri-section-light, #F5F7FA)); border: 1px solid var(--eri-border-soft, #E4E9F0); border-radius: 14px; padding: 28px; }
.eri-art-author__avatar { flex: none; width: 64px; height: 64px; border-radius: 999px; overflow: hidden; background: var(--eri-au-grad, linear-gradient(135deg, #007AFF, #00A4EB)); }
.eri-art-author__img { display: block; width: 100%; height: 100%; object-fit: cover; }
.eri-art-author__name { font-family: var(--eri-font-display); font-weight: 500; font-size: 17px; color: var(--eri-ink, #141922); margin: 0; }
.eri-art-author__role { font-family: var(--eri-font-display); font-weight: 500; font-size: 13px; color: var(--eri-au-role, var(--eri-azure-500, #007AFF)); margin: 4px 0 8px; }
.eri-art-author__bio { font-family: var(--eri-font-body); font-size: 13.5px; line-height: 21px; color: #6B7788; margin: 0; }

/* 08 — bande « aller plus loin » (id unique ar_explore → full-bleed). */
.elementor .e-con.elementor-element-ar_explore { --width: 100vw; --margin-left: -50vw; --margin-right: -50vw; max-width: none; left: 50%; }
.eri-explore { display: grid; grid-template-columns: repeat(3, 1fr); gap: 21px; }
.eri-explore__card { position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: 7px; background: var(--eri-ex-card, #fff); border: 1px solid var(--eri-border-soft, #E4E9F0); border-radius: 10px; box-shadow: 0 6px 18px rgba(20,31,56,.06); padding: 22px 24px 60px; text-decoration: none; transition: box-shadow .2s ease, transform .2s ease; }
.eri-explore__card:hover { transform: translateY(-2px); box-shadow: 0 12px 28px rgba(20,31,56,.10); }
.eri-explore__chip { display: inline-flex; align-items: center; background: linear-gradient(165deg, #A3D5FF 14%, #E1FFA3 86%); border-radius: 999px; padding: 5px 16px; font-family: var(--eri-font-display); font-size: 9px; font-weight: 600; line-height: 1; letter-spacing: .8px; text-transform: uppercase; color: #363F4D; }
.eri-explore__title { font-family: var(--eri-font-display); font-size: 22px; font-weight: 500; line-height: 30px; color: var(--eri-ex-title, var(--eri-ink, #141922)); }
.eri-explore__arrow { position: absolute; right: 24px; bottom: 20px; display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 999px; background: var(--eri-ex-arrbg, var(--eri-section-light, #F5F7FA)); color: var(--eri-ex-arrfg, var(--eri-azure-500, #007AFF)); }
.eri-explore__arrow svg { width: 24px; height: 24px; }
.eri-artcards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 21px; }
.eri-artcards__card { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--eri-border-soft, #E4E9F0); border-radius: 10px; box-shadow: 0 6px 18px rgba(20,31,56,.06); overflow: hidden; min-height: 300px; }
.eri-artcards__viz { position: relative; height: 110px; overflow: hidden; background: var(--eri-ac-viz, linear-gradient(164deg, #6FB0E8 14%, #8DFFBD 86%)); }
.eri-artcards__viz-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.eri-artcards__badge { position: absolute; left: 20px; top: 20px; display: inline-flex; align-items: center; background: var(--eri-ac-badgebg, rgba(255,255,255,.9)); border-radius: 999px; padding: 5px 14px; font-family: var(--eri-font-display); font-size: 9px; font-weight: 600; line-height: 1; letter-spacing: .8px; text-transform: uppercase; color: var(--eri-ac-badgefg, #0A55AC); }
.eri-artcards__body { display: flex; flex-direction: column; gap: 12px; padding: 24px 24px 22px; flex: 1; }
.elementor .eri-artcards__title { font-family: var(--eri-font-display); font-size: 16px; font-weight: 500; line-height: 22px; color: var(--eri-ac-title, var(--eri-ink, #141922)); margin: 0; }
.eri-artcards__excerpt { font-family: var(--eri-font-body); font-size: 14px; line-height: 24px; color: var(--eri-ac-excerpt, #6B7788); margin: 0; }
.eri-artcards__meta { font-family: var(--eri-font-body); font-size: 11.5px; color: var(--eri-ac-meta, #94A0B3); margin: auto 0 0; }
.eri-artcards__card { text-decoration: none; }

/* Astra impose une marge aux <p> de .entry-content (spécificité 0,1,1) : elle gonfle
   l'espacement des widgets et décale le centrage vertical (citation). On la neutralise
   sous .elementor (0,2,0 > 0,1,1) pour les paragraphes de nos blocs d'article. */
.elementor .eri-art-callout__text,
.elementor .eri-pullquote__text,
.elementor .eri-artcards__excerpt,
.elementor .eri-artcards__meta,
.elementor .eri-chain__note,
.elementor .eri-risk__text,
.elementor .eri-art-author__bio,
.elementor .eri-essential__text,
.elementor .eri-essential__text p { margin: 0; }
.elementor .eri-art-author__name { margin: 0; }
.elementor .eri-art-author__role { margin: 4px 0 8px; }
@media (max-width: 900px) { .eri-explore, .eri-artcards { grid-template-columns: 1fr; } }

/* ---------------------------------------------------------------------------
   Plan du site (widget eri-sitemap)
   Colonnes responsives ; couleurs éditables via variables --eri-sm-*.
--------------------------------------------------------------------------- */
.eri-sitemap {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(var(--eri-sm-col, 240px), 1fr));
	gap: 32px 40px;
}
.eri-sitemap__group { break-inside: avoid; }
.elementor .eri-sitemap__title {
	font-family: var(--eri-font-display);
	font-size: 18px;
	font-weight: 700;
	line-height: 1.3;
	color: var(--eri-sm-title, var(--eri-navy));
	margin: 0 0 14px;
	padding-bottom: 10px;
	border-bottom: 2px solid var(--eri-sm-accent, var(--eri-accent));
}
.eri-sitemap__list { list-style: none; margin: 0; padding: 0; }
.eri-sitemap__item { margin: 0 0 8px; line-height: 1.45; }
.eri-sitemap__item a,
.eri-sitemap__item span {
	color: var(--eri-sm-link, var(--eri-text-body));
	text-decoration: none;
	font-size: 15px;
	transition: color .15s ease;
}
.eri-sitemap__item a:hover,
.eri-sitemap__item a:focus-visible {
	color: var(--eri-sm-link-hover, var(--eri-accent));
	text-decoration: underline;
}
.eri-sitemap__item.is-top > a,
.eri-sitemap__item.is-top > span { font-weight: 600; color: var(--eri-sm-link, var(--eri-ink)); }
.eri-sitemap__item.is-child { padding-left: 14px; position: relative; }
.eri-sitemap__item.is-child::before {
	content: "";
	position: absolute;
	left: 2px;
	top: .7em;
	width: 6px;
	height: 1px;
	background: var(--eri-sm-accent, var(--eri-border-strong));
}
.elementor .eri-sitemap__item { margin-bottom: 8px; }
.elementor .eri-sitemap__item p { margin: 0; }
@media (max-width: 600px) { .eri-sitemap { grid-template-columns: 1fr; gap: 28px; } }
