/* Keep the original Roam page. Give the geography its own unobstructed area;
   search and city details sit outside it, so selecting a city doesn't shrink it. */
.map-stage{height:auto;min-height:0;display:flex;flex-direction:column;background:#fffaf7;box-shadow:none}
.map-canvas{position:relative;height:clamp(440px,60svh,660px);flex-shrink:0;overflow:hidden;background:#f1eee8}
.floating-tools{position:relative;inset:auto;width:100%;max-width:none;padding:14px;display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);background:#fffaf7}
.floating-tools .search-shell{flex:1;width:auto;min-width:0;box-shadow:none;border-color:#ded5cf}
.floating-tools .filter-row{margin:0;display:flex;gap:8px;flex-shrink:0}
.filter-pill,.back-pill{min-height:46px;font-size:13px;box-shadow:none}
.expand-map{display:flex;white-space:nowrap}
.back-pill{top:12px;left:12px;right:auto;z-index:5;background:#fffdfb}
.map-controls,.expanded .map-controls{right:12px;bottom:35px;background:#fffdfbf2;box-shadow:0 2px 10px #47332e0b}
.map-controls button{width:44px;height:44px}
.map-context,.map-context.intro,.map-context.county-card{position:relative;inset:auto;width:100%!important;border:0;border-top:1px solid var(--line);border-radius:0;padding:16px 20px;background:#fffaf7;box-shadow:none;backdrop-filter:none}
.map-context.intro h2,.map-context.county-card h2{font-size:19px}
.map-context p.card-copy{font-size:14px;color:#63554f;line-height:1.5}
.map-context.intro p.card-copy,.map-context.county-card p.card-copy{font-size:13px}
.map-context.city-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,360px);gap:16px 32px;align-items:center}
.city-overview{min-width:0}
.city-overview h2{font-size:25px;margin-top:5px}
.city-overview .card-top{justify-content:flex-start}
.city-overview .card-eyebrow{font-size:10px;letter-spacing:1px}
.city-overview .card-note{text-align:left;font-size:12px;margin-top:6px}
.city-next{display:grid;gap:8px}
.trip-area-note{font-size:13px;line-height:1.5;text-align:center;color:#63554f;margin:0}
.city-next .button{margin-top:0;min-height:48px;font-size:15px}
.city-more{margin-top:4px}
.city-more summary{min-height:44px;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;font-size:13px;color:#6e414d;list-style:none}
.city-more summary::after{content:'⌄'}
.city-more[open] summary::after{content:'⌃'}
.city-more summary::-webkit-details-marker{display:none}
.city-more .card-link{font-size:13px;margin-inline:auto;width:100%}
.map-compass,.map-tip{display:none}
.map-legend,.expanded .map-legend{bottom:9px;right:auto;left:12px;width:auto;font-size:11px;gap:14px;background:#f1eee8e8;padding:3px 7px;border-radius:8px}
.geo-label{font-size:14px;color:#4e4540;font-weight:600;background:#fffdf8e8;padding:3px 6px;line-height:20px}
.map-road{opacity:.55;stroke-width:1.1}.map-road.major{stroke-width:2;opacity:.75}
.county-shape{stroke:#e5cfc8;stroke-width:1.1}
.county-shape.selected{fill:#fbe1e1;stroke:#c78193;stroke-width:1.7}
.city-speck{fill:#c98492;opacity:.5}
.pin-name{font-size:14px;font-weight:600;line-height:20px;background:#fffaf8ed;border-radius:5px;padding:1px 4px;text-shadow:none;color:#693447}
.city-pin.quiet .pin-name{pointer-events:none}
.pin-heart{width:30px;height:30px}
.pin-heart svg{width:15px;height:15px}
.map-stage.expanded{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}
.expanded .floating-tools{top:auto;flex-shrink:0}
.expanded .map-canvas{flex:1;height:auto;min-height:100px}
.expanded .map-context{flex-shrink:0;max-height:45dvh;overflow:auto}
.community-intro{margin-top:20px}
@media(max-width:700px){
 .map-stage{width:100%;margin-left:0;border-radius:20px}
 .map-canvas{height:clamp(350px,49svh,460px)}
 .floating-tools{padding:10px;gap:8px;flex-wrap:wrap}
 .floating-tools .search-shell{flex-basis:100%;min-height:48px;font-size:15px}
 .floating-tools .filter-row{width:100%;gap:8px}
 .floating-tools .filter-pill{min-height:44px;font-size:13px;padding:8px 12px}
 .has-county .expand-map{font-size:13px;min-width:0}
 .has-county .expand-map span{font-size:16px}
 .back-pill{top:10px;left:10px;min-height:44px;font-size:12px}
 .map-context,.map-context.intro,.map-context.county-card{padding:13px 14px;min-height:76px}
 .map-context.intro h2,.map-context.county-card h2{font-size:18px}
 .map-context.city-card{display:block;padding:13px 16px}
 .city-next{margin-top:12px}
 .city-overview .card-close{margin-left:auto}
 .city-overview .card-top+h2{font-size:24px}
 .city-overview .card-note{font-size:12px}
 .city-next .button{margin-top:0;font-size:15px}
 .map-context.city-card .card-link{font-size:13px}
 .city-more summary{min-height:36px;margin-top:3px}
 .map-controls,.expanded .map-controls{right:10px;bottom:36px}
 .pin-name{font-size:14px}
 .map-credit{font-size:10px}
}

/* Every overview county has a visible button, including small/off-canvas shapes. */
#county-callouts{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:hidden}
#county-callouts path{fill:none;stroke:#ae7c87;stroke-width:1;opacity:.7}
#county-callouts circle{fill:#aa6075;stroke:#fffaf8;stroke-width:1}
button.geo-label{min-height:44px;min-width:44px;padding:6px 9px;font-size:14px;line-height:20px;border:1px solid #e6d9d2;background:#fffdfa;box-shadow:0 2px 6px #7652430c}
button.geo-label.callout-label{border-color:#d9b8bf}
.county-shape.label-highlight{fill:#f3d5d2;stroke:#a85c71;stroke-width:2}
.map-stage:not(.has-county) .map-canvas{min-height:var(--county-overview-height,0px)}
.map-stage.expanded:not(.has-county){overflow-y:auto;overscroll-behavior:contain}
@media(max-width:700px){
 .map-stage:not(.has-county) .map-canvas{height:max(560px,68svh,var(--county-overview-height,0px))}
 .map-stage.expanded:not(.has-county) .map-canvas{flex:1 0 auto;min-height:max(560px,var(--county-overview-height,0px))}
 button.geo-label{font-size:13px;padding-inline:8px}
}
/* The name chip stays light; its transparent touch target is still 44px tall. */
button.geo-label{isolation:isolate;background:transparent;border:0;box-shadow:none}
button.geo-label::before{content:'';position:absolute;inset:8px 0;z-index:-1;border:1px solid #e6d9d2;border-radius:7px;background:#fffdfa;box-shadow:0 1px 4px #7652430c}
button.geo-label.callout-label::before{border-color:#d9b8bf}
button.geo-label:hover,button.geo-label:focus-visible{background:transparent}
button.geo-label:hover::before,button.geo-label:focus-visible::before{background:#fbe0de;border-color:#a85c71}

/* Browser scroll remains available with one finger, including over named pins.
   The non-passive two-touch handler owns map pinch/pan, not page zoom. */
.map-stage .map-surface,.map-stage .city-pin,.map-stage .geo-label{touch-action:pan-x pan-y}
.map-gesture-help{margin:0;padding:8px 14px;font-size:12px;line-height:1.5;color:#6b5550;background:#fffaf7;border-bottom:1px solid var(--line)}
.map-stage.expanded .map-gesture-help{flex-shrink:0}

/* The opening explains the series and makes verified progress legible at a glance. */
.journey-heading{align-items:center;gap:48px;margin-bottom:28px}
.journey-intro{max-width:760px}
.journey-heading h1{font-size:clamp(30px,3.2vw,44px);line-height:1.1;letter-spacing:-1.6px;margin-top:10px;max-width:750px;text-wrap:balance}
/* Short phrases guide the headline's line breaks without clipping enlarged text. */
.journey-heading h1 span{display:block}
.journey-description{font-size:16px;line-height:1.6;color:#62524c;margin-top:14px;max-width:580px}
.journey-progress{flex:0 0 340px;padding:20px 0 14px}
.journey-totals{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.journey-stat+ .journey-stat{border-left:1px solid #deccc4;padding-left:28px}
.stat-number{line-height:1;white-space:nowrap;color:#7d314d}
.stat-number b{font-size:52px;letter-spacing:-2px;font-weight:600;font-variant-numeric:tabular-nums}
.stat-number>span{font-size:16px;color:#78645b}
.stat-label{font-size:15px;font-weight:650;margin-top:8px;color:#3f302c;white-space:nowrap}
.journey-stat progress{display:block;width:100%;height:3px;margin-top:12px;appearance:none;border:0;border-radius:4px;overflow:hidden;background:#e9d8d2;color:#a34966}
.journey-stat progress::-webkit-progress-bar{background:#e9d8d2;border-radius:4px}
.journey-stat progress::-webkit-progress-value{background:#a34966;border-radius:4px}
.journey-stat progress::-moz-progress-bar{background:#a34966;border-radius:4px}
.journey-progress-note{font-size:12px;line-height:1.5;color:#78645b;margin-top:14px}
.map-heading{margin-bottom:14px}
.map-heading h2{font-size:24px;letter-spacing:-.6px}
.map-heading p{font-size:14px;color:#62524c;margin-top:5px;line-height:1.5}

/* County overview: distinct geography, quiet name labels, no road-map noise.
   The detailed roads, water and hearts return when a county is selected. */
.map-stage:not(.has-county) .map-canvas{background:#f4efe8}
.map-stage:not(.has-county) .county-shape{fill:#efd3cb;stroke:#b58578;stroke-width:1.3}
.map-stage:not(.has-county) .county-shape.shade-2{fill:#e3c0c4}
.map-stage:not(.has-county) .county-shape.shade-3{fill:#f5e4cf}
.map-stage:not(.has-county) .county-shape.shade-4{fill:#e8d6b9}
.map-stage:not(.has-county) .county-shape.finished{fill:#bbcdb6;stroke:#71896c}
.map-stage:not(.has-county) .county-shape:hover,.map-stage:not(.has-county) .county-shape:focus,.map-stage:not(.has-county) .county-shape.label-highlight{fill:#e6aebb;stroke:#8a405a;stroke-width:2}
.map-stage:not(.has-county) .map-road,.map-stage:not(.has-county) .city-speck{display:none}
.map-stage:not(.has-county) .map-water{opacity:.55}
.map-stage:not(.has-county) .geo-label.water{display:none}
button.geo-label{font-size:14px;font-weight:650;padding-inline:5px;color:#4c3434;text-shadow:0 1px 3px #fff8ee;letter-spacing:-.2px}
button.geo-label::before{inset:10px 0;border:0;border-radius:3px;background:#fff7ee85;box-shadow:none}
button.geo-label.callout-label::before{background:#fffaf3e8}
button.geo-label:hover::before,button.geo-label:focus-visible::before{background:#fff9f4;box-shadow:0 0 0 1px #a85c71}
#county-callouts path{stroke:#815559;stroke-width:1;opacity:.7}
#county-callouts circle{fill:#815559}
.map-legend i.county-open{background:#e8d0c5;border-color:#b58578}
.map-legend i.county-finished{background:#bbcdb6;border-color:#71896c}
@media(max-width:1000px){
 .journey-heading{gap:28px}.journey-progress{flex-basis:300px}
 .journey-totals{gap:20px}.journey-stat+ .journey-stat{padding-left:20px}
}
@media(max-width:700px){
 .preview-note{display:none}
 .journey{padding-top:12px}
 .journey-heading{margin-bottom:20px}
 .journey-heading .eyebrow{font-size:10px;letter-spacing:1.4px}
 .journey-heading h1{font-size:clamp(28px,8.2vw,34px);line-height:1.16;letter-spacing:-.9px;margin-top:8px;text-wrap:initial}
 .journey-description{font-size:16px;line-height:1.5;margin-top:10px;max-width:34ch}
 .journey-progress{padding:14px 0 0;margin-top:14px;border-top:1px solid #e6d8d1}
 .journey-totals{gap:22px}
 .journey-stat+ .journey-stat{padding-left:22px}
 .stat-number b{font-size:43px;letter-spacing:-1.7px}
 .stat-number>span{font-size:15px}
 .stat-label{font-size:14px;margin-top:5px}
 .journey-progress-note{font-size:12px;margin-top:12px}
 .map-heading h2{font-size:23px}.map-heading p{font-size:14px}
 .map-stage:not(.has-county) .map-canvas{height:max(440px,min(560px,123vw),var(--county-overview-height,0px))}
 .map-stage.expanded:not(.has-county) .map-canvas{min-height:max(440px,var(--county-overview-height,0px))}
 button.geo-label{font-size:13px;padding-inline:4px}
 .map-gesture-help{font-size:11px}
}
@media(max-width:360px){
 .stat-number b{font-size:38px}
 .journey-totals{gap:16px}.journey-stat+ .journey-stat{padding-left:16px}
}

/* Zoom controls never displace county names or cover city hearts. */
.map-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 12px;background:#f4efe8;border-top:1px solid #e5dcd3;flex-shrink:0}
.map-footer .map-controls{position:static;display:flex;flex-direction:row;box-shadow:none;flex-shrink:0;border-radius:12px;padding:0;background:#fffaf7}
.map-footer .map-controls button+button{border-top:0;border-left:1px solid #eee2d9;border-radius:0}
.map-footer .map-legend{position:static;padding:0;background:none;font-size:11px;gap:14px}
@media(max-width:700px){.map-footer .map-legend{display:grid;gap:3px}.map-footer{padding:6px 10px}}
