/*
 * Pollen Frais — additions éditoriales (Phase C : blog, articles, marques, légal, 404).
 * N'existe QUE pour les blocs que le prototype ne montre pas (tableaux,
 * glossaire, vrai/faux, comparateur, vidéo, typographie longue du corps
 * d'article). Réutilise exclusivement les tokens et l'échelle typographique
 * déjà posés par pollen.css (Phase A) — aucune couleur, police ou radius
 * nouvelle n'est introduite ici.
 */

/* Compat : quelques SVG copiés tels quels depuis la production référencent
   des variables du thème PrestaShop (--art-gold, --primary), absentes de
   pollen.css. On les fait pointer vers les tokens pollen existants plutôt
   que de retoucher le SVG (contenu non modifié = zéro réécriture). */
:root { --art-gold: var(--pf-yellow); --primary: var(--pf-ink); }

/* ========================== DESKTOP ========================== */
.pf-desktop .frow { display: flex; gap: 10px; padding: 26px 0 0; overflow-x: auto; flex-wrap: wrap; }
.pf-desktop .article-content { margin-top: 26px; }
.pf-desktop .article-content h2 { font: 800 22px/1.25 Unbounded, Unbounded-fallback, sans-serif; letter-spacing: -.03em; margin: 36px 0 4px; max-width: 34ch; }
.pf-desktop .article-content p { font: 400 13.5px/1.75 Sora, Sora-fallback, sans-serif; max-width: 68ch; margin-top: 18px; }
.pf-desktop .article-content em { font-style: italic; }
.pf-desktop .article-content strong { font-weight: 700; }
.pf-desktop .article-content a { text-decoration: underline; }
.pf-desktop .article-content ul.article-list { margin: 18px 0 0; padding-left: 22px; display: flex; flex-direction: column; gap: 10px; max-width: 68ch; }
.pf-desktop .article-content ul.article-list li { font: 400 13.5px/1.7 Sora, Sora-fallback, sans-serif; }

.pf-desktop .article-content .article-table-wrap { margin-top: 22px; overflow-x: auto; border: 2px solid var(--pf-ink); border-radius: 14px; }
.pf-desktop .article-content table { width: 100%; border-collapse: collapse; font: 400 12.5px Sora, Sora-fallback, sans-serif; }
.pf-desktop .article-content th, .pf-desktop .article-content td { padding: 12px 16px; text-align: left; border-bottom: 1px solid rgba(15,14,12,.14); }
.pf-desktop .article-content thead { background: var(--pf-cream); }
.pf-desktop .article-content thead th { font: 600 10.5px Sora, Sora-fallback, sans-serif; text-transform: uppercase; letter-spacing: .08em; color: rgba(15,14,12,.66); }
.pf-desktop .article-content tbody tr:last-child td { border-bottom: none; }

.pf-desktop .article-video { margin-top: 22px; }
.pf-desktop .article-video__player { width: 100%; border-radius: 14px; display: block; border: 2px solid var(--pf-ink); }
.pf-desktop .article-video__caption { font: 400 11.5px Sora, Sora-fallback, sans-serif; color: rgba(15,14,12,.68); margin-top: 8px; }

/* Boîte auteur — bloc E-E-A-T repris tel quel de la production (SVG + nom +
   rôle + bio), habillé avec les composants existants (carte crème). */
.pf-desktop .article-author-box { display: flex; gap: 16px; align-items: flex-start; margin-top: 30px; padding: 20px; background: var(--pf-cream); border-radius: 18px; max-width: 68ch; }
.pf-desktop .article-author-box .author-box-avatar { width: 44px; height: 44px; border-radius: 999px; background: #fff; border: 2px solid var(--pf-ink); display: grid; place-items: center; flex: none; }
.pf-desktop .article-author-box .author-box-name { font: 700 13px Unbounded, Unbounded-fallback, sans-serif; letter-spacing: -.02em; }
.pf-desktop .article-author-box .author-box-role { font: 400 11px Sora, Sora-fallback, sans-serif; color: rgba(15,14,12,.66); margin-top: 2px; }
.pf-desktop .article-author-box .author-box-bio { font: 400 12.5px/1.6 Sora, Sora-fallback, sans-serif; margin-top: 8px; }

.pf-desktop .article-content .module-glossaire,
.pf-desktop .article-content .vrai-faux,
.pf-desktop .article-content .module-comparateur,
.pf-desktop .article-content .article-faq {
  margin-top: 30px; padding: 24px; background: #fff; border: 2px solid var(--pf-ink); border-radius: 18px;
}
.pf-desktop .article-content .article-faq { background: var(--pf-cream); border: none; }
.pf-desktop .article-content .module-glossaire__title,
.pf-desktop .article-content .vrai-faux__title,
.pf-desktop .article-content .module-comparateur__title,
.pf-desktop .article-content .article-faq h2 { font: 800 20px/1.2 Unbounded, Unbounded-fallback, sans-serif; letter-spacing: -.03em; margin: 0 0 8px; max-width: none; }
.pf-desktop .article-content .module-glossaire__subtitle { font: 400 12.5px Sora, Sora-fallback, sans-serif; color: rgba(15,14,12,.7); margin-bottom: 12px; }

.pf-desktop .article-content .gloss-item,
.pf-desktop .article-content .vrai-faux__item { border-top: 1px solid rgba(15,14,12,.14); }
.pf-desktop .article-content .gloss-item:first-of-type,
.pf-desktop .article-content .vrai-faux__item:first-of-type { border-top: none; }
.pf-desktop .article-content .gloss-item__trigger,
.pf-desktop .article-content .vrai-faux__trigger { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 0; cursor: pointer; background: none; border: none; text-align: left; font: 700 13.5px Sora, Sora-fallback, sans-serif; color: inherit; }
.pf-desktop .article-content .gloss-item__chevron, .pf-desktop .article-content .vrai-faux__icon { flex: none; transition: transform .2s ease; }
.pf-desktop .article-content [aria-expanded="true"] .gloss-item__chevron { transform: rotate(180deg); }
/* .vrai-faux__body se masque via aria-hidden (pas l'attribut hidden, à la
   différence de .gloss-item__body) — pattern repris tel quel de la prod. */
.pf-desktop .article-content .vrai-faux__body[aria-hidden="true"] { display: none; }
.pf-desktop .article-content .gloss-item__def { font: 400 13px/1.65 Sora, Sora-fallback, sans-serif; color: rgba(15,14,12,.82); padding-bottom: 14px; max-width: none; margin-top: 0; }
.pf-desktop .article-content .vrai-faux__explication { font: 400 13px/1.65 Sora, Sora-fallback, sans-serif; padding-bottom: 14px; max-width: none; margin-top: 8px; }
.pf-desktop .article-content .vrai-faux__verdict { display: inline-block; font: 700 11px Sora, Sora-fallback, sans-serif; text-transform: uppercase; letter-spacing: .06em; padding: 3px 10px; border-radius: 999px; }
.pf-desktop .article-content .vrai-faux__verdict--vrai { background: var(--pf-green-bg); color: var(--pf-green); }
.pf-desktop .article-content .vrai-faux__verdict--faux { background: #FFE3DC; color: var(--pf-brown); }

.pf-desktop .article-content .module-comp-table-wrap { overflow-x: auto; }
.pf-desktop .article-content .module-comp-table { width: 100%; border-collapse: collapse; font: 400 12.5px Sora, Sora-fallback, sans-serif; }
.pf-desktop .article-content .module-comp-table th, .pf-desktop .article-content .module-comp-table td { padding: 10px 14px; border-bottom: 1px solid rgba(15,14,12,.14); text-align: left; }

.pf-desktop .article-content .article-faq details { border-top: 1px solid rgba(15,14,12,.2); padding: 14px 0; }
.pf-desktop .article-content .article-faq details:first-of-type { border-top: none; }
.pf-desktop .article-content .article-faq summary { font: 700 13.5px Sora, Sora-fallback, sans-serif; cursor: pointer; }
.pf-desktop .article-content .article-faq summary::marker { color: var(--pf-brown); }
.pf-desktop .article-content .article-faq p { margin-top: 10px; max-width: none; }

/* Sommaire + "à lire ensuite" (sidebar article) */
.pf-desktop .article-toc a, .pf-desktop .article-next a { text-decoration: none; color: inherit; }
.pf-desktop .article-toc a:hover, .pf-desktop .article-next a:hover { color: var(--pf-brown); }
.pf-desktop .article-toc a.active { color: var(--pf-brown); font-weight: 600; }

/* ========================== MOBILE ========================== */
/* Bandeau [en-tête + fil d'Ariane] mobile — un seul bloc sticky, opaque, sous
   lequel <main> défile. Reproduit le mécanisme .hdr + trail du prototype
   mobile (hors de .body, qui seul défile — l.16/19/81-86 du prototype). */
.pf-mobile .m-sticky-hdr { position: sticky; top: 0; z-index: 10; background: var(--pf-bg); flex: none; }
.pf-mobile .article-content { display: flex; flex-direction: column; gap: 14px; }
.pf-mobile .article-content h2 { font: 800 16px/1.25 Unbounded, Unbounded-fallback, sans-serif; letter-spacing: -.03em; margin-top: 8px; }
.pf-mobile .article-content p { font: 400 12px/1.68 Sora, Sora-fallback, sans-serif; }
.pf-mobile .article-content strong { font-weight: 700; }
.pf-mobile .article-content a { text-decoration: underline; }
.pf-mobile .article-content ul.article-list { padding-left: 18px; display: flex; flex-direction: column; gap: 8px; margin: 0; }
.pf-mobile .article-content ul.article-list li { font: 400 12px/1.6 Sora, Sora-fallback, sans-serif; }

.pf-mobile .article-content .article-table-wrap { overflow-x: auto; border: 2px solid var(--pf-ink); border-radius: 12px; }
.pf-mobile .article-content table { width: 100%; border-collapse: collapse; font: 400 11px Sora, Sora-fallback, sans-serif; }
.pf-mobile .article-content th, .pf-mobile .article-content td { padding: 9px 10px; text-align: left; border-bottom: 1px solid rgba(15,14,12,.14); white-space: nowrap; }
.pf-mobile .article-content thead { background: var(--pf-cream); }
.pf-mobile .article-content thead th { font: 600 9.5px Sora, Sora-fallback, sans-serif; text-transform: uppercase; letter-spacing: .06em; color: rgba(15,14,12,.66); }

.pf-mobile .article-video__player { width: 100%; border-radius: 12px; display: block; border: 2px solid var(--pf-ink); margin-top: 10px; }
.pf-mobile .article-video__caption { font: 400 10px Sora, Sora-fallback, sans-serif; color: rgba(15,14,12,.68); margin-top: 6px; }

.pf-mobile .article-author-box { display: flex; gap: 12px; align-items: flex-start; margin-top: 4px; padding: 14px; background: var(--pf-cream); border-radius: 16px; }
.pf-mobile .article-author-box .author-box-avatar { width: 36px; height: 36px; border-radius: 999px; background: #fff; border: 2px solid var(--pf-ink); display: grid; place-items: center; flex: none; }
.pf-mobile .article-author-box .author-box-name { font: 700 12px Unbounded, Unbounded-fallback, sans-serif; letter-spacing: -.02em; }
.pf-mobile .article-author-box .author-box-role { font: 400 10px Sora, Sora-fallback, sans-serif; color: rgba(15,14,12,.66); margin-top: 2px; }
.pf-mobile .article-author-box .author-box-bio { font: 400 11.5px/1.55 Sora, Sora-fallback, sans-serif; margin-top: 6px; }

.pf-mobile .article-content .module-glossaire,
.pf-mobile .article-content .vrai-faux,
.pf-mobile .article-content .module-comparateur,
.pf-mobile .article-content .article-faq {
  padding: 16px; background: #fff; border: 2px solid var(--pf-ink); border-radius: 16px;
}
.pf-mobile .article-content .article-faq { background: var(--pf-cream); border: none; }
.pf-mobile .article-content .module-glossaire__title,
.pf-mobile .article-content .vrai-faux__title,
.pf-mobile .article-content .module-comparateur__title,
.pf-mobile .article-content .article-faq h2 { font: 800 15px/1.2 Unbounded, Unbounded-fallback, sans-serif; letter-spacing: -.03em; margin: 0 0 6px; }
.pf-mobile .article-content .module-glossaire__subtitle { font: 400 11px Sora, Sora-fallback, sans-serif; color: rgba(15,14,12,.7); margin-bottom: 8px; }

.pf-mobile .article-content .gloss-item, .pf-mobile .article-content .vrai-faux__item { border-top: 1px solid rgba(15,14,12,.14); }
.pf-mobile .article-content .gloss-item:first-of-type, .pf-mobile .article-content .vrai-faux__item:first-of-type { border-top: none; }
.pf-mobile .article-content .gloss-item__trigger, .pf-mobile .article-content .vrai-faux__trigger { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 11px 0; cursor: pointer; background: none; border: none; text-align: left; font: 700 12px Sora, Sora-fallback, sans-serif; color: inherit; }
.pf-mobile .article-content .gloss-item__chevron, .pf-mobile .article-content .vrai-faux__icon { flex: none; transition: transform .2s ease; }
.pf-mobile .article-content [aria-expanded="true"] .gloss-item__chevron { transform: rotate(180deg); }
.pf-mobile .article-content .vrai-faux__body[aria-hidden="true"] { display: none; }
.pf-mobile .article-content .gloss-item__def { font: 400 11.5px/1.55 Sora, Sora-fallback, sans-serif; color: rgba(15,14,12,.82); padding-bottom: 11px; margin-top: 0; }
.pf-mobile .article-content .vrai-faux__explication { font: 400 11.5px/1.55 Sora, Sora-fallback, sans-serif; padding-bottom: 11px; margin-top: 6px; }
.pf-mobile .article-content .vrai-faux__verdict { display: inline-block; font: 700 10px Sora, Sora-fallback, sans-serif; text-transform: uppercase; letter-spacing: .06em; padding: 2px 9px; border-radius: 999px; }
.pf-mobile .article-content .vrai-faux__verdict--vrai { background: var(--pf-green-bg); color: var(--pf-green); }
.pf-mobile .article-content .vrai-faux__verdict--faux { background: #FFE3DC; color: var(--pf-brown); }

.pf-mobile .article-content .module-comp-table-wrap { overflow-x: auto; }
.pf-mobile .article-content .module-comp-table { width: 100%; border-collapse: collapse; font: 400 11px Sora, Sora-fallback, sans-serif; }
.pf-mobile .article-content .module-comp-table th, .pf-mobile .article-content .module-comp-table td { padding: 8px 10px; border-bottom: 1px solid rgba(15,14,12,.14); text-align: left; }

.pf-mobile .article-content .article-faq details { border-top: 1px solid rgba(15,14,12,.2); padding: 11px 0; }
.pf-mobile .article-content .article-faq details:first-of-type { border-top: none; }
.pf-mobile .article-content .article-faq summary { font: 700 12px Sora, Sora-fallback, sans-serif; cursor: pointer; }
.pf-mobile .article-content .article-faq p { margin-top: 8px; }

/* Pages légales (mentions, confidentialité) — même logique typographique
   que le corps d'article, sans les modules éditoriaux. */
.pf-desktop .legal-content h2 { font: 800 20px/1.25 Unbounded, Unbounded-fallback, sans-serif; letter-spacing: -.03em; margin: 30px 0 4px; }
.pf-desktop .legal-content p, .pf-desktop .legal-content li { font: 400 13px/1.7 Sora, Sora-fallback, sans-serif; max-width: 72ch; margin-top: 12px; }
.pf-desktop .legal-content ul { padding-left: 20px; }
.pf-desktop .legal-content table { width: 100%; border-collapse: collapse; margin-top: 16px; font: 400 12.5px Sora, Sora-fallback, sans-serif; }
.pf-desktop .legal-content th, .pf-desktop .legal-content td { padding: 10px 14px; text-align: left; border-bottom: 1px solid rgba(15,14,12,.14); vertical-align: top; }
.pf-desktop .legal-content thead { background: var(--pf-cream); }
.pf-desktop .legal-content .legal-update { font: 400 12px Sora, Sora-fallback, sans-serif; color: rgba(15,14,12,.68); margin-top: 8px; }
.pf-mobile .legal-content h2 { font: 800 15px/1.25 Unbounded, Unbounded-fallback, sans-serif; letter-spacing: -.03em; margin-top: 20px; }
.pf-mobile .legal-content p, .pf-mobile .legal-content li { font: 400 12px/1.6 Sora, Sora-fallback, sans-serif; margin-top: 10px; }
.pf-mobile .legal-content ul { padding-left: 18px; }
.pf-mobile .legal-content table { width: 100%; border-collapse: collapse; margin-top: 12px; font: 400 10.5px Sora, Sora-fallback, sans-serif; }
.pf-mobile .legal-content th, .pf-mobile .legal-content td { padding: 8px; text-align: left; border-bottom: 1px solid rgba(15,14,12,.14); vertical-align: top; }
.pf-mobile .legal-content thead { background: var(--pf-cream); }
.pf-mobile .legal-content .legal-update { font: 400 10.5px Sora, Sora-fallback, sans-serif; color: rgba(15,14,12,.68); margin-top: 6px; }

/* Textes publiables de Robert (28-09-26) : constructions markdown autorisées en plus
   (h3, h4, liste numérotée, citation, filet, lien externe obfusqué). Mêmes tokens. */
.pf-desktop .legal-content h3 { font: 700 15px/1.3 Unbounded, Unbounded-fallback, sans-serif; letter-spacing: -.03em; margin: 24px 0 2px; }
.pf-desktop .legal-content h4 { font: 700 13px/1.4 Sora, Sora-fallback, sans-serif; margin: 18px 0 0; }
.pf-mobile .legal-content h3 { font: 700 13px/1.3 Unbounded, Unbounded-fallback, sans-serif; letter-spacing: -.03em; margin-top: 16px; }
.pf-mobile .legal-content h4 { font: 700 12px/1.4 Sora, Sora-fallback, sans-serif; margin-top: 12px; }
.pf-desktop .legal-content ol { padding-left: 22px; }
.pf-mobile .legal-content ol { padding-left: 20px; }
.legal-content blockquote { margin: 16px 0 0; padding: 12px 16px; border-left: 3px solid var(--pf-ink); background: var(--pf-cream); border-radius: 0 12px 12px 0; }
.legal-content blockquote p { margin-top: 0; }
.legal-content hr { border: 0; border-top: 1px solid rgba(15,14,12,.2); margin: 24px 0 0; }
.legal-content a, .legal-content .obf-ext { color: var(--pf-brown); text-decoration: underline; }
.pf-desktop .legal-content .article-table-wrap { margin-top: 16px; overflow-x: auto; }
.pf-mobile .legal-content .article-table-wrap { margin-top: 12px; overflow-x: auto; }

/* Correctifs revue visuelle prod (Camille, 22-10-26) — mêmes tokens, valeurs reprises de .legal-content.
   Règles : _meta/scratch/camille-regles-22-10-26.md § 1 ; défauts : 06-qualite/rapport-revue-visuelle-prod-22-10-26.md. */
/* V03 : hiérarchie h2 > h3 > h4 (bureau 22 > 15 > 13,5 ; mobile 16 > 13 > 12). */
.pf-desktop .article-content h3 { font: 700 15px/1.3 Unbounded, Unbounded-fallback, sans-serif; letter-spacing: -.03em; margin: 28px 0 0; max-width: 40ch; }
.pf-desktop .article-content h4 { font: 700 13.5px/1.4 Sora, Sora-fallback, sans-serif; margin: 22px 0 0; }
.pf-desktop .article-content h3 + p, .pf-desktop .article-content h4 + p { margin-top: 8px; }
/* Mobile : valeurs de la typo mobile n° 83 (h3 18, h4 16 gras), remplacent 13 / 12 du lot V. */
.pf-mobile .article-content h3 { font: 700 18px/1.3 Unbounded, Unbounded-fallback, sans-serif; letter-spacing: -.03em; margin: 4px 0 0; }
.pf-mobile .article-content h4 { font: 700 16px/1.4 Sora, Sora-fallback, sans-serif; margin: 0; }
/* V21 : en mobile, .article-content est une colonne flex (gap 14 px) : les marges ne
   fusionnent pas. Marge basse UA du h2 (13,28 px), marges UA de ol/blockquote (16 px)
   et marge du relais chat (22 px) s'ajoutaient au gap : 27 à 49 px sous un h2. */
.pf-mobile .article-content h2 { margin-bottom: 0; }
.pf-mobile .article-content :is(h2, h3, h4) + * { margin-top: -4px; }
.pf-mobile .article-content > .pf-chat-relais { margin: 0; }
/* V02 : listes numérotées réglées comme les listes à puces. */
.pf-desktop .article-content ol.article-list, .pf-desktop .article-content ol { margin: 18px 0 0; padding-left: 22px; display: flex; flex-direction: column; gap: 10px; max-width: 68ch; }
.pf-desktop .article-content ol li { font: 400 13.5px/1.7 Sora, Sora-fallback, sans-serif; }
.pf-mobile .article-content ol.article-list, .pf-mobile .article-content ol { margin: 0; padding-left: 20px; display: flex; flex-direction: column; gap: 8px; }
.pf-mobile .article-content ol li { font: 400 16px/1.6 Sora, Sora-fallback, sans-serif; }
.article-content ol li::marker { font-weight: 600; color: rgba(15,14,12,.66); }
/* V23 : citation, même habillage que .legal-content blockquote (filet encre + crème). */
.article-content blockquote { margin: 0; padding: 12px 16px; border-left: 3px solid var(--pf-ink); background: var(--pf-cream); border-radius: 0 12px 12px 0; }
.pf-desktop .article-content blockquote { margin-top: 22px; max-width: 68ch; }
.article-content blockquote p { margin-top: 0; font-style: italic; }
/* V08 : tableaux mobiles. Les cellules passent à la ligne (avant : nowrap, jusqu'à
   1 464 px de large) avec une largeur mini ; barre de défilement visible ; ombre
   portée sur le bord droit tant que le tableau dépasse (bloc collant, sans texte). */
.pf-mobile .article-content th, .pf-mobile .article-content td { white-space: normal; min-width: 8.5em; vertical-align: top; }
.pf-mobile .article-content .article-table-wrap,
.pf-mobile .article-content .module-comp-table-wrap { position: relative; scrollbar-width: thin; scrollbar-color: rgba(15,14,12,.55) var(--pf-cream); }
.pf-mobile .article-content .article-table-wrap::-webkit-scrollbar,
.pf-mobile .article-content .module-comp-table-wrap::-webkit-scrollbar { height: 6px; }
.pf-mobile .article-content .article-table-wrap::-webkit-scrollbar-thumb,
.pf-mobile .article-content .module-comp-table-wrap::-webkit-scrollbar-thumb { background: rgba(15,14,12,.55); border-radius: 999px; }
@supports (animation-timeline: scroll()) {
  /* Ombre au bord droit au premier affichage s'il reste des colonnes à voir ; elle
     s'efface dès que le lecteur fait défiler. Tableau qui tient : frise inactive, pas d'ombre. */
  .pf-mobile .article-content .article-table-wrap::after,
  .pf-mobile .article-content .module-comp-table-wrap::after {
    content: ''; position: absolute; top: 0; right: 0; bottom: 0; width: 28px; pointer-events: none;
    background: linear-gradient(to left, rgba(15,14,12,.20), rgba(15,14,12,0));
    opacity: 0; animation: pf-ombre-tableau linear both; animation-timeline: scroll(nearest inline);
  }
  @keyframes pf-ombre-tableau { 0% { opacity: 1; } 6%, 100% { opacity: 0; } }
}
/* V21 bureau : h3 placé juste sous un h2, pas de double marge. */
.pf-desktop .article-content h2 + h3 { margin-top: 14px; }

/* Typographie mobile (Camille, 22-10-26, n° 83 / décision 85) — échelle commune avec pollen.css
   (variables --pfm-* posées dans pollen.css sous max-width 859 px ; valeur de repli
   identique si la variable manque). Corps 16/1,6 ; h2 21 > h3 18 > h4 16 gras. */
.pf-mobile .article-content { gap: 16px; }
.pf-mobile .article-content h2 { font-size: var(--pfm-h2, 21px); line-height: 1.2; }
.pf-mobile .article-content p { font-size: var(--pfm-corps, 16px); line-height: var(--pfm-lh, 1.6); }
.pf-mobile .article-content ul.article-list li { font-size: var(--pfm-corps, 16px); line-height: var(--pfm-lh, 1.6); }
/* Tableaux : cellules 14 px (secondaire), en-têtes en capitales 12 px. */
.pf-mobile .article-content table,
.pf-mobile .article-content .module-comp-table { font-size: var(--pfm-second, 14px); line-height: 1.45; }
.pf-mobile .article-content thead th { font-size: var(--pfm-mention, 12px); }
.pf-mobile .article-video__caption { font-size: var(--pfm-mention, 12px); line-height: 1.45; }
.pf-mobile .article-author-box .author-box-name { font-size: 15px; }
.pf-mobile .article-author-box .author-box-role { font-size: var(--pfm-note, 13px); }
.pf-mobile .article-author-box .author-box-bio { font-size: var(--pfm-second, 14px); line-height: 1.55; }
.pf-mobile .article-content .article-faq h2,
.pf-mobile .article-content .module-glossaire__title,
.pf-mobile .article-content .vrai-faux__title { font-size: var(--pfm-h2, 21px); line-height: 1.2; }
.pf-mobile .article-content .module-glossaire__subtitle { font-size: var(--pfm-second, 14px); }
.pf-mobile .article-content .gloss-item__trigger,
.pf-mobile .article-content .vrai-faux__trigger { font-size: var(--pfm-corps, 16px); line-height: 1.4; }
.pf-mobile .article-content .gloss-item__def,
.pf-mobile .article-content .vrai-faux__explication { font-size: var(--pfm-corps, 16px); line-height: var(--pfm-lh, 1.6); }
.pf-mobile .article-content .vrai-faux__verdict { font-size: var(--pfm-mention, 12px); }
/* Question de FAQ : 16 px gras, zone touchable portée de 15 à 38 px de haut. */
.pf-mobile .article-content .article-faq summary { font-size: var(--pfm-corps, 16px); line-height: 1.4; padding-block: 8px; }
.pf-mobile .article-content .article-faq details { padding-block: 3px; }
/* Pages légales : mêmes valeurs que les articles. */
.pf-mobile .legal-content h2 { font-size: var(--pfm-h2, 21px); line-height: 1.2; }
.pf-mobile .legal-content h3 { font-size: var(--pfm-h3, 18px); }
.pf-mobile .legal-content h4 { font-size: var(--pfm-corps, 16px); }
.pf-mobile .legal-content p, .pf-mobile .legal-content li { font-size: var(--pfm-corps, 16px); line-height: var(--pfm-lh, 1.6); }
.pf-mobile .legal-content table { font-size: var(--pfm-second, 14px); line-height: 1.45; }
.pf-mobile .legal-content .legal-update { font-size: var(--pfm-note, 13px); }
/* § 94.3 (Camille, 23-10-26) : mesure de lecture commune au bureau. 34rem = 544 px ≈ 70 signes
   par ligne en Sora 13,5 px (cible 65 à 72). Un seul bord droit : texte, encadrés, FAQ, glossaire. */
/* Écart Julien (Lot C) : variable déclarée aussi sur .pf-chat--d, hors de .article-content, pour que
   la mention IA et les pastilles de la barre suivent la même mesure (§ 94.4). Une seule valeur. */
/* § 95.1 (Camille, 26-10-26) : mesure de lecture commune au bureau. 31rem = 496 px, environ 69 signes
   par ligne pleine en Sora 13,5 px (cible 65 à 72). Un seul bord droit : chapô, texte, encadrés, FAQ, glossaire. */
.pf-desktop :is(.article-content, .pf-chat--d, .article-chapo) { --pf-lecture: 31rem; }
.pf-desktop .article-content :is(p, ul.article-list, ol, blockquote, .pf-chat-relais, .article-faq, .module-glossaire, .vrai-faux, .article-author-box) { max-width: var(--pf-lecture); }
.pf-desktop .article-content :is(.article-faq, .module-glossaire, .vrai-faux) :is(p, .gloss-item__def, .vrai-faux__explication) { max-width: none; }
/* § 94.4 : la zone garde la largeur de l'image à la une (span.img, même colonne) ; texte sous la barre à la mesure de lecture. */
.pf-desktop .pf-chat--d :is(.pf-chat__ia, .pf-chat__pastilles) { max-width: var(--pf-lecture); }
/* § 95.2 (Camille, 26-10-26) : chapô des articles sur la mesure commune. Même rendu qu'avant (15 px, 500, interligne 1,6). */
.pf-desktop .article-chapo { font: 500 15px/1.6 Sora, Sora-fallback, sans-serif; max-width: var(--pf-lecture); margin-top: 26px; }
