/* ════════════════════════════════════════════════════════════════════════
   Charte : docs/charte-graphique.md
   La couleur n'encode QUE du sens. Les quatre positions de vote sont les
   seules couleurs sémantiques ; l'accent sert aux liens et à rien d'autre.
   Un RÉSULTAT (adopté, rejeté) n'est pas une position : il reste en encre,
   faute de quoi on dirait qu'adopter est bien et rejeter est mal.
   Pas de bleu-blanc-rouge : ce site n'est pas officiel et ne doit pas en
   avoir l'air.

   Contrastes vérifiés sur les TROIS surfaces (papier, papier-2, carte) et
   dans les deux thèmes. Minimum constaté : 4,86:1.
   ════════════════════════════════════════════════════════════════════════ */

/* Fontes hébergées en propre : aucune requête vers un tiers, aucun traceur,
   aucun décalage au chargement. Sous-jeux latin et latin-ext, licences OFL
   (web/fonts/OFL.txt). */
@font-face{font-family:Plex;font-style:normal;font-weight:400 700;font-display:swap;
src:url("fonts/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}
@font-face{font-family:Plex;font-style:normal;font-weight:400 700;font-display:swap;
src:url("fonts/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:PlexMono;font-style:normal;font-weight:400;font-display:swap;
src:url("fonts/plex-mono-400-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:PlexMono;font-style:normal;font-weight:400;font-display:swap;
src:url("fonts/plex-mono-400-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:PlexMono;font-style:normal;font-weight:500;font-display:swap;
src:url("fonts/plex-mono-500-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:PlexMono;font-style:normal;font-weight:500;font-display:swap;
src:url("fonts/plex-mono-500-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:Titre;font-style:normal;font-weight:500;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:Titre;font-style:normal;font-weight:500;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}

:root{
  --papier:#FAF8F3; --papier2:#F1EEE6; --carte:#FFFFFF;
  --encre:#17181D; --attenue:#5A5850; --filet:#E4E0D6; --filet2:#EFEBE2;
  --accent:#125863; --accent-doux:#E3EEF0; --repere:#C2410C; --gauche:#D6392F; --centre:#7E5BA6; --droite:#2456A8; --vert:#2E8B57; --ocre:#B8731B;
  --rampe0:#FDE6D6; --rampe1:#F9BE98; --rampe2:#F0914F; --rampe3:#D5601F; --rampe4:#8F3508;
  --pour:#1C6B45; --contre:#A32C2A; --abst:#7E5C0E; --absent:#6B675F;
  --absent-f:#E2DFD9; --seuil:#17181D; --eau:#6E9CB5;
  --rayon:12px; --rayon-s:7px;
  --sans:Plex,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --mono:PlexMono,ui-monospace,SFMono-Regular,Menlo,monospace;
  --titre:Titre,Georgia,"Times New Roman",serif;
}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){
  --papier:#131419; --papier2:#0E0F14; --carte:#1B1C22;
  --encre:#EEEBE4; --attenue:#9C988F; --filet:#2A2B33; --filet2:#212229;
  --accent:#74C3D3; --accent-doux:#16323A; --repere:#FB8C4F; --gauche:#F0645A; --centre:#A98AD0; --droite:#6C9BE8; --vert:#5CC389; --ocre:#E0A04A;
  --rampe0:#3A2C26; --rampe1:#6B4030; --rampe2:#A65A33; --rampe3:#DA7A45; --rampe4:#FFB27A;
  --pour:#58C089; --contre:#E87D76; --abst:#DAAE45; --absent:#918D85;
  --absent-f:#2B2A28; --seuil:#EEEBE4; --eau:#5E93B0;
}}
[data-theme=dark]{
  --papier:#131419; --papier2:#0E0F14; --carte:#1B1C22;
  --encre:#EEEBE4; --attenue:#9C988F; --filet:#2A2B33; --filet2:#212229;
  --accent:#74C3D3; --accent-doux:#16323A; --repere:#FB8C4F; --gauche:#F0645A; --centre:#A98AD0; --droite:#6C9BE8; --vert:#5CC389; --ocre:#E0A04A;
  --rampe0:#3A2C26; --rampe1:#6B4030; --rampe2:#A65A33; --rampe3:#DA7A45; --rampe4:#FFB27A;
  --pour:#58C089; --contre:#E87D76; --abst:#DAAE45; --absent:#918D85;
  --absent-f:#2B2A28; --seuil:#EEEBE4; --eau:#5E93B0;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--papier);color:var(--encre);
font:16px/1.6 var(--sans);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}
.wrap{max-width:72rem;margin:0 auto;padding:0 1.6rem}

/* Le focus reste visible sur TOUS les éléments interactifs. Jamais supprimé. */
a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible,
[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
.saut{position:absolute;left:-9999px;top:0;background:var(--encre);color:var(--papier);
padding:.7rem 1.1rem;z-index:100;border-radius:0 0 var(--rayon-s) 0}
.saut:focus{left:0}

/* ── Barre de marque ─────────────────────────────────────────────────── */
header.top{background:var(--carte);border-bottom:1px solid var(--filet);position:relative;z-index:5}
header.top .row{display:flex;align-items:center;gap:1.1rem;padding:.8rem 0}
.marque{display:flex;align-items:center;gap:.6rem;text-decoration:none;color:inherit;flex:0 0 auto}
.marque svg,.marque img{display:block;flex:0 0 auto}
.marque .mot{font:600 1.06rem/1 var(--sans);letter-spacing:-.028em}
.marque .mot i{font-style:normal;color:var(--attenue);font-weight:450}
/* Douze entrées ne tiennent pas sur une ligne à toutes les largeurs, et
   masquer un libellé cacherait une section entière du site : la barre passe
   donc sur deux lignes plutôt que d'amputer. */
header.top nav{display:flex;gap:.05rem;flex-wrap:wrap;justify-content:flex-end;
margin-left:.3rem}
header.top nav a{font:500 .84rem/1 var(--sans);color:var(--attenue);text-decoration:none;
padding:.5rem .48rem;border-radius:var(--rayon-s);display:inline-flex;align-items:center;
gap:.34rem;white-space:nowrap}
/* Huit entrées, une marque, une recherche et un sélecteur de thème ne tiennent
   pas sur une ligne à 1440 px : les icônes s'effacent d'abord, la recherche
   ensuite. Les libellés, eux, ne disparaissent jamais. */
header.top nav sup{font-size:.66em;line-height:0;vertical-align:.42em}
@media(max-width:112rem){header.top nav a .ico{display:none}}
@media(max-width:100rem){header.top nav a{padding-left:.42rem;padding-right:.42rem;
  font-size:.8rem}}
@media(max-width:88rem){button.rech.compact{max-width:2.6rem}
  button.rech.compact .txt,button.rech.compact kbd{display:none}}
header.top nav a:hover{color:var(--encre);background:var(--papier2)}
header.top nav a[aria-current]{color:var(--encre);background:var(--papier2)}
header.top nav a .ico{width:16px;height:16px;flex:0 0 auto;opacity:.78}
header.top nav a:hover .ico,header.top nav a[aria-current] .ico{opacity:1}

/* ── Sélecteur de thème ──────────────────────────────────────────────── */
.theme{display:flex;gap:.1rem;flex:0 0 auto;border:1px solid var(--filet);
border-radius:999px;padding:.15rem;background:var(--papier2)}
.theme button{display:grid;place-items:center;width:1.85rem;height:1.85rem;padding:0;
border:0;border-radius:999px;background:0;color:var(--attenue);cursor:pointer}
.theme button:hover{color:var(--encre)}
.theme button[aria-pressed=true]{background:var(--carte);color:var(--accent);
box-shadow:0 1px 2px rgba(0,0,0,.06)}
.theme .ico{width:15px;height:15px;opacity:1}

/* ── Documents de méthode rendus depuis Markdown ─────────────────────── */
.doc-page{display:grid;gap:2.6rem;grid-template-columns:minmax(0,1fr)}
@media(min-width:64rem){.doc-page{grid-template-columns:minmax(0,1fr) 15rem}}
.doc-toc{position:sticky;top:1.5rem;align-self:start;font-size:.85rem;
border-left:1px solid var(--filet);padding-left:1.1rem}
@media(max-width:64rem){.doc-toc{position:static;border-left:0;border-top:1px solid var(--filet);
padding:1.2rem 0 0;order:-1}}
.doc-toc .lb{font:500 .68rem/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;
color:var(--attenue);margin:0 0 .6rem}
.doc-toc ul{list-style:none;margin:0;padding:0;display:grid;gap:.42rem}
.doc-toc a{text-decoration:none;color:var(--attenue);display:block;line-height:1.35}
.doc-toc a:hover{color:var(--accent)}
.prose{max-width:44rem}
.prose h1{font:500 2.1rem/1.14 var(--titre);letter-spacing:-.02em;margin:.2rem 0 1.2rem}
.prose h2{font:500 1.5rem/1.22 var(--titre);letter-spacing:-.014em;margin:2.6rem 0 .8rem;
padding-bottom:.35rem;border-bottom:1px solid var(--filet);scroll-margin-top:1.5rem}
.prose h3{font:600 1.02rem/1.35 var(--sans);margin:1.9rem 0 .5rem;scroll-margin-top:1.5rem}
.prose h4{font:600 .92rem/1.35 var(--sans);margin:1.4rem 0 .4rem;color:var(--attenue)}
.prose p,.prose li{line-height:1.68}
.prose ul,.prose ol{padding-left:1.25rem}
.prose li{margin:.3rem 0}
.prose li::marker{color:var(--attenue)}
.prose blockquote{margin:1.4rem 0;padding:.15rem 0 .15rem 1.1rem;
border-left:2px solid var(--accent);color:var(--attenue)}
.prose blockquote p{margin:.4rem 0}
/* L'exposé des motifs : cité verbatim, jamais réécrit — la citation d'un
   tiers se distingue visuellement d'une note du site (var(--attenue)) mais
   ne prend ni le vert ni le rouge, réservés aux positions de vote. */
blockquote.expose{margin:1rem 0;padding:.7rem 1rem;border-left:3px solid var(--filet);
background:var(--papier2);border-radius:0 var(--rayon-s) var(--rayon-s) 0;
white-space:pre-line;font-size:.92rem;line-height:1.6}
.prose hr{border:0;border-top:1px solid var(--filet);margin:2.4rem 0}
.prose table{margin:1.2rem 0;font-size:.875rem}
.prose th{vertical-align:bottom}
.prose td{vertical-align:top}
.prose pre{background:var(--papier2);border:1px solid var(--filet);border-radius:var(--rayon-s);
padding:.9rem 1rem;overflow-x:auto;font-size:.83rem;line-height:1.6}
.prose pre code{background:0;padding:0;font-size:1em}
.prose a{text-underline-offset:3px}
.prose strong{font-weight:600}
.prose img{max-width:100%;height:auto}

/* ── Recherche ───────────────────────────────────────────────────────── */
.rech{display:flex;align-items:center;gap:.7rem;background:var(--carte);width:100%;
border:1.5px solid var(--filet);border-radius:var(--rayon);padding:.8rem 1rem;
font:450 1rem/1.3 var(--sans);color:var(--attenue);text-align:left;cursor:pointer}
.rech:hover{border-color:var(--accent);color:var(--encre)}
.rech svg{flex:0 0 auto}
.rech .txt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rech kbd{font:500 .72rem/1 var(--mono);border:1px solid var(--filet);border-radius:5px;
padding:.28rem .42rem;flex:0 0 auto}
.rech.grand{padding:1rem 1.2rem;font-size:1.1rem}
button.rech.compact{max-width:15rem;padding:.5rem .75rem;font-size:.86rem;border-width:1px;
margin-left:auto}
.suggest{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.85rem;align-items:baseline}
.suggest > span{font-size:.82rem;color:var(--attenue)}
.suggest a{font:450 .82rem/1 var(--sans);text-decoration:none;border:1px solid var(--filet);
background:var(--carte);color:var(--attenue);padding:.36rem .65rem;border-radius:999px}
.suggest a:hover{border-color:var(--accent);color:var(--accent)}

dialog.palette{border:0;padding:0;background:transparent;max-width:44rem;width:calc(100% - 2rem);
margin-top:8vh;color:var(--encre)}
dialog.palette::backdrop{background:rgba(10,10,14,.55)}
.palette .boite{background:var(--carte);border:1px solid var(--filet);border-radius:var(--rayon);
overflow:hidden}
.palette .champ{display:flex;align-items:center;gap:.7rem;padding:.9rem 1.1rem;
border-bottom:1px solid var(--filet)}
.palette input{border:0;background:0;font:450 1.08rem/1.3 var(--sans);color:var(--encre);
width:100%;outline:0}
.palette input::placeholder{color:var(--attenue)}
.palette .res{max-height:min(58vh,30rem);overflow-y:auto}
.palette .res a{display:flex;align-items:baseline;gap:.8rem;padding:.6rem 1.1rem;
text-decoration:none;color:inherit;border-bottom:1px solid var(--filet2)}
.palette .res a:hover,.palette .res a.sel{background:var(--papier2)}
.palette .res .n{font-weight:500;flex:1;min-width:0}
.palette .res .k{font:400 .72rem/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;
color:var(--attenue);flex:0 0 auto}
.palette .vide{padding:1.5rem 1.1rem;color:var(--attenue);font-size:.9rem}
.palette .pied-p{padding:.7rem 1.1rem;border-top:1px solid var(--filet);
font-size:.8rem;color:var(--attenue);background:var(--papier2)}

/* ── Hero ────────────────────────────────────────────────────────────── */
.hero{background:var(--papier2);border-bottom:1px solid var(--filet);
padding:3.4rem 0 2.6rem;position:relative;overflow:hidden}
/* Champ de sièges : la même géométrie que la marque. Confiné au hero, replié
   vers la droite où il n'y a pas de contenu, jamais derrière une donnée.

   La trame est un MASQUE et non une image : sa couleur vient donc de --encre et
   suit les deux thèmes toute seule. Définir la couleur des points dans le seul
   bloc @media laissait le champ invisible dès qu'on forçait [data-theme=dark]
   depuis un système en clair. */
.hero .champ{position:absolute;inset:0;pointer-events:none;opacity:.055;
-webkit-mask-image:linear-gradient(to left,#000 0%,transparent 62%);
mask-image:linear-gradient(to left,#000 0%,transparent 62%)}
.hero .champ::before{content:"";position:absolute;inset:0;background:var(--encre);
-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='15'%3E%3Crect width='6' height='6' rx='1.8' fill='%23000'/%3E%3C/svg%3E");
mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15' height='15'%3E%3Crect width='6' height='6' rx='1.8' fill='%23000'/%3E%3C/svg%3E");
-webkit-mask-repeat:repeat;mask-repeat:repeat}
.hero .wrap{position:relative;z-index:2}
.hero h1{font:500 clamp(2rem,4.6vw,3.1rem)/1.07 var(--titre);letter-spacing:-.022em;
max-width:19ch;margin:0 0 .9rem;text-wrap:balance}
.hero .lede{color:var(--attenue);font-size:1.06rem;max-width:52ch;margin:0 0 2rem;line-height:1.55}
.hero .outil{max-width:41rem}
.ancrage{display:flex;gap:1.6rem;flex-wrap:wrap;margin:1.9rem 0 0;padding-top:1.2rem;
border-top:1px solid var(--filet)}
.ancrage div{font-size:.84rem}
.ancrage dt{font:500 .68rem/1.2 var(--mono);letter-spacing:.1em;text-transform:uppercase;
color:var(--attenue);margin:0 0 .2rem}
.ancrage dd{margin:0;font-weight:500}

/* ── Titres et blocs ─────────────────────────────────────────────────── */
h1{font:500 2.1rem/1.14 var(--titre);letter-spacing:-.02em;margin:.3rem 0 .7rem;text-wrap:balance}
h2{font:500 1.55rem/1.2 var(--titre);letter-spacing:-.014em;margin:2.8rem 0 .9rem;
padding-bottom:.4rem;border-bottom:1px solid var(--filet);text-wrap:balance}
h3{font:600 1.02rem/1.35 var(--sans);margin:1.6rem 0 .4rem}
a{color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px}
.lede{color:var(--attenue);font-size:1.04rem;max-width:48rem;line-height:1.55}
.muted{color:var(--attenue)}.small{font-size:.875rem}
.sur,.eyebrow{font:500 .7rem/1 var(--mono);letter-spacing:.13em;text-transform:uppercase;
color:var(--accent);display:block;margin-bottom:.5rem}
.h2{font:500 1.55rem/1.2 var(--titre);letter-spacing:-.014em;text-wrap:balance}
.h2 a{color:inherit;text-decoration:none}
.h2 a:hover,.h2 a:focus-visible{text-decoration:underline;text-underline-offset:.18em}
.bloc{padding:2.8rem 0}
.bloc + .bloc{border-top:1px solid var(--filet)}
.tete{display:flex;align-items:center;justify-content:space-between;gap:1rem;
flex-wrap:wrap;margin-bottom:1.3rem}
.tete .plus{font:500 .86rem/1 var(--sans);text-decoration:none}

/* ── Chiffres ────────────────────────────────────────────────────────── */
.chiffres{display:grid;gap:1.2rem 1rem;grid-template-columns:repeat(auto-fit,minmax(7.5rem,1fr))}
.chiffre-bloc .v{font:600 clamp(1.35rem,2.6vw,1.85rem)/1 var(--sans);letter-spacing:-.03em;
white-space:nowrap}
.chiffre-bloc .l{font-size:.76rem;color:var(--attenue);margin-top:.3rem;display:block;line-height:1.35}

/* ── Flux de scrutins ────────────────────────────────────────────────── */
.flux{display:grid;gap:0}
.ligne{display:grid;grid-template-columns:5.4rem 1fr 10rem 5.5rem;gap:1rem;align-items:center;
padding:.85rem 0;border-top:1px solid var(--filet);text-decoration:none;color:inherit}
.flux .ligne:last-child{border-bottom:1px solid var(--filet)}
.ligne:hover{background:var(--carte)}
.ligne .d{font:400 .78rem/1.3 var(--mono);color:var(--attenue)}
.ligne .o{font-weight:500;font-size:.95rem;line-height:1.4;
display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ligne .o em{font-style:normal;color:var(--attenue);font-weight:400;font-size:.82rem;
display:block;margin-top:.1rem}
/* Le résultat est en encre : « adopté » n'est pas une position de vote. */
.ligne .r{font-size:.83rem;font-weight:600;text-align:right;white-space:nowrap}
.mini{display:flex;height:7px;border-radius:4px;overflow:hidden;background:var(--filet2);width:100%}
.mini i{display:block;height:100%}

/* ── Cartes ──────────────────────────────────────────────────────────── */
.cartes{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr))}
.cartes.trois{grid-template-columns:repeat(auto-fill,minmax(20rem,1fr))}
.cartes.quatre{grid-template-columns:repeat(auto-fill,minmax(14.5rem,1fr))}
.carte{background:var(--carte);border:1px solid var(--filet);border-radius:var(--rayon);
padding:1.15rem 1.2rem;text-decoration:none;color:inherit;display:flex;flex-direction:column;gap:.4rem}
a.carte:hover{border-color:var(--accent)}
.carte .v{font:600 1.6rem/1 var(--sans);letter-spacing:-.03em}
.carte .t{font-weight:600;font-size:.98rem;text-wrap:balance}
.carte .d{font-size:.855rem;color:var(--attenue);line-height:1.5;margin-top:auto}
.sparkline{width:100%;height:1.9rem;display:block}
.sparkline .ligne{stroke:var(--sp,var(--accent));stroke-width:1.6}
.sparkline .pt{fill:var(--sp,var(--accent))}
.carte.creuse{background:transparent;border-style:dashed}
.carte.creuse .v{font:500 .95rem/1.3 var(--sans);color:var(--attenue);letter-spacing:0}
.groupe-delinquance{margin:1.1rem 0}
.groupe-delinquance .gt{display:flex;align-items:center;gap:.4rem;font:500 .78rem/1 var(--mono);
letter-spacing:.06em;text-transform:uppercase;color:var(--attenue);margin-bottom:.6rem}
.groupe-delinquance .gt i{width:9px;height:9px;border-radius:2px;display:block;flex:0 0 auto}
.mini-delinq{padding:.85rem .9rem;gap:.3rem}
.mini-delinq .t{font-size:.82rem;line-height:1.25}
.mini-delinq .d{font-size:.72rem}
.card{background:var(--carte);border:1px solid var(--filet);border-radius:var(--rayon);
padding:1.1rem 1.2rem;margin:1rem 0}
.grid{display:grid;gap:.9rem;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr))}
.cards{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(19rem,1fr));margin:1.5rem 0}
.sections{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(20rem,1fr));margin:1.5rem 0}
.sec{background:var(--carte);border:1px solid var(--filet);border-radius:var(--rayon);
padding:1.15rem 1.2rem;display:flex;flex-direction:column;gap:.42rem;text-decoration:none;color:inherit}
.sec:hover{border-color:var(--accent)}
.sec .v{font:600 1.6rem/1 var(--sans);letter-spacing:-.03em}
.sec .t{font-weight:600;font-size:.98rem}
.sec .d{font-size:.855rem;color:var(--attenue);line-height:1.5;margin-top:auto}
.sec.vide{background:transparent;border-style:dashed}
.sec.vide .v{font:500 .95rem/1.3 var(--sans);color:var(--attenue);letter-spacing:0}

/* ── Tableaux ────────────────────────────────────────────────────────── */
table{border-collapse:collapse;width:100%;font-size:.9rem}
.scroll{overflow-x:auto}
th,td{text-align:left;padding:.55rem .7rem;border-bottom:1px solid var(--filet);vertical-align:top}
th{font:500 .68rem/1.2 var(--mono);letter-spacing:.09em;text-transform:uppercase;
color:var(--attenue);border-bottom:1px solid var(--attenue);vertical-align:bottom}
td.n,th.n{text-align:right;white-space:nowrap}
.num,td:has(+td){font-variant-numeric:tabular-nums}
tbody tr:hover{background:var(--carte)}
.z{color:var(--attenue);font-weight:400}

/* ── Positions de vote : les seules couleurs sémantiques ─────────────── */
.pos{font-weight:600;white-space:nowrap}
.FOR,.POUR{color:var(--pour)}.AGAINST,.CONTRE{color:var(--contre)}
.ABSTAIN,.ABST{color:var(--abst)}
/* Non-votant : désaturé et sans graisse. Ce n'est pas une position politique
   mais une donnée manquante, et son traitement visuel le dit. */
.ABSENT,.NON_VOTING{color:var(--absent);font-weight:400}
.NR{color:var(--absent);font-weight:400;font-style:italic}
/* La couleur n'est jamais seule : chaque position porte aussi une FORME. */
.pastille{display:inline-flex;align-items:center;gap:.42rem;white-space:nowrap}
.pastille::before{content:"";width:9px;height:9px;border-radius:2.5px;background:currentColor;
flex:0 0 auto}
.pastille.ABSENT::before,.pastille.NON_VOTING::before{background:transparent;
border:1.5px solid currentColor}
.pastille.NR::before{background:transparent;border:1.5px dashed currentColor}

/* ── Barres ──────────────────────────────────────────────────────────── */
.bar{display:flex;height:8px;border-radius:4px;overflow:hidden;background:var(--filet2);margin:.4rem 0}
.bar i{display:block}
/* Barre à échelle absolue : la largeur dit la magnitude, le remplissage dit
   la répartition. Une barre en pourcentage occupant toute la largeur ferait
   lire 4 voix comme 72. */
.ech{position:relative;height:15px;background:var(--filet2);border-radius:3px;overflow:hidden}
.ech .g{position:absolute;top:0;bottom:0;left:0;display:flex;border-radius:3px;overflow:hidden}
.ech .g i{display:block}

/* ── Bandeau de résultat et barre de seuil ───────────────────────────── */
.verdict{background:var(--carte);border:1px solid var(--filet);border-radius:var(--rayon);
padding:1.4rem 1.5rem;margin:1.6rem 0}
.verdict .haut{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;
flex-wrap:wrap;margin-bottom:1.1rem}
.verdict .etat{font:600 1.28rem/1.2 var(--sans);letter-spacing:-.02em}
.verdict .chiffre{font:400 .88rem/1.45 var(--mono);color:var(--attenue)}
.verdict .chiffre b{color:var(--encre);font-weight:500}
.seuil-bar{position:relative;height:34px;border-radius:6px;background:var(--filet2);
border:1px solid var(--filet);margin-top:1.6rem}
.seuil-bar .fill{position:absolute;top:0;bottom:0;left:0;border-radius:5px 0 0 5px;
display:flex;overflow:hidden}
.seuil-bar .fill i{display:block;height:100%}
.seuil-bar .tick{position:absolute;top:-9px;bottom:-9px;width:2px;background:var(--seuil)}
.seuil-bar .tick::after{content:attr(data-l);position:absolute;top:-1.4rem;left:50%;
transform:translateX(-50%);white-space:nowrap;font:500 .7rem/1 var(--mono);color:var(--encre)}
.seuil-lg{display:flex;gap:1.1rem;flex-wrap:wrap;margin-top:1.5rem;font-size:.82rem}
.seuil-lg span{display:inline-flex;align-items:center;gap:.42rem;color:var(--attenue)}
.seuil-lg i{width:10px;height:10px;border-radius:2.5px;display:block;flex:0 0 auto}

/* ── Grille des sièges : identité ET donnée ──────────────────────────── */
.grille{display:flex;flex-wrap:wrap;gap:3px;margin:.4rem 0}
.grille b{width:9px;height:9px;border-radius:2px;display:block;background:var(--absent-f)}
.grille b.p{background:var(--pour)}.grille b.c{background:var(--contre)}
.grille b.a{background:var(--abst)}
.grille b.nv{background:transparent;border:1.5px solid var(--absent)}
.grille b.nr{background:var(--filet)}
.bloc-gr{display:grid;gap:.9rem 1.4rem;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr))}
.bloc-gr .g{min-width:0}
.bloc-gr .g .nom{display:flex;align-items:baseline;justify-content:space-between;gap:.6rem;
font-size:.83rem;margin-bottom:.35rem}
.bloc-gr .g .nom b{font-weight:600}
.bloc-gr .g .nom span{color:var(--attenue);font:400 .76rem/1 var(--mono)}

/* ── Actions, citation ───────────────────────────────────────────────── */
.actions{display:flex;gap:.5rem;flex-wrap:wrap;margin:1.3rem 0 0}
.btn{display:inline-flex;align-items:center;gap:.45rem;font:500 .855rem/1 var(--sans);
border:1px solid var(--filet);background:var(--carte);color:var(--encre);
border-radius:var(--rayon-s);padding:.58rem .85rem;text-decoration:none;cursor:pointer}
.btn:hover{border-color:var(--accent);color:var(--accent)}
.btn.fort{background:var(--encre);color:var(--papier);border-color:var(--encre)}
.btn.fort:hover{opacity:.88;color:var(--papier)}
.cite{background:var(--papier2);border:1px solid var(--filet);border-radius:var(--rayon-s);
padding:.8rem .9rem;font:400 .8rem/1.65 var(--mono);color:var(--attenue);margin-top:.8rem;
word-break:break-word}
.cite b{color:var(--encre);font-weight:500}

/* ── Filtre local ────────────────────────────────────────────────────── */
.filtre{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center;margin:1.1rem 0}
.filtre input{border:1px solid var(--filet);background:var(--carte);border-radius:var(--rayon-s);
padding:.5rem .7rem;font:450 .875rem/1 var(--sans);color:var(--encre);min-width:12rem;outline:0}
.filtre input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-doux)}
.puce{font:500 .78rem/1 var(--sans);border:1px solid var(--filet);background:var(--carte);
color:var(--attenue);padding:.42rem .6rem;border-radius:999px;cursor:pointer}
.puce[aria-pressed=true]{background:var(--encre);color:var(--papier);border-color:var(--encre)}

/* ── Notes, absences, avertissements ─────────────────────────────────── */
.note,.warn{border-left:2px solid var(--filet);padding:.15rem 0 .15rem 1rem;
color:var(--attenue);font-size:.9rem;line-height:1.6;max-width:64ch;margin:1.2rem 0}
.note strong,.warn strong{color:var(--encre);font-weight:600}
.note.proc{border-left-color:var(--accent)}
.note.abs,.nodata{border-left:2px dashed var(--filet);padding:.15rem 0 .15rem 1rem;
color:var(--attenue);max-width:64ch}
details.plus{border-top:1px solid var(--filet);margin-top:1.6rem}
details.plus summary{cursor:pointer;padding:.85rem 0;font:500 .9rem/1 var(--sans);
color:var(--accent);list-style:none;display:flex;align-items:center;gap:.45rem}
details.plus summary::-webkit-details-marker{display:none}
details.plus summary::before{content:"+";font:500 1rem/1 var(--mono);width:1rem}
details.plus[open] summary::before{content:"\2212"}
details.plus .dedans{padding:0 0 1.2rem;display:grid;gap:.9rem}
details.plus .dedans > .note{margin:0}

/* ── Fil d'ariane, voisins ───────────────────────────────────────────── */
.fil{font-size:.82rem;color:var(--attenue);padding:.9rem 0 0;margin:0}
.fil a{text-decoration:none}
.voisins{display:flex;justify-content:space-between;gap:1rem;border-top:1px solid var(--filet);
margin-top:2.4rem;padding-top:1rem;font-size:.86rem}
.voisins a{text-decoration:none;max-width:22rem}
.voisins .lb{display:block;font:500 .68rem/1 var(--mono);letter-spacing:.1em;
text-transform:uppercase;color:var(--attenue);margin-bottom:.28rem}

/* ── Reste du répertoire de composants ───────────────────────────────── */
.kv{display:grid;grid-template-columns:auto 1fr;gap:.22rem 1.1rem;font-size:.93rem}
.kv dt{color:var(--attenue)}.kv dd{margin:0}
ul.tight{margin:.3rem 0;padding-left:1.1rem}
code{font-size:.85em;font-family:var(--mono);background:var(--filet2);
padding:.12em .38em;border-radius:4px}
.annee{margin:1.8rem 0}.annee h3{margin-bottom:.4rem}
/* Le demi-anneau des référentiels tiers a sa propre classe : il s'appelait « jauge »,
   comme la barre de 4 px des budgets (plus bas), qui l'écrasait — les valeurs CHES des
   pages d'organisation tenaient en un trait de 4 px. */
.jauge-demi{width:150px;height:87px;display:block;color:var(--attenue)}
.poles{display:flex;justify-content:space-between;gap:.6rem;width:150px;
font-size:.7rem;line-height:1.25;text-align:left}
.poles span:last-child{text-align:right}
.cand{background:var(--carte);border:1px solid var(--filet);border-radius:var(--rayon);
padding:1.1rem 1.2rem;display:flex;flex-direction:column;gap:.7rem}
.cand h3{margin:0;font:600 1.02rem/1.3 var(--sans)}
.cand header.avec-portrait{display:flex;gap:.8rem;align-items:flex-start}
.cand header a{text-decoration:none}
.cand .bilan{flex:1}
.cand .chiffre{font:600 1.5rem/1.1 var(--sans);letter-spacing:-.025em}
.cand .bilan.vide{display:flex;flex-direction:column;gap:.4rem;justify-content:center}
.cand .etiquette{display:inline-block;align-self:flex-start;font-size:.78rem;
border:1px solid var(--filet);color:var(--attenue);padding:.2rem .58rem;border-radius:999px}
.cand footer{border-top:1px solid var(--filet);padding-top:.5rem;margin-top:auto}
.portrait{border-radius:50%;object-fit:cover;flex:0 0 auto;background:var(--filet)}
.portrait.vide{width:64px;height:64px;border-radius:50%;background:var(--filet)}
.entete-portrait{display:flex;gap:1.3rem;align-items:flex-start;margin-bottom:1rem;flex-wrap:wrap}
.entete-portrait img{border-radius:var(--rayon);background:var(--carte);border:1px solid var(--filet)}

/* ── Barre d'onglets (mobile) ────────────────────────────────────────── */
.tabbar{display:none}
.tabbar a,.tabbar button{display:flex;flex-direction:column;align-items:center;gap:.22rem;
padding:.5rem 0 .65rem;font:500 .66rem/1 var(--sans);color:var(--attenue);text-decoration:none;
background:0;border:0;cursor:pointer}
.tabbar a[aria-current]{color:var(--accent)}
.tabbar a .ico,.tabbar button .ico{width:19px;height:19px;opacity:1}

/* ── Pied ────────────────────────────────────────────────────────────── */
footer.pied{background:var(--carte);border-top:1px solid var(--filet);
padding:2.6rem 0 3rem;color:var(--attenue);font-size:.86rem;margin-top:3.5rem}
footer.pied .cols{display:grid;gap:1.8rem;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr))}
footer.pied h4{font:500 .68rem/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;
color:var(--encre);margin:0 0 .7rem}
footer.pied ul{list-style:none;margin:0;padding:0;display:grid;gap:.35rem}
footer.pied a{text-decoration:none}
footer.pied p{margin:0 0 .5rem;max-width:34rem}
footer.pied .bas{border-top:1px solid var(--filet);margin-top:2rem;padding-top:1.2rem;
font-size:.8rem;max-width:none}

/* ── Mobile ──────────────────────────────────────────────────────────── */
@media(max-width:52rem){
  .wrap{padding:0 1.05rem}
  header.top nav{display:none}
  header.top button.rech.compact{display:none}
  .hero{padding:1.7rem 0 1.9rem}
  .hero h1{font-size:1.72rem;max-width:none}
  .hero .lede{font-size:.96rem;margin-bottom:1.4rem}
  .ancrage{gap:1rem;margin-top:1.4rem}
  h1{font-size:1.6rem}h2{font-size:1.28rem;margin-top:2.2rem}
  .h2{font-size:1.28rem}
  .bloc{padding:2rem 0}
  .chiffres{grid-template-columns:1fr 1fr;gap:1rem .8rem}
  .cartes,.cartes.trois,.sections,.cards,.grid{grid-template-columns:1fr}
  .ligne{grid-template-columns:1fr;gap:.4rem;padding:.9rem 0}
  .ligne .r{text-align:left}
  .ligne .mini{max-width:11rem}
  .bloc-gr{grid-template-columns:1fr}
  .voisins{flex-direction:column;gap:.9rem}
  .voisins a{max-width:none}
  .seuil-bar{margin-top:2rem}
  .seuil-bar .tick::after{font-size:.64rem;top:-1.25rem}
  .verdict{padding:1.1rem}
  .verdict .haut{flex-direction:column;gap:.6rem}
  .verdict .haut > div:last-child{text-align:left!important}
  table{font-size:.87rem}th,td{padding:.5rem .55rem}
  /* Un tableau se replie en liste : aucune colonne coupée, aucun défilement
     horizontal invisible. */
  table.pile thead{display:none}
  table.pile tr{display:grid;grid-template-columns:1fr auto;gap:.15rem .8rem;
  padding:.65rem 0;border-bottom:1px solid var(--filet)}
  table.pile tr:hover{background:transparent}
  table.pile td{border:0;padding:0}
  table.pile-1 tr{grid-template-columns:1fr;gap:.2rem}
  table.pile.nomin td:nth-child(2)::before{content:"Groupe ";color:var(--attenue);
    font:500 .68rem/1.2 var(--mono);letter-spacing:.06em;text-transform:uppercase}
  table.pile.nomin td:nth-child(3)::before{content:"Position ";color:var(--attenue);
    font:500 .68rem/1.2 var(--mono);letter-spacing:.06em;text-transform:uppercase}
  table.pile td[data-l]::before{content:attr(data-l) " ";
  font:500 .66rem/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;
  color:var(--attenue);margin-right:.35rem}
  .tabbar{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;position:sticky;bottom:0;
  background:var(--carte);border-top:1px solid var(--filet);z-index:20}
  footer.pied{margin-top:2rem}
}

/* ── Cartes ───────────────────────────────────────────────────────────
   Rendues en SVG par la base, sans bibliothèque ni tuile. La couleur seule
   ne porte jamais l'information : chaque tracé a son <title>, et la légende
   donne les bornes réelles des classes, pas des nombres ronds inventés. */
/* .geo, et surtout PAS .carte : la feuille définit déjà .carte pour les cartes
   au sens « fiche » (display:flex, colonne, gap). Les deux sens du mot se sont
   effectivement percutés — le display:block du second effaçait la colonne du
   premier, et sur l'accueil « 8 434 » se collait à « Assemblée nationale ». */
.geo{width:100%;height:auto;display:block}
.geo path{stroke:var(--papier);stroke-width:1100;stroke-linejoin:round;
transition:opacity .12s}
.geo:hover path{opacity:.55}
.geo path:hover{opacity:1}
/* Les grands cours d'eau : un calque de repère commun à toutes les cartes de
   métropole (fleuvesSVG, cmd/build/carte.go) — jamais interactif, toujours
   entre le fond et les données pour ne recouvrir ni l'un ni l'autre. */
.geo .fleuve{fill:none;stroke:var(--eau);stroke-width:700;stroke-linejoin:round;
pointer-events:none;opacity:.6}
/* Le nom de chaque région (etiquettesRegions, cmd/build/carte.go) : une
   choroplèthe va du très clair au très foncé selon l'indicateur, jamais la
   même teinte de page en page — un halo clair tracé sous le texte (au lieu
   d'une seule couleur de remplissage) reste lisible sur les deux bouts de
   la rampe. Taille normale, agrandie par le <g transform="scale(...)">
   généré autour de chaque étiquette, jamais par le font-size lui-même (voir
   le commentaire de dessinerCarteSGM, seconde_guerre_mondiale.go). */
.geo .nom-region{font:600 12px/1 var(--sans);fill:var(--encre);opacity:.9;
  paint-order:stroke fill;stroke:var(--papier);stroke-width:3px;stroke-linejoin:round;
  pointer-events:none}
/* Les cartes en degrés (France seule, échelle ~16 unités de large) ont un
   ordre de grandeur de coordonnées totalement différent des cartes en
   Lambert-93 (échelle ~1 000 000 d'unités) : un même stroke-width de 700
   y noierait tout le tracé sous un aplat plein. */
.geo.france .fleuve{stroke-width:.05}
.geo.ports-infra .fond{fill:var(--papier2);pointer-events:none}
.geo.ports-infra .autoroute-p{fill:none;stroke:#B0763A;stroke-width:900;pointer-events:none}
.geo.ports-infra .voie-ferree-p{fill:none;stroke:#5A5850;stroke-width:900;stroke-dasharray:2200 1400;pointer-events:none}
.geo.ports-infra .port-m{fill:var(--accent);stroke:var(--carte);stroke-width:1200}
.geo.ports-infra .port-lbl{font-family:var(--sans);font-weight:700;fill:var(--encre);pointer-events:none}
.geo.eptb-epage .fond{fill:var(--papier2);pointer-events:none}
.geo.ifi .fond{fill:var(--papier2);pointer-events:none}
.geo.ifi .ifi-c{fill:#7A3B8C;fill-opacity:.65;stroke:#4A215C;stroke-width:600}
.geo.ifi .ifi-c:hover{fill-opacity:.9}

.geo.musees .fond{fill:var(--papier2);stroke:var(--carte);stroke-width:400;pointer-events:none}
.geo.musees .musee-c{fill:var(--accent);fill-opacity:.6;stroke:var(--accent);stroke-width:400}
.geo.musees .musee-c:hover{fill-opacity:.85}

.geo.etudiants .fond{fill:var(--papier2);stroke:var(--carte);stroke-width:400;pointer-events:none}
.geo.etudiants .etu-c{fill:#4B7A8C;fill-opacity:.6;stroke:#4B7A8C;stroke-width:300}
.geo.etudiants .etu-c:hover{fill-opacity:.85}

.geo.sru .fond{fill:var(--papier2);stroke:var(--carte);stroke-width:400;pointer-events:none}
.geo.sru .sru-c{stroke-width:300}
.geo.sru .sru-conforme{fill:#4B7A3D;fill-opacity:.55;stroke:#4B7A3D}
.geo.sru .sru-deficitaire{fill:#B0763A;fill-opacity:.6;stroke:#B0763A}

.geo.incendie .eau{fill:var(--eau);fill-opacity:.4;stroke:none;pointer-events:none}
.geo.incendie .fond{fill:var(--papier2);stroke:var(--carte);stroke-width:400;pointer-events:none}
.geo.incendie .fleuve{fill:none;stroke:var(--eau);stroke-width:220;stroke-linejoin:round;pointer-events:none;opacity:.8}
.geo.incendie .brule{fill:#4A3225;stroke:#2B1810;stroke-width:60}
.geo.incendie .ville-point{fill:var(--encre);stroke:var(--papier);stroke-width:1px}
.geo.incendie .ville-nom{font:500 10px/1 var(--sans);fill:var(--encre);opacity:.9;
  paint-order:stroke fill;stroke:var(--papier);stroke-width:3px;stroke-linejoin:round;pointer-events:none}
.geo.sru .sru-carencee{fill:#9A3322;fill-opacity:.7;stroke:#9A3322}
.geo.sru .sru-c:hover{fill-opacity:.9}
.echelle{display:flex;gap:.3rem .5rem;flex-wrap:wrap;align-items:center;margin-top:.7rem;
font-size:.73rem;color:var(--attenue);line-height:1.3}
.echelle .u{font:500 .66rem/1 var(--mono);letter-spacing:.09em;text-transform:uppercase}
.echelle span{display:inline-flex;align-items:center;gap:.35rem}
.echelle i{width:19px;height:10px;border-radius:2px;display:block;flex:0 0 auto}
/* Les vignettes de l'index renvoient aux tracés d'un <defs> partagé : le même
   contour sert quinze cartes au lieu d'être réécrit quinze fois. Le <use> ne
   porte pas d'infobulle — le détail est à un clic. */
.geo use{stroke:var(--papier);stroke-width:3000;stroke-linejoin:round}
.geo.apercu{pointer-events:none}
/* Carte maillée : aucune valeur n'y est encodée par couleur, donc ni rampe ni
   légende — seule la mosaïque des communes et le contour de leurs
   intercommunalités, pour se repérer dans le détail d'un territoire. */
/* Sur la page d'un département ou d'une intercommunalité, la carte maillée
   n'est qu'UNE section parmi d'autres — contrairement à /territoires/<slug>/,
   où la carte EST le sujet de toute la page et remplit .carte-pleine (44rem).
   Sans plafond, .geo{width:100%} l'étirait sur toute la largeur de l'article. */
.geo.maille{max-width:26rem}
.geo.maille:hover path{opacity:1}
/* stroke-width:inherit, pas une valeur fixe : cmd/build/carte_maillee.go pose
   déjà l'épaisseur du trait sur le <g> parent (largeur/900, largeur/420),
   proportionnelle à l'étendue de CETTE carte — un département et une seule
   intercommunalité n'ont pas la même échelle. La règle générique .geo
   path{stroke-width:1100} plus haut aurait sinon gagné sur la cascade
   (aucune autre règle ne posait stroke-width sur ces path), et à l'échelle
   d'une intercommunalité (quelques dizaines de km) 1100 avalait la mosaïque
   des communes sous un trait ~20 fois trop épais. */
.geo.maille .maille-c path{fill:var(--carte);stroke:var(--filet);transition:fill .12s;stroke-width:inherit}
.geo.maille .maille-c path:hover{fill:var(--accent-doux)}
.geo.maille .maille-e path{fill:none;stroke:var(--accent);stroke-linejoin:round;
stroke-opacity:.72;pointer-events:none;stroke-width:inherit}
/* Contexte d'une carte de groupement (carteCommunesEPCIAvecContexte) : les
   communes voisines, non membres, en retrait — jamais la même teinte que la
   mosaïque mise en évidence, jamais cliquables ni au survol. */
.geo.maille .maille-ctx path{fill:var(--papier2);stroke:var(--filet2);
stroke-width:inherit;pointer-events:none}
.cartes-grille{display:grid;gap:1.6rem 1.3rem;
grid-template-columns:repeat(auto-fill,minmax(15rem,1fr))}
/* Une ligne par carte, comme la carte « une » de l'accueil : la vignette a
   besoin d'assez de largeur pour que sa rangée de cartons outre-mer tienne
   sur une seule ligne — un carton de plus qu'une colonne de grille étroite. */
.cartes-lignes{display:flex;flex-direction:column;gap:1.4rem}
.cartes-lignes .bloc-carte.ligne{display:grid;grid-template-columns:minmax(0,18rem) minmax(0,1fr);
gap:1.4rem;align-items:start;flex-direction:unset}
.cartes-lignes .bloc-carte.ligne .q{min-height:0}
@media(max-width:52rem){.cartes-lignes .bloc-carte.ligne{grid-template-columns:1fr}}
/* .grandes : la carte pleine plutôt qu'une vignette (accueil, onglets-carte
   depuis le 20 septembre 2026) — même rapport carte/légende que
   .cartes-empilees (1.15fr/1fr), scopé à .cartes-lignes.grandes seul pour ne
   pas élargir la grille étroite des autres usages de .cartes-lignes
   (l'index complet de /collectivites/, en vignettes, doit le rester).
   max-width:none annule le plafond à 44rem de .onglets-carte .panneaux
   .bloc-carte (ligne plus bas) : ce plafond visait les anciennes vignettes
   de ce composant, pas une carte pleine qui doit occuper toute la largeur
   disponible — sinon la moitié droite de la section reste vide. */
.cartes-lignes.grandes .bloc-carte.ligne{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);
max-width:none}
@media(max-width:52rem){.cartes-lignes.grandes .bloc-carte.ligne{grid-template-columns:1fr}}
.bloc-carte{background:var(--carte);border:1px solid var(--filet);
border-radius:var(--rayon);padding:1.1rem 1.15rem;display:flex;flex-direction:column;
color:inherit;text-decoration:none;transition:border-color .12s,box-shadow .12s}
a.bloc-carte:hover,a.bloc-carte:focus-visible{border-color:var(--accent);
box-shadow:0 1px 12px rgba(0,0,0,.06)}
.bloc-carte h3{margin:0 0 .2rem;font-size:.98rem}
a.bloc-carte:hover h3{text-decoration:underline;text-underline-offset:3px}
.bloc-carte .q{color:var(--attenue);font-size:.85rem;margin:0 0 .8rem;line-height:1.45;
min-height:3.9em}
.bloc-carte .echelle{margin-bottom:auto}
.bloc-carte .src{display:block;font:400 .7rem/1.4 var(--mono);color:var(--attenue);
margin-top:.7rem;padding-top:.6rem;border-top:1px solid var(--filet)}
.bloc-carte .voir,.voir{display:block;font:500 .78rem/1.35 var(--sans);
color:var(--accent);margin-top:.55rem}
.attr-osm{font:400 .7rem/1.45 var(--mono);color:var(--attenue);margin-top:.5rem}

/* ── Page d'une carte : tracé fin, classement complet, série ───────── */
.carte-pleine{background:var(--carte);border:1px solid var(--filet);
border-radius:var(--rayon);padding:1.2rem 1.3rem;margin:1.2rem 0 .6rem;
max-width:44rem}
.liens-cartes{list-style:none;padding:0;margin:.8rem 0 0;display:flex;
flex-wrap:wrap;gap:.4rem .5rem}
.liens-cartes a{display:inline-block;border:1px solid var(--filet);
border-radius:100px;padding:.28rem .7rem;font-size:.82rem;text-decoration:none}
.liens-cartes a:hover{border-color:var(--accent)}
table.classement{width:100%;border-collapse:collapse;font-size:.88rem}
table.classement th{font:500 .66rem/1 var(--mono);letter-spacing:.09em;
text-transform:uppercase;color:var(--attenue);text-align:left;
padding:.4rem .6rem;border-bottom:1px solid var(--filet)}
table.classement td{padding:.32rem .6rem;border-bottom:1px solid var(--filet)}
table.classement td.r,table.classement td.c{font:400 .78rem/1 var(--mono);
color:var(--attenue)}
table.classement td.n{text-align:right;font-variant-numeric:tabular-nums;
white-space:nowrap}
th.barre,td.barre{width:30%;min-width:5rem}
td.barre span{display:block;height:9px;border-radius:2px;
background:var(--accent);opacity:.5}

/* Série annuelle : une seule échelle, ancrée à zéro, deux étiquettes. */
.courbe{width:100%;height:auto;display:block;max-width:44rem;margin:.4rem 0 .2rem}
.courbe .axe{stroke:var(--filet);stroke-width:1}
.courbe .aire{fill:var(--accent);opacity:.10}
.courbe .trait{fill:none;stroke:var(--accent);stroke-width:2;
stroke-linejoin:round;stroke-linecap:round}
.courbe .pt{fill:var(--accent);stroke:var(--carte);stroke-width:2}
.courbe .et{font:600 .78rem/1 var(--sans);fill:var(--encre)}
.courbe .an{font:400 .7rem/1 var(--mono);fill:var(--attenue)}
.courbe .fin{text-anchor:end}

/* Courbe à paliers : une série longue découpée en régimes datés. La bande
   alternée sépare les régimes sans tracer de frontière — une ligne verticale
   suggérerait une rupture nette là où il n'y a qu'un changement de pente. */
.courbe.paliers .bande{fill:var(--papier2)}
.courbe .pal{font:500 .72rem/1 var(--sans);fill:var(--attenue);text-anchor:middle}
.courbe .pal.moy{font:600 .74rem/1 var(--sans);fill:var(--encre)}
.courbe .et.haut{text-anchor:middle}

/* Glissement sectoriel : quatre courbes de part d'emploi, une couleur par
   secteur — pas de dégradé, chaque secteur doit rester identifiable seul. */
.glissement-sectoriel .grille{stroke:var(--filet);stroke-width:1}
.glissement-sectoriel .ligne-agriculture{fill:none;stroke:#4B7A3D;stroke-width:2}
.glissement-sectoriel .ligne-industrie{fill:none;stroke:#8C4B3A;stroke-width:2}
.glissement-sectoriel .ligne-construction{fill:none;stroke:#B08B3A;stroke-width:2}
.glissement-sectoriel .ligne-services{fill:none;stroke:#1E5C69;stroke-width:2.4}
.glissement-sectoriel .ligne-agriculture-pt{fill:#4B7A3D}
.glissement-sectoriel .ligne-industrie-pt{fill:#8C4B3A}
.glissement-sectoriel .ligne-construction-pt{fill:#B08B3A}
.glissement-sectoriel .ligne-services-pt{fill:#1E5C69}
.glissement-sectoriel .ligne-agriculture-lbl{fill:#4B7A3D}
.glissement-sectoriel .ligne-industrie-lbl{fill:#8C4B3A}
.glissement-sectoriel .ligne-construction-lbl{fill:#B08B3A}
.glissement-sectoriel .ligne-services-lbl{fill:#1E5C69}
.glissement-sectoriel [class$="-lbl"]{font:600 .68rem/1 var(--sans)}

/* Délocalisations, série annuelle : une bande bas-haut, pas une seule
   courbe — le scénario central se lit dedans, jamais seul. */
.delocalisation-annuelle .bande{fill:var(--accent);opacity:.14;stroke:none}
.delocalisation-annuelle .ligne-centrale{fill:none;stroke:var(--accent);stroke-width:2}
.delocalisation-annuelle .pt-central{fill:var(--accent)}

.geo.delocalisation .fond{fill:var(--papier2);pointer-events:none}
.geo.delocalisation .deloc-c{fill:#8C4B3A;fill-opacity:.6;stroke:#5C2E22;stroke-width:600}
.geo.delocalisation .deloc-c:hover{fill-opacity:.9}

/* Haltère (dumbbell) : un point de départ, un point d'arrivée, reliés — pour
   montrer un déplacement de part, jamais un volume brut qui masquerait le
   mouvement derrière les plus gros partenaires historiques. */
.haltere-commerce{width:100%;height:auto;display:block;max-width:44rem;margin:.4rem 0 .2rem}
.haltere-commerce .pays{font:500 .78rem/1 var(--sans);fill:var(--encre);text-anchor:end}
.haltere-commerce .trait{stroke:var(--attenue);stroke-width:2;opacity:.55}
.haltere-commerce .pt-debut{fill:var(--papier);stroke:var(--attenue);stroke-width:1.6}
.haltere-commerce .pt-fin{fill:#8C4B3A}
.haltere-commerce .val{font:500 .68rem/1 var(--mono);fill:var(--attenue)}

/* Choroplèthe mondiale : fond neutre pour tous les pays, seuils de bleu-vert
   croissants pour la part de francophones — une seule teinte, pas un
   dégradé arc-en-ciel qui suggérerait une échelle continue non étiquetée.
   Le bleu d'océan (--accent-doux, la même teinte pâle que .poids ailleurs
   sur le site) comble l'espace hors des pays — sans lui les territoires
   flottaient sur un fond vide, ni mer ni terre. */
.geo.monde{background:var(--accent-doux);border-radius:var(--rayon-s)}
.geo.monde .fond{fill:var(--papier2);stroke:var(--carte);stroke-width:.3;pointer-events:none}
.geo.monde .pays-p{stroke:var(--carte);stroke-width:.3}
.geo.monde .pays-p:hover{opacity:.8}
.geo.francophonie .fr-0{fill:#CFE3E6}
.geo.francophonie .fr-1{fill:#9FC7CD}
.geo.francophonie .fr-2{fill:#6FABB4}
.geo.francophonie .fr-3{fill:#448493}
.geo.francophonie .fr-4{fill:#256270}
.geo.francophonie .fr-5{fill:#12414B}
/* Taille calée sur la largeur réelle de cette carte pleine largeur, plus
   large en degrés que celle de l'empire colonial (360 contre 240) pour un
   affichage à l'écran de taille comparable. */
.geo.francophonie .nom-francophone{font:600 4px/1 var(--sans);fill:var(--carte);
  opacity:.95;pointer-events:none}

/* Empire colonial : chaque territoire coloré par vague de décolonisation,
   pas de fond mondial neutre (les 22 territoires seuls suffisent à situer
   le propos, à la différence de la Francophonie où le contraste avec le
   reste du monde est le point). */
.geo.empire-colonial .territoire-p{stroke:var(--carte);stroke-width:.4}
.geo.empire-colonial .territoire-p:hover{opacity:.8}
.geo.empire-colonial .vague-1{fill:#C97B4A}
.geo.empire-colonial .vague-2{fill:#8C4B3A}
.geo.empire-colonial .vague-3{fill:#4A2E3A}
/* Taille calée sur la largeur réelle de cette carte pleine largeur
   (~240 degrés pour ~700 px à l'écran) — sans rapport avec celle
   d'Indochine ou d'Europe, qui n'occupent pas la même part de page. */
.geo.empire-colonial .nom-territoire{font:600 2.7px/1 var(--sans);fill:var(--carte);
  opacity:.95;pointer-events:none}
.echelle i.vague-1{background:#C97B4A}
.echelle i.vague-2{background:#8C4B3A}
.echelle i.vague-3{background:#4A2E3A}
table tr.groupe td{background:var(--papier2);font:600 .68rem/1 var(--mono);
  text-transform:uppercase;letter-spacing:.06em;padding:.5rem .6rem}
table tr.vague-1 td:first-child{border-left:3px solid #C97B4A}
table tr.vague-2 td:first-child{border-left:3px solid #8C4B3A}
table tr.vague-3 td:first-child{border-left:3px solid #4A2E3A}

/* Quatre petites cartes du monde côte à côte (1900/1920/1938/1946) : la
   croissance de l'empire, pas sa décolonisation — une seule teinte, jamais
   les couleurs de vague-1/2/3 ci-dessus, qui n'ont pas de sens ici. */
.empire-extension{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));
margin:1rem 0}
.empire-extension figure{margin:0;background:var(--carte);border:1px solid var(--filet);
border-radius:var(--rayon-s);padding:.6rem .6rem .7rem;text-align:center}
.empire-extension .territoire-p.annee-repere{fill:#8C4B3A}
.empire-extension figcaption{margin-top:.5rem;font:500 .92rem var(--titre);color:var(--encre)}
.empire-extension figcaption span{display:block;font:400 .72rem var(--mono);color:var(--attenue);
margin-top:.15rem}

/* La partition de l'Indochine, 1954 : deux volets côte à côte (.deux-cartes,
   déjà utilisé par budget.gohtml) plutôt qu'un ajout à la carte de l'empire
   colonial ci-dessus — la République démocratique du Viêt Nam (Nord) et la
   République du Viêt Nam (Sud) n'ont pas de « date d'indépendance vis-à-vis
   de la France », le cadre de vague-1/2/3 ne s'applique donc pas (voir
   cmd/build/indochine_partition.go). Même bleu neutre que .fr-0
   (Francophonie) pour le volet « avant » et pour le Laos/Cambodge du volet
   « après » — ce ne sont pas des catégories à comparer entre elles, juste un
   repère géographique commun aux deux volets.  */
.geo.indochine-1954{background:var(--accent-doux);border-radius:var(--rayon-s)}
.geo.indochine-1954 .voisin{fill:var(--papier2);stroke:var(--carte);stroke-width:.05;opacity:.8}
.geo.indochine-1954 .avant,.geo.indochine-1954 .contexte{fill:#6FABB4;stroke:var(--carte);stroke-width:.05}
.geo.indochine-1954 .nord{fill:#8C4B3A;stroke:var(--carte);stroke-width:.05}
.geo.indochine-1954 .sud{fill:#C97B4A;stroke:var(--carte);stroke-width:.05}
/* Échelle en degrés (17 unités de large, voir chargerIndochinePartition) :
   une taille de police directe reste normale ici, pas besoin de la
   transformation matricielle utilisée pour les cartes en Lambert-93/LAEA
   du dossier Seconde Guerre mondiale. */
.geo.indochine-1954 .repere-asie{font:600 .6px/1 var(--sans);fill:var(--seuil);opacity:.9;pointer-events:none}
.geo.indochine-1954 .repere-contexte{font-weight:500;font-size:.5px;opacity:.7}
.sous-legende{text-align:center;font:500 .78rem/1 var(--sans);color:var(--attenue);margin:.4rem 0 0}
/* Étiquette de survol (site.js) : le nom de la forme survolée, affiché ici
   plutôt que dans l'infobulle native du navigateur (lente à apparaître,
   minuscule, invisible au clavier). Hauteur réservée même vide, pour que
   la légende sous elle ne saute pas d'une ligne à l'autre. */
.etiquette-survol{text-align:center;font:600 .8rem/1.4rem var(--sans);color:var(--encre);
  min-height:1.4rem;margin:.3rem 0 0}

/* Ports français : quatre grands ports maritimes, chacun sa couleur — pas
   de gris/nommé comme SIPRI, quatre lignes seulement restent lisibles. */
.ports-fr .grille{stroke:var(--filet);stroke-width:1}
.ports-fr .et{font:500 .62rem/1 var(--mono);fill:var(--attenue);text-anchor:end}
.ports-fr .an{font:500 .66rem/1 var(--mono);fill:var(--attenue)}
.ports-fr .lbl-haropa,.ports-fr .lbl-marseille,.ports-fr .lbl-dunkerque,.ports-fr .lbl-nantes{
  font:600 .66rem/1 var(--sans)}
.ports-fr .ligne-haropa{fill:none;stroke:var(--accent);stroke-width:2.4}
.ports-fr .pt-haropa,.ports-fr .lbl-haropa{fill:var(--accent)}
.ports-fr .ligne-marseille{fill:none;stroke:#9A3322;stroke-width:2}
.ports-fr .pt-marseille,.ports-fr .lbl-marseille{fill:#9A3322}
.ports-fr .ligne-dunkerque{fill:none;stroke:#2F6B7A;stroke-width:2}
.ports-fr .pt-dunkerque,.ports-fr .lbl-dunkerque{fill:#2F6B7A}
.ports-fr .ligne-nantes{fill:none;stroke:#7A6A2F;stroke-width:2}
.ports-fr .pt-nantes,.ports-fr .lbl-nantes{fill:#7A6A2F}

/* Protection sociale, contributif/non contributif : même patron que
   .secteurs-bloc (Union européenne), trois catégories au lieu de trois
   secteurs. */
.barres-contributif{width:100%;height:auto;display:block;max-width:44rem;margin:.4rem 0 .2rem}
.barres-contributif .cat{font:500 .74rem/1 var(--sans);fill:var(--encre);text-anchor:end}
.barres-contributif .an{font:400 .68rem/1 var(--mono);fill:var(--attenue)}
.barres-contributif .contrib{fill:#1E5C69}
.barres-contributif .noncontrib{fill:#8C4B3A}
.barres-contributif .mixte{fill:#A8A396}
.barres-contributif .et-seg{font:600 .66rem/1 var(--sans);fill:var(--carte);text-anchor:middle}

/* Semi-conducteurs : cinq sites, un seul marqueur — pas de taille
   proportionnelle, l'aide publique n'étant connue que pour deux sites sur
   cinq (voir le commentaire de cmd/build/souverainete_carte.go). Projetée
   en Lambert-93 depuis le 20 septembre 2026 (elle dessinait les degrés
   WGS84 bruts, étirés d'environ 47 % d'ouest en est à cette latitude) —
   d'où des largeurs de trait à l'échelle du mètre, comme les autres
   cartes Lambert-93 du site. */
.geo.france.semi-conducteurs .fond{fill:var(--papier2);stroke:var(--carte);stroke-width:2000}
.geo.france.semi-conducteurs .fleuve{stroke-width:800}
.geo.france.semi-conducteurs .site{fill:var(--accent);stroke:var(--carte);stroke-width:1200}

/* Établissements pénitentiaires : un seuil à 100 %, une seule teinte pour
   les vingt barres — c'est le classement qui informe, pas une couleur. */
.barres-surpeuplement .cat{font:500 .62rem/1 var(--sans);text-anchor:end}
.barres-surpeuplement .val{font:600 .66rem/1 var(--mono)}
.barres-surpeuplement .barre{fill:var(--accent)}
.barres-surpeuplement .seuil{stroke:var(--contre);stroke-width:1;stroke-dasharray:3 3}

/* Comparaison européenne : la France en accent, les trois ports du range
   nord-européen en neutre — le contraste de longueur des barres est le
   fait, pas besoin de couleurs distinctes pour Rotterdam/Anvers/Hambourg. */
.barres-ports-europe .cat{font:600 .68rem/1 var(--sans);text-anchor:end}
.barres-ports-europe .val{font:500 .66rem/1 var(--mono);fill:var(--attenue)}
.barres-ports-europe .barre-fr{fill:var(--accent)}
.barres-ports-europe .barre-autre{fill:var(--attenue)}

/* Report modal par port : un plafond ("moins de X %") se distingue d'un
   chiffre exact par une trame plutôt qu'un aplat, pour ne jamais laisser
   croire à la même précision. */
.report-modal-port .cat{font:600 .68rem/1 var(--sans);text-anchor:end}
.report-modal-port .val{font:500 .66rem/1 var(--mono);fill:var(--attenue)}
.report-modal-port .barre-plein{fill:var(--eau)}
.report-modal-port .barre-plafond{fill:var(--eau);fill-opacity:.45}

/* Report modal conteneurs : trois segments empilés (fer/fleuve/route), la
   même échelle 0-100 % pour les trois ports comparés. */
.report-modal-conteneurs .cat{font:600 .68rem/1 var(--sans);text-anchor:end}
.report-modal-conteneurs .seg-fer{fill:var(--accent)}
.report-modal-conteneurs .seg-fleuve{fill:var(--eau)}
.report-modal-conteneurs .seg-route{fill:var(--absent-f)}

/* Seconde Guerre mondiale : la France en silhouette, la ligne de
   démarcation par-dessus — pas de remplissage par zone, aucune géométrie
   de zone vérifiée n'ayant été trouvée (voir le dossier). */
/* La France resituée dans l'Europe de l'Ouest de 1940 (§ 20 septembre 2026,
   la carte ne montrait que la France seule sur un fond vide) : la France
   elle-même en fond clair et trait plus marqué pour rester le sujet
   principal, ses voisins classés par statut belligérant (voir
   statutBelligerant, seconde_guerre_mondiale.go) en retrait derrière elle.
   Depuis le 20 septembre 2026, ces deux cartes sont projetées (Lambert-93
   pour les débarquements, LAEA Europe pour celle-ci) plutôt que dessinées
   en degrés WGS84 bruts, qui étiraient tout d'environ 47 % d'ouest en est
   à cette latitude — d'où des largeurs de trait à l'échelle du mètre,
   comme le reste des cartes Lambert-93 du site (voir .geo path plus haut),
   et non plus les fractions de degré d'avant. */
.geo.france.sgm .ocean{fill:var(--eau);fill-opacity:.22;stroke:none}
.geo.france.sgm .fond{fill:var(--papier2);stroke:var(--encre);stroke-width:2500}
/* La France coupée en deux aplats plutôt qu'un fond uniforme sous la seule
   ligne de démarcation (repéré à la vue de la carte publiée : le partage
   réel de 1940-1942 ne se voyait pas). Zone occupée dans la même teinte que
   .pays-p.occupe ci-dessous : même statut, même couleur, que ce soit la
   Pologne ou le nord de la France. Zone libre dans un ocre propre à la
   France — ni bleu (occupation directe), ni le gris neutre des pays neutres
   : la zone libre n'est ni l'un ni l'autre, un régime français de fait sous
   tutelle allemande. */
.geo.france.sgm .fond.occupee{fill:#8FA6C4}
.geo.france.sgm .fond.libre{fill:#C9A664}
.geo.france.sgm .fleuve{stroke-width:800}
.geo.france.sgm .ligne-demarcation{fill:none;stroke:var(--accent);stroke-width:5000}
.geo.france.sgm .ligne-demarcation.ancienne{stroke:var(--attenue);stroke-width:4000;
  stroke-dasharray:14000 9000;opacity:.55}
.geo.france.sgm .pays-p{stroke:var(--carte);stroke-width:5000;opacity:.85}
.geo.france.sgm .pays-p.axe{fill:#3D5A80}
.geo.france.sgm .pays-p.occupe{fill:#8FA6C4}
.geo.france.sgm .pays-p.allie{fill:#3E7A52}
.geo.france.sgm .pays-p.neutre{fill:var(--absent-f)}
/* Beaucoup plus discrète que les quatre statuts ci-dessus (opacité et trait
   réduits) : à l'échelle où cette emprise doit aller pour ne pas amputer la
   Pologne ou la Suède, la zone hors classement (Europe centrale, Balkans)
   devient la moitié droite de la carte — pleine et bordée comme un
   cinquième statut à part entière, elle dominait visuellement les pays que
   la carte classe réellement, repéré directement à la vue de la carte
   publiée. */
.geo.france.sgm .pays-p.non-classe{fill:#CFCABE;opacity:.3;stroke-width:2000}
/* Taille de police normale : l'agrandissement à l'échelle de la carte se
   fait par le <g transform="scale(...)"> qui entoure chaque étiquette
   (cmd/build/seconde_guerre_mondiale.go), pas ici. Un font-size direct à
   l'échelle du viewBox (des centaines de milliers d'unités) ne rendait
   qu'un trait au lieu de lettres lisibles — Chromium semble buter sur le
   rendu des glyphes au-delà d'une certaine taille de police, reproduit en
   isolation, indépendamment de ce dépôt. */
.geo.france.sgm .nom-pays{font:600 13px/1 var(--sans);fill:var(--seuil);opacity:.85;
  letter-spacing:.2px;pointer-events:none}
.geo.france.sgm .nom-pays.nom-france{font-weight:700;fill:var(--encre);opacity:1;font-size:16px}
/* Les débarquements de 1944 : deux couleurs, une par opération — jamais les
   teintes Axe/Alliés/neutre ci-dessus, qui classent des PAYS, pas des
   plages. Un halo et une étiquette par opération (Normandie, Provence) :
   à l'échelle de la France entière, les points seuls restent minuscules et
   quasi confondus — le halo dit où regarder avant le détail des points. */
.geo.debarquements .debarquement{stroke:var(--carte);stroke-width:1200}
.geo.debarquements .debarquement.overlord{fill:#3F7D4F}
.geo.debarquements .debarquement.dragoon{fill:#B5652B}
.geo.debarquements .halo{stroke:none;opacity:.16}
.geo.debarquements .halo.overlord{fill:#3F7D4F}
.geo.debarquements .halo.dragoon{fill:#B5652B}
.geo.debarquements .repere{font:700 26000px/1 var(--sans);text-transform:uppercase;
  letter-spacing:1200;fill:var(--encre)}
.echelle i.overlord{background:#3F7D4F}
.echelle i.dragoon{background:#B5652B}
.echelle i.axe{background:#3D5A80}
.echelle i.occupe{background:#8FA6C4}
.echelle i.allie{background:#3E7A52}
.echelle i.neutre{background:var(--absent-f)}
.echelle i.non-classe{background:#CFCABE}
.echelle i.occupee{background:#8FA6C4}
.echelle i.libre{background:#C9A664}

/* Population, 1876-1999 : deux bandes marquent les deux guerres elles-mêmes,
   pas une rupture de série (à la différence du graphique immigration). */
.population-guerres .grille{stroke:var(--filet);stroke-width:1}
.population-guerres .bande-guerre{fill:var(--contre);fill-opacity:.08}
.population-guerres .ligne-pop{fill:none;stroke:var(--accent);stroke-width:2.2}
.population-guerres .pt-pop{fill:var(--accent)}

/* Contrôle fiscal : notifié (avant recours) contre encaissé (effectivement
   recouvré) — le notifié est en pointillés, un chiffre annoncé plutôt que
   perçu ; les deux années sans notifié coupent la ligne (traceSegments,
   cmd/build/fraude_fiscale.go), pas une droite qui inventerait la donnée. */
.controle-fiscal .grille{stroke:var(--filet);stroke-width:1}
.controle-fiscal .ligne-notifie{fill:none;stroke:var(--attenue);stroke-width:2;stroke-dasharray:4 3}
.controle-fiscal .ligne-encaisse{fill:none;stroke:var(--accent);stroke-width:2.4}
.controle-fiscal .pt-notifie{fill:var(--attenue)}
.controle-fiscal .pt-notifie.calcule{fill:var(--papier);stroke:var(--attenue);stroke-width:1.2}
.controle-fiscal .pt-encaisse{fill:var(--accent)}
.controle-fiscal .lbl-notifie{font:600 .7rem/1 var(--sans);fill:var(--attenue)}
.controle-fiscal .lbl-encaisse{font:700 .74rem/1 var(--sans);fill:var(--accent)}

/* SIPRI, dépense militaire : trois pays nommés, six en gris — nommer les
   dix aurait produit une légende plus longue que le graphique. */
.sipri-milex .grille{stroke:var(--filet);stroke-width:1}
.sipri-milex .ligne-autre{fill:none;stroke:var(--attenue);stroke-width:1.2;opacity:.45}
.sipri-milex .pt-autre{fill:var(--attenue);opacity:.6}
.sipri-milex .ligne-fr{fill:none;stroke:var(--accent);stroke-width:2.6}
.sipri-milex .pt-fr{fill:var(--accent)}
.sipri-milex .lbl-fr{fill:var(--accent);font:700 .74rem/1 var(--sans)}
.sipri-milex .ligne-ru{fill:none;stroke:#9A3322;stroke-width:2}
.sipri-milex .pt-ru{fill:#9A3322}
.sipri-milex .lbl-ru{fill:#9A3322;font:600 .7rem/1 var(--sans)}
.sipri-milex .ligne-sa{fill:none;stroke:#B0763A;stroke-width:2}
.sipri-milex .pt-sa{fill:#B0763A}
.sipri-milex .lbl-sa{fill:#B0763A;font:600 .7rem/1 var(--sans)}

/* Effort de recherche : DIRD/PIB, deux lignes seulement (France, UE27). */
.effort-recherche .grille{stroke:var(--filet);stroke-width:1}
.effort-recherche .ligne-fr{fill:none;stroke:var(--accent);stroke-width:2.6}
.effort-recherche .pt-fr{fill:var(--accent)}
.effort-recherche .lbl-fr{fill:var(--accent);font:700 .74rem/1 var(--sans)}
.effort-recherche .ligne-ue{fill:none;stroke:var(--attenue);stroke-width:2}
.effort-recherche .pt-ue{fill:var(--attenue)}
.effort-recherche .lbl-ue{fill:var(--attenue);font:600 .7rem/1 var(--sans)}
.effort-recherche .pt-fr.estim{fill:var(--papier);stroke:var(--accent);stroke-width:1.4}
.effort-recherche .pt-ue.estim{fill:var(--papier);stroke:var(--attenue);stroke-width:1.4}

/* Boîte à moustaches : tige q10-q90, boîte q25-q75, médiane — la dispersion
   est le sujet, pas un repère décoratif autour d'une moyenne. */
.boite-moustaches{width:100%;height:auto;display:block;max-width:44rem;margin:.4rem 0 .2rem}
.boite-moustaches .cat{font:500 .78rem/1 var(--sans);fill:var(--encre);text-anchor:end}
.boite-moustaches .tige{stroke:var(--attenue);stroke-width:1.6}
.boite-moustaches .boite{fill:var(--accent-doux);stroke:var(--accent);stroke-width:1.4}
.boite-moustaches .mediane{stroke:var(--accent);stroke-width:2.4}
.boite-moustaches .repere-100{stroke:var(--encre);stroke-width:1;stroke-dasharray:3 3;opacity:.5}
.boite-moustaches .et-100{font:500 .66rem/1 var(--mono);fill:var(--attenue);text-anchor:middle}

/* Emploi total vs salarié : l'écart entre les deux EST le nombre de
   non-salariés — pas de troisième trait à cette échelle (voir le
   commentaire de chargerEmploiTotalSalarie). */
.emploi-total .grille{stroke:var(--filet);stroke-width:1}
.emploi-total .total{fill:none;stroke:var(--encre);stroke-width:2}
.emploi-total .total-pt{fill:var(--encre)}
.emploi-total .total-lbl{fill:var(--encre);font:700 .74rem/1 var(--sans)}
.emploi-total .salarie{fill:none;stroke:var(--accent);stroke-width:2}
.emploi-total .salarie-pt{fill:var(--accent)}
.emploi-total .salarie-lbl{fill:var(--accent);font:600 .74rem/1 var(--sans)}

/* Structure sectorielle par bloc : une barre empilée, trois teintes fixes
   (primaire/secondaire/tertiaire) pour que la même couleur désigne le même
   secteur d'un bloc à l'autre. */
.secteurs-bloc{width:100%;height:auto;display:block;max-width:44rem;margin:.4rem 0 .2rem}
.secteurs-bloc .cat{font:500 .78rem/1 var(--sans);fill:var(--encre);text-anchor:end}
.secteurs-bloc .an{font:400 .7rem/1 var(--mono);fill:var(--attenue)}
.secteurs-bloc .primaire{fill:#4B7A3D}
.secteurs-bloc .secondaire{fill:#8C4B3A}
.secteurs-bloc .tertiaire{fill:#1E5C69}
.secteurs-bloc .et-seg{font:600 .68rem/1 var(--sans);fill:var(--carte);text-anchor:middle}

/* Bandeau d'un candidat : portrait, organisation, nom. */
.tete .qui{display:flex;gap:.9rem;align-items:center;min-width:0}
.tete .qui .credit{display:block;font:400 .66rem/1.35 var(--mono);
color:var(--attenue);margin-top:.25rem}

/* ── Angles d'un candidat : ce qu'on sait, ce qu'on ne sait pas ────── */
.angles{display:grid;gap:.5rem;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));
margin:.9rem 0}
.angle{border:1px solid var(--filet);border-radius:var(--rayon-s);padding:.7rem .8rem;
background:var(--carte)}
.angle.vide{background:transparent;border-style:dashed}
.angle .t{font:500 .66rem/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;
color:var(--attenue)}
.angle .v{font:600 1.25rem/1.15 var(--sans);letter-spacing:-.02em;margin-top:.35rem}
.angle.vide .v{font:400 .84rem/1.4 var(--sans);color:var(--attenue);letter-spacing:0}
.angle .d{font-size:.78rem;color:var(--attenue);margin-top:.25rem;line-height:1.4}

/* ── Frise verticale ──────────────────────────────────────────────── */
.frise{display:grid;gap:0;grid-template-columns:11rem 1fr;margin:1.5rem 0}
.frise .pres{border-right:2px solid var(--filet);padding:.9rem 1rem .9rem 0;text-align:right}
.frise .pres b{display:block;font:600 .92rem/1.25 var(--sans)}
.frise .pres span{font:400 .74rem/1.3 var(--mono);color:var(--attenue)}
.frise .corps{padding:.9rem 0 .9rem 1.3rem;border-left:2px solid transparent;margin-left:-2px}
.frise .an{display:grid;grid-template-columns:3.4rem 1fr;gap:.6rem;align-items:center;
padding:.16rem 0;font-size:.84rem}
.frise .an .y{font:400 .74rem/1 var(--mono);color:var(--attenue)}
.frise .rien{color:var(--attenue);font-size:.85rem;font-style:italic}

/* Classes de la rampe séquentielle, utilisées par les légendes de carte. */
.echelle i.r0{background:#DCE9EC}.echelle i.r1{background:#B0CFD5}
.echelle i.r2{background:#7FB0BA}.echelle i.r3{background:#4A8894}
.echelle i.r4{background:#1E5C69}

/* ── Budget : courbes d'exercices et tableau hiérarchisé ──────────────
   Les exercices sont ORDINAUX, pas des catégories : la rampe séquentielle du
   site les encode du plus ancien (clair) au plus récent (foncé). Chaque trait
   porte en plus son année dans la légende — la couleur n'est jamais seule. */
.graphe{width:100%;height:auto;display:block;max-width:46rem;margin:.6rem 0 .2rem}
.graphe .zero{stroke:var(--attenue);stroke-width:1}
.graphe .an{font:400 .68rem/1 var(--mono);fill:var(--attenue)}
.graphe .b{rx:1.5}
.graphe .b.e0{fill:#7FB0BA}.graphe .b.e1{fill:#4A8894}.graphe .b.e2{fill:#1E5C69}
.graphe .b:hover{opacity:.7}
.legende{display:flex;flex-wrap:wrap;gap:.35rem 1.1rem;font-size:.8rem;
color:var(--attenue);margin:.2rem 0 1rem}
.legende span{display:inline-flex;align-items:center;gap:.4rem}
.legende i{width:16px;height:3px;border-radius:2px;display:block;flex:0 0 auto}
.legende i.e0{background:#7FB0BA}.legende i.e1{background:#4A8894}
.legende i.e2{background:#1E5C69}
.graphe .ligne-pib{fill:none;stroke:#B0763A;stroke-width:1.8}
.graphe .pt-pib{fill:#B0763A}
.graphe .et.pib{font:600 .72rem/1 var(--sans);fill:#B0763A;
paint-order:stroke;stroke:var(--carte);stroke-width:3px;stroke-linejoin:round}
.legende i.ligne-pib{background:none;border-top:2px solid #B0763A;height:0;width:16px}
/* La hiérarchie des lignes est un fait de la source : un total et ses
   composantes voisinent, et le retrait dit lequel est lequel. */
tr.niv0 td,tr.niv1 td{font-weight:600}
tr.niv2 td:nth-child(2){padding-left:1.5rem}
tr.niv3 td:nth-child(2){padding-left:2.6rem}
tr.niv4 td:nth-child(2){padding-left:3.7rem}

.graphe .fin{stroke:var(--carte);stroke-width:2}
.graphe .fin.e0{fill:#7FB0BA}.graphe .fin.e1{fill:#4A8894}.graphe .fin.e2{fill:#1E5C69}
.graphe .et{font:600 .72rem/1 var(--sans);fill:var(--encre)}

/* ── Poids des niveaux : barres horizontales, origine à zéro ──────────
   Une barre par niveau, une échelle par indicateur. Les niveaux ne se
   recouvrent pas : chaque euro n'est compté qu'une fois. */
.barres{display:grid;gap:.4rem;margin:.5rem 0 1.4rem;max-width:46rem}
.barres .ligne{display:grid;grid-template-columns:10rem 1fr 6rem 5rem;
gap:.7rem;align-items:center;font-size:.88rem}
.barres .n{font-weight:600}
.barres .piste{display:block;height:14px;border-radius:3px;background:var(--filet2)}
.barres .piste i{display:block;height:100%;border-radius:3px;background:var(--accent)}
.barres .v{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.barres .c{text-align:right;font:400 .74rem/1 var(--mono);color:var(--attenue)}
@media(max-width:40rem){.barres .ligne{grid-template-columns:1fr auto;gap:.2rem .6rem}
  .barres .piste{grid-column:1/-1}.barres .c{display:none}}
.deux-cartes{display:grid;gap:1.3rem;grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));
margin:1rem 0}
/* Une carte par ligne, pleine largeur : à trois cartes nationales côte à
   côte, chacune devenait trop étroite pour que ses cartons outre-mer restent
   lisibles en une seule rangée — le même problème que .cartes-lignes. */
.cartes-empilees{display:flex;flex-direction:column;gap:1.8rem;margin:1rem 0}
.cartes-empilees .bloc-carte{max-width:40rem}
/* Carte à gauche, légende à droite — même rapport que .carte-dossier
   (1.15fr/1fr). Scopé à .cartes-empilees seul (unique à /collectivites/,
   jamais tabulé) : NE PAS élargir ce sélecteur à .onglets-carte .panneaux
   .bloc-carte.ligne en général — l'accueil (accueil.gohtml) utilise la même
   classe « bloc-carte ligne », dans SES onglets à lui (#oc1-4, ratio
   18rem/1fr via .cartes-lignes .bloc-carte.ligne), pour un tout autre
   agencement. Un sélecteur générique gagnait sur la cascade et cassait à la
   fois l'affichage de l'accueil ET le masquage des onglets (leur display:none
   par défaut perdait contre le display:grid posé ici sans condition). Voir
   plus bas, #ocn1/#ocn2/#ocn3, pour la mise en rangée propre à
   /sujets/collectivites/ (onglezCartesNiveaux). */
.cartes-empilees .bloc-carte.ligne{display:grid;max-width:none;
grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:1.4rem;align-items:start}
@media(max-width:52rem){.cartes-empilees .bloc-carte.ligne{grid-template-columns:1fr}}

/* Empilements à 100 % : deux dates, pas une série. Quatre teintes de la même
   rampe séquentielle — les postes de financement s'ordonnent du plus ancien
   (cotisations) au plus récent (impôt), ce qui est un ordre, pas une identité. */
.empils{max-width:46rem;margin:.6rem 0 1rem}
.empil{display:grid;grid-template-columns:3.4rem 1fr;gap:.7rem;align-items:center;
margin-bottom:.4rem}
.empil .an{font:400 .78rem/1 var(--mono);color:var(--attenue);text-align:right}
.empil .pile{display:flex;height:26px;border-radius:3px;overflow:hidden;background:var(--filet2)}
.empil .pile i{display:block;height:100%}
.empils .legende{margin-top:.5rem;padding-left:4.1rem}
.empils .legende i{width:14px;height:14px;border-radius:3px}
i.f0{background:#1E5C69}i.f1{background:#4A8894}i.f2{background:#B0CFD5}i.f3{background:#DCE9EC}

/* La carte de une : la vignette à gauche, ce qu'elle dit à droite. */
.une-carte{display:grid;gap:1.4rem;grid-template-columns:minmax(0,22rem) minmax(0,1fr);
align-items:start;margin-top:.6rem}
.une-carte>a{display:block;border:1px solid var(--filet);border-radius:var(--rayon);
padding:.9rem;background:var(--carte)}
.une-carte>a:hover{border-color:var(--accent)}
.une-carte p{margin:0 0 .7rem}
@media(max-width:52rem){.une-carte{grid-template-columns:1fr}}

/* Bloc cliquable : le lien principal s'étire sur toute la carte, les liens
   intérieurs restent cliquables en repassant au-dessus. Pas de <a> imbriqué,
   qui serait du HTML invalide et casserait la navigation au clavier. */
.bloc.cliquable{position:relative;border-radius:var(--rayon);
padding-left:1.1rem;padding-right:1.1rem;margin-left:-1.1rem;margin-right:-1.1rem;
transition:background .12s}
.bloc.cliquable:hover{background:var(--carte)}
.bloc.cliquable .etire::after{content:"";position:absolute;inset:0;z-index:0}
.bloc.cliquable:hover .etire{text-decoration:underline;text-underline-offset:3px}
.bloc.cliquable a:not(.etire),.bloc.cliquable .angles,.bloc.cliquable .une-carte{
position:relative;z-index:1}
.bloc.cliquable .angles,.bloc.cliquable .une-carte{pointer-events:none}
.bloc.cliquable .angles a,.bloc.cliquable .une-carte a{pointer-events:auto}

/* ── Cartons d'outre-mer ──────────────────────────────────────────────
   Chacun dans sa projection légale, donc à sa propre échelle : une boîte de
   taille fixe, la forme s'y inscrit. La valeur est écrite sous le carton —
   la couleur seule ne suffirait pas sur une forme de trois millimètres. */
.cartons{display:flex;flex-wrap:wrap;gap:.9rem 1.1rem;align-items:flex-end;
margin-top:1rem;padding-top:.9rem;border-top:1px solid var(--filet)}
.cartons>.t{font:500 .66rem/1 var(--mono);letter-spacing:.09em;text-transform:uppercase;
color:var(--attenue);align-self:center}
.cartons figure{margin:0;width:5.4rem;text-align:center}
.cartons .geo.carton{width:100%;height:3.2rem;object-fit:contain}
.cartons .geo.carton path{stroke:var(--papier);stroke-width:0;stroke-linejoin:round}
.cartons figcaption{font-size:.7rem;line-height:1.25;margin-top:.25rem}
.cartons figcaption span{display:block;color:var(--attenue);
font:400 .68rem/1.2 var(--mono);font-variant-numeric:tabular-nums}
.cartons figure.vide figcaption span{font-style:italic}
.note-cartons{font:400 .72rem/1.45 var(--mono);color:var(--attenue);margin:.5rem 0 0}

/* Séries annuelles en barres : une valeur par année, rien entre elles. La
   dernière barre est un ton plus foncé — c'est celle qu'on vient lire. */
.barres-an .b{fill:#7FB0BA}
.barres-an .b.der{fill:#1E5C69}
.barres-an .b:hover{fill:#4A8894}

/* Seuils de pauvreté superposés aux déciles (dessinerSeuilsPauvrete) : deux
   lignes pointillées dans la même unité que les barres, pas une seconde
   échelle — même convention que .avec-ligne pour le pointillé. */
.seuils-pauvrete .ligne-seuil{stroke:var(--encre);stroke-width:1.4;stroke-dasharray:5 3}
.seuils-pauvrete .et-seuil{font:500 .68rem/1 var(--sans);fill:var(--encre)}
.seuils-pauvrete .d10-et{font-style:italic;fill:var(--attenue);font-weight:400}
/* D1 plafonne juste entre les deux seuils : sans halo, la ligne pointillée
   traverse visiblement son étiquette de valeur (« 1 100 € » barré). Un
   contour couleur papier, peint avant le texte, l'occulte proprement. */
.seuils-pauvrete .et{paint-order:stroke;stroke:var(--papier);stroke-width:3px;stroke-linejoin:round}

/* Courbe de Lorenz (dessinerLorenz) : deux lignes contre une diagonale
   d'égalité parfaite, carrée plutôt que large — l'axe X et l'axe Y
   partagent la même unité (un pourcentage cumulé), un rectangle large
   suggérerait à tort deux échelles différentes. */
.lorenz{width:100%;height:auto;display:block;max-width:26rem;margin:.6rem auto}
.lorenz .axe{stroke:var(--filet);stroke-width:1.5}
.lorenz .egalite{stroke:var(--attenue);stroke-width:1;stroke-dasharray:3 3}
.lorenz .ligne-patrimoine{fill:none;stroke:#8C4B3A;stroke-width:2.2}
.lorenz .ligne-niveau-vie{fill:none;stroke:#1E5C69;stroke-width:2.2}
.lorenz .ligne-patrimoine-pt{fill:#8C4B3A}
.lorenz .ligne-niveau-vie-pt{fill:#1E5C69}
.lorenz .an{font:400 .68rem/1 var(--mono);fill:var(--attenue)}
.legende-simple{display:flex;flex-wrap:wrap;gap:.4rem 1.1rem;justify-content:center;
font-size:.82rem;color:var(--attenue);margin:.2rem 0 1rem}
.legende-simple span{display:inline-flex;align-items:center;gap:.4rem}
.legende-simple i{width:16px;height:3px;border-radius:2px;flex:0 0 auto}
.legende-simple i.pointille{background:none;border-top:1px dashed var(--attenue);height:0}

/* Répartition de la population par tranche de revenu, année la plus
   récente : une seule barre empilée, sur le même principe que .origine-
   barre (collectivite.gohtml) — des segments dont la largeur EST le
   pourcentage, la légende à côté porte les valeurs trop fines pour être
   lisibles dans leur propre segment (0,1 % de 65 millions tient sur
   quelques pixels). */
.repartition-barre{display:flex;height:2.2rem;border-radius:4px;overflow:hidden;margin:.8rem 0}
.repartition-legende{display:grid;gap:.3rem;margin-top:.6rem;font-size:.85rem}
.repartition-legende div{display:flex;align-items:baseline;gap:.5rem}
.repartition-legende i{width:11px;height:11px;border-radius:2.5px;flex:0 0 auto;align-self:center}

/* Dépenses et recettes : deux teintes d'une même rampe, la dépense foncée.
   Ce n'est pas un code « bien / mal » : aucune couleur d'alerte. */
.graphe .dep,.legende i.dep{fill:#1E5C69;background:#1E5C69}
.graphe .rec,.legende i.rec{fill:#7FB0BA;background:#7FB0BA}
.graphe .grille{stroke:var(--filet);stroke-width:1}

/* ── Le circuit État ↔ Sécurité sociale ──────────────────────────────
   Trois nœuds, quatre flux. La seule couleur d'alerte du schéma est réservée
   au montant non compensé : c'est la ligne qu'on vient lire. */
figure.schema{margin:1.2rem 0;max-width:48rem}
figure.schema figcaption{font-size:.8rem;color:var(--attenue);line-height:1.5;margin-top:.5rem}
.circuit{width:100%;height:auto;display:block}
.circuit .noeud{fill:var(--carte);stroke:var(--filet);stroke-width:1.5}
.circuit .noeud.etat{stroke:#4A8894}
.circuit .noeud.secu{stroke:#1E5C69;stroke-width:2}
.circuit .noeud.manque{fill:#FBEDEA;stroke:#B3412E;stroke-width:2}
.circuit .nt{font:600 15px/1 var(--sans);fill:var(--encre)}
.circuit .manque-t{font-size:24px;fill:#9A3322}
.circuit .ns{font:400 11.5px/1 var(--sans);fill:var(--attenue)}
.circuit .et{font:400 11.5px/1 var(--sans);fill:var(--attenue)}
.circuit .et.fort{font-weight:600;fill:var(--encre);font-size:12.5px}
.circuit .flux{fill:none;stroke-width:2.5;stroke:#7FB0BA}
.circuit .flux.verse{stroke:#1E5C69}
.circuit .flux.exo{stroke:#4A8894;stroke-dasharray:6 4}
.circuit .flux.manque-f{stroke:#B3412E;stroke-dasharray:3 4}
.circuit .ruban.comp{fill:#4A8894;opacity:.88;transition:opacity .12s}
.circuit .ruban.comp:hover{opacity:1}
.circuit .pointe{fill:var(--attenue)}
:root[data-theme="dark"] .circuit .noeud.manque{fill:#3a2320}
:root[data-theme="dark"] .circuit .manque-t{fill:#F0A493}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .circuit .noeud.manque{fill:#3a2320}
  :root:not([data-theme="light"]) .circuit .manque-t{fill:#F0A493}}

/* ── Lieux d'un mandat ────────────────────────────────────────────────
   « commune › intercommunalité › département » : l'échelon en petites
   capitales grises, le nom en clair, lien quand une page existe. */
.lieu{white-space:nowrap}
.lieu .ech{font:500 .62rem/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;
color:var(--attenue)}
.sep{color:var(--attenue)}
ul.liens-communes{list-style:none;padding:0;margin:0;columns:14rem auto;column-gap:1.4rem;
font-size:.84rem;line-height:1.7}
ul.liens-communes li{break-inside:avoid}
@media(max-width:40rem){.lieu{white-space:normal}}
td.code{font:500 .82rem/1.3 var(--mono);font-variant-numeric:tabular-nums;
color:var(--attenue);white-space:nowrap;width:3.5rem}

/* Barres appariées : A foncé, B clair, même rampe. Aucune couleur d'alerte :
   l'écart entre deux barres n'est ni bon ni mauvais par construction. */
.graphe.apparie .pa,.legende i.pa{fill:#1E5C69;background:#1E5C69}
.graphe.apparie .pb,.legende i.pb{fill:#7FB0BA;background:#7FB0BA}
/* fill:none doit rester le dernier mot sur le TRACÉ : sans lui, .l1/.l2
   ci-dessous (plus spécifiques) remplissent le path — qui n'est pas fermé
   (M...L...L, sans Z) — et le navigateur le referme tout seul par une droite
   du dernier point au premier, dessinant un coin plein au lieu d'une ligne. */
.deux-lignes .ligne.l1,.deux-lignes .ligne.l2{fill:none;stroke-width:2}
.deux-lignes .ligne.l1,.deux-lignes .pt.l1,.legende i.l1{stroke:#1E5C69;background:#1E5C69}
.deux-lignes .pt.l1{fill:#1E5C69}
.deux-lignes .ligne.l2,.deux-lignes .pt.l2,.legende i.l2{stroke:#B0763A;background:#B0763A}
.deux-lignes .pt.l2{fill:#B0763A}
.deux-lignes .et{font:600 .72rem/1 var(--sans)}
.deux-lignes .et.l1{fill:#1E5C69}.deux-lignes .et.l2{fill:#B0763A}
.graphe.apparie rect:hover{opacity:.75}

/* ── Barres + ligne à seconde échelle (ex. prestations / population) ───
   La ligne est en ENCRE, pointillée, jamais dans la rampe des barres : les
   deux échelles ne doivent jamais se confondre à l'œil. */
.avec-ligne .ligne-population{stroke:var(--encre);stroke-width:1.6;stroke-dasharray:5 3}
.avec-ligne .pt-population{fill:var(--papier);stroke:var(--encre);stroke-width:1.6}
.avec-ligne .pt-hit{fill:transparent;stroke:none}
.avec-ligne .et.droite{fill:var(--encre);font-style:italic}
/* Les deux étiquettes de population sont à GAUCHE (voir cartepage.go) : la
   règle générique .courbe .fin{text-anchor:end} les ferait déborder hors du
   viewBox côté gauche, où le SVG les découpe silencieusement. */
.avec-ligne .et.droite.fin{text-anchor:start}
.legende i.b{background:#7FB0BA}
.legende i.ligne-pop{background:none;border-top:2px dashed var(--encre);height:0;
width:16px;border-radius:0}

/* ── Anneau des six risques ──────────────────────────────────────────
   Six teintes fixes par risque (donut.go), jamais une rampe cyclée : leur
   identité ne bouge pas si le tri du tableau change. */
.donut-bloc{display:flex;flex-wrap:wrap;gap:1.4rem;align-items:center;margin:.6rem 0}
.donut-bloc>svg.donut{flex:0 0 auto;width:min(21rem,100%);height:auto}
.donut-bloc .scroll{flex:1 1 22rem;min-width:0}
.donut .tranche{transition:opacity .12s}
.donut .tranche:hover{opacity:.82}
.donut .tr-lib{font:600 .68rem/1.2 var(--sans);fill:var(--encre)}
.donut .tr-val{font:400 .66rem/1 var(--mono);fill:var(--attenue)}
.donut .don-total{font:600 1.15rem/1 var(--titre);fill:var(--encre)}
.donut .don-total-l{font:400 .66rem/1 var(--mono);letter-spacing:.06em;
text-transform:uppercase;fill:var(--attenue)}
/* Flux (Sankey à une source, N destinations) : mêmes trois teintes fixes que
   la légende du partage de la VA, jamais recalculées par valeur. */
.donut-bloc>svg.flux-va{flex:0 0 auto;width:min(24rem,100%);height:auto}
.flux-va .fva-source{fill:var(--carte);stroke:var(--filet);stroke-width:1.5}
.flux-va .fva-dest{stroke:var(--filet);stroke-width:1}
.flux-va .fva-dest.r0{fill:#DCE9EC}.flux-va .fva-dest.r1{fill:#F1E3D1}
.flux-va .fva-dest.r2{fill:#DCE9EC}
.flux-va .fva-ruban{opacity:.85;transition:opacity .12s}
.flux-va .fva-ruban:hover{opacity:1}
.flux-va .fva-ruban.r0{fill:#4A8894}.flux-va .fva-ruban.r1{fill:#B0763A}
.flux-va .fva-ruban.r2{fill:#1E5C69}
.flux-va .fva-pointe{fill:var(--attenue)}
.flux-va .fva-t{font:600 15px/1 var(--sans);fill:var(--encre)}
.flux-va .fva-src-t{font:600 1.2rem/1 var(--titre)}
.flux-va .fva-s{font:400 10.5px/1 var(--mono);letter-spacing:.04em;
text-transform:uppercase;fill:var(--attenue)}
.flux-va .fva-dt{font:600 11.5px/1.2 var(--sans);fill:var(--encre)}
.flux-va .fva-ds{font:400 10px/1 var(--mono);fill:var(--attenue)}
.flux-va .fva-etroit{text-anchor:start}
.pastille-risque{display:inline-block;width:9px;height:9px;border-radius:2px;
margin-right:.4rem;vertical-align:middle}

/* ── Faisceau proportionnel des exonérations ──────────────────────────
   Seule portion du circuit dessinée en largeurs proportionnelles : quatre
   catégories, même année, même source, qui se somment exactement au total.
   Teintes fixes, distinctes de la rampe des cartes et des couleurs de vote. */
.circuit .ruban{opacity:.88;transition:opacity .12s}
.circuit .ruban:hover{opacity:1}
.circuit .ruban.r0{fill:#1E5C69}
.circuit .ruban.r1{fill:#B0763A}
.circuit .ruban.r2{fill:#6B5CA5}
.circuit .ruban.r3{fill:#A34F86}
.circuit .ruban.r4{fill:#3D6FA0}
.circuit .ruban.r5{fill:#4A8894}
.circuit .ruban.versee{fill:#7FB0BA;opacity:.88;transition:opacity .12s}
.circuit .ruban.versee:hover{opacity:1}
.ruban-legende i.r0{background:#1E5C69}
.ruban-legende i.r1{background:#B0763A}
.ruban-legende i.r2{background:#6B5CA5}
.ruban-legende i.r3{background:#A34F86}
.ruban-legende i.r4{background:#3D6FA0}
.ruban-legende i.r5{background:#4A8894}

/* ── Barres empilées annuelles (ex. capacités excédentaires du travail) ─
   Quatre teintes fixes, d'un même dégradé pour marquer un ordre (du plus
   proche du marché du travail au plus éloigné), jamais recalculées par
   valeur : la catégorie garde sa couleur d'une année à l'autre. */
.empilees .seg{transition:opacity .12s}
.empilees .seg:hover{opacity:.8}

/* Barres d'ordre de grandeur : chaque ligne montre sa propre source, pour
   qu'on ne les prenne jamais pour trois mesures d'une même chose. */
.barres-og .n{display:flex;flex-direction:column;gap:.1rem}
.barres-og .src-ligne{font:400 .68rem/1.3 var(--mono);color:var(--attenue);font-weight:400}

/* ── Accueil 2027 et entrées « Sujets », « Argent public » ─────────────
   Proposition du 15 septembre 2026. Une barre dit une magnitude : toutes à
   l'échelle de la plus grande, en gris neutre ; la première est en encre parce
   qu'elle sert d'étalon. Aucune couleur n'est attribuée à une fonction, à un
   sujet ou à un parti. */
.src-bloc{font:400 .72rem/1.5 var(--mono);color:var(--attenue);margin:.9rem 0 0;max-width:52rem}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

.mille{display:grid}
.mille > a,.mille > .ligne-mille{display:grid;grid-template-columns:minmax(10rem,16rem) 4.4rem minmax(0,1fr);
gap:.9rem;align-items:center;padding:.5rem .35rem;border-top:1px solid var(--filet2);
text-decoration:none;color:var(--encre)}
.mille > .ligne-mille{grid-template-columns:minmax(10rem,16rem) 4.4rem minmax(0,1fr) 6rem}
.mille > a:hover{background:var(--carte)}
.mille .l{font-size:.95rem;line-height:1.3}
.mille .l small{display:block;color:var(--attenue);font-size:.76rem;margin-top:.1rem}
.mille .v,.mille .md{font:500 .92rem/1 var(--mono);text-align:right;white-space:nowrap}
.mille .md{color:var(--attenue);font-size:.8rem}
.mille .b{height:1rem;background:var(--papier2);display:block}
.mille .b i{display:block;height:100%;background:#9A958A}
.mille .etalon .b i{background:var(--encre)}
.mille > a:hover .b i{background:var(--accent)}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .mille .b i{background:#6F6C66}}
[data-theme=dark] .mille .b i{background:#6F6C66}
.mille .etalon .b i{background:var(--encre)}

/* Chiffres-clés : trois chiffres avant la grille des familles, sur le
   modèle des sites de référence du genre (data-journalisme, portails
   budgétaires) qui ouvrent sur l'ampleur du site avant le détail. Trois
   cartes distinctes comme .niveau ci-dessus (border-radius seule sur
   chacune), pas le calque gap+background de .solde&nbsp;: cette technique
   suppose un fond de cellule proche du gris du filet (papier2, comme dans
   .solde) — sur un fond blanc (--carte) le filet tranchait en une bande
   jaunâtre visible entre les colonnes. */
/* Nom distinct de .chiffres-cles (plus bas dans cette feuille, pour les
   pages sujet) : les deux ont coexisté un temps sous le même nom, et la
   règle .chiffres-cles div{border-top...} de sujet.gohtml, plus bas dans le
   fichier, écrasait silencieusement le fond/la bordure/l'arrondi ci-dessous
   par cascade — ne laissant plus qu'un filet noir en haut de chaque carte. */
.chiffres-cles-accueil{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1.6rem}
/* Fond teinté (le même bleu doux que les cartes, --accent-doux) plutôt que
   --carte : sur la page d'accueil, ces trois chiffres sont la donnée qui
   ouvre la section, pas une carte parmi d'autres — ils doivent se
   distinguer des cartes « famille » juste en dessous, blanches sur le
   même fond de page. */
.chiffres-cles-accueil div{background:var(--accent-doux);border:1px solid var(--filet);border-radius:var(--rayon);
padding:1.2rem 1.3rem}
.chiffres-cles-accueil b{display:block;font:500 2.2rem/1 var(--titre);letter-spacing:-.01em;
font-variant-numeric:tabular-nums}
.chiffres-cles-accueil span{display:block;margin-top:.4rem;font-size:.82rem;color:var(--attenue);line-height:1.4}
@media(max-width:34rem){.chiffres-cles-accueil{grid-template-columns:1fr}}

/* Cartes de famille (révisé le 20 septembre 2026, deuxième passe) : la carte
   entière est le lien vers /sujets/<id>/, sa propre page avec une carte par
   sujet et son chiffre-clé réel — plus de puces de noms ni de jauge de poids
   ici, jugées illisibles pour ce qu'elles ajoutaient. Un chiffre, un nom, une
   phrase, un lien : le même registre que .niveau (« Qui dépense » ci-dessus). */
.familles{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(17rem,1fr))}
.famille{background:var(--carte);border:1px solid var(--filet);border-radius:var(--rayon);
padding:1.1rem 1.15rem 1.15rem;display:flex;flex-direction:column;color:inherit;text-decoration:none}
.famille:hover{border-color:var(--accent)}
.famille:hover h3{color:var(--accent)}
.famille h3{margin:.5rem 0 0;font:500 1.12rem/1.25 var(--titre);color:var(--encre)}
.famille .q{margin:.35rem 0 0;font-size:.86rem;color:var(--attenue);line-height:1.5}
.famille .poids-n,.famille .poids-hors{display:block;font:500 1.7rem/1 var(--titre);
letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.famille .poids-hors{color:var(--attenue)}
.famille .poids-n .poids-u,.famille .poids-hors .poids-u{display:inline-block;font:400 .7rem var(--mono);
color:var(--attenue);letter-spacing:.03em;margin-left:.3rem;font-variant-numeric:normal}
.famille .voir{margin-top:auto;padding-top:.7rem;font:500 .8rem var(--sans);color:var(--accent)}
.famille:hover .voir{text-decoration:underline}

/* Page /sujets/<famille>/ : une carte par sujet, avec son propre
   chiffre-clé (Sujet.EnBref[0]) — le pendant, à l'échelle du sujet, du
   chiffre de famille sur l'accueil. Un sujet sans chiffre-clé chargé
   (EnBref vide) montre sa carte sans numéro plutôt qu'un zéro inventé. */
.sujets-cartes{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));
margin-top:1.6rem}
.sujet-carte{background:var(--carte);border:1px solid var(--filet);border-radius:var(--rayon);
padding:1.15rem 1.25rem 1.3rem;display:flex;flex-direction:column;color:inherit;text-decoration:none}
.sujet-carte:hover{border-color:var(--accent)}
.sujet-carte:hover h2{color:var(--accent)}
.sujet-carte .n{display:block;font:500 2rem/1.1 var(--titre);letter-spacing:-.01em;
font-variant-numeric:tabular-nums}
.sujet-carte .d{display:block;margin-top:.3rem;font-size:.78rem;color:var(--attenue);line-height:1.4}
.sujet-carte h2{margin:.9rem 0 0;font:500 1.05rem/1.28 var(--titre);color:var(--encre)}
.sujet-carte .q{margin:.35rem 0 0;font-size:.85rem;color:var(--attenue);line-height:1.5}

/* Page /sujets/ : les mêmes cartes de famille que l'accueil, en plus grand
   (neuf familles à parcourir plutôt que neuf sections empilées pleine
   largeur) — une jauge de poids remplace le seul chiffre pour situer une
   famille d'un coup d'œil parmi les autres. */
.familles-page{grid-template-columns:repeat(auto-fill,minmax(21rem,1fr));gap:1.2rem;margin-top:1.6rem}
.famille-carte{padding:1.2rem 1.3rem 1.3rem;scroll-margin-top:5rem}
.famille-carte h2{margin:0 0 .15rem;font:500 1.22rem/1.28 var(--titre)}
.famille-carte h2 a{color:var(--encre);text-decoration:none}
.famille-carte h2 a:hover{color:var(--accent)}
.famille-carte .poids{display:block;font:400 .74rem/1.4 var(--mono);color:var(--attenue);margin-bottom:.4rem}
.famille-carte .q{margin:.7rem 0 .8rem;font-size:.88rem;color:var(--attenue);line-height:1.5}
.jauge{display:block;height:4px;border-radius:2px;background:var(--filet2);overflow:hidden;max-width:14rem}
.jauge span{display:block;height:100%;background:var(--accent);border-radius:inherit}

/* Liste de sujets : une ligne par sujet, un nom et sa question, sans pastille
   ni pilule — le format d'un sommaire, pas d'un nuage de mots-clés. Utilisé
   sur l'accueil (compact, dans une carte de famille) et sur /sujets/ (grande,
   pleine largeur, avec la description du dossier). */
.liste-sujets{list-style:none;margin:0;padding:0}
.liste-sujets li{border-top:1px solid var(--filet2)}
.liste-sujets li:first-child{border-top:0}
.liste-sujets a{display:flex;flex-wrap:wrap;align-items:baseline;gap:.15rem .6rem;
padding:.4rem .2rem;text-decoration:none;color:inherit}
.liste-sujets a:hover{background:var(--papier2)}
.liste-sujets a:hover .nom{color:var(--accent)}
.liste-sujets .nom{font-weight:500;font-size:.92rem;flex:0 0 auto}
.liste-sujets .d{color:var(--attenue);font-size:.8rem;flex:1 1 auto}
.liste-sujets .ext{flex:0 0 100%;font:400 .72rem var(--mono);color:var(--accent)}
.liste-sujets.grande a{padding:.7rem .3rem;gap:.15rem 1.2rem}
.liste-sujets.grande .nom{font:500 1rem/1.3 var(--titre);flex:0 0 13rem}
.liste-sujets.grande .d{font-size:.86rem}
.liste-sujets.grande .ext{flex:0 0 auto;font:400 .74rem var(--mono);color:var(--accent)}
@media(max-width:32rem){.liste-sujets a,.liste-sujets.grande a{flex-direction:column;gap:.1rem}
  .liste-sujets.grande .nom{flex-basis:auto}}

.niveaux{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr))}
.niveau{background:var(--carte);border:1px solid var(--filet);border-radius:var(--rayon);
padding:1.05rem 1.15rem;text-decoration:none;color:var(--encre);display:grid;gap:.4rem;align-content:start}
a.niveau:hover{border-color:var(--accent)}
.niveau .t{font-weight:600}
.niveau .n{font:500 1.9rem/1 var(--titre)}
.niveau .n small{font:500 .9rem var(--sans);color:var(--attenue)}
.niveau .jauge{width:100%;height:.55rem;background:var(--papier2);display:block;color:inherit}
.niveau .jauge i{display:block;height:100%;background:var(--attenue)}
.niveau .d{font-size:.86rem;color:var(--attenue);line-height:1.5}
.solde{display:grid;gap:1px;background:var(--filet);border:1px solid var(--filet);margin-top:1.1rem;
grid-template-columns:repeat(auto-fit,minmax(12rem,1fr))}
.solde div{background:var(--papier2);padding:.85rem 1rem}
.solde b{display:block;font:500 1.4rem/1.1 var(--titre)}
.solde span{display:block;font-size:.82rem;color:var(--attenue);margin-top:.2rem}

.reperes,.quatre-points{display:grid;gap:1.2rem 1.5rem;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr))}
.reperes div,.quatre-points div{border-top:2px solid var(--encre);padding-top:.6rem}
.reperes b{display:block;font:500 1.55rem/1.1 var(--titre)}
.reperes span{display:block;font-size:.88rem;margin-top:.15rem}
.reperes em{display:block;font:400 .7rem/1.4 var(--mono);font-style:normal;color:var(--attenue);margin-top:.25rem}
.quatre-points b{display:block;font-weight:600;margin-bottom:.2rem}
.quatre-points span{font-size:.88rem;color:var(--attenue)}
.decide{display:grid;gap:.2rem 1.4rem;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr))}
.decide a{text-decoration:none;color:var(--encre);border-top:1px solid var(--filet);padding:.7rem 0}
.decide a b{display:block;font-weight:600}
.decide a:hover b{color:var(--accent)}
.decide a span{font-size:.85rem;color:var(--attenue)}

/* Carte à onglets, sans script : un bouton radio par onglet, un panneau par
   bouton. Quatre onglets au plus, d'où quatre règles fixes. */
.onglets-carte .etiquettes{display:flex;flex-wrap:wrap;gap:.4rem;margin:0 0 1rem}
.onglets-carte label{font:500 .86rem/1 var(--sans);border:1px solid var(--filet);background:var(--carte);
color:var(--attenue);padding:.5rem .8rem;border-radius:999px;cursor:pointer}
.onglets-carte label:hover{border-color:var(--accent);color:var(--encre)}
.onglets-carte .panneaux > .bloc-carte{display:none}
#oc1:checked ~ .panneaux .p1,#oc2:checked ~ .panneaux .p2,
#oc3:checked ~ .panneaux .p3,#oc4:checked ~ .panneaux .p4{display:grid}
#oc1:checked ~ .etiquettes label[for=oc1],#oc2:checked ~ .etiquettes label[for=oc2],
#oc3:checked ~ .etiquettes label[for=oc3],#oc4:checked ~ .etiquettes label[for=oc4]{
background:var(--encre);color:var(--papier);border-color:var(--encre)}
#oc1:focus-visible ~ .etiquettes label[for=oc1],#oc2:focus-visible ~ .etiquettes label[for=oc2],
#oc3:focus-visible ~ .etiquettes label[for=oc3],#oc4:focus-visible ~ .etiquettes label[for=oc4]{
outline:2px solid var(--accent);outline-offset:2px}
@media(max-width:52rem){.onglets-carte .panneaux > .bloc-carte{grid-template-columns:1fr}}

/* Même composant, pour les trois niveaux de collectivité (page de sujet
   « Collectivités », D-075) : une carte pleine à la fois, pas un onglet vers
   une prévisualisation qui renvoie ailleurs — le panneau EST la carte. */
.onglets-carte .panneaux .bloc-carte{max-width:44rem}
/* Carte à gauche, légende à droite, pleine largeur (pas de plafond à 44rem
   comme la règle générique ci-dessus) — scopé aux trois onglets niveau par
   #ocn1-3 (jamais un sélecteur .bloc-carte.ligne générique, voir le
   commentaire sur .cartes-empilees .bloc-carte.ligne plus haut). */
#ocn1:checked ~ .panneaux .p1,#ocn2:checked ~ .panneaux .p2,#ocn3:checked ~ .panneaux .p3{
display:grid;max-width:none;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:1.4rem;align-items:start}
@media(max-width:52rem){#ocn1:checked ~ .panneaux .p1,#ocn2:checked ~ .panneaux .p2,#ocn3:checked ~ .panneaux .p3{
grid-template-columns:1fr}}
#ocn1:checked ~ .etiquettes label[for=ocn1],#ocn2:checked ~ .etiquettes label[for=ocn2],
#ocn3:checked ~ .etiquettes label[for=ocn3]{background:var(--encre);color:var(--papier);border-color:var(--encre)}
#ocn1:focus-visible ~ .etiquettes label[for=ocn1],#ocn2:focus-visible ~ .etiquettes label[for=ocn2],
#ocn3:focus-visible ~ .etiquettes label[for=ocn3]{outline:2px solid var(--accent);outline-offset:2px}

.sujet-tete{margin:.4rem 0 .6rem}
.sujet-tete .liens-cartes{margin-top:.4rem}
@media(max-width:44rem){
  .mille > a,.mille > .ligne-mille{grid-template-columns:1fr 3.8rem;gap:.25rem .6rem}
  .mille .b{grid-column:1 / 3}
  .mille .md{display:none}
}

/* ── Page de sujet : en bref, chiffres, dossier redessiné ────────────────
   Le dossier est un document de travail dense : la page le met en couches.
   Chiffres clés d'abord, graphiques ensuite, faits en frise, sections
   techniques repliées. */
.sujet-tete{margin:.4rem 0 1.2rem}
.sujet-tete h1{font:500 clamp(1.9rem,4vw,2.7rem)/1.1 var(--titre);letter-spacing:-.02em;margin:.2rem 0 .8rem;max-width:26ch;text-wrap:balance}
.sujet-tete .lede{font-size:1.1rem;max-width:44rem}
.en-bref{background:var(--papier2);border:1px solid var(--filet);border-radius:var(--rayon);padding:1.2rem 1.3rem 1rem;margin:0 0 2.2rem}
.chiffres-cles{display:grid;gap:1rem 1.6rem;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));margin:.4rem 0 .9rem}
.chiffres-cles div{border-top:2px solid var(--encre);padding-top:.55rem}
.chiffres-cles b{display:block;font:500 1.75rem/1.1 var(--titre);letter-spacing:-.01em}
.chiffres-cles span{display:block;font-size:.9rem;line-height:1.4;margin-top:.2rem}
.chiffres-cles em{display:block;font:400 .7rem/1.4 var(--mono);font-style:normal;color:var(--attenue);margin-top:.3rem}
.en-bref .compte{font-size:.86rem;color:var(--attenue);margin:.2rem 0 .7rem}
.en-bref .aller{display:flex;flex-wrap:wrap;gap:.35rem;border-top:1px solid var(--filet);padding-top:.8rem}
.en-bref .aller a{font:500 .8rem/1 var(--sans);text-decoration:none;border:1px solid var(--filet);background:var(--carte);
color:var(--encre);padding:.38rem .6rem;border-radius:999px}
.en-bref .aller a:hover{border-color:var(--accent);color:var(--accent)}
.en-bref .aller a.ext{color:var(--accent)}
.donnees-sujet{border-top:2px solid var(--encre);padding-top:1rem;margin:0 0 2.5rem}
.donnees-sujet > .sur{display:block;margin-bottom:.6rem}
.dossier-sujet{max-width:52rem}
.section-sujet{padding:1.8rem 0 .4rem;border-top:1px solid var(--filet)}
.section-sujet > h2{font:500 1.6rem/1.2 var(--titre);margin:0 0 .9rem}
.section-sujet .prose{max-width:none}
.section-sujet .prose h3{font:500 1.2rem/1.3 var(--titre);margin:1.8rem 0 .5rem}
.section-sujet.encart{background:var(--carte);border:1px solid var(--filet);border-left:3px solid var(--attenue);
border-radius:var(--rayon);padding:1.2rem 1.3rem;margin:1.8rem 0}
.section-sujet.encart > h2{font-size:1.25rem}
.dossier-sujet details.plus .dedans{display:block}

ol.faits-frise{list-style:none;padding:0;margin:.6rem 0 1.4rem}
ol.faits-frise li{display:grid;grid-template-columns:4.2rem minmax(0,1fr);gap:1rem;padding:.85rem 0;border-top:1px solid var(--filet)}
ol.faits-frise li:first-child{border-top:0}
ol.faits-frise .f-date{font:500 .82rem/1.5 var(--mono);color:var(--attenue)}
ol.faits-frise p{margin:0}
ol.faits-frise .f-t{font-weight:600;line-height:1.4;margin-bottom:.25rem}
ol.faits-frise .f-c{font-size:.93rem;line-height:1.55;color:var(--encre)}
ol.faits-frise .f-src{font-size:.78rem;color:var(--attenue);margin-top:.35rem}
.qual{display:inline-block;font:500 .64rem/1 var(--mono);letter-spacing:.05em;text-transform:uppercase;
padding:.2rem .38rem;border:1px solid var(--attenue);border-radius:3px;vertical-align:.08em}
.qual.q-off{background:var(--encre);color:var(--papier);border-color:var(--encre)}
.qual.q-decl{background:var(--papier2);color:var(--encre)}
.qual.q-presse{background:transparent;color:var(--attenue);border-style:dashed}
@media(max-width:44rem){ol.faits-frise li{grid-template-columns:1fr;gap:.2rem}}

/* Les candidats et la justice : une fiche par candidat. Deux repères descriptifs
   (stade, peine), en encre et en accent — jamais de couleur d'alerte : ils disent
   ce qu'une juridiction a décidé, pas ce qu'il faut en penser. */
.jug-lecture{border-left:3px solid var(--accent);background:var(--accent-doux);padding:.7rem 1rem;
border-radius:0 var(--rayon-s) var(--rayon-s) 0;margin:.6rem 0 1.4rem;font-size:.92rem}
.jug-lecture p{margin:0}
ul.jug-resume{list-style:none;padding:0;margin:.8rem 0 1.4rem;display:grid;gap:1rem;
grid-template-columns:repeat(auto-fit,minmax(17rem,1fr))}
.jug-resume a{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.9rem;align-items:start;height:100%;
padding:1rem;background:var(--carte);border:1px solid var(--filet);border-radius:var(--rayon);
text-decoration:none;color:var(--encre)}
.jug-resume a:hover,.jug-resume a:focus-visible{border-color:var(--accent)}
.jug-resume .portrait{width:64px;height:64px}
.jug-resume .jug-id{display:grid;gap:.3rem}
.jug-resume strong{font:600 1.05rem/1.25 var(--sans)}
.jug-ligne{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;font-size:.85rem}
.jug-ligne .jug-lbl{min-width:2.8rem}
.jug-n{color:var(--attenue)}
.jug-liste{display:grid;gap:1.2rem;margin:0 0 1.4rem}
.jug{background:var(--carte);border:1px solid var(--filet);border-radius:var(--rayon);padding:1rem 1.2rem 0.4rem}
.jug header{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:1rem;align-items:center;
padding-bottom:.9rem;border-bottom:1px solid var(--filet)}
.jug .portrait{width:72px;height:72px}
.jug h3{margin:0;font:600 1.2rem/1.25 var(--sans)}
.jug h3 a{text-decoration:none}
.jug-org{margin:.15rem 0 0;font-size:.9rem;color:var(--attenue)}
.jug-peine{display:grid;gap:.25rem;justify-items:start;font-size:.85rem;max-width:16rem}
.jug-lbl{font:500 .64rem/1.2 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--attenue)}
.jug-val{font-weight:600}
.jug-inelig{color:var(--attenue)}
.jug-echelle{display:inline-flex;gap:3px}
.jug-echelle i{width:1.5rem;height:.5rem;border-radius:2px;background:var(--filet);border:1px solid var(--attenue)}
.jug-echelle i.on{background:var(--encre);border-color:var(--encre)}
ol.jug-decisions{margin:0}
ol.jug-stade{list-style:none;display:flex;flex-wrap:wrap;gap:.25rem;padding:0;margin:.15rem 0 .45rem}
ol.faits-frise ol.jug-stade li{display:block;gap:0;padding:.15rem .5rem;border:1px solid var(--filet);border-radius:999px;
font:500 .72rem/1.3 var(--sans);color:var(--attenue)}
ol.faits-frise ol.jug-stade li.passe{border-color:var(--attenue)}
ol.faits-frise ol.jug-stade li.now{background:var(--accent);border-color:var(--accent);color:var(--papier);font-weight:600}
.jug-faits{font-size:.88rem;margin-bottom:.3rem}
.jug-faits .jug-lbl{margin-right:.2rem}
.jug-faits .jug-lbl:not(:first-child){margin-left:.7rem}
@media(max-width:44rem){
  .jug header{grid-template-columns:auto minmax(0,1fr)}
  .jug-peine{grid-column:1/-1;max-width:none}
}

.intro-mentions{color:var(--attenue);font-size:.9rem;margin:0 0 .6rem;max-width:44rem}
figure.credits{margin:1rem 0 1.4rem}
figure.credits figcaption{font-size:.95rem;margin-bottom:.6rem}
figure.credits .evol{color:var(--attenue)}
.barres-h{display:grid}
.barres-h .barre{display:grid;grid-template-columns:minmax(9rem,18rem) minmax(0,1fr) 5.5rem 4.5rem;gap:.8rem;align-items:center;
padding:.38rem 0;border-top:1px solid var(--filet2)}
.barres-h .l{font-size:.88rem;line-height:1.3}
.barres-h .b{height:.8rem;background:var(--papier2);display:block}
.barres-h .b i{display:block;height:100%;background:var(--attenue)}
.barres-h .barre:first-child .b i{background:var(--encre)}
.barres-h .v{font:500 .85rem/1 var(--mono);text-align:right;white-space:nowrap}
.barres-h .e{font:400 .74rem/1 var(--mono);color:var(--attenue);text-align:right;white-space:nowrap}
@media(max-width:44rem){
  .barres-h .barre{grid-template-columns:1fr auto;gap:.2rem .6rem}
  .barres-h .b{grid-column:1 / 3;grid-row:2}
  .barres-h .e{display:none}
}

/* Frontières administratives par-dessus la carte des intercommunalités. */
.geo .frontieres path{fill:none;pointer-events:none;vector-effect:non-scaling-stroke;opacity:1}
.geo .frontieres .dep{stroke:var(--encre);stroke-width:.7px;stroke-opacity:.5}
.geo .frontieres .reg{stroke:var(--encre);stroke-width:1.8px;stroke-opacity:.85}
.geo:hover .frontieres path{opacity:1}

/* ── Hero de l'accueil : le titre et « sur 1 000 € » côte à côte ─────────
   Le premier écran doit montrer un chiffre, pas seulement une promesse.
   Sur mobile, le graphique passe juste sous le titre, avant le chapeau. */
.hero.avec-visuel .hero-grille{display:grid;column-gap:3.2rem;
grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);
grid-template-areas:"titre visuel" "lede visuel" "outil visuel" "ancrage ancrage"}
.hero.avec-visuel h1{grid-area:titre;align-self:end;max-width:17ch}
.hero.avec-visuel .lede{grid-area:lede;margin-bottom:1.4rem}
.hero.avec-visuel .outil{grid-area:outil}
.hero.avec-visuel .ancrage{grid-area:ancrage}
.hero.avec-visuel .h-visuel{grid-area:visuel;align-self:center}
.hero-mille{margin:0;background:var(--carte);border:1px solid var(--filet);border-radius:var(--rayon);
padding:1rem 1.1rem .8rem;box-shadow:0 1px 18px rgba(0,0,0,.05)}
.hero-mille figcaption{margin-bottom:.5rem}
.hero-mille figcaption .sur{display:block;margin-bottom:.35rem}
.hero-mille figcaption strong{font:500 1.3rem/1.2 var(--titre)}
.hero-mille ol{list-style:none;margin:0;padding:0}
.hero-mille li a{display:grid;grid-template-columns:.7rem minmax(8.5rem,13rem) minmax(0,1fr) 3.6rem;gap:.7rem;align-items:center;
padding:.28rem .2rem;text-decoration:none;color:var(--encre);border-top:1px solid var(--filet2)}
.hero-mille .pastille{width:.55rem;height:.55rem;border-radius:2px;align-self:center}
.hero-mille li:first-child a{border-top:0}
.hero-mille li a:hover{background:var(--papier2)}
.hero-mille .l{font-size:.86rem;line-height:1.25}
.hero-mille .b{height:.72rem;background:var(--papier2);display:block}
.hero-mille .b i{display:block;height:100%;background:#9A958A}
.hero-mille li.etalon .b i{background:var(--encre)}
.hero-mille li a:hover .b i{background:var(--accent)}
.hero-mille .v{font:500 .86rem/1 var(--mono);text-align:right;white-space:nowrap}
.hero-mille .pied-mille{font:400 .7rem/1.45 var(--mono);color:var(--attenue);margin:.6rem 0 0}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .hero-mille .b i{background:#6F6C66}}
[data-theme=dark] .hero-mille .b i{background:#6F6C66}
.hero-mille li.etalon .b i{background:var(--encre)}
@media(max-width:64rem){.hero.avec-visuel .hero-grille{column-gap:2rem}}
@media(max-width:52rem){
  .hero.avec-visuel .hero-grille{grid-template-columns:1fr;grid-template-areas:"titre" "visuel" "lede" "outil" "ancrage"}
  .hero.avec-visuel h1{margin-bottom:1rem}
  .hero.avec-visuel .h-visuel{margin:0 0 1.2rem}
  .hero-mille li a{grid-template-columns:.6rem minmax(0,1fr) 3.2rem;gap:.15rem .5rem;padding:.3rem 0}
  .hero-mille .b{grid-column:1 / 4;grid-row:2}
  .hero-mille li:nth-child(n+7){display:none}
  .hero-mille .pied-mille a::before{content:"et 4 autres fonctions · "}
}

/* ── Carte de situation : le territoire dans la France entière ──────────
   Le fond (media/situation-france.svg) est commun à toutes les pages ; le
   calque de la page se superpose exactement, même boîte, même rapport. */
.situation{margin:1.2rem 0 1.6rem}
.situation .bloc-carte.ligne{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:1.6rem}
.situation-carte{position:relative}
.situation-carte img,.situation-carte object{display:block;width:100%;height:auto}
.situation-carte .calque{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.situation-cartons a{color:inherit;text-decoration:none;display:block}
.situation-cartons a:hover figcaption{color:var(--accent);text-decoration:underline}
.legende-situation dd b a{color:var(--accent)}
.calque path{vector-effect:non-scaling-stroke;stroke-linejoin:round}
.calque .territoire path{fill:var(--accent);fill-opacity:.32;stroke:none}
.calque .communes path{fill:var(--accent);fill-opacity:.3;stroke:var(--accent);stroke-opacity:.55;stroke-width:.3px}
.calque .commune path{fill:var(--accent);fill-opacity:.9;stroke:var(--encre);stroke-width:1px}
.calque .groupements path{fill:none;stroke:var(--accent);stroke-width:.9px}
.calque .departements path{fill:none;stroke:var(--encre);stroke-width:1px;stroke-opacity:.75}
.calque .contour path{fill:none;stroke:var(--encre);stroke-width:2px}
.calque .repere{fill:none;stroke:var(--accent);stroke-width:2px;vector-effect:non-scaling-stroke}
/* La loupe : le point repère la commune, le cône la relie au cercle de zoom qui la montre avec ses voisines. */
.calque .departements.loupe path{fill:var(--repere);fill-opacity:.12;stroke:var(--repere);stroke-opacity:.85;stroke-width:1.4px}
.calque .cone{fill:var(--repere);fill-opacity:.14;stroke:var(--repere);stroke-opacity:.8;stroke-width:1.2px}
.calque .point{fill:var(--repere);stroke:#fff;stroke-width:2px}
.calque .lentille-fond{fill:var(--papier2)}
.calque .lentille-bord{fill:none;stroke:var(--repere);stroke-width:3px}
.calque .commune-fine{fill:var(--repere);fill-opacity:.9;stroke:var(--encre);stroke-width:1px}
.calque .echelle line{stroke:var(--encre);stroke-width:2px;vector-effect:non-scaling-stroke}
.calque .echelle text{font:600 46000px var(--sans);fill:var(--encre);paint-order:stroke;stroke:var(--carte);stroke-width:12000px;stroke-linejoin:round}
/* L'échelle des candidats de l'accueil : gauche-droite en abscisse (rouge à gauche, bleu à droite), environnement en ordonnée.
   La position est celle du parti, mesurée par des experts ; la couleur n'est qu'une aide de lecture. */
.echelle-intro{max-width:62ch;margin:.4rem 0 1.1rem;font-size:1.05rem}
.echelle-cadre{background:var(--carte);border:1px solid var(--filet);border-radius:var(--rayon);padding:1rem 1.1rem .9rem}
.echelle-defile{overflow-x:auto;padding:.2rem 0 .4rem}
.echelle-astuce{display:none;margin:0 0 .4rem;font:500 .74rem/1.3 var(--mono);color:var(--attenue)}
@media(max-width:60rem){.echelle-astuce{display:block}}
.t-vert{--teinte:var(--vert)}.t-ocre{--teinte:var(--ocre)}
.echelle-tableau th .dix{display:block;margin-top:.15rem;font:400 .66rem/1.25 var(--sans);letter-spacing:0;text-transform:none;color:var(--attenue)}
.echelle-note{margin:0 0 .6rem;max-width:80ch}
/* Onglets des axes : même composant que les cartes de l'accueil (cinq onglets, d'où cinq règles). */
.onglets-axes .panneaux > .panneau{display:none}
#ax1:checked ~ .panneaux .p1,#ax2:checked ~ .panneaux .p2,#ax3:checked ~ .panneaux .p3,
#ax4:checked ~ .panneaux .p4,#ax5:checked ~ .panneaux .p5{display:block}
#ax1:checked ~ .etiquettes label[for=ax1],#ax2:checked ~ .etiquettes label[for=ax2],#ax3:checked ~ .etiquettes label[for=ax3],
#ax4:checked ~ .etiquettes label[for=ax4],#ax5:checked ~ .etiquettes label[for=ax5]{
background:var(--encre);color:var(--papier);border-color:var(--encre)}
#ax1:focus-visible ~ .etiquettes label[for=ax1],#ax2:focus-visible ~ .etiquettes label[for=ax2],#ax3:focus-visible ~ .etiquettes label[for=ax3],
#ax4:focus-visible ~ .etiquettes label[for=ax4],#ax5:focus-visible ~ .etiquettes label[for=ax5]{outline:2px solid var(--accent);outline-offset:2px}
.echelle-grille{display:grid;grid-template-columns:2rem minmax(52rem,1fr);column-gap:.5rem;row-gap:.4rem}
.echelle-coin{display:block}
.echelle-plan{position:relative;aspect-ratio:980/440;
  background:linear-gradient(0deg,color-mix(in srgb,var(--teinte,var(--vert)) 17%,transparent),transparent 62%),
    linear-gradient(90deg,color-mix(in srgb,var(--gauche) 13%,transparent),color-mix(in srgb,var(--centre) 7%,transparent) 50%,color-mix(in srgb,var(--droite) 13%,transparent));
  border-radius:var(--rayon-s)}
/* L'axe vertical : le miroir de la barre gauche-droite, en vert. Le pied est au contact de l'axe, là où l'on
   protège l'environnement d'abord ; le haut s'éclaircit vers la croissance. */
.echelle-axe-v{position:relative;border-radius:6px;overflow:hidden;
  background:linear-gradient(0deg,var(--teinte,var(--vert)),color-mix(in srgb,var(--teinte,var(--vert)) 12%,var(--carte)));
  font:600 .74rem/1.2 var(--sans)}
.echelle-axe-v span{position:absolute;left:0;right:0;display:flex;align-items:center;justify-content:center;padding:.6rem 0;white-space:nowrap;
  writing-mode:vertical-rl;transform:rotate(180deg)}
.echelle-axe-v .bas{bottom:0;height:55%;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.35)}
.echelle-axe-v .haut{top:0;height:45%;color:var(--encre)}
.echelle-fil{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.echelle-fil line{stroke:var(--filet);stroke-width:1px;vector-effect:non-scaling-stroke;stroke-dasharray:3 4}
.echelle-fil line.lien{stroke-dasharray:none;stroke-width:1.5px;stroke-opacity:.8}
.echelle-pt{position:absolute;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;box-shadow:0 0 0 2px var(--carte)}
.echelle-av{position:absolute;display:block;width:54px;height:54px;margin:-27px 0 0 -27px;border:3px solid var(--filet);border-radius:50%;background:var(--carte);text-decoration:none}
.echelle-av img,.echelle-av .mono{display:block;width:100%;height:100%;border-radius:50%;object-fit:cover}
.echelle-av .mono,.echelle-sans .mono{display:grid;place-items:center;background:var(--accent-doux);color:var(--accent);font:600 1rem/1 var(--sans)}
.echelle-av em{position:absolute;left:50%;top:100%;transform:translateX(-50%);margin-top:2px;font:600 .68rem/1.2 var(--sans);font-style:normal;white-space:nowrap;color:var(--encre);
  background:color-mix(in srgb,var(--carte) 82%,transparent);padding:0 .2rem;border-radius:3px}
.echelle-av:hover,.echelle-av:focus-visible{z-index:3;outline:2px solid var(--encre);outline-offset:2px}
.echelle-axe{display:flex;justify-content:space-between;height:1.6rem;border-radius:6px;padding:.25rem .7rem;
  font:600 .74rem/1.2 var(--sans);color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.35);
  background:linear-gradient(90deg,var(--gauche),var(--centre),var(--droite))}
.echelle-legende{margin:.7rem 0 0;font-size:.8rem;color:var(--attenue);max-width:78ch}
.echelle-sans{margin:1.4rem 0 .6rem}
.echelle-sans h3{font:600 1rem/1.3 var(--sans);margin:0 0 .3rem}
.echelle-sans ul{list-style:none;margin:.8rem 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(10.5rem,1fr));gap:.7rem .9rem}
.echelle-sans li a{display:grid;grid-template-columns:46px 1fr;gap:0 .6rem;align-items:center;text-decoration:none;color:inherit}
.echelle-sans li img,.echelle-sans li .mono{grid-row:1/3;width:46px;height:46px;border-radius:50%;object-fit:cover;background:var(--papier2)}
.echelle-sans li b{font-size:.84rem;line-height:1.2;align-self:end}
.echelle-sans li span:not(.mono){font-size:.72rem;line-height:1.25;color:var(--attenue)}
.echelle-sans li a:hover b{text-decoration:underline}
.echelle-valeurs{margin-top:2.2rem}
.echelle-valeurs .h2{margin:0 0 .8rem}
/* Les maires qui ont parrainé un candidat : un département, une teinte — la part de ses maires parrains qui ont choisi ce candidat. */
.parrain-cartes{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),30rem));gap:1.6rem 2rem;margin:1rem 0 1.2rem}
.parrain-carte{margin:0}
.parrain-carte figcaption{font-size:.95rem;margin:0 0 .6rem}
.parrain-aplats .calque{pointer-events:auto}
.parrain-aplats .calque path{stroke:var(--carte);stroke-width:1px;vector-effect:non-scaling-stroke}
.parrain-aplats .calque a:hover path,.parrain-aplats .calque path:hover{stroke:var(--encre)}
.calque .k0{fill:var(--rampe0)}.calque .k1{fill:var(--rampe1)}.calque .k2{fill:var(--rampe2)}
.calque .k3{fill:var(--rampe3)}.calque .k4{fill:var(--rampe4)}.calque .kfaible{fill:var(--absent-f)}
.cle-parrains{display:flex;flex-wrap:wrap;gap:.3rem 1rem;font-size:.82rem;margin:.6rem 0}
.cle-parrain{display:inline-flex;align-items:center;gap:.4rem}
.cle-parrain i{display:inline-block;width:.85rem;height:.85rem;border-radius:2px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.18)}
.cle-parrain i.s0{background:var(--rampe0)}.cle-parrain i.s1{background:var(--rampe1)}.cle-parrain i.s2{background:var(--rampe2)}
.cle-parrain i.s3{background:var(--rampe3)}.cle-parrain i.s4{background:var(--rampe4)}.cle-parrain i.sfaible{background:var(--absent-f)}
.situation-cartons{display:flex;flex-wrap:wrap;gap:.6rem .9rem;margin-top:.6rem;align-items:flex-end}
.situation-cartons figure{margin:0;width:4.6rem;text-align:center}
.carton-situation{position:relative;width:100%;height:3rem}
.carton-situation img{display:block;width:100%;height:100%;object-fit:contain}
.carton-situation .calque{position:absolute;inset:0;width:100%;height:100%}
.situation-cartons figcaption{font-size:.68rem;line-height:1.2;margin-top:.2rem;color:var(--attenue)}
.situation-cartons figure.actif{width:6.4rem}
.situation-cartons figure.actif .carton-situation{height:4.4rem}
.situation-cartons figure.actif figcaption{color:var(--encre);font-weight:600}
.legende-situation{display:grid;gap:.1rem;margin:.6rem 0 .4rem}
.legende-situation div{display:grid;grid-template-columns:9.5rem minmax(0,1fr);gap:.8rem;padding:.45rem 0;border-top:1px solid var(--filet2)}
.legende-situation div:first-child{border-top:0}
.legende-situation dt{font:500 .68rem/1.5 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--attenue)}
.legende-situation dd{margin:0}
.legende-situation dd b{display:block;font-weight:600;font-size:.98rem}
.legende-situation dd>span{display:block;font-size:.8rem;color:var(--attenue);line-height:1.4}
@media(max-width:52rem){.situation .bloc-carte.ligne{grid-template-columns:1fr}
  .legende-situation div{grid-template-columns:1fr;gap:.1rem}}

/* Carte-dossier : même ligne carte+légende que .situation, mais pour une
   carte choroplèthe (une valeur par département), pas un repère dans la
   France entière — un dossier qui n'a qu'une seule mesure géographique
   (vieillesse, jeunesse) montre le tracé fin directement, sans vignette
   cliquable renvoyant à une page à part. */
.carte-dossier .bloc-carte.ligne{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:1.6rem}
@media(max-width:52rem){.carte-dossier .bloc-carte.ligne{grid-template-columns:1fr}}

/* Carte des intercommunalités ouverte depuis une page de territoire
   (?departement=29 ou ?region=53) : la carte prend toute la largeur, le
   territoire est cadré et souligné, un bouton rend la France entière. */
.cartes-empilees .bloc-carte.agrandie{max-width:52rem;order:-1}
.bloc-carte.agrandie svg.geo{max-height:70vh}
.geo .frontieres path.en-avant{stroke:var(--accent);stroke-width:3px;stroke-opacity:1}
.cadrage{display:flex;flex-wrap:wrap;gap:.4rem .8rem;align-items:baseline;margin:.2rem 0 .6rem;font-size:.9rem}
.cadrage button{font:inherit;font-size:.85rem;padding:.15rem .6rem;border:1px solid var(--filet2);border-radius:999px;background:transparent;color:var(--accent);cursor:pointer}
/* Carte interactive de /collectivites/ (cmd/build/collectivites.go,
   carteInteractive) : deux calques dans le même repère, un affiché à la
   fois — voir site.js pour le recadrage et la bascule au clic. */
.carte-interactive{max-width:38rem;display:block;margin:0 auto}
.carte-interactive .cliquable{cursor:pointer;transition:opacity .12s}
.carte-interactive .cliquable:hover{opacity:.7}
.carte-interactive [hidden]{display:none}

/* D'où vient l'argent : une barre empilée par collectivité, la même pour
   l'ensemble de son niveau en dessous. */
.origine{display:grid;gap:.5rem;margin:.9rem 0 1rem}
.origine-ligne{display:grid;grid-template-columns:minmax(8rem,14rem) minmax(0,1fr);gap:.8rem;align-items:center}
.origine-nom{font-size:.88rem}
.origine-ligne.ref .origine-nom{color:var(--attenue)}
.origine-barre{display:flex;height:1.35rem;border-radius:3px;overflow:hidden;background:var(--filet2)}
.origine-ligne.ref .origine-barre{height:.8rem;opacity:.75}
.origine-barre i{display:block;height:100%}
.o-imp{background:var(--accent)}
.o-dgf{background:#C8893B}
.o-aut{background:#B9B3A7}
.pastille{display:inline-block;width:.7rem;height:.7rem;border-radius:2px;margin-right:.45rem;vertical-align:-.05rem}
@media(max-width:40rem){.origine-ligne{grid-template-columns:1fr;gap:.25rem}}

/* Cellule qui ne se coupe pas (colonne « Étape » de la page Sources). */
.nowrap{white-space:nowrap}

/* Page d'une fonction COFOG (fonction.gohtml) : la ligne courante mise en
   évidence dans la comparaison aux neuf autres, sur le même composant .mille
   que la page « Argent public ». */
.mille .ligne-mille.en-evidence{background:var(--accent-doux)}
.mille .ligne-mille.en-evidence .l{font-weight:600}
.mille .ligne-mille.en-evidence .b i{background:var(--accent)}
.mille .ligne-mille.en-evidence .v{color:var(--accent)}

/* Mosaïque « sur 1 000 € » du hero (accueil) : la mosaïque de 1 000 carrés
   sur ordinateur, la légende cliquable toujours visible — elle sert seule de
   liste de liens sur mobile, où la mosaïque serait illisible. */
.hero-mille .mille-corps{display:block}
.hero-mille .mosaique{display:none}
@media(min-width:64rem){
  /* align-items:stretch (la valeur par défaut de la grille, posée ici en
     toutes lettres) : la mosaïque remplit toute la hauteur que prend la
     légende à sa droite, au lieu de s'arrêter à sa propre hauteur « carrée »
     et de laisser un vide sous elle. preserveAspectRatio="none" sur le SVG
     (voir mosaiqueMille, cmd/build/sujets.go) laisse les 1 000 cases
     s'étirer très légèrement plutôt que de conserver un ratio 40:25 qui ne
     correspond à la hauteur d'aucune légende réelle. */
  .hero-mille .mille-corps{display:grid;grid-template-columns:minmax(0,1fr) 15.5rem;gap:1.1rem;align-items:stretch}
  .hero-mille .mosaique{display:block;width:100%;height:100%}
  .hero-mille ol{font-size:.8rem}
  .hero-mille li a{grid-template-columns:.6rem minmax(0,1fr) 3.4rem;padding:.32rem .2rem}
  .hero-mille li a .b{display:none}
}

/* ── Icônes Font Awesome Free 6.7.2, en masques CSS ───────────────────
   Tracés officiels, sous CC BY 4.0, attribués au pied de chaque page.
   Servis ici et non dans le HTML : le même tracé sur 40 000 pages
   pesait des centaines de méga-octets. Aucun appel vers un tiers. */
.ico{display:inline-block;width:1em;height:1em;flex:0 0 auto;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}
.i-assemblee{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 512 512%22%3E%3Cpath d=%22M240.1 4.2c9.8-5.6 21.9-5.6 31.8 0l171.8 98.1L448 104l0 .9 47.9 27.4c12.6 7.2 18.8 22 15.1 36s-16.4 23.8-30.9 23.8L32 192c-14.5 0-27.2-9.8-30.9-23.8s2.5-28.8 15.1-36L64 104.9l0-.9 4.4-1.6L240.1 4.2zM64 224l64 0 0 192 40 0 0-192 64 0 0 192 48 0 0-192 64 0 0 192 40 0 0-192 64 0 0 196.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512L32 512c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1L64 224z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 512 512%22%3E%3Cpath d=%22M240.1 4.2c9.8-5.6 21.9-5.6 31.8 0l171.8 98.1L448 104l0 .9 47.9 27.4c12.6 7.2 18.8 22 15.1 36s-16.4 23.8-30.9 23.8L32 192c-14.5 0-27.2-9.8-30.9-23.8s2.5-28.8 15.1-36L64 104.9l0-.9 4.4-1.6L240.1 4.2zM64 224l64 0 0 192 40 0 0-192 64 0 0 192 48 0 0-192 64 0 0 192 40 0 0-192 64 0 0 196.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512L32 512c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1L64 224z%22/%3E%3C/svg%3E")}
.i-budget{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 640 512%22%3E%3Cpath d=%22M384 32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L398.4 96c-5.2 25.8-22.9 47.1-46.4 57.3L352 448l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0 0-294.7c-23.5-10.3-41.2-31.6-46.4-57.3L128 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l128 0c14.6-19.4 37.8-32 64-32s49.4 12.6 64 32zm55.6 288l144.9 0L512 195.8 439.6 320zM512 416c-62.9 0-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C627.2 382 574.9 416 512 416zM126.8 195.8L54.4 320l144.9 0L126.8 195.8zM.9 337.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C242 382 189.7 416 126.8 416S11.7 382 .9 337.1z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 640 512%22%3E%3Cpath d=%22M384 32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L398.4 96c-5.2 25.8-22.9 47.1-46.4 57.3L352 448l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0 0-294.7c-23.5-10.3-41.2-31.6-46.4-57.3L128 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l128 0c14.6-19.4 37.8-32 64-32s49.4 12.6 64 32zm55.6 288l144.9 0L512 195.8 439.6 320zM512 416c-62.9 0-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C627.2 382 574.9 416 512 416zM126.8 195.8L54.4 320l144.9 0L126.8 195.8zM.9 337.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C242 382 189.7 416 126.8 416S11.7 382 .9 337.1z%22/%3E%3C/svg%3E")}
.i-candidats{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 576 512%22%3E%3Cpath d=%22M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 160 64 0 0-160zm320 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-448zM224 512c17.7 0 32-14.3 32-32l0-160-64 0 0 160c0 17.7 14.3 32 32 32zM320 0c-9.3 0-18.1 4-24.2 11s-8.8 16.3-7.5 25.5l31.2 218.6L288.6 409.7c-3.5 17.3 7.8 34.2 25.1 37.7s34.2-7.8 37.7-25.1l.7-3.6c1.3 16.4 15.1 29.4 31.9 29.4c17.7 0 32-14.3 32-32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32L320 0zM112 80A48 48 0 1 0 16 80a48 48 0 1 0 96 0zm0 261.3l0-72.1 4.7 4.7c9 9 21.2 14.1 33.9 14.1l73.4 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-66.7 0-41.6-41.6c-14.3-14.3-33.8-22.4-54-22.4C27.6 160 0 187.6 0 221.6l0 55.7 0 .9L0 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 32 42.7L96 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-58.7c0-10.4-3.4-20.5-9.6-28.8L112 341.3z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 576 512%22%3E%3Cpath d=%22M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 160 64 0 0-160zm320 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-448zM224 512c17.7 0 32-14.3 32-32l0-160-64 0 0 160c0 17.7 14.3 32 32 32zM320 0c-9.3 0-18.1 4-24.2 11s-8.8 16.3-7.5 25.5l31.2 218.6L288.6 409.7c-3.5 17.3 7.8 34.2 25.1 37.7s34.2-7.8 37.7-25.1l.7-3.6c1.3 16.4 15.1 29.4 31.9 29.4c17.7 0 32-14.3 32-32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32L320 0zM112 80A48 48 0 1 0 16 80a48 48 0 1 0 96 0zm0 261.3l0-72.1 4.7 4.7c9 9 21.2 14.1 33.9 14.1l73.4 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-66.7 0-41.6-41.6c-14.3-14.3-33.8-22.4-54-22.4C27.6 160 0 187.6 0 221.6l0 55.7 0 .9L0 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 32 42.7L96 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-58.7c0-10.4-3.4-20.5-9.6-28.8L112 341.3z%22/%3E%3C/svg%3E")}
.i-carte{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 576 512%22%3E%3Cpath d=%22M408 120c0 54.6-73.1 151.9-105.2 192c-7.7 9.6-22 9.6-29.6 0C241.1 271.9 168 174.6 168 120C168 53.7 221.7 0 288 0s120 53.7 120 120zm8 80.4c3.5-6.9 6.7-13.8 9.6-20.6c.5-1.2 1-2.5 1.5-3.7l116-46.4C558.9 123.4 576 135 576 152l0 270.8c0 9.8-6 18.6-15.1 22.3L416 503l0-302.6zM137.6 138.3c2.4 14.1 7.2 28.3 12.8 41.5c2.9 6.8 6.1 13.7 9.6 20.6l0 251.4L32.9 502.7C17.1 509 0 497.4 0 480.4L0 209.6c0-9.8 6-18.6 15.1-22.3l122.6-49zM327.8 332c13.9-17.4 35.7-45.7 56.2-77l0 249.3L192 449.4 192 255c20.5 31.3 42.3 59.6 56.2 77c20.5 25.6 59.1 25.6 79.6 0zM288 152a40 40 0 1 0 0-80 40 40 0 1 0 0 80z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 576 512%22%3E%3Cpath d=%22M408 120c0 54.6-73.1 151.9-105.2 192c-7.7 9.6-22 9.6-29.6 0C241.1 271.9 168 174.6 168 120C168 53.7 221.7 0 288 0s120 53.7 120 120zm8 80.4c3.5-6.9 6.7-13.8 9.6-20.6c.5-1.2 1-2.5 1.5-3.7l116-46.4C558.9 123.4 576 135 576 152l0 270.8c0 9.8-6 18.6-15.1 22.3L416 503l0-302.6zM137.6 138.3c2.4 14.1 7.2 28.3 12.8 41.5c2.9 6.8 6.1 13.7 9.6 20.6l0 251.4L32.9 502.7C17.1 509 0 497.4 0 480.4L0 209.6c0-9.8 6-18.6 15.1-22.3l122.6-49zM327.8 332c13.9-17.4 35.7-45.7 56.2-77l0 249.3L192 449.4 192 255c20.5 31.3 42.3 59.6 56.2 77c20.5 25.6 59.1 25.6 79.6 0zM288 152a40 40 0 1 0 0-80 40 40 0 1 0 0 80z%22/%3E%3C/svg%3E")}
.i-collectivites{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 576 512%22%3E%3Cpath d=%22M208 80c0-26.5 21.5-48 48-48l64 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-8 0 0 40 152 0c30.9 0 56 25.1 56 56l0 32 8 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-64 0c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48l8 0 0-32c0-4.4-3.6-8-8-8l-152 0 0 40 8 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-64 0c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48l8 0 0-40-152 0c-4.4 0-8 3.6-8 8l0 32 8 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-64 0c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48l8 0 0-32c0-30.9 25.1-56 56-56l152 0 0-40-8 0c-26.5 0-48-21.5-48-48l0-64z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 576 512%22%3E%3Cpath d=%22M208 80c0-26.5 21.5-48 48-48l64 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-8 0 0 40 152 0c30.9 0 56 25.1 56 56l0 32 8 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-64 0c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48l8 0 0-32c0-4.4-3.6-8-8-8l-152 0 0 40 8 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-64 0c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48l8 0 0-40-152 0c-4.4 0-8 3.6-8 8l0 32 8 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-64 0c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48l8 0 0-32c0-30.9 25.1-56 56-56l152 0 0-40-8 0c-26.5 0-48-21.5-48-48l0-64z%22/%3E%3C/svg%3E")}
.i-comprendre{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 576 512%22%3E%3Cpath d=%22M249.6 471.5c10.8 3.8 22.4-4.1 22.4-15.5l0-377.4c0-4.2-1.6-8.4-5-11C247.4 52 202.4 32 144 32C93.5 32 46.3 45.3 18.1 56.1C6.8 60.5 0 71.7 0 83.8L0 454.1c0 11.9 12.8 20.2 24.1 16.5C55.6 460.1 105.5 448 144 448c33.9 0 79 14 105.6 23.5zm76.8 0C353 462 398.1 448 432 448c38.5 0 88.4 12.1 119.9 22.6c11.3 3.8 24.1-4.6 24.1-16.5l0-370.3c0-12.1-6.8-23.3-18.1-27.6C529.7 45.3 482.5 32 432 32c-58.4 0-103.4 20-123 35.6c-3.3 2.6-5 6.8-5 11L304 456c0 11.4 11.7 19.3 22.4 15.5z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 576 512%22%3E%3Cpath d=%22M249.6 471.5c10.8 3.8 22.4-4.1 22.4-15.5l0-377.4c0-4.2-1.6-8.4-5-11C247.4 52 202.4 32 144 32C93.5 32 46.3 45.3 18.1 56.1C6.8 60.5 0 71.7 0 83.8L0 454.1c0 11.9 12.8 20.2 24.1 16.5C55.6 460.1 105.5 448 144 448c33.9 0 79 14 105.6 23.5zm76.8 0C353 462 398.1 448 432 448c38.5 0 88.4 12.1 119.9 22.6c11.3 3.8 24.1-4.6 24.1-16.5l0-370.3c0-12.1-6.8-23.3-18.1-27.6C529.7 45.3 482.5 32 432 32c-58.4 0-103.4 20-123 35.6c-3.3 2.6-5 6.8-5 11L304 456c0 11.4 11.7 19.3 22.4 15.5z%22/%3E%3C/svg%3E")}
.i-europe{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 512 512%22%3E%3Cpath d=%22M266.3 48.3L232.5 73.6c-5.4 4-8.5 10.4-8.5 17.1l0 9.1c0 6.8 5.5 12.3 12.3 12.3c2.4 0 4.8-.7 6.8-2.1l41.8-27.9c2-1.3 4.4-2.1 6.8-2.1l1 0c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8l-19.9 19.9c-5.8 5.8-12.9 10.2-20.7 12.8l-26.5 8.8c-5.8 1.9-9.6 7.3-9.6 13.4c0 3.7-1.5 7.3-4.1 10l-17.9 17.9c-6.4 6.4-9.9 15-9.9 24l0 4.3c0 16.4 13.6 29.7 29.9 29.7c11 0 21.2-6.2 26.1-16l4-8.1c2.4-4.8 7.4-7.9 12.8-7.9c4.5 0 8.7 2.1 11.4 5.7l16.3 21.7c2.1 2.9 5.5 4.5 9.1 4.5c8.4 0 13.9-8.9 10.1-16.4l-1.1-2.3c-3.5-7 0-15.5 7.5-18l21.2-7.1c7.6-2.5 12.7-9.6 12.7-17.6c0-10.3 8.3-18.6 18.6-18.6l29.4 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-20.7 0c-7.2 0-14.2 2.9-19.3 8l-4.7 4.7c-2.1 2.1-3.3 5-3.3 8c0 6.2 5.1 11.3 11.3 11.3l11.3 0c6 0 11.8 2.4 16 6.6l6.5 6.5c1.8 1.8 2.8 4.3 2.8 6.8s-1 5-2.8 6.8l-7.5 7.5C386 262 384 266.9 384 272s2 10 5.7 13.7L408 304c10.2 10.2 24.1 16 38.6 16l7.3 0c6.5-20.2 10-41.7 10-64c0-111.4-87.6-202.4-197.7-207.7zm172 307.9c-3.7-2.6-8.2-4.1-13-4.1c-6 0-11.8-2.4-16-6.6L396 332c-7.7-7.7-18-12-28.9-12c-9.7 0-19.2-3.5-26.6-9.8L314 287.4c-11.6-9.9-26.4-15.4-41.7-15.4l-20.9 0c-12.6 0-25 3.7-35.5 10.7L188.5 301c-17.8 11.9-28.5 31.9-28.5 53.3l0 3.2c0 17 6.7 33.3 18.7 45.3l16 16c8.5 8.5 20 13.3 32 13.3l21.3 0c13.3 0 24 10.7 24 24c0 2.5 .4 5 1.1 7.3c71.3-5.8 132.5-47.6 165.2-107.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM187.3 100.7c-6.2-6.2-16.4-6.2-22.6 0l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l32-32c6.2-6.2 6.2-16.4 0-22.6z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 512 512%22%3E%3Cpath d=%22M266.3 48.3L232.5 73.6c-5.4 4-8.5 10.4-8.5 17.1l0 9.1c0 6.8 5.5 12.3 12.3 12.3c2.4 0 4.8-.7 6.8-2.1l41.8-27.9c2-1.3 4.4-2.1 6.8-2.1l1 0c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8l-19.9 19.9c-5.8 5.8-12.9 10.2-20.7 12.8l-26.5 8.8c-5.8 1.9-9.6 7.3-9.6 13.4c0 3.7-1.5 7.3-4.1 10l-17.9 17.9c-6.4 6.4-9.9 15-9.9 24l0 4.3c0 16.4 13.6 29.7 29.9 29.7c11 0 21.2-6.2 26.1-16l4-8.1c2.4-4.8 7.4-7.9 12.8-7.9c4.5 0 8.7 2.1 11.4 5.7l16.3 21.7c2.1 2.9 5.5 4.5 9.1 4.5c8.4 0 13.9-8.9 10.1-16.4l-1.1-2.3c-3.5-7 0-15.5 7.5-18l21.2-7.1c7.6-2.5 12.7-9.6 12.7-17.6c0-10.3 8.3-18.6 18.6-18.6l29.4 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-20.7 0c-7.2 0-14.2 2.9-19.3 8l-4.7 4.7c-2.1 2.1-3.3 5-3.3 8c0 6.2 5.1 11.3 11.3 11.3l11.3 0c6 0 11.8 2.4 16 6.6l6.5 6.5c1.8 1.8 2.8 4.3 2.8 6.8s-1 5-2.8 6.8l-7.5 7.5C386 262 384 266.9 384 272s2 10 5.7 13.7L408 304c10.2 10.2 24.1 16 38.6 16l7.3 0c6.5-20.2 10-41.7 10-64c0-111.4-87.6-202.4-197.7-207.7zm172 307.9c-3.7-2.6-8.2-4.1-13-4.1c-6 0-11.8-2.4-16-6.6L396 332c-7.7-7.7-18-12-28.9-12c-9.7 0-19.2-3.5-26.6-9.8L314 287.4c-11.6-9.9-26.4-15.4-41.7-15.4l-20.9 0c-12.6 0-25 3.7-35.5 10.7L188.5 301c-17.8 11.9-28.5 31.9-28.5 53.3l0 3.2c0 17 6.7 33.3 18.7 45.3l16 16c8.5 8.5 20 13.3 32 13.3l21.3 0c13.3 0 24 10.7 24 24c0 2.5 .4 5 1.1 7.3c71.3-5.8 132.5-47.6 165.2-107.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM187.3 100.7c-6.2-6.2-16.4-6.2-22.6 0l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l32-32c6.2-6.2 6.2-16.4 0-22.6z%22/%3E%3C/svg%3E")}
.i-frise{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 512 512%22%3E%3Cpath d=%22M75 75L41 41C25.9 25.9 0 36.6 0 57.9L0 168c0 13.3 10.7 24 24 24l110.1 0c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24l0 104c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65 0-94.1c0-13.3-10.7-24-24-24z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 512 512%22%3E%3Cpath d=%22M75 75L41 41C25.9 25.9 0 36.6 0 57.9L0 168c0 13.3 10.7 24 24 24l110.1 0c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24l0 104c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65 0-94.1c0-13.3-10.7-24-24-24z%22/%3E%3C/svg%3E")}
.i-gouvernement{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 512 512%22%3E%3Cpath d=%22M243.4 2.6l-224 96c-14 6-21.8 21-18.7 35.8S16.8 160 32 160l0 8c0 13.3 10.7 24 24 24l400 0c13.3 0 24-10.7 24-24l0-8c15.2 0 28.3-10.7 31.3-25.6s-4.8-29.9-18.7-35.8l-224-96c-8-3.4-17.2-3.4-25.2 0zM128 224l-64 0 0 196.3c-.6 .3-1.2 .7-1.8 1.1l-48 32c-11.7 7.8-17 22.4-12.9 35.9S17.9 512 32 512l448 0c14.1 0 26.5-9.2 30.6-22.7s-1.1-28.1-12.9-35.9l-48-32c-.6-.4-1.2-.7-1.8-1.1L448 224l-64 0 0 192-40 0 0-192-64 0 0 192-48 0 0-192-64 0 0 192-40 0 0-192zM256 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 512 512%22%3E%3Cpath d=%22M243.4 2.6l-224 96c-14 6-21.8 21-18.7 35.8S16.8 160 32 160l0 8c0 13.3 10.7 24 24 24l400 0c13.3 0 24-10.7 24-24l0-8c15.2 0 28.3-10.7 31.3-25.6s-4.8-29.9-18.7-35.8l-224-96c-8-3.4-17.2-3.4-25.2 0zM128 224l-64 0 0 196.3c-.6 .3-1.2 .7-1.8 1.1l-48 32c-11.7 7.8-17 22.4-12.9 35.9S17.9 512 32 512l448 0c14.1 0 26.5-9.2 30.6-22.7s-1.1-28.1-12.9-35.9l-48-32c-.6-.4-1.2-.7-1.8-1.1L448 224l-64 0 0 192-40 0 0-192-64 0 0 192-48 0 0-192-64 0 0 192-40 0 0-192zM256 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z%22/%3E%3C/svg%3E")}
.i-loupe{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 512 512%22%3E%3Cpath d=%22M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 512 512%22%3E%3Cpath d=%22M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z%22/%3E%3C/svg%3E")}
.i-lune{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 384 512%22%3E%3Cpath d=%22M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 384 512%22%3E%3Cpath d=%22M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z%22/%3E%3C/svg%3E")}
.i-partis{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 640 512%22%3E%3Cpath d=%22M72 88a56 56 0 1 1 112 0A56 56 0 1 1 72 88zM64 245.7C54 256.9 48 271.8 48 288s6 31.1 16 42.3l0-84.7zm144.4-49.3C178.7 222.7 160 261.2 160 304c0 34.3 12 65.8 32 90.5l0 21.5c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-26.8C26.2 371.2 0 332.7 0 288c0-61.9 50.1-112 112-112l32 0c24 0 46.2 7.5 64.4 20.3zM448 416l0-21.5c20-24.7 32-56.2 32-90.5c0-42.8-18.7-81.3-48.4-107.7C449.8 183.5 472 176 496 176l32 0c61.9 0 112 50.1 112 112c0 44.7-26.2 83.2-64 101.2l0 26.8c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32zm8-328a56 56 0 1 1 112 0A56 56 0 1 1 456 88zM576 245.7l0 84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM320 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM240 304c0 16.2 6 31 16 42.3l0-84.7c-10 11.3-16 26.1-16 42.3zm144-42.3l0 84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM448 304c0 44.7-26.2 83.2-64 101.2l0 42.8c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-42.8c-37.8-18-64-56.5-64-101.2c0-61.9 50.1-112 112-112l32 0c61.9 0 112 50.1 112 112z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 640 512%22%3E%3Cpath d=%22M72 88a56 56 0 1 1 112 0A56 56 0 1 1 72 88zM64 245.7C54 256.9 48 271.8 48 288s6 31.1 16 42.3l0-84.7zm144.4-49.3C178.7 222.7 160 261.2 160 304c0 34.3 12 65.8 32 90.5l0 21.5c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-26.8C26.2 371.2 0 332.7 0 288c0-61.9 50.1-112 112-112l32 0c24 0 46.2 7.5 64.4 20.3zM448 416l0-21.5c20-24.7 32-56.2 32-90.5c0-42.8-18.7-81.3-48.4-107.7C449.8 183.5 472 176 496 176l32 0c61.9 0 112 50.1 112 112c0 44.7-26.2 83.2-64 101.2l0 26.8c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32zm8-328a56 56 0 1 1 112 0A56 56 0 1 1 456 88zM576 245.7l0 84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM320 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM240 304c0 16.2 6 31 16 42.3l0-84.7c-10 11.3-16 26.1-16 42.3zm144-42.3l0 84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM448 304c0 44.7-26.2 83.2-64 101.2l0 42.8c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-42.8c-37.8-18-64-56.5-64-101.2c0-61.9 50.1-112 112-112l32 0c61.9 0 112 50.1 112 112z%22/%3E%3C/svg%3E")}
.i-personnes{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 448 512%22%3E%3Cpath d=%22M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304l-91.4 0z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 448 512%22%3E%3Cpath d=%22M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304l-91.4 0z%22/%3E%3C/svg%3E")}
.i-scrutins{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 576 512%22%3E%3Cpath d=%22M96 80c0-26.5 21.5-48 48-48l288 0c26.5 0 48 21.5 48 48l0 304L96 384 96 80zm313 47c-9.4-9.4-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L409 161c9.4-9.4 9.4-24.6 0-33.9zM0 336c0-26.5 21.5-48 48-48l16 0 0 128 448 0 0-128 16 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48l0-96z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 576 512%22%3E%3Cpath d=%22M96 80c0-26.5 21.5-48 48-48l288 0c26.5 0 48 21.5 48 48l0 304L96 384 96 80zm313 47c-9.4-9.4-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L409 161c9.4-9.4 9.4-24.6 0-33.9zM0 336c0-26.5 21.5-48 48-48l16 0 0 128 448 0 0-128 16 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48l0-96z%22/%3E%3C/svg%3E")}
.i-securite{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 512 512%22%3E%3Cpath d=%22M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0zm0 66.8l0 378.1C394 378 431.1 230.1 432 141.4L256 66.8s0 0 0 0z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 512 512%22%3E%3Cpath d=%22M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0zm0 66.8l0 378.1C394 378 431.1 230.1 432 141.4L256 66.8s0 0 0 0z%22/%3E%3C/svg%3E")}
.i-senat{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 512 512%22%3E%3Cpath d=%22M248 0l16 0c13.3 0 24 10.7 24 24l0 10.7C368.4 48.1 431.9 111.6 445.3 192l2.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 256c-17.7 0-32-14.3-32-32s14.3-32 32-32l2.7 0C80.1 111.6 143.6 48.1 224 34.7L224 24c0-13.3 10.7-24 24-24zM64 288l64 0 0 128 40 0 0-128 64 0 0 128 48 0 0-128 64 0 0 128 40 0 0-128 64 0 0 132.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512L32 512c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1L64 288z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 512 512%22%3E%3Cpath d=%22M248 0l16 0c13.3 0 24 10.7 24 24l0 10.7C368.4 48.1 431.9 111.6 445.3 192l2.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 256c-17.7 0-32-14.3-32-32s14.3-32 32-32l2.7 0C80.1 111.6 143.6 48.1 224 34.7L224 24c0-13.3 10.7-24 24-24zM64 288l64 0 0 128 40 0 0-128 64 0 0 128 48 0 0-128 64 0 0 128 40 0 0-128 64 0 0 132.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512L32 512c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1L64 288z%22/%3E%3C/svg%3E")}
.i-soleil{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 512 512%22%3E%3Cpath d=%22M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 512 512%22%3E%3Cpath d=%22M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z%22/%3E%3C/svg%3E")}
.i-sources{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 448 512%22%3E%3Cpath d=%22M448 80l0 48c0 44.2-100.3 80-224 80S0 172.2 0 128L0 80C0 35.8 100.3 0 224 0S448 35.8 448 80zM393.2 214.7c20.8-7.4 39.9-16.9 54.8-28.6L448 288c0 44.2-100.3 80-224 80S0 332.2 0 288L0 186.1c14.9 11.8 34 21.2 54.8 28.6C99.7 230.7 159.5 240 224 240s124.3-9.3 169.2-25.3zM0 346.1c14.9 11.8 34 21.2 54.8 28.6C99.7 390.7 159.5 400 224 400s124.3-9.3 169.2-25.3c20.8-7.4 39.9-16.9 54.8-28.6l0 85.9c0 44.2-100.3 80-224 80S0 476.2 0 432l0-85.9z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 448 512%22%3E%3Cpath d=%22M448 80l0 48c0 44.2-100.3 80-224 80S0 172.2 0 128L0 80C0 35.8 100.3 0 224 0S448 35.8 448 80zM393.2 214.7c20.8-7.4 39.9-16.9 54.8-28.6L448 288c0 44.2-100.3 80-224 80S0 332.2 0 288L0 186.1c14.9 11.8 34 21.2 54.8 28.6C99.7 230.7 159.5 240 224 240s124.3-9.3 169.2-25.3zM0 346.1c14.9 11.8 34 21.2 54.8 28.6C99.7 390.7 159.5 400 224 400s124.3-9.3 169.2-25.3c20.8-7.4 39.9-16.9 54.8-28.6l0 85.9c0 44.2-100.3 80-224 80S0 476.2 0 432l0-85.9z%22/%3E%3C/svg%3E")}
.i-systeme{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 512 512%22%3E%3Cpath d=%22M448 256c0-106-86-192-192-192l0 384c106 0 192-86 192-192zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 512 512%22%3E%3Cpath d=%22M448 256c0-106-86-192-192-192l0 384c106 0 192-86 192-192zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z%22/%3E%3C/svg%3E")}
.i-themes{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 512 512%22%3E%3Cpath d=%22M345 39.1L472.8 168.4c52.4 53 52.4 138.2 0 191.2L360.8 472.9c-9.3 9.4-24.5 9.5-33.9 .2s-9.5-24.5-.2-33.9L438.6 325.9c33.9-34.3 33.9-89.4 0-123.7L310.9 72.9c-9.3-9.4-9.2-24.6 .2-33.9s24.6-9.2 33.9 .2zM0 229.5L0 80C0 53.5 21.5 32 48 32l149.5 0c17 0 33.3 6.7 45.3 18.7l168 168c25 25 25 65.5 0 90.5L277.3 442.7c-25 25-65.5 25-90.5 0l-168-168C6.7 262.7 0 246.5 0 229.5zM144 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z%22/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 512 512%22%3E%3Cpath d=%22M345 39.1L472.8 168.4c52.4 53 52.4 138.2 0 191.2L360.8 472.9c-9.3 9.4-24.5 9.5-33.9 .2s-9.5-24.5-.2-33.9L438.6 325.9c33.9-34.3 33.9-89.4 0-123.7L310.9 72.9c-9.3-9.4-9.2-24.6 .2-33.9s24.6-9.2 33.9 .2zM0 229.5L0 80C0 53.5 21.5 32 48 32l149.5 0c17 0 33.3 6.7 45.3 18.7l168 168c25 25 25 65.5 0 90.5L277.3 442.7c-25 25-65.5 25-90.5 0l-168-168C6.7 262.7 0 246.5 0 229.5zM144 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z%22/%3E%3C/svg%3E")}
