:root {
  --header-height:102px;
  --page-gutter:clamp(36px,2.8vw,80px);
  --ink:#251d17;
  --plaster:#f4ecdf;
  --paper:#fffaf2;
  --sand:#d8c6ad;
  --terracotta:#9d4b31;
  --olive:#666a50;
  --brass:#ac8351;
  --night:#171a16;
  --serif:"Alegreya",Georgia,serif;
  --sans:"Jost","Avenir Next",Arial,sans-serif;
  /* One continuous reading scale, shared by every page. rem floors retain
     enlarged user text; viewport growth keeps wide-screen copy in proportion. */
  --text-body:clamp(1.125rem, .95rem + .55vw, 2.5rem);
  --text-panel:clamp(1.125rem, .9rem + .5vw, 2.25rem);
  --text-support:clamp(1rem, .85rem + .4vw, 2rem);
  --text-label:clamp(.875rem, .75rem + .32vw, 1.75rem);
  --text-fine:clamp(.8125rem, .72rem + .22vw, 1.375rem);
  --text-card-title:clamp(2rem, 1.4rem + 1.2vw, 4.25rem);
  --section-space:clamp(4.5rem, 3rem + 4vw, 12rem);
  --panel-space:clamp(1.5rem, 1rem + 1vw, 4rem);
  --reading-measure:60ch;
}

* { box-sizing:border-box; }
html { scroll-behavior:smooth; overflow-x:hidden; }
body { margin:0; overflow-x:hidden; color:var(--ink); background:var(--plaster); font:var(--text-body)/1.65 var(--sans); opacity:0; transition:opacity .45s ease; }
body.is-ready { opacity:1; }
body.page-leave { opacity:0; }
img,video { display:block; width:100%; }
img { image-rendering:auto; }
/* Property-faithful display grades: correct source-to-source variance without
   changing architecture, furnishings, sky structure or the established crops. */
.tone-vista { filter:none; }
.tone-pool-terrace { filter:brightness(1.005) saturate(.90) contrast(.985); }
.tone-arrival { filter:brightness(1) saturate(.94) contrast(.985); }
.tone-courtyard { filter:none; }
.tone-great-room { filter:brightness(1.015) saturate(.86) contrast(1); }
.tone-kitchen { filter:brightness(1.015) saturate(.92) contrast(1); }
.tone-primary-suite { filter:brightness(1.01) saturate(.98) contrast(1.005); }
.tone-casita { filter:brightness(1.015) saturate(.88) contrast(.995); }
.tone-window-balanced { filter:none; }
.tone-sunset-pool,.tone-sunset-valley,.tone-dusk-mountain,.tone-afterglow { filter:none; }
.crop-pool-vista { object-position:50% 70%!important; }
.crop-pool-terraces { object-position:50% 54%!important; }
.crop-arrival { object-position:50% 46%!important; }
.crop-courtyard { object-position:50% 52%!important; }
.crop-great-room { object-position:50% 53%!important; }
.crop-piano-view { object-position:50% 58%!important; }
.crop-kitchen { object-position:52% 55%!important; }
.crop-primary-suite { object-position:44% 55%!important; }
.crop-primary-bath { object-position:54% 50%!important; }
.crop-casita-detail { object-position:51% 54%!important; }
.crop-casita-view { object-position:56% 55%!important; }
.crop-pool-close { object-position:62% 52%!important; }
.crop-sunset-pool { object-position:50% 57%!important; }
.crop-sunset-rocks { object-position:50% 48%!important; }
a { color:inherit; }
h1,h2,h3,p,figure,blockquote { margin-top:0; }
h1,h2,h3 { font-family:var(--serif); font-weight:400; line-height:.97; letter-spacing:-.012em; }
.shell { width:calc(100% - 2 * var(--page-gutter)); margin-inline:auto; }
.eyebrow { font-size:var(--text-label); font-weight:600; letter-spacing:.16em; text-transform:uppercase; overflow-wrap:anywhere; }
.display { font-size:clamp(3.25rem,2rem + 5vw,10rem); }
.section-title { font-size:clamp(2.75rem,1.5rem + 3vw,7rem); }
.lede { font-size:var(--text-body); line-height:1.65; }
.button { display:inline-flex; align-items:center; gap:18px; min-height:50px; padding:8px 24px; color:#fff; background:var(--terracotta); text-decoration:none; font-size:var(--text-label); font-weight:600; letter-spacing:.12em; text-transform:uppercase; transition:background .25s ease,transform .25s ease; }
.button::after { content:"→"; font-size:16px; font-weight:400; }
.button:hover { background:#874026; transform:translateY(-2px); }
.text-link { display:inline-flex; gap:14px; align-items:center; color:var(--terracotta); text-decoration:none; font-size:var(--text-label); font-weight:600; letter-spacing:.12em; text-transform:uppercase; }
.text-link::after { content:"→"; font-size:16px; }

.site-header { position:relative; z-index:30; color:var(--ink); background:rgba(255,250,242,.975); border-bottom:1px solid rgba(52,37,25,.10); font:15px/1.7 var(--sans); }
.site-header.is-stuck { position:sticky; top:0; box-shadow:0 8px 30px rgba(40,29,19,.08); }
.nav { min-height:var(--header-height); display:flex; align-items:center; justify-content:space-between; gap:28px; }
.brand { display:inline-grid; gap:6px; min-width:250px; color:var(--ink); text-decoration:none; }
.brand-name { display:flex; align-items:baseline; gap:7px; white-space:nowrap; font-family:var(--serif); }
.brand-viva,.brand-rocas { font-size:36px; font-style:italic; font-weight:500; line-height:.8; letter-spacing:-.035em; }
.brand-mark { align-self:flex-start; margin:0 0 0 -4px; color:var(--terracotta); font:600 8px/1 var(--sans); letter-spacing:0; }
.brand-place { color:var(--terracotta); font:500 8px/1 var(--sans); letter-spacing:.25em; text-transform:uppercase; }
.nav-links { display:flex; align-items:center; gap:24px; }
.nav-links > a:not(.button) { position:relative; text-decoration:none; font-size:10px; font-weight:500; letter-spacing:.17em; text-transform:uppercase; }
.nav-links > a[aria-current="page"]::after { content:""; position:absolute; left:0; right:0; bottom:-8px; height:2px; background:var(--terracotta); }
.menu-toggle { display:none; min-height:44px; border:0; padding:8px 0; background:transparent; font:500 var(--text-label) var(--sans); letter-spacing:.12em; text-transform:uppercase; }

.home-hero { position:relative; min-height:calc(100vh - var(--header-height)); display:flex; align-items:flex-end; overflow:hidden; padding:0 0 clamp(34px,5vh,62px); background:var(--paper); font:15px/1.7 var(--sans); }
.hero-copy { position:relative; z-index:1; width:min(530px,calc(100% - 72px)); margin-left:var(--page-gutter); padding:38px 44px 42px; display:flex; flex-direction:column; align-items:flex-start; justify-content:center; background:rgba(255,250,242,.96); box-shadow:0 18px 60px rgba(35,25,17,.14); }
.hero-copy h1 { margin:17px 0 22px; font-size:clamp(52px,4.8vw,76px); }
.hero-copy .lede { max-width:470px; font-size:16px; }
.hero-copy .button { margin-top:25px; }
.site-header .button,.hero-copy .button { padding-block:0; font-size:10px; letter-spacing:.15em; }
.hero-copy .eyebrow { font-size:10px; letter-spacing:.22em; }
.hero-image { position:absolute; inset:0; width:100%; height:100%; min-height:690px; object-fit:cover; }
.home-hero .crop-pool-vista { object-position:50% 63%!important; }
.hero-motion { position:absolute; z-index:2; top:32px; right:var(--page-gutter); width:min(360px,28vw); overflow:hidden; background:var(--paper); box-shadow:0 20px 64px rgba(27,21,16,.22); }
.hero-motion video { aspect-ratio:16/9; object-fit:cover; }
.hero-motion-meta { min-height:42px; padding:10px 13px; display:flex; align-items:center; justify-content:space-between; gap:12px; }
.hero-motion-meta span { font-size:9px; font-weight:600; letter-spacing:.15em; text-transform:uppercase; }
.hero-motion .video-toggle { margin:0; color:var(--terracotta); white-space:nowrap; font-size:10px; }
.proof-strip { color:#fff; background:var(--night); }
.proof-grid { display:grid; grid-template-columns:repeat(5,1fr); }
.proof { padding:24px 20px; }
.proof strong { display:block; font:500 27px/1 var(--serif); }
.proof span { display:block; margin-top:8px; color:#c9c5b9; font-size:var(--text-label); letter-spacing:.08em; text-transform:uppercase; }

.statement { padding:110px 0; }
.statement-grid { display:grid; grid-template-columns:1fr 1fr; gap:90px; align-items:start; }
.statement h2 { margin:16px 0 0; }
.statement-copy { max-width:600px; }
.statement-copy p { font-size:var(--text-body); }
.quote-line { margin-top:30px; color:var(--olive); font-size:var(--text-label); font-weight:600; letter-spacing:.08em; text-transform:uppercase; }

.motion-story { background:var(--night); color:#fff; }
.motion-grid { min-height:740px; display:grid; grid-template-columns:1.65fr .8fr; }
.motion-media { position:relative; background:#ddd; }
.motion-media video { width:100%; height:100%; object-fit:cover; }
.motion-copy { padding:60px; display:flex; flex-direction:column; justify-content:center; }
.motion-copy h2 { margin:18px 0 25px; font-size:clamp(48px,5.5vw,78px); }
.motion-copy p { color:#d1d0c8; }
.video-toggle { width:max-content; max-width:100%; margin-top:24px; border:0; padding:0; color:#fff; background:transparent; cursor:pointer; font:600 var(--text-label) var(--sans); letter-spacing:.15em; text-transform:uppercase; }
.video-toggle:focus-visible { outline:2px solid var(--brass); outline-offset:5px; }
/* Preserve the complete film frame: no portrait crop, overlay, or color filter. */
.motion-story-rhythm .motion-grid { min-height:0; grid-template-columns:minmax(0,1.7fr) minmax(290px,.8fr); align-items:center; }
.motion-story-rhythm .motion-media { height:auto; min-height:0; aspect-ratio:16/9; background:#393c3b; }
.motion-story-rhythm .motion-media video { height:100%; object-fit:contain; filter:none; }
.motion-story-rhythm .motion-copy { padding:clamp(30px,4vw,70px); }
.motion-story-rhythm .motion-copy h2 { font-size:clamp(44px,4.3vw,78px); }
.motion-story-rhythm .video-toggle { min-height:44px; margin-top:8px; }
.motion-film-caption { display:block; margin-top:22px; color:#c2beb2; font-size:var(--text-support); line-height:1.6; letter-spacing:.02em; }

.pathways { padding:110px 0; background:var(--paper); }
.pathways-head { display:flex; justify-content:space-between; align-items:end; gap:40px; margin-bottom:55px; }
.pathways-head h2 { max-width:670px; margin:14px 0 0; }
.path-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.path-card { background:var(--plaster); text-decoration:none; transition:transform .35s ease; }
.path-card:hover { transform:translateY(-8px); }
.path-card img { height:350px; object-fit:cover; }
.path-copy { padding:27px; }
.path-copy h3 { margin:4px 0 12px; font-size:34px; }
.path-copy p { margin:0; font-size:var(--text-panel); line-height:1.6; }

.review-band { padding:90px 0; color:#fff; background:var(--terracotta); }
.review-grid { display:grid; grid-template-columns:.65fr 1fr; gap:80px; align-items:center; }
.review-score strong { display:block; font:500 62px/1 var(--serif); }
.review-score span { font-size:var(--text-label); letter-spacing:.1em; text-transform:uppercase; }
/* Overlap quotes in a grid, but reserve the tallest quote's natural height. */
.review-rotator { min-height:240px; position:relative; display:grid; }
.review-rotator blockquote { grid-area:1 / 1; min-width:0; margin:0; opacity:0; visibility:hidden; transform:translateY(12px); transition:opacity .6s ease,transform .6s ease,visibility .6s; }
.review-rotator blockquote.is-active { opacity:1; visibility:visible; transform:none; }
.review-rotator p { margin-bottom:18px; font:500 clamp(27px,3vw,43px)/1.12 var(--serif); }
.review-rotator blockquote[data-quote-length="medium"] p { font-size:clamp(24px,2.6vw,37px); }
.review-rotator blockquote[data-quote-length="long"] p { font-size:clamp(21px,2.25vw,32px); line-height:1.2; }
.review-rotator cite { font-style:normal; font-size:var(--text-label); letter-spacing:.1em; text-transform:uppercase; }
.review-controls { grid-area:2 / 1; display:flex; flex-wrap:wrap; align-items:center; align-self:end; gap:8px; margin-top:24px; }
.review-controls button { min-width:44px; min-height:44px; padding:8px 12px; border:1px solid currentColor; color:inherit; background:transparent; font:500 var(--text-support)/1.4 var(--sans); cursor:pointer; }
.review-controls button:hover { background:rgba(255,255,255,.1); }
.review-controls button:focus-visible { outline:2px solid currentColor; outline-offset:3px; }
.review-count { padding-inline:6px; font:400 var(--text-support)/1.4 var(--sans); }
.booking-faq details { border-top:1px solid rgba(37,29,23,.2); padding:16px 0; }
.booking-faq summary { min-height:44px; padding-block:8px; font:500 var(--text-body)/1.5 var(--sans); cursor:pointer; }
.booking-faq summary:focus-visible { outline:2px solid var(--terracotta); outline-offset:4px; }
.booking-faq details p { margin:12px 0 0; }

.guest-quote { position:relative; overflow:hidden; padding:100px 0; color:#fff; background:var(--night); }
.guest-quote::before { content:"“"; position:absolute; top:-95px; right:5vw; color:rgba(255,255,255,.09); font:500 330px/1 var(--serif); }
.guest-quote-inner { position:relative; display:grid; grid-template-columns:.42fr 1fr; gap:70px; align-items:start; }
.guest-quote .eyebrow { padding-top:13px; }
.guest-quote blockquote { margin:0; }
.guest-quote blockquote p { max-width:1000px; margin-bottom:20px; font:500 clamp(29px,3.4vw,46px)/1.1 var(--serif); letter-spacing:-.018em; }
.guest-quote blockquote[data-quote-length="medium"] p { font-size:clamp(26px,3vw,40px); }
.guest-quote blockquote[data-quote-length="long"] p { font-size:clamp(23px,2.55vw,34px); line-height:1.2; }
.guest-quote cite { font-style:normal; font-size:var(--text-label); font-weight:600; letter-spacing:.1em; text-transform:uppercase; }
.guest-quote .review-rotator { min-height:clamp(260px,20vw,330px); }

.page-hero { padding:90px 0 70px; background:var(--paper); }
.page-hero-grid { display:grid; grid-template-columns:.85fr 1.15fr; gap:80px; align-items:end; }
.page-hero h1 { margin:18px 0 0; }
.page-hero p { max-width:600px; margin:0; font-size:var(--text-body); }
.feature-image { height:min(72vh,780px); object-fit:cover; }

.editorial { padding:105px 0; }
.editorial-grid { display:grid; grid-template-columns:1fr 1fr; gap:80px; align-items:center; }
.editorial img { height:650px; object-fit:cover; }
.editorial-copy { max-width:560px; }
.editorial-copy h2 { margin:16px 0 28px; }
.detail-list { margin-top:30px; padding:0; list-style:none; }
.detail-list li { padding:15px 0; border-top:1px solid rgba(30,25,20,.18); }
.editorial.alt { background:var(--paper); }
.editorial.alt .editorial-grid { grid-template-columns:1.15fr .85fr; }
.editorial-courtyard .shell { width:calc(100% - 2 * var(--page-gutter)); }
.editorial.alt.editorial-courtyard .editorial-grid { grid-template-columns:minmax(400px,.58fr) minmax(0,1.42fr); gap:40px; }
.editorial-courtyard img { height:auto; aspect-ratio:16/9; object-fit:cover; }

.sleeping-plan { padding:100px 0; background:var(--paper); }
.sleeping-plan-head { display:grid; grid-template-columns:1fr .75fr; gap:80px; align-items:end; margin-bottom:58px; }
.sleeping-plan h2 { max-width:720px; margin:14px 0 0; }
.sleeping-plan-head p { max-width:520px; margin:0; font-size:var(--text-body); }
.sleeping-grid { display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid rgba(30,25,20,.18); }
.sleeping-grid > div { min-height:180px; padding:26px 24px 20px 0; }
.sleeping-grid > div + div { padding-left:24px; border-left:1px solid rgba(30,25,20,.18); }
.sleeping-grid span { display:block; margin-bottom:32px; color:var(--terracotta); font-size:var(--text-label); font-weight:600; letter-spacing:.12em; }
.sleeping-grid strong { display:block; margin-bottom:8px; font:500 27px/1.08 var(--serif); }
.sleeping-grid small { display:block; color:#6e675d; font-size:var(--text-support); letter-spacing:.04em; text-transform:uppercase; }

.facts-section { padding:95px 0; color:#fff; background:var(--olive); }
.facts-section h2 { margin:15px 0 50px; max-width:820px; }
.facts-cards { display:grid; grid-template-columns:repeat(4,1fr); gap:35px; }
.facts-card strong { display:block; margin-bottom:10px; font:500 30px var(--serif); }
.facts-card span { color:#e0dfd5; font-size:var(--text-panel); }

.experience-grid { display:grid; grid-template-columns:1fr 1fr; }
.experience-panel { min-height:650px; padding:70px; display:flex; flex-direction:column; justify-content:flex-end; }
.experience-panel.image { padding:0; }
.experience-panel.image img { width:100%; height:100%; object-fit:cover; }
.experience-panel.day { background:#dfccb0; }
.experience-panel.night { color:#fff; background:var(--night); }
.experience-panel h2 { margin:14px 0 22px; font-size:clamp(50px,6vw,82px); }
.experience-panel p { max-width:540px; }

.sky-story { padding:110px 0 90px; overflow:hidden; background:var(--paper); }
.sky-story-head { display:flex; align-items:end; justify-content:space-between; gap:40px; margin-bottom:50px; }
.sky-story-head h2 { margin:14px 0 0; }
.rail-controls { display:flex; gap:8px; }
.rail-controls button { width:48px; height:48px; border:0; color:#fff; background:var(--terracotta); cursor:pointer; font-size:18px; transition:transform .2s ease,background .2s ease; }
.rail-controls button:hover { transform:translateY(-2px); background:#874026; }
.sky-rail { display:grid; grid-auto-flow:column; grid-auto-columns:min(82vw,1180px); gap:18px; overflow-x:auto; overscroll-behavior-inline:contain; scroll-snap-type:inline mandatory; scrollbar-width:none; padding:0 var(--page-gutter) 24px; }
.sky-rail::-webkit-scrollbar { display:none; }
.sky-rail figure { scroll-snap-align:center; margin:0; }
.sky-rail img { aspect-ratio:2.05/1; object-fit:cover; }
.sky-rail figcaption { padding-top:13px; font-size:var(--text-label); font-weight:600; letter-spacing:.1em; text-transform:uppercase; }

.map-section { padding:105px 0 95px; background:var(--paper); }
.map-shell { width:calc(100% - 2 * var(--page-gutter)); margin-inline:auto; }
.map-heading { width:100%; margin:0 auto 50px; display:grid; grid-template-columns:1fr .8fr; gap:80px; align-items:end; }
.map-heading h2 { margin:14px 0 0; }
.map-heading p { max-width:560px; margin:0; font-size:var(--text-body); }
.map-pair { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr); gap:28px; align-items:stretch; }
.area-map { margin:0; }
.map-canvas { position:relative; overflow:hidden; background:#473d2d; box-shadow:0 28px 80px rgba(37,29,23,.17); }
.map-interactive { height:min(58vw,620px); min-height:440px; }
.map-canvas.map-interactive::after { display:none; }
.leaflet-map { position:relative; z-index:0; width:100%; height:100%; min-height:100%; background:#d8c8af; border:1px solid rgba(37,29,23,.2); box-shadow:inset 0 0 0 1px rgba(255,250,242,.28); }
.map-fallback { display:block; width:100%; height:100%; object-fit:cover; }
.map-enlarge { position:absolute; z-index:500; right:15px; top:15px; max-width:calc(100% - 72px); min-height:44px; padding:10px 12px; border:1px solid rgba(255,250,242,.85); color:var(--ink); background:rgba(255,250,242,.94); box-shadow:0 3px 14px rgba(19,17,13,.24); cursor:zoom-in; font:600 var(--text-label)/1.3 var(--sans); letter-spacing:.08em; text-transform:uppercase; }
.map-enlarge:hover,.map-enlarge:focus-visible { color:#fff; background:var(--terracotta); }
.regional-map-visual,.real-map-visual { position:relative; min-width:0; }
.regional-map-visual { flex:1; min-height:460px; }
.regional-map-visual .leaflet-map { min-height:max(460px,14rem); }
.real-map-visual { display:grid; height:auto; min-height:0; }
.real-map-visual > .leaflet-map { height:min(38vw,520px); min-height:max(380px,14rem); }
/* Keep the map frame unchanged; readable keys flow below, never over the pins. */
.map-key { min-width:0; padding:24px 28px; color:var(--ink); background:var(--paper); border:1px solid rgba(37,29,23,.16); }
.map-key strong { display:block; margin-bottom:9px; font:500 24px/1 var(--serif); }
.map-key ol { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr)); gap:0 24px; margin:0; padding:0; list-style:none; font-size:var(--text-panel); line-height:1.5; }
.map-key li { display:grid; grid-template-columns:2.75ch minmax(0,1fr); align-content:start; gap:2px 10px; border-top:1px solid rgba(37,29,23,.12); padding:10px 0; overflow-wrap:anywhere; }
.map-key b { color:var(--terracotta); font-size:var(--text-label); letter-spacing:.04em; }
.map-key small { grid-column:2; color:#6e675d; font-size:var(--text-support); line-height:1.5; }
.map-key > small { display:block; margin-top:14px; font-size:var(--text-fine); line-height:1.5; }
.leaflet-control-attribution { font-size:9px!important; }
.leaflet-popup-content { max-width:calc(100vw - 90px); overflow-wrap:anywhere; font:400 var(--text-panel)/1.5 var(--sans); }
.leaflet-control-zoom a { color:var(--ink)!important; }
.leaflet-viva-icon,.leaflet-viva-label { border:0!important; background:transparent!important; }
.map-pin { width:30px; height:30px; display:grid; place-items:center; border:3px solid #fffaf2; border-radius:50% 50% 50% 0; color:#fffaf2; background:var(--terracotta); box-shadow:0 4px 14px rgba(19,17,13,.38); transform:rotate(-45deg); font:600 9px/1 var(--sans); }
.map-pin span { transform:rotate(45deg); }
.map-pin.estate { width:48px; height:48px; border-width:4px; border-radius:50% 50% 50% 0; background:#47315f; box-shadow:0 0 0 8px rgba(71,49,95,.24),0 8px 22px rgba(19,17,13,.45); }
.map-pin.estate span { width:12px; height:12px; border-radius:50%; background:#fffaf2; font-size:0; }
.map-pin.estate-regional { width:30px; height:30px; border-width:3px; border-radius:50% 50% 50% 0; background:#47315f; box-shadow:0 0 0 5px rgba(71,49,95,.22),0 5px 14px rgba(19,17,13,.38); }
.map-pin.estate-regional span { width:8px; height:8px; border-radius:50%; background:#fffaf2; font-size:0; }
.map-pin.destination { background:var(--terracotta); }
.map-pin.golf { color:var(--ink); background:#cfad73; }
.map-pin.venue { background:var(--olive); }
.map-label { padding:5px 8px 4px; border:1px solid rgba(255,250,242,.75); color:var(--ink); background:rgba(255,250,242,.9); box-shadow:0 3px 12px rgba(19,17,13,.2); white-space:nowrap; font:600 10px/1 var(--sans); letter-spacing:.04em; }
.map-label.mountain { border:0; color:#f2dfbd; background:transparent; box-shadow:none; text-shadow:0 2px 8px rgba(17,17,13,.9); font:italic 500 18px/1 var(--serif); }
.map-label.airport { text-align:center; line-height:1.2; }
.map-label.city { border-color:rgba(157,75,49,.3); color:var(--terracotta); font-size:9px; letter-spacing:.1em; text-transform:uppercase; }
.map-label.time { border-color:rgba(157,75,49,.24); color:var(--terracotta); background:rgba(255,250,242,.9); font-size:8px; letter-spacing:.08em; text-transform:uppercase; }
.map-label.estate { padding:9px 11px 8px; font:500 17px/1 var(--serif); }
.map-label.estate small { display:block; margin-top:5px; color:var(--terracotta); font:600 7px/1 var(--sans); letter-spacing:.14em; text-transform:uppercase; }
.map-label.estate-site { border-color:rgba(71,49,95,.28); color:#47315f; font-size:9px; letter-spacing:.08em; text-transform:uppercase; }
.trail-list-label { padding:7px 9px 6px; border-left:3px solid var(--terracotta); color:var(--ink); background:rgba(255,250,242,.94); box-shadow:0 3px 12px rgba(19,17,13,.2); font:600 10px/1 var(--sans); letter-spacing:.04em; }
.map-lightbox-map { width:min(1600px,92vw); height:min(84vh,760px); }
.map-clickable { cursor:zoom-in; }
.map-clickable:focus-visible,.map-expand:focus-visible { outline:3px solid var(--terracotta); outline-offset:4px; }
.map-canvas picture { display:block; }
.map-canvas img { aspect-ratio:1604/981; object-fit:cover; filter:saturate(.52) contrast(.84) brightness(1.08); }
.map-canvas::after { position:absolute; inset:0; z-index:1; pointer-events:none; content:""; background:rgba(255,250,242,.16); }
.map-canvas > .map-hike,.map-canvas > .map-golf { display:none; }
.area-map figcaption { padding:16px 4px 0; color:#71695d; font-size:var(--text-support); line-height:1.5; }
.regional-map { display:flex; flex-direction:column; min-width:0; margin:0; padding:28px; color:var(--ink); background:var(--plaster); box-shadow:0 18px 55px rgba(37,29,23,.11); }
.regional-map-heading h3 { margin:8px 0 20px; font:500 clamp(32px,3vw,52px)/.95 var(--serif); }
.regional-map .map-expand { flex:1; }
.regional-map figcaption { padding-top:15px; color:#71695d; font-size:var(--text-support); line-height:1.5; }
.map-expand { position:relative; display:block; width:100%; margin:0; padding:0; border:0; color:inherit; background:transparent; cursor:zoom-in; text-align:left; }
.map-detail-card .map-expand { background:linear-gradient(rgba(255,250,242,.18),rgba(255,250,242,.18)),url("assets/area-map-editorial.webp") center/cover no-repeat; }
.map-expand img { display:block; width:100%; height:auto; }
.map-expand span { position:absolute; right:14px; bottom:14px; padding:7px 10px 6px; color:var(--ink); background:rgba(255,250,242,.92); box-shadow:0 3px 14px rgba(19,17,13,.2); font:600 9px/1 var(--sans); letter-spacing:.12em; text-transform:uppercase; opacity:0; transform:translateY(5px); transition:opacity .25s ease,transform .25s ease; }
.map-expand:hover span,.map-expand:focus-visible span { opacity:1; transform:none; }
.map-poi { position:absolute; z-index:4; left:var(--x); top:var(--y); display:flex; align-items:center; transform:translate(-50%,-50%); }
.map-dot { position:relative; z-index:1; width:28px; height:28px; display:grid; place-items:center; flex:0 0 auto; border:2px solid var(--paper); border-radius:50%; color:#fff; background:var(--olive); box-shadow:0 3px 12px rgba(19,17,13,.38); font:600 8px/1 var(--sans); letter-spacing:.03em; }
.map-destination .map-dot { background:var(--terracotta); }
.map-golf .map-dot { color:var(--ink); background:#cfad73; }
.map-tag { position:absolute; left:36px; top:50%; padding:7px 10px 6px; border:1px solid rgba(255,250,242,.72); color:var(--ink); background:rgba(255,250,242,.92); box-shadow:0 4px 16px rgba(19,17,13,.24); white-space:nowrap; transform:translateY(-50%); font:600 10px/1 var(--sans); letter-spacing:.05em; }
.map-tag.align-right { left:auto; right:36px; }
.map-hike .map-tag,.map-golf .map-tag { display:none; }
.map-estate { z-index:4; transform:translate(-32px,-68px); }
.estate-pin { position:relative; width:64px; height:64px; flex:0 0 auto; border:4px solid var(--paper); border-radius:50% 50% 50% 0; background:var(--terracotta); box-shadow:0 0 0 9px rgba(157,75,49,.24),0 8px 28px rgba(19,17,13,.45); transform:rotate(-45deg); }
.estate-pin i { position:absolute; inset:18px; border-radius:50%; background:var(--paper); }
.estate-label { position:absolute; left:-30px; top:74px; min-width:170px; padding:9px 11px 8px; border:1px solid rgba(255,250,242,.76); color:var(--ink); background:rgba(255,250,242,.94); box-shadow:0 6px 18px rgba(19,17,13,.32); font:500 18px/1 var(--serif); white-space:nowrap; }
.estate-label small { display:block; margin-top:5px; color:var(--terracotta); font:600 7px/1 var(--sans); letter-spacing:.14em; text-transform:uppercase; }
.map-place { position:absolute; z-index:3; left:var(--x); top:var(--y); color:#fff8ec; text-shadow:0 2px 10px rgba(12,13,10,.92),0 0 2px #171a16; transform:translate(-50%,-50%); font:500 clamp(18px,1.7vw,30px)/1 var(--serif); white-space:nowrap; }
.map-place.mountain { color:#f1d9b0; font-style:italic; }
.map-place.airport { font:600 clamp(9px,.85vw,13px)/1.2 var(--sans); letter-spacing:.05em; text-align:center; text-transform:uppercase; }
.map-road { position:absolute; z-index:3; left:var(--x); top:var(--y); padding:4px 7px; border:2px solid rgba(255,250,242,.9); border-radius:14px; color:#fff; background:#315a4c; box-shadow:0 2px 8px rgba(19,17,13,.4); transform:translate(-50%,-50%); font:600 9px/1 var(--sans); }
.map-road.interstate { background:#285281; }
.map-legend { display:grid; grid-template-columns:.8fr 1fr 1.2fr; gap:18px; margin-top:40px; }
.map-legend section { min-width:0; padding:28px; overflow-wrap:anywhere; background:var(--plaster); }
.legend-heading { display:flex; gap:15px; align-items:center; margin-bottom:22px; }
.legend-heading h3 { margin:4px 0 0; font-size:30px; }
.map-legend p,.map-legend ol { margin:0; font-size:var(--text-panel); line-height:1.6; }
.map-picks { margin-top:17px; padding-top:14px; border-top:1px solid rgba(37,29,23,.14); }
.map-picks p { margin:0 0 16px; font-size:var(--text-panel); line-height:1.6; }
.map-picks p:last-child { margin-bottom:0; }
.map-picks strong { display:block; margin-bottom:6px; color:var(--terracotta); font-size:var(--text-label); letter-spacing:.08em; text-transform:uppercase; }
.map-legend ol { padding:0; list-style:none; }
.map-legend li { padding:8px 0; border-top:1px solid rgba(37,29,23,.14); }
.map-legend li:first-child { border-top:0; }
.map-legend li strong { display:inline-block; min-width:2.75ch; color:var(--terracotta); font-size:var(--text-label); letter-spacing:.04em; }
.map-legend li small { display:block; margin-left:2.75ch; color:#71695d; font-size:var(--text-support); line-height:1.5; }
.map-detail-grid { display:grid; grid-template-columns:1fr 1fr; gap:28px; margin-top:42px; }
.map-detail-card { min-width:0; margin:0; background:var(--plaster); box-shadow:0 18px 55px rgba(37,29,23,.11); }
.venue-map-card { grid-column:1 / -1; }
.map-detail-card figcaption { padding:26px 28px 30px; }
.map-detail-card h3 { margin:8px 0 12px; font:500 clamp(34px,3vw,52px)/.98 var(--serif); }
.map-detail-card p { max-width:65ch; margin:0; font-size:var(--text-panel); line-height:1.6; }
.area-notes { padding:105px 0; }
.area-notes-grid { display:grid; grid-template-columns:1fr 1fr; gap:90px; }
.area-notes h2 { margin:14px 0 0; }
.area-notes p { max-width:570px; font-size:var(--text-body); }

.gallery-intro { padding:80px 0 45px; background:var(--paper); }
.gallery-intro h1 { margin:15px 0 20px; }
.gallery-intro p { max-width:620px; }
.gallery-grid { padding:0 24px 90px; display:grid; grid-template-columns:repeat(12,1fr); gap:18px; background:var(--paper); }
.gallery-item { grid-column:span 4; padding:0; border:0; background:transparent; cursor:zoom-in; text-align:left; }
.gallery-item.wide { grid-column:span 8; }
.gallery-item.full { grid-column:1 / -1; }
.gallery-item.tall { grid-row:span 2; }
.gallery-item img { height:390px; object-fit:cover; }
.gallery-item.full img { height:min(58vw,660px); }
.gallery-item.tall img { height:798px; }
.gallery-item figure { margin:0; overflow:hidden; }
.gallery-item img { transition:transform .6s cubic-bezier(.2,.7,.2,1); }
.gallery-item:hover img { transform:scale(1.012); }
.gallery-item figcaption { padding:12px 0 0; font:500 var(--text-label)/1.5 var(--sans); letter-spacing:.08em; text-transform:uppercase; }
.lightbox { position:fixed; inset:0; z-index:100; display:none; place-items:center; padding:30px; background:rgba(247,241,231,.97); }
.map-lightbox { z-index:2000; }
.lightbox.is-open { display:grid; }
.lightbox img { max-width:min(1400px,92vw); max-height:84vh; width:auto; object-fit:contain; }
.lightbox-close { position:absolute; z-index:2100; right:30px; top:16px; min-height:44px; border:0; background:var(--paper); cursor:pointer; font:600 var(--text-label) var(--sans); letter-spacing:.1em; text-transform:uppercase; }

.availability { padding:105px 0; text-align:center; color:#fff; background:var(--terracotta); }
.availability h2 { max-width:850px; margin:15px auto 25px; }
.availability p { max-width:620px; margin:0 auto 30px; }
.availability .button { color:var(--ink); background:var(--paper); }
.site-footer { padding:35px 0; color:#bdbbad; background:var(--night); font-size:var(--text-fine); letter-spacing:.06em; text-transform:uppercase; }
.footer-grid { display:flex; justify-content:space-between; align-items:center; gap:25px; }
.footer-links { display:flex; flex-wrap:wrap; gap:12px 22px; }
.footer-links a { text-decoration:none; }

.reveal { opacity:1; transform:none; transition:opacity .7s ease,transform .7s ease; }
.reveal.is-pending:not(.is-visible) { opacity:0; transform:translateY(28px); }
.reveal.is-visible { opacity:1; transform:none; }
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important; transition:none!important; animation:none!important; } .reveal { opacity:1!important; transform:none!important; } }

@media (min-width:1440px) {
  .page-hero-grid { gap:clamp(90px,8vw,150px); }
  .page-hero p { max-width:720px; }
  .editorial-grid { gap:clamp(90px,7vw,140px); }
  .editorial-copy { max-width:650px; }
  .gallery-grid { width:100%; padding-inline:var(--page-gutter); }
}

@media (min-width:901px) and (max-height:760px) {
  :root { --header-height:88px; }
  .home-hero { min-height:690px; padding-bottom:30px; }
  .hero-copy { padding:30px 38px 34px; }
  .hero-copy h1 { margin-block:13px 17px; font-size:58px; }
  .hero-motion { top:24px; width:min(320px,25vw); }
}

@media (hover:none) {
  .button:hover,.path-card:hover,.rail-controls button:hover { transform:none; }
}

@media (pointer:coarse) {
  .button { min-height:54px; }
  .menu-toggle,.video-toggle,.rail-controls button { touch-action:manipulation; }
}

@media (max-width:900px) {
  :root { --header-height:88px; }
  .shell { width:min(100% - 38px,1240px); }
  .menu-toggle { display:block; }
  .brand { min-width:220px; }
  .brand-viva,.brand-rocas { font-size:31px; }
  .brand-place { font-size:7.5px; letter-spacing:.21em; }
  .nav-links { display:none; position:absolute; top:100%; inset-inline:0; padding:30px; flex-direction:column; align-items:flex-start; background:var(--paper); box-shadow:0 22px 50px rgba(35,25,17,.12); }
  .nav-links.is-open { display:flex; }
  .nav-links > a:not(.button) { font-size:1rem; }
  .nav-links .button { font-size:var(--text-label); }
  .statement-grid,.motion-grid,.page-hero-grid,.editorial-grid,.editorial.alt .editorial-grid,.review-grid,.guest-quote-inner,.sleeping-plan-head,.map-heading,.area-notes-grid { grid-template-columns:1fr; }
  .home-hero { min-height:calc(100svh - var(--header-height)); padding-bottom:20px; }
  .hero-image { height:100%; min-height:0; }
  .hero-copy { width:calc(100% - 38px); margin:0 auto; padding:32px 30px 36px; }
  .hero-motion { top:22px; right:19px; width:min(330px,43vw); }
  .proof-grid { grid-template-columns:repeat(2,1fr); }
  .statement { padding:75px 0; }
  .statement-grid { gap:35px; }
  .motion-grid { min-height:auto; }
  .motion-story-rhythm .motion-grid { grid-template-columns:1fr; }
  .motion-media { height:64vh; min-height:500px; }
  .motion-copy { padding:55px 30px; }
  .path-grid { grid-template-columns:1fr; }
  .path-card img { height:420px; }
  .review-grid { gap:40px; }
  .review-rotator { min-height:270px; }
  .guest-quote { padding:74px 0; }
  .guest-quote-inner { gap:28px; }
  .guest-quote .eyebrow { padding-top:0; }
  .guest-quote .review-rotator { min-height:290px; }
  .page-hero-grid { gap:35px; }
  .page-hero { padding:65px 0; }
  .editorial { padding:70px 0; }
  .editorial-grid { gap:38px; }
  .editorial img { height:560px; }
  .editorial-courtyard .shell { width:min(100% - 38px,1480px); }
  .editorial.alt.editorial-courtyard .editorial-grid { grid-template-columns:1fr; }
  .editorial-courtyard img { height:auto; }
  .sleeping-plan { padding:75px 0; }
  .sleeping-plan-head { gap:28px; }
  .sleeping-grid { grid-template-columns:1fr 1fr; }
  .sleeping-grid > div:nth-child(3) { border-left:0; }
  .sleeping-grid > div:nth-child(n+3) { border-top:1px solid rgba(30,25,20,.18); }
  .facts-cards { grid-template-columns:1fr 1fr; }
  .experience-grid { grid-template-columns:1fr; }
  .experience-panel { min-height:540px; padding:45px 28px; }
  .experience-panel.image { padding:0; }
  .sky-story { padding:78px 0 65px; }
  .sky-rail { grid-auto-columns:86vw; padding-inline:19px; }
  .sky-rail img { aspect-ratio:1.65/1; }
  .map-section { padding:75px 0 70px; }
  .map-shell { width:min(100% - 38px,1600px); }
  .map-heading { gap:28px; margin-bottom:35px; }
  .map-pair { grid-template-columns:1fr; gap:32px; }
  .regional-map { padding:25px; }
  .map-interactive { height:58vh; min-height:420px; }
  .regional-map-visual { min-height:420px; }
  .regional-map-visual .leaflet-map { min-height:max(420px,14rem); }
  .real-map-visual > .leaflet-map { height:64vw; min-height:max(340px,14rem); }
  .map-key strong { font-size:21px; }
  .map-detail-grid { grid-template-columns:1fr; gap:18px; margin-top:28px; }
  .map-tag { display:none; }
  .map-place,.map-road { display:none; }
  .map-dot { width:24px; height:24px; border-width:1.5px; font-size:7px; }
  .map-estate { transform:translate(-20px,-45px); }
  .estate-pin { width:42px; height:42px; border-width:3px; box-shadow:0 0 0 6px rgba(157,75,49,.25),0 5px 16px rgba(19,17,13,.4); }
  .estate-pin i { inset:12px; }
  .estate-label { left:51px; top:4px; min-width:0; padding:7px 9px 6px; font-size:14px; }
  .estate-label small { display:none; }
  .map-legend { grid-template-columns:1fr; gap:12px; margin-top:28px; }
  .map-legend section { padding:23px; }
  .area-notes { padding:75px 0; }
  .area-notes-grid { gap:30px; }
  .gallery-item,.gallery-item.wide { grid-column:span 6; }
  .gallery-item.full { grid-column:1 / -1; }
  .gallery-item img,.gallery-item.tall img { height:390px; }
  .footer-grid { flex-direction:column; align-items:flex-start; }
}

@media (max-width:560px) {
  :root { --header-height:80px; }
  .brand { min-width:0; gap:5px; }
  .brand-viva,.brand-rocas { font-size:28px; }
  .brand-mark { font-size:7px; }
  .brand-place { font-size:7px; letter-spacing:.18em; }
  .brand-descriptor { display:none; }
  .home-hero { min-height:800px; }
  .hero-copy h1 { font-size:49px; }
  .hero-motion { top:18px; right:19px; width:225px; }
  .hero-motion-meta { min-height:38px; padding:8px 10px; }
  .hero-motion-meta span { display:none; }
  .proof { padding:20px 10px; }
  .proof strong { font-size:23px; }
  .pathways-head { align-items:flex-start; flex-direction:column; }
  .path-card img { height:320px; }
  .facts-cards { grid-template-columns:1fr; }
  .sleeping-grid { grid-template-columns:1fr; border-top:0; }
  .sleeping-grid > div,.sleeping-grid > div + div,.sleeping-grid > div:nth-child(3) { min-height:auto; padding:24px 0; border-top:1px solid rgba(30,25,20,.18); border-left:0; }
  .sleeping-grid span { margin-bottom:18px; }
  .sky-story-head { align-items:flex-start; }
  .rail-controls { display:none; }
  .sky-rail { grid-auto-columns:90vw; }
  .sky-rail img { aspect-ratio:1.25/1; }
  .gallery-grid { padding-inline:14px; }
  .gallery-item,.gallery-item.wide { grid-column:span 12; }
  .gallery-item.full { grid-column:1 / -1; }
  .gallery-item.full img { height:360px; }
  .editorial-courtyard img { aspect-ratio:1.35/1; }
  .map-shell { width:100%; }
  .map-heading,.map-legend { width:calc(100% - 38px); margin-inline:auto; }
  .map-canvas { box-shadow:none; }
  .regional-map { margin-inline:19px; padding:22px; }
  .map-interactive { height:68vw; min-height:330px; }
  .regional-map-visual,.regional-map-visual .leaflet-map { min-height:max(350px,14rem); }
  .real-map-visual > .leaflet-map { height:72vw; min-height:max(280px,14rem); }
  .map-key { padding:22px; }
  .map-detail-grid { width:calc(100% - 38px); margin-inline:auto; }
  .map-detail-card figcaption { padding:22px 22px 25px; }
  .map-expand span { opacity:1; transform:none; }
  .estate-label { display:none; }
  .area-map figcaption { padding-inline:19px; }
  .guest-quote .review-rotator { min-height:270px; }
  .footer-links { flex-wrap:wrap; }
}

@media (max-width:900px) and (orientation:landscape) and (max-height:600px) {
  .home-hero { min-height:680px; }
  .hero-motion { width:250px; }
  .hero-copy { max-width:500px; margin-left:19px; }
}

/* The approved desktop reference was a 1260 CSS-pixel composition viewed at
   300% browser zoom. Keep those proportions on large displays using real layout
   lengths, not browser detection, CSS zoom, transforms, or a centered image cap.
   Begin at the reference width so resizing does not cause a 1600px jump. */
@media (min-width:1260px) {
  :root {
    --stage-unit:calc(100vw / 1260);
    --page-gutter:calc(36 * var(--stage-unit));
    --header-height:max(6.375rem,calc(88 * var(--stage-unit)));
  }
  .site-header { font-size:calc(15 * var(--stage-unit)); border-bottom-width:var(--stage-unit); }
  .nav { gap:calc(28 * var(--stage-unit)); }
  .brand { min-width:calc(250 * var(--stage-unit)); gap:calc(6 * var(--stage-unit)); }
  .brand-name { gap:calc(7 * var(--stage-unit)); }
  .brand-viva,.brand-rocas { font-size:calc(36 * var(--stage-unit)); }
  .brand-mark { margin-left:calc(-4 * var(--stage-unit)); font-size:calc(8 * var(--stage-unit)); }
  .brand-place { font-size:calc(8 * var(--stage-unit)); }
  .nav-links { gap:calc(24 * var(--stage-unit)); }
  .nav-links > a:not(.button) { font-size:calc(10 * var(--stage-unit)); }
  .nav-links > a[aria-current="page"]::after { bottom:calc(-8 * var(--stage-unit)); height:calc(2 * var(--stage-unit)); }
  .site-header .button,.hero-copy .button {
    min-height:calc(50 * var(--stage-unit));
    padding-inline:calc(24 * var(--stage-unit));
    gap:calc(18 * var(--stage-unit));
    font-size:calc(10 * var(--stage-unit));
  }
  .site-header .button::after,.hero-copy .button::after { font-size:calc(16 * var(--stage-unit)); }

  .home-hero {
    min-height:max(calc(100svh - var(--header-height)),calc(690 * var(--stage-unit)));
    padding-bottom:calc(30 * var(--stage-unit));
    font-size:calc(15 * var(--stage-unit));
  }
  .hero-copy {
    width:calc(530 * var(--stage-unit));
    padding:calc(30 * var(--stage-unit)) calc(38 * var(--stage-unit)) calc(34 * var(--stage-unit));
    box-shadow:0 calc(18 * var(--stage-unit)) calc(60 * var(--stage-unit)) rgba(35,25,17,.14);
  }
  .hero-copy .eyebrow { font-size:calc(10 * var(--stage-unit)); }
  .hero-copy h1 { margin-block:calc(13 * var(--stage-unit)) calc(17 * var(--stage-unit)); font-size:calc(58 * var(--stage-unit)); }
  .hero-copy .lede { max-width:calc(470 * var(--stage-unit)); font-size:calc(16 * var(--stage-unit)); }
  .hero-copy .button { margin-top:calc(25 * var(--stage-unit)); }
  .home-hero .hero-image { min-height:calc(690 * var(--stage-unit)); }
  .hero-motion {
    top:calc(24 * var(--stage-unit));
    width:25vw;
    box-shadow:0 calc(20 * var(--stage-unit)) calc(64 * var(--stage-unit)) rgba(27,21,16,.22);
  }
  .hero-motion-meta {
    min-height:calc(42 * var(--stage-unit));
    padding:calc(10 * var(--stage-unit)) calc(13 * var(--stage-unit));
    gap:calc(12 * var(--stage-unit));
  }
  .hero-motion-meta span { font-size:calc(9 * var(--stage-unit)); }
  .hero-motion .video-toggle { font-size:calc(10 * var(--stage-unit)); line-height:1.5; }
}

/* Grocery directory follows the shared reading scale. */
.grocery-map-card { grid-column:1 / -1; scroll-margin-top:30px; }
.grocery-map-card .grocery-map-visual { display:grid; grid-template-columns:minmax(0,1fr) clamp(20rem,26vw,25rem); height:auto; min-height:0; overflow:visible; }
.grocery-map-stage { position:relative; min-height:540px; }
.grocery-map-stage > .leaflet-map { position:absolute; inset:0; }
.grocery-map-key { padding:24px; background:var(--paper); border:1px solid rgba(37,29,23,.16); }
.grocery-map-key h4 { margin:0 0 16px; font:500 30px/1.1 var(--serif); }
.grocery-store-list { margin:0; padding:0; list-style:none; }
.grocery-store-list li { padding:10px 0; border-top:1px solid rgba(37,29,23,.14); }
.grocery-store-list button { display:flex; align-items:flex-start; gap:10px; width:100%; min-height:44px; padding:0; border:0; background:transparent; color:var(--ink); text-align:left; cursor:pointer; font:400 var(--text-panel)/1.5 var(--sans); }
.grocery-store-list button > span { min-width:0; overflow-wrap:anywhere; }
.grocery-store-list button > b { flex:0 0 28px; padding-top:2px; color:#355e59; font-size:.875rem; }
.grocery-store-list button strong { display:block; font-weight:500; }
.grocery-store-list button span span { display:block; margin-top:3px; color:#625a50; font-size:var(--text-support); }
.grocery-store-list a { display:inline-block; margin-left:38px; padding:6px 0; color:var(--terracotta); font:500 var(--text-support)/1.4 var(--sans); text-decoration:underline; text-underline-offset:3px; }
.grocery-store-list button:hover strong { color:var(--terracotta); }
.grocery-store-list button:focus-visible,.grocery-map-reset:focus-visible { outline:2px solid var(--terracotta); outline-offset:4px; }
.grocery-map-card .grocery-map-note { margin:16px 0 0; color:#625a50; font-size:var(--text-support); line-height:1.5; }
.grocery-map-card figcaption p { max-width:65ch; }
.grocery-map-card .map-enlarge { font-size:.875rem; letter-spacing:.06em; min-height:44px; }
.grocery-map-fallback { display:grid; place-items:center; padding:32px; background:var(--plaster); }
.grocery-map-fallback p { max-width:360px; font-size:var(--text-panel); }
.map-pin.grocery { background:#355e59; font-size:12px; }
.grocery-cluster { display:flex; flex-direction:column; align-items:center; justify-content:center; width:52px; height:52px; border:3px solid var(--paper); border-radius:50%; background:#355e59; color:#fffaf2; box-shadow:0 4px 14px rgba(19,17,13,.3); font:400 12px/1.1 var(--sans); }
.grocery-cluster b { font-size:18px; }
.grocery-map-reset { min-height:44px; padding:10px 14px; border:1px solid rgba(37,29,23,.25); background:var(--paper); color:var(--ink); cursor:pointer; box-shadow:0 3px 14px rgba(19,17,13,.18); font:500 .875rem/1.3 var(--sans); }
.grocery-popup { color:var(--ink); font:400 var(--text-panel)/1.5 var(--sans); }
.grocery-popup strong { font-weight:600; }
.grocery-popup p { margin:8px 0; }
.grocery-popup a { display:block; padding:7px 0; font-size:var(--text-support); }
.map-key .venue-list li { display:block; padding:0; }
.venue-list button { display:grid; grid-template-columns:3.25ch minmax(0,1fr); align-items:start; gap:10px; width:100%; min-height:2.75rem; padding:.65em 0; border:0; background:transparent; color:var(--ink); text-align:left; cursor:pointer; font:inherit; }
.venue-list button > span { min-width:0; }
.venue-list small { display:block; }
.venue-list button:hover { color:var(--terracotta); }
.venue-list button:focus-visible,.venue-map-reset:focus-visible { outline:2px solid var(--terracotta); outline-offset:4px; }
.venue-cluster { display:flex; flex-direction:column; align-items:center; justify-content:center; width:52px; height:52px; border:3px solid var(--paper); border-radius:50%; background:var(--terracotta); color:var(--paper); box-shadow:0 4px 14px rgba(19,17,13,.3); font:400 12px/1.1 var(--sans); }
.venue-cluster b { font-size:18px; }
.venue-map-reset { min-height:2.75rem; padding:.65em .9em; border:1px solid rgba(37,29,23,.25); background:var(--paper); color:var(--ink); cursor:pointer; box-shadow:0 3px 14px rgba(19,17,13,.18); font:500 var(--text-label)/1.3 var(--sans); }
.venue-popup { max-height:min(28rem,45svh,var(--venue-popup-max-height,28rem)); overflow:auto; color:var(--ink); font:400 var(--text-panel)/1.5 var(--sans); }
.has-venue-popup .leaflet-control-zoom,.has-venue-popup .venue-map-reset,.has-venue-popup > .map-enlarge { visibility:hidden; }
.venue-popup strong { font-weight:600; }
.venue-popup p { margin:.5em 0; }
.venue-popup a { display:block; padding:.4em 0; font-size:var(--text-support); }
/* Map directories inherit the approved reading scale and card composition. */
.map-key .map-select-list li,.map-legend .map-select-list li { display:block; padding:0; }
.map-select-list button { display:grid; grid-template-columns:2.75ch minmax(0,1fr); gap:10px; align-items:start; width:100%; min-height:44px; padding:10px 0; border:0; color:inherit; background:transparent; text-align:left; font:inherit; cursor:pointer; }
.map-select-list button > span { min-width:0; }
.map-select-list button small { display:block; margin-left:0; }
.map-select-list button:hover,.map-select-list button[aria-pressed="true"],.map-location-list button[aria-pressed="true"] { color:var(--terracotta); background:rgba(157,75,49,.06); }
.map-select-list button:focus-visible,.map-location-list button:focus-visible,.map-text-action:focus-visible,.map-reset:focus-visible { outline:2px solid var(--terracotta); outline-offset:3px; }
.map-location-list { display:flex; flex-wrap:wrap; gap:8px; margin-top:16px; }
.map-location-list button,.map-reset { min-height:44px; padding:8px 12px; border:1px solid rgba(37,29,23,.25); color:var(--ink); background:var(--paper); font:500 var(--text-support)/1.4 var(--sans); cursor:pointer; }
.map-reset { font-size:var(--text-label); box-shadow:0 3px 14px rgba(19,17,13,.18); }
.map-text-action { min-height:44px; margin:0 0 10px; padding:8px 0; border:0; color:var(--terracotta); background:transparent; text-align:left; font:500 var(--text-support)/1.5 var(--sans); cursor:pointer; }
.map-unavailable { display:grid; place-items:center; padding:24px; background:var(--plaster); }
.map-unavailable p { max-width:36ch; font:400 var(--text-panel)/1.5 var(--sans); }
.leaflet-map:not([data-map-kind="venues"]) .leaflet-popup-content { max-height:var(--map-popup-max-height,28rem); overflow:auto; }
.has-map-popup .leaflet-control-zoom,.has-map-popup .map-reset,.has-map-popup .grocery-map-reset,.has-map-popup .venue-map-reset,.has-map-popup > .map-enlarge { visibility:hidden; }
.leaflet-bottom.leaflet-left { bottom:calc(var(--map-attribution-height,1.5rem) + .25rem); }
@media (max-width:1000px) {
  .grocery-map-card .grocery-map-visual { grid-template-columns:1fr; }
  .grocery-map-stage { min-height:440px; }
  .grocery-store-list { display:grid; grid-template-columns:1fr 1fr; gap:0 24px; }
}
@media (max-width:560px) {
  .grocery-map-stage { min-height:400px; }
  .grocery-map-key { padding:22px; }
  .grocery-store-list { grid-template-columns:1fr; }
}

/* Site-wide reading system. Keep the full-width photographic composition, but
   let text, its measure, and surrounding space grow together. No CSS zoom,
   device-pixel-ratio multiplier, or browser-specific sizing is involved. */
h1,h2,h3,h4,p,li,strong,figcaption,cite,.footer-grid,.brand-place { overflow-wrap:anywhere; }
.shell > *,.statement-grid > *,.page-hero-grid > *,.editorial-grid > *,
.path-grid > *,.sleeping-plan-head > *,.facts-cards > *,
.review-grid > *,.guest-quote-inner > *,.map-heading > *,
.experience-panel,.hero-copy,.hero-copy > *,.legend-heading > *,
.pathways-head > *,.sky-story-head > *,.sleeping-grid > * { min-width:0; }
.hero-copy > *,.pathways-head > *,.sky-story-head > * { max-width:100%; }
.statement-copy,.editorial-copy { max-width:var(--reading-measure); }
.page-hero p,.sleeping-plan-head p,.map-heading p,.area-notes p,
.experience-panel p,.gallery-intro p,.availability p { max-width:var(--reading-measure); }
.pathways-head h2,.sleeping-plan h2,.facts-section h2,.availability h2 { max-width:18ch; }
.statement,.pathways,.editorial,.sleeping-plan,.facts-section,.map-section,
.area-notes,.availability,.guest-quote,.review-band { padding-block:var(--section-space); }
.page-hero { padding-block:var(--section-space) calc(var(--section-space) * .75); }
.path-copy,.map-legend section,.map-detail-card figcaption,.map-key,
.grocery-map-key { padding:var(--panel-space); }
.path-copy h3,.sleeping-grid strong,.facts-card strong,.legend-heading h3,
.grocery-map-key h4,.map-key strong { font-size:var(--text-card-title); line-height:1.12; }
.proof strong { font-size:clamp(1.75rem,1.25rem + 1vw,3.75rem); line-height:1.12; }
.proof { padding:var(--panel-space); }
.proof-grid { grid-template-columns:repeat(5,minmax(0,1fr)); }
.proof span { line-height:1.5; overflow-wrap:anywhere; }
.proof-strip { container:proof / inline-size; }
.sleeping-plan { container:rooms / inline-size; }
.sleeping-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
.sleeping-grid > div { padding-block:var(--panel-space); }
.sleeping-grid small { line-height:1.5; }
.facts-cards { gap:var(--panel-space); grid-template-columns:repeat(auto-fit,minmax(min(100%,18ch),1fr)); }
.experience-panel { padding:clamp(1.75rem,1rem + 3vw,7.5rem); }
.experience-panel.image { padding:0; }
.experience-panel h2,.motion-copy h2,.motion-story-rhythm .motion-copy h2 {
  font-size:clamp(2.75rem,1.5rem + 3vw,7rem);
}
.motion-copy,.motion-story-rhythm .motion-copy { padding:clamp(1.875rem,1rem + 2.5vw,6.5rem); }
.regional-map-heading h3,.map-detail-card h3 { font-size:clamp(2.125rem,1.5rem + 1.5vw,5rem); line-height:1.05; }
.regional-map { padding:var(--panel-space); }
.map-key ol { grid-template-columns:repeat(auto-fit,minmax(min(100%,24ch),1fr)); gap:0 var(--panel-space); }
.map-key li { padding-block:.65em; }
.map-legend { grid-template-columns:minmax(0,.8fr) minmax(0,1fr) minmax(0,1.2fr); }
.grocery-map-card .grocery-map-visual { grid-template-columns:minmax(0,1fr) minmax(20rem,25%); }
.grocery-store-list button > b { flex-basis:2.75ch; font-size:var(--text-label); }
.grocery-store-list a { margin-left:3.5ch; }
.grocery-map-card .map-enlarge,.grocery-map-reset { font-size:var(--text-label); }
.leaflet-control-attribution { font-size:max(.75rem,11px)!important; line-height:1.4; max-width:100%; }
.leaflet-control-zoom a { width:2.75rem!important; height:2.75rem!important; line-height:2.75rem!important; font-size:1.5rem!important; }
.leaflet-container a.leaflet-popup-close-button { width:2.75rem; height:2.75rem; line-height:2.75rem; font-size:1.5rem; }
.map-enlarge { max-width:calc(100% - 4.5rem); }
.map-label,.map-label.city,.map-label.time,.map-label.estate-site { font-size:.8125rem; line-height:1.25; }
.map-label.estate { font-size:1.25rem; }
.map-label.estate small { font-size:.75rem; line-height:1.4; }
.map-pin { font-size:12px; }
.map-dot { width:2.25em; height:2.25em; font-size:var(--text-label); flex-shrink:0; }
.leaflet-popup-content { max-width:min(calc(100vw - 6.5rem),var(--map-popup-max-width,100vw)); margin:1.125rem 2.75rem 1.125rem 1.125rem; line-height:1.5; }
.map-lightbox-map { width:94vw; height:calc(100svh - 8rem); max-height:1000px; }
.lightbox { padding:4rem 1rem 1rem; }
.lightbox img { max-width:94vw; max-height:calc(100svh - 8rem); }
.lightbox-close { max-width:calc(100% - 2rem); top:1rem; right:1rem; padding:.5em .75em; }
.button { min-height:3.125rem; padding:.75em 1.5em; gap:1em; line-height:1.4; }
button,.button,.text-link { max-width:100%; overflow-wrap:anywhere; }
.button::after,.text-link::after { font-size:1.3em; }
.text-link { min-height:2.75rem; padding-block:.4em; gap:1em; line-height:1.5; }
.video-toggle { min-height:2.75rem; line-height:1.5; }
.rail-controls button { width:3rem; height:3rem; font-size:1.25rem; }
.review-score strong { font-size:clamp(3.5rem,2rem + 2.5vw,8rem); }
.review-rotator p,.guest-quote blockquote p { max-width:45ch; font-size:clamp(1.8125rem,1.35rem + 1.2vw,4rem); line-height:1.18; }
.review-rotator blockquote[data-quote-length="medium"] p,
.guest-quote blockquote[data-quote-length="medium"] p { font-size:clamp(1.625rem,1.2rem + 1vw,3.625rem); }
.review-rotator blockquote[data-quote-length="long"] p,
.guest-quote blockquote[data-quote-length="long"] p { font-size:clamp(1.4375rem,1.05rem + .8vw,3rem); line-height:1.25; }
.review-rotator cite,.guest-quote cite { display:block; line-height:1.6; }
.site-footer { padding-block:var(--panel-space); }
.footer-grid { flex-wrap:wrap; }
.footer-links { row-gap:.5em; }
.footer-links a { display:inline-flex; min-height:2.75rem; align-items:center; }
.gallery-item { align-self:start; }

/* Navigation responds to its available space, including enlarged default text.
   Its type stays legible before the desktop composition's large-screen tier. */
.site-header { container:site-header / inline-size; }
.nav { container:navigation / inline-size; padding-block:1.25rem; gap:1.75rem; }
.brand { min-width:0; flex-shrink:1; }
.brand-viva,.brand-rocas { font-size:max(2.25rem,calc(36 * var(--stage-unit,1px))); }
.brand-mark { font-size:max(.625rem,calc(8 * var(--stage-unit,1px))); }
.brand-place { font-size:max(.75rem,calc(8 * var(--stage-unit,1px))); line-height:1.4; letter-spacing:.18em; }
.nav-links > a:not(.button),.site-header .button { font-size:max(.875rem,calc(10 * var(--stage-unit,1px))); }
.site-header .button { min-height:3.125em; padding:.9em 1.5em; }
.hero-copy .eyebrow,.hero-copy .button { font-size:max(.875rem,calc(10 * var(--stage-unit,1px))); }
.hero-copy .lede { font-size:max(1.125rem,calc(16 * var(--stage-unit,1px))); }
.hero-copy h1 { font-size:max(3.0625rem,calc(58 * var(--stage-unit,1px))); }
.hero-copy .button { min-height:3.125em; padding:.75em 1.5em; }
.hero-motion-meta { flex-wrap:wrap; }
.hero-motion-meta span { font-size:max(.8125rem,calc(9 * var(--stage-unit,1px))); }
.hero-motion .video-toggle { font-size:max(.875rem,calc(10 * var(--stage-unit,1px))); }
@container navigation (max-width:80rem) {
  .brand { max-width:calc(100% - 5.5rem); }
  .brand-name { white-space:normal; flex-wrap:wrap; gap:.15em; }
  .brand-place { max-width:48ch; }
  .menu-toggle { display:block; flex-shrink:0; }
  .nav-links { display:none; position:absolute; top:100%; inset-inline:0; padding:1.5rem; flex-direction:column; align-items:flex-start; gap:1.25rem; max-height:max(8rem,calc(100svh - var(--rendered-header-height,8rem))); overflow-y:auto; background:var(--paper); box-shadow:0 22px 50px rgba(35,25,17,.12); }
  .nav-links.is-open { display:flex; }
  .nav-links > a { max-width:100%; overflow-wrap:anywhere; flex-shrink:0; }
  .nav-links > a:not(.button),.nav-links .button { font-size:1rem; }
}
@container site-header (max-width:30rem) {
  .nav { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:1rem; }
  .brand { max-width:none; }
  .brand-name { display:block; }
  .brand-viva::after { content:" "; }
}

/* Narrow panels retain comfortable type without swallowing their own column.
   rem minimums are intentional: enlarged text must wrap, not shrink to fit. */
.path-copy,.motion-copy,.grocery-map-key { container:reading-panel / inline-size; }
@container reading-panel (max-width:24rem) {
  p,.grocery-store-list button { font-size:clamp(1.125rem,1rem + .75cqi,1.375rem); }
}
@container proof (max-width:62rem) {
  .proof-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@container proof (max-width:22rem) {
  .proof-grid { grid-template-columns:1fr; }
}
@container rooms (max-width:64rem) {
  .sleeping-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .sleeping-grid > div:nth-child(3) { border-left:0; }
}
@container rooms (max-width:32rem) {
  .sleeping-grid { grid-template-columns:1fr; }
  .sleeping-grid > div + div { border-left:0; padding-left:0; border-top:1px solid rgba(30,25,20,.18); }
}
@media (max-width:1000px) {
  .grocery-map-card .grocery-map-visual { grid-template-columns:1fr; }
}
@media (max-width:900px) {
  .map-legend { grid-template-columns:1fr; }
  .home-hero { display:grid; min-height:0; padding:1.25rem 0; gap:1.5rem; }
  .hero-motion { position:relative; inset:auto; order:-1; justify-self:end; margin-right:19px; width:min(24rem,calc(100% - 38px)); }
  .hero-copy { width:calc(100% - 38px); max-width:none; margin:0 auto; padding:clamp(1.5rem,5vw,2.5rem); }
  .hero-copy h1 { font-size:clamp(2.75rem,2rem + 3vw,4rem); }
  .hero-copy .lede { max-width:60ch; }
  .hero-copy .button { margin-top:1rem; }
  .brand-viva,.brand-rocas { font-size:1.875rem; line-height:1; }
  .brand-place { font-size:.75rem; letter-spacing:.12em; }
  .map-enlarge { letter-spacing:.04em; }
}
@media (max-width:560px) {
  .brand-descriptor { display:none; }
  .hero-motion { width:min(17rem,calc(100% - 38px)); }
  .hero-motion-meta span { display:none; }
  .pathways-head,.sky-story-head { flex-wrap:wrap; }
  .display { font-size:clamp(3rem,2rem + 5vw,4.25rem); }
  .section-title { font-size:clamp(2.5rem,1.5rem + 4vw,3.5rem); }
}
@media (max-height:600px) {
  .site-header.is-stuck { position:relative; }
}
