/* ==========================================================================
   VN PROPERTIES — vn-properties.css
   Single stylesheet for the whole static site.

   1.  Tokens & resets
   2.  Typography helpers
   3.  Buttons & links
   4.  Header / navigation
   5.  Hero
   6.  Section shells
   7.  Property grid, cards, filters, pagination
   8.  Split sections
   9.  Pathway cards
   10. Steps
   11. Cards / stats / checklists / quotes
   12. FAQ
   13. Contact page (form + panel)
   14. CTA bands
   15. Footer
   16. Utilities
   17. Responsive
   18. Print
   ==========================================================================

   TYPOGRAPHY   Cormorant Garamond 600 (headings) · Jost 300/400/500 (body/UI)
   PALETTE      Navy #0E2340 · Gold #B98A2E · Gold light #DFBC72
                Sand #F5EFE5 · Off-white #FCFAF6 · Stone #E4DACB
                Body #2A3542 · Muted #6E6A62
   RHYTHM       Sections 112 / 72 / 56px · content 1200px · measure 720px
   ========================================================================== */

/* ---------- 1. Tokens & resets ---------- */
:root{
  --navy:#0E2340;
  --navy-soft:#1B3557;
  --gold:#B98A2E;
  --gold-dark:#9E7524;
  --gold-light:#DFBC72;
  --sand:#F5EFE5;
  --sand-line:#DCD2C3;
  --offwhite:#FCFAF6;
  --stone:#E4DACB;
  --hairline:#E6E9EE;
  --text:#2A3542;
  --text-soft:#4A5361;
  --muted:#6E6A62;
  --faint:#8B857A;
  --serif:"Cormorant Garamond",Georgia,"Times New Roman",serif;
  --sans:"Jost","Helvetica Neue",Helvetica,Arial,sans-serif;
  --section:112px;
  --gap:32px;
  --shell:1200px;
  --pad:32px;
}

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

html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}

body{
  margin:0;
  background:var(--offwhite);
  color:var(--text);
  font:300 18px/1.75 var(--sans);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}

img{max-width:100%;display:block;}
a{color:var(--gold);text-decoration:none;transition:color .2s;}
a:hover{color:var(--navy);}
h1,h2,h3,h4{font-family:var(--serif);font-weight:600;color:var(--navy);
  margin:0;text-wrap:pretty;}
p{margin:0;text-wrap:pretty;}
ul{margin:0;padding:0;}
button{font-family:inherit;}

:focus-visible{outline:2px solid var(--gold);outline-offset:3px;}

.skip-link{position:absolute;left:-9999px;top:0;background:var(--navy);color:#fff;
  padding:14px 20px;z-index:100;font:500 14px/1 var(--sans);}
.skip-link:focus{left:16px;top:16px;color:#fff;}

.shell{max-width:var(--shell);margin-inline:auto;padding-inline:var(--pad);}

/* ---------- 2. Typography helpers ---------- */
.eyebrow{font:500 13px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;
  color:var(--gold);margin:0 0 18px;}
.nowrap{white-space:nowrap;}
.eyebrow--light{color:var(--gold-light);}

.h1{font-size:clamp(36px,4.4vw,58px);line-height:1.06;letter-spacing:-.01em;
  text-wrap:balance;}
.h1--page{font-size:clamp(34px,4vw,54px);line-height:1.08;max-width:800px;}
.h2{font-size:clamp(30px,3.2vw,44px);line-height:1.12;margin-bottom:20px;}
.h2--tight{font-size:clamp(28px,3vw,40px);line-height:1.14;}
.h3{font-size:24px;line-height:1.25;margin-bottom:10px;}

.lead{font:300 20px/1.65 var(--sans);color:var(--muted);}
.lead--page{margin-top:20px;max-width:660px;}
.body-text{font:300 18px/1.8 var(--sans);color:var(--text-soft);margin-bottom:18px;}
.small-note{font:300 15px/1.6 var(--sans);color:var(--faint);}
.measure{max-width:720px;}
.measure--center{max-width:720px;margin-inline:auto;text-align:center;}
.rule{width:56px;height:2px;background:var(--gold);border:0;margin:0 0 30px;}
.rule--center{margin-inline:auto;}
.rule--light{background:var(--gold-light);}

/* ---------- 3. Buttons & links ---------- */
/* inline-flex + centring keeps the label optically centred at any padding or
   font size — an inline-block button with line-height:1 sits high. */
.btn{display:inline-flex;align-items:center;justify-content:center;text-align:center;
  font:500 15px/1 var(--sans);letter-spacing:.08em;
  text-transform:uppercase;padding:18px 34px;border-radius:2px;border:1px solid transparent;
  cursor:pointer;transition:background .2s,color .2s,border-color .2s;white-space:nowrap;}
.btn--gold{background:var(--gold);border-color:var(--gold);color:#fff;}
.btn--gold:hover{background:var(--gold-dark);border-color:var(--gold-dark);color:#fff;}
.btn--navy{background:var(--navy);border-color:var(--navy);color:#fff;}
.btn--navy:hover{background:var(--navy-soft);border-color:var(--navy-soft);color:#fff;}
.btn--ghost{background:transparent;border-color:rgba(255,255,255,.6);color:#fff;}
.btn--ghost:hover{background:#fff;border-color:#fff;color:var(--navy);}
.btn--outline{background:transparent;border-color:var(--stone);color:var(--navy);}
.btn--outline:hover{border-color:var(--navy);color:var(--navy);}
.btn--sm{font-size:14px;padding:0 26px;min-height:48px;}

.text-link{font:500 15px/1 var(--sans);letter-spacing:.06em;text-transform:uppercase;
  color:var(--navy);border-bottom:1px solid var(--gold);padding-bottom:6px;
  display:inline-block;align-self:flex-start;}
.text-link:hover{color:var(--gold);}
.text-link--light{color:#fff;border-color:var(--gold-light);}
.text-link--light:hover{color:var(--gold-light);}

.btn-row{display:flex;flex-wrap:wrap;gap:14px;}
.btn-row--center{justify-content:center;}

/* ---------- 4. Header / navigation ---------- */
.site-header{background:#fff;border-bottom:1px solid var(--hairline);
  position:sticky;top:0;z-index:40;}
.site-header__inner{max-width:var(--shell);margin-inline:auto;padding:16px var(--pad);
  display:flex;align-items:center;justify-content:space-between;gap:24px;}
.site-logo img{content:url("../images/vn-logo-horizontal-a-classic.png");width:290px;height:auto;}

.nav{display:flex;align-items:center;gap:clamp(16px,2.1vw,32px);}
.nav a{font:400 17px/1 var(--sans);letter-spacing:.03em;color:var(--navy);
  padding-bottom:4px;border-bottom:1px solid transparent;}
.nav a:hover{color:var(--navy);border-bottom-color:var(--gold);}
.nav a[aria-current="page"]{border-bottom-color:var(--gold);}
/* The phone CTA is a button first: keep it white on navy in every state.
   (.nav a would otherwise win on specificity and paint the label navy.) */
/* `.nav a` (0-1-1) also beats `.btn--sm` (0-1-0), so its padding-bottom and
   font-size have to be neutralised here or the label sits ~2px high. */
.nav a.btn{padding:0 26px;font-size:14px;border-bottom-color:transparent;}
.nav a.btn--navy,.nav a.btn--navy:visited,.nav a.btn--navy:hover,
.nav a.btn--navy:focus{color:#fff;border-bottom-color:transparent;}
.nav a.btn--navy:hover{background:var(--navy-soft);}

/* Language switcher slot — hidden until the translated editions exist.
   No user-facing text lives in this stylesheet; labels come from the markup. */
.lang-switch{display:flex;align-items:center;gap:12px;margin-left:auto;
  margin-right:clamp(12px,2vw,24px);}
.lang-switch[hidden]{display:none;}
.lang-switch a{font:500 12px/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;
  color:var(--muted);padding-bottom:3px;border-bottom:1px solid transparent;}
.lang-switch a:hover{color:var(--navy);}
.lang-switch a[aria-current="true"]{color:var(--navy);border-bottom-color:var(--gold);}

.nav-toggle{display:none;background:none;border:0;padding:10px;cursor:pointer;}
.nav-toggle span{display:block;width:26px;height:1.5px;background:var(--navy);margin:5px 0;
  transition:transform .2s,opacity .2s;}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(6.5px) rotate(45deg);}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0;}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg);}

/* ---------- 5. Hero ---------- */
/* Valerie's name sits above the positioning line so the person behind the
   business is identifiable on the first screen. */
.hero__name {
  font: 500 22px/1.2 var(--sans);
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--gold-light);
  margin: 0 0 30px;
  text-shadow: 0 1px 2px rgba(14,35,64,.5);
}

.hero__name::after {
  display: none;
}

.hero{position:relative;min-height:680px;display:flex;align-items:center;
  background:var(--navy) center 60%/cover no-repeat;}
.hero::before{content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,rgba(14,35,64,.82) 0%,rgba(14,35,64,.66) 42%,
    rgba(14,35,64,.22) 68%,rgba(14,35,64,0) 84%);}
.hero__inner{position:relative;width:100%;max-width:var(--shell);margin-inline:auto;
  padding:96px var(--pad);}
.hero__content{max-width:700px;color:#fff;}
.hero__content h1{color:#fff;text-shadow:0 1px 3px rgba(14,35,64,.35);}
.hero__lead{font:300 20px/1.65 var(--sans);color:rgba(255,255,255,.92);
  margin-top:24px;max-width:470px;text-shadow:0 1px 2px rgba(14,35,64,.45);}
.hero .btn-row{margin-top:38px;}

/* ---------- 6. Section shells ---------- */
.section{padding-block:var(--section);background:var(--offwhite);}
.section--sand{background:var(--sand);}
.section--navy{background:var(--navy);color:rgba(255,255,255,.82);}
.section--navy h1,.section--navy h2,.section--navy h3{color:#fff;}
.section--tight{padding-block:72px;}
.section--flush-top{padding-top:0;}

.page-header{background:var(--sand);padding:88px var(--pad) 80px;}
.page-header .shell{padding-inline:0;}

.section-head{display:flex;align-items:flex-end;justify-content:space-between;
  gap:var(--gap);margin-bottom:48px;}
.section-head__text{max-width:620px;}

/* ---------- 7. Property grid, cards, filters, pagination ---------- */
.property-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap);}
.property-grid__cta{margin-top:32px;}

.property-card{background:#fff;border:1px solid var(--stone);border-radius:4px;
  overflow:hidden;display:flex;flex-direction:column;
  transition:box-shadow .25s,transform .25s;}
.property-card:hover{box-shadow:0 18px 40px rgba(14,35,64,.12);transform:translateY(-3px);}
.property-card__media{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--sand);}
.property-card__media img{width:100%;height:100%;object-fit:cover;}
.property-card__tag{position:absolute;top:14px;left:14px;background:rgba(255,255,255,.94);
  color:var(--navy);font:500 11px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;
  padding:9px 13px;border-radius:2px;}
.property-card__body{padding:26px 26px 28px;display:flex;flex-direction:column;
  gap:12px;flex:1;}
.property-card__loc{font:500 12px/1 var(--sans);letter-spacing:.16em;
  text-transform:uppercase;color:var(--gold);}
.property-card__title{font-size:24px;line-height:1.25;margin:0;}
.property-card__meta{font:300 16px/1.55 var(--sans);color:var(--muted);}
.property-card__price{font:600 23px/1 var(--serif);color:var(--navy);
  margin-top:auto;padding-top:18px;border-top:1px solid var(--hairline);}
.property-card a{color:inherit;}

/* Filter bar — overlaps the sand page header */
.property-filters{display:grid;grid-template-columns:repeat(4,1fr) auto;gap:14px;
  background:#fff;border:1px solid var(--stone);border-radius:4px;padding:20px;
  margin-top:-40px;box-shadow:0 14px 34px rgba(14,35,64,.07);}
.field label{display:block;font:500 12px/1 var(--sans);letter-spacing:.14em;
  text-transform:uppercase;color:var(--navy);margin:0 0 9px;}
.field select,.field input{width:100%;font:300 17px/1.4 var(--sans);color:var(--text);
  background:var(--offwhite);border:1px solid var(--stone);border-radius:2px;padding:14px 12px;}
.field select:focus,.field input:focus{outline:none;border-color:var(--gold);}
.property-filters__action{display:flex;align-items:flex-end;}
.property-filters__action .btn{width:100%;}

.result-bar{display:flex;justify-content:space-between;align-items:center;gap:20px;
  flex-wrap:wrap;font:300 17px/1.4 var(--sans);color:var(--muted);margin:48px 0 28px;}
.result-bar strong{font-weight:500;color:var(--navy);}
.result-bar select{font:300 17px/1 var(--sans);color:var(--navy);background:transparent;
  border:0;border-bottom:1px solid var(--gold);padding:4px 2px;cursor:pointer;}

.pagination{display:flex;gap:8px;justify-content:center;margin-top:56px;flex-wrap:wrap;}
.pagination button{min-width:48px;height:48px;display:grid;place-items:center;
  border:1px solid var(--stone);background:#fff;border-radius:2px;
  font:400 17px/1 var(--sans);color:var(--navy);cursor:pointer;padding:0 14px;}
.pagination button:hover{border-color:var(--navy);}
.pagination button[aria-current="page"]{background:var(--navy);border-color:var(--navy);color:#fff;}
.pagination button:disabled{opacity:.4;cursor:default;}

/* Feed states */
.feed-state{padding:72px 24px;text-align:center;border:1px solid var(--stone);
  border-radius:4px;background:#fff;}
.feed-state p{font:300 18px/1.7 var(--sans);color:var(--muted);max-width:520px;
  margin-inline:auto;}
.feed-state h3{margin-bottom:10px;}
.feed-state[hidden]{display:none;}

.skeleton-card{background:#fff;border:1px solid var(--stone);border-radius:4px;overflow:hidden;}
.skeleton-card__media{aspect-ratio:4/3;background:var(--sand);}
.skeleton-card__body{padding:26px;display:grid;gap:14px;}
.skeleton-line{height:12px;border-radius:2px;background:var(--sand);}
.skeleton-line--short{width:45%;}
.skeleton-line--long{width:80%;}
@media (prefers-reduced-motion:no-preference){
  .skeleton-card__media,.skeleton-line{animation:vn-pulse 1.4s ease-in-out infinite;}
}
@keyframes vn-pulse{0%,100%{opacity:1;}50%{opacity:.55;}}

.dev-note{font:300 15px/1.6 var(--sans);color:var(--faint);margin-top:34px;text-align:center;}

/* ---------- 8. Split sections ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:center;}
.split--portrait{grid-template-columns:1fr 1.15fr;align-items:start;}
.split--wide-text{grid-template-columns:1fr 1.15fr;align-items:start;}
.split--reverse .split__media{order:2;}
.split__media img{width:100%;height:auto;border-radius:4px;object-fit:cover;}
.img--4x3,.img--3x4,.img--16x9{width:100%;height:auto;object-fit:cover;}
.img--4x3{aspect-ratio:4/3;}
.img--3x4{aspect-ratio:3/4;object-position:center 30%;}
.img--16x9{aspect-ratio:16/9;}
.img-pair{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
/* The paired photographs are landscape sources — a 4:3 box crops them kindly. */
.img-pair .img--3x4{aspect-ratio:4/3;object-position:center;}
.img-pair img:last-child{margin-top:40px;}

/* ---------- 9. Pathway cards ---------- */
.pathways{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap);}
.pathway{padding:52px 48px;border-radius:4px;display:flex;flex-direction:column;gap:16px;}
.pathway--light{background:#fff;border:1px solid var(--stone);}
.pathway--dark{background:var(--navy);color:rgba(255,255,255,.82);}
.pathway--dark h3{color:#fff;}
.pathway h3{font-size:28px;line-height:1.22;margin:0;}
.pathway p{font:300 18px/1.75 var(--sans);}
.pathway--light p{color:var(--muted);}
.pathway .text-link{margin-top:8px;}

/* ---------- 10. Steps ---------- */
.steps{display:grid;gap:2px;background:var(--hairline);border:1px solid var(--hairline);
  border-radius:4px;overflow:hidden;}
.steps--on-sand{background:var(--sand-line);border-color:var(--sand-line);}
.step{background:#fff;display:grid;grid-template-columns:88px 1fr;gap:28px;padding:34px 36px;}
.step--compact{grid-template-columns:70px 1fr;gap:22px;padding:30px 32px;}
.step__num{font:600 34px/1 var(--serif);color:var(--gold);}
.step--compact .step__num{font-size:30px;}
.step h3{font-size:24px;line-height:1.25;margin-bottom:8px;}
.step--compact h3{font-size:22px;margin-bottom:6px;}
.step p{font:300 18px/1.75 var(--sans);color:var(--muted);max-width:760px;}
.step--compact p{font-size:17px;line-height:1.7;}

/* ---------- 11. Cards / stats / checklists / quotes ---------- */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap);}
.cards--2{grid-template-columns:repeat(2,1fr);}
.cards--4{grid-template-columns:repeat(4,1fr);}
.card{background:#fff;border:1px solid var(--stone);border-radius:4px;
  padding:36px 32px;display:flex;flex-direction:column;gap:12px;}
.card--pad-sm{padding:32px 28px;}
.card--center{align-items:center;justify-content:center;padding:24px;}
/* Images inside a centred card must scale from their own ratio — without this
   an intrinsic height="…" attribute governs the height and stretches them. */
.card--center img{width:100%;height:auto;}
.card__num{font:600 30px/1 var(--serif);color:var(--gold);}
.card__label{font:500 11px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;
  color:var(--gold);}
.card h3{margin:0;}
.card p{font:300 18px/1.75 var(--sans);color:var(--muted);}
.card--pad-sm p{font-size:17px;line-height:1.7;}
.card--pad-sm h3{font-size:22px;margin-bottom:0;}

.commitments{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap);}
.commitments h3{font-size:26px;margin-bottom:12px;}
.commitments p{font:300 18px/1.8 var(--sans);}

.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gap);
  padding-top:56px;border-top:1px solid rgba(255,255,255,.14);}
.stat__value{font:600 40px/1 var(--serif);color:var(--gold-light);}
.stat__label{font:300 16px/1.5 var(--sans);margin-top:8px;}

.checklist{list-style:none;display:grid;gap:14px;}
.checklist li{position:relative;padding-left:26px;font:300 18px/1.7 var(--sans);}
.checklist li::before{content:"";position:absolute;left:0;top:12px;width:8px;height:8px;
  background:var(--gold);border-radius:50%;}

.cost-list{list-style:none;display:grid;gap:16px;}
.cost-list li{display:flex;justify-content:space-between;gap:20px;
  font:300 18px/1.5 var(--sans);border-bottom:1px solid var(--hairline);padding-bottom:14px;}
.cost-list li:last-child{border-bottom:0;padding-bottom:0;}
.cost-list strong{font-weight:500;color:var(--navy);white-space:nowrap;}

.pull-quote{border-left:2px solid var(--gold);margin:0;padding:4px 0 4px 28px;}
.pull-quote p{font:500 24px/1.45 var(--serif);color:var(--navy);}

/* ---------- 12. FAQ ---------- */
.faq{border-top:1px solid var(--sand-line);}
.faq details{border-bottom:1px solid var(--sand-line);}
.faq summary{cursor:pointer;list-style:none;padding:26px 0;
  font:600 22px/1.3 var(--serif);color:var(--navy);
  display:flex;justify-content:space-between;gap:20px;align-items:flex-start;}
.faq summary::-webkit-details-marker{display:none;}
.faq summary::after{content:"+";color:var(--gold);font:300 26px/1 var(--sans);flex:none;}
.faq details[open] summary::after{content:"\2013";}
.faq p{font:300 18px/1.75 var(--sans);color:var(--muted);margin-bottom:26px;max-width:760px;}

/* ---------- 13. Contact page ---------- */
.contact-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:var(--gap);align-items:start;}
.form{background:#fff;border:1px solid var(--stone);border-radius:4px;padding:44px 40px;}
.form h2{font-size:30px;line-height:1.2;margin-bottom:8px;}
.form__intro{font:300 18px/1.7 var(--sans);color:var(--muted);margin-bottom:32px;}
.form__row{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px;}
.form .field{margin-bottom:0;}
.form label{display:block;font:500 12px/1 var(--sans);letter-spacing:.14em;
  text-transform:uppercase;color:var(--navy);margin:0 0 10px;}
.form input,.form select,.form textarea{width:100%;font:300 18px/1.5 var(--sans);
  color:var(--text);background:var(--offwhite);border:1px solid var(--stone);
  border-radius:2px;padding:15px 14px;}
.form textarea{resize:vertical;line-height:1.6;}
.form input:focus,.form select:focus,.form textarea:focus{outline:none;border-color:var(--gold);}
.form__field{margin-bottom:20px;}
.form__consent{display:flex;gap:12px;align-items:flex-start;font:300 16px/1.6 var(--sans);
  color:var(--muted);margin:4px 0 28px;text-transform:none;letter-spacing:0;}
.form__consent input{width:auto;margin-top:4px;flex:none;}
.form__note{font:300 15px/1.6 var(--sans);color:var(--faint);margin-top:18px;}
.form__status{font:400 16px/1.6 var(--sans);border-radius:2px;padding:16px 18px;
  margin-bottom:24px;}
.form__status--ok{background:#EEF4EC;border:1px solid #C6DCC0;color:#2C5228;}
.form__status--error{background:#FBEFEF;border:1px solid #E3C6C6;color:#7A2E2E;}

.contact-panel{background:var(--navy);border-radius:4px;padding:44px 40px;
  color:rgba(255,255,255,.82);}
.contact-panel h2{color:#fff;font-size:28px;line-height:1.2;margin-bottom:28px;}
.contact-panel dl{margin:0;}
.contact-panel dt{font:500 12px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;
  color:var(--gold-light);}
.contact-panel dd{font:300 18px/1.6 var(--sans);color:#fff;margin:8px 0 26px;}
.contact-panel dd:last-child{margin-bottom:0;}
.contact-panel a{color:#fff;border-bottom:1px solid var(--gold-light);}
.contact-panel a:hover{color:var(--gold-light);}

.contact-aside{display:flex;flex-direction:column;gap:var(--gap);}
.map-frame{border:1px solid var(--stone);border-radius:4px;overflow:hidden;background:#fff;}
.map-frame iframe{width:100%;height:320px;border:0;display:block;}
.map-placeholder{aspect-ratio:4/3;display:grid;place-items:center;text-align:center;
  background:repeating-linear-gradient(135deg,var(--sand) 0 12px,#EFE7D9 12px 24px);}
.map-placeholder p{font:400 13px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;
  color:var(--faint);letter-spacing:.06em;}

/* ---------- 13b. Single property page ---------- */
.page-header--property{padding-bottom:56px;}
.back-link{font:500 12px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted);display:inline-block;margin-bottom:24px;}
.back-link:hover{color:var(--navy);}

.property-headline{display:flex;align-items:center;gap:24px;flex-wrap:wrap;margin-top:24px;}
.property-headline__price{font:600 clamp(28px,3vw,38px)/1 var(--serif);color:var(--navy);}
.property-headline__meta{font:300 17px/1.5 var(--sans);color:var(--muted);}
.property-card__tag--static{position:static;background:#fff;border:1px solid var(--stone);}

.gallery{margin-top:-32px;margin-bottom:56px;}
.gallery__main{margin:0;border-radius:4px;overflow:hidden;background:var(--sand);}
.gallery__main img{width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;}
.gallery__main--empty{aspect-ratio:3/2;display:grid;place-items:center;
  border:1px solid var(--stone);}
.gallery__main--empty p{font:300 16px/1.6 var(--sans);color:var(--faint);}
.gallery__thumbs{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));
  gap:12px;margin-top:12px;}
.gallery__thumb{padding:0;border:1px solid var(--stone);border-radius:3px;overflow:hidden;
  background:none;cursor:pointer;line-height:0;transition:border-color .2s,opacity .2s;}
.gallery__thumb img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;}
.gallery__thumb:hover{border-color:var(--gold);}
.gallery__thumb[aria-current="true"]{border-color:var(--navy);}

.property-detail{display:grid;grid-template-columns:1.4fr 1fr;gap:var(--gap);align-items:start;}
.rich-text p{font:300 17px/1.8 var(--sans);color:var(--text-soft);margin-bottom:18px;}
.rich-text p:last-child{margin-bottom:0;}
.rich-text ul,.rich-text ol{margin:0 0 18px 20px;font:300 17px/1.8 var(--sans);
  color:var(--text-soft);}
.rich-text li{margin-bottom:6px;}

.spec-list{display:grid;grid-template-columns:1fr 1fr;gap:0;margin:0;
  border:1px solid var(--stone);border-radius:4px;background:#fff;overflow:hidden;}
.spec{padding:20px 22px;border-bottom:1px solid var(--hairline);}
.spec:nth-child(odd){border-right:1px solid var(--hairline);}
.spec:last-child{border-right:0;border-bottom:0;}
.spec dt{font:500 11px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;
  color:var(--gold);}
.spec dd{font:400 18px/1.4 var(--sans);color:var(--navy);margin:8px 0 0;}

.enquire{background:var(--navy);border-radius:4px;padding:36px 32px;margin-top:var(--gap);
  color:rgba(255,255,255,.82);display:flex;flex-direction:column;gap:14px;}
.enquire h3{color:#fff;font-size:24px;line-height:1.25;margin:0;}
.enquire p{font:300 16px/1.7 var(--sans);}
.enquire .btn{margin-top:6px;text-align:center;}
.enquire .btn--outline{color:#fff;border-color:rgba(255,255,255,.5);}
.enquire .btn--outline:hover{background:#fff;color:var(--navy);border-color:#fff;}

.feature-groups{display:grid;grid-template-columns:repeat(3,1fr);gap:40px var(--gap);}
.feature-group h3{font-size:22px;line-height:1.25;margin-bottom:16px;
  padding-bottom:12px;border-bottom:1px solid var(--sand-line);}
.feature-group .checklist li{font-size:16px;line-height:1.6;}

/* ---------- 13c. Certificate block + lightbox ---------- */
.certificate{display:block;background:#fff;border:1px solid var(--stone);border-radius:4px;
  padding:22px;max-width:340px;transition:box-shadow .25s,border-color .2s;cursor:zoom-in;}
.certificate:hover{border-color:var(--gold);box-shadow:0 16px 36px rgba(14,35,64,.1);}
.certificate img{width:100%;height:auto;border-radius:2px;}
.certificate__caption{display:block;font:500 12px/1.5 var(--sans);letter-spacing:.12em;
  text-transform:uppercase;color:var(--muted);margin-top:16px;}
.certificate__caption em{font-style:normal;color:var(--gold);}
.certificate-block{display:flex;gap:36px;align-items:center;flex-wrap:wrap;}
.certificate-block__text{flex:1;min-width:260px;}
.certificate-block__text p{font:300 17px/1.7 var(--sans);color:var(--muted);}

.lightbox{position:fixed;inset:0;z-index:80;display:flex;align-items:center;
  justify-content:center;padding:clamp(16px,4vw,56px);
  background:rgba(14,35,64,.88);}
.lightbox[hidden]{display:none;}
.lightbox__dialog{position:relative;background:#fff;border-radius:4px;padding:18px;
  max-width:min(920px,100%);max-height:100%;display:flex;flex-direction:column;gap:14px;}
.lightbox__dialog img{max-width:100%;max-height:calc(100vh - 190px);width:auto;height:auto;
  object-fit:contain;border-radius:2px;margin-inline:auto;}
.lightbox__caption{font:300 16px/1.6 var(--sans);color:var(--muted);text-align:center;}
.lightbox__close{position:absolute;top:-52px;right:0;background:none;border:0;
  color:#fff;font:500 14px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;
  cursor:pointer;padding:10px;display:flex;align-items:center;gap:10px;}
.lightbox__close::after{content:"\00D7";font-size:26px;line-height:1;}
.lightbox__close:hover{color:var(--gold-light);}
@media (max-width:640px){
  .lightbox__close{top:auto;bottom:-46px;right:50%;transform:translateX(50%);}
  .certificate{max-width:none;}
}

/* ---------- 13d. Legal / long-form pages ---------- */
.legal{max-width:820px;}
.legal h2{font-size:clamp(24px,2.6vw,32px);line-height:1.2;margin:56px 0 16px;}
.legal h2:first-child{margin-top:0;}
.legal h3{font-size:22px;margin:32px 0 10px;}
.legal p,.legal li{font:300 18px/1.8 var(--sans);color:var(--text-soft);}
.legal p{margin-bottom:18px;}
.legal ul{list-style:none;display:grid;gap:12px;margin:0 0 22px;}
.legal ul li{position:relative;padding-left:26px;}
.legal ul li::before{content:"";position:absolute;left:0;top:12px;width:8px;height:8px;
  background:var(--gold);border-radius:50%;}
.legal dl{margin:0 0 22px;}
.legal dt{font:500 12px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;
  color:var(--gold);margin-top:18px;}
.legal dd{font:300 18px/1.7 var(--sans);color:var(--text-soft);margin:8px 0 0;}
.legal__updated{font:300 15px/1.6 var(--sans);color:var(--faint);
  padding-bottom:28px;border-bottom:1px solid var(--hairline);margin-bottom:8px;}
.confirm{background:#FFF8E8;border:1px solid #E8D9A8;border-radius:3px;
  padding:20px 22px;margin:0 0 22px;}
.confirm p{font:400 16px/1.65 var(--sans);color:#6B5312;margin:0;}
.confirm strong{font-weight:500;text-transform:uppercase;letter-spacing:.1em;font-size:13px;
  display:block;margin-bottom:6px;}

/* ---------- 13e. Cookie consent ---------- */
.cookie-banner{position:fixed;left:clamp(16px,3vw,32px);bottom:clamp(16px,3vw,32px);
  z-index:90;width:min(430px,calc(100vw - 32px));background:#fff;
  border:1px solid var(--stone);border-radius:4px;padding:26px 26px 22px;
  box-shadow:0 24px 60px rgba(14,35,64,.22);}
.cookie-banner[hidden]{display:none;}
.cookie-banner h2{font-size:23px;line-height:1.25;margin:0 0 10px;}
.cookie-banner p{font:300 15px/1.6 var(--sans);color:var(--muted);margin:0 0 18px;}
/* Accept and Reject sit side by side with identical weight, so declining is
   exactly as easy as accepting. Manage spans the full width beneath. */
.cookie-banner__actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.cookie-banner__actions .btn{width:100%;padding-inline:14px;font-size:13px;}
.cookie-banner__actions .btn:last-child{grid-column:1/-1;}
.cookie-banner__links{display:flex;gap:18px;flex-wrap:wrap;margin-top:16px;
  padding-top:14px;border-top:1px solid var(--hairline);}
.cookie-banner__links a{font:300 14px/1.5 var(--sans);color:var(--muted);
  text-decoration:underline;text-decoration-color:var(--stone);}
.cookie-banner__links a:hover{color:var(--navy);}
.cookie-link{background:none;border:0;padding:0;cursor:pointer;
  font:inherit;color:inherit;text-align:left;}
.cookie-link:hover{color:var(--gold-light);}

.cookie-modal{position:fixed;inset:0;z-index:95;display:flex;align-items:center;
  justify-content:center;padding:clamp(16px,4vw,48px);background:rgba(14,35,64,.85);}
.cookie-modal[hidden]{display:none;}
.cookie-modal__dialog{background:#fff;border-radius:4px;width:min(660px,100%);
  max-height:100%;overflow-y:auto;padding:40px 40px 32px;}
.cookie-modal__dialog h2{font-size:28px;line-height:1.2;margin:0 0 12px;}
.cookie-modal__intro{font:300 17px/1.7 var(--sans);color:var(--muted);margin:0 0 28px;}
.consent-group{border-top:1px solid var(--hairline);padding:22px 0;
  display:grid;grid-template-columns:1fr auto;gap:8px 24px;align-items:start;}
.consent-group h3{font-size:21px;line-height:1.25;margin:0;}
.consent-group p{font:300 16px/1.65 var(--sans);color:var(--muted);
  grid-column:1/-1;margin:0;}
.consent-group__note{font:400 14px/1.6 var(--sans);color:var(--gold);
  grid-column:1/-1;margin:8px 0 0;}
.consent-group__state{font:500 12px/1 var(--sans);letter-spacing:.14em;
  text-transform:uppercase;color:var(--muted);white-space:nowrap;padding-top:6px;}
.consent-switch{display:inline-flex;align-items:center;gap:12px;cursor:pointer;
  font:500 12px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;
  color:var(--navy);white-space:nowrap;}
.consent-switch input{position:absolute;opacity:0;width:1px;height:1px;}
.consent-switch__track{width:48px;height:26px;border-radius:13px;background:var(--stone);
  position:relative;transition:background .2s;flex:none;}
.consent-switch__track::after{content:"";position:absolute;top:3px;left:3px;
  width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .2s;
  box-shadow:0 1px 3px rgba(14,35,64,.3);}
.consent-switch input:checked + .consent-switch__track{background:var(--gold);}
.consent-switch input:checked + .consent-switch__track::after{transform:translateX(22px);}
.consent-switch input:focus-visible + .consent-switch__track{outline:2px solid var(--gold);
  outline-offset:3px;}
.cookie-modal__actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px;
  padding-top:24px;border-top:1px solid var(--hairline);}
@media (max-width:640px){
  .cookie-banner{left:12px;right:12px;bottom:12px;width:auto;padding:22px 20px 20px;}
  .cookie-banner__actions{grid-template-columns:1fr;}
  .cookie-banner__actions .btn{grid-column:1/-1;}
  .cookie-modal__dialog{padding:28px 22px 24px;}
  .cookie-modal__actions .btn{width:100%;}
}

/* ---------- 13f. Cookie / service table ---------- */
.cookie-table-wrap{overflow-x:auto;margin:0 0 26px;
  border:1px solid var(--stone);border-radius:4px;background:#fff;}
.cookie-table{width:100%;border-collapse:collapse;min-width:620px;}
.cookie-table caption{text-align:left;font:500 12px/1 var(--sans);letter-spacing:.14em;
  text-transform:uppercase;color:var(--gold);padding:20px 22px 0;}
.cookie-table th,.cookie-table td{text-align:left;padding:16px 22px;
  border-bottom:1px solid var(--hairline);vertical-align:top;}
.cookie-table thead th{font:500 12px/1.3 var(--sans);letter-spacing:.12em;
  text-transform:uppercase;color:var(--navy);}
.cookie-table td{font:300 16px/1.6 var(--sans);color:var(--text-soft);}
.cookie-table tbody tr:last-child th,.cookie-table tbody tr:last-child td{border-bottom:0;}
.cookie-table code{font:400 14px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;
  color:var(--navy);background:var(--sand);padding:2px 6px;border-radius:2px;}

/* ---------- 14. CTA bands ---------- */
.cta{padding-block:104px;text-align:center;background:var(--sand);}
.cta--navy{background:var(--navy);color:rgba(255,255,255,.82);}
.cta--navy h2{color:#fff;}
.cta__inner{max-width:720px;margin-inline:auto;padding-inline:var(--pad);}
.cta h2{margin-bottom:18px;}
.cta p{font:300 19px/1.7 var(--sans);}
.cta--sand p{color:var(--muted);}
.cta .btn-row{margin-top:34px;}

/* ---------- 15. Footer ---------- */
.site-footer{background:var(--navy);color:rgba(255,255,255,.72);padding:72px var(--pad) 32px;}
.site-footer a{color:rgba(255,255,255,.72);}
.site-footer a:hover{color:var(--gold-light);}
.site-footer__cols{max-width:var(--shell);margin-inline:auto;
  display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:var(--gap);}
.site-footer__logo{height:140px;width:auto;background:#fff;padding:8px;border-radius:3px;}
.site-footer__blurb{font:300 17px/1.7 var(--sans);margin-top:22px;max-width:300px;}
.site-footer h2{font:500 13px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;
  color:var(--gold-light);margin-bottom:20px;}
.site-footer ul{list-style:none;display:flex;flex-direction:column;gap:13px;
  font:300 17px/1.45 var(--sans);}
.site-footer__bar{max-width:var(--shell);margin:56px auto 0;padding-top:24px;
  border-top:1px solid rgba(255,255,255,.14);font:300 15px/1.6 var(--sans);
  display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;}

/* ---------- 16. Utilities ---------- */
.stack{display:flex;flex-direction:column;gap:32px;}
.mt-0{margin-top:0;}
.mb-0{margin-bottom:0;}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;}

/* ---------- 17. Responsive ---------- */
@media (max-width:1080px){
  .nav{gap:18px;}
  .nav a{font-size:15.5px;}
  .site-logo img{width:250px;}
  .split,.split--portrait,.split--wide-text{gap:48px;}
}

@media (max-width:960px){
  :root{--section:72px;--gap:24px;}
  .site-header__inner{position:relative;}
  .site-logo img{width:240px;}
  .nav-toggle{display:block;}
  .nav{position:absolute;top:100%;left:0;right:0;background:#fff;
    border-bottom:1px solid var(--hairline);box-shadow:0 20px 40px rgba(14,35,64,.1);
    flex-direction:column;align-items:stretch;gap:0;padding:8px 0 20px;display:none;}
  .nav[data-open="true"]{display:flex;}
  .nav a{padding:16px var(--pad);border-bottom:1px solid var(--hairline);font-size:18px;}
  .nav a:hover,.nav a[aria-current="page"]{border-bottom-color:var(--hairline);color:var(--gold);}
  .nav a.btn{margin:16px var(--pad) 0;text-align:center;border:1px solid var(--navy);}

  .property-grid,.cards,.cards--4{grid-template-columns:repeat(2,1fr);}
  .pathways,.split,.split--portrait,.split--wide-text,.contact-grid,
  .commitments{grid-template-columns:1fr;gap:36px;}
  .split--reverse .split__media{order:0;}
  /* Stacked columns go full-width, so portrait ratios would tower over the
     viewport. Widen the crop and cap the height instead. */
  .split .img--3x4{aspect-ratio:4/3;max-height:64vh;}
  .img-pair .img--3x4{aspect-ratio:4/3;max-height:38vh;}
  .section-head{flex-direction:column;align-items:flex-start;gap:20px;}
  .property-filters{grid-template-columns:1fr 1fr;}
  .property-filters__action{grid-column:1/-1;}
  .img-pair img:last-child{margin-top:0;}
  .property-detail{grid-template-columns:1fr;gap:40px;}
  .feature-groups{grid-template-columns:1fr 1fr;}
  .gallery{margin-top:0;}
}

@media (max-width:781px){
  .hero{min-height:0;}
  .hero::before{background:linear-gradient(180deg,rgba(14,35,64,.5) 0%,rgba(14,35,64,.85) 100%);}
  .hero__inner{padding-block:76px;}
  .hero__lead{max-width:none;}
  .stats{grid-template-columns:1fr 1fr;gap:28px;}
  .site-footer__cols{grid-template-columns:1fr 1fr;gap:40px;}
}

@media (max-width:640px){
  :root{--section:56px;--pad:22px;}
  .h1{font-size:34px;}
  .site-logo img{width:210px;}
  .property-grid,.cards,.cards--2,.cards--4{grid-template-columns:1fr;gap:20px;}
  .property-filters{grid-template-columns:1fr;}
  .pathway{padding:38px 26px;}
  .step,.step--compact{grid-template-columns:1fr;gap:10px;padding:28px 24px;}
  .form,.contact-panel{padding:32px 24px;}
  .form__row{grid-template-columns:1fr;}
  .cost-list li{flex-direction:column;gap:4px;}
  .cta{padding-block:72px;}
  .btn{width:100%;text-align:center;}
  .btn-row{flex-direction:column;}
  .nav a.btn{width:auto;}
  .site-footer__cols{grid-template-columns:1fr;gap:36px;}
  .site-footer__cols > div:first-child{text-align:center;}
  .site-footer__logo{margin-inline:auto;}
  .site-footer__blurb{margin-inline:auto;}
  .page-header{padding-top:64px;padding-bottom:64px;}
  .property-filters{margin-top:-32px;}
  .property-headline{gap:14px;}
  .spec-list{grid-template-columns:1fr;}
  .spec:nth-child(odd){border-right:0;}
  .feature-groups{grid-template-columns:1fr;gap:32px;}
  .gallery__thumbs{grid-template-columns:repeat(3,1fr);}
  .enquire{padding:28px 24px;}
}

/* ---------- 18. Print ---------- */
@media print{
  .site-header,.nav-toggle,.hero::before,.pagination,.property-filters{display:none;}
  body{background:#fff;color:#000;}
  .section,.cta,.page-header{padding-block:24px;background:#fff;}
  .section--navy,.cta--navy,.site-footer{background:#fff;color:#000;}
  .section--navy h2,.cta--navy h2,.site-footer h2{color:#000;}
}

/* Temporary: hide cookie consent UI during site review */
.cookie-banner,
.cookie-modal {
  display: none !important;
}

/* Mobile category layout and Valerie portraits — 2026-09-28 */
@media screen and (max-width:960px){
  .split__media > img[src="images/valerie-indoors-20260924.jpg"],
  .split__media > img[src="images/valerie-marina-20260924.jpg"]{
    aspect-ratio:3/4;
    height:auto;
    max-height:none;
  }
  .section--navy .stats{grid-template-columns:repeat(2,minmax(0,1fr));}
  .section--navy .stat{min-width:0;}
  .section--navy .stat__value{font-size:32px;line-height:1.15;overflow-wrap:anywhere;}
}
@media screen and (max-width:480px){
  .section--navy .stats{grid-template-columns:minmax(0,1fr);gap:28px;padding-top:36px;}
}
