:root{--map-forest:#173b32;--map-sage:#dce6d8;--map-cream:#f7f5ef;--map-paper:#fffefa;--map-ink:#202b25;--map-muted:#6d776f;--map-gold:#bd9b5a;--map-line:#d9ddd5}
.map-hero{background:var(--map-forest);color:#fff;padding:52px 0 44px}
.map-hero .eyebrow{color:#d7c183}
.map-hero h1{font:400 clamp(2.35rem,5vw,4.3rem)/1.04 "Playfair Display",Georgia,serif;letter-spacing:-.035em;max-width:900px;margin:11px 0 15px}
.map-hero p{max-width:720px;color:#dce5dc;font-size:1rem;margin:0}
.map-main{padding:42px 0 70px;background:var(--map-cream)}
.map-intro{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:19px}
.map-intro h2,.suggestions-head h2{font:400 clamp(1.8rem,3vw,2.45rem)/1.15 "Playfair Display",Georgia,serif;margin:0 0 7px;color:var(--map-ink)}
.map-intro p{color:var(--map-muted);margin:0;max-width:720px}
.map-controls{display:flex;gap:7px;flex:none}
.map-controls button{width:39px;height:39px;border:1px solid var(--map-line);background:var(--map-paper);color:var(--map-forest);font-size:1.2rem;cursor:pointer;border-radius:50%;transition:.15s}
.map-controls button:hover,.map-controls button:focus-visible{background:var(--map-forest);color:white}
.explorer{display:grid;grid-template-columns:minmax(0,1.18fr) minmax(390px,.82fr);gap:22px;align-items:stretch}
.map-figure{margin:0;background:var(--map-paper);padding:10px;box-shadow:0 18px 50px #173b3212}
.leaflet-map{height:650px;width:100%;background:#dfe8dd}
.leaflet-container{font:14px/1.5 "DM Sans",Arial,sans-serif;color:var(--map-ink)}
.leaflet-control-attribution{font-size:9px!important}
.leaflet-popup-content-wrapper{border-radius:2px;box-shadow:0 12px 30px #173b3225}
.leaflet-popup-content{margin:14px 16px;min-width:170px}
.popup-place{font:400 1.05rem/1.25 "Playfair Display",Georgia,serif;color:var(--map-forest);margin:0 0 9px}
.popup-actions{display:flex;flex-wrap:wrap;gap:8px}
.popup-actions a{color:var(--map-forest);font-size:.72rem;font-weight:700;text-decoration:none;border-bottom:1px solid var(--map-gold)}
.leaflet-div-icon{background:transparent;border:0}
.map-dot{width:33px;height:33px;display:grid;place-items:center;border:2px solid #fff;border-radius:50%;background:var(--map-forest);color:white;font:700 .65rem/1 "DM Sans",Arial,sans-serif;box-shadow:0 3px 13px #102e2870;transition:transform .15s}
.map-dot:hover{background:#a37d3e;transform:scale(1.1)}
.map-dot.hotel{width:42px;height:42px;border-radius:50% 50% 50% 0;background:#b78e4a;border:2px solid white;transform:rotate(-45deg);font-size:.65rem}
.map-dot.hotel span{transform:rotate(45deg)}
.map-figure figcaption{font-size:.66rem;color:var(--map-muted);padding:9px 3px 0;text-align:right}
.suggestions{background:var(--map-paper);padding:23px 25px 16px;box-shadow:0 18px 50px #173b3210;min-height:0}
.suggestions-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:5px}
.suggestions-head h2{font-size:1.95rem;margin:0}
.suggestions-intro{color:var(--map-muted);font-size:.82rem;margin:0 0 17px}
.suggestion-count{display:grid;place-items:center;width:37px;height:37px;border-radius:50%;background:var(--map-sage);color:var(--map-forest);font-size:.83rem;font-weight:700}
.filters{display:flex;flex-wrap:wrap;gap:6px;margin:0 -3px 10px}
.filter-chip{border:1px solid transparent;border-radius:1px;background:transparent;color:#526055;padding:7px 9px;font:600 .69rem "DM Sans",Arial,sans-serif;cursor:pointer}
.filter-chip:hover,.filter-chip.active{background:var(--map-forest);color:white}
.filter-chip:focus-visible{outline:2px solid var(--map-gold);outline-offset:2px}
.place-list{max-height:494px;overflow:auto;padding-right:8px;scrollbar-color:#b6c3b5 transparent;scrollbar-width:thin}
.place-card{display:grid;grid-template-columns:34px 1fr;gap:11px;padding:14px 0 13px;border-bottom:1px solid var(--map-line);min-width:0;transition:background .15s}
.place-card:first-child{border-top:1px solid var(--map-line)}
.place-card.highlight{background:#f8f5ec}
.place-card[hidden]{display:none}
.place-number{display:grid;place-items:center;flex:none;width:30px;height:30px;border:1px solid #d8c89e;border-radius:50%;background:transparent;color:#95733a;font-size:.64rem;font-weight:700}
.place-copy{min-width:0}
.place-category{display:block;color:#8b6a31;font-size:.61rem;line-height:1.25;letter-spacing:.1em;text-transform:uppercase;font-weight:700;margin:1px 0 3px}
.place-card h3{font:400 1.1rem/1.23 "Playfair Display",Georgia,serif;margin:0 0 8px;color:var(--map-ink)}
.place-actions{display:flex;align-items:center;flex-wrap:wrap;gap:5px 14px}
.route-link,.waze-link{font-size:.68rem;line-height:1.4;text-decoration:none}
.route-link{color:var(--map-forest);font-weight:700;border-bottom:1px solid var(--map-gold)}
.waze-link{color:var(--map-muted)}
.route-link:hover,.waze-link:hover{text-decoration:underline}
.map-note{margin:16px 0 0;color:var(--map-muted);font-size:.75rem}
.map-language-links{display:flex;gap:8px;justify-content:flex-end;margin-top:18px}
.map-language-links a{display:inline-flex;align-items:center;min-height:34px;padding:4px 11px;border:1px solid var(--map-line);text-decoration:none;color:var(--map-forest);font-size:.75rem;font-weight:700}
.map-language-links a[aria-current=page]{background:var(--map-forest);border-color:var(--map-forest);color:white}
.footer-in{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}.footer-in a{text-decoration:none;color:inherit}
@media(max-width:1050px){.explorer{grid-template-columns:minmax(0,1.05fr) minmax(330px,.95fr);gap:16px}.suggestions{padding:18px 18px 12px}.place-list{max-height:494px}}
@media(max-width:760px){.map-hero{padding:40px 0 36px}.map-main{padding:30px 0 52px}.map-intro{align-items:flex-start}.map-intro h2{font-size:1.8rem}.map-intro p{font-size:.85rem}.map-controls{gap:4px}.map-controls button{width:34px;height:34px}.explorer{grid-template-columns:1fr;gap:15px}.leaflet-map{height:380px}.suggestions{padding:20px 18px 12px}.suggestions-head h2{font-size:1.7rem}.place-list{max-height:none;overflow:visible;padding:0}.place-card{padding:13px 0}.place-card h3{font-size:1.05rem}}
@media(max-width:440px){.map-hero h1{font-size:2.45rem}.leaflet-map{height:340px}.map-figure{padding:7px}.suggestions{padding:18px 14px 10px}.filter-chip{padding:7px 8px}}
@media(prefers-reduced-motion:reduce){.map-dot,.map-controls button{transition:none}}
.place-title{appearance:none;background:none;border:0;padding:0;color:inherit;font:inherit;text-align:left;cursor:pointer}
.place-title:hover{text-decoration:underline;text-decoration-color:var(--map-gold);text-underline-offset:3px}
.place-title:focus-visible{outline:2px solid var(--map-gold);outline-offset:3px}
.place-description{color:var(--map-muted);font-size:.76rem;line-height:1.5;margin:-2px 0 9px}
.place-description[hidden]{display:none}
.popup-description{color:var(--map-muted);font:400 .77rem/1.5 "DM Sans",Arial,sans-serif;margin:0 0 10px}
.trail-switcher{display:flex;gap:8px;flex-wrap:wrap;margin-top:22px}
.trail-switcher a{display:inline-flex;align-items:center;min-height:38px;padding:6px 14px;border:1px solid #ffffff75;color:#f7f5ef;text-decoration:none;font-size:.78rem;font-weight:600}
.trail-switcher a:hover,.trail-switcher a.active{background:#f7f5ef;color:#173b32;border-color:#f7f5ef}

.weather-panel{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:18px;padding:14px 17px;background:#f7f5ef;color:#202b25;border-left:3px solid #bd9b5a;max-width:860px}.weather-eyebrow{font-size:.64rem;font-weight:700;letter-spacing:.13em;color:#806436}.weather-panel p{margin:4px 0 0;color:#536057;font-size:.8rem}.weather-actions{display:flex;gap:8px;flex-wrap:wrap}.weather-actions a{display:inline-flex;align-items:center;min-height:36px;padding:6px 11px;background:#e9dfc6;color:#173b32;text-decoration:none;font-size:.72rem;font-weight:700}.weather-actions a:hover,.weather-actions a:focus-visible{background:#d9c89e}.weather-actions a:focus-visible{outline:2px solid #173b32;outline-offset:2px}@media(max-width:650px){.weather-panel{align-items:flex-start;flex-direction:column;gap:10px;padding:13px}.weather-actions{gap:6px}.weather-actions a{font-size:.68rem;padding:6px 9px}}
