/* Jetons « papier » encore lus par les scripts (messages injectés en var(--ink-faint)) : remappés sur l'édition */
.sn-wrap,.sd-wrap{--ink:var(--ed-ink);--ink-soft:#3a3c36;--ink-faint:var(--ed-muted);--paper:var(--ed-paper);--paper-2:#efefe8;--paper-3:#e6e7dd;--card:var(--ed-surface);--line:var(--ed-rule);--line-soft:var(--ed-rule-soft);--serif:var(--ed-display);--radius:0;--radius-s:0}
/* Famille « sénatoriales 2026 » en charte « édition » (vague 7 de la refonte DA) :
   carte nationale (/senatoriales-2026) et 64 fiches départementales.
   Chargée avec lois.css (primitives ed-*, lw-*). Les classes sn-* et sd-* sont
   partagées avec /js/senatoriales-carte.js, senatoriales-fiche.js et
   senatoriales-communes.js, qui les injectent : on les rhabille, on ne les
   renomme pas. Les couleurs de la carte (échelle de sièges, majoritaire tan vs
   proportionnel bleu, couleurs de groupe des sortants, nuances communales)
   sont des données : elles restent telles quelles, en attributs inline.
   Toutes les règles sont préfixées .sn-wrap / .sd-wrap : le socle pose `.edition a` et
   `.edition p, h1, h2, h3 {margin:0}`, qu'une classe seule ne battrait pas. */

/* ══════════════════════════════════════════════════════════════════════════
   Carte nationale — .sn-wrap
   ══════════════════════════════════════════════════════════════════════════ */
.sn-wrap{max-width:1180px;margin:0 auto;padding:22px 24px 90px}
@media (max-width:640px){.sn-wrap{padding:16px 16px 64px}}
.sn-wrap .sn-head{margin-bottom:0}
.sn-wrap .lw-kpis{border-top:0;margin:-4px 0 26px}
.sn-wrap .lw-kpi span{text-transform:none;letter-spacing:0;font-size:12px;font-weight:600}

/* ── Composition sortante (gabarit et panneau, DOM injecté) ── */
.sn-wrap .sn-compo{margin:0 0 30px}
.sn-wrap .sn-compo-t{font:700 11px/1.2 var(--ed-display);letter-spacing:.1em;text-transform:uppercase;color:var(--ed-muted);margin-bottom:8px}
.sn-wrap .sn-compo-bar{display:flex;height:26px;overflow:hidden;border:1px solid var(--ed-ink);background:var(--ed-surface)}
.sn-wrap .sn-compo-seg{position:relative;display:block}
.sn-wrap .sn-compo-leg{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:9px;font-size:12.5px;color:#3a3c36}
.sn-wrap .sn-compo-leg span{display:inline-flex;align-items:center;gap:6px}
.sn-wrap .sn-dot{width:10px;height:10px;flex:none;border:1px solid rgba(32,34,29,.25)}

/* ── Carte + panneau ── */
.sn-wrap .sn-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:26px;margin:0 0 40px;align-items:start}
@media (max-width:900px){.sn-wrap .sn-grid{grid-template-columns:1fr}}
.sn-wrap .sn-card{margin:0}
.sn-wrap .sn-card>h2{margin-bottom:4px}
.sn-wrap .sn-card>p.sn-sub{font-size:13.5px;line-height:1.55;color:#3a3c36;margin:0 0 14px}

.sn-wrap .sn-vues{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.sn-wrap .sn-vue,.sd-wrap .sd-vue{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--ed-ink);background:var(--ed-surface);color:var(--ed-ink);padding:8px 13px;font:700 11px/1.2 var(--ed-body);letter-spacing:.05em;text-transform:uppercase;cursor:pointer;transition:background .12s}
.sn-wrap .sn-vue:hover,.sd-wrap .sd-vue:hover{background:var(--ed-acid)}
.sn-wrap .sn-vue[aria-pressed="true"],.sd-wrap .sd-vue[aria-pressed="true"]{background:var(--ed-ink);border-color:var(--ed-ink);color:var(--ed-paper)}
.sn-wrap .sn-vue-hint{font-size:12px;font-weight:700;color:var(--ed-orange)}

.sn-wrap .sn-mapbox{position:relative;background:#efefe8;border:1px solid var(--ed-rule)}
.sn-wrap #sn-map{width:100%;display:block;overflow:hidden}
.sn-wrap #sn-map svg{display:block;width:100%;height:auto}
.sn-wrap #sn-map .pays-carte a{cursor:pointer}
.sn-wrap #sn-map .pays-carte a path{transition:opacity .12s,stroke-width .12s;stroke:var(--ed-surface);stroke-width:.6}
.sn-wrap #sn-map .pays-carte a:hover path{opacity:.78}
.sn-wrap #sn-map .pays-carte a.sn-on path{stroke:var(--ed-ink);stroke-width:1.6}
.sn-wrap #sn-map .pays-carte a:focus{outline:none}
.sn-wrap #sn-map .pays-carte a.sn-hors path{opacity:.55}
/* Contours communaux (SNCommunes.dessiner) : filet clair entre les communes. */
.sn-wrap #sn-map path[data-code]{transition:opacity .1s}
.sn-wrap #sn-map path[data-code]:hover{opacity:.72}

.sn-wrap .sn-retour{position:absolute;top:10px;left:10px;z-index:3;display:none;align-items:center;gap:6px;border:1px solid var(--ed-ink);background:var(--ed-ink);color:var(--ed-paper);padding:8px 12px;font:700 11px/1.2 var(--ed-body);letter-spacing:.05em;text-transform:uppercase;cursor:pointer}
.sn-wrap .sn-retour:hover{background:var(--ed-orange);border-color:var(--ed-orange)}
.sn-wrap .sn-retour.sn-visible{display:inline-flex}

.sn-wrap .sn-tip,.sd-wrap .sd-tip{position:absolute;z-index:20;pointer-events:none;opacity:0;background:var(--ed-ink);color:var(--ed-paper);font-size:12.5px;line-height:1.45;padding:8px 11px;max-width:260px;white-space:normal;text-wrap:balance;transition:opacity .1s;box-shadow:4px 4px 0 var(--ed-acid);margin:0}
.sn-wrap .sn-tip strong,.sd-wrap .sd-tip strong{font-weight:700;color:var(--ed-acid)}

/* ── Légende (gabarit et DOM injecté en vue communale) ── */
.sn-wrap .sn-leg{margin-top:14px;display:grid;gap:10px}
.sn-wrap .sn-leg-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.sn-wrap .sn-leg-lbl{font:700 11px/1.2 var(--ed-display);letter-spacing:.08em;text-transform:uppercase;color:var(--ed-ink);flex:none;min-width:96px}
.sn-wrap .sn-leg-scale{display:flex;align-items:center;gap:3px}
.sn-wrap .sn-leg-sw{width:26px;height:13px;border:1px solid rgba(32,34,29,.2)}
.sn-wrap .sn-leg-n{font-size:11px;font-weight:600;color:var(--ed-muted);margin-left:4px;white-space:nowrap}
.sn-wrap .sn-leg-note{font-size:12.5px;color:#3a3c36;line-height:1.55;margin:0}
.sn-wrap .sn-leg-note a{color:var(--ed-ink);font-weight:700;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--ed-orange)}
.sn-wrap .sn-leg-note a:hover{color:var(--ed-orange)}

/* ── Panneau latéral (DOM injecté par afficherPanneau / chargerSortants) ── */
.sn-wrap .sn-panel{position:sticky;top:16px}
.sn-wrap .sn-panel-empty{font-size:13.5px;color:#3a3c36;line-height:1.6;margin:0}
.sn-wrap .sn-dep-nom{font:800 clamp(26px,3vw,34px)/.95 var(--ed-display);letter-spacing:-.02em;text-transform:uppercase;color:var(--ed-ink);margin:0 0 10px;text-wrap:balance}
.sn-wrap .sn-dep-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;font-size:13px;color:#3a3c36;margin:0 0 4px}
.sn-wrap .sn-badge{display:inline-block;border:1px solid var(--ed-ink);padding:4px 8px 3px;font:700 11px/1.2 var(--ed-display);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}
/* Teintes du mode de scrutin = celles de la carte (majoritaire tan, proportionnel bleu). */
.sn-wrap .sn-badge-maj,.sn-wrap .sn-mode--maj .sn-mode-tag{background:#F6E7CF;border-color:#D2954B;color:#7A4E12}
.sn-wrap .sn-badge-prop,.sn-wrap .sn-mode--prop .sn-mode-tag{background:#C6D8EC;border-color:#2E639B;color:#1B4877}
.sn-wrap .sn-sortants{list-style:none;padding:0;margin:14px 0 0;display:grid;gap:8px}
.sn-wrap .sn-sortant{display:flex;align-items:center;gap:10px;font-size:13.5px;padding-top:8px;border-top:1px solid var(--ed-rule)}
.sn-wrap .sn-sortant:first-child{border-top:0;padding-top:0}
.sn-wrap .sn-sortant img{width:32px;height:40px;object-fit:cover;object-position:center 20%;flex:none;background:#e6e7dd;filter:saturate(.8)}
.sn-wrap .sn-sortant a{color:var(--ed-ink);text-decoration:none;font-weight:700}
.sn-wrap .sn-sortant a:hover{color:var(--ed-orange);text-decoration:underline;text-underline-offset:3px}
.sn-wrap .sn-sortant-gp{font-size:11.5px;color:var(--ed-muted)}
.sn-wrap a.sn-cta{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:18px;padding:13px 16px;background:var(--ed-ink);color:var(--ed-paper);font:700 12px/1.2 var(--ed-body);letter-spacing:.05em;text-transform:uppercase;text-decoration:none;border:1px solid var(--ed-ink)}
.sn-wrap a.sn-cta:hover{background:var(--ed-orange);border-color:var(--ed-orange);color:#fff}

.sn-wrap .sn-top{list-style:none;padding:0;margin:14px 0 0;border-top:1px solid var(--ed-ink)}
.sn-wrap .sn-top-li{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--ed-rule);font-size:14px}
.sn-wrap .sn-top-n{flex:none;width:28px;height:28px;color:#fff;font:800 14px/1 var(--ed-display);display:flex;align-items:center;justify-content:center;text-shadow:0 0 2px #0005}
.sn-wrap .sn-top-li a{color:var(--ed-ink);text-decoration:none;font-weight:700}
.sn-wrap .sn-top-li a:hover{color:var(--ed-orange);text-decoration:underline;text-underline-offset:3px}
.sn-wrap .sn-top-m{margin-left:auto;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ed-muted);white-space:nowrap}

/* ── Encart « deux scrutins » ── */
.sn-wrap .sn-modes{scroll-margin-top:24px}
.sn-wrap .sn-modes-chapo{font-size:14.5px;line-height:1.6;color:#3a3c36;max-width:70ch;margin:0 0 18px}
.sn-wrap .sn-modes-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
@media (max-width:760px){.sn-wrap .sn-modes-grid{grid-template-columns:1fr}}
.sn-wrap .sn-mode{margin:0;border-top:4px solid var(--ed-ink);scroll-margin-top:24px;transition:box-shadow .15s}
.sn-wrap .sn-mode--maj{border-top-color:#D2954B}
.sn-wrap .sn-mode--prop{border-top-color:#2E639B}
/* Arrivée depuis une fiche départementale : on désigne le bon scrutin. */
.sn-wrap .sn-mode:target{box-shadow:6px 6px 0 var(--ed-acid)}
.sn-wrap .sn-mode:target .sn-mode-vous{display:block}
.sn-wrap .sn-mode-vous{display:none;margin:0 0 12px;font-size:12.5px;font-weight:700;color:var(--ed-orange)}
.sn-wrap .sn-mode .sn-mode-tag{margin-bottom:12px}
.sn-wrap .sn-mode-t{font:700 22px/1.05 var(--ed-display);text-transform:uppercase;letter-spacing:-.01em;color:var(--ed-ink);margin:0 0 4px}
.sn-wrap .sn-mode-ou{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ed-muted);margin:0 0 14px}
.sn-wrap .sn-mode-dl{margin:0;display:grid;gap:10px}
.sn-wrap .sn-mode-dl>div{display:grid;grid-template-columns:106px minmax(0,1fr);gap:10px;align-items:baseline;padding-top:10px;border-top:1px solid var(--ed-rule)}
.sn-wrap .sn-mode-dl>div:first-child{border-top:0;padding-top:0}
@media (max-width:420px){.sn-wrap .sn-mode-dl>div{grid-template-columns:1fr;gap:2px}}
.sn-wrap .sn-mode-dl dt{font:700 11px/1.3 var(--ed-display);letter-spacing:.08em;text-transform:uppercase;color:var(--ed-muted)}
.sn-wrap .sn-mode-dl dd{margin:0;font-size:13.5px;line-height:1.55;color:var(--ed-ink)}
.sn-wrap .sn-modes-note{margin:20px 0 0;font-size:13.5px;line-height:1.6;color:#3a3c36}
.sn-wrap .sn-modes-note strong{color:var(--ed-ink);font-weight:700}

/* ── Liste crawlable des circonscriptions ── */
.sn-wrap .sn-liste-wrap{margin-top:40px}
.sn-wrap .sn-search{width:100%;max-width:340px;box-sizing:border-box;padding:11px 12px;font:inherit;font-size:14px;border:1px solid var(--ed-ink);background:#fff;color:var(--ed-ink)}
.sn-wrap .sn-search:focus{outline:none;box-shadow:inset 0 0 0 2px var(--ed-ink)}
.sn-wrap .sn-liste{list-style:none;padding:0;margin:16px 0 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:0 24px}
.sn-wrap .sn-li{display:flex;align-items:baseline;gap:8px;padding:8px 0;border-bottom:1px solid var(--ed-rule)}
.sn-wrap .sn-li a{color:var(--ed-ink);text-decoration:none;font-weight:700;font-size:14px}
.sn-wrap .sn-li a:hover{color:var(--ed-orange);text-decoration:underline;text-underline-offset:3px}
.sn-wrap .sn-li-d{font-size:11px;color:var(--ed-muted);margin-left:auto;white-space:nowrap}
.sn-wrap .sn-vide,.sd-wrap .sn-vide{color:var(--ed-muted);font-style:italic;font-size:13.5px;margin:8px 0 0}

/* ══════════════════════════════════════════════════════════════════════════
   Fiche départementale — .sd-wrap
   ══════════════════════════════════════════════════════════════════════════ */
.sd-wrap{max-width:1080px;margin:0 auto;padding:22px 24px 90px}
@media (max-width:640px){.sd-wrap{padding:16px 16px 64px}}
.sd-wrap .lw-kpis{grid-template-columns:repeat(3,1fr);border-top:0;margin:-4px 0 30px}
.sd-wrap .lw-kpi span{text-transform:none;letter-spacing:0;font-size:12px;font-weight:600}
@media (max-width:640px){.sd-wrap .lw-kpis{grid-template-columns:1fr 1fr}}

.sd-wrap .sd-section{margin-bottom:38px}
.sd-wrap .sd-sub{font-size:14px;line-height:1.6;color:#3a3c36;margin:0 0 16px;max-width:70ch}
.sd-wrap .sd-note{font-size:12.5px;color:var(--ed-muted);line-height:1.55;margin:10px 0 0}
.sd-wrap .sd-note strong{color:var(--ed-ink);font-weight:700}

.sd-wrap .sd-encadre{border-left:4px solid var(--ed-orange);margin:0 0 4px;font-size:15px;line-height:1.6}
.sd-wrap a.sd-mode-lien{display:inline;font-size:13.5px;font-weight:700;color:var(--ed-ink);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--ed-orange)}
.sd-wrap a.sd-mode-lien:hover{color:var(--ed-orange)}
.sd-wrap .sd-mode-lien-q{font-weight:400;color:#3a3c36}

/* ── Sortants ── */
.sd-wrap .sd-sortants{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:14px}
.sd-wrap .sd-sortant{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--ed-ink);padding:12px;background:var(--ed-surface);transition:box-shadow .15s,transform .15s}
.sd-wrap .sd-sortant:hover{box-shadow:6px 6px 0 var(--ed-acid);transform:translate(-1px,-1px)}
.sd-wrap .sd-sortant img{width:46px;height:58px;object-fit:cover;object-position:center 20%;flex:none;background:#e6e7dd;filter:saturate(.8)}
.sd-wrap a.sd-sortant-nom{font:700 17px/1.05 var(--ed-display);text-transform:uppercase;color:var(--ed-ink);text-decoration:none}
.sd-wrap a.sd-sortant-nom:hover{color:var(--ed-orange)}
.sd-wrap .sd-gp{display:inline-block;font:700 10px/1.3 var(--ed-body);letter-spacing:.06em;text-transform:uppercase;padding:2px 6px;color:#fff;margin-top:6px;text-shadow:0 0 2px #0004}
.sd-wrap .sd-sortant-meta{font-size:12px;color:var(--ed-muted);margin-top:5px;line-height:1.45}
.sd-wrap a.sd-sortant-lien{display:inline-block;margin-top:6px;font-size:12px;font-weight:700;color:var(--ed-ink);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--ed-orange)}
.sd-wrap a.sd-sortant-lien:hover{color:var(--ed-orange)}

/* ── Carte communale (DOM injecté par senatoriales-fiche.js) ── */
.sd-wrap .sd-vues{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.sd-wrap .sd-mapbox{position:relative;background:#efefe8;border:1px solid var(--ed-rule);margin-top:4px}
.sd-wrap #sd-map{width:100%;display:block;min-height:180px;overflow:hidden}
.sd-wrap #sd-map svg{display:block;width:100%;height:auto}
.sd-wrap #sd-map path{transition:opacity .1s}
.sd-wrap #sd-map path:hover{opacity:.72}
.sd-wrap .sd-leg{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:12px;font-size:12.5px;color:#3a3c36}
.sd-wrap .sd-leg span{display:inline-flex;align-items:center;gap:6px}
.sd-wrap .sd-sw{width:11px;height:11px;flex:none;border:1px solid rgba(32,34,29,.2)}

/* ── Barres (précédents renouvellements) ── */
.sd-wrap .sd-bars{display:flex;flex-direction:column;gap:7px;margin-top:4px}
.sd-wrap .sd-bar{display:flex;align-items:center;gap:10px}
.sd-wrap .sd-bar-l{flex:0 0 9.5rem;font-size:12.5px;color:#3a3c36;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:560px){.sd-wrap .sd-bar-l{flex-basis:6.5rem}}
.sd-wrap .sd-bar-t{flex:1 1 auto;min-width:0;height:12px;background:#ecede3;overflow:hidden}
.sd-wrap .sd-bar-f{display:block;height:100%}
.sd-wrap .sd-bar-n{flex:none;font:800 15px/1 var(--ed-display);color:var(--ed-ink);min-width:1.6rem;text-align:right;font-variant-numeric:tabular-nums}

/* ── Historique ── */
.sd-wrap .sd-hist{list-style:none;padding:0;margin:0;border-top:1px solid var(--ed-ink)}
.sd-wrap .sd-hist-i{display:flex;gap:18px;padding:16px 0;border-bottom:1px solid var(--ed-rule)}
.sd-wrap .sd-hist-a{font:800 30px/1 var(--ed-display);letter-spacing:-.02em;color:var(--ed-orange);min-width:3.4rem}
.sd-wrap .sd-hist-c{flex:1;min-width:0}

/* ── Circonscriptions législatives ── */
.sd-wrap .sd-compo{margin-bottom:18px}
.sd-wrap .sd-compo-bar{display:flex;height:24px;overflow:hidden;border:1px solid var(--ed-ink);background:var(--ed-surface)}
.sd-wrap .sd-compo-seg{display:block}
.sd-wrap .sd-circos{list-style:none;padding:0;margin:0;border-top:1px solid var(--ed-ink)}
.sd-wrap .sd-circo{display:grid;grid-template-columns:5.4rem minmax(0,13rem) 1fr 2.6rem;align-items:baseline;gap:10px;padding:9px 0;border-bottom:1px solid var(--ed-rule);font-size:14px}
.sd-wrap .sd-circo-n{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ed-muted);white-space:nowrap}
.sd-wrap .sd-circo-who{display:inline-flex;align-items:baseline;gap:6px;color:var(--ed-ink)}
.sd-wrap .sd-circo-who b{font-weight:700}
.sd-wrap .sd-circo-m{color:#3a3c36;font-size:13px;min-width:0}
.sd-wrap .sd-circo-pct{font:800 15px/1 var(--ed-display);color:var(--ed-ink);text-align:right;font-variant-numeric:tabular-nums}
@media (max-width:640px){
  /* Deux colonnes : à gauche le rang et le score, à droite l'étiquette et le
     nom. Sans placement explicite, le score glisse sur une troisième ligne. */
  .sd-wrap .sd-circo{grid-template-columns:4.8rem 1fr;row-gap:2px}
  .sd-wrap .sd-circo-n{grid-column:1;grid-row:1}
  .sd-wrap .sd-circo-pct{grid-column:1;grid-row:2;text-align:left;color:var(--ed-muted);font:600 13px/1 var(--ed-body)}
  .sd-wrap .sd-circo-who{grid-column:2;grid-row:1}
  .sd-wrap .sd-circo-m{grid-column:2;grid-row:2}
}

.sd-wrap a.sd-retour{margin-top:6px}
