.retreat-map { isolation: isolate; }
.retreat-map-actions { margin-top: .65rem; display: grid; }
.retreat-map-actions button { min-height: 2.45rem; padding: .55rem .7rem; border: 1px solid var(--color-forest); border-radius: .6rem; display: flex; align-items: center; justify-content: center; background: var(--color-forest); color: #fff; font: 700 .7rem/1.25 var(--font-body); cursor: pointer; }
.retreat-map-actions button:hover, .retreat-map-actions button:focus-visible { background: #0d3b31; }

.retreat-map-dialog { width: min(62rem, calc(100vw - 2rem)); max-width: none; margin: auto; padding: 0; border: 0; border-radius: 1.1rem; overflow: hidden; background: #fff; color: var(--color-ink); box-shadow: 0 2rem 6rem rgb(7 27 22 / .42); }
.retreat-map-dialog:not([open]) { display: none; }
.retreat-map-dialog::backdrop { background: rgb(7 27 22 / .62); backdrop-filter: blur(4px); }
.retreat-map-dialog > header { padding: 1rem 1.2rem; border-bottom: 1px solid var(--color-line); display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.retreat-map-dialog h2 { margin: .15rem 0 0; color: var(--color-forest); font-size: 1.35rem; }
.retreat-map-dialog > header > button { width: 2.4rem; height: 2.4rem; padding: 0; border: 0; border-radius: 50%; background: var(--color-soft); color: var(--color-forest); font-size: 1.35rem; cursor: pointer; }
.retreat-map-dialog__canvas { height: min(65dvh, 38rem); position: relative; isolation: isolate; background: var(--color-sage-soft); }
.retreat-map-dialog__canvas > [data-map-dialog-placeholder] { height: 100%; display: grid; place-items: center; color: var(--color-muted); }
.retreat-map-dialog > footer { padding: .8rem 1.2rem; display: flex; align-items: center; justify-content: space-between; gap: .75rem; flex-wrap: wrap; }
.retreat-map-dialog > footer > a { color: var(--color-forest); font-size: .7rem; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.retreat-map-dialog > footer .button { min-height: 2.4rem; padding: .5rem .85rem; font-size: .7rem; }
.retreat-map-dialog .leaflet-control-attribution { font-size: .58rem; }
.retreat-map-dialog .leaflet-bar a { color: var(--color-forest); }
body:has(.retreat-map-dialog[open]) { overflow: hidden; }

@media (max-width: 600px) {
    .retreat-map-dialog { width: 100vw; max-height: 100dvh; margin: auto 0 0; border-radius: 1rem 1rem 0 0; }
    .retreat-map-dialog > header { padding: .85rem 1rem; }
    .retreat-map-dialog__canvas { height: 65dvh; }
    .retreat-map-dialog > footer { padding: .7rem 1rem max(.7rem, env(safe-area-inset-bottom)); }
    .retreat-page .mobile-booking-bar { z-index: 40; }
}
