/* 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:400 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:400 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}
@font-face{font-family:"Newsreader";font-style:normal;font-weight:500 800;font-display:swap;
  src:url(/assets/fonts/newsreader-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:"Newsreader";font-style:normal;font-weight:500 800;font-display:swap;
  src:url(/assets/fonts/newsreader-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:#0f2a1f; --navy-2:#173a2b; --navy-3:#25503d;
  --ink:#12201a; --ink-2:#2b3a33; --mute:#5d6b64;
  --paper:#ffffff; --paper-2:#f4f6f3; --sand:#efe9dc; --line:#dde4df;
  --sea:#1f6f8b; --sea-2:#185a70; --sea-soft:#9ccfe0;
  --coral:#c8552b; --coral-2:#a9461f;
  --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-h:"Newsreader",Georgia,"Times New Roman",serif; --font-b:"Mulish",system-ui,-apple-system,"Segoe UI",sans-serif;
  --r:4px; --shadow:0 20px 60px rgba(15,42,31,.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:#8f3a1a;border-color:#8f3a1a}
.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(31,111,139,.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__panel{translate:var(--nx,0px) 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(31,111,139,.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(31,111,139,.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(31,111,139,.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(31,111,139,.13),rgba(156,207,224,.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(31,111,139,.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:1279px){.nav{display:none}}
@media(min-width:1280px){.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(200,85,43,.34) 0%, rgba(200,85,43,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(156,207,224,.20) 0%, rgba(156,207,224,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(156,207,224,.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(15,42,31,.35) 0%,rgba(15,42,31,.05) 35%,rgba(15,42,31,.55) 75%,rgba(15,42,31,.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(15,42,31,0) 45%,rgba(15,42,31,.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(15,42,31,.05) 40%,rgba(15,42,31,.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(15,42,31,.5),rgba(15,42,31,.15) 40%,rgba(15,42,31,.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(31,111,139,.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:#0f2a1f;position:relative;z-index:0}
.leaflet-container{font-family:var(--font-b);background:#0f2a1f}
/* 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(15,42,31,.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(15,42,31,.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(15,42,31,.08),0 18px 44px rgba(15,42,31,.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(15,42,31,.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(15,42,31,.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(15,42,31,.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(15,42,31,.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(15,42,31,.28);padding:2px}
.leaflet-popup-content{margin:14px 16px;font-size:.9rem}
.leaflet-popup-tip{box-shadow:0 12px 34px rgba(15,42,31,.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:#e8865e;
  --turq:#6fbfd0; --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(15,42,31,.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(15,42,31,.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:#0f2a1f;border-top:2px solid #1f6f8b;padding-top:.45em}
  .prose h3{page-break-after:avoid;color:#0f2a1f}
  .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:#0f2a1f}
  .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:#0f2a1f;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:#0f2a1f;line-height:1}
  .rpt-cover__sub{font-size:1.15rem;color:#1f6f8b;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%,#173a2b 0%,#0f2a1f 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(156,207,224,.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(156,207,224,.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%,#4fa3bd 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:#0f2a1f}
.hero--search .hero__scrim{background:linear-gradient(180deg,rgba(15,42,31,.44) 0%,rgba(15,42,31,.10) 40%,rgba(15,42,31,.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(15,42,31,.38),0 2px 10px rgba(15,42,31,.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(15,42,31,.45),0 2px 10px rgba(15,42,31,.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(15,42,31,.05)}
.hsearch__seg.is-on{background:#fff;box-shadow:0 12px 34px rgba(15,42,31,.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(200,85,43,.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(200,85,43,.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(15,42,31,.42),0 4px 16px rgba(15,42,31,.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(31,111,139,.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(31,111,139,.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}

/* 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(200,85,43,.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(15,42,31,.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:32px 0}
.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:26px 0}.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}

/* ---- home hero: six-image loop (photo #1 and #2 of each cabin). Pure CSS, no JS.
   Each frame owns a 6 s slot of a 36 s cycle; 1.1 s crossfades; a slow push-in per frame
   (stills tolerate transforms, unlike a playing video). Calm mode = the first frame only. */
.hero__loop .hl__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;animation:none;transform:none}
.hero__loop .hl__img:first-child{opacity:1}
html.m-full .hero__loop .hl__img{opacity:0;
  animation:heroLoop 36s linear infinite,heroPush 36s ease-in-out infinite;
  animation-delay:calc(var(--i,0)*6s);will-change:opacity,transform}
@keyframes heroLoop{0%{opacity:0}3%{opacity:1}16.7%{opacity:1}19.8%{opacity:0}100%{opacity:0}}
@keyframes heroPush{0%{transform:scale(1.02)}20%{transform:scale(1.09)}100%{transform:scale(1.09)}}

/* ---- header brand: the wordmark is long ("The Adirondack Cabins"); scale the brand
   block down on small screens so the MENU button never leaves the viewport
   (at 375px the SPV sizing measured 401px for the brand alone). */
@media(max-width:900px){.brand img{width:72px;height:43px}.brand__t b{font-size:1.25rem;letter-spacing:-.015em}}
@media(max-width:600px){.brand{gap:8px}.brand img{width:60px;height:36px}.brand__t b{font-size:1.06rem;white-space:nowrap}.brand__t small{display:none}}
@media(max-width:400px){.brand img{width:50px;height:30px}.brand__t b{font-size:.96rem}}

/* ---- .rows link lists: the drive-from rows carry a long right-hand span ("104 miles,
   about two and a quarter hours plus the border") which the SPV row style keeps on one
   line; at phone widths that pushed the layout viewport to 452px. Let the span wrap. */
.rows{min-width:0}
.rows a{min-width:0;max-width:100%;overflow-wrap:anywhere}
.rows a span{white-space:normal;text-align:right}
@media(max-width:760px){.rows a{flex-wrap:wrap;white-space:normal}.rows a span{white-space:normal;flex:1 1 100%;margin-left:0;text-align:left;display:block}}

/* ===== 3 Chalet v1 (2026-09-26; display re-fonted to Newsreader 2026-10-06): display + Mulish text/UI (webfonts pairing) ===== */
body{font-synthesis:none}
h1,h2,h3,.brand__t b,.foot__brand .b,.mega__feat-title,.ov2__head,.ov2__feature-title,.iv__word,
.hero__stats b,.facts b,.factgrid b,.jfeat__body h2,.rev::after,.rvsum__n,.ft__body h3,.vt__t h3,.gt__t h3{
  font-family:var(--font-h);font-optical-sizing:auto}
h1{font-weight:850;letter-spacing:-.022em;font-stretch:normal}
h2{font-weight:800;letter-spacing:-.018em}
h3{font-weight:700;letter-spacing:-.01em}
.rail__box h3,.foot h3,.villa-faq__h,.mapkey__head h2{font-family:var(--font-d)}
.brand__t b{font-weight:800;font-stretch:normal;letter-spacing:-.005em}
.foot__brand .b{font-weight:800;font-stretch:normal}
.foot__top--6{grid-template-columns:1.5fr repeat(5,1fr)}
@media(max-width:1380px){.foot__top--6{grid-template-columns:repeat(3,1fr)}.foot__top--6 .foot__brand{grid-column:1/-1}}
@media(max-width:760px){.foot__top--6{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.foot__top--6{grid-template-columns:1fr}}
/* 3 Chalet v1: cabin number on featured tiles, the which-cabin block, the comparison table */
.ft__num{display:block;font-family:var(--font-d);font-size:.66rem;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--coral-2);margin-bottom:6px}
.fit{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,1.6vw,26px);padding-inline:var(--gutter)}
@media(max-width:1000px){.fit{grid-template-columns:1fr}}
.fitc{background:var(--paper);border:1px solid var(--line);display:flex;flex-direction:column}
.fitc__img{position:relative;display:block;aspect-ratio:16/10;overflow:hidden;background:var(--navy-2)}
.fitc__img img{width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.fitc__img:hover img{transform:scale(1.04)}
.fitc__b{padding:20px clamp(16px,1.6vw,26px) 24px;display:flex;flex-direction:column;gap:6px;flex:1}
.fitc__k{font-family:var(--font-d);font-size:.66rem;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--sea-2)}
.fitc__b h3{margin:0;font-size:clamp(1.3rem,1.7vw,1.7rem)}
.fitc__b h3 a{color:var(--navy);text-decoration:none}
.fitc__b p{margin:0 0 10px;color:var(--ink-2);line-height:1.55}
.fitc__b .btn-row{margin-top:auto}
.tbl--cmp th[scope=row]{text-align:left;white-space:nowrap;color:var(--navy);font-weight:800}
.tbl--cmp td,.tbl--cmp th{vertical-align:top}
.tbl--cmp thead th a{color:var(--navy);text-decoration:none;font-family:var(--font-h);font-size:1.1rem}
.factgrid--6{grid-template-columns:repeat(6,minmax(0,1fr))}
@media(max-width:1100px){.factgrid--6{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:560px){.factgrid--6{grid-template-columns:repeat(2,minmax(0,1fr))}}

@media(max-width:900px){.crumbs--over{display:none}}

.two--fill{align-items:stretch}.two__media{position:relative;min-height:320px}.two__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

/* tile rows always fill */
.gtiles{display:flex;flex-wrap:wrap}.gtiles>*{flex:1 1 calc(25% - 3px);min-width:0;aspect-ratio:auto;height:24vw}.gtiles--3>*{flex-basis:calc(33.34% - 3px);height:32vw}.gtiles--5>*{flex-basis:calc(20% - 3px);height:19.5vw}@media(max-width:1200px){.gtiles>*{flex-basis:calc(33.34% - 3px);height:32vw}.gtiles--5>*{flex-basis:calc(50% - 3px);height:48vw}}@media(max-width:820px){.gtiles>*,.gtiles--3>*,.gtiles--5>*{flex-basis:calc(50% - 3px);height:48vw}}@media(max-width:520px){.gtiles>*,.gtiles--3>*,.gtiles--5>*{flex-basis:100%;height:min(94vw,420px)}}.vgrid--fx .vt{max-height:min(72vh,600px)}
/* menu feature tiles: the eyebrow sat on bright sky in some photos; darken earlier, white label */
.mega__feat-shade{background:linear-gradient(180deg,rgba(8,28,42,.08) 0%,rgba(8,24,38,.58) 36%,rgba(6,16,28,.94) 100%)}
.mega__feat-eyebrow{color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.55)}

/* ---- photo credits ON the page that shows the photo (2026-10-05, TrollBuster A8 / web-images Law 4):
   in-article figure captions, the menu panels, and a credits band at the end of <main>. */
.pcred{background:var(--paper-2);border-top:1px solid var(--line)}
.pcred .wrap{padding-block:16px}
.pcred p{margin:0;max-width:none;font-size:.8rem;line-height:1.6;color:var(--mute)}
.pcred__k{font-weight:700;color:var(--ink-2);margin-right:2px}
.pcred a{color:var(--sea-2);text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere}
.prose figcaption .fig__cr{display:block;margin-top:3px;font-size:.74rem}
.fig__cr a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.mega__credit{grid-column:1/-1;margin:8px 0 0;padding:8px 11px 2px;border-top:1px solid rgba(31,111,139,.12);
  font-size:.7rem;line-height:1.4;color:var(--mute)}
.mega__credit a{color:var(--sea-2);text-decoration:underline}
.ov2__credit{flex:1 1 100%;margin:0;font-size:.74rem;font-weight:500;line-height:1.45;color:rgba(255,255,255,.74)}
.ov2__credit a{color:inherit;text-decoration:underline}
.ov2__credit a:hover{color:#fff}
.rev__none{font-style:normal;color:var(--mute);font-size:.92em}

.rv-more{padding:22px var(--gutter) 0}.rv-more>summary{cursor:pointer;font-weight:800;letter-spacing:.08em;text-transform:uppercase;font-size:.8rem;color:var(--navy);padding:16px 0;list-style:none;border-top:1px solid var(--line);border-bottom:1px solid var(--line);text-align:center}.rv-more>summary::-webkit-details-marker{display:none}.rv-more[open]>summary{margin-bottom:22px}.rv-more .revs{padding-inline:0}

/* ===================================================================================
   3 Chalet v2 UI layer (2026-10-06): Newsreader display, warmer paper, editorial hero,
   cabin showcase rows, rating summary, bento trip tiles, photo cards, place marquee.
   Everything below overrides the forked SPV layers above; delete this block to roll back.
   =================================================================================== */
:root{--paper-2:#f6f2eb;--sand:#ede5d8;--line:#e3ddd2;--bark:#2a1d14;--ease:cubic-bezier(.22,1,.36,1)}
h1,h2,h3,.brand__t b,.foot__brand .b{font-variation-settings:normal}
h1{font-weight:650;letter-spacing:-.025em}
h2{font-weight:600;letter-spacing:-.022em;line-height:1.02}
h3{font-weight:600;letter-spacing:-.012em}
.sec-head h2,.intro h2,.split__body h2,.why__body h2{font-size:clamp(2.3rem,4.6vw,4.6rem)}
.eyebrow{color:var(--coral-2);display:flex;align-items:center;gap:12px;letter-spacing:.24em}
.eyebrow::before{content:"";width:28px;height:1.5px;background:currentColor;opacity:.7;flex:0 0 auto}
.eyebrow.on-dark,.sec--dark .eyebrow{color:#f0c9b4}
.hero__core .eyebrow::before{background:#fff}
.btn{padding:15px 26px;font-size:.8rem;letter-spacing:.1em;transition:background .25s,color .25s,border-color .25s,transform .25s var(--ease),box-shadow .25s}
.btn:hover{transform:translateY(-2px)}
.btn-solid:hover{box-shadow:0 12px 28px rgba(15,42,31,.25)}
.rv-stars{color:var(--coral)}

/* hero: editorial, bottom-left, the photo does the talking */
.hero--search .hero__scrim{background:
  linear-gradient(90deg,rgba(8,22,15,.66) 0%,rgba(8,22,15,.34) 42%,rgba(8,22,15,0) 72%),
  linear-gradient(180deg,rgba(8,22,15,.42) 0%,rgba(8,22,15,0) 26%,rgba(8,22,15,0) 58%,rgba(8,22,15,.55) 100%)}
.hero--search .hero__core{margin:auto 0 0;align-items:flex-start;text-align:left;padding:calc(96px + 4vh) var(--gutter) clamp(28px,5vh,56px);max-width:1180px}
.hero--search .hero__title{font-family:var(--font-h);font-size:clamp(2.6rem,5.4vw,5.8rem);font-weight:600;line-height:.98;letter-spacing:-.03em;
  white-space:normal;max-width:15ch;margin:0 0 18px;text-shadow:0 2px 30px rgba(0,0,0,.35);text-wrap:balance}
.hero__lede{font-size:clamp(1.02rem,1.3vw,1.25rem);line-height:1.5;color:rgba(255,255,255,.92);max-width:48ch;margin:0 0 clamp(22px,3.4vh,34px);font-weight:500;text-shadow:0 1px 16px rgba(0,0,0,.45)}
.hero--search .hsearch{margin:0;width:min(860px,100%)}
.hero__band{background:linear-gradient(90deg,rgba(8,22,15,.55),rgba(8,22,15,.35));border-top:1px solid rgba(255,255,255,.14)}
.hero__trust div,.hero__trust>a{border-left-color:rgba(240,201,180,.7)}

/* talk-to-a-person strip: keep the text off the screen edge */
.ctabar{padding:clamp(26px,3vw,40px) var(--gutter)}
.ctabar__lead h2{font-size:clamp(1.7rem,2.6vw,2.6rem)}
.ctabar__lead .eyebrow{color:#f0c9b4}

/* intro */
.intro h2{max-width:18ch}
.intro__cols h3{color:var(--coral-2)}

/* place marquee (replaces the word band) */
.xmq{overflow:hidden;white-space:nowrap;border-block:1px solid var(--line);padding:clamp(16px,2vw,26px) 0;user-select:none;pointer-events:none;background:var(--paper)}
.xmq__in{display:inline-block;animation:xmq 60s linear infinite}
.xmq span{font-family:var(--font-h);font-weight:500;font-size:clamp(1.6rem,3.2vw,3rem);letter-spacing:-.02em;color:var(--navy);padding:0 .55em}
.xmq span::after{content:"";display:inline-block;width:.32em;height:.32em;margin-left:1.1em;border-radius:50%;background:var(--coral);vertical-align:.18em}
@keyframes xmq{to{transform:translateX(-50%)}}
html.m-calm .xmq__in{animation:none}

/* cabin showcase rows */
.xcabs{padding-bottom:clamp(40px,5vw,80px)}
.xcab{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:center;gap:clamp(28px,5vw,96px);padding:clamp(24px,3vw,48px) var(--gutter)}
.xcab--flip{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr)}
.xcab--flip .xcab__media{order:2}
.xcab__media{display:grid;grid-template-columns:2fr 1fr;grid-template-rows:1fr 1fr;gap:8px;aspect-ratio:16/10.4;min-height:0}
.xcab__m{position:relative;overflow:hidden;border-radius:6px;background:var(--navy-2)}
.xcab__m--a{grid-row:1/3}
.xcab__m img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.1s var(--ease)}
.xcab__media:hover .xcab__m img{transform:scale(1.045)}
.xcab__body{position:relative}
.xcab__n{display:block;font-family:var(--font-h);font-weight:500;font-size:clamp(3.4rem,6vw,5.6rem);line-height:.9;color:var(--coral);opacity:.9;letter-spacing:-.04em;margin:0 0 14px;font-variant-numeric:lining-nums}
.xcab__body h3{font-size:clamp(2.1rem,3.6vw,3.6rem);line-height:1;margin:0 0 .35em;letter-spacing:-.025em}
.xcab__body h3 a{color:var(--navy);text-decoration:none;background:linear-gradient(currentColor,currentColor) 0 100%/0 1.5px no-repeat;transition:background-size .5s var(--ease)}
.xcab__body h3 a:hover{background-size:100% 1.5px}
.xcab__body>p{font-size:clamp(1.02rem,1.2vw,1.15rem);color:var(--ink-2);max-width:46ch;margin:0 0 22px}
.xcab__spec{list-style:none;margin:0 0 16px;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.xcab__spec li{border:1px solid var(--line);border-radius:999px;padding:7px 14px;font-size:.84rem;color:var(--ink-2);background:var(--paper)}
.xcab__spec b{color:var(--navy);font-weight:800}
.xcab__rate{display:block;font-size:.9rem;color:var(--mute);margin:0 0 24px}
.xcab__rate b{font-family:var(--font-h);font-size:1.5rem;font-weight:600;color:var(--navy);margin-right:2px}
.xcabs__more{padding-top:clamp(16px,2vw,28px)}
@media(max-width:900px){.xcab,.xcab--flip{grid-template-columns:1fr}.xcab--flip .xcab__media{order:0}}
@media(max-width:520px){.xcab__media{aspect-ratio:4/4.2;grid-template-columns:1fr 1fr;grid-template-rows:2fr 1fr}.xcab__m--a{grid-row:auto;grid-column:1/3}}

/* rating summary */
.xscore{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:clamp(20px,4vw,72px);align-items:center;
  background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:clamp(22px,3vw,44px);margin-bottom:clamp(28px,3vw,48px)}
.xscore__big b{display:block;font-family:var(--font-h);font-weight:600;font-size:clamp(4rem,8vw,7rem);line-height:.9;letter-spacing:-.04em;color:var(--navy)}
.xscore__stars{display:block;color:var(--coral);letter-spacing:4px;font-size:1.2rem;margin:10px 0 8px}
.xscore__big small{display:block;font-size:.9rem;color:var(--mute);max-width:30ch;line-height:1.45}
.xscore__per{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.xscore__per a{display:flex;flex-direction:column;gap:4px;padding:18px 20px;border-radius:8px;background:var(--paper-2);text-decoration:none;color:var(--ink);transition:background .25s,transform .25s var(--ease)}
.xscore__per a:hover{background:var(--sand);transform:translateY(-3px)}
.xscore__per span{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;font-weight:800;color:var(--mute)}
.xscore__per b{font-family:var(--font-h);font-size:2rem;font-weight:600;color:var(--navy);line-height:1.05}
.xscore__per small{font-size:.84rem;color:var(--mute)}
@media(max-width:900px){.xscore{grid-template-columns:1fr}.xscore__per{grid-template-columns:1fr}}
/* review cards as cards */
.xrevs .rev{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:clamp(22px,2vw,30px);box-shadow:0 1px 0 rgba(15,42,31,.03);transition:transform .35s var(--ease),box-shadow .35s}
.xrevs .rev:hover{transform:translateY(-4px);box-shadow:0 22px 50px rgba(15,42,31,.10)}
.xrevs .rev__q{font-family:var(--font-h);font-weight:500;font-size:clamp(1.08rem,1.25vw,1.22rem);line-height:1.5;letter-spacing:-.003em}

/* bento: 4x3, no empty cell */
.xbento{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:clamp(200px,19vw,330px);gap:8px;padding-inline:var(--gutter)}
.xb{position:relative;display:block;overflow:hidden;border-radius:8px;color:#fff;background:var(--navy-2)}
.xb--big{grid-column:span 2;grid-row:span 2}
.xb--wide{grid-column:span 2}
.xb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.1s var(--ease)}
.xb:hover img{transform:scale(1.05)}
.xb .gt__ov{position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,22,15,0) 40%,rgba(8,22,15,.78) 100%)}
.xb__t{position:absolute;left:0;right:0;bottom:0;padding:clamp(16px,1.6vw,26px)}
.xb__t small{display:block;font-size:.66rem;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:#f0c9b4;margin-bottom:6px}
.xb__t h3{margin:0;color:#fff;font-size:clamp(1.15rem,1.5vw,1.5rem);line-height:1.1}
.xb--big .xb__t h3{font-size:clamp(1.6rem,2.8vw,2.8rem)}
@media(max-width:900px){.xbento{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:clamp(180px,42vw,320px)}}
@media(max-width:520px){.xbento{grid-template-columns:1fr}.xb--big,.xb--wide{grid-column:auto;grid-row:auto}}

/* photo cards (blog, local) */
.xcards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,1.8vw,28px);padding-inline:var(--gutter)}
.xcards--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.xcards--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.xcard{display:flex;flex-direction:column;text-decoration:none;color:inherit}
.xcard__img{position:relative;display:block;aspect-ratio:4/3;overflow:hidden;border-radius:8px;background:var(--navy-2)}
.xcard__img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.1s var(--ease)}
.xcard:hover .xcard__img img{transform:scale(1.05)}
.xcard__b{display:flex;flex-direction:column;gap:8px;padding-top:18px}
.xcard__b small{font-size:.7rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--coral-2)}
.xcard__b b{font-family:var(--font-h);font-weight:600;font-size:clamp(1.35rem,1.8vw,1.75rem);line-height:1.12;letter-spacing:-.015em;color:var(--navy)}
.xcard__p{font-size:.98rem;color:var(--ink-2);line-height:1.55;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.xcard__go{font-size:.78rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--navy);margin-top:2px}
.xcard:hover .xcard__go{color:var(--coral-2)}
.sec--dark .xcard__b b,.sec--dark .xcard__go{color:#fff}
.sec--dark .xcard__b small{color:#f0c9b4}
.xrows{margin-top:clamp(26px,3vw,44px)}
@media(max-width:1000px){.xcards,.xcards--4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.xcards,.xcards--4,.xcards--2{grid-template-columns:1fr}}

/* text-only guide tiles: a contour pattern instead of a flat block */
.gt--text{background-color:var(--navy-2);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240' viewBox='0 0 240 240' fill='none' stroke='%23ffffff' stroke-opacity='.09' stroke-width='1.2'%3E%3Cpath d='M-20 60c40-30 80 30 120 0s80-30 160 10'/%3E%3Cpath d='M-20 100c40-30 80 30 120 0s80-30 160 10'/%3E%3Cpath d='M-20 140c40-30 80 30 120 0s80-30 160 10'/%3E%3Cpath d='M-20 180c40-30 80 30 120 0s80-30 160 10'/%3E%3Cpath d='M-20 220c40-30 80 30 120 0s80-30 160 10'/%3E%3Cpath d='M-20 20c40-30 80 30 120 0s80-30 160 10'/%3E%3C/svg%3E")}
.gt--text h3{font-size:clamp(1.3rem,1.7vw,1.7rem)}

/* section rhythm + tile polish */
.xstrip .gt,.gtiles>*{border-radius:6px}
.factgrid{gap:1px;border-radius:8px;overflow:hidden}
.factgrid b{font-family:var(--font-h);font-weight:600;font-size:clamp(1.8rem,2.6vw,2.6rem)}
.split__media img,.why__media img{transition:transform 1.4s var(--ease)}
.foot h3,.foot__brand .b{letter-spacing:-.01em}
@media(max-width:760px){.hero--search .hero__scrim{background:linear-gradient(180deg,rgba(8,22,15,.45) 0%,rgba(8,22,15,.2) 22%,rgba(8,22,15,.62) 55%,rgba(8,22,15,.72) 100%)}}
/* go-live 2026-10-13: the longer brand name (Adirondack Mountain Bungalows) must leave room for the menu button on phones */
@media(max-width:430px){.brand{gap:7px}.brand img{width:44px;height:26px}.brand__t b{font-size:.8rem;letter-spacing:-.01em}}
@media(max-width:340px){.brand img{display:none}.brand__t b{font-size:.76rem}}
