/* ============================================================
   QUADRA INNOVATIONS — visual system (white + gold)
   Concept kept from the approved design: every home begins as a
   single line. White carries the page, black carries the type,
   gold appears only as line, rule and accent.
   Corners are square everywhere (architectural, radius 0).
   ============================================================ */
:root{
  --bg:#F7F3EA;             /* warm cream */
  --surface:#EFE7D8;        /* sand panel */
  --ink:#241F19;            /* type */
  --muted:#6A6155;          /* secondary type */
  --line:rgba(36,31,25,.15);
  --gold:#B98B4E;           /* bronze: rules, marks, borders */
  --gold-text:#87632A;      /* bronze for text and filled buttons */
  --black:#2E332B;          /* deep olive: footer */
  --err:#A8321F;
  --display:'Marcellus',Georgia,serif;
  --text:'Archivo',system-ui,-apple-system,'Segoe UI',sans-serif;
  --gutter:clamp(1.25rem,4vw,4rem);
  --max:1320px;
  --ease:cubic-bezier(.16,1,.3,1);
}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  font-family:var(--text);font-weight:400;font-size:1rem;line-height:1.7;
  background:var(--bg);color:var(--ink);
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img{display:block;max-width:100%;height:auto}
a{color:inherit}
h1,h2,h3,h4{font-family:var(--display);font-weight:400;line-height:1.12;letter-spacing:.005em}
h1{font-size:clamp(2.5rem,5.4vw,4.6rem)}
h2{font-size:clamp(2rem,3.6vw,3.1rem)}
h3{font-size:clamp(1.35rem,2vw,1.7rem)}
p{max-width:62ch}
:focus-visible{outline:2px solid var(--gold-text);outline-offset:3px}
::selection{background:var(--gold);color:var(--ink)}
.skip{position:absolute;left:-999px;top:0;background:var(--ink);color:#fff;padding:.7rem 1rem;z-index:200}
.skip:focus{left:1rem;top:1rem}

.wrap{max-width:var(--max);margin-inline:auto;padding-inline:var(--gutter)}
.section{padding-block:clamp(4.5rem,10vw,8.5rem)}
.section.tint{background:var(--surface)}
.lede{font-size:clamp(1.05rem,1.4vw,1.2rem);color:var(--muted)}
.muted{color:var(--muted)}

/* gold rule: the "single line" */
.rule{display:block;width:72px;height:1px;background:var(--gold);margin-block:1.6rem}
.rule.draw{transform:scaleX(0);transform-origin:left;transition:transform 1.2s var(--ease) .15s}
.rule.draw.in{transform:scaleX(1)}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.6rem;
  font-family:var(--text);font-size:.86rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;
  padding:1rem 1.8rem;border:1px solid var(--ink);text-decoration:none;white-space:nowrap;cursor:pointer;
  transition:background .3s ease,color .3s ease,border-color .3s ease,transform .15s ease;
}
.btn:active{transform:translateY(1px)}
.btn-solid{background:var(--gold-text);color:#fff;border-color:var(--gold-text)}
.btn-solid:hover{background:var(--ink);border-color:var(--ink)}
.btn-line{background:transparent;color:var(--ink);border-color:rgba(36,31,25,.45)}
.btn-line:hover{border-color:var(--gold-text);color:var(--gold-text);background:rgba(185,139,78,.08)}
.btn[disabled]{opacity:.6;cursor:wait}
.link{
  font-size:.86rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;
  padding-bottom:.25rem;border-bottom:1px solid var(--gold);transition:color .3s ease;
}
.link:hover{color:var(--gold-text)}
.actions{display:flex;flex-wrap:wrap;gap:.9rem;margin-top:2rem}

/* ---------- header ---------- */
.site-header{
  position:sticky;top:0;z-index:100;background:rgba(247,243,234,.96);
  border-bottom:1px solid transparent;transition:border-color .3s ease,box-shadow .3s ease;
}
.site-header.scrolled{border-bottom-color:var(--line);box-shadow:0 10px 30px -24px rgba(22,22,22,.35)}
.header-in{display:flex;align-items:center;justify-content:space-between;height:74px;gap:1.5rem}
.brand{display:flex;align-items:center;gap:.8rem;text-decoration:none}
.brand-mark{position:relative;display:block;width:48px;height:42px;overflow:hidden;flex:none}
.brand-mark img{position:absolute;width:104px;height:104px;max-width:none;left:-32px;top:-21px}
.brand span{font-family:var(--display);font-size:1rem;letter-spacing:.3em;text-transform:uppercase;line-height:1.15}
.brand em{display:block;font-style:normal;font-family:var(--text);font-size:.56rem;letter-spacing:.46em;color:var(--gold-text)}
.nav{display:flex;align-items:center;gap:2.1rem}
.nav a{font-size:.9rem;text-decoration:none;color:var(--muted);position:relative;padding-block:.35rem;transition:color .25s ease}
.nav a:not(.btn)::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--gold);transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease)}
.nav a:not(.btn):hover,.nav a:not(.btn)[aria-current="page"]{color:var(--ink)}
.nav a:not(.btn):hover::after,.nav a:not(.btn)[aria-current="page"]::after{transform:scaleX(1)}
.nav .btn{padding:.75rem 1.3rem;color:#fff}
.menu-toggle{display:none;background:none;border:1px solid var(--line);font:500 .8rem var(--text);letter-spacing:.12em;text-transform:uppercase;padding:.6rem .95rem;cursor:pointer;color:var(--ink)}
@media(max-width:940px){
  .menu-toggle{display:block;position:relative;z-index:120}
  .nav{
    position:fixed;inset:0;background:var(--bg);flex-direction:column;justify-content:center;gap:1.9rem;
    visibility:hidden;opacity:0;transition:opacity .3s ease,visibility 0s linear .3s;z-index:110;
  }
  .nav.open{visibility:visible;opacity:1;transition:opacity .3s ease}
  .nav a{font-family:var(--display);font-size:1.6rem;color:var(--ink)}
  .nav .btn{font-family:var(--text);font-size:.9rem;margin-top:.6rem}
}
.header-sentinel{position:absolute;top:0;height:8px;width:1px}

/* ---------- page hero (inner pages) ---------- */
.page-hero{padding-block:clamp(3.5rem,7vw,6rem) clamp(2.5rem,5vw,4rem)}
.page-hero h1{max-width:16ch}
.page-hero .lede{margin-top:1.3rem}
.wide-media{margin-inline:auto;max-width:calc(var(--max) + 8rem);padding-inline:var(--gutter)}
.wide-media img{width:100%;aspect-ratio:16/7;object-fit:cover}
@media(max-width:700px){.wide-media img{aspect-ratio:4/3}}

/* ---------- home hero ---------- */
.hero{padding-top:clamp(2.5rem,5vw,4.5rem)}
.hero-copy{display:grid;grid-template-columns:1.25fr 1fr;gap:clamp(1.5rem,5vw,5rem);align-items:end;padding-bottom:clamp(2rem,4vw,3.25rem)}
.hero h1{max-width:17ch;font-size:clamp(2.4rem,4.3vw,3.9rem)}
.hero-side p{color:var(--muted);font-size:1.1rem}
.hero-side .actions{margin-top:1.6rem}
.hero-media{margin-inline:auto;max-width:calc(var(--max) + 8rem);padding-inline:var(--gutter);position:relative}
.hero-media img{width:100%;aspect-ratio:16/7.2;object-fit:cover;object-position:center 55%}
.hero-media::after{content:"";position:absolute;left:var(--gutter);bottom:-1.5rem;width:min(38%,420px);height:1px;background:var(--gold)}
@media(max-width:860px){
  .hero-copy{grid-template-columns:1fr;align-items:start}
  .hero-media img{aspect-ratio:4/3}
}

/* ---------- statement ---------- */
.statement{text-align:center}
.statement h2{font-size:clamp(2.2rem,4.6vw,3.9rem);max-width:24ch;margin-inline:auto}
.statement .rule{margin-inline:auto;margin-block:2rem}
.statement p{margin-inline:auto;color:var(--muted);font-size:1.1rem}
.statement .link{display:inline-block;margin-top:2rem}

/* ---------- plans preview (home) ---------- */
.plans-split{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.4fr);gap:clamp(2rem,6vw,6rem);align-items:start}
.plans-intro{position:sticky;top:110px}
.plans-intro p{color:var(--muted);margin-top:1.2rem}
.plan-rows{display:grid;gap:2.75rem}
.plan-row{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:1.6rem;align-items:center;text-decoration:none}
.plan-row .img{overflow:hidden}
.plan-row img{width:100%;aspect-ratio:3/2;object-fit:cover;transition:transform .9s var(--ease)}
.plan-row:hover img{transform:scale(1.03)}
.plan-row h3{margin-bottom:.4rem}
.plan-row p{color:var(--muted);font-size:.95rem}
.plan-row .link{display:inline-block;margin-top:1rem}
@media(max-width:900px){
  .plans-split{grid-template-columns:1fr}
  .plans-intro{position:static}
}
@media(max-width:560px){.plan-row{grid-template-columns:1fr;gap:1rem}}

/* ---------- exterior finishes ---------- */
.finishes-head{max-width:720px;margin-bottom:clamp(2.2rem,4vw,3.5rem)}
.finishes-head p{color:var(--muted);margin-top:1.1rem}
.finish-pair{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1rem,2.5vw,2rem)}
.finish figure{overflow:hidden}
.finish img{width:100%;aspect-ratio:4/3;object-fit:cover}
.finish:nth-child(2){margin-top:clamp(0rem,6vw,5rem)}
.finish h3{margin-top:1.4rem;padding-top:1.1rem;border-top:1px solid var(--gold)}
.finish p{color:var(--muted);margin-top:.6rem;font-size:.97rem}
@media(max-width:700px){
  .finish-pair{grid-template-columns:1fr;gap:3rem}
  .finish:nth-child(2){margin-top:0}
  .finish img{aspect-ratio:4/3}
}

/* ---------- process ---------- */
.process h2{max-width:16ch}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1.5rem,4vw,3.5rem);margin-top:clamp(2.5rem,5vw,4rem);position:relative;list-style:none}
.steps::before{content:"";position:absolute;top:7px;left:0;right:0;height:1px;background:var(--line)}
.step{position:relative;padding-top:2.6rem}
.step::before{content:"";position:absolute;top:0;left:0;width:15px;height:15px;border:1px solid var(--gold);background:var(--surface);transform:rotate(45deg)}
.step h3{margin-bottom:.7rem}
.step p{color:var(--muted);font-size:.97rem}
@media(max-width:760px){
  .steps{grid-template-columns:1fr;gap:2.2rem;padding-left:2.2rem}
  .steps::before{top:0;bottom:0;left:7px;right:auto;width:1px;height:auto}
  .step{padding-top:0}
  .step::before{left:-2.2rem;top:.35rem}
}

/* ---------- why quadra ---------- */
.why{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:clamp(2rem,6vw,6rem);align-items:center}
.why-media img{width:100%;aspect-ratio:4/5;object-fit:cover}
.why h2{max-width:14ch}
.why-grid{display:grid;grid-template-columns:1fr 1fr;gap:2rem 2.5rem;margin-top:2.5rem}
.why-grid h3{font-size:1.25rem;margin-bottom:.5rem}
.why-grid h3::before{content:"";display:block;width:28px;height:1px;background:var(--gold);margin-bottom:.9rem}
.why-grid p{color:var(--muted);font-size:.95rem}
@media(max-width:900px){
  .why{grid-template-columns:1fr}
  .why-media img{aspect-ratio:3/2}
}
@media(max-width:520px){.why-grid{grid-template-columns:1fr}}

/* ---------- CTA band ---------- */
.band{text-align:center;border-top:1px solid var(--line)}
.band h2{max-width:20ch;margin-inline:auto}
.band .rule{margin-inline:auto}
.band p{margin-inline:auto;color:var(--muted)}
.band .actions{justify-content:center}
.band-contact{display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem 2.2rem;margin-top:2.4rem;font-size:.95rem;color:var(--muted)}
.band-contact a{text-decoration:none;border-bottom:1px solid transparent;transition:border-color .25s ease,color .25s ease}
.band-contact a:hover{color:var(--ink);border-bottom-color:var(--gold)}

/* ---------- about ---------- */
.story{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(2rem,6vw,6rem)}
.story-body p{font-size:1.08rem;color:var(--muted)}
.story-body p+p{margin-top:1.2rem}
.story-body p:first-child{color:var(--ink);font-size:clamp(1.25rem,2vw,1.5rem);font-family:var(--display);line-height:1.45}
@media(max-width:820px){.story{grid-template-columns:1fr}}
.vm{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1.5rem,4vw,4rem)}
.vm article{padding-top:1.8rem;border-top:1px solid var(--gold)}
.vm h2{font-size:1rem;font-family:var(--text);font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-text);margin-bottom:1rem}
.vm p{font-family:var(--display);font-size:clamp(1.35rem,2.3vw,1.85rem);line-height:1.4;max-width:30ch}
@media(max-width:720px){.vm{grid-template-columns:1fr}}
.values{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(2rem,6vw,6rem)}
.value-list{display:grid;grid-template-columns:1fr 1fr;gap:2.2rem 2.5rem}
.value-list div:last-child{grid-column:1/-1}
.value-list h3{font-size:1.3rem;margin-bottom:.45rem}
.value-list p{color:var(--muted);font-size:.96rem}
@media(max-width:820px){.values{grid-template-columns:1fr}}
@media(max-width:520px){.value-list{grid-template-columns:1fr}}
.path{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);margin-top:clamp(2.5rem,5vw,3.5rem);border-top:1px solid var(--line)}
.path li{padding:1.8rem 1.8rem 0 0;position:relative}
.path li::before{content:"";position:absolute;top:-4px;left:0;width:7px;height:7px;background:var(--gold);transform:rotate(45deg)}
.path strong{display:block;font-family:var(--display);font-weight:400;font-size:1.45rem;margin-bottom:.45rem}
.path span{color:var(--muted);font-size:.96rem}
@media(max-width:720px){.path{grid-template-columns:1fr}.path li{padding-right:0}}

/* ---------- floor plans page ---------- */
.plan-jump{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:2rem}
.plan{scroll-margin-top:100px}
.plan + .plan{margin-top:clamp(4.5rem,9vw,7.5rem)}
.plan-media{overflow:hidden}
.plan-media img{width:100%;aspect-ratio:16/8;object-fit:cover}
.plan-body{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(2rem,5vw,5rem);margin-top:2.4rem}
.plan-body h2{margin-bottom:.8rem}
.plan-body .muted{max-width:44ch}
.specs{display:grid;grid-template-columns:1fr 1fr;gap:1.6rem 2rem}
.specs div{border-top:1px solid var(--line);padding-top:.9rem}
.specs dt{font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-text);margin-bottom:.3rem;font-weight:500}
.specs dd{font-size:1rem}
.specs dd.soon{color:var(--muted);font-style:italic}
.drawing-slot{
  margin-top:1.6rem;border:1px dashed rgba(134,103,42,.55);padding:1.4rem 1.5rem;
  display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;
  color:var(--muted);font-size:.93rem;background:var(--surface)
}
@media(max-width:820px){
  .plan-body{grid-template-columns:1fr}
  .plan-media img{aspect-ratio:4/3}
}
@media(max-width:480px){.specs{grid-template-columns:1fr}}
.finish-mini{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1rem,3vw,2.5rem);margin-top:2.5rem}
.finish-mini figure{display:grid;grid-template-columns:120px 1fr;gap:1.2rem;align-items:center}
.finish-mini img{width:120px;height:120px;object-fit:cover}
.finish-mini h3{font-size:1.25rem;margin-bottom:.3rem}
.finish-mini p{color:var(--muted);font-size:.94rem}
@media(max-width:720px){.finish-mini{grid-template-columns:1fr}}

/* ---------- services ---------- */
.services{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(2rem,6vw,6rem);align-items:start}
.services-media{position:sticky;top:110px}
.services-media img{width:100%;aspect-ratio:4/5;object-fit:cover}
.service-list{list-style:none}
.service{padding-block:2rem;border-top:1px solid var(--line)}
.service:first-child{border-top:1px solid var(--gold);padding-top:1.6rem}
.service h2{font-size:clamp(1.6rem,2.6vw,2.2rem);margin-bottom:.6rem}
.service p{color:var(--muted)}
.service .link{display:inline-block;margin-top:1rem}
@media(max-width:860px){
  .services{grid-template-columns:1fr}
  .services-media{position:static}
  .services-media img{aspect-ratio:3/2}
}

/* ---------- gallery ---------- */
.gallery-note{font-size:.9rem;color:var(--muted);margin-bottom:1.4rem}
.filters{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:2.2rem}
.filter{background:transparent;border:1px solid var(--line);padding:.6rem 1.15rem;font:500 .8rem var(--text);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;color:var(--muted);transition:border-color .25s ease,color .25s ease,background .25s ease}
.filter:hover{border-color:var(--gold);color:var(--ink)}
.filter[aria-pressed="true"]{background:var(--gold-text);border-color:var(--gold-text);color:#fff}
.masonry{columns:3 300px;column-gap:1.25rem}
.tile{break-inside:avoid;margin-bottom:1.25rem}
.tile[hidden]{display:none}
.tile button{display:block;width:100%;border:0;padding:0;background:none;cursor:zoom-in;overflow:hidden}
.tile img{width:100%;transition:transform .9s var(--ease)}
.tile button:hover img{transform:scale(1.03)}
.tile:nth-child(3n+1) img{aspect-ratio:4/5;object-fit:cover}
.tile:nth-child(3n+2) img{aspect-ratio:3/2;object-fit:cover}
.tile:nth-child(3n) img{aspect-ratio:1/1;object-fit:cover}
.lightbox{border:0;padding:0;background:transparent;max-width:min(92vw,1400px);max-height:92vh;margin:auto}
.lightbox::backdrop{background:rgba(10,10,10,.88)}
.lightbox img{max-width:100%;max-height:82vh;object-fit:contain;margin-inline:auto}
.lightbox p{color:#EFE7D8;text-align:center;font-size:.92rem;margin:1rem auto 0}
.lightbox .lb-close{position:fixed;top:1rem;right:1rem;background:#fff;color:var(--ink);border:0;font:500 .8rem var(--text);letter-spacing:.12em;text-transform:uppercase;padding:.7rem 1rem;cursor:pointer}

/* ---------- contact ---------- */
.contact{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(2rem,6vw,6rem);align-items:start}
.contact h1{max-width:16ch}
.contact .lede{margin-top:1.2rem}
.details{list-style:none;margin-top:2.6rem;display:grid;gap:1.4rem}
.details li{border-top:1px solid var(--line);padding-top:1rem}
.details span{display:block;font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-text);font-weight:500;margin-bottom:.25rem}
.details a{text-decoration:none;font-size:1.08rem}
.details a:hover{color:var(--gold-text)}
.socials{display:flex;flex-wrap:wrap;gap:.4rem 1.4rem}
@media(max-width:900px){.contact{grid-template-columns:1fr}}

.form-card{background:#FFFDF8;border:1px solid var(--line);padding:clamp(1.5rem,4vw,2.8rem);box-shadow:0 30px 60px -45px rgba(22,22,22,.35)}
.form-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.8rem}
.form-step-label{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-text);font-weight:500}
.form-bar{display:flex;gap:6px}
.form-bar i{display:block;width:34px;height:2px;background:var(--line)}
.form-bar i.done{background:var(--gold)}
.f-step{border:0;display:none}
.f-step.current{display:block;animation:stepIn .45s var(--ease)}
@keyframes stepIn{from{opacity:0;transform:translateX(14px)}to{opacity:1;transform:none}}
.f-step legend{margin-bottom:1.5rem}
.f-step legend h2{font-size:1.7rem;outline:none}
.f-step legend p{color:var(--muted);font-size:.94rem;margin-top:.35rem}
.field{display:grid;gap:.45rem;margin-bottom:1.25rem}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:0 1.2rem}
@media(max-width:560px){.field-row{grid-template-columns:1fr}}
.field label{font-size:.88rem;font-weight:500}
.field label b{color:var(--gold-text);font-weight:500}
.field .hint{color:var(--muted);font-weight:400}
.field input,.field select,.field textarea{
  width:100%;font:400 1rem var(--text);color:var(--ink);background:var(--bg);
  border:1px solid rgba(22,22,22,.28);padding:.85rem .95rem;border-radius:0;
  transition:border-color .2s ease,box-shadow .2s ease;
}
.field textarea{min-height:130px;resize:vertical}
.field input::placeholder,.field textarea::placeholder{color:#76736D}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--gold-text);box-shadow:0 0 0 3px rgba(198,163,79,.25)}
.f-err{display:none;color:var(--err);font-size:.84rem}
.field.error input,.field.error select,.field.error textarea{border-color:var(--err)}
.field.error .f-err{display:block}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.form-nav{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-top:1.8rem;padding-top:1.4rem;border-top:1px solid var(--line)}
.form-nav .btn{margin-left:auto}
.btn-text{background:none;border:0;font:500 .86rem var(--text);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;color:var(--muted)}
.btn-text:hover{color:var(--ink)}
.form-success{display:none}
.form-success.show{display:block}
.form-success h2{font-size:1.9rem;margin-bottom:.9rem}
.form-success p{color:var(--muted)}
.form-success p+p{margin-top:.8rem}
.form-success .rule{margin-block:1.3rem}
.summary-box{margin-top:1.4rem;white-space:pre-wrap;font-size:.82rem;line-height:1.7;border:1px solid var(--line);background:var(--surface);padding:1.1rem 1.3rem;max-height:240px;overflow:auto;color:var(--muted)}

/* ---------- footer ---------- */
.site-footer{background:var(--black);color:#E7E4D8;padding-block:clamp(3.5rem,7vw,5.5rem) 2rem}
.footer-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:2.5rem}
.footer-brand img{width:160px;height:160px;margin:-1.6rem 0 0 -1.6rem}
.footer-brand p{color:#A8A594;font-size:.93rem;max-width:32ch}
.site-footer h2{font-family:var(--text);font-size:.74rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-bottom:1.1rem}
.site-footer ul{list-style:none;display:grid;gap:.6rem}
.site-footer a{text-decoration:none;color:#E7E4D8;font-size:.95rem;transition:color .25s ease}
.site-footer a:hover{color:var(--gold)}
.footer-base{display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem;margin-top:3.5rem;padding-top:1.6rem;border-top:1px solid rgba(185,139,78,.35);font-size:.8rem;color:#9A9686}
@media(max-width:900px){.footer-grid{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.footer-grid{grid-template-columns:1fr}}

/* ---------- reveal (minimal motion) ---------- */
.js .reveal{opacity:0;transform:translateY(18px);transition:opacity .8s ease,transform .8s var(--ease)}
.js .reveal.in{opacity:1;transform:none}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .js .reveal{opacity:1;transform:none}
  .rule.draw{transform:none}
}

/* ============================================================
   HOME BANNER: plan to home reveal
   The drawing on the left is the same photo run through an
   edge-detect filter, so dragging turns the plan into the
   finished house. Ties to "every home begins as a single line".
   ============================================================ */
.banner{position:relative;background:var(--bg)}
.hero-stage{
  position:relative;overflow:hidden;isolation:isolate;
  height:clamp(460px,78vh,760px);
  background:var(--surface);
}
.hero-layer{position:absolute;inset:0}
.hero-layer img{width:100%;height:100%;object-fit:cover;object-position:center 58%}
.hero-plan{background:#FFFDF8;clip-path:inset(0 calc(100% - var(--split,42%)) 0 0)}
.hero-plan img{filter:url(#quadra-line);opacity:.92}
.hero-plan::after{
  content:"";position:absolute;inset:0;
  background:
    repeating-linear-gradient(to right,rgba(198,163,79,.2) 0 1px,transparent 1px 72px),
    repeating-linear-gradient(to bottom,rgba(198,163,79,.2) 0 1px,transparent 1px 72px);
}
.hero-seam{
  position:absolute;top:0;bottom:0;left:var(--split,42%);width:1px;background:var(--gold);
  box-shadow:0 0 0 1px rgba(255,255,255,.35);z-index:3;pointer-events:none;
}
.hero-seam::after{
  content:"";position:absolute;top:50%;left:50%;width:46px;height:46px;transform:translate(-50%,-50%) rotate(45deg);
  border:1px solid var(--gold);background:rgba(255,255,255,.92);
}
.hero-range{
  position:absolute;inset:0;z-index:4;width:100%;height:100%;margin:0;
  appearance:none;background:transparent;cursor:ew-resize;
}
.hero-range::-webkit-slider-thumb{appearance:none;width:64px;height:100%;background:transparent;cursor:ew-resize}
.hero-range::-moz-range-thumb{width:64px;height:460px;background:transparent;border:0;cursor:ew-resize}
.hero-range:focus-visible{outline:2px solid var(--gold-text);outline-offset:-6px}
.hero-tags{position:absolute;inset:auto 0 1.1rem 0;z-index:3;display:flex;justify-content:space-between;padding-inline:var(--gutter);pointer-events:none}
.hero-tags span{
  font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;
  background:rgba(253,253,252,.9);border:1px solid var(--line);padding:.4rem .7rem;color:var(--muted);
}
.hero-scrim{position:absolute;inset:0;z-index:2;pointer-events:none;
  background:linear-gradient(100deg,rgba(247,243,234,.97) 0%,rgba(247,243,234,.92) 34%,rgba(247,243,234,.45) 54%,rgba(247,243,234,0) 72%)}
/* above the drag slider (z-index 4) so the buttons take clicks; the wrapper stays
   click-through so the rest of the banner can still be dragged */
.hero-copy-over{position:absolute;inset:0;z-index:5;display:flex;align-items:center;pointer-events:none}
.hero-copy-over .wrap{width:100%}
.hero-copy-over h1{max-width:15ch;font-size:clamp(2.3rem,4.6vw,4.1rem)}
.hero-copy-over p{max-width:34ch;color:var(--muted);font-size:clamp(1rem,1.25vw,1.15rem);margin-top:1.2rem}
.hero-copy-over .actions,.hero-copy-over .actions .btn{pointer-events:auto}
.hero-hint{margin-top:1.6rem;font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-text)}
@media(max-width:860px){
  .hero-stage{height:auto;min-height:0}
  .hero-stage .hero-media-box{position:relative;height:56vh;min-height:340px}
  .hero-copy-over{position:static;padding-block:2.2rem 0}
  .hero-scrim{display:none}
  .hero-copy-over h1,.hero-copy-over p{max-width:none}
}

/* ---------- service detail blocks ---------- */
.detail-block{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:clamp(2rem,5vw,4.5rem);align-items:center}
.detail-block + .detail-block{margin-top:clamp(3.5rem,7vw,6rem);padding-top:clamp(3.5rem,7vw,6rem);border-top:1px solid var(--line)}
.detail-block:nth-child(even) .detail-media{order:2}
.detail-media img{width:100%;aspect-ratio:4/3;object-fit:cover}
.detail-body h3{margin-bottom:.9rem}
.detail-body p{color:var(--muted)}
.checks{list-style:none;margin-top:1.4rem;display:grid;gap:.75rem}
.checks li{position:relative;padding-left:1.6rem;color:var(--muted);font-size:.97rem}
.checks li::before{content:"";position:absolute;left:0;top:.6rem;width:8px;height:8px;border:1px solid var(--gold);transform:rotate(45deg)}
.detail-body .actions{margin-top:1.8rem}
@media(max-width:820px){
  .detail-block{grid-template-columns:1fr}
  .detail-block:nth-child(even) .detail-media{order:0}
}

/* ---------- included grid ---------- */
.included{display:grid;grid-template-columns:repeat(3,1fr);gap:2.2rem 2.6rem;margin-top:clamp(2.2rem,4vw,3.2rem)}
.included h3{font-size:1.2rem;margin-bottom:.5rem;padding-top:1rem;border-top:1px solid var(--gold)}
.included p{color:var(--muted);font-size:.95rem}
@media(max-width:860px){.included{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.included{grid-template-columns:1fr}}

/* ---------- FAQ ---------- */
.faq-wrap{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(2rem,6vw,5rem);align-items:start}
.faq-list{border-top:1px solid var(--line)}
.faq-item{border-bottom:1px solid var(--line)}
.faq-q{
  width:100%;display:flex;justify-content:space-between;align-items:center;gap:1.5rem;text-align:left;
  background:none;border:0;cursor:pointer;padding:1.35rem 0;font-family:var(--display);
  font-size:clamp(1.05rem,1.5vw,1.25rem);color:var(--ink);
}
.faq-q:hover{color:var(--gold-text)}
.faq-q .sign{flex:none;width:22px;height:22px;position:relative}
.faq-q .sign::before,.faq-q .sign::after{content:"";position:absolute;inset:50% 0 auto 0;height:1px;background:var(--gold);transition:transform .35s var(--ease)}
.faq-q .sign::after{transform:rotate(90deg)}
.faq-q[aria-expanded="true"] .sign::after{transform:rotate(0)}
.faq-a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s var(--ease)}
.faq-a > div{overflow:hidden}
.faq-item.open .faq-a{grid-template-rows:1fr}
.faq-a p{color:var(--muted);font-size:.98rem;padding-bottom:1.35rem}
@media(max-width:820px){.faq-wrap{grid-template-columns:1fr}}

/* ---------- sticky mobile call to action ---------- */
.cta-bar{
  position:fixed;left:0;right:0;bottom:0;z-index:95;display:none;gap:1px;
  background:var(--line);border-top:1px solid var(--line);
}
.cta-bar a{
  flex:1;text-align:center;padding:.95rem .5rem;background:var(--bg);text-decoration:none;
  font-size:.78rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;
}
.cta-bar a.primary{background:var(--gold-text);color:#fff}
@media(max-width:860px){
  .cta-bar{display:flex}
  body{padding-bottom:56px}
}

/* ---------- footer credit ---------- */
.footer-credit a{color:var(--gold);text-decoration:none}
.footer-credit a:hover{text-decoration:underline}
.skip-visually{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.hero-media-box{position:absolute;inset:0}

/* the longer CTA label needs to stay on one line in the mobile bar */
@media(max-width:860px){
  .cta-bar a{font-size:.7rem;letter-spacing:.06em;white-space:nowrap;padding:1rem .4rem}
  body{padding-bottom:60px}
}
@media(max-width:360px){.cta-bar a{font-size:.64rem}}

/* ---------- home collections ---------- */
.collection + .collection{margin-top:clamp(3.5rem,7vw,6rem);padding-top:clamp(3.5rem,7vw,6rem);border-top:1px solid var(--line)}
.collection-head{max-width:760px;margin-bottom:clamp(1.8rem,3.5vw,2.8rem)}
.collection-head h2{margin-bottom:.9rem}
.collection-head p{color:var(--muted)}
.home-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1.5rem,3.5vw,3rem)}
.home-card{display:flex;flex-direction:column;border:1px solid var(--line);background:#FFFDF8;scroll-margin-top:100px}
.home-card figure{overflow:hidden}
.home-card img{width:100%;aspect-ratio:3/2;object-fit:cover;transition:transform .9s var(--ease)}
.home-card:hover img{transform:scale(1.03)}
.home-card .body{padding:clamp(1.3rem,2.5vw,2rem);display:flex;flex-direction:column;flex:1}
.home-card h3{margin-bottom:.3rem}
.home-card .tag{font-family:var(--text);font-size:.95rem;color:var(--gold-text);margin-bottom:1rem}
.home-card .specs-line{
  display:flex;flex-wrap:wrap;gap:.5rem 1.4rem;padding:.9rem 0;margin-bottom:1rem;
  border-top:1px solid var(--gold);border-bottom:1px solid var(--line);
  font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;font-weight:500;
}
.home-card .body > p{color:var(--muted);font-size:.97rem}
.home-card .feat-title{margin-top:1.3rem;font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-text);font-weight:500}
.home-card .checks{margin-top:.8rem}
.home-card .checks li{font-size:.93rem}
.home-card .actions{margin-top:auto;padding-top:1.8rem}
@media(max-width:820px){.home-grid{grid-template-columns:1fr}}

/* collection summary cards on the home page */
.collection-teasers{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1.2rem,3vw,2.2rem);margin-top:clamp(2.2rem,4vw,3.2rem)}
.teaser{display:block;text-decoration:none;border:1px solid var(--line);background:#FFFDF8}
.teaser img{width:100%;aspect-ratio:4/3;object-fit:cover}
.teaser div{padding:1.4rem 1.5rem 1.7rem}
.teaser h3{margin-bottom:.5rem}
.teaser p{color:var(--muted);font-size:.94rem}
.teaser .link{display:inline-block;margin-top:1.1rem}
@media(max-width:860px){.collection-teasers{grid-template-columns:1fr}}

/* numbered process steps (client copy uses 01/02/03) */
.step .num{display:block;font-size:.74rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-text);font-weight:500;margin-bottom:.5rem}
.step h3 + p{margin-top:.6rem}
.step .sub{font-family:var(--display);font-size:1.05rem;color:var(--ink);margin-bottom:.5rem}

/* ============================================================
   CLIENT MOCKUP LOOK (2026-09-29)
   Photo-led hero, icon row, round step badges, photo closing band.
   The round badges and icons are the client's design; the rest of
   the site keeps its square corners.
   ============================================================ */
.photo-hero{position:relative;min-height:clamp(540px,84vh,840px);display:flex;align-items:center;overflow:hidden}
.photo-hero > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 62%}
.photo-hero::after{content:"";position:absolute;inset:0;
  background:linear-gradient(96deg,rgba(32,26,20,.86) 0%,rgba(32,26,20,.66) 36%,rgba(32,26,20,.2) 66%,rgba(32,26,20,.08) 100%)}
.photo-hero .wrap{position:relative;z-index:2;padding-block:clamp(4rem,10vw,7rem)}
.photo-hero h1{color:#FFF9EE;max-width:16ch;font-size:clamp(2.5rem,5vw,4.3rem)}
.photo-hero p{color:rgba(255,249,238,.9);max-width:46ch;margin-top:1.3rem;font-size:clamp(1.02rem,1.3vw,1.18rem)}
.photo-hero .btn-line{color:#FFF9EE;border-color:rgba(255,249,238,.72)}
.photo-hero .btn-line:hover{background:rgba(255,249,238,.16);color:#fff;border-color:#FFF9EE}
@media(max-width:700px){
  .photo-hero{min-height:0}
  .photo-hero::after{background:linear-gradient(180deg,rgba(32,26,20,.5) 0%,rgba(32,26,20,.72) 55%,rgba(32,26,20,.88) 100%)}
  .photo-hero .wrap{padding-block:9rem 3rem}
}

/* header sits on the hero until the page scrolls */
.site-header.transparent{background:transparent;border-bottom-color:transparent;box-shadow:none}
.site-header.transparent .nav a:not(.btn){color:rgba(255,249,238,.86)}
.site-header.transparent .nav a:not(.btn):hover{color:#FFF9EE}
.site-header.transparent .brand span{color:#FFF9EE}
.site-header.transparent .brand em{color:var(--gold)}
.site-header.transparent .menu-toggle{color:#FFF9EE;border-color:rgba(255,249,238,.45)}
@media(max-width:940px){
  .site-header.transparent .nav.open{background:var(--bg)}
  .site-header.transparent .nav a:not(.btn){color:var(--ink)}
}

/* icon feature row */
.icon-row{display:grid;grid-template-columns:repeat(3,1fr);margin-top:clamp(2.4rem,4vw,3.4rem);text-align:center}
.icon-row > div{padding:1.8rem clamp(1rem,2vw,2rem);border-left:1px solid var(--line)}
.icon-row > div:nth-child(3n+1){border-left:0}
.icon-row > div:nth-child(n+4){border-top:1px solid var(--line)}
.icon-row i{font-size:2.1rem;color:var(--gold);display:block;margin-bottom:.9rem;line-height:1}
.icon-row h3{font-family:var(--text);font-size:.82rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;margin-bottom:.65rem}
.icon-row p{color:var(--muted);font-size:.93rem;margin-inline:auto;max-width:28ch}
@media(max-width:860px){
  .icon-row{grid-template-columns:1fr 1fr}
  .icon-row > div:nth-child(3n+1){border-left:1px solid var(--line)}
  .icon-row > div:nth-child(odd){border-left:0}
  .icon-row > div:nth-child(n+3){border-top:1px solid var(--line)}
}
@media(max-width:520px){
  .icon-row{grid-template-columns:1fr}
  .icon-row > div{border-left:0!important;border-top:1px solid var(--line)}
  .icon-row > div:first-child{border-top:0}
}

/* round numbered step badges */
.steps.badged{margin-top:clamp(2.2rem,4vw,3.2rem)}
.steps.badged::before{display:none}
.steps.badged .step{padding-top:0}
.steps.badged .step::before{display:none}
.step .badge{
  width:46px;height:46px;border-radius:50%;background:var(--gold-text);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:.85rem;font-weight:500;letter-spacing:.06em;
  margin-bottom:1.1rem;
}
.step .badge i{font-size:1.15rem}
@media(max-width:760px){.steps.badged{padding-left:0}}

/* closing band over a photo */
.photo-band{position:relative;overflow:hidden;text-align:center;border-top:0}
.photo-band > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.photo-band::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(33,38,30,.6),rgba(33,38,30,.78))}
.photo-band .wrap{position:relative;z-index:2}
.photo-band h2{color:#FFF9EE;max-width:22ch;margin-inline:auto}
.photo-band p{color:rgba(255,249,238,.86);margin-inline:auto}
.photo-band .rule{margin-inline:auto;background:var(--gold)}
.photo-band .btn-line{color:#FFF9EE;border-color:rgba(255,249,238,.72)}
.photo-band .btn-line:hover{background:rgba(255,249,238,.16);color:#fff;border-color:#FFF9EE}
.photo-band .band-contact{color:rgba(255,249,238,.8)}
.photo-band .band-contact a:hover{color:#FFF9EE;border-bottom-color:var(--gold)}

/* warm split panel (about strip) */
.split-panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:clamp(2rem,5vw,4.5rem);align-items:center}
.split-panel img{width:100%;aspect-ratio:4/3;object-fit:cover}
.split-panel .body p{color:var(--muted)}
.split-panel .body p + p{margin-top:1rem}
@media(max-width:820px){.split-panel{grid-template-columns:1fr}}

/* the home page header floats over the hero photo */
.site-header[data-over-hero]{position:fixed;top:0;left:0;right:0}

/* footer labels need a lighter bronze to stay readable on the olive panel */
.site-footer h2{color:#C9A066}
.site-footer a:hover{color:#C9A066}

/* ---------- mockup details: eyebrows, homes switcher, process columns, footer row ---------- */
.eyebrow{
  display:flex;align-items:center;gap:.7rem;justify-content:flex-start;
  font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;font-weight:500;color:var(--gold-text);
  margin-bottom:1rem;
}
.eyebrow::before{content:"";width:26px;height:1px;background:var(--gold);flex:none}
.center .eyebrow{justify-content:center}
.photo-hero .eyebrow{color:#E7C79A}
.photo-hero .eyebrow::before{background:#E7C79A}

/* hero: one filled button, one quiet arrow link */
.hero-link{
  display:inline-flex;align-items:center;gap:.5rem;color:#FFF9EE;text-decoration:none;
  font-size:.86rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;
  padding-bottom:.3rem;border-bottom:1px solid rgba(255,249,238,.5);transition:border-color .3s ease
}
.hero-link:hover{border-bottom-color:#E7C79A}

/* homes: photo, text and photo, with a 01 02 03 switcher */
.homes-strip{display:grid;grid-template-columns:1fr 1.15fr 1fr;align-items:stretch;gap:0}
.homes-strip .shot{overflow:hidden}
.homes-strip .shot img{width:100%;height:100%;min-height:340px;object-fit:cover}
.homes-copy{background:var(--surface);padding:clamp(2rem,4vw,3.4rem)}
.homes-copy h2{margin-bottom:1rem}
.homes-copy p{color:var(--muted)}
.homes-copy .link{display:inline-block;margin-top:1.4rem}
.homes-pager{display:flex;gap:1.6rem;margin-top:2.2rem}
.homes-pager button{
  background:none;border:0;padding:.3rem 0;cursor:pointer;font:500 .85rem var(--text);
  letter-spacing:.14em;color:var(--muted);border-bottom:2px solid transparent;transition:color .25s ease,border-color .25s ease
}
.homes-pager button[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--gold)}
.homes-pager button:hover{color:var(--ink)}
@media(max-width:980px){
  .homes-strip{grid-template-columns:1fr 1fr}
  .homes-copy{grid-column:1/-1;order:-1}
}
@media(max-width:600px){
  .homes-strip{grid-template-columns:1fr}
  .homes-strip .shot img{min-height:240px}
}

/* process: three columns with circled numbers */
.process-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1.4rem,3vw,2.4rem);margin-top:clamp(1.8rem,3vw,2.6rem)}
.process-cols .step{padding-top:0}
.process-cols .step::before{display:none}
.process-cols .badge{margin-bottom:.9rem}
.process-cols h3{font-size:1.15rem;margin-bottom:.5rem}
.process-cols p{font-size:.93rem}
@media(max-width:760px){.process-cols{grid-template-columns:1fr;gap:2rem}}

/* footer laid out as one row, like the mockup */
.footer-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:clamp(1.5rem,4vw,3rem)}
.footer-row .footer-brand img{width:120px;height:120px;margin:-1.2rem 0 .2rem -1.2rem}
.footer-links{display:flex;flex-wrap:wrap;gap:1.6rem;font-size:.9rem}
.footer-social{display:flex;gap:1rem;font-size:1.25rem}
.footer-social a{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid rgba(231,228,216,.28)}
.footer-social a:hover{border-color:#C9A066}
@media(max-width:860px){
  .footer-row{grid-template-columns:1fr;justify-items:start;text-align:left}
}
.process .split-panel{grid-template-columns:minmax(0,.8fr) minmax(0,1.7fr)}
@media(max-width:820px){.process .split-panel{grid-template-columns:1fr}}


/* ---------- banner tuned to the client mockup ----------
   Light warm veil on the left instead of a dark overlay, dark text,
   shorter band, so it reads like the reference image. */
.photo-hero{min-height:clamp(440px,66vh,640px)}
.photo-hero::after{
  background:linear-gradient(95deg,rgba(247,243,234,.97) 0%,rgba(247,243,234,.93) 26%,rgba(247,243,234,.62) 46%,rgba(247,243,234,.12) 68%,rgba(247,243,234,0) 100%);
}
.photo-hero h1{color:var(--ink);max-width:14ch}
.photo-hero p{color:var(--muted);max-width:40ch}
.photo-hero .eyebrow{color:var(--gold-text)}
.photo-hero .eyebrow::before{background:var(--gold)}
.photo-hero .hero-link{color:var(--ink);border-bottom-color:rgba(36,31,25,.35)}
.photo-hero .hero-link:hover{border-bottom-color:var(--gold)}
.photo-hero .btn-line{color:var(--ink);border-color:rgba(36,31,25,.45)}
.photo-hero .wrap{padding-block:clamp(3rem,7vw,5rem)}
@media(max-width:700px){
  .photo-hero::after{background:linear-gradient(180deg,rgba(247,243,234,.97) 0%,rgba(247,243,234,.93) 55%,rgba(247,243,234,.72) 100%)}
  .photo-hero .wrap{padding-block:2.6rem 3rem}
  .photo-hero h1,.photo-hero p{max-width:none}
}
/* keep the left third clear so the dark headline stays readable */
.photo-hero > img{object-position:72% 58%}
.photo-hero::after{
  background:linear-gradient(95deg,rgba(247,243,234,.985) 0%,rgba(247,243,234,.965) 30%,rgba(247,243,234,.88) 46%,rgba(247,243,234,.45) 62%,rgba(247,243,234,.05) 84%,rgba(247,243,234,0) 100%);
}
.photo-hero h1{max-width:13ch;font-size:clamp(2.4rem,4.4vw,3.9rem)}
.photo-hero p{max-width:38ch}
/* the hero copy is a flex item, so it needs a full-width track to sit at the left gutter */
.photo-hero .wrap{width:100%}
@media(max-width:700px){
  .photo-hero::after{background:linear-gradient(180deg,rgba(247,243,234,.985) 0%,rgba(247,243,234,.97) 58%,rgba(247,243,234,.86) 100%)}
}
@media(max-width:700px){
  /* let the photo show through under the copy without hurting the text */
  .photo-hero::after{background:linear-gradient(180deg,rgba(247,243,234,.96) 0%,rgba(247,243,234,.9) 46%,rgba(247,243,234,.55) 78%,rgba(247,243,234,.35) 100%)}
  .photo-hero > img{object-position:62% 55%}
}

/* ---------- banner: no cream veil, photo shows at full strength ---------- */
.photo-hero::after{
  background:linear-gradient(95deg,rgba(28,22,16,.62) 0%,rgba(28,22,16,.45) 32%,rgba(28,22,16,.2) 52%,rgba(28,22,16,0) 72%);
}
.photo-hero > img{object-position:64% 58%}
.photo-hero h1{color:#FFF9EE}
.photo-hero p{color:rgba(255,249,238,.92)}
.photo-hero .eyebrow{color:#E7C79A}
.photo-hero .eyebrow::before{background:#E7C79A}
.photo-hero .hero-link{color:#FFF9EE;border-bottom-color:rgba(255,249,238,.55)}
.photo-hero .hero-link:hover{border-bottom-color:#E7C79A}
@media(max-width:700px){
  .photo-hero::after{background:linear-gradient(180deg,rgba(28,22,16,.45) 0%,rgba(28,22,16,.6) 55%,rgba(28,22,16,.72) 100%)}
  .photo-hero > img{object-position:62% 55%}
}
/* client renderings are wide, so show them whole instead of cropping */
.home-card img.rendering{aspect-ratio:3.5/1;object-fit:cover;background:var(--surface)}


/* ---------- collection rows (client mockup, 2026-10-01) ---------- */
.collection-rows{display:grid;gap:clamp(.9rem,1.6vw,1.4rem)}
.collection-row{display:grid;grid-template-columns:1fr 1fr;align-items:stretch;background:#FBF7EF;border:1px solid var(--line)}
.collection-row figure{overflow:hidden;margin:0}
.collection-row img{width:100%;height:100%;min-height:clamp(240px,30vw,400px);object-fit:cover;transition:transform 1s var(--ease)}
.collection-row:hover img{transform:scale(1.02)}
.collection-row .panel{position:relative;display:flex;flex-direction:column;justify-content:center;padding:clamp(1.8rem,3.6vw,3.2rem);overflow:hidden}
.collection-row.flip figure{order:2}
.collection-row h3{font-size:clamp(1.9rem,3.2vw,2.8rem);margin-bottom:.5rem}
.collection-row .tagline{font-family:var(--display);font-style:italic;font-size:clamp(1rem,1.5vw,1.25rem);line-height:1.5;color:var(--ink);margin-bottom:1.1rem;padding-bottom:.15rem}
.collection-row .note{color:var(--muted);font-size:.97rem;max-width:44ch}
.collection-row .btn{margin-top:1.8rem;align-self:flex-start}
.collection-row .mark{
  position:absolute;right:-.2em;top:50%;transform:translateY(-50%);
  font-size:clamp(100px,11vw,170px);color:rgba(185,139,78,.12);line-height:1;pointer-events:none;
}
.collection-row.flip .mark{right:auto;left:-.2em}
@media(max-width:820px){
  .collection-row{grid-template-columns:1fr}
  .collection-row.flip figure{order:0}
  .collection-row img{min-height:220px}
  .collection-row .mark{font-size:120px;opacity:.7}
}
.collection-head .tagline-line{font-family:var(--display);font-style:italic;font-size:clamp(1.05rem,1.6vw,1.3rem);color:var(--ink);margin:.2rem 0 .9rem;padding-bottom:.15rem}
.collection-head h2{margin-bottom:.2rem}

/* ---------- collection page: rows that slide open ---------- */
.collection-row .toggle{cursor:pointer}
.collection-row .toggle .chev{display:inline-block;transition:transform .4s var(--ease)}
.collection-row.open .toggle .chev{transform:rotate(90deg)}
.collection-panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s var(--ease);background:var(--surface);border:1px solid var(--line);border-top:0}
.collection-panel > div{overflow:hidden}
.collection-panel.open{grid-template-rows:1fr}
.collection-panel .inner{padding:clamp(1.5rem,3vw,2.6rem)}
.collection-note{color:var(--muted);font-size:.97rem;max-width:60ch}

/* compact home cards (client screenshot) */
.home-mini-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:clamp(1rem,2vw,1.6rem)}
.home-mini{background:#FBF7EF;border:1px solid var(--line);display:flex;flex-direction:column;scroll-margin-top:110px}
.home-mini figure{overflow:hidden;margin:0}
.home-mini img{width:100%;aspect-ratio:16/10;object-fit:cover;transition:transform .9s var(--ease)}
.home-mini:hover img{transform:scale(1.03)}
.home-mini .body{padding:clamp(1rem,1.6vw,1.3rem) clamp(1.1rem,1.8vw,1.45rem) clamp(1.2rem,2vw,1.6rem);display:flex;flex-direction:column;flex:1}
.home-mini h4{font-family:var(--display);font-weight:400;font-size:clamp(1.15rem,1.6vw,1.4rem);margin-bottom:.15rem}
.home-mini .sub{color:var(--gold-text);font-size:.85rem;margin-bottom:.8rem}
.home-mini .spec{display:flex;flex-wrap:wrap;align-items:center;gap:.55rem;font-size:.84rem;letter-spacing:.06em;color:var(--muted);padding-top:.8rem;border-top:1px solid var(--line)}
.home-mini .spec s{text-decoration:none;color:var(--gold)}
.home-mini .link{margin-top:auto;padding-top:1.2rem;align-self:flex-start;font-size:.78rem}


.home-mini img.rendering{object-fit:cover;object-position:center}

/* collection rows run the full width of the screen */
.collection-rows{width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.collection-row,.collection-panel{border-left:0;border-right:0}
.collection-row .panel{padding-inline:clamp(1.5rem,5vw,4.5rem)}
.collection-panel .inner{padding-inline:clamp(1.25rem,5vw,4.5rem)}

/* hero fills the screen below the header */
.photo-hero{min-height:calc(100vh - 74px);min-height:calc(100svh - 74px)}
@media(max-width:700px){.photo-hero{min-height:calc(100svh - 74px)}}
.process-closer{font-family:var(--display);font-size:clamp(1.15rem,1.9vw,1.5rem);color:var(--ink);margin-top:clamp(1.6rem,3vw,2.4rem)}
.process-cols .step h3{font-size:1.05rem;line-height:1.45;color:var(--muted);font-family:var(--text);font-weight:400}
.process-cols .num{font-size:.78rem;letter-spacing:.2em}

/* ---------- hero script line (client image) ---------- */
.hero-script{
  position:absolute;z-index:4;pointer-events:none;
  right:clamp(1.5rem,7vw,6rem);top:clamp(16%,18vh,24%);
  font-family:'Parisienne',cursive;color:#FFF7EA;text-align:right;
  font-size:clamp(1.7rem,3.2vw,3rem);line-height:1.2;
  text-shadow:0 2px 20px rgba(38,24,10,.5),0 1px 3px rgba(38,24,10,.35);
}
.hero-script .l2{display:block;margin-right:.6em;margin-top:.1em}
.hero-script .dots{letter-spacing:.06em}
.hero-script svg{display:block;margin-left:auto;margin-top:.1rem;width:clamp(150px,17vw,250px);height:auto}
.hero-script svg path{fill:none;stroke:#FFF7EA;stroke-width:1.6;stroke-linecap:round;opacity:.85;
  filter:drop-shadow(0 2px 10px rgba(38,24,10,.45))}
@media(max-width:820px){
  .hero-script{position:static;text-align:left;margin:0 0 1.4rem;font-size:clamp(1.5rem,7vw,2.2rem)}
  .hero-script .l2{margin-right:0;margin-left:1.2em}
  .hero-script svg{margin-left:0;width:170px}
}
/* bigger, brighter script line to match the client image */
.hero-script{font-size:clamp(2rem,3.9vw,3.6rem);right:clamp(1.5rem,6vw,5rem);top:clamp(15%,17vh,22%)}
.hero-script svg{width:clamp(180px,20vw,300px)}
.hero-script svg path{stroke-width:2;opacity:.95}
/* the script line is absolute over the sky on desktop, and simply stacks on phones */
@media(max-width:820px){
  .hero-script{position:static;text-align:left;margin:0 0 1.2rem;font-size:clamp(1.6rem,7.5vw,2.3rem)}
  .hero-script .l2{margin-left:1.4em;margin-right:0}
  .hero-script svg{margin-left:0;width:150px}
}

/* the script line was disappearing into the bright sky: thicker strokes, deeper shadow,
   and a soft dark halo behind it */
.hero-script{
  position:absolute;isolation:isolate;
  top:clamp(13%,15vh,20%);right:clamp(1.5rem,7vw,6rem);
  color:#FFFBF2;-webkit-text-stroke:.6px rgba(255,251,242,.9);
  text-shadow:0 1px 2px rgba(26,16,6,.9),0 3px 12px rgba(26,16,6,.75),0 0 40px rgba(26,16,6,.6);
}
.hero-script::before{
  content:"";position:absolute;inset:-30% -16% -34% -18%;z-index:-1;border-radius:50%;
  background:radial-gradient(60% 60% at 55% 45%,rgba(24,15,6,.52),rgba(24,15,6,.22) 55%,rgba(24,15,6,0) 78%);
  filter:blur(14px);
}
.hero-script svg path{stroke:#FFFBF2;stroke-width:2.4;opacity:1;
  filter:drop-shadow(0 2px 6px rgba(26,16,6,.85)) drop-shadow(0 0 16px rgba(26,16,6,.5))}
@media(max-width:820px){
  .hero-script{position:static;text-shadow:0 1px 2px rgba(26,16,6,.85),0 2px 10px rgba(26,16,6,.6)}
  .hero-script::before{display:none}
}
/* larger, and pulled in from the edge like the client image */
.hero-script{font-size:clamp(2.2rem,4.4vw,4rem);right:clamp(2rem,9vw,8rem);top:clamp(13%,15vh,19%)}
.hero-script svg{width:clamp(200px,23vw,340px)}

/* script line: bolder face and warm gold, so it reads against the sunset */
.hero-script{
  font-family:'Dancing Script','Parisienne',cursive;font-weight:700;
  color:#FFD79A;-webkit-text-stroke:0;
  font-size:clamp(2rem,4vw,3.6rem);line-height:1.25;
  text-shadow:0 2px 3px rgba(22,13,4,.95),0 4px 16px rgba(22,13,4,.8),0 0 42px rgba(22,13,4,.6);
}
.hero-script::before{background:radial-gradient(60% 60% at 55% 45%,rgba(20,12,4,.6),rgba(20,12,4,.28) 55%,rgba(20,12,4,0) 78%)}
.hero-script svg path{stroke:#FFD79A;stroke-width:2.6}
/* sit the line over the darker cloud band, where warm gold reads strongest */
.hero-script{top:clamp(8%,10vh,13%);right:clamp(2rem,8vw,7rem);font-size:clamp(2.1rem,4.2vw,3.8rem)}

/* ---------- icon grids, matching the client mockups (2026-10-05) ---------- */
.icon-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin-top:clamp(2.2rem,4vw,3.4rem);text-align:center}
.icon-grid > div{padding:clamp(1.4rem,2.6vw,2.4rem) clamp(1rem,2vw,2rem);border-left:1px solid var(--line)}
.icon-grid > div:nth-child(3n+1){border-left:0}
.icon-grid > div:nth-child(n+4){border-top:1px solid var(--line)}
.icon-grid .ring{
  width:clamp(62px,6vw,78px);height:clamp(62px,6vw,78px);margin:0 auto 1.1rem;border-radius:50%;
  display:flex;align-items:center;justify-content:center;background:rgba(185,139,78,.1);border:1px solid rgba(185,139,78,.35);
}
.icon-grid .ring i{font-size:clamp(1.6rem,2.4vw,2rem);color:var(--gold-text);line-height:1}
.icon-grid h3{font-family:var(--text);font-size:.82rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;margin-bottom:.8rem}
.icon-grid h3.serif{font-family:var(--display);font-size:clamp(1.2rem,1.8vw,1.5rem);letter-spacing:0;text-transform:none;font-weight:400}
.icon-grid .bar{display:block;width:46px;height:1px;background:var(--gold);margin:0 auto .9rem}
.icon-grid p{color:var(--muted);font-size:.95rem;margin-inline:auto;max-width:30ch}
@media(max-width:860px){
  .icon-grid{grid-template-columns:1fr 1fr}
  .icon-grid > div:nth-child(3n+1){border-left:1px solid var(--line)}
  .icon-grid > div:nth-child(odd){border-left:0}
  .icon-grid > div:nth-child(n+3){border-top:1px solid var(--line)}
}
@media(max-width:560px){
  .icon-grid{grid-template-columns:1fr}
  .icon-grid > div{border-left:0!important;border-top:1px solid var(--line)}
  .icon-grid > div:first-child{border-top:0}
}
.section-centered{text-align:center}
.section-centered .eyebrow{justify-content:center}
.section-centered h2,.section-centered .lede,.section-centered p{margin-inline:auto}
.section-centered .actions{justify-content:center}

/* page banner with a photo behind the copy, like the client banner artwork */
.page-banner{position:relative;overflow:hidden;display:flex;align-items:center;min-height:clamp(300px,42vh,440px)}
.page-banner > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}
.page-banner::after{content:"";position:absolute;inset:0;
  background:linear-gradient(95deg,rgba(247,243,234,.98) 0%,rgba(247,243,234,.95) 32%,rgba(247,243,234,.72) 48%,rgba(247,243,234,.15) 72%,rgba(247,243,234,0) 100%)}
.page-banner .wrap{position:relative;z-index:2;width:100%;padding-block:clamp(2.5rem,5vw,4rem)}
.page-banner h1{max-width:16ch}
.page-banner .lede{margin-top:1.2rem;max-width:52ch}
@media(max-width:700px){
  .page-banner{min-height:0}
  .page-banner::after{background:linear-gradient(180deg,rgba(247,243,234,.96) 0%,rgba(247,243,234,.92) 55%,rgba(247,243,234,.8) 100%)}
  .page-banner .wrap{padding-block:2.6rem}
}
.icon-grid.cols-4{grid-template-columns:repeat(4,1fr)}
.icon-grid.cols-4 > div:nth-child(4n+1){border-left:0}
.icon-grid.cols-4 > div:nth-child(3n+1){border-left:1px solid var(--line)}
.icon-grid.cols-4 > div:nth-child(n+5){border-top:1px solid var(--line)}
@media(max-width:860px){
  .icon-grid.cols-4{grid-template-columns:1fr 1fr}
  .icon-grid.cols-4 > div:nth-child(odd){border-left:0}
  .icon-grid.cols-4 > div:nth-child(even){border-left:1px solid var(--line)}
  .icon-grid.cols-4 > div:nth-child(n+3){border-top:1px solid var(--line)}
}
@media(max-width:560px){.icon-grid.cols-4{grid-template-columns:1fr}}
/* Our Story and Our Mission centred (client request) */
.centered-story{display:block;text-align:center;max-width:860px;margin-inline:auto}
.centered-story h2{margin-bottom:1.4rem}
.centered-story .story-body p{margin-inline:auto}
.centered-story .story-body p:first-child{font-size:clamp(1.3rem,2.1vw,1.6rem)}
.centered-story .actions{justify-content:center}

/* home cards whose rendering has not arrived yet */
.home-mini .soon-img{
  aspect-ratio:16/10;background:var(--surface);border-bottom:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;
}
.home-mini .soon-img span{
  font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-text);font-weight:500;
  padding:.6rem 1.1rem;border:1px solid rgba(185,139,78,.45);
}

/* ---------- process steps: no numbers, bigger labels, arrows between ---------- */
.steps.arrowed{position:relative;gap:clamp(1.5rem,3vw,2.8rem)}
.steps.arrowed .step{position:relative;padding-top:0}
.steps.arrowed .step::before{display:none}
.steps.arrowed .num{
  display:block;font-family:var(--display);font-size:clamp(1.45rem,2.3vw,2.1rem);
  letter-spacing:.06em;text-transform:uppercase;color:var(--ink);font-weight:400;
  margin-bottom:.6rem;line-height:1.15;
}
.steps.arrowed .step h3{font-size:1rem;line-height:1.5;color:var(--muted);font-family:var(--text);font-weight:400}
/* the arrows get room to sit in the gap, not against the next word */
.steps.arrowed{gap:clamp(2.2rem,4vw,3.6rem)}
/* the arrowed variant has no timeline rail */
.steps.arrowed::before{display:none}
/* each step centres its own text, so the arrows read as sitting midway between
   the words rather than drifting towards the next one */
.steps.arrowed .step{text-align:center}
/* the arrow sits in the middle of the gap, level with the big step word */
.steps.arrowed .step:not(:last-child)::after{
  content:"\2192";position:absolute;top:0;right:calc(-1 * clamp(1.1rem,2vw,1.8rem));
  transform:translateX(50%);display:flex;align-items:center;
  height:calc(clamp(1.45rem,2.3vw,2.1rem) * 1.15);
  font-size:clamp(1.3rem,2vw,1.8rem);color:var(--gold);line-height:1;
}
@media(max-width:760px){
  .steps.arrowed{grid-template-columns:1fr;gap:1.6rem;padding-left:0}
  .steps.arrowed .step{text-align:left}
  .section-centered .steps.arrowed .step{text-align:center}
  .steps.arrowed .step:not(:last-child)::after{
    content:"\2193";position:static;display:block;height:auto;transform:none;
    margin:1rem 0 0;text-align:center;
  }
}

/* a five item icon grid centres its bottom row */
.icon-grid.five{grid-template-columns:repeat(6,1fr)}
.icon-grid.five > div{grid-column:span 2;border-left:1px solid var(--line);border-top:0}
.icon-grid.five > div:nth-child(1){border-left:0}
.icon-grid.five > div:nth-child(4){grid-column:2 / span 2;border-left:0;border-top:1px solid var(--line)}
.icon-grid.five > div:nth-child(5){grid-column:4 / span 2;border-top:1px solid var(--line)}
@media(max-width:860px){
  .icon-grid.five{grid-template-columns:1fr 1fr}
  .icon-grid.five > div,
  .icon-grid.five > div:nth-child(4),
  .icon-grid.five > div:nth-child(5){grid-column:auto;border-left:1px solid var(--line);border-top:0}
  .icon-grid.five > div:nth-child(odd){border-left:0}
  .icon-grid.five > div:nth-child(n+3){border-top:1px solid var(--line)}
}
@media(max-width:560px){
  .icon-grid.five{grid-template-columns:1fr}
  .icon-grid.five > div{border-left:0!important;border-top:1px solid var(--line)}
  .icon-grid.five > div:first-child{border-top:0}
}
/* client renderings in the compact cards keep their own shape */
.home-mini img.rendering{aspect-ratio:2.6/1;object-fit:cover;background:var(--surface)}

/* homes whose rendering is still to come: the client Coming Soon artwork */
.home-mini .soon-photo{position:relative;margin:0;overflow:hidden}
.home-mini .soon-photo img{width:100%;aspect-ratio:16/9;object-fit:cover;display:block}

/* ---------- language switch: two flag buttons ---------- */
.lang-switch{display:inline-flex;align-items:center;gap:.45rem}
.lang-switch a{display:inline-flex;padding:.35rem;border:1px solid transparent;
  opacity:.55;transition:opacity .25s ease,border-color .25s ease}
.lang-switch a:hover,.lang-switch a:focus-visible{opacity:1}
.lang-switch a.is-current{opacity:1;border-color:var(--line)}
.lang-switch a:not(.btn)::after{display:none}
.lang-switch .flag{display:block;width:26px;height:18px;border-radius:2px;
  box-shadow:0 0 0 1px rgba(36,31,25,.22),0 1px 2px rgba(36,31,25,.18)}
.site-header.transparent .lang-switch a.is-current{border-color:rgba(255,249,238,.45)}
.site-header.transparent .lang-switch .flag{box-shadow:0 0 0 1px rgba(255,249,238,.5)}
@media(max-width:940px){
  .lang-switch{gap:1rem}
  .lang-switch a{padding:.6rem}
  .lang-switch .flag{width:40px;height:28px}
}
