/*! Socle Données 1.0.0 — design system des études de Charles Peloye
 *  Polices : https://fonts.googleapis.com/css2?family=Archivo:wdth,wght@62..125,100..900&family=Atkinson+Hyperlegible+Mono:wght@400..700&family=Atkinson+Hyperlegible+Next:ital,wght@0,400..800;1,400..700&display=swap
 *  Archivo (SIL OFL), Atkinson Hyperlegible Next et Mono (SIL OFL, Braille Institute). */
/* Variables générées depuis tokens/tokens.json — ne pas éditer à la main. */
:root {
  --dn-font-display: "Archivo", "Arial Narrow", system-ui, sans-serif;
  --dn-font-texte: "Atkinson Hyperlegible Next", system-ui, -apple-system, "Segoe UI", sans-serif;
  --dn-font-mono: "Atkinson Hyperlegible Mono", ui-monospace, "SF Mono", Menlo, monospace;
  --dn-type-display-xl-size: clamp(2.75rem, 1.4rem + 5.2vw, 6rem);
  --dn-type-display-l-size: clamp(2.25rem, 1.4rem + 3.4vw, 4rem);
  --dn-type-titre-1-size: clamp(1.75rem, 1.3rem + 1.8vw, 2.625rem);
  --dn-type-titre-2-size: 1.375rem;
  --dn-type-titre-3-size: 1.125rem;
  --dn-type-chapo-size: clamp(1.1875rem, 1.05rem + 0.5vw, 1.375rem);
  --dn-type-lecture-size: 1.125rem;
  --dn-type-interface-size: 1rem;
  --dn-type-petit-size: 0.875rem;
  --dn-type-etiquette-size: 0.8125rem;
  --dn-type-axe-size: 0.75rem;
  --dn-type-surtitre-size: 0.75rem;
  --dn-type-meta-size: 0.8125rem;
  --dn-type-chiffre-xl-size: clamp(3rem, 2rem + 4.5vw, 5.75rem);
  --dn-type-chiffre-size: 2.25rem;
  --dn-space-0: 0;
  --dn-space-1: 4px;
  --dn-space-2: 8px;
  --dn-space-3: 12px;
  --dn-space-4: 16px;
  --dn-space-5: 20px;
  --dn-space-6: 24px;
  --dn-space-8: 32px;
  --dn-space-10: 40px;
  --dn-space-12: 48px;
  --dn-space-16: 64px;
  --dn-space-20: 80px;
  --dn-space-24: 96px;
  --dn-space-32: 128px;
  --dn-space-px: 1px;
  --dn-space-0-5: 2px;
  --dn-radius-data: 4px;
  --dn-radius-xs: 6px;
  --dn-radius-sm: 10px;
  --dn-radius-md: 14px;
  --dn-radius-lg: 20px;
  --dn-radius-xl: 28px;
  --dn-radius-full: 999px;
  --dn-motion-rapide: 120ms;
  --dn-motion-normal: 200ms;
  --dn-motion-lent: 360ms;
  --dn-motion-courbe: cubic-bezier(.2,.7,.2,1);
  --dn-largeur-page: 1280px;
  --dn-largeur-large: 1040px;
  --dn-largeur-texte: 680px;
  --dn-gouttiere: 24px;
  --dn-gouttiere-mobile: 16px;
  --dn-cible-min: 44px;
  --dn-cible-donnee: 24px;
  --dn-donnee-trait: 2px;
  --dn-donnee-barre-max: 24px;
  --dn-donnee-marqueur-min: 8px;
  --dn-donnee-espace-surface: 2px;
  --dn-donnee-anneau-surface: 2px;
  --dn-donnee-aire-opacite: 0.12;
  --dn-donnee-texte-min: 12px;
  --dn-bg-page: #F3F5F8;
  --dn-bg-surface: #FFFFFF;
  --dn-bg-sunken: #E8EBF1;
  --dn-bg-raised: #FFFFFF;
  --dn-bg-inverse: #0C121A;
  --dn-text-primary: #0C121A;
  --dn-text-secondary: #3F4A58;
  --dn-text-muted: #576170;
  --dn-text-inverse: #FFFFFF;
  --dn-text-on-action: #FFFFFF;
  --dn-border-faint: #DFE3EA;
  --dn-border-subtle: #D2D8E0;
  --dn-border-control: #6F7A88;
  --dn-border-strong: #29323F;
  --dn-action: #002DE1;
  --dn-action-hover: #0024B4;
  --dn-action-subtle: #E7EFFE;
  --dn-focus: #002DE1;
  --dn-data-grid: #DFE3EA;
  --dn-data-axis: #6F7A88;
  --dn-data-context: #7C8692;
  --dn-data-nodata: #E8EBF1;
  --dn-data-nodata-hatch: #B3BBC6;
  --dn-data-highlight: #0C121A;
  --dn-data-land: #E8EBF1;
  --dn-data-land-stroke: #FFFFFF;
  --dn-data-water: #F9FAFC;
  --dn-cat-1: #3E69E9;
  --dn-cat-1-sur: #FFFFFF;
  --dn-cat-2: #D86A06;
  --dn-cat-2-sur: #05080E;
  --dn-cat-3: #069666;
  --dn-cat-3-sur: #05080E;
  --dn-cat-4: #EB4B9F;
  --dn-cat-4-sur: #05080E;
  --dn-cat-5: #B08506;
  --dn-cat-5-sur: #05080E;
  --dn-cat-6: #7637C8;
  --dn-cat-6-sur: #FFFFFF;
  --dn-cat-7: #C51D24;
  --dn-cat-7-sur: #FFFFFF;
  --dn-cat-8: #079AAF;
  --dn-cat-8-sur: #05080E;
  --dn-seq-bleu-1: #E9F1FF;
  --dn-seq-bleu-1-sur: #05080E;
  --dn-seq-bleu-2: #C2D7FE;
  --dn-seq-bleu-2-sur: #05080E;
  --dn-seq-bleu-3: #9ABEFE;
  --dn-seq-bleu-3-sur: #05080E;
  --dn-seq-bleu-4: #72A3FE;
  --dn-seq-bleu-4-sur: #05080E;
  --dn-seq-bleu-5: #4C87F9;
  --dn-seq-bleu-5-sur: #05080E;
  --dn-seq-bleu-6: #3A70D9;
  --dn-seq-bleu-6-sur: #FFFFFF;
  --dn-seq-bleu-7: #2C5AB3;
  --dn-seq-bleu-7-sur: #FFFFFF;
  --dn-seq-bleu-8: #23468A;
  --dn-seq-bleu-8-sur: #FFFFFF;
  --dn-seq-bleu-9: #1D345F;
  --dn-seq-bleu-9-sur: #FFFFFF;
  --dn-seq-emeraude-1: #CBFFE1;
  --dn-seq-emeraude-1-sur: #05080E;
  --dn-seq-emeraude-2: #92EDBD;
  --dn-seq-emeraude-2-sur: #05080E;
  --dn-seq-emeraude-3: #68D7A0;
  --dn-seq-emeraude-3-sur: #05080E;
  --dn-seq-emeraude-4: #3FBF86;
  --dn-seq-emeraude-4-sur: #05080E;
  --dn-seq-emeraude-5: #13A66E;
  --dn-seq-emeraude-5-sur: #05080E;
  --dn-seq-emeraude-6: #078C5B;
  --dn-seq-emeraude-6-sur: #05080E;
  --dn-seq-emeraude-7: #067149;
  --dn-seq-emeraude-7-sur: #FFFFFF;
  --dn-seq-emeraude-8: #035838;
  --dn-seq-emeraude-8-sur: #FFFFFF;
  --dn-seq-emeraude-9: #0E3F2A;
  --dn-seq-emeraude-9-sur: #FFFFFF;
  --dn-seq-orange-1: #FFECE2;
  --dn-seq-orange-1-sur: #05080E;
  --dn-seq-orange-2: #FFC9AC;
  --dn-seq-orange-2-sur: #05080E;
  --dn-seq-orange-3: #FEA471;
  --dn-seq-orange-3-sur: #05080E;
  --dn-seq-orange-4: #FA7C21;
  --dn-seq-orange-4-sur: #05080E;
  --dn-seq-orange-5: #DB6702;
  --dn-seq-orange-5-sur: #05080E;
  --dn-seq-orange-6: #B75604;
  --dn-seq-orange-6-sur: #FFFFFF;
  --dn-seq-orange-7: #964503;
  --dn-seq-orange-7-sur: #FFFFFF;
  --dn-seq-orange-8: #763502;
  --dn-seq-orange-8-sur: #FFFFFF;
  --dn-seq-orange-9: #552606;
  --dn-seq-orange-9-sur: #FFFFFF;
  --dn-seq-violet-1: #F2EDFE;
  --dn-seq-violet-1-sur: #05080E;
  --dn-seq-violet-2: #DBCDFF;
  --dn-seq-violet-2-sur: #05080E;
  --dn-seq-violet-3: #C6ADFF;
  --dn-seq-violet-3-sur: #05080E;
  --dn-seq-violet-4: #B38AFF;
  --dn-seq-violet-4-sur: #05080E;
  --dn-seq-violet-5: #9C6FEB;
  --dn-seq-violet-5-sur: #05080E;
  --dn-seq-violet-6: #8459CC;
  --dn-seq-violet-6-sur: #FFFFFF;
  --dn-seq-violet-7: #6B46A8;
  --dn-seq-violet-7-sur: #FFFFFF;
  --dn-seq-violet-8: #533781;
  --dn-seq-violet-8-sur: #FFFFFF;
  --dn-seq-violet-9: #3B2B59;
  --dn-seq-violet-9-sur: #FFFFFF;
  --dn-seq-magenta-1: #FFEAF2;
  --dn-seq-magenta-1-sur: #05080E;
  --dn-seq-magenta-2: #FEC3DC;
  --dn-seq-magenta-2-sur: #05080E;
  --dn-seq-magenta-3: #FF98C6;
  --dn-seq-magenta-3-sur: #05080E;
  --dn-seq-magenta-4: #F66EB0;
  --dn-seq-magenta-4-sur: #05080E;
  --dn-seq-magenta-5: #DB5498;
  --dn-seq-magenta-5-sur: #05080E;
  --dn-seq-magenta-6: #BC4080;
  --dn-seq-magenta-6-sur: #FFFFFF;
  --dn-seq-magenta-7: #9B3168;
  --dn-seq-magenta-7-sur: #FFFFFF;
  --dn-seq-magenta-8: #782751;
  --dn-seq-magenta-8-sur: #FFFFFF;
  --dn-seq-magenta-9: #53213A;
  --dn-seq-magenta-9-sur: #FFFFFF;
  --dn-seq-gris-1: #E7F1FF;
  --dn-seq-gris-1-sur: #05080E;
  --dn-seq-gris-2: #CBD8E9;
  --dn-seq-gris-2-sur: #05080E;
  --dn-seq-gris-3: #B1BFD1;
  --dn-seq-gris-3-sur: #05080E;
  --dn-seq-gris-4: #98A6B9;
  --dn-seq-gris-4-sur: #05080E;
  --dn-seq-gris-5: #808EA1;
  --dn-seq-gris-5-sur: #05080E;
  --dn-seq-gris-6: #6A7788;
  --dn-seq-gris-6-sur: #FFFFFF;
  --dn-seq-gris-7: #556070;
  --dn-seq-gris-7-sur: #FFFFFF;
  --dn-seq-gris-8: #414B57;
  --dn-seq-gris-8-sur: #FFFFFF;
  --dn-seq-gris-9: #2F3640;
  --dn-seq-gris-9-sur: #FFFFFF;
  --dn-div-1: #093DA1;
  --dn-div-2: #3461B6;
  --dn-div-3: #5C83CB;
  --dn-div-4: #84A4DF;
  --dn-div-5: #AEC6F2;
  --dn-div-6: #E8EBF1;
  --dn-div-7: #EFB5AE;
  --dn-div-8: #D88D84;
  --dn-div-9: #C1655C;
  --dn-div-10: #A83B34;
  --dn-div-11: #8A020B;
  --dn-statut-positif: #0E7140;
  --dn-statut-attention: #835800;
  --dn-statut-negatif: #B42318;
  --dn-statut-info: #002DE1;
  --dn-shadow-raised: 0 1px 2px rgba(14,21,36,.06), 0 8px 24px -6px rgba(14,21,36,.16);
  --dn-shadow-overlay: 0 2px 6px rgba(14,21,36,.08), 0 24px 48px -12px rgba(14,21,36,.28);
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --dn-bg-page: #05080E;
    --dn-bg-surface: #0C121A;
    --dn-bg-sunken: #090E15;
    --dn-bg-raised: #151C26;
    --dn-bg-inverse: #F3F5F8;
    --dn-text-primary: #F3F5F8;
    --dn-text-secondary: #D2D8E0;
    --dn-text-muted: #B3BBC6;
    --dn-text-inverse: #05080E;
    --dn-text-on-action: #05080E;
    --dn-border-faint: #1E2732;
    --dn-border-subtle: #29323F;
    --dn-border-control: #6F7A88;
    --dn-border-strong: #D2D8E0;
    --dn-action: #93AAFF;
    --dn-action-hover: #B4C4FF;
    --dn-action-subtle: #19263F;
    --dn-focus: #93AAFF;
    --dn-data-grid: #1E2732;
    --dn-data-axis: #6F7A88;
    --dn-data-context: #6F7A88;
    --dn-data-nodata: #151C26;
    --dn-data-nodata-hatch: #3F4A58;
    --dn-data-highlight: #F9FAFC;
    --dn-data-land: #151C26;
    --dn-data-land-stroke: #0C121A;
    --dn-data-water: #05080E;
    --dn-cat-1: #4B79FB;
    --dn-cat-1-sur: #05080E;
    --dn-cat-2: #DD6D06;
    --dn-cat-2-sur: #05080E;
    --dn-cat-3: #069868;
    --dn-cat-3-sur: #05080E;
    --dn-cat-4: #ED4DA1;
    --dn-cat-4-sur: #05080E;
    --dn-cat-5: #BB8D07;
    --dn-cat-5-sur: #05080E;
    --dn-cat-6: #A169FC;
    --dn-cat-6-sur: #05080E;
    --dn-cat-7: #F14E49;
    --dn-cat-7-sur: #05080E;
    --dn-cat-8: #09A7BE;
    --dn-cat-8-sur: #05080E;
    --dn-seq-bleu-1: #0E2A61;
    --dn-seq-bleu-1-sur: #FFFFFF;
    --dn-seq-bleu-2: #143B87;
    --dn-seq-bleu-2-sur: #FFFFFF;
    --dn-seq-bleu-3: #1F4EAB;
    --dn-seq-bleu-3-sur: #FFFFFF;
    --dn-seq-bleu-4: #2F64CA;
    --dn-seq-bleu-4-sur: #FFFFFF;
    --dn-seq-bleu-5: #447BE5;
    --dn-seq-bleu-5-sur: #05080E;
    --dn-seq-bleu-6: #5D93FA;
    --dn-seq-bleu-6-sur: #05080E;
    --dn-seq-bleu-7: #81ADFE;
    --dn-seq-bleu-7-sur: #05080E;
    --dn-seq-bleu-8: #A7C6FE;
    --dn-seq-bleu-8-sur: #05080E;
    --dn-seq-bleu-9: #CDDFFE;
    --dn-seq-bleu-9-sur: #05080E;
    --dn-seq-emeraude-1: #023822;
    --dn-seq-emeraude-1-sur: #FFFFFF;
    --dn-seq-emeraude-2: #024E31;
    --dn-seq-emeraude-2-sur: #FFFFFF;
    --dn-seq-emeraude-3: #056641;
    --dn-seq-emeraude-3-sur: #FFFFFF;
    --dn-seq-emeraude-4: #037E52;
    --dn-seq-emeraude-4-sur: #FFFFFF;
    --dn-seq-emeraude-5: #019863;
    --dn-seq-emeraude-5-sur: #05080E;
    --dn-seq-emeraude-6: #35AF7A;
    --dn-seq-emeraude-6-sur: #05080E;
    --dn-seq-emeraude-7: #62C594;
    --dn-seq-emeraude-7-sur: #05080E;
    --dn-seq-emeraude-8: #8DD9B1;
    --dn-seq-emeraude-8-sur: #05080E;
    --dn-seq-emeraude-9: #B9ECCF;
    --dn-seq-emeraude-9-sur: #05080E;
    --dn-seq-orange-1: #4C1F00;
    --dn-seq-orange-1-sur: #FFFFFF;
    --dn-seq-orange-2: #692E00;
    --dn-seq-orange-2-sur: #FFFFFF;
    --dn-seq-orange-3: #873D03;
    --dn-seq-orange-3-sur: #FFFFFF;
    --dn-seq-orange-4: #A64D03;
    --dn-seq-orange-4-sur: #FFFFFF;
    --dn-seq-orange-5: #C75D04;
    --dn-seq-orange-5-sur: #05080E;
    --dn-seq-orange-6: #E37326;
    --dn-seq-orange-6-sur: #05080E;
    --dn-seq-orange-7: #F59155;
    --dn-seq-orange-7-sur: #05080E;
    --dn-seq-orange-8: #FFB185;
    --dn-seq-orange-8-sur: #05080E;
    --dn-seq-orange-9: #FED4BD;
    --dn-seq-orange-9-sur: #05080E;
    --dn-seq-violet-1: #351E5A;
    --dn-seq-violet-1-sur: #FFFFFF;
    --dn-seq-violet-2: #4B2A7D;
    --dn-seq-violet-2-sur: #FFFFFF;
    --dn-seq-violet-3: #623A9F;
    --dn-seq-violet-3-sur: #FFFFFF;
    --dn-seq-violet-4: #784DBD;
    --dn-seq-violet-4-sur: #FFFFFF;
    --dn-seq-violet-5: #8E64D7;
    --dn-seq-violet-5-sur: #05080E;
    --dn-seq-violet-6: #A47DEC;
    --dn-seq-violet-6-sur: #05080E;
    --dn-seq-violet-7: #B999FC;
    --dn-seq-violet-7-sur: #05080E;
    --dn-seq-violet-8: #CDB8FF;
    --dn-seq-violet-8-sur: #05080E;
    --dn-seq-violet-9: #E2D7FF;
    --dn-seq-violet-9-sur: #05080E;
    --dn-seq-magenta-1: #510F33;
    --dn-seq-magenta-1-sur: #FFFFFF;
    --dn-seq-magenta-2: #721548;
    --dn-seq-magenta-2-sur: #FFFFFF;
    --dn-seq-magenta-3: #91215E;
    --dn-seq-magenta-3-sur: #FFFFFF;
    --dn-seq-magenta-4: #AE3474;
    --dn-seq-magenta-4-sur: #FFFFFF;
    --dn-seq-magenta-5: #C84B8B;
    --dn-seq-magenta-5-sur: #05080E;
    --dn-seq-magenta-6: #DF67A1;
    --dn-seq-magenta-6-sur: #05080E;
    --dn-seq-magenta-7: #F186B7;
    --dn-seq-magenta-7-sur: #05080E;
    --dn-seq-magenta-8: #FEA7CD;
    --dn-seq-magenta-8-sur: #05080E;
    --dn-seq-magenta-9: #FECFE2;
    --dn-seq-magenta-9-sur: #05080E;
    --dn-seq-gris-1: #262E3A;
    --dn-seq-gris-1-sur: #FFFFFF;
    --dn-seq-gris-2: #384250;
    --dn-seq-gris-2-sur: #FFFFFF;
    --dn-seq-gris-3: #4A5666;
    --dn-seq-gris-3-sur: #FFFFFF;
    --dn-seq-gris-4: #5F6B7D;
    --dn-seq-gris-4-sur: #FFFFFF;
    --dn-seq-gris-5: #748194;
    --dn-seq-gris-5-sur: #05080E;
    --dn-seq-gris-6: #8B98AA;
    --dn-seq-gris-6-sur: #05080E;
    --dn-seq-gris-7: #A3AFC0;
    --dn-seq-gris-7-sur: #05080E;
    --dn-seq-gris-8: #BCC7D6;
    --dn-seq-gris-8-sur: #05080E;
    --dn-seq-gris-9: #D6DFEC;
    --dn-seq-gris-9-sur: #05080E;
    --dn-div-1: #A5C5FE;
    --dn-div-2: #74A4FF;
    --dn-div-3: #6087D0;
    --dn-div-4: #4E6CA3;
    --dn-div-5: #3D5177;
    --dn-div-6: #29323F;
    --dn-div-7: #72423D;
    --dn-div-8: #9B564E;
    --dn-div-9: #C66A61;
    --dn-div-10: #F37F73;
    --dn-div-11: #FEABA1;
    --dn-statut-positif: #4CC98A;
    --dn-statut-attention: #E8B43A;
    --dn-statut-negatif: #FF8A7A;
    --dn-statut-info: #93AAFF;
    --dn-shadow-raised: 0 1px 2px rgba(0,0,0,.5), 0 8px 24px -6px rgba(0,0,0,.6);
    --dn-shadow-overlay: 0 2px 6px rgba(0,0,0,.5), 0 24px 48px -12px rgba(0,0,0,.7);
    color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --dn-bg-page: #05080E;
  --dn-bg-surface: #0C121A;
  --dn-bg-sunken: #090E15;
  --dn-bg-raised: #151C26;
  --dn-bg-inverse: #F3F5F8;
  --dn-text-primary: #F3F5F8;
  --dn-text-secondary: #D2D8E0;
  --dn-text-muted: #B3BBC6;
  --dn-text-inverse: #05080E;
  --dn-text-on-action: #05080E;
  --dn-border-faint: #1E2732;
  --dn-border-subtle: #29323F;
  --dn-border-control: #6F7A88;
  --dn-border-strong: #D2D8E0;
  --dn-action: #93AAFF;
  --dn-action-hover: #B4C4FF;
  --dn-action-subtle: #19263F;
  --dn-focus: #93AAFF;
  --dn-data-grid: #1E2732;
  --dn-data-axis: #6F7A88;
  --dn-data-context: #6F7A88;
  --dn-data-nodata: #151C26;
  --dn-data-nodata-hatch: #3F4A58;
  --dn-data-highlight: #F9FAFC;
  --dn-data-land: #151C26;
  --dn-data-land-stroke: #0C121A;
  --dn-data-water: #05080E;
  --dn-cat-1: #4B79FB;
  --dn-cat-1-sur: #05080E;
  --dn-cat-2: #DD6D06;
  --dn-cat-2-sur: #05080E;
  --dn-cat-3: #069868;
  --dn-cat-3-sur: #05080E;
  --dn-cat-4: #ED4DA1;
  --dn-cat-4-sur: #05080E;
  --dn-cat-5: #BB8D07;
  --dn-cat-5-sur: #05080E;
  --dn-cat-6: #A169FC;
  --dn-cat-6-sur: #05080E;
  --dn-cat-7: #F14E49;
  --dn-cat-7-sur: #05080E;
  --dn-cat-8: #09A7BE;
  --dn-cat-8-sur: #05080E;
  --dn-seq-bleu-1: #0E2A61;
  --dn-seq-bleu-1-sur: #FFFFFF;
  --dn-seq-bleu-2: #143B87;
  --dn-seq-bleu-2-sur: #FFFFFF;
  --dn-seq-bleu-3: #1F4EAB;
  --dn-seq-bleu-3-sur: #FFFFFF;
  --dn-seq-bleu-4: #2F64CA;
  --dn-seq-bleu-4-sur: #FFFFFF;
  --dn-seq-bleu-5: #447BE5;
  --dn-seq-bleu-5-sur: #05080E;
  --dn-seq-bleu-6: #5D93FA;
  --dn-seq-bleu-6-sur: #05080E;
  --dn-seq-bleu-7: #81ADFE;
  --dn-seq-bleu-7-sur: #05080E;
  --dn-seq-bleu-8: #A7C6FE;
  --dn-seq-bleu-8-sur: #05080E;
  --dn-seq-bleu-9: #CDDFFE;
  --dn-seq-bleu-9-sur: #05080E;
  --dn-seq-emeraude-1: #023822;
  --dn-seq-emeraude-1-sur: #FFFFFF;
  --dn-seq-emeraude-2: #024E31;
  --dn-seq-emeraude-2-sur: #FFFFFF;
  --dn-seq-emeraude-3: #056641;
  --dn-seq-emeraude-3-sur: #FFFFFF;
  --dn-seq-emeraude-4: #037E52;
  --dn-seq-emeraude-4-sur: #FFFFFF;
  --dn-seq-emeraude-5: #019863;
  --dn-seq-emeraude-5-sur: #05080E;
  --dn-seq-emeraude-6: #35AF7A;
  --dn-seq-emeraude-6-sur: #05080E;
  --dn-seq-emeraude-7: #62C594;
  --dn-seq-emeraude-7-sur: #05080E;
  --dn-seq-emeraude-8: #8DD9B1;
  --dn-seq-emeraude-8-sur: #05080E;
  --dn-seq-emeraude-9: #B9ECCF;
  --dn-seq-emeraude-9-sur: #05080E;
  --dn-seq-orange-1: #4C1F00;
  --dn-seq-orange-1-sur: #FFFFFF;
  --dn-seq-orange-2: #692E00;
  --dn-seq-orange-2-sur: #FFFFFF;
  --dn-seq-orange-3: #873D03;
  --dn-seq-orange-3-sur: #FFFFFF;
  --dn-seq-orange-4: #A64D03;
  --dn-seq-orange-4-sur: #FFFFFF;
  --dn-seq-orange-5: #C75D04;
  --dn-seq-orange-5-sur: #05080E;
  --dn-seq-orange-6: #E37326;
  --dn-seq-orange-6-sur: #05080E;
  --dn-seq-orange-7: #F59155;
  --dn-seq-orange-7-sur: #05080E;
  --dn-seq-orange-8: #FFB185;
  --dn-seq-orange-8-sur: #05080E;
  --dn-seq-orange-9: #FED4BD;
  --dn-seq-orange-9-sur: #05080E;
  --dn-seq-violet-1: #351E5A;
  --dn-seq-violet-1-sur: #FFFFFF;
  --dn-seq-violet-2: #4B2A7D;
  --dn-seq-violet-2-sur: #FFFFFF;
  --dn-seq-violet-3: #623A9F;
  --dn-seq-violet-3-sur: #FFFFFF;
  --dn-seq-violet-4: #784DBD;
  --dn-seq-violet-4-sur: #FFFFFF;
  --dn-seq-violet-5: #8E64D7;
  --dn-seq-violet-5-sur: #05080E;
  --dn-seq-violet-6: #A47DEC;
  --dn-seq-violet-6-sur: #05080E;
  --dn-seq-violet-7: #B999FC;
  --dn-seq-violet-7-sur: #05080E;
  --dn-seq-violet-8: #CDB8FF;
  --dn-seq-violet-8-sur: #05080E;
  --dn-seq-violet-9: #E2D7FF;
  --dn-seq-violet-9-sur: #05080E;
  --dn-seq-magenta-1: #510F33;
  --dn-seq-magenta-1-sur: #FFFFFF;
  --dn-seq-magenta-2: #721548;
  --dn-seq-magenta-2-sur: #FFFFFF;
  --dn-seq-magenta-3: #91215E;
  --dn-seq-magenta-3-sur: #FFFFFF;
  --dn-seq-magenta-4: #AE3474;
  --dn-seq-magenta-4-sur: #FFFFFF;
  --dn-seq-magenta-5: #C84B8B;
  --dn-seq-magenta-5-sur: #05080E;
  --dn-seq-magenta-6: #DF67A1;
  --dn-seq-magenta-6-sur: #05080E;
  --dn-seq-magenta-7: #F186B7;
  --dn-seq-magenta-7-sur: #05080E;
  --dn-seq-magenta-8: #FEA7CD;
  --dn-seq-magenta-8-sur: #05080E;
  --dn-seq-magenta-9: #FECFE2;
  --dn-seq-magenta-9-sur: #05080E;
  --dn-seq-gris-1: #262E3A;
  --dn-seq-gris-1-sur: #FFFFFF;
  --dn-seq-gris-2: #384250;
  --dn-seq-gris-2-sur: #FFFFFF;
  --dn-seq-gris-3: #4A5666;
  --dn-seq-gris-3-sur: #FFFFFF;
  --dn-seq-gris-4: #5F6B7D;
  --dn-seq-gris-4-sur: #FFFFFF;
  --dn-seq-gris-5: #748194;
  --dn-seq-gris-5-sur: #05080E;
  --dn-seq-gris-6: #8B98AA;
  --dn-seq-gris-6-sur: #05080E;
  --dn-seq-gris-7: #A3AFC0;
  --dn-seq-gris-7-sur: #05080E;
  --dn-seq-gris-8: #BCC7D6;
  --dn-seq-gris-8-sur: #05080E;
  --dn-seq-gris-9: #D6DFEC;
  --dn-seq-gris-9-sur: #05080E;
  --dn-div-1: #A5C5FE;
  --dn-div-2: #74A4FF;
  --dn-div-3: #6087D0;
  --dn-div-4: #4E6CA3;
  --dn-div-5: #3D5177;
  --dn-div-6: #29323F;
  --dn-div-7: #72423D;
  --dn-div-8: #9B564E;
  --dn-div-9: #C66A61;
  --dn-div-10: #F37F73;
  --dn-div-11: #FEABA1;
  --dn-statut-positif: #4CC98A;
  --dn-statut-attention: #E8B43A;
  --dn-statut-negatif: #FF8A7A;
  --dn-statut-info: #93AAFF;
  --dn-shadow-raised: 0 1px 2px rgba(0,0,0,.5), 0 8px 24px -6px rgba(0,0,0,.6);
  --dn-shadow-overlay: 0 2px 6px rgba(0,0,0,.5), 0 24px 48px -12px rgba(0,0,0,.7);
  color-scheme: dark;
}

/* ---- 00-base.css ---- */
/* ==========================================================================
   Socle Données — base
   Typographie, page, mise en page. Les règles d'éléments sont posées sous
   :where(.dn) pour garder une spécificité nulle : une étude les surcharge
   sans combat de sélecteurs.
   ========================================================================== */

:where(.dn) {
  font-family: var(--dn-font-texte);
  font-size: 1rem;
  line-height: 1.5;
  color: var(--dn-text-primary);
  background: var(--dn-bg-page);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  font-synthesis-weight: none;
}
:where(.dn) *, :where(.dn) *::before, :where(.dn) *::after { box-sizing: border-box; }
:where(.dn) :is(h1, h2, h3, h4, p, ul, ol, figure, blockquote, dl, dd) { margin: 0; }
:where(.dn) :is(h1, h2, h3, h4) { text-wrap: balance; }
:where(.dn) p { text-wrap: pretty; }
:where(.dn) img, :where(.dn) svg { max-width: 100%; }
:where(.dn) button { font: inherit; color: inherit; }
:where(.dn) ::selection { background: var(--dn-action-subtle); color: var(--dn-text-primary); }

/* Focus : toujours visible, jamais supprimé (RGAA 10.7) */
:where(.dn) :focus-visible {
  outline: 3px solid var(--dn-focus);
  outline-offset: 2px;
  border-radius: 4px;
}
:where(.dn) :focus:not(:focus-visible) { outline: none; }

/* Liens : soulignés dans le texte, couleur d'action */
:where(.dn) a {
  color: var(--dn-action);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.18em;
}
:where(.dn) a:hover { color: var(--dn-action-hover); text-decoration-thickness: 2px; }

/* ---------- Échelle typographique ---------- */
.dn-display-xl, .dn-display-l, .dn-titre-1, .dn-titre-2, .dn-titre-3, .dn-chiffre-xl {
  font-family: var(--dn-font-display);
  color: var(--dn-text-primary);
  font-optical-sizing: auto;
}
.dn-display-xl { font-size: var(--dn-type-display-xl-size); line-height: .94; font-weight: 800; font-stretch: 125%; letter-spacing: -0.025em; }
.dn-display-l  { font-size: var(--dn-type-display-l-size); line-height: 1; font-weight: 780; font-stretch: 118%; letter-spacing: -0.02em; }
.dn-titre-1    { font-size: var(--dn-type-titre-1-size); line-height: 1.08; font-weight: 750; font-stretch: 112%; letter-spacing: -0.015em; }
.dn-titre-2    { font-size: 1.375rem; line-height: 1.22; font-weight: 700; font-stretch: 104%; letter-spacing: -0.01em; }
.dn-titre-3    { font-size: 1.125rem; line-height: 1.3; font-weight: 680; font-stretch: 100%; }
.dn-chapo      { font-size: var(--dn-type-chapo-size); line-height: 1.5; color: var(--dn-text-secondary); max-width: 40em; }
.dn-lecture    { font-size: 1.125rem; line-height: 1.62; }
.dn-petit      { font-size: .875rem; line-height: 1.45; }
.dn-secondaire { color: var(--dn-text-secondary); }
.dn-discret    { color: var(--dn-text-muted); }
.dn-surtitre {
  font-family: var(--dn-font-mono);
  font-size: .75rem; line-height: 1.3; font-weight: 600;
  letter-spacing: .06em; text-transform: uppercase;
  color: var(--dn-text-secondary);
}
.dn-meta { font-family: var(--dn-font-mono); font-size: .8125rem; line-height: 1.45; color: var(--dn-text-muted); }
.dn-chiffre-xl { font-size: var(--dn-type-chiffre-xl-size); line-height: .95; font-weight: 760; letter-spacing: -0.03em; }
.dn-num { font-variant-numeric: tabular-nums; }

/* Texte courant : 65 caractères environ, interlignage confortable */
.dn-prose { font-size: 1.125rem; line-height: 1.62; max-width: var(--dn-largeur-texte); }
.dn-prose > * + * { margin-top: 1em; }
.dn-prose :is(h2, h3) { margin-top: 1.8em; }
.dn-prose h2 { font: 750 1.5rem/1.15 var(--dn-font-display); font-stretch: 108%; letter-spacing: -0.01em; }
.dn-prose h3 { font: 700 1.1875rem/1.25 var(--dn-font-display); font-stretch: 102%; }
.dn-prose :is(ul, ol) { padding-left: 1.25em; }
.dn-prose li + li { margin-top: .4em; }
.dn-prose strong { font-weight: 700; }
.dn-prose sup { line-height: 0; }

/* Masqué à l'écran, lu par les lecteurs d'écran */
.dn-sr {
  position: absolute !important; 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;
}
.dn-evitement {
  position: absolute; left: max(16px, env(safe-area-inset-left, 0px)); top: -100px; z-index: 100;
  background: var(--dn-bg-inverse); color: var(--dn-text-inverse); padding: 10px 16px;
  border-radius: var(--dn-radius-full); font-weight: 600; text-decoration: none;
}
.dn-evitement:focus { top: calc(env(safe-area-inset-top, 0px) + 8px); color: var(--dn-text-inverse); }

/* ---------- Mise en page ---------- */
.dn-page {
  padding-left: max(var(--dn-gouttiere-mobile), env(safe-area-inset-left, 0px));
  padding-right: max(var(--dn-gouttiere-mobile), env(safe-area-inset-right, 0px));
}
@media (min-width: 720px) {
  .dn-page {
    padding-left: max(var(--dn-gouttiere), env(safe-area-inset-left, 0px));
    padding-right: max(var(--dn-gouttiere), env(safe-area-inset-right, 0px));
  }
}
.dn-conteneur { width: 100%; max-width: var(--dn-largeur-page); margin-inline: auto; }
.dn-conteneur--large { max-width: var(--dn-largeur-large); }
.dn-conteneur--texte { max-width: var(--dn-largeur-texte); }

.dn-pile { display: flex; flex-direction: column; gap: var(--dn-pile, 16px); }
.dn-pile > * { min-width: 0; }
.dn-ligne { display: flex; flex-wrap: wrap; align-items: center; gap: var(--dn-ligne, 12px); }
.dn-grille { display: grid; gap: 24px; grid-template-columns: repeat(var(--dn-colonnes, 3), minmax(0, 1fr)); }
@media (max-width: 960px) { .dn-grille { grid-template-columns: repeat(min(var(--dn-colonnes, 3), 2), minmax(0, 1fr)); } }
@media (max-width: 600px) { .dn-grille { grid-template-columns: minmax(0, 1fr); } }

.dn-section { padding-block: clamp(48px, 6vw, 96px); }
.dn-section + .dn-section { border-top: 1px solid var(--dn-border-faint); }
.dn-section__tete { display: grid; gap: 12px; margin-bottom: clamp(24px, 3vw, 40px); max-width: 52rem; }

/* Mouvement réduit : aucune animation imposée */
@media (prefers-reduced-motion: reduce) {
  :where(.dn) *, :where(.dn) *::before, :where(.dn) *::after {
    animation-duration: .01ms !important; animation-iteration-count: 1 !important;
    transition-duration: .01ms !important; scroll-behavior: auto !important;
  }
}


/* ---- 10-composants.css ---- */
/* ==========================================================================
   Socle Données — composants éditoriaux et d'interface
   Préfixe dn- (« données »). Cibles tactiles >= 44 px, états jamais portés
   par la couleur seule (coche, libellé, forme).
   ========================================================================== */

/* ---------- En-tête de site ---------- */
.dn-entete {
  position: sticky; top: env(safe-area-inset-top, 0px); z-index: 20;
  background: var(--dn-bg-page);
  border-bottom: 1px solid var(--dn-border-faint);
}
.dn-entete__barre { display: flex; align-items: center; gap: 16px; min-height: 64px; }
.dn-site { display: grid; gap: 2px; text-decoration: none; color: var(--dn-text-primary); min-width: 0; }
.dn-site:hover { color: var(--dn-text-primary); }
.dn-site__nom { font: 780 1.0625rem/1.1 var(--dn-font-display); font-stretch: 112%; letter-spacing: -0.01em; }
.dn-site__etat { font: 400 .75rem/1.2 var(--dn-font-mono); color: var(--dn-text-muted); }
.dn-nav { margin-left: auto; display: flex; gap: 4px; flex-wrap: wrap; justify-content: flex-end; }
.dn-nav a {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 14px; border-radius: var(--dn-radius-full);
  font: 560 .9375rem/1 var(--dn-font-texte); color: var(--dn-text-secondary); text-decoration: none;
}
.dn-nav a:hover { color: var(--dn-text-primary); background: var(--dn-bg-sunken); }
.dn-nav a[aria-current="page"], .dn-nav a[aria-current="true"] { color: var(--dn-text-inverse); background: var(--dn-bg-inverse); }
@media (max-width: 760px) {
  .dn-entete__barre { flex-wrap: wrap; padding-block: 10px; }
  .dn-nav { order: 3; margin-left: 0; width: 100%; justify-content: flex-start; overflow-x: auto; flex-wrap: nowrap; scrollbar-width: none; }
  .dn-entete__barre > .dn-theme, .dn-entete__barre > .dn-entete__actions { order: 2; margin-left: auto; }
  .dn-nav a { flex: none; }
}
@supports (padding: max(0px)) {
  body:has(.dn-entete)::before {
    content: ""; position: fixed; inset: 0 0 auto; height: env(safe-area-inset-top, 0px); z-index: 30; background: var(--dn-bg-page);
  }
}

/* ---------- Ouverture d'étude ---------- */
.dn-ouverture { display: grid; gap: 20px; padding-block: clamp(40px, 7vw, 104px) clamp(32px, 5vw, 64px); }
.dn-ouverture__titre { max-width: 14ch; }
.dn-ouverture__titre.dn-display-l { max-width: 18ch; }
.dn-ouverture__chapo { max-width: 38em; }
.dn-ouverture__meta { display: flex; flex-wrap: wrap; gap: 8px 20px; }

/* ---------- Chiffres clés ---------- */
.dn-chiffres { display: grid; gap: 2px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); border-radius: var(--dn-radius-lg); overflow: hidden; }
.dn-chiffres .dn-chiffre { border-radius: 0; }
.dn-chiffre {
  background: var(--dn-bg-surface); border-radius: var(--dn-radius-lg); padding: 20px 22px;
  display: grid; gap: 6px; align-content: start; min-width: 0;
}
.dn-chiffre__label { font: 560 .875rem/1.35 var(--dn-font-texte); color: var(--dn-text-secondary); }
.dn-chiffre__valeur { font: 740 2.25rem/1 var(--dn-font-display); font-stretch: 100%; letter-spacing: -0.02em; color: var(--dn-text-primary); overflow-wrap: anywhere; }
.dn-chiffre__valeur small { font-size: .5em; font-weight: 600; letter-spacing: 0; margin-left: .15em; color: var(--dn-text-secondary); }
.dn-chiffre--heros .dn-chiffre__valeur { font-size: var(--dn-type-chiffre-xl-size); letter-spacing: -0.03em; }
.dn-chiffre__note { font-size: .8125rem; line-height: 1.45; color: var(--dn-text-muted); }
.dn-delta { display: inline-flex; align-items: center; gap: 4px; font: 600 .875rem/1.2 var(--dn-font-texte); }
.dn-delta svg { width: 14px; height: 14px; flex: none; }
.dn-delta--positif { color: var(--dn-statut-positif); }
.dn-delta--negatif { color: var(--dn-statut-negatif); }
.dn-delta--neutre  { color: var(--dn-text-secondary); }
.dn-delta__periode { color: var(--dn-text-muted); font-weight: 400; }
.dn-chiffre__tendance { height: 36px; margin-top: 4px; }

/* ---------- Surfaces ---------- */
.dn-carte {
  background: var(--dn-bg-surface); border-radius: var(--dn-radius-lg); padding: clamp(18px, 2.4vw, 28px);
  border: 1px solid transparent; /* contraste élevé Windows */ min-width: 0;
}
@supports (corner-shape: squircle) {
  .dn-carte, .dn-figure, .dn-chiffre, .dn-chiffres, .dn-fiche, .dn-encadre { corner-shape: squircle; }
  .dn-carte, .dn-figure, .dn-fiche { border-radius: calc(var(--dn-radius-lg) * 1.6); }
}

/* ---------- Fiche (entité : courant, acteur, pays…) ---------- */
.dn-fiche {
  position: relative; display: grid; gap: 10px; align-content: start;
  background: var(--dn-bg-surface); border-radius: var(--dn-radius-lg); padding: 20px; min-width: 0;
  border: 1px solid transparent; transition: box-shadow var(--dn-motion-normal) var(--dn-motion-courbe);
}
.dn-fiche:hover { box-shadow: var(--dn-shadow-raised); }
.dn-fiche:has(.dn-fiche__lien:focus-visible) { outline: 3px solid var(--dn-focus); outline-offset: 2px; }
.dn-fiche__tete { display: flex; align-items: center; gap: 10px; }
.dn-fiche__periode { font: 400 .75rem/1.2 var(--dn-font-mono); color: var(--dn-text-muted); }
.dn-fiche__titre { font: 700 1.125rem/1.25 var(--dn-font-display); font-stretch: 102%; }
.dn-fiche__texte { font-size: .9375rem; line-height: 1.5; color: var(--dn-text-secondary); }
.dn-fiche__lien { font-weight: 600; text-decoration: none; color: var(--dn-text-primary); }
.dn-fiche__lien::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.dn-fiche__lien:focus-visible { outline: none; }
.dn-fiche__pied { display: flex; align-items: center; gap: 6px; margin-top: 4px; font: 600 .875rem/1 var(--dn-font-texte); color: var(--dn-action); }

/* ---------- Pastille de catégorie : forme + couleur + libellé ---------- */
.dn-pastille { display: inline-flex; align-items: center; gap: 8px; font: 560 .875rem/1.2 var(--dn-font-texte); color: var(--dn-text-primary); }
.dn-pastille svg { width: 14px; height: 14px; flex: none; overflow: visible; }
.dn-lettre {
  display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 9px; flex: none;
  font: 760 .9375rem/1 var(--dn-font-display); font-stretch: 100%;
  background: var(--dn-lettre-fond, var(--dn-cat-1)); color: var(--dn-lettre-texte, var(--dn-cat-1-sur));
}

/* ---------- Étiquette ---------- */
.dn-etiquette {
  display: inline-flex; align-items: center; gap: 6px; min-height: 24px; padding: 2px 10px; border-radius: var(--dn-radius-full);
  background: var(--dn-bg-sunken); color: var(--dn-text-secondary); font: 560 .8125rem/1.2 var(--dn-font-texte);
}
.dn-etiquette svg { width: 12px; height: 12px; }
.dn-etiquette--positif { color: var(--dn-statut-positif); }
.dn-etiquette--attention { color: var(--dn-statut-attention); }
.dn-etiquette--negatif { color: var(--dn-statut-negatif); }

/* ---------- Boutons ---------- */
.dn-bouton {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 0 20px;
  border-radius: var(--dn-radius-full); border: 2px solid transparent; cursor: pointer; text-decoration: none;
  font: 620 .9375rem/1 var(--dn-font-texte); background: var(--dn-bg-inverse); color: var(--dn-text-inverse);
  transition: background-color var(--dn-motion-rapide), color var(--dn-motion-rapide), border-color var(--dn-motion-rapide);
}
.dn-bouton:hover { background: var(--dn-action); color: var(--dn-text-on-action); }
.dn-bouton--secondaire { background: transparent; color: var(--dn-text-primary); border-color: var(--dn-border-control); }
.dn-bouton--secondaire:hover { background: var(--dn-bg-sunken); color: var(--dn-text-primary); border-color: var(--dn-border-strong); }
.dn-bouton--discret { background: transparent; color: var(--dn-text-primary); padding: 0 12px; }
.dn-bouton--discret:hover { background: var(--dn-bg-sunken); color: var(--dn-text-primary); }
.dn-bouton--petit { min-height: 36px; padding: 0 14px; font-size: .875rem; }
.dn-bouton--icone { width: 44px; padding: 0; }
.dn-bouton svg { width: 18px; height: 18px; flex: none; }
.dn-bouton[disabled], .dn-bouton[aria-disabled="true"] { opacity: .55; cursor: not-allowed; }

/* ---------- Filtres (aria-pressed) : coche visible quand actif ---------- */
.dn-filtres { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.dn-filtres__titre { font: 600 .8125rem/1.2 var(--dn-font-texte); color: var(--dn-text-secondary); margin-right: 4px; }
.dn-filtre {
  display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 14px 0 12px; cursor: pointer;
  border-radius: var(--dn-radius-full); border: 1px solid var(--dn-border-control); background: var(--dn-bg-surface);
  font: 560 .875rem/1 var(--dn-font-texte); color: var(--dn-text-primary);
  transition: background-color var(--dn-motion-rapide), border-color var(--dn-motion-rapide);
}
.dn-filtre:hover { border-color: var(--dn-border-strong); }
.dn-filtre svg { width: 14px; height: 14px; flex: none; overflow: visible; }
.dn-filtre__coche { display: none; }
.dn-filtre[aria-pressed="true"] { background: var(--dn-bg-inverse); color: var(--dn-text-inverse); border-color: var(--dn-bg-inverse); }
.dn-filtre[aria-pressed="true"] .dn-filtre__coche { display: block; }
.dn-filtre__compte { font: 500 .75rem/1 var(--dn-font-mono); color: inherit; opacity: .8; }
@media (pointer: coarse) { .dn-filtre { min-height: 44px; } }

/* ---------- Bascule (choix exclusif court : Graphique / Tableau) ---------- */
.dn-bascule { display: inline-flex; padding: 3px; gap: 2px; border-radius: var(--dn-radius-full); background: var(--dn-bg-sunken); }
.dn-bascule button {
  min-height: 34px; padding: 0 14px; border: 0; border-radius: var(--dn-radius-full); background: transparent; cursor: pointer;
  font: 600 .8125rem/1 var(--dn-font-texte); color: var(--dn-text-secondary); display: inline-flex; align-items: center; gap: 6px;
}
.dn-bascule button:hover { color: var(--dn-text-primary); }
.dn-bascule button[aria-pressed="true"] { background: var(--dn-bg-surface); color: var(--dn-text-primary); box-shadow: 0 1px 2px rgba(0,0,0,.12); }
.dn-bascule svg { width: 15px; height: 15px; }
@media (pointer: coarse) { .dn-bascule button { min-height: 40px; } }

/* ---------- Onglets ---------- */
.dn-onglets { display: flex; gap: 4px; border-bottom: 1px solid var(--dn-border-subtle); overflow-x: auto; scrollbar-width: none; }
.dn-onglet {
  flex: none; min-height: 44px; padding: 0 14px; border: 0; background: none; cursor: pointer;
  font: 600 .9375rem/1 var(--dn-font-texte); color: var(--dn-text-secondary); border-bottom: 3px solid transparent; margin-bottom: -1px;
}
.dn-onglet:hover { color: var(--dn-text-primary); }
.dn-onglet[aria-selected="true"] { color: var(--dn-text-primary); border-bottom-color: var(--dn-text-primary); }

/* ---------- Interrupteur (rôle switch, état écrit) ---------- */
.dn-interrupteur { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; cursor: pointer; background: none; border: 0; padding: 0; text-align: left; }
.dn-interrupteur__piste {
  width: 40px; height: 24px; border-radius: 12px; flex: none; position: relative;
  background: var(--dn-bg-surface); border: 2px solid var(--dn-border-control); transition: background-color var(--dn-motion-rapide);
}
.dn-interrupteur__piste::after {
  content: ""; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%;
  background: var(--dn-border-control); transition: transform var(--dn-motion-rapide) var(--dn-motion-courbe);
}
.dn-interrupteur[aria-checked="true"] .dn-interrupteur__piste { background: var(--dn-bg-inverse); border-color: var(--dn-bg-inverse); }
.dn-interrupteur[aria-checked="true"] .dn-interrupteur__piste::after { transform: translateX(16px); background: var(--dn-text-inverse); }
.dn-interrupteur__libelle { font: 560 .9375rem/1.3 var(--dn-font-texte); }
.dn-interrupteur__etat { display: block; font: 400 .8125rem/1.3 var(--dn-font-texte); color: var(--dn-text-muted); }

/* ---------- Champ de recherche ---------- */
.dn-champ { display: grid; gap: 6px; min-width: 0; }
.dn-champ label { font: 600 .875rem/1.3 var(--dn-font-texte); }
.dn-champ input, .dn-champ select {
  min-height: 44px; width: 100%; padding: 0 14px; border-radius: var(--dn-radius-sm); border: 1px solid var(--dn-border-control);
  background: var(--dn-bg-surface); color: var(--dn-text-primary); font: 400 1rem/1.2 var(--dn-font-texte);
}
.dn-champ input::placeholder { color: var(--dn-text-muted); }
.dn-champ__aide { font-size: .8125rem; color: var(--dn-text-muted); }

/* ---------- Encadrés ---------- */
.dn-encadre {
  display: grid; gap: 8px; padding: 18px 20px; border-radius: var(--dn-radius-md);
  background: var(--dn-bg-sunken); color: var(--dn-text-primary); max-width: var(--dn-largeur-texte);
}
.dn-encadre__titre { display: flex; align-items: center; gap: 8px; font: 700 .9375rem/1.3 var(--dn-font-texte); }
.dn-encadre__titre svg { width: 18px; height: 18px; flex: none; }
.dn-encadre p { font-size: .9375rem; line-height: 1.55; color: var(--dn-text-secondary); }
.dn-encadre--avertissement .dn-encadre__titre { color: var(--dn-statut-attention); }
.dn-encadre--methode .dn-encadre__titre { color: var(--dn-text-primary); }

/* ---------- Citation ---------- */
.dn-citation { display: grid; gap: 10px; max-width: 44rem; }
.dn-citation blockquote { font: 600 clamp(1.25rem, 1.05rem + .8vw, 1.625rem)/1.35 var(--dn-font-display); font-stretch: 96%; letter-spacing: -0.005em; text-wrap: balance; }
.dn-citation figcaption { font-size: .875rem; color: var(--dn-text-muted); }

/* ---------- Notes et sources ---------- */
.dn-appel { font: 600 .7em/1 var(--dn-font-mono); vertical-align: super; text-decoration: none; padding: 0 1px; }
.dn-sources { display: grid; gap: 10px; padding-left: 2.25em; font-size: .9375rem; line-height: 1.5; color: var(--dn-text-secondary); }
.dn-sources li::marker { font: 500 .8125rem var(--dn-font-mono); color: var(--dn-text-muted); }
.dn-sources :target { background: var(--dn-action-subtle); border-radius: 4px; }

/* ---------- Sommaire de section (puces d'ancre) ---------- */
.dn-sommaire { display: flex; gap: 6px; flex-wrap: wrap; }
.dn-sommaire a {
  display: inline-flex; align-items: center; min-height: 36px; padding: 0 12px; border-radius: var(--dn-radius-full);
  background: var(--dn-bg-surface); color: var(--dn-text-primary); font: 560 .875rem/1 var(--dn-font-texte); text-decoration: none;
}
.dn-sommaire a:hover { background: var(--dn-bg-sunken); }
.dn-sommaire a[aria-current="true"] { background: var(--dn-bg-inverse); color: var(--dn-text-inverse); }

/* ---------- Tableau de données ---------- */
.dn-tableau-cadre { overflow-x: auto; border-radius: var(--dn-radius-md); background: var(--dn-bg-surface); max-width: 100%; }
.dn-tableau-cadre:focus-visible { outline-offset: -3px; }
.dn-tableau { width: 100%; border-collapse: collapse; font-size: .9375rem; line-height: 1.4; }
.dn-tableau caption { text-align: left; padding: 14px 16px 6px; font: 700 .9375rem/1.3 var(--dn-font-texte); }
.dn-tableau th, .dn-tableau td { padding: 10px 16px; text-align: left; vertical-align: top; overflow-wrap: break-word; }
.dn-tableau thead th {
  position: sticky; top: 0; background: var(--dn-bg-surface); z-index: 1;
  font: 600 .8125rem/1.3 var(--dn-font-texte); color: var(--dn-text-secondary); border-bottom: 1px solid var(--dn-border-subtle);
}
.dn-tableau tbody tr:nth-child(even) { background: var(--dn-bg-page); }
.dn-tableau tbody th { font-weight: 600; }
.dn-tableau .dn-num, .dn-tableau [data-num] { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.dn-tri { all: unset; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; border-radius: 4px; }
.dn-tri:focus-visible { outline: 3px solid var(--dn-focus); outline-offset: 2px; }
.dn-tri svg { width: 12px; height: 12px; opacity: .45; }
th[aria-sort] .dn-tri svg { opacity: 1; }
th[aria-sort="descending"] .dn-tri svg { transform: rotate(180deg); }

/* ---------- Bouton de thème ---------- */
.dn-theme { flex: none; }

/* ---------- Pied de page ---------- */
.dn-pied { padding-block: 40px 56px; border-top: 1px solid var(--dn-border-faint); display: grid; gap: 16px; color: var(--dn-text-secondary); font-size: .875rem; }
.dn-pied a { color: inherit; }

@media (forced-colors: active) {
  .dn-filtre[aria-pressed="true"], .dn-bascule button[aria-pressed="true"], .dn-nav a[aria-current] { border: 2px solid Highlight; }
  .dn-lettre { border: 1px solid CanvasText; }
}


/* ---- 20-graphiques.css ---- */
/* ==========================================================================
   Socle Données — graphiques et cartes
   Marques fines, grille en filet, texte toujours en couleur de texte, jamais
   en couleur de série. Les couleurs passent par les variables : le changement
   de thème ne redessine rien.
   ========================================================================== */

.dn-figure {
  background: var(--dn-bg-surface); border-radius: var(--dn-radius-lg); border: 1px solid transparent;
  padding: clamp(16px, 2.2vw, 28px); display: grid; gap: 14px; min-width: 0; position: relative;
}
.dn-figure--nue { background: transparent; padding: 0; border: 0; }
.dn-figure__tete { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 12px 20px; }
.dn-figure__titres { display: grid; gap: 4px; min-width: 0; flex: 1 1 22rem; }
.dn-figure__titre { font: 700 1.25rem/1.25 var(--dn-font-display); font-stretch: 104%; letter-spacing: -0.01em; color: var(--dn-text-primary); }
.dn-figure__soustitre { font-size: .9375rem; line-height: 1.45; color: var(--dn-text-secondary); max-width: 46em; }
.dn-figure__resume { font: 600 .9375rem/1.45 var(--dn-font-texte); color: var(--dn-text-primary); max-width: 46em; }
.dn-figure__outils { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.dn-figure__corps { position: relative; min-width: 0; }
.dn-figure__corps svg { display: block; overflow: visible; font-family: var(--dn-font-display); }
.dn-figure__corps[data-occupe] { opacity: .55; transition: opacity var(--dn-motion-normal); }
.dn-figure__tableau { min-width: 0; }
.dn-figure__pied { display: grid; gap: 4px; font-size: .8125rem; line-height: 1.45; color: var(--dn-text-muted); }
.dn-figure__pied a { color: var(--dn-text-secondary); }
.dn-figure__source { font-family: var(--dn-font-mono); font-size: .75rem; }
.dn-figure__detail { border-top: 1px solid var(--dn-border-faint); padding-top: 14px; min-height: 3.2em; }
.dn-figure__aide { font-size: .8125rem; color: var(--dn-text-muted); }

/* ---------- Texte SVG ---------- */
.dn-figure svg text { fill: var(--dn-text-secondary); font-size: 12px; font-stretch: 88%; font-weight: 500; letter-spacing: .01em; }
.dn-figure svg .dn-t-etiquette { fill: var(--dn-text-primary); font-size: 13px; font-weight: 600; font-stretch: 92%; }
.dn-figure svg .dn-t-fort { fill: var(--dn-text-primary); font-weight: 650; }
.dn-figure svg .dn-t-discret { fill: var(--dn-text-muted); }
.dn-figure svg .dn-t-axe-titre { fill: var(--dn-text-secondary); font-size: 12px; font-weight: 600; font-stretch: 92%; letter-spacing: .02em; }
.dn-figure svg .dn-t-num { font-variant-numeric: tabular-nums; }
.dn-figure svg .dn-t-halo { paint-order: stroke; stroke: var(--dn-bg-surface); stroke-width: 4px; stroke-linejoin: round; }
.dn-figure svg .dn-t-interieur { font-size: 12px; font-weight: 650; }

/* ---------- Axes et grille ---------- */
.dn-grille-l line, .dn-grille-l path { stroke: var(--dn-data-grid); stroke-width: 1; shape-rendering: crispEdges; fill: none; }
.dn-axe-l { stroke: var(--dn-data-axis); stroke-width: 1; shape-rendering: crispEdges; fill: none; }
.dn-repere { stroke: var(--dn-text-primary); stroke-width: 1; fill: none; }
.dn-repere--zero { stroke: var(--dn-data-axis); }

/* ---------- Marques ---------- */
.dn-marque { outline: none; cursor: default; }
.dn-marque[data-cliquable] { cursor: pointer; }
.dn-marque .dn-zone { fill: transparent; stroke: none; }
.dn-forme { stroke: var(--dn-bg-surface); stroke-width: 2px; paint-order: stroke; }
.dn-barre { stroke: none; }
.dn-ligne-serie { fill: none; stroke-width: 2px; stroke-linejoin: round; stroke-linecap: round; }
.dn-ligne-serie--contexte { stroke-width: 1.5px; }
.dn-aire-serie { stroke: none; opacity: .12; }
.dn-lien { fill: none; stroke: var(--dn-text-muted); stroke-width: 1.25px; opacity: .75; }
.dn-lien--fort { stroke: var(--dn-text-secondary); stroke-width: 2px; opacity: 1; }
.dn-lien--estompe { opacity: .12; }
.dn-estompe { opacity: .22; transition: opacity var(--dn-motion-normal); }
.dn-trajectoire { fill: none; stroke: var(--dn-text-primary); stroke-width: 1.5px; stroke-dasharray: 2 4; stroke-linecap: round; }
.dn-zone-annotee { fill: url(#dn-hachure-zone); stroke: var(--dn-text-secondary); stroke-width: 1px; stroke-dasharray: 4 3; }
.dn-periode { fill: var(--dn-bg-sunken); }
.dn-viseur { stroke: var(--dn-text-primary); stroke-width: 1px; shape-rendering: crispEdges; pointer-events: none; }
.dn-anneau-selection { fill: none; stroke: var(--dn-data-highlight); stroke-width: 2px; }

/* Focus clavier dans le SVG : anneau de focus sur la forme, halo surface */
.dn-marque:focus-visible .dn-forme,
.dn-marque:focus-visible .dn-barre { stroke: var(--dn-focus); stroke-width: 3px; }
.dn-marque[aria-pressed="true"] .dn-forme { stroke: var(--dn-data-highlight); stroke-width: 3px; }
.dn-surbrillance { fill: none; stroke: var(--dn-data-highlight); stroke-width: 2.5px; pointer-events: none; stroke-linejoin: round; }
.dn-surbrillance--focus { stroke: var(--dn-focus); stroke-width: 3px; }

/* ---------- Couleurs de données (classes) ---------- */
.dn-c1 { fill: var(--dn-cat-1); stroke: var(--dn-cat-1); } .dn-c2 { fill: var(--dn-cat-2); stroke: var(--dn-cat-2); }
.dn-c3 { fill: var(--dn-cat-3); stroke: var(--dn-cat-3); } .dn-c4 { fill: var(--dn-cat-4); stroke: var(--dn-cat-4); }
.dn-c5 { fill: var(--dn-cat-5); stroke: var(--dn-cat-5); } .dn-c6 { fill: var(--dn-cat-6); stroke: var(--dn-cat-6); }
.dn-c7 { fill: var(--dn-cat-7); stroke: var(--dn-cat-7); } .dn-c8 { fill: var(--dn-cat-8); stroke: var(--dn-cat-8); }
.dn-c0 { fill: var(--dn-data-context); stroke: var(--dn-data-context); }
.dn-forme.dn-c1, .dn-forme.dn-c2, .dn-forme.dn-c3, .dn-forme.dn-c4, .dn-forme.dn-c5, .dn-forme.dn-c6, .dn-forme.dn-c7, .dn-forme.dn-c8, .dn-forme.dn-c0 { stroke: var(--dn-bg-surface); }
.dn-barre.dn-c1, .dn-barre.dn-c2, .dn-barre.dn-c3, .dn-barre.dn-c4, .dn-barre.dn-c5, .dn-barre.dn-c6, .dn-barre.dn-c7, .dn-barre.dn-c8, .dn-barre.dn-c0 { stroke: none; }
.dn-ligne-serie.dn-c1, .dn-ligne-serie.dn-c2, .dn-ligne-serie.dn-c3, .dn-ligne-serie.dn-c4, .dn-ligne-serie.dn-c5, .dn-ligne-serie.dn-c6, .dn-ligne-serie.dn-c7, .dn-ligne-serie.dn-c8, .dn-ligne-serie.dn-c0 { fill: none; }

/* ---------- Cartes géographiques ---------- */
.dn-terre { fill: var(--dn-data-land); stroke: var(--dn-data-land-stroke); stroke-width: .6px; }
.dn-region { stroke: var(--dn-bg-surface); stroke-width: .75px; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.dn-region--vide { fill: url(#dn-hachure-vide); }
.dn-region--contexte { fill: var(--dn-data-land); pointer-events: none; }
.dn-frontiere { fill: none; stroke: var(--dn-bg-surface); stroke-width: .75px; pointer-events: none; }
.dn-encart { fill: none; stroke: var(--dn-border-subtle); stroke-width: 1px; }
.dn-symbole { stroke: var(--dn-bg-surface); stroke-width: 1.5px; fill-opacity: .88; }
.dn-symbole-legende { fill: none; stroke: var(--dn-text-muted); stroke-width: 1px; }

/* ---------- Légendes ---------- */
.dn-legende { display: flex; flex-wrap: wrap; gap: 6px 18px; align-items: center; margin: 0; padding: 0; list-style: none; }
.dn-legende li { display: inline-flex; align-items: center; gap: 8px; font: 560 .8125rem/1.3 var(--dn-font-texte); color: var(--dn-text-secondary); }
.dn-legende svg { flex: none; overflow: visible; }
.dn-legende button { all: unset; display: inline-flex; align-items: center; gap: 8px; cursor: pointer; border-radius: 6px; padding: 4px 6px; margin: -4px -6px; }
.dn-legende button:hover { background: var(--dn-bg-sunken); }
.dn-legende button:focus-visible { outline: 3px solid var(--dn-focus); outline-offset: 0; }
.dn-legende button[aria-pressed="false"] { color: var(--dn-text-muted); text-decoration: line-through; }
.dn-legende button[aria-pressed="false"] svg { opacity: .35; }
.dn-echelle { display: grid; gap: 6px; max-width: 420px; }
.dn-echelle__titre { font: 600 .8125rem/1.3 var(--dn-font-texte); color: var(--dn-text-secondary); }
.dn-echelle svg text { fill: var(--dn-text-secondary); font: 500 12px var(--dn-font-display); font-stretch: 88%; font-variant-numeric: tabular-nums; }

/* ---------- Infobulle ---------- */
.dn-infobulle {
  position: absolute; z-index: 5; pointer-events: auto; max-width: min(300px, calc(100% - 16px));
  background: var(--dn-bg-raised); color: var(--dn-text-primary); border-radius: var(--dn-radius-sm); padding: 10px 12px;
  box-shadow: var(--dn-shadow-overlay); border: 1px solid var(--dn-border-faint);
  font: 400 .8125rem/1.4 var(--dn-font-texte); display: grid; gap: 6px;
}
.dn-infobulle[hidden] { display: none; }
.dn-infobulle__titre { font: 650 .875rem/1.3 var(--dn-font-texte); }
.dn-infobulle__lignes { display: grid; gap: 4px; margin: 0; }
.dn-infobulle__ligne { display: grid; grid-template-columns: 14px auto 1fr; align-items: center; gap: 8px; }
.dn-infobulle__ligne dt { order: 3; color: var(--dn-text-secondary); }
.dn-infobulle__ligne dd { order: 2; margin: 0; font: 700 .875rem/1.2 var(--dn-font-display); font-stretch: 96%; font-variant-numeric: tabular-nums; }
.dn-infobulle__cle { order: 1; width: 14px; height: 14px; }
.dn-infobulle__texte { color: var(--dn-text-secondary); }

/* ---------- Motifs (canal de secours : daltonisme, impression, contraste élevé) ---------- */
:root[data-dn-motifs="on"] .dn-c1:not(.dn-ligne-serie):not(.dn-t) { fill: url(#dn-motif-1); }
:root[data-dn-motifs="on"] .dn-c2:not(.dn-ligne-serie) { fill: url(#dn-motif-2); }
:root[data-dn-motifs="on"] .dn-c3:not(.dn-ligne-serie) { fill: url(#dn-motif-3); }
:root[data-dn-motifs="on"] .dn-c4:not(.dn-ligne-serie) { fill: url(#dn-motif-4); }
:root[data-dn-motifs="on"] .dn-c5:not(.dn-ligne-serie) { fill: url(#dn-motif-5); }
:root[data-dn-motifs="on"] .dn-c6:not(.dn-ligne-serie) { fill: url(#dn-motif-6); }
:root[data-dn-motifs="on"] .dn-c7:not(.dn-ligne-serie) { fill: url(#dn-motif-7); }
:root[data-dn-motifs="on"] .dn-c8:not(.dn-ligne-serie) { fill: url(#dn-motif-8); }
.dn-motif-trait { stroke: var(--dn-bg-surface); stroke-width: 1.6px; }

@media print {
  .dn-figure__outils, .dn-infobulle, .dn-entete { display: none !important; }
  .dn-figure { break-inside: avoid; }
}

/* Contraste élevé Windows : formes et textes en couleurs système */
@media (forced-colors: active) {
  .dn-figure svg text { fill: CanvasText; }
  .dn-forme, .dn-barre, .dn-region, .dn-symbole { forced-color-adjust: none; stroke: Canvas; }
  .dn-ligne-serie { stroke: CanvasText; forced-color-adjust: none; }
  .dn-grille-l line, .dn-axe-l { stroke: GrayText; }
  .dn-marque:focus-visible .dn-forme, .dn-marque:focus-visible .dn-barre, .dn-surbrillance--focus { stroke: Highlight; }
  .dn-infobulle { border: 1px solid CanvasText; }
}
