/* LPJH single Location page — assets/css/location.css
   Enqueue AFTER brand-tokens.css and homepage.css: reuses .hp bands, buttons,
   hairlines and the residences carousel. Tokens only; no raw brand hexes.
*/
/* ============================================================
   LPJH — Location single page
   Loads AFTER homepage.css: reuses .hp bands, buttons, hairlines and the
   residences carousel. Only location-specific pieces live here.
   Class prefix: .loc-
   ============================================================ */

/* ---------- HERO ---------- */
.loc-hero{position:relative;height:66vh;min-height:480px;overflow:hidden;background:var(--tr-stone-800)}
.loc-hero__media{position:absolute;inset:0}
.loc-hero__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.loc-hero__scrim{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(28,25,23,.5) 0%,rgba(28,25,23,.24) 38%,rgba(28,25,23,.74) 100%),linear-gradient(0deg,rgba(28,25,23,.2),rgba(28,25,23,.2))}
.loc-hero__body{position:absolute;left:0;right:0;bottom:3.25rem}
.loc-crumb{display:flex;align-items:center;gap:.6rem;margin:0 0 1.1rem;font-family:var(--tr-font-body);font-size:.64rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.65)}
.loc-crumb a{color:rgba(255,255,255,.65);text-decoration:none;transition:color .26s ease}
.loc-crumb a:hover{color:var(--tr-gold-pale)}
.loc-hero__h1{margin:0;font-family:var(--tr-font-display);font-size:4.6rem;font-weight:500;line-height:1;letter-spacing:-.015em;color:#fff}
.loc-hero__line{margin:1.15rem 0 0;font-family:var(--tr-font-display);font-size:1.35rem;font-weight:500;font-style:italic;line-height:1.4;color:rgba(255,255,255,.86);max-width:30em;text-wrap:pretty}

/* ---------- FACTS STRIP ---------- */
.loc-facts{border-bottom:1px solid var(--tr-border);background:var(--tr-cream)}
.loc-facts__grid{display:grid;grid-template-columns:repeat(4,1fr)}
.loc-facts__cell{padding:2rem 2.25rem;border-left:1px solid var(--tr-border)}
.loc-facts__cell:first-child{padding-left:0;border-left:0}
.loc-facts__cell:last-child{padding-right:0}
.loc-facts__l{display:block;margin-bottom:.55rem;font-family:var(--tr-font-body);font-size:.62rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--tr-stone-400)}
.loc-facts__v{display:block;font-family:var(--tr-font-display);font-size:1.85rem;font-weight:500;line-height:1.1;letter-spacing:-.01em;color:var(--tr-heading)}
.loc-facts__v small{font-family:var(--tr-font-body);font-size:.72rem;font-weight:500;letter-spacing:.04em;color:var(--tr-text-muted);margin-left:.4rem}

/* ---------- INTRO ---------- */
.loc-intro{display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center}
.loc-intro__media{position:relative;aspect-ratio:4/5;overflow:hidden;background:var(--tr-linen)}
.loc-intro__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.loc-prose p{margin:0 0 1.25rem;font-family:var(--tr-font-body);font-size:1rem;line-height:1.8;color:var(--tr-text-muted);text-wrap:pretty}
.loc-prose p:last-child{margin-bottom:0}
.loc-prose p:first-of-type{font-size:1.12rem;line-height:1.7;color:var(--tr-text)}

/* ---------- MAP ---------- */
.loc-map{display:grid;grid-template-columns:1.7fr 1fr;gap:0;border:1px solid var(--tr-border)}
.loc-map__canvas{height:580px;background:var(--tr-linen)}
/* Real OSM geometry, desaturated to sit inside the palette rather than fight it. */
[data-basemap="osm"] .loc-map__canvas .leaflet-tile-pane{filter:grayscale(1) contrast(.9) brightness(1.06)}
.loc-map__canvas .leaflet-container{font-family:var(--tr-font-body);background:var(--tr-linen)}
.loc-map__canvas .leaflet-control-attribution{font-size:9px;background:rgba(250,250,248,.86);color:var(--tr-stone-500)}
.loc-map__canvas .leaflet-control-attribution a{color:var(--tr-stone-500)}
.loc-map__canvas .leaflet-bar{border:1px solid var(--tr-border);border-radius:0;box-shadow:none}
.loc-map__canvas .leaflet-bar a{border-radius:0;color:var(--tr-heading);border-bottom-color:var(--tr-border)}
.loc-map__canvas .leaflet-bar a:hover{background:var(--tr-linen);color:var(--tr-accent)}
.loc-pin{display:grid;place-items:center;width:26px;height:26px;background:var(--tr-accent);color:var(--tr-on-accent);font-family:var(--tr-font-body);font-size:.62rem;font-weight:600;border:1px solid var(--tr-accent);transition:background-color .2s ease}
.loc-pin--anchor{background:var(--tr-charcoal);border-color:var(--tr-charcoal)}
.loc-pin.is-active{background:var(--tr-charcoal);border-color:var(--tr-gold-pale)}
.loc-map__aside{border-left:1px solid var(--tr-border);display:flex;flex-direction:column;min-width:0}
.loc-map__head{padding:1.75rem 1.75rem 1.25rem;border-bottom:1px solid var(--tr-border)}
.loc-map__list{list-style:none;margin:0;padding:0;overflow-y:auto;flex:1 1 auto}
.loc-map__item{display:block;width:100%;text-align:left;padding:1.05rem 1.75rem;background:none;border:0;border-bottom:1px solid var(--tr-border);cursor:pointer;transition:background-color .26s ease}
.loc-map__item:hover,.loc-map__item.is-active{background:var(--tr-linen)}
.loc-map__item b{display:block;font-family:var(--tr-font-display);font-size:1.1rem;font-weight:500;letter-spacing:-.01em;color:var(--tr-heading);transition:color .26s ease}
.loc-map__item.is-active b,.loc-map__item:hover b{color:var(--tr-accent)}
.loc-map__item span{display:block;margin-top:.3rem;font-family:var(--tr-font-body);font-size:.72rem;letter-spacing:.02em;color:var(--tr-text-muted)}
.loc-map__note{padding:1.1rem 1.75rem;font-family:var(--tr-font-body);font-size:.68rem;line-height:1.6;color:var(--tr-stone-400);border-top:1px solid var(--tr-border)}

/* ---------- DRIVE TIMES ---------- */
.loc-drive{border-top:1px solid var(--tr-border)}
.loc-drive__row{display:grid;grid-template-columns:1.4fr .6fr .6fr 1.4fr;gap:2rem;align-items:baseline;padding:1.35rem .25rem;border-bottom:1px solid var(--tr-border)}
.loc-drive__to{font-family:var(--tr-font-display);font-size:1.35rem;font-weight:500;letter-spacing:-.01em;color:var(--tr-heading)}
.loc-drive__n{font-family:var(--tr-font-body);font-size:.8rem;font-weight:600;letter-spacing:.06em;color:var(--tr-heading);font-variant-numeric:tabular-nums}
.loc-drive__n span{color:var(--tr-text-muted);font-weight:500;margin-left:.2rem}
.loc-drive__note{font-family:var(--tr-font-body);font-size:.78rem;line-height:1.6;color:var(--tr-text-muted)}
.loc-drive__hd{display:grid;grid-template-columns:1.4fr .6fr .6fr 1.4fr;gap:2rem;padding:0 .25rem .8rem;font-family:var(--tr-font-body);font-size:.6rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--tr-stone-400)}

/* ---------- SEASONS ---------- */
.loc-seasons{display:grid;grid-template-columns:repeat(4,1fr)}
.loc-season{padding:0 2.25rem;border-left:1px solid rgba(255,255,255,.14)}
.loc-season:first-child{padding-left:0;border-left:0}
.loc-season:last-child{padding-right:0}
.loc-season__n{margin:0 0 .35rem;font-family:var(--tr-font-body);font-size:.62rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--tr-gold-pale)}
.loc-season__h{margin:0 0 .85rem;font-family:var(--tr-font-display);font-size:1.5rem;font-weight:500;line-height:1.15;letter-spacing:-.01em;color:var(--tr-cream)}
.loc-season__p{margin:0;font-family:var(--tr-font-body);font-size:.86rem;line-height:1.75;color:rgba(250,250,248,.66);text-wrap:pretty}

/* ---------- NEARBY ---------- */
.loc-near{display:grid;grid-template-columns:repeat(3,1fr)}
.loc-near__col{padding:0 2.5rem;border-left:1px solid var(--tr-border)}
.loc-near__col:first-child{padding-left:0;border-left:0}
.loc-near__col:last-child{padding-right:0}
.loc-near__h{margin:0 0 1.5rem;font-family:var(--tr-font-body);font-size:.64rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--tr-accent)}
.loc-near__list{list-style:none;margin:0;padding:0}
.loc-near__list li{padding:.95rem 0;border-top:1px solid var(--tr-border);font-family:var(--tr-font-body);font-size:.85rem;line-height:1.6;color:var(--tr-text)}
.loc-near__list li b{display:block;font-family:var(--tr-font-display);font-size:1.15rem;font-weight:500;letter-spacing:-.01em;color:var(--tr-heading);margin-bottom:.2rem}
.loc-near__list li span{color:var(--tr-text-muted);font-size:.8rem}

/* ---------- OTHER LOCATIONS ---------- */
.loc-others{border-top:1px solid var(--tr-border)}
.loc-others__row{display:flex;align-items:center;justify-content:space-between;gap:2rem;padding:1.6rem .25rem;border-bottom:1px solid var(--tr-border);text-decoration:none;transition:padding-left .4s cubic-bezier(.19,1,.22,1)}
.loc-others__row:hover{padding-left:1.25rem}
.loc-others__name{font-family:var(--tr-font-display);font-size:1.85rem;font-weight:500;letter-spacing:-.01em;color:var(--tr-heading);transition:color .26s ease}
.loc-others__row:hover .loc-others__name{color:var(--tr-accent)}
.loc-others__right{display:flex;align-items:center;gap:1.75rem;flex:0 0 auto}
.loc-others__count{font-family:var(--tr-font-body);font-size:.68rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--tr-stone-400)}

/* ---------- RESPONSIVE ---------- */
@media (max-width:1100px){
  .loc-hero__h1{font-size:3.4rem}
  .loc-map{grid-template-columns:1fr}
  .loc-map__aside{border-left:0;border-top:1px solid var(--tr-border)}
  .loc-map__list{max-height:320px}
  .loc-seasons{grid-template-columns:repeat(2,1fr);gap:2.5rem 0}
  .loc-season:nth-child(3){padding-left:0;border-left:0}
  .loc-near{grid-template-columns:1fr}
  .loc-near__col{padding:2.25rem 0 0;border-left:0;border-top:1px solid var(--tr-border)}
  .loc-near__col:first-child{padding-top:0;border-top:0}
}
@media (max-width:899px){
  .loc-hero{height:60vh;min-height:400px}
  .loc-hero__h1{font-size:2.5rem}
  .loc-hero__line{font-size:1.1rem}
  .loc-hero__body{bottom:2rem}
  .loc-facts__grid{grid-template-columns:repeat(2,1fr)}
  .loc-facts__cell{padding:1.5rem 1.25rem}
  .loc-facts__cell:first-child,.loc-facts__cell:nth-child(3){padding-left:0;border-left:0}
  .loc-intro{grid-template-columns:1fr;gap:2.5rem}
  .loc-map__canvas{height:400px}
  .loc-seasons{grid-template-columns:1fr;gap:2rem 0}
  .loc-season{padding:2rem 0 0;border-left:0;border-top:1px solid rgba(255,255,255,.14)}
  .loc-season:first-child{padding-top:0;border-top:0}
  .loc-drive__hd{display:none}
  .loc-drive__row{grid-template-columns:1fr auto;gap:.5rem 1rem;padding:1.15rem .25rem}
  .loc-drive__note{grid-column:1/-1;font-size:.74rem}
  .loc-others__name{font-size:1.4rem}
  .loc-others__count{display:none}
}
