:root{
  --stucco:#F6F4F0;--paper:#FFFFFF;--oak:#C49A6C;--oak-deep:#9E7A50;
  --ink:#23211E;--slate:#3F4A4E;--stone:#8C857A;--line:#E4DFD7;
  --shadow:rgba(35,33,30,.08);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:'Inter',sans-serif;color:var(--ink);background:var(--stucco);line-height:1.6;-webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:'Fraunces',serif;font-weight:400;line-height:1.08;letter-spacing:-.01em}
img{display:block;width:100%;height:100%;object-fit:cover}
a{color:inherit;text-decoration:none}
.eyebrow{font-size:.72rem;letter-spacing:.28em;text-transform:uppercase;color:var(--oak-deep);font-weight:500}
.wrap{max-width:1240px;margin:0 auto;padding:0 40px}

/* slat motif */
.slats{position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(to bottom,transparent 0 6px,rgba(158,122,80,.10) 6px 7px)}

/* nav */
nav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;
  padding:22px 40px;transition:background .4s,padding .4s,box-shadow .4s}
nav.solid,nav.scrolled{background:rgba(246,244,240,.92);backdrop-filter:blur(10px);padding:14px 40px;box-shadow:0 1px 0 var(--line)}
.logo{font-family:'Fraunces',serif;font-size:1.5rem;letter-spacing:.02em}
.logo b{font-weight:500}
.logo .x{color:var(--oak-deep)}
.navlinks{display:flex;gap:38px;align-items:center}
.navlinks a{font-size:.85rem;letter-spacing:.04em;opacity:.8;transition:opacity .2s}
.navlinks a:hover,.navlinks a.active{opacity:1}
.navlinks .cta{border:1px solid var(--ink);padding:9px 20px;opacity:1;transition:background .25s,color .25s}
.navlinks .cta:hover{background:var(--ink);color:var(--stucco)}
.burger{display:none;flex-direction:column;gap:5px;cursor:pointer;background:none;border:none}
.burger span{width:24px;height:1.5px;background:var(--ink)}
/* white nav text over photo heroes */
nav.over:not(.scrolled) .logo b,nav.over:not(.scrolled) .navlinks a{color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.4)}
nav.over:not(.scrolled) .navlinks .cta{border-color:rgba(255,255,255,.8)}
nav.over:not(.scrolled) .navlinks .cta:hover{background:#fff;color:var(--ink);text-shadow:none}
nav.over:not(.scrolled) .burger span{background:#fff}

/* hero */
.hero{position:relative;height:100vh;height:100dvh;min-height:620px;overflow:hidden}
.hero img{position:absolute;inset:0;object-position:center 42%;transform:scale(1.02);animation:slowzoom 18s ease forwards}
@keyframes slowzoom{to{transform:scale(1)}}
.hero::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(35,33,30,.34) 0%,rgba(35,33,30,.06) 35%,rgba(35,33,30,.48) 100%)}
.hero-inner{position:absolute;z-index:2;left:0;right:0;bottom:0;padding:0 40px 64px;max-width:1240px;margin:0 auto}
.hero .eyebrow{color:#E9DCCB;font-size:.95rem;letter-spacing:.24em}
.hero h1{color:var(--paper);font-size:clamp(2.6rem,6vw,5.2rem);margin:14px 0 18px;max-width:15ch}
.hero p{color:rgba(255,255,255,.88);max-width:48ch;font-weight:300;font-size:1.05rem}
.hero-meta{position:absolute;z-index:2;right:40px;bottom:64px;text-align:right;
  color:rgba(255,255,255,.82);font-size:.78rem;letter-spacing:.06em}
.hero-meta span{display:block}
.hero-meta b{font-family:'Fraunces',serif;font-size:1.6rem;font-weight:400;color:#fff;letter-spacing:0}

/* stats strip */
.strip{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--line);background:var(--paper)}
.strip div{padding:34px 40px;border-right:1px solid var(--line)}
.strip div:last-child{border-right:none}
.strip b{font-family:'Fraunces',serif;font-size:2.2rem;font-weight:400;display:block;line-height:1}
.strip small{display:block;margin-top:8px;font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;color:var(--stone)}

section{padding:110px 0}
.lead{max-width:760px}
.lead h2{font-size:clamp(2rem,4vw,3.2rem);margin:18px 0}
.lead p{color:#56524B;font-size:1.1rem;font-weight:300}

/* split */
.split{display:grid;grid-template-columns:1.1fr 1fr;align-items:stretch}
.split .copy{padding:90px 80px 90px 0}
.split .copy h2{font-size:clamp(2rem,4vw,3rem);margin:18px 0 24px}
.split .copy p{color:#56524B;font-weight:300;margin-bottom:18px}
.split .pic{position:relative;min-height:560px;overflow:hidden}
.split .pic .slats{z-index:2;opacity:.5}

/* gallery grid */
.gallery{background:var(--paper)}
.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:14px;margin-top:48px}
.tile{position:relative;overflow:hidden;background:var(--line)}
.tile img{transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.tile:hover img{transform:scale(1.04)}
.tile figcaption{position:absolute;left:0;bottom:0;z-index:2;padding:16px 18px;color:#fff;
  font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;
  background:linear-gradient(0deg,rgba(35,33,30,.55),transparent);width:100%}
.g7{grid-column:span 7;aspect-ratio:16/10}
.g5{grid-column:span 5;aspect-ratio:16/10}
.g6{grid-column:span 6;aspect-ratio:16/10}
.g4{grid-column:span 4;aspect-ratio:4/5}

/* project cards */
.projgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:28px;margin-top:52px}
.projcard{display:block;background:var(--paper);border:1px solid var(--line);
  transition:transform .35s ease,box-shadow .35s ease}
a.projcard:hover{transform:translateY(-5px);box-shadow:0 18px 44px var(--shadow)}
.projpic{position:relative;aspect-ratio:16/10;overflow:hidden}
.projpic img{transition:transform .9s cubic-bezier(.2,.7,.2,1)}
a.projcard:hover .projpic img{transform:scale(1.05)}
.badge{position:absolute;top:14px;left:14px;z-index:2;background:var(--oak-deep);color:#fff;
  padding:6px 13px;font-size:.64rem;letter-spacing:.16em;text-transform:uppercase;font-weight:600}
.projmeta{padding:26px 28px 30px}
.projmeta h3{font-size:1.7rem;margin-bottom:6px}
.projmeta p{color:var(--stone);font-size:.92rem;font-weight:300;margin-bottom:14px}
.arrow{font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;font-weight:500;color:var(--oak-deep)}

/* project page header */
.phero{padding:150px 0 0}
.phead{display:grid;grid-template-columns:1.2fr 1fr;gap:60px;align-items:end;padding-bottom:52px}
.phead h1{font-size:clamp(2.4rem,5vw,4.2rem);margin:16px 0 0}
.phead p{color:#56524B;font-weight:300;font-size:1.05rem}
.crumb{font-size:.8rem;letter-spacing:.08em;color:var(--stone);margin-bottom:8px}
.crumb a:hover{color:var(--ink)}
.specs{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);background:var(--paper)}
.specs div{padding:26px 30px;border-right:1px solid var(--line)}
.specs div:last-child{border-right:none}
.specs b{font-family:'Fraunces',serif;font-size:1.35rem;font-weight:400;display:block;line-height:1.1}
.specs small{display:block;margin-top:6px;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--stone)}

/* before/after */
.ba{margin-bottom:78px}
.ba-title{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:18px;gap:20px;flex-wrap:wrap}
.ba-title h3{font-size:1.6rem}
.ba-title span{font-size:.82rem;color:var(--stone);letter-spacing:.04em}
.compare{position:relative;width:100%;aspect-ratio:16/10;overflow:hidden;background:var(--line);
  cursor:ew-resize;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;
  box-shadow:0 12px 40px var(--shadow)}
.compare img{position:absolute;inset:0;width:100%;height:100%;-webkit-user-drag:none;user-select:none;-webkit-user-select:none;pointer-events:none}
.compare .after-img{clip-path:inset(0 0 0 var(--pos,50%))}
.tag{position:absolute;top:16px;z-index:4;padding:6px 13px;font-size:.66rem;letter-spacing:.18em;
  text-transform:uppercase;font-weight:600;backdrop-filter:blur(4px);pointer-events:none}
.tag.b{left:16px;background:rgba(35,33,30,.72);color:#fff}
.tag.a{right:16px;background:rgba(255,255,255,.86);color:var(--ink)}
.handle{position:absolute;top:0;bottom:0;left:var(--pos,50%);width:2px;background:#fff;z-index:5;
  box-shadow:0 0 14px rgba(0,0,0,.35);pointer-events:none}
.handle::after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:44px;height:44px;border-radius:50%;background:#fff;box-shadow:0 3px 16px rgba(0,0,0,.3)}
.handle::before{content:"‹ ›";position:absolute;top:50%;left:50%;transform:translate(-50%,-52%);
  z-index:6;font-size:1.05rem;letter-spacing:2px;color:var(--ink);font-weight:600}
.ba-note{margin-top:16px;color:#56524B;font-weight:300;font-size:.96rem;max-width:64ch}

/* scope */
.scope{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);margin-top:46px}
.scope div{padding:34px 32px 40px;border-right:1px solid var(--line)}
.scope div:last-child{border-right:none}
.scope h4{font-family:'Fraunces',serif;font-size:1.25rem;font-weight:400;margin-bottom:14px}
.scope ul{list-style:none}
.scope li{color:#56524B;font-weight:300;font-size:.94rem;padding:6px 0 6px 16px;position:relative}
.scope li::before{content:"";position:absolute;left:0;top:15px;width:5px;height:5px;background:var(--oak);border-radius:50%}

/* process */
.process{display:grid;grid-template-columns:repeat(3,1fr);margin-top:56px;border-top:1px solid var(--line)}
.step{padding:40px 36px 48px;border-right:1px solid var(--line)}
.step:last-child{border-right:none}
.step .num{font-family:'Fraunces',serif;font-size:1rem;color:var(--oak-deep);letter-spacing:.04em}
.step h3{font-size:1.5rem;margin:18px 0 12px}
.step p{color:#56524B;font-weight:300;font-size:.96rem}

/* banner cta */
.banner{position:relative;overflow:hidden;color:#fff;text-align:center;padding:0}
.banner img{position:absolute;inset:0}
.banner::after{content:"";position:absolute;inset:0;background:rgba(35,33,30,.62)}
.banner .inner{position:relative;z-index:2;padding:126px 40px}
.banner h2{font-size:clamp(2rem,4.5vw,3.4rem);max-width:20ch;margin:14px auto 28px;color:#fff}
.banner .eyebrow{color:#E9DCCB}
.btn{display:inline-block;background:var(--stucco);color:var(--ink);padding:15px 34px;
  font-size:.85rem;letter-spacing:.1em;text-transform:uppercase;font-weight:500;
  transition:transform .2s,background .25s}
.btn:hover{transform:translateY(-2px);background:#fff}

/* footer */
footer{background:var(--ink);color:#C9C4BB;padding:72px 0 40px}
.fgrid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:40px;align-items:start}
footer .logo{color:#fff;font-size:1.7rem;margin-bottom:16px}
footer p{font-weight:300;max-width:34ch;font-size:.95rem}
.fcol h4{font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--oak);
  margin-bottom:18px;font-weight:600;font-family:'Inter',sans-serif}
.fcol a{display:block;margin-bottom:11px;font-size:.95rem;opacity:.85;transition:opacity .2s}
.fcol a:hover{opacity:1}
.fbottom{margin-top:56px;padding-top:26px;border-top:1px solid rgba(255,255,255,.1);
  display:flex;justify-content:space-between;font-size:.8rem;color:#7C766B}

.reveal{opacity:0;transform:translateY(26px);transition:opacity .9s ease,transform .9s ease}
.reveal.in{opacity:1;transform:none}

@media (max-width:920px){
  .wrap{padding:0 24px}
  nav{padding:18px 24px}
  .navlinks{position:fixed;inset:0 0 0 30%;background:var(--stucco);flex-direction:column;
    justify-content:center;gap:10px;transform:translateX(100%);transition:transform .35s;
    box-shadow:-10px 0 30px var(--shadow)}
  .navlinks.open{transform:none}
  /* 44px minimum tap targets */
  .navlinks a,nav.over:not(.scrolled) .navlinks a{
    color:var(--ink);text-shadow:none;font-size:1rem;
    padding:13px 24px;min-height:46px;display:flex;align-items:center;width:100%}
  .navlinks .cta,nav.over:not(.scrolled) .navlinks .cta{
    border-color:var(--ink);margin:10px 24px 0;width:auto;justify-content:center;min-height:48px}
  .burger{display:flex;z-index:60;padding:11px;margin:-11px}
  .strip{grid-template-columns:repeat(2,1fr)}
  .strip div{padding:26px 24px}
  .strip div:nth-child(2){border-right:none}
  .strip div:nth-child(1),.strip div:nth-child(2){border-bottom:1px solid var(--line)}
  .strip b{font-size:1.8rem}
  .split{grid-template-columns:1fr}
  .split .copy{padding:70px 24px 50px}
  .split .pic{min-height:380px}
  .grid{grid-template-columns:repeat(6,1fr);gap:10px}
  .g7,.g5,.g6{grid-column:span 6}
  .g4{grid-column:span 3}
  .projgrid{grid-template-columns:1fr}
  .phero{padding:118px 0 0}
  .phead{grid-template-columns:1fr;gap:22px;padding-bottom:40px}
  .specs{grid-template-columns:repeat(2,1fr)}
  .specs div{padding:22px 24px}
  .specs div:nth-child(2){border-right:none}
  .specs div:nth-child(1),.specs div:nth-child(2){border-bottom:1px solid var(--line)}
  .specs b{font-size:1.15rem}
  .scope,.process{grid-template-columns:1fr}
  .scope div,.step{border-right:none;border-bottom:1px solid var(--line);padding:30px 24px 34px}
  .fgrid{grid-template-columns:1fr;gap:34px}
  .fbottom{flex-direction:column;gap:10px}
  .fcol a{padding:5px 0;min-height:34px}
  .hero-meta{display:none}
  .hero-inner{padding:0 24px 48px}
  .hero p{font-size:1rem}
  section{padding:74px 0}
  .banner .inner{padding:92px 24px}
  /* before/after: taller frame + finger-friendly handle */
  .compare{aspect-ratio:4/3;touch-action:pan-y}
  .handle{width:3px}
  .handle::after{width:56px;height:56px}
  .handle::before{font-size:1.2rem}
  .ba{margin-bottom:58px}
  .ba-title h3{font-size:1.35rem}
  .tag{font-size:.6rem;padding:5px 10px}
}
@media (max-width:520px){
  .grid{grid-template-columns:1fr}
  .g7,.g5,.g6,.g4{grid-column:span 1;aspect-ratio:4/3}
  .strip{grid-template-columns:1fr}
  .strip div{border-right:none;border-bottom:1px solid var(--line)}
  .strip div:last-child{border-bottom:none}
  .specs{grid-template-columns:1fr}
  .specs div{border-right:none;border-bottom:1px solid var(--line)}
  .specs div:last-child{border-bottom:none}
  .ba-title{flex-direction:column;gap:4px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}

/* ---- services page ---- */
.svcgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:0;
  border-top:1px solid var(--line);border-left:1px solid var(--line);margin-top:52px}
.svc{padding:40px 38px 44px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);
  background:var(--paper);position:relative}
.svc .num{font-size:.7rem;letter-spacing:.2em;color:var(--oak-deep);font-weight:600}
.svc h3{font-size:1.65rem;margin:14px 0 12px}
.svc p{color:#56524B;font-weight:300;font-size:.97rem;margin-bottom:18px}
.svc ul{list-style:none}
.svc li{color:#56524B;font-weight:300;font-size:.92rem;padding:5px 0 5px 16px;position:relative}
.svc li::before{content:"";position:absolute;left:0;top:14px;width:5px;height:5px;
  background:var(--oak);border-radius:50%}
.svc .seealso{display:inline-block;margin-top:18px;font-size:.78rem;letter-spacing:.08em;
  text-transform:uppercase;font-weight:500;color:var(--oak-deep)}
.svc .seealso:hover{text-decoration:underline}

/* service area list */
.areas{display:flex;flex-wrap:wrap;gap:10px;margin-top:30px}
.areas span{background:var(--paper);border:1px solid var(--line);padding:9px 16px;
  font-size:.86rem;color:#56524B}

/* faq */
.faq{margin-top:46px;border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line);background:var(--paper)}
.faq summary{padding:24px 28px;cursor:pointer;font-family:'Fraunces',serif;font-size:1.15rem;
  list-style:none;display:flex;justify-content:space-between;align-items:center;gap:20px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";color:var(--oak-deep);font-size:1.5rem;font-family:'Inter',sans-serif;
  line-height:1;flex-shrink:0}
.faq details[open] summary::after{content:"–"}
.faq details p{padding:0 28px 26px;color:#56524B;font-weight:300;max-width:74ch}

@media (max-width:920px){
  .svcgrid{grid-template-columns:1fr;border-left:none}
  .svc{padding:32px 24px 36px;border-right:none}
  .faq summary{padding:20px 22px;font-size:1.05rem}
  .faq details p{padding:0 22px 22px}
}

/* ---- contact form ---- */
.contactwrap{display:grid;grid-template-columns:1.15fr .85fr;gap:64px;align-items:start;margin-top:52px}
.form{background:var(--paper);border:1px solid var(--line);padding:40px 38px 44px}
.field{margin-bottom:22px}
.field label{display:block;font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;
  font-weight:600;color:var(--ink);margin-bottom:8px}
.field .req{color:var(--oak-deep)}
.field input,.field select,.field textarea{
  width:100%;font-family:'Inter',sans-serif;font-size:1rem;color:var(--ink);
  background:var(--stucco);border:1px solid var(--line);padding:14px 15px;
  transition:border-color .2s,background .2s;border-radius:0;-webkit-appearance:none;appearance:none}
.field textarea{min-height:140px;resize:vertical;line-height:1.6}
.field select{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238C857A' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;background-size:18px;padding-right:44px}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--oak-deep);background:#fff}
.field input::placeholder,.field textarea::placeholder{color:#A9A296}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.submit{width:100%;background:var(--ink);color:var(--stucco);border:none;cursor:pointer;
  padding:17px 24px;font-family:'Inter',sans-serif;font-size:.85rem;letter-spacing:.12em;
  text-transform:uppercase;font-weight:600;transition:background .25s,transform .2s}
.submit:hover{background:#3A3630;transform:translateY(-1px)}
.submit:disabled{opacity:.55;cursor:not-allowed;transform:none}
.formnote{margin-top:16px;font-size:.82rem;color:var(--stone);font-weight:300}
.formstatus{margin-top:18px;padding:15px 18px;font-size:.92rem;display:none}
.formstatus.show{display:block}
.formstatus.ok{background:#EDF3ED;border:1px solid #C6DCC6;color:#2C5530}
.formstatus.err{background:#FBEDED;border:1px solid #E4C4C4;color:#7A2E2E}

/* contact sidebar */
.cinfo h3{font-size:1.4rem;margin-bottom:18px}
.cblock{padding:22px 0;border-bottom:1px solid var(--line)}
.cblock:first-of-type{border-top:1px solid var(--line)}
.cblock .lbl{display:block;font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;
  color:var(--oak-deep);font-weight:600;margin-bottom:7px}
.cblock a,.cblock span{font-size:1.02rem;color:var(--ink)}
.cblock a:hover{color:var(--oak-deep)}
.cblock p{font-size:.94rem;color:#56524B;font-weight:300;margin-top:4px}

@media (max-width:920px){
  .contactwrap{grid-template-columns:1fr;gap:44px}
  .form{padding:30px 24px 34px}
  .frow{grid-template-columns:1fr;gap:0}
  .field input,.field select,.field textarea{font-size:1rem;padding:15px}
  .submit{padding:18px 24px}
}
