/* =======================================================================
   Residence XII — THE MAP v21 (2026-09-11; engine ported from the Launchpoint v28/v30 map). Loaded on /map only, after
   leaflet.css and main.css. Satellite imagery (self-hosted USGS tiles) under
   photo pins that declutter themselves; a 50/50 split with a photo card for
   every place; a swipe strip on phones; fullscreen. Brand colours only.
   ======================================================================= */
.pg-map .lm27{--hdh:var(--header-h);position:relative;background:var(--ink);color:var(--mist)}
.map-main{background:var(--ink)}
.lm-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.8rem 2rem;align-items:end;
  padding:calc(var(--hdh) + 1.6rem) var(--pad) 1.1rem;background:var(--ink)}
.lm-head .g-crumb{margin:0 0 .9rem;color:rgba(227,237,242,.7)}
.lm-head .g-crumb a{color:rgba(227,237,242,.7)}.lm-head .g-crumb span:last-child{color:var(--mist)}
.lm-h1{font-family:var(--serif);font-weight:400;font-size:clamp(2.1rem,3.6vw,3.6rem);line-height:1.02;letter-spacing:-.016em;margin:.5rem 0 .7rem;color:var(--white)}
.lm-sub{max-width:64ch;color:rgba(227,237,242,.8);font-size:.98rem;line-height:1.5;margin:0}
.lm-head-r{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;justify-content:flex-end;padding-bottom:.2rem}
/* (main.css still carries the v21 map rules: .lm-legend was absolutely positioned in the old stage and
   .lm-hint had a tint — reset both, everything else v21 is unused here) */
.lm-legend{position:static;left:auto;bottom:auto;right:auto;top:auto;display:flex;flex-wrap:wrap;gap:.35rem .9rem;font-size:.7rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:rgba(227,237,242,.7);background:transparent;padding:0;max-width:none}
.lm-hint{background:transparent}
.lm-legend span{display:inline-flex;align-items:center;gap:.4em}
.lm-legend .g{width:12px;height:12px;border-radius:50%;background:var(--teal);box-shadow:0 0 0 1.5px #fff}
.lm-legend .g{display:grid;place-items:center}
.lm-legend svg{width:9px;height:9px;fill:#fff}

/* ---------- the split ---------- */
.lm-split{display:grid;grid-template-columns:1fr 1fr;align-items:start;border-top:1px solid var(--line-d)}
/* --stick follows the fixed header: its height while the header shows, 0 once the header hides on
   scroll-down (map.js sets it), so the map and the filter bar never leave a hole above them */
.lm27{--stick:var(--hdh)}
.lm-mapcol{position:sticky;top:var(--stick);height:calc(100vh - var(--stick));height:calc(100svh - var(--stick));min-height:520px;overflow:clip;background:#052A3D;isolation:isolate;
  transition:top .35s var(--ease),height .35s var(--ease)}
/* v30: contain:strict — layout and paint inside the map never spill into the page (and the page's never
   into the map). The box is sized by inset:0, so size containment costs nothing. */
.lm-map{position:absolute;inset:0;background:#052A3D;font-family:var(--sans);outline:none;contain:strict}
.lm-map:focus-visible{box-shadow:inset 0 0 0 3px var(--sea)}
.lm-listcol{min-width:0;background:var(--ink);border-left:1px solid var(--line-d)}
.leaflet-container{background:#052A3D;font-family:var(--sans)}
.leaflet-container a{color:inherit}
.leaflet-tile{filter:saturate(1.02)}
.leaflet-tile-container img{image-rendering:auto}
.lm-sat--core .leaflet-tile{transition:opacity .35s}

/* ---------- roads (SVG overlay, strokes hold one width at any zoom) ---------- */
.lm-roads-ov{pointer-events:none}
.lr{fill:none;stroke-linecap:round;stroke-linejoin:round}
.lr-case .lr{stroke:rgba(0,0,0,.5)}
.lr-case .lr-mot{stroke-width:5.2}.lr-case .lr-trk{stroke-width:4}.lr-case .lr-pri{stroke-width:3}.lr-case .lr-sec{stroke-width:2.2}
.lr-line .lr-mot{stroke:#eef3f6;stroke-width:2.6}
.lr-line .lr-trk{stroke:#dfe9ee;stroke-width:1.9}
.lr-line .lr-pri{stroke:rgba(238,243,246,.82);stroke-width:1.4}
.lr-line .lr-sec{stroke:rgba(238,243,246,.5);stroke-width:.9}
.lr-rail{stroke:rgba(255,255,255,.45);stroke-width:1.1;stroke-dasharray:5 4}
.lm-map[data-z="10"] .lr-sec,.lm-map[data-z="11"] .lr-sec,.lm-map[data-z="10"] .lr-rail{display:none}
.lm-map[data-z="10"] .lr-pri{stroke-width:1}

/* ---------- rings + labels ---------- */
.lm-ring{stroke:rgba(227,237,242,.5);stroke-width:1.2;stroke-dasharray:2 7;stroke-linecap:round;fill:none}
.lm-ring-l span{position:absolute;transform:translate(5px,-14px);white-space:nowrap;font:700 10px/1 var(--sans);letter-spacing:.12em;color:rgba(227,237,242,.95);text-shadow:0 1px 2px #000,0 0 4px rgba(0,0,0,.8)}
.lm-town,.lm-shield,.lm-region,.lm-ring-l{width:0!important;height:0!important;overflow:visible;pointer-events:none}
.lm-town .td{position:absolute;left:-3px;top:-3px;width:6px;height:6px;border-radius:50%;background:#fff;box-shadow:0 0 0 1.5px rgba(0,0,0,.55)}
.lm-town span{position:absolute;left:8px;top:-8px;white-space:nowrap;font:700 11px/1.2 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:#fff;text-shadow:0 1px 2px #000,0 0 5px rgba(0,0,0,.85)}
.lm-town--big .td{width:8px;height:8px;left:-4px;top:-4px}
.lm-town--big span{font-size:12.5px;left:10px}
.lm-map[data-z="10"] .lm-town:not(.lm-town--big),.lm-map[data-z="11"] .lm-town:not(.lm-town--big){display:none}
.lm-town.is-off{display:none}
.lm-map[data-z="10"] .lm-ring-l,.lm-map[data-z="11"] .lm-ring-l{display:none}
.lm-shield span{position:absolute;transform:translate(-50%,-50%);white-space:nowrap;font:800 9.5px/1 var(--sans);letter-spacing:.04em;padding:4px 6px;border-radius:3px;background:var(--ink-2);color:#fff;border:1px solid rgba(255,255,255,.75)}
.lm-shield--i span{background:var(--teal-deep)}
.lm-map[data-z="10"] .lm-shield:not(.lm-shield--i){display:none}
.lm-region span{position:absolute;white-space:nowrap;font:700 11px/1 var(--sans);letter-spacing:.32em;text-transform:uppercase;color:rgba(255,255,255,.82);text-shadow:0 1px 3px rgba(0,0,0,.95),0 0 8px rgba(0,0,0,.6)}
.lm-region--water span{color:rgba(227,237,242,.95);letter-spacing:.22em}
.lm-map[data-z="14"] .lm-region,.lm-map[data-z="15"] .lm-region,.lm-map[data-z="16"] .lm-region{display:none}
.lm-map[data-z="10"] .lm-region:not(.lm-region--keep){display:none}

/* ---------- photo pins ---------- */
/* v30: layout containment — a pin flipping between photo and dot re-lays out itself, not its 96 siblings
   (layout containment never clips: the label and badge still hang outside the 0x0 anchor) */
.lp-pin{width:0!important;height:0!important;margin:0!important;overflow:visible;outline:none;cursor:pointer;contain:layout style}
.lp-pin-in{position:absolute;left:0;top:0;width:46px;height:46px;transform:translate(-50%,-50%);border-radius:50%;background:var(--ink-3);
  box-shadow:0 0 0 2.5px #fff,0 8px 18px rgba(0,0,0,.5);transition:width .28s var(--ease),height .28s var(--ease),box-shadow .28s,background .2s}
.lp-pin-ph{position:absolute;inset:0;border-radius:50%;background-size:cover;background-position:center;transition:opacity .2s}
.lp-pin-g{position:absolute;right:-5px;bottom:-5px;width:20px;height:20px;border-radius:50%;background:var(--teal-deep);box-shadow:0 0 0 2px #fff;display:grid;place-items:center;transition:opacity .2s}
.lp-pin-g svg{width:11px;height:11px;fill:#fff}
.lp-pin--beaches .lp-pin-g{background:var(--teal)}
.lp-pin--water .lp-pin-g{background:var(--teal-deep)}
.lp-pin--eat .lp-pin-g{background:var(--flame-deep)}
.lp-pin--culture .lp-pin-g{background:var(--ink-3)}
.lp-pin--golf .lp-pin-g{background:var(--green-deep)}
.lp-pin--transit .lp-pin-g{background:var(--ink-3)}
.lp-pin-l{position:absolute;left:0;top:27px;transform:translateX(-50%);white-space:nowrap;text-align:center;opacity:0;pointer-events:none;transition:opacity .2s;
  font:700 12px/1.15 var(--sans);color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.95),0 0 6px rgba(0,0,0,.8),0 0 12px rgba(0,0,0,.5)}
.lp-pin-l b{display:block;font-weight:700}
.lp-pin-l .lp-pin-s{display:block;font-style:normal;font-weight:600;font-size:10.5px;color:var(--sea);margin-top:1px;letter-spacing:.02em}
.lp-pin.has-lab .lp-pin-l,.lp-pin:hover .lp-pin-l,.lp-pin.is-hot .lp-pin-l,.lp-pin:focus-visible .lp-pin-l{opacity:1}
.lp-pin.is-dot .lp-pin-in{width:14px;height:14px;background:var(--teal);box-shadow:0 0 0 2px #fff,0 2px 6px rgba(0,0,0,.55)}
.lp-pin.is-dot .lp-pin-ph,.lp-pin.is-dot .lp-pin-g{opacity:0}
.lp-pin.is-dot .lp-pin-l{top:12px}
.lp-pin.is-dot:hover .lp-pin-in,.lp-pin.is-dot.is-hot .lp-pin-in,.lp-pin.is-dot:focus-visible .lp-pin-in{width:46px;height:46px;background:var(--ink-3)}
.lp-pin.is-dot:hover .lp-pin-ph,.lp-pin.is-dot.is-hot .lp-pin-ph,.lp-pin.is-dot:hover .lp-pin-g,.lp-pin.is-dot.is-hot .lp-pin-g,
.lp-pin.is-dot:focus-visible .lp-pin-ph,.lp-pin.is-dot:focus-visible .lp-pin-g{opacity:1}
.lp-pin.is-dot:hover .lp-pin-l,.lp-pin.is-dot.is-hot .lp-pin-l,.lp-pin.is-dot:focus-visible .lp-pin-l{top:27px}
.lp-pin:hover .lp-pin-in,.lp-pin.is-hot .lp-pin-in,.lp-pin:focus-visible .lp-pin-in{width:54px;height:54px;box-shadow:0 0 0 3px var(--sea),0 10px 24px rgba(0,0,0,.65)}
.lp-pin:hover,.lp-pin.is-hot,.lp-pin:focus-visible{z-index:9000!important}
.lp-pin--lodge .lp-pin-in{width:64px;height:64px;box-shadow:0 0 0 3px #fff,0 0 0 9px rgba(69,182,232,.5),0 12px 28px rgba(0,0,0,.65)}
.lp-pin--lodge .lp-pin-in::before{content:"";position:absolute;inset:-14px;border-radius:50%;border:2px solid rgba(227,237,242,.75);animation:lp-pulse 2.8s ease-out infinite}
@keyframes lp-pulse{0%{transform:scale(.7);opacity:.9}100%{transform:scale(1.7);opacity:0}}
html.m-calm .lp-pin--lodge .lp-pin-in::before{animation:none;opacity:.5}
.lp-pin--lodge .lp-pin-g{width:24px;height:24px;background:var(--teal-deep)}.lp-pin--lodge .lp-pin-g svg{width:13px;height:13px}
.lp-pin--lodge .lp-pin-l{top:38px;opacity:1}
.lp-pin--lodge .lp-pin-l b{font-family:var(--serif);font-size:15px}
.lp-pin--lodge .lp-pin-l .lp-pin-s{font-size:10px;letter-spacing:.16em;text-transform:uppercase}
.lp-pin--lodge:hover .lp-pin-in,.lp-pin--lodge.is-hot .lp-pin-in{width:70px;height:70px}
.lm-map[data-z="10"] .lp-pin:not(.lp-pin--lodge):not(.is-dot):not(:hover):not(.is-hot) .lp-pin-in{width:38px;height:38px}
.lm-map[data-z="10"] .lp-pin:not(.lp-pin--lodge):not(.is-dot) .lp-pin-l{top:22px}
.lm-map .lp-pin.is-dot:not(:hover):not(.is-hot):not(:focus-visible) .lp-pin-in{width:14px;height:14px}

/* ---------- popup ---------- */
.lp-pop .leaflet-popup-content-wrapper{background:var(--white);color:var(--ink-2);border-radius:12px;padding:0;overflow:clip;box-shadow:0 30px 60px -20px rgba(0,0,0,.75)}
.lp-pop .leaflet-popup-content{margin:0;width:auto!important;line-height:1.4;font-family:var(--sans)}
.lp-pop .leaflet-popup-tip{background:#fff;box-shadow:none}
.lp-pop .leaflet-popup-close-button{top:8px;right:8px;width:28px;height:28px;border-radius:50%;background:rgba(3,32,47,.7);color:#fff;font:400 18px/28px var(--sans);text-align:center;padding:0}
.lp-pop .leaflet-popup-close-button:hover{background:var(--teal-deep);color:#fff}
.lp-pc{display:block;color:inherit;text-decoration:none;width:min(320px,80vw)}
.lp-pc-m{position:relative;display:block;aspect-ratio:16/10;overflow:clip;background:var(--ink-3)}
.lp-pc-m img{width:100%;height:100%;object-fit:cover;display:block}
.lp-pc-b{display:block;padding:.85rem 1rem 1rem}
.lp-pc-b strong{display:block;font-family:var(--serif);font-weight:400;font-size:1.2rem;line-height:1.12;letter-spacing:-.01em}
.lp-pc-d{display:block;margin-top:.25rem;font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--teal-deep)}
.lp-pc-b p{font-size:.84rem;line-height:1.45;color:rgba(3,32,47,.72);margin:.45rem 0 0}
.lp-pc .lp-go{margin-top:.6rem}
.lp-pc:hover .lp-go{text-decoration:underline;text-underline-offset:.25em}

/* ---------- controls on the map ---------- */
.lm-ctl{position:absolute;right:12px;top:12px;z-index:800;display:grid;gap:6px}
.lm-ctl .lm-btn,.lm-hint .btn{box-shadow:0 8px 20px rgba(0,0,0,.4)}
.lm-hint .btn{padding:.9rem 1.7rem;font-size:.8rem}
.lm-ctl .lm-btn{width:42px;height:42px;min-width:0;min-height:0;padding:0;display:grid;place-items:center;border-radius:8px;
  background:rgba(3,32,47,.9);color:var(--mist);border:1px solid rgba(227,237,242,.28);transition:background .2s,border-color .2s}
.lm-ctl .lm-btn:hover{background:var(--teal-deep);border-color:transparent}
.lm-ctl .lm-btn[aria-pressed=true]{background:var(--sea);color:var(--ink)}
.lm-ctl svg{width:18px;height:18px}
.lm-ctl .lm-btn-t{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.lm-attr{position:absolute;left:8px;bottom:6px;z-index:800;margin:0;font-size:.6rem;line-height:1.3;color:rgba(255,255,255,.78);background:rgba(0,0,0,.4);padding:.2em .55em;border-radius:3px;max-width:calc(100% - 16px)}
.lm-attr a{text-decoration:underline;text-underline-offset:.15em}
.leaflet-bottom.leaflet-left{bottom:26px;left:8px}
.leaflet-control-scale{margin:0!important}
.leaflet-control-scale-line{background:rgba(0,0,0,.4);color:#fff;border:1.5px solid rgba(255,255,255,.75);border-top:none;font:700 10px/1.4 var(--sans);letter-spacing:.06em;padding:1px 6px 2px;text-shadow:0 1px 1px #000}
.lm-hint{position:absolute;inset:0;z-index:810;display:grid;place-items:end center;padding-bottom:6.2rem;pointer-events:none}
.lm-hint[hidden]{display:none}
.lm-hint .btn{pointer-events:auto}
.lm-tip{position:absolute;left:50%;top:14px;transform:translateX(-50%);z-index:800;font-size:.68rem;font-weight:600;letter-spacing:.06em;color:rgba(255,255,255,.85);background:rgba(0,0,0,.45);padding:.35em .8em;border-radius:999px;pointer-events:none;opacity:1;transition:opacity .5s;white-space:nowrap}
.lm27.is-live .lm-tip{animation:lm-tip 7s ease forwards}
@keyframes lm-tip{0%,80%{opacity:1}100%{opacity:0;visibility:hidden}}
@media(pointer:coarse){.lm-tip{display:none}}

/* ---------- the list column ---------- */
.lp-bar{position:sticky;top:var(--stick);z-index:20;background:var(--ink);padding:.9rem var(--pad) .7rem;border-bottom:1px solid var(--line-d);display:grid;gap:.65rem;transition:top .35s var(--ease)}
.lp-searchw{position:relative}
.lp-search{font:inherit;font-size:.95rem;color:var(--mist);background:rgba(227,237,242,.07);border:1px solid var(--line-d);border-radius:8px;width:100%;padding:.75em 3.2em .75em 2.6em;min-height:46px}
.lp-search::placeholder{color:rgba(227,237,242,.5)}
.lp-search:focus{outline:none;border-color:var(--sea);background:rgba(227,237,242,.1)}
.lp-searchw::before{content:"";position:absolute;left:.95em;top:50%;width:14px;height:14px;transform:translateY(-58%);border:2px solid rgba(227,237,242,.65);border-radius:50%;box-sizing:border-box;pointer-events:none}
.lp-searchw::after{content:"";position:absolute;left:calc(.95em + 12px);top:50%;width:7px;height:2px;background:rgba(227,237,242,.65);transform:rotate(45deg) translateY(5px);pointer-events:none}
.lp-status{position:absolute;right:.9em;top:50%;transform:translateY(-50%);font-size:.7rem;font-weight:700;letter-spacing:.08em;color:var(--sea);pointer-events:none}
.lp-sugg{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:40;background:var(--ink-2);border:1px solid var(--line-d);border-radius:10px;
  box-shadow:0 24px 50px -20px rgba(0,0,0,.8);display:grid;padding:.35rem;overflow:clip}
.lp-sugg[hidden]{display:none}
.lp-sugg button{display:grid;grid-template-columns:36px minmax(0,1fr) auto;gap:.7rem;align-items:center;text-align:left;width:100%;padding:.45rem .6rem;color:var(--mist);border-radius:7px;transition:background .2s}
.lp-sugg button:hover,.lp-sugg button:focus-visible{background:var(--teal-deep)}
.lp-sugg-ph{width:36px;height:36px;border-radius:50%;background-size:cover;background-position:center;box-shadow:0 0 0 1.5px rgba(255,255,255,.8)}
.lp-sugg strong{font-family:var(--serif);font-weight:400;font-size:1rem;line-height:1.15}
.lp-sugg span:last-child{font-size:.7rem;color:var(--sea);white-space:nowrap}
.lp-sugg-none{padding:.55rem .7rem;font-size:.8rem;color:rgba(227,237,242,.65)}
.lp-chips{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}
.lp-chip{display:inline-flex;align-items:center;gap:.5em;min-height:38px;padding:.5em .95em;border-radius:999px;border:1px solid var(--line-d);
  color:rgba(227,237,242,.85);font-weight:700;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;transition:all .2s;cursor:pointer;background:transparent}
.lp-chip:hover{border-color:var(--mist);color:#fff}
.lp-chip[aria-pressed=true]{background:var(--sea);border-color:var(--sea);color:var(--ink)}
.lp-chip svg{width:11px;height:11px;fill:currentColor}
.lp-count{display:none}
.lp-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.4rem 1.1rem;padding:1rem var(--pad) 2.2rem}
@media(min-width:1700px){.lp-cards{grid-template-columns:repeat(3,minmax(0,1fr))}}
.lp-group{display:contents}
.lp-group[hidden]{display:none}
.lp-gh{grid-column:1/-1;display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin:.8rem 0 -.3rem;padding-top:.6rem;
  font-family:var(--serif);font-weight:400;font-size:1.45rem;letter-spacing:-.01em;color:var(--mist);border-top:1px solid var(--line-d)}
.lp-gh:first-child{border-top:0;padding-top:0;margin-top:0}
.lp-gh small{font-family:var(--sans);font-weight:600;font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:var(--sea)}
.lp-card{position:relative;display:grid;grid-template-rows:auto 1fr auto;gap:.6rem;color:var(--mist);min-width:0;border-radius:12px;transition:transform .35s var(--ease)}
/* v30: 97 cards used to be styled, laid out and painted on every load and every forced layout (the 579 ms
   layout in the trace). content-visibility:auto renders only the cards near the viewport; the ones below
   keep a remembered placeholder height. The 8 px padding + matching negative margin is pixel-neutral and keeps
   the hover ring (2 px) and the focus outlines (2 px at 3–4 px offset) inside the containment box, so nothing
   is clipped. The lodge card is first and always on screen, so it is left as is. */
.lp-card:not(.lp-card--lodge){content-visibility:auto;contain-intrinsic-size:auto 400px;padding:8px;margin:-8px}
.lp-card[hidden]{display:none}
.lp-card-a{display:block;color:inherit;text-decoration:none;outline:none}
.lp-card-a:focus-visible .lp-card-m{outline:2px solid var(--sea);outline-offset:3px}
/* v28 card: the photo is one link, the text another (same page), so the credit can sit ON the photo */
.lp-card-mw{position:relative;display:block;min-width:0}
a.lp-card-m{text-decoration:none;color:inherit}
a.lp-card-b{color:inherit;text-decoration:none;outline:none;border-radius:6px}
a.lp-card-b:focus-visible{outline:2px solid var(--sea);outline-offset:4px}
.lp-card-m{position:relative;display:block;aspect-ratio:4/3;overflow:clip;border-radius:12px;background:var(--ink-3);box-shadow:0 1px 0 rgba(255,255,255,.04) inset}
.lp-card-m img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 1.1s var(--ease)}
.lp-card:hover .lp-card-m img,.lp-card.is-hot .lp-card-m img{transform:scale(1.045)}
.lp-card.is-hot .lp-card-m{box-shadow:0 0 0 2px var(--sea)}
.lp-card.is-hot .lp-card-b strong{color:var(--sea)}
.lp-cat{position:absolute;left:.65rem;top:.65rem;font-size:.6rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#fff;background:rgba(3,20,32,.62);padding:.4em .7em;border-radius:999px;white-space:nowrap;max-width:calc(58% - .65rem);overflow:hidden;text-overflow:ellipsis}
.lp-drive{position:absolute;right:.65rem;top:.65rem;font-size:.7rem;font-weight:700;letter-spacing:.04em;color:var(--ink);background:var(--mist);padding:.35em .7em;border-radius:999px;white-space:nowrap;max-width:calc(38% - .65rem);overflow:hidden;text-overflow:ellipsis}
.lp-cred{position:absolute;right:.55rem;bottom:.45rem;z-index:2;font-size:.58rem;line-height:1.2;color:rgba(255,255,255,.8);text-shadow:0 1px 2px rgba(0,0,0,.9);text-align:right;max-width:70%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lp-cred a{color:inherit;text-decoration:underline;text-underline-offset:.12em}
.lp-card-b{display:block;padding:0 .15rem}
.lp-card-b strong{display:block;font-family:var(--serif);font-weight:400;font-size:1.22rem;line-height:1.12;letter-spacing:-.012em;transition:color .2s}
.lp-card-b p{font-size:.86rem;line-height:1.45;color:rgba(227,237,242,.72);margin:.35rem 0 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.lp-facts{display:block;margin-top:.35rem;font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--sea)}
.lp-card-f{display:flex;justify-content:space-between;align-items:center;gap:.6rem;padding:0 .15rem}
.lp-go{font-size:.68rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--sea)}
.lp-card:hover .lp-go{text-decoration:underline;text-underline-offset:.25em}
.lp-loc{display:inline-flex;align-items:center;gap:.5em;min-height:36px;padding:.4em .85em;border-radius:999px;border:1px solid var(--line-d);color:var(--mist);font-size:.66rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;transition:all .2s;cursor:pointer;background:transparent;white-space:nowrap}
.lp-loc:hover,.lp-loc:focus-visible{background:var(--teal-deep);border-color:transparent;color:#fff}
.lp-loc svg{width:14px;height:14px}
.lp-card--lodge{grid-column:1/-1;grid-template-rows:none;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:1.1rem;align-items:center;background:var(--ink-2);border:1px solid var(--line-d);border-radius:14px;padding:.7rem}
.lp-card--lodge .lp-card-a{display:contents}
.lp-card--lodge .lp-card-m{aspect-ratio:4/3;border-radius:10px}
.lp-card--lodge .lp-card-b{padding:.2rem .3rem .2rem 0}
.lp-card--lodge .lp-card-b strong{font-size:1.5rem}
.lp-card--lodge .lp-card-b p{-webkit-line-clamp:3;color:rgba(227,237,242,.8)}
.lp-card--lodge .lp-card-f{grid-column:2;padding:0 .3rem .2rem 0}
.lp-card--lodge .lp-you{display:inline-block;margin-bottom:.4rem;font-size:.62rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--ink);background:var(--sea);padding:.35em .7em;border-radius:999px}
.lp-empty{padding:2rem var(--pad);color:rgba(227,237,242,.7);font-size:.95rem}
.lp-empty[hidden]{display:none}
.lp-credits{padding:.6rem var(--pad) 1.6rem;font-size:.74rem;color:rgba(227,237,242,.62);border-top:1px solid var(--line-d)}
.lp-credits summary{cursor:pointer;font-weight:700;letter-spacing:.14em;text-transform:uppercase;font-size:.66rem;color:var(--sea);padding:.6rem 0}
.lp-credits ul{margin:.4rem 0 0;padding:0;list-style:none;columns:3;column-gap:2rem}
.lp-credits li{break-inside:avoid;padding:.25rem 0;border-top:1px solid rgba(227,237,242,.08)}
.lp-credits a{color:var(--mist);text-decoration:underline;text-underline-offset:.15em}
@media(max-width:1100px){.lp-credits ul{columns:2}}
@media(max-width:600px){.lp-credits ul{columns:1}}

/* ---------- phone strip (Google-Maps-style swipe cards over the map) ---------- */
.lp-strip{display:none}

/* ---------- fullscreen ---------- */
.lm27.is-full .lm-mapcol{position:fixed;inset:0;z-index:1200;height:100vh;height:100dvh;min-height:0;top:0}
html.lm-fullscreen #header,html.lm-fullscreen #bookbar,html.lm-fullscreen #to-top,html.lm-fullscreen #progress{display:none}
.lm27.is-full .lm-ctl{top:12px}

/* ---------- responsive ---------- */
@media(max-width:1099px){
  .lm-head{grid-template-columns:1fr}
  .lm-head-r{justify-content:flex-start}
  .lm-split{grid-template-columns:1fr}
  .lm-mapcol{position:relative;top:auto;height:72svh;min-height:440px;max-height:760px}
  .lm-listcol{border-left:0;border-top:1px solid var(--line-d)}
  .lp-strip{position:absolute;left:0;right:0;bottom:0;z-index:805;display:flex;gap:.6rem;overflow-x:auto;overscroll-behavior-x:contain;
    scroll-snap-type:x mandatory;padding:.6rem .8rem .8rem;scrollbar-width:none;-webkit-overflow-scrolling:touch;
    background:linear-gradient(to top,rgba(3,20,32,.7),transparent)}
  .lp-strip::-webkit-scrollbar{display:none}
  .lp-sc{flex:0 0 min(78vw,330px);scroll-snap-align:center;display:grid;grid-template-columns:100px minmax(0,1fr);overflow:clip;border-radius:12px;
    background:#fff;color:var(--ink-2);text-decoration:none;min-height:100px;box-shadow:0 14px 30px -12px rgba(0,0,0,.7)}
  .lp-sc[hidden]{display:none}
  .lp-sc img{width:100px;height:100%;object-fit:cover;display:block}
  .lp-sc-b{padding:.6rem .7rem .55rem;display:grid;align-content:center;gap:.15rem;min-width:0}
  .lp-sc-b b{font-family:var(--serif);font-weight:400;font-size:1.02rem;line-height:1.12;letter-spacing:-.01em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .lp-sc-b .lp-sc-i{font-style:normal;font-size:.66rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--teal-deep);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .lp-sc-b span{font-size:.64rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:rgba(3,32,47,.72)}
  .lp-sc.is-hot,.lp-sc.is-hot{box-shadow:0 0 0 2px var(--sea),0 14px 30px -12px rgba(0,0,0,.7)}
  .lp-strip-x{display:none}
  .leaflet-bottom.leaflet-left{bottom:auto;top:12px;left:12px}
  .lm-attr{bottom:auto;top:12px;left:auto;right:64px;display:none}
  .lm-hint{padding-bottom:8.4rem}
  .lm27.is-full .lm-attr{display:block;top:auto;bottom:6px;left:8px;right:auto}
  .lm27.is-full .lp-strip{padding-bottom:max(.8rem,env(safe-area-inset-bottom))}
  .lp-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.2rem .9rem}
  .lp-card--lodge{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}
}
@media(max-width:600px){
  .lm-mapcol{height:66svh;min-height:400px}
  .lp-cards{grid-template-columns:1fr}
  .lp-card--lodge{grid-template-columns:1fr}
  .lp-card--lodge .lp-card-f{grid-column:1}
  .lp-card-b strong{font-size:1.15rem}
  .lp-chip{padding:.45em .8em;font-size:.64rem;min-height:36px}
  .lm-ctl{right:8px;top:8px;gap:5px}
  .lm-ctl .lm-btn{width:40px;height:40px}
}

/* ---------- plan the trip (the pages that are not one place) ---------- */
.mi-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1rem,2.5vw,2.4rem)}
.mi{border-top:1px solid var(--line-l);padding-top:1rem}
.mi-k{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;font-size:.7rem;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--teal);margin-bottom:.6rem}
.mi-k a{font-weight:800;letter-spacing:.14em;color:var(--teal-deep);white-space:nowrap}
.mi ul{list-style:none;margin:0;padding:0}
.mi li a{display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;padding:.55rem 0;border-bottom:1px solid var(--line-l);color:var(--ink);font-family:var(--serif);font-size:1.02rem;line-height:1.25;transition:color .2s var(--ease),padding-left .2s var(--ease)}
.mi li a:hover{color:var(--teal-deep);padding-left:.3rem}
.mi li a span{font-family:var(--sans);font-size:.66rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:rgba(3,32,47,.5);white-space:normal;line-height:1.3}
.mi li a{min-width:0}
.mi li a span{min-width:0}
/* mi mobile stack: long nav sublabels are nowrap; stack them under the label so the grid never widens the page */
@media(max-width:760px){.mi-k{flex-wrap:wrap}}
@media(max-width:1100px){.mi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.mi-grid{grid-template-columns:1fr}}
