/* ============================================================
   Plumbing only. Nothing here is a design decision — no colour,
   no typeface, no layout. Each site writes its own visual system
   on top; this file only carries the things that must be right
   on every site and are invisible when they are.
   ============================================================ */

*, *::before, *::after { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  /* A sideways-scrollable page drags position:fixed elements out of view on
     phones. Clip rather than scroll. (clip, not hidden: hidden would make html
     a scroll container and break scroll-padding and sticky.) */
  overflow-x: clip;
}

body { margin: 0; }
/* Lock scrolling on the ROOT, not on body. html already has overflow-x:clip,
   so overflow:hidden on body turns body into its own scroll container — a
   position:sticky header then sticks to body and is thrown off-screen (with
   its close button) when the menu opens after scrolling. site.js puts
   .is-locked on <html> directly; a :has() selector was tried first and its
   style invalidation visibly lagged behind the menu opening. */
html.is-locked { overflow: hidden; }
/* [hidden] must win. A rule like `.gallery-more { display:flex }` outranks the
   browser's own `[hidden] { display:none }`, which left an empty "Show 0 more"
   button on screen whenever a gallery had nothing further to reveal. */
[hidden] { display: none !important; }

img, svg, video { max-width: 100%; height: auto; display: block; }
button { font: inherit; color: inherit; }
/* A <button> inherits the user agent's grey `buttonface` unless something says
   otherwise. An outline/ghost button that sets only border-color and color then
   renders as light-grey with (often white) text on it — invisible. Reset here;
   any variant that wants a fill sets one and wins on specificity. */
button { background: transparent; }
ul, ol { margin: 0; padding: 0; }
h1, h2, h3, h4, h5, h6 { margin: 0; }
p { margin: 0 0 1em; }
p:last-child { margin-bottom: 0; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}

.visually-hidden {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* Reveal-on-scroll. The JS failsafe shows everything if the observer
   never runs, so content can never be stranded invisible. */
.reveal { opacity: 0; transform: translateY(16px); transition: opacity .7s var(--ease, ease), transform .7s var(--ease, ease); }
.reveal.is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .reveal { opacity: 1; transform: none; } }

@media print {
  .site-header, .lightbox, .skip-link, .gallery-more, .filters, .map-consent, .callbar { display: none !important; }
  .reveal { opacity: 1 !important; transform: none !important; }
  body { background: #fff !important; color: #000 !important; }
  a[href^="http"]::after { content: " (" attr(href) ")"; font-size: .75em; color: #555; }
}

@font-face{font-family:Noto;src:url(../fonts/NotoSansDisplay-400-latin.woff2) format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Noto;src:url(../fonts/NotoSansDisplay-500-latin.woff2) format('woff2');font-weight:500 700;font-display:swap}
@font-face{font-family:Serif;src:url(../fonts/SourceSerif4-300-latin.woff2) format('woff2');font-weight:300;font-display:swap}
@font-face{font-family:Serif;src:url(../fonts/SourceSerif4-300i-latin.woff2) format('woff2');font-style:italic;font-weight:300;font-display:swap}
:root{--navy:#103b4b;--ink:#193e49;--muted:#50636a;--paper:#faf9f5;--soft:#efeee7;--olive:#d9dfb8;--line:#d6ddd8;--serif:Serif,Georgia,serif}
html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.75 Noto,Arial,sans-serif}button,input,textarea{font:inherit}a{color:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}img{max-width:100%;display:block}h1,h2,h3,p{margin:0}h1,h2{font-family:var(--serif);font-weight:300;line-height:1.08;letter-spacing:-.045em}h1{font-size:clamp(46px,5.5vw,80px)}h2{font-size:clamp(36px,4vw,56px)}h3{font-size:24px;line-height:1.3;font-family:var(--serif);font-weight:300;letter-spacing:-.025em}em{font-weight:300}p+p{margin-top:1em}p{color:var(--muted)}.wrap{width:min(1160px,calc(100% - 100px));margin-inline:auto}.section{padding-top:96px;padding-bottom:96px}.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.17em;font-weight:500;line-height:1.5;color:#496258;margin-bottom:22px}.large{font-size:22px;line-height:1.5;color:var(--ink)}.small{font-size:13px}.skip{position:fixed;left:1rem;top:-100px;z-index:200;background:white;padding:12px 20px}.skip:focus{top:12px}:focus-visible{outline:3px solid #5f8245;outline-offset:5px}a{text-underline-offset:5px}.site-header{position:sticky;top:0;background:#fff;z-index:30;border-bottom:1px solid #e9ece8}.header-inner{height:92px;max-width:1440px;margin:auto;padding:0 50px;display:flex;align-items:center;justify-content:space-between;gap:35px}.brand{flex:none}.brand img{width:218px;height:auto}#primary-nav{display:flex;align-items:center;gap:26px}#primary-nav a{font-size:13px;text-decoration:none;white-space:nowrap}#primary-nav a[aria-current],#primary-nav a:hover{box-shadow:0 1px var(--ink)}#primary-nav a:last-child{border:1px solid var(--navy);padding:10px 18px;box-shadow:none}.nav-toggle{display:none}.hero{height:490px;position:relative;isolation:isolate;color:white;display:flex;align-items:center}.hero>img,.hero-shade{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}.hero>img{object-position:center 48%}.hero-shade{z-index:-1;background:linear-gradient(90deg,rgba(3,29,39,.83),rgba(3,29,39,.2))}.home-hero{height:min(760px,calc(100svh - 92px));min-height:600px}.home-hero h1{font-size:clamp(54px,5.8vw,86px)}.hero-copy{padding-top:20px;padding-bottom:64px}.hero .eyebrow{color:#e2e8cf}.hero h1{max-width:940px}.home-hero h1 em{color:#e0e8bc}.lead{font-size:17px;color:#f0f4f2;max-width:540px;line-height:1.7;margin-top:25px}.hero .button{margin-top:30px}.hero-foot{position:absolute;bottom:25px;left:0;right:0;display:flex;justify-content:space-between;gap:20px;font-size:10px;letter-spacing:.13em;color:#f0f4ee;border-top:1px solid #ffffff40;padding-top:17px}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:32px;background:var(--navy);border:1px solid var(--navy);color:#fff;padding:15px 24px;text-decoration:none;font-size:13px;font-weight:500;transition:background .2s}.button:hover{background:#235367}.button.pale{background:var(--olive);border-color:var(--olive);color:#183b40}.button.pale:hover{background:#e8edcf}.text-link{font-size:13px;text-decoration:none;border-bottom:1px solid #8d9a92;padding-bottom:6px;display:inline-block}.intro-strip{background:var(--soft);border-bottom:1px solid var(--line)}.intro-strip .wrap{padding-block:22px;display:flex;justify-content:space-between;gap:20px;font-size:11px;text-transform:uppercase;letter-spacing:.07em}.intro{display:grid;grid-template-columns:1fr 1fr;gap:0 100px}.intro>.eyebrow{grid-column:1/-1}.intro>div p{max-width:530px}.intro h2{max-width:510px}.split{display:grid;grid-template-columns:1.05fr 1fr;gap:90px;align-items:center;padding-top:30px}.split.reverse{grid-template-columns:1fr 1.05fr}.split.reverse .split-photo{order:2}.split-copy p:not(.eyebrow){margin-top:23px}.split-copy .button{margin-top:28px}.tile{position:relative;background:var(--soft);border:0;padding:0;display:block;width:100%;overflow:hidden}.tile img{width:100%;height:100%;object-fit:cover;transition:transform .5s}.tile:hover img{transform:scale(1.035)}.split-photo .tile{aspect-ratio:1/1.04}.enlarge{position:absolute;bottom:14px;right:14px;display:grid;place-items:center;width:35px;height:35px;background:#fff;color:var(--navy)}.section-top{display:flex;justify-content:space-between;gap:30px;align-items:end;margin-bottom:44px}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;margin-top:45px}.service-card{border-top:1px solid #aebbb2;padding-top:23px}.service-card .index{font-size:11px;letter-spacing:.15em;color:#536548;display:block;margin-bottom:22px}.service-card h3{margin-bottom:16px}.service-card p{font-size:15px}.process,.soft{background:var(--soft)}.process .service-card{border-top-color:#b7c0b2}.owner-banner{background:var(--navy);padding:65px 0}.owner-inner{display:flex;justify-content:space-between;align-items:center;gap:60px}.owner-inner .eyebrow{color:var(--olive)}.owner-inner h2{color:white}.owner-inner p:not(.eyebrow){color:#d2e0e1;margin-top:20px}.owner-inner .button{flex-shrink:0}.travel-grid{display:grid;grid-template-columns:1fr 1fr;gap:65px 50px;margin-top:45px}.travel-grid .tile{aspect-ratio:1.8}.travel-grid h3{margin-top:25px;margin-bottom:16px;font-size:30px}.travel-grid p{font-size:15px}.soft .cards:has(.service-card:nth-child(4):last-child){grid-template-columns:repeat(2,1fr)}.faq{display:grid;grid-template-columns:.85fr 1.15fr;gap:70px}.faq details{border-bottom:1px solid var(--line);padding:23px 0}.faq details:first-child{border-top:1px solid var(--line)}summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:24px;font-weight:500;font-size:16px}summary::-webkit-details-marker{display:none}summary span{font-size:24px;font-weight:400}details[open] summary span{transform:rotate(45deg)}details p{padding-top:17px;font-size:15px}.end-cta{padding:20px 0 90px;display:flex;justify-content:space-between;gap:40px;align-items:center}.enquiry{display:grid;grid-template-columns:.8fr 1.2fr;gap:85px}.enquiry>div>p:not(.eyebrow){margin-top:24px}.enquiry .text-link{margin-top:24px}.legal{max-width:820px}.legal h1{margin-bottom:35px}.legal h2{font-size:30px;margin:35px 0 15px}.legal .button{margin-top:30px}.footer{background:#092d3a;color:#eaf0ee;padding-top:64px}.footer-main{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:60px;padding-bottom:50px}.footer-brand{font-family:var(--serif);font-size:31px;color:white;margin-bottom:14px}.footer p:not(.footer-brand):not(.eyebrow){color:#bacbcf;font-size:13px}.footer .eyebrow{color:#c5cfb0}.footer a,.footer-main span{display:block;font-size:13px;text-decoration:none;margin-bottom:9px;color:#d9e4e5}.footer a:hover{text-decoration:underline}.footer-bottom{border-top:1px solid #ffffff24;padding-block:20px;display:flex;justify-content:space-between;font-size:11px;color:#bacbcf}.footer-bottom a{font-size:11px;margin:0}.lightbox{display:none;position:fixed;inset:0;z-index:100;background:#061c25f5;color:white;opacity:0;transition:opacity .25s}.lightbox.is-open{display:block}.lightbox.is-visible{opacity:1}.lb-stage{height:100%;display:grid;place-items:center;padding:65px 80px}.lb-figure{margin:0;display:flex;max-width:100%;height:100%;align-items:center;justify-content:center;flex-direction:column}.lb-img{max-height:calc(100svh - 150px);max-width:100%;width:auto;height:auto;object-fit:contain}.lb-caption{font-size:12px;text-align:center;margin-top:12px;color:#e4edee}.lightbox button{background:transparent;border:1px solid #ffffff60;color:white;width:44px;height:44px;font-size:24px;position:absolute}.lb-close{top:20px;right:20px}.lb-counter{position:absolute;left:25px;top:30px;font-size:13px}.lb-prev{left:20px;top:50%}.lb-next{right:20px;top:50%}.is-locked{overflow:hidden}
@media(min-width:901px) and (max-width:1150px){.header-inner{padding-inline:30px;gap:20px}#primary-nav{gap:17px}.brand img{width:185px}.wrap{width:calc(100% - 70px)}.split{gap:50px}.intro{gap:0 60px}.enquiry{gap:40px}}
@media(max-width:900px){.header-inner{height:78px;padding:0 28px}.brand img{width:195px}.nav-toggle{display:flex;align-items:center;gap:15px;border:0;background:none;color:var(--navy);font-size:13px;padding:10px 0 10px 15px}#primary-nav{display:none;position:fixed;top:78px;left:0;right:0;bottom:0;background:var(--paper);padding:35px;overflow-y:auto;align-content:start;gap:0}.is-open #primary-nav{display:grid}#primary-nav a{font-family:var(--serif);font-size:30px;padding:14px 0;border-bottom:1px solid var(--line)}#primary-nav a:last-child{margin-top:20px;padding:15px 20px;font-family:Noto;font-size:16px}#primary-nav a[aria-current]{box-shadow:none}.wrap{width:calc(100% - 56px)}.section{padding-block:65px}.home-hero{height:700px;min-height:600px}.home-hero h1{font-size:64px}.hero{height:480px}.hero h1{font-size:54px}.intro{gap:0 45px}.split,.split.reverse{gap:40px;grid-template-columns:1fr 1fr}.cards{gap:25px}.owner-inner{gap:35px}.owner-inner h2{font-size:40px}.enquiry{gap:40px;grid-template-columns:1fr}.enquiry>div:first-child{max-width:600px}.faq{grid-template-columns:1fr;gap:30px}.footer-main{gap:30px}.intro-strip .wrap{font-size:9px;gap:20px}.end-cta h2{font-size:38px}.travel-grid{gap:40px 30px}.hero-foot{font-size:9px}.hero-foot span:last-child{letter-spacing:0}.section-top{align-items:start;flex-direction:column}}
@media(max-width:600px){.wrap{width:calc(100% - 40px)}.header-inner{height:72px;padding-inline:20px}.brand img{width:184px}#primary-nav{top:72px;padding:22px}.hero{height:495px}.home-hero{height:690px;min-height:0}.hero-copy{padding-bottom:70px;padding-top:30px}.hero h1{font-size:44px}.home-hero h1{font-size:49px}.hero .eyebrow{font-size:9px;letter-spacing:.12em}.hero .lead{font-size:15px;max-width:330px;margin-top:23px}.hero-shade{background:linear-gradient(90deg,rgba(3,29,39,.85),rgba(3,29,39,.4))}.hero-foot{bottom:20px;font-size:8px}.hero-foot span:last-child{display:none}.intro-strip .wrap{flex-wrap:wrap;gap:9px 18px;padding-block:19px}.intro-strip span:first-child{width:100%}.section{padding-block:53px}.intro{grid-template-columns:1fr;gap:0}.intro h2{margin-bottom:27px}.intro .eyebrow{margin-bottom:16px}.large{font-size:20px}.split,.split.reverse{grid-template-columns:1fr;gap:32px;padding-top:5px}.split.reverse .split-photo{order:0}.split-photo .tile{aspect-ratio:1.15}h2{font-size:37px}.eyebrow{font-size:10px}.cards{grid-template-columns:1fr!important;gap:30px;margin-top:32px}.service-card{padding-top:18px}.service-card .index{margin-bottom:13px}.service-card h3{font-size:26px}.owner-inner{display:block}.owner-inner .button{margin-top:25px}.owner-banner{padding-block:45px}.owner-inner h2{font-size:36px}.travel-grid{grid-template-columns:1fr;gap:38px}.travel-grid h3{font-size:28px}.section-top{margin-bottom:30px}.end-cta{display:block;padding:15px 0 55px}.end-cta .button{margin-top:25px}.enquiry{gap:30px}.footer{padding-top:45px}.footer-main{grid-template-columns:1fr 1fr;gap:32px 25px}.footer-main>div:first-child{grid-column:1/-1}.footer-brand{font-size:29px}.footer-bottom{font-size:10px}.footer-bottom a{font-size:10px}.lb-stage{padding:70px 15px}.lightbox .lb-prev,.lightbox .lb-next{top:auto;bottom:20px}.lb-img{max-height:calc(100svh - 170px)}.legal h1{font-size:46px}}.footer a{overflow-wrap:anywhere}

.contact-panel{background:white;padding:38px;border:1px solid var(--line)}.contact-panel h3{font-size:30px;margin-bottom:30px}.contact-method{border-top:1px solid var(--line);padding:20px 0}.contact-method span{display:block;font-size:12px;color:var(--muted);margin-bottom:7px}.contact-method a{font-size:18px;overflow-wrap:anywhere}.contact-panel .text-link{margin-top:20px}@media(max-width:600px){.contact-panel{padding:25px 20px}.contact-method a{font-size:16px}}
