:root{--card:#fffefa}
*{box-sizing:border-box}body{margin:0}a{color:inherit;text-underline-offset:3px}button,input,select{font:inherit}button,select{cursor:pointer}button,input,select{border:1px solid var(--line);border-radius:4px;background:var(--card);color:var(--ink);padding:10px 12px;min-height:44px}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #718f79;outline-offset:3px}header{border-bottom:1px solid var(--line)}.top{margin:auto;display:flex;align-items:center}.brand{text-decoration:none}.top nav{display:flex;gap:24px;flex:1}.top nav a{font-size:12px;text-decoration:none}.top .demo{margin-left:auto}.wrap{margin:auto}.intro{display:flex;justify-content:space-between}.intro p{max-width:700px;line-height:1.7;color:var(--muted)}.election-note{text-align:right;line-height:1.8}.small{font-size:12px;color:var(--muted)}.label{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}.eyebrow{font-weight:600}.notice{line-height:1.7;margin:24px 0}.coverage-stats{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);background:var(--card);margin:0 0 28px}.coverage-stats>div{display:grid;gap:8px;padding:24px;border-right:1px solid var(--line)}.coverage-stats>div:last-child{border:0}.coverage-stats strong{font:36px Georgia,serif}.panel{background:var(--card);border:1px solid var(--line);border-radius:4px;padding:28px;min-width:0}.panelhead{display:flex;align-items:center;justify-content:space-between;gap:20px}.panelhead h2{margin:8px 0 0}h2{font:30px Georgia,serif;font-weight:400}h3{font-size:15px;font-weight:600}.text-link{font-size:12px}.directory-controls{display:grid;grid-template-columns:2fr 1fr 1.4fr;gap:14px;margin:24px 0 18px}label{display:grid;gap:7px;font-size:11px;color:var(--muted)}input,select{width:100%;min-width:0}.directory-meta{display:flex;justify-content:space-between;gap:12px;font-size:12px;margin-bottom:16px}.municipal-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.municipality{display:flex;flex-direction:column;align-items:flex-start;gap:9px;text-align:left;padding:18px;min-height:155px;border:1px solid var(--line);background:transparent;line-height:1.5;overflow-wrap:anywhere}.municipality:hover,.municipality[aria-pressed=true]{background:#eef1e8;border-color:#718469}.municipality strong{font:20px/1.25 Georgia,serif;font-weight:400}.municipality .small{font-size:11px}.coverage-tag{font-size:10px;color:#51684c;margin-top:auto}.coverage-tag.pending{color:#8b6b35}.pager{display:flex;justify-content:space-between;align-items:center;margin-top:22px;font-size:12px}.results-panel{margin-top:24px;scroll-margin-top:16px}.results-panel h2{margin:18px 0 8px}.race-controls{display:grid;grid-template-columns:1fr 2fr;gap:14px;margin:22px 0}.source-status{margin-top:18px;border-left:3px solid #718469;background:#eef1e8;padding:12px 16px;font-size:12px;line-height:1.7}.source-status.delayed{border-color:#a38a49;background:#f6f1e4}.race-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.race-card{border:1px solid var(--line);padding:20px;min-width:0}.race-card h3{font:22px/1.3 Georgia,serif;margin:0 0 8px;overflow-wrap:anywhere}.race-note{color:var(--muted);font-size:11px;line-height:1.6;margin-bottom:12px}.candidate-row{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-top:1px solid var(--line);font-size:13px}.candidate-row>div:first-child{min-width:0;overflow-wrap:anywhere}.candidate-row .number{text-align:right;flex:0 0 auto;font-variant-numeric:tabular-nums;max-width:45%;font-size:13px}.candidate-row .small{font-size:10px}.snapshot-source{border-top:1px solid var(--line);padding-top:20px;margin-top:22px;font-size:11px;line-height:1.8;overflow-wrap:anywhere}.coverage-about{margin-top:28px}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 36px}.about-grid p{font-size:13px;line-height:1.8;color:var(--muted)}.coverage-about>.small{line-height:1.8}footer{display:flex;justify-content:space-between}.empty{padding:24px;color:var(--muted);font-size:13px}.results-panel[hidden]{display:none!important}@media(max-width:1000px){.municipal-list{grid-template-columns:repeat(2,minmax(0,1fr))}.directory-controls{grid-template-columns:1fr 1fr}.directory-controls>label:first-child{grid-column:1/-1}}@media(max-width:700px){.top nav{display:none}.wrap{padding:26px 16px}.intro{display:block}.election-note{text-align:left;margin-top:20px}.coverage-stats{grid-template-columns:1fr}.coverage-stats>div{grid-template-columns:1fr auto;align-items:center;padding:18px;border-right:0;border-bottom:1px solid var(--line)}.coverage-stats .small{grid-column:1/-1}.coverage-stats strong{font-size:28px}.panel{padding:18px}.panelhead{align-items:flex-start}.panelhead .text-link{max-width:110px;text-align:right}.municipal-list,.race-grid,.about-grid{grid-template-columns:minmax(0,1fr)}.municipality{min-height:120px}.directory-controls,.race-controls{grid-template-columns:1fr}.directory-meta{display:grid}.directory-controls>label:first-child{grid-column:auto}input,select{font-size:16px}.candidate-row{font-size:13px}.coverage-about{margin-top:20px}footer{display:grid}.pager{gap:10px}.pager button{padding:8px 10px}.intro h1{font-size:36px}}
.ontario-map-panel{margin-bottom:24px}.ontario-map-panel .panelhead h2{margin-top:8px}.ontario-map-panel .panelhead p{margin-bottom:0}.ontario-map-panel .panelhead>label{min-width:220px}.ontario-map-search{margin:20px 0 14px;max-width:560px}.ontario-map-search>label{margin-bottom:7px}.ontario-map-search>div{display:flex;gap:8px}.ontario-map-tools{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.ontario-map-tools button{font-size:12px}.ontario-map-tools button[aria-pressed=true]{background:var(--accent);color:white}.ontario-map-canvas{position:relative;height:610px;overflow:hidden;background:#edf1ee;border:1px solid var(--line);border-radius:4px;touch-action:pan-y}.ontario-map-canvas svg{display:block;width:100%;height:100%;touch-action:pan-y}.ontario-map-canvas.move-mode,.ontario-map-canvas.move-mode svg{touch-action:none;cursor:grab}.map-context path{fill:#dce2dc;stroke:#dce2dc;stroke-width:.5;vector-effect:non-scaling-stroke;pointer-events:none}.municipal-boundary{stroke:#fffefa;stroke-width:.8;vector-effect:non-scaling-stroke;cursor:pointer;transition:fill .15s}.map-colour-0{fill:#8fa798}.map-colour-1{fill:#9db0b6}.map-colour-2{fill:#b4b595}.map-colour-3{fill:#a0afa1}.municipal-boundary:hover,.municipal-boundary:focus{fill:#6f8f7c;stroke:#243b30;stroke-width:2;outline:none}.municipal-boundary.map-selected{fill:#385e50;stroke:#1d382b;stroke-width:2.5}.ontario-map-status{font-size:12px;color:var(--muted);line-height:1.6;margin:12px 0}.ontario-map-legend{display:flex;gap:18px;flex-wrap:wrap;font-size:10px;color:var(--muted);margin:12px 0}.ontario-map-legend i{display:inline-block;background:#8fa798;width:10px;height:10px;margin-right:6px;vertical-align:middle}.ontario-map-legend i.context{background:#dce2dc}.ontario-map-credit{font-size:10px;line-height:1.8}.ontario-map-tooltip{position:absolute;z-index:2;max-width:290px;padding:10px 12px;background:#fffefa;border:1px solid var(--line);border-radius:4px;box-shadow:0 5px 20px #20332a18;font-size:11px;pointer-events:none}.directory{margin-top:24px}@media(max-width:700px){.ontario-map-panel .panelhead{display:grid;gap:14px}.ontario-map-panel .panelhead>label{min-width:0}.ontario-map-canvas{height:clamp(360px,57svh,500px)}.ontario-map-tools{gap:6px}.ontario-map-tools button{font-size:11px;padding:9px 10px}.ontario-map-tooltip{display:none}.ontario-map-panel{margin-bottom:20px}.ontario-map-search{max-width:none}.ontario-map-legend{display:grid;gap:7px}}

.municipal-map-labels{pointer-events:none}.municipal-map-labels text{font-family:system-ui,sans-serif;font-weight:600;fill:#314a3d;stroke:#fffefa;stroke-linejoin:round;paint-order:stroke fill}
