:root{
  --black:#0C0E0A;
  --green:#1E3A2B;
  --green-deep:#152A1F;
  --tan:#C6B190;
  --tan-light:#D9C9AC;
  --cream:#EFE9DC;
  --ink:#1A1C15;
  --line:rgba(198,177,144,0.22);
}
@font-face{font-family:'Druk';src:url('assets/fonts/DrukTextWide-Heavy.otf') format('opentype');font-weight:800;font-display:swap;}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:90px;}
body{background:var(--black);color:var(--cream);font-family:'Jost',sans-serif;font-weight:300;line-height:1.7;-webkit-font-smoothing:antialiased;overflow-x:hidden;}
::selection{background:var(--tan);color:var(--green-deep);}
.serif{font-family:'Cormorant Garamond',serif;}
.druk{font-family:'Druk','Arial Narrow',Arial,sans-serif;text-transform:uppercase;font-weight:800;line-height:.98;letter-spacing:.005em;}
.wrap{max-width:1240px;margin:0 auto;padding:0 48px;}
.overline{font-size:11px;letter-spacing:.34em;text-transform:uppercase;color:var(--tan);font-weight:400;}
.muted{color:rgba(239,233,220,.6);}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}

.fade{opacity:0;transform:translateY(26px);transition:opacity 1.2s cubic-bezier(.16,1,.3,1),transform 1.2s cubic-bezier(.16,1,.3,1);}
.fade.in{opacity:1;transform:none;}

/* nav */
nav{position:fixed;top:0;left:0;right:0;z-index:60;display:flex;align-items:center;justify-content:space-between;padding:26px 48px;transition:background .5s,border-color .5s,padding .5s;border-bottom:1px solid transparent;color:var(--cream);}
body.home nav{opacity:0;animation:navin 1s ease 3s forwards;}
@keyframes navin{to{opacity:1}}
nav.scrolled{background:rgba(12,14,10,.88);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);padding:16px 48px;}
.mark{font-family:'Druk','Arial Narrow',Arial,sans-serif;font-weight:800;font-size:1.05rem;letter-spacing:.02em;text-transform:uppercase;color:var(--cream);text-decoration:none;}
.navlinks{display:flex;gap:34px;font-size:11px;letter-spacing:.2em;text-transform:uppercase;}
.navlinks a{color:var(--cream);text-decoration:none;opacity:.78;transition:opacity .3s,color .3s;}
.navlinks a:hover,.navlinks a.active{opacity:1;color:var(--tan);}
.menu-btn{display:none;background:none;border:1px solid var(--line);color:var(--cream);font-size:10px;letter-spacing:.2em;text-transform:uppercase;padding:9px 16px;cursor:pointer;font-family:'Jost',sans-serif;}

/* home hero */
header.hero{min-height:100vh;min-height:100svh;display:flex;align-items:center;justify-content:center;position:relative;background:var(--black);overflow:hidden;}
/* hero stack: candle film (z0) → strobing stills (z1) → scrim (z2) → type (z10) */
.hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 1.4s ease;z-index:0;}
.hero-video.show{opacity:1;}
#carousel{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0;transition:opacity .9s ease;z-index:1;}
.hero-scrim{position:absolute;inset:0;z-index:2;pointer-events:none;transition:opacity 1.4s ease;
  background:radial-gradient(ellipse at center,rgba(10,12,8,.34) 0%,rgba(10,12,8,.68) 100%);}
/* the candle film is already near-black — the scrim tuned for bright property
   stills would crush it, so it lifts once the film takes over */
.hero.film .hero-scrim{opacity:.42;}
.hero.film .hero-video{filter:brightness(1.12) contrast(1.04);}
.hero-center{position:relative;z-index:10;text-align:center;padding:0 24px;cursor:pointer;}
#wordmark{display:flex;justify-content:center;align-items:baseline;font-family:'Druk','Arial Narrow',Arial,sans-serif;font-weight:800;text-transform:uppercase;font-size:clamp(2rem,7.5vw,6.5rem);line-height:1;color:var(--cream);letter-spacing:-.01em;opacity:0;transform:translateY(18px);animation:heroIn 1.1s cubic-bezier(.22,1,.36,1) .25s forwards;}
@keyframes heroIn{to{opacity:1;transform:none;}}
#wordmark .hid{display:inline-block;max-width:1.2em;opacity:1;transform:none;}
#wordmark .gap{display:inline-block;max-width:.4em;}
@keyframes reveal{from{max-width:0;opacity:0;transform:translateX(-.7em);}to{max-width:1.2em;opacity:1;transform:translateX(0);}}
@keyframes gapgrow{from{max-width:0;}to{max-width:.4em;}}
#wordmark.play .d1{animation-delay:.5s}
#wordmark.play .d2{animation-delay:.68s}
#wordmark.play .d3{animation-delay:.86s}
#wordmark.play .d4{animation-delay:1.04s}
#wordmark.play .d5{animation-delay:1.22s}
.herosub{margin-top:10px;font-size:11px;letter-spacing:.34em;text-transform:uppercase;color:var(--tan);opacity:0;transform:translateY(12px);animation:heroIn 1s ease .9s forwards;}
.scrollcue{position:absolute;bottom:30px;left:50%;transform:translateX(-50%);font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:rgba(239,233,220,.4);z-index:10;}

/* page hero (sub pages) */
.page-hero{padding:210px 0 90px;background:var(--black);}
.page-hero h1{font-family:'Cormorant Garamond',serif;font-weight:300;font-size:clamp(2.4rem,5vw,4.2rem);line-height:1.08;color:var(--cream);max-width:18ch;margin-top:24px;}
.page-hero h1.druk{font-family:'Druk','Arial Narrow',Arial,sans-serif;font-weight:800;text-transform:uppercase;font-size:clamp(2.2rem,5.6vw,4.8rem);color:var(--tan-light);max-width:14ch;}
.page-hero .lede{margin-top:26px;max-width:52ch;color:rgba(239,233,220,.65);}

section{padding:140px 0;}

/* statement */
.statement{background:var(--green-deep);color:var(--cream);}
.statement .serif{font-size:clamp(1.8rem,3.6vw,3.1rem);font-weight:300;line-height:1.3;max-width:20ch;font-style:italic;}
.statement .serif span{font-weight:500;}
.statement .attrib{margin-top:34px;font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--tan);}
.statement .serif span{color:var(--tan-light);}

/* approach */
.approach{background:var(--black);}
.sec-head{display:flex;align-items:baseline;gap:26px;margin-bottom:72px;}
.sec-head-solo{justify-content:flex-start;text-align:left;}
.sec-head h2{font-family:'Cormorant Garamond',serif;font-weight:300;font-size:clamp(2.1rem,3.6vw,3.1rem);color:var(--cream);}
.cols{display:grid;grid-template-columns:repeat(3,1fr);gap:56px;}
.col .num{font-family:'Cormorant Garamond',serif;font-style:italic;color:var(--tan);font-size:2rem;line-height:1;display:block;margin-bottom:16px;}
.col h3{font-family:'Cormorant Garamond',serif;font-weight:400;font-size:1.8rem;margin-bottom:16px;color:var(--cream);}
.col p{font-size:.98rem;color:rgba(239,233,220,.62);}

/* gallery */
.residences{padding-bottom:90px;}
.gallery{padding:0 48px;margin-top:60px;max-width:1600px;margin-left:auto;margin-right:auto;}
.gallery figure{position:relative;overflow:hidden;margin:0;}
.gallery img,.gallery video{width:100%;height:100%;object-fit:cover;display:block;transition:transform 1.4s cubic-bezier(.16,1,.3,1);}
.gallery figure:hover img{transform:scale(1.035);}
.gallery figure::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(10,12,8,.72),transparent 46%);z-index:1;pointer-events:none;}
.gallery figcaption{position:absolute;left:24px;bottom:20px;z-index:2;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--cream);}
.gallery figcaption b{color:var(--tan-light);font-weight:400;}
.g-feature{height:70vh;min-height:480px;}
.g-pair{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px;}
.g-pair figure{height:48vh;min-height:340px;}

/* portraits */
.portraits{padding-bottom:90px;}
.portraits .gallery{margin-top:60px;}
.p-feature{height:64vh;min-height:440px;}
/* the artwork shot that closes "The approach" */
.approach-shot{margin-top:80px;}

/* results */
.results{background:var(--green);position:relative;overflow:hidden;}
.results .bg{position:absolute;inset:0;background:url('assets/prop-coastal.jpg') center/cover;opacity:.16;z-index:0;}
.results .wrap{position:relative;z-index:2;}
.results .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;border-top:1px solid rgba(198,177,144,.3);}
.stat{padding:50px 0;border-bottom:1px solid rgba(198,177,144,.3);}
.stat .big{font-family:'Cormorant Garamond',serif;font-weight:300;font-size:clamp(2.8rem,5vw,4.4rem);line-height:1;color:var(--tan-light);}
.stat .lab{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:rgba(239,233,220,.7);margin-top:14px;}

/* bayside */
.bayside .lead{max-width:52ch;color:rgba(239,233,220,.6);margin-bottom:70px;}
.suburb-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:56px 64px;}
.suburb h3{font-family:'Cormorant Garamond',serif;font-weight:400;font-size:1.9rem;color:var(--cream);margin-bottom:12px;}
.suburb h3 span{color:var(--tan);font-style:italic;}
.suburb p{font-size:.95rem;color:rgba(239,233,220,.6);max-width:38ch;}

/* faq */
.faq{background:var(--black);}
.faq .qa{max-width:820px;}
.faq details{border-top:1px solid var(--line);}
.faq details:last-of-type{border-bottom:1px solid var(--line);}
.faq summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:24px;padding:28px 0;font-family:'Cormorant Garamond',serif;font-size:clamp(1.2rem,2vw,1.55rem);font-weight:400;color:var(--cream);transition:color .3s;}
.faq summary:hover{color:var(--tan-light);}
.faq summary::-webkit-details-marker{display:none;}
.faq summary::after{content:"+";color:var(--tan);font-size:1.7rem;font-family:'Jost',sans-serif;font-weight:300;flex-shrink:0;transition:transform .35s ease;}
.faq details[open] summary::after{transform:rotate(45deg);}
.faq .a{padding:0 40px 30px 0;max-width:62ch;color:rgba(239,233,220,.7);font-size:.98rem;}

/* about */
.about-split{display:grid;grid-template-columns:1fr 1.1fr;gap:84px;align-items:start;}
.about-split .portrait{overflow:hidden;}
.about-split .portrait img{width:100%;display:block;filter:grayscale(1);}
.about-split h2{font-family:'Cormorant Garamond',serif;font-weight:300;font-size:clamp(2rem,3.4vw,3rem);line-height:1.12;margin:18px 0 30px;color:var(--cream);}
.about-split p{color:rgba(239,233,220,.7);margin-bottom:20px;max-width:50ch;}
.about-split .sig{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:1.6rem;color:var(--tan);margin-top:16px;}
.about-candid{margin-top:120px;}
.about-candid figure{position:relative;overflow:hidden;height:60vh;min-height:400px;}
.about-candid img{width:100%;height:100%;object-fit:cover;display:block;}
.about-candid figcaption{margin-top:16px;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:rgba(239,233,220,.5);}

/* testimonials */
.t-hero{position:relative;overflow:hidden;height:64vh;min-height:440px;}
.t-hero img{width:100%;height:100%;object-fit:cover;display:block;}
.t-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(10,12,8,.7),transparent 50%);}
.quote-wall{columns:2;column-gap:20px;margin-top:70px;}
.tcard{break-inside:avoid;border:1px solid var(--line);padding:44px 40px;margin-bottom:20px;background:rgba(239,233,220,.02);}
.tcard .qmark{font-family:'Cormorant Garamond',serif;font-size:3.4rem;line-height:.6;color:var(--tan);display:block;margin-bottom:22px;}
.tcard blockquote{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:1.35rem;line-height:1.5;color:var(--cream);border:0;}
.tcard .who{margin-top:26px;font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--tan);}
.tcard .where{margin-top:4px;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:rgba(239,233,220,.45);}
.tcard.pending{border-style:dashed;opacity:.55;}
.t-source{margin-top:60px;font-size:.92rem;color:rgba(239,233,220,.55);max-width:60ch;}
.t-source a{color:var(--tan-light);}

.review-list{margin-top:16px;border-top:1px solid var(--line);}
.review-row{display:grid;grid-template-columns:100px 210px 1fr 110px;gap:24px;align-items:baseline;padding:22px 0;border-bottom:1px solid var(--line);}
.review-row .stars{color:var(--tan);font-size:.85rem;letter-spacing:.1em;white-space:nowrap;}
.review-row .who{font-size:12px;letter-spacing:.05em;color:var(--cream);}
.review-row .who span{display:block;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:rgba(239,233,220,.45);margin-top:3px;}
.review-row .txt{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:1.05rem;line-height:1.45;color:var(--cream);}
.review-row .when{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:rgba(239,233,220,.4);text-align:right;white-space:nowrap;}
@media(max-width:860px){
  .review-row{grid-template-columns:1fr;gap:6px;padding:20px 0;}
  .review-row .when{text-align:left;order:-1;}
}

/* auctions / steps */
.steps{margin-top:20px;}
.step{display:grid;grid-template-columns:110px 1fr;gap:40px;padding:44px 0;border-top:1px solid var(--line);}
.step:last-of-type{border-bottom:1px solid var(--line);}
.step .n{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:2.4rem;color:var(--tan);line-height:1;}
.step h3{font-family:'Cormorant Garamond',serif;font-weight:400;font-size:1.7rem;color:var(--cream);margin-bottom:12px;}
.step p{color:rgba(239,233,220,.65);max-width:58ch;font-size:.98rem;}
.video-slot{position:relative;height:62vh;min-height:420px;overflow:hidden;background:var(--green-deep);display:flex;align-items:center;justify-content:center;}
.video-slot video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.video-slot .note{position:relative;z-index:2;text-align:center;font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--tan);}

/* how i sell */
.methods{margin-top:10px;}
.method{display:grid;grid-template-columns:1fr 1.6fr;gap:60px;padding:64px 0;border-top:1px solid var(--line);}
.method:last-of-type{border-bottom:1px solid var(--line);}
.method h3{font-family:'Cormorant Garamond',serif;font-weight:400;font-size:clamp(1.6rem,2.6vw,2.2rem);color:var(--cream);}
.method .tag{display:block;margin-top:14px;font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--tan);}
.method p{color:rgba(239,233,220,.68);max-width:60ch;margin-bottom:16px;font-size:.99rem;}
.method p:last-child{margin-bottom:0;}
.method .best{font-style:italic;font-family:'Cormorant Garamond',serif;font-size:1.15rem;color:var(--tan-light);}

/* contact */
.contact{background:var(--green-deep);text-align:center;}
.contact h2{font-family:'Cormorant Garamond',serif;font-weight:300;font-size:clamp(2.3rem,4.6vw,3.8rem);color:var(--tan-light);margin-bottom:24px;}
.contact p{color:rgba(239,233,220,.7);max-width:40ch;margin:0 auto 40px;}
.cta{display:inline-block;font-size:12px;letter-spacing:.24em;text-transform:uppercase;color:var(--tan-light);text-decoration:none;border-bottom:1px solid var(--tan);padding-bottom:7px;transition:letter-spacing .4s ease;}
.cta:hover{letter-spacing:.32em;}
.contact .phone{display:block;margin-top:28px;font-size:12px;letter-spacing:.2em;color:rgba(239,233,220,.55);text-decoration:none;transition:color .3s;}
.contact .phone:hover{color:var(--tan-light);}

footer{padding:64px 48px;border-top:1px solid var(--line);}
footer .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:20px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:rgba(239,233,220,.55);padding:0;}

@media(max-width:860px){
  .cols,.results .grid,.g-pair,.about-split,.method,.suburb-grid,.press-grid{grid-template-columns:1fr;}
  .cols{gap:44px;}
  .suburb-grid{gap:44px;}
  .g-pair{gap:14px;}
  .about-split{gap:48px;}
  .method{gap:20px;padding:48px 0;}
  .quote-wall{columns:1;}
  .step{grid-template-columns:56px 1fr;gap:20px;}
  .results .grid{gap:0;}
  .menu-btn{display:block;}
  .navlinks{display:none;position:fixed;inset:0;background:rgba(12,14,10,.98);flex-direction:column;align-items:flex-start;justify-content:center;gap:30px;padding:0 40px;font-size:1.15rem;letter-spacing:.06em;z-index:80;}
  .navlinks.open{display:flex;}
  .navlinks a{opacity:.85;}
  section{padding:96px 0;}
  .wrap,nav,footer,.gallery{padding-left:26px;padding-right:26px;}
  .g-feature{height:52vh;min-height:340px;}
  .g-pair figure{height:38vh;min-height:280px;}
  .p-feature{height:46vh;min-height:300px;}
  .page-hero{padding:170px 0 70px;}
  .herosub{margin-top:8px;font-size:10px;letter-spacing:.24em;line-height:1.9;padding:0 20px;}
  .gallery figcaption{left:18px;bottom:16px;font-size:11px;letter-spacing:.16em;}
  nav .mark{padding:8px 0;}
  .menu-btn{padding:10px 16px;}
  .navlinks a{padding:6px 0;}
  .cta,.contact .phone{padding-top:6px;padding-bottom:10px;}
  footer{padding:52px 26px;}
  footer .wrap{gap:12px;}
}

@media (prefers-reduced-motion: reduce){
  .fade{opacity:1;transform:none;transition:none;}
  body.home nav{opacity:1;animation:none;}
  #wordmark{opacity:1;transform:none;animation:none!important;}
  #wordmark .hid{max-width:1.2em;opacity:1;transform:none;animation:none!important;}
  #wordmark .gap{max-width:.4em;}
  .herosub{opacity:1;transform:none;animation:none!important;}
  .gallery figure:hover img{transform:none;}
}


/* footer — socials + newsletter (2026-07-30) */
.foot-top{align-items:flex-end;padding-bottom:36px;margin-bottom:32px;border-bottom:1px solid var(--line);}
.foot-label{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:rgba(239,233,220,.55);margin-bottom:16px;}
.subscribe{display:flex;gap:12px;flex-wrap:wrap;}
.subscribe input[type=email]{background:transparent;border:0;border-bottom:1px solid var(--line);color:var(--cream);font-family:inherit;font-weight:300;font-size:.95rem;padding:11px 2px;min-width:270px;outline:none;transition:border-color .4s ease;}
.subscribe input[type=email]::placeholder{color:rgba(239,233,220,.32);}
.subscribe input[type=email]:focus{border-bottom-color:var(--tan);}
.subscribe button{background:transparent;border:1px solid var(--line);color:var(--cream);font-family:inherit;font-weight:400;font-size:11px;letter-spacing:.16em;text-transform:uppercase;padding:13px 28px;cursor:pointer;transition:border-color .4s ease,color .4s ease;}
.subscribe button:hover{border-color:var(--tan);color:var(--tan);}
.subscribe button:disabled{opacity:.45;cursor:default;}
.hp{position:absolute;left:-9999px;}
.foot-msg{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--tan);margin-top:16px;}
.foot-social{display:flex;justify-content:center;align-items:center;gap:20px;margin-top:44px;}
.foot-social a{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;color:rgba(239,233,220,.5);transition:color .4s ease;}
.foot-social a:hover,.foot-social a:focus-visible{color:var(--tan);}
.foot-social svg{width:18px;height:18px;fill:currentColor;display:block;}

@media(max-width:860px){
  .foot-top{align-items:flex-start;gap:34px;}
  .foot-news{width:100%;}
  .subscribe{width:100%;gap:16px;}
  .subscribe input[type=email]{min-width:0;width:100%;min-height:46px;}
  .subscribe button{width:100%;min-height:46px;}
  .foot-social{gap:16px;margin-top:38px;}
}


/* heritage sliding gallery (2026-08-04) */
.hgallery{padding:0;overflow:hidden;position:relative;}
/* The strip is a REAL scroll container (2026-09-14). It used to be a CSS transform
   marquee, which iOS hit-tests at the element's pre-animation position - so a tap on a
   moving house landed on nothing. Native overflow-x also gives swipe and momentum free. */
.hg-scroller{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;
  scrollbar-width:none;overscroll-behavior-x:contain;}
.hg-scroller::-webkit-scrollbar{display:none;}
.hg-scroller:focus-visible{outline:2px solid var(--tan);outline-offset:-4px;}
.hgallery::before,.hgallery::after{content:"";position:absolute;top:0;bottom:0;width:12%;z-index:2;pointer-events:none;}
.hgallery::before{left:0;background:linear-gradient(90deg,var(--black),transparent);}
.hgallery::after{right:0;background:linear-gradient(270deg,var(--black),transparent);}
.hg-track{display:flex;gap:20px;width:max-content;}
.hg-track figure{flex:0 0 auto;width:min(44vw,540px);margin:0;}
.hg-track img{width:100%;height:min(48vh,420px);object-fit:cover;display:block;}
.hg-track figcaption{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:rgba(239,233,220,.5);margin-top:14px;}
/* hgslide keyframes removed - drift is scrollLeft now. */
@media(max-width:860px){
  .hg-track{gap:14px;}
  .hg-track figure{width:78vw;}
  .hg-track img{height:44vh;}
  .hgallery::before,.hgallery::after{width:8%;}
}

/* Press — third-party corroboration (added 2026-08-10). Earned third-party
   mentions are the highest-leverage AI-visibility lever we have evidence for
   (Hermes research 2026-08-10): earned media is ~84% of AI-cited links, and
   brand mentions correlate ~0.66 with AI citation vs ~0.22 for backlinks.
   These are dofollow by design — the whole point is that they are crawlable. */
.press-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:40px 64px;}
.press-item{display:block;text-decoration:none;border-top:1px solid rgba(239,233,220,.18);padding-top:22px;transition:border-color .4s ease;}
.press-item:hover{border-top-color:var(--tan);}
.press-pub{display:block;font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--tan);margin-bottom:14px;}
.press-item h3{font-family:'Cormorant Garamond',serif;font-weight:400;font-size:1.55rem;line-height:1.3;color:var(--cream);margin-bottom:12px;}
.press-date{display:block;font-size:12px;letter-spacing:.08em;color:rgba(239,233,220,.45);}

/* ---------- for-sale listing cards ----------
   One listing today, more later, so the grid is auto-fit rather than a fixed
   column count: a single card sits at a readable width instead of stranded
   in a third of the row. */
.listing-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(440px,1fr));gap:56px 48px;}
.lcard{display:block;text-decoration:none;color:inherit;border:1px solid var(--line);background:rgba(239,233,220,.02);transition:border-color .4s,background .4s,transform .5s cubic-bezier(.16,1,.3,1);}
.lcard:hover{border-color:var(--tan);background:rgba(239,233,220,.045);transform:translateY(-4px);}
.lcard-img{aspect-ratio:3/2;overflow:hidden;background:var(--green-deep);}
.lcard-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 1s cubic-bezier(.16,1,.3,1);}
.lcard:hover .lcard-img img{transform:scale(1.035);}
.lcard-body{padding:34px 36px 32px;}
.lcard-specs{display:flex;gap:20px;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--tan);}
.lcard-body h2{font-family:'Cormorant Garamond',serif;font-weight:300;font-size:clamp(1.5rem,2.4vw,2.1rem);line-height:1.15;margin:14px 0 0;color:var(--cream);}
.lcard-line{margin-top:14px;font-size:.95rem;line-height:1.7;color:rgba(239,233,220,.62);}
.lcard-meta{display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap;margin-top:26px;padding-top:20px;border-top:1px solid var(--line);font-size:11px;letter-spacing:.2em;text-transform:uppercase;}
.lcard-method{color:rgba(239,233,220,.5);}
.lcard-go{color:var(--tan);}
@media(max-width:640px){.listing-grid{grid-template-columns:1fr;}.lcard-body{padding:28px 26px;}}
.listing-note{margin-top:34px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:rgba(239,233,220,.4);}

/* ---------- heritage gallery: clickable homes + detail dialog (2026-09-14) ----------
   The strip was decorative: six images on a marquee with a street name. Each home is now
   a button that opens a detail card - hero plus thumbnail strip - built from markup that
   already exists in the page, so the words are crawlable rather than injected by JS. */
.hg-open{display:block;width:100%;padding:0;border:0;background:none;cursor:pointer;position:relative;color:inherit;font:inherit;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;}
.hg-open img{transition:transform .8s cubic-bezier(.16,1,.3,1),opacity .5s ease;}
.hg-open:hover img,.hg-open:focus-visible img{transform:scale(1.03);opacity:.88;}
.hg-open:focus-visible{outline:2px solid var(--tan);outline-offset:4px;}

/* Strip arrows. They sit in the edge-fade zones, above the gradients (z-index 2) so they
   are clickable, and jump most of a viewport at a time for people who do not want to wait
   for the drift. */
.hg-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:54px;height:54px;
  display:grid;place-items:center;border:1px solid rgba(239,233,220,.26);
  background:rgba(12,14,10,.55);backdrop-filter:blur(8px);color:var(--cream);cursor:pointer;
  transition:background .3s ease,border-color .3s ease,color .3s ease,opacity .3s ease;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;}
.hg-arrow:hover{background:var(--tan);border-color:var(--tan);color:var(--green-deep);}
.hg-arrow:focus-visible{outline:2px solid var(--tan);outline-offset:3px;}
.hg-arrow-prev{left:22px;}
.hg-arrow-next{right:22px;}
@media(max-width:860px){
  .hg-arrow{width:44px;height:44px;}
  .hg-arrow-prev{left:10px;}
  .hg-arrow-next{right:10px;}
}
.hg-cue{position:absolute;left:20px;bottom:20px;z-index:2;font-size:10px;letter-spacing:.24em;text-transform:uppercase;
  color:var(--cream);background:rgba(12,14,10,.55);backdrop-filter:blur(6px);border:1px solid rgba(239,233,220,.28);
  padding:8px 16px;opacity:0;transform:translateY(6px);transition:opacity .45s ease,transform .45s ease;pointer-events:none;}
.hg-open:hover .hg-cue,.hg-open:focus-visible .hg-cue{opacity:1;transform:none;}
@media(hover:none){.hg-cue{opacity:1;transform:none;}}

/* Source-of-truth markup for the dialog. Present in the document, not rendered. */
#hg-details{display:none;}

/* ---------- the dialog ---------- */
/* An ID selector beats the UA's [hidden]{display:none}, so a `hidden` overlay that sets
   display here stays laid out at inset:0 and eats every tap and scroll on the page.
   Both rules below are load-bearing, not tidiness. */
#hg-detail[hidden],#hg-scrim[hidden]{display:none !important;}
#hg-detail:not(.open),#hg-scrim:not(.open){pointer-events:none;}
#hg-detail.open{pointer-events:auto;}
#hg-scrim{position:fixed;inset:0;z-index:120;background:rgba(6,7,5,.82);backdrop-filter:blur(10px);
  opacity:0;transition:opacity .32s ease;}
#hg-scrim.open{opacity:1;}
#hg-detail{position:fixed;inset:0;z-index:121;display:flex;align-items:flex-start;justify-content:center;
  padding:32px 24px;overflow-y:auto;overscroll-behavior:contain;opacity:0;transition:opacity .32s ease;}
#hg-detail.open{opacity:1;}
.hgd-card{position:relative;width:min(1080px,100%);margin:auto;background:var(--green-deep);border:1px solid var(--line);
  transform:translateY(18px) scale(.985);transition:transform .38s cubic-bezier(.16,1,.3,1);}
#hg-detail.open .hgd-card{transform:none;}
.hgd-close{position:absolute;top:14px;right:14px;z-index:6;width:42px;height:42px;display:grid;place-items:center;
  border:1px solid rgba(239,233,220,.26);background:rgba(12,14,10,.6);backdrop-filter:blur(6px);
  color:var(--cream);cursor:pointer;transition:background .3s ease,border-color .3s ease;}
.hgd-close:hover{background:var(--tan);border-color:var(--tan);color:var(--green-deep);}

.hgd-stage{position:relative;overflow:hidden;background:#000;}
.hgd-track{display:flex;transition:transform .42s cubic-bezier(.16,1,.3,1);will-change:transform;}
.hgd-track img{flex:0 0 100%;width:100%;height:min(56vh,560px);object-fit:cover;display:block;background:#0a0b08;}
.hgd-nav{position:absolute;top:calc(50% - 46px);transform:translateY(-50%);z-index:4;width:52px;height:52px;
  display:grid;place-items:center;border:1px solid rgba(239,233,220,.24);background:rgba(12,14,10,.5);
  backdrop-filter:blur(6px);color:var(--cream);cursor:pointer;transition:background .3s ease,opacity .3s ease;}
.hgd-nav:hover:not(:disabled){background:var(--tan);color:var(--green-deep);}
.hgd-nav:disabled{opacity:.25;cursor:default;}
.hgd-prev{left:16px;} .hgd-next{right:16px;}
.hgd-count{position:absolute;top:18px;left:20px;z-index:4;font-size:11px;letter-spacing:.16em;
  color:var(--cream);background:rgba(12,14,10,.55);backdrop-filter:blur(6px);padding:6px 12px;}
.hgd-thumbs{position:absolute;left:0;right:0;bottom:0;z-index:4;display:flex;gap:8px;padding:14px 16px;
  overflow-x:auto;scrollbar-width:none;background:linear-gradient(0deg,rgba(12,14,10,.9),transparent);}
.hgd-thumbs::-webkit-scrollbar{display:none;}
.hgd-thumbs button{flex:0 0 auto;width:88px;height:58px;padding:0;border:1px solid transparent;background:none;
  cursor:pointer;opacity:.5;transition:opacity .3s ease,border-color .3s ease;}
.hgd-thumbs button.on{opacity:1;border-color:var(--tan);}
.hgd-thumbs button img{width:100%;height:100%;object-fit:cover;display:block;}

.hgd-info{padding:34px 40px 40px;}
.hgd-price{font-family:'Cormorant Garamond',serif;font-size:2.4rem;line-height:1;color:var(--tan-light);margin-bottom:6px;}
.hgd-price.hh-undisc{font-size:1.5rem;color:rgba(239,233,220,.6);}
.hgd-name{font-family:'Cormorant Garamond',serif;font-weight:400;font-size:1.9rem;line-height:1.2;color:var(--cream);margin-bottom:2px;}
.hgd-street{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:rgba(239,233,220,.62);}
.hgd-meta{margin-top:10px;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--tan);}
.hgd-spec{display:flex;flex-wrap:wrap;gap:0 44px;list-style:none;margin:24px 0 0;padding:22px 0 0;border-top:1px solid var(--line);}
.hgd-spec li{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:rgba(239,233,220,.55);}
.hgd-spec b{display:block;font-family:'Cormorant Garamond',serif;font-weight:400;font-size:1.7rem;
  letter-spacing:0;text-transform:none;color:var(--cream);margin-bottom:2px;}
.hgd-note{margin-top:24px;max-width:66ch;color:rgba(239,233,220,.8);}

@media(max-width:860px){
  #hg-detail{padding:0;align-items:stretch;}
  .hgd-card{width:100%;min-height:100%;border:0;}
  .hgd-track img{height:44vh;}
  .hgd-nav{width:44px;height:44px;top:calc(50% - 40px);}
  .hgd-prev{left:8px;} .hgd-next{right:8px;}
  .hgd-thumbs button{width:66px;height:46px;}
  .hgd-info{padding:26px 22px 56px;}
  .hgd-price{font-size:1.9rem;}
  .hgd-name{font-size:1.5rem;}
  .hgd-spec{gap:0 28px;}
  .hgd-spec b{font-size:1.35rem;}
}
@media(prefers-reduced-motion:reduce){
  .hgd-track{transition:none;}
  .hgd-card{transform:none;transition:none;}
  .hg-open img{transition:none;}
}
