/* Cultivera shell · the one owner of shared shell presentation on every route.
   Sections, in cascade order: global navigation, mobile shell, footer and closing CTA;
   footer living signature; no-JS navigation; directional nav scroll reveal and shared
   motion tokens. Page sheets load after this file and own their refinements.
   Behaviour is owned by cultivera-shell.js. */

/* ==== Global navigation, mobile shell, footer and closing CTA ==== */
:root{
  --cv-nav-height:64px;
  --global-nav-height:var(--cv-nav-height);
  --nav-height:var(--cv-nav-height);
  --nav-h:var(--cv-nav-height);
  --cv-shell-offset:var(--cv-nav-height);
  --cv-shell-max:1280px;
  --cv-shell-gutter:clamp(22px,3.5vw,42px);
  --cv-shell-paper:rgba(249,249,245,.975);
  --cv-shell-ink:#171b17;
  --cv-shell-muted:#5a605a;
  --cv-shell-line:rgba(23,27,23,.12);
  --cv-shell-ease:var(--cv-ease-enter);
}
.cv-global-nav{
  --cv-nav-cta:#141814;
  position:fixed;inset:0 0 auto;z-index:1000;height:var(--cv-nav-height);
  color:var(--cv-shell-ink);background:var(--cv-shell-paper);border-bottom:1px solid var(--cv-shell-line);
  box-shadow:none;backdrop-filter:blur(18px) saturate(1.04);-webkit-backdrop-filter:blur(18px) saturate(1.04);
  transition:background .28s var(--cv-shell-ease),color .28s var(--cv-shell-ease),border-color .28s var(--cv-shell-ease),backdrop-filter .28s var(--cv-shell-ease);
}
/* The project phone sheet is modal: its backdrop must cover the global header.
   The sheet/backdrop use z-index 999/998 and are managed by project-navigation-r48.js. */
body:has(.r48-project-sheet.is-open) .cv-global-nav{z-index:997}
.cv-global-nav[data-cv-page="advisory"]{--cv-nav-cta:#0b4936}
.cv-global-nav[data-cv-page="farms"]{--cv-nav-cta:#315541}
.cv-global-nav[data-cv-page="insights"]{--cv-nav-cta:#554a38}
.cv-global-nav[data-cv-page="about"]{--cv-nav-cta:#294638}
.cv-global-nav[data-cv-page="contact"]{--cv-nav-cta:#18362c}
.cv-global-nav[data-cv-page="field-systems"]{--cv-nav-cta:#141814}
.cv-global-nav__inner{width:min(calc(100% - 44px),var(--cv-shell-max));height:100%;margin-inline:auto;display:grid;grid-template-columns:136px 1fr auto;align-items:center;gap:clamp(24px,2.8vw,44px)}
.cv-global-brand{position:relative;display:inline-flex;align-items:center;align-self:center;width:136px;height:44px;min-height:44px}
.cv-global-logo{position:absolute;left:0;top:50%;width:136px;height:auto;transform:translateY(calc(-50% + 1px));transition:opacity .22s ease;pointer-events:none;filter:none;box-shadow:none;object-fit:contain;object-position:left center}
.cv-global-logo--primary{opacity:1}.cv-global-logo--reverse{opacity:0}
.cv-global-links{justify-self:center;display:flex;align-items:center;gap:clamp(18px,1.5vw,28px);font-family:var(--mono,"JetBrains Mono",ui-monospace,monospace);font-size:13px;font-weight:500;line-height:1;letter-spacing:.065em;text-transform:uppercase;color:var(--cv-shell-muted)}
.cv-global-links a{position:relative;display:inline-flex;align-items:center;min-height:44px;white-space:nowrap;color:inherit;text-decoration:none;transition:color .18s ease,opacity .18s ease}
.cv-global-links a::after{content:"";position:absolute;left:0;right:0;bottom:9px;height:1px;background:currentColor;opacity:0;transform:scaleX(.62);transform-origin:center;transition:opacity .18s ease,transform .2s var(--cv-shell-ease)}
.cv-global-links a:is(:hover,:focus-visible,[aria-current="page"]){color:var(--cv-shell-ink)}
.cv-global-links a:is(:hover,:focus-visible,[aria-current="page"])::after{opacity:.72;transform:scaleX(1)}
.cv-global-cta{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 18px;border:1px solid var(--cv-nav-cta);border-radius:999px;background:var(--cv-nav-cta);color:#fff;text-decoration:none;white-space:nowrap;font-family:var(--mono,"JetBrains Mono",ui-monospace,monospace);font-size:12px;font-weight:600;line-height:1;letter-spacing:.035em;box-shadow:0 5px 13px rgba(17,24,18,.11);transition:transform .18s var(--cv-shell-ease),filter .18s ease,box-shadow .18s ease}
.cv-global-cta:is(:hover,:focus-visible){transform:translateY(-1px);filter:brightness(1.12);box-shadow:0 8px 18px rgba(17,24,18,.15)}
.cv-global-menu{
  display:none;position:relative;justify-self:end;align-items:center;justify-content:flex-start;
  width:auto;height:44px;min-width:44px;min-height:44px;padding:0 40px 0 18px;border:1px solid currentColor;border-radius:999px;
  background:transparent;
  color:inherit;font-family:var(--mono,"JetBrains Mono",ui-monospace,monospace);font-size:12px;font-weight:600;line-height:1;letter-spacing:.075em;text-transform:uppercase;cursor:pointer;
  transition:color .16s ease,opacity .16s ease,filter .16s ease;
}
/* The plus sits after the visible "Menu" label and turns to a close mark when open. */
.cv-global-menu::before,.cv-global-menu::after{
  content:"";position:absolute;left:calc(100% - 20px);top:50%;width:13px;height:1.5px;border-radius:999px;
  background:currentColor;transform-origin:center;transition:transform 140ms var(--cv-shell-ease);
}
.cv-global-menu::before{transform:translate(-50%,-50%) rotate(0deg)}
.cv-global-menu::after{transform:translate(-50%,-50%) rotate(90deg)}
.cv-global-menu[aria-expanded="true"]::before{transform:translate(-50%,-50%) rotate(45deg)}
.cv-global-menu[aria-expanded="true"]::after{transform:translate(-50%,-50%) rotate(135deg)}
.cv-global-menu:is(:hover,:focus-visible){opacity:1}
.cv-global-menu:focus-visible{outline:2px solid currentColor;outline-offset:2px}
.cv-global-mobile{display:none;position:fixed;top:var(--cv-nav-height);left:0;right:0;z-index:999;box-sizing:border-box;max-height:calc(100vh - var(--cv-nav-height));max-height:calc(100dvh - var(--cv-nav-height));overflow-y:auto;overscroll-behavior-y:contain;scrollbar-gutter:stable;padding:14px 22px max(26px,env(safe-area-inset-bottom));border-bottom:1px solid var(--cv-shell-line);background:#f9f9f5;box-shadow:0 18px 42px rgba(10,24,16,.10)}
.cv-global-mobile.is-open{display:grid;align-content:start}.cv-global-mobile a{display:flex;align-items:center;min-height:48px;border-bottom:1px solid rgba(23,27,23,.09);color:var(--cv-shell-ink);font-family:var(--mono,"JetBrains Mono",ui-monospace,monospace);font-size:13px;font-weight:500;letter-spacing:.075em;text-transform:uppercase;text-decoration:none}.cv-global-mobile a[aria-current="page"]{font-weight:600}.cv-global-mobile > a:not(.cv-global-mobile__cta){padding-inline-start:12px}.cv-global-mobile > a[aria-current="page"]{color:#16382a;box-shadow:inset 2px 0 0 #528467}.cv-global-mobile .cv-global-mobile__cta{justify-content:center;margin-top:16px;border:0;border-radius:999px;background:#16382a;color:#fff;font-weight:600;letter-spacing:.045em}
body.mobile-menu-open,body.global-menu-open{overflow:hidden}

/* Home keeps the same shell geometry, but uses the reverse state over the hero. */
.cv-global-nav[data-cv-tone="overlay"]:not(.is-scrolled){color:#fff;background:transparent;border-bottom-color:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}
.cv-global-nav[data-cv-tone="overlay"]:not(.is-scrolled) .cv-global-logo--primary{opacity:0}.cv-global-nav[data-cv-tone="overlay"]:not(.is-scrolled) .cv-global-logo--reverse{opacity:1}
.cv-global-nav[data-cv-tone="overlay"]:not(.is-scrolled) .cv-global-links{color:rgba(255,255,255,.84)}.cv-global-nav[data-cv-tone="overlay"]:not(.is-scrolled) .cv-global-links a:is(:hover,:focus-visible,[aria-current="page"]){color:#fff}
.cv-global-nav[data-cv-tone="overlay"]:not(.is-scrolled) .cv-global-cta{border-color:rgba(255,255,255,.56);background:rgba(10,18,12,.34);color:#fff;box-shadow:none;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.cv-global-nav[data-cv-tone="overlay"]:not(.is-scrolled) .cv-global-menu{color:#fff;filter:drop-shadow(0 1px 2px rgba(0,0,0,.42))}
.cv-global-nav[data-cv-entry="transparent"][data-cv-tone="light"]:not(.is-scrolled){color:var(--cv-shell-ink);background:transparent;border-bottom-color:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}
.cv-global-nav[data-cv-entry="transparent"][data-cv-tone="light"]:not(.is-scrolled) .cv-global-cta{background:var(--cv-nav-cta);color:#fff;box-shadow:none}

/* Hero scrim: while the bar is transparent with white type over a photograph, a soft ink
   band sits behind it so the 13px links keep 4.5:1 on any frame. It is the bar's own
   ::before (painted under the logo, links and CTA, over the photo), fades out with the
   transparent state, and never darkens a paper bar (phone project headers, open menu). */
.cv-global-nav::before{content:"";position:absolute;inset:0 0 auto;height:calc(100% + 72px);z-index:-1;pointer-events:none;opacity:0;
  background:linear-gradient(to bottom,rgba(6,12,8,.6) 0%,rgba(6,12,8,.54) 34%,rgba(6,12,8,.36) 55%,rgba(6,12,8,.18) 72%,rgba(6,12,8,.06) 87%,rgba(6,12,8,0) 100%);
  transition:opacity .28s var(--cv-shell-ease)}
body:not(.project-theme):not(.mobile-menu-open):not(.global-menu-open) .cv-global-nav[data-cv-tone="overlay"]:not(.is-scrolled)::before{opacity:1}
@media(min-width:761px){body.project-theme:not(.mobile-menu-open):not(.global-menu-open) .cv-global-nav[data-cv-entry="transparent"]:not(.is-scrolled)::before{opacity:1}}
@media(prefers-reduced-motion:reduce){.cv-global-nav::before{transition:none}}

/* Leaf-only trustmark, sitewide (Home keeps its own copy in home.css, with the hero
   wordmark hand-off). Over the hero the bar carries only the leaf; the full logo waits
   behind it, cropped to its own leaves, and unfolds from the leaf when the bar turns to
   paper. Leaf box = the full logo's leaf group at 1.24x, from the 416-unit nav viewBox;
   resting scale(.8065) = 1/1.24 lands the leaf on the full logo's own leaves. Scripted
   pages only: without JS the bar never leaves the hero state, so it keeps the full logo. */
.cv-global-leaf{position:absolute;left:.894%;top:50%;width:28.765%;height:auto;opacity:0;pointer-events:none;transform:translateY(calc(-50% + 1px)) scale(.8065);transform-origin:-3.109% 50%;transition:opacity .22s ease,transform .45s var(--cv-ease-move)}
@media(scripting:enabled){
  body:not(.page-home) #mainNav[data-cv-tone="overlay"] .cv-global-logo{clip-path:inset(-2px -2px -2px -2px);transition:opacity .22s ease,clip-path .45s var(--cv-ease-move)}
  html body:not(.page-home) #mainNav.cv-global-nav[data-cv-tone="overlay"]:not(.is-scrolled) .cv-global-logo{opacity:0!important;clip-path:inset(-2px 74% -2px -2px)}
  /* Reverse leaf over the hero: 90% white with the MENU pill's contact shadow; hover and
     focus lift it to full white. */
  body:not(.page-home):not(.mobile-menu-open):not(.global-menu-open) #mainNav[data-cv-tone="overlay"]:not(.is-scrolled) .cv-global-leaf--reverse{opacity:.9;filter:drop-shadow(0 1px 2px rgba(0,0,0,.42));transform:translateY(calc(-50% + 1px))}
  body:not(.page-home):not(.mobile-menu-open):not(.global-menu-open) #mainNav[data-cv-tone="overlay"]:not(.is-scrolled) .cv-global-brand:is(:hover,:focus-visible) .cv-global-leaf--reverse{opacity:1}
  /* Coloured leaf on ivory: the menu opened over the hero. */
  body:not(.page-home):is(.mobile-menu-open,.global-menu-open) #mainNav[data-cv-tone="overlay"]:not(.is-scrolled) .cv-global-leaf--primary{opacity:1;transform:translateY(calc(-50% + 1px))}
}
@media(prefers-reduced-motion:reduce){
  body:not(.page-home) #mainNav[data-cv-tone="overlay"] .cv-global-logo{transition:opacity .22s ease}
  .cv-global-leaf{transition:opacity .22s ease}
}

/* Ink strip: pages whose hero starts on paper put a deep-green band the height of the bar
   at the top of the page, so the transparent bar reads over it as it does over a photo.
   The band scrolls away with the page; by then (18px) the bar has turned to paper. It
   replaces the photo scrim, which would only grey the paper below it. Page sheets that
   force a paper bar (Insights R18) are outranked only in this state. */
@media(scripting:enabled){
  body:has(#mainNav[data-cv-backdrop="ink"])::before{content:"";position:absolute;inset:0 0 auto;height:var(--cv-nav-height);z-index:990;pointer-events:none;background:#10241a;border-bottom:1px solid rgba(82,132,103,.55);box-sizing:border-box}
  html body:not(.mobile-menu-open):not(.global-menu-open) #mainNav.cv-global-nav[data-cv-backdrop="ink"]:not(.is-scrolled){color:#fff!important;background:transparent!important;border-bottom-color:transparent!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
  html body:not(.mobile-menu-open):not(.global-menu-open) #mainNav.cv-global-nav[data-cv-backdrop="ink"]:not(.is-scrolled) .cv-global-links{color:rgba(255,255,255,.84)!important}
  html body:not(.mobile-menu-open):not(.global-menu-open) #mainNav.cv-global-nav[data-cv-backdrop="ink"]:not(.is-scrolled) .cv-global-links a{color:inherit!important}
  html body:not(.mobile-menu-open):not(.global-menu-open) #mainNav.cv-global-nav[data-cv-backdrop="ink"]:not(.is-scrolled) .cv-global-links a:is(:hover,:focus-visible,[aria-current="page"]){color:#fff!important}
  html body:not(.mobile-menu-open):not(.global-menu-open) #mainNav.cv-global-nav[data-cv-backdrop="ink"]:not(.is-scrolled) .cv-global-cta{background:rgba(10,18,12,.34)!important;border-color:rgba(255,255,255,.56)!important;color:#fff!important;box-shadow:none!important}
  html body:not(.mobile-menu-open):not(.global-menu-open) #mainNav.cv-global-nav[data-cv-backdrop="ink"]:not(.is-scrolled) .cv-global-cta:is(:hover,:focus-visible){background:rgba(10,18,12,.5)!important;border-color:rgba(255,255,255,.72)!important}
  html body:not(.mobile-menu-open):not(.global-menu-open) #mainNav.cv-global-nav[data-cv-backdrop="ink"]:not(.is-scrolled) .cv-global-menu{color:#fff!important;border-color:currentColor!important;filter:none!important}
}
#mainNav[data-cv-backdrop="ink"]::before{display:none}
/* Phone project rails yield to a visible bar (project-navigation-r48 and the page sheets)
   only once they are docked at the top. In flow under the hero, where the bar is now held
   in view, the rail stays in place and takes taps. */
@media(max-width:760px){
  html:not(.cv-project-rail-docked):not(.cv-global-nav-hidden) .r48-project-nav:not(:focus-within):not(.is-sheet-open):not(.is-open){transform:none;pointer-events:auto}
  /* Focus and open sheets restore the phone rail; clear the returning header
     immediately so its controls and focus outlines remain visible. */
  html.cv-nav-scroll-reveal:not(.cv-global-nav-hidden) .r48-project-nav:is(:focus-within,.is-sheet-open,.is-open){top:calc(var(--cv-nav-height,64px) + 4px);transition:none}
}
/* Two Insights heroes set their eyebrow 50-60px from the top, which the strip would clip;
   they start below it instead (only while the strip is drawn). */
@media(scripting:enabled){
  body.page-biogas-policy:has(#mainNav[data-cv-backdrop="ink"]) .publication-hero .hero-grid{padding-top:max(calc(var(--cv-nav-height) + 24px),clamp(60px,7vw,96px))}
  body.page-scaling-biogas-bangladesh:has(#mainNav[data-cv-backdrop="ink"]) main .story-hero{padding-top:max(calc(var(--cv-nav-height) + 24px),clamp(52px,6vw,84px))}
}
/* Phone project pages: the bar stays transparent over the photo with Home's scrim behind
   it, outranking the paper plane of Packet 11D (which still serves the page without JS). */
@media(scripting:enabled) and (max-width:760px){
  html body.project-theme:not(.mobile-menu-open):not(.global-menu-open) #mainNav.cv-global-nav[data-cv-tone="overlay"]:not(.is-scrolled){color:#fff;background:transparent;border-bottom-color:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}
  html body.project-theme:not(.mobile-menu-open):not(.global-menu-open) #mainNav.cv-global-nav[data-cv-tone="overlay"]:not(.is-scrolled) .cv-global-menu{color:#fff;filter:drop-shadow(0 1px 2px rgba(0,0,0,.42))}
  html body.project-theme:not(.mobile-menu-open):not(.global-menu-open) #mainNav.cv-global-nav[data-cv-tone="overlay"]:not(.is-scrolled)::before{opacity:1}
}
/* Without JS the bar never learns it has left the hero, so overlay bars start on paper with
   the full logo, as Home's no-JS sheet does; the strip and scrim are not drawn. Retained
   Capital keeps its own no-JS shell. */
@media(scripting:none){
  html body:not(.page-retained-capital) #mainNav.cv-global-nav[data-cv-tone="overlay"]:not(#cv-nojs-boost){color:var(--cv-shell-ink)!important;background:var(--cv-shell-paper)!important;border-bottom-color:var(--cv-shell-line)!important;backdrop-filter:blur(18px) saturate(1.04)!important;-webkit-backdrop-filter:blur(18px) saturate(1.04)!important}
  html body:not(.page-retained-capital) #mainNav.cv-global-nav[data-cv-tone="overlay"]:not(#cv-nojs-boost)::before{opacity:0!important}
  html body:not(.page-retained-capital) #mainNav.cv-global-nav[data-cv-tone="overlay"]:not(#cv-nojs-boost) .cv-global-logo--primary{opacity:1!important}
  html body:not(.page-retained-capital) #mainNav.cv-global-nav[data-cv-tone="overlay"]:not(#cv-nojs-boost) .cv-global-logo--reverse{opacity:0!important}
  html body:not(.page-retained-capital) #mainNav.cv-global-nav[data-cv-tone="overlay"]:not(#cv-nojs-boost) .cv-global-links{color:var(--cv-shell-muted)!important}
  html body:not(.page-retained-capital) #mainNav.cv-global-nav[data-cv-tone="overlay"]:not(#cv-nojs-boost) .cv-global-links a{color:inherit!important;text-shadow:none!important}
  html body:not(.page-retained-capital) #mainNav.cv-global-nav[data-cv-tone="overlay"]:not(#cv-nojs-boost) .cv-global-links a:is(:hover,:focus-visible,[aria-current="page"]){color:var(--cv-shell-ink)!important}
  html body:not(.page-retained-capital) #mainNav.cv-global-nav[data-cv-tone="overlay"]:not(#cv-nojs-boost) .cv-global-cta{background:var(--cv-nav-cta)!important;border-color:var(--cv-nav-cta)!important;color:#fff!important}
  html body:not(.page-retained-capital) #mainNav.cv-global-nav[data-cv-tone="overlay"]:not(#cv-nojs-boost) .cv-global-menu{color:var(--cv-shell-ink)!important;filter:none!important}
}

/* Advisory's hero photograph runs under the bar from 761 to 1180px, where the muted links
   sat on its soft stems at 3.2:1. There the bar starts on paper, like the scrolled state. */
@media(min-width:761px) and (max-width:1180px){
  body.page-advisory .cv-global-nav[data-cv-entry="transparent"][data-cv-tone="light"]:not(.is-scrolled){background:var(--cv-shell-paper);border-bottom-color:var(--cv-shell-line);backdrop-filter:blur(18px) saturate(1.04);-webkit-backdrop-filter:blur(18px) saturate(1.04)}
}

/* Footer: one compact editorial plane. No Explore / Connect scaffolding. */
.cv-footer-v3{position:relative;margin:0;background:#070d09;color:#f3f5ef;border-top:1px solid rgba(169,202,156,.22)}
/* Footer imprint: brand and links share a top line; the contact rule runs the full width
   beneath both. The utility wrapper dissolves so nav and contact sit on the footer grid.
   The border is the only junction with the closing band; bundled copies may still draw a hairline. */
.cv-footer-v3::before{content:none}
.cv-footer-v3__inner{width:min(calc(100% - 44px),var(--cv-shell-max));margin-inline:auto;padding:clamp(44px,4.6vw,64px) 0 clamp(25px,2.6vw,34px);display:grid;grid-template-columns:minmax(210px,.62fr) minmax(0,1.38fr);grid-template-areas:"mast nav" "contact contact";gap:clamp(30px,3.2vw,44px) clamp(38px,6vw,86px);align-items:start}
.cv-footer-v3__mast{grid-area:mast;display:grid;gap:13px}.cv-footer-v3__brand{display:inline-flex;width:140px;min-height:44px;align-items:center}.cv-footer-v3__brand img{display:block;width:140px;height:auto}.cv-footer-v3__mast p{margin:0;color:rgba(243,245,239,.76);font-family:var(--sans,Inter,system-ui,sans-serif);font-size:.94rem;line-height:1.45}
.cv-footer-v3__utility{display:contents}.cv-footer-v3__nav{grid-area:nav;display:flex;flex-wrap:wrap;gap:4px clamp(18px,2vw,30px)}.cv-footer-v3__nav a,.cv-footer-v3__contact a{display:inline-flex;align-items:center;min-height:44px;color:rgba(243,245,239,.82);text-decoration:none;font-family:var(--mono,"JetBrains Mono",ui-monospace,monospace);font-size:11px;font-weight:550;line-height:1.3;letter-spacing:.045em;text-transform:uppercase;transition:color .18s ease}.cv-footer-v3__nav a:is(:hover,:focus-visible),.cv-footer-v3__contact a:is(:hover,:focus-visible){color:#fff}
.cv-footer-v3__contact{grid-area:contact;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 28px;padding-top:14px;border-top:1px solid rgba(255,255,255,.14)}.cv-footer-v3__contact>a:first-child{color:rgba(243,245,239,.94);text-transform:none;letter-spacing:.02em}.cv-footer-v3__credit{color:rgba(243,245,239,.68)!important;font-size:var(--cultivera-type-label-floor,.78rem)!important;text-transform:none!important;letter-spacing:.025em!important}
/* Stack with the closing band at 900px: brand, one row of links, then contact. */
@media(max-width:900px){.cv-footer-v3__inner{grid-template-columns:1fr;grid-template-areas:"mast" "nav" "contact";gap:24px}}

@media(min-width:761px) and (max-width:1180px){
  .cv-global-nav__inner{grid-template-columns:120px minmax(0,1fr) auto;gap:10px}
  .cv-global-brand,.cv-global-logo{width:120px}
  .cv-global-links{gap:clamp(14px,1.4vw,18px);font-size:clamp(11px,calc(.85vw + 2px),12px);letter-spacing:.025em}
  #mainNav .cv-global-cta,
  .cv-global-nav .cv-global-cta,
  .cv-global-cta{min-height:40px;padding:0 12px;font-size:11px}
}

/* Tablet and small-laptop widths (761-1180px) use MENU and the drawer, like phones and
   Home: seven links at 11px with tight tracking were the weakest type in the system.
   Without scripting the drawer cannot open, so the full link row stays. The drawer's rows
   keep a 560px reading column on the logo's axis instead of running the full width. */
@media(min-width:761px) and (max-width:1180px) and (scripting:enabled){
  .cv-global-nav__inner{grid-template-columns:120px 1fr auto}
  .cv-global-links{display:none}
  .cv-global-cta{display:none!important}
  .cv-global-menu{display:inline-flex;align-items:center;grid-column:3}
  .cv-global-mobile.is-open{grid-template-columns:minmax(0,560px)}
}
@media(max-width:760px){.cv-global-nav__inner{grid-template-columns:128px 1fr auto}.cv-global-links{display:none}.cv-global-cta{display:none!important}.cv-global-menu{display:inline-flex;align-items:center;grid-column:3}.cv-global-brand,.cv-global-logo{width:128px}.cv-global-mobile a:last-child:not([aria-current="page"]){margin-bottom:0}}
@media(max-width:720px){:root{--cv-nav-height:58px;--global-nav-height:58px;--nav-height:58px;--nav-h:58px}.cv-global-nav__inner{width:calc(100% - 40px);grid-template-columns:clamp(116px,30.5vw,124px) 1fr auto}.cv-global-brand,.cv-global-logo{width:clamp(116px,30.5vw,124px)}.cv-global-mobile{padding-inline:20px}.cv-footer-v3__inner{width:calc(100% - 40px);padding-top:34px}.cv-footer-v3__nav{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.cv-footer-v3__nav a{min-height:44px;display:flex;align-items:center}.cv-footer-v3__contact{display:grid;justify-content:start}}

/* Packet 11D · mobile overlay contrast only.
   Project pages already reserve the fixed-nav plane outside the hero; make that plane a readable shell.
   Home keeps its transparent hero treatment; only Menu owns a stable contrast surface. */
@media(max-width:760px){
  body.project-theme .cv-global-nav[data-cv-tone="overlay"]:not(.is-scrolled),
  body.project-theme .cv-global-nav[data-cv-entry="transparent"][data-cv-tone="light"]:not(.is-scrolled){
    color:var(--cv-shell-ink);
    background:var(--cv-shell-paper);
    border-bottom-color:var(--cv-shell-line);
    backdrop-filter:blur(18px) saturate(1.04);
    -webkit-backdrop-filter:blur(18px) saturate(1.04);
  }
  body.project-theme .cv-global-nav[data-cv-tone="overlay"]:not(.is-scrolled) .cv-global-logo--primary{opacity:1}
  body.project-theme .cv-global-nav[data-cv-tone="overlay"]:not(.is-scrolled) .cv-global-logo--reverse{opacity:0}
  body.project-theme .cv-global-nav[data-cv-tone="overlay"]:not(.is-scrolled) .cv-global-menu,
  body.project-theme .cv-global-nav[data-cv-entry="transparent"][data-cv-tone="light"]:not(.is-scrolled) .cv-global-menu{color:var(--cv-shell-ink);filter:none}
  body.page-home .cv-global-nav[data-cv-tone="overlay"]:not(.is-scrolled) .cv-global-menu{color:#fff}
}

/* Open menu: header and drawer read as one ivory sheet on every page and scroll state. */
body:is(.mobile-menu-open,.global-menu-open) #mainNav.cv-global-nav{color:var(--cv-shell-ink);background:#f9f9f5;border-bottom-color:var(--cv-shell-line);backdrop-filter:none;-webkit-backdrop-filter:none}
body:is(.mobile-menu-open,.global-menu-open) #mainNav .cv-global-logo{filter:none}body:is(.mobile-menu-open,.global-menu-open) #mainNav .cv-global-logo--primary{opacity:1}body:is(.mobile-menu-open,.global-menu-open) #mainNav .cv-global-logo--reverse{opacity:0}
body:is(.mobile-menu-open,.global-menu-open) #mainNav .cv-global-menu{color:var(--cv-shell-ink);filter:none}

@media(prefers-reduced-motion:reduce){
  .cv-global-nav,.cv-global-logo,.cv-global-links a,.cv-global-links a::after,.cv-global-cta,.cv-global-menu,.cv-global-menu::before,.cv-global-menu::after{transition:none}
}

/* Global interaction and CTA styling. */
body:is(.page-home,.page-field-systems,.page-advisory,.page-farms){--cv-page-cta:#173c2c;--cv-page-cta-hover:#0f3022}
body.page-home{--cv-page-cta:#141814;--cv-page-cta-hover:#263128}
body.page-advisory{--cv-page-cta:#0b4936;--cv-page-cta-hover:#123f31}
body.page-farms{--cv-page-cta:#315541;--cv-page-cta-hover:#244633}
body.page-field-systems{--cv-page-cta:#173c2c;--cv-page-cta-hover:#0f3022}
body:is(.page-home,.page-field-systems,.page-advisory,.page-farms) :is(button,input,select){font-synthesis:none}
body:is(.page-home,.page-field-systems,.page-advisory,.page-farms) :is(a,button,input,select):focus-visible{scroll-margin-top:calc(var(--cv-nav-height,64px) + 18px)}
.cv-global-links a,.cv-global-links a:is(:hover,:focus-visible,[aria-current="page"]){background:transparent;box-shadow:none;transform:none}
body .cv-primary-cta{display:inline-flex}
.cv-global-cta,body .cv-primary-cta{align-items:center;justify-content:center;min-height:44px;padding:0 20px;border:1px solid var(--cv-page-cta,var(--cv-nav-cta,#141814));border-radius:999px;background:var(--cv-page-cta,var(--cv-nav-cta,#141814));color:#fff;text-decoration:none;white-space:nowrap;font-family:var(--mono,"JetBrains Mono",ui-monospace,monospace);font-size:12px;font-weight:600;line-height:1;letter-spacing:.035em;box-shadow:none;transition:background .18s ease,border-color .18s ease,color .18s ease}
.cv-global-cta:is(:hover,:focus-visible),body .cv-primary-cta:is(:hover,:focus-visible){background:var(--cv-page-cta-hover,var(--cv-page-cta,#141814));border-color:var(--cv-page-cta-hover,var(--cv-page-cta,#141814));color:#fff!important;transform:none;filter:none;box-shadow:none}

/* Shared hero secondary CTA: no resting rule; underline draws from 0 → 100% on intent. */
:is(body.page-home .hero-actions .hero-secondary,body.page-field-systems .hero-actions .hero-secondary,body.page-about .topper__actions .btn.text-link){position:relative;display:inline-flex;align-items:center;min-height:46px;padding:0;border:0!important;border-radius:0;background:transparent;text-decoration:none!important;text-decoration-line:none!important;transition:color .18s ease}
:is(body.page-home .hero-actions .hero-secondary,body.page-field-systems .hero-actions .hero-secondary){color:rgba(255,255,255,.96);font:600 12px/1 var(--mono,"JetBrains Mono",ui-monospace,monospace)}
:is(body.page-home .hero-actions .hero-secondary,body.page-field-systems .hero-actions .hero-secondary,body.page-about .topper__actions .btn.text-link)::after{content:"";position:absolute;left:0;bottom:10px;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left center;transition:transform .24s var(--cv-shell-ease)}
:is(body.page-home .hero-actions .hero-secondary,body.page-field-systems .hero-actions .hero-secondary):is(:hover,:focus-visible){color:#fff}
:is(body.page-home .hero-actions .hero-secondary,body.page-field-systems .hero-actions .hero-secondary,body.page-about .topper__actions .btn.text-link):is(:hover,:focus-visible)::after{transform:scaleX(1)}
.cv-global-nav[data-cv-tone="overlay"]:not(.is-scrolled) .cv-global-cta{--cv-page-cta:rgba(10,18,12,.28);--cv-page-cta-hover:rgba(10,18,12,.42);border-color:rgba(255,255,255,.56)}

/* The header CTA speaks the same uppercase mono as the links, MENU and drawer CTA. */
#mainNav .cv-global-cta{text-transform:uppercase;letter-spacing:.065em}

/* One header CTA sitewide. Page accents stay on in-page buttons; the bar's CTA is the
   drawer's deep green on every paper bar, and one ink ghost wherever the bar carries
   white type over a photograph (the same states as the hero scrim). Page sheets set
   their own colours with !important, so this authority rule outranks them on purpose. */
html body #mainNav.cv-global-nav .cv-global-cta{background:#16382a!important;border-color:#16382a!important;color:#fff!important}
html body #mainNav.cv-global-nav .cv-global-cta:is(:hover,:focus-visible){background:#0f2a1f!important;border-color:#0f2a1f!important}
html body:not(.project-theme):not(.mobile-menu-open):not(.global-menu-open) #mainNav.cv-global-nav[data-cv-tone="overlay"]:not(.is-scrolled) .cv-global-cta{background:rgba(10,18,12,.34)!important;border-color:rgba(255,255,255,.56)!important}
html body:not(.project-theme):not(.mobile-menu-open):not(.global-menu-open) #mainNav.cv-global-nav[data-cv-tone="overlay"]:not(.is-scrolled) .cv-global-cta:is(:hover,:focus-visible){background:rgba(10,18,12,.5)!important;border-color:rgba(255,255,255,.72)!important}
@media(min-width:761px){
  html body.project-theme:not(.mobile-menu-open):not(.global-menu-open) #mainNav.cv-global-nav[data-cv-entry="transparent"]:not(.is-scrolled) .cv-global-cta{background:rgba(10,18,12,.34)!important;border-color:rgba(255,255,255,.56)!important}
  html body.project-theme:not(.mobile-menu-open):not(.global-menu-open) #mainNav.cv-global-nav[data-cv-entry="transparent"]:not(.is-scrolled) .cv-global-cta:is(:hover,:focus-visible){background:rgba(10,18,12,.5)!important;border-color:rgba(255,255,255,.72)!important}
}

body .cv-primary-cta:disabled,body .cv-primary-cta[aria-disabled="true"]{background:#e3e7e2;border-color:#d7dcd6;color:#747d76;cursor:not-allowed;box-shadow:none}

/* Sitewide shell refinements. */
body.page-insights{--cv-page-cta:#284f3c;--cv-page-cta-hover:#1f4232}
body.page-about{--cv-page-cta:#294638;--cv-page-cta-hover:#1f392d}
body.page-contact{--cv-page-cta:#18362c;--cv-page-cta-hover:#102a21}
body.page-crop-intelligence{--cv-page-cta:#315b46;--cv-page-cta-hover:#244a38}
body.project-theme{--cv-page-cta:#173c2c;--cv-page-cta-hover:#0f3022}

/* One quiet secondary-link grammar: no resting rule, 0 → 100% on intent, tight rule offset. */
body .cv-secondary-link,body .cv-hero-secondary{position:relative;display:inline-flex;align-items:center;width:max-content;max-width:100%;min-height:42px;padding:0;border:0!important;border-radius:0!important;background:transparent!important;color:inherit;text-decoration:none!important;box-shadow:none!important}
body .cv-secondary-link::after,body .cv-hero-secondary::after{content:"";position:absolute;left:0;bottom:8px;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left center;transition:transform .24s var(--cv-shell-ease)}
body .cv-secondary-link:is(:hover,:focus-visible)::after,body .cv-hero-secondary:is(:hover,:focus-visible)::after{transform:scaleX(1)}
body .cv-secondary-link{font:600 11px/1 var(--mono,"JetBrains Mono",ui-monospace,monospace);color:#2f4f40}

/* Footer must join the closing plane without page-local spacing seams. */
body .cv-footer-v3{margin-top:0}
body .cv-footer-v3__brand img{max-width:100%;object-fit:contain}

@media(prefers-reduced-motion:reduce){body .cv-secondary-link::after,body .cv-hero-secondary::after{transition:none}}

/* Project CTA control parity even where the project keeps a bespoke closing composition. */
body:is(.project-theme,.funding-converged-v1528) main>section:last-of-type a[href*="contact.html"]{display:inline-flex!important;align-items:center!important;justify-content:center!important;min-height:44px!important;padding:0 20px!important;border:1px solid var(--cv-page-cta,#173c2c)!important;border-radius:999px!important;background:var(--cv-page-cta,#173c2c)!important;color:#fff!important;box-shadow:none!important;text-decoration:none!important;font:600 11px/1 var(--mono,"JetBrains Mono",ui-monospace,monospace)!important;letter-spacing:.035em!important;transform:none!important}
body:is(.project-theme,.funding-converged-v1528) main>section:last-of-type a[href*="contact.html"]:is(:hover,:focus-visible){background:var(--cv-page-cta-hover,#0f3022)!important;border-color:var(--cv-page-cta-hover,#0f3022)!important;color:#fff!important;transform:none!important;filter:none!important}


/* Funding priorities inside the shared mobile menu inherit the institutional shell. */
.funding-mobile-menu__detail[hidden]{display:none}
@media(max-width:1180px){
  .cv-global-mobile .funding-mobile-menu{display:block;margin:0;padding:0 0 0 12px;border-bottom:1px solid rgba(23,27,23,.09)}
  .cv-global-mobile .funding-mobile-menu__head{display:flex;align-items:center;justify-content:flex-start;gap:12px;width:100%;min-height:44px;padding:0 40px 0 14px;position:relative;border:0;background:transparent;color:rgba(20,23,20,.72);text-align:left;cursor:pointer}
  .cv-global-mobile .funding-mobile-menu__head::before,.cv-global-mobile .funding-mobile-menu__head::after{content:"";position:absolute;right:14.5px;top:50%;width:11px;height:1.5px;border-radius:999px;background:currentColor;transform:translateY(-50%);transition:transform 140ms var(--cv-shell-ease)}
  .cv-global-mobile .funding-mobile-menu__head::after{transform:translateY(-50%) rotate(90deg)}
  .cv-global-mobile .funding-mobile-menu__head[aria-expanded="true"]::after{transform:translateY(-50%) rotate(0deg)}
  .cv-global-mobile .funding-mobile-menu__head:focus-visible{outline:2px solid currentColor;outline-offset:2px}
  .cv-global-mobile .funding-mobile-menu__body{margin-left:3px;padding-left:10px;padding-bottom:8px;border-left:1px solid rgba(23,27,23,.14)}
  .cv-global-mobile .funding-mobile-menu__body[hidden]{display:none}
  .cv-global-mobile .funding-mobile-menu__label{font-family:var(--mono,'JetBrains Mono',monospace);font-size:11px;font-weight:600;letter-spacing:.085em;text-transform:uppercase;color:inherit}
  .cv-global-mobile .funding-mobile-menu__head small{font-family:var(--mono,'JetBrains Mono',monospace);font-size:11px;color:rgba(20,23,20,.62)}
  .cv-global-mobile .funding-mobile-menu__list{display:grid}
  .cv-global-mobile .funding-mobile-menu__priority{min-height:48px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:baseline;align-content:center;width:100%;padding:0;border:0;border-top:1px solid rgba(23,24,19,.09);background:transparent;color:rgba(20,23,20,.78);text-align:left;font:500 14px/1.25 var(--sans,'Inter',sans-serif);cursor:pointer}
  .cv-global-mobile .funding-mobile-menu__priority small{font-family:var(--mono,'JetBrains Mono',monospace);font-size:12px;font-weight:500;color:rgba(20,23,20,.62)}
  .cv-global-mobile .funding-mobile-menu__priority:is(.is-active,[aria-expanded="true"]){color:#16382a;background:rgba(63,113,75,.045);box-shadow:inset 3px 0 0 #77a553;padding-left:12px}
  .cv-global-mobile .funding-mobile-menu__detail{padding:12px 0 8px;border-top:1px solid rgba(23,24,19,.1)}
  .cv-global-mobile .funding-mobile-menu__detail p{display:grid;gap:5px;margin:0;color:rgba(20,23,20,.68);font-size:12.5px;line-height:1.45}
  .cv-global-mobile .funding-mobile-menu__detail p strong{color:#16382a;font-size:13px}
  .cv-global-mobile .funding-mobile-menu__detail p em{font-style:normal;font-family:var(--mono,'JetBrains Mono',monospace);font-size:12px;letter-spacing:.02em;color:rgba(20,23,20,.62)}
  .cv-global-mobile .funding-mobile-menu__detail a{display:inline-flex;min-height:44px;align-items:center;margin-top:4px;padding:7px 0 0;border:0;color:#16382a;font-size:12.5px;font-weight:600}
}
/* Shared keyboard entry point for pages whose local bundle does not own one. */
.skip-link{
  position:fixed;
  top:12px;
  left:12px;
  z-index:10000;
  display:inline-flex;
  min-height:44px;
  align-items:center;
  padding:10px 16px;
  border-radius:999px;
  background:#fff;
  color:#102018;
  font:600 .875rem/1.2 Inter,system-ui,sans-serif;
  text-decoration:none;
  /* The lift shadow appears only on focus; at rest it bled 20px into ivory headers. */
  box-shadow:none;
  transform:translateY(calc(-100% - 24px));
  transition:transform 150ms ease;
}
.skip-link:focus,
.skip-link:focus-visible{transform:translateY(0);box-shadow:0 8px 24px rgba(8,24,16,.18)}


/* Shared closing CTA styling · 2026-08-21
   Main-site closing uses the same flat editorial grammar as project CTAs. */
body .global-closing.global-closing {
  position: relative;
  isolation: isolate;
  margin: 0;
  padding: clamp(66px, 7.5vw, 104px) 0 clamp(62px, 7vw, 94px);
  background: #10261a;
  color: #f3f4ee;
  border-top: 1px solid rgba(255,255,255,.12);
  overflow: hidden;
}
body .global-closing.global-closing::after { content: none; }
body .global-closing.global-closing > .container {
  position: relative;
  z-index: 1;
  width: min(calc(100% - 44px), var(--cv-shell-max, 1280px));
  max-width: none;
  margin-inline: auto;
  padding-inline: 0;
}
body .global-cta-band.global-cta-band {
  display: grid;
  width: 100%;
  margin: 0;
  grid-template-columns: minmax(0, .98fr) minmax(300px, .62fr);
  gap: clamp(42px, 7vw, 104px);
  align-items: end;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: inherit;
  box-shadow: none;
}
body .global-cta-kicker.global-cta-kicker {
  display: block;
  margin-bottom: 16px;
  color: #a9c49d;
  font-family: var(--mono,"JetBrains Mono",ui-monospace,monospace);
  font-size: 10px;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: .15em;
  text-transform: uppercase;
}
/* One measure for every closing headline; balance keeps a lone word off the last line. */
body .global-cta-title.global-cta-title {
  max-width: 14ch;
  margin: 0;
  color: #f5f4ed;
  font-family: var(--serif,"Playfair Display",Georgia,serif);
  font-size: clamp(3.35rem, 5.2vw, 5.75rem);
  font-weight: 500;
  line-height: .93;
  letter-spacing: -.048em;
  text-wrap: balance;
}
body .global-cta-action.global-cta-action {
  display: flex;
  min-width: 0;
  flex-direction: column;
  align-items: flex-start;
  gap: 0;
  padding-bottom: 4px;
}
body .global-cta-copy.global-cta-copy {
  max-width: 31rem;
  margin: 0;
  color: rgba(243,244,238,.72);
  font-family: var(--sans,Inter,system-ui,sans-serif);
  font-size: clamp(1rem,1.15vw,1.08rem);
  font-weight: 400;
  line-height: 1.58;
}
body .global-cta-actions.global-cta-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:26px; }
body .global-closing .cv-primary-cta,
body .global-closing .shell-primary-button {
  --cv-page-cta: #eef0e7;
  --cv-page-cta-hover: #ffffff;
  border-color: #eef0e7;
  background: #eef0e7;
  color: #10261a !important;
}
body .global-closing .cv-primary-cta:is(:hover,:focus-visible),
body .global-closing .shell-primary-button:is(:hover,:focus-visible) {
  border-color: #fff;
  background: #fff;
  color: #10261a !important;
}

/* Canonical project closing sections use the same flat family rather than a floating card. */
body.project-theme .closing-section--project {
  position: relative;
  isolation: isolate;
  margin: 0;
  padding: clamp(66px, 7.5vw, 104px) 0 clamp(62px, 7vw, 94px) !important;
  background: var(--project-closing-bg, #10261a) !important;
  overflow: hidden;
}
body.project-theme .closing-section--project::after { content: none; }
body.project-theme .closing-section--project>.container { position:relative; z-index:2; }
body.project-theme .closing-section--project .cta-band {
  position: relative;
  display: grid !important;
  grid-template-columns: minmax(0, .98fr) minmax(300px, .62fr) !important;
  gap: clamp(42px, 7vw, 104px) !important;
  align-items: end !important;
  overflow: visible;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  color: #141714 !important;
  box-shadow: none !important;
}
body.project-theme .closing-section--project .cta-band::before,
body.project-theme .closing-section--project .cta-band::after { content: none !important; }
body.project-theme .closing-section--project .head-action { display:flex !important; min-width:0; flex-direction:column; align-items:flex-start !important; }
body.project-theme .closing-section--project .closing-actions { margin-top:24px !important; }

@media (max-width: 900px) {
  body .global-cta-band.global-cta-band,
  body.project-theme .closing-section--project .cta-band {
    grid-template-columns: 1fr !important;
    gap: 28px !important;
    align-items: start !important;
  }
}

@media (max-width: 620px) {
  body .global-closing.global-closing {
    padding: 52px 0 54px;
  }
  body .global-closing.global-closing > .container {
    width: calc(100% - 40px);
    padding-inline: 0;
  }
  body .global-cta-band.global-cta-band,
  body.project-theme .closing-section--project .cta-band {
    padding: 0 !important;
    border-radius: 0 !important;
  }
  body .global-cta-title.global-cta-title {
    font-size: clamp(2.7rem, 12vw, 3.7rem);
  }
}

/* Project closing text contrast for the shared flat CTA treatment. */
body.project-theme .closing-section--project .section-kicker {
  display:block;
  margin-bottom:18px;
  color: var(--project-closing-accent, #a9c49d) !important;
  font-size:10.5px !important;
  letter-spacing:.145em !important;
}
body.project-theme .closing-section--project .section-title {
  max-width:10.5ch !important;
  margin:0 !important;
  color:#f4f7ef !important;
  font-size:clamp(3rem,4.75vw,5.15rem) !important;
  font-weight:500 !important;
  line-height:.95 !important;
  letter-spacing:-.048em !important;
}
body.project-theme .closing-section--project .cta-copy {
  max-width:34rem !important;
  margin:0 !important;
  color:rgba(244,247,239,.72) !important;
  font-size:clamp(1rem,1.15vw,1.08rem) !important;
  line-height:1.58 !important;
}
body.project-theme .closing-section--project .btn.primary {
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  min-height:44px !important;
  padding:0 20px !important;
  border:1px solid #eef0e7 !important;
  border-radius:999px !important;
  background:#eef0e7 !important;
  color:var(--project-closing-bg, #10261a) !important;
  box-shadow:none !important;
  font:600 11px/1 var(--mono,"JetBrains Mono",ui-monospace,monospace) !important;
  letter-spacing:.035em !important;
}
body.project-theme .closing-section--project .btn.primary:is(:hover,:focus-visible) {
  border-color:#fff !important;
  background:#fff !important;
  color:var(--project-closing-bg, #10261a) !important;
  transform:none !important;
}


/* Packet 11B · accessibility repair authority · 2026-08-22
   Confirmed 11A findings only. Resting layout and geometry are unchanged. */

/* Keyboard focus: make all Home hero SVG destinations visibly keyboard-owned. */
body.page-home .leaf-hotspot:focus-visible {
  filter:drop-shadow(0 0 3px rgba(255,255,255,.95)) !important;
}
body.page-home .leaf-hotspot:focus-visible path {
  stroke:#fff !important;
  stroke-width:1.6px !important;
  stroke-linejoin:round !important;
  vector-effect:non-scaling-stroke !important;
  fill:rgba(255,255,255,.018) !important;
}

/* Shared project navigation: muted text must remain AA on the light paper variants. */
body.project-theme .project-subnav :is(.project-subnav-neighbor-label,.project-subnav-current,.project-subnav-index),
body.project-theme .project-subnav-panel-head small,
body.project-theme .project-switcher-scope button,
body.project-theme .project-switcher-scope button span,
body.project-theme .project-switcher-project small,
body.project-theme .project-switcher-arrow {
  color:#596159 !important;
}
body.project-theme .project-subnav-neighbor { opacity:1 !important; }

/* Main-page solid-surface contrast repairs confirmed in Packet 11A. */
body.page-about .cv-stewardship__row > span { color:#5f675f !important; }
body.page-advisory .concept-tab[aria-selected="false"] :is(span,strong) { color:#626a63 !important; }
body.page-contact .route-number { color:#5f675f !important; }
body.page-field-systems #atlasScopeAll span { color:#596159 !important; }
body.page-field-systems .project-row__number { color:#596159 !important; }
body.page-field-systems .project-row__main small,
body.page-field-systems .field-interstitial__wide figcaption small,
body.page-field-systems .atlas-allocation-lens__mobile label > span,
body.page-field-systems .atlas-allocation-lens__key { color:#626a63 !important; }

/* Project-local solid-surface contrast repairs. */
body.page-cocores :is(.cocores-spine__evidence span,.cocores-spine__evidence small,.cocores-market-routes span,.cocores-spine__market figcaption span) { color:#576259 !important; }
body.page-cocores :is(.cocores-close__provenance,.cocores-close__provenance a) { color:#626a63 !important; }
body.theme-ecochar .ecfr-provenance :is(p,span) { color:#626a63 !important; }
body.theme-frio .market-image figcaption span { color:#545e55 !important; }
body.donor-glow #place .section-head span.eyebrow { color:#955c46 !important; }
body.donor-glow .glow-readiness-decision .depth-check b { color:#8c523c !important; }
body.donor-mavh #funding .bar [data-allocation-segment] :is(strong,span) { color:#fff !important; }
body.donor-mavh #record .fields dt { color:rgba(255,255,255,.62) !important; }
body.donor-lotus .lotus-lock-route-lead > span,
body.donor-lotus .lotus-lock-route-step small { color:rgba(255,255,255,.62) !important; }
body.donor-lotus #route #routeCaption {
  display:inline-block !important;
  padding:5px 7px !important;
  border-radius:2px !important;
  background:rgba(16,55,44,.92) !important;
  color:#fff !important;
  text-shadow:none !important;
}
body.donor-lotus #controls :is(.eyebrow,.depth-control p,.depth-rule),
body.donor-lotus :is(.depth-control p,.depth-rule) { color:#5f675f !important; }
body.theme-solar[data-solar-redesign="v15034"] #alternatives .response-ladder p { color:#545e55 !important; }
body.theme-solar[data-solar-redesign="v15034"] #alternatives .response-ladder > li > .mono { color:#285f4e !important; }
body.theme-sgc[data-art-thesis="material-to-settlement"] .sgc-atlas .sgc-kicker--gold { color:#765e23 !important; }
body.theme-sgc[data-art-thesis="material-to-settlement"] .sgc-passport__disclosure { color:rgba(20,32,28,.66) !important; }
body.theme-sgc[data-art-thesis="material-to-settlement"] .sgc-stage-index a { color:rgba(20,32,28,.66) !important; }

/* Green Flame closing action: retain the shared light-button treatment with dark text. */
body.theme-green-flame main .global-closing.global-closing :is(.cv-primary-cta,.shell-primary-button),
body.theme-green-flame main .global-closing.global-closing :is(.cv-primary-cta,.shell-primary-button):is(:hover,:focus-visible) {
  color:#10261a !important;
}

/* Cultivera 44px house target rule: only the three actionable mobile exceptions from 11A. */
@media (max-width:700px) {
  body.page-crop-intelligence #cropHeroSelect { min-height:44px !important; }
  body.theme-green-flame .gf-related-links .cv-secondary-link { min-height:44px !important; display:inline-flex !important; align-items:center !important; }
}

/* Reduced-motion: Home keeps state changes but removes authored motion. */
@media (prefers-reduced-motion:reduce) {
  body.page-home *,
  body.page-home *::before,
  body.page-home *::after {
    transition:none !important;
    animation:none !important;
    scroll-behavior:auto !important;
  }
}

/* Standard desktop/tablet hero-entry treatment for transparent project navigation.
   Contrast is provided by the shell plane; labels stay plain and effect-free.
   Project pages only: main pages with light heroes keep the plain light-tone state
   above (transparent, dark ink, primary logo) with no gradient plane. */
@media (min-width:768px) {
  body.project-theme .cv-global-nav[data-cv-entry="transparent"][data-cv-tone="light"]:not(.is-scrolled) {
    color:#fff;
    background:linear-gradient(180deg,rgba(7,13,9,.34) 0%,rgba(7,13,9,.15) 62%,rgba(7,13,9,0) 100%);
    border-bottom-color:transparent;
    backdrop-filter:none;
    -webkit-backdrop-filter:none;
  }

  body.project-theme .cv-global-nav[data-cv-entry="transparent"][data-cv-tone="light"]:not(.is-scrolled) .cv-global-logo--primary { opacity:0; }
  body.project-theme .cv-global-nav[data-cv-entry="transparent"][data-cv-tone="light"]:not(.is-scrolled) .cv-global-logo--reverse { opacity:1; }

  body.project-theme .cv-global-nav[data-cv-entry="transparent"][data-cv-tone="light"]:not(.is-scrolled) .cv-global-links {
    color:rgba(255,255,255,.88);
  }

  body.project-theme .cv-global-nav[data-cv-entry="transparent"][data-cv-tone="light"]:not(.is-scrolled) .cv-global-links a {
    color:inherit;
    text-shadow:none !important;
    -webkit-text-stroke-width:0 !important;
    filter:none !important;
  }

  body.project-theme .cv-global-nav[data-cv-entry="transparent"][data-cv-tone="light"]:not(.is-scrolled) .cv-global-links a:is(:hover,:focus-visible,[aria-current="page"]) {
    color:#fff;
  }

  body.project-theme .cv-global-nav[data-cv-entry="transparent"][data-cv-tone="light"]:not(.is-scrolled) .cv-global-cta {
    --cv-page-cta:rgba(8,15,10,.24);
    --cv-page-cta-hover:rgba(8,15,10,.36);
    border-color:rgba(255,255,255,.58);
    background:var(--cv-page-cta);
    color:#fff;
    box-shadow:none;
    backdrop-filter:none;
    -webkit-backdrop-filter:none;
    text-shadow:none;
    filter:none;
  }

  body.project-theme .cv-global-nav[data-cv-entry="transparent"][data-cv-tone="light"]:not(.is-scrolled) .cv-global-menu {
    color:#fff;
    filter:none;
  }
}

/* Keyboard focus for the shared shell. Project stylesheets draw the ring from --focus-ring-light,
   which only some project themes define; where it is missing the outline is dropped entirely.
   The nav and footer ring follows the text colour, so it reads on the dark hero and on paper.
   The filled CTA gets a light gap and a dark ring, which reads on either. */
:root{--focus-ring-light:#0d5138}
.cv-global-nav.cv-global-nav :is(a,button):focus-visible,
.cv-global-mobile.cv-global-mobile a:focus-visible,
.cv-footer-v3.cv-footer-v3 a:focus-visible{outline:2px solid currentColor;outline-offset:3px;border-radius:2px}
.cv-global-nav.cv-global-nav .cv-global-cta:focus-visible{outline:2px solid #141814;outline-offset:2px;box-shadow:0 0 0 2px #fff}
.cv-global-nav.cv-global-nav .cv-global-menu:focus-visible{border-radius:999px}
/* The CTA text is always white; page-level "a{color:inherit}" resets (Farms, Harvest Ready) otherwise
   hand it the scrolled nav's dark ink on the dark pill. */
.cv-global-nav .cv-global-cta.cv-global-cta{color:#fff}
/* Focusable tab panels (Biochar batch record) show where focus is. */
body.project-theme [role="tabpanel"][tabindex="0"]:focus-visible{outline:2px solid var(--focus-ring-light);outline-offset:4px}

/* Supporting type must remain readable alongside display headings. These are
   editorial labels and photo credits; data-chart scales retain their own sizing. */
body main .global-cta-kicker,
body.page-advisory main .kicker,
body.page-about main .about3-section-label,
body.page-farms main .section-kicker {
  font-size: 12px;
  line-height: 1.5;
  letter-spacing: .075em;
}
body:is(.page-advisory,.page-about,.page-farms) main figcaption {
  font-size: 12px;
  line-height: 1.55;
}
body.page-advisory .judgment.is-idle .kicker,
body.page-advisory .judgment.is-idle .result-summary,
body.page-advisory .result-stage {
  color: #526057;
}
body.page-advisory :is(.investment-case__media,.field-proof__media) figcaption {
  left: 0;
  right: 0;
  bottom: 0;
  padding: 26px 18px 14px;
  border: 0;
  background: linear-gradient(transparent,rgba(8,19,12,.88));
}

/* ==== Footer living signature ==== */
/* Cultivera Living Signature · Colour Transfer R3 · every footer page.
   Official full-logo SVG remains the static authority and no-JS fallback.
   A mouse or pen engages it (.cv-footer-signature-engaged, from pointer events,
   not (hover:hover), which touch laptops report as none), keyboards on
   focus-visible; devices with no hover input play it once per page view
   (.cv-footer-signature-playing). Both classes are set by cultivera-shell.js.
   Home and MAVH keep their closing-band refinements in closing-signature-prototype.css. */
.cv-footer-v3 .cv-footer-v3__brand {
  /* Colour Transfer R3 end state: the official colour-logo leaf fills
     (cultivera-logo-primary-nav.svg). The wordmark is never coloured. */
  --cv-leaf-top:#a7e75a;
  --cv-leaf-left:#218653;
  --cv-leaf-right:#78c95c;
  --cv-footer-ease-out:cubic-bezier(.22,.61,.36,1);
  /* Growth front travels at a near-steady pace so it reads at real speed. */
  --cv-grow-ease:cubic-bezier(.3,.15,.45,1);
  /* Whole-pixel 416:120 step (52n × 15n, n=3): fractional sizes make the
     snapped <img> and the live SVG anti-alias differently. */
  width:156px;
  position:relative;
  isolation:isolate;
}
.cv-footer-v3 .cv-footer-v3__brand :is(img,svg) {
  display:block;
  width:100%;
  height:auto;
  max-width:100%;
  overflow:visible;
  object-fit:contain;
}
.cv-footer-v3 .cv-footer-v3__brand img[hidden] {
  display:none!important;
}

/* At rest the mark is the exact official reverse SVG; a soft botanical field
   sits behind the three leaves only. Engaging recedes the field while the
   official leaf colours grow up through each leaf from its stem, lower leaves
   first, ending on the actual colour logo; exit draws the colour back to the
   stem. CSS transitions reverse from mid-flight, so a half-way exit resolves
   cleanly to white without a second engine. */
/* A square field centred on the leaf cluster (12.3% / 50% of the mark).
   closest-side reaches transparent at the inscribed circle and the mask
   feathers it again, so no rectangular boundary can ever paint. */
.cv-footer-v3 .cv-footer-v3__brand::before {
  content:"";
  position:absolute;
  z-index:-1;
  pointer-events:none;
  left:12.3%;
  top:50%;
  width:72%;
  aspect-ratio:1;
  transform:translate(-50%,-50%);
  border-radius:50%;
  background:radial-gradient(closest-side,rgba(74,138,88,.30),rgba(58,112,72,.15) 45%,rgba(46,92,60,.05) 72%,rgba(46,92,60,0));
  -webkit-mask-image:radial-gradient(closest-side,#000 55%,transparent);
  mask-image:radial-gradient(closest-side,#000 55%,transparent);
  opacity:1;
  transition:opacity 400ms var(--cv-footer-ease-out);
}
/* Rest is the official <img> itself, stacked over the live SVG. Chrome
   re-rasterises repainted inline-SVG edges slightly differently from first
   paint, so the SVG is shown only while the transfer is engaged and handed
   back to the image once the leaves are white again (exit completes <=400ms). */
.cv-footer-v3 .cv-footer-v3__brand.cv-footer-signature-ready img {
  position:absolute;
  left:0;
  top:0;
  transition:visibility 0s linear 420ms;
}
.cv-footer-v3 .cv-footer-v3__brand.cv-footer-signature-ready .cv-footer-signature-svg {
  visibility:hidden;
  transition:visibility 0s linear 420ms;
}
/* Leaf numbers follow source order: 1 = top, 2 = left, 3 = right.
   Each leaf keeps its white source path (base) and gains a colour copy
   masked by a feathered disc centred on the stem (.cv-footer-grow, built in
   cultivera-shell.js). Growing the disc's r is the organic start: colour
   rises from the stem to the tip. The base path takes the same colour the
   instant the disc is fully solid, so the end state has no white fringe.
   On exit the copy fades while it drains, so no speck is left at the stem.
   Enter: 450ms growth, 75ms stagger (left, right, top) = 600ms.
   Exit: 280ms recession (200ms fade), 60ms reverse stagger (top, right, left) = 400ms. */
.cv-footer-v3__brand .cv-footer-signature-svg [data-cv-footer-leaf="1"] {--cv-leaf:var(--cv-leaf-top)}
.cv-footer-v3__brand .cv-footer-signature-svg [data-cv-footer-leaf="2"] {--cv-leaf:var(--cv-leaf-left)}
.cv-footer-v3__brand .cv-footer-signature-svg [data-cv-footer-leaf="3"] {--cv-leaf:var(--cv-leaf-right)}
.cv-footer-v3__brand .cv-footer-signature-svg .cv-footer-leaf-colour path {fill:var(--cv-leaf)}
.cv-footer-v3__brand .cv-footer-signature-svg .cv-footer-leaf-colour {
  opacity:0;
  /* Fades out within 200ms of the 280ms drain: gone before the disc is small. */
  transition:opacity 200ms linear;
}
.cv-footer-v3__brand .cv-footer-signature-svg [data-cv-footer-leaf="1"] .cv-footer-leaf-colour {transition-delay:0ms}
.cv-footer-v3__brand .cv-footer-signature-svg [data-cv-footer-leaf="3"] .cv-footer-leaf-colour {transition-delay:60ms}
.cv-footer-v3__brand .cv-footer-signature-svg [data-cv-footer-leaf="2"] .cv-footer-leaf-colour {transition-delay:120ms}
/* Base path: white at rest; whitens at once on exit, under the still-full colour copy. */
.cv-footer-v3__brand .cv-footer-signature-svg .cv-footer-leaf-base path {
  fill:#ffffff;
  transition:fill 120ms linear;
}
.cv-footer-v3__brand .cv-footer-signature-svg .cv-footer-grow {
  r:0px;
  transition:r 280ms cubic-bezier(.45,.05,.55,.95);
}
.cv-footer-v3__brand .cv-footer-signature-svg .cv-footer-grow[data-cv-footer-grow="1"] {transition-delay:0ms}
.cv-footer-v3__brand .cv-footer-signature-svg .cv-footer-grow[data-cv-footer-grow="3"] {transition-delay:60ms}
.cv-footer-v3__brand .cv-footer-signature-svg .cv-footer-grow[data-cv-footer-grow="2"] {transition-delay:120ms}
/* Engaged: mouse/pen hover, keyboard focus-visible, and the one touch play-through. */
.cv-footer-v3 .cv-footer-v3__brand.cv-footer-signature-ready:is(:focus-visible,.cv-footer-signature-engaged,.cv-footer-signature-playing) img {visibility:hidden;transition-delay:0s}
.cv-footer-v3 .cv-footer-v3__brand.cv-footer-signature-ready:is(:focus-visible,.cv-footer-signature-engaged,.cv-footer-signature-playing) .cv-footer-signature-svg {visibility:visible;transition-delay:0s}
.cv-footer-v3 .cv-footer-v3__brand.cv-footer-signature-ready:is(:focus-visible,.cv-footer-signature-engaged,.cv-footer-signature-playing)::before {
  opacity:.12;
  transition-duration:600ms;
}
.cv-footer-v3__brand.cv-footer-signature-ready:is(:focus-visible,.cv-footer-signature-engaged,.cv-footer-signature-playing) .cv-footer-grow {
  r:var(--cv-grow-r);
  transition-duration:450ms;
  transition-timing-function:var(--cv-grow-ease);
}
.cv-footer-v3__brand.cv-footer-signature-ready:is(:focus-visible,.cv-footer-signature-engaged,.cv-footer-signature-playing) .cv-footer-leaf-colour {opacity:1;transition-duration:0s;transition-delay:0s}
.cv-footer-v3__brand.cv-footer-signature-ready:is(:focus-visible,.cv-footer-signature-engaged,.cv-footer-signature-playing) .cv-footer-grow[data-cv-footer-grow="2"] {transition-delay:0ms}
.cv-footer-v3__brand.cv-footer-signature-ready:is(:focus-visible,.cv-footer-signature-engaged,.cv-footer-signature-playing) .cv-footer-grow[data-cv-footer-grow="3"] {transition-delay:75ms}
.cv-footer-v3__brand.cv-footer-signature-ready:is(:focus-visible,.cv-footer-signature-engaged,.cv-footer-signature-playing) .cv-footer-grow[data-cv-footer-grow="1"] {transition-delay:150ms}
.cv-footer-v3__brand.cv-footer-signature-ready:is(:focus-visible,.cv-footer-signature-engaged,.cv-footer-signature-playing) .cv-footer-leaf-base path {
  fill:var(--cv-leaf);
  transition-duration:0s;
}
.cv-footer-v3__brand.cv-footer-signature-ready:is(:focus-visible,.cv-footer-signature-engaged,.cv-footer-signature-playing) [data-cv-footer-leaf="2"] .cv-footer-leaf-base path {transition-delay:450ms}
.cv-footer-v3__brand.cv-footer-signature-ready:is(:focus-visible,.cv-footer-signature-engaged,.cv-footer-signature-playing) [data-cv-footer-leaf="3"] .cv-footer-leaf-base path {transition-delay:525ms}
.cv-footer-v3__brand.cv-footer-signature-ready:is(:focus-visible,.cv-footer-signature-engaged,.cv-footer-signature-playing) [data-cv-footer-leaf="1"] .cv-footer-leaf-base path {transition-delay:600ms}
@media(prefers-reduced-motion:reduce){
  .cv-footer-v3 .cv-footer-v3__brand::before {transition:none;opacity:1!important}
  .cv-footer-v3 .cv-footer-v3__brand img {visibility:visible!important}
  .cv-footer-v3 .cv-footer-v3__brand .cv-footer-signature-svg {visibility:hidden!important}
  .cv-footer-v3__brand .cv-footer-signature-svg .cv-footer-leaf-base path {transition:none!important;fill:#fff!important}
  .cv-footer-v3__brand .cv-footer-signature-svg .cv-footer-grow {transition:none!important;r:0px!important}
  .cv-footer-v3__brand .cv-footer-signature-svg .cv-footer-leaf-colour {transition:none!important;opacity:0!important}
}

/* ==== No-JS navigation ==== */
@media (scripting: none) and (max-width: 760px) {
  body:not(.page-retained-capital) .cv-global-nav {
    position: relative !important;
    inset: auto !important;
    height: auto !important;
    min-height: 58px !important;
    background: #f9f9f5 !important;
    color: #171b17 !important;
    border-bottom: 1px solid rgba(23,27,23,.12) !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }
  body:not(.page-retained-capital) .cv-global-nav__inner {
    height: auto !important;
    min-height: 58px !important;
    grid-template-columns: minmax(116px,128px) 1fr !important;
    gap: 8px 18px !important;
    padding: 7px 0 9px !important;
  }
  body:not(.page-retained-capital) .cv-global-logo--primary { opacity: 1 !important; }
  body:not(.page-retained-capital) .cv-global-logo--reverse { opacity: 0 !important; }
  body:not(.page-retained-capital) .cv-global-menu,
  body:not(.page-retained-capital) .cv-global-cta { display: none !important; }
  body:not(.page-retained-capital) .cv-global-links {
    display: flex !important;
    grid-column: 1 / -1 !important;
    justify-self: start !important;
    flex-wrap: wrap !important;
    gap: 0 16px !important;
    color: #656b65 !important;
  }
  body:not(.page-retained-capital) .cv-global-links a {
    min-height: 44px !important;
    color: inherit !important;
  }
  body:not(.page-retained-capital) .cv-global-mobile { display: none !important; }
  body:not(.page-retained-capital) .cv-global-mobile + main { padding-top: 0 !important; }
}

/* Desktop fallback contents must start below the fixed global header. */
@media (scripting: none) and (min-width: 761px) {
  .project-subnav-noscript { margin-top: var(--cv-nav-height, 64px) !important; }
}

/* ==== Directional nav scroll reveal ==== */
/* Cultivera global navigation · directional scroll reveal.
   Behaviour is owned by cultivera-shell.js. This file only handles motion and
   keeps shared secondary navigation attached to the viewport when the main nav leaves. */

/* Shared motion curves. Every page loads this sheet, so it owns the tokens.
   enter: arrivals and reveals (long, soft settle)
   move:  state and position changes (quicker start, same settle)
   quiet: small fades and colour changes */
:root {
  --cv-ease-enter: cubic-bezier(.16,1,.3,1);
  --cv-ease-move: cubic-bezier(.2,.7,.2,1);
  --cv-ease-quiet: cubic-bezier(.22,.61,.36,1);
}

html.cv-nav-scroll-reveal .cv-global-nav {
  transform: translate3d(0, 0, 0);
  will-change: transform;
  transition:
    transform .32s var(--cv-shell-ease, var(--cv-ease-enter)),
    background .28s var(--cv-shell-ease, var(--cv-ease-enter)),
    color .28s var(--cv-shell-ease, var(--cv-ease-enter)),
    border-color .28s var(--cv-shell-ease, var(--cv-ease-enter)),
    backdrop-filter .28s var(--cv-shell-ease, var(--cv-ease-enter));
}

html.cv-nav-scroll-reveal.cv-global-nav-hidden .cv-global-nav {
  transform: translate3d(0, calc(-100% - 2px), 0);
  pointer-events: none;
}

/* Project pages keep their project rail useful while the global shell recedes. */
html.cv-nav-scroll-reveal .r42-project-nav,
html.cv-nav-scroll-reveal .hr-project-rail {
  transition: top .32s var(--cv-shell-ease, var(--cv-ease-enter));
}

html.cv-nav-scroll-reveal.cv-global-nav-hidden .r42-project-nav,
html.cv-nav-scroll-reveal.cv-global-nav-hidden .hr-project-rail {
  top: 0;
}

/* Insights keeps its local navigation attached to the viewport too. All local
   rails dock flush to the top while the global shell recedes. */
html.cv-nav-scroll-reveal .page-insights-r2 .ir-insights-nav,
html.cv-nav-scroll-reveal .paper-subnav,
html.cv-nav-scroll-reveal .story-subnav {
  transition: top .32s var(--cv-shell-ease, var(--cv-ease-enter));
}

html.cv-nav-scroll-reveal.cv-global-nav-hidden .page-insights-r2 .ir-insights-nav,
html.cv-nav-scroll-reveal.cv-global-nav-hidden .paper-subnav,
html.cv-nav-scroll-reveal.cv-global-nav-hidden .story-subnav {
  top: 0;
}

/* Long-view evidence instruments own the sticky inner plane above 900px.
   Mobile keeps the page-local compact atlas architecture unchanged. */
@media (min-width: 901px) {
  html.cv-nav-scroll-reveal.has-potato-longview-js body.page-insights-long-view .atlas-sticky {
    top: var(--cv-nav-height,64px);
    height: calc(100svh - var(--cv-nav-height,64px));
    transition:
      top .32s var(--cv-shell-ease, var(--cv-ease-enter)),
      height .32s var(--cv-shell-ease, var(--cv-ease-enter));
  }

  html.cv-nav-scroll-reveal.cv-global-nav-hidden.has-potato-longview-js body.page-insights-long-view .atlas-sticky {
    top: 0;
    height: 100svh;
  }
}

@media (prefers-reduced-motion: reduce) {
  html.cv-nav-scroll-reveal .cv-global-nav,
  html.cv-nav-scroll-reveal .r42-project-nav,
  html.cv-nav-scroll-reveal .hr-project-rail,
  html.cv-nav-scroll-reveal .page-insights-r2 .ir-insights-nav,
  html.cv-nav-scroll-reveal .paper-subnav,
  html.cv-nav-scroll-reveal .story-subnav,
  html.cv-nav-scroll-reveal.has-potato-longview-js body.page-insights-long-view .atlas-sticky {
    transition: none !important;
  }
}

/* Convergence: sticky secondary rails move through `top` only. Older project and
   Insights styles used transform as a second offset and could produce a visible jump
   when the global shell hid or returned. The r48 project rail is the one exception on
   phones: there it deliberately yields to the returning bar with translateY(-100%)
   (project-navigation-r48), which this guard used to cancel, leaving the rail hidden
   only because the bar happened to cover it. */
html.cv-nav-scroll-reveal .r42-project-nav:not(.r48-project-nav),
html.cv-nav-scroll-reveal .hr-project-rail,
html.cv-nav-scroll-reveal .page-insights-r2 .ir-insights-nav,
html.cv-nav-scroll-reveal.cv-global-nav-hidden .r42-project-nav:not(.r48-project-nav),
html.cv-nav-scroll-reveal.cv-global-nav-hidden .hr-project-rail,
html.cv-nav-scroll-reveal.cv-global-nav-hidden .page-insights-r2 .ir-insights-nav {
  transform:none !important;
}

@media (min-width: 761px) {
  html.cv-nav-scroll-reveal .r48-project-nav,
  html.cv-nav-scroll-reveal.cv-global-nav-hidden .r48-project-nav {
    transform:none !important;
  }
}

/* PR D · drawer choreography. The ivory sheet unrolls down from the header as one
   opaque surface (no page showing through mid-fade) while the header turns ivory
   (.28s above); its rows follow in an 18ms stagger, all settled by ~.45s. Closing
   rolls the sheet back up in one piece, quicker and with no stagger. The negative
   bottom inset keeps the sheet's shadow outside the clip. */
html.cv-nav-scroll-reveal .cv-global-mobile {
  clip-path: inset(0 0 100% 0);
  transition:
    clip-path .22s cubic-bezier(.4,0,.6,1),
    display .22s allow-discrete;
}

html.cv-nav-scroll-reveal .cv-global-mobile.is-open {
  clip-path: inset(0 0 -64px 0);
  transition:
    clip-path .36s var(--cv-shell-ease, var(--cv-ease-enter)),
    display 0s allow-discrete;
}

html.cv-nav-scroll-reveal .cv-global-mobile.is-open > * {
  transition:
    opacity .24s ease calc(60ms + var(--cv-row-delay, 0ms)),
    transform .3s var(--cv-shell-ease, var(--cv-ease-enter)) calc(60ms + var(--cv-row-delay, 0ms));
}

html.cv-nav-scroll-reveal .cv-global-mobile.is-open > :nth-child(2) { --cv-row-delay: 18ms; }
html.cv-nav-scroll-reveal .cv-global-mobile.is-open > :nth-child(3) { --cv-row-delay: 36ms; }
html.cv-nav-scroll-reveal .cv-global-mobile.is-open > :nth-child(4) { --cv-row-delay: 54ms; }
html.cv-nav-scroll-reveal .cv-global-mobile.is-open > :nth-child(5) { --cv-row-delay: 72ms; }
html.cv-nav-scroll-reveal .cv-global-mobile.is-open > :nth-child(6) { --cv-row-delay: 90ms; }
html.cv-nav-scroll-reveal .cv-global-mobile.is-open > :nth-child(7) { --cv-row-delay: 108ms; }
html.cv-nav-scroll-reveal .cv-global-mobile.is-open > :nth-child(8) { --cv-row-delay: 126ms; }
html.cv-nav-scroll-reveal .cv-global-mobile.is-open > :nth-child(n+9) { --cv-row-delay: 144ms; }

@starting-style {
  html.cv-nav-scroll-reveal .cv-global-mobile.is-open {
    clip-path: inset(0 0 100% 0);
  }

  html.cv-nav-scroll-reveal .cv-global-mobile.is-open > * {
    opacity: 0;
    transform: translate3d(0, -4px, 0);
  }
}

/* The MENU pill changes surface with the header instead of snapping. */
html.cv-nav-scroll-reveal .cv-global-menu {
  transition:
    color .28s ease,
    background-color .28s ease,
    border-color .28s ease,
    box-shadow .28s ease,
    filter .28s ease;
}

/* Scrim: the page below the open drawer recedes under a light ink veil. It is
   body's own pseudo-element, so a tap on it reaches body and the shell closes. */
html.cv-nav-scroll-reveal body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 998;
  background: rgba(9, 18, 12, .32);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity .2s ease, visibility 0s linear .2s;
}

html.cv-nav-scroll-reveal body:is(.mobile-menu-open, .global-menu-open)::after {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  cursor: pointer;
  transition: opacity .28s ease;
}

/* Desktop links: the rule draws in from the left on intent and leaves to the
   right, the same grammar as the hero's secondary link. */
html.cv-nav-scroll-reveal .cv-global-links a::after {
  opacity: .72;
  transform: scaleX(0);
  transform-origin: right center;
  transition: transform .24s var(--cv-shell-ease, var(--cv-ease-enter));
}

html.cv-nav-scroll-reveal .cv-global-links a:is(:hover, :focus-visible, [aria-current="page"])::after {
  transform: scaleX(1);
  transform-origin: left center;
}

@media (prefers-reduced-motion: reduce) {
  html.cv-nav-scroll-reveal .cv-global-mobile,
  html.cv-nav-scroll-reveal .cv-global-mobile.is-open,
  html.cv-nav-scroll-reveal .cv-global-mobile.is-open > *,
  html.cv-nav-scroll-reveal .cv-global-menu,
  html.cv-nav-scroll-reveal body::after,
  html.cv-nav-scroll-reveal body:is(.mobile-menu-open, .global-menu-open)::after,
  html.cv-nav-scroll-reveal .cv-global-links a::after {
    transition: none !important;
  }

  html.cv-nav-scroll-reveal .cv-global-mobile,
  html.cv-nav-scroll-reveal .cv-global-mobile.is-open {
    clip-path: none;
  }
}

/* Project rails · one call to action. When a project's rail docks under the bar, its own
   action ("Request brief", "Discuss partnership") already carries the project context,
   so the bar's generic "Start a brief" steps aside instead of stacking a second CTA
   50px above it. Rail actions speak the shell's CTA grammar: a pill, deep green when they
   lead to Contact, outlined when they only move within the page (and then the bar keeps
   its CTA). */
html.cv-nav-scroll-reveal .r48-project-nav__action {
  border-radius: 999px;
  letter-spacing: .065em;
}

html.cv-nav-scroll-reveal .r48-project-nav__action[href*="contact.html"] {
  background: #16382a;
  border-color: #16382a;
  color: #fff;
}

html.cv-nav-scroll-reveal .r48-project-nav__action[href*="contact.html"]:is(:hover, :focus-visible) {
  background: #0f2a1f;
  border-color: #0f2a1f;
  color: #fff;
}

html.cv-nav-scroll-reveal .r48-project-nav__action[href^="#"] {
  background: transparent;
  border-color: rgba(22, 56, 42, .45);
  color: #16382a;
}

html.cv-nav-scroll-reveal .r48-project-nav__action[href^="#"]:is(:hover, :focus-visible) {
  background: rgba(22, 56, 42, .08);
  border-color: #16382a;
  color: #16382a;
}

html.cv-nav-scroll-reveal #mainNav .cv-global-cta {
  transition: opacity .2s ease, visibility 0s linear 0s, background-color .18s ease, border-color .18s ease, color .18s ease;
}

@media (min-width: 761px) {
  html.cv-nav-scroll-reveal.cv-project-rail-docked body:has(.r48-project-nav__action[href*="contact.html"]) #mainNav .cv-global-cta {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity .2s ease, visibility 0s linear .2s, background-color .18s ease, border-color .18s ease, color .18s ease;
  }
}

@media (prefers-reduced-motion: reduce) {
  html.cv-nav-scroll-reveal #mainNav .cv-global-cta {
    transition: none !important;
  }
}
