:root{color-scheme:light;--card:#fff;--th:#fafafa;--field:#bdbdbd;--track:#f0f0f0;--medbar:#9a9a9a;--ring:#c9d6e8;--shadow:rgba(0,0,0,.12);--ink:#1d1d1d;--ink2:#4a4a4a;--ink3:#6b6b6b;--line:#e2e2e2;--bg:#fff;--bg2:#f6f6f4;--red:#c8102e;--navy:#1f3a5f;
--g-a:#1b7a3a;--g-a-bg:#e3f3e8;--g-b:#1f5fa8;--g-b-bg:#e4eefa;--g-c:#4a4a4a;--g-c-bg:#ececec;--g-d:#8a5a00;--g-d-bg:#fdf0d5;--g-f:#b00020;--g-f-bg:#fbe3e6;
--hi:#fff1c7;--amber:#8a5a00;--amber-bg:#fdf0d5;--radius:8px;--max:1240px}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;font:16px/1.55 system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;color:var(--ink);background:var(--bg)}
a{color:var(--navy);text-underline-offset:3px}a:hover{color:var(--red)}
:focus-visible{outline:3px solid var(--navy);outline-offset:2px;border-radius:3px}
.skip{position:absolute;left:-999px;top:0;background:var(--card);padding:8px 12px;z-index:100}.skip:focus{left:8px}
.wrap{max-width:var(--max);margin:0 auto;padding:0 20px}
header.site{border-bottom:1px solid var(--line);background:var(--card)}
header.site .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:8px 24px;padding-top:12px;padding-bottom:12px}
.brand{font-weight:800;font-size:1.2rem;color:var(--ink);text-decoration:none;letter-spacing:-.01em}.brand span{color:var(--red)}
nav.main{display:flex;flex-wrap:wrap;gap:4px 18px;font-size:.95rem}nav.main a{color:var(--ink2);text-decoration:none}nav.main a:hover,nav.main a[aria-current]{color:var(--red);text-decoration:underline}
main{padding:28px 0 48px}
h1{font-size:clamp(1.8rem,4.5vw,2.7rem);line-height:1.12;margin:.2em 0 .35em;letter-spacing:-.02em}
h2{font-size:1.45rem;line-height:1.25;margin:2em 0 .5em;letter-spacing:-.01em}h3{font-size:1.12rem;margin:1.5em 0 .4em}
p{margin:.5em 0 1em}.lead{font-size:1.15rem;color:var(--ink2);max-width:46rem}.muted{color:var(--ink3)}.small{font-size:.88rem}
.hero{padding:18px 0 8px}.hero h1{max-width:20ch}
.search{position:relative;max-width:34rem;margin:18px 0 8px}
.search label{display:block;font-weight:600;margin-bottom:6px}
.search input{width:100%;font:inherit;font-size:1.1rem;padding:12px 14px;border:2px solid var(--field);border-radius:var(--radius);background:var(--card);color:var(--ink)}
.search input:focus{border-color:var(--navy);outline:none;box-shadow:0 0 0 3px var(--ring)}
.sugg{position:absolute;left:0;right:0;top:100%;margin:4px 0 0;padding:4px;list-style:none;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 8px 24px var(--shadow);z-index:20;max-height:22rem;overflow:auto}
.sugg[hidden]{display:none}.sugg li a{display:flex;justify-content:space-between;gap:12px;padding:8px 10px;border-radius:6px;text-decoration:none;color:var(--ink)}
.sugg li a:hover,.sugg li a[aria-selected=true]{background:var(--bg2)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:22px 0}
.stat{background:var(--bg2);border-radius:var(--radius);padding:14px 16px}.stat b{display:block;font-size:1.7rem;line-height:1.1;color:var(--red)}
.pointer{border-left:4px solid var(--red);padding:6px 12px;margin:10px 0;background:var(--card)}
.chip{display:inline-block;font-weight:700;border-radius:6px;padding:1px 8px;font-size:.92rem;white-space:nowrap}
.g-A{color:var(--g-a);background:var(--g-a-bg)}.g-B{color:var(--g-b);background:var(--g-b-bg)}.g-C{color:var(--g-c);background:var(--g-c-bg)}.g-D{color:var(--g-d);background:var(--g-d-bg)}.g-F{color:var(--g-f);background:var(--g-f-bg)}
.r-0{color:var(--g-a);background:var(--g-a-bg)}.r-1{color:var(--amber);background:var(--amber-bg)}.r-2{color:var(--g-f);background:var(--g-f-bg)}.r-routine{color:var(--amber);background:var(--amber-bg)}
.hl{background:var(--hi);border-radius:4px;padding:1px 5px}
.ovx{color:var(--red);font-weight:700}
.sub{display:block;font-size:.8rem;color:var(--ink3);line-height:1.3;margin-top:2px}
.controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:14px 0}
.controls label{display:block;font-size:.85rem;font-weight:600;color:var(--ink2);margin-bottom:3px}
.controls input,.controls select{width:100%;font:inherit;padding:8px 10px;border:1px solid var(--field);border-radius:6px;background:var(--card);color:var(--ink)}
.tablewrap{position:relative;overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);-webkit-overflow-scrolling:touch}
table{border-collapse:separate;border-spacing:0;width:100%;font-size:.92rem;font-variant-numeric:tabular-nums}
th,td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top;text-align:left}
th{font-size:.8rem;color:var(--ink2);font-weight:600;background:var(--th);vertical-align:bottom}
td.num,th.num{text-align:right}
table.simple{min-width:68rem}
table.simple th:first-child,table.simple td:first-child{position:sticky;left:0;background:var(--card);z-index:1;border-right:1px solid var(--line);min-width:9rem}
table.simple th:first-child{background:var(--th);z-index:2}
table.simple td.take{min-width:17rem}
tr.median td{background:var(--bg2);color:var(--ink3)}table.simple tr.median td:first-child{background:var(--bg2)}
th button{all:unset;cursor:pointer;display:inline-flex;gap:4px;align-items:flex-end}th button:focus-visible{outline:2px solid var(--navy)}
th[aria-sort=ascending] button::after{content:"▲";font-size:.7em}th[aria-sort=descending] button::after{content:"▼";font-size:.7em}
.legend{font-size:.85rem;color:var(--ink3);margin-top:10px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px;margin:18px 0}
.card{border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;background:var(--card)}
.card h2,.card h3{margin:0 0 8px;font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;color:var(--ink3)}
.big{font-size:1.5rem;font-weight:700;line-height:1.25}.big .chip{font-size:1.4rem;padding:2px 10px}
.takeaway{font-size:1.2rem;font-weight:600;border-left:4px solid var(--red);padding:6px 14px;margin:18px 0;max-width:48rem}
.kv{max-width:52rem}.kv td:first-child{color:var(--ink2);width:46%}
figure{margin:12px 0 28px}figure img{width:100%;height:auto;display:block;border:1px solid var(--line);border-radius:var(--radius);background:var(--card)}
.zoom{display:block;cursor:zoom-in}.zoom:focus-visible img{outline:3px solid var(--navy);outline-offset:2px}
figcaption{font-size:.88rem;color:var(--ink3);max-width:52rem;margin-top:6px}
.charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px 22px}
.charts figure{margin:8px 0}
.note{background:var(--bg2);border-radius:var(--radius);padding:12px 16px;margin:16px 0;font-size:.95rem}
.est{display:inline-block;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--amber);background:var(--amber-bg);border-radius:4px;padding:0 6px;vertical-align:middle}
.crumbs{font-size:.88rem;color:var(--ink3);margin-bottom:4px}
ul.clean{padding-left:1.1em}ul.clean li{margin:.35em 0}
.towngrid{columns:4 12rem;column-gap:20px;padding:0;list-style:none}.towngrid li{break-inside:avoid;padding:2px 0}
.bars{display:grid;gap:4px;font-size:.88rem}.bar{display:grid;grid-template-columns:8.5rem 1fr 3.6rem;align-items:center;gap:8px}
.bar .track{background:var(--track);border-radius:4px;height:14px}.bar .fill{background:var(--navy);height:14px;border-radius:4px}.bar.med .fill{background:var(--medbar)}.bar.med{color:var(--ink3)}
.bar .v{text-align:right;font-variant-numeric:tabular-nums}
svg text{font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif}
.keyline{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:.85rem;color:var(--ink2);margin:6px 0}.keyline i{display:inline-block;width:18px;height:4px;border-radius:2px;vertical-align:middle;margin-right:6px}
footer.site{border-top:1px solid var(--line);background:var(--bg2);font-size:.88rem;color:var(--ink2);padding:22px 0 30px}
footer.site p{margin:.35em 0}footer.site nav{display:flex;flex-wrap:wrap;gap:4px 16px;margin-bottom:8px}
@media (max-width:640px){body{font-size:15.5px}.wrap{padding:0 14px}main{padding-top:18px}.bar{grid-template-columns:6.5rem 1fr 3.2rem}}
@media print{header.site nav,.search,.controls{display:none}}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
table.simple td:nth-child(2){min-width:12.5rem}table.simple td:nth-child(3){min-width:8.5rem}
table.simple td:nth-child(n+4):nth-child(-n+8){white-space:nowrap}

/* one chart per row, full width (square charts capped so they fit a laptop screen) */
.stack{display:block;max-width:60rem}.stack figure img{max-width:100%}
.stack img[width="1080"]{max-width:44rem}
.chartsec{border-top:1px solid var(--line);padding-top:6px;margin-top:22px}.chartsec h2{margin-top:.3em}
.step{display:inline-block;font-weight:800;color:#fff;background:var(--red);border-radius:50%;width:1.7em;height:1.7em;line-height:1.7em;text-align:center;margin:10px 0 0}
.intro{font-size:1.12rem;color:var(--ink2);max-width:46rem;margin:.4em 0}
/* Cape bar grid: every header the same height so the first bars line up across columns */
.capebars{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));grid-auto-rows:auto auto;gap:0 22px}
.bfig{display:grid;grid-template-rows:subgrid;grid-row:span 2;margin-bottom:18px}
.bhead{min-height:4.2rem;display:flex;flex-direction:column;justify-content:flex-start}
.bhead h3{margin:1em 0 .2em;line-height:1.3}.bsub{font-size:.8rem;color:var(--ink3);margin:0 0 .5em;line-height:1.35}
@supports (grid-template-rows:subgrid){.bhead{min-height:0}}
/* home feature cards */
.feature .card.link{display:block;text-decoration:none;color:var(--ink);border-left:4px solid var(--red)}.feature .card.link:hover{border-color:var(--red)}
.feature .card.link .small{color:var(--ink2)}.feature .card.link:hover .small{text-decoration:underline}
.btn{display:inline-block;font-weight:700;background:var(--navy);color:var(--card);padding:8px 14px;border-radius:6px;text-decoration:none}.btn:hover{color:var(--card);opacity:.9}
.linkbtn{all:unset;color:var(--navy);text-decoration:underline;cursor:pointer}.linkbtn:focus-visible{outline:2px solid var(--navy)}
.themebtn{font:inherit;font-size:.85rem;color:var(--ink2);background:var(--card);border:1px solid var(--field);border-radius:6px;padding:4px 10px;cursor:pointer}
fieldset.groups{border:1px solid var(--line);border-radius:var(--radius);padding:8px 14px;margin:10px 0}
fieldset.groups legend{font-weight:600;font-size:.9rem;padding:0 4px}
#dt-groups{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.92rem}#dt-groups label{white-space:nowrap;cursor:pointer}
/* full data table: sticky header rows and sticky town column inside a scrolling box */
.dtwrap{max-height:75vh;overflow:auto}
table.full{width:auto;font-size:.85rem}
table.full th,table.full td{white-space:nowrap;padding:6px 9px}
table.full thead th{position:sticky;top:0;z-index:2;background:var(--th)}
table.full thead tr.grp th{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--ink3);border-left:1px solid var(--line)}
table.full thead tr:nth-child(2) th{top:2.05rem;white-space:normal;min-width:7.5rem;max-width:12rem}
table.full .stick{position:sticky;left:0;z-index:1;background:var(--card);border-right:1px solid var(--line);min-width:9.5rem}
table.full thead .stick{z-index:3;background:var(--th)}
table.full tbody th{font-weight:600;font-size:.85rem;color:var(--ink)}
table.full tr.focus td,table.full tr.focus th{background:var(--hi)}
table.full tbody tr:hover td{background:var(--bg2)}
/* ---------- dark mode: automatic via the device setting, or forced with the footer toggle ---------- */
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){
color-scheme:dark;--card:#16191c;--th:#1c2024;--field:#4a4f55;--track:#2a2e33;--medbar:#8f969e;--ring:#2c4a73;--shadow:rgba(0,0,0,.5);
--ink:#ececec;--ink2:#c4c4c4;--ink3:#a8a8a8;--line:#2a2e33;--bg:#121417;--bg2:#1a1d21;--red:#ff5c6c;--navy:#86b8ff;
--g-a:#5cc46a;--g-a-bg:#17301e;--g-b:#86b8ff;--g-b-bg:#172538;--g-c:#d0d0d0;--g-c-bg:#2a2e33;--g-d:#ffc94d;--g-d-bg:#33280e;--g-f:#ff7a86;--g-f-bg:#3a1a1f;
--hi:#4a3b0e;--amber:#ffc94d;--amber-bg:#33280e}}
:root[data-theme=dark]{
color-scheme:dark;--card:#16191c;--th:#1c2024;--field:#4a4f55;--track:#2a2e33;--medbar:#8f969e;--ring:#2c4a73;--shadow:rgba(0,0,0,.5);
--ink:#ececec;--ink2:#c4c4c4;--ink3:#a8a8a8;--line:#2a2e33;--bg:#121417;--bg2:#1a1d21;--red:#ff5c6c;--navy:#86b8ff;
--g-a:#5cc46a;--g-a-bg:#17301e;--g-b:#86b8ff;--g-b-bg:#172538;--g-c:#d0d0d0;--g-c-bg:#2a2e33;--g-d:#ffc94d;--g-d-bg:#33280e;--g-f:#ff7a86;--g-f-bg:#3a1a1f;
--hi:#4a3b0e;--amber:#ffc94d;--amber-bg:#33280e}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) svg [fill="#444"]{fill:#c4c4c4}:root:not([data-theme=light]) svg [fill="#666"]{fill:#a8a8a8}:root:not([data-theme=light]) svg [fill="#c8102e"]{fill:#ff5c6c}:root:not([data-theme=light]) svg [stroke="#c8102e"]{stroke:#ff5c6c}:root:not([data-theme=light]) svg [fill="#1f3a5f"]{fill:#86b8ff}:root:not([data-theme=light]) svg [stroke="#1f3a5f"]{stroke:#86b8ff}:root:not([data-theme=light]) svg [fill="#e07b00"]{fill:#ffa040}:root:not([data-theme=light]) svg [stroke="#e07b00"]{stroke:#ffa040}:root:not([data-theme=light]) svg [fill="#7a7a7a"]{fill:#a0a0a0}:root:not([data-theme=light]) svg [stroke="#7a7a7a"]{stroke:#a0a0a0}:root:not([data-theme=light]) svg [stroke="#e6e6e6"]{stroke:#2a2e33}:root:not([data-theme=light]) .keyline i[style*="#1f3a5f"]{background:#86b8ff!important}:root:not([data-theme=light]) .step{color:#121417}}
:root[data-theme=dark] svg [fill="#444"]{fill:#c4c4c4}:root[data-theme=dark] svg [fill="#666"]{fill:#a8a8a8}:root[data-theme=dark] svg [fill="#c8102e"]{fill:#ff5c6c}:root[data-theme=dark] svg [stroke="#c8102e"]{stroke:#ff5c6c}:root[data-theme=dark] svg [fill="#1f3a5f"]{fill:#86b8ff}:root[data-theme=dark] svg [stroke="#1f3a5f"]{stroke:#86b8ff}:root[data-theme=dark] svg [fill="#e07b00"]{fill:#ffa040}:root[data-theme=dark] svg [stroke="#e07b00"]{stroke:#ffa040}:root[data-theme=dark] svg [fill="#7a7a7a"]{fill:#a0a0a0}:root[data-theme=dark] svg [stroke="#7a7a7a"]{stroke:#a0a0a0}:root[data-theme=dark] svg [stroke="#e6e6e6"]{stroke:#2a2e33}:root[data-theme=dark] .keyline i[style*="#1f3a5f"]{background:#86b8ff!important}:root[data-theme=dark] .step{color:#121417}
