/* Local cartography and the progressive community chooser. */
.area-finder--map .area-directory-body{grid-template-columns:minmax(0,1.06fr) minmax(0,1fr);align-items:start}
.area-finder--map .area-directory-results{padding:30px 26px 30px;border-left:1px solid var(--line);min-height:100%}
.area-finder--map .area-town-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 8px;padding-top:10px}
.area-finder--map .area-town-name{font-size:12px}
.area-finder--map .area-town-select{display:flex;justify-content:space-between;gap:8px;align-items:center;min-height:44px;padding:9px 10px;border:1px solid transparent;border-radius:9px;color:var(--ink);transition:background .2s,border-color .2s,color .2s}
.area-finder--map .area-town-select>.icon{flex:none;width:13px;height:13px;opacity:.3;transform:rotate(-35deg);transition:opacity .2s,transform .2s}
.area-finder--map .area-town-select:hover{color:var(--mood-link);background:color-mix(in srgb,var(--mood-color) 8%,transparent);border-color:color-mix(in srgb,var(--mood-color) 22%,transparent)}
.area-finder--map .area-town-select:hover>.icon{opacity:1;transform:rotate(0)}
.area-finder--map .is-selected .area-town-select{background:color-mix(in srgb,var(--mood-color) 12%,transparent);border-color:color-mix(in srgb,var(--mood-color) 40%,transparent);color:var(--mood-link)}
.area-finder--map .is-selected .area-town-select>.icon{opacity:1;transform:rotate(0)}
.area-finder--map .area-town-note{padding:0 10px}
.area-finder--map .area-results-heading{display:block;margin-bottom:21px}
.area-finder--map .area-results-heading p{margin-top:6px;font-size:11px}
.area-choice-hint{padding:13px 15px;border-radius:12px;border:1px solid color-mix(in srgb,var(--mood-color) 25%,transparent);background:color-mix(in srgb,var(--mood-color) 8%,transparent);font-size:12px;line-height:1.7;color:var(--ink)}
.area-map-panel{position:sticky;top:120px;isolation:isolate;min-width:0;padding:30px 28px 20px;background:radial-gradient(ellipse at 60% 38%,color-mix(in srgb,var(--mood-color) 7%,transparent),transparent 72%)}
.area-map-heading{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:15px}
.area-map-kicker{display:flex;align-items:center;gap:7px;font-size:10px;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:var(--mood-link)}
.area-map-kicker i{width:5px;height:5px;flex:none;border-radius:50%;background:var(--mood-color);box-shadow:0 0 14px var(--mood-color)}
.area-map-heading h2{font-size:clamp(23px,2.4vw,31px);font-weight:500;letter-spacing:-.045em;margin:9px 0 0;line-height:1.2}
.area-map-heading p{font-size:11px;line-height:1.6;color:var(--muted);margin:10px 0 0}
.area-map-north{display:flex;flex-direction:column;align-items:center;gap:7px;font-size:10px;font-weight:600;letter-spacing:.1em;color:var(--muted);padding:8px 10px;flex:none}
.area-map-north svg{width:24px;height:33px;fill:color-mix(in srgb,var(--mood-color) 12%,var(--brand-primary));stroke:var(--mood-link);stroke-width:1.2;stroke-linejoin:round}
.area-map-canvas{position:relative;overflow:hidden;margin:22px 0 0;aspect-ratio:900/720;border:1px solid color-mix(in srgb,var(--mood-color) 15%,var(--line));border-radius:19px;background:radial-gradient(ellipse at 53% 45%,#0b273999,transparent 74%),color-mix(in srgb,var(--brand-background) 72%,transparent);box-shadow:inset 0 1px #ffffff08,inset 0 -25px 45px #0002}
.area-map-canvas:after{content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;box-shadow:inset 0 0 38px color-mix(in srgb,var(--brand-background) 75%,transparent)}
.area-map-svg{display:block;width:100%;height:100%;overflow:hidden;touch-action:pan-y;color:var(--ink);cursor:grab}
.area-map-svg:active{cursor:grabbing}
.area-map-world{--map-marker-scale:1;transform-origin:0 0;transition:transform .85s cubic-bezier(.22,.75,.25,1)}
.area-map-world.is-dragging{transition:none}
.area-map-counties path{fill:color-mix(in srgb,var(--mood-color) 4%,transparent);stroke:color-mix(in srgb,var(--mood-color) 20%,#73889522);stroke-width:.7;vector-effect:non-scaling-stroke}
.area-map-counties path:nth-child(3n){fill:color-mix(in srgb,var(--mood-color) 6%,transparent)}
.area-map-graticule{pointer-events:none}
.area-map-graticule path{fill:none;stroke:var(--ink);stroke-opacity:.03;stroke-width:1;stroke-dasharray:3 11;vector-effect:non-scaling-stroke}
.area-map-graticule text{fill:var(--muted);opacity:.45;font-size:13px;font-family:monospace;letter-spacing:.04em}
.area-map-pin{color:var(--mood-link);cursor:pointer;outline:none;transition:opacity .25s}
.area-map-marker{transform:scale(var(--map-marker-scale));transform-origin:0 0;transition:transform .85s cubic-bezier(.22,.75,.25,1)}
.area-map-pin-hit{fill:transparent;stroke:none}
.area-map-pin-halo{fill:transparent;stroke:transparent;stroke-width:1.2;vector-effect:non-scaling-stroke;transition:fill .25s,stroke .25s}
.area-map-pin-dot{fill:var(--mood-link);stroke:var(--brand-background);stroke-width:1.5;vector-effect:non-scaling-stroke}
.area-map-place-label{font-family:inherit;font-size:21px;font-weight:500;fill:var(--ink);paint-order:stroke;stroke:var(--brand-background);stroke-width:6px;stroke-linejoin:round;opacity:0;pointer-events:none;transition:opacity .15s}
.area-map-pin.is-major .area-map-pin-dot{fill:var(--mood-link);r:7}
.area-map-pin.is-major .area-map-place-label{opacity:.88;font-size:20px}
.area-finder--map.has-area-selection .area-map-pin.is-major:not(.is-selected):not(:hover):not(:focus) .area-map-place-label{opacity:0}
.area-map-pin:hover .area-map-pin-halo,.area-map-pin:focus .area-map-pin-halo{fill:color-mix(in srgb,var(--mood-color) 14%,transparent);stroke:var(--mood-link)}
.area-map-pin:hover .area-map-place-label,.area-map-pin:focus .area-map-place-label{opacity:1}
.area-map-pin.is-selected{color:var(--brand-accent)}
.area-map-selected-marker{display:none;pointer-events:none}
.area-map-pin.is-selected .area-map-selected-marker{display:block}
.area-map-pin.is-selected .area-map-pin-dot,.area-map-pin.is-selected .area-map-place-label{opacity:0}
.area-map-pin.is-selected .area-map-pin-halo{fill:color-mix(in srgb,var(--brand-accent) 9%,transparent);stroke:transparent}
.area-map-pin.is-selected:focus .area-map-pin-halo{stroke:var(--ink);stroke-width:2}
.area-map-selected-shadow{fill:#0008}
.area-map-selected-pulse{fill:color-mix(in srgb,var(--brand-accent) 7%,transparent);stroke:color-mix(in srgb,var(--brand-accent) 62%,transparent);stroke-width:1.2;vector-effect:non-scaling-stroke;transform-origin:0 0;animation:area-map-selected-pulse 3.4s ease-out infinite}
.area-map-teardrop{fill:var(--brand-accent);stroke:color-mix(in srgb,var(--brand-accent) 70%,white);stroke-width:2;filter:drop-shadow(0 5px 8px #0006);pointer-events:visiblePainted}
.area-map-teardrop-core{fill:var(--brand-background);stroke:#ffffff35;stroke-width:1.5}
.area-map-selected-label rect{fill:var(--brand-primary);stroke:color-mix(in srgb,var(--brand-accent) 40%,var(--line));stroke-width:1.3;filter:drop-shadow(0 4px 7px #0005)}
.area-map-selected-label text{font-family:inherit;font-size:21px;font-weight:600;fill:var(--ink);letter-spacing:.015em}
.area-map-pin.is-muted{opacity:.12;pointer-events:none}
.area-map-pin.is-muted .area-map-place-label{opacity:0}
.area-map-toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;padding:13px 0 16px}
.area-map-controls{display:flex;align-items:center;gap:3px;padding:3px;border:1px solid var(--line);border-radius:13px;background:color-mix(in srgb,var(--brand-primary) 80%,transparent);box-shadow:inset 0 1px #ffffff06}
.area-map-controls button{display:flex;align-items:center;justify-content:center;gap:6px;min-width:44px;min-height:44px;padding:8px;border:0;border-radius:9px;background:transparent;color:var(--ink);font-size:22px;line-height:1;cursor:pointer;transition:background .2s,color .2s}
.area-map-controls button:hover:not(:disabled){background:#ffffff0b;color:var(--mood-link)}
.area-map-controls button:focus-visible{outline:2px solid var(--mood-link);outline-offset:1px}
.area-map-controls button:disabled{opacity:.28;cursor:default}
.area-map-controls button[data-map-reset]{border-left:1px solid var(--line);border-radius:0 9px 9px 0;padding:8px 10px}
.area-map-controls button span{font-size:11px}
.area-map-controls svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.area-map-legend{display:flex;gap:12px;align-items:center;font-size:10px;line-height:1.5;color:var(--muted)}
.area-map-legend>span{display:flex;align-items:center;gap:6px}
.area-map-legend i{width:6px;height:6px;border-radius:50%;background:var(--mood-link);box-shadow:0 0 0 3px color-mix(in srgb,var(--mood-color) 9%,transparent)}
.area-map-legend svg{width:10px;height:13px;fill:var(--brand-accent)}
.area-map-legend svg circle{fill:var(--brand-background)}
.area-map-selection{position:relative;z-index:2;min-height:190px;border:1px solid color-mix(in srgb,var(--mood-color) 22%,var(--line));border-radius:19px;padding:21px 22px;background:linear-gradient(125deg,color-mix(in srgb,var(--brand-primary) 90%,transparent),color-mix(in srgb,var(--brand-background) 80%,transparent));backdrop-filter:blur(20px);box-shadow:0 15px 35px #0002,inset 0 1px #ffffff09;transition:border-color .3s,box-shadow .3s}
.area-map-selection.has-selection{border-color:color-mix(in srgb,var(--brand-accent) 35%,var(--line));box-shadow:0 12px 40px #0003,0 0 40px color-mix(in srgb,var(--brand-accent) 4%,transparent)}
.area-selection-top{display:flex;gap:13px;align-items:center}
.area-selection-icon{display:grid;place-items:center;width:42px;height:42px;flex:none;border-radius:13px;color:var(--mood-link);background:color-mix(in srgb,var(--mood-color) 10%,transparent);border:1px solid color-mix(in srgb,var(--mood-color) 20%,transparent)}
.has-selection .area-selection-icon{color:var(--brand-accent);border-color:color-mix(in srgb,var(--brand-accent) 25%,transparent);background:color-mix(in srgb,var(--brand-accent) 8%,transparent)}
.area-selection-icon .icon{width:21px;height:21px}
.area-selection-eyebrow{display:block;font-size:9px;letter-spacing:.11em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}
.area-map-selection h3{font-size:22px;line-height:1.25;font-weight:500;letter-spacing:-.025em;margin:0}
.area-map-selection>p{font-size:12px;line-height:1.7;color:var(--muted);margin:14px 0}
.area-selection-continue{width:100%;min-height:44px;padding:12px 15px;border-radius:11px;justify-content:space-between;font-size:12px;gap:12px;text-align:left}
.area-selection-assurance{display:block;margin-top:12px;font-size:10px;line-height:1.7;color:var(--muted)}
.area-map-attribution{font-size:10px;line-height:1.8;color:var(--muted);margin:15px 4px 0}
.area-map-attribution a{text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--muted) 50%,transparent);text-underline-offset:2px}
.area-map-panel [hidden],.area-finder--map [hidden]{display:none!important}
@keyframes area-map-selected-pulse{0%,18%{transform:scale(.8);opacity:0}30%{opacity:.7}85%,100%{transform:scale(1.85);opacity:0}}
html[data-ambient-motion="paused"] .area-map-world,html[data-ambient-motion="paused"] .area-map-marker{transition:none}
html[data-ambient-motion="paused"] .area-map-selected-pulse{animation-play-state:paused;opacity:0!important}
@media(min-width:1100px){.area-finder--map .area-directory-results{padding:32px}.area-map-panel{padding:32px 32px 22px}}
@media(max-width:1100px) and (min-width:851px){.area-map-toolbar{justify-content:center}.area-map-controls{margin-left:auto}.area-map-legend{gap:9px}}
@media(max-width:850px){.area-finder--map .area-directory-body{grid-template-columns:minmax(0,1fr)}.area-finder--map .area-directory-results{border-left:0;border-top:1px solid var(--line);padding:25px}.area-map-panel{position:relative;top:auto;display:grid;grid-template-columns:1.1fr 1fr;gap:0 20px;padding:24px}.area-map-heading{grid-column:1/-1}.area-map-canvas{grid-column:1;grid-row:2;margin-top:20px}.area-map-toolbar{grid-column:1;grid-row:3;justify-content:center}.area-map-legend{flex:1}.area-map-selection{grid-column:2;grid-row:2/4;align-self:center;padding:18px;min-height:0}.area-map-attribution{grid-column:1/-1;margin-top:5px}.area-map-heading h2{font-size:26px}}
@media(max-width:560px){.area-map-panel{display:block;padding:23px 20px 18px}.area-map-heading h2{font-size:25px}.area-map-heading p{font-size:11px}.area-map-canvas{margin:20px -4px 0}.area-map-toolbar{gap:10px;padding:12px 0 16px;justify-content:space-between}.area-map-legend{font-size:9px;gap:9px;flex:none}.area-map-controls{gap:0}.area-map-controls button{min-width:44px;min-height:44px;padding:6px}.area-map-controls button[data-map-reset]{padding:6px 8px}.area-map-controls button[data-map-reset] span{display:none}.area-map-selection{padding:18px;min-height:0}.area-map-selection h3{font-size:22px}.area-map-attribution{margin:13px 2px 0;font-size:10px}.area-finder--map .area-directory-results{padding:23px 18px}.area-finder--map .area-group>summary{padding:15px 13px;gap:9px}.area-finder--map .area-group-content{padding:0 10px 13px}.area-finder--map .area-town-list{gap:1px 2px}.area-finder--map .area-town-select{font-size:13px;padding:8px 7px}.area-choice-hint{font-size:11px}}
@media(prefers-reduced-motion:reduce){.area-map-world,.area-map-marker,.area-map-pin,.area-map-place-label,.area-map-selection,.area-finder--map .area-town-select{transition:none!important}.area-map-selected-pulse{animation:none;opacity:0}}
/* Preserve readable pin labels when the SVG canvas becomes physically smaller. */
@media(max-width:1100px){.area-map-marker{transform:scale(calc(var(--map-marker-scale) * 1.6))}}
@media(max-width:560px){.area-map-marker{transform:scale(calc(var(--map-marker-scale) * 1.8))}}
