:root{--font-tracking-brand:-0.02em;--font-tracking-normal:normal;--font-weight-bold:700;--font-weight-medium:500;--font-weight-regular:400;--font-family-sans:"Mona Sans", -apple-system, BlinkMacSystemFont, sans-serif;font-family:var(--font-family-sans);color:#18372f;background:#f3f4f0;color-scheme:light;font-size:14px;font-weight:var(--font-weight-regular);line-height:1.35}
@font-face{font-family:"Instrument Serif";font-style:italic;font-weight:400;font-display:swap;src:url("/fonts/instrument-serif-italic.ttf") format("truetype")}
*{box-sizing:border-box}
html,body{width:100%;height:100%;margin:0;overflow:hidden}
button,input,a{font:inherit}
button{cursor:pointer}
[hidden]{display:none!important}
button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid #2b6a54;outline-offset:3px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.map-app{position:relative;width:100%;height:100%;isolation:isolate}
.map-canvas{width:100%;height:100%;touch-action:none;overscroll-behavior:contain;cursor:grab}
.map-canvas.is-dragging{cursor:grabbing}
.map-canvas>svg{display:block;width:100%;height:100%;touch-action:none;user-select:none;-webkit-user-select:none}
#areas path{pointer-events:none}
.map-pointer{cursor:pointer;outline:none}
.map-pointer .pin{stroke:#fff;stroke-width:1.5;filter:drop-shadow(0 2px 3px #0f2f2833)}
.map-pointer .pin-center{fill:#fff}
.map-pointer .pin-leader{fill:none;stroke:#50635b;stroke-width:1;pointer-events:none}
.map-pointer .pin-anchor{fill:#50635b;pointer-events:none}
.map-pointer text{fill:#18372f;font-family:var(--font-family-sans);font-size:12px;font-weight:var(--font-weight-medium);text-anchor:middle;dominant-baseline:central;pointer-events:none}
.map-hit-target .hit-target{fill:transparent;pointer-events:all;cursor:pointer}
.map-pointer .focus-ring{display:none}
.map-pointer:focus-visible .pin{stroke:#18372f;stroke-width:2.5}
.map-pointer:hover .pin{filter:drop-shadow(0 3px 5px #0f2f2855)}
.place-tooltip{position:absolute;z-index:4;width:max-content;max-width:min(240px,calc(100% - 24px));padding:8px 12px;border-radius:10px;background:#18372f;color:#fff;font-size:14px;line-height:1.35;text-align:center;pointer-events:none;transform:translate(-50%,-100%)}
.loading{position:absolute;inset:50% 16px auto;margin:0;text-align:center;font-size:16px;pointer-events:none}
.search-control,.map-controls,.map-legend,.place-card{position:absolute;z-index:2;background:#fffffff2;border:1px solid #0f2f2814;backdrop-filter:blur(12px)}
.search-control{top:16px;left:16px;width:min(340px,calc(100% - 96px));border-radius:14px}
.search-icon{position:absolute;left:16px;top:15px;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;pointer-events:none}
#placeSearch{width:100%;height:50px;padding:0 16px 0 46px;border:0;border-radius:14px;background:transparent;font-size:16px;color:inherit}
#placeSearch::placeholder{color:#50635b}
.search-results{max-height:min(380px,55vh);overflow:auto;list-style:none;margin:0;padding:6px;border-top:1px solid #0f2f2814}
.search-results button{width:100%;display:flex;gap:12px;align-items:center;border:0;border-radius:8px;background:transparent;padding:10px;text-align:left;color:inherit;min-height:48px}
.search-results button:hover,.search-results button:focus-visible{background:#e9eeea}
.result-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}
.result-copy{display:grid;gap:4px;font-size:14px;font-weight:var(--font-weight-medium)}
.result-copy small{font-size:12px;font-weight:var(--font-weight-regular);color:#50635b}
.no-results{padding:14px;font-size:14px;color:#50635b}
.map-controls{top:16px;right:16px;display:grid;border-radius:14px;overflow:hidden}
.map-controls button{display:grid;place-items:center;width:48px;height:48px;border:0;background:transparent;color:inherit;font-size:26px;line-height:1}
.map-controls button+button{border-top:1px solid #0f2f2814}
.map-controls button:hover{background:#e9eeea}
.map-controls button svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.map-legend{left:16px;bottom:16px;border-radius:14px}
.map-legend summary{display:flex;align-items:center;gap:10px;min-height:46px;padding:0 16px;list-style:none;cursor:pointer;font-size:14px;font-weight:var(--font-weight-medium)}
.map-legend summary::-webkit-details-marker{display:none}
.legend-dot{width:12px;height:12px;border-radius:50%;background:conic-gradient(#f6a000 0 20%,#ec6608 20% 40%,#a3195b 40% 60%,#00998f 60% 80%,#005ca9 80%)}
.legend-content{width:260px;padding:0 12px 12px}
.legend-content>p{font-size:12px;color:#50635b;margin:0 4px 8px}
.category-filter{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:8px;border:0;border-radius:8px;background:transparent;color:inherit;text-align:left;font-size:14px}
.category-filter:hover{background:#e9eeea}
.category-filter[aria-pressed=false]{opacity:.45}
.category-count{margin-left:auto;font-size:12px;color:#50635b}
.place-card{left:50%;bottom:16px;transform:translateX(-50%);width:min(620px,calc(100% - 200px));max-height:calc(100% - 92px);display:flex;flex-direction:column;overflow:hidden;border-radius:22px;padding:20px;animation:place-reveal 480ms cubic-bezier(.22,1,.36,1)}
.place-content{display:flex;flex-direction:column;min-height:0}
.place-content-snapshot{position:absolute;pointer-events:none;overflow:hidden}
.sheet-handle{display:block;width:36px;height:4px;margin:-8px auto 16px;border-radius:4px;background:#d3dcd5;flex-shrink:0}
.place-header{padding-right:32px;flex-shrink:0}
.place-body{margin-top:6px;min-height:0;max-height:38svh;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none}
.place-body::-webkit-scrollbar{display:none}
.place-summary,.place-description>p{margin:0;font-size:16px;line-height:1.6}
.place-body{transition:margin-top 420ms cubic-bezier(.22,1,.36,1)}
.place-card[data-description-expanded=true] .place-body{margin-top:16px}
.place-description>p+p{margin-top:12px}
.read-more{display:inline;margin-inline-start:6px;padding:0;border:0;background:none;color:#2b6a54;font-size:14px;font-weight:var(--font-weight-medium);line-height:inherit;white-space:nowrap;text-decoration:underline;text-underline-offset:4px}
.close-place{position:absolute;right:6px;top:6px;display:grid;place-items:center;width:40px;height:40px;border:0;border-radius:50%;background:transparent;color:inherit;font-size:26px}
.close-place:hover{background:#e9eeea}
.place-category{margin:0 0 16px;font-size:12px;font-weight:var(--font-weight-medium);letter-spacing:var(--font-tracking-normal)}
.place-card h1{margin:0;font-family:"Instrument Serif",serif;font-style:italic;font-size:28px;line-height:1.15;font-weight:400;letter-spacing:-.02em}
.place-note{margin:6px 0 0;font-size:14px;line-height:1.5;color:#50635b}
.place-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:16px;flex-shrink:0}
.place-actions a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:12px 16px;border-radius:999px;background:transparent;color:#18372f;font-size:12px;font-weight:var(--font-weight-medium);text-decoration:none;transition:background-color 280ms cubic-bezier(.22,1,.36,1),color 280ms cubic-bezier(.22,1,.36,1)}
.place-actions .primary-link{background:#2b6a54;color:#fff}
.place-maps-link{margin-left:auto}
.place-actions a:hover,.place-actions a:focus-visible{background:#2b6a54;color:#fff}
.place-actions .primary-link:hover,.place-actions .primary-link:focus-visible{background:#18372f}
@media(max-width:700px){
  .search-control{top:12px;left:12px;width:calc(100% - 84px)}
  .map-controls{top:12px;right:12px}
  .map-controls button{width:44px;height:44px}
  .map-legend{left:12px;bottom:12px}
  .place-card{left:12px;right:12px;bottom:70px;transform:none;width:auto;padding:16px;max-height:calc(100% - 150px)}
  .sheet-handle{margin:-4px auto 12px}
  .place-body{max-height:34svh}
  .place-card h1{font-size:26px}
  .place-actions{margin-top:12px}
  .map-legend[open]{z-index:3}
  .legend-content{width:min(280px,calc(100vw - 24px))}
}
@keyframes place-reveal{from{opacity:0;translate:0 14px}to{opacity:1;translate:0 0}}
@media(max-height:480px){
  .place-card{bottom:12px;max-height:calc(100% - 24px)}
  .place-body{max-height:40svh}
}
@media(prefers-reduced-motion:reduce){.place-card{animation:none}.place-body,.place-actions a{transition:none}}
