/* Plateformes agréées : feuille de style unique du site (HTML/CSS pur).
   Identité : encre bleu nuit, accent vert sapin, papier chaud, filets gris chauds.
   Thème clair, thème sombre selon le réglage du système, impression.
   Provenance : structure, jetons et composants dérivés de alsace-industrie.com/public/assets/presse.css
   (fork du 24/10/2026) ; couleurs, manchette et composants d'accueil propres à ce site. */

/* Polices auto-hébergées : Newsreader (titres et texte) et IBM Plex Sans (interface).
   Licence : SIL Open Font License 1.1, textes complets dans /fonts/OFL-Newsreader.txt et
   /fonts/OFL-IBM-Plex-Sans.txt. Provenance : fichiers copiés depuis alsace-industrie.com/public/fonts/
   (même licence OFL). */
@font-face {
  font-family: "Newsreader";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url("/fonts/newsreader-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Newsreader";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url("/fonts/newsreader-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Newsreader";
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("/fonts/newsreader-italic-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Newsreader";
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("/fonts/newsreader-italic-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url("/fonts/ibm-plex-sans-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url("/fonts/ibm-plex-sans-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* —— Jetons ——
   Contrastes vérifiés (WCAG AA, texte courant ≥ 4,5:1) par tests/test_construire.py :
   encre 15,3:1, accent 6,1:1, gris 6,6:1 sur le papier #fbfaf7 ; sombre : 14,6:1, 8,7:1, 7,3:1. */
:root {
  --papier: #fbfaf7;
  --encre: #14213d;
  --gris: #5f5a52;
  --filet: #ddd7cc;
  --accent: #0f6b5c;
  --lien-soulign: #a69f92;
  --chapo: #26324d;
  --focus: var(--accent);
  --surface: #f3f1ec;
  --surface-cible: #e3efeb;
  --champ: #fff;
  --serif: "Newsreader", Georgia, "Times New Roman", serif;
  --sans: "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;
  --rayon: 2px;
  --page-max: 72rem;
  --mesure: 38rem;
  color-scheme: light;
  /* Échelle typographique (8 tailles) et d'espacement (7 pas) */
  --t-surtitre: 0.75rem;
  --t-legende: 0.875rem;
  --t-ui: 1rem;
  --t-texte: 1.1875rem;
  --t-inter: 1.375rem;
  --t-h2: 1.75rem;
  --t-h1: 2.625rem;
  --t-chiffre: 4rem;
  --e1: 0.25rem;
  --e2: 0.5rem;
  --e3: 1rem;
  --e4: 1.5rem;
  --e5: 2rem;
  --e6: 3rem;
  --e7: 4rem;
}

@media (max-width: 40em) {
  :root {
    --t-texte: 1.125rem;
    --t-h2: 1.5rem;
    --t-h1: 2rem;
    --t-chiffre: 2.75rem;
  }
}

@media (prefers-color-scheme: dark) {
  :root {
    --papier: #0f1522;
    --encre: #e9e6df;
    --gris: #a7a39b;
    --filet: #2e3646;
    --accent: #5cc4ae;
    --lien-soulign: #5f6778;
    --chapo: #d6d3cc;
    --surface: #172031;
    --surface-cible: #1c2e33;
    --champ: #131a28;
    color-scheme: dark;
  }
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
  -webkit-tap-highlight-color: rgba(15, 107, 92, 0.14);
  scroll-behavior: smooth;
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

body {
  margin: 0;
  background: var(--papier);
  color: var(--encre);
  font-family: var(--serif);
  font-size: var(--t-texte);
  line-height: 1.6;
  font-optical-sizing: auto;
  font-variant-numeric: lining-nums;
  /* Filet d'accent en haut de page : la signature du site, sans bandeau ni fond sombre */
  border-top: 4px solid var(--accent);
}

img {
  max-width: 100%;
  height: auto;
  vertical-align: middle;
}

a {
  color: inherit;
  text-decoration: underline;
  text-decoration-color: var(--lien-soulign);
  text-decoration-thickness: 1px;
  text-underline-offset: 0.16em;
}

a:hover {
  color: var(--accent);
  text-decoration-color: var(--accent);
}

/* Ordinaux en exposant (1er, 9e : tools/typo.py) : sans écarter les lignes */
sup {
  font-size: 0.62em;
  line-height: 0;
  vertical-align: 0.42em;
}

/* Texte lu par les lecteurs d'écran seulement (légende d'un tableau déjà titré, « non évalué » sous un tiret) */
.sr {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  margin: -1px !important;
  padding: 0 !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

a:focus-visible,
button:focus-visible,
summary:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: 2px solid var(--focus);
  outline-offset: 2px;
}

/* —— Page —— */
.page {
  max-width: var(--page-max);
  margin: 0 auto;
  padding: 0 var(--e5);
  overflow-x: clip;
}

/* —— Manchette : marque à gauche, sous-titre, rubriques ——  */
.manchette {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: 0 var(--e5);
  padding: var(--e4) 0 0;
  border-bottom: 1px solid var(--encre);
}

.marque {
  font-family: var(--serif);
  font-weight: 600;
  font-size: 2rem;
  line-height: 1.15;
  letter-spacing: -0.01em;
  text-decoration: none;
  font-variation-settings: "opsz" 72;
  padding: var(--e1) 0;
  color: var(--encre);
}

.marque:hover {
  color: var(--accent);
  text-decoration: none;
}

.manchette__ligne {
  grid-column: 1;
  font-family: var(--sans);
  font-size: var(--t-legende);
  color: var(--gris);
  margin: 0 0 var(--e3);
}

.manchette > .nav {
  grid-column: 1 / -1;
}

.nav {
  display: flex;
  flex-wrap: wrap;
  gap: 0 var(--e4);
  border-top: 1px solid var(--filet);
  font-family: var(--sans);
  font-size: var(--t-legende);
}

.nav a {
  text-decoration: none;
  padding: var(--e3) 0;
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}

.nav a[aria-current="page"] {
  font-weight: 600;
  box-shadow: inset 0 -3px 0 var(--accent);
}

/* Menu mobile repliable : masqué au-dessus de 40em */
.menu {
  display: none;
  margin: 0;
  font-family: var(--sans);
}

.menu > summary {
  list-style: none;
  cursor: pointer;
  font-weight: 600;
  font-size: var(--t-legende);
  min-height: 44px;
  display: flex;
  align-items: center;
  gap: var(--e2);
  padding: var(--e2) 0 var(--e2) var(--e3);
  color: var(--encre);
}

.menu > summary::-webkit-details-marker {
  display: none;
}

.menu > summary::after {
  content: "▾";
  font-size: var(--t-legende);
  color: var(--gris);
}

.menu[open] > summary::after {
  transform: rotate(180deg);
}

.menu .nav {
  border-top: 0;
  flex-direction: column;
  gap: 0;
}

.menu .nav a {
  padding: var(--e2) 0;
  border-bottom: 1px solid var(--filet);
}

/* —— Fil d’Ariane —— */
.ariane {
  font-family: var(--sans);
  font-size: var(--t-legende);
  color: var(--gris);
  margin: var(--e3) 0 0;
}

.ariane ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--e2);
}

.ariane li {
  display: flex;
  align-items: center;
}

.ariane li + li::before {
  content: "›";
  margin-right: var(--e2);
  color: var(--gris);
}

.ariane a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: var(--e2) 0;
}

/* —— Tête d’article —— */
.tete {
  max-width: 48rem;
  margin: var(--e3) 0 var(--e5);
}

.rubrique {
  font-family: var(--sans);
  font-size: var(--t-surtitre);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 var(--e2);
}

h1 {
  font-family: var(--serif);
  font-weight: 600;
  font-size: var(--t-h1);
  line-height: 1.15;
  letter-spacing: -0.012em;
  margin: 0 0 var(--e3);
  font-variation-settings: "opsz" 72;
  color: var(--encre);
}

.chapo {
  font-size: var(--t-inter);
  line-height: 1.45;
  margin: 0 0 var(--e3);
  color: var(--chapo);
  font-variation-settings: "opsz" 24;
}

.dates {
  font-family: var(--sans);
  font-size: var(--t-legende);
  color: var(--gris);
  margin: 0;
  padding-top: var(--e3);
  border-top: 1px solid var(--filet);
}

.tete--accueil {
  max-width: 44rem;
  margin: var(--e5) 0 var(--e4);
}

/* —— Corps + rail —— */
.corps {
  display: grid;
  grid-template-columns: minmax(0, var(--mesure)) minmax(0, 1fr);
  gap: 0 var(--e7);
  align-items: start;
  border-top: 1px solid var(--encre);
  padding-top: var(--e5);
}

.texte {
  min-width: 0;
}

.texte h2 {
  font-family: var(--serif);
  font-weight: 600;
  font-size: var(--t-h2);
  line-height: 1.2;
  margin: var(--e6) 0 var(--e3);
  font-variation-settings: "opsz" 48;
}

.texte > section:first-child > h2:first-child {
  margin-top: 0;
}

.texte h3 {
  font-family: var(--serif);
  font-weight: 600;
  font-size: 1.25rem;
  line-height: 1.25;
  margin: var(--e5) 0 var(--e2);
  font-variation-settings: "opsz" 36;
}

.texte p,
.texte ul,
.texte ol {
  margin: 0 0 var(--e3);
}

.texte ul,
.texte ol {
  padding-left: var(--e4);
}

.texte li {
  margin: var(--e2) 0;
}

/* Le gras reste dans les tableaux, pas dans le texte courant */
.texte p strong,
.texte li strong {
  font-weight: inherit;
}

.rail {
  min-width: 0;
  font-family: var(--sans);
  font-size: var(--t-legende);
  line-height: 1.4;
  position: sticky;
  top: var(--e4);
}

.rail h2 {
  font-family: var(--sans);
  font-size: var(--t-surtitre);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--gris);
  margin: 0 0 var(--e2);
}

.rail__bloc {
  border-top: 2px solid var(--accent);
  padding-top: var(--e3);
  margin-bottom: var(--e5);
}

.rail__bloc p {
  margin: 0 0 var(--e2);
}

.rail__bloc ol,
.rail__bloc ul {
  margin: 0;
  padding-left: var(--e3);
}

.rail__bloc li {
  margin: 0.15rem 0;
}

.rail__bloc li a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: var(--e1) 0;
}

/* —— Figures —— */
figure {
  margin: 0 0 var(--e5);
}

figure img {
  display: block;
  width: 100%;
  height: auto;
}

figcaption {
  font-family: var(--sans);
  font-size: var(--t-legende);
  line-height: 1.4;
  color: var(--gris);
  margin-top: var(--e2);
}

/* —— Composants éditoriaux (content/REDACTION.md § 4) —— */
.cle {
  margin: var(--e4) 0;
  padding: var(--e3) 0;
  border-top: 2px solid var(--accent);
  border-bottom: 1px solid var(--filet);
}

.texte > .cle:first-child,
.texte > section:first-child > .cle:first-child {
  margin-top: 0;
}

.cle__libelle {
  font-family: var(--sans);
  font-size: var(--t-surtitre);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 var(--e1);
}

.cle__valeur {
  font-family: var(--serif);
  font-size: var(--t-chiffre);
  line-height: 1.1;
  margin: 0.15rem 0 var(--e2);
  letter-spacing: -0.02em;
  font-variation-settings: "opsz" 72;
  font-variant-numeric: tabular-nums lining-nums;
}

.cle__pied {
  font-family: var(--sans);
  font-size: var(--t-legende);
  color: var(--gris);
  margin: 0;
}

.source {
  font-family: var(--sans);
  font-size: var(--t-legende);
  color: var(--gris);
  margin: calc(-1 * var(--e3)) 0 var(--e4);
  line-height: 1.4;
}

.essentiel {
  margin: var(--e4) 0 var(--e5);
  padding: var(--e3) var(--e4);
  background: var(--surface);
  border-left: 3px solid var(--accent);
}

.essentiel__titre {
  font-family: var(--sans);
  font-size: var(--t-surtitre);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 var(--e2);
}

.texte .essentiel ul {
  margin: 0;
}

.frise {
  list-style: none;
  margin: var(--e4) 0;
  border-left: 2px solid var(--accent);
}

.texte .frise {
  padding-left: 0;
}

.frise li {
  margin: 0 0 var(--e3);
  padding-left: var(--e3);
}

.frise strong {
  font-family: var(--sans);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

/* —— Tableaux —— */
.table-env {
  margin: var(--e4) 0 var(--e5);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

table {
  border-collapse: collapse;
  width: 100%;
  font-family: var(--sans);
  font-size: var(--t-legende);
  line-height: 1.4;
  border-top: 2px solid var(--encre);
}

table caption {
  caption-side: top;
  text-align: left;
  font-weight: 600;
  padding-bottom: var(--e2);
  color: var(--encre);
}

table th,
table td {
  padding: var(--e2) var(--e3) var(--e2) 0;
  border-bottom: 1px solid var(--filet);
  text-align: left;
  vertical-align: top;
}

table thead th {
  font-weight: 600;
  color: var(--gris);
  border-bottom: 1px solid var(--encre);
}

.num {
  font-variant-numeric: tabular-nums lining-nums;
}

td.num,
th.num {
  text-align: right;
  white-space: nowrap;
  padding-right: 0;
  padding-left: var(--e3);
}

@media (min-width: 40.01em) {
  .tableau td.num + td,
  .tableau th.num + th {
    padding-left: var(--e3);
  }
}

/* —— Détails, FAQ, encadré « Méthode et limites », sources —— */
details {
  margin: 0 0 var(--e3);
  font-family: var(--sans);
  font-size: var(--t-legende);
}

summary {
  cursor: pointer;
  padding: var(--e2) 0;
  min-height: 44px;
  font-weight: 600;
  display: flex;
  align-items: center;
  color: var(--encre);
}

.faq {
  margin: var(--e4) 0 var(--e5);
}

.faq details {
  border-bottom: 1px solid var(--filet);
  margin: 0;
}

.faq details:first-of-type {
  border-top: 1px solid var(--encre);
}

.faq summary {
  font-size: var(--t-ui);
}

/* Signe d'ouverture des blocs repliables (le display: flex du summary retire le triangle natif) */
.faq summary::-webkit-details-marker,
.limites > summary::-webkit-details-marker,
.repli > summary::-webkit-details-marker,
.non-classees > summary::-webkit-details-marker {
  display: none;
}

.faq summary::after,
.limites > summary::after,
.repli > summary::after,
.non-classees > summary::after {
  content: "+";
  margin-left: auto;
  padding-left: var(--e3);
  font-weight: 400;
  font-size: var(--t-inter);
  line-height: 1;
  color: var(--gris);
}

.faq details[open] > summary::after,
.limites[open] > summary::after,
.repli[open] > summary::after,
.non-classees[open] > summary::after {
  content: "−";
}

.faq details > *:not(summary) {
  font-family: var(--serif);
  font-size: var(--t-texte);
  margin: 0 0 var(--e3);
}

.limites {
  margin: var(--e5) 0 var(--e4);
  padding: 0 var(--e3);
  background: var(--surface);
  color: var(--gris);
}

.limites > summary {
  color: var(--encre);
}

.limites ul {
  margin: 0 0 var(--e3);
  padding-left: var(--e3);
  line-height: 1.4;
}

.limites li {
  margin: 0 0 var(--e2);
  overflow-wrap: break-word;
}

.limites p {
  margin: 0 0 var(--e3);
}

.sources {
  font-family: var(--sans);
  font-size: var(--t-legende);
  line-height: 1.45;
}

.texte .sources {
  padding-left: var(--e4);
}

.sources li {
  margin: 0 0 var(--e2);
  overflow-wrap: anywhere;
}

/* Appels de note discrets : le sourçage reste, la lecture n'est pas hachée */
a.appel-note {
  font-family: var(--sans);
  font-size: 0.7em;
  vertical-align: super;
  line-height: 0;
  text-decoration: none;
  color: var(--accent);
  padding: 0 0.1em;
}

/* Source ou section atteinte par un lien : repère visuel */
li:target,
h2:target {
  background: var(--surface-cible);
  box-shadow: -0.5rem 0 0 var(--surface-cible), 0.5rem 0 0 var(--surface-cible);
}

/* —— Formulaires (HTML natif) —— */
.formulaire {
  font-family: var(--sans);
  max-width: 30rem;
  margin: var(--e4) 0 var(--e5);
}

label {
  display: block;
  font-family: var(--sans);
  font-size: var(--t-legende);
  font-weight: 500;
  margin: 0 0 var(--e1);
}

.formulaire .champ {
  margin: 0 0 var(--e3);
}

input[type="text"],
input[type="email"],
input[type="tel"],
input[type="number"],
input[type="search"],
select,
textarea {
  display: block;
  width: 100%;
  min-height: 44px;
  padding: var(--e2);
  font-family: var(--sans);
  font-size: var(--t-ui);
  line-height: 1.4;
  color: var(--encre);
  background: var(--champ);
  border: 1px solid var(--gris);
  border-radius: var(--rayon);
  appearance: none;
}

textarea {
  min-height: 8rem;
  resize: vertical;
}

button,
.bouton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: var(--e2) var(--e4);
  font-family: var(--sans);
  font-size: var(--t-legende);
  font-weight: 600;
  color: var(--papier);
  background: var(--encre);
  border: 1px solid var(--encre);
  border-radius: var(--rayon);
  text-decoration: none;
  cursor: pointer;
}

button:hover,
.bouton:hover {
  color: var(--papier);
  background: var(--accent);
  border-color: var(--accent);
}

.form-2col {
  display: grid;
  gap: 0 var(--e4);
}

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

.form-success,
.form-error {
  display: none;
  margin: var(--e3) 0;
  font-family: var(--sans);
  font-weight: 600;
}

#envoye:target,
#envoi-erreur:target {
  display: block;
}

/* Formulaire de fin de page (tools/formulaire.py) */
.question {
  margin-top: var(--e6);
  padding: var(--e4);
  background: var(--surface);
  border-top: 2px solid var(--encre);
}

.texte .question h2 {
  font-size: var(--t-inter);
  margin: 0 0 var(--e2);
}

.question .formulaire {
  margin-bottom: 0;
}

/* Champ piège pour les robots : hors écran, jamais lu par les lecteurs d'écran (aria-hidden) */
.champ-piege {
  position: absolute;
  left: -10000px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.form-legal,
.note {
  font-family: var(--sans);
  font-size: var(--t-legende);
  line-height: 1.4;
  color: var(--gris);
}

@media (min-width: 40em) {
  .form-2col {
    grid-template-columns: 1fr 1fr;
  }
}

/* —— Accueil : rubriques, une, chiffres, dernières pages —— */
.grille-liens {
  list-style: none;
  margin: var(--e4) 0 var(--e5);
  padding: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  border-top: 1px solid var(--encre);
}

.texte .grille-liens {
  padding-left: 0;
}

.grille-liens > li {
  margin: 0;
  padding: var(--e3) 0;
  border-bottom: 1px solid var(--filet);
  min-width: 0;
}

.grille-liens a {
  font-family: var(--serif);
  font-size: var(--t-inter);
  font-weight: 600;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}

.grille-liens a:hover {
  text-decoration: underline;
  text-decoration-color: var(--accent);
}

.grille-liens p {
  font-family: var(--sans);
  font-size: var(--t-legende);
  color: var(--gris);
  margin: 0;
}

@media (min-width: 40em) {
  .grille-liens {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: var(--e5);
  }
}

/* Accueil et pages sans rail : une colonne, le texte courant garde sa mesure */
.corps--plein {
  grid-template-columns: minmax(0, 1fr);
}

.corps--plein .texte > :not(section, .table-env),
.corps--plein .texte > section > :not(.table-env, .filtres, .non-classees, .grille-liens, .une-actu__grille, .segments) {
  max-width: var(--mesure);
}

.texte .dernieres__date {
  font-family: var(--sans);
  font-size: var(--t-legende);
  color: var(--gris);
  margin: 0;
}

.dernieres .grille-liens {
  margin-top: var(--e2);
}

/* —— Sommaire mobile (le plan du rail, en tête d’article) —— */
.sommaire {
  display: none;
}

.sommaire > summary::-webkit-details-marker {
  display: none;
}

.sommaire > summary {
  list-style: none;
  border-top: 1px solid var(--filet);
}

.sommaire > summary::after {
  content: "▾";
  margin-left: auto;
  color: var(--gris);
}

.sommaire[open] > summary::after {
  transform: rotate(180deg);
}

.sommaire ol {
  margin: 0;
  padding: 0 0 var(--e3) var(--e4);
}

.sommaire li a {
  display: flex;
  align-items: center;
  min-height: 44px;
  padding: var(--e1) 0;
  line-height: 1.4;
  text-decoration: none;
}

/* —— Pied —— */
.pied {
  border-top: 1px solid var(--encre);
  margin-top: var(--e7);
  padding: var(--e4) 0 var(--e6);
  font-family: var(--sans);
  font-size: var(--t-legende);
  color: var(--gris);
}

.pied .nav {
  border-top: 0;
}

.pied .nav a {
  color: var(--encre);
}

.pied p {
  margin: var(--e2) 0 0;
}

/* Lien de gestion des cookies (seulement si une mesure d'audience existe) : un lien, pas un bouton */
.lien-cookies {
  font: inherit;
  color: inherit;
  background: none;
  border: 0;
  padding: 0;
  min-height: 44px;
  text-decoration: underline;
  text-decoration-color: var(--lien-soulign);
  cursor: pointer;
}

/* —— Bureau : manchette d'une ligne sur les pages intérieures —— */
@media (min-width: 40.01em) {
  body:not(:has(.tete--accueil)) .manchette {
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    padding-top: var(--e2);
  }

  body:not(:has(.tete--accueil)) .marque {
    font-size: 1.375rem;
  }

  body:not(:has(.tete--accueil)) .manchette__ligne {
    display: none;
  }

  body:not(:has(.tete--accueil)) .manchette > .nav {
    grid-column: 2;
    grid-row: 1;
    border-top: 0;
    justify-content: flex-end;
  }
}

/* —— Tablette et moins : le rail passe sous l'article, son plan remonte en tête —— */
@media (max-width: 62em) {
  .corps {
    grid-template-columns: minmax(0, 1fr);
  }

  .rail {
    position: static;
  }

  .rail__bloc--plan {
    display: none;
  }

  .sommaire {
    display: block;
    margin: var(--e3) 0 0;
  }

  .tete {
    margin-bottom: var(--e4);
  }
}

/* —— Mobile (≤ 40em) —— */
@media (max-width: 40em) {
  html {
    scroll-padding-top: 6.5rem;
  }

  .page {
    padding: 0 16px;
  }

  /* En-tête compact et collant : marque + menu, rubriques défilantes dessous */
  .manchette {
    position: sticky;
    top: 0;
    z-index: 20;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    margin: 0 -16px;
    padding: 0 16px;
    background: var(--papier);
  }

  .marque {
    min-width: 0;
    font-size: 1.25rem;
    white-space: nowrap;
    padding: var(--e3) 0;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .manchette__ligne {
    display: none;
  }

  .menu {
    display: block;
    grid-column: 2;
    grid-row: 1;
  }

  .menu .nav {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    max-height: calc(100dvh - 4rem);
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 0 16px var(--e2);
    background: var(--papier);
    border-bottom: 1px solid var(--encre);
    box-shadow: 0 12px 24px rgba(20, 33, 61, 0.12);
  }

  .menu .nav a {
    font-size: var(--t-ui);
  }

  .menu .nav a:last-child {
    border-bottom: 0;
  }

  .manchette > .nav {
    grid-row: 2;
    flex-wrap: nowrap;
    gap: 0 var(--e3);
    overflow-x: auto;
    scrollbar-width: none;
    margin: 0 -16px;
    padding: 0 16px;
  }

  .manchette > .nav::-webkit-scrollbar {
    display: none;
  }

  .manchette > .nav a {
    white-space: nowrap;
    padding: 0;
  }

  .ariane {
    margin-top: var(--e2);
  }

  .chapo {
    font-size: var(--t-texte);
  }

  .texte h2 {
    margin-top: var(--e5);
  }

  .corps {
    padding-top: var(--e4);
  }

  /* Appels de note : zone tactile élargie sans décaler le texte */
  a[href^="#source-"] {
    padding: 0.45em 0;
  }

  .formulaire {
    max-width: none;
  }

  .formulaire button,
  .formulaire .bouton {
    width: 100%;
  }

  /* Tableaux empilés : une ligne = une fiche, chaque valeur précédée de son intitulé
     (data-label posé par tools/tableaux.py) */
  .table-env {
    overflow-x: visible;
  }

  .table-env table,
  .table-env tbody,
  .table-env tr,
  .table-env td {
    display: block;
    width: 100%;
  }

  .table-env caption {
    display: block;
    font-size: var(--t-ui);
  }

  .table-env thead {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }

  .table-env tbody tr {
    padding: var(--e3) 0;
    border-bottom: 1px solid var(--filet);
  }

  .table-env td,
  .table-env td.num {
    padding: var(--e1) 0;
    border: 0;
    text-align: left;
    white-space: normal;
    overflow-wrap: anywhere;
  }

  .table-env td::before {
    content: attr(data-label);
    display: block;
    font-size: var(--t-legende);
    line-height: 1.4;
    color: var(--gris);
  }

  .table-env td:first-child {
    padding: 0 0 var(--e1);
    font-size: var(--t-ui);
    font-weight: 600;
  }

  .table-env td:first-child::before,
  .table-env td:not([data-label])::before {
    content: none;
  }

  .table-env td:empty {
    display: none;
  }

  .pied .nav {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0 var(--e3);
  }
}

/* —— Lot 2 : annuaire, fiches, classement, actualités (24/10/2026) —— */

/* Filtres en amélioration progressive (public/assets/filtres.js) : place réservée jusqu'au script */
.filtres {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: var(--e3);
  margin: 0 0 var(--e2);
  padding: 0 0 var(--e3);
  border-bottom: 1px solid var(--filet);
  font-family: var(--sans);
  font-size: var(--t-legende);
}

.filtres--attente {
  visibility: hidden;
}

.filtres label {
  display: flex;
  flex-direction: column;
  gap: var(--e1);
  flex: 1 1 7.5rem;
  min-width: 0;
  margin: 0;
  font-weight: 600;
}

.filtres select,
.filtres input {
  font: inherit;
  font-weight: 400;
  min-height: 44px;
  max-width: 100%;
  margin: 0;
}

.filtres__compte {
  flex: 1 0 100%;
  margin: 0;
  color: var(--gris);
  font-variant-numeric: tabular-nums;
}

.texte > section:first-child > .filtres:first-child {
  margin-top: 0;
}

/* Éléments écartés par un filtre : masqués même dans les tableaux empilés du mobile */
.table-env tr[hidden],
.breve[hidden],
[data-groupe-filtre][hidden] {
  display: none !important;
}

/* Données d'une fiche (statut, éditeur, offre) : intitulé à gauche, valeur à droite */
.donnees {
  display: grid;
  grid-template-columns: 13rem minmax(0, 1fr);
  gap: var(--e2) var(--e4);
  margin: 0 0 var(--e4);
  padding: var(--e3) 0;
  border-top: 1px solid var(--encre);
  border-bottom: 1px solid var(--filet);
  font-family: var(--sans);
  font-size: var(--t-legende);
  line-height: 1.45;
}

.donnees dt {
  color: var(--gris);
}

.donnees dd {
  margin: 0;
  min-width: 0;
  overflow-wrap: anywhere;
  font-variant-numeric: tabular-nums;
}

.note {
  margin: 0 0 var(--e3);
}

/* Liens isolés (autres plateformes ; données d'une fiche sur mobile) : zone tactile de 44 px */
.liste-liens a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}

.texte .liste-liens {
  list-style: none;
  padding-left: 0;
}

.liste-liens li {
  margin: 0;
}

/* Liste compacte de liens (plateformes non classées) : deux colonnes dès la tablette */
.liste-plateformes {
  list-style: none;
  margin: 0 0 var(--e4);
  font-family: var(--sans);
  font-size: var(--t-legende);
  columns: 4 12rem;
  column-gap: var(--e4);
}

.texte .liste-plateformes {
  padding-left: 0;
}

.liste-plateformes li {
  margin: 0;
  break-inside: avoid;
}

.liste-plateformes a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}

/* Brèves : fil, fiches, page article */
.breve {
  padding: var(--e3) 0;
  border-top: 1px solid var(--filet);
}

.breve__meta,
.texte .breve__fait,
.texte .breve__liens {
  font-family: var(--sans);
  font-size: var(--t-legende);
  line-height: 1.4;
  color: var(--gris);
  margin: 0 0 var(--e1);
}

.breve__meta time,
.breve__fait time {
  color: var(--encre);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.breve__type {
  color: var(--accent);
  font-weight: 600;
}

.texte .breve__titre {
  font-family: var(--serif);
  font-size: var(--t-inter);
  font-weight: 600;
  line-height: 1.25;
  margin: 0 0 var(--e2);
}

.texte .breve__titre a {
  text-decoration: none;
}

.texte .breve__resume {
  margin: 0 0 var(--e2);
}

.texte .breve__liens {
  margin: 0;
  overflow-wrap: anywhere;
}

.fil__mois > h2 {
  margin-bottom: 0;
  padding-bottom: var(--e2);
  border-bottom: 2px solid var(--encre);
}

.nouvelles,
.meme-sujet {
  margin: var(--e5) 0 var(--e3);
}

.nouvelles__suite,
.une-actu__suite {
  font-family: var(--sans);
  font-size: var(--t-legende);
  font-weight: 600;
  margin: var(--e3) 0 0;
}

.nouvelles__suite a,
.une-actu__suite a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  color: var(--accent);
}

.rail__breves time {
  display: block;
  color: var(--gris);
  font-variant-numeric: tabular-nums;
}

.rail__bloc .rail__breves {
  list-style: none;
  padding-left: 0;
}

.rail__breves li a {
  flex-direction: column;
  align-items: flex-start;
}

/* Accueil : chiffres du registre et dernières brèves */
.chiffres {
  margin: 0 0 var(--e5);
  padding: var(--e3) 0 0;
  border-top: 1px solid var(--encre);
}

.chiffres h2,
.une-actu h2 {
  font-family: var(--sans);
  font-size: var(--t-surtitre);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 var(--e3);
}

.chiffres__liste {
  list-style: none;
  margin: 0 0 var(--e3);
  padding: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--e3) var(--e4);
  font-family: var(--sans);
  font-size: var(--t-legende);
  line-height: 1.35;
  color: var(--gris);
}

.chiffres__liste strong {
  display: block;
  font-family: var(--serif);
  font-size: var(--t-h1);
  font-weight: 600;
  line-height: 1.1;
  color: var(--encre);
  font-variant-numeric: lining-nums tabular-nums;
}

.chiffres__pied {
  margin: 0;
  font-family: var(--sans);
  font-size: var(--t-legende);
  color: var(--gris);
}

.chiffres__pied a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  color: var(--encre);
}

.une-actu {
  margin: 0 0 var(--e5);
}

.une-actu__liste {
  list-style: none;
  margin: 0;
  padding: 0;
  border-top: 1px solid var(--encre);
}

.une-actu__liste li {
  border-bottom: 1px solid var(--filet);
}

.une-actu__liste a {
  display: flex;
  flex-direction: column;
  gap: var(--e1);
  min-height: 44px;
  padding: var(--e2) 0;
  text-decoration: none;
  font-family: var(--serif);
  font-size: var(--t-inter);
  line-height: 1.3;
}

.une-actu__liste time {
  font-family: var(--sans);
  font-size: var(--t-legende);
  color: var(--gris);
}

@media (min-width: 40.01em) {
  .chiffres__liste {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .annuaire td:nth-child(3),
  .annuaire td:last-child {
    white-space: nowrap;
  }
}

@media (max-width: 40em) {
  .donnees {
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
  }

  .donnees dd {
    margin-bottom: var(--e2);
  }

  .donnees dd a:not(.appel-note) {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }

  /* Tableaux empilés : le lien d'une ligne (nom de la plateforme) garde une zone tactile de 44 px */
  .table-env td a {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }

}

/* —— Passe de direction artistique du 25/10/2026 : une, pages de données, verdict, mobile compact —— */

/* Accueil : la une (enjeu, date, recherche) à gauche, les repères à droite dès 62em */
.une__texte,
.une__cote {
  min-width: 0;
}

.une__recherche {
  margin: var(--e4) 0 0;
  max-width: 34rem;
  font-family: var(--sans);
}

.une__recherche label {
  font-weight: 600;
  margin: 0 0 var(--e2);
}

.une__champ {
  display: flex;
  gap: var(--e2);
}

.une__champ input {
  flex: 1 1 auto;
  min-width: 0;
}

.une__champ button {
  flex: none;
}

.une__cote {
  margin-top: var(--e5);
}

.une__cote .cle {
  margin-top: 0;
}

.une__cote .cle__valeur {
  font-size: 3rem;
}

/* Liens dans une phrase de légende : zone tactile de 44 px par le remplissage, sans écarter les lignes */
.une__cote .cle__pied a,
.une__pied a {
  padding: 0.95em 0;
  color: var(--encre);
  font-weight: 600;
}

.une__titre,
.corps--accueil .texte > section > h2 {
  font-family: var(--sans);
  font-size: var(--t-surtitre);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 var(--e2);
}

.une__classement {
  margin-top: var(--e4);
}

.une__top {
  list-style: none;
  margin: 0;
  padding: 0;
  font-family: var(--sans);
  font-size: var(--t-ui);
  border-top: 1px solid var(--encre);
  counter-reset: rang;
}

.une__top li {
  display: flex;
  align-items: center;
  gap: var(--e3);
  border-bottom: 1px solid var(--filet);
  counter-increment: rang;
}

.une__top li::before {
  content: counter(rang);
  flex: none;
  width: 1.25rem;
  color: var(--gris);
  font-size: var(--t-legende);
  font-variant-numeric: tabular-nums;
}

.une__top a {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  min-height: 44px;
  text-decoration: none;
  font-weight: 500;
}

.une__top a:hover {
  text-decoration: underline;
}

.une__score {
  font: 600 var(--t-inter) / 1 var(--serif);
  font-variant-numeric: tabular-nums lining-nums;
}

.une__pied {
  font-family: var(--sans);
  font-size: var(--t-legende);
  color: var(--gris);
  margin: var(--e2) 0 0;
}

/* À la une : la dernière brève en tête, les suivantes à côté (en dessous sur mobile) */
.une-actu__grille {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 0 var(--e6);
  border-top: 1px solid var(--encre);
}

.une-actu__tete {
  padding: var(--e3) 0 var(--e4);
}

.texte .une-actu__titre {
  font-family: var(--serif);
  font-size: var(--t-h2);
  font-weight: 600;
  line-height: 1.2;
  margin: var(--e2) 0 var(--e3);
  font-variation-settings: "opsz" 48;
}

.une-actu__titre a {
  text-decoration: none;
}

.une-actu__titre a:hover {
  text-decoration: underline;
}

.texte .une-actu__resume {
  color: var(--chapo);
  margin: 0;
}

.texte .une-actu__grille .une-actu__liste {
  padding-left: 0;
  border-top: 1px solid var(--filet);
}

/* Fiche : bandeau verdict sous le chapô */
.verdict {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--e3) var(--e4);
  margin: var(--e4) 0;
  padding: var(--e3) 0;
  border-top: 2px solid var(--accent);
  border-bottom: 1px solid var(--filet);
  font-family: var(--sans);
}

.verdict > div {
  min-width: 0;
}

.verdict dt {
  font-size: var(--t-surtitre);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--gris);
}

.verdict dd {
  margin: var(--e1) 0 0;
  font: 600 var(--t-inter) / 1.2 var(--serif);
  font-variant-numeric: tabular-nums lining-nums;
}

.verdict dd > a:not(.appel-note) {
  text-decoration-color: var(--accent);
}

.verdict + .dates {
  border-top: 0;
  padding-top: 0;
}

/* Liens du verdict et de la signature : zone tactile de 44 px par le remplissage, sans décaler le texte */
.verdict dd > a {
  padding: 0.6em 0;
}

.dates a,
.verdict__note a {
  padding: 0.95em 0;
}

.verdict__note {
  display: block;
  margin-top: var(--e1);
  font: 400 var(--t-legende) / 1.35 var(--sans);
  color: var(--gris);
}

/* Fiche : éditeur replié, voisines par cible avec leur score */
.repli {
  margin: 0 0 var(--e4);
  border-top: 1px solid var(--encre);
}

.repli > summary {
  font-size: var(--t-ui);
}

.repli .donnees {
  border-top: 1px solid var(--filet);
}

.liste-scores {
  list-style: none;
  margin: 0 0 var(--e3);
  font-family: var(--sans);
  font-size: var(--t-ui);
  border-top: 1px solid var(--encre);
}

.texte .liste-scores {
  padding-left: 0;
}

.liste-scores li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--e3);
  margin: 0;
  border-bottom: 1px solid var(--filet);
}

.liste-scores a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  font-weight: 500;
}

.liste-scores .num {
  color: var(--gris);
}

/* Pages de données : tableaux pleine largeur */
.tableau caption .legende {
  display: block;
  font-weight: 400;
  color: var(--gris);
  font-size: var(--t-legende);
}

/* P2-8 : une colonne de noms se lit sans soulignement (le gras signale le lien) */
.tableau td:first-child a,
.tableau--rang td:nth-child(2) a {
  text-decoration: none;
  font-weight: 500;
}

.tableau td:first-child a:hover,
.tableau--rang td:nth-child(2) a:hover {
  text-decoration: underline;
}

/* Classement : le score total se distingue des sous-scores */
.tableau--rang td:nth-child(3) {
  font-family: var(--serif);
  font-size: var(--t-inter);
  font-weight: 600;
  line-height: 1.1;
}

.tableau--general td:nth-child(n + 4) {
  color: var(--gris);
}

/* Classements par usage : colonnes alignées d'un tableau à l'autre */
.tableau--compact {
  table-layout: fixed;
}

.tableau--compact th:first-child {
  width: 4rem;
}

.tableau--compact th:last-child {
  width: 7rem;
}

.tableau--compact td {
  vertical-align: middle;
}

.segments__bloc {
  min-width: 0;
}

/* Calendrier : une ligne de groupe par date */
.tableau tr.groupe th {
  padding: var(--e4) 0 var(--e2);
  font-family: var(--serif);
  font-size: var(--t-inter);
  font-weight: 600;
  color: var(--encre);
  border-bottom: 1px solid var(--encre);
}

.non-classees {
  margin: 0 0 var(--e4);
  border-top: 1px solid var(--filet);
}

.non-classees > summary {
  font-size: var(--t-ui);
}

.source a[href$=".csv"] {
  font-weight: 600;
}

@media (min-width: 40.01em) {
  .tableau--general th:nth-child(4),
  .tableau--general td:nth-child(4) {
    border-left: 1px solid var(--filet);
  }

  /* L'offre relevée se repère dans l'annuaire */
  .annuaire tr[data-offre="oui"] td:last-child {
    color: var(--accent);
    font-weight: 500;
  }

  /* P2-7 : tableaux et données en 15 px (la méta et les sources restent en 14 px) */
  table,
  .donnees {
    font-size: 0.9375rem;
  }

  .verdict__note {
    font-size: var(--t-legende);
  }
}

@media (min-width: 62em) {
  .tete--accueil.une {
    max-width: none;
    display: grid;
    grid-template-columns: minmax(0, 7fr) minmax(0, 4fr);
    gap: 0 var(--e7);
    align-items: start;
  }

  .tete--accueil h1 {
    font-size: 3.25rem;
    line-height: 1.08;
  }

  .une__cote {
    margin-top: 0;
  }

  .une-actu__grille {
    grid-template-columns: minmax(0, 7fr) minmax(0, 4fr);
  }

  .texte .une-actu__grille .une-actu__liste {
    border-top: 0;
  }

  .corps--accueil .grille-liens {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  /* Classements par usage : deux tableaux de trois colonnes par ligne plutôt qu'un sur 1 088 px */
  .segments {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0 var(--e6);
  }

  /* Pages de données sans rail : le plan reste disponible en tête, replié */
  body:has(.corps--plein) .tete .sommaire {
    display: block;
    max-width: 24rem;
    margin: var(--e3) 0 0;
  }
}

@media (max-width: 40em) {
  /* P2-1 : en-tête collant de 57 px sur les pages intérieures (les rubriques restent dans « Menu ») */
  html {
    scroll-padding-top: 4.5rem;
  }

  html:has(.tete--accueil) {
    scroll-padding-top: 6.5rem;
  }

  body:not(:has(.tete--accueil)) .manchette > .nav {
    display: none;
  }

  .manchette > .nav {
    -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 2rem), transparent);
    mask-image: linear-gradient(90deg, #000 calc(100% - 2rem), transparent);
  }

  .une__cote .cle__valeur {
    font-size: var(--t-chiffre);
  }

  .verdict {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .question {
    margin-left: -16px;
    margin-right: -16px;
    padding: var(--e4) 16px;
  }

  /* Annuaire : deux lignes par plateforme (nom, puis statut · date · commune · offre relevée) */
  .table-env .annuaire tbody tr {
    padding: var(--e2) 0;
  }

  .table-env .annuaire td {
    display: inline;
    width: auto;
    padding: 0;
    font-size: var(--t-legende);
    line-height: 1.45;
    color: var(--gris);
  }

  .table-env .annuaire td::before {
    content: none;
  }

  .table-env .annuaire td:first-child {
    display: block;
    color: var(--encre);
    font-size: var(--t-ui);
  }

  .table-env .annuaire td:nth-child(n + 3)::before {
    content: "\00a0·\00a0";
    display: inline;
    font-size: inherit;
  }

  .table-env .annuaire td:last-child {
    display: none;
  }

  .table-env .annuaire tr[data-offre="oui"] td:last-child {
    display: inline;
    color: var(--accent);
  }

  .table-env .annuaire td:nth-child(3),
  .table-env .annuaire td:last-child {
    white-space: nowrap;
  }

  /* Classement général : rang, nom et score sur une ligne, cinq sous-scores en mini-grille dessous */
  .table-env .tableau--general tbody tr {
    display: grid;
    grid-template-columns: 2rem repeat(5, minmax(0, 1fr));
    gap: var(--e1) var(--e2);
    align-items: baseline;
  }

  .table-env .tableau--general td,
  .table-env .tableau--general td.num {
    padding: 0;
  }

  .table-env .tableau--general td:nth-child(1) {
    grid-area: 1 / 1;
    align-self: center;
    font-size: var(--t-ui);
  }

  .table-env .tableau--general td:nth-child(1)::after {
    content: ".";
  }

  .table-env .tableau--general td:nth-child(2) {
    grid-area: 1 / 2 / 2 / 6;
    align-self: center;
  }

  .table-env .tableau--general td:nth-child(2)::before,
  .table-env .tableau--general td:nth-child(3)::before {
    content: none;
  }

  .table-env .tableau--general td:nth-child(3) {
    grid-area: 1 / 6;
    align-self: center;
    text-align: right;
    font: 600 var(--t-h2) / 1 var(--serif);
  }

  .table-env .tableau--general td:nth-child(n + 4) {
    grid-row: 2;
    font-size: var(--t-legende);
    font-variant-numeric: tabular-nums;
  }

  .table-env .tableau--general td:nth-child(n + 4)::before {
    font-size: var(--t-surtitre);
    letter-spacing: 0.02em;
  }

  .table-env .tableau--general td:nth-child(4) {
    grid-column: 2;
  }

  .table-env .tableau--general td:nth-child(5) {
    grid-column: 3;
  }

  .table-env .tableau--general td:nth-child(6) {
    grid-column: 4;
  }

  .table-env .tableau--general td:nth-child(7) {
    grid-column: 5;
  }

  .table-env .tableau--general td:nth-child(8) {
    grid-column: 6;
  }

  /* Classements par usage (3 colonnes) : on garde un vrai tableau, une ligne de 44 px par plateforme */
  .table-env table.tableau--compact {
    display: table;
    width: 100%;
  }

  .table-env .tableau--compact thead {
    position: static;
    display: table-header-group;
    width: auto;
    height: auto;
    overflow: visible;
    clip: auto;
    white-space: normal;
  }

  .table-env .tableau--compact tbody {
    display: table-row-group;
  }

  .table-env .tableau--compact tr,
  .table-env .tableau--compact tbody tr {
    display: table-row;
    padding: 0;
  }

  .table-env .tableau--compact td:nth-child(n) {
    display: table-cell;
    width: auto;
    padding: 0 var(--e2) 0 0;
    border-bottom: 1px solid var(--filet);
    font-size: var(--t-legende);
    font-weight: 400;
    text-align: left;
  }

  .table-env .tableau--compact td.num:nth-child(n) {
    text-align: right;
    padding: 0 0 0 var(--e2);
  }

  .table-env .tableau--compact td:nth-child(3) {
    font-size: var(--t-inter);
    font-weight: 600;
  }

  .table-env .tableau--compact td:nth-child(2),
  .table-env .tableau--compact th:nth-child(2) {
    padding-left: var(--e3);
  }

  .table-env .tableau--compact th:first-child {
    width: 3rem;
  }

  .table-env .tableau--compact td::before,
  .table-env .tableau--compact td::after {
    content: none;
  }

  /* Calendrier : la date en ligne de groupe, intitulés en ligne devant chaque valeur */
  .table-env .tableau--groupe tr.groupe {
    padding: var(--e4) 0 var(--e1);
    border-bottom: 1px solid var(--encre);
  }

  .table-env .tableau--groupe tr.groupe th {
    display: block;
    padding: 0;
    border: 0;
  }

  .table-env .tableau--groupe td::before {
    display: inline;
    content: attr(data-label) "\00a0:\00a0";
  }

  .table-env .tableau--groupe td:first-child::before {
    content: none;
  }
}

/* —— Impression : l'article, ses sources et l'adresse des liens externes —— */
@media print {
  :root {
    --papier: #fff;
    --encre: #000;
    --gris: #333;
    --accent: #000;
  }

  body {
    font-size: 11pt;
    border-top: 0;
  }

  .manchette .nav,
  .menu,
  .rail,
  .sommaire,
  .pied .nav,
  .lien-cookies,
  .formulaire,
  .question,
  .filtres,
  .une__recherche {
    display: none !important;
  }

  .corps {
    display: block;
    border-top: 0;
  }

  a {
    text-decoration: none;
  }

  .sources a[href^="http"]::after {
    content: " (" attr(href) ")";
    font-size: 0.8em;
    overflow-wrap: anywhere;
  }

  h2,
  h3 {
    break-after: avoid;
  }

  figure,
  .tableau tr {
    break-inside: avoid;
  }
}
