/* Constituency dashboard. Its own visual language ("atlas"): warm paper, deep ink, editorial serif headlines, hexagon cartogram, rank strips, waffle grids.
   Colour roles are validated with the dataviz palette checker (6 categorical slots, one sequential ramp, one diverging pair) in both modes. */
.dash{
  --paper:#f6f1e7;--card:#fffdf8;--ink:#1b1f3b;--ink2:#4b4f6b;--muted:#7d7a72;--rule:#ddd5c4;--hair:#e9e3d4;
  --accent:#e4572e;
  --c1:#2f4bd1;--c2:#e4572e;--c3:#12a594;--c4:#e0a100;--c5:#2c8c3a;--c6:#7b4bd6;--rest:#b9b2a1;
  --s0:#9aa8f0;--s1:#7685e6;--s2:#5566d8;--s3:#3f4ec0;--s4:#2d3a98;--s5:#1c2570;--s6:#111752;
  --dn3:#3b50cf;--dn2:#7e90ea;--dn1:#b9c4f4;--d0:#e9e4d6;--dp1:#f6c2b0;--dp2:#ee8c6b;--dp3:#d9482a;
  --f0:#111752;--f1:#111752;--f2:#111752;--f3:#fff;--f4:#fff;--f5:#fff;--f6:#fff;
  --tile-off:#e4dccb;--mast-a:#161a3a;--mast-b:#2b2f6b;--mast-ink:#f6f1e7;
  font-family:system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .dash{
  --paper:#12141c;--card:#1a1d29;--ink:#ece8dc;--ink2:#c2bfb2;--muted:#9a978c;--rule:#2f3347;--hair:#262a3b;
  --accent:#f0714a;
  --c1:#6f86ff;--c2:#dc5a35;--c3:#17a090;--c4:#bf8300;--c5:#3aa64c;--c6:#9d78ee;--rest:#4a4d5c;
  --s0:#3a479f;--s1:#4a59bd;--s2:#5f6fd6;--s3:#7886e6;--s4:#939ff0;--s5:#b0baf7;--s6:#cdd4fb;
  --dn3:#93a3ff;--dn2:#6679e0;--dn1:#3e4c9c;--d0:#2b2f40;--dp1:#8a4630;--dp2:#c4573a;--dp3:#f08a66;
  --f0:#fff;--f1:#fff;--f2:#fff;--f3:#111752;--f4:#111752;--f5:#111752;--f6:#111752;
  --tile-off:#262a3b;--mast-a:#0b0d16;--mast-b:#1d2150;--mast-ink:#ece8dc}}
:root[data-theme="dark"] .dash{
  --paper:#12141c;--card:#1a1d29;--ink:#ece8dc;--ink2:#c2bfb2;--muted:#9a978c;--rule:#2f3347;--hair:#262a3b;
  --accent:#f0714a;
  --c1:#6f86ff;--c2:#dc5a35;--c3:#17a090;--c4:#bf8300;--c5:#3aa64c;--c6:#9d78ee;--rest:#4a4d5c;
  --s0:#3a479f;--s1:#4a59bd;--s2:#5f6fd6;--s3:#7886e6;--s4:#939ff0;--s5:#b0baf7;--s6:#cdd4fb;
  --dn3:#93a3ff;--dn2:#6679e0;--dn1:#3e4c9c;--d0:#2b2f40;--dp1:#8a4630;--dp2:#c4573a;--dp3:#f08a66;
  --f0:#fff;--f1:#fff;--f2:#fff;--f3:#111752;--f4:#111752;--f5:#111752;--f6:#111752;
  --tile-off:#262a3b;--mast-a:#0b0d16;--mast-b:#1d2150;--mast-ink:#ece8dc}
main.wide{max-width:1180px}
.dash *{box-sizing:border-box}
.dash{background:var(--paper);border-radius:18px;padding:0 0 28px;margin:6px -8px 0}
.dash svg text{fill:var(--ink2);font-size:11px}
.dash svg path,.dash svg line,.dash svg circle,.dash svg rect{vector-effect:non-scaling-stroke}
.dash .serif{font-family:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif}
.dash .mono{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-variant-numeric:tabular-nums}
/* masthead */
.d-mast{border-radius:18px 18px 0 0;overflow:hidden;position:relative;background:linear-gradient(135deg,var(--mast-a),var(--mast-b));color:var(--mast-ink);padding:34px 32px 26px;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(220px,1fr);gap:24px;align-items:end}
.d-mast::before{content:"";position:absolute;inset:0;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='46' height='80' viewBox='0 0 46 80'><path d='M23 2 44 14v24L23 50 2 38V14zM0 40l23 13v24L0 66zM46 40v26L23 77V53z' fill='none' stroke='white' stroke-opacity='.07'/></svg>");opacity:.9;pointer-events:none}
.d-mast>*{position:relative}
.d-kick{font:600 .72rem/1 ui-monospace,Menlo,monospace;letter-spacing:.14em;text-transform:uppercase;color:#f3b9a4;margin-bottom:10px}
.d-mast h2{margin:0;font-family:"Iowan Old Style","Palatino Linotype",Georgia,serif;font-weight:700;font-size:clamp(2rem,5.4vw,3.6rem);line-height:1.02;letter-spacing:-.02em;color:var(--mast-ink)}
.d-mast p{margin:10px 0 0;color:color-mix(in srgb,var(--mast-ink) 78%,transparent);font-size:.95rem;max-width:46ch}
.d-loc{justify-self:end;width:100%;max-width:230px}
.d-vitals{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:8px}
.d-vital{background:color-mix(in srgb,var(--mast-ink) 8%,transparent);border:1px solid color-mix(in srgb,var(--mast-ink) 16%,transparent);border-radius:12px;padding:10px 12px;cursor:pointer;text-align:left;color:var(--mast-ink)}
.d-vital:hover,.d-vital:focus-visible{background:color-mix(in srgb,var(--mast-ink) 16%,transparent);outline:none}
.d-vital small{display:block;font:600 .66rem/1.2 ui-monospace,Menlo,monospace;letter-spacing:.09em;text-transform:uppercase;opacity:.75}
.d-vital b{display:block;font-family:"Iowan Old Style",Georgia,serif;font-size:1.55rem;line-height:1.15;margin:3px 0 4px}
.d-vital .rk{height:6px;border-radius:3px;background:color-mix(in srgb,var(--mast-ink) 18%,transparent);position:relative}
.d-vital .rk i{position:absolute;top:-3px;width:12px;height:12px;border-radius:50%;background:#f3b9a4;border:2px solid var(--mast-a);transform:translateX(-50%)}
.d-vital em{font-style:normal;font-size:.74rem;opacity:.8}
/* nav */
.d-nav{position:sticky;top:var(--hdr,0px);z-index:4;display:flex;gap:4px;flex-wrap:wrap;padding:8px 20px;background:color-mix(in srgb,var(--paper) 92%,transparent);backdrop-filter:blur(6px);border-bottom:1px solid var(--rule)}
.d-nav a{font:600 .72rem/1 ui-monospace,Menlo,monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--ink2);padding:8px 10px;border-radius:999px;text-decoration:none;cursor:pointer}
.d-nav a:hover{background:var(--hair);color:var(--ink)}
/* sections */
.d-sec{padding:34px 28px 6px;scroll-margin-top:calc(var(--hdr,0px) + 56px)}
.d-sec>header{display:grid;grid-template-columns:auto 1fr auto;gap:4px 14px;align-items:center;border-top:3px solid var(--ink);padding:12px 0 10px;margin-bottom:8px;cursor:pointer;background:var(--paper);user-select:none}
.d-sec>header:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.d-chev{width:32px;height:32px;border:1.5px solid var(--ink);border-radius:50%;position:relative;grid-column:3;grid-row:1}
.d-chev::after{content:"";position:absolute;left:10px;top:9px;width:8px;height:8px;border-right:2px solid var(--ink);border-bottom:2px solid var(--ink);transform:rotate(45deg);transition:transform .2s}
.d-sec.collapsed .d-chev::after{transform:rotate(-45deg);top:11px;left:8px}
.d-sec.collapsed>:not(header){display:none}
.d-sec.collapsed>header{margin-bottom:0}
.d-num{font:700 .8rem/1 ui-monospace,Menlo,monospace;color:var(--accent);letter-spacing:.1em}
.d-sec h3{margin:0;font-family:"Iowan Old Style","Palatino Linotype",Georgia,serif;font-size:clamp(1.55rem,3.6vw,2.4rem);line-height:1.12;color:var(--ink);letter-spacing:-.015em}
.d-sub{margin:0 0 16px;color:var(--ink2);font-size:.95rem;max-width:70ch}
.d-card{background:var(--card);border:1px solid var(--rule);border-radius:14px;padding:16px 18px}
.d-note{font-size:.84rem;color:var(--ink2);border-left:3px solid var(--accent);padding:6px 12px;margin:14px 0 0;background:color-mix(in srgb,var(--accent) 7%,transparent);border-radius:0 8px 8px 0}
.d-note a{color:var(--ink)}
.d-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:0 0 12px}
.dash button.chip2{font:inherit;font-size:.86rem;color:var(--ink);background:var(--card);border:1px solid var(--rule);border-radius:999px;padding:6px 14px;cursor:pointer}
.dash button.chip2[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.dash button.chip2:hover{border-color:var(--ink)}
.dash select{flex:1 1 320px;min-width:0;font-size:.95rem}
.d-lab{font:600 .68rem/1 ui-monospace,Menlo,monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
/* money ledger */
.d-ledger{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px}
.d-col{background:var(--card);border:1px solid var(--rule);border-top:6px solid var(--k,var(--c1));border-radius:6px 6px 14px 14px;padding:14px 16px 14px;display:flex;flex-direction:column;gap:6px}
.d-tag{align-self:flex-start;font:700 .64rem/1 ui-monospace,Menlo,monospace;letter-spacing:.1em;text-transform:uppercase;padding:4px 8px;border-radius:4px;background:var(--k,var(--c1));color:#fff}
.d-col .big{font-family:"Iowan Old Style",Georgia,serif;font-size:2.5rem;line-height:1;font-weight:700;letter-spacing:-.02em;margin-top:4px}
.d-col .big small{font-size:.9rem;font-weight:400;color:var(--ink2);letter-spacing:0;font-family:system-ui,sans-serif}
.d-col .tot{font-size:1.05rem;font-weight:600}
.d-col p{margin:0;color:var(--ink2);font-size:.82rem}
.d-col .ctx{margin-top:auto;padding-top:8px}
.d-mix{display:flex;height:34px;border-radius:6px;overflow:hidden;gap:2px;margin:6px 0 12px}
.d-mix span{display:block;min-width:2px;cursor:default}
.d-mixleg{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:4px 18px;font-size:.86rem}
.d-mixleg div{display:grid;grid-template-columns:12px 1fr auto;gap:8px;align-items:center;padding:3px 0;border-bottom:1px dotted var(--rule)}
.d-mixleg i{width:12px;height:12px;border-radius:3px;display:block}
.d-mixleg .dd{font-size:.74rem;color:var(--muted);grid-column:2/4}
/* hex map */
.d-mapwrap{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(260px,.75fr);gap:18px;align-items:start}
.d-hex{background:var(--card);border:1px solid var(--rule);border-radius:14px;padding:10px}
.d-hex svg{width:100%;height:min(80vh,880px);display:block}
.d-hex polygon{stroke:var(--card);stroke-width:.07;transition:opacity .15s}
.d-hex polygon.dim{opacity:.16}
.d-hex polygon.me{stroke:var(--ink);stroke-width:.22}
.d-hex polygon:hover{stroke:var(--ink);stroke-width:.14}
.d-legbar{margin:8px 6px 4px}
.d-legbar .lgs{display:flex;gap:2px}
.d-legbar .lgs i{display:block;flex:1;height:12px;border-radius:2px}
.d-legbar .lgt{position:relative;height:20px;font-size:.72rem;color:var(--ink2)}
.d-legbar .lgt span{position:absolute;top:3px;transform:translateX(-50%);white-space:nowrap}
.d-side{display:flex;flex-direction:column;gap:12px;position:sticky;top:56px}
.d-side h4{margin:0;font-family:"Iowan Old Style",Georgia,serif;font-size:1.35rem;line-height:1.2}
.d-bigval{font-family:"Iowan Old Style",Georgia,serif;font-size:2.6rem;line-height:1;font-weight:700}
.d-rank{display:grid;gap:3px;font-size:.86rem}
.d-rank div{display:grid;grid-template-columns:2.2em 1fr auto;gap:8px;padding:3px 0;border-bottom:1px dotted var(--rule);cursor:pointer}
.d-rank div:hover{background:var(--hair)}
.d-scroll{max-height:380px;overflow:auto;border:1px solid var(--rule);border-radius:10px;background:var(--card)}
/* strips */
.d-strips{display:grid;gap:2px}
.d-strip{display:grid;grid-template-columns:minmax(150px,230px) 1fr minmax(70px,auto);gap:14px;align-items:center;padding:8px 6px;border-bottom:1px solid var(--hair);cursor:pointer;border-radius:8px}
.d-strip:hover,.d-strip:focus-visible{background:var(--card);outline:none}
.d-strip.on{background:var(--card);box-shadow:inset 3px 0 0 var(--accent)}
.d-strip .t{font-size:.9rem;line-height:1.25}
.d-strip .t small{display:block;color:var(--muted);font-size:.72rem}
.d-strip svg{width:100%;height:46px;display:block;overflow:visible}
.d-strip .v{text-align:right;font-family:"Iowan Old Style",Georgia,serif;font-size:1.25rem;font-weight:700;line-height:1.1}
.d-strip .v small{display:block;font:600 .66rem/1.2 ui-monospace,Menlo,monospace;color:var(--muted);letter-spacing:.04em}
/* waffle */
.d-waffle{display:grid;grid-template-columns:minmax(220px,320px) 1fr;gap:26px;align-items:center}
.d-waffle svg{width:100%;height:auto;display:block}
.d-waffle rect{transition:opacity .15s,transform .15s}
.d-waffle rect.dim{opacity:.18}
.d-wleg{display:grid;gap:2px}
.d-wleg div{display:grid;grid-template-columns:16px 1fr auto auto;gap:10px;align-items:center;padding:6px 8px;border-radius:8px;cursor:default;font-size:.92rem}
.d-wleg div:hover,.d-wleg div.hot{background:var(--card)}
.d-wleg i{width:16px;height:16px;border-radius:4px;display:block}
.d-wleg .pp{font-size:.76rem;color:var(--muted);min-width:5.5em;text-align:right}
.d-wleg .pp.up{color:var(--c2)}.d-wleg .pp.dn{color:var(--c1)}
@media (prefers-reduced-motion:no-preference){.d-waffle rect{animation:pop .5s both}.d-strip .dot{animation:drop .6s both}}
@keyframes pop{from{opacity:0;transform:scale(.3)}to{opacity:1;transform:none}}
@keyframes drop{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}
/* lollipop and treemap */
.d-lolli{display:grid;gap:2px}
.d-lolli div{display:grid;grid-template-columns:var(--first,minmax(130px,210px)) 1fr auto;gap:12px;align-items:center;padding:6px 4px;border-bottom:1px solid var(--hair);font-size:.88rem}
.d-lolli svg{width:100%;height:26px;display:block;overflow:visible}
.d-tm{position:relative;width:100%;height:430px;border-radius:12px;overflow:hidden;background:var(--card);border:1px solid var(--rule)}
.d-tm div{position:absolute;overflow:hidden;padding:7px 9px;color:#fff;font-size:.8rem;line-height:1.25;border:2px solid var(--paper);border-radius:6px;cursor:default}
.d-tm div b{display:block;font-size:.84rem}
.d-tm div span{opacity:.88;font-variant-numeric:tabular-nums}
.d-two{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:18px}
.dtip{position:fixed;pointer-events:none;background:var(--ink,#1b1f3b);color:var(--bg,#f6f1e7);padding:7px 10px;border-radius:8px;font-size:.8rem;line-height:1.35;z-index:50;display:none;max-width:260px;box-shadow:0 6px 18px rgba(0,0,0,.25)}
.dtip b{display:block}
.d-foot{padding:18px 28px 0;font-size:.78rem;color:var(--muted)}
.d-foot a{color:var(--ink2)}
@media (max-width:760px){
  .d-sec>header{position:sticky;top:var(--hdr,0px);z-index:3}
  .d-nav{position:static}
  .d-mast{grid-template-columns:1fr;padding:26px 18px 18px}.d-loc{justify-self:start;max-width:220px}
  .d-sec{padding:26px 14px 4px}.d-mapwrap,.d-waffle{grid-template-columns:1fr}
  .d-strip{grid-template-columns:1fr auto;grid-template-rows:auto auto}.d-strip svg{grid-column:1/-1;grid-row:2}
  .d-nav{padding:6px 10px}.d-two{grid-template-columns:1fr}
}
@media (forced-colors:active){.d-hex polygon{stroke:CanvasText}.d-col{border-top-color:CanvasText}}

.d-nav .d-fold{opacity:.8}.d-nav .d-fold:first-of-type{margin-left:auto}
.d-lolli a{color:var(--ink);text-decoration:none}.d-lolli div:hover a{text-decoration:underline}

/* the chosen tile: a red ring, a red outline and a gentle pulse */
.d-hex polygon.me{stroke:var(--accent);stroke-width:.3;paint-order:stroke;filter:drop-shadow(0 0 .35px #fff)}
.d-hex polygon.me-ring{fill:none;stroke:var(--accent);stroke-width:.16;opacity:.9;pointer-events:none}
@media (prefers-reduced-motion:no-preference){.d-hex polygon.me-ring{animation:ring 1.8s ease-out infinite;transform-box:fill-box;transform-origin:center}}
@keyframes ring{0%{opacity:.95;transform:scale(.7)}100%{opacity:0;transform:scale(1.6)}}
.me-key{display:inline-block;width:12px;height:12px;border-radius:3px;border:3px solid var(--accent);vertical-align:-3px}
.d-pick label{white-space:nowrap}
.d-pick{align-items:center}

/* make the chosen tile unmistakable: solid red, white edge, ring, label */
.d-hex polygon.me{fill:var(--accent);stroke:#fff;stroke-width:.22;filter:drop-shadow(0 0 .5px var(--ink))}
.d-hex polygon.me:hover{stroke:#fff}
.d-hex .me-lead{stroke:var(--accent);stroke-width:.16;pointer-events:none}
.d-hex text.me-label{font:700 1.15px system-ui,sans-serif;fill:var(--ink);stroke:var(--card);stroke-width:.34px;paint-order:stroke;pointer-events:none}
.me-key{background:var(--accent);border-color:#fff;box-shadow:0 0 0 2px var(--accent)}
