
:root {
  --ink:#2f302e; --charcoal:#474c48; --paper:#f8f5ef; --ivory:#fffdf8;
  --sand:#e7dfd4; --sage:#737970; --accent:#ad967e; --muted:#77756f;
  --line:rgba(47,48,46,.2);
  --serif:Baskerville,"Iowan Old Style","Palatino Linotype","Book Antiqua",Georgia,"Times New Roman",serif;
  --sans:"Helvetica Neue",Helvetica,Arial,sans-serif;
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; background:var(--paper); color:var(--ink); font-family:var(--serif); -webkit-font-smoothing:antialiased; }
button,input,textarea { color:inherit; font-family:var(--serif); }
a { color:inherit; text-decoration:none; }
img { display:block; width:100%; }
::selection { background:var(--sand); color:var(--ink); }

.site-header { height:82px; padding:0 3.5vw; display:flex; align-items:center; justify-content:space-between; background:var(--charcoal); color:var(--paper); position:relative; z-index:20; border-bottom:1px solid rgba(255,255,255,.18); }
.brand { display:flex; align-items:center; gap:18px; font-family:var(--sans); font-weight:500; letter-spacing:.16em; font-size:19px; }
.brand small { padding-left:18px; border-left:1px solid rgba(255,255,255,.3); font-size:7px; font-weight:500; line-height:1.45; letter-spacing:.18em; max-width:105px; }
nav { display:flex; align-items:center; gap:clamp(18px,2.2vw,36px); font-size:15px; }
nav>a:not(.nav-contact) { position:relative; }
nav>a:not(.nav-contact)::after { content:""; position:absolute; left:0; right:100%; bottom:-8px; height:1px; background:currentColor; transition:right .25s ease; }
nav>a:hover::after { right:0; }
.nav-contact { border:1px solid rgba(255,255,255,.7); padding:12px 17px; font-family:var(--sans); font-size:9px; letter-spacing:.12em; text-transform:uppercase; transition:background .25s,color .25s; }
.nav-contact:hover { background:var(--paper); color:var(--charcoal); }
.menu-toggle { display:none; border:0; background:transparent; padding:10px 0 10px 12px; }
.menu-toggle span { display:block; width:24px; height:1px; background:var(--paper); margin:6px 0; }

.section-pad { padding:120px 5vw; }
.section-label,.eyebrow { margin:0; font-family:var(--sans); font-size:9px; font-weight:500; line-height:1.3; letter-spacing:.2em; text-transform:uppercase; }
.section-label.light { color:#d7cbbd; }
h1,h2,h3,p { overflow-wrap:break-word; }
h1,h2,h3 { font-family:var(--serif); font-weight:400; }
.text-link { display:inline-block; border-bottom:1px solid currentColor; padding-bottom:7px; font-family:var(--sans); font-size:9px; letter-spacing:.14em; text-transform:uppercase; }
.text-link span,.button span { margin-left:20px; }
.button { display:inline-flex; align-items:center; justify-content:space-between; gap:28px; border:1px solid currentColor; padding:16px 19px; min-width:180px; font-family:var(--sans); font-size:9px; letter-spacing:.13em; text-transform:uppercase; transition:background .25s,color .25s; }
.button:hover { background:var(--ink); color:var(--paper); }
.button.dark { background:var(--charcoal); color:var(--paper); border-color:var(--charcoal); }
.button.dark:hover { background:transparent; color:var(--charcoal); }

.hero { display:grid; grid-template-areas:"visual" "copy"; grid-template-columns:1fr; padding:22px 3.5vw 74px; background:var(--charcoal); color:var(--paper); }
.hero-copy { grid-area:copy; padding:46px 4vw 0; display:flex; flex-direction:column; align-items:center; text-align:center; }
.hero .eyebrow { margin:0 0 24px; color:#ddd5ca; }
.hero h1 { margin:0; font-size:clamp(58px,6.4vw,94px); line-height:.92; letter-spacing:.015em; }
.hero-intro { max-width:610px; margin:28px auto 26px; font-size:18px; line-height:1.65; color:#e3ddd4; }
.hero .text-link { margin-top:10px; }
.hero-visual { grid-area:visual; position:relative; height:min(67vw,690px); min-height:520px; overflow:hidden; background:#303330; }
.hero-visual img { height:100%; object-fit:cover; filter:saturate(.72) contrast(.96); transition:transform 1.4s cubic-bezier(.2,.8,.2,1); }
.hero-visual:hover img { transform:scale(1.02); }
.hero-visual::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(32,34,32,.02),rgba(32,34,32,.18)); pointer-events:none; }
.hero-index,.hero-caption { position:absolute; z-index:1; color:#fff; font-family:var(--sans); font-size:8px; letter-spacing:.16em; text-transform:uppercase; }
.hero-index { top:4%; right:3%; }
.hero-caption { left:3%; bottom:4%; line-height:1.65; }

.statement { max-width:1180px; margin:0 auto; text-align:center; border-bottom:1px solid var(--line); }
.statement>div { max-width:900px; margin:0 auto; }
.statement h2 { margin:34px 0 42px; font-size:clamp(45px,5.1vw,76px); line-height:1.08; letter-spacing:.005em; }
.statement p:not(.section-label) { max-width:610px; margin:0 auto 38px; font-size:18px; line-height:1.72; color:var(--muted); }
.statement .text-link { margin:0; }

.project-feature { position:relative; height:min(72vw,820px); min-height:590px; margin:0 3.5vw 110px; overflow:hidden; }
.project-feature>img { height:100%; object-fit:cover; filter:saturate(.76); }
.project-feature::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(30,32,30,.05),rgba(30,32,30,.55)); }
.project-overlay { position:absolute; z-index:1; inset:0; padding:5%; color:white; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; text-align:center; }
.project-overlay .section-label { margin-bottom:auto; }
.project-overlay h2 { margin:0; font-size:clamp(54px,7vw,102px); line-height:.95; letter-spacing:.01em; }
.project-overlay>p:not(.section-label) { margin:18px 0 0; font-family:var(--sans); font-size:8px; letter-spacing:.18em; text-transform:uppercase; }
.round-link { position:absolute; right:4%; bottom:6%; width:58px; height:58px; border:1px solid rgba(255,255,255,.75); border-radius:50%; display:grid; place-items:center; font-size:17px; transition:.25s; }
.round-link:hover { background:var(--paper); color:var(--charcoal); }

.services-home { display:grid; grid-template-columns:31% 62%; gap:7%; background:var(--ivory); border-top:1px solid var(--line); }
.services-intro h2 { font-size:clamp(48px,5.4vw,78px); margin:30px 0 34px; line-height:.98; }
.services-intro>p:last-child { max-width:340px; font-size:17px; line-height:1.7; color:var(--muted); }
.service-list { border-top:1px solid var(--line); }
.service-row { display:grid; grid-template-columns:44px minmax(150px,32%) minmax(0,1fr) 28px; align-items:center; padding:29px 0; border-bottom:1px solid var(--line); transition:padding .25s,background .25s; }
.service-row:hover { padding-left:15px; padding-right:15px; background:var(--paper); }
.service-row span { font-family:var(--sans); font-size:8px; letter-spacing:.12em; }
.service-row h3 { min-width:0; margin:0; padding-right:20px; font-size:clamp(18px,2vw,24px); line-height:1.15; letter-spacing:.045em; text-transform:uppercase; }
.service-row p { min-width:0; width:100%; max-width:100%; margin:0; padding-right:20px; color:var(--muted); font-size:15px; line-height:1.5; overflow-wrap:normal; word-break:normal; }
.service-row i { justify-self:end; font-style:normal; }

.numbers { background:var(--charcoal); color:var(--paper); }
.numbers-grid { display:grid; grid-template-columns:repeat(3,1fr); margin-top:80px; border-top:1px solid rgba(255,255,255,.28); }
.numbers-grid>div { min-height:300px; padding:30px 50px 25px 0; border-right:1px solid rgba(255,255,255,.24); }
.numbers-grid>div+div { padding-left:50px; }
.numbers-grid>div:last-child { border:0; }
.numbers-grid b { color:#d7cbbd; font-family:var(--sans); font-size:8px; letter-spacing:.15em; }
.numbers-grid h3 { margin:112px 0 18px; font-size:36px; line-height:1; }
.numbers-grid p { max-width:260px; color:#d8d3ca; font-size:16px; line-height:1.6; }
.people-callout { display:flex; justify-content:space-between; align-items:flex-end; background:var(--sand); }
.people-callout h2 { margin:30px 0 0; font-size:clamp(50px,6vw,88px); line-height:.95; }

.page-hero { min-height:650px; display:grid; grid-template-columns:43% 57%; background:var(--charcoal); color:var(--paper); }
.page-hero-copy { padding:105px 5vw 85px; display:flex; flex-direction:column; align-items:flex-start; justify-content:center; }
.page-hero h1 { margin:72px 0 40px; font-size:clamp(54px,6.3vw,94px); line-height:.94; letter-spacing:.005em; }
.page-intro { max-width:440px; margin:0; font-size:18px; line-height:1.65; color:#ddd7ce; }
.page-hero-image { margin:30px 3.5vw 30px 0; min-height:590px; overflow:hidden; }
.page-hero-image img { height:100%; object-fit:cover; filter:saturate(.72); }
.page-hero:not(:has(.page-hero-image)) { grid-template-columns:1fr; min-height:540px; }
.page-hero:not(:has(.page-hero-image)) .page-hero-copy { padding:95px 14vw; align-items:center; text-align:center; }
.page-hero:not(:has(.page-hero-image)) .page-intro { margin:0 auto; max-width:650px; }

.split-story { display:grid; grid-template-columns:25% 75%; }
.split-story>div { max-width:920px; }
.split-story h2 { margin:0 0 48px; font-size:clamp(43px,5vw,72px); line-height:1.08; }
.split-story div p { max-width:620px; margin:0 0 24px auto; font-size:17px; line-height:1.78; color:var(--muted); }
.company-bio>div:first-child { display:flex; flex-direction:column; align-items:flex-start; }
.company-bio .since { margin:55px 0 0; max-width:175px; font-size:28px; line-height:1.2; color:var(--ink); }
.values { background:var(--charcoal); color:var(--paper); }
.value-grid { display:grid; grid-template-columns:repeat(2,1fr); margin-top:70px; border-top:1px solid rgba(255,255,255,.24); }
.value-grid article { padding:38px 12% 58px 0; min-height:285px; border-bottom:1px solid rgba(255,255,255,.24); }
.value-grid article:nth-child(odd) { border-right:1px solid rgba(255,255,255,.24); }
.value-grid article:nth-child(even) { padding-left:12%; }
.value-grid b { color:#d7cbbd; font-family:var(--sans); font-size:8px; letter-spacing:.15em; }
.value-grid h3 { margin:68px 0 18px; font-size:36px; line-height:1; }
.value-grid p { color:#d7d1c9; max-width:400px; font-size:16px; line-height:1.65; }
.quote-band { text-align:center; background:var(--paper); }
.quote-band blockquote { max-width:980px; margin:0 auto 32px; font:400 clamp(40px,4.7vw,68px)/1.1 var(--serif); }
.quote-band p { font-family:var(--sans); font-size:8px; text-transform:uppercase; letter-spacing:.17em; }

.service-detail-list { padding-top:0; background:var(--ivory); }
.service-detail { display:grid; grid-template-columns:8% minmax(0,52%) minmax(0,40%); padding:56px 0; border-top:1px solid var(--line); }
.service-detail>span { font-family:var(--sans); font-size:8px; letter-spacing:.12em; }
.service-detail>div { min-width:0; padding-right:clamp(24px,4vw,70px); }
.service-detail h2 { margin:0 0 22px; font-size:clamp(30px,3.1vw,46px); line-height:1.05; letter-spacing:.035em; text-transform:uppercase; }
.service-detail>div p { width:100%; max-width:520px; color:var(--muted); font-size:16px; line-height:1.7; overflow-wrap:normal; word-break:normal; }
.service-detail ul { list-style:none; margin:3px 0 0; padding:0; }
.service-detail li { border-bottom:1px solid var(--line); padding:12px 0; font-size:15px; }
.service-detail li::before { content:"—"; color:var(--accent); margin-right:14px; }
.process,.join-us { background:var(--sand); color:var(--ink); }
.process .section-label.light { color:var(--ink); }
.process-grid { display:grid; grid-template-columns:repeat(4,1fr); margin-top:75px; }
.process-grid div { min-height:245px; padding:32px; border:1px solid rgba(47,48,46,.28); border-right:0; }
.process-grid div:last-child { border-right:1px solid rgba(47,48,46,.28); }
.process-grid span { font-size:29px; }
.process-grid p { margin-top:100px; color:#696861; font-size:15px; line-height:1.55; }

.project-grid { display:grid; grid-template-columns:1fr 1fr; gap:88px 3vw; padding-top:70px; }
.project-card.wide { grid-column:span 2; }
.project-image { height:53vw; max-height:750px; position:relative; overflow:hidden; background:#d6d0c6; }
.project-card:not(.wide) .project-image { height:55vw; max-height:720px; }
.project-image img { height:100%; object-fit:cover; filter:saturate(.78); transition:transform .8s ease; }
.project-card:hover img { transform:scale(1.02); }
.project-image>span { position:absolute; left:18px; top:18px; width:38px; height:38px; display:grid; place-items:center; border:1px solid rgba(255,255,255,.7); border-radius:50%; color:white; font-family:var(--sans); font-size:8px; }
.project-card>div:last-child { position:relative; padding-top:22px; }
.project-card h2 { margin:0 0 8px; font-size:36px; }
.project-card p { margin:0; color:var(--muted); font-family:var(--sans); font-size:8px; text-transform:uppercase; letter-spacing:.14em; }
.project-card a { position:absolute; right:0; top:30px; }
.project-cta { background:var(--sand); }
.project-cta h2 { margin:54px 0 48px; font-size:clamp(50px,6.2vw,92px); line-height:.96; }

.contact-layout { display:grid; grid-template-columns:32% 68%; gap:5%; border-top:1px solid var(--line); background:var(--ivory); }
.contact-details>div { margin:42px 0; display:flex; flex-direction:column; align-items:flex-start; gap:8px; }
.contact-details b { font-family:var(--sans); font-size:8px; letter-spacing:.16em; text-transform:uppercase; margin-bottom:9px; }
.contact-details a,.contact-details div p { margin:0; font-size:20px; line-height:1.4; }
.contact-details a { overflow-wrap:anywhere; }
.contact-form { display:grid; grid-template-columns:1fr 1fr; gap:38px 28px; }
.contact-form label { display:flex; flex-direction:column; gap:14px; font-family:var(--sans); font-size:8px; font-weight:500; letter-spacing:.15em; text-transform:uppercase; }
.contact-form label.full { grid-column:span 2; }
.contact-form input,.contact-form textarea { width:100%; border:0; border-bottom:1px solid var(--ink); background:transparent; outline:0; padding:8px 0 13px; resize:vertical; font:400 18px/1.4 var(--serif); }
.contact-form input:focus,.contact-form textarea:focus { border-color:var(--accent); }
.contact-form button { justify-self:start; }
.form-success { padding:65px; background:var(--sand); min-height:330px; }
.form-success span { font-size:66px; line-height:1; }
.form-success p { max-width:430px; font-size:17px; line-height:1.6; }
.contact-image { height:700px; margin:0 3.5vw 90px; position:relative; overflow:hidden; }
.contact-image img { height:100%; object-fit:cover; filter:saturate(.75); }
.contact-image::after { content:""; position:absolute; inset:0; background:rgba(40,42,40,.27); }
.contact-image>div { position:absolute; z-index:1; inset:auto 4% 5%; display:flex; justify-content:space-between; color:white; font-size:clamp(23px,2.8vw,42px); line-height:1; }
.quote-layout .contact-details div p { max-width:270px; font:400 16px/1.6 var(--serif); color:var(--muted); }

.gallery-coming { min-height:810px; background:var(--charcoal); color:var(--paper); display:grid; grid-template-columns:40% 60%; gap:6vw; align-items:center; }
.coming-copy h2 { margin:55px 0 32px; font-size:clamp(52px,6vw,88px); line-height:.96; }
.coming-copy>p:not(.section-label) { max-width:470px; margin:0 0 38px; color:#d7d1c8; font-size:16px; line-height:1.7; }
.coming-grid { position:relative; height:600px; display:grid; grid-template-columns:1fr 1fr; grid-template-rows:1fr 1fr; gap:10px; }
.coming-grid div { overflow:hidden; }
.coming-grid div:first-child { grid-row:span 2; }
.coming-grid img { height:100%; object-fit:cover; filter:saturate(.58) brightness(.78); }
.coming-grid>span { position:absolute; inset:50% auto auto 50%; transform:translate(-50%,-50%); color:var(--paper); font:400 clamp(48px,5.8vw,86px)/.84 var(--serif); letter-spacing:.03em; text-align:center; }

.footer { background:#3f4541; color:var(--paper); padding:82px 5vw 28px; display:grid; grid-template-columns:22% 52% 26%; }
.footer-mark { font-family:var(--sans); font-size:20px; font-weight:500; letter-spacing:.18em; }
.footer-kicker { margin:4px 0 34px; font-family:var(--sans); font-size:8px; letter-spacing:.19em; text-transform:uppercase; color:#c9c2b8; }
.footer-title { font-size:clamp(42px,5vw,70px); line-height:1; }
.footer-meta { display:grid; grid-template-columns:1fr; gap:28px; padding-top:5px; }
.footer-meta div { display:flex; flex-direction:column; gap:9px; }
.footer-meta b { margin-bottom:12px; color:#c9c2b8; font-family:var(--sans); font-size:8px; font-weight:500; letter-spacing:.16em; text-transform:uppercase; }
.footer-meta a { font-size:15px; white-space:nowrap; }
.footer-meta .social-link { width:22px; height:22px; margin-top:4px; display:grid; place-items:center; color:var(--paper); }
.instagram-icon { position:relative; width:17px; height:17px; display:block; border:1.5px solid currentColor; border-radius:5px; }
.instagram-icon::before { content:""; position:absolute; width:6px; height:6px; inset:50% auto auto 50%; border:1.4px solid currentColor; border-radius:50%; transform:translate(-50%,-50%); }
.instagram-icon::after { content:""; position:absolute; width:2.4px; height:2.4px; top:2.5px; right:2.5px; background:currentColor; border-radius:50%; }
.social-link:hover,.social-link:focus-visible { color:#d7cbbd; }
.footer-bottom { grid-column:1/-1; margin-top:85px; padding-top:20px; border-top:1px solid rgba(255,255,255,.2); display:flex; justify-content:space-between; color:#bbb6ae; font-family:var(--sans); font-size:7px; letter-spacing:.15em; text-transform:uppercase; }

.reveal { opacity:0; transform:translateY(16px); transition:opacity .75s ease,transform .75s ease; }
.reveal.is-visible { opacity:1; transform:none; }
@media (prefers-reduced-motion:reduce) { html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}.hero-visual img,.project-image img{transition:none} }

@media (max-width:900px) {
  .site-header { height:76px; padding:0 22px; }
  .brand small { display:none; }
  .menu-toggle { display:block; z-index:2; }
  nav { position:fixed; inset:0; background:var(--charcoal); display:flex; flex-direction:column; align-items:center; justify-content:center; padding:72px 8vw; gap:22px; transform:translateY(-105%); transition:transform .35s ease; }
  nav.is-open { transform:none; }
  nav a,nav .nav-contact { font:400 38px/1 var(--serif); letter-spacing:0; text-transform:none; border:0; padding:4px 0; }
  .section-pad { padding:86px 22px; }
  .hero { padding:0 0 62px; }
  .hero-visual { min-height:58vh; height:72vw; }
  .hero-copy { padding:42px 22px 0; }
  .hero h1 { font-size:clamp(52px,13vw,78px); }
  .hero-intro { margin:24px auto; font-size:17px; }
  .statement h2,.split-story h2 { margin-top:36px; }
  .project-feature { min-height:570px; margin:0 0 80px; }
  .project-overlay { padding:30px 22px; }
  .round-link { right:22px; bottom:30px; }
  .services-home,.split-story,.contact-layout { grid-template-columns:1fr; gap:58px; }
  .service-row { grid-template-columns:44px minmax(140px,32%) minmax(0,1fr) 28px; }
  .numbers-grid { grid-template-columns:1fr; margin-top:58px; }
  .numbers-grid>div,.numbers-grid>div+div { min-height:auto; padding:28px 0 45px; border-right:0; border-bottom:1px solid rgba(255,255,255,.24); }
  .numbers-grid h3 { margin-top:58px; }
  .people-callout { align-items:flex-start; flex-direction:column; gap:48px; }
  .page-hero,.page-hero:not(:has(.page-hero-image)) { min-height:auto; grid-template-columns:1fr; }
  .page-hero-copy,.page-hero:not(:has(.page-hero-image)) .page-hero-copy { padding:78px 22px; align-items:flex-start; text-align:left; }
  .page-hero h1 { margin:54px 0 34px; font-size:clamp(50px,13vw,76px); }
  .page-intro,.page-hero:not(:has(.page-hero-image)) .page-intro { margin:0; }
  .page-hero-image { min-height:60vh; margin:0; }
  .split-story div p { margin-left:0; }
  .company-bio .since { margin-top:38px; }
  .value-grid { grid-template-columns:1fr; }
  .value-grid article,.value-grid article:nth-child(even) { padding:32px 0 48px; border-right:0; }
  .value-grid h3 { margin-top:54px; }
  .service-detail { grid-template-columns:44px minmax(0,1fr); gap:0; }
  .service-detail>div { min-width:0; padding-right:18px; }
  .service-detail h2 { font-size:clamp(27px,6vw,36px); }
  .service-detail>div p { max-width:100%; padding-right:0; }
  .service-detail ul { grid-column:2; margin-top:25px; }
  .process-grid { grid-template-columns:1fr 1fr; }
  .process-grid div:nth-child(2) { border-right:1px solid rgba(47,48,46,.28); }
  .gallery-coming { grid-template-columns:1fr; gap:65px; }
  .coming-grid { height:620px; }
  .footer { grid-template-columns:1fr; padding:72px 22px 26px; gap:48px; }
  .footer-meta { grid-template-columns:1fr; }
  .footer-bottom { margin-top:28px; }
}

@media (max-width:680px) {
  .service-row { grid-template-columns:40px minmax(0,1fr) 28px; align-items:start; row-gap:9px; }
  .service-row h3 { grid-column:2; grid-row:1; padding-right:16px; }
  .service-row p { grid-column:2; grid-row:2; padding-right:16px; }
  .service-row i { grid-column:3; grid-row:1; }
}

@media (max-width:560px) {
  .hero-visual { min-height:520px; }
  .statement h2 { font-size:42px; }
  .project-feature { min-height:540px; }
  .project-overlay { align-items:flex-start; text-align:left; }
  .project-overlay h2 { font-size:52px; }
  .services-intro h2 { font-size:48px; }
  .service-row h3 { font-size:20px; }
  .service-detail>div { padding-right:8px; }
  .service-detail h2 { font-size:clamp(25px,7vw,31px); letter-spacing:.04em; }
  .page-hero-image { min-height:520px; }
  .process-grid { grid-template-columns:1fr; }
  .process-grid div,.process-grid div:nth-child(2) { border-right:1px solid rgba(47,48,46,.28); border-bottom:0; }
  .process-grid div:last-child { border-bottom:1px solid rgba(47,48,46,.28); }
  .project-grid { grid-template-columns:1fr; gap:64px; }
  .project-card.wide { grid-column:auto; }
  .project-image,.project-card:not(.wide) .project-image { height:125vw; }
  .contact-form { grid-template-columns:1fr; }
  .contact-form label.full { grid-column:auto; }
  .contact-image { height:560px; margin:0; }
  .contact-image>div { flex-direction:column; gap:12px; bottom:30px; }
  .coming-grid { height:550px; grid-template-columns:1fr; grid-template-rows:repeat(3,1fr); }
  .coming-grid div:first-child { grid-row:auto; }
  .footer-bottom { flex-direction:column; gap:9px; }
}

.hp{position:absolute!important;left:-9999px!important}.no-js .reveal{opacity:1;transform:none}.notice{padding:18px 5vw;background:#c8ff4c;font-size:13px;text-align:center}.notice.error{background:#ead7cf;color:#102622}
