.toi-election-alt{position:relative;box-sizing:border-box;width:100%;max-width:1200px;margin:0 auto;padding:30px 15px 20px;text-align:center;background:#E6EEF1;color:#111;font-family:'Roboto',Arial,sans-serif;-webkit-font-smoothing:antialiased;container:toiel/inline-size}
.toi-election-alt .cols{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:30px;align-items:start;margin-top:25px}
@container toiel (max-width:1099px){
  .toi-election-alt .cols{grid-auto-flow:row;grid-template-columns:1fr 1fr}
  .toi-election-alt .poll{grid-column:1/-1}
  .toi-election-alt .cols.is-night{grid-template-columns:1fr}
}
@container toiel (min-width:1100px){
  .toi-election-alt .cols.is-night{grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);column-gap:24px;align-items:center;max-width:1080px;margin-left:auto;margin-right:auto;transition:grid-template-columns .7s cubic-bezier(.25,.8,.25,1),column-gap .7s cubic-bezier(.25,.8,.25,1)}
  .toi-election-alt .cols.is-night.is-combined{grid-template-columns:minmax(0,1fr) minmax(0,0fr);column-gap:0}
  .toi-election-alt .cols.is-night .poll{max-width:none}
}
@media(max-width:991px){.toi-election-alt .cols{grid-template-columns:1fr}}
@media(max-width:767px){.toi-election-alt{width:auto;margin:0 16px}}
.toi-election-alt .sec{margin:0 auto;max-width:640px;width:100%;container-type:inline-size;transition:opacity .35s ease}
.toi-election-alt .sec.is-leaving{opacity:0;pointer-events:none}
.toi-election-alt .sec h2,
.toi-election-alt .sec h3{font:700 18px/22px 'Roboto',sans-serif;color:#1e1e1e;margin:0}
.toi-election-alt .sec-head{border-top:1px solid rgba(85,55,169,.20);padding-top:15px;display:flex;flex-direction:column;align-items:stretch;gap:15px;text-align:center}
.toi-election-alt .stage{position:relative;margin:-7px auto 0;max-width:640px}
.toi-election-alt svg{display:block;width:100%;height:auto}
.toi-election-alt .slice{stroke:none;transition:fill .4s ease}
.toi-election-alt .grid{fill:none;stroke:rgba(255,255,255,.20)}
.toi-election-alt .sep{stroke:rgba(255,255,255,.6)}
.toi-election-alt .sepbloc{stroke:#fff}
.toi-election-alt .layer{position:absolute;inset:0;pointer-events:none;overflow:visible}
.toi-election-alt .slab{position:absolute;font:400 13px/13px 'Roboto Condensed',sans-serif;color:#fff;white-space:nowrap}
.toi-election-alt .center{position:absolute;transform:translate(-50%,-100%)}
.toi-election-alt .center--middle{transform:translate(-50%,-50%)}
.toi-election-alt .c-pair{margin-top:22px}
.toi-election-alt .c-pair:first-child{margin-top:0}
.toi-election-alt .c-num{font:700 30px/30px 'Roboto Condensed',sans-serif}
.toi-election-alt .c-word{font:400 14px/14px 'Roboto Condensed',sans-serif;margin-top:3px;white-space:nowrap}
.toi-election-alt .c-note{font:700 13px/16px 'Roboto Condensed',sans-serif;margin-top:14px;max-width:8em;min-height:32px;text-wrap:balance}
.toi-election-alt .c-break{display:none}
.toi-election-alt .night-head{display:flex;flex-direction:column;align-items:center;gap:15px;margin-top:8px;padding-top:23px;border-top:1px solid rgba(85,55,169,.20)}
.toi-election-alt .night-head + .cols{margin-top:20px}
.toi-election-alt .cols.is-night .poll-body{margin-top:0}
/* Halves the column's 20px gap between the subtitle and its bars */
.toi-election-alt .cols.is-night .poll-note{margin-bottom:-10px}
.toi-election-alt .cols.is-night .stage{max-width:400px;margin:0 auto}
.toi-election-alt .cols.is-night .bname{font-size:14px;line-height:18px}
.toi-election-alt .cols.is-night .brow,
.toi-election-alt .cols.is-night .bline{height:18px}
.toi-election-alt .cols.is-night .bval{font-size:15px;line-height:18px}
.toi-election-alt .cols.is-night .bars.is-combined .brow{height:24px}
.toi-election-alt .cols.is-night .bars.is-combined .bname{font-size:13px;line-height:24px}
/* Side by side, the ring's top edge sits level with the first bar: the ring starts about 6.5% of its width below the top of its box */
@container toiel (min-width:1100px){
  .toi-election-alt .cols.is-night .stage{margin-top:calc(min(400px,100cqw) * -.065)}
}
/* Embedded, the article around it supplies the dividers, and the first element sits as far from the top as the last does from the bottom */
.toi-election-alt.toi-election-alt--embed{padding-top:20px;margin-bottom:30px}
.toi-election-alt.toi-election-alt--embed .night-head{margin-top:0;padding-top:0;border-top:0}
/* Chart titles stay 18px on screen while the script scales the rest down */
.toi-election-alt.toi-election-alt--embed :is(.poll-title,.sec h2,.sec h3){font-size:calc(18px / var(--fit-scale,1));line-height:calc(22px / var(--fit-scale,1))}
/* The script scales the content down inside the box until it fits, while the module is wider than 480px; narrower stacks and grows as tall as it needs */
.toi-election-alt--embed.is-fitted{aspect-ratio:16/10;overflow:hidden}
/* Embedded, the charts stay side by side while the module is wider than 480px; the container query measures inside the 15px side padding, so 451px here is 481px of module */
@container toiel (min-width:451px){
  .toi-election-alt--embed .cols.is-night{grid-auto-flow:column;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);column-gap:24px;align-items:center}
  .toi-election-alt--embed .cols.is-night .poll{grid-column:auto}
  .toi-election-alt--embed .cols.is-night.is-combined{grid-template-columns:minmax(0,1fr) minmax(0,0fr);column-gap:0}
  .toi-election-alt--embed .cols.is-night .poll{max-width:none}
  .toi-election-alt--embed .cols.is-night .stage{margin-top:calc(min(400px,100%) * -.065)}
}
/* The bloc ring is narrower than its column, so the column-width label size would not fit the ring */
.toi-election-alt .cols.is-night .slab{font-size:14px;line-height:14px}
.toi-election-alt .bloc-totals{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 14px;margin:0;padding:0;list-style:none;font:400 12px/14px 'Roboto',sans-serif;color:#1e1e1e;white-space:nowrap}
.toi-election-alt .bloc-totals li{display:flex;flex-direction:column;align-items:center}
.toi-election-alt .bloc-totals.is-split::before{content:'';flex-basis:100%;order:1}
.toi-election-alt .bloc-totals.is-split li{order:2}
.toi-election-alt .bloc-totals.is-split .bloc-camp{order:0}
.toi-election-alt .bloc-total{font:700 28px/30px 'Roboto Condensed',sans-serif}
/* Five blocs still fit one line on a 375px phone */
@container (max-width:479px){
  .toi-election-alt .bloc-totals{gap:6px 8px;font-size:11px;line-height:13px}
  .toi-election-alt .bloc-total{font-size:24px;line-height:26px}
}
.toi-election-alt .poll{max-width:640px;margin:0 auto}
.toi-election-alt .poll-title{font:700 18px/22px 'Roboto',sans-serif;color:#1e1e1e;margin:0;text-align:center}
.toi-election-alt .poll-sub{font:400 16px/18px 'Roboto',sans-serif;color:#525252;margin:0;text-align:center}
.toi-election-alt .poll-body{display:flex;flex-direction:column;align-items:center;gap:20px;margin-top:15px}
.toi-election-alt .bars{display:flex;align-items:center;gap:16px;width:100%;--reserve:27px}
.toi-election-alt .bnames{flex:0 0 auto;max-width:50%;display:flex;flex-direction:column;gap:6px}
.toi-election-alt .bname{font:400 13px/16px 'Roboto',sans-serif;color:#1e1e1e;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:transform .7s cubic-bezier(.25,.8,.25,1),line-height .7s cubic-bezier(.25,.8,.25,1)}
.toi-election-alt .btracks{position:relative;flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.toi-election-alt .brow{display:flex;flex-direction:column;justify-content:center;height:16px;transition:transform .7s cubic-bezier(.25,.8,.25,1),height .7s cubic-bezier(.25,.8,.25,1)}
.toi-election-alt .brow[hidden],
.toi-election-alt .bline[hidden]{display:none}
.toi-election-alt .bline{position:relative;display:flex;align-items:center;gap:10px;height:16px}
.toi-election-alt .bars.is-resetting .bname{transition:line-height .7s cubic-bezier(.25,.8,.25,1)}
.toi-election-alt .bars.is-resetting .brow{transition:height .7s cubic-bezier(.25,.8,.25,1)}
.toi-election-alt .bname.is-entering,
.toi-election-alt .brow.is-entering{animation:toiel-bar-in .7s ease both}
@keyframes toiel-bar-in{from{opacity:0}to{opacity:1}}
.toi-election-alt .bfill{height:100%;background:#c42627;flex:0 0 auto;transition:width .7s cubic-bezier(.25,.8,.25,1),height .7s cubic-bezier(.25,.8,.25,1),background-color .7s ease}
.toi-election-alt .bars.is-combined{gap:8px}
/* Combined: the bar stays as an invisible spacer that puts the numbers after the longest channel */
.toi-election-alt .bars.is-combined .bfill{background-color:transparent}
.toi-election-alt .bseries{position:absolute;top:50%;left:0;height:4px;margin-top:-8px;opacity:0;transition:width .7s cubic-bezier(.25,.8,.25,1),transform .7s cubic-bezier(.25,.8,.25,1),opacity .5s ease}
.toi-election-alt .bars.is-combined .bseries{opacity:1}
.toi-election-alt .bval{font:700 14px/16px 'Roboto Condensed',sans-serif;color:#c42627;text-align:right;white-space:nowrap}
.toi-election-alt .bars.is-combined .bline{gap:6px}
.toi-election-alt .bars.is-combined .bval{display:flex;gap:3px;font:700 12px/12px 'Roboto Condensed',sans-serif;letter-spacing:-.5px}
.toi-election-alt .bars.is-combined .bname{line-height:28px}
.toi-election-alt .bars.is-combined .brow{height:28px}
.toi-election-alt .poll-note{margin:0;font:700 14px/18px 'Roboto',sans-serif;color:#1e1e1e}
.toi-election-alt .legend{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 18px;max-height:40px;margin:0;padding:0;list-style:none;font:400 14px/16px 'Roboto Condensed',sans-serif;overflow:hidden;transition:max-height .7s cubic-bezier(.25,.8,.25,1),margin-top .7s cubic-bezier(.25,.8,.25,1),opacity .5s ease}
.toi-election-alt .legend.is-hidden{max-height:0;margin-top:-20px;opacity:0}
.toi-election-alt .swatch{display:inline-block;width:12px;height:12px;margin-right:6px;border-radius:50%;vertical-align:-1px}
.toi-election-alt .turnout{margin:20px 0 0;padding-top:15px;border-top:1px solid rgba(85,55,169,.20)}
.toi-election-alt .turnout-main{margin:0;font:400 14px/17px 'Roboto',sans-serif;color:#1e1e1e}
/* Top-aligned so the larger type does not grow the 17px line */
.toi-election-alt .turnout-percent{font-size:16px;font-weight:700;color:#c42627;vertical-align:top}
.toi-election-alt .thr{margin:0;font:400 12px/18px 'Roboto',sans-serif;color:#000;text-align:center;max-width:524px}
.toi-election-alt .thr b{font-weight:700}
.toi-election-alt .picks + .thr{margin:20px auto 0}
.toi-election-alt .picks:empty{display:none}
.toi-election-alt .picks{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin:14px 0 0}
.toi-election-alt .pick{font:400 13px/18px 'Roboto Condensed',sans-serif;color:#111;background:#fff;border:1px solid #111;border-radius:999px;padding:6px 12px;cursor:pointer;transition:background .15s,color .15s}
.toi-election-alt .picks-poll{gap:6px;margin:0}
.toi-election-alt .picks-poll .pick{font:400 12px/12px 'Roboto Condensed',sans-serif;padding:5px;border-radius:99px;border-color:#1e1e1e;color:#1e1e1e}
.toi-election-alt .picks-poll .pick.on{background:#1e1e1e;border-color:#1e1e1e;color:#fff}
.toi-election-alt .pick.on{background:#111;color:#fff}
.toi-election-alt .pick:disabled{border-color:#a3aab2;color:#a3aab2;background:transparent;cursor:not-allowed}
.toi-election-alt .pick:focus-visible{outline:2px solid #111;outline-offset:2px}
@container (min-width:560px){
  .toi-election-alt .c-num{font-size:42px;line-height:42px}
  .toi-election-alt .c-word{font-size:16px;line-height:16px}
  .toi-election-alt .c-pair{margin-top:26px}
  .toi-election-alt .slab{font-size:18px;line-height:18px}
  .toi-election-alt .bname{font-size:14px}

}
@container (max-width:359px){
  .toi-election-alt .c-num{font-size:22px;line-height:22px}
  .toi-election-alt .c-word{font-size:12px;line-height:12px;margin-top:2px}
  .toi-election-alt .c-pair{margin-top:12px}
  .toi-election-alt .c-note{font-size:12px;line-height:14px;margin-top:10px;min-height:28px}
  .toi-election-alt .c-break{display:inline}
}
.toi-election-alt-tip{position:fixed;z-index:60;max-width:260px;background:#111;color:#fff;border-radius:6px;padding:10px 12px;pointer-events:none;opacity:0;transition:opacity .12s}
.toi-election-alt-tip.on{opacity:1}
.toi-election-alt-tip .t-name{font:700 15px/20px 'Roboto Condensed',sans-serif}
.toi-election-alt-tip .t-meta{font:400 13px/18px 'Roboto Condensed',sans-serif;color:#c9d0d8;margin-top:2px}
.toi-election-alt-tip .t-blurb{font:400 13px/18px 'Roboto Condensed',sans-serif;color:#e6eaee;margin-top:6px}
.toi-election-alt-tip .t-stance{font:400 13px/18px 'Roboto Condensed',sans-serif;margin-top:6px}
.toi-election-alt-tip .t-stance b{font-weight:700}
.toi-election-alt .slice,
.toi-election-alt .brow{cursor:default}
@media(prefers-reduced-motion:reduce){
  .toi-election-alt .slice,
  .toi-election-alt .cols.is-night,
  .toi-election-alt .sec,
  .toi-election-alt .bfill,
  .toi-election-alt .bseries,
  .toi-election-alt .legend,
  .toi-election-alt .bname,
  .toi-election-alt .brow{transition:none}
  .toi-election-alt .bname.is-entering,
  .toi-election-alt .brow.is-entering{animation:none}
}
