/* Elections (/elections) and race detail (/race/<id>) */
.el-banner { margin: 0 0 var(--s-5, 20px); }
.el-banner p { margin: 0; }
.el-top { margin-bottom: var(--s-6, 28px); max-width: 760px; }
.el-sec { margin: var(--s-7, 40px) 0; }
.el-h3 { font: 700 var(--fs-lg, 23px)/1.25 var(--font-display, serif); margin: var(--s-5, 20px) 0 var(--s-2, 8px); }
.el-small { font-size: var(--fs-sm, 14.5px); color: var(--ink-3); max-width: 820px; }
.el-none { font-family: var(--font-display, serif); font-style: italic; color: var(--ink-3); max-width: 760px; }
.el-stage { display: block; font: 400 var(--fs-xs, 12.5px)/1.35 var(--font-ui, sans-serif); color: var(--ink-4); }
.el-crumb { font: 700 var(--fs-2xs, 11px)/1.4 var(--font-label, sans-serif); letter-spacing: var(--track-label, .12em); text-transform: uppercase; color: var(--ink-4); margin-top: var(--s-2, 8px); }
.el-crumb a { color: inherit; }

/* status badges: official = solid ink, unofficial = ochre dashed, candidates only = hairline */
.el-st { white-space: nowrap; }
.el-st-o { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.el-st-u { color: var(--ink-ochre); border: 1px dashed currentColor; }
.el-st-c { color: var(--ink-3); }

/* small markers */
.el-mk { display: inline-block; font: 700 9.5px/1.4 var(--font-label, sans-serif); letter-spacing: .1em; text-transform: uppercase; color: var(--ink-3); border: 1px solid var(--rule-2); padding: 0 4px; vertical-align: 1px; white-space: nowrap; }
.el-lead { font: 700 var(--fs-2xs, 11px)/1.3 var(--font-label, sans-serif); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-ochre); margin: 0 4px; }
.el-wmark { font: 700 var(--fs-2xs, 11px)/1.3 var(--font-label, sans-serif); letter-spacing: .08em; text-transform: uppercase; color: var(--ink); margin: 0 4px; }
.el-fec { font-size: var(--fs-xs, 12.5px); color: var(--ink-3); }
.el-ext { font: 700 9.5px/1 var(--font-label, sans-serif); letter-spacing: .1em; color: var(--ink-4); }

/* party ink: marks only, never the sole carrier of meaning (the party name is always printed) */
.el-pd { --pc: var(--dem); }
.el-pr { --pc: var(--rep); }
.el-po { --pc: var(--ind); }
.el-pdot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--pc, var(--ink-4)); margin-right: 7px; vertical-align: 1px; }
.el-nom { display: inline-block; margin: 0 14px 2px 0; padding-left: 9px; border-left: 3px solid var(--pc, var(--rule-2)); }

/* ledger tables */
.el-t { width: 100%; border-collapse: collapse; font-size: var(--fs-sm, 14.5px); }
.el-t th, .el-t td { text-align: left; vertical-align: top; padding: 8px 12px 8px 0; border-bottom: var(--hair, 1px solid var(--rule)); }
.el-t thead th { font: 700 var(--fs-2xs, 11px)/1.2 var(--font-label, sans-serif); letter-spacing: var(--track-label, .12em); text-transform: uppercase; color: var(--ink-3); border-bottom: var(--heavy, 3px solid var(--ink)); }
.el-t tbody th { font-weight: 400; }
.el-t .num { text-align: right; white-space: nowrap; }
.el-t tfoot th, .el-t tfoot td { border-top: var(--hair-2, 1px solid var(--rule-2)); border-bottom: 0; font-weight: 700; }
.el-res tr.el-win th { font-weight: 700; }
.el-res tr.el-other { color: var(--ink-3); }
.el-barcell { min-width: 160px; white-space: nowrap; }
.el-bar { display: inline-block; width: 110px; height: 9px; background: var(--paper-2); vertical-align: middle; margin-right: 8px; }
.el-bar span { display: block; height: 100%; background: var(--pc, var(--ink-4)); }
.el-src { font-size: var(--fs-sm, 14.5px); margin-top: var(--s-3, 12px); }
.el-notes { font-size: var(--fs-sm, 14.5px); color: var(--ink-3); padding-left: 18px; max-width: 860px; }
.el-mline { white-space: nowrap; }
.el-money td { min-width: 150px; }
.el-cov td:last-child { min-width: 16em; }
.el-noms { line-height: 1.6; }
.el-inc { columns: 2 280px; padding-left: 18px; }
.el-rel { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: var(--s-5, 20px); }
.el-rel ul { padding-left: 18px; margin: 0; font-size: var(--fs-sm, 14.5px); }
.el-method ul { padding-left: 18px; }
.el-method li { margin-bottom: 6px; }

@media (max-width: 640px) {
  .el-t th, .el-t td { padding-right: 8px; }
  .el-bar { width: 64px; }
  .el-barcell { min-width: 0; }
  .el-mline { white-space: normal; }
  .el-t .hide-phone { display: none; }
}
