/* Interactive travel guide */
.guide-explorer{min-height:100dvh;padding:0;position:relative;background:#dfe4de;animation:ContentIn .34s var(--ease) both}
.guide-map-stage{position:relative;height:100dvh;min-height:560px;overflow:hidden;isolation:isolate;background:#e8e6df}
.guide-map{position:absolute;inset:0;width:100%;height:100%;background:#e8e6df}
.guide-map-status{position:absolute;z-index:3;inset:0;display:flex;align-items:center;justify-content:center;gap:var(--space-2);background:rgba(245,243,238,.86);color:var(--muted);font-size:var(--font-xs);font-weight:600;transition:opacity .2s ease}
.guide-map-status .app-icon{animation:guide-spin 1s linear infinite}
.guide-map-status.is-hidden{opacity:0;pointer-events:none}
.guide-map-status.is-error{padding:var(--space-6);text-align:center;line-height:var(--line-normal)}
.guide-map-status.is-error .app-icon{animation:none}
@keyframes guide-spin{to{transform:rotate(360deg)}}

/* The map is primary: navigation is reduced to three floating controls. */
.guide-map-header{position:absolute;z-index:7;top:max(14px,env(safe-area-inset-top));left:14px;right:14px;height:var(--control-md);display:grid;grid-template-columns:48px minmax(0,1fr) 48px;align-items:start;gap:var(--space-2);pointer-events:none}
.guide-map-nav{width:var(--control-md);height:var(--control-md);border:1px solid rgba(255,255,255,.82);background:rgba(255,255,255,.66);color:var(--ink);backdrop-filter:blur(20px) saturate(1.3);-webkit-backdrop-filter:blur(20px) saturate(1.3);box-shadow:var(--shadow-card);pointer-events:auto}
.guide-map-header>a:last-child{justify-self:end;background:rgba(255,255,255,.68);border-color:rgba(255,255,255,.72)}

.guide-filter-menu{position:relative;justify-self:center;width:min(250px,100%);pointer-events:auto}
.guide-filter-menu>summary{list-style:none}
.guide-filter-menu>summary::-webkit-details-marker{display:none}
.guide-filter-menu__trigger{height:var(--control-md);padding:0 var(--space-3);border:1px solid rgba(255,255,255,.82);border-radius:var(--radius-pill);background:rgba(255,255,255,.68);color:var(--ink);display:grid;grid-template-columns:20px minmax(0,1fr) 15px;align-items:center;gap:var(--space-2);box-shadow:var(--shadow-card);backdrop-filter:blur(20px) saturate(1.3);-webkit-backdrop-filter:blur(20px) saturate(1.3);cursor:pointer;font-size:var(--font-sm);font-weight:700}
.guide-filter-menu__trigger span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}
.guide-filter-menu__trigger>.app-icon:first-child{font-size:var(--font-sm);color:var(--green)}
.guide-filter-menu__trigger>.app-icon:last-child{font-size:var(--font-xs);color:var(--muted);transition:transform .18s var(--ease)}
.guide-filter-menu[open] .guide-filter-menu__trigger>.app-icon:last-child{transform:rotate(180deg)}
.guide-filter-menu__options{position:absolute;top:54px;left:50%;width:min(280px,calc(100vw - 36px));padding:var(--space-2);transform:translateX(-50%);display:grid;gap:3px;border:1px solid rgba(255,255,255,.88);border-radius:var(--radius-md);background:rgba(255,255,255,.82);box-shadow:var(--shadow-elevated);backdrop-filter:blur(24px) saturate(1.25);-webkit-backdrop-filter:blur(24px) saturate(1.25)}
.guide-filter{width:100%;min-height:var(--control-md);padding:0 var(--space-3);border:0;border-radius:var(--radius-md);background:transparent;color:#53635b;display:grid;grid-template-columns:25px minmax(0,1fr);align-items:center;gap:var(--space-2);text-align:left;font-size:var(--font-sm);font-weight:650;cursor:pointer}
.guide-filter .app-icon{font-size:var(--font-sm);text-align:center}
.guide-filter.is-active{background:var(--green);color:#fff}
.guide-filter:active{transform:scale(.985)}

/* Zoom controls form one floating control column below the menu button. */
.mapboxgl-ctrl-top-right{top:max(70px,calc(env(safe-area-inset-top) + 56px))!important;right:14px!important;transform:none}
.mapboxgl-ctrl-top-left{top:max(126px,calc(env(safe-area-inset-top) + 112px))!important;left:14px!important;transform:none}
.mapboxgl-ctrl-top-right .mapboxgl-ctrl,
.mapboxgl-ctrl-top-left .mapboxgl-ctrl{margin:0!important;border:0!important;border-radius:0!important;background:transparent!important;overflow:visible!important;box-shadow:none!important}
.mapboxgl-ctrl-group{display:grid!important;gap:var(--space-2)!important}
.mapboxgl-ctrl-group button{width:var(--control-md)!important;height:var(--control-md)!important;border:1px solid rgba(255,255,255,.95)!important;border-radius:var(--radius-round)!important;background-color:rgba(255,255,255,.68)!important;box-shadow:var(--shadow-card)!important;backdrop-filter:blur(20px) saturate(1.3);-webkit-backdrop-filter:blur(20px) saturate(1.3)}
.mapboxgl-ctrl-group button+button{border-top:1px solid rgba(255,255,255,.95)!important}
.mapboxgl-ctrl-group button .mapboxgl-ctrl-icon{background-size:23px 23px}
.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon{background-size:25px 25px!important}
.leaflet-control-zoom a{font-size:var(--font-lg)!important;font-weight:500!important}
.leaflet-top.leaflet-right{top:max(70px,calc(env(safe-area-inset-top) + 56px));right:14px;transform:none}
.leaflet-right .leaflet-control{margin-right:0}
.leaflet-top .leaflet-control{margin-top:0}
.leaflet-control-zoom{border:0!important;background:transparent!important;border-radius:0!important;box-shadow:none!important;display:grid;gap:var(--space-2)}
.leaflet-control-zoom a{width:var(--control-md)!important;height:var(--control-md)!important;display:grid!important;place-items:center!important;border:1px solid rgba(255,255,255,.95)!important;border-radius:var(--radius-round)!important;background:rgba(255,255,255,.68)!important;color:var(--ink)!important;box-shadow:var(--shadow-card)!important;backdrop-filter:blur(20px) saturate(1.3);-webkit-backdrop-filter:blur(20px) saturate(1.3)}
.leaflet-control-zoom a+ a{border-top:1px solid rgba(255,255,255,.95)!important}

/* Bottom sheet: full page width, compact when closed and roomy when opened. */
.guide-destinations{position:absolute;z-index:6;left:0;right:0;bottom:0;padding:0 0 max(0px,env(safe-area-inset-bottom));pointer-events:none}
.guide-destinations__panel{height:72px;display:flex;flex-direction:column;overflow:hidden;border:1px solid rgba(255,255,255,.82);border-left:0;border-right:0;border-bottom:0;border-radius:var(--radius-lg) var(--radius-lg) 0 0;background:rgba(255,253,249,.97);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);box-shadow:var(--shadow-elevated);pointer-events:auto;transition:height .28s var(--ease)}
.guide-destinations.is-open .guide-destinations__panel{height:min(60dvh,calc(100dvh - 106px))}
.guide-destinations__toggle{position:relative;flex:0 0 70px;width:100%;padding:var(--space-4) var(--space-4) var(--space-2);border:0;background:transparent;color:var(--ink);display:grid;grid-template-columns:minmax(0,1fr) 28px;align-items:center;gap:var(--space-2);text-align:left;cursor:pointer}
.guide-sheet-handle{position:absolute;top:7px;left:50%;width:42px;height:4px;border-radius:var(--radius-pill);background:rgba(49,73,61,.23);transform:translateX(-50%)}
.guide-destinations__head{display:flex;align-items:center;gap:var(--space-2);min-width:0}
.guide-destinations__head strong{font-family:var(--font-heading-family);font-size:var(--font-lg);font-weight:500;line-height:var(--line-tight)}
.guide-destinations__head>span{min-width:28px;height:28px;padding:0 var(--space-2);border-radius:var(--radius-pill);background:#ebe9e3;display:grid;place-items:center;color:var(--muted);font-size:var(--font-xs);font-weight:700}
.guide-destinations__chevron{width:28px;height:28px;border-radius:var(--radius-round);display:grid;place-items:center;color:var(--green);font-size:var(--font-xs);transition:transform .2s var(--ease)}
.guide-destinations.is-open .guide-destinations__chevron{transform:rotate(180deg)}

/* When Everything is active, lead with categories instead of dumping all destinations. */
.guide-category-overview{flex:1;min-height:0;padding:var(--space-1) var(--space-3) var(--space-4);overflow-y:auto;overscroll-behavior:contain;pointer-events:none}
.guide-destinations.is-open .guide-category-overview{pointer-events:auto}
.guide-category-overview__intro{margin:0 0 var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:#f0eee8;color:var(--ink)}
.guide-category-overview__intro strong{display:block;margin-bottom:var(--space-1);font-size:var(--font-sm)}
.guide-category-overview__intro span{display:block;color:var(--muted);font-size:var(--font-xs);line-height:var(--line-normal)}
.guide-category-overview__grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}
.guide-category-card{min-width:0;min-height:92px;padding:var(--space-3);border:1px solid var(--green-tint);border-radius:var(--radius-md);background:rgba(255,255,255,.92);display:grid;grid-template-columns:42px minmax(0,1fr) 12px;align-items:center;gap:var(--space-2);text-align:left;color:var(--ink);box-shadow:var(--shadow-soft)}
.guide-category-card:active{transform:scale(.985)}
.guide-category-card>.app-icon:last-child{font-size:var(--font-xs);color:#9aa19d}
.guide-category-card__icon{width:var(--icon-box-md);height:var(--icon-box-md);border-radius:var(--radius-md);display:grid;place-items:center;font-size:var(--font-sm);background:var(--surface-soft);color:var(--green)}
.guide-category-card__icon--fuel{color:#9a643f;background:#f1e7df}
.guide-category-card__icon--parking{color:#536b7a;background:#e8edf0}
.guide-category-card__icon--restaurant{color:#8c533f;background:#f1e8e3}
.guide-category-card__icon--beach{color:#356f84;background:#e5eef1}
.guide-category-card__icon--walk{color:#426b52;background:#e7eee8}
.guide-category-card__icon--sight{color:#786733;background:#efecdf}
.guide-category-card__copy{min-width:0}
.guide-category-card__copy strong{display:block;font-size:var(--font-sm);line-height:var(--line-tight)}
.guide-category-card__copy small{display:block;margin-top:var(--space-1);color:var(--muted);font-size:var(--font-xs);line-height:var(--line-normal)}
.guide-explorer:has(.guide-filter[data-guide-filter="all"].is-active) .guide-destination-list{display:none}
.guide-explorer:not(:has(.guide-filter[data-guide-filter="all"].is-active)) .guide-category-overview{display:none}

/* Airport mode is a local departure context, not a house-to-airport overview. */
.guide-airport-switch{flex:0 0 auto;display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2);padding:var(--space-1) var(--space-3) var(--space-2);pointer-events:none}
.guide-airport-switch[hidden]{display:none!important}
.guide-destinations.is-open .guide-airport-switch{pointer-events:auto}
.guide-airport-switch__button{min-height:var(--control-lg);padding:var(--space-2) var(--space-3);border:1px solid rgba(49,73,61,.11);border-radius:var(--radius-md);background:rgba(255,255,255,.56);color:var(--ink);backdrop-filter:blur(16px) saturate(1.2);-webkit-backdrop-filter:blur(16px) saturate(1.2);display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);text-align:left;box-shadow:none}
.guide-airport-switch__button strong{font-size:var(--font-sm);line-height:var(--line-tight)}
.guide-airport-switch__button small{font-size:var(--font-xs);color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.guide-airport-switch__button.is-active{background:var(--green);border-color:var(--green);color:#fff;box-shadow:var(--shadow-soft)}
.guide-airport-switch__button.is-active small{color:rgba(255,255,255,.72)}
.guide-airport-switch__button:active{transform:scale(.985)}

.guide-destination-list{flex:1;min-height:0;display:grid;align-content:start;gap:var(--space-2);padding:var(--space-1) var(--space-3) var(--space-4);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;pointer-events:none}
.guide-destinations.is-open .guide-destination-list{pointer-events:auto}
.guide-destination{width:100%;overflow:hidden;border:1px solid var(--green-tint);border-radius:var(--radius-md);background:rgba(255,255,255,.92);box-shadow:var(--shadow-soft)}
.guide-destination[hidden]{display:none}
.guide-destination__main{width:100%;padding:var(--space-4);border:0;background:transparent;display:grid;grid-template-columns:46px minmax(0,1fr) 16px;gap:var(--space-3);align-items:start;text-align:left;color:var(--ink);cursor:pointer}
.guide-destination__main>.app-icon:last-child{align-self:center;color:#9aa19d;font-size:var(--font-xs)}
.guide-destination__icon{width:var(--icon-box-md);height:var(--icon-box-md);border-radius:var(--radius-md);display:grid;place-items:center;font-size:var(--font-md);background:var(--surface-soft);color:var(--green)}
.guide-destination__icon--fuel{color:#9a643f;background:#f1e7df}
.guide-destination__icon--parking{color:#536b7a;background:#e8edf0}
.guide-destination__icon--restaurant{color:#8c533f;background:#f1e8e3}
.guide-destination__icon--beach{color:#356f84;background:#e5eef1}
.guide-destination__icon--walk{color:#426b52;background:#e7eee8}
.guide-destination__icon--sight{color:#786733;background:#efecdf}
.guide-destination__copy{min-width:0;display:block}
.guide-destination__copy strong{display:block;font-size:var(--font-sm);line-height:var(--line-tight)}
.guide-destination__copy small{display:block;margin:3px 0 var(--space-1);color:var(--green);font-size:var(--font-xs);font-weight:700;text-transform:uppercase;letter-spacing:.07em}
.guide-destination__description{display:block;margin-top:2px;color:var(--muted);font-size:var(--font-xs);line-height:var(--line-normal)}
.guide-destination__travel{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-1) var(--space-3);margin:0 0 var(--space-2);color:#65736c;font-size:var(--font-xs);font-weight:700;line-height:var(--line-tight)}
.guide-destination__travel>span{display:inline-flex;align-items:center;gap:var(--space-1)}
.guide-destination__travel .app-icon{font-size:var(--font-xs);color:var(--green)}
.guide-destination__route{min-height:var(--control-md);padding:0 var(--space-4);border-top:1px solid var(--green-tint);display:flex;align-items:center;justify-content:flex-end;gap:var(--space-2);color:var(--green);font-size:var(--font-xs);font-weight:700}
.guide-destination__route .app-icon{font-size:var(--font-xs)}

/* Upright map pins with a clear downward pointer. */
.guide-marker{--guide-marker-bg:var(--green);position:relative;width:38px;height:45px;display:block;color:#fff;cursor:pointer;filter:drop-shadow(0 5px 7px rgba(25,35,30,.26))}
.guide-marker::before{content:"";position:absolute;top:0;left:0;width:38px;height:38px;box-sizing:border-box;border:3px solid #fff;border-radius:var(--radius-round);background:var(--guide-marker-bg)}
.guide-marker::after{content:"";position:absolute;top:28px;left:50%;width:13px;height:13px;box-sizing:border-box;border-right:3px solid #fff;border-bottom:3px solid #fff;border-radius:0 0 3px 0;background:var(--guide-marker-bg);transform:translateX(-50%) rotate(45deg)}
.guide-marker .app-icon{position:absolute;z-index:2;top:19px;left:50%;transform:translate(-50%,-50%);font-size:var(--font-xs)}
.guide-marker--fuel{--guide-marker-bg:#a66a43}
.guide-marker--parking{--guide-marker-bg:#536b7a}
.guide-marker--restaurant{--guide-marker-bg:#9a5d46}
.guide-marker--beach{--guide-marker-bg:#3f7f96}
.guide-marker--walk{--guide-marker-bg:#426b52}
.guide-marker--sight{--guide-marker-bg:#85733d}
.guide-marker--home{--guide-marker-bg:#172a21;width:42px;height:49px}
.guide-marker--home::before{width:42px;height:42px}
.guide-marker--home::after{top:32px}
.guide-marker--home .app-icon{top:21px;font-size:var(--font-sm)}

/* Larger location cards with an aerial preview and a corner close button. */
.guide-popup{width:min(340px,calc(100vw - 58px));font-family:var(--font-ui-family);font-size:var(--font-sm);font-weight:var(--weight-medium);line-height:var(--line-normal);color:#24342d}
.guide-popup__preview{height:142px;margin:-16px -16px var(--space-3);overflow:hidden;border-radius:var(--radius-md) var(--radius-md) var(--radius-sm) var(--radius-sm);background:#dfe4de}
.guide-popup__preview img{display:block;width:100%;height:100%;object-fit:cover}
.guide-popup__content>strong{display:block;margin:0 0 var(--space-2);padding-right:var(--space-6);font-size:var(--font-md);line-height:var(--line-tight)}
.guide-popup__content>span{display:block;color:#65726c;font-size:var(--font-sm);line-height:var(--line-normal)}
.guide-popup__maps{display:grid;grid-template-columns:22px minmax(0,1fr) 14px;align-items:center;gap:var(--space-2);margin-top:var(--space-3);padding:var(--space-3) var(--space-3);border-radius:var(--radius-md);background:#314f3f;color:#fff!important;font-size:var(--font-sm);font-weight:700;text-decoration:none!important}
.guide-popup__maps>span{text-align:center}
.guide-popup__maps>.fa-map-location-dot{font-size:var(--font-md)}
.guide-popup__maps>.fa-arrow-up-right-from-square{justify-self:end;font-size:var(--font-xs);opacity:.78}
.mapboxgl-popup{z-index:8}
.mapboxgl-popup-content{min-width:280px!important;border-radius:var(--radius-md)!important;padding:var(--space-4)!important;overflow:visible!important;box-shadow:var(--shadow-elevated)!important}
.mapboxgl-popup-close-button{top:-16px!important;right:-16px!important;width:var(--control-md)!important;height:var(--control-md)!important;border:1px solid var(--green-tint)!important;border-radius:var(--radius-round)!important;background:#fff!important;color:#24342d!important;display:grid!important;place-items:center!important;font-family:Arial,sans-serif!important;font-size:var(--font-xl)!important;font-weight:var(--weight-regular)!important;line-height:var(--line-tight)!important;box-shadow:var(--shadow-card)!important;z-index:3}
.mapboxgl-popup-close-button:hover{background:#fff!important}
.mapboxgl-ctrl-bottom-left,.mapboxgl-ctrl-bottom-right{z-index:2}
.leaflet-container{font-family:var(--font-ui-family)}
.leaflet-div-icon{background:transparent!important;border:0!important}
.leaflet-popup-content-wrapper{border-radius:var(--radius-md);overflow:visible;box-shadow:var(--shadow-elevated)}
.leaflet-popup-content{margin:var(--space-4)!important;width:auto!important;min-width:280px}
.leaflet-popup-close-button{top:-16px!important;right:-16px!important;width:var(--control-md)!important;height:var(--control-md)!important;padding:0!important;border:1px solid var(--green-tint)!important;border-radius:var(--radius-round)!important;background:#fff!important;color:#24342d!important;display:grid!important;place-items:center!important;font-family:Arial,sans-serif!important;font-size:var(--font-xl)!important;font-weight:var(--weight-regular)!important;line-height:var(--line-tight)!important;text-align:center!important;box-shadow:var(--shadow-card)!important;z-index:3}

/* House information: practical do's & don'ts live here, not in the travel guide. */
.house-guidelines{margin-top:var(--space-4);padding:var(--space-5)}
.house-guidelines__head{display:grid;grid-template-columns:38px 1fr;gap:var(--space-3);align-items:start;padding-bottom:var(--space-4);border-bottom:1px solid var(--line)}
.house-guidelines__head>span{width:38px;height:38px;border-radius:var(--radius-md);background:var(--surface-soft);color:var(--green);display:grid;place-items:center}
.house-guidelines__head h2{margin:0 0 var(--space-1);font-family:var(--font-heading-family);font-size:var(--font-lg);font-weight:500}
.house-guidelines__head p{margin:0;color:var(--muted);font-size:var(--font-xs);line-height:var(--line-normal)}
.house-guidelines__group{padding-top:var(--space-4)}
.house-guidelines__group+.house-guidelines__group{margin-top:var(--space-4);border-top:1px solid var(--line)}
.house-guidelines__group h3{margin:0 0 var(--space-3);display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-sm)}
.house-guidelines__group h3>span{width:25px;height:25px;border-radius:var(--radius-round);display:grid;place-items:center;background:var(--green);color:#fff;font-size:var(--font-xs)}
.house-guidelines__group--donts h3>span{background:var(--terracotta)}
.house-guidelines__group ul{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-2)}
.house-guidelines__group li{position:relative;padding-left:var(--space-4);color:var(--muted);font-size:var(--font-xs);line-height:var(--line-normal)}
.house-guidelines__group li::before{content:"";position:absolute;left:2px;top:.62em;width:5px;height:5px;border-radius:var(--radius-round);background:#9ca39f}

@media(max-width:420px){
    .guide-map-header{left:10px;right:10px;grid-template-columns:46px minmax(0,1fr) 46px;gap:var(--space-2)}
    .guide-filter-menu{width:min(220px,100%)}
    .guide-filter-menu__trigger{padding:0 var(--space-3);grid-template-columns:18px minmax(0,1fr) 13px;gap:var(--space-1);font-size:var(--font-xs)}
    .mapboxgl-ctrl-top-right{right:10px!important}
    .leaflet-top.leaflet-right{right:10px}
    .guide-destinations.is-open .guide-destinations__panel{height:min(60dvh,calc(100dvh - 96px))}
    .guide-category-overview{padding-left:var(--space-2);padding-right:var(--space-2)}
    .guide-category-overview__grid{grid-template-columns:1fr}
    .guide-category-card{min-height:72px}
    .guide-airport-switch{padding-left:var(--space-2);padding-right:var(--space-2)}
    .guide-airport-switch__button{padding:var(--space-2) var(--space-2)}
    .guide-airport-switch__button strong{font-size:var(--font-xs)}
    .guide-airport-switch__button small{font-size:var(--font-xs)}
    .guide-destination-list{padding-left:var(--space-2);padding-right:var(--space-2)}
    .guide-destination__main{grid-template-columns:44px minmax(0,1fr) 14px;padding:var(--space-3)}
    .guide-popup{width:min(320px,calc(100vw - 54px))}
    .guide-popup__preview{height:130px}
    .mapboxgl-popup-content,.leaflet-popup-content{min-width:260px!important}
    .house-guidelines{padding:var(--space-4)}
}
@media(min-width:700px){
    .guide-explorer,.guide-map-stage{min-height:calc(100dvh - 56px);height:calc(100dvh - 56px)}
    .guide-destinations.is-open .guide-destinations__panel{height:min(60vh,calc(100dvh - 150px))}
}

@media(max-width:420px){.mapboxgl-ctrl-top-left{left:10px!important}}
