/* ============================================================
   BES site layer — loads after tokens.css (Modernist)
   Palette: accent hsl(109 30% 29%), secondary hsl(76 12% 68%)
   ============================================================ */
:root{
  --color-accent:#3c6034;
  --color-accent-100:#eef4ec;--color-accent-200:#dbe6d7;--color-accent-300:#b9ccb2;
  --color-accent-400:#7fa374;--color-accent-500:#4d7a43;--color-accent-600:#345229;
  --color-accent-700:#28421f;--color-accent-800:#1b2f15;--color-accent-900:#111f0d;
  --color-accent-2:#b2b7a4;
  --color-accent-2-100:#f4f5f1;--color-accent-2-200:#e6e8e0;--color-accent-2-300:#d2d6c8;
  --color-accent-2-400:#b2b7a4;--color-accent-2-500:#959b85;--color-accent-2-600:#787e69;
  --color-accent-2-700:#5c6150;--color-accent-2-800:#41453a;--color-accent-2-900:#282b24;
  --color-bg:#f4f5f2;--color-surface:#e9ebe4;
  --color-neutral-900:#232620;--color-neutral-800:#3c4038;--color-neutral-700:#5b6053;
  --color-neutral-600:#7b8072;--color-neutral-500:#989c8f;--color-neutral-400:#b7bab0;
  --color-neutral-300:#d1d4c9;--color-neutral-200:#e3e5dd;--color-neutral-100:#f2f3ef;
  --color-divider:#a9ada0;
  --color-divider:color-mix(in srgb, #232620 38%, transparent);
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;scrollbar-gutter:stable}
body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-wrap:break-word}
img{max-width:100%;height:auto;display:block;border:0}
h1,h2,h3{font-family:var(--font-heading);font-weight:800;letter-spacing:-.03em;margin:0;text-wrap:balance}
h1{font-size:clamp(32px,5vw,58px);line-height:1.02}
h2{font-size:clamp(24px,3.2vw,36px);line-height:1.06}
h3{font-size:17px;font-weight:700;letter-spacing:-.01em;line-height:1.28;margin:0}
p{margin:0}
ul,ol{margin:0;padding:0}
a{color:var(--color-accent-700);text-decoration:none}
a:hover{color:var(--color-accent);text-decoration:underline}
:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}
::selection{background:var(--color-accent-200)}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.wrap{max-width:1320px;margin:0 auto;padding:0 40px;padding-left:max(40px,env(safe-area-inset-left));padding-right:max(40px,env(safe-area-inset-right))}
.band{border-bottom:2px solid var(--color-divider);padding:64px 0}
.band.surface{background:var(--color-surface)}
.skip{position:absolute;left:-9999px}
.skip:focus{left:8px;top:8px;background:var(--color-accent);color:#fff;padding:8px 12px;z-index:99}
.body{font-size:16px;line-height:1.65;color:var(--color-neutral-800);max-width:62ch;margin-top:16px}
.note{font-size:13px;line-height:1.6;color:var(--color-neutral-700);max-width:80ch;margin-top:18px}
.small{font-size:12.5px;color:var(--color-neutral-700)}

/* ---------- utility bar ---------- */
.utilbar{background:var(--color-neutral-900);color:var(--color-neutral-200)}
.utilbar-in{display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding-top:7px;padding-bottom:7px;flex-wrap:wrap}
.region{display:flex;border:1px solid rgba(255,255,255,.25)}
.region-btn{display:inline-flex;align-items:center;gap:8px;font:600 11px/1 var(--font-body);letter-spacing:.1em;
  text-transform:uppercase;background:transparent;color:var(--color-neutral-200);border:0;padding:8px 13px;cursor:pointer;min-height:34px}
.region-btn .flag{display:block;flex:none;width:22px;height:11px;outline:1px solid rgba(255,255,255,.35);outline-offset:0}
.region-btn.is-on .flag{outline-color:rgba(255,255,255,.6)}
.region-btn:hover{background:rgba(255,255,255,.12);color:#fff}
.region-btn.is-on{background:#fff;color:var(--color-neutral-900)}
.region-btn.is-on .flag{outline-color:rgba(0,0,0,.25)}
.utilbar-contact{display:flex;gap:20px;font:600 11px/1 var(--font-body);letter-spacing:.06em}
.utilbar-contact a{color:var(--color-neutral-200)}
.utilbar-contact a:hover{color:#fff}

/* ---------- header ---------- */
.site-head{position:-webkit-sticky;position:sticky;top:0;z-index:50;background:var(--color-bg);border-bottom:2px solid var(--color-divider)}
.head-inner{display:flex;align-items:center;gap:16px;padding-top:14px;padding-bottom:14px;flex-wrap:wrap}
.brand{display:flex;align-items:flex-end;gap:14px;margin-right:auto;text-decoration:none;min-width:0}
.brand:hover{text-decoration:none}
.brand img{height:38px;width:auto}
.brand-rule{width:2px;height:15px;background:var(--color-accent);margin-bottom:4px;flex:none}
.brand-tag{font:600 13px/1 var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--color-neutral-700);white-space:nowrap;margin-bottom:4px}
.mainnav{display:flex;gap:0;flex-wrap:nowrap;min-width:0}
.mainnav a{font:600 12px/1 var(--font-body);letter-spacing:.07em;text-transform:uppercase;
  color:var(--color-neutral-800);padding:12px 12px;border-bottom:2px solid transparent}
.mainnav a:hover{color:var(--color-accent-700);border-bottom-color:var(--color-accent-300);text-decoration:none}
.mainnav a[aria-current="page"]{color:var(--color-accent-700);border-bottom-color:var(--color-accent);background:var(--color-accent-100)}
.head-cta{font-size:12px;padding:11px 14px}
.navtoggle{display:none;background:none;border:1px solid var(--color-divider);font:600 16px/1 var(--font-body);
  padding:10px 14px;min-height:44px;cursor:pointer;color:var(--color-text)}

/* ---------- hero ---------- */
.hero{padding:0}
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;align-items:stretch;padding-right:0}
.hero-copy{padding:72px 48px 72px 0}
.hero-fig{border-left:1px solid var(--color-divider);min-height:520px;position:relative}
.hero-fig.std{min-height:340px;border-left:0}
.kicker{font:600 11px/1.3 var(--font-body);letter-spacing:.16em;text-transform:uppercase;color:var(--color-accent-700);margin:0 0 18px}
.lede{font-size:17px;line-height:1.55;max-width:52ch;margin:20px 0 0;color:var(--color-neutral-800);text-wrap:pretty}
.cta-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:32px}
.pagehead{padding:52px 0 44px}
.pagehead .lede{margin-top:16px}
.ticks{list-style:none;margin:26px 0 0;display:flex;flex-direction:column;gap:10px}
.ticks li{position:relative;padding-left:22px;font-size:14.5px;line-height:1.55;color:var(--color-neutral-800)}
.ticks li::before{content:"";position:absolute;left:0;top:6px;width:10px;height:10px;background:var(--color-accent)}

/* ---------- photo placeholders ---------- */
.ph{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--color-neutral-200);
  display:flex;align-items:center;justify-content:center;border:1px dashed var(--color-neutral-400)}
.ph::after{content:attr(data-ph);font:600 11px/1.4 var(--font-body);letter-spacing:.08em;
  text-transform:uppercase;color:var(--color-neutral-600);text-align:center;padding:0 16px}
.ph.sm{position:relative;height:170px;margin-bottom:16px}
.ph.av{position:relative;width:56px;height:56px;margin-bottom:14px}
.grayscale{-webkit-filter:none;filter:none}

/* ---------- stats ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--color-divider);border:1px solid var(--color-divider)}
.stat{background:var(--color-bg);padding:28px 24px;display:flex;flex-direction:column;gap:7px}
.stat-n{font-family:var(--font-heading);font-weight:800;font-size:clamp(32px,3.4vw,44px);line-height:.95;letter-spacing:-.04em;color:var(--color-accent)}
.stat-l{font:600 11px/1.4 var(--font-body);letter-spacing:.1em;text-transform:uppercase;color:var(--color-neutral-800)}
.stat-s{font-size:12.5px;line-height:1.45;color:var(--color-neutral-700)}

/* ---------- grids ---------- */
.sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:24px;margin-bottom:30px;flex-wrap:wrap}
.more{font:600 12px/1 var(--font-body);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:1px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:1px}
.grid3.ruled,.grid4.ruled{background:var(--color-divider);border:1px solid var(--color-divider)}
.cell{background:var(--color-bg);padding:26px 24px;display:flex;flex-direction:column;gap:10px;min-width:0}
.surface .cell{background:var(--color-surface)}
.num{font:600 11px/1 var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--color-accent-700)}
.cell p{font-size:14px;line-height:1.6;color:var(--color-neutral-800)}
.vmt .cell{gap:8px}
.date{font-size:12px!important;color:var(--color-neutral-700)!important;margin-top:auto;padding-top:10px}

/* project cards */
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip-tag{font:600 10px/1 var(--font-body);letter-spacing:.1em;text-transform:uppercase;
  padding:6px 9px;background:var(--color-accent-100);color:var(--color-accent-700);border:1px solid var(--color-accent-300)}
.chip-tag.year{background:transparent;border-color:var(--color-divider);color:var(--color-neutral-700)}
.meta{font-size:13px!important;color:var(--color-neutral-700)!important}
.figs{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--color-divider);
  border:1px solid var(--color-divider);margin-top:auto}
.fig{background:var(--color-bg);padding:12px 10px;display:flex;flex-direction:column;gap:3px;min-width:0}
.surface .fig{background:var(--color-surface)}
.fig-n{font-family:var(--font-heading);font-weight:800;font-size:21px;letter-spacing:-.03em;color:var(--color-accent)}
.fig-l{font:600 9.5px/1.3 var(--font-body);letter-spacing:.1em;text-transform:uppercase;color:var(--color-neutral-700)}

/* ---------- quick check ---------- */
.quickcheck{display:grid;grid-template-columns:1.1fr .9fr;gap:56px;align-items:start}
.qc{border:1px solid var(--color-divider);background:var(--color-bg);padding:26px;display:flex;flex-direction:column;gap:16px}
.qc-out{border-top:2px solid var(--color-divider);padding-top:16px;display:flex;flex-direction:column;gap:8px}
.qc-out h4{font:600 11px/1 var(--font-body);letter-spacing:.1em;text-transform:uppercase;color:var(--color-accent-700);margin:0 0 4px}
.qc-item{border:1px solid var(--color-divider);padding:10px 12px;font-size:13.5px;line-height:1.45;background:var(--color-surface)}
.qc-note{font-size:12px;line-height:1.5;color:var(--color-neutral-700)}

/* ---------- logos / quote ---------- */
.logos-h{font:600 11px/1 var(--font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--color-neutral-700);margin-bottom:22px}
.logo-row{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:var(--color-divider);border:1px solid var(--color-divider)}
.logo-cell{background:var(--color-bg);min-height:88px;display:flex;align-items:center;justify-content:center;
  font:600 12px/1 var(--font-body);letter-spacing:.1em;text-transform:uppercase;color:var(--color-neutral-500)}
.quote{background:var(--color-accent-100)}
.quote blockquote{margin:0;font-family:var(--font-heading);font-weight:800;
  font-size:clamp(24px,3.4vw,40px);line-height:1.15;letter-spacing:-.03em;max-width:22ch}
.quote .attr{margin-top:20px;font:600 11px/1.6 var(--font-body);letter-spacing:.1em;text-transform:uppercase;color:var(--color-accent-700)}

/* ---------- poster / CTA ---------- */
.poster{background:var(--color-accent);border-bottom:0}
.poster-in{display:flex;align-items:center;justify-content:space-between;gap:32px;flex-wrap:wrap}
.poster h2{color:#fff;font-size:clamp(26px,4vw,46px);line-height:1.04}
.btn-poster{display:inline-flex;align-items:center;background:#fff;color:var(--color-accent-700);
  padding:15px 20px;min-height:48px;font:600 13px/1 var(--font-body);letter-spacing:.06em;text-transform:uppercase}
.btn-poster:hover{background:var(--color-neutral-100);color:var(--color-accent-700);text-decoration:none}
.cta-panel{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--color-divider);border:1px solid var(--color-divider)}
.cta-cell{background:var(--color-bg);padding:38px 32px;display:flex;flex-direction:column;align-items:flex-start;gap:16px}
.cta-cell p{font-size:15px;line-height:1.6;color:var(--color-neutral-800);max-width:40ch}

/* ---------- services page ---------- */
.svc-row{padding:48px 0}
.svc-grid{display:grid;grid-template-columns:78px minmax(0,1.4fr) minmax(0,1fr);gap:32px;align-items:start}
.svc-n{font-family:var(--font-heading);font-weight:800;font-size:40px;line-height:.9;letter-spacing:-.04em;color:var(--color-accent)}
.svc-list{list-style:none;border-top:1px solid var(--color-divider)}
.svc-list li{border-bottom:1px solid var(--color-divider);padding:11px 0;font-size:14px;line-height:1.5;color:var(--color-neutral-800)}
.two-col{display:grid;grid-template-columns:1.2fr .8fr;gap:48px;align-items:start}

/* ---------- filters ---------- */
.filterbar{display:flex;flex-direction:column;gap:14px;margin-bottom:22px}
.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:22px}
.filterbar .filters{margin-bottom:0}
.filter-lbl{font:600 10px/1 var(--font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--color-neutral-700);margin-right:4px}
.chip{font:600 11px/1 var(--font-body);letter-spacing:.08em;text-transform:uppercase;padding:11px 14px;
  min-height:40px;border:1px solid var(--color-divider);background:var(--color-bg);color:var(--color-neutral-800);cursor:pointer}
.chip:hover{border-color:var(--color-accent);color:var(--color-accent-700)}
.chip.is-on{background:var(--color-accent);border-color:var(--color-accent);color:#fff}
.result-count{font:600 11px/1 var(--font-body);letter-spacing:.1em;text-transform:uppercase;color:var(--color-neutral-700);margin-bottom:14px}
.empty{margin-top:24px;font-size:15px;color:var(--color-neutral-700)}

/* ---------- team ---------- */
.teamgroup{margin-bottom:44px}
.teamgroup:last-child{margin-bottom:0}
.teamgroup h2{margin-bottom:18px;font-size:24px}
.person h3{font-size:15px}

/* ---------- timeline / steps / events / faq ---------- */
.timeline{list-style:none;display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--color-divider);border:1px solid var(--color-divider);margin-top:24px}
.timeline li{background:var(--color-bg);padding:20px 16px;min-width:0}
.timeline span{display:block;font-family:var(--font-heading);font-weight:800;font-size:20px;color:var(--color-accent);margin-bottom:8px}
.timeline p{font-size:13px;line-height:1.5;color:var(--color-neutral-800)}
.steps{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--color-divider);border:1px solid var(--color-divider);margin-top:26px}
.steps li{background:var(--color-surface);padding:24px;min-width:0}
.steps span{font-family:var(--font-heading);font-weight:800;font-size:26px;color:var(--color-accent);display:block;margin-bottom:10px}
.steps p{font-size:14px;line-height:1.55;color:var(--color-neutral-800);margin-top:8px}
.events{list-style:none;border-top:2px solid var(--color-divider);margin-top:22px}
.events li{display:grid;grid-template-columns:150px 1fr;gap:24px;padding:20px 0;border-bottom:1px solid var(--color-divider)}
.ev-date{font:600 12px/1.4 var(--font-body);letter-spacing:.1em;text-transform:uppercase;color:var(--color-accent-700)}
.events p{font-size:14px;line-height:1.55;color:var(--color-neutral-800);margin-top:6px}
.faq{border-top:2px solid var(--color-divider);margin-top:22px}
.faq details{border-bottom:1px solid var(--color-divider)}
.faq summary{cursor:pointer;padding:16px 0;font-family:var(--font-heading);font-weight:700;font-size:16px;list-style:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";float:right;color:var(--color-accent);font-weight:800}
.faq details[open] summary::after{content:"–"}
.faq p{padding:0 0 18px;font-size:14.5px;line-height:1.6;color:var(--color-neutral-800);max-width:70ch}
.taglist{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}
.tag-pill{font:600 11px/1 var(--font-body);letter-spacing:.08em;text-transform:uppercase;padding:10px 13px;border:1px solid var(--color-divider);color:var(--color-neutral-800)}
.prose h2{font-size:22px;margin:28px 0 10px}
.prose h2:first-child{margin-top:0}
.prose p{font-size:15.5px;line-height:1.7;color:var(--color-neutral-800);max-width:70ch}

/* ---------- tables ---------- */
.tablewrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.fundtable th{background:var(--color-neutral-900);color:var(--color-bg);border-bottom-color:var(--color-neutral-900)}
.fundtable td{vertical-align:top;line-height:1.5}

/* ---------- forms (layering only) ---------- */
.btn{justify-content:flex-start;text-transform:uppercase;letter-spacing:.05em;font-weight:600;min-height:44px}
.btn-block{justify-content:flex-start}
.field > label{letter-spacing:.1em;text-transform:uppercase;font-weight:600;font-size:11px}
.input{min-height:44px;padding:11px 12px;font-size:16px}
select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--color-neutral-700) 50%),linear-gradient(135deg,var(--color-neutral-700) 50%,transparent 50%);background-position:calc(100% - 18px) calc(50% + 2px),calc(100% - 13px) calc(50% + 2px);background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:36px}
.req{color:var(--color-accent)}
.contact-grid{display:grid;grid-template-columns:1.4fr .6fr;gap:56px;align-items:start}
.cform{display:flex;flex-direction:column;gap:18px}
.cmain{display:flex;flex-direction:column;gap:32px;min-width:0}
.direct{border:1px solid var(--color-divider);background:var(--color-surface);padding:26px 24px}
.direct h2{font-size:22px}
.direct .body{margin-top:10px;font-size:15px}
.direct-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--color-divider);border:1px solid var(--color-divider);margin-top:20px}
.direct-cell{background:var(--color-bg);padding:18px}
.direct-cell h3{font:600 10px/1 var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--color-accent-700);margin-bottom:10px}
.direct-cell p{font-size:15px;line-height:1.7}
@media (max-width:560px){.direct-grid{grid-template-columns:1fr}}
.msform{border:1px solid var(--color-divider);background:var(--color-bg);padding:0}
.msform iframe{display:block;min-height:900px;background:#fff}
.tracker-grid{display:grid;grid-template-columns:1.5fr .5fr;gap:48px;align-items:start}
@media (max-width:1000px){.tracker-grid{grid-template-columns:1fr;gap:32px}}
.msform .note{margin:0;max-width:none;padding:14px 18px;border-top:1px solid var(--color-divider);background:var(--color-surface)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.hp{position:absolute;left:-9999px}
.checkrow{margin-top:2px}
.field > label.check,.check{display:flex;align-items:flex-start;gap:10px;font-size:14px;line-height:1.5;
  font-weight:400;color:var(--color-neutral-800);cursor:pointer;text-transform:none;letter-spacing:0}
.cform button[type="submit"]{align-self:flex-start}
.check input{width:18px;height:18px;margin:1px 0 0;accent-color:var(--color-accent);flex:none}
.cside{display:flex;flex-direction:column}
.cblock{border-top:1px solid var(--color-divider);padding:16px 0}
.cblock h3{font:600 10px/1.3 var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--color-accent-700);margin-bottom:8px}
.cblock p{font-size:14px;line-height:1.6;margin-bottom:8px}
.cblock p:last-child{margin-bottom:0}

/* ---------- footer ---------- */
.site-foot{background:var(--color-neutral-900);color:var(--color-neutral-200);padding:56px 0 0}
.site-foot a{color:var(--color-neutral-200)}
.site-foot a:hover{color:#fff}
.site-foot h3{font:600 10px/1 var(--font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--color-accent-2-400);margin-bottom:14px}
.foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.1fr;gap:40px;padding-bottom:44px}
.foot-logo{height:32px;width:auto;-webkit-filter:brightness(0) invert(1);filter:brightness(0) invert(1)}
.foot-blurb{font-size:14px;line-height:1.6;margin-top:16px;max-width:38ch;color:var(--color-neutral-400)}
.foot-addr{font-size:13.5px;line-height:1.7;margin-top:16px;color:var(--color-neutral-300)}
.foot-p{font-size:14px;line-height:1.7;margin-bottom:14px}
.foot-links{list-style:none;display:flex;flex-direction:column;gap:9px;font-size:14px}
.foot-bar{border-top:1px solid var(--color-neutral-700);padding-top:18px;padding-bottom:22px;
  display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
  font:600 11px/1.4 var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--color-neutral-500)}
.foot-bar a{color:var(--color-neutral-500)}

/* ---------- cookie ---------- */
.cookie{position:fixed;left:0;right:0;bottom:0;z-index:80;background:var(--color-neutral-900);
  color:var(--color-neutral-200);border-top:2px solid var(--color-accent);
  padding-bottom:env(safe-area-inset-bottom)}
.cookie[hidden]{display:none}
.cookie-in{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;padding-top:16px;padding-bottom:16px}
.cookie p{font-size:13.5px;line-height:1.55;max-width:64ch}
.cookie a{color:#fff;text-decoration:underline}
.cookie-actions{display:flex;gap:10px;flex-wrap:wrap}
.cookie .btn-secondary{color:var(--color-neutral-200);border-color:var(--color-neutral-600)}
.cookie .btn-secondary:hover{background:rgba(255,255,255,.1);color:#fff}

/* ============================================================
   Responsive
   ============================================================ */
@media (max-width:1500px){
  .brand-tag,.brand-rule{display:none}
}
@media (max-width:1320px){
  .mainnav a{padding-left:9px;padding-right:9px;letter-spacing:.05em}
  .head-cta{padding:11px 12px}
}

@media (max-width:1080px){
  .navtoggle{display:inline-flex;align-items:center;gap:8px;order:2}
  .mainnav{display:none;order:3;flex-basis:100%;flex-direction:column;flex-wrap:nowrap;
    border-top:2px solid var(--color-divider);padding-top:6px;margin-top:6px}
  .mainnav.is-open{display:flex}
  .mainnav a{padding:14px 0;border-bottom:1px solid var(--color-divider);border-bottom-color:var(--color-divider)}
  .mainnav a[aria-current="page"]{padding-left:10px}
  .grid4{grid-template-columns:repeat(2,1fr)}
  .timeline{grid-template-columns:repeat(4,1fr)}
  .logo-row{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:1000px){
  .hero-grid,.quickcheck,.contact-grid,.two-col{grid-template-columns:1fr}
  .hero-copy{padding:52px 0 40px}
  .hero-fig{border-left:0;border-top:2px solid var(--color-divider);min-height:300px}
  .grid3,.stat-grid,.steps,.cta-panel{grid-template-columns:repeat(2,1fr)}
  .svc-grid{grid-template-columns:1fr;gap:18px}
  .svc-n{font-size:30px}
  .foot-grid{grid-template-columns:1fr 1fr}
  .quickcheck,.contact-grid,.two-col{gap:36px}
}
@media (max-width:720px){
  .wrap{padding-left:max(20px,env(safe-area-inset-left));padding-right:max(20px,env(safe-area-inset-right))}
  .band{padding:40px 0}
  .pagehead{padding:36px 0 32px}
  .utilbar-in{justify-content:center}
  .utilbar-contact{gap:14px;font-size:10.5px}
  .region-btn{padding:8px 10px;gap:6px}
  .region-btn span{font-size:10px}
  .grid3,.grid4,.stat-grid,.steps,.two,.foot-grid,.cta-panel,.timeline{grid-template-columns:1fr}
  .logo-row{grid-template-columns:repeat(2,1fr)}
  .events li{grid-template-columns:1fr;gap:6px}
  .svc-row{padding:34px 0}
  .quote blockquote{max-width:none}
  .poster-in{gap:20px}
  .fig-n{font-size:19px}
  .foot-bar{flex-direction:column;gap:8px}
}
@media (max-width:420px){
  .figs{grid-template-columns:1fr}
  .cell{padding:22px 18px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important}
}
@media print{
  .utilbar,.site-head,.cookie,.poster,.filters,.filterbar{display:none!important}
  .band{border-color:#999;padding:18px 0}
  a{color:#000;text-decoration:none}
}

/* ---------- founding story ---------- */
.founding-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:48px;align-items:start;margin-bottom:44px}
.founding-fig{position:relative;min-height:320px;border:1px solid var(--color-divider)}
.founding-copy .body:first-child{margin-top:0}
.story{list-style:none;border-top:2px solid var(--color-divider)}
.story li{display:grid;grid-template-columns:110px 1fr;gap:28px;padding:22px 0;border-bottom:1px solid var(--color-divider);align-items:start}
.story-y{font-family:var(--font-heading);font-weight:800;font-size:26px;letter-spacing:-.03em;color:var(--color-accent);line-height:1}
.story h3{font-size:16px;margin-bottom:7px}
.story p{font-size:14.5px;line-height:1.6;color:var(--color-neutral-800);max-width:74ch}

/* ---------- vision / mission ---------- */
.vm-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--color-divider);border:1px solid var(--color-divider)}
.vm{background:var(--color-surface);padding:34px 30px}
.vm-t{font-family:var(--font-heading);font-weight:800;font-size:clamp(19px,2vw,24px);line-height:1.25;letter-spacing:-.02em;text-wrap:pretty}

/* ---------- sectors ---------- */
.sector-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--color-divider);border:1px solid var(--color-divider);margin-top:24px}
.sector{background:var(--color-bg);padding:22px;display:flex;flex-direction:column;gap:14px;align-items:flex-start}
.sector span{font:600 11px/1 var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--color-neutral-800)}
.ph.sq{position:relative;width:100%;aspect-ratio:1/1;max-width:120px}
.vmt .ph.sq{max-width:100%;aspect-ratio:16/10;margin-bottom:4px}
.ph.portrait{position:relative;width:100%;aspect-ratio:1/1;margin-bottom:14px}
.ph.ev{position:relative;height:340px;margin-bottom:16px}
.ph.ev img{object-fit:cover;object-position:center 25%}
.ph.feed{position:relative;min-height:420px}

/* ---------- services with imagery ---------- */
.svc-grid-img{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr) minmax(0,.9fr);gap:40px;align-items:start}
.svc-fig{position:relative;min-height:260px;border:1px solid var(--color-divider)}
.svc-grid-img .svc-n{display:block;font-size:32px;margin-bottom:10px}
.svc-grid-img .svc-body h2{margin-bottom:0}

/* ---------- tabs ---------- */
.tabs{display:flex;gap:12px;margin-bottom:30px;flex-wrap:wrap}
.tab{font:600 12px/1 var(--font-body);letter-spacing:.09em;text-transform:uppercase;background:transparent;
  border:2px solid var(--color-divider);padding:14px 20px;min-height:46px;cursor:pointer;color:var(--color-neutral-700)}
.tab:hover{color:#1b5e20;border-color:#1b5e20}
.tab.is-on{color:#fff;border-color:#1b5e20;background:#1b5e20}
.tabpanel[hidden]{display:none}
.news-lead{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:start;margin-bottom:40px}
.news-lead-stack{grid-template-columns:1fr;gap:28px}
.news-lead-stack .li-embed{width:100%}
.news-lead-stack .body{text-align:justify;max-width:none}
.li-embed{border:1px solid var(--color-divider);padding:0}
.li-embed .note{margin:0;max-width:none;padding:14px 16px;border-top:1px solid var(--color-divider);background:var(--color-surface)}
.event h3{font-size:16px}

@media (max-width:1000px){
  .founding-grid,.news-lead{grid-template-columns:1fr;gap:32px}
  .vm-grid{grid-template-columns:1fr}
  .sector-grid{grid-template-columns:repeat(2,1fr)}
  .svc-grid-img{grid-template-columns:1fr;gap:22px}
  .svc-fig{min-height:220px}
}
@media (max-width:720px){
  .story li{grid-template-columns:1fr;gap:8px}
  .sector-grid{grid-template-columns:repeat(2,1fr)}
  .tab{padding:12px 12px;font-size:11px}
}

/* ---------- box tint: boxes sit a step off the page ground ---------- */
:root{ --color-box:#ebede4; --color-box-alt:#f4f5f2; }
.cell,.stat,.fig,.sector,.steps li,.timeline li,.vm,.cta-cell,.logo-cell,.direct-cell{background:var(--color-box)}
.surface .cell,.surface .stat,.surface .fig,.surface .sector,.surface .steps li,
.surface .timeline li,.surface .vm,.surface .cta-cell,.surface .logo-cell,.surface .direct-cell{background:var(--color-box-alt)}
.qc,.li-embed,.msform,.founding-fig,.svc-fig,.hero-fig,.tablewrap{background:var(--color-box)}
.surface .qc,.surface .li-embed,.surface .msform,.surface .founding-fig{background:var(--color-box-alt)}
.ph{background:var(--color-neutral-300)}
.direct{background:var(--color-box)}
.surface .direct{background:var(--color-box-alt)}

/* ---------- hero and stat row run to the viewport edges ---------- */
.hero .wrap.hero-grid,.hero .hero-grid{max-width:none;padding-right:0}
.hero-copy{padding-left:var(--gutter);padding-right:48px}
.stats{padding:0}
.stats .wrap{padding-top:0;padding-bottom:0}
.stats .stat-grid{border-left:0;border-right:0;border-top:0}
.stats .stat{padding:30px 24px}
@media (max-width:1000px){
  .hero-copy{padding-left:var(--gutter);padding-right:var(--gutter)}
}

/* text inset tracks the 1320px content column, not the viewport edge */
:root{
  --gutter:max(40px, calc((100vw - 1320px) / 2 + 40px));
}
@media (max-width:720px){
  :root{ --gutter:max(20px, calc((100vw - 1320px) / 2 + 20px)); }
}

/* ---------- header: CTA is always present, nav gives way first ---------- */
.head-inner{flex-wrap:nowrap;column-gap:14px;row-gap:8px}
.brand{flex:0 1 auto;min-width:0}
.brand img{flex:none}
.head-cta{flex:none;order:3;white-space:nowrap}
.navtoggle{flex:none}
@media (min-width:1081px){
  .mainnav{flex:1 1 auto;min-width:0;justify-content:flex-end}
}

@media (max-width:1400px){
  .mainnav a{padding-left:9px;padding-right:9px;letter-spacing:.04em}
}
@media (max-width:1240px){
  .mainnav a{padding-left:7px;padding-right:7px;font-size:11.5px}
  .head-cta{font-size:11px;padding:10px 12px}
}
@media (max-width:1080px){
  /* nav folds into the drawer; the CTA always follows the nav content */
  .navtoggle{order:1;margin-left:auto}
  .mainnav{order:2;flex:1 0 100%;justify-content:flex-start}
  .head-cta{order:3;display:inline-flex;font-size:11px;padding:11px 14px}
  .mainnav.is-open ~ .head-cta{flex:1 0 100%;justify-content:center;margin-top:4px}
}
@media (max-width:560px){
  .head-cta{font-size:10.5px;padding:11px 11px;letter-spacing:.03em}
  .navtoggle{padding:10px 12px}
  .brand img{height:32px}
}
@media (max-width:400px){
  .head-cta{padding:11px 9px}
}

/* header never wraps above the drawer breakpoint — the nav absorbs the squeeze */
.head-inner{flex-wrap:nowrap}
@media (min-width:1081px){
  .mainnav{flex:1 1 auto;min-width:0;flex-wrap:nowrap;overflow:visible}
}
.mainnav a{white-space:nowrap}
@media (max-width:1500px){ .brand-tag,.brand-rule{display:none} }
@media (max-width:1160px){ .mainnav a{padding-left:6px;padding-right:6px;font-size:11px;letter-spacing:.02em} }
@media (max-width:1080px){ .head-inner{flex-wrap:wrap} }

/* brand never collides with the nav — the tagline is the first thing to go */
.brand{min-width:0;overflow:hidden}
.brand-tag{min-width:0;overflow:hidden;text-overflow:ellipsis}
@media (max-width:1700px){ .brand-tag,.brand-rule{display:none} }

/* one left edge everywhere: .wrap derives its inset from the same viewport gutter */
.wrap{max-width:none;margin:0;padding-left:var(--gutter);padding-right:var(--gutter)}
.stats .wrap{padding-left:var(--gutter);padding-right:var(--gutter)}

/* the hero grid is a bare container — .hero-copy owns the only inset */
.hero .wrap.hero-grid,.hero .hero-grid{padding-left:0;padding-right:0;max-width:none;margin:0}

/* statistics band is white edge to edge */
.stats{background:#fff}
.stats .stat{background:#fff}

/* statistic figures lift off the white with a layered drop shadow */
.stats .stat-n{
  color:var(--color-accent);
  text-shadow:0 3px 8px rgba(35,38,32,.16), 0 1px 2px rgba(35,38,32,.10);
}

/* service cards */
.svc-card{gap:9px}
.svc-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.svc-card h3{font-size:18px}
.svc-card .more{margin-top:auto;padding-top:12px}
.chip-tag.region{background:var(--color-accent);border-color:var(--color-accent);color:#fff}

/* ---------- region dropdown ---------- */
.region{position:relative;border:1px solid rgba(255,255,255,.25);flex:none}
.region-trigger{display:inline-flex;align-items:center;gap:9px;font:600 11px/1 var(--font-body);letter-spacing:.1em;
  text-transform:uppercase;background:transparent;color:var(--color-neutral-200);border:0;padding:8px 12px;cursor:pointer;min-height:34px;width:100%}
.region-trigger .flag,.region-opt .flag{display:block;flex:none;width:22px;height:11px;outline:1px solid rgba(255,255,255,.35)}
.region-trigger:hover{background:rgba(255,255,255,.12);color:#fff}
.region-caret{margin-left:2px;opacity:.7;transition:transform .15s}
.region[data-open] .region-trigger{background:#fff;color:var(--color-neutral-900)}
.region[data-open] .region-trigger .flag{outline-color:rgba(0,0,0,.25)}
.region[data-open] .region-caret{transform:rotate(180deg)}
.region-menu{position:absolute;top:100%;left:-1px;right:-1px;z-index:60;margin:1px 0 0;padding:0;list-style:none;
  background:#fff;border:1px solid var(--color-neutral-900);box-shadow:var(--shadow-md);min-width:176px}
.region-opt{display:flex;align-items:center;gap:9px;padding:9px 12px;cursor:pointer;
  font:600 11px/1 var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--color-neutral-900);white-space:nowrap}
.region-opt .flag{outline-color:rgba(0,0,0,.25)}
.region-opt + .region-opt{border-top:1px solid var(--color-neutral-200)}
.region-opt:hover,.region-opt[data-active]{background:var(--color-neutral-100)}
.region-opt.is-on{background:var(--color-neutral-900);color:#fff}
.region-opt.is-on .flag{outline-color:rgba(255,255,255,.5)}
.region-trigger:focus-visible{outline:2px solid #fff;outline-offset:-2px}
@media (max-width:640px){ .region-trigger{padding:8px 10px;gap:7px;font-size:10px} }

/* ---------- typographic alignment pass ---------- */
/* one vertical rhythm: every text block starts flush left and stacks on the same scale */
.kicker{margin:0 0 16px}
.lede{line-height:1.6;margin-top:18px}
.body,.note,.cell p,.foot-blurb,.foot-p,.stat-s{text-wrap:pretty}
h1,h2,h3,h4{text-wrap:balance;overflow-wrap:break-word}
.sec-head{align-items:flex-end;margin-bottom:32px}
.sec-head > div > .kicker{margin-bottom:12px}
.sec-head h2{margin:0}
.cell{align-content:start}
.cell h3{margin:0;line-height:1.25}
.cell p{margin:0}
.stat{justify-content:flex-start;gap:8px}
.stat-l{margin:0}
.stat-s{margin:0}
.fig-l{text-wrap:pretty}
/* long addresses and email links wrap instead of pushing a column wide */
.foot-addr,.site-foot a,.utilbar-contact a{overflow-wrap:break-word}
.foot-grid{align-items:start;row-gap:44px}
.foot-blurb{margin-top:14px}
.foot-addr{margin-top:14px}
.foot-links{margin:0;padding:0}
@media (max-width:1000px){
  .foot-grid{grid-template-columns:1fr 1fr;row-gap:38px}
}
@media (max-width:640px){
  .foot-grid{grid-template-columns:1fr;row-gap:32px}
  .sec-head{align-items:flex-start}
}

/* ---------- heading word spacing & no clipped text ---------- */
/* the display faces sit on tight tracking; give the words their air back */
h1,h2,h3,h4,.stat-n,.fig-n{word-spacing:.06em}
h1,h2{letter-spacing:-.025em}
h1{line-height:1.06;padding-bottom:.06em}
h2{line-height:1.1;padding-bottom:.05em}
h3{letter-spacing:-.01em;word-spacing:.05em}
.hero h1,.pagehead h1{overflow-wrap:break-word;hyphens:none}
.poster h2,.cta-panel h2{line-height:1.08;padding-bottom:.06em}
/* uppercase labels: tracking already wide, so keep word gaps proportional */
.kicker,.num,.stat-l,.fig-l,.filter-lbl,.chip,.more,.foot-bar,.site-foot h3{word-spacing:.12em}
/* nothing may clip its descenders */
h1,h2,h3,h4,.stat-n,.fig-n,.kicker{overflow:visible}

/* ---------- ruled grids end where the content ends ---------- */
/* rules are drawn per cell, so an incomplete last row leaves the ground bare
   and a new person can be added at any time without a grey gap appearing */
.grid3.ruled,.grid4.ruled{background:transparent;border:0;gap:1px}
.grid3.ruled > *,.grid4.ruled > *{box-shadow:0 0 0 1px var(--color-divider)}
.stat-grid{background:transparent;border:0}
.stat-grid > .stat{box-shadow:0 0 0 1px var(--color-divider)}
.stats .stat-grid > .stat{box-shadow:0 1px 0 var(--color-divider), 1px 0 0 var(--color-divider), -1px 0 0 var(--color-divider)}

/* one heading-to-block gap site-wide */
h2 + .grid3,h2 + .grid4,h2 + .stat-grid,h2 + .tablewrap,h2 + .timeline,
h2 + .steps,h2 + .sector-grid,h2 + .logo-row,h2 + .filters,h2 + .filterbar,
h2 + .two,h2 + .cta-panel,h2 + .body,h2 + .lede,h2 + .note{margin-top:28px}
h3 + .grid3,h3 + .grid4,h3 + .tablewrap{margin-top:20px}

/* ---------- client logo row ---------- */
.logo-row{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:transparent}
.logo-row > .logo-cell{box-shadow:0 0 0 1px var(--color-divider)}
.logo-cell{display:flex;align-items:center;justify-content:center;height:122px;padding:18px 16px;min-width:0}
.logo-name{font:600 12px/1.3 var(--font-body);letter-spacing:.1em;text-transform:uppercase;
  color:var(--color-neutral-700);text-align:center;word-spacing:.12em}
.logos-note{margin-top:18px}
.logos-note code{font-size:12px;background:var(--color-neutral-100);padding:1px 5px}
@media (max-width:1000px){ .logo-row{grid-template-columns:repeat(3,1fr)} }
@media (max-width:560px){ .logo-row{grid-template-columns:repeat(2,1fr)} .logo-cell{height:88px}  }

/* ---------- trusted-by band ---------- */
.band.logos{background:var(--color-bg);border-top:1px solid var(--color-divider);border-bottom:1px solid var(--color-divider)}
.band.logos .logos-h{color:var(--color-neutral-900)}
.band.logos .logo-row{background:transparent;gap:18px}
.band.logos .logo-cell{background:var(--color-box);border:1px solid color-mix(in srgb, #201e1d 10%, transparent);
  box-shadow:0 1px 2px rgba(35,38,32,.06), 0 6px 16px rgba(35,38,32,.08);transition:box-shadow .18s, transform .18s}
.band.logos .logo-cell:hover{box-shadow:0 2px 4px rgba(35,38,32,.09), 0 12px 26px rgba(35,38,32,.12);transform:translateY(-1px)}
@media (max-width:1000px){ .band.logos .logo-row{gap:14px} }

/* ---------- logo sizing & position ----------
   Each mark's size and nudge live in its own inline style on the <img>:
     --logo-h   rendered height
     --logo-w   maximum width (the mark shrinks to fit if it is wider)
     --logo-dy  vertical nudge, negative moves it up
     --logo-dx  horizontal nudge, negative moves it left
   Edit those numbers per logo; nothing else needs to change.            */
.client-logo{display:block;object-fit:contain;object-position:center bottom;
  height:var(--logo-h,34px);width:auto;max-width:min(var(--logo-w,150px),100%);
  transform:translate(var(--logo-dx,0px),var(--logo-dy,0px))}
.band.logos .logo-cell{align-items:flex-end;justify-content:center;padding:20px 18px 26px}
@media (max-width:560px){
  .client-logo{height:calc(var(--logo-h,34px) * .84);max-width:min(calc(var(--logo-w,150px) * .84),100%)}
}

/* ---------- quote band with paired photograph ---------- */
.band.quote .quote-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
.quote-copy blockquote{margin:0}
.quote-fig{margin:0;position:relative}
/* the photograph is bedded into the band: grayscale, tinted to the brand green,
   and faded at its left edge so it reads as part of the surface, not a pasted box */
.quote-fig{aspect-ratio:5 / 4;max-height:340px}
.quote-ph{position:relative;inset:auto;aspect-ratio:auto;height:100%;width:100%;
  -webkit-mask-image:linear-gradient(90deg, transparent 0, #000 22%, #000 100%);
          mask-image:linear-gradient(90deg, transparent 0, #000 22%, #000 100%)}
.quote-fig::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(90deg, var(--color-bg) 0%, transparent 26%),
             linear-gradient(0deg, color-mix(in srgb, var(--color-accent) 16%, transparent), transparent 62%);
  mix-blend-mode:multiply}
@media (max-width:900px){
  .band.quote .quote-grid{grid-template-columns:1fr;gap:28px}
  .quote-ph{aspect-ratio:16 / 9;-webkit-mask-image:none;mask-image:none}
  .quote-fig::after{background:linear-gradient(0deg, color-mix(in srgb, var(--color-accent) 14%, transparent), transparent 60%)}
}

/* the graded photograph is bedded into the quote band, not framed on it */
.quote-img{display:block;width:100%;height:100%;object-fit:cover;object-position:70% 50%;
  -webkit-mask-image:linear-gradient(90deg, transparent 0, rgba(0,0,0,.65) 12%, #000 34%, #000 100%);
          mask-image:linear-gradient(90deg, transparent 0, rgba(0,0,0,.65) 12%, #000 34%, #000 100%)}
@media (max-width:900px){
  .quote-img{-webkit-mask-image:linear-gradient(180deg, transparent 0, #000 18%, #000 100%);
                     mask-image:linear-gradient(180deg, transparent 0, #000 18%, #000 100%)}
}

/* ---------- team portraits & bio pages ---------- */
a.person{text-decoration:none;color:inherit;transition:box-shadow .15s ease}
a.person:hover{box-shadow:0 0 0 1px var(--color-accent)}
a.person:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}
.pt{position:relative;display:block;width:100%;aspect-ratio:1/1;background:#fff;border:1px solid var(--color-divider);overflow:hidden;margin-bottom:14px}
.pt img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 12%}
.pt.noimg{background:var(--color-neutral-200);display:flex;align-items:center;justify-content:center}
.pt.noimg::after{content:attr(data-initials);font:700 28px/1 var(--font-heading);letter-spacing:.02em;color:var(--color-neutral-600)}
.pcred{display:block;font:600 11px/1.3 var(--font-body);letter-spacing:.06em;text-transform:uppercase;color:var(--color-neutral-700);margin-top:4px}
a.person .more{margin-top:auto;padding-top:6px;color:var(--color-accent)}
.crumb{font:600 12px/1 var(--font-body);letter-spacing:.08em;text-transform:uppercase;margin:0 0 26px}
.crumb a{text-decoration:none;color:var(--color-neutral-700)}
.crumb a:hover{color:var(--color-accent)}
.bio-band{padding-top:44px}
.bio-grid{display:grid;grid-template-columns:340px 1fr;gap:48px;align-items:start}
.bio-pt{margin-bottom:0}
.bio-grid h1{font-size:38px;margin:0}
.bio-cred{display:block;font:600 12px/1.4 var(--font-body);letter-spacing:.1em;text-transform:uppercase;color:var(--color-neutral-700);margin-top:10px}
.bio-grid .lede{margin-top:12px}
.bio-meta{margin:28px 0 0;border-top:2px solid var(--color-divider)}
.bio-row{display:grid;grid-template-columns:150px 1fr;gap:20px;padding:12px 0;border-bottom:1px solid var(--color-divider)}
.bio-row dt{font:600 11px/1.5 var(--font-body);letter-spacing:.1em;text-transform:uppercase;color:var(--color-neutral-700)}
.bio-row dd{margin:0;font-size:15px;line-height:1.55;color:var(--color-neutral-900)}
.bio-about{margin-top:32px}
.bio-about p{text-align:justify;text-justify:inter-word;hyphens:auto;margin:0 0 18px}
.bio-about p:last-child{margin-bottom:0}
.bio-todo{color:var(--color-neutral-700)}
.bio-nav{display:flex;justify-content:space-between;gap:20px;margin-top:52px;border-top:2px solid var(--color-divider);padding-top:20px}
.bio-nav a{text-decoration:none;font:700 15px/1.3 var(--font-heading);color:var(--color-neutral-900)}
.bio-nav a:hover{color:var(--color-accent)}
.bio-nav span{display:block;font:600 11px/1 var(--font-body);letter-spacing:.1em;text-transform:uppercase;color:var(--color-neutral-700);margin-bottom:6px}
.bio-next{text-align:right}
@media (max-width:860px){.bio-grid{grid-template-columns:1fr;gap:28px}.bio-pt{max-width:320px}.bio-grid h1{font-size:30px}.bio-row{grid-template-columns:1fr;gap:2px}}

/* 6-up team variant (preview) */
.grid6{display:grid;grid-template-columns:repeat(6,1fr);gap:1px}
.grid6.ruled{background:transparent;border:0}
.grid6.ruled > *{box-shadow:0 0 0 1px var(--color-divider)}
.grid6 .cell{padding:16px 14px;gap:6px}
.grid6 .person h3{font-size:13px;line-height:1.25}
.grid6 .pcred{font-size:9px;letter-spacing:.04em}
.grid6 .num{font-size:12px}
@media (max-width:780px){.grid6{grid-template-columns:repeat(3,1fr)}}
@media (max-width:640px){.grid6{grid-template-columns:repeat(2,1fr)}}

/* 5-up team variant with circular portraits (preview) */
.grid5{display:grid;grid-template-columns:repeat(5,1fr);gap:1px}
.grid5.ruled{background:transparent;border:0}
.grid5.ruled > *{box-shadow:0 0 0 1px var(--color-divider)}
.grid5 .cell{padding:22px 18px;gap:8px;align-items:center;text-align:center}
.grid5 .pt{border-radius:50%;width:78%;margin:0 auto 14px}
.grid5 .person h3{font-size:14px;line-height:1.3}
.grid5 .pcred{font-size:10px}
.grid5 .num{font-size:13px}
.grid5 a.person .more{padding-top:8px}
@media (max-width:820px){.grid5{grid-template-columns:repeat(3,1fr)}}
@media (max-width:640px){.grid5{grid-template-columns:repeat(2,1fr)}}

/* 4-up spaced team variant (preview) */
.grid4-airy{display:grid;grid-template-columns:repeat(4,1fr);gap:28px}
.grid4-airy > *{box-shadow:0 0 0 1px var(--color-divider)}
.grid4-airy .cell{padding:24px 20px;gap:8px;align-items:center;text-align:center}
.grid4-airy .pt{border-radius:50%;width:80%;margin:0 auto 14px}
.grid4-airy .person h3{font-size:15px;line-height:1.3}
.grid4-airy .num{font-size:13px}
@media (max-width:860px){.grid4-airy{grid-template-columns:repeat(3,1fr);gap:20px}}
@media (max-width:640px){.grid4-airy{grid-template-columns:repeat(2,1fr);gap:16px}}

/* 4-up professional team cards (preview) */
.grid4-pro{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.grid4-pro .cell{background:#fff;border:1px solid var(--color-divider);box-shadow:none;padding:0 22px 22px;gap:0;align-items:center;text-align:center;position:relative;overflow:hidden;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}
.grid4-pro a.person::before{content:"";position:absolute;z-index:0;inset:0 0 auto;height:86px;background:var(--color-neutral-100)}
.grid4-pro a.person:hover{box-shadow:0 6px 22px rgba(32,30,29,.10);border-color:var(--color-accent);transform:translateY(-2px)}
.grid4-pro .pt{position:relative;z-index:1;width:168px;height:168px;aspect-ratio:auto;border-radius:50%;border:3px solid #fff;box-shadow:0 0 0 1px var(--color-divider);margin:30px auto 14px}
.grid4-pro .person h3{position:relative;z-index:1;font-size:16px;line-height:1.3;margin:0}
.grid4-pro .pcred{margin-top:5px;font-size:10px;color:var(--color-neutral-600)}
.grid4-pro .num{margin-top:8px;font-size:13px;line-height:1.4;color:var(--color-text);text-transform:none;letter-spacing:0;font-weight:500}
.grid4-pro .meta{margin-top:6px;font-size:12px;color:var(--color-neutral-600)}
.grid4-pro a.person .more{margin-top:auto;padding-top:14px;width:100%;border-top:1px solid var(--color-divider);color:var(--color-accent);font-size:11px}
@media (max-width:860px){.grid4-pro{grid-template-columns:repeat(3,1fr);gap:18px}}
@media (max-width:640px){.grid4-pro{grid-template-columns:repeat(2,1fr);gap:14px}}

/* bio profile theme */
.bio-band .bio-grid{position:relative;background:#fff;border:1px solid var(--color-divider);grid-template-columns:240px 1fr;gap:44px;padding:0 40px 40px;overflow:hidden}
.bio-band .bio-grid::before{content:"";position:absolute;z-index:0;inset:0 0 auto;height:124px;background:var(--color-neutral-100)}
.bio-band .bio-pt{position:relative;z-index:1;width:200px;height:200px;aspect-ratio:auto;border-radius:50%;border:4px solid #fff;box-shadow:0 0 0 1px var(--color-divider);margin:52px 0 0;max-width:none}
.bio-band .bio-grid > div:last-child{position:relative;z-index:1;padding-top:148px}
.bio-band .bio-grid h1{font-size:34px}
.bio-band .bio-meta{margin-top:24px}
.bio-band .cta-row{margin-top:28px}
.bio-band .bio-nav{margin-top:36px;border-top:1px solid var(--color-divider)}
@media (max-width:860px){
  .bio-band .bio-grid{grid-template-columns:1fr;gap:18px;padding:0 22px 28px;justify-items:start}
  .bio-band .bio-grid > div:last-child{padding-top:0}
  .bio-band .bio-pt{width:150px;height:150px;margin-top:44px}
}

/* CMS-authored content: editors change words and images only — type is locked to the
   site's own scale, so pasted or rich-text markup can never change font or size */
.prose [style], .prose font, .cell [style], .bio-about [style], .bio-meta [style],
.svc-list [style], .lede [style], .body [style], .num[style], .meta[style]{
  font-family:inherit !important;font-size:inherit !important;line-height:inherit !important;
  font-weight:inherit !important;letter-spacing:inherit !important;color:inherit !important
}
.prose h1,.prose h2,.prose h3,.prose p,.prose li{font-family:inherit}

/* ---------- projects: sector intro, blurb, capability tags, see-all ---------- */
.sector-intro{max-width:74ch;margin:-4px 0 22px;font-size:15px;line-height:1.62;color:var(--color-neutral-800);text-wrap:pretty}
.proj-blurb{font-size:14px;line-height:1.6;color:var(--color-neutral-800);text-wrap:pretty}
.proj-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:14px;border-top:1px solid var(--color-divider)}
.proj-tags span{font:600 10px/1 var(--font-body);letter-spacing:.08em;text-transform:uppercase;
  padding:6px 8px;border:1px solid var(--color-divider);color:var(--color-neutral-700)}
.cell[hidden],.proj[hidden],.sector-intro[hidden]{display:none}
.more-wrap{display:flex;justify-content:flex-start;margin-top:28px}
.more-wrap[hidden]{display:none}

/* ---------- projects: separated cards ---------- */
#projgrid{gap:26px;background:transparent;border:0}
#projgrid > .proj{box-shadow:none;border:1px solid var(--color-divider);background:var(--color-box);
  padding:0;gap:0;overflow:hidden}
#projgrid > .proj .ph.sm{height:210px;margin:0;border:0;border-bottom:1px solid var(--color-divider)}
#projgrid > .proj > .chips{padding:22px 22px 0}
#projgrid > .proj > h3{padding:14px 22px 0;font-size:19px;line-height:1.24}
#projgrid > .proj > .meta{padding:8px 22px 0}
#projgrid > .proj > .proj-blurb{padding:14px 22px 0}
#projgrid > .proj > .proj-tags{margin:22px 22px 0;margin-top:auto;padding:16px 0 22px;border-top:1px solid var(--color-divider);border-bottom:0}
@media (max-width:860px){#projgrid{gap:18px}}

/* projects grid: card palette per approved layout */
#projgrid{--proj-line:var(--color-neutral-300);--proj-green:var(--color-accent);--color-card:#fff}
#projgrid > .proj{background:var(--color-card);border-color:var(--proj-line)}
#projgrid > .proj .ph.sm{border-bottom-color:var(--proj-line)}
#projgrid > .proj .chip-tag{background:var(--proj-green);border-color:var(--proj-green);color:var(--color-card)}
#projgrid > .proj .chip-tag.year{background:var(--color-card);border-color:var(--proj-line);color:var(--color-neutral-700)}
#projgrid > .proj > h3{color:var(--color-text)}
#projgrid > .proj > .meta{color:var(--color-neutral-600)!important}
#projgrid > .proj > .proj-blurb{color:var(--color-neutral-800)}
#projgrid > .proj > .proj-tags{border-top-color:var(--proj-line)}
#projgrid > .proj > .proj-tags span{border-color:var(--proj-line);color:var(--proj-green)}

/* sector intro spans exactly the sector chip row, justified */
.sector-block{display:flex;flex-direction:column;gap:14px;align-self:flex-start;width:fit-content;max-width:100%}
.sector-intro{max-width:none;margin:0;text-align:justify;text-justify:inter-word;text-wrap:wrap;hyphens:auto}

/* justified body copy */
#projgrid > .proj > .proj-blurb{text-align:justify;text-justify:inter-word;hyphens:auto}

/* projects hero lede: full-measure justified */
.pagehead .lede.justify{max-width:none;text-align:justify;text-justify:inter-word;hyphens:auto}

/* justified two-column body copy on projects */
.two-col .body.justify{text-align:justify;text-justify:inter-word;hyphens:auto}

/* pagehead: heading fills the measure and wraps by viewport; lede runs full width justified */
.pagehead h1{text-wrap:wrap}

/* founding story: full-width image on top, justified copy below */
.founding-grid.stacked{grid-template-columns:1fr;gap:36px}
.founding-grid.stacked .founding-fig{width:100%;min-height:clamp(260px,38vw,480px)}
.founding-grid.stacked .founding-copy{columns:2;column-gap:48px}
.founding-grid.stacked .founding-copy .body{max-width:none;text-align:justify;text-justify:inter-word;hyphens:auto;margin-top:0;margin-bottom:18px}
.founding-grid.stacked .founding-copy .body:last-child{margin-bottom:0}
@media (max-width:1000px){ .founding-grid.stacked .founding-copy{columns:1} }

/* about — what we do: justified copy, image vertically centered with text */
.two-col.justify-copy{align-items:stretch}
.two-col.justify-copy .body{max-width:none;text-align:justify;text-justify:inter-word;hyphens:auto}
.two-col.justify-copy .hero-fig{align-self:stretch;min-height:0;height:auto}

/* ---------- site-wide boxes: projects-page card format (white, neutral-300 line, separated) ---------- */
:root{--card-line:var(--color-neutral-300)}
.grid3.ruled,.grid4.ruled,.stat-grid,.sector-grid,.steps,.timeline,.vm-grid,.cta-panel{gap:26px;background:transparent;border:0}
.grid3.ruled > *,.grid4.ruled > *,.stat-grid > .stat{box-shadow:none}
.stats .stat-grid > .stat{box-shadow:none}
.grid3.ruled > *,.grid4.ruled > *,.stat,.sector,.steps li,.timeline li,.vm,.cta-cell{background:#fff;border:1px solid var(--card-line)}
.surface .cell,.surface .stat,.surface .sector,.surface .steps li,.surface .timeline li,.surface .vm,.surface .cta-cell{background:#fff}
.grid3.ruled .chip-tag,.grid4.ruled .chip-tag{background:var(--color-accent);border-color:var(--color-accent);color:#fff}
.grid3.ruled .chip-tag.year,.grid4.ruled .chip-tag.year{background:#fff;border-color:var(--card-line);color:var(--color-neutral-700)}
.cell .figs{background:transparent;border-color:var(--card-line)}
.cell .fig{background:#fff}
@media (max-width:860px){.grid3.ruled,.grid4.ruled,.stat-grid,.sector-grid,.steps,.timeline,.vm-grid,.cta-panel{gap:18px}}

/* sector cards: full-bleed image band, projects-card format */
.sector{padding:0;gap:0;overflow:hidden}
.sector .ph.sq{max-width:100%;aspect-ratio:16/10;border:0;border-bottom:1px solid var(--card-line)}
.sector span{padding:16px 18px}
.ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}

.what-fig{width:100%;border:1px solid var(--card-line);align-self:center}
.what-fig img{display:block;width:100%;height:auto}

/* about — what we do: text left, larger uncropped image right */
.two-col.what-grid{grid-template-columns:.95fr 1.05fr;gap:44px;align-items:center}
.two-col.what-grid .body{max-width:none;text-align:justify;text-justify:inter-word;hyphens:auto}
@media (max-width:1000px){ .two-col.what-grid{grid-template-columns:1fr} }

/* LinkedIn feed preview card */
.li-card{display:flex;flex-direction:column;gap:14px;padding:24px;background:#fff;border:1px solid var(--card-line);text-decoration:none;color:var(--color-text)}
.li-card:hover{border-color:var(--color-accent)}
.li-card-head{display:flex;gap:12px;align-items:center;font-size:14px;line-height:1.35}
.li-mark{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:var(--color-text);color:#fff;font:700 18px/1 var(--font-heading);flex:none}
.li-sub{color:var(--color-neutral-600);font-size:12.5px}
.li-card-body{font-size:14px;line-height:1.55;color:var(--color-neutral-700)}
.li-card-cta{font:600 12px/1 var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--color-accent)}

/* news: justified card copy */
.post p,.event p,.life p,.tabpanel .cell p{text-align:justify;text-justify:inter-word;hyphens:auto}

/* funding: programme logos shown contained, not cropped */
.logo-fill{background:#fff}
.logo-fill::after,.logo-fill::before{content:none}
.logo-fill img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;padding:40px 56px;box-sizing:border-box;z-index:1}

/* hide SociableKIT branding link */
a[href*="sociablekit.com"],.sk_branding,.sk-branding,.tutorial_link{display:none!important;visibility:hidden!important;height:0!important;overflow:hidden!important;padding:0!important;margin:0!important;font-size:0!important}
.li-embed .sk-branding,.li-embed .sk_branding,.li-embed [class*="branding"]{display:none!important}

/* footer disclaimer — full footer width, wraps at every size */
.foot-legal{border-top:1px solid var(--color-neutral-700);padding-top:18px;padding-bottom:14px}
.foot-legal p{width:100%;max-width:none;font-size:12px;line-height:1.75;
  color:var(--color-neutral-500);text-align:justify;overflow-wrap:break-word;hyphens:auto}
.foot-legal + .foot-bar{border-top:0;padding-top:0}
@media (max-width:700px){
  .foot-legal{padding-top:16px}
  .foot-legal p{font-size:11.5px;line-height:1.7}
}

/* home page case-study cards: justified body copy */
.grid3.ruled .proj-blurb{text-align:justify;text-justify:inter-word;text-wrap:pretty;hyphens:auto}
@media (max-width:560px){ .grid3.ruled .proj-blurb{text-align:left;hyphens:manual} }

/* trusted-by: one or two logos sit plain and flush left — no card, no empty grid cells */
.band.logos .logo-row-few{display:flex;grid-template-columns:none;justify-content:flex-start;gap:32px}
.band.logos .logo-row-few .logo-cell{background:transparent;border:0;box-shadow:none;
  height:auto;padding:4px 0;justify-content:flex-start;align-items:center}
.band.logos .logo-row-few .logo-cell:hover{box-shadow:none;transform:none}
.band.logos .logo-row-few .client-logo{transform:none}

/* 3:2 hero figure (RAP page) */
.hero-fig.r32{min-height:0;aspect-ratio:3/2;align-self:center;border-left:1px solid var(--color-divider)}
@media (max-width:860px){.hero-fig.r32{aspect-ratio:3/2;border-left:0;border-top:2px solid var(--color-divider)}}

/* RAP hero keeps the two-column home-page layout down to tablet widths */
@media (min-width:760px){
  .hero .wrap.hero-grid.hero-r32{grid-template-columns:1.3fr .7fr;align-items:center}
  .hero-r32 .hero-copy{padding:64px 40px 64px var(--gutter)}
  .hero-r32 .hero-fig.r32{border-left:1px solid var(--color-divider);border-top:0;min-height:0}
}

/* RAP hero headline holds two authored lines at every width */
.hero-r32 h1{max-width:none;text-wrap:pretty;font-size:clamp(19px,2.1vw,30px);line-height:1.12}

/* single-line poster statement — site poster type size, no vertical dead space */
.band.poster.poster-line{padding:52px 0}
.band.poster.poster-line .poster-in h2{line-height:1.08;margin:0}

/* CTA poster heading holds one line — the button drops below when space is tight */
@media (max-width:1180px){
  .band.poster.poster-oneline .poster-in{row-gap:22px}
  .band.poster.poster-oneline .poster-in h2{flex:1 0 100%;font-size:clamp(24px,3.55vw,46px)}
}

/* RAP page: justified body copy */
@media (min-width:561px){
  .page-rap main > .band p:not(.kicker):not(.pcred):not(.cell p),
  .page-rap main .lede,
  .page-rap main .body{text-align:justify;text-justify:inter-word;hyphens:manual;text-wrap:pretty}
}
/* copy inside boxes stays flush left */
.page-rap main .cell p,.page-rap main .cell .body,.page-rap main .steps li p,
.page-rap main .poster p,.page-rap main .btn,
.page-rap main .steps span{text-align:left!important;hyphens:manual;text-wrap:pretty}
/* phones: everything flush left — justification opens rivers at this measure */
@media (max-width:560px){.page-rap main p,.page-rap main .lede,.page-rap main .body,
  .page-rap main .cell p,.page-rap main .steps li p{text-align:left;hyphens:manual}}

/* RAP page: one paragraph size everywhere */
.page-rap main p:not(.kicker),
.page-rap main .lede,
.page-rap main .body,
.page-rap main .note,
.page-rap main .cell p,
.page-rap main .steps li p,
.page-rap main .svc-list li,
.page-rap main .steps li{font-size:15px;line-height:1.62}
.page-rap main .lede{max-width:60ch}

.page-rap main .btn{font-size:15px;line-height:1.2;letter-spacing:.05em}

.page-rap main .two-col .note + p{margin-top:26px}

/* justification only where the measure supports it — narrow cards read flush left */
.page-rap main .btn,.page-rap main .kicker,.page-rap main .num{text-align:left}

.page-rap main p + .svc-list,
.page-rap main .body + .svc-list{margin-top:28px}

/* breadcrumb strip */
.crumbband{padding:14px 0;border-bottom:1px solid var(--color-divider)}
.crumbs{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;
  font:600 11px/1.4 var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--color-neutral-600)}
.crumbs li+li::before{content:"/";margin-right:8px;color:var(--color-neutral-400)}
.crumbs a{color:var(--color-neutral-700);text-decoration:none}
.crumbs a:hover{color:var(--color-accent-700);text-decoration:underline}

/* RAP hero subhead under the programme-name H1 */

/* RAP hero: full-width single-line H1 above the two-column hero */
/* programme name is the H1, set as the small green label; the promise line is the display H2 */
.page-rap .hero-grid .hero-copy{container-type:inline-size}
.page-rap h1.h1-kicker{font:700 clamp(10px,1.55cqw,13px)/1.4 var(--font-body);letter-spacing:.12em;
  text-transform:uppercase;color:var(--color-accent-700);margin:0 0 16px}
.page-rap h1.h1-kicker .h1-by{font-size:1em;font-weight:700;letter-spacing:.12em}
@container (min-width:460px){.page-rap h1.h1-kicker{white-space:nowrap}}
@container (max-width:459px){.page-rap h1.h1-kicker .h1-by{display:block;margin-top:5px}}
@media (max-width:700px){
  .page-rap h1.h1-kicker{white-space:normal;font-size:10.5px;letter-spacing:.07em}
  .page-rap h1.h1-kicker .h1-by{display:block;margin-top:5px;letter-spacing:.07em}
  .page-rap .hero-strap{padding-top:34px}
}
.page-rap .hero-copy h2.hero-display{font-size:clamp(24px,3.2vw,36px);line-height:1.06;
  letter-spacing:-.028em;color:var(--color-text);margin:0;max-width:none}

/* narrow phones: keep the programme name on its own line */
@media (max-width:400px){
  .page-rap h1.h1-kicker,.page-rap h1.h1-kicker .h1-by{font-size:9.5px;letter-spacing:.04em}
}

/* wider photo column once the copy has room */
@media (min-width:1150px){.hero .wrap.hero-grid.hero-r32{grid-template-columns:1.15fr .85fr}}

/* closing notes run the full content measure, flush to the right margin */
.page-rap main .wrap > .note{max-width:none}

/* single-line authorization statement under the hero lede */
.page-rap main .hero-copy p.rap-only{font:700 15px/1.45 var(--font-body);color:var(--color-accent-700);
  margin-top:20px;padding-top:16px;border-top:2px solid var(--color-divider);text-align:left;max-width:60ch}

/* section intro paragraphs run the full content measure (hero lede keeps its 60ch) */
.page-rap main .wrap > .lede{max-width:none}

/* section intro to card grid: same gap as heading to block */
.lede + .grid3,.lede + .grid4,.lede + .steps,.lede + .tablewrap{margin-top:28px}

/* footer provenance stamp — bottom bar */
.foot-cdn{font:inherit;letter-spacing:inherit;text-transform:inherit;
  color:var(--color-accent-400);white-space:nowrap;margin-left:auto;text-align:right}

/* Programme Criteria: copy sits centred against the taller criteria list */
.page-rap .band.surface .two-col:not(.what-grid){align-items:center}
@media (max-width:1000px){.page-rap .band.surface .two-col:not(.what-grid){align-items:start}}

/* RAP page: tighter vertical rhythm between bands */
.page-rap main .band{padding:44px 0}
@media (max-width:900px){.page-rap main .band{padding:34px 0}}

/* Why Owners Run It Through BES — the one .what-grid block: ratio on the frame itself,
   so the photograph resizes and never crops at any width */
.page-rap .two-col.what-grid{grid-template-columns:1fr 250px;gap:48px;align-items:start}
.page-rap .two-col.what-grid > div:first-child{max-width:none}
.page-rap .what-grid .hero-fig{min-height:0;border-left:0;background:none;
  align-self:start;position:static;width:100%;height:auto;aspect-ratio:auto}
.page-rap .what-grid .hero-fig .ph{position:relative;inset:auto;width:100%;max-width:250px;
  height:auto;aspect-ratio:884 / 1178;border:1px solid var(--card-line);background:var(--color-neutral-200)}
.page-rap .what-grid .hero-fig .ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
@media (max-width:1100px){
  .page-rap .two-col.what-grid{grid-template-columns:1fr 220px;gap:36px}
  .page-rap .what-grid .hero-fig .ph{max-width:220px}
}
@media (max-width:800px){
  .page-rap .two-col.what-grid{grid-template-columns:1fr}
  .page-rap .what-grid .hero-fig{width:100%}
  .page-rap .what-grid .hero-fig .ph{max-width:280px}
}

/* RAP kicker: no dangling separator when the line wraps on phones */
.h1-kicker .h1-sep{opacity:.55}
@media (max-width:560px){
  .h1-kicker .h1-sep{display:none}
  .h1-kicker .h1-by{display:block}
}
