/* generated by scripts/site/extract_engine.py from template.html (sha256 5bcf94fee84d); do not edit */
:root{
  color-scheme:light;
  --water:#cfe2ef; --water-line:#7fb0d4; --county:#a4afb8; --state:#3f4e5c;
  --c-erie:#2a78d6; --c-ohio:#6f3fb0; --c-river:#1a9e6a; --c-gw:#e06030;
  --c-none:#e6eaee; --c-none-hatch:#c6ced6; --dot:#ffffff;
  --r0:#e6eaee; --r1:#fbf1d3; --r2:#f6c66b; --r3:#ec8a3a; --r4:#cf4628; --r5:#861a20;
  --e-aep:#c62b2b; --e-aes:#e89a1e; --e-duke:#1d9b86; --e-oe:#2f6fdb; --e-cei:#7b57c4; --e-te:#4d9a36; --e-coop:#8c6a3c; --e-muni:#c23f8f;
  --g-cgo:#1f4e9c; --g-enb:#d99a1e; --g-duk:#1d9b86; --g-ceo:#cf4a5e; --g-small:#7a5cb5; --g-coop:#8c6a3c; --g-muni:#c23f8f;
  --s-city:#2f6fdb; --s-local:#1a9e6a; --s-ev:#7b57c4; --s-other:#8a97a3;
  --t-att:#2a6fc9; --t-frontier:#d1495b; --t-alta:#1d9b86; --t-bright:#e0892a; --t-wind:#7b57c4; --t-indie:#8c6a3c;
  --f0:#eef1f4; --f1:#d6e6f5; --f2:#a9c9ea; --f3:#6fa3d8; --f4:#3474bf; --f5:#153f7a;
  --l-city:#2f6fdb; --l-village:#7b57c4; --l-township:#8fa64a;
  --b1:#d9efe7; --b2:#a6d9c4; --b3:#f2c96b; --b4:#e88a3c; --b5:#b8321f;
  --z1:#ece7f5; --z2:#c9b9e6; --z3:#a184cf; --z4:#7350b3; --z5:#3f1f7a;
  --m1:#f3d9d2; --m2:#f0b39a; --m3:#8fcfc4; --m4:#3aa896; --m5:#146b5c;
  --h1:#d9efe7; --h2:#a6d9c4; --h3:#f2c96b; --h4:#e88a3c; --h5:#b8321f;
  --p-r:#c62b2b; --p-d:#2f6fdb; --p-i:#7b57c4;
  --v1:#6b1d1d; --v2:#b8321f; --v3:#e88a3c; --v4:#f2c96b; --v5:#d9efe7;
  --k1:#e4efe0; --k2:#b7d8ae; --k3:#7fbc7a; --k4:#3f8f4e; --k5:#155c33;
  --a1:#dcecf5; --a2:#a9cfe3; --a3:#e6d39a; --a4:#c98b46; --a5:#7a4a2a;
  --i1:#fde6d8; --i2:#f9b98f; --i3:#f08a4b; --i4:#c9532a; --i5:#7c2612;
  --y1:#e0f0f0; --y2:#a8d8d5; --y3:#6fb8b8; --y4:#3a8d94; --y5:#1c5a66;
  --d1:#eef3e6; --d2:#d9c9a0; --d3:#c99a5a; --d4:#a3632c; --d5:#5f3312;
  --q1:#dff3ea; --q2:#a4dcc6; --q3:#f0d27a; --q4:#e08c3a; --q5:#a33a1c;
  --n1:#eceee6; --n2:#cfe3b8; --n3:#9ccd7f; --n4:#5aa24d; --n5:#22632c;
  --w1:#dcefe3; --w2:#f3e3a0; --w3:#f0b45c; --w4:#d9662f; --w5:#8f1f1f;
  --j1:#ece4f2; --j2:#cdb7e0; --j3:#a985c8; --j4:#7f57ab; --j5:#4d2a7a;
  --o1:#e0e8f5; --o2:#b3c6ea; --o3:#7f9edb; --o4:#4a72c4; --o5:#1f3f8a;
  --u1:#fbe7d9; --u2:#f5bf9f; --u3:#ea9163; --u4:#c85f2f; --u5:#7d3410;
  --x1:#e9f0e2; --x2:#cfe0b0; --x3:#e8d27a; --x4:#d99a3c; --x5:#9c4a1c;
  --c1:#f4efe4; --c2:#d8e6f2; --c3:#a9c9e8; --c4:#6f9fd4; --c5:#2f5fa8;
  --hh1:#e4eff0; --hh2:#c9dde3; --hh3:#f0cf9a; --hh4:#e08a5a; --hh5:#9c2f2a;
  --hi1:#f1ede4; --hi2:#e2d3b6; --hi3:#c9ab7a; --hi4:#a27a45; --hi5:#5e4423;
  --ht1:#5a2e14; --ht2:#8a4a22; --ht3:#b8763a; --ht4:#d4a15e; --ht5:#e8c98f; --ht6:#f4e6c8;
  --sl1:#efeee9; --sl2:#e9dcc3; --sl3:#dbb27a; --sl4:#c07a3a; --sl5:#7a3d14;
  --ds1:#eeeef2; --ds2:#d9d3ea; --ds3:#b9a6d6; --ds4:#8c6bbd; --ds5:#4f2f86;
  --jb1:#eef0ea; --jb2:#d3dfc6; --jb3:#a8c48f; --jb4:#6f9a58; --jb5:#345f2c;
  --sv1:#e3ede4; --sv2:#efe9d3; --sv3:#efd9b3; --sv4:#e0a878; --sv5:#a8503c;
  --mo1:#e8d3cf; --mo2:#efe3d6; --mo3:#e2e6d2; --mo4:#b7d3b5; --mo5:#5a9a7a;
  --pe1:#f2eee6; --pe2:#e0d4c0; --pe3:#c4a98a; --pe4:#9a7757; --pe5:#5c412c;
  --og1:#efefec; --og2:#d9d3c8; --og3:#b3a48c; --og4:#7f6a4c; --og5:#3d2f1e;
  --pw1:#fdeedc; --pw2:#f8cf9c; --pw3:#e9a55a; --pw4:#c27a2e; --pw5:#7a4a14;
  --mn1:#efeeee; --mn2:#d8d0d6; --mn3:#b19bb0; --mn4:#7f5f86; --mn5:#452f4c;
  --gw1:#e3eef6; --gw2:#b9d3e8; --gw3:#84b0d3; --gw4:#4d84b4; --gw5:#1f4f80;
  --sw1:#e6efe9; --sw2:#c2dccb; --sw3:#ecd08b; --sw4:#d98b45; --sw5:#9a3a2a;
  --so1:#e2efd9; --so2:#f2dfa0; --so3:#d9905a; --so4:#8c3f2a;
  --le1:#8e2b2b; --le2:#d9744a; --le3:#efd48a; --le4:#9fcf9a; --le5:#2f7a4a;
  --cr1:#e8efe4; --cr2:#efe9cf; --cr3:#efd2a4; --cr4:#dc9a6a; --cr5:#a8452f;
  --db1:#eaf1ea; --db2:#cfe0c9; --db3:#b7c99a; --db4:#b98b5b; --db5:#7f3f2a;
  --aq1:#e6eef2; --aq2:#c9dde6; --aq3:#9cc0d1; --aq4:#5f93ad; --aq5:#2b5d78;
  --pl1:#7a2e1e; --pl2:#c9663a; --pl3:#e9c27a; --pl4:#cfe0c0; --pl5:#e9efe6;
  --rx1:#efeeea; --rx2:#d7d2c4; --rx3:#b3a88c; --rx4:#7d6f4f; --rx5:#3f3624;
  --at1:#dbeef5; --at2:#a9d2e3; --at3:#e6cf8e; --at4:#d68a4e; --at5:#8c3626;
  --wl1:#f0efe8; --wl2:#d5e6d0; --wl3:#9fcbb8; --wl4:#5aa39a; --wl5:#1f6a68;
  --ab1:#e7efe3; --ab2:#cfe2bf; --ab3:#a6cc6c; --ab4:#5e9a2e; --ab5:#2d5a19;
  --sr1:#e9cfd2; --sr2:#efe6d6; --sr3:#dbe6cf; --sr4:#a9cf9e; --sr5:#4f9a5c;
  --hv1:#efeeea; --hv2:#e7dcd0; --hv3:#d8b8a2; --hv4:#b9806a; --hv5:#7b3f3a;
  --bp1:#eeeef1; --bp2:#d3dbec; --bp3:#a6bbe0; --bp4:#6a8ccb; --bp5:#2c4d9c;
  --pa1:#e8eee9; --pa2:#d3e3d6; --pa3:#f0d9a0; --pa4:#e0935c; --pa5:#a03a30; --fl1:#3b7dd8; --fl2:#c9a15a; --fl3:#4f9fbf; --fl4:#8f9aa6;
  --lc1:#e6efd8; --lc2:#dfe3c6; --lc3:#d9d6c2; --lc4:#c5bcae; --lc5:#8a8078;
  --wk1:#ece2d2; --wk2:#e6e6c6; --wk3:#bcd8b2; --wk4:#4f9a6a;
  --tr1:#ece9e1; --tr2:#efe3c8; --tr3:#e8c99a; --tr4:#d9a06a; --tr5:#b86a3c; --tr6:#6e3a2a;
  --tf1:#eeeeec; --tf2:#e3e0d4; --tf3:#d2c69f; --tf4:#b89a55; --tf5:#7a5a1e;
  --br1:#e9ede9; --br2:#cfe0cc; --br3:#eed9a2; --br4:#d99560; --br5:#9a3b30;
  --da1:#eaf0ee; --da2:#c5dcd9; --da3:#8fbdc0; --da4:#4e8f9c; --da5:#1f5464;
  --tt1:#efecec; --tt2:#f5cfc2; --tt3:#ee9d86; --tt4:#d4614a; --tt5:#8e2a1f;
  --av1:#e2f0ec; --av2:#b7ddd2; --av3:#f1d48a; --av4:#e0a04a; --av5:#a8542a;
  --yb1:#3b1c4a; --yb2:#7a2f63; --yb3:#bc4f5e; --yb4:#e8895c; --yb5:#f6cf8f;
}
@media (prefers-color-scheme: dark){
:root:not([data-theme="light"]){
    color-scheme:dark;
    --water:#182c40; --water-line:#3f6f96; --county:#3c4a58; --state:#93a3b3;
    --c-erie:#3d8fe6; --c-ohio:#7b4fc8; --c-river:#22a874; --c-gw:#e0522f;
    --c-none:#18212b; --c-none-hatch:#2b3743; --dot:#0f1620;
    --r0:#18212b; --r1:#3b3520; --r2:#8a6a24; --r3:#c46a22; --r4:#dc4d2c; --r5:#ff7a72;
    --e-aep:#e2504f; --e-aes:#f0ad3e; --e-duke:#2fb59e; --e-oe:#5b8fe8; --e-cei:#9b7fd8; --e-te:#6ab850; --e-coop:#b08a55; --e-muni:#dc63ad;
    --g-cgo:#4f86e0; --g-enb:#f0b53a; --g-duk:#2fb59e; --g-ceo:#e8677a; --g-small:#9d84d6; --g-coop:#b08a55; --g-muni:#dc63ad;
    --s-city:#5b8fe8; --s-local:#22a874; --s-ev:#9b7fd8; --s-other:#6f7e8c;
    --t-att:#5b8fe8; --t-frontier:#e8677a; --t-alta:#2fb59e; --t-bright:#f0a24a; --t-wind:#9b7fd8; --t-indie:#b08a55;
    --f0:#1c2530; --f1:#22364d; --f2:#2a4f76; --f3:#3a6ea6; --f4:#5b93d6; --f5:#9cc4f2;
    --l-city:#5b8fe8; --l-village:#9b7fd8; --l-township:#a9bf5e;
    --b1:#1f3a31; --b2:#2c6a52; --b3:#9a7a25; --b4:#d0782c; --b5:#e5483a;
    --z1:#2a2440; --z2:#43356b; --z3:#6a4fa8; --z4:#9478d4; --z5:#c6b2f0;
    --m1:#4a2a26; --m2:#8a4a35; --m3:#2a5f57; --m4:#2f9a86; --m5:#7fd8c6;
    --h1:#1f3a31; --h2:#2c6a52; --h3:#9a7a25; --h4:#d0782c; --h5:#e5483a;
    --p-r:#e2504f; --p-d:#5b8fe8; --p-i:#9b7fd8;
    --v1:#ff7a72; --v2:#e5483a; --v3:#d0782c; --v4:#9a7a25; --v5:#1f3a31;
    --k1:#1f2f22; --k2:#2c5a38; --k3:#3f8a52; --k4:#6dbb7e; --k5:#b6ecbf;
    --a1:#1d2f3d; --a2:#2c5470; --a3:#8a7a30; --a4:#c07a35; --a5:#e0a070;
    --i1:#3a2620; --i2:#7a3a25; --i3:#c05a2c; --i4:#ee8a4f; --i5:#ffc2a0;
    --y1:#1c2f30; --y2:#245658; --y3:#2f8288; --y4:#4fb3b8; --y5:#a6e6e6;
    --d1:#232b1e; --d2:#4d4426; --d3:#8a6a34; --d4:#c48f4a; --d5:#f0c58a;
    --q1:#1c3a2e; --q2:#2b6d52; --q3:#9a7c28; --q4:#cf7a2e; --q5:#e8563a;
    --n1:#1c2420; --n2:#2b4a2a; --n3:#3f7a3c; --n4:#6db55e; --n5:#b5eaa2;
    --w1:#1f3a2c; --w2:#6e6220; --w3:#b07a2a; --w4:#d9662f; --w5:#ff6b6b;
    --j1:#2a2236; --j2:#4a3a66; --j3:#71569a; --j4:#9d7fd0; --j5:#cdb7f0;
    --o1:#1c2636; --o2:#26405f; --o3:#3a5f94; --o4:#6a90d4; --o5:#a9c6f2;
    --u1:#3a2418; --u2:#6f3d22; --u3:#b0602e; --u4:#e58a4f; --u5:#ffc7a3;
    --x1:#212b1c; --x2:#3f5a2a; --x3:#8a7a28; --x4:#c98a34; --x5:#ee9a5a;
    --c1:#2e2a22; --c2:#1f3346; --c3:#2c5478; --c4:#4a84c0; --c5:#9fc8f2;
    --hh1:#1d2c2e; --hh2:#2b4a50; --hh3:#8a7030; --hh4:#cf7a48; --hh5:#f26a5c;
    --hi1:#2a2620; --hi2:#4a3e2c; --hi3:#7a6440; --hi4:#b6935e; --hi5:#e8cf9c;
    --ht1:#f0c48e; --ht2:#d99a58; --ht3:#b8763a; --ht4:#8a5a30; --ht5:#5e4020; --ht6:#3a2a1a;
    --sl1:#26241f; --sl2:#4a3d28; --sl3:#8a6a35; --sl4:#c98a4a; --sl5:#f0b070;
    --ds1:#242230; --ds2:#3d3358; --ds3:#61508a; --ds4:#9480c8; --ds5:#cdbdf5;
    --jb1:#22281f; --jb2:#3a4f2e; --jb3:#5c7f45; --jb4:#8fb872; --jb5:#c9ecb0;
    --sv1:#243426; --sv2:#4a4630; --sv3:#7a5c36; --sv4:#c48a58; --sv5:#f0a48c;
    --mo1:#5a3430; --mo2:#4c4030; --mo3:#3c4a34; --mo4:#4f7a5a; --mo5:#8fd0a8;
    --pe1:#2a2620; --pe2:#4a3e30; --pe3:#7a6248; --pe4:#b3946f; --pe5:#e6cfa8;
    --og1:#262420; --og2:#4a4234; --og3:#7a6a4e; --og4:#b39b74; --og5:#e6d2ae;
    --pw1:#3a2a18; --pw2:#6f4a1e; --pw3:#b07428; --pw4:#e6a24c; --pw5:#ffd39a;
    --mn1:#262226; --mn2:#453b48; --mn3:#6f5a74; --mn4:#a68aae; --mn5:#dcc4e2;
    --gw1:#1c2a38; --gw2:#254a66; --gw3:#33709a; --gw4:#5f9ccc; --gw5:#a9d1f2;
    --sw1:#1e2f26; --sw2:#2c5a42; --sw3:#8a7a2c; --sw4:#cf7f3c; --sw5:#ef6a58;
    --so1:#243a1c; --so2:#7a6a26; --so3:#c07a44; --so4:#e86a52;
    --le1:#ff7a72; --le2:#d9744a; --le3:#8f7a2a; --le4:#3f7a48; --le5:#8fd6a0;
    --cr1:#243426; --cr2:#4a4630; --cr3:#7a5c36; --cr4:#b07040; --cr5:#f0907a;
    --db1:#23302a; --db2:#2f4a38; --db3:#4f6a3a; --db4:#8a6a3c; --db5:#d07a5a;
    --aq1:#22303a; --aq2:#2f4a58; --aq3:#3f6a7e; --aq4:#5f93ad; --aq5:#9fd0e6;
    --pl1:#ff8a70; --pl2:#c9663a; --pl3:#8a7530; --pl4:#3a5a3a; --pl5:#22302a;
    --rx1:#24221e; --rx2:#45402f; --rx3:#756a48; --rx4:#ab9c70; --rx5:#e2d3a6;
    --at1:#1d3440; --at2:#2b5f78; --at3:#8a7a30; --at4:#cf7f44; --at5:#ee6a55;
    --wl1:#26281f; --wl2:#2f4a3a; --wl3:#3f7a68; --wl4:#63b0a0; --wl5:#b0eadc;
    --ab1:#232a22; --ab2:#31492a; --ab3:#5d8a2e; --ab4:#8fc44a; --ab5:#c9ef8a;
    --sr1:#5a2f36; --sr2:#4a4230; --sr3:#3d5a33; --sr4:#5f9a52; --sr5:#9be08a;
    --hv1:#26241f; --hv2:#4a3a30; --hv3:#8a6650; --hv4:#c48f78; --hv5:#f0b8a8;
    --bp1:#23252c; --bp2:#2f3d5c; --bp3:#4b66a0; --bp4:#7d9be0; --bp5:#b9ccff;
    --pa1:#232a25; --pa2:#2e4a36; --pa3:#8a7a30; --pa4:#cf8850; --pa5:#ef6a5a; --fl1:#4a8ee6; --fl2:#b08a3a; --fl3:#5aaccb; --fl4:#7d8894;
    --lc1:#2a3a24; --lc2:#3a4430; --lc3:#45443a; --lc4:#5c554d; --lc5:#aaa198;
    --wk1:#4a3c2c; --wk2:#4a4c2c; --wk3:#3f6a44; --wk4:#8ad0a0;
    --tr1:#3a3a34; --tr2:#4d4630; --tr3:#6d5836; --tr4:#8d6a3a; --tr5:#b8834a; --tr6:#e0a070;
    --tf1:#262622; --tf2:#3f3a2c; --tf3:#6e6236; --tf4:#a88c44; --tf5:#e6c878;
    --br1:#242a24; --br2:#2f4a34; --br3:#8a7a30; --br4:#cf8850; --br5:#ef6a5a;
    --da1:#1c2626; --da2:#244243; --da3:#2f6a6e; --da4:#4fa0a8; --da5:#a3e0e6;
    --tt1:#2a2424; --tt2:#5a2f28; --tt3:#9a4a3a; --tt4:#d97a60; --tt5:#ffb8a6;
    --av1:#1f3129; --av2:#2b5a4a; --av3:#8a7a30; --av4:#c98a3a; --av5:#f0b070;
    --yb1:#f7d9a0; --yb2:#f0a070; --yb3:#d0607a; --yb4:#8e3f86; --yb5:#4a2c63;
  }
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --water:#182c40; --water-line:#3f6f96; --county:#3c4a58; --state:#93a3b3;
  --c-erie:#3d8fe6; --c-ohio:#7b4fc8; --c-river:#22a874; --c-gw:#e0522f;
  --c-none:#18212b; --c-none-hatch:#2b3743; --dot:#0f1620;
}
/* ---------- infrastructure overlays (2026-09-10) ---------- */
:root{
  --in-gas:#d9791c; --in-crude:#6b3d1c; --in-prod:#b23a8d; --in-hgl:#7d55c7; --in-elec:#c8342a; --in-plant:#333a42;
  --in-wm:#1d63c9; --in-sw:#8a6d2b; --in-tun:#4c3b12; --in-wwtp:#7a5a1e; --in-cso:#b8321f; --in-dam:#3d6b8f; --in-lev:#2f7a3a; --in-lock:#1f3f8a; --in-ww:#4f8fc9;
  --in-ir:#b8321f; --in-us:#d9822b; --in-sr:#7f8a94; --in-rail:#2b2f36; --in-amtrak:#2166c9; --in-bus:#1a9e6a; --in-rt:#0b5fa5; --in-air:#2a5db0; --in-rw:#4a4f57; --in-ferry:#1f6fb0;
  --in-tower:#6c757d; --in-ev:#1a9e6a; --in-lf:#7a5a1e; --in-inj:#7d55c7; --in-sf:#c9532a; --in-hosp:#c8342a; --in-fire:#d94f2a; --in-pol:#2a5db0; --in-inc:#e0892a;
  --in-halo:#ffffff;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){ --in-rail:#d5d9df; --in-sr:#aab3bd; --in-rw:#c3c8cf; --in-tower:#aab2ba; --in-plant:#e2e8ee; --in-crude:#b98457; --in-tun:#c9b27a; --in-sw:#c4a457; --in-lf:#c4a457; --in-wwtp:#c4a457; --in-halo:#0f1620; }}
:root[data-theme="dark"]{ --in-rail:#d5d9df; --in-sr:#aab3bd; --in-rw:#c3c8cf; --in-tower:#aab2ba; --in-plant:#e2e8ee; --in-crude:#b98457; --in-tun:#c9b27a; --in-sw:#c4a457; --in-lf:#c4a457; --in-wwtp:#c4a457; --in-halo:#0f1620; }
/* generated by scripts/site/extract_engine.py from template.html (sha256 5bcf94fee84d); do not edit */
.eyebrow{font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin:0 0 8px}
.card{border:1px solid var(--line);border-radius:12px;padding:16px;background:var(--panel-2);position:relative}
.card .close{position:absolute;right:10px;top:10px;width:28px;height:28px;border-radius:50%;border:1px solid var(--line);background:var(--panel);cursor:pointer;line-height:1;color:var(--muted)}
.card .close:hover{color:var(--ink)}
.source{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;padding:12px;border-radius:10px;background:var(--panel);border:1px solid var(--line)}
.swatch{width:26px;height:26px;border-radius:6px;border:1px solid rgba(0,0,0,.08);flex:none;margin-top:2px}
.swatch svg{display:block;width:100%;height:100%;border-radius:6px}
.source .lbl{font-family:var(--font-display);font-weight:700;font-size:19px;line-height:1.15;letter-spacing:-.01em;text-wrap:balance}
.source .cls{font-size:12px;color:var(--muted);margin-top:3px}
.kv{display:grid;grid-template-columns:96px 1fr;gap:6px 12px;margin:12px 0 0;font-size:13px}
.kv dt{color:var(--muted)}
.kv dd{margin:0}
.kv .mono{font-family:var(--font-mono);font-size:12px}
.chain{margin:12px 0 0;padding:10px 12px;border-left:3px solid var(--line-strong);font-size:13px;color:var(--ink)}
.chain b{font-weight:600}
.note{font-size:13px;color:var(--muted);margin:10px 0 0}
.links{margin:8px 0 0;font-size:12px;display:flex;flex-wrap:wrap;gap:6px 12px}
.links a{color:var(--muted);text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere}
.syslist{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.syslist li{display:grid;grid-template-columns:1fr auto;gap:2px 10px;font-size:13px;align-items:center}
.syslist .nm{font-weight:500}
.syslist .nm button{border:0;background:none;padding:0;font-weight:500;cursor:pointer;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line-strong);text-align:left}
.syslist .nm button:hover{text-decoration-color:var(--ink)}
.syslist .src{grid-column:1;color:var(--muted);font-size:12px}
.syslist .pct{font-family:var(--font-mono);font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.syslist .bar{grid-column:1 / -1;height:4px;border-radius:2px;background:var(--line);overflow:hidden}
.syslist .bar i{display:block;height:100%;border-radius:2px}
.fuel{display:flex;height:10px;border-radius:5px;overflow:hidden;margin:8px 0 4px;background:var(--line)}
.fuel i{display:block;height:100%}
.fuel-key{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:11.5px;color:var(--muted);margin:0}
.fuel-key span::before{content:"";display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;vertical-align:-1px;background:var(--k)}
/* layer panels in the card */
.lp{margin:12px 0 0;padding:12px;border-radius:10px;background:var(--panel);border:1px solid var(--line)}
.lp .eyebrow{margin:0 0 6px}
.rn{display:flex;align-items:baseline;gap:8px;margin:0}
.rn .big{font-family:var(--font-display);font-weight:800;font-size:34px;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}
.rn .what{color:var(--muted);font-size:12.5px;line-height:1.3;max-width:22ch}
.rn-bar{height:8px;border-radius:4px;background:var(--line);overflow:hidden;margin:8px 0 4px;position:relative}
.rn-bar i{display:block;height:100%;border-radius:4px}
.rn-bar b{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--ink);opacity:.55}
.rn-line{margin:0;font-size:12.5px}
.rn-line b{font-weight:600}
.also{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:12px 0 0;padding:10px;border-radius:10px;background:var(--panel-2);border:1px solid var(--line)}
.also .chip{display:grid;grid-template-columns:auto 1fr;gap:7px;align-items:center;text-align:left;border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:6px 8px;font-size:11.5px;line-height:1.3;cursor:pointer;color:var(--ink)}
.also .chip:hover{border-color:var(--line-strong)}
.also .chip b{display:block;font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.also .sw{width:12px;height:12px;border-radius:3px;border:1px solid rgba(0,0,0,.1);flex:none}
.hzl{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:5px}
.hzl li{display:grid;grid-template-columns:1fr auto;gap:2px 8px;font-size:12.5px}
.hzl .bar{grid-column:1 / -1;height:5px;border-radius:3px;background:var(--line);overflow:hidden}
.hzl .bar i{display:block;height:100%;border-radius:3px}
.intakes{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.intakes li{display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:start;font-size:12.5px;line-height:1.35}
.intakes .role{font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:2px 6px;border-radius:999px;border:1px solid var(--line-strong);color:var(--muted);margin-top:1px;white-space:nowrap}
.intakes .role.primary{color:var(--panel);background:var(--ink);border-color:var(--ink)}
.intakes b{font-weight:600}
.intakes .d{color:var(--muted)}
.facts{display:flex;flex-direction:column;gap:6px;margin:14px 0 0}
.facts details{border:1px solid var(--line);border-radius:10px;padding:8px 12px;background:var(--panel)}
.facts details[open]{padding-bottom:12px}
.facts summary{cursor:pointer;font-weight:600;font-size:13px;list-style:none;display:flex;justify-content:space-between;align-items:center}
.facts summary::-webkit-details-marker{display:none}
.facts summary::after{content:"+";font-family:var(--font-mono);color:var(--muted)}
.facts details[open] summary::after{content:"\2212"}
.facts summary .cnt{font-family:var(--font-mono);font-weight:400;font-size:11px;color:var(--muted);margin-left:auto;margin-right:8px}
.facts p{margin:6px 0 0;font-size:12.5px;line-height:1.45}
.facts ul{margin:6px 0 0;padding-left:18px;font-size:12.5px;line-height:1.45}
.facts li{margin:0 0 4px}
.facts .yr{font-family:var(--font-mono);color:var(--muted);margin-right:6px;font-size:11.5px}
.facts .lab{color:var(--muted);font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;font-weight:600;margin:8px 0 2px}
.facts table{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}
.facts th,.facts td{padding:4px 4px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.facts th{color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.05em}
.facts td.num{font-family:var(--font-mono);white-space:nowrap}
.facts .over{color:var(--c-gw);font-weight:600}
.facts .money{font-family:var(--font-display);font-weight:700;font-size:22px;letter-spacing:-.02em}
.facts .src a{color:var(--muted);font-size:12px}
.facts .cite{margin:6px 0 0;font-size:11px;color:var(--faint)}
.facts .cite a{color:var(--faint);text-decoration:underline;text-underline-offset:2px;margin-right:8px}
.photo{margin:12px 0 0;border-radius:10px;overflow:hidden;border:1px solid var(--line);background:var(--panel)}
.photo img{display:block;width:100%;height:auto}
.photo figcaption{padding:7px 10px 8px;font-size:12px;line-height:1.35}
.photo figcaption small{display:block;color:var(--faint);font-size:10.5px;margin-top:2px}
.photo figcaption small a{color:var(--faint)}
.pill{display:inline-block;font-size:11px;font-weight:600;letter-spacing:.04em;padding:2px 7px;border-radius:999px;background:var(--panel-2);border:1px solid var(--line);color:var(--muted);vertical-align:middle}
.pill.hi{color:var(--ink);border-color:var(--line-strong)}
.istrip{margin:12px 0 0;padding:10px;border-radius:10px;background:var(--panel-2);border:1px solid var(--line)}
.istrip .m{color:var(--muted);font-size:12.5px;margin:0 0 6px;line-height:1.35}
.istrip .chip{display:inline-block;border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:6px 10px;font-size:11.5px;line-height:1.3;cursor:pointer;color:var(--ink);text-align:left}
.istrip .chip b{display:block;font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.istrip .chip:hover{border-color:var(--line-strong)}
.card .iswatch{display:inline-block;width:26px;height:26px;border-radius:6px;background:var(--panel-2);border:1px solid var(--line);padding:5px 1px}
.card .ilist li{grid-template-columns:auto 1fr}
.card .ilist .src{white-space:nowrap}
.card .ilinks button{border:0;background:none;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line-strong);color:var(--ink);font-size:13px}
/* generated by scripts/site/extract_engine.py from template.html (sha256 5bcf94fee84d); do not edit */
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}
button,input{font:inherit;color:inherit}
a{color:inherit}
.app{display:grid;grid-template-columns:372px 1fr;height:100vh;height:100dvh;overflow:hidden}
.rail{background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}
.rail-scroll{overflow-y:auto;padding:22px 22px 18px;display:flex;flex-direction:column;gap:18px;flex:1;min-height:0}
.brand h1{font-family:var(--font-display);font-weight:800;font-size:30px;line-height:1;letter-spacing:-.02em;margin:0 0 8px;text-wrap:balance}
.brand p{margin:0;color:var(--muted);max-width:32ch}
.search{position:relative}
.search input{width:100%;padding:11px 40px 11px 14px;border:1.5px solid var(--line-strong);border-radius:8px;background:var(--panel);outline:none;font-size:15px}
.search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent)}
.search .kbd{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-family:var(--font-mono);font-size:11px;color:var(--faint);border:1px solid var(--line);border-radius:4px;padding:1px 6px;pointer-events:none}
.suggest{position:absolute;left:0;right:0;top:calc(100% + 6px);margin:0;padding:6px;list-style:none;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);z-index:30;max-height:330px;overflow:auto}
.suggest li{padding:8px 10px;border-radius:6px;cursor:pointer;display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:baseline}
.suggest li[aria-selected="true"],.suggest li:hover{background:var(--panel-2)}
.suggest .k{font-family:var(--font-mono);font-size:12px;color:var(--muted);min-width:52px}
.suggest .t{font-weight:500}
.suggest .t small{display:block;font-weight:400;color:var(--muted);font-size:12px}
.zipline{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:2px}
.zipline .zip{font-family:var(--font-display);font-weight:800;font-size:34px;letter-spacing:-.02em;line-height:1;font-variant-numeric:tabular-nums}
.zipline .town{font-weight:600;font-size:16px}
.sub{color:var(--muted);margin:0 0 12px}
.legend{display:flex;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none}
.legend li{display:grid;grid-template-columns:22px 1fr auto;gap:10px;align-items:center;padding:6px 8px;border-radius:8px;cursor:pointer;border:1px solid transparent}
.legend li:hover{background:var(--panel-2)}
.legend li[aria-pressed="true"]{border-color:var(--line-strong);background:var(--panel-2)}
.legend .sw{width:22px;height:16px;border-radius:4px;border:1px solid rgba(0,0,0,.08)}
.legend .sw svg{display:block;width:100%;height:100%;border-radius:4px}
.legend .nm{font-weight:500;font-size:13px}
.legend .nm small{display:block;font-weight:400;color:var(--muted);font-size:11.5px}
.legend .n{font-family:var(--font-mono);font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.stat{display:flex;align-items:baseline;gap:8px;margin:0 0 10px}
.stat .big{font-family:var(--font-display);font-weight:800;font-size:38px;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}
.stat .what{color:var(--muted);font-size:13px;max-width:20ch;line-height:1.3}
.bars{display:flex;flex-direction:column;gap:7px;margin:4px 0 0}
.bars .row{display:grid;grid-template-columns:1fr auto;gap:8px;font-size:12.5px;align-items:center}
.bars .row .track{grid-column:1 / -1;height:6px;border-radius:3px;background:var(--line);overflow:hidden}
.bars .row .track i{display:block;height:100%;border-radius:3px}
.bars .row .v{font-family:var(--font-mono);color:var(--muted);font-variant-numeric:tabular-nums}
.modes{display:flex;flex-direction:column;gap:4px}
.seg-label{font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin:6px 0 2px}
.seg-label:first-child{margin-top:0}
.seg{display:flex;flex-wrap:wrap;gap:1px;border:1px solid var(--line-strong);border-radius:8px;overflow:hidden;background:var(--line-strong)}
.seg button{border:0;background:var(--panel);padding:7px 4px;font-size:12px;font-weight:500;cursor:pointer;color:var(--muted);white-space:nowrap;flex:1 1 23%}
.seg button:hover{color:var(--ink)}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--panel)}
.legend li .sw.rn-sw{border-radius:3px}
.legend.compact li{padding:4px 8px}
.ptype{font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:2px 6px;border-radius:999px;border:1px solid var(--line-strong);color:var(--muted);white-space:nowrap;vertical-align:middle}
.legend .sw.dot{position:relative}
.marker{fill:var(--panel);stroke:var(--ink);stroke-width:1.4;vector-effect:non-scaling-stroke;cursor:pointer}
.marker.hl{stroke-width:2.6}
.lbl-plant{font-family:var(--font-body);font-weight:600;fill:var(--ink);pointer-events:none;paint-order:stroke;stroke:var(--bg);stroke-width:.32em;stroke-linejoin:round}
.intake-line{margin:10px 0 0;padding:10px 12px;border-radius:10px;background:var(--panel);border:1px dashed var(--line-strong);font-size:13px}
.intake-line b{font-weight:600}
.intake-line .where{color:var(--muted);font-size:12px;margin-top:3px}
.intake-line button{margin-top:8px;border:1px solid var(--line-strong);background:var(--panel-2);border-radius:6px;padding:4px 9px;font-size:12px;cursor:pointer}
.imark{fill:var(--panel);stroke-width:1.3;vector-effect:non-scaling-stroke;cursor:pointer}
.lbl-intake{font-family:var(--font-body);font-weight:500;fill:var(--muted);pointer-events:none;paint-order:stroke;stroke:var(--bg);stroke-width:.32em;stroke-linejoin:round}
.wzone{fill:var(--c-gw);fill-opacity:.12;stroke:var(--c-gw);stroke-width:.8;stroke-dasharray:3 2;vector-effect:non-scaling-stroke;pointer-events:none}
.wpt{fill:var(--c-gw);stroke:var(--panel);stroke-width:1;vector-effect:non-scaling-stroke;cursor:pointer}
.wpt.outer{fill:var(--panel);stroke:var(--c-gw);stroke-width:1.2}
.wellgrid{display:flex;flex-wrap:wrap;gap:4px;margin:8px 0 0}
.wellgrid span{font-family:var(--font-mono);font-size:11px;border:1px solid var(--line);border-radius:4px;padding:1px 6px;color:var(--ink)}
.wellgrid span.alt{color:var(--muted);border-style:dashed}
.ledger-q{width:100%;box-sizing:border-box;margin:8px 0 6px;padding:6px 9px;border:1px solid var(--line-strong);border-radius:8px;background:var(--panel-2);color:var(--ink);font-family:inherit;font-size:12.5px}
.ledger-fs{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 4px}
.ledger-f{font-size:11.5px;padding:3px 6px;border-radius:6px;border:1px solid var(--line-strong);background:var(--panel-2);color:var(--ink);font-family:inherit}
.ledger-load{font-size:11.5px;padding:4px 10px;border-radius:999px;border:1px solid var(--line-strong);background:var(--panel-2);color:var(--ink);cursor:pointer}
.ledger-out h4{margin:12px 0 2px;font-size:12.5px;font-weight:600}
.ledger-out h4 .n{color:var(--muted);font-weight:400;font-size:11.5px}
.ledger-out table{width:100%;border-collapse:collapse;font-size:11.5px;line-height:1.35;margin-top:2px}
.ledger-out td{padding:3px 4px;border-bottom:1px solid var(--line);vertical-align:top}
.ledger-out td.d{font-family:var(--font-mono);white-space:nowrap;color:var(--muted)}
.ledger-out td.n{font-family:var(--font-mono);text-align:right;white-space:nowrap}
.ledger-out .sub{color:var(--faint);font-size:11px;margin-top:1px}
.ledger-out .id{font-family:var(--font-mono)}
.ledger-out button.addr{border:0;background:none;padding:0;font:inherit;color:var(--ink);cursor:pointer;text-align:left;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line-strong)}
/* houses and neighborhoods (2026-09-14): the house browser on the card and the selected ZIP's houses on the map */
.hh-q{width:100%;box-sizing:border-box;margin:8px 0 6px;padding:6px 9px;border:1px solid var(--line-strong);border-radius:8px;background:var(--panel-2);color:var(--ink);font-family:inherit;font-size:12.5px}
.hh-fs{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 4px}
.hh-f{font-size:11.5px;padding:3px 6px;border-radius:6px;border:1px solid var(--line-strong);background:var(--panel-2);color:var(--ink);font-family:inherit;max-width:100%}
.hh-load,.hh-back,.hh-map,.hh-more{font-size:11.5px;padding:4px 10px;border-radius:999px;border:1px solid var(--line-strong);background:var(--panel-2);color:var(--ink);cursor:pointer;font-family:inherit}
.hh-out h4{margin:12px 0 2px;font-size:12.5px;font-weight:600}
.hh-out h4.hh-h{font-family:var(--font-display);font-size:16px;font-weight:700;letter-spacing:-.01em;margin:10px 0 2px}
.hh-out h4 .n{color:var(--muted);font-weight:400;font-size:11.5px}
.hh-tw{overflow-x:auto}
.hh-out table{width:100%;border-collapse:collapse;font-size:11.5px;line-height:1.35;margin-top:2px}
.hh-out th{padding:3px 4px;border-bottom:1px solid var(--line-strong);text-align:left;color:var(--muted);font-weight:600;font-size:10.5px;white-space:nowrap}
.hh-out td{padding:3px 4px;border-bottom:1px solid var(--line);vertical-align:top}
.hh-out td.d{font-family:var(--font-mono);white-space:nowrap;color:var(--muted)}
.hh-out td.n,.hh-out th.n{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.hh-out .sub{color:var(--faint);font-size:11px;margin-top:1px}
.hh-out .id{font-family:var(--font-mono)}
.hh-out .kv{grid-template-columns:104px 1fr}
.hh-out button.addr{border:0;background:none;padding:0;font:inherit;color:var(--ink);cursor:pointer;text-align:left;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line-strong)}
.l-houses circle{vector-effect:non-scaling-stroke}
.mapwrap.hh-dots path.zip{fill-opacity:.2}
.mapwrap.hh-dots path.zip.dim{fill-opacity:.06}
.mapwrap.hh-dots.raster path.zip{fill-opacity:.1}
/* while house dots show, the ZIP fills fade so a dot never sits on its own bin colour */
.l-houses circle.hd{stroke:#fff;stroke-width:.7;cursor:pointer;pointer-events:all}
.l-houses .yb1{fill:var(--yb1)}
.l-houses .yb2{fill:var(--yb2)}
.l-houses .yb3{fill:var(--yb3)}
.l-houses .yb4{fill:var(--yb4)}
.l-houses .yb5{fill:var(--yb5)}
.l-houses circle.ny{fill:transparent;stroke:var(--ink);stroke-width:1.1;stroke-opacity:.8}
.l-houses circle.hr{fill:none;stroke:var(--ink);stroke-width:2.4;pointer-events:none}
.l-houses path.hol{fill:none;stroke:var(--ink);stroke-width:1.8;stroke-dasharray:6 4;vector-effect:non-scaling-stroke;pointer-events:none}
.mapwrap.base-sat .l-houses circle.ny{stroke:#fff}
.mapwrap.base-sat .l-houses circle.hr{stroke:#ffd23f}
.mapwrap.base-sat .l-houses path.hol{stroke:#fff}
.layers .sw.hh-sw0{background:transparent;border:1.2px solid var(--ink);border-radius:50%}
.hx h4{margin:14px 0 4px;font-family:var(--font-display);font-size:15px;font-weight:700;letter-spacing:-.01em}
.hx p{margin:6px 0 0;font-size:12.5px;line-height:1.5}
.hx .lab{color:var(--muted);font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;font-weight:600;margin:10px 0 2px}
.hx details{border:1px solid var(--line);border-radius:10px;padding:8px 12px;background:var(--panel);margin:6px 0 0}
.hx summary{cursor:pointer;font-weight:600;font-size:13px;list-style:none;display:flex;justify-content:space-between;align-items:center}
.hx summary::-webkit-details-marker{display:none}
.hx summary::after{content:"+";font-family:var(--font-mono);color:var(--muted)}
.hx details[open] summary::after{content:"\2212"}
.hx summary .cnt{font-family:var(--font-mono);font-weight:400;font-size:11px;color:var(--muted);margin-left:auto;margin-right:8px}
.hx ul.hx-tl,.hx ul.hx-sites{margin:6px 0 0;padding-left:0;list-style:none;font-size:12.5px;line-height:1.45}
.hx ul.hx-tl li,.hx ul.hx-sites li{margin:0 0 5px;padding-left:0}
.hx .yr{font-family:var(--font-mono);color:var(--muted);margin-right:6px;font-size:11.5px;white-space:nowrap}
.hx a.hx-src{color:var(--faint);font-size:11px;text-decoration:underline;text-underline-offset:2px;margin-left:4px}
.hx .hx-switch{display:flex;flex-wrap:wrap;gap:4px;margin:8px 0 0}
.hx .hx-unit{cursor:pointer;background:var(--panel)}
.hx .hx-unit.on{color:var(--panel);background:var(--ink);border-color:var(--ink)}
.hx .hx-more-btn{border:0;background:none;padding:0;font:inherit;font-size:12px;color:var(--muted);text-decoration:underline;cursor:pointer}
.hx-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 0}
.hx-grid figure{margin:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--panel)}
.hx-grid img{display:block;width:100%;height:auto}
.hx-grid figcaption{padding:5px 7px 6px;font-size:11px;line-height:1.3}
.hx-grid figcaption small{display:block;color:var(--faint);font-size:10px;margin-top:2px}
.hx-grid .hx-ph-wait{aspect-ratio:4/3;display:flex;align-items:center;justify-content:center;color:var(--faint);font-size:11px;background:var(--panel-2)}
.fine{font-size:11.5px;color:var(--faint);line-height:1.5}
.fine a{color:var(--faint)}
.fine p{margin:0 0 6px}
.mapwrap{position:relative;min-width:0;min-height:0;background:var(--bg)}
#map{width:100%;height:100%;display:block;touch-action:none;cursor:grab}
#map:active{cursor:grabbing}
.zip{fill-opacity:.92;stroke:var(--panel);stroke-width:.5;stroke-linejoin:round;vector-effect:non-scaling-stroke;transition:fill-opacity .15s}
.zip.dim{fill-opacity:.13}
.zip.hi{stroke:var(--ink);stroke-width:1.6}
.zip.sel{stroke:var(--ink);stroke-width:2.6}
.zip:hover{stroke:var(--ink);stroke-width:1.4}
/* base maps (2026-09-13): a canvas of street or satellite tiles under the SVG; ZIP colors go translucent so the ground shows through, the atlas's own water stays off under the live bases, and labels get a halo that reads on imagery */
.basemap{position:absolute;left:0;top:0;z-index:0;pointer-events:none}
#map{position:relative}
.mapwrap.raster .zip{fill-opacity:.45;stroke:rgba(255,255,255,.55)}
.mapwrap.base-streets .zip{stroke:rgba(20,37,48,.35)}
.mapwrap.raster .zip.dim{fill-opacity:.08}
.mapwrap.raster:not(.base-bundle) .l-water{display:none}
/* the live bases draw their own water; the bundled USGS sheets leave open Lake Erie blank white, so the atlas lakes stay (base-bundle, set by bmApply) */
.mapwrap.raster.base-bundle .l-water path.river{display:none}
.mapwrap.base-sat .zip.hi,.mapwrap.base-sat .zip.sel,.mapwrap.base-sat .zip:hover{stroke:#fff}
.mapwrap.base-streets .zip.hi,.mapwrap.base-streets .zip.sel,.mapwrap.base-streets .zip:hover{stroke:#14212b}
.mapwrap.base-sat .county{stroke:#fff;opacity:.8}
.mapwrap.base-sat .state{stroke:#fff}
.mapwrap.base-streets .county{stroke:#5c6b78}
.mapwrap.base-streets .state{stroke:#14212b}
.mapwrap.base-sat .lbl-county,.mapwrap.base-sat .lbl-zip,.mapwrap.base-sat .lbl-water,.mapwrap.base-sat .lbl-plant,.mapwrap.base-sat .lbl-intake{fill:#fff;stroke:rgba(0,0,0,.85);opacity:1}
.mapwrap.base-streets .lbl-county,.mapwrap.base-streets .lbl-zip,.mapwrap.base-streets .lbl-plant,.mapwrap.base-streets .lbl-intake{fill:#14212b;stroke:rgba(255,255,255,.9)}
.mapwrap.base-streets .lbl-water{fill:#2a5d8f;stroke:rgba(255,255,255,.9)}
.layers .bseg{display:flex;background:var(--panel);border:1px solid var(--line-strong);border-radius:8px;box-shadow:var(--shadow);overflow:hidden}
.layers .bseg button{border:0;background:transparent;color:var(--ink);font:inherit;font-size:12px;padding:6px 10px;cursor:pointer;border-right:1px solid var(--line)}
.layers .bseg button:last-child{border-right:0}
.layers .bseg button:hover{background:var(--panel-2)}
.layers .bseg button[aria-pressed="true"]{background:var(--ink);color:var(--panel)}
.layers label.off{opacity:.45}
.layers .bseg button.na{opacity:.45}
.attrib{position:absolute;right:0;top:0;z-index:5;font-size:10px;line-height:14px;padding:1px 6px;background:rgba(255,255,255,.78);color:#222;max-width:70%;white-space:normal;text-align:right;border-bottom-left-radius:6px}
.attrib a{color:inherit}
.water{fill:var(--water);stroke:var(--water-line);stroke-width:.6;vector-effect:non-scaling-stroke;pointer-events:none}
.river{fill:none;stroke:var(--water-line);stroke-width:1.1;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;pointer-events:none;opacity:.95}
.county{fill:none;stroke:var(--county);stroke-width:.9;vector-effect:non-scaling-stroke;pointer-events:none}
.state{fill:none;stroke:var(--state);stroke-width:1.3;vector-effect:non-scaling-stroke;pointer-events:none}
.lbl-county{font-family:var(--font-body);font-weight:600;letter-spacing:.12em;text-transform:uppercase;fill:var(--muted);text-anchor:middle;pointer-events:none;opacity:.75;paint-order:stroke;stroke:var(--bg);stroke-width:.35em;stroke-linejoin:round}
.lbl-zip{font-family:var(--font-mono);font-weight:500;fill:var(--ink);text-anchor:middle;pointer-events:none;paint-order:stroke;stroke:var(--bg);stroke-width:.3em;stroke-linejoin:round;opacity:.9}
.lbl-water{font-family:var(--font-display);font-style:italic;font-weight:500;fill:var(--water-line);text-anchor:middle;pointer-events:none;letter-spacing:.04em}
.hide{display:none}
.zoomctl{position:absolute;right:14px;bottom:14px;display:flex;flex-direction:column;gap:6px}
.zoomctl button,.layers label{background:var(--panel);border:1px solid var(--line-strong);border-radius:8px;box-shadow:var(--shadow)}
.zoomctl button{width:36px;height:36px;font-size:18px;cursor:pointer;line-height:1;color:var(--ink)}
.zoomctl button:hover{background:var(--panel-2)}
.zoomctl button.reset{font-size:12px;font-weight:600;letter-spacing:.04em}
.layers{position:absolute;left:14px;bottom:14px;display:flex;gap:6px;flex-wrap:wrap}
.layers label{display:flex;align-items:center;gap:6px;padding:6px 10px;font-size:12px;cursor:pointer;color:var(--ink)}
.layers input{margin:0;accent-color:var(--c-erie)}
/* FEMA flood zone overlays (2026-09-10): a second row of toggles above the layer row; the zones draw per county once zoomed in */
.layers.flood{bottom:52px}
.layers .lyhead,.layers .lyhint{display:flex;align-items:center;padding:6px 10px;font-size:11px;color:var(--muted);background:var(--panel);border:1px solid var(--line-strong);border-radius:8px;box-shadow:var(--shadow)}
.layers .lyhead{font-weight:600;letter-spacing:.04em;text-transform:uppercase}
.layers .sw{display:inline-block;width:11px;height:11px;border-radius:2px;margin-left:2px}
.l-flood path.fz{fill-rule:evenodd;vector-effect:non-scaling-stroke;pointer-events:visibleStroke;stroke-linejoin:round}
.l-flood .fz-a{fill:#1d6fd1;fill-opacity:.17;stroke:#1d6fd1;stroke-width:1.4}
.l-flood .fz-x{fill:#5fa8e6;fill-opacity:.13;stroke:#3d8bd9;stroke-width:1.1;stroke-dasharray:5 3}
.l-flood .fz-w{fill:#c0392b;fill-opacity:.2;stroke:#c0392b;stroke-width:1.2}
.l-flood .fz-l{fill:#8e6cc9;fill-opacity:.12;stroke:#8e6cc9;stroke-width:1.1;stroke-dasharray:2 2}
.l-flood.outline path.fz{fill-opacity:0}
/* camera overlays (2026-09-10, JoelHOMEDSKTP): a fourth pill row; enforcement cameras at any zoom, the dense classes per viewport once zoomed in */
.layers.cams{bottom:128px}
.l-cams circle{stroke:#fff;stroke-width:.7px;vector-effect:non-scaling-stroke;cursor:pointer}
.l-cams .cm-t{fill:#0f8a6d}
.l-cams .cm-f{fill:var(--ink)}
.l-cams .cm-e{fill:#d1372b}
.l-cams .cm-c{fill:#8a7a4a}
.l-cams circle.hl{stroke:#ffd23f;stroke-width:2.2px}
/* the pill rows (farmland, cameras, flood, base layers) stack in one flex column from the bottom left; each row keeps its own wrap and none can cover another */
.layerstack{position:absolute;left:14px;bottom:14px;display:flex;flex-direction:column;align-items:flex-start;gap:6px;max-width:calc(100% - 110px);pointer-events:none}
.layerstack .layers{position:static;bottom:auto;left:auto;pointer-events:auto}
/* Farmland sales and data center sites overlay (2026-09-10, JoelHOMEDSKTP): a pill row in the layer stack; parcels draw per county once zoomed in, data center sites at every zoom */
.l-farm circle.fp{vector-effect:non-scaling-stroke;stroke:#fff;stroke-width:.7;fill-opacity:.88;cursor:pointer}
.l-farm circle.fp.wl{stroke:var(--ink);stroke-width:1.8}
.l-farm .fp-0{fill:#7fb069}
.l-farm .fp-1{fill:#e9c22f}
.l-farm .fp-2{fill:#f0842c}
.l-farm .fp-3{fill:#d7301f}
.l-farm .fp-4{fill:#7b1fa2}
.l-farm .fp-v{fill:#2f7fd6}
.l-farm .fp-n{fill:#9a9a9a}
.l-farm path.dc{vector-effect:non-scaling-stroke;stroke:var(--ink);stroke-width:1.2;fill-opacity:.95;cursor:pointer}
.l-farm path.pw{vector-effect:non-scaling-stroke;stroke:var(--ink);stroke-width:1.1;fill-opacity:.92;cursor:pointer}
.l-farm .pw-gas{fill:#8b1a1a}
.l-farm .pw-solar{fill:#e9c22f}
.l-farm .pw-wind{fill:#1f9e89}
.l-farm .pw-battery{fill:#7b1fa2}
.l-farm .pw-substation,.l-farm .pw-large_load{fill:#6b6b6b}
.l-farm path.pw.st-pending{fill-opacity:.55;stroke-dasharray:2 1.5}
.l-farm path.pw.st-withdrawn{fill:var(--panel);fill-opacity:.9}
.l-farm path.mo{vector-effect:non-scaling-stroke;stroke:var(--ink);stroke-width:1.3;fill:var(--panel);fill-opacity:.9;cursor:pointer}
.l-farm path.mo.ac-moratorium{stroke:#d7301f}
.l-farm path.mo.ac-rezoning_denied{stroke:#7b1fa2}
.l-farm path.mo.ac-rezoning_approved,.l-farm path.mo.ac-annexation{stroke:#1f9e89}
.l-farm path.mo.ac-zoning_amendment{stroke:#f0842c}
.l-farm path.mo.ac-hearing,.l-farm path.mo.ac-town_hall{stroke:#6b6b6b}
.l-farm path.mo.ac-ballot_measure{stroke:#2f7fd6;stroke-width:1.8}
.l-farm .dc-operating{fill:var(--ink)}
.l-farm .dc-construction{fill:#d7301f}
.l-farm .dc-announced{fill:#f0842c}
.l-farm .dc-proposed{fill:#e9c22f}
.l-farm .dc-land_banking{fill:#7b1fa2}
.l-farm .dc-paused,.l-farm .dc-cancelled{fill:#9a9a9a}
.l-farm .dc-rumored{fill:var(--panel)}
.tip.pin{pointer-events:auto;border-color:var(--ink);max-width:320px;padding-right:22px}
.tip.pin a{color:inherit}
.tip .x{position:absolute;top:2px;right:7px;cursor:pointer;font-size:15px;color:var(--muted)}
.layers button.pill{background:var(--panel);border:1px solid var(--line-strong);border-radius:8px;box-shadow:var(--shadow);padding:6px 10px;font-size:12px;cursor:pointer;color:var(--ink);font-weight:600}
.fm-asm{position:absolute;right:14px;top:14px;width:360px;max-width:calc(100% - 28px);max-height:72%;display:flex;flex-direction:column;background:var(--panel);color:var(--ink);border:1px solid var(--line-strong);border-radius:10px;box-shadow:var(--shadow);font-size:12px;z-index:16}
.fm-asm .hd{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--line)}
.fm-asm .hd b{white-space:nowrap}
.fm-asm .hd input{flex:1;min-width:0;font:inherit;padding:4px 6px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink)}
.fm-asm .hd .x{cursor:pointer;font-size:16px;color:var(--muted)}
.fm-asm .bd{overflow:auto;padding:4px 0}
.fm-asm .rw{display:block;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--line);padding:6px 10px;cursor:pointer;color:var(--ink);font:inherit;line-height:1.3}
.fm-asm .rw:hover{background:var(--panel-2)}
.fm-asm .rw .o{font-weight:600}
.fm-asm .m{color:var(--muted);font-size:11.5px}
.fm-asm .rw.wl .o::before{content:'';display:inline-block;width:9px;height:9px;border-radius:50%;background:#d7301f;margin-right:6px;vertical-align:middle}
/* historical map overlays (2026-09-14): the canvas under the SVG, the pill row, the footprints and the panel (which reuses .fm-asm) */
.mapwrap.hist .zip{fill-opacity:.2;stroke:rgba(255,255,255,.7)}
.mapwrap.hist .zip.dim{fill-opacity:.06}
.mapwrap.hist.nofill .zip,.mapwrap.hist.nofill .zip.dim{fill-opacity:0}
/* Hide ZIP colors: outlines and labels stay, the old map shows clean */
.mapwrap.hist .l-water{opacity:.35}
#hmAttr{top:16px}
.layers.hist input[type=range]{width:90px;accent-color:var(--c-erie);margin:0}
.l-hist path{fill:#7b1fa2;fill-opacity:.06;stroke:#7b1fa2;stroke-width:1.2;stroke-dasharray:4 3;vector-effect:non-scaling-stroke;cursor:pointer}
.l-hist path:hover{fill-opacity:.18}
.l-hist path.on{fill-opacity:.02;stroke-dasharray:none;stroke-width:1.8}
.l-hist path.na{stroke:#9a9a9a;fill:#9a9a9a;cursor:default}
.hm-panel{width:400px}
.hm-panel .fl{display:flex;gap:6px;padding:6px 10px;border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center}
.hm-panel .fl select{font:inherit;font-size:12px;padding:3px 4px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink);max-width:170px}
.hm-panel .pill.sm{font-size:11px;padding:3px 8px;cursor:pointer}
.hm-panel .fl input.yr{width:52px;font:inherit;font-size:12px;padding:3px 4px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink)}
.hm-panel .fl label.iv{display:flex;align-items:center;gap:4px;font-size:12px;cursor:pointer}
.hm-panel .fl label.iv input{margin:0;accent-color:var(--c-erie)}
.hm-panel .grp{padding:6px 10px 2px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);background:var(--panel-2)}
.hm-panel .rw{display:flex;align-items:center;gap:8px}
.hm-panel .rw input{margin:0;accent-color:var(--c-erie);flex:none}
.hm-panel .rw .yr{font-weight:600;width:34px;flex:none;color:var(--muted)}
.hm-panel .rw.on .yr{color:var(--ink)}
.hm-panel .rw .tx{flex:1;min-width:0}
.hm-panel .rw.na{opacity:.55}
.hm-panel .rw .go{flex:none;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:6px;font:inherit;font-size:12px;padding:2px 7px;cursor:pointer}
.hm-panel .rw .go:hover{background:var(--panel-2)}
.hm-panel .ft{padding:6px 10px;border-top:1px solid var(--line)}
.tip{position:absolute;pointer-events:none;background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:8px 10px;box-shadow:var(--shadow);font-size:12.5px;max-width:260px;z-index:20;line-height:1.35}
.tip .z{font-family:var(--font-mono);font-weight:500}
.tip .s{font-weight:600;margin-top:2px}
.tip .m{color:var(--muted);font-size:11.5px}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.zoomctl button:focus-visible{outline-offset:0}
@media (max-width:840px){
.app{grid-template-columns:1fr;grid-template-rows:auto 1fr}
.rail{border-right:0;border-bottom:1px solid var(--line);max-height:46vh}
.rail-scroll{padding:16px 16px 12px;gap:14px}
.brand h1{font-size:24px}
.brand p{display:none}
.zipline .zip{font-size:28px}
}
@media (prefers-reduced-motion: reduce){
.zip{transition:none}
}
.l-infra-lines path,.l-infra-hi path,.ipanel .isw path,.ipanel .ikinds svg path,.iswatch svg path{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.l-infra-lines .gated,.l-infra-pts .gated{display:none}
.l-infra-pts path{stroke:var(--in-halo);stroke-width:.9;vector-effect:non-scaling-stroke;cursor:pointer;paint-order:stroke}
/* energy */
.il-pipelines_gas .s-interstate{stroke:var(--in-gas);stroke-width:1.7}
.il-pipelines_gas .s-intrastate{stroke:var(--in-gas);stroke-width:1.1;stroke-dasharray:5 3}
.il-pipelines_liquids .s-crude{stroke:var(--in-crude);stroke-width:1.8}
.il-pipelines_liquids .s-product{stroke:var(--in-prod);stroke-width:1.4}
.il-pipelines_liquids .s-hgl{stroke:var(--in-hgl);stroke-width:1.3;stroke-dasharray:6 3}
.il-gas_facilities path{fill:var(--in-gas)}
.il-petro_facilities path{fill:var(--in-crude)}
.il-petro_facilities .s-ethanol,.il-petro_facilities .s-biodiesel{fill:#6b8e23}
.il-power_lines .s-kv765{stroke:var(--in-elec);stroke-width:2.6}
.il-power_lines .s-kv345{stroke:var(--in-elec);stroke-width:1.9}
.il-power_lines .s-kv138{stroke:var(--in-elec);stroke-width:1.2}
.il-power_lines .s-kv69{stroke:var(--in-elec);stroke-width:.8;opacity:.85}
.il-power_lines .s-kvlo{stroke:var(--in-elec);stroke-width:.6;opacity:.7}
.il-power_lines .s-kvun{stroke:var(--in-elec);stroke-width:.9;stroke-dasharray:3 3;opacity:.8}
.il-substations path{fill:var(--in-elec)}
.il-substations .s-lv{opacity:.75}
.il-substations .s-un{fill:none;stroke:var(--in-elec);stroke-width:1;opacity:.8}
.il-power_plants path{fill:var(--in-plant);opacity:.92}
.il-power_plants .s-coal{fill:#3b3b3b}
.il-power_plants .s-gas{fill:#e0a020}
.il-power_plants .s-nuclear{fill:#8a2be2}
.il-power_plants .s-hydro{fill:#2a78d6}
.il-power_plants .s-wind{fill:#1a9e6a}
.il-power_plants .s-solar{fill:#f2c500}
.il-power_plants .s-oil{fill:#7a4a2a}
.il-power_plants .s-biomass{fill:#6b8e23}
.il-power_plants .s-battery{fill:#00a3a3}
.il-power_plants .s-landfill{fill:#8c6a3c}
.il-power_plants .s-other{fill:#888}
.il-wind_turbines path{fill:#1a9e6a;stroke-width:.5}
.il-solar_farms path{fill:#e6b800}
/* water and sewer */
.il-water_mains .s-d48{stroke:var(--in-wm);stroke-width:2.8}
.il-water_mains .s-d30{stroke:var(--in-wm);stroke-width:2.1}
.il-water_mains .s-d16{stroke:var(--in-wm);stroke-width:1.5}
.il-water_mains .s-d12{stroke:var(--in-wm);stroke-width:1.05}
.il-water_mains .s-dsm{stroke:var(--in-wm);stroke-width:.7;opacity:.8}
.il-sewers .s-tunnel{stroke:var(--in-tun);stroke-width:3;stroke-dasharray:7 3}
.il-sewers .s-comb{stroke:var(--in-sw);stroke-width:1.8}
.il-sewers .s-san{stroke:var(--in-sw);stroke-width:1.4}
.il-sewers .s-force{stroke:var(--in-sw);stroke-width:1.2;stroke-dasharray:3 2}
.il-sewers .s-storm{stroke:#5a8fa8;stroke-width:1.2}
.il-wwtp path{fill:var(--in-wwtp)}
.il-wwtp .s-minor{opacity:.8}
.il-cso_outfalls path{fill:none;stroke:var(--in-cso);stroke-width:1.4}
.il-dams path{fill:var(--in-dam)}
.il-dams .s-high{fill:#b8321f}
.il-dams .s-significant{fill:#e08a3c}
.il-dams .s-low{fill:#8fa6b8}
.il-dams .s-undetermined{fill:#aab3bd}
.il-levees .s-levee{stroke:var(--in-lev);stroke-width:2.4;stroke-dasharray:9 2}
.il-locks path{fill:var(--in-lock)}
.il-waterways path{stroke:var(--in-ww);stroke-width:2;stroke-dasharray:10 5;opacity:.85}
.il-ports path{fill:var(--in-lock)}
.il-ports .s-dock{opacity:.75}
/* transport */
.il-roads .s-ir{stroke:var(--in-ir);stroke-width:2.4}
.il-roads .s-toll{stroke:var(--in-ir);stroke-width:2.4;stroke-dasharray:9 3}
.il-roads .s-us{stroke:var(--in-us);stroke-width:1.6}
.il-roads .s-sr{stroke:var(--in-sr);stroke-width:1;opacity:.9}
.il-bridges_major path{fill:#5a6570}
.il-bridges_major .s-poor{fill:#b8321f}
.il-bridges_major .s-fair{fill:#d9822b}
.il-bridges_major .s-good{fill:#3f8f4e}
.il-rail_lines .s-main{stroke:var(--in-rail);stroke-width:1.8}
.il-rail_lines .s-pass{stroke:var(--in-rail);stroke-width:1.6}
.il-rail_lines .s-branch{stroke:var(--in-rail);stroke-width:1.2;opacity:.9}
.il-rail_lines .s-yard{stroke:var(--in-rail);stroke-width:.8;opacity:.7}
.il-rail_lines .s-ind{stroke:var(--in-rail);stroke-width:.8;opacity:.7}
.il-rail_lines .s-oos{stroke:var(--in-rail);stroke-width:1;stroke-dasharray:2 3;opacity:.7}
.il-amtrak_routes path{stroke:var(--in-amtrak);stroke-width:2.2;stroke-dasharray:7 4}
.il-rail_facilities path{fill:var(--in-rail)}
.il-rail_facilities .s-amtrak{fill:var(--in-amtrak)}
.il-rail_crossings path{fill:none;stroke:var(--in-rail);stroke-width:1.3}
.il-rail_crossings .s-private{opacity:.6}
.il-airports path{fill:var(--in-air)}
.il-airports .s-airline,.il-airports .s-airline_out{fill:#1f3f8a}
.il-airports .s-military{fill:#4f6b2f}
.il-airports .s-reliever{fill:#2a5db0}
.il-airports .s-ga_priv,.il-airports .s-ultralight,.il-airports .s-balloon,.il-airports .s-glider{fill:#7f9ccf}
.il-airports .s-heliport{fill:#c9532a}
.il-airports .s-seaplane{fill:#2a78d6}
.il-runways path{stroke:var(--in-rw);stroke-width:2.4}
.il-transit_routes .s-bus{stroke:var(--in-bus);stroke-width:1.1;opacity:.8}
.il-transit_routes .s-brt{stroke:var(--in-bus);stroke-width:2}
.il-transit_routes .s-rail{stroke:var(--in-rt);stroke-width:2.6}
.il-transit_routes .s-ferry{stroke:var(--in-ferry);stroke-width:1.6;stroke-dasharray:4 3}
.il-transit_terminals path{fill:var(--in-bus)}
.il-transit_terminals .s-rail{fill:var(--in-rt)}
.il-transit_terminals .s-multi{fill:#0b5fa5}
.il-transit_terminals .s-air{fill:var(--in-air)}
.il-transit_terminals .s-ferry{fill:var(--in-ferry)}
.il-ferry_routes path{stroke:var(--in-ferry);stroke-width:1.8;stroke-dasharray:5 4}
/* utilities and sites */
.il-towers path{fill:var(--in-tower)}
.il-ev_chargers path{fill:var(--in-ev)}
.il-ev_chargers .s-l2{opacity:.7}
.il-landfills path{fill:var(--in-lf)}
.il-landfills .s-hazardous{fill:#8a1c1c}
.il-landfills .s-transfer,.il-landfills .s-compost,.il-landfills .s-other{opacity:.75}
.il-injection_wells path{fill:none;stroke:var(--in-inj);stroke-width:1.6}
.il-injection_wells .s-storage{stroke:var(--in-gas);stroke-width:1.1}
.il-superfund path{fill:var(--in-sf)}
.il-superfund .s-deleted{opacity:.6}
.il-phmsa_incidents path{fill:none;stroke:var(--in-inc);stroke-width:1.6}
.il-hospitals path{fill:var(--in-hosp)}
.il-fire_stations path{fill:var(--in-fire)}
.il-police path{fill:var(--in-pol)}
/* hover and selection */
.l-infra-hi{pointer-events:none}
.l-infra-hi .ihov path{stroke-width:5;stroke-opacity:.45;fill-opacity:.5}
.l-infra-hi .isel path{stroke-width:6;stroke-opacity:.35;fill-opacity:.35}
.l-infra-hi .isel path{filter:drop-shadow(0 0 2px var(--in-halo))}
/* panel */
.layers .ly-btn{display:flex;align-items:center;gap:6px;padding:6px 10px;font-size:12px;cursor:pointer;color:var(--ink);background:var(--panel);border:1px solid var(--line-strong);border-radius:8px;box-shadow:var(--shadow);font-weight:500}
.layers .ly-btn.on{border-color:var(--ink)}
.layers .ly-btn:hover{background:var(--panel-2)}
.ipanel{position:absolute;left:14px;bottom:56px;width:330px;max-width:calc(100% - 28px);max-height:min(72%,640px);display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line-strong);border-radius:12px;box-shadow:var(--shadow);z-index:15;font-size:12.5px}
.ipanel .ihead{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line)}
.ipanel .ihead b{font-family:var(--font-display);font-size:15px;font-weight:700}
.ipanel .ihead .m{color:var(--muted);font-size:11.5px;flex:1}
.ipanel .ihead .iclear{border:1px solid var(--line);background:var(--panel-2);border-radius:999px;padding:2px 9px;font-size:11px;cursor:pointer;color:var(--muted)}
.ipanel .ihead .close{width:26px;height:26px;border-radius:50%;border:1px solid var(--line);background:var(--panel);cursor:pointer;line-height:1;color:var(--muted)}
.ipanel .ibody{overflow-y:auto;padding:8px 12px 12px;min-height:0}
.ipanel .igroup{margin-top:6px}
.ipanel .igroup .seg-label{display:flex;align-items:center;justify-content:space-between;margin:8px 0 2px}
.ipanel .iall button{border:0;background:none;color:var(--faint);font-size:10.5px;text-transform:none;letter-spacing:0;cursor:pointer;padding:0 4px;text-decoration:underline;text-underline-offset:2px}
.ipanel .iall button:hover{color:var(--ink)}
.ipanel .irow{border-radius:8px;padding:3px 4px}
.ipanel .irow.on{background:var(--panel-2)}
.ipanel .irow label{display:grid;grid-template-columns:auto 26px 1fr;gap:8px;align-items:center;cursor:pointer;padding:3px 2px}
.ipanel .irow input{margin:0;accent-color:var(--c-erie)}
.ipanel .isw svg,.ipanel .ikinds svg,.iswatch svg{display:block;width:24px;height:16px;overflow:visible}
.ipanel .inm{font-weight:500;line-height:1.25}
.ipanel .inm small{display:block;font-weight:400;color:var(--muted);font-size:11px}
.ipanel .ikinds{list-style:none;margin:2px 0 4px 38px;padding:0;display:flex;flex-direction:column;gap:2px}
.ipanel .ikinds li{display:grid;grid-template-columns:26px 1fr auto auto;gap:8px;align-items:center;font-size:11.5px;color:var(--muted)}
.ipanel .ikinds .n{font-family:var(--font-mono);font-size:11px;font-variant-numeric:tabular-nums}
.ipanel .igate{color:var(--faint);border:1px solid var(--line);border-radius:999px;padding:0 6px;font-size:10px}
.ipanel .igate.open{color:var(--ink);border-color:var(--line-strong)}
@media (max-width:840px){.ipanel{max-height:60%}}
.il-post_offices path{fill:#3b6ea8}
.il-gauges path{fill:#1f7a8c}
.il-gauges .s-lake{fill:#2a78d6}
.il-gauges .s-spring{fill:#1a9e6a}
.il-water_facilities path{fill:var(--in-wm)}
.il-water_facilities .s-plant{fill:#0b5fa5}
.il-water_facilities .s-booster,.il-water_facilities .s-prv{fill:#4f8fc9}
.il-water_facilities .s-well{fill:#2a78d6;opacity:.8}
.il-water_facilities .s-other{fill:#7f9ccf}
.il-water_towers path{fill:#1d63c9}
.il-water_towers .s-tank,.il-water_towers .s-covered{fill:#4f8fc9}
.il-water_towers .s-well{fill:#2a78d6;opacity:.8}
.il-water_works path{fill:#0b5fa5}
.il-water_works .s-wwtp{fill:var(--in-wwtp)}
.il-water_works .s-sewage_pump{fill:var(--in-sw)}
.il-water_works .s-pump{fill:#4f8fc9}
.il-sewer_facilities path{fill:var(--in-sw)}
.il-sewer_facilities .s-plant{fill:var(--in-wwtp)}
.il-sewer_facilities .s-cso{fill:var(--in-cso)}
.il-sewer_facilities .s-basin{fill:var(--in-tun)}
.il-osm_pipelines .s-water{stroke:var(--in-wm);stroke-width:1.2;stroke-dasharray:4 2}
.il-osm_pipelines .s-sewage{stroke:var(--in-sw);stroke-width:1.2;stroke-dasharray:4 2}
.il-osm_pipelines .s-gas{stroke:var(--in-gas);stroke-width:1.2;stroke-dasharray:4 2}
.il-osm_pipelines .s-oil{stroke:var(--in-crude);stroke-width:1.2;stroke-dasharray:4 2}
.il-osm_pipelines .s-other{stroke:var(--in-tower);stroke-width:1;stroke-dasharray:4 2}
.il-data_centers path{fill:#5a2ca0}
.il-shale_wells path{fill:#8c4a1e}
.il-shale_wells .s-marcellus{fill:#c9532a}
.il-shale_wells .s-horizontal{fill:#a88a4a}
.il-mines_ug path{fill:#6b4a2a;fill-opacity:.28;stroke:#6b4a2a;stroke-width:.6;stroke-opacity:.6}
.il-mines_ug .s-coal_partial{fill-opacity:.16;stroke-dasharray:3 2}
.il-mines_ug .s-minerals{fill:#4f6b8f;stroke:#4f6b8f}
.l-infra-hi .il-mines_ug path{fill-opacity:.35}
.il-trails .s-national{stroke:#2f7a3a;stroke-width:2.2}
.il-trails .s-statewide{stroke:#2f7a3a;stroke-width:1.6}
.il-trails .s-regional{stroke:#4f9a52;stroke-width:1.2}
.il-trails .s-local{stroke:#4f9a52;stroke-width:1;opacity:.85}
.il-trails .s-planned{stroke:#4f9a52;stroke-width:1;stroke-dasharray:3 3;opacity:.8}
.il-trails .s-bike{stroke:#1a9e6a;stroke-width:1.3;stroke-dasharray:6 3}
.il-transit_stops path{fill:var(--in-bus);stroke-width:.5}
.il-transit_stops .s-rail{fill:var(--in-rt)}
.ipanel .iload{margin:6px 12px 0;color:var(--muted)}
.il-bridges_all path{fill:#5a6570}
.il-bridges_all .s-poor,.il-bridges_all .s-culvert_poor{fill:#b8321f}
.il-bridges_all .s-fair,.il-bridges_all .s-culvert_fair{fill:#d9822b}
.il-bridges_all .s-good,.il-bridges_all .s-culvert_good{fill:#3f8f4e}
.il-bridges_all .s-culvert_good,.il-bridges_all .s-culvert_fair,.il-bridges_all .s-culvert_poor{opacity:.7}
.il-ust_sites path{fill:#8a6a3c}
.il-ust_sites .s-spa{fill:#c9532a}
.il-ust_releases path{fill:none;stroke:#c9532a;stroke-width:1.5}
.il-ust_releases .s-spa{stroke:#8a1c1c;stroke-width:2}
.il-dischargers path{fill:#4f6b8f}
.il-dischargers .s-major_v,.il-dischargers .s-minor_v{fill:#b8321f}
.il-quarries path{fill:#8c6a3c}
.il-quarries .s-salt{fill:#7d55c7}
.il-quarries .s-sand{fill:#c9a15a}
.il-quarries .s-clay,.il-quarries .s-shale{fill:#a3632c}
.il-boat_ramps path{fill:#2a78d6}
.il-boat_ramps .s-fishing{fill:#1a9e6a}
.il-boat_ramps .s-beach{fill:#e0a020}
.il-hazwaste path{fill:#8a1c1c}
.il-hazwaste .s-tsdf_v{fill:#c9532a}
.il-park_ride path{fill:#2a5db0}
.il-park_ride .s-rest{fill:#1a9e6a}
.il-park_ride .s-weigh{fill:#7f8a94}
.il-military path{fill:#4f6b2f}
.il-prisons path{fill:#5a3a6b}
.il-prisons .s-county,.il-prisons .s-juvenile{opacity:.75}
.il-ccr_sites path{fill:#3b3b3b}
.il-weather_stations path{fill:#3a8d94}
.il-weather_stations .s-radar{fill:#0b5fa5}
/* Ohio Hometown Atlas: the map page's UI layer (W2-01). Loads last in map.<hash>.css, after palette.css, cards.css and
   the engine's map.css; site.<hash>.css (tokens, base, components) loads before all of them. The engine's own single-class
   rules (.app .rail .rail-scroll .seg .zoomctl .layers ...) come later in the cascade than components.css, so every
   override here is scoped under .map-page (0-2-0 or more) and wins by specificity, never by editing the shell.
   D-55: one visually hidden h1. D-56: .app{display:contents} hands the shell's aside.rail and main.mapwrap to the
   .map-page grid. The DOM ids inside the rail are the engine's contract; ui.js moves nodes, never renames them. */

/* ---------- the layout fix (D-56) ---------- */
.map-page .app{display:contents}
.map-page{position:relative}
.map-page>h1{margin:0}
.map-page .rail{background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;height:auto;max-height:none}
.map-page .rail-scroll{overflow-y:auto;overscroll-behavior:contain;padding:14px 18px 18px;display:flex;flex-direction:column;gap:14px;flex:1;min-height:0}
.map-page .mapwrap{position:relative;min-width:0;min-height:0;background:var(--bg)}

/* ---------- loading hint and the noscript block ---------- */
#loadHint{position:absolute;left:50%;top:14px;transform:translateX(-50%);z-index:21;max-width:min(92%,42rem);padding:6px 12px;border-radius:var(--r-pill);background:var(--panel);color:var(--ink);border:1px solid var(--line-strong);box-shadow:var(--shadow);font-size:var(--fs-2);line-height:1.35;text-align:center}
.map-noscript{padding:var(--s-5) var(--gutter);max-width:var(--prose);margin:0 auto;font-size:15px;line-height:1.5}
.map-noscript .lead{font-size:var(--fs-4)}
.map-noscript ul{columns:2;column-gap:var(--s-5)}
@media (max-width:640px){.map-noscript ul{columns:1}}

/* ---------- brand row and search (the rail) ---------- */
.map-page .rail-brand{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2);flex-wrap:wrap}
.map-page .rail-brand .brand{font-size:var(--fs-4)}
.map-page .rail-brand .brand .long{display:inline}
.map-page .rail-brand .brand .short{display:none}
.map-page .rail-brand .site-nav{gap:var(--s-3)}
.map-page .search{position:relative}
.map-page .search>label{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;margin:0}
.map-page .search input{width:100%;padding:10px 40px 10px 14px;border:1.5px solid var(--line-strong);border-radius:var(--r-pill);background:var(--panel);font-size:var(--fs-4);outline:none;color:var(--ink)}
.map-page .search input::placeholder{color:var(--faint)}
.map-page .search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}
.map-page .search .kbd{right:12px}
.map-page .suggest{z-index:50;max-height:min(60vh,380px);border-radius:var(--r-3)}

/* ---------- the card, its actions row, the overview and the legend ---------- */
.map-page #result.card{padding:14px 14px 16px}
.map-page #result .also{display:grid}          /* the also strip stays on the map (components.css hides it on the pages only) */
.map-page #result .zipline{padding-right:32px}
.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 12px}
.card-actions .status{font-size:var(--fs-1);color:var(--muted);margin-left:auto}
.map-page #overview{padding:2px 0 0}
.map-page .legend-section{margin:0}
.map-page .legend-section>.eyebrow{margin-top:0}
.map-page .topic-about{margin:8px 0 0}
.map-page section.fine[hidden]{display:none}

/* ---------- before ui.js has restructured the rail (map.js is a separate 700 KB file): no flash of the old rail ---------- */
.map-page:not(.ui-ready) .modes,.map-page:not(.ui-ready) .layerstack .layers:not(#hhRow),.map-page:not(.ui-ready) section.fine{display:none}

/* ---------- topic picker ---------- */
.map-page .topic-now .dot{width:14px;height:14px;border-radius:4px}
.map-page .topic-now>div{min-width:0}
.map-page .topic-now b{display:block;line-height:1.25}
.map-page .topic-now .tn-sub:empty{display:none}
.map-page .tp-group[data-current]>summary{color:var(--ink)}
.map-page .tp-group[data-current]>summary::after{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);margin-left:2px;order:2}
.map-page .tp-group[data-current]>summary .n{order:3}
.map-page .tp-group .seg button .lbl{min-width:0}
.map-page .topic-picker .tp-filter-wrap{position:relative}
.map-page .tp-filter{padding-right:34px}
.map-page .tp-filter:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}
.map-page .tp-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:24px;height:24px;border:0;border-radius:50%;background:transparent;color:var(--muted);line-height:1;font-size:16px;cursor:pointer}
.map-page .tp-clear:hover{background:var(--panel-2);color:var(--ink)}
.map-page .tp-none{font-size:var(--fs-2);color:var(--muted);padding:6px 2px;margin:0}
.map-page .modes{display:flex;flex-direction:column;gap:6px}
.map-page .tp-group>summary{min-height:36px}
.map-page .tp-group>summary .n{margin-left:auto}
.map-page .tp-group .seg{display:grid;grid-template-columns:1fr 1fr;gap:2px;padding:0 6px 6px;border:0;background:transparent;border-radius:0;overflow:visible}
.map-page .tp-group .seg button{display:flex;align-items:center;gap:8px;text-align:left;padding:7px 8px;min-height:34px;border-radius:var(--r-1);border:1px solid transparent;background:transparent;color:var(--ink);font-size:var(--fs-2);font-weight:500;white-space:normal;line-height:1.2;flex:initial;cursor:pointer}
.map-page .tp-group .seg button:hover{background:var(--panel-2);color:var(--ink)}
.map-page .tp-group .seg button[aria-pressed="true"]{background:var(--ink);color:var(--panel);border-color:var(--ink)}
.map-page .tp-group .seg button .dot{width:10px;height:10px;border-radius:3px;border:1px solid rgba(0,0,0,.12)}
.map-page .tp-group .seg button[hidden]{display:none}
@media (max-width:640px){.map-page .tp-group .seg button{min-height:44px}}

/* ---------- layers: the desktop drawer and the phone tab ---------- */
.map-page .layers-btn{position:absolute;left:14px;bottom:14px;z-index:6;box-shadow:var(--shadow)}
.map-page .layers-btn[aria-expanded="true"]{border-color:var(--ink)}
.map-page .layers-drawer{position:absolute;left:14px;bottom:62px;z-index:7;width:min(420px,calc(100% - 28px));max-height:min(60%,560px);overflow:auto;overscroll-behavior:contain;background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--r-3);box-shadow:var(--shadow);padding:12px}
.map-page .layers-drawer>.eyebrow,.map-page #tab-layers>.eyebrow{margin:0 0 8px}
.map-page .ly-eyebrow{margin:6px 0 6px;color:var(--faint)}
.map-page .drawer-rows>.ly-eyebrow:first-child,.map-page .tab-rows>.ly-eyebrow:first-child{margin-top:0}
.map-page .layers-drawer .drawer-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 8px}
.map-page .layers-drawer .drawer-head .eyebrow{margin:0}
.map-page .layers-drawer .layers,.map-page #tab-layers .layers{position:static;bottom:auto;left:auto;display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px;pointer-events:auto;max-width:none}
.map-page .layers-drawer .layers:last-child,.map-page #tab-layers .layers:last-child{margin-bottom:0}
.map-page .layers-drawer .layers label,.map-page .layers-drawer .layers .lyhead,.map-page .layers-drawer .layers .lyhint,.map-page .layers-drawer .layers .bseg,.map-page .layers-drawer .layers button.pill,.map-page .layers-drawer .layers .ly-btn,
.map-page #tab-layers .layers label,.map-page #tab-layers .layers .lyhead,.map-page #tab-layers .layers .lyhint,.map-page #tab-layers .layers .bseg,.map-page #tab-layers .layers button.pill,.map-page #tab-layers .layers .ly-btn{box-shadow:none}
.map-page .layers-drawer .layers .lyhint,.map-page #tab-layers .layers .lyhint{flex-basis:100%;border-style:dashed}
.map-page .layers-drawer .layers .lyhead,.map-page #tab-layers .layers .lyhead{border-color:transparent;background:transparent;padding-left:0;flex-basis:100%}
.map-page .layers .ly-btn.on{border-color:var(--ink)}
.map-page .layerstack{bottom:60px;left:14px}
@media (max-width:640px){.map-page #tab-layers .layers label,.map-page #tab-layers .layers .ly-btn,.map-page #tab-layers .layers button.pill{min-height:40px}}

/* ---------- the phone: top bar, full-screen map, the sheet ---------- */
.map-page .topbar{display:none}
@media (max-width:899px){
  .map-page{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr)}
  .map-page .topbar{position:relative;z-index:46;display:flex;align-items:center;gap:var(--s-2);padding:8px var(--gutter);background:var(--panel);border-bottom:1px solid var(--line)}
  .map-page .topbar .brand{font-size:var(--fs-4);flex:none}
  .map-page .topbar .brand .long{display:none}
  .map-page .topbar .brand .short{display:inline}
  .map-page .topbar .topbar-search{flex:1;min-width:0}
  .map-page .topbar .search input{padding:9px 36px 9px 12px;font-size:var(--fs-3);min-height:40px}
  .map-page .topbar .site-nav a{min-height:40px;display:inline-flex;align-items:center;padding:6px 4px}
  .map-page .rail{position:fixed;left:0;right:0;bottom:0;top:auto;height:32dvh;max-height:none;border-right:0;border-bottom:0;border-top:1px solid var(--line-strong);border-radius:var(--r-4) var(--r-4) 0 0;box-shadow:0 -8px 28px rgba(0,0,0,.18);z-index:44;transition:height var(--t-base) var(--ease)}
  .map-page .rail.expanded{height:85dvh}
  .map-page .sheet-handle{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 12px 4px;border:0;background:transparent;width:100%;color:var(--muted);font-size:var(--fs-1);line-height:1.3;cursor:pointer;min-height:44px}
  .map-page .sheet-handle::before{content:"";width:40px;height:4px;border-radius:2px;background:var(--line-strong)}
  .map-page .sheet-handle .t{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-weight:500}
  .map-page .sheet-tabs{display:flex;gap:4px;padding:2px 12px 8px}
  .map-page .sheet-tabs button{flex:1;padding:8px;border:1px solid var(--line);border-radius:var(--r-2);background:var(--panel);font-size:var(--fs-2);font-weight:500;color:var(--muted);min-height:40px;cursor:pointer}
  .map-page .sheet-tabs button[aria-selected="true"]{background:var(--ink);color:var(--panel);border-color:var(--ink)}
  .map-page .rail-scroll{padding:0 14px 18px;gap:12px}
  .map-page .rail-brand{display:none}
  .map-page .layers-btn,.map-page .layers-drawer{display:none}
  .map-page .zoomctl{bottom:calc(32dvh + 14px);transition:bottom var(--t-base) var(--ease)}
  .map-page .rail.expanded ~ .mapwrap .zoomctl{bottom:calc(85dvh + 14px)}
  .map-page .layerstack{bottom:calc(32dvh + 14px);left:14px;max-width:calc(100% - 80px)}
  .map-page .ipanel{left:14px;right:14px;width:auto;max-width:none;top:14px;bottom:calc(32dvh + 14px);max-height:none}
  .map-page .fm-asm{max-height:calc(68dvh - 80px)}
  #loadHint{top:10px;font-size:var(--fs-1)}
}
@media (min-width:900px){
  .map-page .sheet-handle,.map-page .sheet-tabs{display:none}
  .map-page .sheet-panel[hidden]{display:none}
}

/* ---------- motion ---------- */
@media (prefers-reduced-motion: reduce){
  .map-page .rail,.map-page .zoomctl{transition:none}
}
