/* Écran « Résultats » (section 3.3 de docs/design-v3.md). Classes préfixées .resultats- uniquement ;
   les composants partagés (.scrutin-bar, .figures, .totals, .cand-row, .bureau-row, .donut-row, .expander,
   .card-footer, .badge) viennent de style.css. Couleurs politiques seulement sur les marques (styles en ligne
   posés par le module depuis INDEX.blocs). Aucun rayon supérieur à 16 px. */

/* barre de scrutin : l'aide de la première puce (chip-hint) passe à la ligne sous la puce */
.resultats-bar { flex-wrap: wrap; }
.resultats-bar .chip-hint { flex-basis: 100%; text-align: center; margin: 0 0 4px; }

/* cartes de tour */
.resultats-tours { display: flex; flex-direction: column; gap: var(--s4); min-width: 0; }
.resultats-card { background: var(--surface); border: 0; border-radius: var(--r-12); box-shadow: var(--shadow-1); min-width: 0; overflow: hidden; }
.resultats-summary { list-style: none; cursor: pointer; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px var(--s2); align-items: center; min-height: 60px; padding: var(--s4) var(--s4) var(--s4) var(--s5); border-radius: var(--r-12); transition: background-color var(--d-fast); }
.resultats-summary::-webkit-details-marker { display: none; }
.resultats-summary:active { background: var(--fill); }
.resultats-card-head { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.resultats-card-title { font-size: 19px; font-weight: 700; letter-spacing: -.02em; line-height: 1.3; }
.resultats-card-sub { display: flex; flex-wrap: wrap; align-items: center; gap: 4px var(--s2); font-size: var(--fs-13); color: var(--muted); }
.resultats-card-lead { grid-column: 1; font-size: var(--fs-13); color: var(--ink-2); line-height: 1.4; overflow-wrap: anywhere; }
.resultats-card-leadname { font-weight: 600; color: var(--ink); }
.resultats-card[open] .resultats-card-lead { display: none; }
.resultats-chevron { grid-column: 2; grid-row: 1 / 3; color: var(--muted); display: grid; place-items: center; transition: transform var(--d-base) var(--ease); }
.resultats-card[open] .resultats-chevron { transform: rotate(90deg); }
.resultats-body { display: flex; flex-direction: column; gap: var(--s5); padding: var(--s5) var(--s5) var(--s5); border-top: 1px solid var(--line); min-width: 0; }
.resultats-lead { margin: 0; }
/* repères : à 720 px la grille passe à trois colonnes ; la valeur et son dénominateur ne se coupent jamais en
   deux (« 37,5 % des » / « exprimés »), le dénominateur passe à la ligne d'un seul tenant sous la valeur */
.resultats-figures .figure-value .num, .resultats-figures .figure-value .den small { white-space: nowrap; }
/* contexte d'un repère : la pastille de bloc reste dans le flux du texte (pas seule sur sa ligne quand le texte passe à la ligne) */
.resultats-body .figure-context { display: block; }
.resultats-body .figure-context .sw { margin-right: 6px; }

/* totaux : ligne courte puis grille 3 x 2 avec dénominateurs */
/* totaux : trois cellules centrées (libellé, nombre), puis le bouton « Tous les totaux » centré dessous */
.resultats-totals-wrap { display: flex; flex-direction: column; align-items: stretch; gap: var(--s2); }
.resultats-totals-line { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s2); padding: var(--s3) var(--s2); background: var(--surface-2); border-radius: 16px; text-align: center; }
.resultats-total { display: flex; flex-direction: column; gap: 2px; min-width: 0; font-size: var(--fs-12); color: var(--muted); line-height: 1.3; }
.resultats-total b { font-family: var(--font-num); font-size: var(--fs-17); font-weight: 700; letter-spacing: -.02em; color: var(--ink); white-space: nowrap; }
.resultats-totals-btn { align-self: center; padding-top: 10px; padding-bottom: 10px; }
.resultats-totals { padding: var(--s4); background: var(--surface-2); border-radius: 16px; }
.resultats-totals .den small { font-size: var(--fs-12); }
.resultats-na { color: var(--muted); font-weight: 400; font-size: var(--fs-13); }

/* notes de régime */
.resultats-note-p { font-size: var(--fs-15); color: var(--ink); line-height: 1.45; }

/* anneau et liste des blocs (nom, partis, part, voix) */
/* pastille, puis nom du bloc et partis empilés ; part et voix alignées à droite */
.resultats-donut-name { display: grid; grid-template-columns: 10px minmax(0, 1fr); column-gap: var(--s2); align-items: start; min-width: 0; color: var(--ink); font-weight: 600; line-height: 1.3; }
.resultats-donut-name .sw { margin: 0; position: relative; top: 4px; }
.resultats-donut-name small { grid-column: 2; display: block; margin-top: 2px; font-weight: 400; line-height: 1.35; }
.resultats-donut-val { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; text-align: right; line-height: 1.3; }
.resultats-donut-val .num { font-family: var(--font-num); font-size: var(--fs-15); font-weight: 700; }
.resultats-donut-val .den small { display: block; }

/* candidats */
.resultats-cands-wrap { display: flex; flex-direction: column; }
.resultats-cands { display: flex; flex-direction: column; }
.resultats-more { align-self: flex-start; }

/* feuille « Détail du candidat » */
.resultats-detail { display: flex; flex-direction: column; }
.resultats-kv { display: grid; grid-template-columns: 124px minmax(0, 1fr); gap: var(--s2); padding: var(--s2) 0; border-bottom: 1px solid var(--line); font-size: var(--fs-15); align-items: baseline; }
.resultats-kv:last-child { border-bottom: 0; }
.resultats-k { font-size: var(--fs-13); color: var(--muted); }
.resultats-v { overflow-wrap: anywhere; }

/* feuille « Choisir un scrutin » : années en grille de quatre */
.resultats-years { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--s2); }
.resultats-years .btn { padding: 0 var(--s2); font-variant-numeric: tabular-nums; }
.resultats-years .btn[aria-pressed="true"] { background: var(--accent-soft); color: var(--accent); border-color: transparent; }

/* bureaux de vote */
.resultats-bv-controls { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s2); }
.resultats-bureau-row { grid-template-rows: auto auto auto; }
.resultats-bureau-row .bureau-num { grid-row: 1 / 3; }
.resultats-bureau-row .bureau-val b .den small { display: block; font-family: var(--font); font-size: var(--fs-12); font-weight: 500; }
.resultats-bureau-link, .btn.text.resultats-bureau-link { grid-column: 2 / 4; justify-self: start; padding: 6px 0; font-size: var(--fs-13); }
.btn.text.resultats-bureau-link:active { background: transparent; text-decoration: underline; text-underline-offset: 3px; }
span.resultats-bureau-link { font-size: var(--fs-12); }

/* 1080 px et plus : les deux tours côte à côte, repères en deux colonnes dans chaque carte */
@media (min-width: 1080px) {
  .resultats-tours.has-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
  .resultats-tours.has-2 .figures { --cols: 2; }
  .resultats-tours.has-2 .figures > .figure:first-child:nth-last-child(3) { grid-column: 1 / -1; --cols: 1; }
  /* dans une carte à mi-largeur, l'anneau passe au-dessus de sa liste (150 px + liste côte à côte ne tiennent pas) */
  .resultats-tours.has-2 .donut-row { grid-template-columns: minmax(0, 1fr); justify-items: center; }
  .resultats-tours.has-2 .donut-row .chart { width: 150px; }
  .resultats-tours.has-2 .donut-list { width: 100%; }
}

/* mouvement réduit */
@media (prefers-reduced-motion: reduce) {
  .resultats-chevron { transition: none; }
}

/* impression : cartes de tour ouvertes, ligne d'en-tête repliée masquée */
@media print {
  .resultats-card { box-shadow: none; break-inside: avoid; }
  .resultats-card-lead, .resultats-chevron, .resultats-more, .resultats-bv-controls { display: none !important; }
  .resultats-totals, .resultats-cands .cand-row { display: grid !important; }
}

/* survol : seulement à la souris (un doigt qui touche ne doit pas laisser un état de survol collé) */
@media (hover: hover) and (pointer: fine) {
  .btn.text.resultats-bureau-link:hover { background: transparent; text-decoration: underline; text-underline-offset: 3px; }
}

/* toute la liste (feuille « Détail du candidat ») : numéros d'ordre alignés, deux colonnes dès 720 px */
.resultats-colistiers-wrap { display: flex; flex-direction: column; gap: var(--s2); padding-top: var(--s3); }
.resultats-colistiers-title { font-size: var(--fs-13); font-weight: 600; color: var(--ink-2); }
.resultats-colistiers { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: 0 var(--s4); }
.resultats-colistiers li { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: var(--s2); align-items: baseline; padding: 6px 0; border-bottom: 1px solid var(--line); font-size: var(--fs-15); }
.resultats-colistier-n { font-family: var(--font-num); font-variant-numeric: tabular-nums; color: var(--muted); font-size: var(--fs-13); text-align: right; }
.resultats-colistier-nom { min-width: 0; overflow-wrap: anywhere; }
.resultats-colistier-cc { margin-left: 6px; }
.resultats-colistiers-wrap .btn.text { align-self: flex-start; }
@media (min-width: 720px) { .resultats-colistiers { grid-template-columns: repeat(2, minmax(0, 1fr)); } }


/* fiche d'une circonscription : ce que couvrent ses résultats (v5.2) */
.resultats-circo-note { margin: 0 0 var(--s3); }

/* v5.2 : à deux colonnes, les cartes de tour sont des éléments de la grille de l'écran (style.css : .screen.is-grid >
   .resultats-tours { display: contents }) et non un bloc sur toute la largeur : la carte suivante (analyses) remonte sous
   le tour le plus court au lieu d'attendre la fin du plus long ; la règle .has-2 en grille interne ne s'applique plus là */
@media (min-width: 1080px) {
  .screen.is-grid > .resultats-tours.has-2 { display: contents; }
}

/* sénatoriales (30 septembre 2026) : pastille de résultat (sièges gagnés, élu) et liste officielle des élus du tour ;
   la liste reprend la mise en page des colistiers */
.badge.resultats-elu { background: var(--accent-soft); color: var(--accent); }
.resultats-elu-meta { color: var(--muted); font-size: var(--fs-13); }
.resultats-elus-wrap { padding-top: var(--s2); }
