/* geoStrat — the projection with its uncertainty (home + /soiree/ before the count; drawn by night.js) ------------ */
/* hemicycle: each seat a pie of the riding's chances */
.pseat { cursor: pointer; }
.pseat .slice { stroke: var(--surface); stroke-width: 1; }
.pseat .ring { fill: none; stroke: var(--surface); stroke-width: 1; }
.pseat.mixed .ring { stroke: var(--text); stroke-opacity: .35; }
.pseat:hover .ring, .pseat.sel .ring { stroke: var(--text); stroke-opacity: 1; stroke-width: 3; }
.pp-legend-note { flex-basis: 100%; justify-content: center; text-align: center; font-size: 12px; }
.legend .pp-sc { color: var(--text); }

/* seats and votes: 90 % range bands */
.pp-srow { display: grid; grid-template-columns: 64px minmax(0, 1fr) 96px; grid-template-areas: "n b v" ". p p"; gap: 2px 10px; align-items: center; margin: 4px 0 10px; }
.pp-srow .track-name { grid-area: n; } .pp-srow .pp-sbar { grid-area: b; } .pp-srow .pp-snum { grid-area: v; } .pp-srow .pp-sprob { grid-area: p; }
.pp-srow.axis { margin-top: -6px; }
.pp-sbar, .pp-vbar { position: relative; height: 20px; background: var(--surface-2); border-radius: 6px; }
.pp-sbar.ticks, .pp-vbar.ticks { background: none; height: 16px; font-size: 11px; color: var(--muted); }
.pp-sbar.ticks span, .pp-vbar.ticks span { position: absolute; transform: translateX(-50%); white-space: nowrap; }
.pp-sbar .band, .pp-vbar .band { position: absolute; top: 3px; bottom: 3px; border-radius: 4px; opacity: .35; }
.pp-sbar .mean, .pp-vbar .mean { position: absolute; top: -2px; bottom: -2px; width: 4px; margin-left: -2px; border-radius: 2px; box-shadow: 0 0 0 2px var(--surface); }
.pp-sbar .maj { position: absolute; top: -4px; bottom: -4px; width: 2px; margin-left: -1px; background: var(--text); opacity: .6; }
.pp-vbar .target { position: absolute; top: 5px; bottom: 5px; width: 2px; margin-left: -1px; background: var(--muted); opacity: .9; }
.pp-snum, .pp-vnum { font-variant-numeric: tabular-nums; text-align: right; font-size: 14px; white-space: nowrap; }
.pp-snum b { font-size: 17px; }
.pp-sprob { display: flex; flex-wrap: wrap; gap: 2px 14px; font-size: 12.5px; color: var(--muted); }
.pp-sprob b { color: var(--text); }
.pp-vrow { display: grid; grid-template-columns: 76px minmax(0, 1fr) 150px; gap: 10px; align-items: center; margin: 10px 0; }
.pp-vrow.axis { margin-top: -4px; }

/* seat distribution (in place of the party cards) */
.party-cards.pp-distbox { display: block; }
.pp-h3 { font-size: 13px; margin: 18px 0 4px; color: var(--muted); font-weight: 600; }
.seat-dist { width: 100%; height: auto; display: block; touch-action: pan-y; }
.seat-dist .grid { stroke: var(--grid); }
.seat-dist .axis-t { fill: var(--muted); }
.seat-dist .dist-x { stroke: var(--text); stroke-opacity: .5; }

.pp-map-legend { margin-top: 10px; }
.tip-ch { margin-top: 4px; }
.tip-l { display: flex; align-items: center; gap: 6px; font-size: 12.5px; margin-top: 2px; white-space: nowrap; }
.tip .dot { width: 10px; height: 10px; border-radius: 3px; display: inline-block; flex: none; }

@media (max-width: 560px) {
  .pp-vrow { grid-template-columns: 52px minmax(0, 1fr) 118px; gap: 8px; }
  .pp-vnum { font-size: 12.5px; }
  .pp-srow { grid-template-columns: 52px minmax(0, 1fr) 84px; gap: 2px 8px; }
  .pp-snum { font-size: 12.5px; } .pp-snum b { font-size: 15px; }
  .tip-l { white-space: normal; }
}

/* /projection/liste/: 90 % range under each projected share */
.rl-rng { display: block; font-size: 11px; color: var(--muted); font-weight: 400; }

/* during the count (night.js LIVEU: state.ui.live_uncertainty): elected solid, the others pale pies / stripes */
.pseat.lv.open > :not(.ring) { fill-opacity: .5; }
.pseat.lv.final .ring { stroke: var(--text); stroke-opacity: .55; stroke-width: 2.5; }
.pseat.lv.final:hover .ring, .pseat.lv.final.sel .ring { stroke-opacity: 1; stroke-width: 3.5; }
.pp-sbar .won { position: absolute; left: 0; top: 6px; bottom: 6px; border-radius: 3px; opacity: .9; }
.pp-vbar .cnt { position: absolute; left: 0; top: 7px; bottom: 7px; border-radius: 3px; opacity: .85; }
.pp-vrow.lv .band { opacity: .3; }
.rv-live .rv-dot { transition: cx 1.2s ease, cy 1.2s ease, fill-opacity .6s, fill .6s; }
.rv-live-note { margin: 0; padding: 10px 12px; border-radius: 10px; background: var(--surface-2); line-height: 1.5; }
.rv-live-on .rivals-read p:last-child { display: none; }

/* /soiree/: circle + popular vote + timeline side by side, above « Mes circonscriptions » (2026-10-05) */
.duo-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 16px; align-items: start; }
.duo-side { display: grid; gap: 16px; align-content: start; }
.rivals-compact .rivals-wrap { grid-template-columns: 1fr; gap: 8px; }
.rivals-compact #rivals { max-width: 600px; margin: 0 auto; }
.rivals-compact .rivals-side { gap: 10px; }
.rivals-compact .rivals-read p { margin: 0 0 6px; }
@media (max-width: 1000px) { .duo-grid { grid-template-columns: 1fr; } }
