/* Politique CW, partie publique.
   Deux voix, deux caractères : Nunito, ronde, pour ce que dit le site, Literata pour ce que dit le procès-verbal.
   Un seul motif, celui de l'emblème : un point par siège du conseil. Il sert à tout : le logo, les votes,
   les numéros des points, la couleur de chaque orateur. Les formes sont rondes, les graisses légères. */

@font-face { font-family: "Nunito"; src: url("polices/nunito.woff2") format("woff2"); font-weight: 200 1000; font-display: swap; }
@font-face { font-family: "Literata"; src: url("polices/literata.woff2") format("woff2"); font-weight: 200 900; font-style: normal; font-display: swap; }
@font-face { font-family: "Literata"; src: url("polices/literata-italique.woff2") format("woff2"); font-weight: 200 900; font-style: italic; font-display: swap; }

:root {
    --encre: #15212b;
    --encre-2: #4a5864;
    --papier: #f3f5f6;
    --blanc: #fff;
    --trait: #d5dbe0;
    --trait-fort: #9aa6b0;
    --lys: #0e3f5c;
    --lien: #14608f;
    --pour: #17608f;
    --lin: #f0be2e;
    --lin-pale: #fdf3cf;
    --lys-pale: #e4eef4;
    --contre: #c9442c;
    --abstention: #c98500;
    --rond: 1rem;
    /* Couleurs des groupes : un ordre fixe, vérifié pour rester distinguable par les daltoniens. Ce ne sont pas
       celles des partis ; le gris sert aux indépendants et aux groupes sans liste. */
    --g0: #7d8791; --g1: #4a3aa7; --g2: #159a69; --g3: #a85b00; --g4: #d55181; --g5: #008300;

    --sans: "Nunito", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    --serif: "Literata", Georgia, "Times New Roman", serif;
    --gouttiere: 1rem;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
    margin: 0;
    background: var(--papier);
    color: var(--encre);
    font-family: var(--sans);
    font-size: 1.0625rem;
    line-height: 1.5;
    overflow-wrap: break-word;
}
img { max-width: 100%; height: auto; }
a { color: var(--lien); text-decoration-thickness: 1px; text-underline-offset: .18em; }
a:hover { text-decoration-thickness: 2px; }
:focus-visible { outline: 3px solid var(--lin); outline-offset: 2px; border-radius: 6px; }
.icone { vertical-align: -.125em; flex: none; }
mark { background: var(--lin-pale); color: inherit; padding: 0 .15em; border-radius: .3em; }

.cadre { max-width: 72rem; margin-inline: auto; padding-inline: var(--gouttiere); }
.page { padding-block: 1.75rem 3.5rem; }
.evitement { position: absolute; left: -999px; top: 0; background: var(--lin); color: var(--encre); padding: .5rem .9rem; z-index: 10; }
.evitement:focus { left: .5rem; top: .5rem; }

/* --- Titres ------------------------------------------------------------------------------- */
h1, h2, h3 { font-family: var(--sans); line-height: 1.15; margin: 0 0 .5em; text-wrap: balance; }
h1 { font-size: clamp(1.7rem, 1.2rem + 2.4vw, 2.6rem); font-weight: 680; letter-spacing: -.015em; }
h2 { font-size: clamp(1.25rem, 1.1rem + .7vw, 1.5rem); font-weight: 690; letter-spacing: -.01em; margin-top: 2.4rem; }
h3 { font-size: 1.05rem; font-weight: 700; margin-top: 1.6rem; }
strong, b { font-weight: 700; }
p { margin: 0 0 .9em; text-wrap: pretty; }
.chapeau { text-wrap: pretty; font-size: 1.18rem; line-height: 1.45; color: var(--encre-2); max-width: 46rem; }
.apres { margin-top: 1.2rem; }
.soude { white-space: nowrap; }
.legende, .note { color: var(--encre-2); font-size: .92rem; }

/* --- Bandeau bêta et en-tête ---------------------------------------------------------------- */
.bande-beta { margin: 0; background: var(--lin-pale); font-size: .86rem; padding: .35rem var(--gouttiere); text-align: center; }
.bande-beta a { color: var(--encre); font-weight: 650; white-space: nowrap; }
.tete { background: var(--blanc); border-bottom: 1px solid var(--trait); }
.tete-ligne { display: flex; align-items: center; gap: .5rem 1.25rem; min-height: 3.75rem; flex-wrap: wrap; padding-block: .4rem; }
.marque { display: inline-flex; align-items: center; gap: .55rem; color: var(--lys); text-decoration: none; font-weight: 760; font-size: 1.25rem; letter-spacing: -.01em; line-height: 1; }
.embleme circle { fill: currentColor; }
.embleme .temoin { fill: var(--lin); }
.menu { display: flex; gap: .25rem; margin-left: auto; }
.menu a { color: var(--encre); text-decoration: none; font-weight: 600; padding: .45rem .9rem; border-radius: 99px; min-height: 2.75rem; display: inline-flex; align-items: center; }
.menu a:hover { background: var(--papier); }
.menu a[aria-current="page"] { background: var(--lys-pale); color: var(--lys); }
.compte { display: flex; align-items: center; gap: .25rem; }
.compte form { margin: 0; }
.lien-discret { background: none; border: 0; font: inherit; font-size: .9rem; color: var(--encre-2); text-decoration: none; cursor: pointer; padding: .5rem; min-height: 2.75rem; min-width: 2.75rem; display: inline-flex; align-items: center; justify-content: center; gap: .3rem; border-radius: 99px; }
.lien-discret:hover { color: var(--encre); background: var(--papier); }

/* --- Boutons et champs ---------------------------------------------------------------------- */
.bouton { display: inline-flex; align-items: center; gap: .45rem; font: inherit; font-weight: 650; background: var(--lys); color: #fff; border: 0; border-radius: 99px; padding: .7rem 1.3rem; min-height: 2.9rem; text-decoration: none; cursor: pointer; }
.bouton:hover { background: #0a3049; }
.bouton.clair { background: var(--blanc); color: var(--lys); box-shadow: inset 0 0 0 1.5px var(--lys); }
.bouton.clair:hover { background: var(--papier); }
input[type="text"], input[type="search"], input[type="password"], select, textarea {
    font: inherit; font-size: max(1rem, 16px); color: var(--encre); background: var(--blanc);
    border: 1.5px solid var(--trait-fort); border-radius: .8rem; padding: .65rem .9rem; width: 100%; min-height: 2.9rem;
}
input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 3px solid var(--lin); outline-offset: 0; border-color: var(--lys); }
label { font-weight: 650; display: block; margin-bottom: .3rem; }

/* --- Les sièges : un point par siège, comme dans l'emblème ------------------------------------ */
.ruban { display: flex; gap: 3px; max-width: 30rem; }
.siege { flex: 1 1 0; min-width: 0; aspect-ratio: 1; border-radius: 50%; }
.siege.pour { background: var(--pour); }
.siege.contre { background: var(--contre); }
/* L'abstention est hachurée : elle se reconnaît sans la couleur. */
.siege.abstention { background: repeating-linear-gradient(135deg, var(--abstention) 0 3px, #a36c00 3px 5px); }
.siege.g0 { background: var(--g0); } .siege.g1 { background: var(--g1); } .siege.g2 { background: var(--g2); }
.siege.g3 { background: var(--g3); } .siege.g4 { background: var(--g4); } .siege.g5 { background: var(--g5); }
.siege.vide { box-shadow: inset 0 0 0 1.5px var(--trait-fort); }
.ruban.mini { width: 12.5rem; max-width: 100%; gap: 1.5px; }
.ruban.mini .siege.vide { box-shadow: inset 0 0 0 1px var(--trait-fort); }
.ruban.mini .siege.abstention { background: var(--abstention); }
.cle-ruban { display: flex; flex-wrap: wrap; gap: .3rem 1.1rem; list-style: none; padding: 0; margin: .6rem 0 0; font-size: .9rem; color: var(--encre-2); }
.cle-ruban li { display: inline-flex; align-items: center; gap: .4rem; }
.cle-ruban .siege { flex: none; width: .8rem; height: .8rem; display: inline-block; }

/* --- Accueil : tout est centré sur la recherche -------------------------------------------- */
.hero { background: var(--blanc); border-bottom: 1px solid var(--trait); padding-block: clamp(2.25rem, 6vw, 4.5rem) clamp(2rem, 5vw, 3.5rem); text-align: center; }
.hero h1 { font-size: clamp(2rem, 1.1rem + 4vw, 3.4rem); font-weight: 680; line-height: 1.1; letter-spacing: -.025em; max-width: 19ch; color: var(--lys); margin: 0 auto .45em; text-wrap: balance; }
/* « en plus clair. » : souligné d'un trait jaune, la couleur du point témoin de l'emblème. */
.hero h1 .accent { white-space: nowrap; background: linear-gradient(transparent 68%, rgb(240 190 46 / .55) 68%, rgb(240 190 46 / .55) 90%, transparent 90%); padding-inline: .06em; }
.hero .chapeau { max-width: 34rem; margin-inline: auto; text-wrap: balance; }
.recherche-grande { display: flex; gap: .5rem; max-width: 40rem; margin: 1.6rem 0 .8rem; position: relative; }
/* Propositions pendant la frappe. */
.suggestions { position: absolute; z-index: 5; top: calc(100% + .4rem); left: 0; right: 0; background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); box-shadow: 0 12px 32px rgb(14 63 92 / .16); padding: .4rem; text-align: left; max-height: min(70vh, 30rem); overflow-y: auto; }
.suggestions p { margin: .5rem .7rem .15rem; font-size: .8rem; color: var(--encre-2); }
.suggestions a { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 .6rem; padding: .5rem .7rem; border-radius: .7rem; text-decoration: none; color: var(--encre); min-height: 2.6rem; }
.suggestions a span { font-weight: 600; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.suggestions a small { color: var(--encre-2); font-size: .86rem; }
.suggestions a:hover, .suggestions a:focus-visible { background: var(--lys-pale); outline: none; }
.suggestions a.tout { color: var(--lien); font-weight: 600; justify-content: center; }
.hero .recherche-grande { margin-inline: auto; }
.recherche-grande input { flex: 1; min-width: 0; font-size: 1.1rem; padding: .8rem 1.3rem; min-height: 3.4rem; border-color: var(--lys); border-radius: 99px; }
.recherche-grande .bouton { min-height: 3.4rem; padding-inline: 1.4rem; }
.base { color: var(--encre-2); font-size: .98rem; max-width: 40rem; margin: 0 auto; text-wrap: balance; }
.base strong { color: var(--encre); }
/* Un vote partagé, tiré au hasard : un encart discret sous la recherche. */
.vote-hasard { max-width: 34rem; margin: clamp(1.75rem, 4vw, 2.5rem) auto 0; padding: 1rem 1.25rem 1.05rem; background: var(--papier); border-radius: var(--rond); transition: opacity .15s; }
.vote-hasard.attente { opacity: .45; }
.vote-hasard p { margin: 0; }
.vote-hasard .surtitre { color: var(--encre-2); font-size: .88rem; }
.vote-hasard .intitule { margin: .2rem 0 .8rem; text-wrap: balance; }
.vote-hasard .intitule a { font-weight: 650; line-height: 1.3; color: var(--encre); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.vote-hasard .ruban { max-width: 22rem; margin-inline: auto; }
.vote-hasard .decompte { margin-top: .65rem; font-weight: 650; color: var(--lys); }
.vote-hasard .quand-vote { color: var(--encre-2); font-size: .88rem; margin-top: .1rem; }
.vote-hasard .autre { margin-top: .5rem; }
.lien-autre { display: inline-flex; align-items: center; gap: .4rem; font-size: .92rem; min-height: 2.5rem; padding: 0 .8rem; border-radius: 99px; text-decoration: none; }
.lien-autre:hover { background: var(--lys-pale); }

.bloc { padding-block: 2.25rem; }
.bloc > h2:first-child { margin-top: 0; }
.titre-et-lien { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: .3rem 1rem; margin-bottom: .9rem; }
.titre-et-lien h2 { margin: 0; }

/* --- Listes de séances ---------------------------------------------------------------------- */
.liste-seances { list-style: none; margin: 0; padding: 0; background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); overflow: hidden; }
.liste-seances li + li { border-top: 1px solid var(--trait); }
.liste-seances a { display: grid; grid-template-columns: 1fr auto; gap: .15rem 1rem; align-items: baseline; padding: .9rem 1.1rem; text-decoration: none; color: var(--encre); }
.liste-seances a:hover { background: var(--lys-pale); }
.liste-seances .quand { font-weight: 650; font-size: 1.12rem; }
.liste-seances .quand small { font-weight: 400; font-size: .9rem; color: var(--encre-2); margin-left: .4rem; }
.liste-seances .combien { color: var(--encre-2); font-size: .95rem; grid-column: 1 / -1; }
.liste-seances .partages { font-size: .9rem; font-weight: 600; color: var(--lys); white-space: nowrap; }
.annee { display: grid; grid-template-columns: 1fr; gap: .25rem 2rem; margin-top: 2.25rem; }
.annee > h2 { font-size: clamp(1.8rem, 1.4rem + 2vw, 2.6rem); font-weight: 600; color: var(--lys); margin: 0; line-height: 1; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }

/* --- Fiche d'une séance --------------------------------------------------------------------- */
.fil { font-size: .92rem; color: var(--encre-2); margin-bottom: .9rem; display: flex; flex-wrap: wrap; gap: .2rem .45rem; align-items: center; }
.fil a { color: var(--encre-2); }
/* Les cases s'étirent pour remplir la ligne : jamais de case vide (le fond gris entre les cases n'apparaît qu'en filet). */
.faits { display: flex; flex-wrap: wrap; gap: 1px; background: var(--trait); border: 1px solid var(--trait); border-radius: var(--rond); overflow: hidden; margin: 1.4rem 0 0; max-width: 52rem; }
/* Largeur selon le nombre de cases : deux cases ne s'étalent pas sur toute la largeur. */
.faits:has(> div:first-child:nth-last-child(1)) { max-width: 17rem; }
.faits:has(> div:first-child:nth-last-child(2)) { max-width: 30rem; }
.faits:has(> div:first-child:nth-last-child(3)) { max-width: 42rem; }
.faits > div { flex: 1 1 10rem; background: var(--blanc); padding: .8rem .95rem; }
.faits dt { font-size: .86rem; color: var(--encre-2); }
.faits dd { margin: .1rem 0 0; font-weight: 680; font-size: 1.08rem; line-height: 1.25; white-space: nowrap; }
.faits dd small { display: block; white-space: normal; font-weight: 400; font-size: .86rem; color: var(--encre-2); }

.ordre { list-style: none; margin: 1rem 0 0; padding: 0; background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); overflow: hidden; }
.ordre > li + li { border-top: 1px solid var(--trait); }
.ordre a.ligne { display: grid; grid-template-columns: 2.5rem minmax(0, 1fr); gap: .15rem .8rem; padding: .85rem .9rem; text-decoration: none; color: var(--encre); }
.ordre a.ligne:hover { background: var(--lys-pale); }
/* Le numéro du point tient dans un rond : le même point que dans l'emblème. */
.ordre .num { grid-row: span 3; align-self: start; width: 2.5rem; height: 2.5rem; border-radius: 50%; background: var(--lys-pale); color: var(--lys); display: flex; align-items: center; justify-content: center; font-weight: 650; font-size: 1rem; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.ordre a.ligne:hover .num { background: var(--blanc); }
.ordre .hors .num { background: var(--lin-pale); color: #7a5a00; }
.ordre .titre { font-weight: 600; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.ordre .sorte { display: block; font-weight: 400; font-size: .84rem; color: var(--encre-2); }
.ordre .bref { color: var(--encre-2); font-size: .95rem; }
.ordre .issue { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .7rem; font-size: .9rem; color: var(--encre-2); margin-top: .2rem; }
.ordre .issue.partage { color: var(--encre); font-weight: 650; }
/* Minutage vidéo d'un point (v147) : une pastille sous la ligne, alignée sur le titre ; la vidéo s'ouvre sous le point. */
.moment-point { display: inline-flex; align-items: center; gap: .3rem; padding: .2rem .6rem; border-radius: 999px; background: var(--lys-pale); color: var(--lys); font-size: .88rem; font-weight: 650; font-variant-numeric: tabular-nums; text-decoration: none; }
.moment-point:hover, .moment-point.en-cours { background: var(--lys); color: var(--blanc); }
.moment-point.exemple { padding: .1rem .35rem; vertical-align: -.15em; }
.ordre .moment-point { margin: -.6rem 0 .8rem calc(.9rem + 2.5rem + .8rem); }
.ordre .lecteur-video { margin: 0 .9rem .9rem; max-width: none; }
.legende-moments { margin-top: .6rem; }

.presences { margin-top: 1.25rem; max-width: 46rem; }
details > summary { cursor: pointer; font-weight: 650; padding: .55rem 0; min-height: 2.75rem; display: flex; align-items: center; gap: .4rem; list-style: none; }
details > summary::-webkit-details-marker { display: none; }
details > summary::before { content: ""; width: .5rem; height: .5rem; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(-45deg); transition: transform .15s; flex: none; margin-right: .2rem; }
details[open] > summary::before { transform: rotate(45deg); }
.liste-elus { list-style: none; padding: 0; margin: .3rem 0 1rem; columns: 2 14rem; column-gap: 2rem; font-size: .96rem; }
.liste-elus li { break-inside: avoid; padding: .12rem 0; }
.liste-elus small { color: var(--encre-2); }

/* --- Fiche d'un point ----------------------------------------------------------------------- */
.tete-point { display: grid; grid-template-columns: 1fr; gap: .2rem 1.5rem; }
.tete-point .designation { display: inline-flex; align-items: center; justify-self: start; font-weight: 650; font-size: .95rem; color: var(--lys); background: var(--lys-pale); border-radius: 99px; padding: .3rem .85rem; margin: 0 0 .6rem; }
.tete-point h1 { max-width: 26ch; margin-bottom: .35em; }
.tete-point h1.long { font-size: clamp(1.25rem, 1.1rem + .8vw, 1.6rem); line-height: 1.25; max-width: 46rem; letter-spacing: -.01em; }
.titre-officiel { font-family: var(--serif); color: var(--encre-2); font-size: .98rem; line-height: 1.5; max-width: 44rem; margin: 0 0 .8rem; }
.qualites { display: flex; flex-wrap: wrap; gap: .4rem; list-style: none; padding: 0; margin: .4rem 0 0; }
.qualites li { font-size: .88rem; font-weight: 600; padding: .28rem .8rem; border-radius: 99px; background: var(--blanc); box-shadow: inset 0 0 0 1px var(--trait-fort); }
.qualites li.adopte { background: var(--lys); color: #fff; box-shadow: none; }
.qualites li.rejete { background: var(--contre); color: #fff; box-shadow: none; }

.colonnes { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0 3rem; }
.carte-vote { background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); padding: 1.2rem 1.25rem 1.3rem; margin-top: 1.6rem; max-width: 46rem; }
.carte-vote h2 { margin: 0 0 .15rem; font-size: .95rem; font-weight: 600; letter-spacing: 0; color: var(--encre-2); }
.carte-vote .decompte { font-weight: 650; font-size: clamp(1.25rem, 1.1rem + .8vw, 1.55rem); line-height: 1.2; letter-spacing: -.015em; margin: 0 0 .9rem; }
.carte-vote + .carte-vote { margin-top: .8rem; }
.noms-vote { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); gap: .9rem 1.5rem; margin-top: 1rem; }
.noms-vote h3 { margin: 0 0 .3rem; font-size: .95rem; display: flex; align-items: center; gap: .45rem; }
.noms-vote h3 .siege { flex: none; width: .8rem; height: .8rem; }
.noms-vote ul { list-style: none; margin: 0; padding: 0; font-size: .95rem; }
.noms-vote li { padding: .08rem 0; }

.noms-pour { margin-top: .6rem; }
.noms-pour summary .siege { flex: none; width: .8rem; height: .8rem; }
.resume { margin-top: 1.8rem; max-width: 44rem; }
.resume .en-bref { font-size: 1.18rem; line-height: 1.45; font-weight: 600; }
.montants { list-style: none; padding: 0; margin: 1rem 0 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); gap: .6rem; }
.montants li { background: var(--lin-pale); border-radius: .9rem; padding: .65rem .95rem; }
.montants b { display: block; font-weight: 650; font-size: 1.15rem; }
.montants span { font-size: .9rem; color: var(--encre-2); }

/* Ce que dit le procès-verbal : une autre voix, un autre caractère. */
.proces { margin-top: 2.6rem; }
.proces > h2 { display: flex; flex-wrap: wrap; align-items: baseline; gap: .3rem .8rem; }
.proces > h2 small { font-size: .9rem; font-weight: 400; letter-spacing: 0; color: var(--encre-2); }
.texte-pv { font-family: var(--serif); font-size: 1.06rem; line-height: 1.68; max-width: 42rem; overflow-wrap: anywhere; }
.texte-pv p { margin: 0 0 .95em; }
.texte-pv h3 { font-family: var(--sans); }
.texte-pv .legende { font-family: var(--sans); }
.texte-pv .references-pv { color: var(--encre-2); font-size: .98rem; background: var(--blanc); border-radius: var(--rond); padding: 1rem 1.15rem .3rem; }
.debat { max-width: 42rem; }
/* Une prise de parole : une bulle teintée, et un point de la couleur de l'orateur devant son nom. */
.intervention { --teinte: var(--lys); margin: 1.15rem 0; padding: .95rem 1.15rem .8rem; background: color-mix(in srgb, var(--teinte) 9%, #fff); border-radius: 1.15rem 1.15rem 1.15rem .3rem; }
.intervention blockquote { margin: 0; }
.intervention blockquote p:last-child { margin-bottom: .5em; }
.intervention figcaption { font-style: italic; font-size: .95rem; color: color-mix(in srgb, var(--teinte) 78%, #000); position: relative; padding-left: 1.15rem; }
.intervention figcaption::before { content: ""; position: absolute; left: 0; top: .5em; width: .65rem; height: .65rem; border-radius: 50%; background: var(--teinte); }
.intervention.presidence { --teinte: #55606d; margin-left: clamp(1rem, 7%, 3.5rem); border-radius: 1.15rem 1.15rem .3rem 1.15rem; }
.orateur-1 { --teinte: #17608f; }
.orateur-2 { --teinte: #2e7d5b; }
.orateur-3 { --teinte: #9a5b13; }
.orateur-4 { --teinte: #7a3b69; }
.orateur-5 { --teinte: #1f6f78; }
.orateur-6 { --teinte: #a3352c; }
.orateur-7 { --teinte: #5a6b1f; }
.orateur-8 { --teinte: #4b4a8c; }

.table-responsive { overflow-x: auto; margin: 0 0 1.1em; max-width: 100%; }
.texte-pv:has(.tableau-pv), .debat:has(.tableau-pv) { max-width: none; }
.texte-pv:has(.tableau-pv) > p, .debat:has(.tableau-pv) > p, .debat:has(.tableau-pv) > figure { max-width: 42rem; }
.tableau-pv { border-collapse: collapse; font-family: var(--sans); font-size: .88rem; line-height: 1.35; background: var(--blanc); overflow-wrap: normal; }
.tableau-pv th, .tableau-pv td { border: 1px solid var(--trait); padding: .35rem .6rem; text-align: left; vertical-align: top; }
.tableau-pv th { background: var(--papier); font-weight: 650; }
.tableau-pv td:first-child, .tableau-pv th:first-child { min-width: 10rem; }
.text-end { text-align: right !important; }
.text-nowrap { white-space: nowrap; }
.image-texte { display: inline-block; vertical-align: top; width: 15rem; max-width: 100%; margin: .3rem .8rem 1rem 0; }
.image-texte img { display: block; width: 100%; border: 1px solid var(--trait); border-radius: .7rem; background: var(--blanc); }
.image-texte figcaption { font-family: var(--sans); font-size: .82rem; color: var(--encre-2); margin-top: .25rem; }

.galerie { display: grid; grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr)); gap: 1rem; margin: 1rem 0 0; padding: 0; list-style: none; }
.galerie figure { margin: 0; }
.galerie img { display: block; width: 100%; border: 1px solid var(--trait); border-radius: .7rem; background: var(--blanc); }
.galerie figcaption { font-size: .88rem; color: var(--encre-2); margin-top: .3rem; }

.lieux { list-style: none; padding: 0; margin: .6rem 0 0; display: grid; gap: .5rem; max-width: 42rem; }
.lieux li { display: flex; gap: .6rem; align-items: baseline; }
.lieux .icone { color: var(--contre); position: relative; top: .1em; }
.lieux small { color: var(--encre-2); display: block; }
.carte-point { height: 18rem; max-width: 42rem; margin-top: .9rem; border: 1px solid var(--trait); border-radius: var(--rond); background: var(--trait); overflow: hidden; }

.source { margin-top: 2.6rem; padding: 1rem 1.2rem; background: var(--lys-pale); border-radius: var(--rond); max-width: 46rem; font-size: .95rem; }
.source p:last-child { margin-bottom: 0; }
.voisins { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; margin-top: 2.2rem; }
.voisins a { display: block; padding: .8rem .9rem; background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); text-decoration: none; color: var(--encre); min-height: 100%; }
.voisins a:hover { border-color: var(--lys); }
.voisins a small { display: flex; align-items: center; gap: .3rem; color: var(--encre-2); font-size: .86rem; margin-bottom: .15rem; }
.voisins a span { font-weight: 600; line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.voisins .suivant { text-align: right; grid-column: 2; }
.voisins .suivant small { justify-content: flex-end; }

/* --- Recherche ------------------------------------------------------------------------------ */
.filtres { display: flex; flex-wrap: wrap; gap: .6rem 1.2rem; align-items: center; margin: 0 0 1.4rem; }
.filtres select { width: auto; min-width: 9rem; border-radius: 99px; padding-inline: 1.1rem; }
.coche { display: inline-flex; align-items: center; gap: .5rem; font-weight: 600; margin: 0; min-height: 2.75rem; }
.coche input { width: 1.2rem; height: 1.2rem; accent-color: var(--lys); }
.resultats { list-style: none; margin: 0; padding: 0; max-width: 50rem; background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); overflow: hidden; }
.resultats li { padding: 1rem 1.15rem; }
.resultats li + li { border-top: 1px solid var(--trait); }
.resultats h2 { font-size: 1.08rem; font-weight: 650; letter-spacing: 0; margin: 0 0 .2rem; line-height: 1.3; }
.resultats h2 a { color: var(--encre); }
.resultats .ou { font-size: .9rem; color: var(--encre-2); margin: 0 0 .35rem; }
.resultats .extrait { font-family: var(--serif); font-size: .98rem; line-height: 1.55; color: var(--encre-2); margin: 0 0 .4rem; }
.resultats .issue { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .7rem; font-size: .9rem; color: var(--encre-2); }
.pagination { display: flex; gap: .75rem; align-items: center; margin-top: 1.5rem; }
.rien { background: var(--blanc); border: 1px dashed var(--trait-fort); border-radius: var(--rond); padding: 1.4rem; max-width: 44rem; }
.rien p:last-child { margin-bottom: 0; }
.hors-ecran { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

/* --- Connexion ------------------------------------------------------------------------------ */
.porte { min-height: 100vh; min-height: 100dvh; display: grid; grid-template-columns: 1fr; }
.porte-visuel { background: var(--lys); color: #fff; padding: clamp(1.5rem, 5vw, 4rem) var(--gouttiere); display: flex; flex-direction: column; justify-content: space-between; gap: 2rem; }
.porte-visuel .marque { color: #fff; }
.porte-visuel h1 { font-size: clamp(1.8rem, 1.1rem + 3vw, 3rem); font-weight: 680; line-height: 1.1; letter-spacing: -.02em; max-width: 15ch; margin: 0; }
.embleme-geant .embleme { width: clamp(8rem, 20vw, 14rem); height: auto; display: block; }
.porte-visuel .embleme circle { fill: #fff; }
.porte-visuel .embleme .temoin { fill: var(--lin); }
.porte-formulaire { background: var(--blanc); padding: clamp(1.5rem, 5vw, 4rem) var(--gouttiere); display: flex; flex-direction: column; justify-content: center; }
.porte-formulaire form { max-width: 24rem; width: 100%; }
.porte-formulaire h2 { margin-top: 0; }
.porte-formulaire .champ { margin-bottom: 1rem; }
.alerte { background: #fdecea; border-radius: .8rem; padding: .7rem .95rem; margin: 0 0 1rem; max-width: 24rem; }

/* --- Pied ----------------------------------------------------------------------------------- */
.pied { background: var(--lys); color: #dbe7ee; padding-block: 2.5rem 3rem; margin-top: 2rem; font-size: .95rem; }
.pied a { color: #fff; }
.pied-grille { display: grid; grid-template-columns: 1fr; gap: 2rem 4rem; }
.marque-pied { color: #fff; font-size: 1.15rem; margin-bottom: .8rem; }
.pied-note { color: #a9c0cd; font-size: .88rem; }
.remarque label { color: #fff; }
.remarque textarea { margin-bottom: .6rem; border-color: transparent; }
.remarque .bouton { background: var(--lin); color: var(--encre); }
.remarque .bouton:hover { background: #f7cd52; }
.merci { background: rgb(255 255 255 / .12); padding: .5rem .85rem; border-radius: .8rem; color: #fff; }
.masque-etroit { display: none; }

/* --- Projets : la liste, puis la ligne du temps ------------------------------------------------- */
.liste-projets { list-style: none; margin: 1.4rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr)); gap: 1rem; }
.liste-projets a { display: flex; flex-direction: column; gap: .35rem; height: 100%; background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); padding: 1rem 1.1rem 1.1rem; color: var(--encre); text-decoration: none; overflow: hidden; }
.liste-projets a:hover { border-color: var(--trait-fort); box-shadow: 0 2px 10px rgb(14 63 92 / .08); }
.liste-projets img { margin: -1rem -1.1rem .5rem; width: calc(100% + 2.2rem); max-width: none; aspect-ratio: 16 / 9; object-fit: cover; }
.liste-projets .nom { font-weight: 720; font-size: 1.15rem; line-height: 1.2; color: var(--lys); }
.liste-projets .bref { color: var(--encre-2); font-size: .95rem; }
.liste-projets .combien { margin-top: auto; padding-top: .4rem; font-size: .9rem; font-weight: 650; color: var(--encre-2); }

.tete-projet { max-width: 46rem; }
.tete-projet p:not(.chapeau) { color: var(--encre-2); max-width: 46rem; }
.faits .large { flex-basis: 16rem; }
.faits .large dd { white-space: normal; }
.illustration { margin: 1.6rem 0 0; max-width: 46rem; }
.illustration img { display: block; width: 100%; border-radius: var(--rond); border: 1px solid var(--trait); }
figcaption { font-size: .88rem; color: var(--encre-2); margin-top: .35rem; }
figcaption .credit { white-space: nowrap; }
figcaption .credit::before { content: "· "; }

/* La ligne du temps : un trait vertical, une pastille par étape. Les points du conseil sont des pastilles pleines,
   comme les sièges ; la vie politique est en jaune, la presse et les jalons en contour. */
.frise { --axe: 1.05rem; list-style: none; margin: 1.2rem 0 0; padding: 0 0 0 calc(var(--axe) + 1.2rem); position: relative; max-width: 46rem; }
.frise::before { content: ""; position: absolute; left: var(--axe); top: .4rem; bottom: .4rem; width: 2px; margin-left: -1px; background: var(--trait); border-radius: 2px; }
.frise > li { position: relative; }
.annee-frise { margin: 1.6rem 0 .6rem; }
.annee-frise:first-child { margin-top: 0; }
.annee-frise span { display: inline-block; font-weight: 760; font-size: 1.2rem; color: var(--lys); background: var(--papier); padding: .1rem .2rem; margin-left: calc(-1 * (1.2rem + .9rem)); position: relative; }
.etape { background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); padding: .8rem 1rem .85rem; margin-bottom: .75rem; }
.etape::before { content: ""; position: absolute; left: calc(-1.2rem - 7px); top: 1.05rem; width: 14px; height: 14px; border-radius: 50%; background: var(--pour); box-shadow: 0 0 0 4px var(--papier); }
.etape .quand { margin: 0 0 .2rem; font-size: .88rem; color: var(--encre-2); }
.etape .quand .icone { margin-right: .2rem; }
.etape .quand a { color: var(--encre-2); }
.etape .titre { display: block; margin: 0; font-weight: 680; line-height: 1.3; color: var(--encre); }
a.titre { color: var(--lien); }
.etape .bref { margin: .3rem 0 0; color: var(--encre-2); font-size: .95rem; }
.etape .issue { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .7rem; font-size: .9rem; color: var(--encre-2); margin-top: .45rem; }
.etape .issue.partage { color: var(--encre); font-weight: 650; }
.etape.politique { background: var(--lin-pale); border-color: #ecd98f; }
.etape.politique::before { background: var(--lin); border-radius: 3px; transform: rotate(45deg); width: 12px; height: 12px; left: calc(-1.2rem - 6px); }
.etape.article::before, .etape.jalon::before, .etape.image::before { background: var(--blanc); border: 3px solid var(--lys); }
.etape.article { border-style: dashed; }
.etape figure { margin: .4rem 0 0; }
.etape figure img { display: block; border-radius: .6rem; border: 1px solid var(--trait); }
.dans-projet { display: flex; gap: .7rem; align-items: flex-start; margin-top: 1.8rem; padding: .85rem 1rem; background: var(--lin-pale); border-radius: var(--rond); max-width: 46rem; }
.dans-projet .icone { margin-top: .2rem; width: 1.15rem; height: 1.15rem; color: var(--lys); }
.dans-projet p { margin: 0; }

/* --- Carte publique et pages des lieux ------------------------------------------------------- */
.filtres-carte { margin: 1.2rem 0 .8rem; gap: .6rem; }
.filtres-carte .champ { font: inherit; padding: .6rem .9rem; border: 1px solid var(--trait-fort); border-radius: 99px; background: var(--blanc); color: var(--encre); min-height: 2.75rem; }
.filtres-carte input.champ { flex: 1 1 14rem; }
.carte-publique { height: min(70vh, 36rem); min-height: 22rem; border: 1px solid var(--trait); border-radius: var(--rond); background: var(--lys-pale); }
/* Fond de carte adouci : les cercles du site ressortent, la carte reste lisible. */
.carte-publique .leaflet-tile-pane, .carte-point .leaflet-tile-pane { filter: saturate(.28) brightness(1.05) contrast(.92); }
.carte-publique .leaflet-control-zoom, .carte-publique .carte-recentrer { border: 0; box-shadow: 0 1px 5px rgb(0 0 0 / .18); border-radius: .7rem; overflow: hidden; }
.carte-recentrer { display: grid; place-items: center; width: 34px; height: 34px; padding: 0; background: var(--blanc); color: var(--encre); cursor: pointer; }
.carte-recentrer:hover { background: var(--lys-pale); }
.carte-recentrer:focus-visible { outline: 3px solid var(--lin); outline-offset: 2px; }
.bulle { display: flex !important; flex-direction: column; align-items: center; justify-content: center; border-radius: 50%; background: var(--lys); color: #fff; font-family: var(--sans); font-weight: 760; font-size: .95rem; line-height: 1; box-shadow: 0 0 0 3px rgb(255 255 255 / .95), 0 2px 8px rgb(0 0 0 / .25); cursor: pointer; transition: background-color .15s, box-shadow .15s; }
.bulle-seule { font-size: .8rem; font-weight: 720; }
/* Plusieurs lieux : un second anneau, comme une pile. */
.bulle-groupe { box-shadow: 0 0 0 3px rgb(255 255 255 / .95), 0 0 0 7px rgb(14 63 92 / .3), 0 2px 10px rgb(0 0 0 / .25); }
.bulle-village { background: var(--lin); color: var(--encre); }
.bulle-village small { position: absolute; top: 100%; margin-top: 6px; left: 50%; transform: translateX(-50%); width: max-content; max-width: 116px; text-align: center; line-height: 1.25; background: var(--blanc); color: var(--encre); padding: .15rem .5rem; border-radius: 99px; font-size: .72rem; font-weight: 700; box-shadow: 0 1px 4px rgb(0 0 0 / .2); }
.bulle-seule:hover, .bulle-groupe:hover, .bulle.survol { background: var(--lin); color: var(--encre); }
.bulle-village:hover, .bulle-village.survol { background: var(--lys); color: #fff; }
.bulle.survol { z-index: 100000 !important; box-shadow: 0 0 0 3px #fff, 0 0 0 8px rgb(240 190 46 / .55), 0 2px 10px rgb(0 0 0 / .3); }
.bulle:focus-visible { outline: 3px solid var(--lin); outline-offset: 3px; }
.legende-carte { display: flex; flex-wrap: wrap; gap: .35rem 1.1rem; list-style: none; margin: .7rem 0 .2rem; padding: 0; font-size: .9rem; color: var(--encre-2); }
.legende-carte li { display: flex; align-items: center; gap: .45rem; }
.pastille { display: inline-block; width: 14px; height: 14px; border-radius: 50%; background: var(--lys); box-shadow: 0 0 0 2px #fff, 0 1px 3px rgb(0 0 0 / .3); }
.pastille.village { background: var(--lin); width: 16px; height: 16px; }
.pastille.groupe { box-shadow: 0 0 0 2px #fff, 0 0 0 4.5px rgb(14 63 92 / .3), 0 1px 3px rgb(0 0 0 / .3); }
.pastille.seule { width: 11px; height: 11px; }
.carte-publique .leaflet-popup-content-wrapper { border-radius: var(--rond); box-shadow: 0 4px 18px rgb(0 0 0 / .18); }
.leaflet-popup-content { margin: .9rem 1.1rem; }
.leaflet-popup-content .fenetre-lieux p { margin: 0 0 .35rem; font-family: var(--sans); font-size: .92rem; }
.leaflet-popup-content .fenetre-lieux .titre { font-weight: 750; font-size: 1rem; line-height: 1.25; margin-bottom: .15rem; }
.fenetre-lieux .ou { color: var(--encre-2); font-size: .85rem; }
.fenetre-lieux a { font-weight: 680; }
.fenetre-lieux a.aller { display: inline-block; margin-top: .15rem; }
.fenetre-lieux .reste { color: var(--encre-2); font-size: .85rem; }
.h-zone { font-size: 1.1rem; margin-top: 1.4rem; }
.liste-lieux { list-style: none; margin: .5rem 0 0; padding: 0; background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); overflow: hidden; max-width: 46rem; }
.liste-lieux:empty { display: none; }
.liste-lieux > li + li { border-top: 1px solid var(--trait); }
.liste-lieux a { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0 1rem; padding: .7rem .95rem; color: var(--encre); text-decoration: none; }
.liste-lieux a:hover { background: var(--lys-pale); }
.liste-lieux .nom { font-weight: 680; color: var(--lien); }
.liste-lieux .ou { grid-row: 2; font-size: .88rem; color: var(--encre-2); }
.liste-lieux .combien { grid-row: 1 / span 2; grid-column: 2; align-self: center; font-size: .9rem; font-weight: 650; color: var(--encre-2); white-space: nowrap; }
.liste-lieux .reste { padding: .7rem .95rem; color: var(--encre-2); font-size: .9rem; }
.village-lieux { max-width: 46rem; margin-top: .5rem; }
.village-lieux summary { cursor: pointer; font-weight: 700; padding: .45rem 0; min-height: 2.75rem; display: flex; align-items: center; gap: .4rem; }
.lieux a { font-weight: 650; }

/* Page d'un lieu : les chiffres à gauche, la carte à droite sur grand écran. */
.lieu-haut { margin-top: 1.4rem; display: grid; gap: 1rem; max-width: 62rem; }
.lieu-haut .faits { margin: 0; max-width: none !important; align-self: start; }
.lieu-haut .carte-point { margin-top: 0; max-width: none; height: 15rem; }
.lieu-carte .legende { margin: .4rem 0 0; }
.lieu-carte .legende .icone { width: .95em; height: .95em; vertical-align: -.1em; }
.repartition { display: flex; gap: 2px; height: 8px; border-radius: 99px; overflow: hidden; margin: .35rem 0 .45rem; max-width: 14rem; }
.repartition span { display: block; min-width: 6px; }
.r-unanime { background: var(--pour); }
.r-partage { background: var(--contre); }
.r-sans { background: var(--trait-fort); }
.sous-titre { margin: -.3rem 0 0; }
.etape.partage::before { background: var(--contre); }
.lieux-proches { margin-top: 2.2rem; }
.lieux-proches .liste-lieux { max-width: 46rem; }

/* Accueil : les portes d'entrée du site, puis les dernières séances en cartes. */
.portes { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); gap: .75rem; padding-block: 2rem 0; }
.porte-acces { display: grid; grid-template-columns: auto minmax(0, 1fr); grid-template-rows: auto auto; gap: .1rem .8rem; align-items: center; padding: 1rem 1.1rem; background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); text-decoration: none; color: var(--encre); transition: border-color .15s, box-shadow .15s, transform .15s; }
.porte-acces:hover { border-color: var(--lys); box-shadow: 0 4px 14px rgb(14 63 92 / .08); transform: translateY(-1px); }
.porte-acces:focus-visible { outline: 3px solid var(--lin); outline-offset: 2px; }
.icone-porte { grid-row: 1 / span 2; display: grid; place-items: center; width: 2.6rem; height: 2.6rem; border-radius: 50%; background: var(--lys-pale); color: var(--lys); }
.icone-porte .icone { width: 1.2rem; height: 1.2rem; }
.porte-acces .titre { font-weight: 720; font-size: 1.05rem; line-height: 1.2; }
.porte-acces .detail { font-size: .88rem; color: var(--encre-2); line-height: 1.3; text-wrap: balance; }
.seances-accueil { display: grid; grid-template-columns: 1fr; gap: .75rem; background: none; border: 0; border-radius: 0; overflow: visible; }
.seances-accueil li + li { border-top: 0; }
.seances-accueil li { background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); overflow: hidden; }
.liste-seances.seances-accueil a { display: flex; flex-direction: column; gap: .15rem; height: 100%; padding: .95rem 1.1rem 1rem; }
.seances-accueil .quand { font-size: 1.1rem; }
.seances-accueil .quand small { display: block; margin: .1rem 0 0; }
.seances-accueil .combien { font-size: .92rem; }
.seances-accueil .partages { margin-top: auto; padding-top: .45rem; font-size: .88rem; }
@media (max-width: 47.99rem) {
    .portes { grid-template-columns: 1fr 1fr; gap: .6rem; padding-top: 1.5rem; }
    .porte-acces { grid-template-columns: 1fr; grid-template-rows: auto; gap: .35rem; padding: .85rem .9rem; align-items: start; }
    .icone-porte { grid-row: auto; width: 2.2rem; height: 2.2rem; }
    .vote-hasard .intitule a { -webkit-line-clamp: 3; }
}
@media (min-width: 40rem) { .seances-accueil { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 60rem) { .seances-accueil { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (prefers-reduced-motion: reduce) { .porte-acces { transition: none; } .porte-acces:hover { transform: none; } }

/* --- Signaler une erreur (pied de page) ------------------------------------------------------ */
.signaler { margin-top: 1.4rem; font-size: .85rem; max-width: 34rem; }
.signaler summary { display: inline-flex; align-items: center; gap: .35rem; cursor: pointer; color: #a9c0cd; list-style: none; min-height: 2.25rem; }
.signaler summary::-webkit-details-marker { display: none; }
.signaler summary::before { content: ""; width: .45rem; height: .45rem; border-radius: 50%; background: var(--lin); }
.signaler summary:hover, .signaler[open] summary { color: #fff; text-decoration: underline; }
.form-signaler { display: grid; gap: .35rem; margin-top: .6rem; padding: 1rem; background: rgb(255 255 255 / .07); border-radius: var(--rond); }
.form-signaler label { color: #dbe7ee; font-size: .88rem; }
.form-signaler label span { color: #a9c0cd; }
.form-signaler textarea, .form-signaler input[type="email"] { font: inherit; font-size: .95rem; width: 100%; padding: .55rem .75rem; border-radius: .6rem; border: 1px solid rgb(255 255 255 / .25); background: #fff; color: var(--encre); margin-bottom: .4rem; }
.form-signaler textarea { resize: vertical; min-height: 6rem; }
.signaler-bas { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; }
.form-signaler button { font: inherit; font-weight: 700; padding: .5rem 1.2rem; border: 0; border-radius: 99px; background: var(--lin); color: var(--encre); cursor: pointer; min-height: 2.5rem; }
.form-signaler button:disabled { opacity: .6; cursor: wait; }
.signaler-etat { margin: 0; color: #fff; }
.signaler-etat.erreur { color: #ffd2c7; }
.signaler .piege { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.signaler-merci { margin: .6rem 0 0; padding: .8rem 1rem; background: rgb(255 255 255 / .07); border-radius: var(--rond); color: #fff; }

/* --- Page introuvable ------------------------------------------------------------------------ */
.introuvable { text-align: center; padding-block: clamp(1rem, 4vw, 3rem) 1rem; }
.embleme-introuvable { width: clamp(5rem, 14vw, 7rem); height: auto; color: var(--lys); margin: 0 auto 1.2rem; display: block; }
.embleme-introuvable .manquant { fill: none; stroke: var(--lin); stroke-width: .8; stroke-dasharray: 1.2 .9; }
.introuvable h1 { color: var(--lys); }
.introuvable .chapeau { max-width: 36rem; margin-inline: auto; text-wrap: balance; }
.introuvable .recherche-grande { margin-inline: auto; }
.pilules-introuvable { justify-content: center; margin-top: 1.4rem; }

/* --- Documents d'une séance, source d'un point -------------------------------------------------- */
.documents-seance { margin-top: 2rem; max-width: 52rem; }
.liste-documents { list-style: none; margin: 0 0 .5rem; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: .6rem; }
.liste-documents a { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: .05rem .7rem; align-items: center; padding: .75rem .9rem; background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); text-decoration: none; color: var(--encre); height: 100%; }
.liste-documents a:hover { border-color: var(--lys); }
.icone-document { grid-row: 1 / span 2; display: grid; place-items: center; width: 2.3rem; height: 2.3rem; border-radius: .6rem; background: #fbe9e5; color: var(--contre); }
.liste-documents .nom { font-weight: 680; line-height: 1.25; }
.liste-documents .detail { font-size: .84rem; color: var(--encre-2); }
.sources-point { display: flex; flex-wrap: wrap; gap: .5rem; margin: .4rem 0 0; }
.bouton.petit { min-height: 2.4rem; padding: .45rem 1rem; font-size: .92rem; }
.bouton.petit .icone { width: 1rem; height: 1rem; }
@media (max-width: 30rem) { .sources-point .detail { display: none; } }

/* Sous le cadre des sièges (page des élus). */
.note-couleurs { margin: .45rem 0 0; font-size: .8rem; color: var(--encre-2); max-width: 52rem; }
.siege.empeche { box-shadow: inset 0 0 0 1.5px var(--trait-fort); background: repeating-linear-gradient(135deg, transparent 0 2px, var(--trait) 2px 3.5px); }

/* --- Lexique ---------------------------------------------------------------------------------- */
.filtres-lexique { margin: 1.2rem 0 .8rem; max-width: 34rem; }
.filtres-lexique .champ { font: inherit; width: 100%; padding: .6rem 1rem; border: 1px solid var(--trait-fort); border-radius: 99px; background: var(--blanc); min-height: 2.75rem; }
.lettres { display: flex; flex-wrap: wrap; gap: .25rem; margin: 0 0 1.2rem; }
.lettres a, .lettres span { display: inline-grid; place-items: center; min-width: 2.1rem; height: 2.1rem; border-radius: .6rem; font-weight: 700; text-decoration: none; }
.lettres a { background: var(--blanc); color: var(--lys); box-shadow: inset 0 0 0 1px var(--trait); }
.lettres a:hover { background: var(--lys-pale); }
.lettres span { color: var(--trait-fort); }
.lettre-lexique { max-width: 52rem; scroll-margin-top: 1rem; }
.lettre-lexique h2 { color: var(--lys); margin: 1.6rem 0 .5rem; font-size: 1.5rem; }
.lettre-lexique dl { margin: 0; background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); overflow: hidden; }
.lettre-lexique .mot { padding: .85rem 1.1rem; }
.lettre-lexique .mot + .mot { border-top: 1px solid var(--trait); }
.lettre-lexique dt { font-weight: 750; font-size: 1.05rem; }
.forme-longue { font-weight: 500; color: var(--encre-2); }
.lettre-lexique dt .forme-longue { font-size: .95rem; margin-left: .3rem; }
.lettre-lexique dt .forme-longue::before { content: "· "; }
.lettre-lexique dd { margin: .25rem 0 0; color: var(--encre); line-height: 1.5; }
.points-du-mot { display: inline-flex; align-items: center; gap: .25rem; margin-left: .4rem; font-size: .88rem; font-weight: 650; white-space: nowrap; }
.points-du-mot .icone { width: .85em; height: .85em; }
.tete-projet .forme-longue { font-size: 1.15rem; margin: -.3rem 0 .6rem; }

/* --- Statistiques --------------------------------------------------------------------------- */
.stat { margin-top: 2.2rem; max-width: 52rem; }
.stat h2 { margin-bottom: .7rem; }
.intro-stat { margin: -.3rem 0 .8rem; max-width: 46rem; }
.note-stat { display: flex; gap: .5rem; align-items: flex-start; margin-top: 2.2rem; padding: .85rem 1rem; background: var(--lys-pale); border-radius: var(--rond); max-width: 46rem; }
.note-stat .icone { flex: none; margin-top: .2rem; color: var(--lys); }
.barre-empilee { display: flex; gap: 2px; height: 1.1rem; border-radius: 99px; overflow: hidden; background: var(--trait); }
.barre-empilee > span { display: block; min-width: 4px; }
.barre-empilee.petite { height: .7rem; }
.b-unanime, .b-pour { background: var(--pour); }
.b-partage { background: var(--abstention); }
.b-rejete, .b-contre { background: var(--contre); }
.b-autre { background: var(--trait-fort); }
.b-abstention { background: var(--abstention); }
.cle-stat { list-style: none; margin: .8rem 0 .5rem; padding: 0; display: grid; gap: .35rem; }
.cle-stat li { display: grid; grid-template-columns: .85rem minmax(0, 1fr); align-items: baseline; gap: .5rem; }
.cle-stat li > span:first-child { align-self: center; }
.cle-stat strong { font-weight: 720; }
.pastille-stat { flex: none; width: .85rem; height: .85rem; border-radius: 50%; }
.tableau-stat { width: 100%; border-collapse: collapse; background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); overflow: hidden; font-size: .95rem; }
.tableau-stat th, .tableau-stat td { padding: .5rem .75rem; text-align: left; border-top: 1px solid var(--trait); vertical-align: middle; }
.tableau-stat thead th { border-top: 0; font-size: .85rem; font-weight: 650; color: var(--encre-2); background: var(--papier); }
.tableau-stat tbody th { font-weight: 720; width: 4.5rem; }
.tableau-stat .nombre { text-align: right; white-space: nowrap; width: 5.5rem; font-variant-numeric: tabular-nums; }
.tableau-stat td:nth-child(3) { display: flex; align-items: center; gap: .55rem; }
.tableau-stat .barre { position: relative; display: block; height: .7rem; min-width: 3px; border-radius: 99px; background: var(--pour); overflow: hidden; }
.tableau-stat .barre-partage { position: absolute; right: 0; top: 0; bottom: 0; background: var(--abstention); }
.tableau-stat .valeur { font-variant-numeric: tabular-nums; font-size: .9rem; color: var(--encre-2); }
.barres { list-style: none; margin: 0; padding: .4rem 0; background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); }
.barres li { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr) 3.2rem; align-items: center; gap: .7rem; padding: .32rem .9rem; }
.barres .nom { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .93rem; }
.barres a.nom { color: var(--encre); text-decoration: none; }
.barres a.nom:hover { color: var(--lien); text-decoration: underline; }
.barres .nom .siege, .groupes-stat .siege { display: inline-block; width: .7rem; height: .7rem; flex: none; vertical-align: -.02em; margin-right: .15rem; }
.piste { display: block; height: .65rem; border-radius: 99px; background: var(--papier); overflow: hidden; }
.piste .barre { display: block; height: 100%; min-width: 3px; border-radius: 99px; background: var(--pour); }
.piste .barre.b-lin { background: var(--lin); }
.barres .valeur { text-align: right; font-size: .9rem; font-variant-numeric: tabular-nums; color: var(--encre-2); }
.groupes-stat { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }
.groupes-stat li { background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); padding: .75rem .95rem; display: grid; gap: .4rem; }
.groupes-stat .nom { font-weight: 700; color: var(--encre); text-decoration: none; }
.groupes-stat .nom:hover { color: var(--lien); }
.groupes-stat .detail { font-size: .88rem; color: var(--encre-2); }
.stat-colonnes { display: grid; gap: 0 1.5rem; max-width: 72rem; }
.stat-colonnes .stat { max-width: none; }
.liste-stat { margin: 0; padding: 0; list-style: none; counter-reset: rang; background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); }
.liste-stat li { counter-increment: rang; display: flex; gap: .6rem; align-items: baseline; padding: .55rem .95rem; }
.liste-stat li + li { border-top: 1px solid var(--trait); }
.liste-stat li::before { content: counter(rang); font-weight: 750; color: var(--encre-2); width: 1.2rem; font-variant-numeric: tabular-nums; }
.liste-stat a { font-weight: 650; }
.liste-stat span { margin-left: auto; color: var(--encre-2); font-size: .9rem; white-space: nowrap; }
.faits.faits-stats { max-width: 52rem; }

/* --- Écrans larges -------------------------------------------------------------------------- */
@media (min-width: 48rem) {
    :root { --gouttiere: 2rem; }
    .masque-etroit { display: inline; }
    .liste-seances a { grid-template-columns: 16rem 1fr auto; }
    .liste-seances .combien { grid-column: auto; }
    .annee { grid-template-columns: 9rem minmax(0, 1fr); align-items: start; }
    .annee > h2 { position: sticky; top: 1rem; }
    .frise { --axe: 1.25rem; }
    .stat-colonnes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .stat > .barres li { grid-template-columns: minmax(7rem, 13rem) minmax(0, 1fr) 3.4rem; }
    .lieu-haut.avec-carte { grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); align-items: start; }
    .lieu-haut .faits > div { flex-basis: 45%; }
    .lieu-haut .faits .large { flex-basis: 100%; }
    .lieu-haut .carte-point { height: 17rem; }
    .carte-zone { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(17rem, 1fr); gap: 0 1.5rem; align-items: start; }
    .carte-zone .zone { position: sticky; top: 1rem; }
    .carte-zone .h-zone { margin-top: 0; }
    .carte-zone .liste-lieux { max-height: min(62vh, 31rem); overflow-y: auto; }
    .ordre a.ligne { padding: .95rem 1.15rem; gap: .15rem 1rem; }
    .ordre .moment-point { margin-left: calc(1.15rem + 2.5rem + 1rem); }
    .ordre .lecteur-video { margin: 0 1.15rem 1rem calc(1.15rem + 2.5rem + 1rem); max-width: 46rem; }
    .pied-grille { grid-template-columns: 1.1fr 1fr; }
    .porte { grid-template-columns: 1.15fr 1fr; }
    .porte-visuel, .porte-formulaire { padding-inline: clamp(2rem, 5vw, 5rem); }
}

@media (max-width: 47.99rem) {
    .camp p span { display: block; }
    .porte-visuel { gap: 1.25rem; padding-block: 1.25rem 1.5rem; }
    .porte-visuel h1 { font-size: 1.7rem; }
    .embleme-geant { display: flex; align-items: center; gap: 1rem; }
    .embleme-geant .embleme { width: 4.5rem; flex: none; }
    .porte-visuel .pied-note { margin: 0; font-size: .82rem; }
    .porte-formulaire { justify-content: flex-start; }
    /* Sur téléphone, l'en-tête tient sur deux lignes : le nom du site et le compte, puis les rubriques. */
    .tete-ligne { gap: 0 .25rem; flex-wrap: wrap; padding-block: .3rem .35rem; min-height: 0; }
    .marque { font-size: 1.15rem; gap: .4rem; white-space: nowrap; min-height: 2.75rem; }
    .tete .embleme { width: 22px; height: 22px; }
    .compte { margin-left: auto; }
    .menu { order: 3; width: 100%; margin: 0 -.55rem; gap: .15rem; overflow-x: auto; scrollbar-width: none; }
    .menu::-webkit-scrollbar { display: none; }
    .menu a { padding-inline: .8rem; font-size: .98rem; min-height: 2.5rem; white-space: nowrap; }
    .recherche-grande .bouton { padding-inline: 1.1rem; }
    .recherche-grande .bouton span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
    .voisins { grid-template-columns: 1fr; }
    .voisins .suivant { grid-column: 1; }
    .image-texte { width: calc(50% - .5rem); margin-right: .5rem; }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    details > summary::before { transition: none; }
    .vote-hasard { transition: none; }
}

@media print {
    .bande-beta, .tete .menu, .compte, .pied, .voisins, .recherche-grande { display: none; }
    body { background: #fff; }
}

/* --- Élus et groupes ------------------------------------------------------------------------ */
h1 > .siege, h2 > .siege { display: inline-block; width: .62em; height: .62em; flex: none; margin-right: .15em; }
.qualites .siege, .cle-groupes .siege, .fiche-mandat .siege { display: inline-block; width: .7rem; height: .7rem; flex: none; vertical-align: -.02em; }
.qualites a { color: inherit; }
.pilules { display: flex; flex-wrap: wrap; gap: .4rem; margin: 0 0 1.2rem; }
.pilules a { padding: .4rem 1rem; border-radius: 99px; text-decoration: none; color: var(--encre); background: var(--blanc); box-shadow: inset 0 0 0 1px var(--trait-fort); font-weight: 600; min-height: 2.6rem; display: inline-flex; align-items: center; }
.pilules a[aria-current="page"] { background: var(--lys); color: #fff; box-shadow: none; }

.hemicycle { background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); padding: 1.25rem; margin-top: 1.4rem; max-width: 52rem; }
/* Les sièges tiennent sur une seule ligne, chaque camp prenant une largeur proportionnelle à ses sièges. */
.camps-ligne { display: flex; align-items: stretch; gap: clamp(.4rem, 1.6vw, .9rem); }
/* Les points des deux camps restent alignés même si un libellé passe sur deux lignes. */
.camp { flex: var(--sieges, 1) 1 0; min-width: 0; display: flex; flex-direction: column; justify-content: space-between; }
.camp p { margin: 0 0 .45rem; font-weight: 650; line-height: 1.25; }
.camp p span { font-weight: 400; color: var(--encre-2); font-size: .92rem; white-space: nowrap; }
.camp + .limite + .camp p { text-align: right; }
.limite { flex: none; width: 3px; border-radius: 3px; background: var(--lys); }
.sieges { display: flex; gap: clamp(2px, .7vw, 6px); }
.sieges .siege { flex: 1 1 0; min-width: 0; max-width: 1.7rem; aspect-ratio: 1; display: block; transition: transform .12s; }
.camp + .limite + .camp .sieges { justify-content: flex-end; }
.sieges a.siege:hover, .sieges a.siege:focus-visible { transform: scale(1.3); }
.cle-groupes { list-style: none; display: flex; flex-wrap: wrap; gap: .4rem 1.4rem; padding: 1rem 0 0; margin: 1rem 0 0; border-top: 1px solid var(--trait); }
.cle-groupes li { display: inline-flex; align-items: center; gap: .45rem; }
.cle-groupes li > span:last-child { color: var(--encre-2); font-size: .9rem; }
.cle-groupes a { color: var(--encre); font-weight: 600; }
.formule { margin: .8rem 0 0; color: var(--encre-2); font-size: .95rem; }

.groupe-liste { max-width: 52rem; }
.groupe-liste h2 { display: flex; flex-wrap: wrap; align-items: baseline; gap: .2rem .55rem; }
.groupe-liste h2 a { color: var(--encre); }
.groupe-liste h2 small { font-size: .9rem; font-weight: 400; letter-spacing: 0; color: var(--encre-2); }
.liste-membres { list-style: none; margin: .6rem 0 0; padding: 0; background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); overflow: hidden; }
.liste-membres li + li { border-top: 1px solid var(--trait); }
.liste-membres a { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: .1rem 1rem; padding: .7rem 1.1rem; text-decoration: none; color: var(--encre); min-height: 2.9rem; }
.liste-membres a:hover { background: var(--lys-pale); }
.liste-membres .qui { font-weight: 600; }
.liste-membres .qui { overflow-wrap: anywhere; }
.liste-membres .qui small { font-weight: 400; color: var(--encre-2); margin-left: .6rem; font-size: .9rem; white-space: nowrap; }
.liste-membres .presence { color: var(--encre-2); font-size: .92rem; }

.mandat { background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); padding: 1.1rem 1.25rem 1rem; margin-top: .9rem; max-width: 52rem; }
.mandat h3 { margin: 0 0 .7rem; font-size: 1.2rem; }
.mandat h3 a { color: var(--lys); }
.fiche-mandat { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); gap: .8rem 1.5rem; margin: 0 0 1rem; }
.fiche-mandat dt { font-size: .86rem; color: var(--encre-2); }
.fiche-mandat dd { margin: .05rem 0 0; font-weight: 650; }
.fiche-mandat dd a { color: var(--encre); }
.fiche-mandat dd small { display: block; font-weight: 400; font-size: .88rem; color: var(--encre-2); }
.mb-presences { margin: 0 0 .5rem; }
.presences-points { list-style: none; display: flex; flex-wrap: wrap; gap: 5px; padding: 0; margin: 0 0 .8rem; }
.presences-points .siege { display: block; width: 1rem; height: 1rem; flex: none; aspect-ratio: auto; }
.presences-points a.siege:hover, .presences-points a.siege:focus-visible { outline: 2px solid var(--lin); outline-offset: 1px; }
.mandat .note { margin: 0; }

.liste-votes { list-style: none; margin: .7rem 0 0; padding: 0; background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); overflow: hidden; max-width: 52rem; }
.liste-votes li + li { border-top: 1px solid var(--trait); }
.liste-votes a { display: grid; grid-template-columns: minmax(0, 1fr); gap: .25rem 1rem; padding: .8rem 1.1rem; text-decoration: none; color: var(--encre); }
.liste-votes a:hover { background: var(--lys-pale); }
.liste-votes .sens { display: inline-flex; align-items: center; gap: .45rem; font-weight: 650; font-size: .92rem; white-space: nowrap; }
.liste-votes .sens > .siege { flex: none; width: .8rem; height: .8rem; }
.liste-votes .quoi { font-weight: 600; line-height: 1.35; }
.liste-votes .quoi small { display: block; font-weight: 400; color: var(--encre-2); font-size: .88rem; margin-top: .1rem; }
.ruban.mini-groupe { display: inline-flex; gap: 2px; max-width: none; }
.ruban.mini-groupe .siege { flex: none; width: .6rem; height: .6rem; }

.trouvailles { list-style: none; display: flex; flex-wrap: wrap; gap: .5rem; padding: 0; margin: 0 0 1.4rem; max-width: 50rem; }
.trouvailles a { display: inline-flex; align-items: center; gap: .55rem; padding: .5rem 1rem .5rem .85rem; background: var(--blanc); border: 1px solid var(--trait); border-radius: 99px; text-decoration: none; color: var(--encre); font-weight: 600; min-height: 2.9rem; }
.trouvailles a:hover { border-color: var(--lys); }
.trouvailles .icone { color: var(--lys); }
.trouvailles small { font-weight: 400; color: var(--encre-2); margin-left: .5rem; font-size: .88rem; }
.texte-pv .intervention figcaption a { color: inherit; }

@media (min-width: 48rem) {
    .liste-votes a { grid-template-columns: 9.5rem minmax(0, 1fr); align-items: baseline; }
    .liste-votes a:has(.sens.large) { grid-template-columns: 14rem minmax(0, 1fr); }
    .liste-votes a:not(:has(.sens)) { grid-template-columns: minmax(0, 1fr); }
}
@media (prefers-reduced-motion: reduce) {
    .sieges .siege { transition: none; }
}

/* Provisoire : établi d'après les documents de travail, pas encore confirmé par le procès-verbal définitif. */
.provisoire { display: inline-flex; align-items: center; gap: .25rem; padding: .05rem .5rem; border-radius: 999px; background: var(--lin-pale); border: 1px solid #e5c766; color: #6b4a00; font-size: .8rem; font-weight: 700; white-space: nowrap; line-height: 1.5; }
.provisoire svg { width: .85em; height: .85em; }
.avis-provisoire { display: flex; gap: .7rem; align-items: flex-start; margin: 1rem 0 1.4rem; padding: .85rem 1rem; border-radius: var(--rond); background: var(--lin-pale); border: 1px solid #e5c766; max-width: 46rem; }
.avis-provisoire > svg { flex: 0 0 auto; width: 1.2rem; height: 1.2rem; margin-top: .2rem; color: #8a6200; }
.avis-provisoire p { margin: 0; }
.liste-seances .provisoire { vertical-align: .05em; }

/* --- Pages de texte : méthode, qui, mentions, PV manquants -------------------------------------- */
.page-texte { max-width: 44rem; }
.page-texte h2 { font-size: 1.22rem; margin: 2rem 0 .5rem; }
.page-texte p, .page-texte li { line-height: 1.62; }
.page-texte ul { padding-left: 1.2rem; }
.page-texte li { margin-bottom: .35rem; }
.apercu { background: var(--lin-pale); border-radius: .8rem; padding: .6rem .9rem; display: flex; gap: .5rem; align-items: center; }
.pied-liens { display: flex; flex-wrap: wrap; gap: .3rem 1.2rem; margin-top: 1rem; }
.pied-liens a { color: #fff; font-size: .9rem; }
.faits-manquants { display: flex; flex-wrap: wrap; max-width: 34rem; }
.faits-manquants > div { flex: 1 1 8rem; }
.annee-manquants { font-size: 1.1rem; margin: 2rem 0 .6rem; color: var(--encre-2); }
.liste-manquants { list-style: none; margin: 0; padding: 0; max-width: 46rem; background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); overflow: hidden; }
.liste-manquants > li { padding: .85rem 1.1rem; border-top: 1px solid var(--trait); }
.liste-manquants > li:first-child { border-top: 0; }
.date-manquant { font-weight: 700; margin: 0 0 .35rem; }
.manque { list-style: none; padding: 0; margin: 0 0 .35rem; display: flex; flex-wrap: wrap; gap: .35rem; }
.manque li { font-size: .88rem; padding: .2rem .65rem; border-radius: 99px; background: var(--lys-pale); color: var(--lys); }
.liste-manquants .note { margin: 0; }
.courriel { margin-top: 2.6rem; max-width: 46rem; padding: 1.2rem 1.25rem 1.3rem; background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); }
.courriel h2 { display: flex; align-items: center; gap: .5rem; font-size: 1.25rem; margin-top: 0; }
.objet-courriel { margin: .8rem 0 .5rem; }
.texte-courriel { font-size: .95rem; line-height: 1.5; resize: vertical; min-height: 12rem; }
.actions-courriel { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: .8rem; }

/* --- Pied : l'auteur ; bouton pour remonter ------------------------------------------------- */
.pied-auteur { margin: .9rem 0 0; color: #dbe7ee; font-size: .9rem; }
.pied-auteur a { color: #fff; }
.mise-a-jour { font-size: .86rem; margin-top: .2rem; }
.remonter { position: fixed; right: max(1rem, env(safe-area-inset-right)); bottom: max(1rem, env(safe-area-inset-bottom)); z-index: 20; width: 2.9rem; height: 2.9rem; border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center; background: var(--lys); color: #fff; box-shadow: 0 6px 18px rgb(14 63 92 / .28); opacity: 0; transform: translateY(.6rem);
    transition: opacity .2s, transform .2s; text-decoration: none; pointer-events: none; }
.remonter.visible { opacity: 1; transform: none; pointer-events: auto; }
.remonter:hover { background: #0a3049; }
@media print { .remonter { display: none; } }
.encart-demande { display: flex; gap: .7rem; align-items: flex-start; background: var(--lin-pale); border-radius: var(--rond); padding: .85rem 1.05rem; margin: 1.2rem 0 0; }
.encart-demande .icone { margin-top: .3rem; color: var(--lys); }
.encart-demande p { margin: 0; }
.titre-section { font-size: 1.3rem; margin: 2.4rem 0 .5rem; }
.tableau-annees { border-collapse: collapse; background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); min-width: 18rem; font-size: .95rem; }
.tableau-annees th, .tableau-annees td { padding: .45rem .9rem; border-top: 1px solid var(--trait); }
.tableau-annees thead th { border-top: 0; font-size: .84rem; color: var(--encre-2); font-weight: 650; }
.donateurs { columns: 2 12rem; list-style: none; padding: 0; }

/* --- Page d'un élu : ses points ------------------------------------------------------------ */
.onglets-elu { display: flex; flex-wrap: wrap; gap: .4rem; margin: .8rem 0 .7rem; }
.onglets-elu a { display: inline-flex; align-items: center; gap: .35rem; min-height: 2.5rem; padding: 0 .95rem; border-radius: 99px; border: 1.5px solid var(--trait-fort); text-decoration: none; color: var(--encre); font-size: .93rem; background: var(--blanc); }
.onglets-elu a span { color: var(--encre-2); font-size: .85rem; }
.onglets-elu a[aria-current="true"] { background: var(--lys); border-color: var(--lys); color: #fff; font-weight: 650; }
.onglets-elu a[aria-current="true"] span { color: inherit; opacity: .85; }
.filtre-annee { max-width: 14rem; margin: 0 0 .6rem; display: flex; gap: .5rem; }
.annee-points { font-size: 1.15rem; margin: 1.6rem 0 .5rem; color: var(--encre-2); }
.seance-points { margin-bottom: .9rem; }
.date-seance-points { font-weight: 650; font-size: .95rem; margin: 0 0 .35rem; }
.seance-points .liste-votes { margin-top: 0; }
.plus-vus { padding-bottom: 0; }
.plus-vus .resultats { max-width: none; }
.plus-vus .resultats h3 { font-size: 1.04rem; font-weight: 650; margin: 0 0 .2rem; line-height: 1.3; text-wrap: pretty; }
.plus-vus .resultats h3 a { color: var(--encre); }

/* --- Maintenance ; lien discret vers l'administration ---------------------------------------- */
.maintenance { max-width: 34rem; margin: clamp(2rem, 8vw, 5rem) auto; text-align: center; }
.maintenance-icone { font-size: 2.6rem; color: var(--lys); margin: 0 0 .6rem; }
.maintenance-icone .icone { width: 2.6rem; height: 2.6rem; }
.retour-prevu { display: inline-block; background: var(--lin-pale); border-radius: 99px; padding: .5rem 1.1rem; font-weight: 650; }
.pied-liens .lien-admin { color: #a9c0cd; }

/* Vidéo d'un point ou d'une séance (v118) : le lecteur s'ouvre au clic, au bon moment. */
.lecteur-video { max-width: 46rem; margin-top: 1.2rem; }
.lecteur-video .cadre-video { position: relative; aspect-ratio: 16 / 9; background: var(--encre); border-radius: var(--rond); overflow: hidden; }
.lecteur-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.pied-video { margin: .45rem .2rem 0; font-size: .88rem; color: var(--encre-2); }
.lien-bouton { font: inherit; color: var(--lien); background: none; border: 0; padding: 0; text-decoration: underline; cursor: pointer; }
.moments-video { margin-top: 2rem; max-width: 46rem; }
.liste-moments { list-style: none; margin: 1rem 0 0; padding: 0; background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); overflow: hidden; }
.liste-moments li + li { border-top: 1px solid var(--trait); }
.liste-moments a { display: flex; align-items: flex-start; gap: .8rem; padding: .7rem .9rem; text-decoration: none; color: var(--encre); }
.liste-moments a:hover, .liste-moments a.en-cours { background: var(--lys-pale); }
.liste-moments .temps { flex: 0 0 auto; display: inline-flex; align-items: center; gap: .35rem; min-width: 5.2rem; font-weight: 700; color: var(--lys); font-variant-numeric: tabular-nums; }
.liste-moments .quoi { font-weight: 600; line-height: 1.35; }
.liste-moments .sorte { display: block; font-weight: 400; font-size: .84rem; color: var(--encre-2); }

/* Recherche (v124) : « Vouliez-vous dire … ? » et rubriques Lieux / Points. */
.vouliez { margin: 1rem 0 0; font-size: 1.05rem; }
.vouliez a { font-weight: 700; }
.rubrique-recherche { font-size: 1.05rem; margin: 1.6rem 0 .6rem; color: var(--encre-2); font-weight: 650; }
.suggestions a.propose { display: block; color: var(--encre); background: var(--lin-pale); margin-bottom: .2rem; }
.suggestions a.propose strong { color: var(--lien); }

/* Versions du site (v125). */
.pied-auteur .pied-version { color: inherit; font-weight: 700; }
.versions .version { margin-top: 2rem; padding-top: 1.4rem; border-top: 1px solid var(--trait); }
.versions .version:first-of-type { border-top: 0; padding-top: 0; }
.versions .version h2 { margin: 0 0 .2rem; display: flex; flex-wrap: wrap; align-items: baseline; gap: .2rem .6rem; }
.versions .numero-version { font-size: .86rem; font-weight: 700; color: var(--lys); background: var(--lys-pale); border-radius: 99px; padding: .15rem .65rem; }
.versions .version-actuelle { font-size: .78rem; font-weight: 700; color: #7a5a00; background: var(--lin-pale); border-radius: 99px; padding: .15rem .6rem; }
.versions .date-version { color: var(--encre-2); font-size: .92rem; margin: 0 0 .6rem; }
.versions .note-version { background: var(--blanc); border: 1px solid var(--trait); border-radius: var(--rond); padding: .8rem 1rem; display: flex; gap: .6rem; align-items: flex-start; }
.versions .note-version .icone { flex: 0 0 auto; margin-top: .25rem; }

/* Présences non confirmées faute de PV (v135) : en jaune ; le détail est dans l'infobulle. */
.presences-points .siege.pour.non-confirme { background: var(--lin); }
.presences-points .siege.vide.non-confirme { box-shadow: inset 0 0 0 2px var(--lin); }
