/* Generated by build.py. Do not edit. Brand tokens are injected per site. */
:root{
  --espresso:#3A2C24; --walnut:#5A3114; --accent:#4AAB88; --accent-deep:#2E7458; --accent-ink:#2E7458;
  --tan:#BFB290; --cream:#F0EBE0; --cream-hi:#FAF6EF; --paper:#FAF7F1;
  --ink:#1A1A1A; --muted:#665748; --soft:#776848;
  --line:rgba(58,44,36,.14); --line-hi:rgba(240,235,224,.16);
  --card-dark:#46382E; --nav-bg:rgba(250,247,241,.94);
  --maxw:1140px;
  --r:2px;
}
*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0; background:var(--paper); color:var(--espresso);
  font-family:'Work Sans',-apple-system,system-ui,sans-serif;
  font-size:16px; line-height:1.68; -webkit-font-smoothing:antialiased;
}
img{ max-width:100%; display:block; }
a{ color:var(--walnut); text-decoration:none; }
a:hover{ color:var(--accent-ink); }
:focus-visible{ outline:2px solid var(--accent-ink); outline-offset:3px; }
.section.dark :focus-visible,.cta :focus-visible,footer :focus-visible,.strip :focus-visible{ outline-color:var(--accent); }
h1,h2,h3,h4{ font-family:'Zilla Slab',Georgia,serif; margin:0; text-wrap:balance; }
h1{ font-size:clamp(34px,5.2vw,60px); font-weight:600; line-height:1.04; letter-spacing:-.022em; }
h2{ font-size:clamp(25px,3.4vw,38px); font-weight:600; line-height:1.14; letter-spacing:-.014em; }
h3{ font-size:clamp(18px,2vw,21px); font-weight:600; line-height:1.24; }
h4{ font-size:16px; font-weight:600; line-height:1.3; }
p{ margin:0 0 1.05em; }
p:last-child{ margin-bottom:0; }
.wrap{ max-width:var(--maxw); margin:0 auto; padding-inline:24px; }
.eyebrow{ text-wrap:balance; font-size:11px; font-weight:600; letter-spacing:.2em; text-transform:uppercase; color:var(--soft); }
.amp{ color:var(--accent-ink); }
.section.dark .amp,.cta .amp,footer .amp,.strip .amp{ color:var(--accent); }
.sr{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.skip{ position:absolute; left:-999px; top:0; z-index:200; background:var(--espresso); color:var(--cream);
  padding:10px 16px; font-size:14px; font-weight:600; }
.skip:focus{ left:8px; top:8px; color:var(--cream); }
.lede{ font-family:'Zilla Slab',Georgia,serif; font-size:clamp(17px,2.1vw,21px); line-height:1.5; color:var(--muted); }
.measure{ max-width:66ch; }
.section{ padding-block:clamp(56px,7vw,96px); }
.section.alt{ background:var(--cream-hi); border-block:1px solid var(--line); }
.section.dark{ background:var(--espresso); color:var(--cream); }
.section.dark h2,.section.dark h3{ color:var(--cream); }
.section.dark .eyebrow{ color:var(--accent); }
.section.dark .lede{ color:var(--tan); }
.section-head{ margin-bottom:clamp(28px,3.6vw,46px); }
.section-head h2{ margin-top:12px; }
.section-head .lede{ margin-top:16px; }

/* nav */
.nav{ position:sticky; top:0; z-index:50; background:var(--nav-bg);
  backdrop-filter:saturate(140%) blur(8px); border-bottom:1px solid var(--line); }
.nav-inner{ display:flex; align-items:center; justify-content:space-between; gap:20px;
  padding-block:14px; max-width:var(--maxw); margin:0 auto; padding-inline:24px; }
.brand img{ height:38px; width:auto; }
.links{ display:flex; align-items:center; gap:26px; list-style:none; margin:0; padding:0; }
.links a{ font-size:14px; font-weight:500; color:var(--espresso); letter-spacing:.01em; }
.links a:hover,.links a[aria-current="page"]{ color:var(--accent-ink); }
.links a[aria-current="page"]{ border-bottom:2px solid var(--accent-ink); padding-bottom:2px; }
.btn{ display:inline-flex; align-items:center; gap:9px; font-size:14px; font-weight:600;
  padding:11px 20px; border:1px solid var(--espresso); border-radius:var(--r);
  background:var(--espresso); color:var(--cream); white-space:nowrap; }
.btn:hover{ background:var(--walnut); border-color:var(--walnut); color:var(--cream); }
.btn.accent{ background:var(--accent); border-color:var(--accent); color:var(--espresso); }
.btn.accent:hover{ background:var(--accent-deep); border-color:var(--accent-deep); color:var(--cream); }
.btn.ghost{ background:transparent; color:var(--espresso); }
.btn.ghost:hover{ background:var(--espresso); color:var(--cream); }
.btn.on-dark{ background:transparent; border-color:var(--tan); color:var(--cream); }
.btn.on-dark:hover{ background:var(--cream); border-color:var(--cream); color:var(--espresso); }
.menu-toggle{ display:none; background:none; border:1px solid var(--line); border-radius:var(--r);
  padding:8px 12px; font:inherit; font-size:13px; font-weight:600; color:var(--espresso); cursor:pointer; }

/* hero */
.hero{ padding-block:clamp(52px,8vw,104px) clamp(40px,5vw,64px); }
.hero h1{ margin-bottom:22px; }
.hero .lede{ max-width:56ch; }
.hero-cta{ display:flex; flex-wrap:wrap; gap:12px; margin-top:32px; }
.verbs{ display:flex; flex-wrap:wrap; gap:8px 10px; margin-top:30px; }
.verb{ font-size:11px; font-weight:600; letter-spacing:.16em; text-transform:uppercase;
  color:var(--muted); border:1px solid var(--line); padding:6px 13px; border-radius:var(--r); }

.strip{ background:var(--espresso); color:var(--tan); }
.strip .wrap{ display:flex; flex-wrap:wrap; gap:10px 30px; justify-content:center;
  padding-block:15px; font-size:11.5px; font-weight:600; letter-spacing:.19em; text-transform:uppercase; }

/* layered stack */
.stack{ display:flex; flex-direction:column; gap:10px; }
.band{ display:flex; border:1px solid var(--line); background:#fff; }
.band:hover{ border-color:var(--tan); }
.band .bnum{ flex:0 0 112px; background:var(--espresso); color:var(--cream);
  padding:20px 18px; display:flex; flex-direction:column; justify-content:space-between; gap:20px; }
.band .bnum .n{ font-family:'Zilla Slab',Georgia,serif; font-size:20px; font-weight:600; color:var(--accent); line-height:1; }
.band .bnum .t{ font-size:12px; font-weight:600; letter-spacing:.15em; text-transform:uppercase; }
.band .bbody{ flex:1; padding:20px 24px; min-width:0; }
.band .bout{ font-family:'Zilla Slab',Georgia,serif; font-size:17px; font-weight:500; line-height:1.34; }
.band .bcap{ font-size:13px; color:var(--muted); margin-top:9px; line-height:1.55; }

/* tags */
.tags{ display:flex; flex-wrap:wrap; gap:6px 7px; margin-top:14px; }
.tag{ font-size:11.5px; font-weight:500; color:var(--walnut); border:1px solid var(--line);
  background:var(--cream-hi); padding:3px 10px; border-radius:var(--r); white-space:nowrap; }
.ai{ color:var(--accent-ink); }
.section.dark .ai,.cta .ai,footer .ai{ color:var(--accent); }

.klist{ list-style:none; margin:0; padding:0; }
.klist li{ display:flex; gap:9px; align-items:baseline; font-size:13.5px;
  color:var(--walnut); padding:3px 0; line-height:1.5; }

/* grids and cards */
.grid{ display:grid; gap:16px; }
.g2{ grid-template-columns:repeat(2,minmax(0,1fr)); }
.g3{ grid-template-columns:repeat(3,minmax(0,1fr)); }
.g4{ grid-template-columns:repeat(4,minmax(0,1fr)); }
.card{ border:1px solid var(--line); background:#fff; padding:24px; }
.card h3{ margin-bottom:10px; }
.card p{ font-size:14.5px; color:var(--muted); }
.card .num{ font-family:'Zilla Slab',Georgia,serif; font-size:17px; font-weight:600; color:var(--accent-ink); line-height:1; }
.section.dark .card .num{ color:var(--accent); }
.section.dark .card{ background:var(--card-dark); border-color:var(--line-hi); }
.section.dark .card p{ color:var(--tan); }

/* stats */
.stats{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:0;
  border-block:1px solid var(--line); }
.stat{ padding:24px 22px; border-left:1px solid var(--line); }
.stat:first-child{ border-left:0; padding-left:0; }
.stat .k{ font-family:'Zilla Slab',Georgia,serif; font-size:clamp(30px,4vw,44px); font-weight:600; line-height:1; }
.stat .v{ font-size:11px; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--soft); margin-top:10px; }

/* portfolio filter */
.filters{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:28px; }
.filter{ font:inherit; font-size:13px; font-weight:600; letter-spacing:.04em; cursor:pointer;
  border:1px solid var(--line); background:#fff; color:var(--espresso);
  padding:9px 17px; border-radius:var(--r); }
.filter:hover{ border-color:var(--tan); }
.filter[aria-pressed="true"]{ background:var(--espresso); border-color:var(--espresso); color:var(--cream); }
.vendors{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.vendor{ border:1px solid var(--line); border-top:2px solid var(--accent-ink); background:#fff; padding:15px 16px; }
.vendor .vn{ font-size:14.5px; font-weight:600; line-height:1.25; }
.vendor .vp{ font-size:12.5px; color:var(--muted); margin-top:5px; line-height:1.45; }
.vendor .vl{ font-size:10px; font-weight:600; letter-spacing:.14em; text-transform:uppercase;
  color:var(--soft); margin-top:10px; }
.vendor[hidden]{ display:none; }
.count{ font-size:13px; color:var(--soft); margin-bottom:18px; }

/* loop diagram */
.loop{ display:flex; flex-wrap:wrap; gap:0; border:1px solid var(--line-hi); }
.loop .step{ flex:1 1 130px; padding:18px 14px; border-left:1px solid var(--line-hi); }
.loop .step:first-child{ border-left:0; }
.loop .step .s{ font-size:11px; font-weight:600; letter-spacing:.15em; text-transform:uppercase; color:var(--accent); }
.loop .step .d{ font-size:12.5px; color:var(--tan); margin-top:8px; line-height:1.45; }

/* autonomy table */
.tblwrap{ overflow-x:auto;
  background:linear-gradient(to right,var(--paper) 30%,rgba(250,247,241,0)),
             linear-gradient(to left,var(--paper) 30%,rgba(250,247,241,0)) 100% 0,
             radial-gradient(farthest-side at 0 50%,rgba(64,52,40,.16),transparent),
             radial-gradient(farthest-side at 100% 50%,rgba(64,52,40,.16),transparent) 100% 0;
  background-repeat:no-repeat; background-size:44px 100%,44px 100%,14px 100%,14px 100%;
  background-attachment:local,local,scroll,scroll; }
.section.alt .tblwrap{ background-color:var(--cream-hi); }
table{ border-collapse:collapse; width:100%; min-width:660px; font-size:14px; }
table.narrow{ min-width:0; }
th,td{ text-align:left; padding:14px 16px; border-bottom:1px solid var(--line); vertical-align:top; }
thead th{ font-size:11px; font-weight:600; letter-spacing:.14em; text-transform:uppercase;
  color:var(--soft); border-bottom:1px solid var(--espresso); }
tbody tr:hover{ background:var(--cream-hi); }
td.lvl{ font-family:'Zilla Slab',Georgia,serif; font-weight:600; white-space:nowrap; }
td.lvl .badge{ color:var(--accent-ink); }

/* steps */
.steps{ display:flex; flex-direction:column; gap:10px; }
.step-row{ display:flex; gap:0; border:1px solid var(--line); background:#fff; }
.step-row .sn{ flex:0 0 152px; background:var(--espresso); color:var(--cream); padding:18px;
  display:flex; flex-direction:column; justify-content:space-between; gap:16px; }
.step-row .sn .n{ font-family:'Zilla Slab',Georgia,serif; font-size:20px; font-weight:600; color:var(--accent); line-height:1; }
.step-row .sn .t{ font-size:11.5px; font-weight:600; letter-spacing:.09em; text-transform:uppercase; }
.step-row .sb{ flex:1; padding:18px 22px; min-width:0; }
.step-row .sb p{ font-size:14.5px; }
.step-row .sb .k{ font-size:12.5px; color:var(--soft); margin-top:8px; }

/* value chain */
.vc{ border:1px solid var(--line); background:#fff; padding:24px; }
.vc .bar{ background:var(--espresso); color:var(--cream); text-align:center; padding:11px;
  font-size:11.5px; font-weight:600; letter-spacing:.16em; text-transform:uppercase; }
.vc .mid{ display:flex; gap:10px; margin-block:10px; align-items:stretch; }
.vc .cell{ flex:1; border:1px solid var(--line); background:var(--paper); padding:16px 10px;
  text-align:center; font-size:12px; font-weight:600; letter-spacing:.08em; text-transform:uppercase;
  display:flex; align-items:center; justify-content:center; }
.vc .col{ flex:1.6; display:flex; flex-direction:column; gap:10px; }
.vc .col .cell{ padding:10px; }
.vc .edge{ flex:0 0 64px; display:flex; flex-direction:column; justify-content:center; gap:4px;
  font-size:10px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--soft); }

/* insight cards */
.posts{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.post{ border:1px solid var(--line); background:#fff; padding:20px; display:flex;
  flex-direction:column; gap:10px; }
.post .cat{ font-size:10.5px; font-weight:600; letter-spacing:.15em; text-transform:uppercase; color:var(--accent-ink); }
.post h3{ font-size:17px; }
.post p{ font-size:13.5px; color:var(--muted); margin:0; }
.post .meta{ font-size:11.5px; color:var(--soft); margin-top:auto; padding-top:10px; }

/* cta + footer */
.cta{ background:var(--espresso); color:var(--cream); }
.cta h2{ color:var(--cream); max-width:24ch; }
.cta .lede{ color:var(--tan); max-width:60ch; margin-top:18px; }
.cta .hero-cta{ margin-top:28px; }
footer{ background:var(--espresso); color:var(--tan); border-top:1px solid var(--line-hi); }
footer .wrap{ padding-block:44px 34px; }
.foot-grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:32px; }
footer img{ height:42px; margin-bottom:16px; }
footer a{ color:var(--cream); font-size:14px; }
footer a:hover{ color:var(--accent); }
.foot-col .fh{ font-family:'Work Sans',-apple-system,system-ui,sans-serif;
  font-size:11px; font-weight:600; letter-spacing:.16em; text-transform:uppercase;
  line-height:1.3; color:var(--accent); margin:0 0 14px; }
.foot-col ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:9px; }
.foot-bottom{ margin-top:32px; padding-top:20px; border-top:1px solid var(--line-hi);
  display:flex; flex-wrap:wrap; gap:8px 24px; justify-content:space-between; font-size:12px; }

@media (max-width:1040px){
  .g4,.vendors,.posts{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .g3{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .stats{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .stat{ border-left:0; border-top:1px solid var(--line); padding-inline:0; }
  .stat:first-child,.stat:nth-child(2){ border-top:0; }
}
@media (max-width:960px){
  .links{ display:none; }
  .menu-toggle{ display:inline-block; }
  .nav.open .links{ display:flex; position:absolute; left:0; right:0; top:100%;
    flex-direction:column; align-items:flex-start; gap:0; background:var(--paper);
    border-bottom:1px solid var(--line); padding:10px 24px 18px; }
  .nav.open .links li{ width:100%; }
  .nav.open .links a{ display:block; padding:11px 0; border-bottom:1px solid var(--line); }
  .foot-grid{ grid-template-columns:1fr 1fr; }
  .vc .mid{ flex-wrap:wrap; }
  .vc .edge{ flex-basis:100%; flex-direction:row; justify-content:center; gap:8px; }
}
@media (max-width:560px){
  /* the nav CTA crowds the logo on a phone; every page carries a contact section anyway */
  .nav-inner .btn.accent{ display:none; }
}
@media (max-width:680px){
  .g2,.g3,.g4,.vendors,.posts{ grid-template-columns:minmax(0,1fr); }
  .band,.step-row{ flex-direction:column; }
  .band .bnum,.step-row .sn{ flex-basis:auto; flex-direction:row; align-items:center; gap:14px; padding:13px 18px; }
  .foot-grid{ grid-template-columns:minmax(0,1fr); }
  .loop .step{ border-left:0; border-top:1px solid var(--line-hi); }
  .loop .step:first-child{ border-top:0; }
}
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *{ animation:none!important; transition:none!important; }
}

/* long-form article */
.article{ max-width:70ch; }
.article h2{ font-size:clamp(20px,2.5vw,27px); margin-top:46px; margin-bottom:14px; }
.article h3{ margin-top:30px; margin-bottom:10px; }
.article p{ font-size:16.5px; line-height:1.72; }
.article p.lede{ font-size:clamp(17px,2.1vw,21px); line-height:1.5; margin-bottom:1.2em; }
.article ul,.article ol{ margin:0 0 1.05em; padding-left:21px; }
.article li{ font-size:16.5px; line-height:1.66; margin-bottom:7px; }
.article li::marker{ color:var(--accent-ink); }
.article strong{ font-weight:600; }
.article blockquote{ margin:28px 0; padding:2px 0 2px 20px; border-left:2px solid var(--accent-ink);
  font-family:'Zilla Slab',Georgia,serif; font-size:19px; line-height:1.48; color:var(--muted); }
.article .callout{ border:1px solid var(--line); background:var(--cream-hi); padding:20px 22px; margin:30px 0; }
.article .callout h3{ margin-top:0; margin-bottom:8px; }
.article .callout p{ font-size:14.5px; color:var(--muted); margin:0; }
.article .tblwrap{ margin:28px 0; }
.byline{ display:flex; flex-wrap:wrap; gap:8px 18px; font-size:11px; font-weight:600;
  letter-spacing:.14em; text-transform:uppercase; color:var(--soft); margin-top:26px; }
.next{ border:1px solid var(--line); background:#fff; padding:24px; display:flex; flex-wrap:wrap;
  gap:18px; align-items:center; justify-content:space-between; }
.next .nl{ max-width:52ch; }
.next .nc{ font-size:10.5px; font-weight:600; letter-spacing:.15em; text-transform:uppercase; color:var(--accent-ink); }
.next h3{ margin-top:7px; }
