/* UK Town Hall & politics (app/modules/town-hall/uk.php): seat charts, who to ask, ward map and cards, votes over time,
   MP cards, council money charts. Core tokens only; folds, notes and ticks reuse uk.css's usf- rules; party tones come inline from UKTH_TONES (neutral, never the parties' own). */
.ukth-chips{margin-top:14px;display:flex;flex-wrap:wrap;gap:8px}
.ukth-h4s{font-size:14px;margin:0 0 10px;color:var(--ink)}
/* who's in charge */
.ukth-ctrls{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;align-items:stretch}
.ukth-ctrls.one{grid-template-columns:minmax(0,560px)}
.ukth-ctrl{border:1px solid var(--line);border-radius:var(--r-lg);padding:18px;background:var(--surface,#fff)}
.ukth-ctrl-h{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px}
.ukth-ctrl-h small{flex-basis:100%;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}
.ukth-ctrl-h b{font-size:19px;letter-spacing:-.01em}
.ukth-noc{font-size:12px;font-weight:700;border-radius:999px;padding:2px 10px;background:var(--hair);color:var(--ink-2)}
.ukth-hemi{display:block;width:100%;max-width:380px;margin:10px auto 4px}
.ukth-half{stroke:var(--ink);stroke-width:1.2;stroke-dasharray:3 3;opacity:.45}
.ukth-hn{font:800 30px var(--sans);fill:var(--ink)}
.ukth-hs{font:600 12px var(--sans);fill:var(--muted)}
.ukth-comp{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:6px}
.ukth-comp li{display:grid;grid-template-columns:12px 1fr 34px 90px;align-items:center;gap:10px;font-size:14px}
.ukth-comp li i{width:12px;height:12px;border-radius:50%}
.ukth-comp li b{text-align:right}
.ukth-ch{font-size:12px;color:var(--muted)}
.ukth-ch.on{color:var(--ink-2);font-weight:600}
.ukth-cmpnote{font-size:12px;color:var(--muted);margin:8px 0 0}
/* who to ask */
.ukth-ask{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.ukth-job{border-radius:var(--r);padding:10px 12px;background:var(--surface,#fff);border:1px solid var(--line);border-left:4px solid var(--accent);display:flex;flex-direction:column;gap:2px}
.ukth-job span{font-size:14px;font-weight:600;color:var(--ink)}
.ukth-job b{font-size:12px;font-weight:500;color:var(--muted)}
.ukth-job.y{border-left-color:#b08d57}.ukth-job.p{border-left-color:#4f8a78}.ukth-job.o{border-left-color:#9aa3b2}
/* party strips */
.ukth-pstrip{display:flex;gap:2px;height:14px;border-radius:7px;overflow:hidden;min-width:120px;flex:1}
.ukth-pstrip i{display:block;height:100%}
.ukth-psum{display:block;margin-top:6px;font-size:12.5px;color:var(--muted);flex-basis:100%}
/* councillors: map + ward cards */
.ukth-mapwrap{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:20px;align-items:start}
.ukth-mapwrap.nomap{grid-template-columns:1fr}
.ukth-mapwrap.nomap .ukth-wards{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
.ukth-map{margin:0;position:sticky;top:76px;border:1px solid var(--line);border-radius:var(--r-lg);padding:10px;background:var(--surface,#fff)}
.ukth-map svg{display:block;width:100%;height:auto;max-height:620px}
.ukth-map figcaption{font-size:12.5px;color:var(--muted);margin-top:8px;line-height:1.4}
.ukth-wl{font-weight:700;font-family:var(--sans);fill:var(--ink);paint-order:stroke;stroke:#fff;stroke-linejoin:round;cursor:pointer}
.ukth-map a:hover .ukth-wl{fill:var(--accent-ink)}
.ukth-wards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px}
.ukth-ward{border:1px solid var(--line);border-radius:var(--r);padding:12px;background:var(--surface,#fff);scroll-margin-top:80px}
.ukth-ward:target{outline:2px solid var(--accent)}
.ukth-wh{display:flex;justify-content:space-between;gap:8px;align-items:center}
.ukth-wh b{font-size:15px}
.ukth-pips{display:flex;gap:3px;flex:none}
.ukth-pips i{width:12px;height:12px;border-radius:50%}
.ukth-ward>small{color:var(--muted);font-size:12px}
.ukth-ward ul{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:6px}
.ukth-ward li small{display:block;font-size:11.5px;color:var(--muted);margin:2px 0 0 4px}
.ukth-ward li.muted{font-size:13px}
.ukth-ward .hall-chip{font-size:13px}
/* votes over time */
.ukth-gap{fill:var(--hair);opacity:.7}
.ukth-el{font:700 12px var(--sans)}
.ukth-swr{display:grid;grid-template-columns:40px 1fr;gap:4px 10px;align-items:center;margin-bottom:12px}
.ukth-swr>span{font-weight:700;font-size:13px}
.ukth-swr small{grid-column:2;font-size:12px;color:var(--muted)}
/* MPs */
.ukth-mps{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin-bottom:18px}
.ukth-mpc{border:1px solid var(--line);border-radius:var(--r-lg);padding:16px;background:var(--surface,#fff)}
.ukth-mpc>small{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}
.ukth-mph{margin:8px 0 2px}.ukth-mph .hall-chip{font-size:17px;font-weight:700}
.ukth-mpc p{margin:4px 0;font-size:14px;color:var(--ink-2)}
.ukth-mpc .ukth-sm{font-size:13.5px}
.ukth-share{height:8px;border-radius:4px;background:var(--hair);margin:12px 0 4px;overflow:hidden}
.ukth-share span{display:block;height:100%;background:var(--accent)}
.ukth-parl.carded .th-show{grid-template-columns:1fr}
.ukth-parl.carded .th-show>.th-turn{display:none}
/* money */
.ukth-mgrid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:24px;margin-top:22px;align-items:start}
.ukth-mgrid.one{grid-template-columns:minmax(0,560px)}
.ukth-cmp .brow{grid-template-columns:110px minmax(0,1fr) 64px}
.ukth-cmp .brow .l small{font-size:11px}
.ukth-sps{display:grid;gap:6px}
.ukth-sp{display:grid;grid-template-columns:230px minmax(0,1fr) 64px 72px;gap:10px;align-items:center;font-size:13.5px}
.ukth-sp .l{color:var(--ink-2)}
.ukth-sp .trk{position:relative;height:10px}
.ukth-sp .fill{position:absolute;left:0;top:0;bottom:0;border-radius:0 4px 4px 0;background:var(--accent);opacity:.8}
.ukth-sp .v{text-align:right;font-weight:600}
.ukth-sp .d{text-align:right;font-size:12.5px;color:var(--muted)}
.ukth-sp.hd{font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600}
.ukth-sp.hd .v,.ukth-sp.hd .d{font-weight:600;color:var(--muted)}
.ukth-inv b{font-size:15px}
@media (max-width:900px){.ukth-mapwrap,.ukth-mgrid,.hpl-two.ukth-vg{grid-template-columns:1fr}.ukth-map{position:static}.ukth-ask{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.ukth-wards,.ukth-ask{grid-template-columns:1fr}.ukth-sp{grid-template-columns:110px minmax(0,1fr) 52px 58px;font-size:12.5px}.ukth-comp li{grid-template-columns:12px 1fr 30px 70px}.ukth-ctrls{grid-template-columns:1fr}.ukth-cmp .brow{grid-template-columns:96px minmax(0,1fr) 60px}}
/* Northern Ireland (town-hall/uk_ni.php): the 11 councils, DEA cards, candidates by party, the rates split and chart */
.ukthn-allc{display:grid;gap:6px;margin:8px 0 6px}
.ukthn-allc .brow{grid-template-columns:180px minmax(0,1fr) 130px}
.ukthn-allc .trk{display:flex;align-items:center}.ukthn-allc .ukth-pstrip{flex:1;min-width:0}
.ukthn-also{margin:8px 0 0;font-size:13px;color:var(--muted);line-height:1.45}.ukthn-also b{color:var(--ink-2);font-weight:600}
.ukthn-one{grid-template-columns:1fr}
.ukthn-wide .ukth-map{position:static;max-width:680px;margin-bottom:16px}
.ukthn-deas{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
.ukthn-cands{display:grid;gap:7px}
.ukthn-cand{display:grid;grid-template-columns:150px minmax(0,1fr) 64px;gap:10px;align-items:center;font-size:13.5px}
.ukthn-cand .l{color:var(--ink-2)}.ukthn-cand .v{text-align:right;font-weight:600}
.ukthn-cand .trk{position:relative;height:14px}
.ukthn-cand .trk i{position:absolute;left:0;top:0;bottom:0;border-radius:0 4px 4px 0}
.ukthn-cand .trk i.st{background:var(--hair)}
.ukthn-split{display:flex;gap:3px;border-radius:var(--r);overflow:hidden;font-size:13px}
.ukthn-split span{padding:12px 14px;color:#fff;line-height:1.35}.ukthn-split b{display:block;font-size:22px;font-weight:800}
.ukthn-split .d{background:var(--accent)}.ukthn-split .r{background:#5f6b7a}
.ukthn-ax{font:500 11px var(--sans);fill:var(--muted)}
@media (max-width:640px){.ukthn-cand{grid-template-columns:110px minmax(0,1fr) 56px}.ukthn-allc .brow{grid-template-columns:110px minmax(0,1fr) 100px}.ukthn-split b{font-size:18px}}
.ukthn-fpr{grid-template-columns:180px minmax(0,1fr) 60px}
@media (max-width:640px){.ukthn-fpr{grid-template-columns:120px minmax(0,1fr) 52px}}
.ukthn-sh .ukth-sp{grid-template-columns:120px minmax(0,1fr) 54px 56px}
/* Scotland (town-hall/uk_sco.php): a region's list MSPs, one line per party; the 32 councils' Band D bars */
.ukths-list{list-style:none;margin:8px 0 6px;padding:0;display:grid;gap:6px}
.ukths-list li{display:flex;flex-wrap:wrap;gap:6px}
.ukths-32 .brow{grid-template-columns:150px minmax(0,1fr) 64px;min-height:22px}
@media (max-width:640px){.ukths-32 .brow{grid-template-columns:110px minmax(0,1fr) 56px}}
