/* ============================================================
   Briq Design Studio · shared stylesheet
   Warm editorial gallery system. Photography leads, type is
   oversized, edges are architectural. Palette + brick motif per
   BRAND.md: warm off-white ground, near-black ink, terracotta
   accent. Dark is spent in the footer and one band only.
   Green is WhatsApp only.
   ============================================================ */

:root{
  --ink:#161616;
  --ink-soft:#453f38;
  --muted:#6f665c;
  --bg:#F2EDE7;
  --surface:#F7F1E9;
  --surface2:#FFFFFF;
  --line:#DCD2C3;
  --line-soft:#E7DFD2;
  --oak:#C9A87C;
  --terra:#B0492A;
  --terra-dark:#8C3720;
  --terra-bright:#D97757; /* terracotta lifted for dark grounds, contrast checked */
  --wa:#25D366;
  --serif:"Prata",Georgia,"Times New Roman",serif;
  --sans:"Inter",system-ui,-apple-system,sans-serif;
  --sh:0 24px 70px rgba(22,16,10,.16);
  --sh-sm:0 10px 34px rgba(22,16,10,.10);
  --r:2px; /* architectural edges: near-sharp everywhere */
  --hdr:76px;
}

*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16.5px;line-height:1.65;overflow-x:hidden;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;cursor:pointer;border:0;background:none;color:inherit}
section{position:relative}
::selection{background:var(--terra);color:#fff}
:focus-visible{outline:2px solid var(--terra);outline-offset:3px}

.wrap{max-width:1240px;margin:0 auto;padding:0 clamp(20px,4vw,44px)}
.wrap-wide{max-width:1560px;margin:0 auto;padding:0 clamp(20px,3vw,48px)}
.bleed-full{width:100%}

/* ---------- type ---------- */
h1,h2,h3,.serif{font-family:var(--serif);font-weight:400;line-height:1.06;letter-spacing:-.012em}
h1{font-size:clamp(44px,7.2vw,108px)}
h2{font-size:clamp(32px,4.6vw,64px)}
h3{font-size:clamp(24px,2.8vw,38px)}
h1 em,h2 em,h3 em{font-style:italic;color:var(--terra)}
.lead{font-size:clamp(17px,1.6vw,20px);color:var(--ink-soft);max-width:54ch;line-height:1.7}
.muted{color:var(--muted)}

.eyebrow{display:inline-flex;align-items:center;gap:13px;font-size:12px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--terra)}
.eyebrow::before{content:"";width:11px;height:11px;background:var(--terra);flex:none}
.eyebrow-light{color:rgba(255,255,255,.88)}
.eyebrow-light::before{background:var(--terra-bright)}

.brick{display:inline-block;width:11px;height:11px;background:var(--terra);flex:none}
.eyebrow-plain{display:inline-block;font-size:12px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}

/* section head: eyebrow + oversized title + optional link */
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:clamp(20px,3vw,48px);margin-bottom:clamp(40px,5.5vw,76px)}
.sec-head h2{margin-top:20px;max-width:15ch}
.sec-link{flex:none;display:inline-flex;align-items:center;gap:10px;font-size:12.5px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--terra);padding-bottom:10px}
.sec-link svg{width:16px;height:16px;transition:transform .3s}
.sec-link:hover svg{transform:translateX(6px)}
@media(max-width:760px){.sec-head{flex-direction:column;align-items:flex-start}}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:11px;font-weight:600;font-size:15px;letter-spacing:.01em;padding:17px 32px;border-radius:var(--r);transition:transform .3s,box-shadow .3s,background .3s,border-color .3s,color .3s;line-height:1.2}
.btn svg{width:16px;height:16px;flex:none}
.btn-terra{background:var(--terra);color:#fff}
.btn-terra:hover{background:var(--terra-dark);transform:translateY(-2px);box-shadow:0 14px 32px rgba(176,73,42,.30)}
.btn-ink{background:var(--ink);color:var(--bg)}
.btn-ink:hover{transform:translateY(-2px);box-shadow:0 14px 32px rgba(22,16,10,.30)}
.btn-ghost{border:1px solid var(--ink);color:var(--ink)}
.btn-ghost:hover{background:var(--ink);color:var(--bg);transform:translateY(-2px)}
.btn-ghost-light{border:1px solid rgba(242,237,231,.5);color:var(--bg)}
.btn-ghost-light:hover{border-color:var(--bg);background:rgba(242,237,231,.08);transform:translateY(-2px)}
.btn-wa{background:var(--wa);color:#052a14;font-weight:700}
.btn-wa:hover{transform:translateY(-2px);box-shadow:0 14px 32px rgba(37,211,102,.35)}
.btn-wa svg{fill:#052a14}
.btn[disabled]{opacity:.4;cursor:not-allowed;transform:none!important;box-shadow:none!important}
.cta-row{display:flex;gap:14px;flex-wrap:wrap}

/* ---------- header ---------- */
.site-header{position:fixed;top:0;left:0;right:0;z-index:80;background:rgba(242,237,231,.9);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--line-soft);transition:background .35s,border-color .35s}
.header-in{display:flex;align-items:center;gap:34px;padding:0 clamp(20px,3vw,48px);max-width:1560px;margin:0 auto;height:var(--hdr)}
.brand{display:flex;flex-direction:column;line-height:1;flex:none}
.brand-word{font-family:var(--serif);font-size:28px;letter-spacing:.05em;color:var(--ink);display:flex;align-items:baseline;gap:5px;transition:color .35s}
.brand-word::after{content:"";width:8px;height:8px;background:var(--terra)}
.brand-sub{font-size:8.5px;font-weight:700;letter-spacing:.34em;text-transform:uppercase;color:var(--muted);margin-top:5px;transition:color .35s}
.brand-rev .brand-word{color:var(--bg)}
.brand-rev .brand-sub{color:rgba(242,237,231,.55)}
.site-nav{display:flex;gap:30px;margin-left:auto;font-size:14.5px;font-weight:500;color:var(--ink-soft)}
.site-nav a{padding:6px 2px;position:relative;transition:color .25s}
.site-nav a::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:0;background:var(--terra);transition:width .35s}
.site-nav a:hover,.site-nav a[aria-current="page"]{color:var(--ink)}
.site-nav a:hover::after,.site-nav a[aria-current="page"]::after{width:100%}
.header-cta{flex:none;padding:13px 24px}
.nav-toggle{display:none;flex-direction:column;gap:5px;padding:10px;margin-left:auto;position:relative;z-index:95}
.nav-toggle span{width:24px;height:2px;background:var(--ink);transition:transform .3s,opacity .3s,background .3s}

/* header over the dark home hero: light until scrolled */
.hdr-dark{background:transparent;border-bottom-color:transparent}
.hdr-dark .brand-word{color:#fff}
.hdr-dark .brand-sub{color:rgba(255,255,255,.6)}
.hdr-dark .site-nav a{color:rgba(255,255,255,.78)}
.hdr-dark .site-nav a:hover,.hdr-dark .site-nav a[aria-current="page"]{color:#fff}
.hdr-dark .nav-toggle span{background:#fff}
.hdr-dark.scrolled{background:rgba(242,237,231,.92);border-bottom-color:var(--line-soft)}
.hdr-dark.scrolled .brand-word{color:var(--ink)}
.hdr-dark.scrolled .brand-sub{color:var(--muted)}
.hdr-dark.scrolled .site-nav a{color:var(--ink-soft)}
.hdr-dark.scrolled .site-nav a:hover,.hdr-dark.scrolled .site-nav a[aria-current="page"]{color:var(--ink)}
.hdr-dark.scrolled .nav-toggle span{background:var(--ink)}

@media(max-width:940px){
  .nav-toggle{display:flex}
  .site-nav{position:fixed;inset:0;background:var(--ink);flex-direction:column;justify-content:center;gap:0;padding:90px clamp(24px,7vw,64px) 48px;opacity:0;pointer-events:none;transition:opacity .3s}
  .site-nav.open{opacity:1;pointer-events:auto}
  .site-nav a{font-family:var(--serif);font-size:clamp(30px,7.5vw,44px);color:var(--bg);padding:14px 0;border-bottom:1px solid rgba(242,237,231,.12)}
  .site-nav a:hover,.site-nav a[aria-current="page"]{color:var(--terra-bright)}
  .site-nav a::after{display:none}
  .hdr-dark .site-nav a,.hdr-dark.scrolled .site-nav a{color:var(--bg)}
  .hdr-dark .site-nav a:hover,.hdr-dark.scrolled .site-nav a:hover{color:var(--terra-bright)}
  .header-cta{display:none}
  body.nav-open{overflow:hidden}
  /* backdrop-filter on the header would trap position:fixed children in the
     header box — drop it while the overlay is open so inset:0 means viewport */
  body.nav-open .site-header{background:transparent;border-bottom-color:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}
  body.nav-open .brand{position:relative;z-index:95}
  body.nav-open .brand-word{color:#fff}
  body.nav-open .brand-sub{color:rgba(255,255,255,.6)}
  body.nav-open .fab{display:none}
  body.nav-open .nav-toggle span{background:#fff}
  body.nav-open .nav-toggle span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  body.nav-open .nav-toggle span:nth-child(2){opacity:0}
  body.nav-open .nav-toggle span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
}

/* ---------- home hero: full viewport video ---------- */
.hero-media{position:relative;min-height:100svh;display:flex;align-items:flex-end;background:var(--ink);color:#fff;overflow:hidden}
.hero-media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* scrim per house standard: image stays alive, text stays legal */
.hero-media::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(10,8,6,.88),rgba(10,8,6,.70) 30%,rgba(10,8,6,.38) 58%,rgba(10,8,6,.10))}
.hero-media::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(to bottom,rgba(10,8,6,.34),transparent 24%)}
.hero-in{position:relative;z-index:2;width:100%;padding-bottom:clamp(34px,5vh,64px)}
.hero-in h1{margin:26px 0 24px;max-width:11ch;text-shadow:0 2px 30px rgba(0,0,0,.5),0 1px 4px rgba(0,0,0,.45)}
.hero-in h1 em{color:var(--oak)}
.hero-in .lead{color:rgba(255,255,255,.85);text-shadow:0 1px 18px rgba(0,0,0,.55);margin-bottom:34px}
.hero-in .cta-row{margin-bottom:clamp(34px,5vh,58px)}
.hero-in .btn-ghost{border-color:rgba(255,255,255,.55);color:#fff}
.hero-in .btn-ghost:hover{background:#fff;color:var(--ink);border-color:#fff}
.hero-meta{display:flex;gap:clamp(20px,3.5vw,56px);flex-wrap:wrap;border-top:1px solid rgba(255,255,255,.24);padding-top:22px}
.hero-meta div{min-width:0}
.hero-meta b{display:block;font-size:11px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.55);margin-bottom:7px}
.hero-meta span{font-family:var(--serif);font-size:clamp(16px,1.5vw,20px);color:#fff}
.hero-scroll{position:absolute;right:clamp(20px,3vw,48px);bottom:clamp(34px,5vh,64px);z-index:3;display:flex;flex-direction:column;align-items:center;gap:12px;font-size:10.5px;font-weight:700;letter-spacing:.3em;text-transform:uppercase;color:rgba(255,255,255,.65)}
.hero-scroll::after{content:"";width:1px;height:56px;background:rgba(255,255,255,.4);animation:scrollcue 2.4s ease-in-out infinite}
@keyframes scrollcue{0%,100%{transform:scaleY(.4);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}}
@media(max-width:880px){.hero-scroll{display:none}.hero-in h1{font-size:clamp(40px,11vw,64px)}}
@media(prefers-reduced-motion:reduce){.hero-scroll::after{animation:none}}

/* ---------- statement ---------- */
.statement{padding:clamp(90px,12vw,180px) 0}
.statement p{font-family:var(--serif);font-size:clamp(27px,3.7vw,54px);line-height:1.25;letter-spacing:-.01em;max-width:24ch}
.statement p em{color:var(--terra);font-style:italic}
.statement .eyebrow{margin-bottom:clamp(26px,3.5vw,44px)}
.statement .st-note{margin-top:clamp(26px,3.5vw,44px);max-width:52ch;color:var(--ink-soft);font-size:16.5px}

/* ---------- collage: editorial broken grid ---------- */
.collage{padding:clamp(70px,9vw,140px) 0;overflow:hidden;border-top:1px solid var(--line-soft)}
.collage-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(16px,2.4vw,32px)}
.collage figure{position:relative;overflow:hidden}
.collage img{width:100%;height:100%;object-fit:cover;transition:transform 1s cubic-bezier(.2,.6,.2,1)}
.collage figure:hover img{transform:scale(1.045)}
.c-a{grid-column:1/8;aspect-ratio:16/10.5}
.c-b{grid-column:8/13;aspect-ratio:4/4.6;margin-top:clamp(28px,5vw,84px)}
.c-c{grid-column:1/5;aspect-ratio:4/4.6}
.c-d{grid-column:5/13;aspect-ratio:16/8.6;margin-top:clamp(-30px,-2vw,-12px)}
.collage figcaption{display:flex;align-items:center;gap:11px;margin-top:13px;font-size:11.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.collage figcaption::before{content:"";width:8px;height:8px;background:var(--terra);flex:none}
@media(max-width:760px){
  .c-a{grid-column:1/13}
  .c-b{grid-column:1/13;margin-top:0;aspect-ratio:4/4.4}
  .c-c{grid-column:1/13}
  .c-d{grid-column:1/13;margin-top:0}
}

/* ---------- case feature: full bleed + offset panel ---------- */
.case-feature{padding-bottom:clamp(80px,10vw,150px)}
.cf-media{height:clamp(400px,74vh,780px);overflow:hidden}
.cf-media img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s cubic-bezier(.2,.6,.2,1)}
.case-feature:hover .cf-media img{transform:scale(1.03)}
.cf-panel{position:relative;z-index:2;margin:clamp(-150px,-11vw,-70px) clamp(20px,4vw,48px) 0;max-width:660px;background:var(--surface2);padding:clamp(34px,4.5vw,62px);box-shadow:var(--sh)}
.cf-panel::before{content:"";position:absolute;top:0;left:0;width:14px;height:14px;background:var(--terra)}
.cf-panel h2{margin:20px 0 18px}
.cf-panel p{color:var(--ink-soft);margin-bottom:14px;max-width:46ch}
.cf-panel .btn{margin-top:14px}

/* ---------- dark band + marquee ---------- */
.band-dark{background:var(--ink);color:var(--bg);padding:clamp(80px,10vw,150px) 0;overflow:hidden}
.band-dark .eyebrow{color:var(--oak)}
.band-dark .eyebrow::before{background:var(--terra)}
.band-dark h2{color:var(--bg);max-width:16ch;margin:22px 0 18px}
.band-dark h2 em{color:var(--terra-bright)}
.band-dark .lead{color:rgba(242,237,231,.72)}
.band-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(36px,5vw,84px);align-items:center}
.band-dark .cta-row{margin-top:28px}
@media(max-width:880px){.band-grid{grid-template-columns:1fr}}
.marquee{overflow:hidden;border-top:1px solid rgba(242,237,231,.14);border-bottom:1px solid rgba(242,237,231,.14);padding:clamp(18px,2.4vw,28px) 0;margin-bottom:clamp(52px,7vw,90px)}
.marquee-track{display:flex;width:max-content;animation:mq 52s linear infinite}
.marquee-track span{display:flex;align-items:center;gap:clamp(26px,3.4vw,50px);padding-right:clamp(26px,3.4vw,50px);font-family:var(--serif);font-size:clamp(26px,3.2vw,46px);line-height:1;color:rgba(242,237,231,.30);white-space:nowrap}
.marquee-track span::after{content:"";width:10px;height:10px;background:var(--terra);flex:none}
@keyframes mq{to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.marquee-track{animation:none}}
.mini-steps{display:grid}
.mini-step{display:flex;gap:20px;align-items:flex-start;padding:19px 0;border-top:1px solid rgba(242,237,231,.14)}
.mini-step:last-child{border-bottom:1px solid rgba(242,237,231,.14)}
.mini-step .brick{margin-top:7px}
.mini-step b{display:block;font-weight:600;font-size:16.5px;color:var(--bg)}
.mini-step span{font-size:14px;color:rgba(242,237,231,.6)}

/* ---------- service index rows (home) ---------- */
.svc-index{border-top:1px solid var(--line);padding-bottom:clamp(80px,10vw,150px)}
.svc-index .sec-head{padding-top:clamp(70px,9vw,130px)}
.svc-rows{border-top:1px solid var(--line)}
.svc-row{display:grid;grid-template-columns:auto 1fr auto;gap:clamp(20px,3.4vw,52px);align-items:center;padding:clamp(28px,3.6vw,46px) 0;border-bottom:1px solid var(--line);transition:padding .35s,background .35s}
.svc-row:hover{background:var(--surface);padding-left:clamp(12px,1.6vw,26px)}
.svc-row .n{font-size:12px;font-weight:700;letter-spacing:.22em;color:var(--terra)}
.svc-row h3{font-size:clamp(25px,3.4vw,46px);transition:color .3s}
.svc-row .svc-d{grid-column:2;color:var(--muted);font-size:15px;max-width:58ch;margin-top:8px}
.svc-row .arr{width:clamp(40px,4.4vw,58px);height:clamp(40px,4.4vw,58px);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;transition:background .3s,border-color .3s}
.svc-row .arr svg{width:18px;height:18px;transition:transform .3s,color .3s}
.svc-row:hover .arr{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.svc-row:hover .arr svg{transform:translateX(4px)}
@media(max-width:700px){.svc-row{grid-template-columns:1fr auto}.svc-row .n{grid-column:1/-1}}

/* ---------- mood teaser / swatch chips ---------- */
.mb-teaser{background:var(--surface);border-top:1px solid var(--line-soft);padding:clamp(80px,10vw,150px) 0;overflow:hidden}
.mb-grid{display:grid;grid-template-columns:.92fr 1.08fr;gap:clamp(36px,5vw,84px);align-items:center}
.mb-grid h2{margin:22px 0 18px}
.mb-grid p{color:var(--ink-soft);max-width:46ch;margin-bottom:16px}
.mb-grid .btn{margin-top:12px}
.mb-media{position:relative;overflow:hidden}
.mb-media img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/4.4;transition:transform 1s cubic-bezier(.2,.6,.2,1)}
.mb-media:hover img{transform:scale(1.04)}
@media(max-width:880px){.mb-grid{grid-template-columns:1fr}}
.swatch-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px}
.swatch-chip{width:88px;flex:none}
.swatch-chip img{width:88px;height:88px;object-fit:cover;box-shadow:var(--sh-sm)}
.swatch-chip span{display:block;font-size:11px;font-weight:600;color:var(--muted);margin-top:8px;line-height:1.35}

/* ---------- page hero (inner pages) ---------- */
.page-hero{padding:calc(var(--hdr) + clamp(56px,8vw,110px)) 0 clamp(46px,6vw,80px)}
.page-hero h1{margin:24px 0 22px;max-width:13ch}
.page-hero .lead{margin-bottom:0}
.page-hero .eyebrow{margin-bottom:2px}
.ph-rule-cta{margin-top:32px}
.ph-rule{margin-top:clamp(40px,5.5vw,70px);border-top:1px solid var(--line);display:flex;gap:clamp(20px,3.5vw,56px);flex-wrap:wrap;padding-top:24px}
.ph-rule div b{display:block;font-size:11px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-bottom:7px}
.ph-rule div span{font-family:var(--serif);font-size:clamp(16px,1.6vw,21px)}

/* ---------- case study ---------- */
.cs-hero{padding:calc(var(--hdr) + clamp(50px,7vw,96px)) 0 0}
.cs-hero h1{margin:24px 0 20px;max-width:14ch}
.cs-facts{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(18px,3vw,40px);margin-top:clamp(36px,5vw,60px);border-top:1px solid var(--line);padding-top:26px}
.cs-fact b{display:block;font-size:11px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.cs-fact span{font-family:var(--serif);font-size:clamp(17px,1.7vw,23px)}
@media(max-width:760px){.cs-facts{grid-template-columns:1fr 1fr}}
.cs-heroimg{margin-top:clamp(40px,5vw,70px);height:clamp(380px,72vh,740px);overflow:hidden}
.cs-heroimg img{width:100%;height:100%;object-fit:cover}

.beats{padding:clamp(70px,9vw,130px) 0 0}
.beat{padding:clamp(34px,4.5vw,64px) 0}
.beat-in{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,5vw,84px);align-items:center}
.beat:nth-child(odd) .beat-media{order:2}
.beat-media{overflow:hidden}
.beat-media img{width:100%;object-fit:cover;aspect-ratio:4/3.1;transition:transform 1s cubic-bezier(.2,.6,.2,1)}
.beat-media:hover img{transform:scale(1.04)}
.beat-tall .beat-media img{aspect-ratio:3/3.6}
.beat-n{display:inline-flex;align-items:center;gap:12px;font-size:12px;font-weight:700;letter-spacing:.24em;color:var(--terra);text-transform:uppercase;margin-bottom:20px}
.beat-n::before{content:"";width:9px;height:9px;background:var(--terra)}
.beat-copy h3{font-size:clamp(26px,3vw,40px);line-height:1.14;margin-bottom:18px}
.beat-copy p{color:var(--ink-soft);max-width:44ch}
.beat-bleed{padding:clamp(34px,4.5vw,64px) 0}
.bb-media{height:clamp(380px,68vh,700px);overflow:hidden}
.bb-media img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s cubic-bezier(.2,.6,.2,1)}
.beat-bleed:hover .bb-media img{transform:scale(1.03)}
.bb-cap{position:relative;z-index:2;margin:clamp(-130px,-9vw,-64px) clamp(20px,4vw,48px) 0;max-width:560px;background:var(--surface2);padding:clamp(28px,3.8vw,50px);box-shadow:var(--sh)}
.bb-cap::before{content:"";position:absolute;top:0;right:0;width:12px;height:12px;background:var(--terra)}
.beat-bleed:nth-child(even) .bb-cap{margin-left:auto}
.bb-cap h3{font-size:clamp(25px,2.9vw,38px);line-height:1.14;margin-bottom:14px}
.bb-cap p{color:var(--ink-soft)}
@media(max-width:820px){
  .beat-in{grid-template-columns:1fr}
  .beat:nth-child(odd) .beat-media{order:0}
}

/* gallery: every frame from the project */
.gallery{background:var(--surface);border-top:1px solid var(--line-soft);margin-top:clamp(70px,9vw,130px);padding:clamp(70px,9vw,130px) 0}
.gallery-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:clamp(140px,19vw,270px);grid-auto-flow:dense;gap:clamp(8px,1vw,14px)}
.gallery-grid figure{overflow:hidden;position:relative}
.gallery-grid img{width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.6,.2,1)}
.gallery-grid figure:hover img{transform:scale(1.05)}
.g-tall{grid-row:span 2}
.g-wide{grid-column:span 2}
@media(max-width:760px){.gallery-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:clamp(130px,32vw,220px)}}

/* ---------- projects index ---------- */
.projects-list{display:grid;gap:clamp(30px,4vw,48px);padding-bottom:clamp(80px,10vw,150px)}
.pcard{position:relative;display:block;min-height:clamp(440px,66vh,620px);overflow:hidden;color:#fff;background:var(--ink)}
.pcard img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.2s cubic-bezier(.2,.6,.2,1)}
.pcard:hover img{transform:scale(1.04)}
.pcard::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(10,8,6,.88),rgba(10,8,6,.70) 30%,rgba(10,8,6,.38) 58%,rgba(10,8,6,.10))}
.pcard-body{position:absolute;z-index:2;left:0;right:0;bottom:0;padding:clamp(28px,4.5vw,64px)}
.pcard-body h3{font-size:clamp(34px,4.6vw,66px);margin:18px 0 16px;text-shadow:0 2px 24px rgba(0,0,0,.5)}
.pcard-facts{display:flex;gap:14px 26px;flex-wrap:wrap;font-size:12.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.75);margin-bottom:16px}
.pcard-facts span{display:flex;align-items:center;gap:9px}
.pcard-facts span::before{content:"";width:7px;height:7px;background:var(--terra-bright)}
.pcard-body p{color:rgba(255,255,255,.85);max-width:52ch;margin-bottom:22px;text-shadow:0 1px 14px rgba(0,0,0,.5)}
.pcard-link{display:inline-flex;align-items:center;gap:11px;font-weight:700;font-size:13px;letter-spacing:.18em;text-transform:uppercase;color:#fff}
.pcard-link svg{width:17px;height:17px;transition:transform .3s}
.pcard:hover .pcard-link svg{transform:translateX(6px)}
.pcard-next{border:1px solid var(--line);padding:clamp(30px,4vw,48px);display:flex;gap:20px;align-items:flex-start;background:var(--surface)}
.pcard-next .brick{margin-top:6px}
.pcard-next b{display:block;font-family:var(--serif);font-weight:400;font-size:clamp(20px,2.2vw,26px);color:var(--ink);margin-bottom:6px}
.pcard-next span{color:var(--muted);font-size:15px}

/* ---------- services page rows ---------- */
.svc-list{display:grid;gap:clamp(48px,6vw,88px);padding-bottom:clamp(80px,10vw,150px)}
.svc{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(30px,4.5vw,72px);align-items:center;padding:clamp(36px,5vw,64px) 0;border-top:1px solid var(--line)}
.svc:first-child{border-top:0;padding-top:0}
.svc-media{overflow:hidden}
.svc-media img{width:100%;object-fit:cover;aspect-ratio:16/11;transition:transform 1s cubic-bezier(.2,.6,.2,1)}
.svc-media:hover img{transform:scale(1.04)}
.svc-copy .svc-num{font-family:var(--serif);font-size:clamp(40px,4.6vw,64px);line-height:1;color:var(--oak);display:block;margin-bottom:18px}
.svc-copy h3{margin:0 0 16px}
.svc-copy p{color:var(--ink-soft);max-width:50ch}
.svc:nth-child(even) .svc-media{order:2}
@media(max-width:820px){.svc{grid-template-columns:1fr}.svc:nth-child(even) .svc-media{order:0}}

/* ---------- wizard / calculator ---------- */
.calc-layout{display:grid;grid-template-columns:1fr;gap:0;padding-bottom:clamp(80px,10vw,140px)}
.wizard{background:var(--surface2);border:1px solid var(--line);box-shadow:var(--sh-sm);overflow:hidden}
.wz-progress{display:flex;gap:10px;align-items:center;padding:22px clamp(22px,3vw,38px);border-bottom:1px solid var(--line-soft)}
.wz-dot{width:10px;height:10px;background:var(--line);transition:background .3s}
.wz-dot.done{background:var(--oak)}
.wz-dot.now{background:var(--terra)}
.wz-label{margin-left:auto;font-size:11.5px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.wz-step{padding:clamp(30px,4vw,52px);display:none}
.wz-step.on{display:block}
.wz-step h3{font-size:clamp(26px,3vw,38px);margin-bottom:10px}
.wz-step .wz-sub{color:var(--muted);font-size:15.5px;margin-bottom:30px}
.opt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:12px}
.opt-grid-gap{margin-bottom:28px}
.beds-block{margin-bottom:26px}
.beds-block .t-label{display:block;font-weight:600;font-size:15px;margin-bottom:12px}
.opt-card{position:relative;border:1px solid var(--line);padding:20px 18px;text-align:left;background:var(--surface);transition:border-color .25s,box-shadow .25s,transform .2s}
.opt-card:hover{border-color:var(--oak);transform:translateY(-2px)}
.opt-card.on{border-color:var(--terra);box-shadow:0 0 0 1px var(--terra)}
.opt-card.on::after{content:"";position:absolute;top:0;right:0;width:13px;height:13px;background:var(--terra)}
.opt-card b{display:block;font-weight:600;font-size:15.5px;line-height:1.35}
.opt-card span{display:block;font-size:13px;color:var(--muted);margin-top:4px}
.seg{display:inline-flex;border:1px solid var(--line);overflow:hidden}
.seg button{padding:13px 24px;font-weight:600;font-size:14.5px;color:var(--muted);background:var(--surface);transition:background .2s,color .2s}
.seg button.on{background:var(--ink);color:var(--bg)}
.stepper{display:inline-flex;align-items:center;border:1px solid var(--line);overflow:hidden}
.stepper button{width:54px;height:54px;font-size:22px;font-weight:600;color:var(--terra);background:var(--surface);transition:background .2s}
.stepper button:hover{background:var(--line-soft)}
.stepper output{width:68px;text-align:center;font-family:var(--serif);font-size:26px}
.toggle-row{display:flex;gap:14px;align-items:center;flex-wrap:wrap;padding:16px 0;border-top:1px solid var(--line-soft)}
.toggle-row:first-of-type{border-top:0}
.toggle-row .t-label{font-weight:600;font-size:15px;min-width:200px}
.toggle-row .t-hint{font-size:13px;color:var(--muted)}
.wz-nav{display:flex;gap:12px;justify-content:space-between;padding:20px clamp(22px,3vw,38px);border-top:1px solid var(--line-soft);background:var(--surface)}
.result{padding:clamp(32px,4.5vw,56px)}
.result-range{padding-bottom:clamp(24px,3vw,38px);border-bottom:1px solid var(--line-soft)}
.result-range .rr-k{font-size:12px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--terra);display:flex;align-items:center;gap:12px}
.result-range .rr-k::before{content:"";width:10px;height:10px;background:var(--terra)}
.result-range .rr-v{font-family:var(--serif);font-size:clamp(42px,7vw,88px);line-height:1.08;margin:18px 0 14px;letter-spacing:-.015em}
.result-range .rr-v small{font-size:.4em;color:var(--muted)}
.prov-tag{display:inline-flex;align-items:center;gap:10px;font-size:12.5px;font-weight:600;color:var(--terra-dark);background:rgba(176,73,42,.08);border:1px solid rgba(176,73,42,.3);padding:9px 16px;margin-top:10px}
.prov-tag::before{content:"";width:8px;height:8px;background:var(--terra);flex:none}
.result-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(28px,3.5vw,48px);padding-top:clamp(26px,3vw,38px)}
.result-summary h3,.result-board-h{font-size:21px;margin-bottom:18px}
.result-summary ul{list-style:none;display:grid;gap:10px;font-size:15px}
.result-summary li{display:flex;gap:13px;align-items:flex-start}
.result-summary li::before{content:"";width:8px;height:8px;background:var(--terra);flex:none;margin-top:9px}
.result-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}
.msg-preview{background:var(--bg);border:1px solid var(--line);padding:20px 22px;font-size:14px;color:var(--ink-soft);white-space:pre-wrap;margin-top:24px}
@media(max-width:820px){.result-grid{grid-template-columns:1fr}}

/* ---------- mood board ---------- */
.mb-layout{display:grid;grid-template-columns:1fr;gap:clamp(26px,3vw,38px);padding-bottom:clamp(80px,10vw,140px)}
.swatch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:14px}
.swatch{position:relative;border:1px solid var(--line);overflow:hidden;background:var(--surface2);text-align:left;transition:border-color .25s,transform .2s,box-shadow .25s;padding:0}
.swatch:hover{transform:translateY(-3px);box-shadow:var(--sh-sm)}
.swatch img{width:100%;aspect-ratio:1;object-fit:cover;display:block}
.swatch b{display:block;font-size:13px;font-weight:600;padding:11px 13px 13px;line-height:1.35}
.swatch.on{border-color:var(--terra);box-shadow:0 0 0 1px var(--terra)}
.swatch.on::after{content:"";position:absolute;top:0;right:0;width:15px;height:15px;background:var(--terra)}
.mb-note{font-size:13.5px;color:var(--muted);max-width:64ch}
.board-tray{position:sticky;bottom:16px;z-index:40;background:var(--surface2);border:1px solid var(--line);box-shadow:var(--sh);padding:18px clamp(18px,2.5vw,28px);display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.tray-items{display:flex;gap:10px;flex-wrap:wrap}
.tray-slot{width:64px;height:64px;border:1.5px dashed var(--line);display:flex;align-items:center;justify-content:center;color:var(--line);font-size:12px;font-weight:700}
.tray-pick{position:relative;width:64px;height:64px;overflow:hidden;box-shadow:var(--sh-sm)}
.tray-pick img{width:100%;height:100%;object-fit:cover}
.tray-pick button{position:absolute;top:3px;right:3px;width:20px;height:20px;background:rgba(22,22,22,.75);color:#fff;font-size:11px;line-height:1;display:flex;align-items:center;justify-content:center}
.tray-meta{margin-left:auto;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.tray-count{font-size:13.5px;font-weight:600;color:var(--muted)}
.tray-count b{color:var(--terra)}
@media(max-width:640px){.tray-meta{margin-left:0}}

/* ---------- /b/ shared board page ---------- */
.board-page-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px;margin:clamp(30px,4vw,48px) 0}
.board-tile{overflow:hidden;box-shadow:var(--sh-sm);background:var(--surface2)}
.board-tile img{width:100%;aspect-ratio:1;object-fit:cover}
.board-tile b{display:block;font-size:13.5px;font-weight:600;padding:13px 15px}
.board-context{background:var(--surface);border:1px solid var(--line);padding:20px 24px;font-size:15px;color:var(--ink-soft);margin-bottom:clamp(26px,3vw,38px)}
.board-context b{color:var(--ink)}

/* ---------- todo chips ---------- */
.todo{display:inline-flex;align-items:center;gap:11px;font-size:13px;font-weight:600;color:var(--terra-dark);background:rgba(176,73,42,.06);border:1.5px dashed rgba(176,73,42,.45);padding:13px 17px;line-height:1.5}
.todo::before{content:"";width:9px;height:9px;background:var(--terra);flex:none}
.todo code{font-family:ui-monospace,Menlo,monospace;font-size:12px;background:rgba(176,73,42,.12);padding:2px 7px}
.todo-stack{display:grid;gap:12px;margin-top:26px;max-width:660px}

/* ---------- faq ---------- */
.faq-sec{padding-bottom:clamp(80px,10vw,140px)}
.faq-list{display:grid;max-width:880px;border-top:1px solid var(--line)}
.faq-list details{border-bottom:1px solid var(--line)}
.faq-list summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:18px;padding:24px 4px;font-family:var(--serif);font-size:clamp(18px,1.8vw,22px);transition:color .25s}
.faq-list summary:hover{color:var(--terra)}
.faq-list summary::-webkit-details-marker{display:none}
.faq-plus{flex:none;width:26px;height:26px;position:relative;transition:transform .3s}
.faq-plus::before,.faq-plus::after{content:"";position:absolute;background:var(--terra);top:50%;left:50%;transform:translate(-50%,-50%)}
.faq-plus::before{width:12px;height:2px}
.faq-plus::after{width:2px;height:12px;transition:opacity .2s}
details[open] .faq-plus{transform:rotate(90deg)}
details[open] .faq-plus::after{opacity:0}
.faq-list .ans{padding:0 4px 24px;color:var(--ink-soft);font-size:15.5px;max-width:62ch}

/* ---------- contact ---------- */
.contact-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(34px,5vw,80px);padding-bottom:clamp(80px,10vw,150px)}
.contact-paths{display:grid;gap:14px;margin-top:34px}
.cpath{display:flex;gap:20px;align-items:flex-start;background:var(--surface2);border:1px solid var(--line);padding:clamp(24px,3vw,32px);transition:border-color .25s,transform .25s}
.cpath:hover{border-color:var(--terra);transform:translateX(5px)}
.cpath .brick{margin-top:9px}
.cpath b{display:block;font-family:var(--serif);font-weight:400;font-size:clamp(20px,2.1vw,25px);margin-bottom:7px}
.cpath p{font-size:14.5px;color:var(--muted)}
@media(max-width:880px){.contact-grid{grid-template-columns:1fr}}
.contact-side h3{margin-bottom:22px}
.contact-side .todo-stack{margin-top:0}

/* ---------- footer ---------- */
.site-footer{background:var(--ink);color:rgba(242,237,231,.75);padding:clamp(56px,7vw,90px) 0 30px;overflow:hidden}
.site-footer .todo{color:#EBB399;background:rgba(235,179,153,.08);border-color:rgba(235,179,153,.45)}
.site-footer .todo code{background:rgba(235,179,153,.14)}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:40px}
.site-footer h4{font-size:11.5px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--oak);margin-bottom:20px}
.site-footer ul{list-style:none;display:grid;gap:12px;font-size:14.5px}
.site-footer a{transition:color .2s}
.site-footer a:hover{color:var(--bg)}
.footer-brand p{font-size:14.5px;max-width:32ch;margin-top:20px;color:rgba(242,237,231,.55)}
.footer-mark{font-family:var(--serif);font-size:clamp(96px,19.5vw,300px);line-height:.86;letter-spacing:-.02em;color:rgba(242,237,231,.09);margin-top:clamp(50px,7vw,90px);display:flex;align-items:baseline;white-space:nowrap;user-select:none}
.footer-mark i{width:.085em;height:.085em;background:var(--terra);display:inline-block;margin-left:.04em}
.fine{margin-top:clamp(30px,4vw,48px);padding-top:22px;border-top:1px solid rgba(242,237,231,.12);display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;font-size:12.5px;color:rgba(242,237,231,.4)}
@media(max-width:880px){.footer-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.footer-grid{grid-template-columns:1fr}}

/* ---------- FAB ---------- */
.fab{position:fixed;right:20px;bottom:20px;width:58px;height:58px;border-radius:50%;background:var(--wa);display:flex;align-items:center;justify-content:center;box-shadow:0 10px 28px rgba(37,211,102,.4),0 4px 12px rgba(0,0,0,.25);z-index:90;transition:transform .25s}
.fab:hover{transform:scale(1.08)}
.fab svg{width:30px;height:30px;fill:#fff}

/* ---------- reveal ---------- */
.rv{opacity:0;transform:translateY(26px);transition:opacity .9s cubic-bezier(.2,.6,.2,1),transform .9s cubic-bezier(.2,.6,.2,1)}
.rv.on{opacity:1;transform:none}
.rv.d1{transition-delay:.1s}
.rv.d2{transition-delay:.2s}
.rv.d3{transition-delay:.3s}
@media(prefers-reduced-motion:reduce){
  .rv{opacity:1;transform:none;transition:none}
  html{scroll-behavior:auto}
  *{transition-duration:.01ms!important;animation-duration:.01ms!important}
}

/* ---------- DS gallery only (not site UI) ---------- */
.ds-sec{padding:48px 0;border-top:1px solid var(--line)}
.ds-sec h2{font-size:28px;margin-bottom:8px}
.ds-note{font-size:13.5px;color:var(--muted);margin-bottom:26px;max-width:72ch}
.ds-row{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-bottom:18px}
.ds-stage{background:var(--bg);border:1px solid var(--line);padding:28px;margin-bottom:14px;overflow:hidden}
.ds-stage.dark{background:var(--ink)}
.ds-stage.flush{padding:0}
.ds-pre{background:#201a15;color:#e8ddcd;font-family:ui-monospace,Menlo,monospace;font-size:12.5px;line-height:1.6;padding:20px 22px;overflow-x:auto;white-space:pre-wrap}
.ds-stage .hero-media{min-height:600px}
.ds-stage .marquee{margin-bottom:0}
.ds-stage .cf-media{height:420px}
.ds-stage .bb-media{height:380px}
.ds-stage .cs-heroimg{height:380px}
.ds-stage .svc-index{padding-bottom:0}
.ds-stage .svc-index .sec-head{padding-top:0}
.ds-stage .gallery-grid{grid-auto-rows:150px}
.ds-wrap{padding-top:48px;padding-bottom:90px}
.ds-h1{margin:18px 0 10px}
.wz-progress-demo{border:0;padding:0}
.swatch-demo{width:150px;flex:none}
.board-tray-demo{position:static}
.contact-paths-demo{margin-top:0}
