/* SP Vacations — design system. ogroup.com format: full-bleed, near-zero gutters,
   image-forward, sans display. Palette: navy from the Sterling Point mark, sea
   teal accent, coral CTA. NO italics anywhere. NO gold text. */
@font-face{font-family:"Mulish";font-style:normal;font-weight:200 1000;font-display:swap;
  src:url(/assets/fonts/mulish-latin.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Mulish";font-style:normal;font-weight:200 1000;font-display:swap;
  src:url(/assets/fonts/mulish-latin-ext.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
:root{
  --navy:#0b1424; --navy-2:#142338; --navy-3:#243251;
  --ink:#0d1522; --ink-2:#2a3444; --mute:#5b6675;
  --paper:#ffffff; --paper-2:#f4f6f9; --sand:#efe9df; --line:#dfe4ea;
  --sea:#0e7c9b; --sea-2:#0b6680; --sea-soft:#8fd3e6;
  --coral:#d9482f; --coral-2:#bf3d27;
  --spot:#7a4fb0;
  --food:#b93d76;
  --gutter:clamp(16px,2vw,40px); --readw:720px;
  --railw:clamp(240px,20vw,340px); /* side rail = at most 1/5 of the viewport */
  --font-d:"Mulish",system-ui,-apple-system,"Segoe UI",sans-serif; --font-b:"Mulish",system-ui,-apple-system,"Segoe UI",sans-serif;
  --r:4px; --shadow:0 20px 60px rgba(11,20,36,.18);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font-b);color:var(--ink);background:var(--paper);line-height:1.6;font-size:16px;overflow-x:hidden}
em,i,cite,dfn,var,address,q{font-style:normal !important}
img,video{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
p a,li a{color:var(--sea-2);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
p a:hover,li a:hover{color:var(--navy)}
h1,h2,h3,h4{font-family:var(--font-d);font-weight:800;line-height:1.02;letter-spacing:-.02em;margin:0 0 .5em}
h1{font-size:clamp(2.6rem,6.2vw,6.4rem);font-weight:900;font-stretch:112%}
h2{font-size:clamp(2rem,4.2vw,4rem);font-weight:850}
h3{font-size:clamp(1.25rem,1.8vw,1.7rem);font-weight:750}
h4{font-size:1rem;text-transform:uppercase;letter-spacing:.14em;font-weight:700}
.rail__box h3,.foot h3{font-size:1rem;text-transform:uppercase;letter-spacing:.14em;font-weight:700;line-height:1.02}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
p{margin:0 0 1em}
.eyebrow{font-family:var(--font-d);font-size:.74rem;text-transform:uppercase;letter-spacing:.22em;font-weight:700;color:var(--sea-2);margin:0 0 14px;display:block}
.eyebrow.on-dark{color:#fff;opacity:.95;text-shadow:0 1px 12px rgba(0,0,0,.45)}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;letter-spacing:.06em;text-transform:uppercase}
.skip{position:absolute;left:-999px;top:8px;background:#fff;color:#000;padding:8px 14px;z-index:9999}
.skip:focus{left:8px}
:focus-visible{outline:3px solid var(--sea);outline-offset:3px}

/* layout law: full-width, near-zero gutter, no centered frame */
.wrap{width:100%;margin-inline:0;padding-inline:var(--gutter)}
.bleed{width:100vw;margin-inline:calc(50% - 50vw)}
.read{max-width:var(--readw)}
.editorial{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,var(--railw));gap:clamp(24px,4vw,72px);align-items:start;padding-inline:var(--gutter)}
@media(max-width:1020px){.editorial{display:block}}
.sec{padding-block:clamp(56px,7vw,120px)}
.sec--tight{padding-block:clamp(36px,4vw,64px)}
.sec--dark{background:var(--navy);color:#fff}
.sec--dark h2,.sec--dark h3{color:#fff}
.sec--dark p a,.sec--dark li a{color:var(--sea-soft)}
.sec--paper2{background:var(--paper-2)}
.sec--sand{background:var(--sand)}
.sec-head{display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(20px,3vw,60px);align-items:end;margin-bottom:clamp(28px,3vw,52px)}
.sec-head p{font-size:1.1rem;color:var(--mute);margin:0}
.sec--dark .sec-head p{color:rgba(255,255,255,.75)}
@media(max-width:820px){.sec-head{grid-template-columns:1fr}}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-d);font-weight:700;font-size:.86rem;letter-spacing:.06em;text-transform:uppercase;padding:14px 22px;border-radius:999px;border:2px solid transparent;transition:transform .18s,background .18s,color .18s,border-color .18s;min-height:44px;cursor:pointer;line-height:1}
.btn:hover{transform:translateY(-1px)}
.btn-solid{background:var(--navy);color:#fff;border-color:var(--navy)}
.btn-solid:hover{background:var(--navy-2)}
.btn-coral{background:var(--coral-2);color:#fff;border-color:var(--coral-2)}
.btn-coral:hover{background:#a8331f;border-color:#a8331f}
.btn-ghost{background:transparent;color:var(--navy);border-color:var(--navy)}
.btn-ghost:hover{background:var(--navy);color:#fff}
.btn-white{background:#fff;color:var(--navy);border-color:#fff}
.btn-white:hover{background:var(--paper-2)}
.btn-ghost-w{background:transparent;color:#fff;border-color:rgba(255,255,255,.7)}
.btn-ghost-w:hover{background:#fff;color:var(--navy)}
.btn-row{display:flex;flex-wrap:wrap;gap:12px}

/* header */
.hdr{position:fixed;top:0;left:0;right:0;z-index:900;transition:transform .35s,background .3s,box-shadow .3s;background:transparent}
.hdr__in{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px var(--gutter);min-height:84px}
.hdr.is-solid,.hdr.is-open,body.hdr-solid .hdr{background:rgba(255,255,255,.98);box-shadow:0 1px 0 var(--line)}
.hdr.is-hidden{transform:translateY(-100%)}
.brand{display:flex;align-items:center;gap:12px;color:#fff}
.hdr.is-solid .brand,body.hdr-solid .brand{color:var(--navy)}
.brand img{height:56px;width:auto}
.brand{flex:0 0 auto}
.brand__t{display:flex;flex-direction:column;line-height:1.02}
.brand__t b{font-family:var(--font-d);font-weight:900;font-size:1.62rem;letter-spacing:-.01em;font-stretch:110%;white-space:nowrap}
.brand__t small{font-size:.68rem;letter-spacing:.13em;text-transform:uppercase;opacity:.85;font-weight:600;margin-top:2px;white-space:nowrap}
.nav{display:flex;gap:2px;align-items:center}
.nav>a,.nav .ndd__top{display:inline-flex;align-items:center;gap:6px;padding:10px 9px;font-family:var(--font-d);font-weight:700;font-size:.86rem;letter-spacing:.04em;text-transform:uppercase;color:#fff;border-radius:999px;min-height:44px;white-space:nowrap}
.hdr.is-solid .nav>a,.hdr.is-solid .nav .ndd__top,body.hdr-solid .nav>a,body.hdr-solid .nav .ndd__top{color:var(--navy)}
.nav>a:hover,.nav .ndd:hover .ndd__top,.nav>a[aria-current=page],.nav .ndd__top[aria-current=page]{background:rgba(255,255,255,.14)}
.hdr.is-solid .nav>a:hover,.hdr.is-solid .nav .ndd:hover .ndd__top,body.hdr-solid .nav>a:hover,body.hdr-solid .nav .ndd:hover .ndd__top{background:rgba(14,124,155,.12);color:var(--sea-2)}
.ndd{position:relative}
.ndd__c{width:6px;height:6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);opacity:.7;transition:transform .2s ease,opacity .2s ease}
.ndd:hover .ndd__c,.ndd:focus-within .ndd__c{transform:rotate(225deg) translateY(2px);opacity:1}
.ndd__panel{position:absolute;top:100%;left:0;padding-top:15px;opacity:0;visibility:hidden;transform:translateY(12px);transition:opacity .22s ease,transform .28s cubic-bezier(.22,1,.36,1),visibility .22s}
.ndd__panel--right{left:auto;right:0}
.ndd:hover .ndd__panel,.ndd:focus-within .ndd__panel{opacity:1;visibility:visible;transform:none}
/* mega dropdown — feature image tile + icon grid. Flex + explicit link-block widths
   so the columns resolve inside the shrink-to-fit absolutely-positioned panel. */
.mega{position:relative;display:flex;gap:10px;
  background:linear-gradient(180deg,#ffffff 0%,#eef8fc 100%);border:1px solid rgba(14,124,155,.16);
  box-shadow:0 40px 90px -20px rgba(11,42,60,.42),0 12px 34px -14px rgba(11,42,60,.24),inset 0 1px 0 rgba(255,255,255,.7);
  border-radius:22px;padding:13px;overflow:hidden}
.mega::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;z-index:3;
  background:linear-gradient(90deg,var(--sea) 0%,var(--sea-soft) 46%,var(--coral) 100%)}
/* feature image tile */
.mega__feat{flex:0 0 240px;position:relative;display:flex;align-items:flex-end;min-height:250px;border-radius:15px;overflow:hidden;
  color:#fff;background-size:cover;background-position:center;isolation:isolate;
  transition:background-size 1s cubic-bezier(.22,1,.36,1)}
.mega__feat-shade{position:absolute;inset:0;z-index:0;
  background:linear-gradient(180deg,rgba(8,28,42,0) 24%,rgba(8,24,38,.5) 60%,rgba(6,16,28,.92) 100%)}
.mega__feat::after{content:"";position:absolute;inset:0;z-index:2;border-radius:15px;pointer-events:none;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.16)}
.mega__feat:hover{background-size:114%}
.mega__feat-in{position:relative;z-index:1;padding:17px 17px 17px}
.mega__feat-eyebrow{display:block;font-family:var(--font-d);font-weight:700;font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;color:var(--sea-soft);margin-bottom:8px}
.mega__feat-title{display:block;font-family:var(--font-d);font-weight:850;font-size:1.4rem;line-height:1.02;letter-spacing:-.018em;margin-bottom:9px}
.mega__feat-desc{display:block;font-size:.82rem;line-height:1.44;color:rgba(255,255,255,.86);margin-bottom:15px}
.mega__feat-cta{display:inline-flex;align-items:center;gap:8px;padding:9px 15px;border-radius:999px;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.5);
  font-family:var(--font-d);font-weight:800;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:#fff;
  transition:background .28s ease,color .28s ease,border-color .28s ease}
.mega__feat-cta .mega__arw{display:inline-block;transition:transform .3s cubic-bezier(.22,1,.36,1)}
.mega__feat:hover .mega__feat-cta{background:#fff;color:var(--navy);border-color:#fff}
.mega__feat:hover .mega__feat-cta .mega__arw{transform:translateX(4px)}
/* link grid — explicit widths per variant */
.mega__links{display:grid;grid-template-columns:1fr;gap:3px;align-content:start;width:300px;padding:2px}
.mega__links--g2{grid-template-columns:1fr 1fr;width:512px}
.mega__links--g3{grid-template-columns:1fr 1fr 1fr;width:690px}
.mega__links--rich{width:346px}
.mega__links--g2.mega__links--rich{width:584px}
.mega--nofeat .mega__links{width:340px}
.mega__feat + .mega__links{border-left:1px solid rgba(14,124,155,.12);padding-left:12px;margin-left:2px}
/* items — staggered reveal (opacity/transform delayed by --i; hover stays instant) */
.mega__item{display:flex;align-items:center;gap:12px;min-width:0;padding:9px 11px;border-radius:12px;color:var(--navy);position:relative;
  opacity:0;transform:translateY(7px);
  transition:opacity .34s ease,transform .34s cubic-bezier(.22,1,.36,1),background .16s ease,color .16s ease}
.ndd:hover .mega__item,.ndd:focus-within .mega__item{opacity:1;transform:none;
  transition-delay:calc(.04s + var(--i,0)*.03s),calc(.04s + var(--i,0)*.03s),0s,0s}
.mega__lab{min-width:0;line-height:1.15;font-size:.93rem;font-weight:650}
.mega__links--rich .mega__lab b{display:block;font-weight:750;font-size:.95rem;line-height:1.2}
.mega__links--rich .mega__lab small{display:block;font-size:.775rem;font-weight:500;color:var(--mute);line-height:1.25;margin-top:1px}
.mega__ic{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:11px;
  background:linear-gradient(155deg,#e9f5fa,#d7ecf4);color:var(--sea-2);box-shadow:inset 0 0 0 1px rgba(14,124,155,.10);
  transition:background .22s ease,color .22s ease,transform .24s cubic-bezier(.22,1,.36,1),box-shadow .22s ease}
.mega__ic svg{width:19px;height:19px}
.mega__item:hover{background:linear-gradient(90deg,rgba(14,124,155,.13),rgba(143,211,230,.09));color:var(--sea-2)}
.mega__item:hover .mega__ic{background:linear-gradient(150deg,var(--sea),var(--sea-2));color:#fff;
  transform:translateY(-2px) scale(1.05);box-shadow:0 8px 18px rgba(14,124,155,.34)}
.hdr__cta{display:flex;align-items:center;gap:10px}
.hdr__cta .btn{padding:11px 18px;font-size:.78rem;white-space:nowrap}
.hdr:not(.is-solid) .hdr__cta .btn-solid{background:#fff;color:var(--navy);border-color:#fff}
body.hdr-solid .hdr__cta .btn-solid{background:var(--navy);color:#fff;border-color:var(--navy)}
/* menu button — visible at every breakpoint, with a label */
.menu-btn{display:inline-flex;align-items:center;gap:12px;background:transparent;border:0;cursor:pointer;
  padding:9px 6px;color:#fff;font-family:var(--font-d);font-weight:800;font-size:.86rem;
  letter-spacing:.16em;text-transform:uppercase;transition:color .25s}
.menu-btn__lines{display:flex;flex-direction:column;gap:5px;width:30px}
.menu-btn__lines span{display:block;height:2px;width:100%;background:currentColor;border-radius:2px;transition:.4s cubic-bezier(.22,1,.36,1)}
.menu-btn__lines span:nth-child(1){background:linear-gradient(90deg,var(--sea),var(--sea-soft))}
.menu-btn__lines span:nth-child(2){width:64%;margin-left:auto;background:var(--coral)}
.menu-btn:hover .menu-btn__lines span:nth-child(2){width:100%}
.hdr.is-solid .menu-btn,body.hdr-solid .menu-btn{color:var(--navy)}
.menu-btn:hover{color:var(--sea)}
.hdr:not(.is-solid) .menu-btn:hover{color:var(--sea-soft)}
/* Full desktop nav needs real room (8 groups + dropdowns). Below 1500 it
   collapses to the featured overlay menu; the hamburger only shows there
   (it is redundant while the inline nav is visible). */
@media(max-width:1500px){.nav{display:none}}
@media(min-width:1501px){.menu-btn{display:none}}
@media(max-width:560px){.brand__t small{display:none}.hdr__cta .btn{display:none}.menu-btn__label{display:none}}

/* ===== fullscreen overlay menu — featured image + grouped links ===== */
.overlay{position:fixed;inset:0;color:#fff;z-index:950;overflow:hidden;
  background:
    radial-gradient(88% 120% at 60% 4%, rgba(24,160,190,.46) 0%, rgba(24,160,190,0) 54%),
    radial-gradient(78% 95% at 104% 102%, rgba(217,72,47,.34) 0%, rgba(217,72,47,0) 58%),
    radial-gradient(64% 80% at 30% 104%, rgba(122,79,176,.24) 0%, rgba(122,79,176,0) 60%),
    radial-gradient(60% 70% at 96% 2%, rgba(143,211,230,.20) 0%, rgba(143,211,230,0) 58%),
    linear-gradient(152deg,#0c3242 0%,#0b1d31 48%,#0a1018 100%);
  opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s}
.overlay.is-open{opacity:1;visibility:visible}
/* full motion: curtain wipe instead of a flat fade */
html.m-full .overlay{opacity:1;clip-path:inset(0 0 100% 0);
  transition:clip-path .62s cubic-bezier(.76,0,.24,1),visibility .62s}
html.m-full .overlay.is-open{clip-path:inset(0 0 0% 0)}
.overlay__close{position:absolute;top:16px;right:var(--gutter);width:48px;height:48px;z-index:4;
  display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.28);
  background:transparent;color:#fff;font-size:1.7rem;border-radius:50%;cursor:pointer;transition:.35s cubic-bezier(.22,1,.36,1)}
.overlay__close:hover{background:rgba(255,255,255,.1);transform:rotate(90deg)}
.ov2{display:grid;grid-template-columns:minmax(0,.84fr) minmax(0,1.16fr);width:100%;height:100%}
.ov2__feature{position:relative;overflow:hidden;display:flex;align-items:flex-end;padding:clamp(28px,4vw,58px)}
.ov2__feature-img{position:absolute;inset:0;background-size:cover;background-position:center;
  transform:scale(1.09);opacity:0;transition:transform 1.3s cubic-bezier(.22,1,.36,1),opacity 1s}
.overlay.is-open .ov2__feature-img{transform:scale(1);opacity:1}
.ov2__feature::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(9,42,58,.10) 0%,rgba(10,32,50,.48) 50%,rgba(9,20,34,.92) 100%),
    linear-gradient(90deg,rgba(0,0,0,0) 78%,rgba(12,50,66,.55) 100%)}
.ov2__feature-body{position:relative;z-index:2;max-width:30rem;transform:translateY(24px);opacity:0;
  transition:.75s cubic-bezier(.22,1,.36,1) .3s}
.overlay.is-open .ov2__feature-body{transform:none;opacity:1}
.ov2__feature-eyebrow{display:block;font-family:var(--font-d);font-weight:700;font-size:.72rem;
  letter-spacing:.24em;text-transform:uppercase;color:var(--sea-soft);margin-bottom:15px}
.ov2__feature-title{font-family:var(--font-d);font-weight:850;line-height:1.02;
  font-size:clamp(1.9rem,3vw,3.4rem);color:#fff;margin-bottom:16px;letter-spacing:-.015em}
.ov2__feature-desc{font-size:1rem;color:rgba(255,255,255,.78);line-height:1.55;margin-bottom:26px;max-width:26rem}
.ov2__nav{position:relative;display:flex;flex-direction:column;justify-content:flex-start;
  padding:clamp(74px,8vh,120px) var(--gutter) clamp(56px,7vh,88px);overflow-y:auto}
.ov2__grid{margin-block:auto}
/* multi-column (not grid) so a childless group's height never couples to a tall
   neighbour and leaves an odd blank; groups pack tightly top-to-bottom. */
.ov2__grid{columns:2;column-gap:clamp(28px,4vw,72px)}
.ov2__grp{break-inside:avoid;-webkit-column-break-inside:avoid;margin-bottom:clamp(22px,2.6vw,44px);transform:translateY(20px);opacity:0}
.overlay.is-open .ov2__grp{transform:none;opacity:1;
  transition:opacity .55s cubic-bezier(.22,1,.36,1) var(--d,0s),transform .65s cubic-bezier(.22,1,.36,1) var(--d,0s)}
.ov2__head{display:inline-block;font-family:var(--font-d);font-weight:850;letter-spacing:-.015em;
  font-size:clamp(1.7rem,2.8vw,2.7rem);line-height:1.05;color:#fff;margin-bottom:14px;transition:color .3s}
.ov2__head:hover{color:var(--sea-soft)}
.ov2__links{display:flex;flex-wrap:wrap;gap:8px 16px;max-width:34rem}
.ov2__links a{display:inline-flex;align-items:center;gap:9px;font-family:var(--font-b);font-size:.98rem;font-weight:500;color:rgba(224,244,250,.82);transition:color .25s}
.ov2__links a:hover{color:var(--sea-soft)}
.ov2ic{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;
  background:rgba(143,211,230,.14);color:var(--sea-soft);transition:background .22s,color .22s}
.ov2ic svg{width:16px;height:16px}
.ov2__links a:hover .ov2ic{background:var(--sea-soft);color:#0b1d31}
.ov2__foot{column-span:all;-webkit-column-span:all;margin-top:clamp(26px,4vh,50px);padding-top:22px;
  border-top:1px solid rgba(255,255,255,.18);display:flex;flex-wrap:wrap;gap:12px 32px;
  color:var(--sea-soft);font-weight:600;font-size:.92rem}
.ov2__foot a:hover{color:#fff}
.ov2__feature-title{font-family:var(--font-d);font-weight:850;line-height:1.02;letter-spacing:-.02em;margin:0 0 .5em;font-size:clamp(2rem,4.2vw,4rem);color:inherit}
@media(max-width:900px){
  .ov2{grid-template-columns:1fr;grid-template-rows:32vh 1fr}
  .ov2__feature-title{font-size:clamp(1.5rem,6vw,2rem)}
  .ov2__nav{justify-content:flex-start;padding-top:clamp(30px,5vh,48px)}
  .ov2__grid{columns:1}
}
@media(max-width:540px){.ov2{grid-template-rows:1fr}.ov2__feature{display:none}}
body.menu-open{overflow:hidden}

/* hero */
.hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;color:#fff;isolation:isolate;overflow:hidden}
.hero__media{position:absolute;inset:0;z-index:-2}
.hero__media img,.hero__media video{width:100%;height:100%;object-fit:cover}
.hero__media video{position:absolute;inset:0;opacity:0;transition:opacity 1.2s ease}
.hero__media video.is-playing{opacity:1}
.hero__media img{position:absolute;inset:0}
.hero__scrim{position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(11,20,36,.35) 0%,rgba(11,20,36,.05) 35%,rgba(11,20,36,.55) 75%,rgba(11,20,36,.85) 100%)}
.hero__in{width:100%;padding:0 var(--gutter) clamp(36px,5vw,72px);display:grid;grid-template-columns:1.4fr 1fr;gap:clamp(20px,4vw,80px);align-items:end}
.hero h1{margin:0 0 18px;text-wrap:balance;text-shadow:0 2px 24px rgba(0,0,0,.35)}
.hero__lede{font-size:clamp(1.05rem,1.4vw,1.35rem);max-width:56ch;color:rgba(255,255,255,.92);font-weight:500}
.hero__side{display:grid;gap:12px;justify-items:start}
.hero__stats{display:flex;flex-wrap:wrap;gap:clamp(18px,3vw,44px);margin-top:14px}
.hero__stats b{display:block;font-family:var(--font-d);font-size:clamp(1.6rem,3vw,2.6rem);font-weight:900;line-height:1}
.hero__stats span{font-size:.74rem;text-transform:uppercase;letter-spacing:.16em;font-weight:700;opacity:.85}
.hero--short{min-height:72svh}
.hero--page{min-height:62svh}
@media(max-width:900px){.hero__in{grid-template-columns:1fr;padding-top:calc(76px + 28px)}.hero__side{justify-items:stretch}}

/* villa grid (image-forward, full-bleed, no card borders) */
.vgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;padding-inline:3px}
.vgrid--4{grid-template-columns:repeat(4,1fr)}
.vgrid--2{grid-template-columns:repeat(2,1fr)}
@media(max-width:1100px){.vgrid,.vgrid--4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.vgrid,.vgrid--4,.vgrid--2{grid-template-columns:repeat(2,1fr)}.vgrid:not(.vgrid--fx) .vt,.vgrid:not(.vgrid--fx) .vt--wide{aspect-ratio:3/4}.vgrid:not(.vgrid--fx) .vt__t{padding:10px 12px;gap:3px}.vgrid:not(.vgrid--fx) .vt__t h3{font-size:.98rem;line-height:1.15}.vgrid:not(.vgrid--fx) .vt__meta{font-size:.6rem;gap:3px 8px}.vgrid:not(.vgrid--fx) .vt__tag{display:none}}
.vt{position:relative;display:block;aspect-ratio:4/3;overflow:hidden;color:#fff;background:var(--navy-2)}
.vt--wide{aspect-ratio:16/9;grid-column:span 2}
@media(max-width:640px){.vt--wide{grid-column:span 1;aspect-ratio:4/3}}
.vt img{width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.vt:hover img{transform:scale(1.05)}
.vt__ov{position:absolute;inset:0;background:linear-gradient(180deg,rgba(11,20,36,0) 45%,rgba(11,20,36,.82) 100%)}
.vt__t{position:absolute;left:0;right:0;bottom:0;padding:clamp(16px,2vw,28px);display:grid;gap:4px}
.vt__t h3{margin:0;font-size:clamp(1.15rem,1.6vw,1.6rem);font-weight:800;color:#fff}
.vt__meta{font-size:.76rem;text-transform:uppercase;letter-spacing:.14em;font-weight:700;color:rgba(255,255,255,.9);display:flex;flex-wrap:wrap;gap:6px 14px}
.vt__tag{position:absolute;top:14px;left:14px;background:#fff;color:var(--navy);font-family:var(--font-d);font-weight:800;font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;padding:6px 10px;border-radius:999px}

/* split media/text */
.split{display:grid;grid-template-columns:1fr 1fr;min-height:70svh}
.split--rev .split__media{order:2}
.split__media{position:relative;min-height:46svh}
.split__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.split__body{display:flex;flex-direction:column;justify-content:center;padding:clamp(40px,5vw,96px) clamp(24px,5vw,96px)}
.split__body p{font-size:1.06rem;color:var(--ink-2)}
.sec--dark .split__body p{color:rgba(255,255,255,.85)}
@media(max-width:900px){.split{grid-template-columns:1fr}.split--rev .split__media{order:0}}

/* strip bands (horizontal scroll rows) */
.strip{display:flex;gap:3px;overflow-x:auto;scroll-snap-type:x mandatory;padding-inline:3px;scrollbar-width:none}
.strip::-webkit-scrollbar{display:none}
.strip>*{flex:0 0 clamp(260px,26vw,420px);scroll-snap-align:start}

/* guide tiles (image-forward list; no boxed cards) */
.gtiles{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;padding-inline:3px}
@media(max-width:1200px){.gtiles{grid-template-columns:repeat(3,1fr)}}
@media(max-width:820px){.gtiles{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.gtiles{grid-template-columns:1fr}}
.gtiles--3{grid-template-columns:repeat(3,1fr)}
.gtiles--5{grid-template-columns:repeat(5,1fr)}
@media(max-width:1200px){.gtiles--5{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){.gtiles--3{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.gtiles--3,.gtiles--5{grid-template-columns:1fr}}
.gt{position:relative;display:block;aspect-ratio:1/1;overflow:hidden;color:#fff;background:var(--navy-3)}
.gt img{width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.gt:hover img{transform:scale(1.05)}
.gt__ov{position:absolute;inset:0;background:linear-gradient(180deg,rgba(11,20,36,.05) 40%,rgba(11,20,36,.85) 100%)}
.gt__t{position:absolute;left:0;right:0;bottom:0;padding:18px}
.gt__t small{display:block;font-size:.66rem;text-transform:uppercase;letter-spacing:.18em;font-weight:700;color:var(--sea-soft);margin-bottom:6px}
.gt__t h3{margin:0;font-size:1.15rem;font-weight:800;color:#fff;line-height:1.15}
.gt--text{background:var(--navy);display:flex;align-items:flex-end;padding:18px}
.gt--text h3{color:#fff;margin:0;font-size:1.15rem}
.gt--text small{display:block;font-size:.66rem;text-transform:uppercase;letter-spacing:.18em;font-weight:700;color:var(--sea-soft);margin-bottom:6px}
.gt--text .gt__t{position:static;padding:0}
.gt--sea{background:var(--sea-2)}
.gt--n2{background:var(--navy-2)}
.gt--n3{background:var(--navy-3)}

/* text list bands (guide index rows) */
.rows{display:grid;grid-template-columns:repeat(3,1fr);gap:0 clamp(24px,3vw,60px);padding-inline:var(--gutter)}
@media(max-width:1000px){.rows{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.rows{grid-template-columns:1fr}}
.rows a{display:block;padding:14px 0;border-bottom:1px solid var(--line);font-weight:600;color:var(--navy);display:flex;justify-content:space-between;gap:12px}
.rows a span{color:var(--mute);font-weight:500;font-size:.85rem;white-space:nowrap}
.rows a:hover{color:var(--sea-2)}
.sec--dark .rows a{color:#fff;border-color:rgba(255,255,255,.14)}
.sec--dark .rows a span{color:rgba(255,255,255,.6)}

/* article layout: reading column INSIDE a full-width grid beside a FILLED rail */
.article{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(28px,4vw,72px);padding:clamp(40px,5vw,80px) var(--gutter);align-items:start}
.article:has(.rail){grid-template-columns:minmax(0,1fr) minmax(0,var(--railw))}
@media(max-width:1020px){.article,.article:has(.rail){grid-template-columns:1fr}.rail{position:static}.rail__box:has(.toc){display:none}}
.prose{font-size:1.06rem;line-height:1.7}
.prose .lede{font-size:clamp(1.2rem,1.6vw,1.45rem);line-height:1.5;color:var(--ink);font-weight:500;margin-bottom:1.4em}
.prose h2{font-size:clamp(1.5rem,2.2vw,2.1rem);margin:1.6em 0 .5em;letter-spacing:-.015em}
.prose h3{margin:1.2em 0 .4em}
.prose ul,.prose ol{padding-left:1.2em}
.prose li{margin:.35em 0}
.prose figure{margin:2em 0}
.prose figcaption{font-size:.82rem;color:var(--mute);margin-top:8px}
.prose blockquote{margin:1.6em 0;padding:16px 22px;border-left:4px solid var(--sea);background:var(--paper-2);font-weight:500}
.rail{position:sticky;top:96px;display:grid;gap:26px}
.rail__box{background:var(--paper-2);padding:22px 24px;border-radius:6px}
.rail__box h3,.rail__box h4{margin:0 0 12px;color:var(--navy)}
.rail__box ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.rail__box li{font-size:.94rem}
.rail__box li b{color:var(--navy)}
.rail__box a{color:var(--navy);font-weight:600;text-decoration:none}
.rail__box a:hover{color:var(--sea-2)}
.rail__box--dark{background:var(--navy);color:#fff}
.rail__box--dark h3,.rail__box--dark h4{color:#fff}
.rail__box--dark a{color:#fff}
.rail__box--dark .btn-white,.rail__box--dark .btn-white:hover{color:var(--navy)}
.rail__box--dark p{color:rgba(255,255,255,.85);font-size:.95rem}
.rail__villa{display:grid;grid-template-columns:96px 1fr;gap:12px;align-items:center;margin-top:10px}
.rail__villa img{width:96px;height:72px;object-fit:cover;border-radius:4px}
.rail__villa b{display:block;font-size:.95rem;line-height:1.2}
.rail__villa small{color:var(--mute);font-size:.8rem}
.rail__box--dark .rail__villa small{color:rgba(255,255,255,.78)}
.toc a{display:block;padding:3px 0;font-size:.84rem;font-weight:600}
.rail__box:has(.toc){padding:16px 18px;max-height:calc(100vh - 96px - 48px);overflow-y:auto;scrollbar-width:thin}
.rail__box:has(.toc) h3,.rail__box:has(.toc) h4{margin-bottom:8px}
/* photos woven into article bodies */
.prose .fig{margin:2.2em 0}
.prose .fig img{width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;border-radius:6px}
.prose .figrow{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:2.2em 0}
.prose .figrow figure{margin:0}
.prose .figrow img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:6px}
@media(max-width:700px){.prose .figrow{grid-template-columns:1fr}}
.crumbs{font-size:.78rem;text-transform:uppercase;letter-spacing:.14em;font-weight:700;color:var(--mute);display:flex;flex-wrap:wrap;gap:8px;padding:88px var(--gutter) 0}
.crumbs a{color:var(--mute)}
.crumbs a:hover{color:var(--sea-2)}
.crumbs span::before{content:"/";margin-right:8px;opacity:.5}
.crumbs span:first-child::before{content:none}
.crumbs--dark{color:rgba(255,255,255,.7)}
.crumbs--dark a{color:rgba(255,255,255,.7)}
.crumbs--over{position:absolute;top:0;left:0;right:0;z-index:2}

/* page hero (title + photo) */
.phero{position:relative;min-height:56svh;display:flex;align-items:flex-end;color:#fff;overflow:hidden;isolation:isolate}
.phero__media{position:absolute;inset:0;z-index:-2}
.phero__media img{width:100%;height:100%;object-fit:cover}
.phero__scrim{position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(11,20,36,.5),rgba(11,20,36,.15) 40%,rgba(11,20,36,.85))}
.phero__in{width:100%;padding:100px var(--gutter) clamp(28px,4vw,56px);display:grid;grid-template-columns:1.3fr 1fr;gap:clamp(16px,3vw,60px);align-items:end}
.phero h1{margin:0;font-size:clamp(2.2rem,5vw,5rem)}
.phero__lede{font-size:clamp(1rem,1.3vw,1.25rem);color:rgba(255,255,255,.9);max-width:52ch;font-weight:500}
@media(max-width:900px){.phero__in{grid-template-columns:1fr}}
.phero--nav{background:var(--navy);min-height:auto}
.phero--nav .phero__in{padding-top:120px}

/* mosaic gallery */
.mosaic{display:grid;grid-auto-flow:dense;grid-template-columns:repeat(4,1fr);grid-auto-rows:calc((100vw - 9px)/4*.72);gap:3px;padding-inline:3px}
.mosaic a{position:relative;overflow:hidden;display:block;background:var(--navy-2)}
.mosaic a img{width:100%;height:100%;object-fit:cover;transition:transform .8s}
.mosaic a:hover img{transform:scale(1.04)}
.mosaic a.big{grid-column:span 2;grid-row:span 2}
@media(max-width:900px){.mosaic{grid-template-columns:repeat(2,1fr);grid-auto-rows:calc((100vw - 9px)/2*.72)}}
@media(max-width:520px){.mosaic{grid-template-columns:repeat(2,1fr)}.mosaic a.big{grid-column:span 2;grid-row:span 1}}

/* facts strip */
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:2px;background:var(--line)}
.facts>div{background:#fff;padding:22px 20px}
.facts b{display:block;font-family:var(--font-d);font-size:1.7rem;font-weight:900;color:var(--navy);line-height:1}
.facts span{font-size:.72rem;text-transform:uppercase;letter-spacing:.16em;font-weight:700;color:var(--mute)}
@media(max-width:640px){.facts{grid-template-columns:1fr 1fr}.facts>div:last-child:nth-child(odd){grid-column:span 2}}
.sec--dark .facts{background:rgba(255,255,255,.12)}
.sec--dark .facts>div{background:var(--navy)}
.sec--dark .facts b{color:#fff}
.sec--dark .facts span{color:rgba(255,255,255,.7)}

/* amenities */
.amen{columns:3;column-gap:40px;padding:0;margin:0;list-style:none}
.amen li{break-inside:avoid;padding:8px 0;border-bottom:1px solid var(--line);font-size:.95rem}
@media(max-width:900px){.amen{columns:2}}
@media(max-width:520px){.amen{columns:1}}

/* reviews */
.revs{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,1.6vw,26px);padding-inline:var(--gutter)}
@media(max-width:1000px){.revs{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.revs{grid-template-columns:1fr}.rev__q{display:-webkit-box;-webkit-line-clamp:8;-webkit-box-orient:vertical;overflow:hidden}}
.rev{position:relative;overflow:hidden;background:transparent;border:0;border-top:2px solid var(--navy);border-radius:0;padding:clamp(22px,2.2vw,34px) 0 0;display:flex;flex-direction:column;gap:16px;min-height:240px;transition:border-color .22s ease}
.rev::before{content:none}
.rev::after{content:"\201D";position:absolute;top:.02em;right:0;font-family:var(--font-d);font-size:7rem;line-height:1;color:var(--sea);opacity:.12;font-weight:900;pointer-events:none}
.rev:hover{border-color:var(--sea)}
.rev__q{font-size:1.08rem;line-height:1.6;color:var(--ink);flex:1;position:relative;z-index:1;font-weight:500}
.rev__who{padding-top:14px;border-top:1px solid var(--line)}
.rev__who b{display:block;color:var(--navy);font-family:var(--font-d);font-weight:800;font-size:.98rem;letter-spacing:-.01em;margin-bottom:3px}
.rev__who span{font-size:.74rem;text-transform:uppercase;letter-spacing:.14em;font-weight:700;color:var(--mute)}
.stars{color:var(--coral);letter-spacing:3px;font-size:.98rem}
.sec--dark .rev{background:transparent;border-color:rgba(255,255,255,.5)}
.sec--dark .rev::after{color:#fff;opacity:.06}
.sec--dark .rev__q{color:#fff}
.sec--dark .rev__who{border-color:rgba(255,255,255,.14)}
.sec--dark .rev__who b{color:#fff}
.sec--dark .rev__who span{color:rgba(255,255,255,.65)}

/* forms */
.form{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form .full{grid-column:1/-1}
.form label{display:grid;gap:6px;font-size:.8rem;text-transform:uppercase;letter-spacing:.12em;font-weight:700;color:var(--navy)}
.form input,.form select,.form textarea{width:100%;padding:14px;border:1px solid var(--line);border-radius:4px;font:inherit;font-size:1rem;background:#fff;color:var(--ink);min-height:48px}
.form textarea{min-height:140px;resize:vertical}
.form .chk{display:flex;gap:10px;align-items:flex-start;text-transform:none;letter-spacing:0;font-weight:500;font-size:.9rem;color:var(--ink-2)}
.form .chk input{width:20px;height:20px;min-height:0;margin-top:2px}
.form .hp{position:absolute;left:-9999px}
.form__msg{grid-column:1/-1;font-weight:600;min-height:1.4em}
.form__msg.err{color:var(--coral-2)}
.form__msg.ok{color:var(--sea-2)}
@media(max-width:640px){.form{grid-template-columns:1fr}}
.sec--dark .form label{color:#fff}
.sec--dark .form .chk{color:rgba(255,255,255,.85)}
.sec--dark .form .chk a{color:var(--sea-soft)}

/* CTA band */
.cta{display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(20px,4vw,80px);align-items:center;padding:clamp(48px,6vw,100px) var(--gutter)}
.cta h2{margin:0}
.cta p{font-size:1.1rem}
@media(max-width:900px){.cta{grid-template-columns:1fr}}

/* footer */
.foot{background:var(--navy);color:#fff;position:relative;overflow:hidden;isolation:isolate}
/* brand palm mark, masked to one soft tint and enlarged, watermarked across the whole footer */
.foot__wm{position:absolute;inset:0;z-index:0;pointer-events:none;background:var(--sea-soft);opacity:.07;
  -webkit-mask:url(/assets/img/brand/mark-solo.png) no-repeat center 46%;mask:url(/assets/img/brand/mark-solo.png) no-repeat center 46%;
  -webkit-mask-size:clamp(680px,114vw,1900px) auto;mask-size:clamp(680px,114vw,1900px) auto}
.foot__top,.foot__cities,.foot__bar,.foot__tm{position:relative;z-index:1}
.foot__top{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr 1fr;gap:clamp(22px,2.6vw,56px);padding:clamp(48px,6vw,88px) var(--gutter) 44px}
@media(max-width:1180px){.foot__top{grid-template-columns:1fr 1fr 1fr}}
@media(max-width:760px){.foot__top{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.foot__top{grid-template-columns:1fr}}
.foot__brand{min-width:0}
/* full-width band of every fly-from city page */
.foot__cities{border-top:1px solid rgba(255,255,255,.10);padding:30px var(--gutter) 32px}
.foot__cities h3{color:var(--sea-soft);margin-bottom:16px}
.foot__citylist{display:flex;flex-wrap:wrap;gap:9px 10px}
.foot__citylist a{display:inline-block;padding:7px 14px;border:1px solid rgba(255,255,255,.20);border-radius:999px;font-size:.82rem;font-weight:600;color:rgba(255,255,255,.9);background:rgba(255,255,255,.03);transition:background .18s ease,border-color .18s ease,color .18s ease}
.foot__citylist a:hover,.foot__citylist a:focus-visible{background:#fff;color:var(--navy);border-color:#fff;outline:none}
.foot__brand .b{font-family:var(--font-d);font-weight:900;font-size:1.7rem;margin:14px 0 2px;font-stretch:110%}
.foot__by{font-family:var(--font-d);font-weight:700;font-size:.72rem;letter-spacing:.13em;text-transform:uppercase;color:var(--sea-soft);margin:0 0 12px}
.foot__brand p{color:rgba(255,255,255,.8);max-width:44ch}
.foot__contact a{color:#fff;font-weight:600}
.foot h3,.foot h4{color:var(--sea-soft);margin-bottom:14px}
.foot ul{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.foot ul a{color:rgba(255,255,255,.88)}
.foot ul a:hover{color:#fff;text-decoration:underline}
.foot__bar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:14px 20px;padding:20px var(--gutter);border-top:1px solid rgba(255,255,255,.12);font-size:.84rem;color:rgba(255,255,255,.7)}
.foot__copy{justify-self:start}
.foot__bar>.foot__barR{justify-self:end}
/* social icon links (footer, overlay menu, contact page) */
.social{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.social a{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:999px;border:1px solid rgba(255,255,255,.34);color:#fff;transition:color .18s ease,background .18s ease,border-color .18s ease}
.social a:hover,.social a:focus-visible{color:var(--navy);background:#fff;border-color:#fff;outline:none}
.social svg{width:18px;height:18px;display:block}
.social--light a{border-color:var(--line);color:var(--sea)}
.social--light a:hover,.social--light a:focus-visible{color:#fff;background:var(--sea);border-color:var(--sea)}
.social-wrap{margin-top:16px}
.social-wrap__k{display:block;font-family:var(--font-d);font-weight:700;font-size:.6rem;letter-spacing:.16em;text-transform:uppercase;color:var(--sea-soft);margin-bottom:10px}
.social-wrap__k--light{color:var(--sea)}
/* Header social cluster — compact, borderless, sits just left of the Find-a-villa button
   and inherits the header's colour states (white over the hero, navy when solid). */
.social--hdr{gap:2px;margin-right:2px}
.social--hdr a{width:38px;height:38px;border:0;color:#fff;background:transparent}
.social--hdr a:hover,.social--hdr a:focus-visible{background:rgba(255,255,255,.16);border-color:transparent;color:#fff}
.hdr.is-solid .social--hdr a,body.hdr-solid .social--hdr a{color:var(--navy);background:transparent;border-color:transparent}
.hdr.is-solid .social--hdr a:hover,.hdr.is-solid .social--hdr a:focus-visible,body.hdr-solid .social--hdr a:hover,body.hdr-solid .social--hdr a:focus-visible{background:rgba(14,124,155,.12);color:var(--sea-2)}
@media(max-width:900px){.social--hdr{display:none}}
.foot__bar nav{display:flex;gap:18px}
.foot__bar nav a{color:rgba(255,255,255,.85)}
.foot__tm{margin:0;padding:0 var(--gutter) 24px;font-size:.76rem;line-height:1.5;color:rgba(255,255,255,.55);text-align:center;max-width:none}
@media(max-width:860px){.foot__bar{grid-template-columns:1fr;justify-items:center;text-align:center;gap:18px}.foot__copy,.foot__bar>.foot__barR{justify-self:center}.foot__bar nav{flex-wrap:wrap;justify-content:center}}

/* lightbox */
.lb{position:fixed;inset:0;background:rgba(5,10,20,.96);z-index:1000;display:none;align-items:center;justify-content:center}
.lb.is-open{display:flex}
.lb__img{max-width:94vw;max-height:88vh;object-fit:contain}
.lb__x,.lb__nav{position:absolute;background:transparent;border:0;color:#fff;font-size:2.4rem;cursor:pointer;width:56px;height:56px}
.lb__x{top:12px;right:12px}
.lb__prev{left:8px;top:50%;transform:translateY(-50%)}
.lb__next{right:8px;top:50%;transform:translateY(-50%)}
.lb__cap{position:absolute;bottom:14px;left:0;right:0;text-align:center;color:rgba(255,255,255,.8);font-size:.85rem}

/* reveal motion — hidden states are keyed on html.m-full (set by the boot script),
   so no-JS visitors and Calm mode always see a fully visible page. The OS
   reduce-motion flag is ignored on purpose: Calm is an explicit choice. */
html.m-full .rv{opacity:0;transform:translateY(22px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)}
html.m-full .rv.in{opacity:1;transform:none}
.plx{will-change:transform}
html.m-calm .plx{transform:none !important}
html.m-calm{scroll-behavior:auto}

/* marquee */
.marq{overflow:hidden;white-space:nowrap;border-block:1px solid rgba(255,255,255,.14);padding:14px 0;font-family:var(--font-d);font-weight:800;text-transform:uppercase;letter-spacing:.14em;font-size:.86rem}
.marq__in{display:inline-block;animation:marq 40s linear infinite}
.marq span{margin:0 28px}
@keyframes marq{from{transform:translateX(0)}to{transform:translateX(-50%)}}
html.m-calm .marq__in{animation:none}
/* off-screen: pause the infinite loops (see app.js idleIO) */
.fx-idle .marq__in,.fx-idle .rpin__dot--home::after{animation-play-state:paused}

/* map page: key panel (1/4 of the page) + map, with a fullscreen mode */
#map{height:min(82svh,860px);width:100%;background:#0b1424;position:relative;z-index:0}
.leaflet-container{font-family:var(--font-b);background:#0b1424}
/* U.S. Virgin Islands switcher above the map (St. Croix live; others coming soon) */
.islandbar{background:#0a5f73;padding-top:84px}
.islandbar__in{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:14px var(--gutter) 0}
.islandbar__lbl{font-family:var(--font-d);font-weight:800;text-transform:uppercase;letter-spacing:.14em;font-size:.7rem;color:rgba(255,255,255,.6)}
.maptabs{display:flex;gap:8px;flex-wrap:wrap}
.maptab{display:inline-flex;align-items:center;gap:9px;background:rgba(255,255,255,.07);border:1.5px solid rgba(255,255,255,.2);color:#fff;border-radius:999px;padding:11px 20px;font-family:var(--font-d);font-weight:800;font-size:.95rem;letter-spacing:.01em;cursor:pointer;transition:background .16s,border-color .16s,color .16s,opacity .16s}
.maptab:hover{background:rgba(255,255,255,.14)}
.maptab.is-active{background:#fff;border-color:#fff;color:var(--sea-2)}
.maptab[data-soon]{opacity:.82}
.maptab[data-soon]:hover{opacity:1}
.maptab__soon{font-family:var(--font-b);font-weight:800;font-size:.6rem;text-transform:uppercase;letter-spacing:.08em;background:var(--coral);color:#fff;border-radius:999px;padding:3px 8px;line-height:1}
.maptab.is-active .maptab__soon{background:var(--coral);color:#fff}
.mapshell{display:grid;grid-template-columns:minmax(300px,25%) 1fr;background:linear-gradient(180deg,#0a5f73 0%,#0d8398 34%,#13a2b9 100%);align-items:stretch;padding-top:0}
/* coming-soon panel over the map area + muted key rail */
.mapkey__soonmsg{display:none;font-size:.82rem;line-height:1.5;color:rgba(255,255,255,.85);background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.15);border-radius:12px;padding:12px 14px;margin:0}
.mapshell.island-soon .mapkey__soonmsg{display:block}
.mapshell.island-soon .mapkey__rows,.mapshell.island-soon .mapkey__jump{opacity:.4;pointer-events:none}
.mapshell.island-soon .mapkey__foot{display:none}
.mapsoon{position:absolute;inset:0;z-index:940;display:flex;align-items:center;justify-content:center;padding:32px;text-align:center;background:linear-gradient(180deg,#0a5f73 0%,#0d8398 55%,#13a2b9 100%)}
.mapsoon[hidden]{display:none}
.mapsoon__card{max-width:520px;color:#fff}
.mapsoon__card .eyebrow{color:rgba(255,255,255,.72)}
.mapsoon__card h2{font-family:var(--font-d);font-size:clamp(2rem,5vw,3rem);color:#fff;margin:6px 0 14px}
.mapsoon__card p{color:rgba(255,255,255,.86);font-size:1.05rem;line-height:1.6;margin:0 0 24px}
.mapshell.is-full{position:fixed;inset:0;z-index:2000;height:100dvh;grid-template-columns:minmax(280px,22%) 1fr;padding-top:0}
html.map-lock,body.map-lock{overflow:hidden}
.mapbox{position:relative;min-width:0}
.is-full .mapbox,.is-full #map{height:100dvh}
.mapkey{display:flex;flex-direction:column;gap:20px;padding:28px 24px;color:#fff;overflow-y:auto;max-height:min(82svh,860px);border-right:1px solid rgba(255,255,255,.08)}
.is-full .mapkey{max-height:none;height:100dvh}
.mapkey__head h2{font-family:var(--font-d);font-size:1.35rem;color:#fff;margin-top:4px}
.mapkey__rows{display:flex;flex-direction:column;gap:10px}
.mkey{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:11px 12px;cursor:pointer;color:#fff;font:inherit;transition:background .18s,border-color .18s,opacity .18s}
.mkey:hover{background:rgba(255,255,255,.11)}
.mkey[aria-pressed=true]{background:rgba(255,255,255,.13);border-color:rgba(255,255,255,.3)}
.mkey[aria-pressed=false]{opacity:.66}
.mkey[aria-pressed=false]:hover{opacity:.9}
.mkey__pin{display:flex;flex:none}
.mkey .lgp{width:21px;height:28px;filter:drop-shadow(0 2px 3px rgba(0,0,0,.35))}
.mkey__t{min-width:0}
.mkey__t b{display:block;font-family:var(--font-d);font-size:.93rem;line-height:1.2}
.mkey__t small{display:block;color:rgba(255,255,255,.6);font-size:.72rem;line-height:1.3;margin-top:1px}
.mkey__n{margin-left:auto;flex:none;background:rgba(255,255,255,.14);border-radius:999px;min-width:28px;text-align:center;padding:3px 8px;font-size:.72rem;font-weight:700}
.mkey__sw{flex:none;width:36px;height:21px;border-radius:999px;background:rgba(255,255,255,.22);position:relative;transition:background .18s}
.mkey__sw:before{content:"";position:absolute;top:3px;left:3px;width:15px;height:15px;border-radius:50%;background:#fff;transition:transform .18s ease;box-shadow:0 1px 2px rgba(0,0,0,.3)}
.mkey[aria-pressed=true] .mkey__sw{background:var(--coral)}
.mkey[aria-pressed=true] .mkey__sw:before{transform:translateX(15px)}
.mapkey__jump small{display:block;font-family:var(--font-d);font-size:.9rem;font-weight:800;text-transform:uppercase;letter-spacing:.14em;color:#fff;margin-bottom:13px}
.mapkey__jump div{display:flex;flex-wrap:wrap;gap:11px}
.jchip{background:rgba(255,255,255,.12);border:1.5px solid rgba(255,255,255,.42);color:#fff;border-radius:999px;padding:13px 24px;font:inherit;font-size:1.02rem;font-weight:700;letter-spacing:.01em;cursor:pointer;transition:background .16s,border-color .16s,color .16s,transform .16s}
.jchip:hover{background:#fff;border-color:#fff;color:var(--sea-2);transform:translateY(-1px)}
.mapkey__foot{margin-top:auto;display:flex;flex-direction:column;gap:12px}
.mapkey__full{display:inline-flex;align-items:center;justify-content:center;gap:9px;background:var(--coral);color:#fff;border:0;border-radius:12px;padding:14px 18px;font-family:var(--font-d);font-weight:800;font-size:.82rem;text-transform:uppercase;letter-spacing:.1em;cursor:pointer;transition:background .18s,transform .18s}
.mapkey__full:hover{background:#f0603f;transform:translateY(-1px)}
.mapkey__full svg{width:17px;height:17px}
.is-full .mapkey__full{display:none}
.mapkey__foot p{font-size:.73rem;line-height:1.5;color:rgba(255,255,255,.55);margin:0}
/* hovering open button, scroll nudge, exit X */
.mapbox__open{position:absolute;left:50%;bottom:20px;transform:translateX(-50%);z-index:920;display:inline-flex;align-items:center;gap:8px;background:rgba(11,20,36,.92);color:#fff;border:1px solid rgba(255,255,255,.35);border-radius:999px;padding:12px 22px;font-family:var(--font-d);font-weight:800;font-size:.76rem;text-transform:uppercase;letter-spacing:.1em;box-shadow:0 10px 30px rgba(0,0,0,.35);cursor:pointer;transition:background .18s,border-color .18s}
.mapbox__open svg{width:16px;height:16px}
.mapbox__open:hover{background:var(--coral);border-color:var(--coral)}
.is-full .mapbox__open{display:none}
.mapbox__nudge{position:absolute;inset:0;z-index:930;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:rgba(11,20,36,.44);backdrop-filter:blur(2px);pointer-events:none;opacity:0;transition:opacity .25s}
.mapbox__nudge.on{opacity:1}
.mapbox__nbtn{pointer-events:none;font-family:var(--font-d);font-weight:800;text-transform:uppercase;letter-spacing:.12em;background:#fff;color:var(--navy);border:0;border-radius:999px;padding:19px 38px;font-size:1.02rem;box-shadow:0 16px 44px rgba(0,0,0,.45);cursor:pointer;transition:background .16s,color .16s,transform .16s}
.mapbox__nudge.on .mapbox__nbtn{pointer-events:auto}
.mapbox__nbtn:hover{background:var(--coral);color:#fff;transform:scale(1.03)}
.mapbox__nudge span{color:#fff;font-size:.86rem;text-shadow:0 1px 8px rgba(0,0,0,.6)}
.mapbox__x{position:absolute;top:18px;right:18px;z-index:1150;width:58px;height:58px;border-radius:50%;background:#fff;color:var(--navy);border:0;box-shadow:0 10px 28px rgba(0,0,0,.45);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .16s,color .16s,transform .16s}
.mapbox__x svg{width:26px;height:26px}
.mapbox__x:hover{background:var(--coral);color:#fff;transform:rotate(90deg)}
.mapbox__x[hidden]{display:none}
.is-full .leaflet-top.leaflet-right{top:88px}
@media(max-width:960px){
  .islandbar__in{padding-top:12px;gap:10px}
  .islandbar__lbl{width:100%;margin-bottom:2px}
  .maptabs{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;flex-wrap:nowrap}
  .maptab{flex:none;padding:9px 15px;font-size:.86rem}
  .mapshell,.mapshell.is-full{grid-template-columns:1fr}
  .mapshell.is-full{display:flex;flex-direction:column}
  .mapkey{max-height:none;padding:16px var(--gutter);gap:12px;border-right:0;border-bottom:1px solid rgba(255,255,255,.08)}
  .is-full .mapkey{height:auto;flex:none;padding-right:76px}
  .is-full .mapbox{flex:1;min-height:0}
  .is-full #map,.is-full .mapbox{height:100%}
  .mapkey__head h2{display:none}
  .mapkey__rows{flex-direction:row;overflow-x:auto;gap:8px;padding-bottom:4px;-webkit-overflow-scrolling:touch}
  .mkey{flex:none;width:auto;border-radius:999px;padding:8px 13px;gap:8px}
  .mkey__t small,.mkey__sw{display:none}
  .mkey .lgp{width:15px;height:20px}
  .mkey__t b{font-size:.8rem;white-space:nowrap}
  .mkey__n{margin-left:2px;padding:2px 7px;font-size:.66rem}
  .mapkey__jump{display:none}
  .mapkey__foot{margin-top:0}
  .mapkey__foot p{display:none}
  .is-full .mapkey__foot{display:none}
  #map{height:70svh}
  .mapbox__x{top:12px;right:12px;width:52px;height:52px}
}

/* markers: themed pins — villa=coral, beach=teal, landmark=navy, thing-to-do=purple.
   Each pin carries a white glyph that says what the place is. */
.mk-wrap{background:none;border:0}
.mk{overflow:visible;transform-origin:50% 100%;transition:transform .16s ease,filter .16s ease;filter:drop-shadow(0 3px 4px rgba(0,0,0,.42))}
.mk__pin{stroke:#fff;stroke-width:2.4;transition:fill .16s ease}
.mk--villa .mk__pin{fill:var(--coral)}
.mk--beach .mk__pin{fill:var(--sea)}
.mk--poi   .mk__pin{fill:var(--navy-3)}
.mk--spot  .mk__pin{fill:var(--spot)}
.mk--food  .mk__pin{fill:var(--food)}
.mk-wrap:hover{z-index:1000}
.mk-wrap:hover .mk{transform:translateY(-4px) scale(1.12);filter:drop-shadow(0 8px 12px rgba(0,0,0,.5))}
.mk-wrap:hover .mk--villa .mk__pin{fill:#f0603f}
.mk-wrap:hover .mk--beach .mk__pin{fill:#16a6cd}
.mk-wrap:hover .mk--poi   .mk__pin{fill:#3a5286}
.mk-wrap:hover .mk--spot  .mk__pin{fill:#9a6bd8}
.mk-wrap:hover .mk--food  .mk__pin{fill:#d1508e}

/* hover preview card (a restyled Leaflet tooltip): rounded photo card with a
   colored category chip riding the image */
.leaflet-tooltip.mtipwrap{background:none;border:0;box-shadow:none;padding:0;white-space:normal;border-radius:0}
.leaflet-tooltip.mtipwrap:before{display:none}
.leaflet-tooltip.mtipwrap:after{content:"";position:absolute;left:50%;bottom:-7px;transform:translateX(-50%);border:8px solid transparent;border-top-color:#fff;border-bottom:0}
.mtip{width:232px;max-width:232px;background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 0 0 1px rgba(11,20,36,.08),0 18px 44px rgba(11,20,36,.4);text-align:left;animation:mtip-in .18s ease both}
@keyframes mtip-in{from{opacity:0;transform:translateY(6px) scale(.97)}to{opacity:1;transform:none}}
.mtip__img{display:block;position:relative}
.mtip__img img{width:100%;height:124px;object-fit:cover;display:block}
.mtip__img:after{content:"";position:absolute;inset:auto 0 0 0;height:46px;background:linear-gradient(transparent,rgba(11,20,36,.55))}
.mtip__k{position:absolute;left:10px;bottom:9px;z-index:1;display:inline-block;font-family:var(--font-d);font-size:.58rem;font-weight:800;text-transform:uppercase;letter-spacing:.13em;color:#fff;padding:4px 10px;border-radius:999px}
.mtip--villa .mtip__k{background:var(--coral)}
.mtip--beach .mtip__k{background:var(--sea)}
.mtip--food  .mtip__k{background:var(--food)}
.mtip--poi   .mtip__k{background:var(--navy-3)}
.mtip--spot  .mtip__k{background:var(--spot)}
.mtip--noimg .mtip__k{position:static;margin-bottom:6px}
.mtip__b{display:block;padding:10px 13px 12px}
.mtip__b b{display:block;font-family:var(--font-d);font-size:1.02rem;line-height:1.18;color:var(--navy)}
.mtip__m{display:block;margin-top:3px;font-size:.76rem;line-height:1.4;color:#54606f}

/* in-map Satellite / Map switch + zoom control */
.baseswitch{display:flex;background:rgba(255,255,255,.94);backdrop-filter:blur(6px);border-radius:999px;padding:4px;box-shadow:0 4px 14px rgba(11,20,36,.28);border:1px solid rgba(255,255,255,.6)}
.baseswitch button{border:0;background:none;font:inherit;font-size:.76rem;font-weight:700;letter-spacing:.02em;color:var(--navy);padding:7px 15px;border-radius:999px;cursor:pointer;line-height:1}
.baseswitch button[aria-pressed=true]{background:var(--navy);color:#fff}
.leaflet-touch .leaflet-bar{border:0;box-shadow:0 4px 14px rgba(11,20,36,.28)}
.leaflet-bar a{background:rgba(255,255,255,.95);color:var(--navy);width:34px;height:34px;line-height:34px;font-size:1.1rem;border-bottom-color:rgba(11,20,36,.12)}
.leaflet-bar a:first-child{border-radius:10px 10px 0 0}
.leaflet-bar a:last-child{border-radius:0 0 10px 10px}
.leaflet-bar a:hover{background:#fff;color:var(--coral)}
.leaflet-control-attribution{background:rgba(255,255,255,.78);font-size:.64rem;color:#4a5568;padding:2px 7px;border-radius:6px 0 0 0}
.leaflet-control-attribution a{color:var(--sea-2)}

/* popups */
.leaflet-popup-content-wrapper{border-radius:12px;box-shadow:0 12px 34px rgba(11,20,36,.28);padding:2px}
.leaflet-popup-content{margin:14px 16px;font-size:.9rem}
.leaflet-popup-tip{box-shadow:0 12px 34px rgba(11,20,36,.28)}
.mp b{display:block;font-family:var(--font-d);font-size:1.08rem;line-height:1.2;color:var(--navy);margin-bottom:2px}
.mp img{width:232px;max-width:100%;height:146px;object-fit:cover;margin:10px 0 8px;border-radius:8px;display:block}
.mp__meta{color:#54606f;font-size:.82rem;line-height:1.45}
.mp__cta{display:inline-block;margin-top:8px;color:var(--coral-2);font-weight:700;text-decoration:none}
.mp__cta:hover{color:var(--navy)}

/* misc */
.tbl{width:100%;border-collapse:collapse;font-size:.95rem}
.tblwrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
@media(max-width:640px){.tbl{font-size:.82rem}.tbl th,.tbl td{padding:8px 6px}}
.tbl th,.tbl td{text-align:left;padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:top}
.tbl th{font-size:.74rem;text-transform:uppercase;letter-spacing:.14em;color:var(--mute)}
.pill{display:inline-block;background:var(--paper-2);border-radius:999px;padding:6px 12px;font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--navy);margin:0 6px 6px 0}
.faq details{border-bottom:1px solid var(--line);padding:16px 0}
.faq summary{cursor:pointer;font-weight:700;font-size:1.05rem;list-style:none;display:flex;justify-content:space-between;gap:12px;color:var(--navy)}
.faq summary::after{content:"+";font-family:var(--font-d);font-size:1.4rem;line-height:1}
.faq details[open] summary::after{content:"\2212"}
.faq details p{margin-top:12px;color:var(--ink-2)}
.notice{background:var(--sand);padding:14px var(--gutter);font-size:.9rem;font-weight:600;color:var(--navy);text-align:center}
.two{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,4vw,72px)}
@media(max-width:900px){.two{grid-template-columns:1fr}}
.listing-desc{white-space:pre-line}

/* -------------------------------------------------- flight route map (ported from The Cerulean) */
:root{
  --on-dark:#fff; --on-dark-soft:rgba(255,255,255,.72); --coral-hi:#ff7a5c;
  --turq:#45d0e0; --serif:var(--font-d); --sans:var(--font-b);
  --ease:cubic-bezier(.2,.7,.2,1);
}
.rmap{position:relative;background:var(--ink);color:var(--on-dark);
  padding:clamp(64px,8vw,150px) var(--gutter);overflow:hidden}
.rmap::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(58% 52% at 80% 84%,rgba(255,111,94,.18),transparent 60%),
    radial-gradient(62% 60% at 26% 16%,rgba(26,126,160,.30),transparent 72%),
    linear-gradient(180deg,#06222b 0%,#08171f 100%)}
.rmap>*{position:relative;z-index:1}

.rmap__head{max-width:940px;margin:0 auto clamp(28px,3vw,44px);text-align:center}
.rmap__no{font-family:var(--sans);font-weight:600;font-size:.74rem;letter-spacing:.26em;
  text-transform:uppercase;color:var(--turq);margin-bottom:14px}
.rmap__head h2{color:var(--paper);font-size:clamp(2rem,4.2vw,3.7rem);line-height:1.02;
  margin:0 auto 16px;max-width:20ch}
.rmap__lead{color:var(--on-dark-soft);max-width:62ch;margin:0 auto;font-size:1.03rem;line-height:1.62}

/* airline logo strip */
.rmap__air{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;
  gap:11px 13px;max-width:1120px;margin:0 auto clamp(30px,3.4vw,50px)}
.rmap__air-k{font-family:var(--sans);font-weight:600;font-size:.68rem;letter-spacing:.2em;
  text-transform:uppercase;color:var(--on-dark-soft);margin-right:6px}
.ral{display:inline-flex;align-items:center;gap:9px;padding:9px 16px 9px 12px;border-radius:999px;
  background:rgba(255,255,255,.95);border:1px solid rgba(255,255,255,.5);
  box-shadow:0 8px 22px rgba(0,0,0,.30);cursor:default;transition:.3s var(--ease)}
.ral:hover,.ral:focus-visible{transform:translateY(-3px);box-shadow:0 14px 32px rgba(0,0,0,.42);outline:none}
.ral__mk{display:inline-flex;width:26px;justify-content:center;align-items:center}
.ral__g{height:22px;width:auto;display:block}
.ral__g--wide{height:14px}
.ral__n{font-family:var(--sans);font-weight:800;font-size:1.02rem;letter-spacing:-.01em;white-space:nowrap}
.ral__b6{color:#0a6aa8}

/* two-column: map + detail rail */
.rmap__grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr);
  gap:clamp(22px,3vw,46px);max-width:1300px;margin:0 auto;align-items:start}

.rmap__stage{position:relative;width:100%}
.rmap__svg{display:block;width:100%;height:auto;overflow:visible}
.rmap__grat line{stroke:rgba(122,196,206,.10);stroke-width:1}
.rmap__land{fill:#103a42;stroke:rgba(122,196,206,.34);stroke-width:1;stroke-linejoin:round;
  filter:drop-shadow(0 16px 30px rgba(3,12,18,.55))}

.rmap__routes{fill:none}
.rt{fill:none;stroke-linecap:round;transition:opacity .3s var(--ease)}
.rt--us{stroke:var(--coral)}
.rt--isl{stroke:var(--turq)}
.rt--year{stroke-width:2.6}
.rt--seas{stroke-width:2.4;stroke-dasharray:2 9}
.rt-glow{fill:none;stroke-width:8;opacity:.16;filter:blur(4px);stroke-linecap:round;
  transition:opacity .3s var(--ease)}
.rt-glow.rt--us{stroke:var(--coral)}
.rt-glow.rt--isl{stroke:var(--turq)}
.rt-fly{fill:#fff;filter:drop-shadow(0 0 5px var(--coral));transition:opacity .3s var(--ease)}
html.m-calm .rmap__flights{display:none}

.rn-isl{fill:var(--turq);stroke:#08171f;stroke-width:1.6;transition:opacity .3s var(--ease)}
.rn-lbl{fill:rgba(244,241,232,.92);font-family:var(--sans);font-weight:600;font-size:19px;
  letter-spacing:.01em;paint-order:stroke;stroke:#08171f;stroke-width:3.4px;stroke-linejoin:round}
.rmap__halo{fill:rgba(255,111,94,.16)}

/* pins (crisp HTML over the svg) */
.rmap__pins{position:absolute;inset:0;z-index:4}
.rpin{position:absolute;transform:translate(-50%,-50%);display:flex;align-items:center;gap:9px;
  white-space:nowrap;transition:opacity .3s var(--ease);cursor:default}
.rpin__dot{position:relative;width:13px;height:13px;border-radius:50%;flex:none;background:var(--coral);
  box-shadow:0 0 0 4px rgba(255,111,94,.22),0 2px 8px rgba(0,0,0,.5)}
.rpin__dot--seas{background:#ffbf7a;box-shadow:0 0 0 4px rgba(255,191,122,.22),0 2px 8px rgba(0,0,0,.5)}
.rpin__lbl{display:flex;flex-direction:column;line-height:1.06;font-family:var(--sans);font-weight:700;
  font-size:.82rem;letter-spacing:.01em;color:var(--on-dark);text-shadow:0 1px 10px rgba(4,14,20,.92)}
.rpin__lbl b{font-weight:600;font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--turq);opacity:.92;margin-top:2px}
.rpin--left{flex-direction:row-reverse}
.rpin--left .rpin__lbl{text-align:right;align-items:flex-end}
.rpin--right .rpin__lbl{align-items:flex-start}
.rpin--top{flex-direction:column-reverse;gap:6px}
.rpin--top .rpin__lbl{text-align:center;align-items:center}
.rpin:hover,.rpin:focus-within{z-index:12;outline:none}
.rpin:hover .rpin__dot,.rpin:focus-within .rpin__dot{transform:scale(1.22)}
/* the hub */
.rpin--home .rpin__dot--home{width:21px;height:21px;background:var(--coral);
  box-shadow:0 0 0 6px rgba(255,111,94,.26),0 0 26px rgba(255,111,94,.7)}
.rpin--home .rpin__dot--home::after{content:"";position:absolute;inset:-11px;border-radius:50%;
  border:1.6px solid rgba(255,139,124,.72);animation:rpulse 2.8s var(--ease) infinite}
html.m-calm .rpin--home .rpin__dot--home::after{animation:none}
@keyframes rpulse{0%{transform:scale(.7);opacity:.9}70%{transform:scale(1.65);opacity:0}100%{opacity:0}}
.rpin__lbl--home{font-size:1.02rem}
.rpin__lbl--home b{color:var(--coral-hi);opacity:1}

/* pin popovers */
.rpin__pop{position:absolute;left:50%;transform:translateX(-50%) translateY(6px);width:236px;
  background:rgba(8,28,33,.97);border:1px solid rgba(122,196,206,.28);border-radius:13px;
  padding:13px 14px;box-shadow:0 22px 48px rgba(0,0,0,.55);opacity:0;visibility:hidden;
  pointer-events:none;transition:.24s var(--ease);z-index:15}
.rpin--down .rpin__pop{top:calc(100% + 12px)}
.rpin--up .rpin__pop{bottom:calc(100% + 12px);transform:translateX(-50%) translateY(-6px)}
.rpin:hover .rpin__pop,.rpin:focus-within .rpin__pop{opacity:1;visibility:visible;
  transform:translateX(-50%) translateY(0)}
.rpop__row+.rpop__row{margin-top:11px;padding-top:11px;border-top:1px solid rgba(122,196,206,.18)}
.rpop__city{font-family:var(--sans);font-weight:800;font-size:.94rem;color:var(--paper);
  display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rpop__city b{font-weight:600;font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--turq)}
.rpop__year,.rpop__seas{font-family:var(--sans);font-weight:700;font-size:.56rem;letter-spacing:.08em;
  text-transform:uppercase;padding:2px 7px;border-radius:999px}
.rpop__year{background:rgba(58,210,224,.16);color:var(--turq)}
.rpop__seas{background:rgba(255,178,120,.2);color:#ffc38f}
.rpop__air-wrap{display:flex;flex-wrap:wrap;gap:7px 12px;margin:9px 0 6px}
.rpop__air{display:inline-flex;align-items:center;gap:6px;font-family:var(--sans);font-weight:700;font-size:.84rem;color:var(--paper)}
.rpop__g{display:inline-flex;width:20px;justify-content:center}
.rpop__g svg{height:15px;width:auto}
.rpop__meta{font-size:.78rem;color:var(--on-dark-soft)}

/* legend */
.rmap__legend{display:flex;flex-wrap:wrap;gap:10px 22px;justify-content:center;margin-top:22px;
  font-family:var(--sans);font-size:.76rem;color:var(--on-dark-soft)}
.rlg{display:inline-flex;align-items:center;gap:9px}
.rlg__l{width:28px;height:3px;border-radius:2px;display:inline-block}
.rlg__l--year{background:var(--on-dark-soft)}
.rlg__l--seas{background:repeating-linear-gradient(90deg,var(--on-dark-soft) 0 3px,transparent 3px 9px)}
.rlg__sw{width:13px;height:13px;border-radius:50%;display:inline-block}
.rlg__sw--us{background:var(--coral)}
.rlg__sw--isl{background:var(--turq)}

/* detail rail */
.rmap__side{display:flex;flex-direction:column;gap:clamp(16px,2vw,22px)}
.rside__card{background:rgba(9,32,37,.72);border:1px solid rgba(122,196,206,.2);border-radius:18px;
  padding:clamp(18px,2vw,26px)}
.rside__k{font-family:var(--sans);font-weight:600;font-size:.66rem;letter-spacing:.2em;
  text-transform:uppercase;color:var(--turq);margin-bottom:8px}
.rside__card h3{font-family:var(--serif);font-weight:600;color:var(--paper);
  font-size:clamp(1.3rem,1.8vw,1.7rem);line-height:1.04;margin:0 0 14px}
.rhops__list{list-style:none;margin:0;padding:0}
.rhop{display:flex;align-items:center;gap:12px;padding:12px 6px;border-radius:10px;transition:.25s var(--ease)}
.rhop+.rhop{border-top:1px solid rgba(122,196,206,.14)}
.rhop:hover,.rhop:focus-within{background:rgba(122,196,206,.08)}
.rhop__gs{display:inline-flex;gap:6px;flex:none;width:92px;justify-content:flex-start;align-items:center;overflow:hidden}
.rhop__g{display:inline-flex;flex:none}
.rhop__g svg{height:16px;width:auto;display:block}
.rhop__body{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.rhop__city{font-family:var(--sans);font-weight:800;color:var(--paper);font-size:.98rem;
  display:flex;align-items:center;gap:7px}
.rhop__city b{font-weight:600;font-size:.58rem;letter-spacing:.12em;color:var(--turq)}
.rhop__meta{font-size:.8rem;color:var(--on-dark-soft)}
.rhop__badge{flex:none;font-family:var(--sans);font-weight:700;font-size:.56rem;letter-spacing:.06em;
  text-transform:uppercase;padding:3px 8px;border-radius:999px;background:rgba(58,210,224,.14);color:var(--turq)}
.rhop__badge--seas{background:rgba(255,178,120,.18);color:#ffc38f}
.rhops__note{font-size:.82rem;color:var(--on-dark-soft);margin:14px 0 0;line-height:1.55}

.rseas__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.rseas__list li{position:relative;padding-left:18px;font-size:.9rem;line-height:1.5;color:var(--on-dark-soft)}
.rseas__list li::before{content:"";position:absolute;left:0;top:.5em;width:7px;height:7px;
  border-radius:50%;background:var(--coral)}
.rseas__list b{color:var(--paper);font-weight:700}
.rseas__list em{font-style:normal;color:var(--turq);font-weight:700}
.rseas__cta{display:inline-flex;align-items:center;gap:8px;margin-top:16px;font-family:var(--sans);
  font-weight:700;color:var(--turq);text-decoration:none;font-size:.94rem}
.rseas__cta .arr{transition:transform .25s var(--ease)}
.rseas__cta:hover .arr{transform:translateX(4px)}

.rmap__foot{max-width:920px;margin:clamp(26px,3vw,42px) auto 0;text-align:center;font-size:.75rem;
  color:var(--on-dark-soft);opacity:.72;line-height:1.6}

@media(max-width:960px){
  .rmap__grid{grid-template-columns:1fr}
  .rmap__side{flex-direction:row;flex-wrap:wrap}
  .rside__card{flex:1 1 320px}
}
@media(max-width:640px){
  .rmap__side{flex-direction:column}
  .rpin__lbl{font-size:.66rem}
  .rpin__lbl b{font-size:.52rem}
  .rpin__dot{width:11px;height:11px}
  .rpin--home .rpin__dot--home{width:17px;height:17px}
  .rn-lbl{font-size:30px}
  .ral__n{font-size:.92rem}
  .rpin__pop{width:210px}
  .rmap__air-k{flex-basis:100%;text-align:center;margin:0 0 4px}
}

/* ============================================================ v11 additions
   New home sections, villa finder, villa-page gallery + highlights, grouped
   amenities, comparison table, performance helpers. Same palette, same laws:
   full-bleed, near-zero gutters, heavy display type, no italics, no gold. */


/* hero trust strip (replaces the numeric stat grid) */
.hero__trust{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 28px;margin-top:6px}
.hero__trust div,.hero__trust>a{border-left:2px solid rgba(255,255,255,.55);padding-left:14px}
.hero__trustlink{display:block;color:inherit;text-decoration:none;transition:border-color .2s,transform .2s}
.hero__trustlink b{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:rgba(255,255,255,.35)}
.hero__trustlink:hover{border-left-color:#fff}
.hero__trustlink:hover b{text-decoration-color:#fff}
.hero__trust b{display:block;font-family:var(--font-d);font-weight:800;font-size:clamp(1rem,1.25vw,1.2rem);line-height:1.15;letter-spacing:-.01em}
.hero__trust span{display:block;font-size:.8rem;color:rgba(255,255,255,.82);font-weight:500;margin-top:3px}
@media(max-width:480px){.hero__trust{grid-template-columns:1fr}}

/* statement band: one big line + fact rows */
.intro{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:clamp(28px,5vw,96px);padding:clamp(56px,7vw,120px) var(--gutter);align-items:start}
.intro h2{font-size:clamp(2rem,3.9vw,3.8rem);letter-spacing:-.025em;margin:0 0 .5em;text-wrap:balance}
.intro__lede{font-size:clamp(1.05rem,1.35vw,1.3rem);color:var(--ink-2);max-width:56ch;font-weight:500}
.intro__cols{display:grid;grid-template-columns:1fr;gap:0}
.intro__cols div{padding:20px 0;border-top:1px solid var(--line);display:grid;grid-template-columns:150px 1fr;gap:18px;align-items:start}
.intro__cols div:last-child{border-bottom:1px solid var(--line)}
.intro__cols h3{margin:0;font-size:.74rem;text-transform:uppercase;letter-spacing:.2em;font-weight:800;color:var(--sea-2);padding-top:4px}
.intro__cols p{margin:0;color:var(--ink-2);font-size:1rem;line-height:1.6}
@media(max-width:900px){.intro{grid-template-columns:1fr}.intro__cols div{grid-template-columns:1fr;gap:6px}}

/* featured homes: image with caption block beneath (editorial, not overlay) */
.feat{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px;padding-inline:3px}
@media(max-width:900px){.feat{grid-template-columns:1fr}}
.ft{display:block;color:var(--ink);background:var(--paper)}
.ft__img{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--navy-2)}
.ft__img img{width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.ft:hover .ft__img img{transform:scale(1.04)}
.ft__img .vt__tag{top:14px;left:14px}
.ft__body{padding:22px clamp(16px,1.6vw,26px) 30px}
.ft__body h3{margin:0 0 8px;font-size:clamp(1.3rem,1.7vw,1.7rem);letter-spacing:-.015em}
.ft__body p{margin:0 0 12px;color:var(--ink-2);font-size:.98rem;line-height:1.55}
.ft__meta{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.74rem;text-transform:uppercase;letter-spacing:.14em;font-weight:700;color:var(--mute)}
.ft__meta b{color:var(--navy)}
.ft__cta{display:inline-block;margin-top:14px;font-weight:800;color:var(--sea-2);font-size:.9rem}
.ft:hover .ft__cta{color:var(--navy)}
.sec--paper2 .ft{background:var(--paper-2)}

/* why St. Croix: two photos + a facts grid */
.why{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:80svh}
.why__media{position:relative;display:grid;grid-template-rows:1fr 1fr;gap:3px;min-height:60svh}
.why__media img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}
.why__media>div{position:relative;overflow:hidden;background:var(--navy-2)}
.why__body{padding:clamp(40px,5vw,96px) clamp(24px,4.5vw,88px);display:flex;flex-direction:column;justify-content:center}
.why__body h2{max-width:14ch}
.why__body>p{font-size:1.06rem;color:var(--ink-2);max-width:56ch}
.factgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px;background:var(--line);margin-top:28px}
.factgrid div{background:var(--paper);padding:20px 18px}
.factgrid b{display:block;font-family:var(--font-d);font-weight:900;font-size:clamp(1.5rem,2.2vw,2.1rem);line-height:1;letter-spacing:-.02em;color:var(--navy);margin-bottom:6px}
.factgrid span{font-size:.86rem;color:var(--mute);line-height:1.45;display:block}
.sec--dark .factgrid{background:rgba(255,255,255,.14)}
.sec--dark .factgrid div{background:var(--navy)}
.sec--dark .factgrid b{color:#fff}
.sec--dark .factgrid span{color:rgba(255,255,255,.72)}
@media(max-width:900px){.why{grid-template-columns:1fr}.why__media{grid-template-rows:1fr;grid-template-columns:1fr 1fr;min-height:36svh}}
@media(max-width:520px){.factgrid{grid-template-columns:1fr}}

/* experiences strip (home): tall tiles in a horizontal band */
.xstrip{display:flex;gap:3px;overflow-x:auto;scroll-snap-type:x mandatory;padding-inline:3px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.xstrip::-webkit-scrollbar{display:none}
.xstrip .gt{flex:0 0 clamp(240px,23vw,360px);aspect-ratio:3/4;scroll-snap-align:start}
.xstrip .gt__t h3{font-size:1.25rem}
.strip-nav{display:flex;gap:8px;justify-content:flex-end;padding:0 var(--gutter) 14px}
.strip-nav button{width:44px;height:44px;border-radius:50%;border:1.5px solid var(--line);background:#fff;color:var(--navy);font-size:1.2rem;cursor:pointer;transition:.2s}
.strip-nav button:hover{background:var(--navy);color:#fff;border-color:var(--navy)}
.sec--dark .strip-nav button{background:transparent;color:#fff;border-color:rgba(255,255,255,.4)}
.sec--dark .strip-nav button:hover{background:#fff;color:var(--navy)}

/* villa finder (villas hub): chip filters + sort + live count */
.finder{background:#fff;border-bottom:1px solid var(--line);padding:14px var(--gutter);display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center}
.finder__grp{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.finder__k{font-size:.68rem;text-transform:uppercase;letter-spacing:.18em;font-weight:800;color:var(--mute);margin-right:4px}
.chip{appearance:none;border:1.5px solid var(--line);background:#fff;color:var(--navy);border-radius:999px;padding:9px 15px;font:inherit;font-size:.82rem;font-weight:700;cursor:pointer;line-height:1;transition:.18s;min-height:38px}
.chip:hover{border-color:var(--navy)}
.chip[aria-pressed=true]{background:var(--navy);color:#fff;border-color:var(--navy)}
.finder select{font:inherit;font-size:.82rem;font-weight:700;color:var(--navy);border:1.5px solid var(--line);border-radius:999px;padding:9px 34px 9px 15px;background:#fff;appearance:auto;min-height:38px;cursor:pointer}
.finder__count{margin-left:auto;font-size:.82rem;font-weight:700;color:var(--mute)}
.finder__reset{background:none;border:0;color:var(--sea-2);font:inherit;font-weight:700;font-size:.82rem;cursor:pointer;text-decoration:underline;text-underline-offset:3px;padding:0}
.vgrid--fx{display:flex;flex-wrap:wrap;gap:3px;padding-inline:3px}
.vgrid--fx .vt{flex:1 1 clamp(280px,31%,640px);min-width:0;aspect-ratio:4/3}
.vgrid--fx .vt[hidden]{display:none}
.finder-empty{padding:40px var(--gutter);color:var(--mute);font-weight:600;display:none}
.finder-empty.show{display:block}

/* comparison table (all homes at a glance) */
.cmp .tbl td:first-child a{font-weight:800;color:var(--navy);text-decoration:none}
.cmp .tbl td:first-child a:hover{color:var(--sea-2)}
.cmp .tbl td,.cmp .tbl th{white-space:nowrap}
.cmp .yes{color:var(--sea-2);font-weight:800}
.cmp .no{color:var(--mute)}
.cmp .tbl tbody tr:hover td{background:var(--paper-2)}

/* villa page: highlights + gallery header + grouped amenities */
.hl{display:flex;flex-wrap:wrap;gap:8px;padding:18px var(--gutter);border-bottom:1px solid var(--line)}
.hl span{display:inline-flex;align-items:center;gap:8px;border:1.5px solid var(--line);border-radius:999px;padding:8px 14px;font-size:.8rem;font-weight:700;color:var(--navy);line-height:1}
.hl span::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--sea);flex:none}
.gal5{display:grid;grid-template-columns:2fr 1fr 1fr;grid-template-rows:1fr 1fr;gap:3px;padding-inline:3px;height:clamp(360px,56vw,720px);position:relative}
.gal5 a[data-lb]{position:relative;overflow:hidden;display:block;background:var(--navy-2)}
.gal5 a[data-lb]:first-child{grid-row:span 2}
.gal5 img{width:100%;height:100%;object-fit:cover;transition:transform .8s}
.gal5 a[data-lb]:hover img{transform:scale(1.04)}
.gal5__all{position:absolute;right:calc(3px + 16px);bottom:16px;background:#fff;color:var(--navy);font-family:var(--font-d);font-weight:800;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;padding:12px 18px;border-radius:999px;box-shadow:0 8px 24px rgba(11,20,36,.25);border:0;cursor:pointer;line-height:1}
.gal5__all:hover{background:var(--navy);color:#fff}
@media(max-width:900px){.gal5{grid-template-columns:1fr 1fr;grid-template-rows:auto auto;height:auto}.gal5 a[data-lb]{aspect-ratio:4/3}.gal5 a[data-lb]:first-child{grid-column:span 2;grid-row:auto;aspect-ratio:16/10}.gal5 a[data-lb]:nth-child(n+4){display:none}}
.amen-groups{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(20px,3vw,48px)}
@media(max-width:1000px){.amen-groups{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.amen-groups{grid-template-columns:1fr}}
.amen-groups h3{font-size:.74rem;text-transform:uppercase;letter-spacing:.2em;font-weight:800;color:var(--sea-2);margin:0 0 10px;padding-bottom:10px;border-bottom:2px solid var(--navy)}
.amen-groups ul{list-style:none;margin:0;padding:0}
.amen-groups li{padding:8px 0;border-bottom:1px solid var(--line);font-size:.95rem}
.rail__facts{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:var(--line);margin:0 0 4px}
.rail__facts div{background:#fff;padding:14px 12px;text-align:center}
.rail__facts b{display:block;font-family:var(--font-d);font-size:1.5rem;font-weight:900;color:var(--navy);line-height:1}
.rail__facts span{font-size:.64rem;text-transform:uppercase;letter-spacing:.14em;font-weight:700;color:var(--mute)}
.rail__box--dark .rail__facts{background:rgba(255,255,255,.14)}
.rail__box--dark .rail__facts div{background:var(--navy-2)}
.rail__box--dark .rail__facts b{color:#fff}
.rail__box--dark .rail__facts span{color:rgba(255,255,255,.7)}
.rail__box .stars{margin-bottom:6px}
.rail__list{list-style:none;margin:0;padding:0}
.rail__list li{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:.92rem}
.rail__list li:last-child{border-bottom:0}
.rail__list li span{color:var(--mute);font-size:.82rem;white-space:nowrap}
.rail__box--dark .rail__list li{border-color:rgba(255,255,255,.14)}
.rail__box--dark .rail__list li span{color:rgba(255,255,255,.65)}

/* guide page essentials rail card */
.ess{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.ess li{display:grid;grid-template-columns:96px 1fr;gap:10px;font-size:.9rem}
.ess li b{font-size:.68rem;text-transform:uppercase;letter-spacing:.16em;color:var(--sea);padding-top:3px}

/* section head variants */
.sec-head--stack{grid-template-columns:1fr;align-items:start}
.sec-head .btn-row{margin-top:8px}

/* photo band (full-bleed image with a caption chip) */
.band{position:relative;min-height:56svh;overflow:hidden;background:var(--navy-2)}
.band img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.band__cap{position:absolute;left:var(--gutter);bottom:20px;background:rgba(11,20,36,.72);color:#fff;font-size:.78rem;font-weight:600;padding:8px 12px;border-radius:4px;backdrop-filter:blur(6px)}

/* ---- Cavmir credit band (portfolio standard: real wordmark, never retyped) ---- */
.foot__barR{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:12px 20px}
.cavcred{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;opacity:.75;transition:opacity .3s ease}
.cavcred:hover{opacity:1}
.cavcred__k{font-family:var(--font-d);font-weight:700;font-size:.52rem;letter-spacing:.16em;text-transform:uppercase;color:var(--sea-soft)}
.cavcred__mk{width:58px;height:auto;display:block}
/* Cavmir credit centered in the footer bar — enlarged so it reads at a glance */
.foot__bar>.cavcred{justify-self:center;flex-direction:column;gap:6px;opacity:.95}
.foot__bar>.cavcred .cavcred__k{font-size:.43rem;letter-spacing:.22em}
.foot__bar>.cavcred .cavcred__mk{width:98px}
/* Real-estate page closing call-to-action band */
.re-cta{text-align:center;max-width:680px;margin-inline:auto;padding-block:clamp(46px,6vw,78px)}
.re-cta h2{font-size:clamp(1.6rem,2.6vw,2.4rem);line-height:1.2;font-weight:700;margin:.18em 0 .4em}
.re-cta p{margin:0 auto 22px;max-width:600px;color:rgba(255,255,255,.85)}
.re-cta .btn-row{justify-content:center;flex-wrap:wrap}
.re-office{font-size:.86rem;color:var(--mute);margin-top:6px}
.svc li{display:grid;grid-template-columns:180px 1fr;gap:14px;align-items:start;padding:12px 0;border-bottom:1px solid var(--line)}
.svc li b{color:var(--navy)}
.svc li span{white-space:normal;font-size:.92rem;color:var(--ink-2)}
.svc li span a{color:var(--sea-2)}
@media(max-width:560px){.svc li{grid-template-columns:1fr;gap:4px}}

/* ---- St. Croix reference: glance table, open FAQ, print cover ---- */
.tbl--glance th[scope=row]{font-size:.95rem;text-transform:none;letter-spacing:0;color:var(--navy);font-weight:700;width:40%;white-space:normal}
.tbl--glance td{color:var(--ink-2)}
@media(max-width:560px){.tbl--glance th[scope=row]{width:auto}}
.faq__item{border-bottom:1px solid var(--line);padding:16px 0}
.faq__item h3{margin:0 0 .35em;font-size:1.08rem;color:var(--navy)}
.faq__item p{margin:0;color:var(--ink-2)}
.rpt-cover{display:none}
/* ---- print / PDF (rendered by tools/build_report_pdf.py) ---- */
@media print{
  .skip,.hdr,.foot,.overlay,.cav-consent,.lb,.rail,.phero,.sec,.btn-row,.prose .fig,.prose .figrow{display:none!important}
  html,body{background:#fff!important;color:#141414;font-size:11pt}
  main{display:block}
  .article{display:block!important;grid-template-columns:1fr!important;max-width:none;margin:0;padding:0}
  .prose{max-width:none;width:auto;margin:0;padding:0}
  .prose a{color:#141414;text-decoration:none}
  .prose h2{page-break-after:avoid;break-after:avoid;margin-top:1.5em;font-size:1.5rem;color:#0b1424;border-top:2px solid #0e7c9b;padding-top:.45em}
  .prose h3{page-break-after:avoid;color:#0b1424}
  .tblwrap,table,tr,.faq__item,li{page-break-inside:avoid}
  .tbl{font-size:9.5pt}
  .tbl th{color:#4a5568}
  .faq__item h3,.tbl--glance th[scope=row]{color:#0b1424}
  .rpt-cover{display:flex;flex-direction:column;justify-content:center;min-height:90vh;text-align:center;page-break-after:always;padding:0 8%}
  .rpt-cover__mk{width:110px;height:auto;margin:0 auto 26px}
  .rpt-cover__brand{font-weight:800;letter-spacing:.02em;color:#0b1424;font-size:1.05rem}
  .rpt-cover__brand span{color:#6b7688;font-weight:600}
  .rpt-cover__title{font-size:3.6rem;margin:.35em 0 .12em;color:#0b1424;line-height:1}
  .rpt-cover__sub{font-size:1.15rem;color:#0e7c9b;margin:0 0 1.5em;font-weight:600}
  .rpt-cover__meta{max-width:34em;margin:0 auto;color:#333;font-size:1rem;line-height:1.65}
  .rpt-cover__foot{margin-top:2.6em;color:#6b7688;font-size:.85rem;max-width:30em;margin-left:auto;margin-right:auto}
  @page{margin:16mm 14mm}
}

/* ---- St. Croix reference: top download bar ---- */
.rpt-dl{display:flex;align-items:center;justify-content:space-between;gap:20px 28px;flex-wrap:wrap;
  padding:20px 24px;border:1px solid var(--line);border-radius:14px;background:var(--paper-2)}
.rpt-dl__t{display:flex;flex-direction:column;gap:3px}
.rpt-dl__t b{font-size:1.15rem;color:var(--navy);font-family:var(--font-d)}
.rpt-dl__t span{color:var(--ink-2);font-size:.95rem}
.rpt-dl .btn{flex:0 0 auto}
@media(max-width:560px){.rpt-dl{padding:16px 18px}.rpt-dl .btn{width:100%}}

/* ============================================================ v15 Motion Kit
   Lib-free premium motion layer (motion-first boot; Calm = explicit toggle).
   Hollywood logo intro, hero entrance, Ken Burns settle, staggered tile
   reveals, count-up stats, magnetic buttons, scroll progress, word band,
   menu upgrades. Zero new libraries, zero new network requests. */

/* cross-page fade (browsers with MPA view transitions; others ignore it) */
@view-transition{navigation:auto}
::view-transition-old(root),::view-transition-new(root){animation-duration:.28s}

/* ---- logo intro veil (homepage, once per session; boot sets html.show-intro).
   The exit is a CSS animation ending in visibility:hidden, so even with no JS
   the veil always lifts. Click skips (handled in app.js). */
.iv{display:none}
html.show-intro .iv{display:flex;position:fixed;inset:0;z-index:1300;align-items:center;justify-content:center;cursor:pointer;
  background:radial-gradient(120% 120% at 50% 38%,#142338 0%,#0b1424 55%,#070d18 100%);
  animation:ivout .9s cubic-bezier(.65,0,.35,1) 3s forwards}
html.show-intro .iv.iv--skip{animation:ivout .32s ease forwards}
@keyframes ivout{to{opacity:0;visibility:hidden}}
html.show-intro .iv::after{content:"";position:absolute;inset:-20%;pointer-events:none;
  background:linear-gradient(105deg,transparent 44%,rgba(143,211,230,.09) 50%,transparent 56%);
  transform:translateX(-75%);animation:ivsweep 1.5s cubic-bezier(.4,0,.2,1) 1.35s forwards}
@keyframes ivsweep{to{transform:translateX(75%)}}
.iv__inner{text-align:center;padding:0 var(--gutter);animation:ivzoom 3.9s cubic-bezier(.22,1,.36,1) both}
@keyframes ivzoom{from{transform:scale(.965)}to{transform:scale(1.03)}}
.iv__mark{width:clamp(120px,13vw,170px);height:auto;margin:0 auto 24px;opacity:0;
  filter:drop-shadow(0 0 26px rgba(143,211,230,.4));
  animation:ivmark 1.1s cubic-bezier(.22,1,.36,1) .15s forwards}
@keyframes ivmark{from{opacity:0;transform:translateY(16px) scale(.88)}to{opacity:1;transform:none}}
.iv__word{display:flex;justify-content:center;font-family:var(--font-d);font-weight:900;font-stretch:112%;
  font-size:clamp(2.1rem,7vw,5.2rem);letter-spacing:.08em;line-height:1;color:#fff}
.iv__word span{display:inline-block;opacity:0;transform:translateY(.55em);
  animation:ivl .7s cubic-bezier(.22,1,.36,1) forwards}
.iv__word .iv__sp{width:.34em}
@keyframes ivl{to{opacity:1;transform:none}}
.iv__word span:nth-child(1){animation-delay:.4s}
.iv__word span:nth-child(2){animation-delay:.46s}
.iv__word span:nth-child(3){animation-delay:.52s}
.iv__word span:nth-child(4){animation-delay:.58s}
.iv__word span:nth-child(5){animation-delay:.64s}
.iv__word span:nth-child(6){animation-delay:.7s}
.iv__word span:nth-child(7){animation-delay:.76s}
.iv__word span:nth-child(8){animation-delay:.82s}
.iv__word span:nth-child(9){animation-delay:.88s}
.iv__word span:nth-child(10){animation-delay:.94s}
.iv__word span:nth-child(11){animation-delay:1s}
.iv__word span:nth-child(12){animation-delay:1.06s}
.iv__line{width:0;height:1px;margin:22px auto 0;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.8),transparent);
  animation:ivline 1.05s cubic-bezier(.65,0,.35,1) 1.3s forwards}
@keyframes ivline{to{width:min(340px,62vw)}}
.iv__sub{margin-top:16px;font-family:var(--font-d);font-weight:700;font-size:.74rem;
  letter-spacing:.34em;text-transform:uppercase;color:var(--sea-soft);opacity:0;
  animation:ivsub .8s ease 1.6s forwards}
@keyframes ivsub{to{opacity:.95}}
/* keep the consent banner out of the intro; app.js lifts show-intro when the veil ends */
html.show-intro .cav-consent{display:none!important}

/* ---- hero + page-hero load entrance (m-full only; after the intro on home) */
@keyframes hrise{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:none}}
html.m-full .hero .eyebrow,html.m-full .hero h1,html.m-full .hero__lede,
html.m-full .hero .btn-row,html.m-full .hero__trust,html.m-full .hero__stats,
html.m-full .hero .hsearch,html.m-full .hero__quick,html.m-full .hero__band,
html.m-full .phero .eyebrow,html.m-full .phero h1,html.m-full .phero__lede{
  animation:hrise .95s cubic-bezier(.22,1,.36,1) both}
html.m-full .hero .eyebrow{animation-delay:calc(var(--hd,0s) + .12s)}
html.m-full .hero h1{animation-delay:calc(var(--hd,0s) + .24s)}
html.m-full .hero__lede{animation-delay:calc(var(--hd,0s) + .38s)}
html.m-full .hero .hsearch{animation-delay:calc(var(--hd,0s) + .4s)}
html.m-full .hero .btn-row{animation-delay:calc(var(--hd,0s) + .5s)}
html.m-full .hero__quick{animation-delay:calc(var(--hd,0s) + .56s)}
html.m-full .hero__trust,html.m-full .hero__stats,html.m-full .hero__band{animation-delay:calc(var(--hd,0s) + .68s)}
html.m-full .hero__band .hero__trust{animation:none}
html.show-intro .hero{--hd:2.35s}
html.m-full .phero .eyebrow{animation-delay:.1s}
html.m-full .phero h1{animation-delay:.2s}
html.m-full .phero__lede{animation-delay:.32s}
/* slow Ken Burns settle on the hero POSTER STILL only. Never on the <video>:
   an animated (or scroll-driven) scale on a live-decoding video resamples every
   decoded frame at a fractional scale = visible subpixel SHAKE (Chrome). The video
   is already moving footage, so it needs no Ken Burns. */
html.m-full .hero__media img{
  animation:kb 16s cubic-bezier(.22,1,.36,1) both}
@keyframes kb{from{transform:scale(1.09)}to{transform:scale(1)}}
/* belt-and-suspenders: the hero video stays perfectly still, whatever else runs */
.hero__media video{transform:none!important;animation:none!important}

/* ---- staggered tile reveals (app.js assigns .sg + --i; hidden only in Full) */
html.m-full .sg{opacity:0;transform:translateY(20px);
  transition:opacity .7s cubic-bezier(.2,.7,.2,1) calc(var(--i,0)*.07s),
             transform .7s cubic-bezier(.2,.7,.2,1) calc(var(--i,0)*.07s)}
html.m-full .sg.sg-in{opacity:1;transform:none}

/* ---- scroll progress bar */
.pbar{position:fixed;top:0;left:0;right:0;height:3px;z-index:940;pointer-events:none}
.pbar span{display:block;height:100%;transform:scaleX(0);transform-origin:0 50%;
  background:linear-gradient(90deg,var(--sea),var(--sea-soft));will-change:transform}
html:not(.m-full) .pbar{display:none}

/* ---- mega word band (home): soft tone-on-tone place name drifting with scroll */
.wband{overflow:hidden;margin-top:clamp(-26px,-2vw,-13px);padding:clamp(14px,3vw,52px) 0 clamp(4px,.8vw,16px);pointer-events:none;user-select:none}
.wband__t{display:inline-block;white-space:nowrap;font-family:var(--font-d);font-weight:900;font-stretch:112%;
  line-height:.86;font-size:clamp(3rem,10vw,9rem);letter-spacing:-.03em;
  color:var(--navy);padding-left:max(4vw,18px);will-change:transform}

/* ---- overlay menu v15: numbered groups, underline grow, feature crossfade */
.ov2__no{display:block;font-family:var(--font-d);font-weight:800;font-size:.66rem;
  letter-spacing:.28em;margin-bottom:8px;
  background:linear-gradient(90deg,var(--sea-soft) 0%,var(--coral) 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent}
.ov2__head{position:relative;padding-bottom:4px}
.ov2__head::after{content:"";position:absolute;left:0;bottom:-2px;height:3px;width:100%;border-radius:3px;
  background:linear-gradient(90deg,var(--sea-soft) 0%,#37b6cf 46%,var(--coral) 100%);
  transform:scaleX(0);transform-origin:0 50%;
  transition:transform .45s cubic-bezier(.22,1,.36,1)}
.ov2__grp:hover .ov2__head::after,.ov2__head:focus-visible::after{transform:scaleX(1)}
.ov2__links a{transition:color .25s,padding-left .3s cubic-bezier(.22,1,.36,1)}
.ov2__links a:hover{padding-left:4px}
.ov2__feature-b{position:absolute;inset:0;background-size:cover;background-position:center;
  opacity:0;transition:opacity .5s ease;z-index:1}
.ov2__feature-b.show{opacity:1}
.ov2__feature::after{z-index:2}
.ov2__feature-body{z-index:3}

/* ---- motion toggle (menu foot + footer bar) */
.mtog{appearance:none;background:transparent;border:1px solid rgba(255,255,255,.32);border-radius:999px;
  color:inherit;font-family:var(--font-d);font-weight:700;font-size:.72rem;letter-spacing:.12em;
  text-transform:uppercase;padding:6px 14px;cursor:pointer;line-height:1.2;transition:border-color .25s,color .25s}
.mtog:hover{border-color:#fff;color:#fff}


/* ---- v16: home search hero (booking-engine bar) --------------------------- */
.hero--search{display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;background:#0b1424}
.hero--search .hero__scrim{background:linear-gradient(180deg,rgba(11,20,36,.44) 0%,rgba(11,20,36,.10) 40%,rgba(11,20,36,.30) 100%)}
/* gentle fade-in of the opening ocean frame (Full motion only, so Calm/reduced keeps instant paint) */
@keyframes heroFade{from{opacity:0}to{opacity:1}}
html.m-full .hero--search .hero__media{animation:heroFade 1s ease both}
.hero__core{width:100%;margin:auto 0;display:flex;flex-direction:column;align-items:center;text-align:center;
  padding:calc(84px + 3vh) var(--gutter) 4vh;position:relative;z-index:5}
.hero__core .eyebrow{margin-bottom:12px}
.hero__title{font-size:clamp(1.65rem,3.1vw,2.7rem);font-weight:900;font-stretch:112%;letter-spacing:-.015em;
  line-height:1.06;margin:0 0 clamp(20px,3vh,34px);text-shadow:0 2px 26px rgba(0,0,0,.45)}
@media(min-width:760px){.hero__title{white-space:nowrap}}
.hero__quick{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 14px;align-items:center;margin-top:20px;
  font-family:var(--font-d);font-weight:700;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase}
.hero__quick a{color:rgba(255,255,255,.92);border-bottom:1px solid rgba(255,255,255,.42);padding-bottom:2px;
  text-shadow:0 1px 12px rgba(0,0,0,.4);transition:color .2s,border-color .2s}
.hero__quick a:hover{color:#fff;border-color:#fff}
.hero__quick .dot{color:rgba(255,255,255,.55)}

/* the bar */
.hsearch{position:relative;display:flex;align-items:stretch;width:min(940px,100%);
  background:rgba(255,255,255,.92);-webkit-backdrop-filter:blur(18px) saturate(1.25);backdrop-filter:blur(18px) saturate(1.25);
  border-radius:999px;padding:8px;
  box-shadow:0 18px 55px rgba(11,20,36,.38),0 2px 10px rgba(11,20,36,.22),inset 0 0 0 1px rgba(255,255,255,.55);
  transition:box-shadow .3s,background .3s}
.hsearch:focus-within,.hsearch.is-open{background:#fff;
  box-shadow:0 26px 80px rgba(11,20,36,.45),0 2px 10px rgba(11,20,36,.22)}
.hsearch__seg{flex:1 1 0;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;
  min-height:60px;padding:8px 26px;border:0;background:transparent;border-radius:999px;cursor:pointer;
  text-align:left;font-family:var(--font-d);transition:background .22s,box-shadow .22s}
.hsearch__seg:hover{background:rgba(11,20,36,.05)}
.hsearch__seg.is-on{background:#fff;box-shadow:0 12px 34px rgba(11,20,36,.18)}
.hsearch__k{font-size:.64rem;letter-spacing:.18em;text-transform:uppercase;font-weight:800;color:var(--navy);line-height:1}
.hsearch__v{font-size:.94rem;font-weight:600;color:var(--mute);line-height:1.2;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.hsearch__v.is-set{color:var(--ink);font-weight:750}
.hsearch__sep{flex:0 0 1px;width:1px;background:var(--line);margin:14px 0;transition:opacity .2s}
.hsearch.is-open .hsearch__sep{opacity:0}
.hsearch__go{flex:0 0 auto;display:inline-flex;align-items:center;gap:9px;margin-left:6px;border:0;cursor:pointer;
  background:linear-gradient(135deg,var(--coral) 0%,var(--coral-2) 100%);color:#fff;border-radius:999px;padding:0 28px;
  font-family:var(--font-d);font-weight:800;font-size:.84rem;letter-spacing:.08em;text-transform:uppercase;line-height:1;
  box-shadow:0 10px 26px rgba(217,72,47,.4);transition:transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s,filter .2s}
.hsearch__go:hover{transform:scale(1.04);filter:brightness(1.05);box-shadow:0 14px 34px rgba(217,72,47,.5)}
.hsearch__go:active{transform:scale(.98)}

/* popovers */
@keyframes hpop{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
.hsearch__pop{position:absolute;top:calc(100% + 14px);left:0;right:0;margin-inline:auto;background:#fff;color:var(--ink);
  border-radius:26px;box-shadow:0 34px 100px rgba(11,20,36,.42),0 4px 16px rgba(11,20,36,.16);padding:26px;z-index:80;
  text-align:left;cursor:default}
.hsearch__pop:not([hidden]){animation:hpop .32s cubic-bezier(.22,1,.36,1) both}
.hsearch__pop--cal{width:min(700px,calc(100vw - 24px))}
.hsearch__pop--g{left:auto;right:8px;margin:0;width:min(340px,calc(100vw - 24px))}
.hsearch__pfoot{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-top:18px}
.hsearch__hint{font-size:.82rem;color:var(--mute);font-weight:600}
.hsearch__clear{border:0;background:none;cursor:pointer;font-family:var(--font-d);font-weight:700;font-size:.8rem;
  color:var(--sea-2);text-decoration:underline;text-underline-offset:3px;padding:6px 0}
.hsearch__clear:hover{color:var(--navy)}
.hsearch__done{border:0;cursor:pointer;background:var(--navy);color:#fff;border-radius:999px;padding:11px 24px;
  font-family:var(--font-d);font-weight:800;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;transition:background .2s}
.hsearch__done:hover{background:var(--navy-2)}

/* calendar */
.hsearch__cal{display:grid;grid-template-columns:1fr 1fr;gap:30px}
.hcal__m{min-width:0}
.hcal__head{text-align:center;font-family:var(--font-d);font-weight:800;font-size:.95rem;margin-bottom:12px}
.hcal__nav{position:absolute;top:24px;width:38px;height:38px;border-radius:999px;border:1.5px solid var(--line);
  background:#fff;cursor:pointer;font-size:1.25rem;line-height:1;color:var(--ink-2);display:flex;align-items:center;
  justify-content:center;transition:border-color .2s,background .2s;z-index:2;padding-bottom:3px}
.hcal__nav:hover:not(:disabled){border-color:var(--navy)}
.hcal__nav:disabled{opacity:.3;cursor:default}
.hcal__nav--p{left:24px}
.hcal__nav--n{right:24px}
.hcal__grid{display:grid;grid-template-columns:repeat(7,1fr);row-gap:2px}
.hcal__dow{font-size:.62rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);
  text-align:center;padding:6px 0 8px}
.hcal__d{position:relative;aspect-ratio:1;min-height:38px;border:0;background:none;font-family:var(--font-d);
  font-weight:700;font-size:.85rem;color:var(--ink);cursor:pointer;border-radius:999px;z-index:1}
.hcal__d::after{content:"";position:absolute;inset:2px;border-radius:999px;z-index:-1;transition:box-shadow .15s}
.hcal__d:hover:not(:disabled)::after{box-shadow:inset 0 0 0 1.6px var(--navy)}
.hcal__d:disabled{color:#c2cad4;cursor:default;font-weight:500}
.hcal__d.rng{background:rgba(14,124,155,.13);border-radius:0}
.hcal__d.rng.rs{border-radius:999px 0 0 999px}
.hcal__d.rng.re{border-radius:0 999px 999px 0}
.hcal__d.sel{color:#fff}
.hcal__d.sel::after{background:var(--navy);box-shadow:none}
.hcal__d.today:not(.sel){color:var(--sea-2)}
.hcal__blank{aspect-ratio:1;min-height:38px}

/* guests */
.hsearch__grow{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:15px 2px;
  border-bottom:1px solid var(--paper-2)}
.hsearch__grow>div:first-child b{display:block;font-family:var(--font-d);font-weight:800;font-size:.95rem}
.hsearch__grow>div:first-child span{font-size:.78rem;color:var(--mute);font-weight:500}
.hsearch__step{display:flex;align-items:center;gap:14px}
.hsearch__step button{width:37px;height:37px;border-radius:999px;border:1.5px solid var(--line);background:#fff;
  font-size:1.15rem;line-height:1;cursor:pointer;color:var(--ink-2);display:flex;align-items:center;justify-content:center;
  transition:border-color .2s,color .2s,transform .15s}
.hsearch__step button:hover:not(:disabled){border-color:var(--navy);color:var(--navy);transform:scale(1.06)}
.hsearch__step button:disabled{opacity:.32;cursor:default}
.hsearch__step b{font-family:var(--font-d);font-weight:800;font-size:1rem;min-width:20px;text-align:center}

/* trust band: translucent blue gradient, the video stays visible behind it */
.hero__band{position:relative;z-index:4;width:100%;
  background:linear-gradient(90deg,rgba(14,102,150,.15) 0%,rgba(11,30,56,.12) 55%,rgba(14,124,155,.10) 100%);
  -webkit-backdrop-filter:blur(10px) saturate(1.15);backdrop-filter:blur(10px) saturate(1.15);
  border-top:1px solid rgba(255,255,255,.16);padding:clamp(14px,2vh,22px) var(--gutter)}
.hero__trust--band{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 34px;margin:0}
.hero__trust--band b{font-size:clamp(.92rem,1.05vw,1.05rem)}
.hero__trust--band span{font-size:.76rem}

/* ---- v56: the search block sits high in the hero so the calendar has room under it, and the
   hero no longer clips its popovers (on short laptop screens the calendar may still reach the
   trust band or run past the hero: app.js fit() fades the band out of the way and nudges the
   page so the whole calendar is on screen). Phones keep the fixed bottom sheet below. */
@media(min-width:761px){
  .hero--search{overflow:visible;z-index:6}
  .hero--search .hero__media{overflow:hidden}
  .hero--search .hero__core{margin:0 0 auto;padding-top:calc(84px + clamp(16px,4.5vh,60px));padding-bottom:3vh}
  .hero--search .hero__band{transition:opacity .3s ease,visibility 0s linear 0s}
  .hero--search.is-searching .hero__band{opacity:0!important;visibility:hidden;pointer-events:none;
    transition:opacity .22s ease,visibility 0s linear .22s}
}
/* short laptop screens (a 1366x768 laptop gives the page ~638px): a tighter calendar that fits under the bar */
@media(min-width:761px) and (max-height:760px){
  .hero--search .hero__title{margin-bottom:16px}
  .hero--search .hsearch__pop{top:calc(100% + 10px);padding:20px}
  .hero--search .hsearch__pop--cal{width:min(660px,calc(100vw - 24px))}
  .hero--search .hsearch__cal{gap:24px}
  .hero--search .hcal__head{margin-bottom:8px}
  .hero--search .hcal__nav{top:18px;width:34px;height:34px}
  .hero--search .hcal__nav--p{left:18px}
  .hero--search .hcal__nav--n{right:18px}
  .hero--search .hcal__dow{padding:3px 0 5px}
  .hero--search .hcal__d,.hero--search .hcal__blank{aspect-ratio:auto;height:32px;min-height:0}
  .hero--search .hsearch__pfoot{margin-top:12px}
}

/* responsive */
@media(max-width:980px){
  .hsearch__seg{padding:8px 18px}
  .hsearch__go span{display:none}
  .hsearch__go{padding:0 22px}
}
@media(max-width:760px){
  .hero--search{min-height:100svh}
  .hero__core{padding-top:calc(76px + 16px);padding-bottom:3vh}
  .hsearch{flex-direction:column;border-radius:26px;padding:10px;width:100%}
  .hsearch__seg{width:100%;min-height:54px;padding:8px 18px;border-radius:18px}
  .hsearch__sep{width:auto;height:1px;margin:0 16px;flex:0 0 1px}
  .hsearch__go{width:100%;justify-content:center;min-height:54px;margin:6px 0 0}
  .hsearch__go span{display:inline}
  .hsearch__pop{position:fixed;left:12px;right:12px;bottom:12px;top:auto;transform:none;max-height:74vh;overflow:auto;z-index:960}
  .hsearch__pop--cal{width:auto}
  .hsearch__cal{grid-template-columns:1fr}
  .hcal__m:nth-child(2){display:none}
  .hcal__nav{top:20px}
  .hcal__nav--p{left:20px}
  .hcal__nav--n{right:20px}
  .hero__trust--band{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 20px}
}
@media(max-width:560px){
  .hero__trust--band span{display:none}
  .hero__trust--band div,.hero__trust--band>a{border-left-width:1.5px;padding-left:10px}
  .hero__trust--band b{font-size:.8rem}
}

/* ===================== Blog-post editorial layer =====================
   Scoped to .article--post / .prose--post so guides & other .article
   pages are untouched. Progress bar + numbered chapters + drop cap +
   pull-quotes + byline card + scrollspy TOC. */
.readbar{position:fixed;left:0;top:0;height:3px;width:100%;background:transparent;z-index:1400;pointer-events:none}
.readbar__fill{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--sea),var(--coral));box-shadow:0 0 10px rgba(217,72,47,.5)}
@media(max-width:1020px){.readbar{display:none}}

.post-meta{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin:0 0 1.7em;padding-bottom:1.2em;border-bottom:1px solid var(--line);
  font-family:var(--font-d);font-size:.84rem;color:var(--mute)}
.post-meta__by{font-weight:800;color:var(--navy)}
.post-meta time{color:var(--mute)}
.post-meta__sep{opacity:.45}

.prose--post{counter-reset:pch;font-size:1.09rem;line-height:1.75}
.prose--post .lede{font-size:clamp(1.28rem,1.9vw,1.6rem);line-height:1.46;color:var(--ink);font-weight:600;letter-spacing:-.01em;margin-bottom:1.3em}
.prose--post .lede::first-letter{float:left;font-family:var(--font-d);font-weight:900;font-size:3.3em;line-height:.7;
  padding:.04em .1em 0 0;margin:.02em .04em 0 0;color:var(--sea-2)}
.prose--post>h2{counter-increment:pch;scroll-margin-top:104px;margin:2em 0 .55em;padding-top:.75em;border-top:1px solid var(--line)}
.prose--post>h2::before{content:counter(pch,decimal-leading-zero);display:block;
  font-family:var(--font-d);font-weight:800;font-size:.72rem;letter-spacing:.26em;color:var(--sea-2);margin-bottom:.55em}
.prose--post>h2:first-of-type{border-top:0;padding-top:0}
.prose--post blockquote{border:0;border-left:4px solid var(--coral);background:transparent;padding:.15em 0 .15em 1.1em;margin:1.8em 0;
  font-family:var(--font-d);font-weight:600;font-size:clamp(1.2rem,1.7vw,1.5rem);line-height:1.4;color:var(--navy)}
.prose--post .tblwrap{margin:2em 0}

.post-byline{display:flex;align-items:center;gap:16px;margin-top:2.8em;padding:20px 22px;border:1px solid var(--line);border-radius:12px;background:var(--paper-2)}
.post-byline__mk{flex:none;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;
  background:var(--navy);color:#fff;font-family:var(--font-d);font-weight:800;font-size:1.2rem}
.post-byline>div{flex:1;min-width:0}
.post-byline b{display:block;font-family:var(--font-d);font-size:1rem;color:var(--navy)}
.post-byline span{display:block;font-size:.85rem;color:var(--mute);margin-top:2px}
@media(max-width:560px){.post-byline{flex-wrap:wrap}.post-byline .btn{width:100%;text-align:center;justify-content:center}}

.rail__box--toc .toc a{border-left:2px solid transparent;padding-left:10px;margin-left:-12px;transition:color .2s,border-color .2s}
.rail__box--toc .toc a.active{color:var(--sea-2);border-left-color:var(--sea)}

/* Blog hub: featured latest post */
.jfeat{display:grid;grid-template-columns:1.12fr 1fr;gap:clamp(20px,3vw,44px);align-items:center;text-decoration:none;color:inherit;
  border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--paper);transition:box-shadow .3s var(--ease),transform .3s var(--ease)}
.jfeat:hover{box-shadow:var(--shadow);transform:translateY(-3px)}
.jfeat__media{position:relative;aspect-ratio:16/10;overflow:hidden;background:var(--navy-3)}
.jfeat__media img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.jfeat:hover .jfeat__media img{transform:scale(1.04)}
.jfeat__body{padding:clamp(10px,2vw,24px) clamp(18px,3vw,40px) clamp(10px,2vw,24px) 0}
.jfeat__body .eyebrow{margin-bottom:10px}
.jfeat__body h2{font-size:clamp(1.6rem,2.8vw,2.7rem);margin:0 0 .35em;color:var(--navy);line-height:1.05}
.jfeat__body p{color:var(--mute);font-size:1.02rem;line-height:1.6;margin:0 0 1.1em}
.jfeat__cta{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-d);font-weight:800;color:var(--sea-2)}
.jfeat__cta .arr{transition:transform .25s var(--ease)}
.jfeat:hover .jfeat__cta .arr{transform:translateX(5px)}
@media(max-width:900px){.jfeat{grid-template-columns:1fr}.jfeat__media{aspect-ratio:16/9}.jfeat__body{padding:0 clamp(18px,4vw,26px) clamp(22px,4vw,30px)}}

/* ===================== 2026-09-05 final pass: latest-gen layer =====================
   Progressive rules only (unsupported browsers ignore each one): anchor targets land
   below the fixed header, balanced headings / pretty paragraph rag, <details> that
   animate open, scroll containment on the overlays, and a header that stays put
   while the page crossfades on MPA view transitions. */
h1[id],h2[id],h3[id],h4[id],section[id],[id].anchor{scroll-margin-top:108px}
@media(max-width:1020px){h1[id],h2[id],h3[id],h4[id],section[id]{scroll-margin-top:88px}}
h1,h2,h3,.sec-head p,.jfeat__body h2,.hero__title{text-wrap:balance}
p,li,dd,figcaption,.lede,summary{text-wrap:pretty}
summary::-webkit-details-marker{display:none}
@supports (interpolate-size:allow-keywords){
  :root{interpolate-size:allow-keywords}
  details::details-content{opacity:0;block-size:0;overflow-y:clip;
    transition:content-visibility .38s allow-discrete,opacity .32s ease,block-size .38s cubic-bezier(.22,1,.36,1)}
  details[open]::details-content{opacity:1;block-size:auto}
}
.ov2,.lb,.hsearch__pop,.mapshell.is-full,.mapkey{overscroll-behavior:contain}
.hdr{view-transition-name:site-header}
::view-transition-old(site-header),::view-transition-new(site-header){animation-duration:.18s}

/* villa page: FAQ inside the About column + balanced amenity groups (2026-09-05) */
.prose .villa-faq__h{margin:2.4em 0 .5em;font-size:clamp(1.2rem,1.6vw,1.5rem)}
.amen-groups{grid-template-columns:repeat(var(--amen-cols,4),minmax(0,1fr))}
.amen-groups .amen-wide{grid-column:span 2}
.amen-groups .amen-wide ul{columns:2;column-gap:clamp(20px,3vw,48px)}
.amen-groups .amen-wide li{break-inside:avoid}
@media(max-width:1000px){.amen-groups{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.amen-groups{grid-template-columns:1fr}.amen-groups .amen-wide{grid-column:auto}.amen-groups .amen-wide ul{columns:1}}

/* ---- overflow safety (probe 2026-09-05): a grid item never grows past its track. The
   <=1020px rule declared the article column as plain 1fr (auto minimum), so a wide table's
   min-content width pushed the prose 10-42px off the right edge on phones; the same trap
   grew the rail past its 240px track at 1024px. */
@media(max-width:1020px){.article,.article:has(.rail){grid-template-columns:minmax(0,1fr)}}
.article>*,.prose,.rail,.rail__box{min-width:0}
.tblwrap{max-width:100%}
.rail__facts{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:1100px){.rail__list li span{white-space:normal;text-align:right}}
/* ---- legibility floor: no interface text under 11px */
.vgrid:not(.vgrid--fx) .vt__meta{font-size:.7rem}
.social-wrap__k,.rail__facts span,.gt__t small,.gt--text small,.mega__feat-eyebrow{font-size:.7rem}
.cavcred__k{font-size:.62rem}
.foot__bar>.cavcred .cavcred__k{font-size:.46rem}
.rpop__city b,.rhop__city b{font-size:.66rem}
/* ---- tap targets: 24px+ hit areas for list links, layout unchanged */
.foot ul a,.foot__contact a,.crumbs a,.rail__box ul a{display:inline-block;padding:4px 0;margin:-4px 0}
.toc a{padding:5px 0}
.chk input{width:22px;height:22px;accent-color:var(--sea-2)}

/* ---- last probe round (2026-09-05): long URL link text breaks instead of overflowing on
   phones; remaining sub-11px labels lifted; footer legal bar + hero quick links get 24px+
   hit areas; native checkboxes sized for touch. */
.prose{overflow-wrap:break-word}
.prose a,.src a,.sources a{overflow-wrap:anywhere}
.vt__tag,.hsearch__k,.rmap__air-k,.finder__k{font-size:.7rem}
.rpin__lbl b{font-size:.62rem}
.foot__bar nav a,.hero__quick a{display:inline-block;padding:5px 0;margin:-5px 0}
input[type=checkbox]{width:22px;height:22px;accent-color:var(--sea-2)}

/* ---------- guest reviews with faces ---------- */
.rv-stars{display:inline-flex;gap:2px;font-size:.95rem;color:#e0a53a;letter-spacing:1px;line-height:1;margin-bottom:2px}
.rv-stars__o{color:rgba(0,0,0,.15)}
.sec--dark .rv-stars__o{color:rgba(255,255,255,.28)}
.rv-who{display:flex;align-items:center;gap:12px;padding-top:16px;margin-top:auto;border-top:1px solid var(--line)}
.sec--dark .rv-who{border-color:rgba(255,255,255,.16)}
.rv-ava{flex:0 0 auto}
.rv-face{width:52px;height:52px;border-radius:50%;object-fit:cover;display:block;background:var(--sand)}
.rv-mono{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--sea),var(--navy));color:#fff;font-family:var(--font-d);font-weight:800;font-size:1.08rem}
.rv-id{display:flex;flex-direction:column;gap:1px;min-width:0}
.rv-id>b{color:var(--navy);font-family:var(--font-d);font-weight:800;font-size:1rem;letter-spacing:-.01em}
.sec--dark .rv-id>b{color:#fff}
.rv-meta{font-size:.76rem;color:var(--mute);letter-spacing:.01em}
.sec--dark .rv-meta{color:rgba(255,255,255,.7)}
.rv-villa{font-size:.76rem;font-weight:800;color:var(--sea);text-decoration:none}
.rv-villa:hover{text-decoration:underline}
.sec--dark .rv-villa{color:var(--sea-soft)}
.rv-src{margin-left:auto;align-self:flex-start;font-size:.6rem;text-transform:uppercase;letter-spacing:.12em;font-weight:800;color:var(--mute);border:1px solid var(--line);border-radius:999px;padding:3px 8px;white-space:nowrap}
.sec--dark .rv-src{color:rgba(255,255,255,.75);border-color:rgba(255,255,255,.24)}
/* reviews wall + per-home summary */
.revs--wall{grid-template-columns:repeat(3,1fr)}
@media(max-width:1000px){.revs--wall{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.revs--wall{grid-template-columns:1fr}}
.rstat{background:var(--sand);border:1px solid var(--line);border-radius:14px;padding:18px 16px;text-align:center}
.rstat>b{display:block;font-family:var(--font-d);font-size:1.9rem;font-weight:800;color:var(--navy);line-height:1}
.rstat>span{display:block;margin-top:6px;font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--mute);font-weight:700}
.rv-honesty{margin-top:18px;font-size:.9rem;color:var(--mute);max-width:72ch}
.rvsum-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}
.rvsum{display:block;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--paper);text-decoration:none;transition:transform .2s ease,box-shadow .2s ease}
.rvsum:hover{transform:translateY(-3px);box-shadow:0 14px 34px rgba(11,20,36,.12)}
.rvsum img{width:100%;height:132px;object-fit:cover;display:block}
.rvsum__n{display:block;padding:12px 15px 2px;font-family:var(--font-d);font-weight:800;color:var(--navy)}
.rvsum__c{display:block;padding:0 15px 15px;font-size:.82rem;color:var(--mute)}

/* ---- reviews surfaces polish (2026-09-06): badge legible, villa links tappable, lead note */
.rv-src{font-size:.7rem}
.rv-villa{display:inline-block;padding:4px 0;margin:-4px 0}
.rv-honesty--lead{max-width:62ch;font-size:1.02rem}

/* ---- home contact ribbon + villas persistent search strip (2026-09-11, Rich) ---- */
.ctabar-sec{background:var(--navy);color:#fff}
.ctabar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:20px 40px;padding-block:32px}
.ctabar__lead{flex:1 1 320px;min-width:0}
.ctabar__lead .eyebrow{color:var(--turq)}
.ctabar__lead h2{margin:.14em 0 .22em;color:#fff}
.ctabar__lead p{margin:0;color:rgba(255,255,255,.82);max-width:52ch}
.ctabar__act{display:flex;flex-wrap:wrap;align-items:center;gap:14px 26px}
.ctabar__line{display:flex;flex-direction:column;gap:2px;text-decoration:none;color:#fff}
.ctabar__line span{font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--sea-soft)}
.ctabar__line b{font-size:1.3rem;font-weight:800;line-height:1.05;letter-spacing:.01em}
.ctabar__line:hover b{color:var(--turq)}
.ctabar__btn{white-space:nowrap}
@media(max-width:640px){.ctabar{padding-block:26px}.ctabar__line b{font-size:1.16rem}.ctabar__btn{width:100%}}
.inquire__reach a{font-weight:700}

.vsearch{background:linear-gradient(180deg,var(--navy),var(--navy-2));padding:24px 0 30px}
.vsearch__in{display:flex;flex-direction:column;align-items:center;gap:12px}
.vsearch__k{margin:0;color:var(--sea-soft);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;font-weight:700}
.vsearch .hsearch{margin:0 auto}
