/* Clear Results: the owner's selected A layout. Typography, spacing and card
   geometry only; identity palettes, candidate fills and status colours retain
   their existing definitions. Public sign-in and the manual are unchanged. */
.shell .card,.shell .stat,.project-stats>div{border-radius:3px;box-shadow:none}
.shell .card-head h2{font-weight:650;line-height:1.3}
.shell h1{font-weight:750;letter-spacing:-.035em}
.stats .stat .value,.project-stats strong{font-weight:750;letter-spacing:-.035em;font-variant-numeric:tabular-nums;line-height:1.12}
.stats .stat{padding:18px 20px}
.stats .stat .value{margin:10px 0 7px}
.project-stats>div{border-top-width:3px}
.project-stats strong{overflow-wrap:anywhere}
.project-grid{grid-template-columns:minmax(0,1.65fr) minmax(0,1fr)}
.project-grid>.card{min-width:0}
.projection .shell{max-width:1600px;margin-inline:auto}
.projection .project-title h1{font-size:clamp(28px,2vw,32px);line-height:1.15;font-weight:750;letter-spacing:-.04em}
.projection .project-stats strong{font-weight:750;letter-spacing:-.04em}
.projection .project-grid .card-head h2{font-size:18px}
.projection .project-footnote{font-size:11px;line-height:1.4}

@media(min-width:1000px){
 .projection .shell{padding:14px 28px 10px}
 .projection .top{padding-inline:28px}
 .projection .project-title{margin-bottom:12px}
 .projection .project-stats{gap:12px;margin-bottom:14px}
 .projection .project-stats>div{padding:12px 18px}
 .projection .project-stats strong{font-size:clamp(27px,2.125vw,34px);margin:7px 0 4px}
 .projection .project-stats>div:last-child strong{font-size:18px;line-height:1.2}
 .projection .project-stats span{font-size:11px}
 .projection .project-grid{height:clamp(350px,calc(100vh - 580px),420px);gap:20px}
 .projection .project-grid .card-head{padding:11px 18px}
 .projection .project-grid .card-head p{font-size:12px}
 .projection .compact-constituency-map .project-map>.card-head{padding-top:8px!important;padding-bottom:8px!important}
 .projection .project-standings .ranking{padding:4px 18px 8px}
 .projection .project-standings .candidate{padding:6px 0}
 .projection .project-standings .candidate-top{margin-bottom:5px}
 .projection .project-standings .candidate-name{font-size:clamp(12px,.875vw,14px)}
 .projection .project-standings .candidate-number{font-size:clamp(17px,1.1875vw,19px)}
 .projection .project-standings .candidate-number small{font-size:12px}
 .projection .project-standings .ranking .bar-track{height:18px!important}
 .projection .project-standings .ranking .bar-fill{min-height:0!important}
 .projection .project-title .row button{font-size:12px}
 .projection .project-title .pill{font-size:10px}
}
@media(min-width:1000px) and (min-height:950px){
 .projection .shell{padding-top:18px;padding-bottom:12px}
 .projection .top{padding-top:12px;padding-bottom:12px}
 .projection .project-stats{margin-bottom:16px}
 .projection .project-stats>div{padding:14px 18px}
 .projection .project-stats strong{margin:8px 0}
 .projection .project-stats span{font-size:12px}
 .projection .project-grid .card-head{padding-top:13px;padding-bottom:13px}
 .projection .project-standings .ranking{padding-top:6px;padding-bottom:12px}
 .projection .project-standings .candidate{padding:8px 0}
 .projection .results-ticker{padding:9px 28px}
 .projection .project-footnote{font-size:12px;margin-top:10px}
}
@media(min-width:1000px) and (max-height:949px){
 .projection .shell{padding-top:10px;padding-bottom:6px}
 .projection .project-stats{margin-bottom:10px}
 .projection .project-stats>div{padding-top:10px;padding-bottom:10px}
 .projection .project-footnote{font-size:10px}
}
@media(max-width:700px){
 .stats .stat{padding:13px}
 .project-grid{grid-template-columns:minmax(0,1fr)}
 .projection .project-title{flex-wrap:wrap;gap:12px}
 .projection .project-grid{height:auto}
 .projection .project-footnote{font-size:11px}
}

/* Each result is one horizontal row: the proportional fill sits behind its
   identity and two figures. Opaque, compact text plates keep every party colour
   readable without stretching small/zero shares or changing the palette. */
.ranking .candidate,.party-ranking .party-rank{
 display:grid;grid-template-columns:minmax(0,1fr);align-items:stretch;
 padding:5px 0;border:0;min-width:0;
 --result-label-bg:#fff;--result-label-text:#102f49;--result-label-muted:#4b6175;
}
.ranking .candidate .candidate-top,.party-ranking .party-rank .candidate-top{
 grid-area:1/1;z-index:1;position:relative;display:flex;flex-wrap:nowrap;
 align-items:center;justify-content:space-between;gap:8px;margin:0;
 min-height:48px;padding:5px 7px;min-width:0;
}
.ranking .candidate>.bar-track,.party-ranking .party-rank>.bar-track{
 grid-area:1/1;align-self:stretch;height:auto!important;min-height:48px;
 margin:0;border:1px solid #b2c4d2;border-radius:6px;position:relative;
}
.ranking .candidate>.bar-track>.bar-fill,.party-ranking .party-rank>.bar-track>.bar-fill{
 position:absolute;inset:0 auto 0 0;min-height:0!important;
}
.ranking .candidate-name,.party-ranking .candidate-name{
 display:flex;align-items:center;gap:6px;min-width:0;max-width:none;
 padding:3px 6px 3px 3px;background:var(--result-label-bg);
 color:var(--result-label-text);border-radius:4px;font-size:14px;line-height:1.2;
}
.ranking .candidate-label,.party-ranking .candidate-label{
 min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.ranking .candidate-name small{overflow:hidden;text-overflow:ellipsis;color:var(--result-label-muted);margin-top:2px}
.ranking .candidate-name .rank-number,.party-ranking .candidate-name .rank-number{
 flex:none;margin:0;width:24px;height:24px;font-size:12px;
}
.ranking .candidate-name .dot{flex:none;margin:0}
.ranking .candidate-name :is(.candidate-portrait,.party-badge,.party-symbol),
.party-ranking .candidate-name :is(.party-badge,.party-symbol){flex:none;margin:0;max-width:26px;max-height:28px}
.ranking .candidate-number,.party-ranking .candidate-number{
 flex:none;max-width:none;padding:4px 6px;line-height:1.2;white-space:nowrap;
 background:var(--result-label-bg);color:var(--result-label-text);border-radius:4px;
 font-size:20px;font-weight:750;font-variant-numeric:tabular-nums;
}
.ranking .candidate-number small,.party-ranking .candidate-number small{
 margin-left:6px;font-size:13px;font-weight:650;color:var(--result-label-muted);
}
:root[data-theme=night] .ranking .candidate,:root[data-theme=night] .party-ranking .party-rank{
 --result-label-bg:#172636;--result-label-text:#eef6fc;--result-label-muted:#c0d2e1;
}
:root[data-theme=night] .ranking .candidate>.bar-track,
:root[data-theme=night] .party-ranking .party-rank>.bar-track{border-color:#688294}

.projection .project-standings .candidate{padding:4px 0}
.projection .project-standings .candidate .candidate-top{min-height:40px;padding:4px 6px;gap:6px}
.projection .project-standings .ranking .bar-track{height:auto!important;min-height:40px}
.projection .project-standings .candidate-name{font-size:14px;max-width:none;line-height:1.2}
.projection .project-standings .candidate-number{font-size:19px;max-width:none}
.projection .project-standings .candidate-number small{font-size:12px}
.projection .project-standings .candidate-top .rank-number{width:22px;height:22px}
@media(max-width:700px){
 .ranking .candidate .candidate-top,.party-ranking .party-rank .candidate-top{gap:5px;padding-inline:5px}
 .ranking .candidate-name,.party-ranking .candidate-name{font-size:12px;gap:4px;padding-right:4px}
 .ranking .candidate-number,.party-ranking .candidate-number{font-size:16px;padding-inline:4px}
 .ranking .candidate-number small,.party-ranking .candidate-number small{font-size:11px;margin-left:4px}
 .ranking .candidate-name .rank-number,.party-ranking .candidate-name .rank-number{width:21px;height:23px}
 .projection .project-standings .candidate-name{font-size:12px}
 .projection .project-standings .candidate-number{font-size:16px}
 .projection .project-standings .candidate-number small{font-size:11px}
}
