[data-service-map]{--map-ink:#191a1c;--map-paper:#ecebe7;--map-accent:#c03d2c;color:var(--map-ink);font-family:Arial,sans-serif;min-width:0}
.service-map-frame{position:relative;overflow:hidden;background:#191a1c;border:1px solid #5b5d61}
.service-map-frame svg{display:block;width:100%;height:auto;touch-action:pan-y}
.service-map-frame .land{fill:#393c3f}.service-map-frame .water{fill:#191a1c;stroke:#8c8d90;stroke-width:.8;stroke-linejoin:round}
.service-map-frame text{fill:#f0efeb;font:13px Arial,sans-serif}
.service-map-frame .water-label{font:italic 25px Georgia,serif;fill:#d8d6ce}
.service-map-frame .county-label{font:13px Arial,sans-serif;letter-spacing:5px;fill:#d8d6ce}
.service-map-frame .town{cursor:pointer;outline:none}
.service-map-frame .hit{fill:transparent}.service-map-frame .halo{fill:none;stroke:transparent;stroke-width:1.5}
.service-map-frame .pin{fill:#ecebe7;stroke:#191a1c;stroke-width:1.5}
.service-map-frame .town-label{opacity:0;pointer-events:none;transition:opacity .18s}
.service-map-frame .town-label text{paint-order:stroke;stroke:#393c3f;stroke-width:4px;stroke-linejoin:round}
.service-map-frame .town-label path{fill:none;stroke:#d8d6ce;stroke-width:.6}
.service-map-frame .anchor-town .town-label,.service-map-frame .town:hover .town-label,.service-map-frame .town:focus-visible .town-label,.service-map-frame .town[aria-pressed=true] .town-label{opacity:1}
.service-map-frame .town[aria-pressed=true] .pin{fill:var(--map-accent);stroke:#f0efeb}
.service-map-frame .town[aria-pressed=true] .halo{stroke:#f0efeb}
.service-map-frame .town:focus-visible .halo{stroke:#f0efeb;stroke-width:3}
.map-hint{position:absolute;left:24px;top:22px;color:#d8d6ce;font-size:12px;pointer-events:none}
.map-zoom{position:absolute;right:20px;top:18px;display:flex;gap:4px}
.map-zoom button{width:40px;height:40px;background:#191a1c;color:#f0efeb;border:1px solid #8c8d90;border-radius:3px;font:20px Arial;cursor:pointer}
.map-zoom button:last-child{width:auto;padding-inline:13px;font-size:12px}.map-zoom button:disabled{opacity:.45;cursor:default}
.map-town-buttons{display:grid;grid-template-columns:1fr 1fr;gap:48px;margin-top:32px}
.county-communities h4{font:400 30px Georgia,serif;margin:0 0 16px;padding-bottom:15px;border-bottom:1px solid #8c8d90}
.county-communities>div{display:flex;flex-wrap:wrap;gap:5px 18px;align-content:start}
.map-town-buttons button{font:14px/1.4 Arial,sans-serif;color:var(--map-ink);min-height:44px;padding:9px 0;border:0;border-bottom:2px solid transparent;background:transparent;cursor:pointer;text-align:left}
.map-town-buttons button[aria-pressed=true]{border-bottom-color:var(--map-accent);font-weight:700}
.map-town-buttons button:hover{text-decoration:underline;text-underline-offset:5px}
.map-selection{margin-top:28px;padding-top:25px;border-top:1px solid #8c8d90;display:flex;justify-content:space-between;gap:32px;align-items:start}
.map-selection h3{font:30px/1.1 Georgia,serif;margin:0 0 10px}.map-selection p{font:15px/1.6 Arial,sans-serif;max-width:600px;margin:0}
.map-selection a{color:inherit;white-space:nowrap;font:14px/1.5 Arial,sans-serif;padding-top:4px;text-underline-offset:4px}
.map-attribution{font:11px/1.5 Arial,sans-serif!important;margin-top:20px!important;color:#5b5d61}.map-attribution a{color:inherit}
.map-zoom button:focus-visible,.map-town-buttons button:focus-visible{outline:3px solid var(--map-accent);outline-offset:4px}
@media(max-width:600px){.service-map-frame svg{min-height:265px}.map-hint{left:12px;top:15px;font-size:10px}.map-zoom{right:10px;top:9px}.map-zoom button{width:34px;height:34px}.map-town-buttons{gap:24px;grid-template-columns:1fr}.county-communities h4{font-size:26px;margin-bottom:8px}.map-selection{display:block}.map-selection a{display:inline-block;margin-top:18px}.service-map-frame .anchor-town .town-label{opacity:0}.service-map-frame .town[aria-pressed=true] .town-label,.service-map-frame .town:focus-visible .town-label{opacity:1}.service-map-frame .town-label text{font-size:23px}.service-map-frame .county-label{font-size:22px;letter-spacing:3px}.service-map-frame .water-label{font-size:29px}}
@media(prefers-reduced-motion:reduce){.service-map-frame .town-label{transition:none}}
/* ShoreGrade's actual coastline, green land/water and linked town index. */
[data-service-map]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:22px 42px;padding:36px;background:#18251e;color:#f0efeb}
.service-map-frame{grid-column:1;align-self:start;border:0;background:#293d30;margin-top:8px}
.service-map-frame svg{background:#293d30}
.service-map-frame .coast{fill:#121c17;fill-rule:evenodd;stroke:#789477;stroke-width:1.5}
.service-map-frame .pin{fill:#d8e7bf;stroke:#18231e;stroke-width:2;transition:r .2s,fill .2s}
.service-map-frame .town[aria-pressed=true] .pin,.service-map-frame .town:focus-visible .pin{r:9;fill:#ddf19a;stroke:#789477;stroke-width:2.5}
.service-map-frame .water-label{fill:#d8e7bf;font:11px Arial,sans-serif;letter-spacing:3px}
.map-hint{display:none}.map-zoom{opacity:.85}.map-zoom button{background:#18251e;color:#f0efeb;border-color:#789477}
.map-town-buttons{grid-column:2;grid-row:1/3;display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:0;align-items:start}
.county-communities h4{color:#d8e7bf;font-size:14px;margin:0 0 12px;font-weight:400}
.county-communities>div{display:block}
.map-town-buttons button{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid #78947755;background:transparent;border-radius:0;color:#f0efeb;padding:14px 0;font-size:14px}
.map-town-buttons button[aria-pressed=true],.map-town-buttons button:hover{background:transparent;color:#ddf19a;border-color:#ddf19a}
.map-selection{grid-column:1;display:block;border:0;margin:0;padding:0}.map-selection h3{color:#ddf19a;font:400 18px Arial,sans-serif}.map-selection p{color:#c3cdc5;font-size:14px;margin:10px 0}.map-selection a{color:#f0efeb;font-size:14px}
.map-attribution{grid-column:1/-1;color:#c3cdc5;font-size:11px}.map-attribution a{color:inherit}
@media(max-width:900px){[data-service-map]{gap:24px;padding:24px}.map-town-buttons{grid-template-columns:1fr}.map-selection{align-self:start}}
@media(max-width:600px){[data-service-map]{display:block;padding:20px}.map-selection{margin:20px 0}.map-town-buttons{display:grid;grid-template-columns:1fr 1fr;margin-top:20px;gap:18px}.map-town-buttons button{font-size:13px}.map-attribution{margin-top:20px}}
