:root{
  --ink:#12181F;
  --ink-soft:#28323C;
  --paper:#FAF9F6;
  --paper-dim:#F1EFE9;
  --verdigris:#3B6B5E;
  --verdigris-deep:#24443B;
  --graphite:#5B6167;
  --hairline:#E1DED5;
  --max:1120px;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:'Public Sans', sans-serif; font-size:17px; line-height:1.65;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;}
.wrap{max-width:var(--max); margin:0 auto; padding:0 40px;}
@media (max-width:640px){ .wrap{padding:0 24px;} }

/* ---------- HEADER ---------- */
header{position:sticky; top:0; z-index:50; background:rgba(250,249,246,0.92); backdrop-filter:blur(6px); border-bottom:1px solid var(--hairline);}
header .wrap{display:flex; align-items:center; justify-content:space-between; height:76px;}
.brand{display:flex; align-items:center; gap:10px; text-decoration:none;}
.brand img{height:48px; display:block;}
nav{display:flex; align-items:center; gap:36px;}
nav a.navlink{font-size:14.5px; font-weight:600; color:var(--ink-soft); text-decoration:none; transition:color .15s ease; position:relative;}
nav a.navlink:hover{color:var(--ink);}
nav a.navlink.active{color:var(--ink);}
nav a.navlink.active::after{content:""; position:absolute; left:0; right:0; bottom:-26px; height:2px; background:var(--verdigris);}
nav a.cta{
  font-size:14px; font-weight:600; color:#fff; background:var(--ink); text-decoration:none;
  padding:9px 18px; border-radius:3px; transition:background .15s ease;
}
nav a.cta:hover{background:var(--verdigris-deep);}
@media (max-width:820px){ nav a.navlink{display:none;} }

/* ---------- HOME HERO ---------- */
.hero{padding:96px 0 100px;}
.hero .wrap{display:grid; grid-template-columns:1.1fr 0.9fr; gap:64px; align-items:center;}
.eyebrow{
  font-family:'IBM Plex Mono', monospace; font-size:12.5px; letter-spacing:0.14em; text-transform:uppercase;
  color:var(--verdigris-deep); margin:0 0 22px; display:flex; align-items:center; gap:10px;
}
.eyebrow::before{content:""; width:22px; height:1px; background:var(--verdigris-deep);}
h1{
  font-family:'Source Serif 4', serif; font-weight:600; font-size:clamp(2.5rem,4.6vw,3.9rem);
  line-height:1.1; letter-spacing:-0.015em; margin:0 0 26px; color:var(--ink);
}
.hero p.lede{font-size:18.5px; color:var(--ink-soft); max-width:46ch; margin:0 0 36px;}
.hero-ctas{display:flex; gap:14px; flex-wrap:wrap;}
.btn-primary{
  display:inline-block; background:var(--ink); color:#fff; text-decoration:none; font-weight:600; font-size:15px;
  padding:14px 26px; border-radius:3px; transition:background .15s ease; border:none; cursor:pointer; font-family:inherit;
}
.btn-primary:hover{background:var(--verdigris-deep);}
.btn-text{
  display:inline-flex; align-items:center; gap:8px; text-decoration:none; font-weight:600; font-size:15px;
  color:var(--ink); padding:14px 4px; border-bottom:1px solid var(--hairline); transition:border-color .15s ease;
}
.btn-text:hover{border-color:var(--ink);}

/* ---------- SCHEMATIC (homepage signature element) ---------- */
.schematic-frame{
  background:var(--paper-dim); border:1px solid var(--hairline); border-radius:6px;
  padding:22px; box-shadow:0 20px 44px rgba(18,24,31,0.10);
}
.schematic-frame svg{display:block; width:100%; height:auto;}
.schem-boundary{fill:none; stroke:var(--ink); stroke-width:1.4; stroke-dasharray:5 4;}
.schem-line{fill:none; stroke:var(--graphite); stroke-width:1.3;}
.schem-node-box{fill:var(--paper); stroke:var(--ink-soft); stroke-width:1.2;}
.schem-node-box.center{fill:var(--ink); stroke:var(--ink);}
.schem-label{font-family:'IBM Plex Mono', monospace; font-size:8.5px; font-weight:500; letter-spacing:0.01em; fill:var(--ink-soft);}
.schem-label.center{fill:#fff;}
.schem-caption{font-family:'IBM Plex Mono', monospace; font-size:8.5px; font-weight:500; letter-spacing:0.01em; fill:var(--verdigris-deep); text-transform:uppercase;}
.schem-pulse{fill:var(--verdigris);}
@media (max-width:900px){ .hero .wrap{grid-template-columns:1fr;} }

/* ---------- PAGE HERO (sub-pages) ---------- */
.page-hero{padding:72px 0 56px; border-bottom:1px solid var(--hairline);}
.page-hero h1{font-size:clamp(2.1rem,3.6vw,3rem); max-width:20ch;}
.page-hero p.lede{font-size:18px; max-width:58ch; margin:0;}

/* ---------- PULL QUOTE ---------- */
.pullquote{background:var(--ink); color:var(--paper); padding:90px 0;}
.pullquote .wrap{max-width:820px;}
.pullquote .eyebrow{color:#9FB8AE;}
.pullquote .eyebrow::before{background:#9FB8AE;}
.pullquote p{
  font-family:'Source Serif 4', serif; font-weight:500; font-size:clamp(1.6rem,3.2vw,2.4rem);
  line-height:1.35; margin:0; letter-spacing:-0.005em;
}

/* ---------- SECTION SCAFFOLD ---------- */
section.block{padding:96px 0;}
section.block + section.block{border-top:1px solid var(--hairline);}
.block-head{display:grid; grid-template-columns:1fr 1.6fr; gap:48px; margin-bottom:56px;}
.block-head h2{
  font-family:'Source Serif 4', serif; font-weight:600; font-size:clamp(1.7rem,2.6vw,2.1rem);
  margin:0; color:var(--ink); max-width:14ch;
}
.block-head p{color:var(--graphite); font-size:16.5px; margin:8px 0 0; max-width:52ch;}
@media (max-width:760px){ .block-head{grid-template-columns:1fr;} }

/* ---------- LIST ROWS (build / who / how) ---------- */
.rows{border-top:1px solid var(--hairline);}
.row{
  display:grid; grid-template-columns:120px 1fr 1.4fr; gap:32px; padding:34px 0;
  border-bottom:1px solid var(--hairline);
}
.row .row-mark{font-family:'IBM Plex Mono', monospace; font-size:13px; color:var(--verdigris-deep); padding-top:3px;}
.row h3{font-family:'Source Serif 4', serif; font-weight:600; font-size:1.2rem; margin:0; color:var(--ink);}
.row p{margin:0; color:var(--graphite); font-size:15.5px; max-width:56ch;}
@media (max-width:760px){
  .row{grid-template-columns:1fr; gap:8px;}
  .row .row-mark{padding-top:0;}
}

/* ---------- HOME TEASER ROWS (condensed, link out) ---------- */
.teaser-rows .row{grid-template-columns:120px 1fr 1.2fr auto; align-items:start;}
.teaser-rows .row a.row-link{
  font-size:14px; font-weight:600; color:var(--verdigris-deep); text-decoration:none; white-space:nowrap;
  padding-top:2px;
}
.teaser-rows .row a.row-link:hover{text-decoration:underline;}
@media (max-width:760px){ .teaser-rows .row{grid-template-columns:1fr;} }

/* ---------- ABOUT ---------- */
.about-prose{max-width:66ch;}
.about-prose p{color:var(--ink-soft); font-size:16.5px; margin:0 0 20px;}

/* ---------- CONTACT ---------- */
.contact-inner{display:grid; grid-template-columns:0.8fr 1.2fr; gap:64px;}
.contact-inner h2{font-family:'Source Serif 4', serif; font-weight:600; font-size:clamp(1.7rem,2.6vw,2.1rem); margin:0 0 14px; color:var(--ink);}
.contact-inner .lede{color:var(--graphite); font-size:16px; max-width:36ch;}
.field-row{display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-bottom:18px;}
.field{display:flex; flex-direction:column;}
.field label{font-family:'IBM Plex Mono', monospace; font-size:11.5px; letter-spacing:0.05em; color:var(--graphite); margin-bottom:7px; text-transform:uppercase;}
.field input, .field textarea{
  font-family:'Public Sans', sans-serif; font-size:15.5px; color:var(--ink); background:#fff;
  border:1px solid var(--hairline); border-radius:3px; padding:12px 14px; outline:none; transition:border-color .15s ease;
}
.field input:focus, .field textarea:focus{border-color:var(--verdigris);}
.field textarea{resize:vertical; min-height:100px;}
.field-full{margin-bottom:22px;}
.form-note{margin:14px 0 0; font-size:14px; color:var(--graphite); min-height:1.2em;}
.form-note.success{color:var(--verdigris-deep); font-weight:600;}
@media (max-width:760px){ .contact-inner{grid-template-columns:1fr;} .field-row{grid-template-columns:1fr;} }

/* ---------- FOOTER ---------- */
footer{padding:32px 0; border-top:1px solid var(--hairline); display:flex; justify-content:space-between; font-size:13px; color:var(--graphite);}
