@font-face{font-family:Fell;src:url('../assets/fonts/im-fell-english-latin.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Fell;src:url('../assets/fonts/im-fell-english-italic-latin.woff2') format('woff2');font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:Hanken;src:url('../assets/fonts/hanken-grotesk-latin.woff2') format('woff2');font-weight:100 900;font-style:normal;font-display:swap}
:root{--salt:#f6f7f3;--sea:#173e3b;--muted:#526661;--line:#ccd5cd;--mist:#e7ece6;--white:#fff;--gutter:clamp(1.375rem,5vw,5.5rem);--section:clamp(5rem,9vw,9rem);--serif:Fell,Georgia,serif;--sans:Hanken,Arial,sans-serif;--ease:cubic-bezier(.16,1,.3,1);--header:88px;--haze:#b3cbc1;--sea2:#285a52;--rule:#c0cec3;--soft:#dbe6e0;color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:150px;scrollbar-color:#7a9690 var(--salt)}body{margin:0;background:var(--salt);color:var(--sea);font-family:var(--sans);font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased}body:has(dialog[open]){overflow:hidden}::selection{background:#b3cbc1;color:var(--sea)}a{color:inherit;text-underline-offset:.3em}button,input,textarea,select{font:inherit}button,a,input,select,textarea,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}a,button,input,textarea,select,summary{outline-offset:5px}:focus-visible{outline:2px solid currentColor}img{display:block;max-width:100%;height:auto}figure,p,h1,h2,dl,dd{margin:0}h1,h2{font-family:var(--serif);font-weight:400;line-height:1.13;letter-spacing:-.025em;text-wrap:balance}h2{font-size:clamp(2.6rem,4.4vw,4.5rem)}em{font-weight:400}p{max-width:65ch}a,button{touch-action:manipulation}[hidden]{display:none!important}.container{width:min(100% - var(--gutter)*2,1320px);margin-inline:auto}.section{padding-block:var(--section)}.skip{position:fixed;z-index:20;top:10px;left:20px;padding:10px 20px;background:var(--white);transform:translateY(-200%)}.skip:focus{transform:none}
.site-header{position:absolute;inset:0 0 auto;z-index:10;min-height:var(--header);padding:18px var(--gutter);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;color:white;background:linear-gradient(180deg,rgba(13,34,32,.45),transparent);transition:background .25s,color .25s}
.site-header.is-scrolled{position:fixed;background:var(--salt);color:var(--sea);border-bottom:1px solid var(--line);min-height:76px;padding-block:11px}.site-header nav{display:flex;gap:clamp(18px,2.4vw,36px);align-items:center}.site-header nav a{font-size:14px;text-decoration:none;white-space:nowrap;padding-block:10px}.site-header nav a:hover{text-decoration:underline}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-family:var(--serif);font-size:23px;line-height:1.1;white-space:nowrap}.brand img{width:40px;height:40px;object-fit:contain}.is-scrolled .brand img,.menu-open .brand img{filter:brightness(0) saturate(100%) invert(19%) sepia(25%) saturate(968%) hue-rotate(125deg)}.header-book{justify-self:end;display:flex;align-items:center;gap:24px;padding:10px 18px;border:1px solid currentColor;text-decoration:none;font-size:14px}.header-book:hover{background:var(--white);color:var(--sea)}.is-scrolled .header-book:hover{background:var(--sea);color:white}.menu-toggle{display:none}
.hero{min-height:min(880px,100svh);min-height:min(880px,100dvh);position:relative;display:flex;align-items:flex-end;color:white;padding:165px var(--gutter) 65px;isolation:isolate;background:var(--sea)}.hero__image{position:absolute;inset:0;z-index:-2;overflow:hidden}.hero__image img{width:100%;height:100%;object-fit:cover;object-position:55% 50%}.hero:after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(8,25,22,.4) 0,rgba(8,25,22,0) 24%,rgba(8,25,22,.12) 45%,rgba(8,25,22,.78) 100%)}.hero__content{width:min(100%,1320px);margin-inline:auto}.hero h1{font-size:clamp(3.4rem,5.6vw,5rem);max-width:8.4em;text-wrap:balance;line-height:1.08;padding-bottom:8px;text-shadow:0 2px 28px rgba(0,0,0,.12)}.hero h1 em{display:inline-block;line-height:1.16}.hero__bottom{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;margin-top:24px}.hero__bottom p{font-size:17px;line-height:1.55}.button{display:inline-flex;align-items:center;justify-content:center;gap:28px;min-height:50px;padding:14px 24px;background:var(--sea);color:white;border:1px solid var(--sea);border-radius:2px;text-decoration:none;font-weight:500;font-size:14px;white-space:nowrap;transition:background .2s,color .2s}.button:hover{background:#285a52}.button--light{background:var(--salt);color:var(--sea);border-color:var(--salt)}.button--light:hover{background:white}.stay-strip{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:22px var(--gutter);border-bottom:1px solid var(--line);font-size:15px}.stay-strip a{text-decoration:none;font-size:20px}.stay-strip small{font-size:13px;margin-left:8px;color:var(--muted)}
.welcome{text-align:center;padding-bottom:calc(var(--section)*.85)}.welcome__inner{padding-inline:var(--gutter);max-width:890px;margin:auto}.welcome__mark{width:57px;margin:0 auto 32px;opacity:.85}.welcome h2{font-size:clamp(2.7rem,4.6vw,4.65rem)}.welcome p{max-width:565px;margin:28px auto 23px;color:var(--muted);font-size:17px}.text-link{display:inline-flex;gap:35px;align-items:center;text-decoration:none;font-size:14px;border-bottom:1px solid var(--sea);padding:9px 0;min-height:44px}.text-link:hover{gap:43px;transition:gap .25s var(--ease)}.chapter-nav{position:sticky;top:75px;z-index:5;display:flex;justify-content:center;gap:clamp(20px,5vw,75px);padding:0 var(--gutter);background:var(--salt);border-block:1px solid var(--line)}.chapter-nav a{font-size:13px;text-decoration:none;white-space:nowrap;padding:19px 0 16px;border-bottom:2px solid transparent;color:var(--muted)}.chapter-nav a[aria-current],.chapter-nav a:hover{border-bottom-color:var(--sea);color:var(--sea)}
.section-copy p{color:var(--muted);font-size:16px;margin-top:25px;max-width:410px}.section-copy p+p{margin-top:17px}.photo{overflow:hidden;min-width:0;background:var(--mist)}.photo__button{display:block;position:relative;width:100%;height:100%;padding:0;border:0;background:none;text-align:left;color:white;overflow:hidden}.photo__button img{height:100%;width:100%;object-fit:cover;transition:transform .8s var(--ease)}.photo__button:hover img{transform:scale(1.025)}.photo__button:focus-visible{outline-offset:-6px;outline:2px solid white}.photo__open{position:absolute;bottom:17px;right:17px;padding:7px 12px;background:rgba(15,45,40,.92);font-size:12px;opacity:0;transform:translateY(7px);transition:opacity .25s,transform .25s}.photo__button:hover .photo__open,.photo__button:focus-visible .photo__open{opacity:1;transform:none}.section-copy .rate{border-top:1px solid var(--line);padding-top:18px;font-size:14px}.rate strong{font-size:22px;font-weight:500;color:var(--sea);margin-inline:5px}.rate small{font-size:12px}.rooms .text-link{margin-top:15px}.rooms__copy .text-link+.text-link{margin-left:28px}
.house{padding-top:0}
.house__intro{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:clamp(48px,6vw,88px);align-items:center;margin-bottom:clamp(56px,6vw,88px)}
.house__intro .house__heading{margin:0;max-width:570px}.house__heading p{max-width:470px}
.amenities{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:26px 18px;width:100%;max-width:620px;justify-self:end;margin:0;padding:0;list-style:none;color:var(--sea)}
.amenities li{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;min-width:0}
/* The transparent, hand-printed atlas has twelve square cells. Alpha masks keep every stamp
   in the same green as its label without baking a page background into the artwork. */
.amenity__icon{display:block;flex:none;width:82px;aspect-ratio:1;background:currentColor;mask-image:url('../assets/icons/amenities-stamps-v2.webp');mask-size:400% 300%;mask-repeat:no-repeat;mask-mode:alpha}
.amenity__icon--0{mask-position:0 0}.amenity__icon--1{mask-position:33.333333% 0}.amenity__icon--2{mask-position:66.666667% 0}.amenity__icon--3{mask-position:100% 0}
.amenity__icon--4{mask-position:0 50%}.amenity__icon--5{mask-position:33.333333% 50%}.amenity__icon--6{mask-position:66.666667% 50%;clip-path:inset(0 0 8%)}.amenity__icon--7{mask-position:100% 50%}
.amenity__icon--8{mask-position:0 100%}.amenity__icon--9{mask-position:33.333333% 100%}.amenity__icon--10{mask-position:66.666667% 98%}.amenity__icon--11{mask-position:100% 100%}
.amenity__label{font-size:14px;line-height:1.35;min-height:2.7em;max-width:100%;text-wrap:balance}
@media(max-width:1000px){.house__intro{grid-template-columns:1fr;gap:38px}.house__heading p{max-width:570px}.amenities{justify-self:start;gap:24px 18px}}
@media(max-width:540px){.house__intro{gap:34px;margin-bottom:48px}.amenities{gap:22px 10px}.amenity__icon{width:clamp(50px,15vw,62px)}.amenity__label{font-size:13px}}
.terraces__panorama{position:relative;isolation:isolate;min-height:620px;height:88svh;max-height:850px;display:flex;align-items:flex-end;overflow:hidden;padding:70px var(--gutter);background:var(--sea);view-timeline-name:--terrace;view-timeline-axis:block}.terraces__panorama>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 50%;z-index:-2}.terraces__panorama:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(5,28,24,.68),rgba(5,28,24,0) 80%);z-index:-1}.terraces__title{color:white;width:min(100%,1320px);margin:auto auto 0}.terraces h2{font-size:clamp(3rem,5.4vw,5rem);max-width:980px}.terraces__story{display:grid;grid-template-columns:1fr 1fr;gap:10%;align-items:center;padding-block:75px 0}.terraces__story p{max-width:440px;margin-left:15%;font-size:19px;color:var(--muted)}.terraces__detail{width:80%;aspect-ratio:1.64;justify-self:center}.pool__grid{display:grid;grid-template-columns:4fr 4fr 3fr;gap:clamp(22px,4vw,65px);align-items:center}.pool__first{aspect-ratio:3/4;align-self:start}.pool__second{aspect-ratio:3/5;margin-top:160px}.pool h2{font-size:clamp(2.5rem,3.5vw,3.7rem)}.pool__copy p{font-size:15px}
.beach{padding-top:0}.beach__intro{max-width:600px;margin:0 auto 60px;text-align:center}.beach__intro p{margin-inline:auto;max-width:440px}.beach__photos{display:grid;grid-template-columns:3fr 7fr;gap:32px;align-items:center}.beach__boardwalk{aspect-ratio:2/3}.beach__aerial{aspect-ratio:4/3}.beach__aerial img{object-position:50% 40%}
.form__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 18px}.field--full{grid-column:1/-1}.field label{display:block;font-size:13px;margin-bottom:8px}.field__optional{color:var(--muted)}.field input,.field select,.field textarea{width:100%;min-width:0;min-height:50px;padding:11px 13px;border:1px solid #728c7d;border-radius:2px;background:#f6f8f3;color:var(--sea);caret-color:var(--sea);transition:border-color .2s}.field textarea{resize:vertical;min-height:108px}.field input:hover,.field select:hover,.field textarea:hover{border-color:var(--sea)}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--sea);outline-offset:2px}.field [aria-invalid=true]{border-color:#9d342d}.field__error{color:#8e302c;font-size:13px;margin-top:7px}.form__note{font-size:12px;color:var(--muted);margin-top:15px;max-width:420px}.form__status{margin-top:22px;padding-block:15px;border-top:1px solid var(--sea);font-size:14px}.form__status.is-error{color:#8e302c}.enquiry-result{margin-top:20px}#enquiry-preview{white-space:pre-wrap;overflow-wrap:anywhere;max-width:100%;font:14px/1.6 var(--sans);padding:20px;background:var(--salt)}.text-button{padding:9px 0;border:0;border-bottom:1px solid var(--sea);background:none;color:var(--sea);min-height:44px;font-size:14px}
.site-footer{padding:75px 0 25px}.footer-brand{display:flex;gap:30px;align-items:center;text-decoration:none;font-family:var(--serif);font-size:clamp(2rem,4vw,4rem);line-height:1.2}.footer-brand img{width:74px}.footer-details{display:grid;grid-template-columns:1fr 1fr auto;gap:40px;align-items:start;margin-top:55px;color:var(--muted);font-size:14px}.footer-details em{font-family:var(--serif);font-size:21px;color:var(--sea)}.footer-details .text-link{color:var(--sea)}.footer-legal{display:flex;justify-content:space-between;gap:20px;font-size:12px;color:var(--muted);border-top:1px solid var(--line);margin-top:60px;padding-top:22px}.gallery{position:fixed;inset:0;width:min(1200px,94vw);max-width:none;max-height:96dvh;border:0;background:var(--salt);color:var(--sea);padding:20px 26px;overflow:auto}.gallery::backdrop{background:rgba(10,25,23,.9)}.gallery__top,.gallery__bottom{display:flex;align-items:center;justify-content:space-between;gap:25px}.gallery__top{margin-bottom:15px}.gallery__top p{font-family:var(--serif);font-size:22px}.gallery button{min-height:44px;border:0;border-bottom:1px solid var(--line);padding:8px 12px;background:none;color:var(--sea);font-size:14px}.gallery button:hover{background:var(--mist)}#gallery-image{height:min(68dvh,720px);width:100%;object-fit:contain}.gallery__bottom{margin-top:16px;font-size:14px}.gallery__bottom p{max-width:60ch}.gallery__controls{display:flex;gap:10px;align-items:center;white-space:nowrap}#gallery-count{font-variant-numeric:tabular-nums;min-width:42px;text-align:center}
/* A small crop shift connects scrolling with looking out from the terrace. */
@supports(animation-timeline:view()){@media(prefers-reduced-motion:no-preference){.terraces__panorama>img{animation:coastal-view linear both;animation-timeline:--terrace;animation-range:entry 0% exit 100%}@keyframes coastal-view{from{transform:scale(1.08) translateY(-2%)}to{transform:scale(1.08) translateY(2%)}}}}
@media(min-width:1600px){.hero{padding-bottom:80px}}
@media(max-width:1100px){.site-header{gap:16px}.site-header nav{gap:18px}.brand{font-size:20px;gap:9px}.brand img{width:32px;height:32px}.header-book{gap:15px}.pool__grid{grid-template-columns:1fr 1fr;gap:35px}.pool__first{grid-row:1/3}.pool__second{grid-column:2;width:65%;margin:0 0 0 auto;aspect-ratio:4/3}.pool__copy{grid-column:2;grid-row:1}}
@media(max-width:800px){:root{--header:80px}html{scroll-padding-top:140px}.site-header{grid-template-columns:1fr auto 1fr;padding-block:17px;gap:12px}.site-header nav{position:absolute;left:0;right:0;top:100%;display:none;background:var(--salt);color:var(--sea);padding:18px var(--gutter) 26px;border-bottom:1px solid var(--line);gap:15px}.site-header nav.is-open{display:flex;flex-direction:column;align-items:flex-start}.site-header nav a{font-size:22px;font-family:var(--serif);width:100%}.menu-toggle{display:block;justify-self:start;padding:9px 0;border:0;background:none;color:inherit;min-height:44px;font-size:13px}.site-header.menu-open{background:var(--salt);color:var(--sea)}.brand{flex-direction:column;font-size:19px;gap:3px}.brand img{width:30px;height:30px}.header-book{font-size:13px;padding:8px 0;border:0;border-bottom:1px solid currentColor;gap:10px}.site-header.is-scrolled{min-height:76px;padding-block:8px}.hero{min-height:780px;min-height:95svh;min-height:95dvh;padding-top:150px;padding-bottom:48px}.hero h1{font-size:clamp(3.3rem,8vw,4.6rem)}.hero__bottom{align-items:flex-start;flex-direction:column;gap:27px}.hero__bottom p{font-size:15px}.stay-strip{align-items:flex-start;padding-block:19px;font-size:13px}.stay-strip a{font-size:17px}.stay-strip small{display:block;font-size:11px;margin:2px 0 0}.chapter-nav{top:75px;justify-content:flex-start;gap:27px;overflow-x:auto;scrollbar-width:none}.chapter-nav::-webkit-scrollbar{display:none}.chapter-nav a{padding-block:15px 12px}.section-copy h2{font-size:2.8rem}.house__heading{margin-left:8%;margin-bottom:36px}.terraces__panorama{min-height:520px;height:75svh;padding-bottom:45px}.terraces__story{gap:35px;padding-top:45px}.terraces__story p{margin:0;font-size:16px}.terraces__detail{width:100%;aspect-ratio:4/5}.beach__photos{gap:22px;grid-template-columns:1fr 2fr}.footer-details{gap:25px;grid-template-columns:1fr 1fr}.footer-details>a{grid-column:1/-1;justify-self:start}.gallery__bottom{flex-direction:column;align-items:flex-start}.gallery__controls{align-self:center}}
@media(max-width:540px){.brand{font-size:16px}.brand img{width:27px;height:27px}.header-book span{display:none}.hero{min-height:730px;min-height:92svh;min-height:92dvh;padding-bottom:38px}.hero h1{font-size:clamp(2.75rem,9.9vw,3.5rem);max-width:440px}.hero h1 em{display:inline-block;max-width:340px}.hero__content{padding-top:20px}.hero__bottom{margin-top:20px}.hero__bottom p{font-size:14px}.button{font-size:13px;padding:13px 19px;gap:25px;min-height:48px}.stay-strip{flex-direction:column;gap:7px;padding-block:17px}.stay-strip>span{font-size:12px}.stay-strip small{display:inline;font-size:11px;margin-left:6px}.welcome p{font-size:15px}.welcome__mark{width:44px;margin-bottom:24px}.welcome h2{font-size:2.65rem}.chapter-nav{gap:25px}.chapter-nav a{font-size:12px}.section-copy h2{font-size:2.8rem}.section-copy p{font-size:15px}.house__heading{margin-left:0}.terraces__panorama{min-height:510px;height:72svh;padding-bottom:38px}.terraces h2{font-size:2.8rem}.terraces__panorama>img{object-position:57% 50%}.terraces__story{grid-template-columns:1fr 1fr;gap:22px;padding-top:32px}.terraces__story p{font-size:14px;line-height:1.6}.pool__grid{gap:25px 18px;grid-template-columns:1fr 1fr}.pool__copy{grid-column:1/-1;grid-row:1}.pool__first{grid-row:2;aspect-ratio:3/4}.pool__second{grid-column:2;grid-row:2;width:100%;aspect-ratio:3/4;margin-top:40px}.pool h2{font-size:2.8rem}.pool h2 em br{display:none}.pool__copy p{max-width:340px}.beach__intro{text-align:left;margin-bottom:32px}.beach__intro p{margin-left:0}.beach__photos{grid-template-columns:1fr;gap:20px}.beach__boardwalk{width:68%;aspect-ratio:4/5}.beach__aerial{aspect-ratio:1/1}.form__grid{gap:20px 14px}.field:not(.field--compact){grid-column:1/-1}.field input,.field select,.field textarea{font-size:16px;min-height:51px;padding-inline:10px}.footer-brand{gap:18px;font-size:2rem}.footer-brand img{width:49px}.footer-details{grid-template-columns:1fr;margin-top:35px;gap:28px}.footer-details>a{grid-column:auto}.footer-legal{margin-top:35px;font-size:11px}.gallery{padding:14px 16px;width:96vw}.gallery__top p{font-size:18px}.gallery__bottom{gap:8px}#gallery-image{height:62dvh}.gallery__bottom p{font-size:12px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.photo__button:hover img{transform:none}}


/* Hero entrance, as on tandrefruit.co.za: the photograph settles from a slight zoom, its shade fades in,
   then the headline, its second line and the line below rise in turn. Nothing moves for visitors who
   prefer reduced motion, and every part ends where it rests without the animation. */
@media(prefers-reduced-motion:no-preference){
.hero__image img{animation:hero-settle 9s cubic-bezier(.22,1,.36,1) both}
.hero:after{animation:hero-shade 1.4s cubic-bezier(.22,1,.36,1) both}
.hero h1,.hero h1 em,.hero__bottom{animation:hero-rise .9s cubic-bezier(.22,1,.36,1) both}
.hero h1{animation-delay:.3s}.hero h1 em{animation-delay:.5s}.hero__bottom{animation-delay:.7s}
}
@keyframes hero-settle{from{transform:scale(1.08)}to{transform:scale(1)}}
@keyframes hero-shade{from{opacity:0}to{opacity:1}}
@keyframes hero-rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}

/* Hero: the aerial is zoomed slightly on wide screens so the villa sits clear of the headline. */
@media(min-width:1100px){.hero__image img{width:114%;max-width:none;object-position:50% 88%}}
.hero__image picture{display:contents}
@media(min-width:701px) and (max-width:1099px){.hero__image img{object-position:55% 62%}}

/* Interiors (upstairs and downstairs) and the wide image bands */
.eyebrow{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 14px}
.interiors{margin-top:90px;display:grid;gap:80px}
.shot{min-width:0}.shot figcaption{font-size:13px;color:var(--muted);margin-top:12px}
.shot__image{width:100%}
.shot--lead .shot__image{aspect-ratio:16/8}.shot--lead img{object-position:50% 55%}
.interiors__pair{display:grid;grid-template-columns:5fr 7fr;gap:24px;margin-top:32px;align-items:start}
.shot--kitchen .shot__image,.shot--table .shot__image{height:440px}.shot--table img{object-position:50% 60%}
.interiors__duo{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}
.shot--hall .shot__image,.shot--ground .shot__image{height:420px}.shot--ground img{object-position:50% 55%}
.band{margin-top:80px}.terraces .band{margin-top:90px}
.shot--band .shot__image{aspect-ratio:21/9}.shot--band img{object-position:50% 60%}.pool .shot--band img{object-position:50% 62%}
@media(max-width:700px){
.interiors{margin-top:56px;gap:56px}
.shot--lead .shot__image,.shot--band .shot__image{aspect-ratio:4/3}
.interiors__pair,.interiors__duo{grid-template-columns:1fr;gap:28px}.interiors__pair{margin-top:28px}
.shot--kitchen .shot__image,.shot--table .shot__image,.shot--hall .shot__image,.shot--ground .shot__image{height:auto;aspect-ratio:4/3}
.band,.terraces .band{margin-top:40px}.shot figcaption{font-size:12px}
}

/* Photo carousel: a sideways strip, moved by its arrows, by swiping or the trackpad, and every few seconds
   on its own (js/main.js), pausing while the pointer or keyboard focus is on it. The page itself always
   scrolls normally past it. Visitors who prefer reduced motion get the arrows without the autoplay. */
.carousel{--sh:min(560px,calc(100svh - 200px));position:relative;background:var(--sea);color:var(--salt)}
.carousel__stage{position:relative;overflow-x:auto;overflow-y:hidden;padding-block:76px 28px;scroll-snap-type:x proximity;scroll-padding-inline:var(--gutter);scrollbar-width:none;overscroll-behavior-x:contain}
.carousel__stage::-webkit-scrollbar{display:none}
.carousel__stage:focus-visible{outline-offset:-6px}
.carousel__track{display:flex;align-items:center;gap:40px;width:max-content;padding:0 var(--gutter)}
.carousel__intro{flex:none;width:min(520px,80vw)}
.carousel__intro h2{font-size:clamp(2.6rem,4.4vw,4.5rem)}
.carousel__intro p{color:var(--haze);font-size:16px;margin-top:25px;max-width:380px}
.carousel__intro .carousel__hint{font-size:13px;margin-top:32px}
.carousel__slide{flex:none;margin:0;overflow:hidden;background:var(--sea2);scroll-snap-align:start}
.carousel__slide img{width:100%;height:100%;object-fit:cover}
.carousel__slide--wide{height:var(--sh);aspect-ratio:3/2}
.carousel__controls{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:0 var(--gutter) 64px;color:var(--salt)}
.carousel__controls button{display:grid;place-items:center;width:48px;height:48px;padding:0;border:1px solid rgba(246,247,243,.45);border-radius:2px;background:none;color:inherit;font-size:20px;line-height:1;cursor:pointer;transition:background .2s,color .2s,border-color .2s}
.carousel__controls button:hover:not(:disabled){background:var(--salt);border-color:var(--salt);color:var(--sea)}
.carousel__controls button:disabled{cursor:default;opacity:.35}
[data-swipe-count]{min-width:56px;text-align:center;font-size:13px;color:var(--haze);font-variant-numeric:tabular-nums}
@media(max-width:700px){
.carousel{--sh:min(460px,calc(100svh - 200px))}
.carousel__track{gap:20px}
.carousel__intro{width:280px}
.carousel__intro h2{font-size:2.65rem}.carousel__intro p{font-size:15px}
.carousel__slide--wide{height:calc(var(--sh)*.64)}
}

/* Rates */
.rates{border-top:1px solid var(--line)}

/* ---------- Rooms: a full-width band, then copy beside a pair of portraits ---------- */
.rooms{padding-bottom:var(--section)}
.rooms__band{position:relative;isolation:isolate;display:flex;align-items:flex-end;min-height:680px;overflow:hidden;background:var(--sea);color:white;padding:0 var(--gutter) 56px}
.rooms__bandimg{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:50% 58%}
.rooms__shade{position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(8,25,22,.22) 0%,rgba(8,25,22,0) 30%,rgba(8,25,22,.72) 100%)}
.rooms__bandinner{width:min(100%,1320px);margin-inline:auto;display:flex;align-items:flex-end;justify-content:space-between;gap:48px}
.rooms__head .eyebrow{color:inherit;margin-bottom:18px}
.rooms__head h2{font-size:clamp(2.8rem,5vw,4.5rem);line-height:1.1}
.room-facts{display:flex;margin:0 0 10px}
.room-facts>div{padding:0 36px;border-left:1px solid rgba(255,255,255,.45)}
.room-facts>div:first-child{padding-left:0;border-left:0}
.room-facts>div:last-child{padding-right:0}
.room-facts dt{font-size:12px;letter-spacing:.06em;text-transform:uppercase;opacity:.9}
.room-facts dd{font-family:var(--serif);font-size:44px;line-height:1.25;margin-top:4px;white-space:nowrap}
.room-facts small{font-family:var(--sans);font-size:13px}
.rooms__body{display:grid;grid-template-columns:4fr 7fr;gap:clamp(48px,7vw,100px);align-items:start;margin-top:90px}
.rooms__copy>p:first-child{margin-top:0}
.rooms__copy .rate{margin-top:32px;max-width:410px}
.rooms__copy .rate strong{font-size:22px;font-weight:500;color:var(--sea);margin:0 5px}
.rooms__pair{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.rooms__pair .shot__image{aspect-ratio:4/5}
.rooms__shot--a img{object-position:50% 50%}.rooms__shot--b img{object-position:66% 50%}
@media(max-width:1100px){.rooms__body{grid-template-columns:5fr 6fr;gap:48px}}
@media(max-width:800px){.rooms__body{grid-template-columns:1fr;gap:36px;margin-top:64px}.rooms__copy{max-width:520px}}
@media(max-width:700px){
.rooms{padding-bottom:80px}
.rooms__band{display:block;min-height:0;padding:0;overflow:visible;background:none;color:var(--sea)}
.rooms__bandimg,.rooms__shade{bottom:auto;height:500px}
.rooms__bandimg{object-position:38% 55%}
.rooms__bandinner{display:block;padding-inline:var(--gutter)}
.rooms__head{display:flex;flex-direction:column;justify-content:flex-end;min-height:500px;padding-bottom:32px;color:white}
.rooms__head .eyebrow{margin-bottom:14px}
.rooms__head h2{font-size:2.8rem}
.room-facts{margin:40px 0 0;padding-bottom:24px;border-bottom:1px solid var(--line)}
.room-facts>div{padding:0 22px;border-left-color:var(--line)}
.room-facts>div:first-child{padding-left:0}
.room-facts>div:last-child{padding-right:0}
.room-facts dt{font-size:11px;color:var(--muted);opacity:1}
.room-facts dd{font-size:32px}
.rooms__body{margin-top:28px;gap:0}
.rooms__pair{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-left:var(--gutter);margin:40px calc(var(--gutter)*-1) 0;padding:0 var(--gutter) 6px;scrollbar-width:none}
.rooms__pair::-webkit-scrollbar{display:none}
.rooms__pair .shot{flex:none;width:76%;scroll-snap-align:start}
}

/* ---------- House: the photo carousel, then the downstairs interiors ---------- */
.interiors{margin-top:80px}
@media(min-width:1100px){.interiors__group--upstairs{display:none}}
/* Sized so the photographs and their arrows fit between the sticky header and the enquire bar. */
.carousel--house{--hh:clamp(360px,calc(100svh - 360px),600px)}
.carousel--house .carousel__stage{padding-top:48px}
.carousel--house .carousel__controls{padding-bottom:48px}
.carousel--house .carousel__track{gap:56px}
.carousel--house .carousel__intro{width:380px;margin-right:var(--gutter)}
.carousel--house .carousel__intro .carousel__lede{font-family:var(--serif);font-style:italic;font-size:clamp(2rem,3vw,2.75rem);line-height:1.25;color:var(--salt);margin:0;max-width:none}
.carousel--house .carousel__slide{height:calc(var(--hh)*var(--k,1));aspect-ratio:2/3}
.carousel--house .carousel__slide--wide{aspect-ratio:3/2}
@media(max-width:700px){
.carousel--house{--hh:min(480px,calc(100svh - 220px))}
.carousel--house .carousel__track{gap:28px}
.carousel--house .carousel__intro{width:260px}
.carousel--house .carousel__intro .carousel__lede{font-size:1.875rem}
}

/* ---------- Rates: one card per season ---------- */
.rates__intro{text-align:center;max-width:640px;margin:0 auto}
.rates__intro .eyebrow{margin-bottom:18px}
.rates__intro h2{font-size:clamp(2.8rem,4.4vw,4.5rem)}
.rates__intro>p:not(.eyebrow){color:var(--muted);font-size:17px;margin:24px auto 0;max-width:440px}
.rates__cards{list-style:none;margin:64px 0 0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:20px}
.rate-card{display:flex;flex-direction:column;background:var(--mist);color:var(--sea)}
.rate-card__image{position:relative;aspect-ratio:4/5;overflow:hidden;background:var(--sea2)}
.rate-card__image img{width:100%;height:100%;object-fit:cover}
.rate-card__tag{position:absolute;left:16px;top:16px;padding:5px 10px;background:var(--salt);color:var(--sea);font-size:11px;line-height:1.4;letter-spacing:.06em;text-transform:uppercase;border-radius:2px}
.rate-card__body{display:flex;flex-direction:column;flex:1;padding:24px 22px}
.rate-card h3{margin:0;font-family:var(--serif);font-weight:400;font-size:28px;line-height:1.15}
.rate-card__dates{font-size:13px;color:var(--muted);margin-top:4px}
.rate-card__price{font-size:30px;font-weight:500;letter-spacing:-.01em;line-height:1.2;margin-top:26px;white-space:nowrap;font-variant-numeric:tabular-nums}
.rate-card__price--split{display:flex;flex-direction:column;gap:10px;white-space:normal}
.rate-card__price--split span{display:block;white-space:nowrap}
.rate-card__price--split small{display:block;margin-top:1px;font-size:12px;font-weight:400;letter-spacing:.04em;color:var(--muted)}
.rate-card__unit{font-size:12px;color:var(--muted);margin-bottom:auto}
.rate-card__min{margin-top:22px;padding-top:16px;border-top:1px solid var(--rule);font-size:13px}
.rates__cards.is-collapsed .rate-card--extra{display:none}
.rate-card--extra{animation:rate-reveal .4s ease both}
@keyframes rate-reveal{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.rate-card--extra{animation:none}}
.rates__more{display:flex;justify-content:center;margin-top:28px}
.rates__more-btn{min-height:44px;padding:10px 4px;border:0;border-bottom:1px solid currentColor;background:none;color:var(--sea);font:inherit;font-size:15px;cursor:pointer}
.rates__more-btn:hover{opacity:.7}
.rates__more-btn[hidden]{display:none}
.rate-card--peak{background:var(--sea);color:var(--salt)}
.rate-card--peak .rate-card__dates,.rate-card--peak .rate-card__unit{color:var(--haze)}
.rate-card--peak .rate-card__min{border-top-color:rgba(246,247,243,.3)}
/* Preview-only review marks. Hidden unless #rates has .rates-preview.
   Remove them by setting RATES_PREVIEW = False in tools/build_index.py and regenerating. */
.rates-preview__badge,.rates-preview__was{display:none}
.rates-preview .rates-preview__badge{display:inline-block;margin-left:8px;padding:3px 7px;vertical-align:2px;background:var(--salt);color:var(--sea);border:1px solid var(--sea);border-radius:2px;font-family:var(--sans);font-size:10px;font-weight:600;letter-spacing:.08em;line-height:1.4;text-transform:uppercase}
.rates-preview .rate-card--peak .rates-preview__badge{background:transparent;color:var(--salt);border-color:var(--haze)}
.rates-preview .rate-card__mark{background:color-mix(in srgb, var(--haze) 70%, transparent);box-decoration-break:clone;-webkit-box-decoration-break:clone}
.rates-preview .rate-card--peak .rate-card__mark{background:color-mix(in srgb, var(--salt) 28%, transparent)}
.rates-preview .rates-preview__was{display:inline;color:var(--muted);text-decoration:line-through;font-size:12px;margin-left:6px}
.stay-terms{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:56px 0 0;border-block:1px solid var(--line)}
.stay-terms>div{padding:26px 0 26px 28px;border-left:1px solid var(--line)}
.stay-terms>div:first-child{padding-left:0;border-left:0}
.stay-terms dt{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.stay-terms dd{font-size:22px;margin-top:6px}
.rates__foot{display:flex;align-items:center;justify-content:space-between;gap:32px;margin-top:32px}
.rates__foot p{font-size:13px;color:var(--muted);max-width:520px}
@media(max-width:1100px){
.rates__cards{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-left:var(--gutter);margin:40px calc(var(--gutter)*-1) 0;padding:0 var(--gutter) 8px}
.rate-card{flex:none;width:236px;scroll-snap-align:start}
}
@media(max-width:700px){
.rates__intro{text-align:left;max-width:none;margin:0}
.rates__intro>p:not(.eyebrow){font-size:15px;margin:22px 0 0}
.rates__cards{margin-top:32px}
.stay-terms{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:32px}
.stay-terms>div{padding:18px 0 18px 16px}
.stay-terms>div:nth-child(odd){padding-left:0;border-left:0}
.stay-terms>div:nth-child(n+3){border-top:1px solid var(--line)}
.stay-terms>div:last-child{grid-column:1/-1}
.stay-terms dd{font-size:19px}
.rates__foot{display:block}
.rates__foot p{font-size:12px;margin-top:20px}
.rates__foot .button{display:flex;margin-top:20px}
}

/* ---------- Enquire: a beach photograph with the form on a salt-coloured panel ---------- */
.enquire{position:relative;isolation:isolate;overflow:hidden;background:var(--sea);color:var(--salt)}
.enquire__photo{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:50% 72%}
.enquire__shade{position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(8,25,22,.74) 0%,rgba(8,25,22,.44) 50%,rgba(8,25,22,.12) 100%)}
.enquire__inner{display:grid;grid-template-columns:5fr 6fr;grid-template-rows:auto 1fr;column-gap:clamp(48px,7.6vw,110px);align-items:start}
.enquire__head{grid-column:1;grid-row:1}
.enquire__side{grid-column:1;grid-row:2}
.enquire__panel{grid-column:2;grid-row:1/3;background:var(--salt);color:var(--sea);padding:44px 44px 40px;box-shadow:0 30px 80px rgba(8,25,22,.35)}
.enquire__head .eyebrow{color:inherit;margin-bottom:18px}
.enquire__head h2{font-size:clamp(2.8rem,4.4vw,4.5rem)}
.enquire__lede{color:var(--soft);max-width:390px}
.enquire__head .enquire__lede{margin-top:26px}
.enquire__lede--panel{display:none}
.stay-facts{margin:40px 0 0}
.stay-facts>div{display:grid;grid-template-columns:100px 1fr;gap:20px;border-top:1px solid rgba(246,247,243,.3);padding:18px 0}
.stay-facts dt{font-size:13px;color:var(--haze)}
.stay-facts dd{font-size:16px}
.stay-facts small{color:var(--haze);font-size:13px}
.stay-question{border-top:1px solid rgba(246,247,243,.3);padding:13px 0;font-size:14px}
.stay-question:last-child{border-bottom:1px solid rgba(246,247,243,.3)}
.stay-question summary{cursor:pointer;min-height:30px;padding-block:3px}
.stay-question p{font-size:14px;color:var(--soft);padding-block:12px}
.form__heading{max-width:none;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-bottom:12px;border-bottom:1px solid var(--line);margin:0 0 20px}
.form__heading--details{margin-top:36px}
.estimate{margin-top:24px;background:var(--mist);padding:22px 24px 20px}
.estimate__label{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.estimate__output{display:block;margin-top:8px}
.estimate__row{display:flex;align-items:baseline;justify-content:space-between;gap:16px}
.estimate__row[hidden]{display:none}
.estimate__total{font-size:38px;font-weight:500;letter-spacing:-.01em;line-height:1.2;font-variant-numeric:tabular-nums}
.estimate__total.is-text{font-size:24px}
.estimate__nights{font-size:14px;color:var(--muted);white-space:nowrap}
.estimate__detail{display:block;max-width:none;font-size:13px;color:var(--muted);margin-top:6px}
.estimate__output.is-empty .estimate__detail{margin-top:0;font-size:15px;color:var(--sea)}
.estimate__note{max-width:none;font-size:13px;color:var(--muted);margin-top:12px;padding-top:12px;border-top:1px solid var(--rule)}
.field--trap{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.enquire__panel .button{display:flex;width:100%;min-height:52px;margin-top:28px;font-size:14px}
.enquire__panel .form__note{max-width:none}
.enquiry-thanks{padding:12px 0 8px;outline:0}
.enquiry-thanks p{max-width:none}
.enquiry-thanks__lead{font-family:var(--serif,inherit);font-size:clamp(1.5rem,2.4vw,2rem);line-height:1.3;margin:0 0 20px;padding-bottom:20px;border-bottom:1px solid var(--line)}
.enquiry-thanks a{font-weight:500;overflow-wrap:anywhere}
@media(max-width:1100px){.enquire__panel{padding:36px}}
@media(max-width:900px){
.enquire{padding-block:0 72px;background:var(--mist);color:var(--sea)}
.enquire__photo,.enquire__shade{bottom:auto;height:380px}
.enquire__shade{background:linear-gradient(180deg,rgba(8,25,22,.3) 0%,rgba(8,25,22,.2) 40%,rgba(8,25,22,.8) 100%)}
.enquire__inner{grid-template-columns:minmax(0,1fr);grid-template-rows:none;width:min(100% - var(--gutter)*2,680px)}
.enquire__head{grid-row:1;display:flex;flex-direction:column;justify-content:flex-end;min-height:380px;padding-bottom:76px;color:white}
.enquire__head h2{font-size:3.2rem}
.enquire__head .enquire__lede{display:none}
.enquire__lede--panel{display:block;color:var(--muted);font-size:15px;max-width:none;margin-bottom:14px}
.enquire__panel{grid-column:1;grid-row:2;position:relative;margin-top:-48px;padding:28px 22px;box-shadow:0 20px 50px rgba(8,25,22,.25)}
.enquire__side{grid-column:1;grid-row:3;padding-top:44px;color:var(--sea)}
.stay-facts{margin:0}
.stay-facts>div{grid-template-columns:90px 1fr;border-top-color:var(--rule)}
.stay-facts dt,.stay-facts small{color:var(--muted)}
.stay-question{border-top-color:var(--rule)}
.stay-question:last-child{border-bottom-color:var(--rule)}
.stay-question p{color:var(--muted)}
}
@media(max-width:540px){.estimate__total{font-size:34px}.estimate__total.is-text{font-size:22px}}

/* Phone adaptation only. The incumbent layouts at 701px and above stay intact. */
.mobile-only{display:none}
@media(max-width:700px){
  :root{--header:64px;--section:64px}
  html{scroll-padding-top:84px}
  body{padding-bottom:calc(84px + env(safe-area-inset-bottom,0px))}
  .site-header,.site-header.is-scrolled{position:fixed;min-height:64px;padding:8px var(--gutter);grid-template-columns:minmax(0,1fr) auto;gap:10px;background:var(--salt);color:var(--sea);border-bottom:1px solid var(--line)}
  .site-header .brand{grid-column:1;grid-row:1;flex-direction:row;gap:8px;font-size:clamp(17px,4.8vw,21px);justify-self:start;min-height:44px}
  .site-header .brand img{width:28px;height:28px;filter:brightness(0) saturate(100%) invert(19%) sepia(25%) saturate(968%) hue-rotate(125deg)}
  .menu-toggle{grid-column:2;grid-row:1;justify-self:end;min-width:54px;min-height:44px;padding:8px 10px;font-size:14px;border:1px solid var(--line);border-radius:2px}
  .site-header nav{padding:12px var(--gutter) 20px;gap:4px;max-height:calc(100dvh - 64px);overflow-y:auto}
  .site-header nav a{min-height:48px;padding:8px 0;font-size:24px}
  .site-header nav .mobile-only{display:block}
  .header-book{display:none}
  .hero{display:block;container-type:inline-size;min-height:max(568px,100svh);padding:64px 0 0;background:var(--salt);color:var(--sea)}
  .hero__image{inset:64px 0 0}
  .hero__image img{object-position:50% 100%}
  .hero:after{display:none}
  /* Centre the headline in the visible sky; the portrait's roof starts at 66%. */
  .hero__content{--photo-height:max(504px,calc(100svh - 64px));--drawn-height:max(var(--photo-height),calc(100cqw * 1.778));height:calc(var(--photo-height) - var(--drawn-height) * .34);display:flex;align-items:center;justify-content:center;padding:0 var(--gutter);text-align:center}
  .hero h1{font-size:clamp(38px,10.4vw,56px);padding-bottom:0;text-shadow:none}
  .hero__bottom{display:none}
  .stay-strip{gap:8px;padding-block:20px}
  .stay-strip a{display:block;min-height:44px;padding-block:8px;font-size:20px}
  .stay-strip small{display:block;margin:0;font-size:12px}
  .welcome p,.section-copy p,.terraces__story p,.pool__copy p,.rates__intro>p:not(.eyebrow){font-size:16px;line-height:1.7}
  .welcome h2,.section-copy h2,.rooms__head h2,.terraces h2,.pool h2,.rates__intro h2{font-size:clamp(34px,9.5vw,46px)}
  .chapter-nav{position:relative;top:auto;gap:24px;scroll-padding-inline:var(--gutter)}
  .chapter-nav a{font-size:13px;min-height:48px;padding-block:13px 12px}
  .rooms{padding-bottom:64px}
  .rooms__bandimg,.rooms__shade{height:420px}
  .rooms__head{min-height:420px}
  .room-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:28px}
  .room-facts>div{padding-inline:12px}
  .room-facts dd{font-size:30px;line-height:1.35}
  .room-facts dd small{display:block;font-size:12px}
  .rooms__pair .photo__open{opacity:1;transform:none}
  .house__intro{gap:32px;margin-bottom:40px}
  .amenities{gap:22px 10px}
  .amenity__icon{width:clamp(48px,15vw,64px)}
  .amenity__label{font-size:13px}

  /* The same strip at phone size, using all sixteen original scales. */
  .carousel--house{--hh:clamp(320px,95vw,410px);padding-block:32px 20px}
  .mobile-gallery__head{display:flex;flex-direction:column;gap:12px;padding:0 var(--gutter) 24px;color:var(--salt)}
  .mobile-gallery__head p{font-family:var(--serif);font-size:clamp(28px,7.6vw,36px);line-height:1.2}
  .mobile-gallery__head>span{font-size:13px;color:var(--haze)}
  .carousel--house .carousel__stage{position:relative;top:auto;height:auto;min-height:0;display:block;padding:6px 0 16px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;scroll-padding-inline:var(--gutter);scrollbar-width:none;overscroll-behavior-x:contain}
  .carousel--house .carousel__track{gap:20px;padding-inline:var(--gutter)}
  .carousel--house .carousel__intro{display:none}
  .carousel--house .carousel__slide{scroll-snap-align:start}
  .carousel--house .carousel__slide--wide{height:calc(var(--hh)*var(--k)*.75)}
  .carousel__controls{justify-content:space-between;padding:8px var(--gutter) 0}
  .interiors{margin-top:56px;gap:48px}
  .interiors__pair,.interiors__duo{gap:24px}
  .band,.terraces .band{margin-top:40px}
  .terraces__panorama{min-height:440px;height:66svh;max-height:600px;padding-bottom:32px}
  .terraces__story{grid-template-columns:1fr;gap:28px;padding-top:32px}
  .terraces__story p{max-width:none}
  .terraces__detail{aspect-ratio:4/3}
  .pool__grid{gap:28px 16px}
  .pool__copy{grid-column:1/-1;grid-row:1}
  .pool__copy p{max-width:none}
  .pool__first{grid-row:2;aspect-ratio:3/4}
  .pool__second{grid-column:2;grid-row:2;width:100%;aspect-ratio:3/4;margin-top:28px}
  .beach__intro{text-align:left;margin-bottom:28px}
  .beach__intro p{margin-left:0}
  .beach__photos{grid-template-columns:1fr;gap:20px}
  .beach__boardwalk{width:100%;aspect-ratio:4/3}
  .beach__aerial{aspect-ratio:4/3}

  /* Every season remains visible in the normal reading flow. */
  .rates__cards{display:grid;grid-template-columns:1fr;gap:14px;overflow:visible;margin:28px 0 0;padding:0;scroll-snap-type:none}
  .rate-card{display:grid;grid-template-columns:clamp(72px,24vw,112px) minmax(0,1fr);width:auto}
  .rate-card--extra{grid-template-columns:1fr}
  .rate-card__image{aspect-ratio:auto;height:100%;min-height:190px}
  .rate-card__tag{inset:8px 8px auto;font-size:11px;padding:4px 6px;text-align:center}
  .rate-card__body{padding:16px}
  .rate-card h3{font-size:25px}
  .rate-card__dates{font-size:12px;line-height:1.5}
  .rate-card__price{font-size:27px;margin-top:14px}
  .rate-card__price--split{gap:8px}
  .rates-preview .rates-preview__badge{margin-left:6px;padding:2px 5px}
  .rate-card__min{margin-top:12px;padding-top:10px;font-size:12px}
  .rates__foot p{font-size:13px}
  .stay-terms dd{font-variant-numeric:tabular-nums}

  .enquire__head h2{font-size:44px}
  .enquire__panel{padding:26px 18px;box-shadow:0 12px 32px rgba(8,25,22,.18)}
  .enquire__lede--panel{font-size:16px}
  .form__grid{grid-template-columns:1fr;gap:20px}
  .field{grid-column:1/-1}
  .field label{font-size:14px}
  .field input,.field select,.field textarea{font-size:16px;min-height:52px;padding:12px}
  .estimate{padding:18px 16px}
  .estimate__row{flex-wrap:wrap;gap:6px 12px}
  .estimate__total{font-size:32px}
  .stay-question summary{min-height:44px;padding-block:10px}
  .stay-facts>div{grid-template-columns:72px minmax(0,1fr);gap:14px}
  .footer-brand{font-size:clamp(24px,7vw,34px);gap:12px}
  .footer-brand img{width:42px}
  .footer-details{grid-template-columns:1fr}
  .footer-legal{flex-wrap:wrap;gap:8px 16px}
}

/* ---------- Contact page ---------- */
.button--outline{background:transparent;color:var(--sea)}
.button--outline:hover{background:var(--sea);color:var(--salt)}
.footer-links{display:flex;flex-direction:column;align-items:flex-start;gap:2px}
.form__message-limit{font-size:12px;margin-top:7px}
.form__consent{margin-top:24px}
.form__consent label{display:grid;grid-template-columns:22px minmax(0,1fr);gap:12px;align-items:start;min-height:44px;padding-block:4px;font-size:14px;line-height:1.6;cursor:pointer}
.form__consent input{width:22px;height:22px;margin-top:2px;accent-color:var(--sea);cursor:pointer}
.form__consent input:focus-visible{outline:2px solid var(--sea);outline-offset:4px}
.form__consent p{margin:7px 0 0 34px;font-size:12px;color:var(--muted)}
.form__privacy{font-size:13px;margin:20px 0 24px;line-height:1.65}
.form__privacy a{color:var(--sea);text-underline-offset:.2em}
/* Native navigation remains usable if the enhancement script is unavailable. */
.navigation-fallback{display:none}
@media(max-width:800px){
  .site-header:not(.navigation-ready)>.navigation-fallback{display:block;grid-column:1;grid-row:1;justify-self:start}
  .navigation-fallback summary{min-height:44px;padding:9px 0;font-size:13px;cursor:pointer;list-style:none;outline-offset:5px}
  .navigation-fallback summary::-webkit-details-marker{display:none}
  .navigation-fallback[open] nav{display:flex;flex-direction:column;align-items:flex-start;z-index:2}
}
@media(max-width:700px){
  .site-header:not(.navigation-ready)>.navigation-fallback{grid-column:2;justify-self:end}
  .navigation-fallback summary{min-width:54px;padding:8px 10px;font-size:14px;border:1px solid var(--line);border-radius:2px}
}
.policy{padding-top:76px}
.policy__inner{max-width:76ch;padding-block:clamp(52px,7vw,100px) var(--section)}
.policy h1{font-size:clamp(3rem,5.6vw,5rem);line-height:1.1;margin-bottom:24px}
.policy__updated{color:var(--muted);font-size:13px;margin-bottom:48px}
.policy section+section{margin-top:42px}
.policy h2{font-size:clamp(1.65rem,3vw,2.15rem);line-height:1.2;margin-bottom:18px}
.policy p,.policy li{font-size:16px;line-height:1.8}
.policy p+p,.policy ul{margin-top:18px}
.policy ul{padding-left:24px}
.policy li+li{margin-top:6px}
.policy a{color:var(--sea);text-underline-offset:.2em;overflow-wrap:anywhere}
@media(max-width:700px){.page-policy,.page-faq{padding-bottom:0}.page-policy .header-book,.page-faq .header-book{display:none}.policy,.faq{padding-top:64px}.policy__inner,.faq__inner{padding-block:48px 64px}.policy p,.policy li,.faq p,.faq dd{font-size:15px}.policy__updated{margin-bottom:36px}.faq h1{font-size:clamp(32px,9vw,42px)}}
.site-header nav a[aria-current=page]{text-decoration:underline;text-underline-offset:.45em}
.contact{padding-top:76px}
.contact__intro{padding-block:clamp(56px,8vw,112px) clamp(40px,5vw,72px)}
.contact__intro h1{font-size:clamp(3rem,5.6vw,5rem);line-height:1.1}
.contact__lede{color:var(--muted);font-size:17px;margin-top:26px;max-width:540px}
.contact__lede a{color:var(--sea)}
.contact__main{display:grid;grid-template-columns:5fr 6fr;gap:clamp(48px,7.6vw,110px);align-items:start;padding-bottom:var(--section)}
.contact-list{margin:0;border-bottom:1px solid var(--line)}
.contact-list>div{padding:26px 0;border-top:1px solid var(--line)}
.contact-list dt{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.contact-list dd{font-family:var(--serif);font-size:clamp(1.5rem,2.4vw,2rem);line-height:1.3;margin-top:8px;overflow-wrap:anywhere}
.contact-list dd a{text-decoration:none;border-bottom:1px solid currentColor}
.contact-list dd a:hover{border-bottom-width:2px}
.contact-list small{display:block;font-family:var(--sans);font-size:13px;line-height:1.55;color:var(--muted);margin-top:8px;max-width:34ch}
.contact__panel{background:var(--mist);padding:44px}
.contact__actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.contact__actions .button{flex:1 1 180px;min-height:52px}
.contact__panel .form__note{max-width:none}
.contact__map{border-top:1px solid var(--line);padding-top:var(--section)}
.contact__map h2{font-size:clamp(2.6rem,4.4vw,4.5rem)}
.map-frame{margin-top:44px;height:clamp(340px,44vw,540px);background:var(--mist)}
.map-frame iframe{display:block;width:100%;height:100%;border:0}
.map-links{display:flex;flex-wrap:wrap;align-items:center;gap:12px 40px;padding-block:24px 64px}
.map-links p{font-size:14px;color:var(--muted);margin-right:auto}
.map-links small{font-size:12px;font-variant-numeric:tabular-nums}
@media(max-width:1100px){.contact__panel{padding:36px}}
@media(max-width:900px){.contact__main{grid-template-columns:minmax(0,1fr);gap:40px}}
@media(max-width:800px){.footer-details>.footer-links{grid-column:1/-1}}
@media(max-width:700px){
  .page-contact{padding-bottom:0}
  .page-contact .site-header .header-book{display:none}
  .contact{padding-top:64px}
  .contact__intro{padding-block:44px 32px}
  .contact__intro h1{font-size:clamp(2.6rem,11vw,3.4rem)}
  .contact__lede{font-size:16px}
  .contact__panel{padding:26px 18px}
  .contact__actions{flex-direction:column}
  .contact__actions .button{flex:none;width:100%}
  .map-frame{margin-top:32px;height:380px}
  .map-links{padding-bottom:48px}
  .map-links p{flex-basis:100%}
}

/* Sticky enquire bar: WhatsApp, email and the form. Home page only. */
html{scroll-padding-bottom:88px}
.book-bar{position:fixed;z-index:12;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;max-width:100%;box-sizing:border-box;padding:10px var(--gutter) calc(10px + env(safe-area-inset-bottom,0px));background:var(--sea);color:var(--salt);box-shadow:0 -8px 28px rgba(8,25,22,.16)}
.book-bar__jumps,.book-bar__actions{display:flex;align-items:center;gap:8px;min-width:0}
.book-bar a{color:inherit;text-decoration:none;font-size:14px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap}
.book-bar__jumps a{padding:8px 10px;border-bottom:1px solid transparent}
.book-bar__jumps a:hover{border-bottom-color:currentColor}
.book-bar__actions a{padding:8px 14px;border:1px solid rgba(246,247,243,.4);border-radius:2px}
.book-bar .header-enquire{background:var(--salt);color:var(--sea);border-color:var(--salt);gap:10px}
.book-bar .header-enquire:hover{background:var(--white)}
.menu-open .book-bar,.enquiry-in-view .book-bar,body:has(dialog[open]) .book-bar{display:none}
.menu-open .header-enquire,.enquiry-in-view .header-enquire,body:has(dialog[open]) .header-enquire{display:none}
@media(min-width:701px){
  .page-home{padding-bottom:76px}
  .page-home .hero{padding-bottom:140px}
}
@media(max-width:1200px){
  .chapter-nav{justify-content:flex-start;overflow-x:auto;scrollbar-width:none;max-width:100%}
  .chapter-nav::-webkit-scrollbar{display:none}
}
@media(max-width:1100px) and (min-width:801px){
  .site-header nav .nav-coast{display:none}
}
@media(max-width:900px){.book-bar__jumps{display:none}}
@media(max-width:700px){
  .book-bar{gap:8px;padding-inline:12px;justify-content:stretch}
  .book-bar__jumps{display:none}
  .book-bar__actions{flex:1}
  .book-bar__actions a{flex:1 1 0;padding-inline:6px;font-size:13px}
}


/* West Coast facts. */
.coast{border-top:1px solid var(--line)}
.coast__grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(40px,6vw,88px);align-items:start}
.coast .section-copy p{max-width:58ch}
.coast-list{margin:0}
.coast-list>div{padding:18px 0;border-top:1px solid var(--line)}
.coast-list>div:last-child{border-bottom:1px solid var(--line)}
.coast-list dt{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.coast-list dd{font-family:var(--serif);font-size:clamp(1.55rem,2.4vw,2rem);line-height:1.25;margin-top:6px}
.coast-list small{display:block;font-family:var(--sans);font-size:14px;line-height:1.55;color:var(--muted);margin-top:8px;max-width:42ch}
.coast__links{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin-top:12px}
@media(max-width:800px){.coast__grid{grid-template-columns:1fr}}

/* How a stay is held. The answers live on /faq; the home page keeps a short link. */
.rates__faq{margin-top:28px;max-width:62ch;color:var(--muted);font-size:15px}
.rates__faq a{color:var(--sea)}
.faq{padding-top:76px}
.faq__inner{max-width:76ch;padding-block:clamp(52px,7vw,100px) var(--section)}
.faq h1{font-size:clamp(2.6rem,5vw,4.4rem);line-height:1.12;margin-bottom:24px}
.faq h1 em{font-style:italic}
.faq__place{color:var(--muted);font-size:14px;margin-bottom:18px}
.faq__inner>p{color:var(--muted);max-width:62ch}
.faq__next{margin-top:36px}
.hold-list{margin:28px 0 0}
.hold-list>div{padding:16px 0;border-top:1px solid var(--line)}
.hold-list>div:last-child{border-bottom:1px solid var(--line)}
.hold-list dt{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.hold-list dd{margin:6px 0 0;font-size:16px;max-width:68ch}
.form__paths{font-size:14px;margin-top:16px;max-width:52ch;line-height:1.6}
.form__paths a{color:var(--sea)}
@media(max-width:700px){.coast-list dd{font-size:1.7rem}}
/* Heading kickers: a short descriptive line inside a heading, set like the eyebrow labels. */
.kicker{display:block;font-family:var(--sans);font-style:normal;font-weight:400;line-height:1.5;text-wrap:balance}
.kicker.eyebrow{margin-bottom:16px}
.kicker.faq__place{letter-spacing:0}
.hero .kicker,.terraces__title .kicker{color:inherit;opacity:.9}
.hero .kicker{margin-bottom:18px}
/* Contact map: nothing loads from Google until the visitor presses Show map. */
.map-frame[data-map]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px var(--gutter);text-align:center}
.map-frame[data-map].is-loaded{display:block;padding:0}
.map-frame__note{font-size:14px;color:var(--muted)}
@media(max-width:700px){.hero .kicker{font-size:11px;margin-bottom:12px}}
