/* ==========================================================================
   Sabrina Cameron Real Estate
   Palette sampled directly from Branding Guide.pdf + logo files:
     gold #C0A239 · dark #444335 · neutral #E5E3DD · off-white #F6F5F0 · logo ink #2C2C2C
   Type: Roboto only, per the brand guide.
   ========================================================================== */

:root{
  /* brand */
  --gold:      #C0A239;
  --dark:      #444335;
  --neutral:   #E5E3DD;
  --offwhite:  #F6F5F0;
  --ink:       #2C2C2C;

  /* derived tones (same hues, adjusted value) */
  --gold-lt:   #D9BE6A;
  --gold-dk:   #9D821F;
  --dark-deep: #2B2B22;
  --dark-soft: #5C5A49;

  --line:      rgba(44,44,44,.14);
  --line-lt:   rgba(246,245,240,.22);
  --body:      rgba(44,44,44,.78);
  --body-lt:   rgba(246,245,240,.76);

  --maxw: 1280px;
  --gutter: clamp(1.5rem, 5vw, 4.5rem);

  --ease: cubic-bezier(.22,.61,.36,1);
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
@media (prefers-reduced-motion:reduce){ html{ scroll-behavior:auto; } }

body{
  margin:0;
  background:var(--offwhite);
  color:var(--ink);
  font-family:"Roboto",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;
  font-weight:400;
  font-size:16px;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
}
img{ display:block; max-width:100%; }
a{ color:inherit; }
h1,h2,h3,h4{ margin:0; font-weight:300; letter-spacing:-.015em; line-height:1.12; text-wrap:balance; }
p{ margin:0; }
:focus-visible{ outline:2px solid var(--gold); outline-offset:3px; }

.wrap{ max-width:var(--maxw); margin:0 auto; padding-inline:var(--gutter); }
.narrow{ max-width:780px; }

/* ---------- type scale ---------- */
.d1{ font-size:clamp(2.4rem,5.2vw,4.6rem); }
.d2{ font-size:clamp(2rem,3.8vw,3.3rem); }
.d3{ font-size:clamp(1.5rem,2.4vw,2.1rem); }
.lede{ font-size:clamp(1.02rem,1.25vw,1.18rem); font-weight:300; line-height:1.75; color:var(--body); }
.lede.on-dark{ color:var(--body-lt); }
.body-text{ color:var(--body); font-weight:400; }
.body-text p + p{ margin-top:1.1rem; }

.eyebrow{
  display:inline-flex; align-items:center; gap:.85em;
  font-size:.7rem; font-weight:500; letter-spacing:.3em; text-transform:uppercase;
  color:var(--gold-dk); margin:0 0 1.5rem;
}
.eyebrow::before{ content:""; width:2.4em; height:1px; background:currentColor; }
.eyebrow.on-dark{ color:var(--gold-lt); }
.eyebrow.plain::before{ display:none; }

/* ---------- buttons ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center;
  padding:1.05rem 2.2rem; border:1px solid var(--gold); background:var(--gold); color:#fff;
  font-size:.74rem; font-weight:500; letter-spacing:.22em; text-transform:uppercase; text-decoration:none;
  cursor:pointer; transition:background .35s var(--ease), color .35s var(--ease), border-color .35s var(--ease);
}
.btn:hover{ background:var(--gold-dk); border-color:var(--gold-dk); }
.btn-outline{ background:transparent; color:var(--ink); border-color:var(--ink); }
.btn-outline:hover{ background:var(--ink); color:var(--offwhite); }
.btn-light{ background:transparent; color:var(--offwhite); border-color:var(--line-lt); }
.btn-light:hover{ background:var(--offwhite); color:var(--ink); border-color:var(--offwhite); }
.textlink{
  display:inline-block; font-size:.74rem; font-weight:500; letter-spacing:.2em; text-transform:uppercase;
  text-decoration:none; color:var(--ink); padding-bottom:.45rem; border-bottom:1px solid var(--gold);
  transition:color .3s var(--ease), border-color .3s var(--ease);
}
.textlink:hover{ color:var(--gold-dk); }
.textlink.on-dark{ color:var(--offwhite); border-color:var(--gold-lt); }
.textlink.on-dark:hover{ color:var(--gold-lt); }

/* ---------- nav ---------- */
.nav{
  position:fixed; inset:0 0 auto 0; z-index:60;
  transition:background .45s var(--ease), box-shadow .45s var(--ease);
}
.nav-inner{
  max-width:var(--maxw); margin:0 auto; padding:1.5rem var(--gutter);
  display:flex; align-items:center; justify-content:space-between; gap:2rem;
  transition:padding .45s var(--ease);
}
.nav-logo{ position:relative; display:block; flex:none; width:clamp(160px,15vw,205px); }
.nav-logo img{ width:100%; transition:opacity .45s var(--ease); }
.nav-logo .lg-colour{ position:absolute; inset:0; opacity:0; }
.nav-links{ display:flex; align-items:center; gap:clamp(1.2rem,2.4vw,2.4rem); }
.nav-links a{
  position:relative; font-size:.74rem; font-weight:400; letter-spacing:.17em; text-transform:uppercase;
  text-decoration:none; color:var(--offwhite); padding:.35rem 0; transition:color .3s var(--ease);
}
.nav-links a::after{
  content:""; position:absolute; left:0; right:100%; bottom:0; height:1px;
  background:var(--gold-lt); transition:right .35s var(--ease);
}
.nav-links a:hover::after,.nav-links a[aria-current="page"]::after{ right:0; }
.nav-links a[aria-current="page"]{ color:var(--gold-lt); }
.nav .btn{ padding:.85rem 1.6rem; }
.nav .btn[aria-current="page"]{ background:var(--gold-dk); border-color:var(--gold-dk); }

/* solid state: after scroll, and on every inner page */
.nav.solid{ background:var(--offwhite); box-shadow:0 1px 0 var(--line); }
.nav.solid .nav-inner{ padding-block:1rem; }
.nav.solid .lg-white{ opacity:0; }
.nav.solid .lg-colour{ opacity:1; }
.nav.solid .nav-links a{ color:var(--ink); }
.nav.solid .nav-links a[aria-current="page"]{ color:var(--gold-dk); }
.nav.solid .nav-links .btn[aria-current="page"]{ color:var(--ink); }
.nav.solid .nav-links a::after{ background:var(--gold); }
.nav.solid .btn-light{ color:#fff; background:var(--gold); border-color:var(--gold); }
.nav.solid .btn-light:hover{ background:var(--gold-dk); border-color:var(--gold-dk); }

.menu-btn{ display:none; width:44px; height:44px; align-items:center; justify-content:center;
  background:none; border:0; cursor:pointer; padding:0; }
.menu-btn span{ display:block; width:24px; height:1px; background:var(--offwhite); position:relative; transition:background .3s var(--ease); }
.menu-btn span::before,.menu-btn span::after{ content:""; position:absolute; left:0; width:24px; height:1px; background:inherit; transition:transform .3s var(--ease); }
.menu-btn span::before{ top:-7px; } .menu-btn span::after{ top:7px; }
.nav.solid .menu-btn span{ background:var(--ink); }
.menu-btn[aria-expanded="true"] span{ background:transparent; }
.menu-btn[aria-expanded="true"] span::before{ transform:translateY(7px) rotate(45deg); background:var(--ink); }
.menu-btn[aria-expanded="true"] span::after{ transform:translateY(-7px) rotate(-45deg); background:var(--ink); }

/* ---------- home hero ---------- */
.hero{ position:relative; min-height:100vh; min-height:100svh; display:flex; align-items:center; overflow:hidden; }
.hero-bg{ position:absolute; inset:0; }
.hero-bg img{ width:100%; height:100%; object-fit:cover; object-position:center 60%; }
.hero-bg::after{
  content:""; position:absolute; inset:0;
  background:
    linear-gradient(100deg, rgba(43,43,34,.94) 0%, rgba(43,43,34,.80) 38%, rgba(43,43,34,.52) 62%, rgba(43,43,34,.66) 100%),
    linear-gradient(180deg, rgba(43,43,34,.60) 0%, transparent 30%, rgba(43,43,34,.72) 100%);
}
.hero .wrap{ position:relative; z-index:2; width:100%; padding-block:clamp(5.5rem,12vh,7rem) clamp(2rem,5vh,3rem); }
.hero-grid{ display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr); gap:clamp(2rem,5vw,4.5rem); align-items:center; }
.hero h1{ color:var(--offwhite); font-weight:300; font-size:clamp(2.3rem,4.3vw,4.1rem); }
.hero h1 em{ font-style:normal; color:var(--gold-lt); }
.hero .lede{ margin-top:1.5rem; max-width:44ch; }
.hero-cta{ display:flex; flex-wrap:wrap; gap:1rem 1.4rem; align-items:center; margin-top:2.2rem; }

/* framed portrait */
.portrait{ position:relative; justify-self:end; width:fit-content; max-width:100%; margin:0; }
.portrait-media{ position:relative; display:block; }
.portrait img{ position:relative; z-index:1; height:clamp(280px, calc(100svh - 325px), 520px); width:auto; max-width:100%; aspect-ratio:4/5; object-fit:cover; object-position:center top;
  box-shadow:0 30px 70px rgba(20,20,14,.45); }
.portrait-media::before{
  content:""; position:absolute; z-index:0; inset:-18px -18px -14px 18px;
  border:1px solid var(--gold-lt); opacity:.5; pointer-events:none;
}
.portrait figcaption{
  position:relative; z-index:1; width:0; min-width:100%; margin-top:2.5rem; color:#fff;
  font-size:.7rem; font-weight:500; letter-spacing:.24em; text-transform:uppercase;
  text-shadow:0 1px 12px rgba(20,20,14,.6);
}
.portrait figcaption span{ display:block; margin-top:.6rem; letter-spacing:.08em; text-transform:none;
  font-weight:300; font-size:.84rem; color:rgba(255,255,255,.88); }

/* ---------- inner page hero ---------- */
.page-hero{ position:relative; min-height:clamp(340px,52vh,520px); display:flex; align-items:flex-end; overflow:hidden; }
.page-hero .ph-bg{ position:absolute; inset:0; background:var(--dark-deep); }
.page-hero .ph-bg img{ width:100%; height:100%; object-fit:cover; opacity:.5; }
.page-hero .ph-bg::after{ content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(43,43,34,.82) 0%, rgba(43,43,34,.55) 45%, rgba(43,43,34,.88) 100%); }
.page-hero .wrap{ position:relative; z-index:2; width:100%; padding-block:clamp(8rem,16vh,10rem) clamp(2.8rem,6vh,4rem); }
.page-hero h1{ color:var(--offwhite); max-width:20ch; }
.page-hero h1 em,.hero h1 em{ font-style:normal; color:var(--gold-lt); }
.nowrap{ white-space:nowrap; }
.page-hero .lede{ margin-top:1.4rem; max-width:52ch; }

/* ---------- bands ---------- */
.band{ padding-block:clamp(4.5rem,9vw,7.5rem); }
.band-ivory{ background:var(--offwhite); }
.band-neutral{ background:var(--neutral); }
.band-dark{ background:var(--dark-deep); color:var(--offwhite); }
.band-dark h2,.band-dark h3{ color:var(--offwhite); }
.band-tight{ padding-block:clamp(3rem,6vw,4.5rem); }

.statement{ max-width:22ch; }
.two-col{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.15fr); gap:clamp(2rem,6vw,5.5rem); align-items:start; }
.two-col.align-center{ align-items:center; }

/* ---------- media + text split ---------- */
.split{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(2rem,5vw,4.5rem); align-items:center; }
.split.reverse .split-media{ order:2; }
.split-media{ position:relative; }
.split-media img{ width:100%; aspect-ratio:4/5; object-fit:cover; }
.split-media.wide img{ aspect-ratio:3/2; }
.split-media .rule{ position:absolute; left:-16px; top:-16px; width:64px; height:64px; border-left:1px solid var(--gold); border-top:1px solid var(--gold); }
.split-body h2{ margin-bottom:1.5rem; }
.split-body h2.gold{ color:var(--gold-dk); }
.personal{ max-width:62ch; }
.split-media.compact{ width:min(100%,360px); justify-self:center; }

/* ---------- service cards ---------- */
.cards{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(1.2rem,2.4vw,2rem); }
.card{ display:flex; flex-direction:column; background:var(--offwhite); text-decoration:none; color:inherit;
  transition:transform .5s var(--ease); }
.card:hover{ transform:translateY(-6px); }
.card-media{ position:relative; overflow:hidden; aspect-ratio:4/3; }
.card-media img{ width:100%; height:100%; object-fit:cover; transition:transform .8s var(--ease); }
.card:hover .card-media img{ transform:scale(1.045); }
.card-body{ padding:1.9rem 1.8rem 2.1rem; border:1px solid var(--line); border-top:0; flex:1;
  display:flex; flex-direction:column; }
.card-body h3{ font-size:1.5rem; }
.card-body p{ margin-top:.9rem; color:var(--body); font-size:.97rem; font-weight:300; flex:1; }
.card-body .textlink{ margin-top:1.6rem; align-self:flex-start; }

/* ---------- detail rows (service pages) ---------- */
.detail{ display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.6fr); gap:clamp(1.2rem,4vw,4rem);
  padding-block:clamp(2.2rem,4vw,3.2rem); border-top:1px solid var(--line); }
.detail:last-of-type{ border-bottom:1px solid var(--line); }
.detail h3{ font-size:1.35rem; font-weight:350; }
.detail .num{ display:block; font-size:.7rem; font-weight:500; letter-spacing:.26em; color:var(--gold-dk); margin-bottom:.7rem; }
.checks{ list-style:none; margin:1.2rem 0 0; padding:0; display:grid; gap:.75rem; }
.checks li{ position:relative; padding-left:1.8rem; color:var(--body); font-weight:400; }
.checks li::before{ content:""; position:absolute; left:0; top:calc(.85em - 1px); width:10px; height:2px; background:var(--gold); }

/* ---------- quote ---------- */
.quote{ max-width:900px; }
.quote blockquote{ margin:0; font-size:clamp(1.3rem,2.3vw,2rem); font-weight:300; line-height:1.5; }
.quote cite{ display:block; margin-top:2rem; font-style:normal; font-size:.72rem; font-weight:500;
  letter-spacing:.24em; text-transform:uppercase; color:var(--gold-lt); }

/* ---------- stats / credentials ---------- */
.facts{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(1.5rem,4vw,3rem); }
.fact{ border-top:1px solid var(--line-lt); padding-top:1.4rem; }
.band-ivory .fact,.band-neutral .fact{ border-color:var(--line); }
.fact .k{ font-size:clamp(1.8rem,3vw,2.6rem); font-weight:300; }
.fact .v{ margin-top:.5rem; font-size:.72rem; font-weight:500; letter-spacing:.2em; text-transform:uppercase; color:var(--gold-dk); }
.band-dark .fact .v{ color:var(--gold-lt); }

/* ---------- placeholder for photos still to come ---------- */
.ph{
  position:relative; display:flex; align-items:center; justify-content:center; text-align:center;
  background:
    repeating-linear-gradient(135deg, rgba(192,162,57,.07) 0 12px, transparent 12px 24px),
    var(--neutral);
  border:1px dashed rgba(192,162,57,.55); aspect-ratio:4/3; padding:1.5rem;
}
.ph span{ font-size:.68rem; font-weight:500; letter-spacing:.2em; text-transform:uppercase; color:var(--gold-dk); }
.ph span b{ display:block; margin-top:.55rem; font-weight:300; letter-spacing:.04em; text-transform:none;
  font-size:.86rem; color:var(--body); }
.ph.tall{ aspect-ratio:4/5; }
.ph.wide{ aspect-ratio:3/2; }

/* ---------- contact + form ---------- */
.contact-grid{ display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:clamp(2.5rem,6vw,5rem); }
.info-row{ padding-block:1.35rem; border-top:1px solid var(--line); }
.info-row:first-of-type{ border-top:0; padding-top:0; }
.info-row .k{ font-size:.68rem; font-weight:500; letter-spacing:.24em; text-transform:uppercase; color:var(--gold-dk); }
.info-row .v{ margin-top:.45rem; font-size:1.1rem; font-weight:300; text-decoration:none; display:inline-block; }
a.v:hover{ color:var(--gold-dk); }
.info-row .sub{ margin-top:.3rem; font-size:.88rem; color:var(--body); font-weight:300; }

form .field{ margin-bottom:1.5rem; }
form label{ display:block; font-size:.68rem; font-weight:500; letter-spacing:.2em; text-transform:uppercase; margin-bottom:.6rem; }
form .req{ color:var(--gold-dk); }
form input,form textarea,form select{
  width:100%; padding:.95rem 1.1rem; font-family:inherit; font-size:1rem; font-weight:300; color:var(--ink);
  background:var(--offwhite); border:1px solid var(--line); border-radius:0;
  transition:border-color .3s var(--ease), background .3s var(--ease);
}
form input:focus,form textarea:focus,form select:focus{ outline:none; border-color:var(--gold); background:#fff; }
form textarea{ min-height:150px; resize:vertical; }
.field-row{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.5rem; }
.form-note{ margin-top:1.2rem; font-size:.84rem; color:var(--body); font-weight:300; }
.setup-note{ margin-top:1.6rem; padding:1.1rem 1.3rem; background:rgba(192,162,57,.1);
  border-left:2px solid var(--gold); font-size:.85rem; font-weight:300; color:var(--body); }

/* booking embed slot */
.embed-slot{ min-height:520px; display:flex; align-items:center; justify-content:center; text-align:center;
  background:var(--offwhite); border:1px dashed rgba(192,162,57,.55); padding:2.5rem; }

/* ---------- footer ---------- */
.footer{ background:var(--dark-deep); color:var(--offwhite); padding-block:clamp(3.5rem,6vw,5rem) 2.5rem; }
.footer-top{ display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,1fr);
  gap:clamp(2rem,5vw,4rem); padding-bottom:3rem; border-bottom:1px solid var(--line-lt); }
.footer-logo{ width:220px; margin-bottom:1.5rem; }
.footer h4{ font-size:.7rem; font-weight:500; letter-spacing:.24em; text-transform:uppercase; color:var(--gold-lt); margin-bottom:1.3rem; }
.footer-nav{ display:grid; gap:.8rem; }
.footer a{ text-decoration:none; color:var(--body-lt); font-weight:300; transition:color .3s var(--ease); }
.footer a:hover{ color:var(--gold-lt); }
.footer p{ color:var(--body-lt); font-weight:300; }
.footer-bottom{ padding-top:1.8rem; display:flex; flex-wrap:wrap; gap:.8rem 2rem; justify-content:space-between;
  font-size:.78rem; color:rgba(246,245,240,.5); font-weight:300; }

/* ---------- reveal ----------
   Content is visible by default. JS only hides elements that start below the
   fold (.pre), then releases them (.in). If anything fails, nothing is hidden. */
@media (prefers-reduced-motion:no-preference){
  .reveal.pre{ opacity:0; transform:translateY(22px); }
  .reveal.pre.in{ opacity:1; transform:none; transition:opacity .9s var(--ease), transform .9s var(--ease); }
}

/* ---------- responsive ---------- */
@media (max-width:1000px){
  .nav-links{
    position:fixed; inset:0 0 0 auto; width:min(88vw,380px); flex-direction:column; align-items:flex-start;
    justify-content:center; gap:1.8rem; padding:2rem clamp(1.5rem,6vw,3rem);
    background:var(--offwhite); transform:translateX(100%); transition:transform .5s var(--ease);
    box-shadow:-20px 0 60px rgba(0,0,0,.14);
  }
  .nav-links.open{ transform:none; }
  .nav-links a{ color:var(--ink); font-size:1rem; letter-spacing:.14em; }
  .nav-links a[aria-current="page"]{ color:var(--gold-dk); }
  .nav-links a::after{ background:var(--gold); }
  .nav-links .btn{ background:var(--gold); border-color:var(--gold); color:#fff; width:100%; }
  .menu-btn{ display:flex; z-index:2; }
  .hero-grid,.split,.two-col,.contact-grid{ grid-template-columns:minmax(0,1fr); }
  .split.reverse .split-media{ order:0; }
  .portrait{ justify-self:start; width:min(76%,300px); margin-top:.5rem; }
  .portrait img{ width:100%; height:auto; }
  .hero{ min-height:auto; }
  .cards{ grid-template-columns:minmax(0,1fr); }
  .detail{ grid-template-columns:minmax(0,1fr); gap:.8rem; }
  .detail h3{ font-weight:450; font-size:1.4rem; }
}
@media (max-width:640px){
  .facts{ grid-template-columns:minmax(0,1fr); gap:1.4rem; }
  .field-row{ grid-template-columns:minmax(0,1fr); gap:0; }
  .footer-top{ grid-template-columns:minmax(0,1fr); }
  .hero{ min-height:auto; }
  .hero .wrap{ padding-block:8.5rem 3rem; }
  .scroll-hint{ display:none; }
}
