:root {
  --forest: #032f2a;
  --sand: #ece4d4;
  --paper: #fffdf7;
  --cream: #f6f1e7;
  --mint: #77d08a;
  --mint-pale: #dcefdc;
  --accent-green: #62b573;
  --ink: #0b322d;
  --muted: #60716c;
  --line: rgba(6, 61, 53, 0.18);
  --line-light: rgba(255, 255, 255, 0.18);
  --blue: #86b9cc;
  --gold: #c9ad63;
  --orange: #d78658;
  --cocoa: #a27654;
  --shadow: 0 28px 80px rgba(1, 35, 31, 0.12);
  --radius: 3px;
  --font-sans: "Avenir Next", Avenir, "Helvetica Neue", Helvetica, Arial, sans-serif;
  --font-display: "Avenir Next", Avenir, "Helvetica Neue", Helvetica, Arial, sans-serif;
  --shell: min(1280px, calc(100vw - 48px));
  --header-height: 88px;
  --section-spacing: clamp(74px, 8vw, 128px);

  /* Project pages: bottom padding on the hero (which now contains the
     facts table), giving the fade room to complete before "The project"
     appears. Tune live in devtools — no rebuild needed. */
  --project-hero-gap: 18vh;

  /* Six-step background ladder — test, Project Development page only. */
  --ladder-01: #032F2A;
  --ladder-02: #EFEADF;
  --ladder-03: #F4F1E9;
  --ladder-04: #FAF8F2;
  --ladder-05: #FFFFFA;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: var(--forest); }
body { margin: 0; background: var(--paper); color: var(--ink); font-family: var(--font-sans); font-size: 17px; line-height: 1.65; -webkit-font-smoothing: antialiased; }
img, picture { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 0.18em; }
button, input, select, textarea { font: inherit; }
button { color: inherit; }
address { font-style: normal; }
::selection { background: var(--mint); color: var(--forest); }

.shell { width: var(--shell); margin-inline: auto; }
.sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }
.hidden { display: none !important; }
.skip-link { position: fixed; left: 16px; top: 12px; z-index: 9999; transform: translateY(-180%); background: var(--mint); color: var(--forest); padding: 10px 16px; font-weight: 700; }
.skip-link:focus { transform: none; }
.cursor-glow { position: fixed; top: 0; left: 0; width: 420px; height: 420px; border-radius: 50%; background: radial-gradient(circle, rgba(119,208,138,0.32) 0%, rgba(119,208,138,0.14) 40%, rgba(119,208,138,0) 72%); pointer-events: none; z-index: 9999; opacity: 0; transition: opacity 300ms ease; will-change: transform; }

h1, h2, h3, h4 { font-family: var(--font-display); font-weight: 480; line-height: 1.05; letter-spacing: -0.035em; margin: 0; text-wrap: balance; }
h1 { font-size: clamp(3.4rem, 7vw, 7.8rem); }
h2 { font-size: clamp(2.35rem, 4.5vw, 5.2rem); }
h3 { font-size: clamp(1.35rem, 2vw, 2rem); }
p { margin: 0 0 1.2em; }
ul, ol { margin: 0; padding: 0; }

.eyebrow { margin: 0 0 18px; color: #4f8b72; font-size: 0.72rem; font-weight: 750; letter-spacing: 0.18em; line-height: 1.3; text-transform: uppercase; }
.eyebrow-light { color: var(--mint); }

.hero-intro { max-width: 720px; margin: 22px 0 0; font-size: clamp(1.1rem, 1.6vw, 1.35rem); line-height: 1.55; color: rgba(255,255,255,0.78); }
/* Faint hairline at the top of every section, sized to match .shell so it
   lines up consistently everywhere rather than varying with whichever
   inner column it happens to sit next to. A ::before isn't part of
   el.children, so it has no effect on the crossfade's landmark detection. */
.section { position: relative; padding: var(--section-spacing) 0; }
.section::before { content: ""; position: absolute; top: 0; left: 50%; width: var(--shell); height: 1px; background: var(--line); transform: translateX(-50%); }
.section-ivory { background: var(--cream); }
.section-sand { background: var(--sand); }
.section-forest { background: var(--forest); color: white; }
.section-heading { margin-bottom: 51px; }
.section-heading h2 { max-width: 920px; }
.split-heading { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(280px, 0.8fr); align-items: end; gap: 72px; }
.split-heading > :last-child { margin-bottom: 0; }
.split-heading > div:last-child p { color: var(--muted); }
.section-forest .split-heading > div:last-child p { color: rgba(255,255,255,0.72); }
.two-column { display: grid; grid-template-columns: minmax(280px, 0.8fr) minmax(0, 1.2fr); gap: clamp(60px, 9vw, 140px); align-items: start; }
.sticky-copy { position: sticky; top: 130px; }
.sticky-copy h2 { margin-bottom: 22px; }
.sticky-copy p:not(.eyebrow) { color: var(--muted); }
.section-forest .sticky-copy p:not(.eyebrow) { color: rgba(255,255,255,0.72); }

/* Contained dark-green feature panel — sits inside an otherwise light,
   ladder-conforming section, not a full-width section background. The
   section's own data-fg="dark" tells the crossfade script to paint
   descendant headings/eyebrows/body text in ink for the light page around
   the panel; !important keeps panel text light regardless of that. */
.feature-panel { position: relative; width: var(--shell); margin: clamp(48px, 6vw, 80px) auto; padding: clamp(40px, 6vw, 72px); background: #032F2A; border-radius: var(--radius); overflow: hidden; }
.feature-panel::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: radial-gradient(circle at 70% 20%, rgba(119,208,138,0.12), transparent 38%); }
.feature-panel, .feature-panel h1, .feature-panel h2, .feature-panel h3, .feature-panel h4 { color: white !important; }
.feature-panel .eyebrow { color: #62B573 !important; }
.feature-panel p:not(.eyebrow) { color: rgba(255,255,255,0.72) !important; }
.feature-panel .button-dark { background: white; color: var(--forest); border-color: white; }

.feature-panel .process-rail { border-top-color: var(--line-light); }
.feature-panel .process-step { border-bottom-color: var(--line-light); }
.feature-panel .process-step > span { color: #62B573 !important; }

.feature-panel .principle-list { border-top-color: var(--line-light) !important; }
.feature-panel .principle { border-bottom-color: var(--line-light) !important; }
.feature-panel .principle > span { color: #62B573 !important; }

.feature-panel .capability { border-color: var(--line-light); }
.feature-panel .capability-grid { border-color: var(--line-light); }
.feature-panel .capability > span { color: #62B573 !important; }

.feature-panel .project-card-copy .eyebrow { color: #62B573 !important; }
.feature-panel .project-card-copy h3 { color: white !important; }
.feature-panel .project-card-copy > p:not(.eyebrow) { color: rgba(255,255,255,0.68) !important; }
.feature-panel .project-card-metric { border-color: var(--line-light) !important; }
.feature-panel .project-card-metric span { color: rgba(255,255,255,0.55) !important; }
.feature-panel .arrow-link { color: white !important; }

.feature-panel .who-card { background: var(--cream); color: var(--ink); }
.feature-panel .who-card > p:first-child { color: #4f8b72 !important; }
.feature-panel .who-card h3 { color: var(--ink) !important; }
.feature-panel .who-card > p:last-child { color: var(--muted) !important; }

@media (max-width: 620px) {
  .feature-panel { padding: clamp(28px, 8vw, 40px); }
}
.button-row { display: flex; flex-wrap: wrap; align-items: center; gap: 15px; margin-top: 30px; }
.supply-pills { display: flex; flex-wrap: wrap; gap: 10px; list-style: none; margin: 26px 0 0; padding: 0; }
.supply-pills li { padding: 8px 16px; border: 1px solid rgba(255,255,255,0.35); border-radius: 0; font-size: 0.72rem; font-weight: 650; letter-spacing: 0.04em; color: rgba(255,255,255,0.88); }
.center-cta { display: flex; justify-content: center; margin-top: 58px; }

.button { display: inline-flex; min-height: 54px; align-items: center; justify-content: center; border: 1px solid transparent; padding: 13px 24px; text-decoration: none; font-size: 0.78rem; font-weight: 720; letter-spacing: 0.08em; line-height: 1.2; text-transform: uppercase; transition: transform 180ms ease, background 180ms ease, color 180ms ease, border-color 180ms ease; cursor: pointer; }
.button:hover { transform: translateY(-2px); }
.button-small { min-height: 44px; padding: 10px 17px; font-size: 0.67rem; }
.button-mint { background: var(--mint); color: var(--forest); border-color: var(--mint); }
.button-mint:hover { background: #8ce09b; border-color: #8ce09b; }
.button-dark { background: var(--forest); color: white; border-color: var(--forest); }
.button-dark:hover { background: var(--forest); border-color: var(--forest); }
.button-light { background: white; color: var(--forest); border-color: white; }
.button-ghost { color: white; border-color: rgba(255,255,255,0.5); background: transparent; }
.button-ghost:hover { border-color: white; background: rgba(255,255,255,0.08); }
.text-link, .arrow-link { display: inline-flex; align-items: center; gap: 10px; color: var(--forest); font-size: 0.78rem; font-weight: 720; letter-spacing: 0.08em; text-decoration: none; text-transform: uppercase; }
.text-link::after { content: ""; width: 34px; height: 1px; background: currentColor; transition: width 180ms ease; }
.text-link:hover::after { width: 50px; }
.text-link.light, .arrow-link.light { color: white; }
.arrow-link span { transition: transform 180ms ease; }
.arrow-link:hover span { transform: translate(3px,-3px); }

.site-header { position: fixed; z-index: 1000; inset: 0 0 auto; height: var(--header-height); background: linear-gradient(to bottom, rgba(2,34,30,0.72), rgba(2,34,30,0)); color: white; transition: background 220ms ease, height 220ms ease, box-shadow 220ms ease; }
.site-header.is-scrolled { height: 72px; background: rgba(3,47,42,0.97); box-shadow: 0 12px 36px rgba(0,0,0,0.15); backdrop-filter: blur(10px); }
.header-inner { height: 100%; display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.brand { display: block; flex: 0 0 auto; }
.brand img { width: 184px; height: auto; }
.site-nav { display: flex; align-items: center; gap: 28px; }
.site-nav > ul { display: flex; list-style: none; align-items: center; gap: 25px; }
.site-nav > ul > li { position: relative; }
.site-nav .nav-link { position: relative; display: block; padding: 8px 0; font-size: 0.71rem; font-weight: 690; letter-spacing: 0.08em; text-decoration: none; text-transform: uppercase; color: rgba(255,255,255,0.84); border: 0; background: transparent; font-family: inherit; cursor: pointer; }
.site-nav .nav-link::after { content: ""; position: absolute; left: 0; right: 100%; bottom: 2px; height: 1px; background: var(--mint); transition: right 180ms ease; }
.site-nav .nav-link:hover, .site-nav .nav-link[aria-current="page"], .site-nav .nav-link.is-nav-active { color: white; }
.site-nav .nav-link:hover::after, .site-nav .nav-link[aria-current="page"]::after, .site-nav .nav-link.is-nav-active::after { right: 0; }

.nav-item-row { display: flex; align-items: center; gap: 4px; }
.nav-caret { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; padding: 0; border: 0; background: transparent; color: rgba(255,255,255,0.84); cursor: pointer; }
.nav-caret:hover { color: white; }
.nav-caret-icon { display: inline-block; margin-left: 6px; font-size: 0.9em; line-height: 1; transition: transform 160ms ease; }
.nav-caret .nav-caret-icon { margin-left: 0; }
.nav-caret[aria-expanded="true"] .nav-caret-icon, .nav-dropdown-toggle[aria-expanded="true"] .nav-caret-icon { transform: rotate(180deg); }
.nav-caret-icon::before { content: "\25BE"; }

.nav-dropdown { position: absolute; z-index: 40; top: 100%; left: 0; min-width: 250px; margin: 0; padding: 10px; margin-top: 14px; list-style: none; background: var(--forest); border: 1px solid var(--line-light); box-shadow: var(--shadow); opacity: 0; visibility: hidden; transform: translateY(-6px); transition: opacity 160ms ease, transform 160ms ease, visibility 160ms; }
.nav-item.is-open .nav-dropdown { opacity: 1; visibility: visible; transform: none; }
.nav-dropdown li { margin: 0; }
.nav-dropdown a { display: block; padding: 12px 14px; font-size: 0.71rem; font-weight: 690; letter-spacing: 0.08em; text-decoration: none; text-transform: uppercase; color: rgba(255,255,255,0.84); white-space: nowrap; }
.nav-dropdown a:hover, .nav-dropdown a[aria-current="page"] { color: white; }

.menu-toggle { display: none; border: 0; background: transparent; width: 44px; height: 44px; padding: 10px; cursor: pointer; }
.menu-toggle > span:not(.sr-only) { display: block; height: 1px; background: white; margin: 8px 0; transition: transform 180ms ease; }
.menu-toggle[aria-expanded="true"] > span:nth-child(2) { transform: translateY(4.5px) rotate(45deg); }
.menu-toggle[aria-expanded="true"] > span:nth-child(3) { transform: translateY(-4.5px) rotate(-45deg); }

.breadcrumbs { position: absolute; z-index: 10; top: 104px; left: 50%; transform: translateX(-50%); color: rgba(255,255,255,0.68); }
.breadcrumbs ol { display: flex; list-style: none; align-items: center; flex-wrap: wrap; gap: 8px; font-size: 0.68rem; letter-spacing: 0.08em; text-transform: uppercase; }
.breadcrumbs li:not(:last-child)::after { content: "/"; margin-left: 8px; opacity: 0.5; }
.breadcrumbs a { text-decoration: none; }
.page-hero-light + * .breadcrumbs, body:has(.page-hero-light) .breadcrumbs { color: rgba(6,61,53,0.58); }

.home-hero, .page-hero-dark, .project-hero, .contact-hero { background: var(--forest); color: white; }
.home-hero { position: relative; min-height: 100vh; padding: 150px 0 0; overflow: hidden; }
.hero-fade-anchor { position: absolute; left: 0; bottom: 0; width: 1px; height: 1px; }
.home-hero .hero-fade-anchor { bottom: 280px; }
.home-hero::before { content: ""; position: absolute; z-index: 0; inset: 0; pointer-events: none; background: radial-gradient(circle at 25% 25%, rgba(119,208,138,0.12), transparent 38%), linear-gradient(115deg, transparent 60%, rgba(255,255,255,0.025)); }
/* Decorative only: sized larger than the hero and nudged off-centre so it
   bleeds past the composition rather than sitting neatly inside it. Very
   low opacity so it reads as texture, not a picture — it shares the .hero-fade-content
   mechanism via data-fade-opacity, which the script reads as the resting
   opacity to fade down from (see updateHeroFade in site.js). */
.hero-mountain { position: absolute; z-index: 1; inset: -12% -8% -18% -8%; transform: translateY(140px); background-image: url('/images/home/mountain-illustration.png'); background-repeat: no-repeat; background-position: 0% center; background-size: 130%; opacity: 0.05; pointer-events: none; }
.hero-mountain-real {
  position: absolute; z-index: 1; inset: -12% -8% -18% -8%; transform: translateY(140px);
  background-image: url('/images/home/mountain-real.jpg');
  background-image: image-set(url('/images/home/mountain-real.webp') 1x, url('/images/home/mountain-real.jpg') 1x);
  background-repeat: no-repeat; background-position: 0% center; background-size: 130%;
  opacity: 0; pointer-events: none; transition: opacity 260ms ease;
  mask-image: radial-gradient(230px circle at var(--mx, 50%) var(--my, 50%), black 0%, black 35%, transparent 100%);
  -webkit-mask-image: radial-gradient(230px circle at var(--mx, 50%) var(--my, 50%), black 0%, black 35%, transparent 100%);
}
.hero-mountain-real.is-active { opacity: 0.9; }
.home-hero-grid { position: relative; z-index: 2; display: block; }
.home-hero-copy { padding: 55px 0 65px; max-width: 780px; }
.home-hero-copy h1 { max-width: 790px; font-size: clamp(4.3rem, 7vw, 8rem); }
.proof-strip { position: relative; z-index: 2; display: grid; grid-template-columns: repeat(3, 1fr); margin-top: 28px; border-top: 1px solid var(--line-light); }
.proof-strip > div { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 18px; min-height: 116px; padding: 22px 32px; border-right: 1px solid var(--line-light); }
.proof-strip > div:first-child { padding-left: 0; }
.proof-strip > div:last-child { border-right: 0; }
.proof-strip strong { font-size: 2.2rem; font-weight: 450; color: var(--mint); }
.proof-strip span { color: rgba(255,255,255,0.7); font-size: 0.84rem; line-height: 1.4; }

/* Shared by every hero using this base class, so a new page-hero class can
   never again ship without the full-viewport guarantee — see .compact-hero
   below for the one deliberate, documented exception. */
.page-hero { position: relative; padding: 176px 0 96px; min-height: 100vh; display: flex; flex-direction: column; justify-content: center; }
.page-hero-light { background: var(--cream); color: var(--ink); }
.page-hero-dark { color: white; }
.page-hero-dark::after { content: ""; position: absolute; inset: 0; background: radial-gradient(circle at 70% 20%, rgba(119,208,138,0.12), transparent 38%); pointer-events: none; }
.buyer-hero::after { background: radial-gradient(circle at 25% 25%, rgba(119,208,138,0.12), transparent 38%), linear-gradient(115deg, transparent 60%, rgba(255,255,255,0.025)); }
.dev-hero { background: var(--ladder-01); }
.dev-hero .page-hero-grid { align-items: end; row-gap: 30px; column-gap: 80px; }
.dev-hero .page-hero-grid > .hero-copy { grid-column: 1; grid-row: 1; }
.dev-hero .page-hero-grid > .page-hero-aside { grid-column: 2; grid-row: 1; }
.dev-hero .page-hero-grid > .button-row { grid-column: 1; grid-row: 2; margin-top: 0; }
.dev-hero .page-hero-aside { color: rgba(255,255,255,0.78); }
.dev-hero h1 { font-size: clamp(4rem, 8vw, 8.5rem); }
@media (max-width: 900px) {
  .dev-hero .page-hero-grid > .hero-copy { grid-column: 1; grid-row: 1; }
  .dev-hero .page-hero-grid > .page-hero-aside { grid-column: 1; grid-row: 2; }
  .dev-hero .page-hero-grid > .button-row { grid-column: 1; grid-row: 3; }
  .dev-hero .force-break { display: none; }
}
.about-hero .eyebrow { color: var(--accent-green); }
.about-hero .page-hero-aside { margin-top: 26px; color: rgba(255,255,255,0.78); }
.about-hero { overflow: hidden; }
.about-hero-copy { position: relative; z-index: 2; max-width: 900px; }
.about-hero-photo {
  position: absolute; inset: 0; z-index: 0;
  background-image: url('/images/about/hero-photo.jpg');
  background-image: image-set(url('/images/about/hero-photo.webp') 1x, url('/images/about/hero-photo.jpg') 1x);
  background-repeat: no-repeat; background-size: cover; background-position: center 30%;
  filter: grayscale(1); opacity: 0.12; pointer-events: none;
}
.about-hero-photo-color {
  position: absolute; inset: 0; z-index: 0;
  background-image: url('/images/about/hero-photo.jpg');
  background-image: image-set(url('/images/about/hero-photo.webp') 1x, url('/images/about/hero-photo.jpg') 1x);
  background-repeat: no-repeat; background-size: cover; background-position: center 30%;
  opacity: 0; pointer-events: none; transition: opacity 260ms ease;
  mask-image: radial-gradient(220px circle at var(--mx, 50%) var(--my, 50%), black 0%, black 35%, transparent 100%);
  -webkit-mask-image: radial-gradient(220px circle at var(--mx, 50%) var(--my, 50%), black 0%, black 35%, transparent 100%);
}
.about-hero-photo-color.is-active { opacity: 0.9; }
.blog-hero .eyebrow { color: var(--accent-green); }
.contact-hero .eyebrow { color: var(--accent-green); }
.insetting-hero .eyebrow { color: var(--accent-green); }
.emissions-hero .eyebrow { color: var(--accent-green); }
.buyer-hero .eyebrow { color: var(--accent-green); }
.article6-hero .eyebrow { color: var(--accent-green); }
.removal-hero .eyebrow { color: var(--accent-green); }
.projects-hero .page-hero-aside { color: rgba(255,255,255,0.78); }
.page-hero-grid { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(300px, 0.75fr); gap: 80px; align-items: end; }
@media (min-width: 901px) {
  .insetting-hero .page-hero-grid { grid-template-columns: minmax(0, 1.25fr) minmax(300px, 1fr); gap: 50px; }
}
.page-hero h1 { font-size: clamp(3.8rem, 6.5vw, 7.1rem); }
.page-hero-aside { font-size: 1.18rem; color: var(--muted); }
.page-hero-aside p { margin: 0; }
/* Invisible marker pinned near a hero's true bottom edge, so the scroll
   crossfade in site.js — which measures the last visible child of the
   outgoing section — reads close to the section's actual boundary instead
   of its content's edge, which can sit well above it on tall viewports.
   The offset is scoped per hero since how early each one should start
   fading depends on how much empty space that specific hero leaves. */
.team-hero .hero-fade-anchor { bottom: 300px; }
/* Deliberate exception to .page-hero's min-height: 100vh — used only for
   light, non-crossfade utility pages (legal notices, category listings)
   where a full-viewport hero would leave a large empty box above minimal
   content. Not a bug; do not remove without reconsidering those pages. */
.compact-hero { min-height: auto; padding-bottom: 90px; }
.compact-hero h1 { font-size: clamp(3.4rem, 5vw, 5.8rem); }

.project-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 66px 34px; }
.project-grid-featured .project-card:first-child { grid-column: 1 / -1; display: grid; grid-template-columns: 1.35fr 0.65fr; align-items: stretch; }
.project-grid-featured .project-card:first-child .project-card-image { min-height: 610px; }
.project-card { --accent: var(--mint); min-width: 0; }
.project-card-image { position: relative; display: block; min-height: 420px; overflow: hidden; background: var(--forest); }
.project-card-image picture, .project-card-image img { width: 100%; height: 100%; }
.project-card-image img { object-fit: cover; transition: transform 650ms cubic-bezier(.2,.7,.2,1); }
.project-card-image:hover img { transform: scale(1.035); }
.project-card-image::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 55%, rgba(0,0,0,0.35)); }
.project-index { position: absolute; z-index: 2; right: 22px; top: 20px; display: grid; place-items: center; width: 48px; height: 48px; background: var(--accent-green); color: var(--forest); font-size: 0.72rem; font-weight: 760; letter-spacing: 0.08em; }
.project-status-pill { position: absolute; z-index: 2; left: 22px; top: 20px; display: inline-flex; align-items: center; padding: 9px 16px; border-radius: 0; background: var(--mint); color: var(--forest); font-size: 0.66rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
.project-card-copy { padding: 30px 0 0; }
.project-grid-featured .project-card:first-child .project-card-copy { display: flex; flex-direction: column; justify-content: center; padding: 58px; background: var(--forest); color: white; }
.project-card-copy .eyebrow { color: #4f8b72; margin-bottom: 16px; }
.project-grid-featured .project-card:first-child .eyebrow { color: var(--accent); }
.project-card-copy h3 { font-size: clamp(2.15rem, 3.5vw, 4rem); margin-bottom: 8px; }
.project-card-copy h3 a { text-decoration: none; }
.project-card-copy > p:not(.eyebrow) { color: var(--muted); }
.project-grid-featured .project-card:first-child .project-card-copy > p:not(.eyebrow) { color: rgba(255,255,255,0.68); }
.project-card-metric { display: flex; align-items: baseline; flex-wrap: wrap; gap: 11px; margin: 30px 0 28px; padding-top: 24px; border-top: 1px solid var(--line); }
.project-grid-featured .project-card:first-child .project-card-metric { border-color: var(--line-light); }
.project-card-metric strong { color: var(--accent-green); font-size: 1.62rem; font-weight: 520; }
.project-card-metric span { font-size: 0.68rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); }
.project-grid-featured .project-card:first-child .project-card-metric span { color: rgba(255,255,255,0.55); }
.project-grid-featured .project-card:first-child .arrow-link { color: white; }
.compact-project-grid { grid-template-columns: repeat(3, minmax(0,1fr)); }
.compact-project-grid .project-card-image { min-height: 300px; }
.compact-project-grid .project-card-copy h3 { font-size: clamp(1.8rem, 2.5vw, 2.8rem); }

.proof-practice { background: var(--ladder-05); }
.project-archive .project-grid { align-items: stretch; }
.project-archive .project-card { display: flex; flex-direction: column; }
.project-archive .project-card-image { aspect-ratio: 1600 / 1050; min-height: 0; }
.project-archive .project-card-copy { display: flex; flex-direction: column; flex: 1; }
.project-archive .project-card-copy .arrow-link { margin-top: auto; }

.buyer-section { background: #EFEADF; padding-top: calc(var(--section-spacing) + 100px); }
.buyer-section .principle-list { border-top: 1px solid var(--line); }
.principle { display: grid; grid-template-columns: 70px 1fr; gap: 30px; padding: 36px 0; border-bottom: 1px solid var(--line); }
.principle > span { color: var(--accent-green); font-size: 0.72rem; font-weight: 750; letter-spacing: 0.14em; }
.principle h3 { margin-bottom: 12px; color: var(--ink); }
.principle p { margin: 0; color: var(--muted); }
.buyer-section .principle { padding: 46px 0; }
.buyer-section .principle p { max-width: 640px; }

.lifecycle-matters { background: var(--ladder-04); }

.lifecycle-section { background: #F5F2EA; }
.home-projects-featured { background: #F2EDE4; }
.home-insights-featured { background: #FFFFFA; }
.lifecycle-grid { display: grid; grid-template-columns: repeat(5, 1fr); border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.lifecycle-step { min-height: 310px; padding: 28px 25px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.lifecycle-step span { display: inline-block; margin-bottom: 70px; color: var(--accent-green); font-size: 0.7rem; font-weight: 750; letter-spacing: 0.15em; }
.lifecycle-step h3 { margin-bottom: 16px; font-size: 1.45rem; }
.lifecycle-step p { margin: 0; color: var(--muted); font-size: 0.9rem; }

.section-solutions { background: #F8F6F0; }
.section-solutions .eyebrow { color: var(--accent-green); }
.section-solutions .section-heading h2 { color: white; }
.section-solutions .split-heading > p { color: rgba(255,255,255,0.72); }
.service-grid { display: grid; grid-template-columns: repeat(2, 1fr); border-left: 1px solid var(--line-light); border-top: 1px solid var(--line-light); }
.service-card { position: relative; min-height: 330px; padding: 36px; border-right: 1px solid var(--line-light); border-bottom: 1px solid var(--line-light); text-decoration: none; color: white; transition: background 180ms ease, color 180ms ease; }
.service-card > span { display: block; margin-bottom: 70px; color: var(--accent-green); font-size: 0.7rem; font-weight: 750; letter-spacing: 0.15em; transition: color 180ms ease; }
.service-card h3 { max-width: 520px; margin-bottom: 18px; font-size: clamp(2rem, 3vw, 3.5rem); color: white; transition: color 180ms ease; }
.service-card p { max-width: 560px; margin: 0; color: rgba(255,255,255,0.72); transition: color 180ms ease; }
.service-card b { position: absolute; right: 34px; top: 32px; font-weight: 400; }
.service-card:hover { background: var(--cream); color: var(--forest) !important; }
.service-card:hover h3 { color: var(--forest) !important; }
.service-card:hover p { color: var(--forest) !important; }
.service-card:hover > span { color: var(--forest) !important; }

.about-band { background: #FCFAF5; }
.about-band-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(400px, 0.8fr); gap: 90px; align-items: center; }
.about-band-copy h2 { margin-bottom: 28px; }
.about-band-copy > p:not(.eyebrow) { max-width: 720px; color: var(--muted); font-size: 1.1rem; }
.portrait-stack { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; align-items: start; }
.portrait-stack img { display: block; width: 100%; aspect-ratio: 1; object-fit: cover; object-position: center 25%; overflow: hidden; background: var(--forest); filter: saturate(0.75); }

.insight-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 34px; }
.insight-card { min-width: 0; }
.insight-card-visual { --visual-accent: var(--mint); position: relative; display: flex; flex-direction: column; justify-content: space-between; min-height: 290px; overflow: hidden; padding: 26px; background: var(--forest); color: white; text-decoration: none; }
.insight-card-visual::before, .article-visual::before { content: ""; position: absolute; inset: -30% -10% auto auto; width: 80%; aspect-ratio: 1; border: 1px solid rgba(255,255,255,0.12); border-radius: 50%; box-shadow: 0 0 0 55px rgba(255,255,255,0.035), 0 0 0 110px rgba(255,255,255,0.025); }
.insight-card-visual span { position: relative; z-index: 2; color: var(--visual-accent); font-size: 0.66rem; font-weight: 750; letter-spacing: 0.15em; text-transform: uppercase; }
.insight-card-visual img { position: relative; z-index: 2; width: 70px; align-self: flex-end; opacity: 0.9; }
.insight-card-visual-photo { padding: 0; }
.insight-card-visual-photo::before { display: none; }
.insight-card-visual-photo picture, .insight-card-visual-photo img { width: 100%; height: 100%; }
.insight-card-visual-photo img { position: static; opacity: 1; object-fit: cover; align-self: auto; }
.insight-visual-azure-road { --visual-accent: var(--blue); background: #174752; }
.insight-visual-seeds-of-recovery { --visual-accent: var(--gold); background: #4b4531; }
.insight-visual-fohn { --visual-accent: var(--orange); background: #503b31; }
.insight-visual-cocoa-native-agroforestry { --visual-accent: #d0a47a; background: #49382d; }
.insight-visual-market { --visual-accent: #8bbf96; background: #173b36; }
.insight-card-copy { padding: 24px 0 0; }
.meta-line { display: flex; flex-wrap: wrap; gap: 9px 18px; margin-bottom: 15px; color: #6d7a76; font-size: 0.68rem; letter-spacing: 0.07em; text-transform: uppercase; }
.meta-line span + span::before { content: "·"; margin-right: 18px; }
.meta-line .paywall-flag::before { content: none; margin-right: 0; }
.meta-line .paywall-flag { padding: 3px 10px; border-radius: 20px; background: #62B573; color: var(--forest); font-weight: 750; }
.insight-card h3 { margin-bottom: 16px; font-size: clamp(1.55rem, 2.4vw, 2.25rem); }
.insight-card h3 a { text-decoration: none; }
.insight-card-copy > p { color: var(--muted); font-size: 0.94rem; }
.insight-card-featured { grid-column: 1 / -1; display: grid; grid-template-columns: 1.05fr 0.95fr; background: var(--forest); color: white; }
.insight-card-featured[hidden] { display: none; }
.insight-card-featured .insight-card-visual { min-height: 500px; }
.insight-card-featured .insight-card-copy { display: flex; flex-direction: column; justify-content: center; padding: 55px; }
.insight-card-featured .insight-card-copy > p, .insight-card-featured .meta-line { color: rgba(255,255,255,0.66); }
.insight-card-featured .arrow-link { color: white; }

.insight-card-press { display: flex; }
.insight-card-press[hidden] { display: none; }
.press-card-link { display: flex; flex-direction: column; width: 100%; text-decoration: none; color: inherit; }
.press-card-rule { border: none; border-top: 3px solid var(--forest); margin: 0; }
.insight-card-press .insight-card-copy { display: flex; flex-direction: column; flex: 1; }
.insight-card-press h3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.insight-card-press .arrow-link { margin-top: auto; }

.site-footer { position: relative; overflow: hidden; background: var(--forest); color: white; padding: 90px 0 24px; }
.site-footer::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: radial-gradient(circle at 25% 25%, rgba(119,208,138,0.12), transparent 38%), linear-gradient(115deg, transparent 60%, rgba(255,255,255,0.025)); }
.site-footer .shell { position: relative; }
.footer-top { display: grid; grid-template-columns: 0.7fr 1.3fr; gap: 100px; padding-bottom: 70px; }
.footer-lead img { width: 220px; margin-bottom: 30px; }
.footer-lead p { max-width: 360px; font-size: 1.35rem; line-height: 1.4; }
.footer-links { display: grid; grid-template-columns: 0.8fr 0.8fr 1.4fr; gap: 50px; }
.footer-links h2 { margin-bottom: 24px; color: var(--mint); font-size: 0.69rem; font-weight: 750; letter-spacing: 0.16em; text-transform: uppercase; }
.footer-links a { display: block; margin-bottom: 11px; color: rgba(255,255,255,0.72); font-size: 0.88rem; text-decoration: none; }
.footer-links a:hover { color: white; }
.footer-links address { margin-bottom: 20px; }
.footer-links address strong { display: block; color: white; font-size: 0.76rem; text-transform: uppercase; letter-spacing: 0.08em; }
.footer-links address span { display: block; color: rgba(255,255,255,0.58); font-size: 0.78rem; }
.footer-bottom { display: flex; align-items: center; justify-content: space-between; gap: 30px; padding-top: 24px; border-top: 1px solid var(--line-light); color: rgba(255,255,255,0.52); font-size: 0.72rem; }
.footer-bottom div { display: flex; gap: 24px; }
.footer-bottom a { text-decoration: none; }

/* Project archive and detail */
.project-pathways { background: var(--paper); }
.pathway-grid { display: grid; grid-template-columns: repeat(4, 1fr); border-left: 1px solid var(--line); border-top: 1px solid var(--line); }
.pathway-card { min-height: 390px; display: flex; flex-direction: column; padding: 30px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.pathway-card > span { margin-bottom: 70px; color: #4f8b72; font-size: 0.69rem; font-weight: 750; letter-spacing: 0.14em; text-transform: uppercase; }
.pathway-card h3 { margin-bottom: 16px; }
.pathway-card p { color: var(--muted); font-size: 0.9rem; }
.pathway-card a { margin-top: auto; font-size: 0.75rem; font-weight: 720; text-transform: uppercase; text-decoration: none; }

.project-hero { position: relative; min-height: 100vh; display: grid; grid-template-rows: 1fr auto; padding: 140px 0 var(--project-hero-gap); }
.project-hero .eyebrow { color: var(--accent-green); }
.project-hero-stack { align-self: center; display: flex; flex-direction: column; gap: 32px; }
.project-hero-copy h1 { font-size: clamp(2.8rem, 4vw, 5rem); white-space: nowrap; }
.project-tagline { margin: 18px 0 0; color: rgba(255,255,255,0.72); font-size: clamp(1.25rem, 2vw, 1.8rem); }
.project-hero-rule { margin: 14px 0; border: 0; border-top: 1px solid var(--line-light); }
.project-impact { margin-top: 22px; padding-top: 8px; }
.project-impact strong { display: block; color: var(--accent-green); font-size: clamp(2.5rem, 4.5vw, 5rem); font-weight: 450; line-height: 1; white-space: nowrap; }
.project-impact span { display: block; margin-top: 6px; color: rgba(255,255,255,0.55); font-size: 0.68rem; font-weight: 700; letter-spacing: 0.15em; text-transform: uppercase; }
.project-hero-banner { position: relative; width: 100%; aspect-ratio: 7 / 1; max-height: 19vh; overflow: hidden; }
.project-hero-banner picture { display: block; width: 100%; height: 100%; }
.project-hero-banner img {
  display: block; width: 100%; height: 100%; object-fit: cover; object-position: var(--hero-focal, center);
  mask-image: linear-gradient(to bottom, transparent 0%, #000 22%, #000 78%, transparent 100%);
  -webkit-mask-image: linear-gradient(to bottom, transparent 0%, #000 22%, #000 78%, transparent 100%);
}
.facts-grid { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--line-light); border-left: 1px solid var(--line-light); }
.fact { min-height: 100px; padding: 16px 18px; border-right: 1px solid var(--line-light); border-bottom: 1px solid var(--line-light); }
.fact span { display: block; margin-bottom: 10px; color: var(--accent-green); font-size: 0.62rem; font-weight: 750; letter-spacing: 0.14em; text-transform: uppercase; }
.fact strong { display: block; font-size: 0.92rem; font-weight: 560; line-height: 1.4; }
.sdg-grid { display: grid; grid-template-columns: repeat(6, 36px); gap: 6px; }
.sdg-grid img { display: block; width: 36px; height: 36px; border-radius: 4px; }
.project-story { background: #EFEADF; }
.project-story-grid { display: grid; grid-template-columns: minmax(320px, 0.8fr) minmax(0, 1.2fr); gap: 100px; }
.prose-large { font-size: clamp(1.1rem, 1.6vw, 1.3rem); }
.prose-large p:first-child { font-size: clamp(1.4rem, 2.3vw, 2rem); line-height: 1.45; color: var(--ink); }
.project-gallery { background: #F3EFE7; padding-bottom: clamp(92px, 10vw, 160px); }
.project-gallery-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; }
.project-gallery-item { margin: 0; }
.project-gallery-item.gallery-primary { grid-column: 1 / -1; }
.project-gallery-item picture, .project-gallery-item img { width: 100%; }
.project-gallery-item img { aspect-ratio: 1.35; object-fit: cover; }
.project-gallery-item.gallery-primary img { aspect-ratio: 1.85; }
.project-gallery-item figcaption { margin-top: 10px; color: var(--muted); font-size: 0.64rem; letter-spacing: 0.1em; text-transform: uppercase; }
.measured-impact { background: #F7F4EE; }
.benefit-grid { display: grid; grid-template-columns: repeat(5, 1fr); border-left: 1px solid var(--line); border-top: 1px solid var(--line); }
.benefit-card { min-height: 310px; padding: 27px 24px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.benefit-card > span { display: block; margin-bottom: 70px; color: var(--accent-green); font-size: 0.68rem; font-weight: 750; letter-spacing: 0.14em; }
.benefit-card h3 { margin-bottom: 15px; font-size: 1.35rem; }
.benefit-card p { margin: 0; color: var(--muted); font-size: 0.86rem; }
.buyer-fit-section { background: #FBFAF4; }
.buyer-fit-grid { display: grid; grid-template-columns: 1.3fr 0.7fr; gap: 100px; align-items: end; }
.buyer-fit-main h2 { max-width: 900px; font-size: clamp(2.7rem, 4.5vw, 5rem); }
.buyer-fit-aside { padding: 32px; border: 1px solid rgba(6,61,53,0.25); }
.buyer-fit-aside h3 { margin-bottom: 18px; }
.buyer-fit-aside p { color: var(--muted); }
.related-projects .project-card:nth-child(3) { display: none; }
.section.related-projects { background: #FFFFFA; }

/* Buyer and services */
.buyer-hero-panel { padding: 38px; border: 1px solid var(--line-light); background: rgba(255,255,255,0.035); }
.buyer-hero-panel > p { color: var(--mint); font-size: 0.7rem; font-weight: 750; letter-spacing: 0.14em; text-transform: uppercase; }
.buyer-hero-panel ol { counter-reset: buyer; list-style: none; }
.buyer-hero-panel li { position: relative; padding: 20px 0 20px 48px; border-top: 1px solid var(--line-light); color: rgba(255,255,255,0.75); }
.buyer-hero-panel li::before { counter-increment: buyer; content: "0" counter(buyer); position: absolute; left: 0; color: var(--mint); font-size: 0.67rem; font-weight: 750; letter-spacing: 0.1em; }
.diligence-grid { display: grid; grid-template-columns: repeat(3, 1fr); border-left: 1px solid var(--line); border-top: 1px solid var(--line); }
.diligence-card { min-height: 275px; padding: 30px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.diligence-card > span { display: block; margin-bottom: 50px; color: #62B573; font-size: 0.68rem; font-weight: 750; letter-spacing: 0.13em; }
.diligence-card h3 { margin-bottom: 14px; }
.diligence-card p { margin: 0; color: var(--muted); font-size: 0.9rem; }
.portfolio-section { background: #F4F1E9; }
.portfolio-layers { border-top: 1px solid var(--line); }
.portfolio-layer { display: grid; grid-template-columns: 70px 1fr; gap: 30px; padding: 34px 0; border-bottom: 1px solid var(--line); }
.portfolio-layer > span { color: #62B573; font-size: 0.68rem; font-weight: 750; letter-spacing: 0.13em; }
.portfolio-layer h3 { margin-bottom: 10px; }
.portfolio-layer p { margin: 0; color: var(--muted); }
.process-rail { border-top: 1px solid var(--line); }
.process-step { display: grid; grid-template-columns: 130px 1fr; gap: 40px; padding: 38px 0; border-bottom: 1px solid var(--line); }
.process-step > span { color: #4f8b72; font-size: 0.78rem; font-weight: 750; letter-spacing: 0.15em; }
.process-step > div { display: grid; grid-template-columns: minmax(230px, 0.55fr) minmax(0, 1fr); gap: 50px; }
.process-step h3 { font-size: clamp(1.7rem, 2.5vw, 2.6rem); }
.process-step p { margin: 0; color: var(--muted); }
.process-section { background: #FAF8F2; }
.article6-process .process-step > span { color: var(--accent-green); }
.faq-layout { display: grid; grid-template-columns: minmax(260px, 0.65fr) minmax(0, 1.35fr); gap: 100px; align-items: start; }
.faq-list { border-top: 1px solid var(--line); }
.faq-item { border-bottom: 1px solid var(--line); }
.faq-item summary { position: relative; list-style: none; cursor: pointer; padding: 28px 54px 28px 0; font-size: 1.25rem; font-weight: 570; line-height: 1.35; }
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after { content: "+"; position: absolute; right: 8px; top: 24px; font-size: 1.5rem; font-weight: 320; transition: transform 180ms ease; }
.faq-item[open] summary::after { transform: rotate(45deg); }
.faq-item > div { padding: 0 65px 26px 0; color: var(--muted); }
.faq-item > div p { margin: 0; }
.stat-panel { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-left: 1px solid var(--line-light); border-top: 1px solid var(--line-light); }
.stat-panel > div { min-height: 170px; padding: 26px; border-right: 1px solid var(--line-light); border-bottom: 1px solid var(--line-light); }
.stat-panel strong { display: block; color: var(--mint); font-size: 2.8rem; font-weight: 460; line-height: 1; }
.stat-panel span { display: block; margin-top: 20px; color: rgba(255,255,255,0.65); font-size: 0.75rem; line-height: 1.45; text-transform: uppercase; letter-spacing: 0.08em; }
.removal-pathways { background: #F3EFE6; }
.route-grid { display: grid; grid-template-columns: repeat(3, 1fr); border-left: 1px solid var(--line); border-top: 1px solid var(--line); }
.route-card { min-height: 480px; display: flex; flex-direction: column; padding: 32px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.route-card > span { color: #4f8b72; font-size: 0.68rem; font-weight: 750; letter-spacing: 0.14em; }
.dev-routes { background: var(--ladder-02); }
.dev-routes .route-card > span { color: var(--accent-green); }
.route-card > p:first-of-type { margin: 68px 0 15px; color: #4f8b72; font-size: 0.68rem; font-weight: 750; letter-spacing: 0.13em; text-transform: uppercase; }
.route-card h3 { margin-bottom: 20px; font-size: clamp(2rem, 3vw, 3.2rem); }
.route-card p { color: var(--muted); }
.route-card a { margin-top: auto; font-size: 0.75rem; font-weight: 750; letter-spacing: 0.07em; text-decoration: none; text-transform: uppercase; }
.development-lifecycle { background: var(--ladder-03); }
.lifecycle-detailed { display: grid; grid-template-columns: repeat(5, 1fr); border-left: 1px solid var(--line); border-top: 1px solid var(--line); }
.phase { min-height: 430px; padding: 26px 22px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.phase > span { display: block; margin-bottom: 70px; color: var(--accent-green); font-size: 0.67rem; font-weight: 750; letter-spacing: 0.14em; }
.phase h3 { min-height: 70px; margin-bottom: 25px; font-size: 1.45rem; }
.phase ul { list-style: none; }
.phase li { padding: 9px 0; border-top: 1px solid var(--line); color: var(--muted); font-size: 0.8rem; }

/* Insetting, Article 6 and removals */
.logic-grid { display: grid; grid-template-columns: repeat(4,1fr); border-left: 1px solid var(--line); border-top: 1px solid var(--line); }
.logic-step { min-height: 300px; padding: 28px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.logic-step > span { display: block; margin-bottom: 62px; color: var(--accent-green); font-size: 0.68rem; font-weight: 750; letter-spacing: 0.13em; }
.logic-step h3 { margin-bottom: 16px; }
.logic-step p { margin: 0; color: var(--muted); font-size: 0.9rem; }
.insetting-lines { background: #F3EFE6; }
.insetting-logic, .buyer-diligence, .article6-framework, .removal-quality, .advisory-scope-tabs { background: #EFEADF; }
.custody-section { background: #F7F5ED; }
.removal-portfolio { background: #F7F5ED; }
.insetting-portfolio, .faq-section { background: #FFFFFA; }
.about-geography { background: #FAF8F2; }
.insetting-line-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; }
.insetting-line { min-height: 670px; display: flex; flex-direction: column; padding: clamp(38px, 5vw, 70px); background: var(--mint-pale); }
.logistics-line { background: var(--mint-pale); }
.insetting-line h2 { margin-bottom: 28px; font-size: clamp(2.5rem, 4vw, 4.7rem); }
.insetting-line > div > p:not(.eyebrow) { color: var(--muted); }
.insetting-line ul { list-style: none; margin: 38px 0; border-top: 1px solid var(--line); }
.insetting-line li { padding: 13px 0; border-bottom: 1px solid var(--line); font-size: 0.9rem; }
.insetting-line .arrow-link { margin-top: auto; }
.custody-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; }
.custody-card { min-height: 380px; padding: 45px; border: 1px solid var(--line); }
.custody-card > span { color: #4f8b72; font-size: 0.69rem; font-weight: 750; letter-spacing: 0.14em; text-transform: uppercase; }
.custody-card h3 { max-width: 560px; margin: 70px 0 22px; font-size: clamp(2rem, 3vw, 3.3rem); }
.custody-card p { color: var(--muted); }
.who-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; }
.who-card { min-height: 360px; padding: 45px; background: var(--cream); color: var(--ink); }
.who-card > p:first-child { color: #4f8b72; font-size: 0.69rem; font-weight: 750; letter-spacing: 0.14em; text-transform: uppercase; }
.who-card h3 { margin: 70px 0 20px; font-size: clamp(2rem, 3vw, 3.4rem); }
.who-card > p:last-child { color: var(--muted); }
.who-section { background: #FBFAF3; }
.article6-pillars { display: grid; grid-template-columns: repeat(4,1fr); border-left: 1px solid var(--line); border-top: 1px solid var(--line); }
.pillar { min-height: 320px; padding: 28px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.pillar > span { display: block; margin-bottom: 65px; color: var(--accent-green); font-size: 0.67rem; font-weight: 750; letter-spacing: 0.14em; }
.pillar h3 { margin-bottom: 16px; }
.pillar p { color: var(--muted); font-size: 0.88rem; }
.single-project { max-width: 890px; }
.single-project .project-card-image { min-height: 530px; }
.article6-process { background: #F4F1E9; }
.article6-practice { background: #FAF8F2; }
.removal-forward { background: #FBFAF3; }
.removal-criteria { display: grid; grid-template-columns: repeat(3, 1fr); border-left: 1px solid var(--line); border-top: 1px solid var(--line); }
.criteria-card { min-height: 220px; padding: 30px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.criteria-card h3 { margin-bottom: 20px; }
.criteria-card p { margin: 0; color: var(--muted); font-size: 0.9rem; }

/* Advisory */
.advisory-tabs { display: grid; gap: 18px; }
.advisory-scope { display: grid; grid-template-columns: 130px 1fr; gap: 50px; padding: 56px; background: white; border: 1px solid var(--line); }
.scope-index { color: var(--accent-green); font-size: 0.72rem; font-weight: 750; letter-spacing: 0.15em; }
.advisory-frameworks { background: #F4F1E9; }
.advisory-scope h2 { margin-bottom: 24px; font-size: clamp(2.7rem, 4.6vw, 5.3rem); }
.advisory-scope > div:last-child > p:not(.eyebrow) { max-width: 820px; color: var(--muted); font-size: 1.06rem; }
.advisory-scope ul { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0 35px; list-style: none; margin-top: 35px; border-top: 1px solid var(--line); }
.advisory-scope li { padding: 13px 0; border-bottom: 1px solid var(--line); color: var(--muted); font-size: 0.88rem; }
.framework-cloud { display: flex; flex-wrap: wrap; gap: 12px; }
.reduction-hierarchy { background: #FAF8F2; }
.framework-cloud span, .expertise-band span { padding: 14px 19px; border: 1px solid var(--line); color: #3f6258; font-size: 0.72rem; font-weight: 730; letter-spacing: 0.1em; text-transform: uppercase; }

/* About and team */
.about-manifesto { background: #EFEADF; }
.manifesto-grid h2 { max-width: 980px; margin-bottom: 38px; }
.manifesto-grid > div > p:not(.eyebrow) { max-width: 880px; color: var(--muted); font-size: 1.16rem; }
.capability-grid { display: grid; grid-template-columns: repeat(4,1fr); border-left: 1px solid var(--line-light); border-top: 1px solid var(--line-light); }
.capability { min-height: 330px; padding: 28px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.capability > span { display: block; margin-bottom: 75px; color: #4f8b72; font-size: 0.68rem; font-weight: 750; letter-spacing: 0.14em; }
.capability h3 { margin-bottom: 18px; }
.capability p { margin: 0; color: var(--muted); font-size: 0.88rem; }
.about-capabilities { background: #F4F1E9; }
.leadership-preview { background: #FFFFFA; }
.geography-grid { display: flex; flex-direction: column; gap: 40px; }
.continent-row { display: flex; flex-wrap: wrap; gap: 34px; padding: 26px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.continent-row span { display: flex; align-items: center; gap: 10px; color: var(--ink); font-size: 0.78rem; font-weight: 750; letter-spacing: 0.1em; text-transform: uppercase; }
.continent-row span::before { content: ""; width: 11px; aspect-ratio: 1; border-radius: 50%; background: var(--mint); box-shadow: 0 0 0 6px rgba(119,208,138,0.14); }
.office-cards { display: grid; grid-template-columns: repeat(4, 1fr); border-left: 1px solid var(--line); border-top: 1px solid var(--line); }
.office-card { display: flex; flex-direction: column; justify-content: flex-start; min-height: 170px; padding: 28px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.office-card p { margin: 0 0 13px; color: #4f8b72; font-size: 0.7rem; font-weight: 750; letter-spacing: 0.13em; text-transform: uppercase; }
.office-card span { color: var(--muted); }
.team-grid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 50px 20px; }
.team-card { min-width: 0; }
.team-card-image { display: block; overflow: hidden; background: var(--forest); }
.team-card-image img { width: 100%; aspect-ratio: 0.88; object-fit: cover; object-position: center 25%; filter: saturate(0.78); }
.portrait-placeholder { display: grid; place-items: center; width: 100%; aspect-ratio: 0.88; background: linear-gradient(145deg, var(--forest), #0c574b); }
.portrait-placeholder span { display: grid; place-items: center; width: 105px; aspect-ratio: 1; border: 1px solid rgba(255,255,255,0.28); border-radius: 50%; color: var(--mint); font-size: 2rem; font-weight: 420; letter-spacing: 0.05em; }
.portrait-placeholder.large { aspect-ratio: 1; min-height: 620px; }
.portrait-placeholder.large span { width: 160px; font-size: 3rem; }
.team-card-copy { padding-top: 20px; }
.team-card-copy > p { margin: 0 0 7px; color: #4f8b72; font-size: 0.64rem; font-weight: 750; letter-spacing: 0.11em; line-height: 1.4; text-transform: uppercase; }
.team-card-name-row { display: flex; align-items: center; gap: 9px; }
.team-card-name-row h3 { margin-bottom: 0; font-size: 1.55rem; }
.team-card-linkedin { position: relative; display: inline-flex; flex: 0 0 auto; width: 22px; height: 22px; border-radius: 5px; background: #808080; transition: background 180ms ease; }
.team-card-linkedin::before { content: ""; position: absolute; inset: -11px; }
.team-card-linkedin:hover { background: #0a66c2; }
.team-card-linkedin svg { width: 100%; height: 100%; padding: 4px; fill: white; }
.leadership-grid { grid-template-columns: repeat(3,1fr); }
.compact-team-grid { grid-template-columns: repeat(3,1fr); }
.expertise-band { display: flex; flex-wrap: wrap; gap: 10px; }
.careers-grid { display: grid; grid-template-columns: 1fr 0.8fr; gap: 100px; align-items: end; }
.careers-grid > div:last-child p { color: var(--muted); }
.team-hero .eyebrow { color: var(--accent-green); }
.team-hero .page-hero-aside { color: rgba(255,255,255,0.78); }
.team-evidence { background: #FAF8F2; }
.profile-hero { padding: 180px 0 120px; background: var(--cream); }
.profile-grid { display: grid; grid-template-columns: minmax(380px, 0.85fr) minmax(0,1.15fr); gap: clamp(55px, 8vw, 120px); align-items: center; }
.profile-image img { width: 100%; aspect-ratio: 1; object-fit: cover; object-position: center 25%; }
.profile-copy h1 { margin-bottom: 24px; font-size: clamp(3.5rem, 6vw, 6.8rem); }
.profile-short { max-width: 700px; font-size: 1.35rem; line-height: 1.45; color: #365a51; }
.profile-copy > p:not(.eyebrow):not(.profile-short) { max-width: 730px; color: var(--muted); }
.author-box { display: grid; grid-template-columns: 190px 1fr; gap: 45px; align-items: center; max-width: 980px; }
.author-box img { width: 190px; aspect-ratio: 1; object-fit: cover; object-position: center 25%; }
.author-box h2 { margin-bottom: 18px; font-size: 2.6rem; }
.author-box p:not(.eyebrow) { color: var(--muted); }

/* Blog and articles */
.category-nav { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 52px; }
.category-nav a { padding: 10px 15px; border: 1px solid var(--line); color: #4b6961; font-size: 0.68rem; font-weight: 720; letter-spacing: 0.08em; text-decoration: none; text-transform: uppercase; }
.category-nav a:hover, .category-nav a.active { background: var(--forest); border-color: var(--forest); color: white; }
.blog-filter { display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap; margin-bottom: 52px; }
.filter-tabs { display: flex; gap: 10px; max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
@media (max-width: 900px) {
  .filter-tabs { mask-image: linear-gradient(to right, black 88%, transparent 100%); -webkit-mask-image: linear-gradient(to right, black 88%, transparent 100%); }
}
.filter-tabs::-webkit-scrollbar { display: none; }
.filter-tab { flex: 0 0 auto; display: inline-flex; align-items: center; min-height: 44px; padding: 10px 15px; border: 1px solid var(--line); background: transparent; color: #4b6961; font-size: 0.68rem; font-weight: 720; letter-spacing: 0.08em; text-transform: uppercase; white-space: nowrap; cursor: pointer; }
.filter-tab:hover, .filter-tab.active { background: var(--forest); border-color: var(--forest); color: white; }
.filter-topic[hidden] { display: none; }
.filter-topic select { height: 44px; padding: 0 16px; border: 1px solid var(--line); background: var(--paper); color: var(--ink); font-size: 0.7rem; font-weight: 650; letter-spacing: 0.06em; text-transform: uppercase; cursor: pointer; }
.filter-empty { padding: 70px 0; text-align: center; color: var(--muted); font-size: 1.05rem; }
.filter-empty[hidden] { display: none; }
.featured-insight { margin-bottom: 72px; }
.all-insights { row-gap: 70px; }
.newsletter-band { background: var(--paper); color: var(--ink); }
.newsletter-grid { display: grid; grid-template-columns: 1fr 0.9fr; gap: 80px; align-items: end; }
.newsletter-grid h2 { margin-bottom: 14px; font-size: clamp(2.4rem,4vw,4.3rem); }
.newsletter-grid p:not(.eyebrow) { margin: 0; color: var(--muted); }
.newsletter-form { display: grid; grid-template-columns: 1fr auto; gap: 10px; }
.newsletter-form input { width: 100%; height: 54px; border: 1px solid rgba(6, 61, 53, 0.35); background: var(--paper); color: var(--ink); padding: 0 18px; outline: none; }
.newsletter-form input::placeholder { color: var(--muted); }
.newsletter-form input:focus { border-color: var(--forest); }
.article-header { padding: 190px 0 80px; background: var(--cream); }
.article-header-inner { max-width: 1050px; text-align: center; }
.category-pill { display: inline-flex; margin-bottom: 30px; padding: 8px 13px; border: 1px solid var(--line); color: #4f8b72; font-size: 0.68rem; font-weight: 750; letter-spacing: 0.11em; text-decoration: none; text-transform: uppercase; }
.article-header h1 { font-size: clamp(3.5rem, 6.3vw, 7rem); }
.article-deck { max-width: 800px; margin: 30px auto 0; color: var(--muted); font-size: clamp(1.15rem, 1.7vw, 1.4rem); }
.article-byline { display: flex; justify-content: center; align-items: center; gap: 14px; margin-top: 36px; }
.article-byline img { width: 52px; aspect-ratio: 1; border-radius: 50%; object-fit: cover; object-position: center 25%; }
.article-byline > div { display: flex; flex-direction: column; text-align: left; color: var(--muted); font-size: 0.75rem; }
.article-byline strong { font-weight: 700; color: var(--ink); }
.article-visual { position: relative; min-height: 520px; display: flex; justify-content: space-between; align-items: flex-end; overflow: hidden; margin-top: 70px; padding: 46px; background: var(--forest); color: white; }
.article-visual > span { position: relative; z-index: 2; color: var(--visual-accent, var(--mint)); font-size: 0.72rem; font-weight: 750; letter-spacing: 0.15em; text-transform: uppercase; }
.article-visual > img { position: relative; z-index: 2; width: 140px; }
.article-visual-photo { padding: 0; }
.article-visual-photo::before { display: none; }
.article-visual-photo picture, .article-visual-photo img { width: 100%; height: 100%; }
.article-visual-photo img { object-fit: cover; }
.article-layout { display: grid; grid-template-columns: 230px minmax(0, 790px); justify-content: center; gap: 70px; padding-top: 100px; padding-bottom: 120px; }
.article-aside { align-self: start; position: sticky; top: 110px; }
.article-toc, .article-share { padding: 22px 0; border-top: 1px solid var(--line); }
.article-toc > p, .article-share > p { margin: 0 0 15px; color: #4f8b72; font-size: 0.66rem; font-weight: 750; letter-spacing: 0.12em; text-transform: uppercase; }
.article-toc ol { list-style: none; }
.article-toc li { margin: 9px 0; }
.article-toc a, .article-share a, .article-share button { color: var(--muted); font-size: 0.76rem; line-height: 1.4; text-decoration: none; }
.article-toc a:hover, .article-share a:hover, .article-share button:hover { color: var(--ink); }
.article-share { display: flex; flex-direction: column; align-items: flex-start; }
.article-share button { border: 0; background: none; padding: 4px 0; cursor: pointer; }
.prose { color: #29473f; }
.prose h2 { margin: 2.2em 0 0.65em; font-size: clamp(2.1rem, 3.4vw, 3.6rem); scroll-margin-top: 110px; }
.prose h3 { margin: 1.9em 0 0.6em; font-size: clamp(1.45rem, 2.2vw, 2.1rem); scroll-margin-top: 110px; }
.prose p { margin: 0 0 1.35em; }
.prose ul, .prose ol { margin: 0 0 1.6em 1.2em; }
.prose li { margin: 0.45em 0; padding-left: 0.35em; }
.prose a { color: #126f5d; font-weight: 610; }
.prose blockquote { margin: 2em 0; padding: 26px 32px; border-left: 3px solid var(--mint); background: var(--cream); font-size: 1.15rem; }
.prose table { width: 100%; border-collapse: collapse; margin: 2em 0; font-size: 0.88rem; }
.prose th, .prose td { padding: 14px; border: 1px solid var(--line); text-align: left; vertical-align: top; }
.prose th { background: var(--cream); }
.prose code { padding: 2px 5px; background: var(--cream); font-size: 0.9em; }

/* Contact and legal */
.contact-section { background: #EFEADF; }
.contact-offices { background: #F4F1E9; }
.contact-direct { display: flex; flex-direction: column; padding: 32px; border: 1px solid var(--line-light); }
.contact-direct p { color: var(--mint); font-size: 0.69rem; font-weight: 750; letter-spacing: 0.13em; text-transform: uppercase; }
.contact-direct a { padding: 14px 0; border-top: 1px solid var(--line-light); color: rgba(255,255,255,0.78); font-size: 0.84rem; text-decoration: none; overflow-wrap: anywhere; }
.contact-grid { display: grid; grid-template-columns: minmax(0,1.2fr) minmax(300px,0.8fr); gap: 80px; align-items: start; }
.contact-form { padding: 45px; background: var(--paper); border: 1px solid var(--line); }
.form-row { display: grid; grid-template-columns: repeat(2,1fr); gap: 22px; }
.contact-form label { display: block; margin-bottom: 22px; color: #365a51; font-size: 0.7rem; font-weight: 730; letter-spacing: 0.08em; text-transform: uppercase; }
.contact-form input, .contact-form select, .contact-form textarea { width: 100%; margin-top: 8px; border: 0; border-bottom: 1px solid rgba(6,61,53,0.33); border-radius: 0; background: transparent; color: var(--ink); padding: 12px 0; outline: none; text-transform: none; letter-spacing: normal; }
.contact-form textarea { resize: vertical; min-height: 160px; border: 1px solid rgba(6,61,53,0.28); padding: 14px; }
.contact-form input:focus, .contact-form select:focus, .contact-form textarea:focus { border-color: #16836c; }
.consent-check { display: grid !important; grid-template-columns: 19px 1fr; gap: 10px; align-items: start; text-transform: none !important; letter-spacing: normal !important; font-weight: 450 !important; line-height: 1.5; }
.consent-check input { width: 17px; margin: 3px 0 0; }
.contact-aside { border-top: 1px solid var(--line); }
.contact-route { padding: 27px 0; border-bottom: 1px solid var(--line); }
.contact-route > span { color: #62B573; font-size: 0.67rem; font-weight: 750; letter-spacing: 0.13em; }
.contact-route h2 { margin: 35px 0 14px; font-size: 2rem; }
.contact-route p { color: var(--muted); font-size: 0.9rem; }
.contact-route a { color: #126f5d; font-size: 0.8rem; overflow-wrap: anywhere; }
.office-grid { display: grid; grid-template-columns: repeat(4,1fr); border-left: 1px solid var(--line); border-top: 1px solid var(--line); }
.legal-updated { margin-top: 28px; color: var(--muted); }
.legal-layout { display: grid; grid-template-columns: 240px minmax(0,780px); justify-content: center; gap: 90px; }
.legal-nav { position: sticky; top: 110px; align-self: start; padding-top: 20px; border-top: 1px solid var(--line); }
.legal-nav p { color: #4f8b72; font-size: 0.67rem; font-weight: 750; letter-spacing: 0.13em; text-transform: uppercase; }
.legal-nav a { display: block; padding: 8px 0; color: var(--muted); font-size: 0.82rem; text-decoration: none; }
.legal-content section:first-child h2 { margin-top: 0; }
.status-page { min-height: 80vh; display: grid; place-items: center; padding: 180px 0 100px; background: var(--cream); }
.status-card { max-width: 800px; text-align: center; }
.status-card h1 { margin-bottom: 30px; }
.status-card > p:not(.eyebrow) { max-width: 640px; margin-inline: auto; color: var(--muted); font-size: 1.15rem; }
.status-card .button-row { justify-content: center; }

/* Motion and focus */
.reveal { opacity: 1; transform: none; }
.js .reveal { opacity: 0; transform: translateY(22px); transition: opacity 650ms ease, transform 650ms cubic-bezier(.2,.7,.2,1); }
.js .reveal.is-visible { opacity: 1; transform: none; }
:focus-visible { outline: 3px solid var(--mint); outline-offset: 4px; }

/* Scroll-driven colour crossfade (shared by every page that opts a section in
   via data-bg): every section keeps its own solid CSS background and text
   colours below as the permanent, unconditional base layer. The script
   (site.js) only ever applies an inline style override once it has finished
   computing a colour with no error; a script failure or a disabled script
   leaves this base layer completely untouched. Fade-tracked sections use the
   same --section-spacing as every other section — no separate padding value. */

@media (max-width: 1120px) {
  :root { --header-height: 78px; }
  .site-nav { gap: 18px; }
  .site-nav ul { gap: 15px; }
  .site-nav .nav-link { font-size: 0.64rem; }
  .lifecycle-grid, .lifecycle-detailed { grid-template-columns: repeat(3,1fr); }
  .benefit-grid { grid-template-columns: repeat(3,1fr); }
  .pathway-grid, .capability-grid, .article6-pillars, .logic-grid { grid-template-columns: repeat(2,1fr); }
  .team-grid { grid-template-columns: repeat(3,1fr); }
  .compact-project-grid { grid-template-columns: repeat(2,1fr); }
  .facts-grid { grid-template-columns: repeat(3,1fr); }
  .footer-top { grid-template-columns: 0.55fr 1.45fr; gap: 60px; }
}

@media (max-width: 900px) {
  :root { --shell: min(100% - 34px, 760px); }
  body { font-size: 16px; }
  .menu-toggle { display: block; }
  .site-nav { position: fixed; inset: 0; display: flex; flex-direction: column; justify-content: center; align-items: stretch; gap: 28px; padding: 110px 32px 40px; background: var(--forest); transform: translateX(100%); visibility: hidden; transition: transform 260ms ease, visibility 260ms; overflow-y: auto; }
  .site-nav.is-open { transform: none; visibility: visible; }
  .site-nav > ul { flex-direction: column; align-items: stretch; gap: 0; }
  .site-nav .nav-link { padding: 15px 0; font-size: 1.05rem; }
  .site-nav > ul > li { border-bottom: 1px solid var(--line-light); }
  .site-nav .nav-item-row { justify-content: space-between; }
  .site-nav .nav-item-row .nav-link { border-bottom: 0; }
  .nav-caret { width: 44px; height: 44px; }
  .nav-dropdown { position: static; opacity: 1; visibility: visible; transform: none; display: none; margin: 0; padding: 0 0 12px 18px; border: 0; box-shadow: none; background: transparent; transition: none; }
  .nav-item.is-open .nav-dropdown { display: block; }
  .nav-dropdown a { padding: 13px 0; font-size: 0.92rem; }
  .nav-cta { align-self: flex-start; }
  body.menu-open { overflow: hidden; }
  .breadcrumbs { top: 92px; }
  .split-heading, .page-hero-grid, .two-column, .about-band-grid, .project-story-grid, .buyer-fit-grid, .faq-layout, .profile-grid, .newsletter-grid, .contact-grid, .careers-grid { grid-template-columns: 1fr; gap: 45px; }
  .sticky-copy { position: static; }
  .page-hero { padding-top: 144px; }
  .page-hero h1 { font-size: clamp(3.6rem, 11vw, 6rem); }
  .project-grid, .project-grid-featured .project-card:first-child { grid-template-columns: 1fr; }
  .project-grid-featured .project-card:first-child .project-card-image { min-height: 480px; }
  .project-grid-featured .project-card:first-child .project-card-copy { padding: 40px; }
  .service-grid, .insight-grid, .route-grid, .diligence-grid, .removal-criteria, .insetting-line-grid, .custody-grid, .who-grid { grid-template-columns: 1fr; }
  .insight-card-featured { grid-template-columns: 1fr; }
  .insight-card-featured .insight-card-visual { min-height: 360px; }
  .lifecycle-grid, .lifecycle-detailed, .benefit-grid { grid-template-columns: repeat(2,1fr); }
  .project-hero-copy h1, .project-impact strong { white-space: normal; }
  .facts-grid { grid-template-columns: repeat(2,1fr); }
  .project-gallery-grid { grid-template-columns: 1fr; }
  .project-gallery-item.gallery-primary { grid-column: auto; }
  .project-gallery-item.gallery-primary img, .project-gallery-item img { aspect-ratio: 1.35; }
  .stat-panel { margin-top: 20px; }
  .process-step { grid-template-columns: 70px 1fr; }
  .process-step > div { grid-template-columns: 1fr; gap: 14px; }
  .advisory-scope { grid-template-columns: 60px 1fr; padding: 36px; }
  .team-grid, .leadership-grid, .compact-team-grid { grid-template-columns: repeat(2,1fr); }
  .continent-row { flex-direction: column; gap: 16px; }
  .office-cards, .office-grid { grid-template-columns: 1fr; }
  .article-layout { grid-template-columns: 1fr; max-width: 790px; gap: 40px; }
  .article-aside { position: static; display: grid; grid-template-columns: 1fr auto; gap: 30px; }
  .article-share { align-items: flex-end; }
  .article-toc ol { display: grid; grid-template-columns: repeat(2,1fr); gap: 5px 20px; }
  .footer-top { grid-template-columns: 1fr; }
}

@media (max-width: 620px) {
  :root { --shell: calc(100vw - 28px); }
  h1 { font-size: 3.5rem; }
  h2 { font-size: 2.55rem; }
  .section { padding: 66px 0; }
  .section-heading { margin-bottom: 34px; }
  .brand img { width: 160px; }
  .home-hero { padding-top: 115px; }
  .home-hero-copy h1 { font-size: clamp(3.45rem, 16vw, 5.3rem); }
  .hero-mountain, .hero-mountain-real { background-size: 180%; background-position: 0% center; }
  .proof-strip { grid-template-columns: 1fr; margin-top: 35px; }
  .proof-strip > div, .proof-strip > div:first-child { min-height: 90px; padding: 17px 0; border-right: 0; border-bottom: 1px solid var(--line-light); }
  .page-hero { padding: 128px 0 66px; }
  .breadcrumbs { display: none; }
  .project-card-image { min-height: 300px; }
  .project-grid-featured .project-card:first-child .project-card-image { min-height: 340px; }
  .project-grid-featured .project-card:first-child .project-card-copy { padding: 30px 24px; }
  .lifecycle-grid, .lifecycle-detailed, .benefit-grid, .pathway-grid, .capability-grid, .article6-pillars, .logic-grid, .facts-grid, .team-grid, .leadership-grid, .compact-team-grid, .office-grid { grid-template-columns: 1fr; }
  .lifecycle-step, .phase, .benefit-card, .pathway-card, .capability, .pillar, .logic-step { min-height: auto; }
  .lifecycle-step span, .phase > span, .benefit-card > span, .pathway-card > span, .capability > span, .pillar > span, .logic-step > span { margin-bottom: 35px; }
  .service-card { min-height: 290px; padding: 28px; }
  .service-card > span { margin-bottom: 45px; }
  .project-gallery-grid { gap: 12px; }
  .project-story-grid { gap: 35px; }
  .process-step { grid-template-columns: 45px 1fr; gap: 18px; }
  .stat-panel { grid-template-columns: 1fr; }
  .route-card { min-height: 400px; }
  .advisory-scope { grid-template-columns: 1fr; padding: 26px; }
  .advisory-scope ul { grid-template-columns: 1fr; }
  .team-card-copy h3 { font-size: 1.35rem; }
  .article-header { padding-top: 145px; }
  .article-header h1 { font-size: clamp(3rem, 13vw, 4.5rem); }
  .article-visual { min-height: 330px; margin-top: 50px; padding: 26px; }
  .article-visual > img { width: 90px; }
  .article-layout { padding-top: 70px; }
  .article-aside { display: block; }
  .article-toc ol { grid-template-columns: 1fr; }
  .article-share { align-items: flex-start; }
  .author-box { grid-template-columns: 90px 1fr; gap: 22px; }
  .author-box img { width: 90px; }
  .author-box h2 { font-size: 2rem; }
  .form-row { grid-template-columns: 1fr; gap: 0; }
  .contact-form { padding: 25px; }
  .newsletter-form { grid-template-columns: 1fr; }
  .blog-filter { flex-direction: column; align-items: stretch; }
  .filter-topic, .filter-topic select { width: 100%; }
  .footer-links { grid-template-columns: repeat(2,1fr); }
  .footer-links > div:last-child { grid-column: 1 / -1; }
  .footer-bottom { flex-direction: column; align-items: flex-start; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; }
  .reveal { opacity: 1; transform: none; }
}

/* Defensive horizontal containment */
html, body { overflow-x: clip; }

@media (max-width: 620px) {
  .portrait-placeholder.large { min-height: 360px; }
}

/* Mobile containment refinements */
@media (max-width: 900px) {
  .site-nav {
    transform: none;
    opacity: 0;
    pointer-events: none;
    transition: opacity 220ms ease, visibility 220ms;
  }
  .site-nav.is-open {
    opacity: 1;
    pointer-events: auto;
  }
}

@media (max-width: 620px) {
  .portrait-placeholder.large {
    min-height: 0;
  }
  .advisory-scope > div:last-child {
    min-width: 0;
  }
  .advisory-scope h2 {
    overflow-wrap: anywhere;
  }
}

@media (max-width: 900px) {
  .legal-layout {
    grid-template-columns: minmax(0, 1fr);
    justify-content: stretch;
    gap: 48px;
  }
  .legal-nav {
    position: static;
    width: 100%;
  }
  .legal-content {
    min-width: 0;
  }
}

/* Narrow-screen type and grid safeguards */
.page-hero-grid > * {
  min-width: 0;
}

@media (max-width: 620px) {
  .page-hero h1 {
    font-size: clamp(2.7rem, 13vw, 3.8rem);
    overflow-wrap: anywhere;
  }
  .compact-hero h1 {
    font-size: clamp(2.55rem, 12vw, 3.45rem);
  }
  .project-hero-copy {
    width: 100%;
    min-width: 0;
    padding-inline: 18px;
  }
  .project-hero-copy h1 {
    font-size: clamp(2.1rem, 9vw, 2.6rem);
    overflow-wrap: anywhere;
  }
}

