/* ===== 00-shell-hero.css ===== */
/* ---- NOTE for the split build ------------------------------------------
   Rules below read  body#v3site  where the single-page design read
   body:has(:is(#heroScene,#hhHeroScene)).  In the SPA every page's markup
   was in the DOM at once, so that :has() was true on every page; per page it
   is true only on index and hedgehogs, and 20 shell rules (nav band height,
   logo inset, row padding, island inset) silently stopped applying — the nav
   row went 76px to 132px.  The id keeps the original specificity (1,0,1) so
   the :not(#_) overrides elsewhere still out-weigh these, as authored. */
/* ── Boot curtain ────────────────────────────────────────────────────────────
   A pseudo-element on <body>, not an injected node. An injected div parented to
   <html> (outside <body>) is not rendered by Safari, so on iOS the curtain
   simply did not exist. A ::before cannot be detached by the runtime's
   re-render either, and it paints with body's very first frame. */
html.nvboot, html.nvboot body{ background:#F3EAD1 !important; }
html.nvboot body::before{
  content:''; position:fixed; inset:0; background:#F3EAD1;
  z-index:2147483647; pointer-events:none; opacity:1;
}
html.nvboot.nv-fading body::before{ opacity:0; transition:opacity .3s ease; }
/* The hero's mask reveal, tree zoom and background fade are CSS animations —
   they start as soon as the element is styled, so behind a curtain they played
   out unseen. Hold them at frame 0 until it lifts. */
html.nvboot #heroZoom,
html.nvboot #heroZoom image,
html.nvboot #heroRevealC,
html.nvboot .hero-fill-b,
html.nvboot .hero-dots-svg circle,
html.nvboot :is(#heroScene,#hhHeroScene) .hero-word,
html.nvboot :is(#heroScene,#hhHeroScene) .hero-lean,
html.nvboot :is(#heroScene,#hhHeroScene) .hero-mark .hero-word::before{ animation-play-state:paused !important; }

/* ═══════════════════════════════════════════════════════════════════════════
   HOMEPAGE HERO — built to the section spec. Every selector is scoped to
   :is(#heroScene,#hhHeroScene) because this file also carries the old home-hero stylesheet,
   which owns .hero-cards / .hero-guides / .hero-media as class-only rules;
   an id + class beats those without needing !important.
   Substitutions, flagged rather than hidden: 'OV Soge' is not in this project,
   so the display face falls back to --f-display (Jost); the media still is the
   supplied hero image, not home-hero-video-still.webp.
   ═══════════════════════════════════════════════════════════════════════════ */
/* The scene carries the hero's cream so the 64px band above the sticky
   .sc-hero matches it — that band was showing the page's --paper (#F2E5BF)
   against the hero's #F3EAD1, which read as a seam under the nav. */
/* The reserved nav band differs by breakpoint because the nav itself does:
   above 1024px it is the compact 76px dnav strip; below that it is the
   floating logo + hamburger island, which runs to y=116. */
:is(#heroScene,#hhHeroScene){ position:relative; height:220vh; border-bottom:none; background:#F3EAD1;
  --v3-nav:76px; }
@media(max-width:1024px){ :is(#heroScene,#hhHeroScene){ --v3-nav:100px; } }
@media(max-width:820px){
  /* pin released here, so the band becomes real padding on a static hero.
     16px inset + 44px logo at 1.3x (57px) = 73px; 90 leaves the cards 17px
     clear of it. */
  :is(#heroScene,#hhHeroScene) .sc-hero{ padding-top:78px !important; }
  /* The desktop rule below flattens the logo because the 1.3x ran into the
     card tops there. On phones there is room, so the live site's enlargement
     stays — except while the nav is hidden, when its slide-up owns transform. */
  html:not(.nvnav-hidden) body#v3site .niv-logo-fix.logo-hero-big{
    transform:scale(1.3) !important; }
  /* …and when the nav hides, the slide-up must win over BOTH the rule above
     and the desktop flattening rule (which is also !important). */
  html.nvnav-hidden body#v3site .niv-logo-fix,
  html.nvnav-hidden body#v3site .niv-logo-fix.logo-hero-big{
    transform:translateY(-96px) !important; }
  /* In the solid bar the logo is vertically centred on the 76px sheet
     ((76 - 31) / 2 = 22px) and flat, on every page of the site. */
  /* Bar down: logo at 1.3x (31 -> 40px tall), centred on the 76px sheet. */
  html.nvnav-solid body#v3site .niv-logo-fix,
  html.nvnav-solid body#v3site .niv-logo-fix.logo-hero-big{
    top:18px !important; left:16px !important; transform:scale(1.3) !important;
    transform-origin:left center !important; }
  @media(max-width:520px){
    html.nvnav-solid body#v3site .niv-logo-fix,
    html.nvnav-solid body#v3site .niv-logo-fix.logo-hero-big{ left:12px !important; }
  }
  /* At the top of a page (hero showing) the logo keeps the site's phone inset. */
  /* On the landing hero the logo aligns to the title's left edge (card 12/16px
     + 1px border + 30px padding = 43/47px), minus the wordmark's own 2px side
     bearing so the ink lines up, not the box. */
  html:not(.nvnav-solid) body#v3site .niv-logo-fix{ left:45px !important; }
  /* Over the hero the menu disc carries the same 1px green hairline as the cards. */
  html:not(.nvnav-solid) body#v3site .niv-island:not(.open) .niv-fab{
    border:1px solid #456232 !important; }
  @media(max-width:520px){
    html:not(.nvnav-solid) body#v3site .niv-logo-fix{ left:41px !important; }
  }
}
/* Over the hero the nav row is deliberately 24px lower than its compact
   height (--niv-inset + 44 + 24). On this hero it crowded the card tops, so
   it sits at the compact 76px strip instead. */
@media(min-width:1025px){
  body#v3site .dnav:not(.dnav-solid) .dnav-row{ height:76px; }
  body#v3site .dnav:not(.dnav-solid) .dnav-panel{ top:84px; }
}
/* §3.2 pins the hero at top:64px because the source site has a 64px nav BAR.
   Here the nav is a floating logo + island: with the hero's 1.3x logo
   enlargement the logo ran to y=115 and sat on top of the card border. The
   enlargement is dropped on this hero and the band is the compact 76px strip,
   so the cards clear it instead of the title being nudged out of the way. */
body#v3site .niv-logo-fix.logo-hero-big,
body#v3site .niv-logo-fix{ transform:none !important; }
/* Logo flush with the title's left edge: shell padding + card border + card
   padding, the same three values that place the title. */
/* Nav aligned to the two hero cards: the logo sits on the LEFT card's left
   edge, and the links + button (one component, right-aligned in the row) end
   on the RIGHT card's right edge. Both edges are the shell's 3vw padding. */
body#v3site .niv-logo-fix,
body#v3site .dnav > .niv-logo-fix{ left:3vw !important; }
@media(min-width:1025px){
  body#v3site .dnav-row{ padding-left:3vw !important; padding-right:3vw !important; }
}
@media(max-width:1024px){
  body#v3site .niv-island{ right:3vw !important; }
}
@media(max-width:820px){
  body#v3site .niv-logo-fix,
  body#v3site .dnav > .niv-logo-fix{ left:20px !important; }
  body#v3site .niv-island{ right:20px !important; }
}
@media(max-width:520px){
  body#v3site .niv-logo-fix{ left:12px !important; }
  body#v3site .niv-island{ right:12px !important; }
}

/* While the lock is on, the nav is pinned in place regardless of what
   niv-app.js does to its state classes. */
html.v3-navlock .dnav,
html.v3-navlock .dnav.dnav-hidden{ transform:none !important; }
html.v3-navlock .niv-logo-fix,
html.v3-navlock .niv-island{ transform:none !important; opacity:1 !important; }
html.v3-navlock .mnav-sheet{ transform:none !important; }

/* The v3 HOME hero is cream, not a dark photo, so its nav reads green. Scoped
   to the home page: the AIF / PE / EB heroes are dark terracotta photos and
   keep the site's soft-gold logo and links. */
html.pg-home .dnav .dnav-link,
html.pg-home .dnav .dnav-item,
html.pg-home .dnav .dnav-portal{ color:#456232 !important; }
html.pg-home .dnav .dnav-portal{ border-color:#456232 !important; }
html.pg-home .niv-logo-fix .niv-logo-gold{ opacity:0 !important; }
html.pg-home .niv-logo-fix .niv-logo-green{ opacity:1 !important; }
/* ── Sector filter control: one fixed width, right-aligned ─────────────────
   Declared here in the document head because the equivalent rules further down
   sit inside a media query that does not match every width, so they silently
   did nothing. The control must never resize with its selected label (it went
   93 → 172 → 115px between sectors and dragged the row with it); an over-long
   label is clipped on the right. */
#hbSelect:not(#_), #peCoSelect:not(#_){
  width:258px !important; flex:0 0 auto !important; margin-left:auto !important; }
#hbSelect:not(#_) .niv-select-btn, #peCoSelect:not(#_) .niv-select-btn{
  width:100% !important; max-width:100% !important; box-sizing:border-box !important;
  justify-content:space-between !important; overflow:hidden !important; }
#hbSelect:not(#_) .niv-select-val, #peCoSelect:not(#_) .niv-select-val{
  flex:1 1 auto !important; min-width:0 !important; overflow:hidden !important;
  white-space:nowrap !important; text-overflow:clip !important; text-align:left !important; }
#hbSelect:not(#_) .niv-select-list, #peCoSelect:not(#_) .niv-select-list{
  box-sizing:border-box !important; }
/* The MENU does not follow the button. The button above is deliberately fixed
   and clips a long label, but the panel that opens from it has to show
   "Infrastructure & Logistics" on ONE line — and the wrap shrinks with the
   title (measured 258px at 1920, 208 at 1440, 173 at 1280, 91 at 901), so a
   panel pinned to it wrapped every long sector name above 760. This is the
   same treatment the max-width:760 block in 97-ways-mobile.css already applies, lifted
   to the wider viewports: content-sized with a floor that fits the longest
   label (176.5px of text + 28px padding + 3px border = 207.5px, floored at
   214), anchored to the button's RIGHT edge so it grows leftward into the
   section rather than off the page, and capped so it can never overflow.
   Below 901 the existing rules already do this. */
@media(min-width:901px){
  #hbSelect:not(#_) .niv-select-list, #peCoSelect:not(#_) .niv-select-list{
    left:auto !important; right:0 !important;
    width:max-content !important;
    min-width:max(100%,214px) !important;
    max-width:min(86vw,320px) !important; }
  #hbSelect:not(#_) .niv-select-opt, #peCoSelect:not(#_) .niv-select-opt{
    white-space:nowrap !important; }
}
/* The WRAP carries the width, not just the control: the wrap shrink-wrapped to
   its content, so "width:100%" on the control resolved against the label and
   the whole thing still grew. Fixing the wrap breaks that circularity. */
.pe-co-filter-wrap{ display:flex; flex-direction:column; align-items:flex-end;
  flex:0 0 auto !important; width:258px !important; max-width:100% !important;
  margin-left:auto !important; }
#hbSelect:not(#_) .niv-select-val, #peCoSelect:not(#_) .niv-select-val{
  flex:1 1 0 !important; width:0 !important; }
@media(max-width:900px){
  .pe-co-filter-wrap{ width:100% !important; align-items:stretch; margin-left:0 !important; }
  #hbSelect:not(#_), #peCoSelect:not(#_){ width:100% !important; margin-left:0 !important; }
}

/* Knowledge hub (and its sub-pages) on phones: the logo sits on the same left
   edge as the search field, filters and cards below it (16px), not the site's
   wider hero inset. :not(#_) for ID-level weight — see the note below. */
@media(max-width:1024px){
  html:is(.pg-knowledge,.pg-article,.pg-case-study,.pg-research,.pg-podcast,.pg-community) .niv-logo-fix:not(#_):not(#__),
  html:is(.pg-knowledge,.pg-article,.pg-case-study,.pg-research,.pg-podcast,.pg-community) .dnav > .niv-logo-fix:not(#_):not(#__){
    left:16px !important; }
}

/* On the dark photo heroes the logo aligns to the title's left edge (the
   sections' --hero-text-inset), but ONLY while the nav is at the top. Once it
   becomes the pulled-down bar its own inset rules again. Keyed off the pg-*
   class niv-app.js sets on <html> — never :has(), which hung the tab here. */
/* :not(#_) adds ID-level weight without matching anything — needed to beat
   `body#v3site .dnav > .niv-logo-fix{left:3vw}` above, whose :has(#id)
   already carries an ID. */
html.nav-at-top:is(.pg-aif-overview,.pg-private-equity,.pg-equity-baskets,.pg-strategy) .niv-logo-fix:not(#_),
html.nav-at-top:is(.pg-aif-overview,.pg-private-equity,.pg-equity-baskets,.pg-strategy) .dnav > .niv-logo-fix:not(#_){
  left:var(--hero-text-inset,78px) !important; }
@media(max-width:1024px){
  html.nav-at-top:is(.pg-aif-overview,.pg-private-equity,.pg-equity-baskets,.pg-strategy) .niv-logo-fix:not(#_),
  html.nav-at-top:is(.pg-aif-overview,.pg-private-equity,.pg-equity-baskets,.pg-strategy) .dnav > .niv-logo-fix:not(#_){
    left:24px !important; }
}

/* Soft gold logo on the dark photo heroes, every width (mobile has no .dnav).
   Keyed off the pg-* class niv-app.js puts on <html> — a :has() chain here was
   re-evaluated against the whole page on every mutation and hung the tab. */
html:is(.pg-aif-overview,.pg-private-equity,.pg-equity-baskets,.pg-strategy) .niv-logo-fix .niv-logo-gold{
  background-color:var(--gold) !important; }
html:is(.pg-aif-overview,.pg-private-equity,.pg-equity-baskets,.pg-strategy).nav-at-top .niv-logo-fix .niv-logo-gold{
  opacity:1 !important; }
html:is(.pg-aif-overview,.pg-private-equity,.pg-equity-baskets,.pg-strategy).nav-at-top .niv-logo-fix .niv-logo-green{
  opacity:0 !important; }
:is(#heroScene,#hhHeroScene) .sc-hero{ position:sticky; top:var(--v3-nav,76px); height:calc(100vh - var(--v3-nav,76px));
  display:flex; flex-direction:column; justify-content:flex-start;
  gap:16px; padding:clamp(20px,3vw,40px);
  background:#F3EAD1; color:#2C2E2B; overflow:hidden; border-bottom:none;
  box-sizing:border-box; opacity:1; animation:heroSceneIn .28s ease-out both; }
@keyframes heroSceneIn{ from{ opacity:0; } to{ opacity:1; } }

/* height is written by JS every frame — never declare one */
:is(#heroScene,#hhHeroScene) .hero-cards{ position:relative; display:grid; grid-template-columns:1fr 1fr;
  gap:16px; flex:0 0 auto; overflow:hidden; will-change:height; }
:is(#heroScene,#hhHeroScene) .hero-card{ border:1px solid #456232; background:#F2E5BF; overflow:hidden; }
:is(#heroScene,#hhHeroScene) .hero-card-text{ position:relative;
  padding:clamp(30px,3.6vw,56px) clamp(30px,3.6vw,56px) clamp(28px,3.4vh,44px);
  display:flex; flex-direction:column; justify-content:center; overflow:hidden; }

/* `color` is deliberately NOT declared for the shared selector — it is the
   client's to set in the Designer, which matters now the hero sits on a
   photograph and the type has to change with it. Hedgehogs keeps its pin
   immediately below, so that hero is untouched. */
:is(#heroScene,#hhHeroScene) .sc-hero-title{ font-family:'OV Sage','Jost',sans-serif; text-align:left;
  font-size:clamp(32px,3.8vw,58px); font-weight:400; line-height:1.12;
  letter-spacing:-.03em; margin:0 0 14px; max-width:none;
  white-space:normal; position:relative; z-index:2; }
#hhHeroScene .sc-hero-title{ color:#2C2E2B; }
/* opacity:0 only while the reveal is actually pending: if the runtime drops
   .cwr-blink, or JS never runs at all, the words must still be readable. */
/* ── Title: the live site's "For & By / Risktaking / Entrepreneurs", using its
   MOBILE treatment at every width. Those rules live inside
   @media(max-width:760px) upstream, so they are restated here unscoped —
   including heroBarIn, whose @keyframes is also inside that query and
   therefore does not exist when the query does not match.
   One deliberate colour change: "For & By" reads green, not gold. Upstream it
   sits on a dark terracotta photo; here the card is cream #F2E5BF, where gold
   on cream fails contrast. The marked words keep gold on green bars. ── */
:is(#heroScene,#hhHeroScene) .hero-belief{
  font-family:'OV Sage','Jost',sans-serif; font-weight:400; text-align:left;
  /* Sized off the card, not the viewport: the phone treatment uses 8.58vw
     because there the card IS the viewport, and .hero-u multiplies the base by
     2.05 — at half width that bled straight out. The binding constraint is now
     "needs no permission", the longest line in the block. */
  font-size:calc(clamp(39px,4.46vw,69px) * var(--v3-ts, 1)) !important;
  line-height:1.06; letter-spacing:-.015em;
  color:#456232; max-width:none; margin:0; transform-origin:left top; }
/* Upstream sets .hero-belief .hero-line:last-child .hero-u{ font-family:
   var(--f-serif) !important } — the serif treatment for the photo hero — so
   "Risktaking Entrepreneurs" rendered in Prata, not OV Sage. Forced on every
   descendant so all three lines share one face. */
:is(#heroScene,#hhHeroScene) .hero-belief,
:is(#heroScene,#hhHeroScene) .hero-belief *{ font-family:'OV Sage','Jost',sans-serif !important; }
:is(#heroScene,#hhHeroScene) .hero-belief .hero-line{ white-space:nowrap; }
/* "For & By" is 2.05x smaller than the two lines under it, so its gap needs
   to be set on its own scale rather than inherited from the title's leading. */
:is(#heroScene,#hhHeroScene) .hero-belief .hero-line{ display:inline-block; margin:0; }
/* breathing room between "Risktaking" and "Entrepreneurs" */
:is(#heroScene,#hhHeroScene) .hero-belief .hero-u .hero-word:first-child{
  margin-bottom:.1em; }
:is(#heroScene,#hhHeroScene) .hero-belief .hero-u{ line-height:1.14; }
/* Second title, two lines, at the base scale (the two lines above it are
   2.05em) — set on its own block so its leading is independent of theirs. */
/* Marker on "conviction needs no permission": a soft-gold bar behind the words
   rather than the site's green-bar/gold-text pair, because the title is green
   on cream here and inverting the text would break that. Swept with
   transform:scaleX — never background-size, which is a paint property. */
:is(#heroScene,#hhHeroScene) .hero-mark{ display:inline; }
/* One bar per WORD, not one per run: the sentence now wraps, and a single
   absolutely-positioned bar would span both lines as one rectangle. Each word
   carries its own bar and they sweep in sequence, so the effect reads as one
   marker travelling across two lines. */
:is(#heroScene,#hhHeroScene) .hero-mark .hero-word{ position:relative; padding:.06em .1em; }
/* the inter-word space was unpainted, so the bar looked broken into pieces;
   "conviction" (1) and "permission" (4) each end a line and stay flush */

:is(#heroScene,#hhHeroScene) .hero-mark .hero-word::before{
  content:''; position:absolute; inset:0; z-index:-1; background:#F0D88E;
  transform:scaleX(0); transform-origin:left center; }
:is(#heroScene,#hhHeroScene) .hero-mark .hero-word::before{
  animation:heroMarkX .34s cubic-bezier(.33,0,.24,1) both; }
:is(#heroScene,#hhHeroScene) .hero-mark .hero-word::before{ animation-delay:900ms; }
@keyframes heroMarkX{ to{ transform:scaleX(1); } }
@media(prefers-reduced-motion:reduce){
  :is(#heroScene,#hhHeroScene) .hero-mark .hero-word::before{ transform:scaleX(1); animation:none !important; }
}
:is(#heroScene,#hhHeroScene) .hero-belief .hero-line-bold .hero-word{ font-weight:700 !important; }
:is(#heroScene,#hhHeroScene) .hero-belief .hero-sub-line{
  display:block; margin-top:.45em; line-height:1.06; white-space:nowrap;
  /* em-based, so it tracks --v3-ts with the title */
  /* One line of 36 characters, so it is sized well below the 2.05em lines —
     at their size it would need ~510px and the card gives ~360 here.
     1.02em = 1.5x the previous .68em; at that size 36 characters cannot fit on
     one line in this card, so the sentence breaks in two. */
  font-size:1em; }
/* !important: a global .hero-br-m{display:none} (the desktop one-line form)
   wins on specificity otherwise, and "Entrepreneurs" stays on Risktaking's line */
:is(#heroScene,#hhHeroScene) .hero-belief .hero-br-m{ display:inline !important; }
/* The intro is CSS-only and starts hidden. It used to be gated on a JS-added
   .title-in class, so the words painted at full opacity, snapped to 0 when the
   class landed ~220ms later, and only then animated — the visible/invisible
   flash. Never gate an intro's HIDDEN state on a class that arrives after
   first paint; the curtain below holds the animation at frame 0 instead. */
:is(#heroScene,#hhHeroScene) .hero-word{ display:inline-block; opacity:0;
  animation:cwrWordBlinkGreen .52s ease both;
  animation-delay:calc(220ms + var(--wi,0) * 120ms); }

/* !important: upstream declares .hero-belief .hero-line:last-child .hero-u
   { color:#F0C257 !important } for the gold-on-photo hero. */
:is(#heroScene,#hhHeroScene) .hero-belief .hero-u{
  font-size:2.05em; color:#456232 !important;
  background:none; background-image:none; background-color:transparent;
  padding:0; text-decoration:none; }
:is(#heroScene,#hhHeroScene) .hero-belief .hero-u .hero-word{
  color:#456232 !important; position:relative; padding:0;
  box-decoration-break:clone; -webkit-box-decoration-break:clone; }
:is(#heroScene,#hhHeroScene) .hero-belief .hero-u .hero-word:first-child{
  margin-right:0; padding:0; display:inline-block;
  /* was 1.18em — the phone treatment sized "Risktaking" up. Every line except
     "For & By" is now one size; weight is the only distinction. */
  font-size:1em; font-style:normal; font-weight:700 !important; }
:is(#heroScene,#hhHeroScene) .hero-belief .hero-u .hero-word:last-child{
  padding:0; }
/* Upright: the family has no italic face, so the lean was a synthetic
   skewX(-13deg). Removed along with its animation. */
:is(#heroScene,#hhHeroScene) .hero-lean{ display:inline-block;
  transform:none !important; transform-origin:0 100%; }

/* No marker bars — the whole title is green. The pseudo-elements are
   suppressed rather than left unstyled, because the upstream mobile rules also
   declare them and would otherwise paint a bar here. */
:is(#heroScene,#hhHeroScene) .hero-belief .hero-u .hero-word::before,
:is(#heroScene,#hhHeroScene) .hero-belief .hero-u::before{
  content:none !important; display:none !important; }

/* sequence: For & By, then Risktaking leans + its bar, then Entrepreneurs */
:is(#heroScene,#hhHeroScene) .hero-belief .hero-line:last-child .hero-u .hero-word:first-child{
  animation-delay:420ms; }
:is(#heroScene,#hhHeroScene) .hero-belief .hero-line:last-child .hero-u .hero-word:last-child{
  animation-delay:840ms; }
@media(prefers-reduced-motion:reduce){
  :is(#heroScene,#hhHeroScene) .hero-word{ opacity:1 !important; animation:none !important; }
  :is(#heroScene,#hhHeroScene) .hero-lean{ animation:none !important; }
}

:is(#heroScene,#hhHeroScene) .cwr-word{ display:inline-block; }
:is(#heroScene,#hhHeroScene).words-pending .cwr-word{ opacity:0; }
:is(#heroScene,#hhHeroScene).words-pending .cwr-word.cwr-blink{ opacity:1; }
:is(#heroScene,#hhHeroScene) .cwr-bold{ font-weight:700; }
:is(#heroScene,#hhHeroScene) .sc-hero-title .cwr-word.cwr-blink{
  animation:cwrWordBlinkGreen .52s ease both; }

:is(#heroScene,#hhHeroScene) .sc-hero-sub{ margin:0 !important; font-family:'OV Sage','Jost',sans-serif; font-size:clamp(17px,1.7vw,23px); margin:0 0 30px; max-width:none;
  color:#000; line-height:1.3; letter-spacing:-.01em; opacity:0;
  position:relative; z-index:2; }

:is(#heroScene,#hhHeroScene) .hero-burst{ width:clamp(64px,6.5vw,104px); height:clamp(64px,6.5vw,104px);
  display:block; margin:clamp(16px,2.4vh,30px) 0 clamp(10px,1.4vh,16px);
  overflow:visible; transform-origin:center center;
  opacity:0; transform:scale(.4);
  transition:opacity .5s ease, transform .6s cubic-bezier(.16,1,.3,1),
    height .5s ease, margin .5s ease;
  position:relative; z-index:2; }
:is(#heroScene,#hhHeroScene) .hero-burst.in{ opacity:1; transform:scale(1); }
/* The burst leaves once the buttons arrive, but its slot must not vanish with
   it — that put the title straight on top of the buttons. Keep a gap where it
   stood, scaled with the title so it tracks the shrink. */
:is(#heroScene,#hhHeroScene) .hero-burst.out{ opacity:0; transform:scale(0); height:0;
  margin:0 0 clamp(30px,4.2vh,48px); }
:is(#heroScene,#hhHeroScene) .hb-dot{ fill:#456232; }
:is(#heroScene,#hhHeroScene) .hb-spin{ transform-box:view-box; transform-origin:50px 50px;
  animation:hbSpin 9s linear infinite; }
/* The ring keeps turning through its exit — "no stopping", the client's words.
   This line used to set `animation:none` here, which froze it the instant the
   scale-away began. With CSS the only rotation source (no SMIL, see below),
   freezing it here IS the stop. Hedgehogs never receives `.out`, so nothing
   changes there. */

:is(#heroScene,#hhHeroScene) .sc-hero-btns{ display:flex; gap:14px; flex-wrap:wrap;
  position:relative; z-index:2; opacity:0; transform:translateY(14px);
  transition:opacity .5s ease, transform .55s cubic-bezier(.33,1,.68,1); }
:is(#heroScene,#hhHeroScene) .sc-hero.buttons-in .sc-hero-btns{ opacity:1; transform:none; }
/* COLOUR IS THE DESIGNER'S. Only the shape and the transition are pinned here;
   `background`, `color` and `border` are left to the native Webflow style so
   the client can recolour the hero buttons themselves — necessary now the hero
   is a photograph and the buttons have to sit on whatever image is chosen.
   Hedgehogs keeps the original palette immediately below. */
:is(#heroScene,#hhHeroScene) .hero-btn-lg{ font-family:'OV Sage','Jost',sans-serif; font-weight:500;
  font-size:15.6px; padding:13px 26px;
  cursor:pointer; transition:background-color .3s ease, color .3s ease; }
#hhHeroScene .hero-btn-lg{ background:#456232; color:#F2E5BF; border:1px solid #456232; }
#hhHeroScene .hero-btn-lg:hover{ background:transparent; color:#456232; }
/* ⚠ .hero-btn-alt is not used on the home hero. The client asked for the two
   actions to read identically — "make it same as the aif button, same default
   state, same hover state… this applies on all breakpoints" — so the Private
   Equity button was given the AIF button's exact class chain in the Designer
   (`btn filled hero-btn-lg`) rather than a second set of colours to keep in
   step. Identical chain, identical everything, at every breakpoint and state,
   with nothing here to maintain.

   BOTH rules below are now #hhHeroScene-only. The :hover was still shared, and
   because a bundle rule is unlayered and id-scoped on the published page it
   outranks anything native — so while the home button carried the alt class,
   the client's Designer hover was silently overridden on production. That is
   the same class of bug as the pinned hero image; the fix is the same one:
   scope the pin to the page that still needs it. */
#hhHeroScene .hero-btn-alt{ background:transparent; color:#456232; }
#hhHeroScene .hero-btn-alt:hover{ background:#456232; color:#F2E5BF; }

:is(#heroScene,#hhHeroScene) .hero-guides{ position:absolute; inset:0; width:100%; height:100%;
  pointer-events:none; overflow:visible; z-index:0; }
:is(#heroScene,#hhHeroScene) .hg{ stroke:#456232; stroke-width:1.4; stroke-linecap:round;
  transition:stroke .3s ease, stroke-width .3s ease; }
:is(#heroScene,#hhHeroScene) .hg-node{ fill:#456232; opacity:0; transition:opacity .4s ease; }

:is(#heroScene,#hhHeroScene) .hero-scrollcue{ position:absolute; right:26px; bottom:22px;
  display:flex; align-items:center; gap:10px;
  font-family:'OV Sage','Jost',sans-serif; font-size:12px;
  letter-spacing:.14em; text-transform:uppercase; color:#456232;
  pointer-events:none; opacity:0; transition:opacity .5s ease; }
:is(#heroScene,#hhHeroScene) .hsc-arrow{ font-size:18px; line-height:1;
  animation:hscNudge 1.2s ease-in-out infinite; }

:is(#heroScene,#hhHeroScene) .hero-card-video{ position:relative; background:#456232; overflow:hidden; }

/* Phones: image card on top, text card under it, both inside one screen.
   The image card takes more of the frame and the text card starts lower, with
   one gap-driven rhythm inside it. */
@media(max-width:860px){
  /* top edge on the homepage hero's line (78px), so the image card starts where
     the homepage's top card does — the extra height goes to the image */
  #hhHeroScene.hero-scene .sc-hero{ padding-top:78px !important;
    padding-bottom:10px !important; overflow:visible !important; }
  #hhHeroScene.hero-scene .hero-cards{ display:flex !important; flex-direction:column !important;
    gap:10px; grid-template-columns:none !important;
    /* both cards inside the visible frame: viewport minus the top band and the
       shell's own bottom padding, nothing more */
    height:calc(100svh - 78px - 12px) !important; min-height:0; }
  #hhHeroScene.hero-scene .hero-card-video{ order:1; flex:1 1 50%;
    min-height:0 !important; height:auto !important; }
  #hhHeroScene.hero-scene .hero-media{ top:-16% !important; height:132% !important;
    background-size:cover !important; background-position:center 42% !important; }
  #hhHeroScene.hero-scene .hero-card-text{ order:2; flex:1 1 50%; min-height:0;
    display:flex; flex-direction:column; justify-content:center;
    gap:clamp(8px,1.5vh,13px);
    padding:clamp(13px,3.6vw,18px) clamp(15px,4.2vw,20px) clamp(13px,2.4vh,18px) !important;
    padding-left:clamp(26px,7vw,34px) !important; }
  #hhHeroScene.hero-scene .hero-card-text > *{ margin:0 !important; }
  #hhHeroScene.hero-scene .hh-hero-tag{ font-size:10px !important; padding:4px 9px !important;
    letter-spacing:.1em !important; }
  #hhHeroScene.hero-scene .hh-hero-titlerow{ display:flex; align-items:flex-start;
    gap:clamp(8px,2.4vw,14px); justify-content:space-between; }
  #hhHeroScene.hero-scene .hh-hero-titlerow .hero-belief{ flex:1 1 auto; min-width:0; }
  #hhHeroScene.hero-scene .hh-hero-titlerow .hero-burst{ flex:0 0 auto; margin:1px 0 0 !important;
    width:clamp(60px,15.8vw,78px) !important; height:clamp(60px,15.8vw,78px) !important; }
  #hhHeroScene.hero-scene .sc-hero-title.hero-belief{ font-size:clamp(25px,7.4vw,35px) !important;
    line-height:1.05 !important; }
  #hhHeroScene.hero-scene .sc-hero-title.hero-belief .hero-line{ white-space:normal; }
  #hhHeroScene.hero-scene .hh-title-br{ display:inline !important; }
  #hhHeroScene.hero-scene .sc-hero-sub.hh-hero-lead{ font-size:clamp(13.5px,3.7vw,15.5px) !important;
    line-height:1.42 !important; max-width:38ch !important; text-align:left !important; }
  #hhHeroScene.hero-scene .sc-hero-btns{ display:flex; gap:8px; flex-wrap:nowrap !important;
    width:100%; }
  #hhHeroScene.hero-scene .sc-hero-btns .btn{ font-size:11px !important;
    padding:0 10px !important; letter-spacing:.03em !important;
    flex:1 1 0 !important; min-width:0 !important; white-space:nowrap;
    text-align:center; justify-content:center; }
  #hhHeroScene.hero-scene .hero-scrollcue{ display:none !important; }
}
@media(min-width:861px) and (max-width:1024px){
  #hhHeroScene.hero-scene .sc-hero-title.hero-belief{ font-size:clamp(26px,3.1vw,36px) !important;
    line-height:1.1 !important; margin-bottom:12px !important; }
  #hhHeroScene.hero-scene .hh-hero-tag{ font-size:11.5px !important; padding:6px 11px !important;
    margin-bottom:12px !important; }
  #hhHeroScene.hero-scene .sc-hero-sub.hh-hero-lead{ font-size:15px !important; line-height:1.45 !important;
    margin-bottom:12px !important; }
  #hhHeroScene.hero-scene .hero-burst{ width:46px !important; height:46px !important; margin:0 0 12px !important; }
  #hhHeroScene.hero-scene .sc-hero-btns{ flex-wrap:nowrap !important; gap:8px; }
  #hhHeroScene.hero-scene .sc-hero-btns .btn{ font-size:12px !important; padding:7px 13px !important;
    white-space:nowrap; }
  #hhHeroScene.hero-scene .hero-card-text{ padding:22px 24px 20px !important; }
}
/* The tag's marker bar: the shared ::before has no colour outside the two old
   fund sections, so the sweep was invisible here. On this hero it runs on load
   (CSS, held by the boot curtain like the title) and stays. */
#hhHeroScene .aif-fund-feature-status.hl::before{ background:#F0D88E; }
#hhHeroScene .aif-fund-feature-status.hl{ color:var(--greenDeep) !important; }
#hhHeroScene .aif-fund-feature-status.hl::before{
  animation:hhTagSweep .6s cubic-bezier(.4,0,.2,1) 320ms both; }
@keyframes hhTagSweep{ from{ transform:scaleX(0); } to{ transform:scaleX(1); } }
html.nvboot #hhHeroScene .aif-fund-feature-status.hl::before{ animation-play-state:paused !important; }
@media(prefers-reduced-motion:reduce){
  #hhHeroScene .aif-fund-feature-status.hl::before{ animation:none !important; transform:scaleX(1); }
  #hhHeroScene .sc-hero-title.hero-belief{ transition:none !important; }
}
/* Hedgehogs page: the floating logo keeps the NAV BAR's own inset at every
   scroll position, rather than the hero card's left edge. :not(#_) adds ID
   weight so this beats the body:has(#hhHeroScene) rules, which are !important. */
@media(max-width:1024px){
  html.pg-hedgehogs .niv-logo-fix:not(#_):not(#__),
  html.pg-hedgehogs .dnav > .niv-logo-fix:not(#_):not(#__){ left:16px !important; }
}
@media(max-width:520px){
  html.pg-hedgehogs .niv-logo-fix:not(#_):not(#__),
  html.pg-hedgehogs .dnav > .niv-logo-fix:not(#_):not(#__){ left:12px !important; }
}
/* Icons in the unlisted cards — same geometry and gold hover as the strategy
   non-negotiable cards. */
.hh-unl-star{ display:block; width:clamp(84px,7vw,116px); height:clamp(84px,7vw,116px);
  margin-top:clamp(22px,2.4vw,34px); overflow:visible; }
.hh-unl-star line{ stroke:var(--greenDeep); stroke-width:2.4; stroke-linecap:round; }
.hh-unl-star circle{ fill:var(--greenDeep); }
.hh-unl-star g{ transform-box:view-box; transform-origin:50px 50px; will-change:transform; }
@media(max-width:860px){
  /* phones: beside the title, top-aligned, flush right */
  #hhUnlistedSection .scutt-sidebar{ display:flex !important; flex-direction:row !important;
    align-items:flex-start !important; justify-content:space-between !important; gap:16px; }
  #hhUnlistedSection .scutt-sidebar .scutt-heading{ flex:1 1 auto; min-width:0; }
  #hhUnlistedSection .hh-unl-star{ flex:0 0 auto; width:72px; height:72px; margin:0 !important; }
}
#hhUnlistedSection .scutt-c-txt{ min-width:0; }
#hhUnlistedSection .kim-head{ display:flex; align-items:flex-start; gap:clamp(16px,1.8vw,26px); }
#hhUnlistedSection .kim-head .scutt-card-title{ flex:1; min-width:0; line-height:1.2; }
#hhUnlistedSection .scutt-ico{ flex:0 0 auto; order:-1;
  width:clamp(36px,3.2vw,46px); height:clamp(36px,3.2vw,46px);
  margin-top:calc((clamp(23px,2.4vw,33px) * 1.2 - clamp(38px,3.4vw,50px)) / 2 - 1px);
  fill:none; stroke:var(--greenDeep); stroke-width:1;
  stroke-linecap:round; stroke-linejoin:round; transition:stroke .3s ease; }
@media(hover:hover) and (min-width:861px){
  #hhUnlistedSection .scutt-card:hover .scutt-ico{ stroke:#F0C257; }
}
#hhUnlistedSection .scutt-card.auto-on .scutt-ico,
#hhUnlistedSection .kim-card.is-open .scutt-ico{ stroke:#F0C257; }
@media(max-width:860px){
  #hhUnlistedSection .kim-head{ gap:14px; }
  #hhUnlistedSection .scutt-ico{ width:36px; height:36px; stroke-width:1;
    margin-top:calc((clamp(21px,5.6vw,28px) * 1.2 - 34px) / 2 - 1px); }
}
/* Hedgehogs closing CTA on phones: the two buttons were 202px + 267px on one
   nowrap row, so they ran past the box. Stack them full width. */
/* Footer action buttons on phones: five long labels in one row wrapped into
   ragged pairs and clipped. Two even columns, one height, centred labels. */
@media(max-width:760px){
  .gfoot-actions .gfoot-actions-row{
    display:grid !important; grid-template-columns:1fr 1fr !important;
    gap:8px !important; width:100% !important; }
  .gfoot-actions .gfoot-actions-row > .btn{
    display:flex !important; align-items:center !important; justify-content:center !important;
    width:100% !important; min-width:0 !important; box-sizing:border-box !important;
    height:44px !important; min-height:44px !important; padding:0 10px !important; margin:0 !important;
    font-size:12px !important; line-height:1.15 !important; letter-spacing:.01em !important;
    white-space:normal !important; text-align:center !important; }
  /* the odd fifth button spans the row so the grid never ends ragged */
  .gfoot-actions .gfoot-actions-row > .btn:nth-child(5){ grid-column:1 / -1 !important; }
  .gfoot-actions .gfoot-social{ justify-content:center !important; margin-top:14px !important; }
}
/* Hedgehogs closing CTA — width-independent so nothing can clip at any size:
   the row wraps, each button is capped to the box and shrinks rather than
   running past it. (A breakpoint-gated version missed the preview's width.) */
:is(#page-hedgehogs,#page-aif-overview) .aif-cta-box > div:last-child{
  display:flex !important; flex-wrap:wrap !important; justify-content:center !important;
  align-items:stretch !important; gap:12px !important; width:100% !important; }
:is(#page-hedgehogs,#page-aif-overview) .aif-cta-box > div:last-child > .btn{
  display:inline-flex !important; align-items:center !important; justify-content:center !important;
  gap:9px !important; box-sizing:border-box !important;
  flex:0 1 auto !important; min-width:0 !important; max-width:100% !important;
  height:52px !important; min-height:52px !important; padding:0 20px !important; margin:0 !important;
  line-height:1 !important; white-space:nowrap !important; }
:is(#page-hedgehogs,#page-aif-overview) .aif-cta-box > div:last-child > .btn svg{ flex:0 0 auto !important; }
/* Hedgehogs closing CTA — the row is laid out inline in the markup
   (display:flex;gap:14px;flex-wrap:wrap), so every override needs !important.
   Below 900px the two labels cannot share a row without clipping: stack them,
   full width of the box, one fixed height, label + icon centred. */
@media(max-width:900px){
  :is(#page-hedgehogs,#page-aif-overview) .aif-cta-box{ padding-left:18px !important; padding-right:18px !important; }
  :is(#page-hedgehogs,#page-aif-overview,#page-strategy) .aif-cta-box .aif-cta-statement{
    font-size:clamp(34px,10.4vw,56px) !important; line-height:1.1 !important; }
  :is(#page-hedgehogs,#page-aif-overview) .aif-cta-box > div:last-child{
    display:grid !important; grid-template-columns:1fr !important;
    gap:10px !important; width:100% !important; max-width:100% !important;
    justify-items:stretch !important; justify-content:stretch !important; }
  :is(#page-hedgehogs,#page-aif-overview) .aif-cta-box > div:last-child > .btn{
    display:flex !important; align-items:center !important; justify-content:center !important;
    gap:9px !important; width:100% !important; max-width:100% !important; min-width:0 !important;
    box-sizing:border-box !important; height:50px !important; min-height:50px !important;
    padding:0 14px !important; margin:0 !important;
    font-size:15px !important; line-height:1 !important; white-space:nowrap !important;
    overflow:hidden !important; text-overflow:ellipsis !important; }
  :is(#page-hedgehogs,#page-aif-overview) .aif-cta-box > div:last-child > .btn svg{ flex:0 0 auto !important; width:15px !important; height:15px !important; }
}
/* quote scale, asserted last so nothing later shrinks it */
@media(max-width:760px){
  #hhQuote .conviction-heading, #hhQuoteHeading.conviction-heading{
    font-size:clamp(34px,13.5vw,64px) !important; line-height:1.12 !important; }
}
/* The guide's horizontal line runs 30px above the card's bottom edge, so the
   scroll cue at bottom:22px sat on top of it. Lift it clear. */
@media(min-width:861px){
  #hhHeroScene .hero-scrollcue{ bottom:52px !important; right:18px !important;
    font-size:10px !important; letter-spacing:.14em !important; gap:7px !important; }
  #hhHeroScene .hero-scrollcue .hsc-arrow{ font-size:12px !important; }
}
.hh-title-br{ display:none; }
/* .btn carries a fixed height, so padding alone never shortened these */
/* All widths: ring to the right of the title, tops aligned; description below. */
#hhHeroScene .hh-hero-titlerow{ display:flex; align-items:flex-start;
  gap:clamp(14px,1.8vw,28px); justify-content:space-between; }
#hhHeroScene .hh-hero-titlerow .hero-belief{ flex:1 1 auto; min-width:0; margin-bottom:0 !important; }
#hhHeroScene .hh-hero-titlerow .hero-burst{ flex:0 0 auto; margin:4px 0 0 !important; }
#hhHeroScene .sc-hero-sub.hh-hero-lead{ margin-top:clamp(14px,1.6vw,22px) !important; }
/* Desktop: one gap-driven column, centred in the card, so the load state and
   the shrunk (scrolled) state both stay evenly spaced. */
@media(min-width:1025px){
  #hhHeroScene .hero-card-text{ display:flex; flex-direction:column; justify-content:center;
    gap:clamp(14px,1.5vw,24px);
    padding:clamp(34px,3.2vw,52px) clamp(34px,3.4vw,56px) clamp(30px,2.8vw,46px) !important; }
  #hhHeroScene .hero-card-text > *{ margin:0 !important; }

  /* ── The shrink is CONTINUOUS, not a state ──────────────────────────────
     This block used to be two states switched by .v3-shrunk, which the engine
     toggles at a hard threshold (p > 0.3). Five properties changed at that one
     instant on THREE different clocks: the title's font-size over .5s, the CTA
     row's margins over .45s, and the card's gap, padding and the lead's
     font-size with no transition at all - while the card's own height was
     easing smoothly per frame the whole time.

     The visible result was the reported one: the CTA row lurched ~43px in a
     single frame at p=0.3 instead of sliding, and the guides' horizontal line
     - which is re-solved from the card's live box - crossed the buttons while
     the two were briefly out of step.

     The engine already writes --v3-ts every frame, easing 1 -> 0.82 across the
     shrink, and the home hero drives its title from exactly that. So do the
     same here and interpolate every one of the five, off one clock.

     --v3-k normalises --v3-ts to 0 (rest) -> 1 (fully shrunk). With no JS the
     var falls back to 1, k is 0, and the rest state stands. */
  #hhHeroScene .sc-hero{
    --v3-k: calc((1 - var(--v3-ts, 1)) / 0.18);
    --hh-title-a: clamp(39px,4.6vw,68px);   --hh-title-b: clamp(31px,3.6vw,54px);
    --hh-gap-a:   clamp(14px,1.5vw,24px);   --hh-gap-b:   clamp(10px,1.1vw,16px);
    /* padt-b is pulled in deliberately: the card's height at full shrink is
       engine-driven, so every px taken off the top is a px the CTA row gains
       below itself. Reported: after the shrink the buttons crowded the guides'
       horizontal line. Measured at 1680: 12px freed here, 7.5px given back to
       btnt-b, lands the row at 47/47 above/below instead of 40/43. */
    /* Reported: as the hero shrinks the tag/title/lead should shift DOWN so the
       gap above them matches the gap under the buttons - they scale correctly,
       only the position was off. An earlier pass cut this to 22px, which moved
       the block UP and cropped the tag off the card's top edge. At 1680 shrunk
       39px lands 44.3 above the tag and 44.3 under the buttons. */
    --hh-padt-a:  clamp(34px,3.2vw,52px);   --hh-padt-b:  clamp(27px,2.5vw,39px);
    --hh-padb-a:  clamp(30px,2.8vw,46px);   --hh-padb-b:  clamp(30px,2.8vw,44px);
    --hh-lead-a:  clamp(22px,1.72vw,27px);  --hh-lead-b:  clamp(17px,1.3vw,21px);
    /* .hero-card-text is justify-content:center, so these do NOT move the row
       1:1 - growing the block by N re-centres it and moves the row up by N/2.
       A first pass at 5px of travel was invisible on the live site; these are
       sized off that measured half-rate to actually clear the survey line.
       At 1680 shrunk: 57 above / 57 below, against 45/44 before. */
    /* -b equals -a on purpose: the gap between the description and the CTA row
       must NOT change through the scroll, so this interpolates to itself. */
    /* Requested: at full shrink the CTA row sits CENTRED in the band between the
       description above and the guides' horizontal line below. Solved from the
       measured response of each lever - a px on margin-top moves the gap above
       by 1 and the gap below by -0.5; a px on margin-bottom moves the gap below
       by 0.5 - against the PUBLISHED card, which solves ~60px shorter than the
       source one. Tuning against the local height is what left it on the line. */
    --hh-btnt-a:  clamp(10px,1.4vw,22px);   --hh-btnt-b:  clamp(2px,.25vw,4px);
    --hh-btnb-a:  0px;                      --hh-btnb-b:  clamp(20px,2.1vw,35px);
    /* The tag rides the shrink with everything else - it was the one element
       left at a fixed size, which made it read as oversized once the title and
       lead had come down. 18 -> 13.7px is 24% smaller; padding tracks it. */
    --hh-tag-a:   18px;                     --hh-tag-b:   13.7px;
    --hh-tagpv-a: 8px;                      --hh-tagpv-b: 6px;
    --hh-tagph-a: 18px;                     --hh-tagph-b: 13.7px;
  }
  /* No transition on any of these: the JS writes --v3-ts every frame, and a
     transition on a per-frame value is a second clock fighting the first. */
  #hhHeroScene .sc-hero-title.hero-belief{
    font-size:calc(var(--hh-title-a) +
      (var(--hh-title-b) - var(--hh-title-a)) * var(--v3-k, 0)) !important;
    line-height:calc(1.05 + 0.01 * var(--v3-k, 0)) !important; }
  #hhHeroScene .hero-card-text{
    /* `safe center` falls back to start-alignment the moment the content is
       taller than the box. Plain `center` overflows symmetrically, which cropped
       the tag off the top of the card on the live page - the published card
       solves to a different height than the source one, so the block must be
       unable to overflow upward at ANY height, not just the ones measured here. */
    justify-content:safe center;
    gap:calc(var(--hh-gap-a) + (var(--hh-gap-b) - var(--hh-gap-a)) * var(--v3-k, 0));
    padding-top:calc(var(--hh-padt-a) +
      (var(--hh-padt-b) - var(--hh-padt-a)) * var(--v3-k, 0)) !important;
    padding-bottom:calc(var(--hh-padb-a) +
      (var(--hh-padb-b) - var(--hh-padb-a)) * var(--v3-k, 0)) !important; }
  #hhHeroScene .hh-hero-tag{
    font-size:calc(var(--hh-tag-a) +
      (var(--hh-tag-b) - var(--hh-tag-a)) * var(--v3-k, 0)) !important;
    padding:calc(var(--hh-tagpv-a) +
        (var(--hh-tagpv-b) - var(--hh-tagpv-a)) * var(--v3-k, 0))
      calc(var(--hh-tagph-a) +
        (var(--hh-tagph-b) - var(--hh-tagph-a)) * var(--v3-k, 0)) !important; }
  #hhHeroScene .sc-hero-sub.hh-hero-lead{
    font-size:calc(var(--hh-lead-a) +
      (var(--hh-lead-b) - var(--hh-lead-a)) * var(--v3-k, 0)) !important;
    line-height:1.45 !important; max-width:36ch !important; margin-top:0 !important; }
  /* The ring keeps its size through the shrink - the flex row keeps it aligned
     to the title's top line as the card resizes. */
  #hhHeroScene .hh-hero-titlerow .hero-burst{ width:clamp(94px,7.8vw,125px) !important;
    height:clamp(94px,7.8vw,125px) !important; margin:8px 0 0 !important; }
  /* The guide's diagonal terminates on the CTA row's bottom-left corner, so the
     row gains clearance from it as the card tightens rather than sitting on it. */
  #hhHeroScene .sc-hero-btns{ gap:calc(12px - 4px * var(--v3-k, 0));
    margin-top:calc(var(--hh-btnt-a) +
      (var(--hh-btnt-b) - var(--hh-btnt-a)) * var(--v3-k, 0)) !important;
    margin-bottom:calc(var(--hh-btnb-a) +
      (var(--hh-btnb-b) - var(--hh-btnb-a)) * var(--v3-k, 0)) !important; }
}
#hhHeroScene .hh-stats-cap{ font-family:'Inter',sans-serif; font-size:10.5px; font-weight:600;
  letter-spacing:.14em; text-transform:uppercase; color:var(--greenDeep); opacity:.75;
  margin:0 0 8px; flex:0 0 auto; }
@media(max-width:860px){
  #hhHeroScene.hero-scene .hh-stats-cap{ font-size:9.5px; letter-spacing:.12em; margin-bottom:6px; }
}
/* The CTA row scales with the shrink, and scales UNIFORMLY: one factor drives
   height, type and horizontal padding together, so the button keeps its 163x44
   proportions all the way down instead of going wide-and-short. Scaling only
   the height is what made it read squashed. */
#hhHeroScene .sc-hero-btns .btn{
  --btn-f: calc(1 - 0.2 * var(--v3-k, 0));
  height:calc(44px * var(--btn-f)) !important;
  font-size:calc(16px * var(--btn-f)) !important;
  padding-left:calc(26px * var(--btn-f)) !important;
  padding-right:calc(26px * var(--btn-f)) !important;
  min-height:0 !important;
  padding-top:0 !important; padding-bottom:0 !important;
  display:inline-flex !important; align-items:center; justify-content:center; }
@media(min-width:861px) and (max-width:1024px){
  #hhHeroScene.hero-scene .sc-hero-btns .btn{ height:38px !important; }
}
@media(max-width:860px){
  #hhHeroScene.hero-scene .sc-hero-btns .btn{ height:34px !important; }
}
/* The hero is a sticky scene, so what follows has to sit ABOVE it — but never
   force a background here: sections carry their own (the fund structure is
   dark green with gold type, which a cream override made unreadable). */
#page-hedgehogs > *:not(#hhHeroScene){ position:relative; z-index:2; }
#hhHeroScene .hh-hero-tag{ align-self:flex-start; margin:0 0 clamp(14px,1.6vw,22px); }
#hhHeroScene .hero-belief{ font-size:clamp(30px,3.5vw,54px) !important; }
#hhHeroScene .hh-hero-lead{ font-family:'Jost',sans-serif; font-size:clamp(16px,1.5vw,22px);
  line-height:1.55; color:var(--ink); opacity:.9; max-width:34ch; margin:0 0 clamp(12px,1.4vw,20px); }
#hhHeroScene .hero-media{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e7318c07bd000efbf0e9e_hh-hero-courtyard.jpg') !important; background-position:center 52% !important; }
/* ⚠ NO background-image here. The hero photograph is owned by the NATIVE
   Webflow style on `.hero-media` so the client can swap it from the Designer
   with no deploy. A rule here is (1,1,0) and would outrank native (0,1,0) on
   the published page while the canvas showed the native one — which is exactly
   how two image swaps ended up live-on-canvas / stale-on-production.
   Hedgehogs still pins its own photo with !important further down. */
:is(#heroScene,#hhHeroScene) .hero-media{ position:absolute; left:0; right:0; top:-7%; height:114%;
  background-size:cover; background-position:center 44%; background-repeat:no-repeat;
  will-change:transform; }

:is(#heroScene,#hhHeroScene) .sc-hero-stats{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px;
  flex:0 0 auto; border:none; background:none; }
/* clip-path circle(26px) IS the resting state — the cells are gold discs until
   the scroll morphs them out to circle(326px), i.e. full rectangles */
:is(#heroScene,#hhHeroScene) .hstat{ position:relative; overflow:hidden; background:#456232;
  padding:22px 20px; border:1px solid rgba(69,98,50,var(--bo,0));
  clip-path:circle(26px at 50% 50%); will-change:clip-path; }
:is(#heroScene,#hhHeroScene) .hstat-disc{ position:absolute; inset:0; background:#F0D88E;
  z-index:0; opacity:var(--disc,1); }
:is(#heroScene,#hhHeroScene) .hstat-in{ position:relative; z-index:1;
  opacity:var(--c,0); transform:translateY(var(--cy,12px)); }
:is(#heroScene,#hhHeroScene) .hstat-num{ font-family:'Inter',sans-serif;
  font-size:clamp(28px,3.4vw,44px); font-weight:400; line-height:1;
  letter-spacing:-.02em; margin-bottom:8px; color:#F0D88E;
  font-variant-numeric:lining-nums; }
:is(#heroScene,#hhHeroScene) .hstat-label{ font-family:'Inter',sans-serif;
  font-size:clamp(16px,1.25vw,20px); line-height:1.5; color:rgba(240,216,142,.78); }

@keyframes hbSpin{ from{ transform:rotate(0); } to{ transform:rotate(360deg); } }
@keyframes hscNudge{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(4px); } }
@keyframes heroRise{ 0%{ opacity:0; filter:blur(9px); transform:translateY(16px); }
  55%{ opacity:1; } 100%{ opacity:1; filter:blur(0); transform:none; } }
@keyframes cwrWordBlinkGreen{
  0%{ opacity:0; color:#014CAE; } 32%{ opacity:1; color:#014CAE; }
  58%{ color:#133767; } 80%{ color:#456232; } 100%{ opacity:1; color:#456232; } }

/* Cards stack below 820, so the title gets the full-width scale back. */
@media(max-width:820px){
  :is(#heroScene,#hhHeroScene) .hero-belief{ font-size:clamp(24px,6.4vw,40px) !important; }
}

/* §7.1 ≤820px — pinning released, cards stack. Not a Webflow breakpoint;
   the spec is explicit that these go in verbatim. */
@media(max-width:820px){
  :is(#heroScene,#hhHeroScene){ height:auto; }
  :is(#heroScene,#hhHeroScene) .sc-hero{ position:static; height:auto; overflow:visible;
    padding:16px 16px 22px; gap:16px; }
  :is(#heroScene,#hhHeroScene) .hero-cards{ grid-template-columns:1fr; gap:14px; }
  /* ⚠ Hedgehogs ONLY. This used to be `:is(#heroScene,#hhHeroScene)` and it is
     the single line that decides whether a hero can be scroll-driven on a
     phone: the engine shrinks the card by writing an inline height, and an
     inline declaration LOSES to a stylesheet !important. With this applying to
     #heroScene the card could not move, whatever the JS did. The home hero is
     pinned on phones now (see the block at the end of this file), so it must
     not be here. */
  #hhHeroScene .hero-cards{ height:auto !important; }
  :is(#heroScene,#hhHeroScene) .hero-card-text{ padding:30px 24px 46px 34px; }
  /* Four lines on phones, sized so "Businesses" fits the card width. */
  :is(#heroScene,#hhHeroScene) .sc-hero-title.hero-belief{ font-size:clamp(32px,9.36vw,50px) !important; line-height:1.06; margin-bottom:12px; }
  :is(#heroScene,#hhHeroScene) .sc-hero-title .hero-line{ white-space:nowrap; }
  /* side-by-side buttons, halved padding */
  :is(#heroScene,#hhHeroScene) .sc-hero-btns{ display:flex; gap:10px; }
  :is(#heroScene,#hhHeroScene) .sc-hero-btns .btn{ flex:1 1 0; min-width:0; padding:13px 10px !important;
    font-size:clamp(14px,3.9vw,16px) !important; white-space:nowrap; }
  :is(#heroScene,#hhHeroScene) .sc-hero-sub{ font-size:clamp(16px,4vw,20px); margin-bottom:24px; }
  :is(#heroScene,#hhHeroScene) .sc-hero-btns .btn{ text-align:center; margin-left:0; }
  :is(#heroScene,#hhHeroScene) .hero-burst{ margin:2px 0 12px; }
  :is(#heroScene,#hhHeroScene) .hero-card-video{ min-height:clamp(240px,60vw,360px); }
  :is(#heroScene,#hhHeroScene) .hero-media{ top:-20% !important; height:140% !important; backface-visibility:hidden; }
  :is(#heroScene,#hhHeroScene) .hero-guides{ display:block !important; }
  :is(#heroScene,#hhHeroScene) .hg{ stroke-width:1.2; }
  :is(#heroScene,#hhHeroScene) .hero-scrollcue{ display:none !important; }
  :is(#heroScene,#hhHeroScene) .sc-hero-stats{ grid-template-columns:1fr 1fr; gap:12px; }
  :is(#heroScene,#hhHeroScene) .hstat{ padding:18px 16px; }
  :is(#heroScene,#hhHeroScene) .hstat-num{ font-size:26px; margin-bottom:6px; }
  :is(#heroScene,#hhHeroScene) .hstat-label{ font-size:15px !important; line-height:1.4; }
}
/* §7.2 ≤760px — the two nth-child rules as explicit classes */
@media(max-width:760px){
  :is(#heroScene,#hhHeroScene) .sc-hero-stats{ grid-template-columns:1fr 1fr; }
  :is(#heroScene,#hhHeroScene) .hstat-r2{ border-right:none; }
  :is(#heroScene,#hhHeroScene) .hstat-row1{ border-bottom:1px solid #2C2E2B; }
}
/* §7.3 ≤520px */
@media(max-width:520px){
  :is(#heroScene,#hhHeroScene) .sc-hero{ padding:12px 12px 18px; }
  :is(#heroScene,#hhHeroScene) .hero-card-text{ padding:26px 20px 42px 30px; }
  :is(#heroScene,#hhHeroScene) .sc-hero-title.hero-belief{ font-size:clamp(29px,9.54vw,41px) !important; }
  :is(#heroScene,#hhHeroScene) .sc-hero-btns .btn{ padding:12px 8px !important; font-size:14px !important; }
  :is(#heroScene,#hhHeroScene) .sc-hero-stats{ gap:10px; }
  :is(#heroScene,#hhHeroScene) .hstat{ padding:16px 14px; }
  :is(#heroScene,#hhHeroScene) .hstat-num{ font-size:24px; }
  :is(#heroScene,#hhHeroScene) .hstat-label{ font-size:14px !important; }
}
/* §4.7 — reduced motion UN-PINS the scene entirely */
@media(prefers-reduced-motion:reduce){
  :is(#heroScene,#hhHeroScene){ height:auto; }
  :is(#heroScene,#hhHeroScene) .sc-hero{ position:static; height:auto; opacity:1; }
  :is(#heroScene,#hhHeroScene) .hero-cards{ height:auto !important; }
  :is(#heroScene,#hhHeroScene) .cwr-word{ opacity:1 !important; animation:none !important; }
  :is(#heroScene,#hhHeroScene) .sc-hero-sub{ opacity:1 !important; animation:none !important; }
  :is(#heroScene,#hhHeroScene) .sc-hero-btns{ opacity:1 !important; transform:none !important; }
  :is(#heroScene,#hhHeroScene) .hstat{ clip-path:none !important; border-color:#456232 !important; }
  :is(#heroScene,#hhHeroScene) .hstat-disc{ opacity:0 !important; }
  :is(#heroScene,#hhHeroScene) .hstat-in{ opacity:1 !important; transform:none !important; }
  :is(#heroScene,#hhHeroScene) .hero-scrollcue{ display:none !important; }
  :is(#heroScene,#hhHeroScene) .hero-burst{ opacity:1; transform:scale(1); }
  :is(#heroScene,#hhHeroScene) .hb-spin{ animation:none; }
}

}

/* -- Hero parallax on the compositor ----------------------------------------
   Same ramp as the JS driver (see bindHero in niv-app.js), expressed as a
   scroll-driven animation so it is locked to the native scroll instead of
   chasing coalesced, late scroll events on iOS. --nv-plx is 17% of the layer's
   own height, written once per layout by JS. */
@supports (animation-timeline: view()) and (animation-range: cover 0% cover 100%){
  @keyframes nvHeroPlx{
    from{ transform:translate3d(0, calc(var(--nv-plx, 0px) * -1), 0); }
    to  { transform:translate3d(0, var(--nv-plx, 0px), 0); }
  }
  .nv-plx-host{ view-timeline-name:--nvPlx; view-timeline-axis:block; }
  .nv-plx-layer{
    animation:nvHeroPlx linear both;
    animation-timeline:--nvPlx;
    animation-range:cover 0% cover 100%;
  }

  /* Home hero mask reveal, same move onto the compositor. The JS wrote
       s = 1.55 + p*1.9   with   p = scrollY / (0.9 * vh)   [desktop]
       s = 0.80 + p*1.1                                     [<=760px]
     which is a straight ramp across the first 0.9 viewport of document scroll —
     exactly what these keyframes say. Longhands + !important because
     .reveal-done carries `animation:none`, and the `animation` shorthand would
     reset animation-timeline. */
  @keyframes nvMaskOpen{ from{ transform:scale(1.55); } to{ transform:scale(3.45); } }
  @keyframes nvMaskOpenM{ from{ transform:scale(0.8); } to{ transform:scale(1.9); } }
  /* The scroll-phase mask growth is OFF. Scaling a circle inside an SVG mask
     cannot be composited by WebKit, so while it ran, every scroll frame
     re-rendered the 1600px photo through two nested masks — that was the home
     hero's stutter, and it is why the other heroes (a plain div with a
     background-image, one cached layer) were always smooth. With the mask
     geometry static the raster is cached once and the tree's parallax becomes a
     pure layer move, exactly like those heroes.
     The INTRO reveal is untouched — only the receding-vignette-on-scroll is gone.
     To restore it, re-enable the two blocks below. */
  /* #heroRevealC.reveal-done{
       animation-name:nvMaskOpen !important; animation-duration:1s !important;
       animation-timing-function:linear !important; animation-fill-mode:both !important;
       animation-iteration-count:1 !important;
       animation-timeline:scroll(root block) !important;
       animation-range:0 90svh !important; transition:none !important; }
     @media(max-width:760px){
       #homeHeroSticky #heroRevealC.reveal-done{ animation-name:nvMaskOpenM !important; } } */

  /* Home hero tree parallax, same move onto the compositor.
     The JS wrote  y = (prog - 0.5) * 340  with  prog = (vh - top)/(h + vh).
     The hero track is exactly 100vh, so h == vh and that reduces to a straight
     ramp of 0 -> 170px across the first viewport of document scroll — which is
     what the two keyframes below say. Identical values, no JS per frame.
     Desktop only: on phones the JS never applied this translate at all. */
  @media(min-width:761px){
    @keyframes nvTreePlx{
      from{ transform:translateY(0px); }
      to  { transform:translateY(170px); }
    }
    /* Longhands, and !important: .zoom-done already carries
       `animation:none !important` (it exists to cancel the intro), which beat the
       shorthand and left the tree still while the dots parallaxed away from it.
       Longhands also avoid the `animation` shorthand resetting animation-timeline. */
    /* OFF. #heroZoom is masked, and a transform on masked SVG content forces
       WebKit to re-render the photo THROUGH the mask every frame — it cannot be
       composited, on the compositor thread or otherwise. With the mask frozen
       this translate was the last per-frame change left inside the SVG, so
       nothing in the hero re-rasterises during scroll now and the raster is
       cached once, like the plain-div heroes on the other pages.
       Cost: the tree no longer drifts 170px as you scroll (desktop only —
       phones never had this translate). Re-enable this block to restore it. */
    /* #homeHeroSticky #heroZoom.zoom-done,
       #homeHeroSticky #heroDots{
         animation-name:nvTreePlx !important; animation-duration:1s !important;
         animation-timing-function:linear !important; animation-fill-mode:both !important;
         animation-iteration-count:1 !important;
         animation-timeline:scroll(root block) !important;
         animation-range:0 100svh !important; } */
  }
}

/* -- Touch devices (iOS Safari especially) ---------------------------------
   A permanent will-change pins a compositor layer per element. Desktop Chrome
   absorbs dozens; iPhone Safari has a far smaller budget, and once it is spent
   the whole page scrolls in fits. On touch none of these layers move anyway --
   the parallax drivers hold them still -- so the hint is pure cost. */
@media (hover:none), (max-width:1024px){
  /* background-attachment:fixed forces a full-page repaint per frame on iOS. */
  *{ background-attachment:scroll !important; }
}

/* ════════════════════════════════════════════════════════════════════════════
   HOME HERO — one full-bleed frame, photograph behind everything
   ────────────────────────────────────────────────────────────────────────────
   Client: "everything will remain the same, just the 2 cards will be one now
   and the bg will be this image." So the split becomes a single frame with the
   photograph behind the whole thing; the title sequence, burst, survey guides,
   buttons, scroll cue, the four stat cells and the entire scroll scene stay
   exactly as they were.

   ⚠ SCOPED TO #heroScene ALONE, deliberately. Every hero rule above is
   :is(#heroScene,#hhHeroScene) — the Hedgehogs fund hero is built from this
   same markup and these same classes, and it KEEPS its two-card split.
   Widening any rule below to the shared :is() would silently rebuild that
   hero too. There is a harness check for exactly that (work/herochk.mjs).

   These carry the same (1,1,0) specificity as the :is() rules they override,
   so they win on SOURCE ORDER and must stay at the END of this file. Nothing
   later competes: 98-webflow-native's twins are :where()-wrapped (zero
   specificity) and already :not(#heroScene). */

/* one column instead of 1fr 1fr */
#heroScene .hero-cards{ grid-template-columns:1fr; }

/* The image card stops being a column and becomes the backdrop layer. It keeps
   overflow:hidden from .hero-card, so the parallax translate on .hero-media is
   still clipped, and it drops the green fill and the border that used to draw
   the divide between the two frames. */
#heroScene .hero-card-video{
  position:absolute; inset:0; z-index:0;
  background:none; border:none; pointer-events:none;
  /* A leftover from the two-card layout: the mobile rule above floors this card
     at clamp(240px,60vw,360px) so it could not collapse when it was a real
     column. As an inset:0 backdrop it always matches the frame exactly, so the
     floor can only push it PAST the frame — measured 258px inside a 255.9px
     frame at 430px, clipped but wrong. */
  min-height:0;
}

/* The text card is now the only column, and the only border — it draws the
   single frame. Transparent, so the photograph reads through it. */
#heroScene .hero-card-text{
  position:relative; z-index:1;
  background:none;
}

/* ⚠ THE HERO PHOTOGRAPH IS **NOT** SET HERE ANY MORE.
   It lives in the NATIVE Webflow style on `.hero-media`, and this rule
   deliberately does not declare `background-image` so it cannot outrank it.

   Why: a bundle rule here is `#heroScene .hero-media` (1,1,0) and beats the
   native `.hero-media` (0,1,0) on the published page, while the canvas — which
   loads the bundle inside a cascade layer — always shows the native one. Every
   image swap therefore changed the canvas and left production on the old photo
   until a full head-link + eleven-pin deploy caught up. It happened twice.

   With the image native-only, BOTH surfaces read the same value and the client
   can swap the hero photograph from the Designer with no deploy at all.
   Hedgehogs is unaffected: it pins its own photo with !important below. */
#heroScene .hero-media{
  background-position:center 50%;
}

/* ── Mobile: fit the picture's WIDTH, never crop it sideways ───────────────
   "the default load state needs to scale down the bg image, it's cropping the
   right side tree, also the left sun is also very close to edge."

   Measured, which is the only way to size this: the load frame is the whole
   viewport plus the parallax overscan — 430x945 at a 430px phone, an aspect of
   0.455 — while the picture is 1190x1897, i.e. 0.627. `cover` therefore fills
   the HEIGHT and throws away 163px of width: 81px off each side. The right-hand
   treeline and the sun live in exactly those 81px.

   `100% auto` fits the width instead, so nothing is lost left or right, and
   anchoring to the bottom puts the waterline low and leaves the pale sky behind
   the headline — the composition the crop was made for. The settled card is
   406x584 against the same picture, so it still overflows vertically by 63px
   and crops from the top, which is the intended behaviour.

   ⚠ Bundle-owned, unlike the image itself. The photograph is native so the
   client can swap it without a deploy; this framing is tied to the intro's
   geometry, which the harness measures, so it lives in one place. Nothing
   native declares these two properties at a phone breakpoint, so the canvas
   resolves the same values. */
@media(max-width:820px){
  #heroScene .hero-media{
    /* "shift it to slight left".

       At exactly 100% the picture fills the frame's width, so there is no
       horizontal slack and background-position-x does nothing — shifting it
       needs something to shift against. 106% is that: 6% of 430px is ~26px of
       overflow, and pinning to 0% spends all of it on the left, moving the
       composition 26px that way. The cost is 26px off the right edge, against
       the 163px `cover` was taking before any of this — small, and the trade is
       the knob: raise the 106% to shift further, lower it to crop less. */
    background-size:106% auto;
    background-position:0% 50%;
  }

  /* Scaling the picture to the frame's width leaves a band at BOTH ends now
     that it is centred, and the two ends of the picture are not the same
     colour, so one flat fill cannot serve both. Sampled, each flat to within
     a few levels across all 1190px:
         first row  rgb(252,238,211)   pale sky
         last row   rgb(211,201,181)   water

     So the backdrop behind the picture carries both, split down the middle.
     The seam between them is never visible: the picture is centred and covers
     the middle ~73% of the layer, and the split sits at 50%. Each band is
     therefore a continuation of the picture edge it meets.

     This goes on .hero-card-video, the layer BEHIND .hero-media, rather than
     on .hero-media itself — a background-color there would cover this, and a
     gradient there would mean re-declaring `background-image` and clobbering
     the native photograph. Resample both rows if the crop is replaced. */
  #heroScene .hero-card-video{
    background:linear-gradient(180deg,
      rgb(252,238,211) 0 50%,
      rgb(211,201,181) 50% 100%);
  }
}

/* No scrim. One was tried — a paper gradient under the type — and the client
   rejected it on sight: it washed the left two-thirds of the photograph out.
   The picture's own left side is flat cream, so the dark green type reads
   against it unaided. Do not reintroduce a tint here. */

/* ⚠ NO mobile background-position nudge any more. There used to be a
   `@media(max-width:860px){ #heroScene .hero-media{ background-position:22% 50% } }`
   here, and it existed for one reason: the phone frame was being fed the wide
   DESKTOP photograph, so cover-cropping landed the visible window on the
   forest and the type lost its cream backing. Pulling it to 22% rescued it.

   The client has since supplied a purpose-made portrait crop for phones
   (`hero mobile.jpg`, 1190x1897), set natively at Mobile landscape and below.
   With a full-height card the frame is roughly 406x876 (aspect 0.46) and the
   image is 0.627, so `cover` now fills by HEIGHT and overflows horizontally —
   which means a 22% offset would slide that deliberate composition sideways.
   Centre is what the crop was made for.

   So the position is left entirely to the native style (50% 50%), and nothing
   here competes with it. Do not reintroduce a nudge without re-checking which
   axis actually overflows — it flips with the card height. */

/* ── Mobile: the buttons sit close to the bottom edge ──────────────────────
   "shift the 2 buttons to bottom side more" → "buttons will be closer to
   bottom."

   Two parts, and only one of them is here. `margin-top:auto` on
   `.sc-hero-btns` is NATIVE (Mobile landscape and below): in the text card's
   flex column an auto top margin pushes the button row to the end, so it rides
   the bottom of a full-screen card instead of floating in the middle of it.

   What is left between the buttons and the card's edge is this card's
   padding-bottom, and that IS pinned in the bundle — the shared rule above
   sets 46px at ≤820 and 42px at ≤520, which is what kept them off the edge.
   Scoped to #heroScene here so Hedgehogs keeps its own spacing.

   Kept deliberately non-zero: at 0 the buttons collide with the 1px card
   border. If the client wants them lower still, this is the number. */
@media(max-width:820px){
  #heroScene .hero-card-text{ padding-bottom:30px; }
  /* the bundle's matching copy of the native push, so the local replica and
     the harness lay the buttons out where the Designer actually puts them */
  #heroScene .sc-hero-btns{ margin-top:auto; }
}
@media(max-width:520px){
  #heroScene .hero-card-text{ padding-bottom:28px; }
}

/* ── Mobile: the home hero is PINNED, exactly like the desktop one ─────────
   "similar to how the desktop version is — on load we see the full screen
   version, and then as we scroll the image and the card shrinks down, it
   crops and it settles down to a place; at the same time we see the stat
   cards below it… the buttons are not present from the beginning, the element
   system is also not loaded. What is present, similar to the desktop: only the
   title and the circular rotating icon. Then as we scroll the card shrinks and
   settles, the stat cards animate, the buttons come in, the element system
   animates in. Same timing, same treatment, choreography — but vertically."

   So this is not a layout tweak, it is a change of MODEL. §7.1 above releases
   the pin at ≤820 and hands the hero to a timed sequence; the home hero is
   handed back to the scroll engine here, and the JS drops its ≤860 early
   return for this scene. Everything then derives from one scroll progress `p`,
   as on desktop: card shrink, photo settle, stat morph, buttons at p≈0.62,
   guides 0.62→0.85.

   NO min-height here, deliberately. A full-screen floor was set on this card
   an hour ago and it has to go: the engine shrinks the card by writing an
   inline height, and a floor would pin it open. Pinning gives the full-screen
   first state instead — the sticky shell is the viewport, and the card fills
   it at p=0 because that is what the engine writes.

   78px is the nav band, as everywhere else at this breakpoint. `svh` second so
   a collapsing URL bar cannot change the pinned height mid-scroll. */
@media(max-width:820px){
  #heroScene{ height:220vh; }
  #heroScene .sc-hero{
    position:sticky; top:78px;
    height:calc(100vh - 78px);
    height:calc(100svh - 78px);
    overflow:hidden;
    /* §7.1 pads the STATIC hero by 78px to clear the nav. Sticky `top` does
       that job now, so the padding goes back to a normal inset or the band is
       counted twice. */
    padding-top:16px !important;
  }
}




/* ── Hero scroll cue: a bobbing chevron, bottom centre, at every width ──────
   "on the hero section bottom center there should be a minimal animating
   downward pointing arrow that shows there to scroll. Similar to aif hero."

   The element already exists — `.hero-scrollcue`, a "Scroll" label with a text
   arrow, parked bottom-RIGHT and hidden outright on phones. Rather than add
   markup, the label is dropped and the arrow span is redrawn as the same
   chevron the AIF hero uses, on the same 1.9s bob.

   The chevron is two borders rotated 45deg, so it needs its own keyframe: the
   AIF one animates `transform:translateY()`, which would overwrite the
   rotation. Translating along both axes of the rotated frame moves it visually
   straight down — 3px on each axis is 4.2px down, matching AIF's ±4px.

   Visibility is already driven by the engine (`cueOn && p < 0.06`), so it
   arrives with the rest of the intro and leaves the moment you scroll. */
@keyframes nvCueBob{
  0%,100%{ transform:rotate(45deg) translate(-3px,-3px); opacity:.45; }
  50%    { transform:rotate(45deg) translate(3px,3px);   opacity:1; }
}
#heroScene .hero-scrollcue{
  /* Centred by SPANNING the card and centring the child, not by offsetting a
     hardcoded half-width — the chevron's box is 14px, the old -9px margin
     assumed 18px, and it sat 2px left of centre. This is exact whatever the
     chevron measures, and uses no transform: the parity release block sets
     `transform:none` on .hero-scrollcue, so a translateX(-50%) would centre on
     the published page and NOT on the canvas. */
  right:0; left:0; margin-left:0;
  justify-content:center;
  bottom:18px; gap:0; z-index:5;
}
#heroScene .hero-scrollcue .hsc-txt{ display:none; }
#heroScene .hero-scrollcue .hsc-arrow{
  display:block; width:14px; height:14px; font-size:0; line-height:0;
  border-right:1.5px solid currentColor;
  border-bottom:1.5px solid currentColor;
  transform:rotate(45deg);
  animation:nvCueBob 1.9s cubic-bezier(.4,0,.2,1) infinite;
  /* The cue sits bottom-centre of a PHOTOGRAPH, so it has no fixed backdrop:
     on the home hero that point is pale water at some widths and dark treeline
     at others — measured green-on-forest at 1440, where the chevron simply
     disappeared. The AIF hero can use a flat cream because its hero is a solid
     dark panel; this one cannot. A soft cream halo keeps the green readable on
     the trees without putting a chip or a plate behind it. */
  filter:drop-shadow(0 0 3px rgba(242,229,191,.9));
}
/* §7.1 and the reduced-motion block both hide the cue outright. The client
   asked for it at every width, so it is shown here in both — and, exactly as
   the AIF hero does, reduced motion keeps the chevron and drops the bob
   rather than removing the affordance. */
@media(max-width:820px){
  #heroScene .hero-scrollcue{ display:flex !important; }
}
@media(prefers-reduced-motion:reduce){
  #heroScene .hero-scrollcue{ display:flex !important; }
  #heroScene .hero-scrollcue .hsc-arrow{ animation:none; opacity:.8; }
}


/* ── Phones: the burst fades OUT, it does not fly out ───────────────────────
   "it shifts position weirdly abruptly while it fades away."

   Traced at 430, sampling every 80ms through the transition:

       before   centre y 382.2   box 64x64   opacity 1
       160ms    centre y 369.6   box 16x10   opacity 0.63
       320ms    centre y 352.9   box  2x0    opacity 0.14
       560ms    centre y 348.2   box  0x0    opacity 0

   The horizontal centre never moved; the VERTICAL centre climbed 34px. That is
   `transform:scale(0)` shrinking it about its centre while `height:0` collapses
   the box from the top at the same time — so it slides upward as it goes. On a
   phone, against a still background, that reads as a lurch.

   Here it just fades. The slot is left at its natural height, so nothing below
   reflows either (the desktop rule collapses the slot to reclaim the space and
   compensates with a margin; a phone hero sized by the engine does not need
   that trade). Desktop keeps the authored exit unchanged. */
/* ── The ring fades IN PLACE. Every breakpoint. ────────────────────────────
   "the circular rotating icon when we scroll down is weirdly changes position
   and goes off" / "its fucked on all devices."

   The authored exit scaled the ring to 0, collapsed its slot to height:0 and
   swapped in a compensating bottom margin. Three things moving at once, on an
   element that is also still rotating: it read as a swirl-away, not a fade.
   Measured at 1440 across the exit — top +22px, then drifting to -59px, while
   the box went 94px -> 0.

   Here it simply stays where it is and its opacity goes to 0. Nothing scales,
   nothing collapses, so nothing below it reflows and there is no compensating
   margin to get wrong.

   ⚠ THE MARGIN IS THE JUMP, and it is per-breakpoint. Each arm below must
   restate ITS OWN base margin, because the base `.out` rule this overrides
   sets `margin:0 0 clamp(30px,4.2vh,48px)` and would otherwise still apply.
   An earlier version restated the desktop pair inside the phone arm and the
   ring was yanked 18px down (y=350 -> y=368 at 430px). Do not "tidy" these
   two blocks into one.

   #heroScene only. #hhHeroScene keeps its authored exit — its ring sits in a
   title row, not a stacked slot, and the harness guards that. */
#heroScene .hero-burst.out{
  transform:scale(0);
  height:clamp(64px,6.5vw,104px);                          /* = the base, §hero-burst */
  margin:clamp(16px,2.4vh,30px) 0 clamp(10px,1.4vh,16px);  /* = the base, §hero-burst */
}
@media(max-width:820px){
  #heroScene .hero-burst.out{ margin:2px 0 12px; }          /* = the phone base, §7.1 */
}
/* ⚠ NO SMIL ON THIS RING, AND NONE MAY COME BACK.
   The home ring used to be an HtmlEmbed whose SVG carried a SMIL
   <animateTransform> writing `rotate(θ 50 50)` — the pivot baked into the
   attribute. The CSS below also rotates it, about
   `transform-box:view-box; transform-origin:50px 50px`. With both live the
   element swapped transform source at `.out` and the two pivots composed to a
   rotation about (100,100), the viewBox's bottom-right CORNER: measured, the
   spinning group's centre sat +75px off the svg's centre at rest and +98.6px
   the frame `.out` landed. That was the ring "shifting its pivot".

   The Hedgehogs ring never had this because it has no SMIL — it is a plain
   SVG element tree rotated only by CSS. The home ring is now a copy of it.
   CSS owns the rotation here. Do not add an animateTransform back. */


/* ── The nav hold must actually OUTRANK the auto-hide ──────────────────────
   "the navigation bar is still going off as soon as I start scrolling from the
   hero section. See how it's done in the desktop version."

   The hold was never reaching the phone bar. `v3-navlock` is set correctly and
   always has been, but the rules that read it sit at the TOP of this file:

       html.nvnav-hidden .niv-logo-fix   (0,2,1)   10-legacy / 90-rebrand / 97-ways
       html.v3-navlock   .niv-logo-fix   (0,2,1)   00-shell-hero, loaded FIRST

   Identical specificity, both `!important`, so source order decides — and every
   stylesheet that hides the bar loads after this one. The desktop bar escaped
   only by accident: its rule is `html.v3-navlock .dnav.dnav-hidden`, one class
   heavier, so it happens to win. The phone logo and island never did.

   Specificity, not order, is the fix — this cannot be solved by moving the rule
   later, because 00-shell-hero is first in `_ORDER.txt` and that order is
   load-bearing for other reasons. `html.v3-navlock body#v3site .x` is (1,2,2)
   and outranks every hide rule above whatever their position.

   pointer-events is included because the hide sets `pointer-events:none`; a
   visible bar that cannot be tapped is not a held bar. */
html.v3-navlock body#v3site .niv-logo-fix,
html.v3-navlock body#v3site .niv-island,
html.v3-navlock body#v3site .mnav-sheet{
  transform:none !important;
  opacity:1 !important;
  pointer-events:auto !important;
}

/* ── ...but HELD means "looks exactly as it does at rest", not "the scrolled
   bar, parked". Two things were wrong with the held state. ─────────────────
   "the nav bar logo on hero section scales down as we scroll, it should stay
   the same size, also we dont want the bg bar on the nav bar while we are on
   the hero page."

   1. THE CREAM SHEET. The rule above forces opacity:1 on .mnav-sheet so the
      bar could not fade out — but .mnav-sheet IS the cream pull-down bar, so
      that painted it across the hero from scroll 0. The hold has to keep the
      LOGO and the ISLAND put; the sheet behind them must stay invisible until
      the hero is actually over.

   2. THE LOGO SIZE. The hero logo is 1.3x via
      `html:not(.nvnav-hidden) …  .niv-logo-fix.logo-hero-big` (§nav, top of
      this file). niv-app still sets `nvnav-hidden` on first scroll even while
      the lock holds the bar in place — so that selector stopped matching and
      the logo dropped 1.3x -> 1x, measured 158x40 -> 122x31, a visible shrink
      one frame into the scroll. The lock has to restate the hero scale so the
      size does not depend on a class the lock is already overriding.

   Specificity: .logo-hero-big makes this (1,3,2), one class heavier than the
   transform:none above, so it wins without needing to move. */
html.v3-navlock body#v3site .mnav-sheet{ opacity:0 !important; }
html.v3-navlock body#v3site .niv-logo-fix.logo-hero-big{
  transform:scale(1.3) !important;
  transform-origin:left center !important;
}

/* ── Home hero menu disc: the nav-bar treatment, from the top of the page ────
   Below 1025px the menu button is a circle. Over a page it was a bare outline
   and only turned into a solid green disc with cream bars once the cream nav
   bar came down (`html.nvnav-solid`, 90-rebrand §mobile fab). On the landing
   hero the outline read as an empty ring against the photo, so the home page
   now carries the in-bar treatment everywhere, including at scroll 0: green
   disc, cream bars, inverting to a cream disc with green bars when open.

   Scoped twice on purpose. `html.pg-home` is written by the router and is the
   site's own idiom, but it only lands once that JS has run. The second arm
   needs no JS at all: #heroScene is the home hero and exists nowhere else, and
   the home section really is `<section id="page-home" class="page active">` in
   the Designer (checked against the element tree, not assumed), so the disc is
   green on first paint and inside the canvas. `.page.active` is inside the
   :has() rather than a bare `#heroScene` so the local single-document replica,
   which holds every page's markup at once, does not paint the home treatment
   on the other pages.

   Specificity note: the hero hairline rule further up is
   `html:not(.nvnav-solid) body#v3site .niv-island:not(.open) .niv-fab` (1,4,2).
   The pg-home arm matches it at (1,4,2) and wins on source order, so these
   rules must stay at the END of this sheet; the :has arm is (2,5,1) and wins
   outright. */
@media(max-width:1024px){
  html.pg-home body#v3site .niv-island:not(.open) .niv-fab,
  body#v3site:has(.page.active #heroScene) .niv-island:not(.open) .niv-fab{
    background:var(--greenDeep) !important;
    border:1px solid var(--greenDeep) !important;
  }
  html.pg-home body#v3site .niv-island:not(.open) .niv-fab::before,
  body#v3site:has(.page.active #heroScene) .niv-island:not(.open) .niv-fab::before{ display:none !important; }
  html.pg-home body#v3site .niv-island:not(.open) .niv-fab-icon span,
  body#v3site:has(.page.active #heroScene) .niv-island:not(.open) .niv-fab-icon span{ background:var(--paper) !important; }
  html.pg-home body#v3site .niv-island.open .niv-fab,
  body#v3site:has(.page.active #heroScene) .niv-island.open .niv-fab{
    background:var(--paper) !important;
    border:1px solid var(--greenDeep) !important;
  }
  html.pg-home body#v3site .niv-island.open .niv-fab-icon span,
  body#v3site:has(.page.active #heroScene) .niv-island.open .niv-fab-icon span{ background:var(--greenDeep) !important; }
}

/* ⚠ DO NOT add margins to `.sc-hero-btns` on desktop to lift them off the
   element-system line. Tried and reverted: `.hero-card.hero-card-text` is
   `justify-content:center`, so ANY margin added to a child grows the centred
   content block and it overflows the card at BOTH ends — the hero title was
   pushed up and clipped by the card's top edge.

   Whatever moves that row on desktop has to take space from somewhere else,

/* ── The settled title sits 15px lower (client request) ───────────────────
   The engine eases --v3-ts 1 (rest) -> 0.82 (settled). Translate the title
   DOWN by up to 15px as it settles: at rest --v3-ts is 1 so the shift is 0
   (the load state is untouched), and by the settled state the ring has scaled
   to 0 so a lower title cannot touch it. #heroScene only; the base rule keeps
   transform-origin. */
#heroScene .sc-hero-title{
  transform:translateY(calc((1 - var(--v3-ts, 1)) / 0.18 * 25px));
}

/* ── Desktop: equal padding around the ring (client spec) ─────────────────
   "[the buttons] should have the same padding from the icon that the title
   has from the circular icon" — in the scroll-back-to-top state.

   Measured there: title->ring 22px, ring->buttons 13px. Push the buttons
   DOWN 9px so ring->buttons also reads 22px. `top` is paint-only (no layout
   growth, so the title cannot shift or clip) on `.sc-hero-btns`, already
   position:relative; DOWN into the 60-190px of empty space below, so nothing
   underneath is touched. No !important -> head-link only, no pin cycle.
   Phones keep their own placement. */
@media(min-width:821px){
  /* ...but ONLY at the top. `top:9px` flat pushed the buttons down in the
     SETTLED (scrolled) state too, onto the bottom element-system line. Gate it
     to the rest state via --v3-ts (the engine writes it every frame: 1 at rest
     -> 0.82 settled). Normalised, that is 1 at the top and 0 when settled, so
     the offset is 9px at the top (equal padding from the ring) and eases to 0
     as the card shrinks (buttons back to their natural settled position).
     clamp() guards both ends. */
  #heroScene .sc-hero-btns{
    /* Scroll-linked: +9px at the top (equal 22px padding above/below the ring)
       -> -50px when the card is settled (buttons lifted off the bottom
       element-system line; the ring has exited by then so no overlap).
       k = (v3-ts-0.82)/0.18 is 1 at rest, 0 settled; top = -50 + k*59. */
    top:clamp(-50px, calc(-50px + (var(--v3-ts, 1) - 0.82) / 0.18 * 59px), 9px);
  }
}

/* ===== 00-pre.css ===== */


/* ===== 01-tokens.css ===== */
/* ===== 01-tokens.css ===== */
/* ============================================================
   NIVESHAAY — FOUNDATIONS / DESIGN TOKENS (single source of truth)
   Final computed values identical to the pre-refactor site, except
   the radius tokens: BRAND RULE — no rounded corners, anywhere.
   ============================================================ */
:root{
  --ink: #2C2E2B;
  --paper: #F2E5BF;
  --gray: #8B7C5A;
  --tint: #E9D9AC;
  --skel: #DBC99B;
  --skelDark: #C4AF7D;
  --dot-w: clamp(28px,2.8vw,42px);
  --terra: #AC4D3B;
  --terraDeep: #8F3E2F;
  --gold: #F0D88E;
  --goldBright: #FFD95D;
  --greenDeep: #456232;
  --greenTxt: #43682F;
  --blue: #004BAE;
  --f-serif: 'LT Serif','Prata',Georgia,serif;
  --radius-card: 0;
  --radius-chip: 0;
  --radius-pill: 0;
  --niv-inset: 64px;
  --niv-fab-h: 58px;
  --niv-gap: 12px;
  --hero-text-inset: 78px;
}

/* Viewport-scoped token overrides (kept verbatim) */
@media(max-width:900px){ :root{ --hero-text-inset: 84px; --niv-inset: 34px; --niv-fab-h: 50px; } }
@media(max-width:760px){ :root{ --hero-text-inset: 68px; --niv-inset: 28px; --niv-fab-h: 46px; } }

/* ===== 00-fonts-base.css ===== */
/* ===== 00-fonts-base.css ===== */

  /* Self-hosted brand fonts — declared under the same family names the CSS
     already uses ('OV Sage', 'LT Serif'), so every browser (incl. Safari,
     which blocks user-installed fonts) renders identically. */
  @font-face{ font-family:'OV Sage'; src:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/fonts/6a9e6ef81d437a8c3d33d94a-OVSoge-Thin.otf') format('opentype'); font-weight:100; font-style:normal; font-display:swap; }
  @font-face{ font-family:'OV Sage'; src:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/fonts/6a9e6ef81d437a8c3d33d980-OVSoge-ExtraLight.otf') format('opentype'); font-weight:200; font-style:normal; font-display:swap; }
  @font-face{ font-family:'OV Sage'; src:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/fonts/6a9e6ef801695b95cf77b74e-OVSoge-Light.otf') format('opentype'); font-weight:300; font-style:normal; font-display:swap; }
  @font-face{ font-family:'OV Sage'; src:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/fonts/6a9e6ef822f757aac181a58a-OVSoge-Regular.otf') format('opentype'); font-weight:400; font-style:normal; font-display:swap; }
  @font-face{ font-family:'OV Sage'; src:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/fonts/6a9e6ef86a8e76e30719800a-OVSoge-Medium.otf') format('opentype'); font-weight:500; font-style:normal; font-display:swap; }
  @font-face{ font-family:'OV Sage'; src:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/fonts/6a9e6f48bcbc2b3491eed4ca-OVSoge-SemiBold.otf') format('opentype'); font-weight:600; font-style:normal; font-display:swap; }
  @font-face{ font-family:'OV Sage'; src:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/fonts/6a9e6f49bf6aaec249f6f2c4-OVSoge-Bold.otf') format('opentype'); font-weight:700; font-style:normal; font-display:swap; }
  @font-face{ font-family:'OV Sage'; src:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/fonts/6a9e6f49665954dc6328967c-OVSoge-ExtraBold.otf') format('opentype'); font-weight:800; font-style:normal; font-display:swap; }
  @font-face{ font-family:'OV Sage'; src:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/fonts/6a9e6f492f9d51f83820228f-OVSoge-Black.otf') format('opentype'); font-weight:900; font-style:normal; font-display:swap; }
  @font-face{ font-family:'LT Serif'; src:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/fonts/6a9e6f49665954dc63289710-LTSerif-Regular.otf') format('opentype'); font-weight:400; font-style:normal; font-display:swap; }

  /* :root moved to 01-tokens.css */
  *{box-sizing:border-box; margin:0; padding:0;}
  html,body{font-family:'Jost',sans-serif; color:var(--ink); background:var(--paper);}

/* ===== 10-legacy-shell.css ===== */
/* ===== 10-legacy-shell.css ===== */
/* ===== NAV ===== */
  .nav{
    position:sticky; top:0; z-index:50; background:var(--paper);
    border-bottom:2px solid var(--ink); display:flex; align-items:center;
    justify-content:space-between; padding:16px 28px; flex-wrap:wrap; gap:10px;
    transition:transform .28s ease;
  }
  .niv-logo-fix, .niv-island{ transition:transform .45s cubic-bezier(.22,.8,.28,1), opacity .3s ease; }
  html.nvnav-hidden .niv-logo-fix,
  html.nvnav-hidden .niv-island{ transform:translateY(-160px) !important; opacity:0; pointer-events:none; }
  .nav-logo{font-weight:500; font-size:16px; letter-spacing:.04em; cursor:pointer; display:flex; align-items:center;}
  .nav-logo-img{ height:38px; width:auto; display:block; }
  .nav-links{display:flex; gap:20px; align-items:center; flex-wrap:wrap; position:relative;}
  .nav-link{font-size:13.5px; font-weight:500; cursor:pointer; padding:6px 4px; border:none; background:none;}
  .nav-link:hover{text-decoration:underline;}
  .dropdown{position:relative;}
  .dropdown-menu{
    display:none; position:absolute; top:100%; left:0; background:var(--paper);
    border:2px solid var(--ink); min-width:200px; z-index:60; flex-direction:column;
  }
  .dropdown-menu.open{display:flex;}
  .dropdown:hover .dropdown-menu{display:flex;}
  .dropdown-menu button{
    text-align:left; padding:10px 14px; font-size:13px; border:none; background:none;
    border-bottom:1px solid var(--ink); cursor:pointer; font-weight:500;
  }
  .dropdown-menu button:last-child{border-bottom:none;}
  .dropdown-menu button:hover{background:var(--ink); color:var(--paper);}
  .nav-utility{
    border:2px solid var(--ink); font-size:12.5px; font-weight:500; padding:9px 16px;
    cursor:pointer; background:var(--paper);
  }
  .nav-utility:hover{background:var(--ink); color:var(--paper);}

  /* ===== BREADCRUMB ===== */
  .crumb{
    font-size:11px; color:var(--gray); padding:9px 28px; border-bottom:1px solid var(--ink);
    font-family:'OV Sage','Jost',sans-serif; letter-spacing:.06em;
  }

  /* ===== PAGE / SECTION MODEL ===== */
  .page{display:none;}
  .page.active{display:block;}

  .web-section{ width:100%; padding:72px 28px; border-bottom:1px solid var(--ink); }
  .web-section.alt{background:var(--tint);}
  .web-section.hero{ min-height:80vh; display:flex; flex-direction:column; justify-content:center; overflow:hidden; }
  .hero-viewport{ overflow:hidden; width:100%; position:relative; }
  .hero-track{ display:flex; width:300%; transition:transform .6s ease; }
  .hero-slide{ width:33.3333%; flex-shrink:0; box-sizing:border-box; }
  .hero-slide-inner{ max-width:1180px; margin:0 auto; padding:0 0 40px; }
  .hero-dots{ display:flex; gap:10px; margin-top:28px; }
  .hero-dot{ width:11px; height:11px; border-radius:50%; border:2px solid var(--ink); background:var(--paper); cursor:pointer; padding:0; }
  .hero-dot.active{ background:var(--ink); }
  .scroll-arrow{ margin-top:30px; width:38px; height:38px; border:2px solid var(--ink); border-radius:50%; display:flex; align-items:center; justify-content:center; cursor:pointer; font-size:14px; }
  .scroll-arrow:hover{ background:var(--ink); color:var(--paper); }
  .web-section.intro{min-height:56vh; display:flex; flex-direction:column; justify-content:center;}
  .section-inner{max-width:1180px; margin:0 auto; width:100%;}

  .eyebrow{
    font-size:10.5px; font-weight:500; text-transform:uppercase; letter-spacing:.14em;
    color:var(--gray); font-family:'OV Sage','Jost',sans-serif; margin-bottom:10px;
  }
  .sec-title{ font-size:32px; font-weight:500; line-height:1.18; margin-bottom:22px; max-width:760px;}
  .hero-msg{ font-size:40px; font-weight:500; line-height:1.2; max-width:680px; margin-bottom:14px;}

  .skel{background:var(--skel); height:16px; border-radius:0; margin-bottom:10px;}
  .skel.w100{width:100%;} .skel.w90{width:90%;} .skel.w75{width:75%;} .skel.w60{width:60%;} .skel.w40{width:40%;} .skel.w25{width:25%;}
  .skel.big{height:34px; background:var(--skelDark); max-width:640px;}
  .skel.med{height:20px;}
  .skel.chip{height:11px; width:70px; display:inline-block; margin:0 6px 0 0; border-radius:0;}

  .btn{
    border:1.5px solid var(--greenDeep); background:transparent; color:var(--greenDeep);
    font-family:'OV Sage','Jost',sans-serif; font-size:20px; font-weight:500; height:58px; padding:0 30px; cursor:pointer;
    display:inline-flex; align-items:center; justify-content:center; gap:8px; border-radius:0; line-height:1; white-space:nowrap;
    transition:background .22s ease, color .22s ease, border-color .22s ease;
    margin-top:6px;
  }
  .btn:hover{background:var(--greenDeep); color:var(--paper); border-color:var(--greenDeep);}
  .btn + .btn{margin-left:10px;}

  .grid{display:grid; grid-template-columns:repeat(auto-fill, minmax(220px,1fr)); gap:18px; margin-top:8px;}
  .card{border:1.5px solid var(--greenDeep); border-radius:0; padding:16px; background:var(--paper);}
  .card .skel{height:11px;}

  /* Strategy page, Explore Our Equity Baskets: fixed 3-col / 2-row, bigger cards */
  /* AIF Overview page, same bigger-card treatment, 2-col for the 2 funds */
  .strategy-baskets-grid{ grid-template-columns:repeat(3,1fr); gap:26px; }
  .aif-funds-grid{ grid-template-columns:repeat(2,1fr); gap:26px; }
  .strategy-baskets-grid .stat-card,
  .aif-funds-grid .stat-card{ padding:32px; min-height:300px; }
  .strategy-baskets-grid .card-title,
  .aif-funds-grid .card-title{ font-size:21px; margin-bottom:16px; }

  /* well-built stat card (basket / fund style) */
  .stat-card{border:1.5px solid var(--greenDeep); border-radius:0; padding:20px; background:var(--paper); display:flex; flex-direction:column;}
  .stat-card .card-top{display:flex; justify-content:space-between; align-items:center; margin-bottom:14px;}
  .stat-card .card-title{font-size:17px; font-weight:500; margin-bottom:10px;}
  .stat-card .card-divider{border-top:1.5px solid var(--ink); margin-top:auto; margin-bottom:14px;}
  .stat-card .stat-row{display:flex; justify-content:space-between; align-items:center;}
  .stat-card .stat-row .skel{margin-bottom:0;}
  .stat-card .stat-label{font-family:'Jost',sans-serif; font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--gray); margin-bottom:3px;}
  .stat-card .stat-value{font-family:'OV Sage','Jost',sans-serif; font-size:20px; font-weight:600; color:var(--greenDeep);}

  .cms-row{
    display:flex; justify-content:space-between; align-items:center;
    border:1.5px solid var(--ink); padding:14px 16px; margin-bottom:10px; cursor:pointer; background:var(--paper);
  }
  .cms-row:hover{background:var(--tint);}
  .cms-row .title{font-size:14px; font-weight:500;}
  .cms-row .meta{font-size:11px; color:var(--gray); font-family:'OV Sage','Jost',sans-serif; margin-top:3px;}

  /* knowledge hub square cards */
  .kb-grid{display:grid; grid-template-columns:repeat(auto-fill, minmax(300px,1fr)); gap:26px;}
  .kb-card{border:1.5px solid var(--greenDeep); border-radius:0; overflow:hidden; cursor:pointer; background:var(--paper);}
  .kb-card:hover{background:var(--tint);}
  .know-panel .kb-card:hover{ border-color:var(--blue); }
  .know-panel .kb-card:hover .know-tag-research{ background:var(--blue); }
  /* Homepage Research & News: on arrival the article card demos its own hover
     state (.auto-on mirrors :hover), and hover on every card in the section is
     locked out until the demo ends. */
  #page-home #know-all .know-feature .kb-card.auto-on{ background:var(--tint); border-color:var(--blue); }
  #page-home #know-all .know-feature .kb-card.auto-on .know-tag-research{ background:var(--blue); }
  #page-home #know-all.know-demo-lock .kb-card,
  #page-home #know-all.know-demo-lock .news-card{ pointer-events:none; }
  .kb-poster{aspect-ratio:1/1; background:var(--skel); border-bottom:1.5px solid var(--greenDeep); display:flex; align-items:center; justify-content:center; font-size:46px; color:var(--gray);}
  .kb-card .kb-info{padding:24px;}
  .kb-card .title{font-size:18px; font-weight:500;}
  .kb-card .meta{font-size:12.5px; color:var(--gray); font-family:'Jost',sans-serif; margin-top:8px;}

  .collapse-head{
    border:2px solid var(--ink); padding:12px 16px; font-size:13px; font-weight:500;
    cursor:pointer; display:flex; justify-content:space-between; margin-top:10px;
  }
  .collapse-body{border:2px solid var(--ink); border-top:none; padding:14px 16px; display:none;}
  .collapse-body.open{display:block;}
  .collapse-body .skel{height:10px;}

  /* ══ Complaint Status — on-brand accordion + data tables ══ */
  .cmp-accordion{ display:flex; flex-direction:column; gap:14px; margin-top:28px; }
  .cmp-item{ border:1.5px solid var(--greenDeep); background:var(--paper); }
  .cmp-head{ display:flex; align-items:center; justify-content:space-between; gap:16px; padding:20px 26px; cursor:pointer; background:var(--greenDeep); color:var(--paper); font-family:'OV Sage','Jost',sans-serif; font-size:clamp(17px,1.5vw,21px); font-weight:600; user-select:none; transition:background .2s; }
  .cmp-head[aria-expanded="false"]{ background:var(--paper); color:var(--greenDeep); }
  .cmp-head .cmp-chev{ flex:0 0 auto; transition:transform .3s cubic-bezier(.22,.8,.28,1); font-size:15px; }
  .cmp-head[aria-expanded="false"] .cmp-chev{ transform:rotate(-90deg); }
  .cmp-panel{ display:none; padding:22px 26px 26px; }
  .cmp-panel.open{ display:block; }
  .cmp-monthbar{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; border:1.5px solid var(--greenDeep); padding:12px 18px; margin-bottom:16px; }
  .cmp-monthbar label{ font-family:'Jost',sans-serif; font-size:clamp(14px,1.2vw,16px); color:var(--ink); }
  .cmp-select{ font-family:'Jost',sans-serif; font-size:15px; color:var(--greenDeep); font-weight:600; background:var(--tint); border:1.5px solid var(--greenDeep); padding:7px 34px 7px 14px; cursor:pointer; -webkit-appearance:none; appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23456232' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 12px center; }
  .cmp-table-wrap{ overflow-x:auto; -webkit-overflow-scrolling:touch; }
  .cmp-table{ width:100%; border-collapse:collapse; font-family:'Jost',sans-serif; font-size:14px; min-width:760px; }
  .cmp-table th, .cmp-table td{ border:1px solid var(--greenDeep); padding:12px 14px; text-align:left; vertical-align:middle; }
  .cmp-table thead th{ background:var(--greenDeep); color:var(--paper); font-weight:600; font-size:13px; line-height:1.3; }
  .cmp-table tbody td{ color:var(--ink); }
  .cmp-table tbody tr:nth-child(even) td{ background:var(--tint); }
  /* Grand Total in brand sand, as in the Research Analyst panel. The selector is
     one class longer than the rule each panel's embed carries, so it wins. */
  .cmp-item .cmp-table tfoot td{ background:var(--skel); font-weight:700; color:var(--greenDeep); }
  .cmp-note{ font-family:'Jost',sans-serif; font-size:12px; color:var(--gray); margin-top:12px; line-height:1.5; }

  /* ══ Global site footer (light, logo-led) ══ */
  .gfoot{ border-top:none; padding-top:56px; }
  .web-section.gfoot{ background:var(--greenDeep); color:var(--paper); }
  .gfoot-top{ display:grid; grid-template-columns:1.2fr 1fr 1.1fr; gap:48px; padding-bottom:40px; }
  .gfoot-logo{ height:46px; width:auto; display:block; margin-bottom:18px; }
  .gfoot-tagline{ font-family:'Jost',sans-serif; font-size:15px; line-height:1.6; color:rgba(242,229,191,.72); max-width:330px; }
  .gfoot-col h4{ font-family:'OV Sage','Jost',sans-serif; font-size:12px; font-weight:600; letter-spacing:.12em; text-transform:uppercase; color:rgba(242,229,191,.6); margin-bottom:16px; }
  .gfoot-links{ display:flex; flex-direction:column; gap:11px; align-items:flex-start; }
  .gfoot-link{ font-family:'Jost',sans-serif; font-size:15px; color:var(--paper); background:none; border:none; text-align:left; padding:0; cursor:pointer; transition:color .18s; }
  .gfoot-link:hover{ color:var(--goldBright); }
  .gfoot-office + .gfoot-office{ margin-top:20px; }
  .gfoot-office h5{ font-family:'OV Sage','Jost',sans-serif; font-size:13.5px; font-weight:600; margin-bottom:7px; color:var(--paper); }
  .gfoot-office p{ font-family:'Jost',sans-serif; font-size:13.5px; line-height:1.65; color:rgba(242,229,191,.7); }
  .gfoot-office a{ color:var(--paper); cursor:pointer; transition:color .18s; }
  .gfoot-office a:hover{ color:var(--goldBright); }
  .gfoot-actions{ display:flex; flex-direction:column; gap:14px; padding:28px 0; border-top:1px solid rgba(242,229,191,.22); }
  .gfoot-actions-row{ display:flex; align-items:center; flex-wrap:wrap; gap:14px; }
  .gfoot-actions .btn{ flex:1 1 0; min-width:150px; text-align:center; justify-content:center; background:transparent; color:var(--paper); border:1.5px solid rgba(242,229,191,.4); font-family:'Jost',sans-serif; font-weight:500; transition:background .18s,color .18s,border-color .18s; }
  .gfoot-actions .btn:hover{ background:#F0C157; color:var(--greenDeep); border-color:#F0C157; }
  .gfoot-social{ display:flex; gap:14px; margin-left:0; margin-right:0; flex:0 0 auto; }
  .gfoot-social .social-icon{ width:56px; height:56px; font-size:15px; border-color:rgba(242,229,191,.4); color:var(--paper); transition:background .18s,color .18s,border-color .18s; }
  .gfoot-social .social-icon:hover{ background:#F0C157; color:var(--greenDeep); border-color:#F0C157; }
  .gfoot-reg{ padding:22px 0 0; font-family:'Jost',sans-serif; font-size:13px; line-height:1.7; color:rgba(242,229,191,.78); }
  .gfoot-reg strong{ color:var(--paper); font-weight:600; }
  .gfoot-disclaimer{ padding:14px 0 0; font-family:'Jost',sans-serif; font-size:12.5px; line-height:1.7; color:rgba(242,229,191,.55); }
  .gfoot-bottom{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:14px; padding:22px 0 4px; font-family:'Jost',sans-serif; font-size:12.5px; color:rgba(242,229,191,.55); }
  .gfoot-bottom a{ color:rgba(242,229,191,.8); cursor:pointer; transition:color .18s; }
  .gfoot-bottom a:hover{ color:var(--goldBright); }
  @media(max-width:900px){
    .gfoot-top{ grid-template-columns:1fr; gap:34px; }
    .gfoot-social{ margin-right:0; }
    .gfoot-actions .btn{ min-width:120px; }
  }
  @media(max-width:640px){
    .gfoot-actions-row{ flex-direction:column; align-items:stretch; gap:10px; }
    .gfoot-actions .btn{ flex:1 1 auto; min-width:0; width:100%; box-sizing:border-box; }
    .gfoot-social{ justify-content:center; gap:12px; }
    .gfoot-social .social-icon{ width:48px; height:48px; }
    .gfoot-bottom{ flex-direction:column; gap:8px; }
  }
  @media(max-width:760px){
    .cmp-head{ padding:16px 18px; }
    .cmp-panel{ padding:16px 14px 20px; }
  }

  .search-bar{
    border:2px solid var(--ink); padding:13px 16px; font-size:14px; width:100%;
    margin-bottom:18px; font-family:'OV Sage','Jost',sans-serif; max-width:520px;
  }
  .tabs{display:flex; gap:10px; flex-wrap:wrap; margin-bottom:22px;}
  .tab{border:2px solid var(--ink); padding:9px 16px; font-size:12.5px; font-weight:500; cursor:pointer; background:var(--paper);}
  .tab.active{background:var(--ink); color:var(--paper);}
  .kb-list{display:none;}
  .kb-list.active{display:block;}

/* ===== 11-page-knowledge.css ===== */
/* ===== 11-page-knowledge.css ===== */
/* ===== Knowledge Hub — Discover Emerging Signals (restyled) ===== */
  #page-knowledge .web-section{ padding-left:0 !important; padding-right:0 !important; padding-top:0 !important; }
  #page-knowledge .section-inner{ max-width:none !important; margin:0 !important; padding-left:var(--hero-text-inset) !important; padding-right:var(--niv-inset) !important; padding-top:calc(var(--niv-inset) + var(--niv-fab-h) + 28px) !important; box-sizing:border-box; }

  /* ── Top spacing above the hub heading ──────────────────────────────────
     The formula above reserves --niv-inset + --niv-fab-h + 28, i.e. the
     floating logo inset plus the HAMBURGER height. That is the right sum
     below 1025px, where the nav IS the floating logo + island. From 1025px up
     the nav is the 76px .dnav strip (see the `@media(min-width:1025px)` block
     that reveals it) and the hamburger does not exist — so the page was
     reserving 64+58+28 = 150px for a 76px bar. Client: "too much empty
     spacing between the navbar and the knowledge hub section."
     76 (strip) + 28 (the same breathing room the formula uses) = 104. */
  @media(min-width:1025px){
    #page-knowledge .section-inner{ padding-top:104px !important; }
  }
  #page-knowledge .kb-left .kb-title-lg{ margin-bottom:4px; max-width:290px; margin-top:14px; }
  #page-knowledge .kb-left .kb-type-row .kb-chip{ font-size:19px; padding:17px 28px; }
  #page-knowledge .kb-left .kb-search{ padding:13px 16px; }
  #page-knowledge .eyebrow{ margin-bottom:0; }
  #page-knowledge .kb-single{ display:block; }
  #page-knowledge .kb-head-block{ margin-bottom:22px; padding-top:8px; }
  #page-knowledge .kb-head-block .eyebrow{ margin-bottom:14px; }
  #page-knowledge .kb-head-block .kb-title-lg{ margin-bottom:0; white-space:nowrap; }
  #page-knowledge .kb-filterbar{ display:flex; align-items:center; flex-wrap:wrap; gap:12px 16px; margin:0 0 32px; }
  #page-knowledge .kb-filterbar .kb-search{ flex:0 0 auto; width:clamp(200px,22vw,300px); height:44px; box-sizing:border-box; margin:0; }
  #page-knowledge .kb-filterbar .kb-type-row{ display:flex; flex-wrap:wrap; gap:10px; margin:0; flex:1 1 auto; justify-content:center; }
  #page-knowledge .kb-filterbar .kb-type-row .kb-chip{ font-size:14px !important; padding:0 16px !important; height:44px; display:inline-flex; align-items:center; white-space:nowrap; }
  #page-knowledge .kb-filterbar .kb-controls-drops{ display:flex; flex-direction:row; gap:10px; flex:0 0 auto; }
  #page-knowledge .kb-filterbar .kb-controls-drops .kb-select{ width:auto; min-width:150px; height:44px; box-sizing:border-box; font-size:14px; padding:0 13px; }
  #page-knowledge .kb-right .kb-signals-grid{ grid-template-columns:repeat(3,1fr); gap:26px; }
  /* ⚠ 16/9, not 4/3, and it must match .pod-poster exactly. kb-podcast.js adds
     .pod-poster to a podcast card's poster, and that class carries
     `aspect-ratio:16/9 !important` from 97-ways-mobile.css - a LATER sheet. So
     podcasts rendered 16:9 and every other type 4:3, and the grid went ragged
     the moment "All" mixed them. 16/9 also matches the home page, which forces
     `#page-home #signalsGrid .kb-card .kb-poster{aspect-ratio:16/9 !important}`.
     Change this and the <=900 copy together or the mismatch returns at one
     breakpoint. */
  #page-knowledge .kb-right .kb-signals-grid .kb-poster{ aspect-ratio:16/9; }
  @media(max-width:991px){
    #page-knowledge .kb-filterbar .kb-search{ width:100%; }
    #page-knowledge .kb-filterbar .kb-controls-drops{ width:100%; }
    #page-knowledge .kb-right .kb-signals-grid{ grid-template-columns:1fr 1fr; }
  }
  @media(max-width:767px){
    #page-knowledge .kb-right .kb-signals-grid{ grid-template-columns:1fr; }
  }
  @media(max-width:767px){
    /* Phone: tighter top, a two-line title and a compact filter bar, so the
       first card sits wholly on the first screen with the next one peeking. */
    #page-knowledge .section-inner{ padding-left:16px !important; padding-right:16px !important; padding-top:86px !important; }
    #page-knowledge .kb-head-block{ margin-bottom:14px; padding-top:0; }
    #page-knowledge .kb-head-block .eyebrow{ margin-bottom:8px; }
    #page-knowledge .kb-head-block .kb-title-lg{ white-space:normal !important; font-size:clamp(28px,8vw,40px) !important; line-height:1.05 !important; max-width:none !important; }
    #page-knowledge .kb-filterbar{ flex-direction:column; align-items:stretch; gap:8px; margin-bottom:16px; }
    #page-knowledge .kb-filterbar .kb-search{ width:100% !important; font-size:16px; }
    #page-knowledge .kb-filterbar .kb-type-row{ justify-content:flex-start !important; gap:8px; }
    #page-knowledge .kb-filterbar .kb-type-row .kb-chip{ font-size:13px !important; padding:0 14px !important; height:40px; }
    #page-knowledge .kb-filterbar .kb-controls-drops{ width:100%; flex-direction:row; gap:8px; }
    #page-knowledge .kb-filterbar .kb-controls-drops .kb-select,
    #page-knowledge .kb-filterbar .kb-controls-drops .niv-sel-trigger{
      flex:1 1 0; width:auto; min-width:0; font-size:13px; padding:0 10px;
      box-sizing:border-box;
    }
    #page-knowledge .kb-filterbar .kb-controls-drops .niv-sel{ flex:1 1 0; min-width:0; }
    #page-knowledge .kb-right .kb-signals-grid{ grid-template-columns:1fr; gap:14px; }
    #page-knowledge .kb-right .kb-signals-grid .kb-poster{ aspect-ratio:16/9; }  /* keep in step with the desktop rule above */
    #page-knowledge .kb-card .kb-info .title{ font-size:15px !important; line-height:1.28; }
    #page-knowledge .kb-card .kb-info .meta{ font-size:12px; }
  }
  @media(max-width:479px){
    #page-knowledge .kb-right .kb-signals-grid{ grid-template-columns:1fr; }
  }
  #page-knowledge .kb-title-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:28px; margin:-8px 0 28px; }
  #page-knowledge .kb-title-lg{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(32px,3.6vw,52px); font-weight:500; line-height:1.12; color:var(--ink); margin:0; letter-spacing:-.01em; }
  #page-knowledge .kb-title-burst{ flex:0 0 auto; width:clamp(96px,9vw,150px); height:clamp(96px,9vw,150px); fill:var(--blue); will-change:transform; transform-origin:100% 100%; }
  #page-knowledge .kb-title-lg strong{ font-weight:700; }
  #page-knowledge .kb-search{ width:100%; max-width:none; border:1.5px solid var(--ink); background:var(--paper); padding:16px 18px; font-size:15px; font-family:'Inter',sans-serif; color:var(--ink); margin:0 0 28px; border-radius:0; box-sizing:border-box; }
  #page-knowledge .kb-search:focus{ outline:none; border-color:var(--terra); }
  #page-knowledge .kb-search::placeholder{ color:var(--gray); }
  .kb-filter-row{ display:flex; flex-wrap:wrap; gap:12px; }
  .kb-controls{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:20px 28px; margin:0 0 34px; }
  .kb-type-row{ margin:0; flex:1 1 auto; }
  .kb-controls-drops{ display:flex; flex-wrap:wrap; gap:12px; flex:0 0 auto; }
  .kb-controls-drops .kb-select{ width:auto; min-width:190px; }
  .kb-chip{ border:1.5px solid var(--ink); background:transparent; color:var(--ink); font-family:'Inter',sans-serif; font-size:14px; font-weight:500; padding:9px 18px; cursor:pointer; border-radius:0; white-space:nowrap; transition:none; }
  .kb-chip:hover{ background:var(--tint); }
  .kb-chip.active{ background:var(--terra); border-color:var(--terra); color:var(--paper); }
  .kb-type-row .kb-chip{ font-size:17px; padding:15px 26px; }
  /* per-category colors (hover + active) */
  .kb-type-row .kb-chip[data-oc*="'all'"]:hover,
  .kb-type-row .kb-chip[data-oc*="'all'"].active{ background:var(--terra); border-color:var(--terra); color:var(--paper); }
  .kb-type-row .kb-chip[data-oc*="deepdives"]:hover,
  .kb-type-row .kb-chip[data-oc*="infographics"]:hover,
  .kb-type-row .kb-chip[data-oc*="quickreads"]:hover,
  .kb-type-row .kb-chip[data-oc*="deepdives"].active,
  .kb-type-row .kb-chip[data-oc*="infographics"].active,
  .kb-type-row .kb-chip[data-oc*="quickreads"].active{ background:var(--blue); border-color:var(--blue); color:var(--paper); }
  .kb-type-row .kb-chip[data-oc*="videos"]:hover,
  .kb-type-row .kb-chip[data-oc*="deals"]:hover,
  .kb-type-row .kb-chip[data-oc*="videos"].active,
  .kb-type-row .kb-chip[data-oc*="deals"].active{ background:var(--greenDeep); border-color:var(--greenDeep); color:var(--paper); }
  /* ---- Webflow chips: the active state IS the checked radio ----
     The rules above drive the STATIC build, where a chip is a button carrying
     data-oc and JS toggles .active. On Webflow a chip is a <label> wrapping a
     radio, so there is no .active to toggle and no data-oc to match — and
     data-oc must never be reintroduced, because the shipped niv-app.js
     delegates every [data-oc] click into the static SPA router, whose targets
     are .html paths that 404 here.
     Keying off :checked means the highlight is native: it follows a click, a
     deep link from the nav, and a programmatic reset alike, with no JS. */
  .kb-chip:has(> .kb-radio-input:checked){
    background:var(--terra); border-color:var(--terra); color:var(--paper);
  }
  .kb-chip.kb-chip-blue:has(> .kb-radio-input:checked){
    background:var(--blue); border-color:var(--blue); color:var(--paper);
  }
  .kb-chip.kb-chip-green:has(> .kb-radio-input:checked){
    background:var(--greenDeep); border-color:var(--greenDeep); color:var(--paper);
  }
  /* ---- Hover mirrors the active state ----
     Client direction: hovering a chip previews exactly the colour it takes
     once selected — All terracotta, Research/Infographics/Quick Reads blue,
     Podcast/Niveshaay Deals green. These come AFTER the base
     `.kb-chip:hover{background:var(--tint)}` so they override the old tint,
     and they never beat a :checked rule (the :has() selectors above are one
     step more specific in every pair), so a lit chip stays lit while you
     drag the cursor across it. */
  .kb-chip:hover{
    background:var(--terra); border-color:var(--terra); color:var(--paper);
  }
  .kb-chip.kb-chip-blue:hover{
    background:var(--blue); border-color:var(--blue); color:var(--paper);
  }
  .kb-chip.kb-chip-green:hover{
    background:var(--greenDeep); border-color:var(--greenDeep); color:var(--paper);
  }
  /* ---- Equal-height cards ----
     Webflow puts a .w-dyn-item between the grid and the card, so the grid
     stretches the WRAPPER and the card inside it keeps its content height.
     Rows therefore go ragged whenever one title wraps to two lines. Not a
     filtering bug — filtering only makes it obvious by changing which cards
     sit next to each other. */
  .kb-signals-grid > .w-dyn-item{ display:flex; }
  .kb-signals-grid > .w-dyn-item > .kb-card{ flex:1 1 auto; width:100%; }
  /* ---- Filter bar on ONE line ----
     ⚠ The block near the top of this file that lays this bar out is scoped to
     `#page-knowledge`, an id the Webflow page does not carry (same trap as
     #page-article), AND it targets `.kb-type-row` where the Webflow chip row
     carries `.kb-filter-row`. Two misses, so NONE of it applied and the bar
     fell back to the bare wrapping rules — which is why search + chips sat on
     one row and the two dropdowns dropped to a second.
     These are the class-scoped twins, keyed on `.kb-filterbar`, which the form
     does carry. Everything shares one row so the grid below gains that height.
     Sizes are deliberately tighter than the id-scoped originals: the container
     is 1180px and the six chips plus a search field plus two dropdowns do not
     fit at the original 300px/16px sizing. */
  @media(min-width:992px){
    .kb-filterbar{ display:flex; align-items:center; flex-wrap:nowrap; gap:12px; margin:0 0 32px; }
    .kb-filterbar .kb-search{ flex:0 1 clamp(170px,17vw,260px); min-width:0; height:44px; box-sizing:border-box; margin:0; }
    .kb-filterbar .kb-filter-row{ display:flex; flex-wrap:nowrap; gap:8px; margin:0; flex:0 1 auto; min-width:0; justify-content:center; }
    .kb-filterbar .kb-filter-row .kb-chip{ font-size:13px; padding:0 13px; height:44px; display:inline-flex; align-items:center; white-space:nowrap; flex:0 0 auto; }
    .kb-filterbar .kb-controls-drops{ display:flex; flex-wrap:nowrap; flex-direction:row; gap:8px; flex:0 0 auto; margin:0; }
    .kb-filterbar .kb-controls-drops .kb-select,
    .kb-filterbar .kb-controls-drops .kb-sel-trigger{
      width:auto; min-width:124px; height:44px; box-sizing:border-box;
      font-size:13px; padding:0 12px;
    }
  }
  /* Below the one-line threshold the bar wraps in a deliberate order: search
     full width, then the chips, then the two dropdowns sharing a row. */
  @media(max-width:991px){
    .kb-filterbar{ display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin:0 0 28px; }
    .kb-filterbar .kb-search{ flex:1 1 100%; height:44px; box-sizing:border-box; margin:0; }
    .kb-filterbar .kb-filter-row{ display:flex; flex-wrap:wrap; gap:8px; margin:0; flex:1 1 100%; }
    .kb-filterbar .kb-controls-drops{ display:flex; gap:10px; flex:1 1 100%; margin:0; }
    .kb-filterbar .kb-controls-drops .kb-select,
    .kb-filterbar .kb-controls-drops .kb-sel-trigger{ flex:1 1 0; width:auto; min-width:0; height:44px; box-sizing:border-box; }
  }
  /* ---- Phones: an even two-column grid, not a ragged wrap ----
     Six chips of six different intrinsic widths wrapping 3/2/1 gives three
     ragged rows, and on the live site they were also centred - which none of
     the rules above ask for, and which a faithful reproduction of the real
     element tree could not make happen locally. Rather than keep guessing at
     what centres them, this stops depending on intrinsic width at all.

     A grid also fixes the tap targets: every chip becomes a full half-width
     44px hit area instead of "All" being a 67px sliver. */
  @media(max-width:767px){
    .kb-filterbar .kb-filter-row{
      display:grid !important;
      grid-template-columns:1fr 1fr;
      justify-content:stretch !important;
      justify-items:stretch;
      gap:6px;
      margin:0;
      width:100%;
    }
    .kb-filterbar .kb-filter-row .kb-chip{
      display:inline-flex !important;
      align-items:center;
      justify-content:center;
      width:100%;
      min-width:0;
      box-sizing:border-box;
      height:44px;
      padding:0 10px;
      margin:0;
      font-size:13px;
      line-height:1;
      text-align:center;
      white-space:nowrap;
      overflow:hidden;
      text-overflow:ellipsis;
    }
  }
  /* Small tablets keep the wrap, but pinned to the left edge - never centred. */
  @media(min-width:768px) and (max-width:991px){
    .kb-filterbar .kb-filter-row{ justify-content:flex-start !important; }
  }
  .kb-filter-label{ font-size:12px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--gray); margin:0 0 12px; }
  .kb-select{ border:1.5px solid var(--ink); background:var(--paper); color:var(--ink); font-family:'Inter',sans-serif; font-size:15px; font-weight:500; padding:13px 16px; border-radius:0; cursor:pointer; box-sizing:border-box; appearance:none; -webkit-appearance:none; background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%232C2E2B' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>"); background-repeat:no-repeat; background-position:right 16px center; padding-right:44px; }
  .kb-select:focus{ outline:none; border-color:var(--terra); }
  .kb-signals-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:26px; }
  .kb-signals-grid .kb-card{ position:relative; display:flex; flex-direction:column; }
  .kb-signals-grid .kb-poster{ aspect-ratio:16/10; font-size:42px; }
  .kb-poster-ico{ width:46px; height:46px; opacity:.5; }
  .kb-signals-grid .kb-card:hover{ border-color:var(--terra); }
  .kb-type-tag{ position:absolute; top:14px; left:14px; font-size:10.5px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; padding:5px 11px; background:var(--ink); color:var(--paper); z-index:2; }
  .kb-signals-grid .kb-card:hover .kb-type-tag{ background:var(--terra); }
  /* per-type card colors (hover outline + tag) */
  /* "research" is the current slug; "deepdives" was the old one and is still what
     the static build's own markup carries, so both stay listed. */
  .kb-signals-grid .kb-card[data-type="research"]:hover,
  .kb-signals-grid .kb-card[data-type="deepdives"]:hover,
  .kb-signals-grid .kb-card[data-type="infographics"]:hover,
  .kb-signals-grid .kb-card[data-type="quickreads"]:hover{ border-color:var(--blue); }
  .kb-signals-grid .kb-card[data-type="research"]:hover .kb-type-tag,
  .kb-signals-grid .kb-card[data-type="deepdives"]:hover .kb-type-tag,
  .kb-signals-grid .kb-card[data-type="infographics"]:hover .kb-type-tag,
  .kb-signals-grid .kb-card[data-type="quickreads"]:hover .kb-type-tag{ background:var(--blue); }
  .kb-signals-grid .kb-card[data-type="videos"]:hover,
  .kb-signals-grid .kb-card[data-type="deals"]:hover{ border-color:var(--greenDeep); }
  .kb-signals-grid .kb-card[data-type="videos"]:hover .kb-type-tag,
  .kb-signals-grid .kb-card[data-type="deals"]:hover .kb-type-tag{ background:var(--greenDeep); }
  /* Sector dropdown: the list is 17 long and scrolls, so the scrollbar has to be
     permanently visible rather than the overlay bar macOS hides until you move.
     overscroll-behavior stops a flick at the end scrolling the page underneath.
     ⚠ The two syntaxes are NOT additive. Blink and WebKit ignore every
     ::-webkit-scrollbar rule as soon as scrollbar-width or scrollbar-color is
     set, and fall back to the overlay bar that hides — which is precisely what
     this block exists to prevent. So the standard properties are fenced off to
     engines that have no ::-webkit-scrollbar at all, i.e. Firefox. */
  .kb-sel-panel{ overscroll-behavior:contain; }
  @supports not selector(::-webkit-scrollbar){
    .kb-sel-panel{ scrollbar-width:thin; scrollbar-color:var(--terra) rgba(44,46,43,.12); }
  }
  .kb-sel-panel::-webkit-scrollbar{ width:10px; }
  .kb-sel-panel::-webkit-scrollbar-track{ background:rgba(44,46,43,.10); }
  .kb-sel-panel::-webkit-scrollbar-thumb{ background:var(--terra);
    border:2px solid var(--paper); border-radius:0; }
  .kb-sel-panel::-webkit-scrollbar-thumb:hover{ background:var(--terraDeep); }
  /* The open marker: a chevron on the trigger, rotated when the panel is open. */
  .kb-sel-trigger::-webkit-details-marker{ display:none; }
  .kb-sel-trigger::marker{ content:''; }
  .kb-sel-trigger::after{ content:''; position:absolute; right:16px;
    width:8px; height:8px; border-right:1.5px solid var(--ink); border-bottom:1.5px solid var(--ink);
    transform:rotate(45deg) translateY(-2px); transition:transform .18s ease; }
  .kb-sel[open] > .kb-sel-trigger::after{ transform:rotate(-135deg) translateY(-2px); }
  .kb-sel-opt:hover{ background:rgba(172,77,59,.10); }

  .kb-empty{ padding:44px 0; color:var(--gray); font-size:16px; }
  @media(max-width:900px){ .kb-signals-grid{ grid-template-columns:1fr 1fr; } .kb-filter-group{ gap:22px; } .kb-type-row .kb-chip{ font-size:15px; padding:12px 20px; } }
  @media(max-width:600px){ .kb-signals-grid{ grid-template-columns:1fr; } }

/* ===== Knowledge Hub, top-bar layout ===== */
  .kb-layout{ display:flex; gap:44px; align-items:flex-start; } /* kept for event galleries */
  #page-knowledge .section-inner{ max-width:1360px; }
  .kb-header-top{
    display:flex; justify-content:space-between; align-items:center;
    gap:18px; margin-bottom:14px;
  }
  .kb-main-title{
    font-size:clamp(48px,5.5vw,82px); font-weight:500; line-height:1.06;
    margin:0; max-width:none; letter-spacing:-.01em; white-space:nowrap;
  }
  .kb-header-top .kb-cat{ flex:0 0 calc((100% - 42px) / 4); }
  .kb-tab-row{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin:0 0 24px; }
  .kb-cat{
    border:2px solid var(--ink); padding:18px 20px; font-size:17px; font-weight:500;
    cursor:pointer; background:transparent; color:var(--ink); font-family:'OV Sage','Jost',sans-serif;
    transition:background .12s, color .12s; white-space:nowrap; text-align:center;
  }
  .kb-cat.active{ background:var(--ink); color:var(--paper); }
  .kb-articles{ width:100%; }
  .kb-grid{ display:grid; grid-template-columns:1fr 1fr; gap:20px; }
  .kb-grid .kb-poster{ aspect-ratio:16/9; font-size:38px; }
  .kb-grid .kb-info{ padding:20px; }
  .kb-grid .title{ font-size:17px; }
  .kb-grid .meta{ font-size:12px; margin-top:6px; }
  .kb-card-stack{ display:flex; flex-direction:column; gap:24px; }
  .kb-card-stack .kb-card{ width:100%; }
  .kb-card-stack .kb-poster{ aspect-ratio:16/6; font-size:42px; }
  .kb-card-stack .kb-info{ padding:22px; }
  .kb-card-stack .title{ font-size:19px; }
  .kb-card-stack .meta{ font-size:13px; margin-top:8px; }

  /* Event gallery pages, same 2-col layout as KB, left = sticky info, right = scrolling images */
  .event-gallery-sidebar{
    flex:0 0 280px; position:sticky; top:96px; align-self:flex-start; height:fit-content;
    display:flex; flex-direction:column; gap:20px;
  }
  .event-gallery-sidebar .sec-title{ margin-bottom:8px; font-family:'OV Sage','Jost',sans-serif !important; font-weight:500; font-size:clamp(30px,4vw,52px); line-height:1.14; }
  .event-gallery-sidebar .eyebrow{ margin-bottom:4px; }
  [id^="page-event-"] .event-gallery-sidebar .eyebrow{ display:none; }
  @media(max-width:760px){
    [id^="page-event-"] .web-section .section-inner{ padding-left:16px !important; padding-right:16px !important; }
    [id^="page-event-"] .kb-layout{ flex-direction:column; gap:24px; }
    [id^="page-event-"] .event-gallery-sidebar{ gap:14px; }
    [id^="page-event-"] .event-gallery-sidebar .sec-title{ font-size:clamp(30px,8.5vw,42px); }
    [id^="page-event-"] .kb-card-stack{ gap:16px; }
    [id^="page-event-"] .kb-card-stack .kb-poster{ aspect-ratio:4/3; }
    [id^="page-event-"] .kb-card-stack .kb-info{ padding:18px; }
    [id^="page-event-"] .event-gallery-sidebar .btn{ width:100%; box-sizing:border-box; text-align:center; }
  }
  .event-gallery-sidebar .skel{ margin-bottom:10px; }

  .team-card{display:flex; flex-direction:column; align-items:center; gap:10px; border:2px solid var(--ink); padding:18px;}
  .avatar{width:60px; height:60px; border-radius:50%; background:var(--skelDark);}

  /* ===== Schedule a Call Modal ===== */
  .sch-overlay{ display:none; position:fixed; inset:0; background:rgba(44,40,30,.55); z-index:200; align-items:center; justify-content:center; padding:20px; }
  .sch-overlay.open{ display:flex; }
  /* Slide up from the bottom into place, compositor-driven (transform+opacity) = 60fps */
  .sch-overlay.open .sch-modal{ animation:schSlideUp .5s cubic-bezier(.22,.8,.28,1) both; }
  @keyframes schSlideUp{ from{ transform:translateY(64px); opacity:0; } to{ transform:translateY(0); opacity:1; } }
  @media (prefers-reduced-motion: reduce){ .sch-overlay.open .sch-modal{ animation:none; } }
  .sch-modal{ background:var(--paper); border:2px solid var(--ink); max-width:640px; width:100%; padding:52px; position:relative; max-height:92vh; overflow-y:auto; box-sizing:border-box; }
  .sch-close{ position:absolute; top:16px; right:20px; border:none; background:none; font-size:20px; cursor:pointer; color:var(--gray); line-height:1; }
  .sch-close:hover{ color:var(--ink); }
  .sch-header{ margin-bottom:36px; }
  /* Main title in OV Sage; everything else in the modal/form in Inter */
  .sch-modal .sec-title{ font-family:'OV Sage','Jost',sans-serif; }
  .sch-modal .eyebrow,
  .sch-header p,
  .sch-form, .sch-form input, .sch-form select, .sch-form .btn,
  .sch-note{ font-family:'Inter',sans-serif !important; }
  .sch-header p{ font-size:15px; line-height:1.6; color:#555; margin:10px 0 0; }
  .sch-form{ display:flex; flex-direction:column; gap:14px; }
  .sch-form input, .sch-form select{ box-sizing:border-box; width:100%; }
  .sch-form textarea{ box-sizing:border-box; width:100%; background:transparent !important; border:1.5px solid var(--greenDeep) !important; border-radius:0 !important; color:var(--ink) !important; padding:15px 18px; font-size:15px; font-family:'Inter',sans-serif !important; line-height:1.5; resize:vertical; min-height:110px; transition:border-color .2s ease, background-color .2s ease; }
  .sch-form textarea::placeholder{ color:var(--gray); opacity:.9; }
  .sch-form textarea:focus{ outline:none; border-color:var(--greenDeep) !important; background:rgba(30,58,46,.05) !important; }
  /* Form fields in the site's language: cream field, greenDeep hairline, no white bars */
  .sch-form input, .sch-form select{ background:transparent !important; border:1.5px solid var(--greenDeep) !important; border-radius:0 !important; color:var(--ink) !important; padding:15px 18px; font-size:15px; transition:border-color .2s ease, background-color .2s ease; }
  .sch-form input::placeholder{ color:var(--gray); opacity:.9; }
  .sch-form input:focus, .sch-form select:focus{ outline:none; border-color:var(--greenDeep) !important; background:rgba(30,58,46,.05) !important; }
  .sch-select{ appearance:none; -webkit-appearance:none; background-image:linear-gradient(45deg,transparent 50%,var(--greenDeep) 50%),linear-gradient(135deg,var(--greenDeep) 50%,transparent 50%) !important; background-position:calc(100% - 20px) 50%, calc(100% - 14px) 50% !important; background-size:6px 6px, 6px 6px !important; background-repeat:no-repeat !important; padding-right:44px; }
  .sch-row{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
  .sch-note{ font-size:11px; color:var(--gray); text-align:center; margin-top:4px; }
  /* ===== Custom select (replaces native OS dropdown in all forms) ===== */
  .niv-sel{ position:relative; font-family:'Inter',sans-serif; }
  .niv-sel-trigger{ width:100%; box-sizing:border-box; display:flex; align-items:center; justify-content:space-between; gap:12px; background:transparent; border:1.5px solid var(--greenDeep); border-radius:0; color:var(--ink); padding:15px 18px; font-size:15px; font-family:'Inter',sans-serif; text-align:left; cursor:pointer; transition:border-color .2s ease, background-color .2s ease; }
  .niv-sel.open .niv-sel-trigger, .niv-sel-trigger:focus{ outline:none; border-color:var(--greenDeep); background:rgba(30,58,46,.05); }
  .niv-sel-value{ flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .niv-sel-value.placeholder{ color:var(--gray); opacity:.9; }
  .niv-sel-caret{ flex:none; width:12px; height:12px; transition:transform .25s ease; color:var(--greenDeep); }
  .niv-sel.open .niv-sel-caret{ transform:rotate(180deg); }
  .niv-sel-menu{ position:absolute; top:calc(100% + 6px); left:0; right:0; background:var(--paper); border:1.5px solid var(--greenDeep); z-index:30; max-height:0; overflow:hidden; opacity:0; transform:translateY(-6px); transition:opacity .22s ease, transform .22s ease, max-height .24s ease; pointer-events:none; box-shadow:0 18px 34px -18px rgba(0,0,0,.4); }
  .niv-sel.open .niv-sel-menu{ max-height:300px; overflow-y:auto; opacity:1; transform:translateY(0); pointer-events:auto; }
  .niv-sel-opt{ width:100%; box-sizing:border-box; display:flex; align-items:flex-start; justify-content:space-between; gap:14px; background:transparent; border:none; border-bottom:1px solid rgba(30,58,46,.14); color:var(--ink); padding:14px 18px; font-size:14.5px; font-family:'Inter',sans-serif; text-align:left; cursor:pointer; transition:background-color .16s ease, color .16s ease; }
  .niv-sel-opt:last-child{ border-bottom:none; }
  .niv-sel-opt:hover, .niv-sel-opt.sel{ background:var(--greenDeep); color:var(--gold); }
  .niv-sel-optlabel{ flex:1 1 auto; min-width:0; }
  .niv-sel-tag{ flex:none; font-size:10.5px; letter-spacing:.07em; text-transform:uppercase; color:var(--greenDeep); font-weight:600; line-height:1.5; }
  .niv-sel-opt:hover .niv-sel-tag, .niv-sel-opt.sel .niv-sel-tag{ color:var(--gold); opacity:.72; }
  @media(max-width:760px){
    .sch-overlay{ padding:0; align-items:flex-end; }
    /* Fit-to-viewport bottom sheet: height tracks the live viewport (dvh) and every
       inner metric is fluid, so the whole form always sits in one view with no
       inner scroll — from small phones to large tablets, portrait or landscape. */
    .sch-modal{ max-width:100%; width:100%; border-width:0; border-top:2px solid var(--ink);
      padding:clamp(20px,3.2vh,34px) clamp(16px,5vw,26px) calc(clamp(18px,2.6vh,28px) + env(safe-area-inset-bottom));
      max-height:96dvh; display:flex; flex-direction:column; overflow:hidden; }
    .sch-overlay.open .sch-modal{ animation:schSlideUpSheet .5s cubic-bezier(.22,.8,.28,1) both; }
    @keyframes schSlideUpSheet{ from{ transform:translateY(100%); } to{ transform:translateY(0); } }
    .sch-close{ top:12px; right:14px; font-size:24px; width:40px; height:40px; }
    .sch-header{ margin-bottom:clamp(14px,2.6vh,26px); padding-right:40px; flex:none; }
    .sch-modal .sec-title{ font-size:clamp(24px,6.4vw,34px) !important; line-height:1.08; }
    .sch-modal .sec-title svg{ width:1.4em !important; height:1.4em !important; }
    .sch-header p{ font-size:clamp(12.5px,1.7vh,14.5px); line-height:1.5; margin-top:clamp(6px,1.2vh,12px); }
    .sch-form{ gap:clamp(9px,1.5vh,14px); flex:1 1 auto; min-height:0; }
    .sch-row{ grid-template-columns:1fr; gap:clamp(9px,1.5vh,14px); }
    .sch-form input, .sch-form select,
    .niv-sel-trigger{ min-height:clamp(44px,6.2vh,54px); font-size:16px; padding-top:0; padding-bottom:0; }
    .niv-sel-opt{ min-height:clamp(44px,6vh,52px); font-size:15px; padding:12px 18px; }
    .niv-sel-menu{ max-height:44vh; }
    .niv-sel-tag{ font-size:10px; }
    .sch-form textarea{ min-height:clamp(64px,12vh,110px); font-size:16px; flex:1 1 auto; }
    .sch-form .btn{ min-height:clamp(46px,6.4vh,54px); font-size:16px; flex:none; }
    .sch-note{ font-size:clamp(10px,1.4vh,11px); margin-top:2px; flex:none; }
  }
  /* Landscape phones / very short viewports: two-column rows + tighter header
     so the form still fits without inner scroll. */
  @media(max-width:900px) and (max-height:560px){
    .sch-modal .sec-title{ font-size:22px !important; }
    .sch-header{ margin-bottom:10px; }
    .sch-header p{ font-size:12px; margin-top:6px; }
    .sch-row{ grid-template-columns:1fr 1fr; }
    .sch-form textarea{ min-height:52px; }
  }

/* ---- Phones: one shared size for every filter control ----------------------
   Reported: "the knowledge hub's buttons are bigger, make them smaller so the
   content cards are visible more below - searchbar, category buttons, filter
   menus all should be smaller and equal in size, for mobile only."

   They had drifted apart because the id-scoped rules key on `.kb-type-row`
   while the live Webflow row carries `.kb-filter-row`, so the id block's 40px
   never matched live and the class block's 44px won. Both class families are
   listed here, and the height is set once as --kb-ctl-h so they cannot drift
   again. The search input keeps 16px type deliberately - anything smaller makes
   iOS Safari zoom the page when the field takes focus. */
@media(max-width:767px){
  .kb-filterbar{ --kb-ctl-h:34px; }
  #page-knowledge .kb-filterbar .kb-search,
  .kb-filterbar .kb-search{
    height:var(--kb-ctl-h,36px) !important; min-height:0 !important;
    padding:0 12px !important; margin:0 !important;
    font-size:16px !important; line-height:1 !important; box-sizing:border-box;
  }
  #page-knowledge .kb-filterbar .kb-type-row .kb-chip,
  #page-knowledge .kb-filterbar .kb-filter-row .kb-chip,
  .kb-filterbar .kb-type-row .kb-chip,
  .kb-filterbar .kb-filter-row .kb-chip{
    height:var(--kb-ctl-h,36px) !important; min-height:0 !important;
    padding:0 10px !important; font-size:13px !important; line-height:1 !important;
    box-sizing:border-box;
  }
  #page-knowledge .kb-filterbar .kb-controls-drops .kb-select,
  #page-knowledge .kb-filterbar .kb-controls-drops .kb-sel-trigger,
  #page-knowledge .kb-filterbar .kb-controls-drops .niv-sel-trigger,
  .kb-filterbar .kb-controls-drops .kb-select,
  .kb-filterbar .kb-controls-drops .kb-sel-trigger,
  .kb-filterbar .kb-controls-drops .niv-sel-trigger{
    height:var(--kb-ctl-h,36px) !important; min-height:var(--kb-ctl-h,36px) !important;
    padding:0 10px !important; font-size:13px !important; line-height:1 !important;
    box-sizing:border-box;
  }
  /* the select's own chevron sits at 16px/44px on desktop - pull it in to match */
  #page-knowledge .kb-filterbar .kb-controls-drops .kb-select,
  .kb-filterbar .kb-controls-drops .kb-select{
    background-position:right 10px center !important; padding-right:30px !important;
  }
}

/* ===== 12-page-hedgehogs.css ===== */
/* ===== 12-page-hedgehogs.css ===== */
/* ===== Hedgehogs Fund page ===== */
  .hh-meta{ display:grid; grid-template-columns:repeat(4,1fr); margin:36px 0 0; }
  .hh-meta-item{ padding:18px 20px; border:1.5px solid var(--ink); border-right:none; }
  .hh-meta-item:first-child{ border-left:1.5px solid var(--ink); }
  .hh-meta-item:last-child{ border-right:1.5px solid var(--ink); }
  .hh-meta-label{ font-size:9px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; font-family:'OV Sage','Jost',sans-serif; color:var(--gray); margin-bottom:5px; }
  .hh-meta-value{ font-size:13px; font-weight:500; font-family:'OV Sage','Jost',sans-serif; }
  .hh-open-badge{ display:inline-flex; align-items:center; gap:8px; font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; font-family:'OV Sage','Jost',sans-serif; margin-top:24px; }
  .hh-open-dot{ width:8px; height:8px; border-radius:50%; background:#1a8a1a; flex-shrink:0; }
  .hh-becoming{ max-width:860px; }
  .hh-becoming-pull{ font-size:clamp(22px,2.8vw,38px); font-weight:400; line-height:1.45; font-family:'OV Sage','Jost',sans-serif; letter-spacing:-.01em; }
  .hh-becoming-body{ font-size:17px; line-height:1.8; font-family:'OV Sage','Jost',sans-serif; color:#333; margin-top:28px; }
  .hh-becoming-body p{ margin-bottom:20px; }
  .hh-becoming-body p:last-child{ margin-bottom:0; }
  .hh-split{ display:grid; grid-template-columns:1fr 1fr; gap:0; border:1.5px solid var(--ink); margin-top:36px; }
  .hh-split-item{ padding:36px 32px; border-right:1.5px solid var(--ink); }
  .hh-split-item:last-child{ border-right:none; }
  .hh-split-label{ font-size:10px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; font-family:'OV Sage','Jost',sans-serif; color:var(--gray); margin-bottom:14px; }
  /* Reported: "Category III - Open-ended" and "Arvind Kothari, Fund Manager"
     overlap their own second line. No line-height was ever declared here, so a
     42px serif inherited whatever the ancestor set - far tighter than these
     glyphs need. Read the class off the live element tree: it is
     .hh-split-value, NOT .hh-param-title, which an earlier pass fixed by
     mistake and which is why the overlap survived that change. */
  .hh-split-value{ font-size:clamp(26px,3vw,42px); font-weight:400; letter-spacing:-.02em; font-family:'OV Sage','Jost',sans-serif; margin-bottom:10px; line-height:1.16; }
  .hh-split-desc{ font-size:14px; line-height:1.6; font-family:'OV Sage','Jost',sans-serif; color:#555; }
  .hh-themes{ display:flex; flex-wrap:wrap; gap:10px; margin-top:32px; }
  .hh-theme{ border:1.5px solid var(--ink); padding:8px 18px; font-size:12px; font-weight:600; letter-spacing:.06em; font-family:'OV Sage','Jost',sans-serif; }
  .hh-cta-row{ display:flex; gap:14px; flex-wrap:wrap; }
  .hh-crosssell{ display:grid; grid-template-columns:1fr 1fr; gap:0; border:1.5px solid var(--ink); margin-top:0; }
  .hh-cs-card{ padding:44px 40px; border-right:1.5px solid var(--ink); cursor:pointer; transition:background .12s; }
  .hh-cs-card:last-child{ border-right:none; }
  .hh-cs-card:hover{ background:var(--tint); }
  .hh-cs-eyebrow{ font-size:10px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; font-family:'OV Sage','Jost',sans-serif; color:var(--gray); margin-bottom:14px; }
  .hh-cs-title{ font-size:clamp(22px,2.5vw,34px); font-weight:500; letter-spacing:-.02em; font-family:'OV Sage','Jost',sans-serif; margin-bottom:16px; }
  .hh-cs-desc{ font-size:14px; line-height:1.65; font-family:'OV Sage','Jost',sans-serif; color:#5a5040; margin-bottom:24px; }
  @media(max-width:768px){
    .hh-meta{ grid-template-columns:repeat(2,1fr); }
    .hh-meta-item:nth-child(2){ border-right:1.5px solid var(--ink); }
    .hh-meta-item:nth-child(3){ border-right:none; }
    .hh-split{ grid-template-columns:1fr; }
    .hh-split-item{ border-right:none; border-bottom:1.5px solid var(--ink); }
    .hh-split-item:last-child{ border-bottom:none; }
    .hh-crosssell{ grid-template-columns:1fr; }
    .hh-cs-card{ border-right:none; border-bottom:1.5px solid var(--ink); }
    .hh-cs-card:last-child{ border-bottom:none; }
  }

  /* ===== HH new approach/chasm/power sections ===== */
  .hh-stat-cards{ display:grid; grid-template-columns:repeat(3,1fr); gap:0; border:1.5px solid var(--ink); margin-top:32px; }
  .hh-stat-card{ padding:28px 24px; border-right:1.5px solid var(--ink); border-bottom:1.5px solid var(--ink); }
  .hh-stat-cards .hh-stat-card:nth-child(3n){ border-right:none; }
  .hh-stat-cards .hh-stat-card:nth-last-child(-n+3){ border-bottom:none; }
  .hh-stat-num{ font-size:clamp(28px,3.2vw,44px); font-weight:500; letter-spacing:-.02em; font-family:'OV Sage','Jost',sans-serif; margin-bottom:6px; }
  .hh-stat-title{ font-size:14px; font-weight:600; font-family:'OV Sage','Jost',sans-serif; margin-bottom:8px; }
  .hh-stat-body{ font-size:13px; line-height:1.6; color:#555; font-family:'OV Sage','Jost',sans-serif; }
  /* Chasm stages */
  .hh-chasm-intro{ font-size:clamp(17px,1.8vw,22px); line-height:1.55; font-family:'OV Sage','Jost',sans-serif; max-width:820px; margin-top:24px; }
  .hh-chasm-row{ display:flex; gap:0; border:1.5px solid var(--ink); margin-top:32px; align-items:stretch; }
  .hh-chasm-stage{ flex:1; padding:24px 18px; border-right:1.5px solid var(--ink); text-align:center; }
  .hh-chasm-stage:last-child{ border-right:none; }
  .hh-chasm-gap{
    flex:0 0 56px; background:var(--ink); color:var(--paper);
    display:flex; align-items:center; justify-content:center;
    writing-mode:vertical-lr; font-size:9px; font-weight:800;
    letter-spacing:.18em; text-transform:uppercase; padding:16px 0;
  }
  .hh-chasm-label{ font-size:10px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--gray); font-family:'OV Sage','Jost',sans-serif; margin-bottom:8px; }
  .hh-chasm-name{ font-size:16px; font-weight:600; font-family:'OV Sage','Jost',sans-serif; margin-bottom:6px; }
  .hh-chasm-desc{ font-size:12px; line-height:1.5; color:#555; font-family:'OV Sage','Jost',sans-serif; }
  .hh-chasm-badge{ background:var(--ink); color:var(--paper); font-size:9px; font-weight:800; letter-spacing:.1em; text-transform:uppercase; font-family:'OV Sage','Jost',sans-serif; padding:3px 10px; display:inline-block; margin-top:10px; }
  /* Approach param grid */
  .hh-param-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:0; border:1.5px solid var(--ink); margin-top:28px; }
  .hh-param-card{ padding:32px 28px; border-right:1.5px solid var(--ink); border-bottom:1.5px solid var(--ink); }
  .hh-param-grid .hh-param-card:nth-child(3n){ border-right:none; }
  .hh-param-grid .hh-param-card:nth-last-child(-n+3){ border-bottom:none; }
  .hh-param-num{ font-size:10px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--gray); font-family:'OV Sage','Jost',sans-serif; margin-bottom:14px; }
  .hh-param-title{ font-size:18px; font-weight:600; letter-spacing:-.01em; font-family:'OV Sage','Jost',sans-serif; margin-bottom:10px; }
  .hh-param-body{ font-size:13px; line-height:1.65; color:#5a5040; font-family:'OV Sage','Jost',sans-serif; }
  /* Power sector grid */
  .hh-power-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:0; border:1.5px solid var(--ink); margin-top:28px; }
  .hh-power-card{ padding:28px 24px; border-right:1.5px solid var(--ink); border-bottom:1.5px solid var(--ink); background:var(--paper); }
  .hh-power-grid .hh-power-card:nth-child(3n){ border-right:none; }
  .hh-power-grid .hh-power-card:nth-last-child(-n+3){ border-bottom:none; }
  .hh-power-icon{ font-size:22px; margin-bottom:12px; }
  .hh-power-title{ font-size:14px; font-weight:600; font-family:'OV Sage','Jost',sans-serif; margin-bottom:8px; }
  .hh-power-body{ font-size:12px; line-height:1.6; color:#555; font-family:'OV Sage','Jost',sans-serif; }
  @media(max-width:768px){
    .hh-stat-cards,.hh-param-grid,.hh-power-grid{ grid-template-columns:repeat(2,1fr); }
    .hh-chasm-row{ flex-direction:column; }
    .hh-chasm-gap{ writing-mode:horizontal-tb; flex:0 0 40px; }
  }

  /* CHASM Animated Graph */
  .chasm-wrap{ position:relative; }
  .chasm-svg-wrap{ width:100%; max-width:1180px; margin:40px auto 0; }
  .chasm-svg-wrap svg{ width:100%; height:auto; overflow:visible; }
  .chasm-curve{ stroke:var(--ink); stroke-width:2.5; fill:none; }
  .chasm-axis{ stroke:var(--ink); stroke-width:1.5; }
  .chasm-vline{ stroke:var(--ink); stroke-width:1.5; stroke-dasharray:5 4; }
  .chasm-invest-box{ fill:var(--ink); }
  .chasm-invest-text{ font-family:'OV Sage','Jost',sans-serif; font-size:11px; font-weight:800; letter-spacing:.1em; fill:#fff; text-transform:uppercase; }
  .chasm-stage-label{ font-family:'OV Sage','Jost',sans-serif; font-size:13px; font-weight:600; fill:var(--ink); text-anchor:middle; }
  .chasm-annotation{ font-family:'OV Sage','Jost',sans-serif; font-size:12px; fill:var(--ink); font-weight:500; }
  .chasm-gap-text{ font-family:'OV Sage','Jost',sans-serif; font-size:11px; font-weight:800; letter-spacing:.14em; fill:var(--ink); text-anchor:middle; text-transform:uppercase; }
  /* Draw-in animation */
  .chasm-curve{ stroke-dasharray:1300; stroke-dashoffset:1300; }
  .chasm-svg-wrap.chasm-animated .chasm-curve{ animation:chasmDraw 2s cubic-bezier(.4,0,.2,1) forwards; }
  .chasm-svg-wrap.chasm-animated .chasm-fade{ animation:chasmFade .5s ease forwards; }
  @keyframes chasmDraw{ to{stroke-dashoffset:0} }
  @keyframes chasmFade{ from{opacity:0;transform:translateY(6px)} to{opacity:1;transform:translateY(0)} }
  .chasm-fade{ opacity:0; }
  /* ═══ CROSSING THE CHASM — scroll-driven 3D depth journey ═══════════════════ */
  .cx-scroll{ position:relative; height:190vh; background:var(--paper); }
  .cx-stage{ position:sticky; top:0; height:100vh; overflow:hidden; background:var(--paper);
    display:flex; align-items:center; }
  .cx-grid{ width:100%; max-width:1280px; margin:0 auto; padding:0 var(--niv-inset) 0 var(--hero-text-inset);
    box-sizing:border-box; display:grid; grid-template-columns:0.9fr 1.1fr; gap:64px; align-items:center; }
  .cx-eyebrow{ font-family:'Inter',sans-serif; font-size:12px; font-weight:700; letter-spacing:.22em;
    text-transform:uppercase; color:var(--greenDeep); margin-bottom:18px; }
  .cx-title{ font-family:'OV Sage','Jost',sans-serif; font-weight:400; color:var(--ink);
    font-size:clamp(32px,3.9vw,54px); line-height:1.12; margin:0 0 24px; white-space:nowrap; }
  .cx-lead{ font-family:'Inter',sans-serif; font-size:clamp(15px,1.15vw,17px); line-height:1.6;
    color:var(--ink); opacity:.72; max-width:420px; margin:0; }
  /* Right: fixed viewport, steps translate up; a centred dot on the rail */
  .cx-right{ position:relative; height:74vh; overflow:hidden; }
  .cx-rail{ position:absolute; left:34px; top:0; bottom:0; width:2px; z-index:2; }
  .cx-line{ position:absolute; inset:0; background:rgba(44,46,43,.18); }
  .cx-dot{ position:absolute; left:50%; top:50%; width:20px; height:20px; border-radius:50% !important;
    transform:translate(-50%,-50%); background:var(--terra); z-index:3;
    box-shadow:0 0 0 6px rgba(172,77,59,.16); transition:transform .18s ease; will-change:top; }
  .cx-steps{ position:absolute; left:0; right:0; top:0; will-change:transform; }
  .cx-step{ position:relative; min-height:33vh; padding-left:88px; display:flex; flex-direction:column;
    align-content:start; }
  .cx-node{ position:absolute; left:35px; top:50%; width:11px; height:11px; border-radius:50% !important;
    transform:translate(-50%,-50%); background:var(--paper); border:2px solid rgba(44,46,43,.3); z-index:2;
    transition:border-color .2s ease, background .2s ease; }
  .cx-step-label{ font-family:'OV Sage','Jost',sans-serif; font-weight:400; color:rgba(44,46,43,.32);
    font-size:clamp(30px,3.2vw,48px); line-height:1; transition:color .25s ease, transform .25s ease;
    transform-origin:left center; }
  .cx-step-body{ font-family:'Inter',sans-serif; font-size:18px; line-height:1.6; color:var(--ink);
    max-width:440px; margin-top:14px; opacity:0; transform:translateY(6px);
    transition:opacity .3s ease, transform .3s ease; }
  .cx-step.is-active .cx-step-label{ color:var(--greenDeep); transform:scale(1.06); }
  .cx-step.is-active .cx-step-body{ opacity:.82; transform:none; }
  .cx-step.is-active .cx-node{ background:var(--greenDeep); border-color:var(--greenDeep); }
  .cx-dot.is-tornado{ background:var(--greenDeep) !important; box-shadow:0 0 0 6px rgba(30,74,46,.16) !important; }
  /* OUR JOURNEY timeline (About) — reuses cx-* with big years + a title line */
  .oj-scroll{ height:340vh; }
  .oj-scroll .oj-year{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(46px,5vw,80px); color:rgba(44,46,43,.28); }
  .oj-scroll .cx-step.is-active .oj-year{ color:var(--greenDeep); }
  .oj-scroll .cx-step-title{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(20px,2vw,30px); font-weight:500; color:var(--ink); margin-top:10px; opacity:.5; transition:opacity .25s ease; }
  .oj-scroll .cx-step.is-active .cx-step-title{ opacity:1; }
  .oj-scroll .cx-right{ }
  .oj-scroll .cx-steps{ }
  .oj-scroll .cx-step{ min-height:52vh; opacity:.42; transition:opacity .28s ease; }
  .oj-scroll .cx-step.is-active{ opacity:1; }
  .oj-scroll .cx-step-body{ font-size:clamp(16px,1.4vw,20px); max-width:440px; }
  .oj-scroll .oj-title{ font-family:'OV Sage','Jost',sans-serif !important; font-size:clamp(44px,5vw,78px) !important; line-height:1.08 !important; }
  /* Scroll-driven minimal chasm line chart */
  .cx-chart-scroll{ position:relative; height:240vh; background:var(--paper); }
  .cx-chart-stage{ position:sticky; top:0; height:100vh; display:flex; align-items:center; justify-content:center; overflow:hidden; }
  .cx-chart-wrap{ width:min(90vw,1180px); }
  .cx-chart-wrap svg{ width:100%; height:auto; overflow:visible; }
  .cx-area{ fill:url(#cxAreaGrad); }
  .cx-curve{ fill:none; stroke:var(--greenDeep); stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; transition:stroke .3s ease; }
  .cx-curve-guide{ display:none; }
  .cx-chart-wrap:hover .cx-curve{ stroke:#5E8A2E; }
  .cx-ms-dot{ fill:var(--greenDeep); stroke:none; opacity:0; transform:scale(0); transform-box:fill-box; transform-origin:center; transition:opacity .35s ease, transform .5s cubic-bezier(.2,1.3,.4,1), fill .3s ease; }
  .cx-ms-dot.on{ opacity:1; transform:scale(1); }
  .cx-chart-wrap:hover .cx-ms-dot{ fill:#5E8A2E; }
  @keyframes cxBlink{ 0%{fill:var(--terra);} 25%{fill:var(--gold);} 50%{fill:var(--blue);} 75%{fill:var(--greenDeep);} 100%{fill:var(--terra);} }
  .cx-ms-dot.cx-ms-blink{ animation:cxBlink 4s step-end infinite; }
  .cx-chart-wrap:hover .cx-ms-dot.cx-ms-blink{ animation:cxBlink 4s step-end infinite; }
  .cx-ms-line{ stroke:var(--greenDeep); stroke-width:1; stroke-dasharray:2 3; opacity:0; transition:opacity .5s ease, stroke .3s ease; }
  .cx-ms-line.on{ opacity:.6; }
  .cx-chart-wrap:hover .cx-ms-line.on{ stroke:#5E8A2E; }
  .cx-gap-line{ stroke:var(--greenDeep); stroke-width:1; stroke-dasharray:3 4; opacity:0; transition:opacity .5s ease; }
  .cx-gap-arrow{ stroke:var(--greenDeep); stroke-width:1.4; stroke-linecap:round; opacity:0; transition:opacity .5s ease; }
  #cxGap.on .cx-gap-line{ opacity:.45; }
  #cxGap.on .cx-gap-arrow{ opacity:.75; }
  #cxGapArrow{ transform-origin:305px 452px; opacity:0; transition:opacity .4s ease; }
  #cxGap.on #cxGapArrow{ transform:scaleX(1); opacity:1; animation:cxArrowPulse 3.2s cubic-bezier(.37,0,.28,1) 0s 1 both; }
  @keyframes cxArrowPulse{ 0%{transform:scaleX(1);} 18%{transform:scaleX(1.26);} 36%{transform:scaleX(0.86);} 56%{transform:scaleX(1.16);} 76%{transform:scaleX(0.94);} 100%{transform:scaleX(1);} }
  .cx-chasm-word{ font-family:var(--f-serif); fill:var(--greenDeep); text-anchor:middle; opacity:0; transition:opacity .6s ease, fill .3s ease; }
  .cx-chasm-word.on{ opacity:1; }
  .cx-chart-wrap:hover .cx-chasm-word.on{ fill:#5E8A2E; }
  .cx-chart-wrap:hover #cxGap.on .cx-gap-line,
  .cx-chart-wrap:hover #cxGap.on .cx-gap-arrow{ stroke:#5E8A2E; }
  .cx-ms-label{ font-family:'OV Sage','Jost',sans-serif; font-size:21px; font-weight:400; fill:var(--greenDeep); text-anchor:middle; opacity:0; transition:opacity .5s ease, fill .3s ease; }
  .cx-ms-label.on{ opacity:1; }
  .cx-chart-wrap:hover .cx-ms-label.on{ fill:#5E8A2E; }
  .cx-band{ font-family:'Inter',sans-serif; font-size:14px; font-weight:600; letter-spacing:.02em; fill:rgba(69,98,50,.34); text-anchor:middle; transition:fill .45s ease; }
  .cx-band.on{ fill:rgba(69,98,50,.92); }
  @media(max-width:760px){
    /* The graph is relocated into the timeline stage as its final step, so this
       track is unused on mobile — one heading, one pinned stage. */
    .cx-chart-scroll{ display:none; }
    .cx-step-graph{ min-height:42vh; margin-top:14vh; padding-left:0 !important; }
    /* scaled up uniformly so the curve fills more height — the flat tails crop */
    /* Pulled back from 122% / scaleY(1.44): at that size the band labels ran off
       both edges and the curve's peak clipped against the stage. */
    #cxScroll .cx-step-graph .cx-chart-wrap{ width:106%; margin-left:-3%; }
    #cxScroll .cx-step-graph .cx-chart-wrap svg{ transform:scaleY(1.14); transform-origin:50% 0; }
    #cxScroll .cx-step-graph{ padding-bottom:12vh; }
    .cx-step-graph .cx-chart-wrap{ width:100%; }
    .cx-ms-label{ font-size:30px; }
    /* leader lines read too faintly at phone scale */
    #cxScroll .cx-ms-line{ stroke-width:2.2; stroke-dasharray:5 5; }
    #cxScroll .cx-ms-line.on{ opacity:.95; }
    .cx-band{ font-size:18px; }
  }

  /* ══ HEDGEHOGS "how we invest in unlisted" — green stacking cards, gold outline ══ */
  #hhApproachSection{ background:var(--paper); transition:background-color .8s ease; }
  #hhApproachSection.appr-green{ background:var(--greenDeep); }
  #hhApproachSection .bk-card{ height:34vh; background:var(--paper); border:1.5px solid var(--greenDeep); transition:background-color .8s ease, border-color .8s ease; will-change:transform; transform:translateZ(0); backface-visibility:hidden; }
  #hhApproachSection.appr-green .bk-card{ background:var(--greenDeep); border-color:var(--gold); }
  #hhApproachSection .bk-card-title{ font-family:'OV Sage','Jost',sans-serif !important; color:var(--greenDeep); transition:color .8s ease; }
  #hhApproachSection.appr-green .bk-card-title{ color:var(--gold); }
  #hhApproachSection .bedrock-title{ color:var(--greenDeep); transition:color .8s ease; }
  #hhApproachSection.appr-green .bedrock-title{ color:var(--gold); }
  #hhApproachSection .bk-card:hover{ border-color:#F0C257; transition:none; }
  #hhApproachSection .bk-card:hover .bk-card-title{ color:#F0C257; }
  #hhApproachSection .bk-card-left::after{ background:var(--greenDeep); transition:background-color .8s ease; }
  #hhApproachSection.appr-green .bk-card-left::after{ background:var(--gold); }
  #hhApproachSection .bk-card:hover .bk-card-left::after{ background:#F0C257; }
  #hhApproachSection .bk-dot{ background:var(--greenDeep) !important; transition:background-color .8s ease; }
  #hhApproachSection.appr-green .bk-dot{ background:var(--gold) !important; }
  #hhApproachSection .bk-card:hover .bk-dot{ background:#F0C257 !important; }
  #hhApproachSection .bk-card-body{ color:var(--greenDeep); opacity:.85; transition:color .8s ease; }
  #hhApproachSection.appr-green .bk-card-body{ color:var(--paper); opacity:.9; }
  #hhApproachSection .bk-caption{ color:var(--greenDeep); transition:color .8s ease; }
  #hhApproachSection.appr-green .bk-caption{ color:var(--gold); }

  /* ══ HEDGEHOGS Fund Structure — hero-styled (green, gold OV Sage title) ══ */
  #hhFundStructure{ background:var(--greenDeep); }
  #hhFundStructure .hh-fs-title{ color:var(--gold) !important; font-family:'OV Sage','Jost',sans-serif !important; font-size:clamp(36px,5.4vw,72px) !important; font-weight:400; line-height:1.1; }
  #hhFundStructure .hh-split{ border-color:var(--gold); }
  #hhFundStructure .hh-split-item{ border-right-color:var(--gold); }
  #hhFundStructure .hh-split-item:last-child{ border-right:none; }
  #hhFundStructure .hh-split-label{ color:var(--gold); opacity:.8; }
  #hhFundStructure .hh-split-value{ color:var(--gold) !important; }
  #hhFundStructure .hh-split-desc{ color:var(--paper) !important; opacity:.9; font-family:'Jost',sans-serif !important; }
  #hhFundStructure .hh-theme{ border-color:var(--gold); color:var(--gold); }
  #hhFundStructure .hh-split-label{ font-size:14px; }
  #hhFundStructure .hh-split-desc{ font-size:clamp(17px,1.55vw,21px); }
  #hhFundStructure .hh-theme{ font-size:15px; padding:11px 22px; }
  @media(max-width:760px){
    #hhFundStructure .hh-split-item{ border-right:none; border-bottom-color:var(--gold); }
    #page-hedgehogs #hhFundStructure > .section-inner{ padding-left:16px !important; padding-right:16px !important; }
    #hhFundStructure.web-section{ padding-top:56px !important; padding-bottom:56px !important; }
    #hhFundStructure .hh-fs-title{ font-size:clamp(30px,8.4vw,42px) !important; line-height:1.12 !important; max-width:100% !important; }
    #hhFundStructure .hh-split{ margin-top:26px; }
    #hhFundStructure .hh-split-item{ padding:26px 22px; }
    #hhFundStructure .hh-split-label{ font-size:12px !important; margin-bottom:10px; }
    #hhFundStructure .hh-split-value{ font-size:clamp(24px,7vw,32px) !important; margin-bottom:12px; line-height:1.16 !important; }
    #hhFundStructure .hh-split-desc{ font-size:clamp(15px,4.2vw,17px) !important; line-height:1.55; }
    #hhFundStructure .hh-themes{ display:grid !important; grid-template-columns:1fr 1fr; gap:10px; margin-top:24px; }
    #hhFundStructure .hh-theme{ font-size:13px !important; padding:12px 14px !important; text-align:center; display:flex; align-items:center; justify-content:center; box-sizing:border-box; }
  }
  /* Uniform hedgehogs section titles (OV Sage, Power-title size), hero excluded */
  #page-hedgehogs .cx-title,
  #page-hedgehogs .bedrock-title,
  #page-hedgehogs .hero-section-header,
  #page-hedgehogs .scutt-heading,
  #page-hedgehogs .aif-works-heading,
  #page-hedgehogs .hh-fs-title{
    font-family:'OV Sage','Jost',sans-serif !important;
    font-size:clamp(32px,3.9vw,54px) !important;
    line-height:1.12 !important;
  }

  /* ══ "Also from Niveshaay" cross-sell — cream cards, green outlines, tactile hover ══ */
  #hhCrossSell{ background:var(--paper); padding-left:0 !important; padding-right:0 !important; }
  #hhCrossSell > .section-inner{ max-width:none !important; margin:0 !important; padding-left:var(--hero-text-inset) !important; padding-right:var(--niv-inset) !important; box-sizing:border-box; }
  #hhFundStructure{ padding-left:0 !important; padding-right:0 !important; }
  #hhFundStructure > .section-inner{ max-width:none !important; margin:0 !important; padding-left:var(--hero-text-inset) !important; padding-right:var(--niv-inset) !important; box-sizing:border-box; }
  #hhCrossSell .hh-cross-title{ font-family:'OV Sage','Jost',sans-serif; color:var(--greenDeep); font-size:clamp(30px,3.6vw,50px); font-weight:400; line-height:1.12; margin-bottom:36px; }
  #hhCrossSell .hh-cross-grid{ display:grid; grid-template-columns:1fr 1fr; gap:26px; }
  #hhCrossSell .hh-cross-card{ background:var(--paper); border:1.5px solid var(--greenDeep); padding:42px 40px; display:flex; flex-direction:column; justify-content:space-between; gap:32px; min-height:320px; cursor:pointer; transition:transform .3s cubic-bezier(.16,1,.3,1), box-shadow .3s ease; }
  #hhCrossSell .hh-cross-card:hover{ background:var(--greenDeep); transform:translateY(-6px); box-shadow:0 22px 48px -20px rgba(44,46,43,.42); }
  #hhCrossSell .hh-cross-eyebrow{ font-family:'OV Sage','Jost',sans-serif; font-size:11px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--greenDeep); opacity:.75; margin-bottom:18px; }
  #hhCrossSell .hh-cross-cardtitle{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(23px,2.5vw,34px); font-weight:400; line-height:1.16; color:var(--greenDeep); margin-bottom:16px; }
  #hhCrossSell .hh-cross-desc{ font-family:'Jost',sans-serif; font-size:clamp(14px,1.15vw,16px); line-height:1.6; color:var(--ink); opacity:.78; }
  #hhCrossSell .hh-cross-card:hover .hh-cross-eyebrow{ color:var(--gold); opacity:1; }
  #hhCrossSell .hh-cross-card:hover .hh-cross-cardtitle{ color:var(--gold); }
  #hhCrossSell .hh-cross-card:hover .hh-cross-desc{ color:var(--paper); opacity:.9; }
  #hhCrossSell .hh-cross-btn{ align-self:flex-start; display:inline-flex; align-items:center; gap:10px; background:transparent; border:1.5px solid var(--greenDeep); color:var(--greenDeep); font-family:'OV Sage','Jost',sans-serif; font-size:15px; font-weight:500; padding:13px 26px; }
  #hhCrossSell .hh-cross-card:hover .hh-cross-btn{ background:var(--gold); border-color:var(--gold); color:var(--greenDeep); }
  @media(max-width:760px){ #hhCrossSell .hh-cross-grid{ grid-template-columns:1fr; }
    #hhCrossSell > .section-inner{ padding-left:16px !important; padding-right:16px !important; }
    #hhCrossSell .hh-cross-title{ font-size:clamp(30px,8.4vw,44px) !important; margin-bottom:24px; }
    #hhCrossSell .hh-cross-grid{ gap:16px; }
    #hhCrossSell .hh-cross-card{ padding:30px 24px; min-height:0; gap:24px; }
    #hhCrossSell .hh-cross-cardtitle{ font-size:clamp(22px,6vw,28px); }
    #hhCrossSell .hh-cross-desc{ font-size:clamp(15px,4.2vw,18px); margin-top:12px; }
    #hhCrossSell .hh-cross-btn{ width:100%; justify-content:space-between; padding:15px 20px; font-size:15px; box-sizing:border-box; }
  }
  #hhApproachSection .bk-card-title{ color:var(--gold); }
  #hhApproachSection .bk-card-body{ color:var(--paper); opacity:.9; font-size:clamp(15px,1.55vw,20px); line-height:1.5; margin-top:14px; }
  #hhApproachSection .bk-card-right{ padding-right:72px; }
  #hhApproachSection .bk-caption, #hhApproachSection .bk-caption.bk-caption-sm{ font-family:'OV Sage','Jost',sans-serif !important; font-weight:400; font-size:clamp(22px,2.6vw,38px); }
  #hhApproachSection .bk-caption{ color:var(--gold); }
  #hhApproachSection .bk-card-left::after{ background:var(--gold); }
  #hhApproachSection .bk-dot{ background:var(--gold) !important; border-radius:50% !important; }
  /* starburst on the right block, pops when the (single) card is hovered */
  #hhApproachSection .bk-card-right{ position:relative; }
  #hhApproachSection .bk-burst{ position:absolute; top:24px; right:28px; width:74px; height:74px; overflow:visible; pointer-events:none; z-index:4; }
  #hhApproachSection .bk-burst line{ stroke:#F0C257; stroke-width:3; stroke-linecap:round; transform:scale(0); transform-origin:center; transition:transform .5s cubic-bezier(.16,1,.3,1); }
  #hhApproachSection .bk-burst circle{ fill:#F0C257; transform:scale(0); transform-origin:center; transition:transform .4s cubic-bezier(.16,1,.3,1); }
  #hhApproachSection .bk-card:hover .bk-burst line,
  #hhApproachSection .bk-card:hover .bk-burst circle{ transform:scale(1); }

  /* ══ PE "how we approach an unlisted opportunity" — replica of hhApproach ══ */
  #peApproachSection{ background:var(--paper); transition:background-color .8s ease; }
  #peApproachSection.appr-green{ background:var(--greenDeep); }
  #peApproachSection .bk-card{ height:34vh; background:var(--paper); border:1.5px solid var(--greenDeep); transition:background-color .8s ease, border-color .8s ease; will-change:transform; transform:translateZ(0); backface-visibility:hidden; }
  #peApproachSection.appr-green .bk-card{ background:var(--greenDeep); border-color:var(--gold); }
  #peApproachSection .bk-card-title{ font-family:'OV Sage','Jost',sans-serif !important; color:var(--greenDeep); transition:color .8s ease; }
  #peApproachSection.appr-green .bk-card-title{ color:var(--gold); }
  #peApproachSection .bedrock-title{ color:var(--greenDeep); transition:color .8s ease; }
  #peApproachSection.appr-green .bedrock-title{ color:var(--gold); }
  #peApproachSection .bk-card:hover{ border-color:#F0C257; transition:none; }
  #peApproachSection .bk-card:hover .bk-card-title{ color:#F0C257; }
  #peApproachSection .bk-card:hover .bk-card-left::after{ background:#F0C257; }
  #peApproachSection .bk-card:hover .bk-dot{ background:#F0C257 !important; }
  #peApproachSection .bk-card-body{ color:var(--greenDeep); opacity:.85; font-size:clamp(15px,1.55vw,20px); line-height:1.5; margin-top:14px; transition:color .8s ease; }
  #peApproachSection.appr-green .bk-card-body{ color:var(--paper); opacity:.9; }
  #peApproachSection .bk-card-right{ padding-right:72px; position:relative; }
  #peApproachSection .bk-caption, #peApproachSection .bk-caption.bk-caption-sm{ font-family:'OV Sage','Jost',sans-serif !important; font-weight:400; font-size:clamp(24px,2.9vw,40px); line-height:1.05; color:var(--greenDeep); display:inline-block; transform-origin:right bottom; transition:color .8s ease; }
  #peApproachSection.appr-green .bk-caption{ color:var(--gold); }
  #peApproachSection .bk-card-left::after{ background:var(--greenDeep); transition:background-color .8s ease; }
  #peApproachSection.appr-green .bk-card-left::after{ background:var(--gold); }
  #peApproachSection .bk-dot{ background:var(--greenDeep) !important; border-radius:50% !important; transition:background-color .8s ease; }
  #peApproachSection.appr-green .bk-dot{ background:var(--gold) !important; }
  #peApproachSection .bk-burst{ position:absolute; top:24px; right:28px; width:74px; height:74px; overflow:visible; pointer-events:none; z-index:4; }
  #peApproachSection .bk-burst line{ stroke:#F0C257; stroke-width:3; stroke-linecap:round; transform:scale(0); transform-origin:center; transition:transform .5s cubic-bezier(.16,1,.3,1); }
  #peApproachSection .bk-burst circle{ fill:#F0C257; transform:scale(0); transform-origin:center; transition:transform .4s cubic-bezier(.16,1,.3,1); }
  #peApproachSection .bk-card:hover .bk-burst line,
  #peApproachSection .bk-card:hover .bk-burst circle{ transform:scale(1); }

  /* ══ PE "We offer more than capital" — cross-sell card language (4-up) ══ */
  #page-private-equity .pe-offer-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:22px; border:none !important; margin-top:32px; }
  #page-private-equity .pe-offer-card{ border:1.5px solid var(--greenDeep) !important; background:var(--paper); padding:34px 30px 38px; min-height:300px; grid-template-rows:auto auto 1fr; transition:transform .3s cubic-bezier(.16,1,.3,1), box-shadow .3s ease; }
  #page-private-equity .pe-offer-card:hover{ background:var(--greenDeep); transform:translateY(-6px); box-shadow:0 22px 48px -20px rgba(44,46,43,.42); }
  #page-private-equity .pe-offer-num{ font-family:'OV Sage','Jost',sans-serif; color:var(--greenDeep); opacity:.7; }
  #page-private-equity .pe-offer-title{ font-family:'OV Sage','Jost',sans-serif; color:var(--greenDeep); font-weight:400; }
  #page-private-equity .pe-offer-body{ font-family:'Jost',sans-serif; color:var(--ink); opacity:.78; }
  #page-private-equity .pe-offer-card:hover .pe-offer-num{ color:var(--gold); opacity:1; }
  #page-private-equity .pe-offer-card:hover .pe-offer-title{ color:var(--gold); }
  #page-private-equity .pe-offer-card:hover .pe-offer-body{ color:var(--paper); opacity:.9; }
  /* MOBILE auto-trigger (nearest card to viewport centre) mirrors the hover state */
  #page-private-equity .pe-offer-card.auto-on{ background:var(--greenDeep); }
  #page-private-equity .pe-offer-card.auto-on .pe-offer-num{ color:var(--gold); opacity:1; }
  #page-private-equity .pe-offer-card.auto-on .pe-offer-title{ color:var(--gold); }
  #page-private-equity .pe-offer-card.auto-on .pe-offer-body{ color:var(--paper); opacity:.9; }
  @media(max-width:1024px){ #page-private-equity .pe-offer-grid{ grid-template-columns:1fr 1fr; } }
  @media(max-width:560px){ #page-private-equity .pe-offer-grid{ grid-template-columns:1fr; } }

  /* ══ PE "Two ways in" — cross-sell cards + full-width schedule card ══ */
  #peWays{ background:var(--paper); }
  #peWays .hh-cross-title{ font-family:'OV Sage','Jost',sans-serif; color:var(--greenDeep); font-size:clamp(30px,3.6vw,50px); font-weight:400; line-height:1.12; margin-bottom:36px; }
  #peWays .hh-cross-grid{ display:grid; grid-template-columns:1fr 1fr; gap:26px; }
  #peWays .hh-cross-card{ background:var(--paper); border:1.5px solid var(--greenDeep); padding:42px 40px; display:flex; flex-direction:column; justify-content:space-between; gap:32px; min-height:300px; cursor:pointer; transition:transform .3s cubic-bezier(.16,1,.3,1), box-shadow .3s ease; }
  #peWays .hh-cross-card:hover{ background:var(--greenDeep); transform:translateY(-6px); box-shadow:0 22px 48px -20px rgba(44,46,43,.42); }
  #peWays .hh-cross-eyebrow{ font-family:'OV Sage','Jost',sans-serif; font-size:11px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--greenDeep); opacity:.75; margin-bottom:18px; }
  #peWays .hh-cross-cardtitle{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(23px,2.5vw,34px); font-weight:400; line-height:1.16; color:var(--greenDeep); }
  #peWays .hh-cross-card:hover .hh-cross-eyebrow{ color:var(--gold); opacity:1; }
  #peWays .hh-cross-card:hover .hh-cross-cardtitle{ color:var(--gold); }
  #peWays .hh-cross-btn{ align-self:flex-start; display:inline-flex; align-items:center; gap:10px; background:transparent; border:1.5px solid var(--greenDeep); color:var(--greenDeep); font-family:'OV Sage','Jost',sans-serif; font-size:15px; font-weight:500; padding:13px 26px; }
  #peWays .hh-cross-card:hover .hh-cross-btn{ background:var(--gold); border-color:var(--gold); color:var(--greenDeep); }
  #peWays .pe-ways-schedule{ margin-top:26px; border:1.5px solid var(--greenDeep); background:var(--paper); padding:26px 40px; display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap; cursor:pointer; transition:transform .3s cubic-bezier(.16,1,.3,1), box-shadow .3s ease; }
  #peWays .pe-ways-schedule:hover{ background:var(--greenDeep); transform:translateY(-4px); box-shadow:0 22px 48px -20px rgba(44,46,43,.42); }
  #peWays .hero-pair{ /* n/a */ }
  #peWays .pe-ways-desc{ font-family:'Jost',sans-serif; color:var(--ink); font-size:clamp(15px,1.2vw,18px); line-height:1.55; margin-top:16px; }
  #peWays .hh-cross-card:hover .pe-ways-desc{ color:var(--paper); }
  #peWays .pe-ways-sched-sub{ font-family:'OV Sage','Jost',sans-serif; color:var(--greenDeep); font-weight:400; font-size:clamp(23px,2.5vw,34px); line-height:1.16; margin:0; }
  #peWays .pe-ways-schedule:hover .pe-ways-sched-sub{ color:var(--gold); opacity:1; }

  /* AIF page — uniform OV Sage section titles (like hedgehogs) */
  #page-aif-overview .hero-section-header,
  #page-aif-overview .aif-works-heading,
  #page-aif-overview .scutt-heading{
    font-family:'OV Sage','Jost',sans-serif !important;
    font-size:clamp(32px,3.9vw,54px) !important;
    line-height:1.12 !important;
  }
  /* "AIF allows us" cards — exact size/layout of "What we look for" */
  #aifAllowsSection .hero-pair{ flex:0 0 calc((100% - 60px) / 2.6) !important; }
  #aifAllowsSection .hero-pair .aif-pair-head{ min-width:0; min-height:400px !important; }
  #aifAllowsSection .aif-pair-title{ font-size:clamp(18px,1.9vw,28px) !important; }
  #aifAllowsSection .hero-quote-text{ font-size:clamp(16px,1.6vw,24px) !important; }
  #aifAllowsSection .hero-arrow{ width:64px !important; height:64px !important; }
  #peWays .pe-ways-schedule:hover .hh-cross-btn{ background:var(--gold); border-color:var(--gold); color:var(--greenDeep); }
  @media(max-width:760px){
    #peWays.web-section{ padding-left:16px !important; padding-right:16px !important; }
    #peWays .hh-cross-title{ font-size:clamp(30px,8.4vw,44px); margin-bottom:24px; }
    #peWays .hh-cross-grid{ grid-template-columns:1fr; gap:16px; }
    #peWays .hh-cross-card{ padding:30px 24px; min-height:0; gap:24px; }
    #peWays .hh-cross-cardtitle{ font-size:clamp(22px,6vw,28px); }
    #peWays .pe-ways-desc{ font-size:clamp(15px,4.2vw,18px); margin-top:12px; }
    #peWays .hh-cross-btn{ width:100%; justify-content:space-between; padding:15px 20px; font-size:15px; }
    #peWays .pe-ways-schedule{ flex-direction:column; align-items:stretch; gap:18px; padding:26px 24px; margin-top:16px; }
    #peWays .pe-ways-sched-sub{ font-size:clamp(20px,5.6vw,26px); }
  }
  @media(max-width:860px){
    .cx-grid{ grid-template-columns:1fr; gap:32px; }
    .cx-right{ height:60vh; }
    .cx-step{ min-height:30vh; }
  }
  @media(max-width:760px){
    /* Top-align the stage so the heading sits at a fixed offset, and let the
       timeline column run all the way to the viewport bottom so the graph
       slides up from the screen edge instead of a clipped box mid-screen */
    #cxScroll .cx-stage{ align-items:stretch; padding-top:84px; }
    #cxScroll .cx-grid{ display:flex; flex-direction:column; align-items:stretch; }
    .cx-grid{ padding-left:16px !important; padding-right:16px !important; gap:24px; }
    .cx-title{ font-size:clamp(30px,8.4vw,44px) !important; line-height:1.06 !important; margin-bottom:16px; }
    .cx-lead{ font-size:clamp(15px,4.2vw,18px) !important; max-width:100% !important; }
    .cx-eyebrow{ margin-bottom:12px; }
    #cxScroll{ height:250vh; }
    #cxScroll .cx-right{ flex:1 1 auto; width:100%; align-self:stretch; height:auto; min-height:0; overflow:hidden; }
    .cx-right{ height:58vh; }
    .cx-rail{ left:20px; }
    #cxScroll .cx-step{ min-height:21vh; }
    .cx-step{ min-height:29vh; padding-left:56px; }
    .cx-node{ left:21px; }
    .cx-step-label{ font-size:clamp(22px,6.4vw,30px) !important; }
    .cx-step-body{ font-size:clamp(15px,4.2vw,18px) !important; max-width:100% !important; }
  }
  @media (prefers-reduced-motion: reduce){
    .cx-scroll{ height:auto; }
    .cx-stage{ position:relative; height:auto; padding:80px 0; display:block; }
    .cx-right{ height:auto; }
    .cx-steps{ position:relative; }
    .cx-dot{ display:none; }
    .cx-step{ min-height:0; padding:22px 0 22px 88px; }
    .cx-step-label{ color:var(--greenDeep); transform:none; }
    .cx-step-body{ opacity:.82; transform:none; }
    .cx-node{ background:var(--greenDeep); border-color:var(--greenDeep); }
  }
  /* Horizontal conviction carousel (reuse existing conv- CSS, just new IDs) */
  .hh-conv-wrapper{ position:relative; }
  .hh-conv-viewport{
    position:relative; overflow:hidden; height:calc(100vh - 70px);
    display:flex; flex-direction:column;
    border-bottom:2px solid var(--ink); border-top:2px solid var(--ink);
  }
  .hh-conv-heading-row{
    flex:0 0 auto; padding:32px 28px 24px; position:relative;
    border-bottom:2px solid var(--ink);
  }
  .hh-conv-heading-row .conviction-heading{ padding-right:130px; }
  .hh-conv-nav{
    position:absolute; right:28px; bottom:24px; display:flex; gap:10px;
  }
  .hh-conv-cards-area{ flex:1; overflow:hidden; display:flex; align-items:stretch; }
  .hh-conv-track{ display:flex; gap:0; height:100%; transition:transform .35s cubic-bezier(.4,0,.2,1); will-change:transform; }
  .hh-conv-card{
    flex:0 0 44vw; padding:36px 32px; border-right:2px solid var(--ink);
    background:var(--paper); display:flex; flex-direction:column; justify-content:space-between; height:100%;
  }
  .hh-conv-card .conv-year{ font-size:clamp(22px,2.5vw,34px); font-weight:700; letter-spacing:-.01em; }
  .hh-conv-card .conv-card-title{ font-size:clamp(16px,1.7vw,22px); font-weight:600; margin-bottom:12px; }
  .hh-conv-card .conv-body{ font-size:clamp(14px,1.3vw,17px); line-height:1.7; color:#333; }
  @media(max-width:768px){ .hh-conv-card{ flex:0 0 90vw; } }

  /* HH merged hero split layout */
  .hh-hero-split{ display:flex; gap:0; align-items:flex-start; margin-top:48px; }
  .hh-hero-left{ flex:0 0 45%; padding-right:56px; box-sizing:border-box; }
  .hh-hero-right{ flex:1; min-width:0; }
  .hh-stage-grid{ display:grid; grid-template-columns:1fr 1fr; gap:0; border:1.5px solid var(--ink); }
  .hh-stage-box{
    padding:36px 32px; border-right:1.5px solid var(--ink); border-bottom:1.5px solid var(--ink);
    min-height:220px; display:flex; flex-direction:column; justify-content:space-between; box-sizing:border-box;
  }
  .hh-stage-grid .hh-stage-box:nth-child(2n){ border-right:none; }
  .hh-stage-grid .hh-stage-box:nth-child(n+3){ border-bottom:none; }
  .hh-stage-eyebrow{ font-size:9px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--gray); font-family:'OV Sage','Jost',sans-serif; margin-bottom:14px; }
  .hh-stage-title{ font-size:clamp(20px,2.2vw,28px); font-weight:600; letter-spacing:-.01em; line-height:1.15; font-family:'OV Sage','Jost',sans-serif; }
  .hh-stage-desc{ font-size:13px; line-height:1.6; color:#5a5040; font-family:'OV Sage','Jost',sans-serif; margin-top:10px; }
  .hh-stage-box.hh-stage-chasm{ background:var(--ink); color:var(--paper); }
  .hh-stage-box.hh-stage-chasm .hh-stage-eyebrow{ color:rgba(255,255,255,.45); }
  .hh-stage-box.hh-stage-chasm .hh-stage-title{ color:var(--paper); }
  .hh-stage-box.hh-stage-chasm .hh-stage-desc{ color:rgba(255,255,255,.65); }
  .hh-stage-box.hh-stage-invest{ background:var(--tint); }
  .hh-stage-invest-badge{ display:inline-flex; align-items:center; gap:6px; font-size:9px; font-weight:800; letter-spacing:.12em; text-transform:uppercase; font-family:'OV Sage','Jost',sans-serif; margin-top:14px; }
  @media(max-width:900px){
    .hh-hero-split{ flex-direction:column; }
    .hh-hero-left{ flex:0 0 auto; width:100%; padding-right:0; margin-bottom:32px; }
  }

  /* Correct HH hero split — messaging left, metadata boxes right */
  .hh-hero-meta-grid{ display:grid; grid-template-columns:1fr 1fr; gap:0; border:1.5px solid var(--ink); }
  .hh-hero-meta-box{
    padding:32px 28px; border-right:1.5px solid var(--ink); border-bottom:1.5px solid var(--ink);
    min-height:150px; display:flex; flex-direction:column; justify-content:center; box-sizing:border-box;
  }
  .hh-hero-meta-grid .hh-hero-meta-box:nth-child(2n){ border-right:none; }
  .hh-hero-meta-grid .hh-hero-meta-box:nth-child(n+3){ border-bottom:none; }
  .hh-hero-meta-label{ font-size:10px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--gray); font-family:'OV Sage','Jost',sans-serif; margin-bottom:12px; }
  .hh-hero-meta-value{ font-size:clamp(22px,2.6vw,32px); font-weight:500; letter-spacing:-.02em; font-family:'OV Sage','Jost',sans-serif; }
  /* CHASM graph — smooth SVG */
  .chasm-wrap{ position:relative; }
  .chasm-svg-wrap{ width:100%; max-width:1180px; margin:40px auto 0; }
  .chasm-svg-wrap svg{ width:100%; height:auto; overflow:visible; }
  .chasm-curve{ stroke:var(--ink); stroke-width:2.5; fill:none; stroke-dasharray:1300; stroke-dashoffset:1300; }
  .chasm-axis{ stroke:var(--ink); stroke-width:1.5; }
  .chasm-invest-box{ fill:var(--ink); }
  .chasm-invest-text{ font-family:'OV Sage','Jost',sans-serif; font-size:11px; font-weight:800; letter-spacing:.1em; fill:#fff; text-transform:uppercase; }
  .chasm-stage-label{ font-family:'OV Sage','Jost',sans-serif; font-size:13px; font-weight:600; fill:var(--ink); text-anchor:middle; }
  .chasm-annotation{ font-family:'OV Sage','Jost',sans-serif; font-size:12px; fill:var(--ink); font-weight:500; }
  .chasm-gap-text{ font-family:'OV Sage','Jost',sans-serif; font-size:11px; font-weight:800; letter-spacing:.14em; fill:var(--paper); text-anchor:middle; text-transform:uppercase; }
  .chasm-fade{ opacity:0; }
  .chasm-svg-wrap.chasm-animated .chasm-curve{ animation:chasmDraw 2s cubic-bezier(.4,0,.2,1) forwards; }
  .chasm-svg-wrap.chasm-animated .chasm-fade{ animation:chasmFade .5s ease forwards; }
  @keyframes chasmDraw{ to{stroke-dashoffset:0} }
  @keyframes chasmFade{ from{opacity:0;transform:translateY(6px)} to{opacity:1;transform:translateY(0)} }
  @media(max-width:768px){
    .hh-hero-meta-grid{ grid-template-columns:1fr 1fr; }
  }

/* ===== 13-page-about-dhandho-article.css ===== */
/* ===== 13-page-about-dhandho-article.css ===== */
/* ===== About Us page ===== */
  .about-hero{ padding:calc(var(--niv-inset) + var(--niv-fab-h) + 56px) var(--hero-text-inset) 0; max-width:100%; box-sizing:border-box; }
  .about-hero-head{ display:flex; flex-direction:column; align-items:flex-start; gap:32px; margin:0 auto 40px; }
  .about-hero-title{
    max-width:none; margin:0; text-align:left;
    font-size:clamp(32px,4vw,60px); font-weight:500; line-height:1.12;
    font-family:'OV Sage','Jost',sans-serif; letter-spacing:-.02em;
  }
  .about-hero-burst{ flex:0 0 auto; width:clamp(64px,7vw,116px); height:clamp(64px,7vw,116px); overflow:visible; will-change:transform; }
  .about-hero-burst-wrap{ flex:0 0 auto; display:inline-flex; transform-origin:center; }
  .about-hero-burst line{ stroke:var(--greenDeep); stroke-width:2; stroke-linecap:round; }
  .about-hero-burst circle{ fill:var(--greenDeep); }
  @keyframes aboutStarA{ 0%{ transform:scale(0); opacity:0; } 8%{ transform:scale(1); opacity:1; } 42%{ transform:scale(1); opacity:1; } 52%{ transform:scale(0); opacity:0; } 100%{ transform:scale(0); opacity:0; } }
  @keyframes aboutStarB{ 0%,4%{ transform:scale(0); opacity:0; } 13%{ transform:scale(1); opacity:1; } 44%{ transform:scale(1); opacity:1; } 54%{ transform:scale(0); opacity:0; } 100%{ transform:scale(0); opacity:0; } }
  @keyframes aboutStarC{ 0%,10%{ transform:scale(0); opacity:0; } 20%{ transform:scale(1); opacity:1; } 46%{ transform:scale(1); opacity:1; } 56%{ transform:scale(0); opacity:0; } 100%{ transform:scale(0); opacity:0; } }
  .about-hero-burst.star-loop g line, .about-hero-burst.star-loop circle{ transform-box:fill-box; transform-origin:center; }
  .about-hero-burst.star-loop circle{ animation:aboutStarA 4.6s cubic-bezier(.34,.1,.28,1) infinite; }
  .about-hero-burst.star-loop g line:nth-of-type(1), .about-hero-burst.star-loop g line:nth-of-type(2){ animation:aboutStarB 4.6s cubic-bezier(.34,.1,.28,1) infinite; }
  .about-hero-burst.star-loop g line:nth-of-type(3), .about-hero-burst.star-loop g line:nth-of-type(4){ animation:aboutStarC 4.6s cubic-bezier(.34,.1,.28,1) infinite; }
  .about-hero-burst.star-paused g line, .about-hero-burst.star-paused circle{ animation-play-state:paused; }
  @media (prefers-reduced-motion: reduce){ .about-hero-burst.star-loop g line, .about-hero-burst.star-loop circle{ animation:none; } }
  .about-hero-desc{
    max-width:720px; margin:0 auto; text-align:center;
    font-size:clamp(16px,1.6vw,22px); font-weight:400; line-height:1.55;
    font-family:'Inter',sans-serif; color:#5a5040; padding-bottom:52px;
  }
  .about-hero-photo{
    width:100%; aspect-ratio:1928/760; height:auto; min-height:0;
    border:1.5px solid var(--ink); position:relative; overflow:hidden;
    clip-path:inset(0); transition:clip-path 1.2s cubic-bezier(.4,0,.2,1);
  }
  .about-hero-photo.crop-in{ clip-path:inset(17% 0 17% 0); }
  .about-hero-photo.crop-scroll{ transition:none; }
  .about-hero-photo-bg{
    position:absolute; left:0; right:0; top:-15%; height:130%; z-index:0;
    background:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e731a44dc3736509879ce_team-all-new.webp') center/cover no-repeat;
    will-change:transform;
  }
  .about-teams{ padding:0 28px 80px; max-width:1280px; margin:0 auto; }
  .team-section{ margin-top:80px; }
  /* Niveshaay at a Glance — bento morph grid */
  #glanceSection{ background:var(--paper); padding:100px var(--hero-text-inset); border-bottom:none; }
  #glanceSection .section-inner{ max-width:none; margin:0; padding:0; }
  #glanceSection .glance-title{ font-family:'OV Sage','Jost',sans-serif; color:var(--greenDeep); font-size:clamp(32px,3.9vw,54px); font-weight:400; line-height:1.12; margin-bottom:44px; }
  #glanceSection .glance-grid{ display:grid; grid-template-columns:repeat(4,1fr); grid-auto-rows:212px; gap:18px; }
  #glanceSection .glance-cell{ display:flex; align-items:center; justify-content:center; }
  #glanceSection .g-lead{ grid-column:span 2; grid-row:span 2; }
  #glanceSection .g-h2{ grid-row:span 2; }
  #glanceSection .g-w2{ grid-column:span 2; }
  #glanceSection .g-w4{ grid-column:span 4; }
  #glanceSection .glance-card{ position:relative; width:88px; height:88px; border-radius:50% !important; background:var(--terra); border:1.5px solid var(--terra); overflow:hidden; display:flex; align-items:center; justify-content:center;
    transition:width .6s cubic-bezier(.16,1,.3,1), height .6s cubic-bezier(.16,1,.3,1), border-radius .6s cubic-bezier(.16,1,.3,1), background .2s ease, border-color .2s ease; }
  #glanceSection .glance-card.morph-in{ width:100% !important; height:100% !important; border-radius:0 !important; background:var(--paper); border-color:var(--greenDeep); align-items:flex-end; justify-content:flex-start; }
  #glanceSection .glance-body{ opacity:0; padding:26px; text-align:left; transition:opacity .3s ease; }
  #glanceSection .glance-card.morph-in .glance-body{ opacity:1; transition-delay:.3s; }
  #glanceSection .glance-stat{ font-family:'OV Sage','Jost',sans-serif; font-weight:700; font-size:clamp(24px,2.4vw,38px); line-height:1.08; color:var(--greenDeep); font-feature-settings:"lnum" 1, "tnum" 1; }
  #glanceSection .gl-num{ font-size:1.26em; letter-spacing:-.01em; }
  #glanceSection .g-lead .glance-stat, #glanceSection .g-w2 .glance-stat{ font-size:clamp(24px,2.4vw,38px); line-height:1.08; }
  #glanceSection .glance-label{ font-family:'Inter',sans-serif; font-size:clamp(15px,1.25vw,20px); line-height:1.55; color:var(--ink); margin-top:14px; max-width:40ch; }
  #glanceSection .glance-card.morph-in:hover{ background:var(--greenDeep); border-color:var(--greenDeep); transition:none; }
  #glanceSection .glance-card.morph-in:hover .glance-stat{ color:var(--gold); transition:none; }
  #glanceSection .glance-card.morph-in:hover .glance-label{ color:var(--paper); transition:none; }
  #glanceSection .glance-burst{ position:absolute; top:16px; right:16px; width:116px; height:116px; overflow:visible; pointer-events:none; opacity:0; }
  #glanceSection .glance-card.morph-in .glance-burst{ opacity:1; }
  #glanceSection .glance-burst line{ stroke:var(--gold); stroke-width:2; stroke-linecap:round; transform:scale(0); transform-origin:center; transition:transform .45s cubic-bezier(.16,1,.3,1); }
  #glanceSection .glance-burst circle{ fill:var(--gold); transform:scale(0); transform-origin:center; transition:transform .4s cubic-bezier(.16,1,.3,1); }
  #glanceSection .glance-card:hover .glance-burst line, #glanceSection .glance-card:hover .glance-burst circle{ transform:scale(1); }
  #glanceSection .glance-cell:not(.g-w2):not(.g-w4):not(.g-h2) .glance-burst{ width:62px; height:62px; top:14px; right:14px; }
  @media(max-width:760px){
    #glanceSection{ padding-left:28px; padding-right:28px; }
    #glanceSection .glance-grid{ grid-template-columns:repeat(2,1fr); grid-auto-rows:180px; }
    #glanceSection .g-lead{ grid-column:span 2; grid-row:span 1; }
    #glanceSection .g-h2{ grid-row:span 2; }
    #glanceSection .g-w2{ grid-column:span 2; }
    #glanceSection .g-w4{ grid-column:span 2; }
  }
  @media (prefers-reduced-motion: reduce){
    #glanceSection .glance-card{ width:100% !important; height:100% !important; border-radius:0 !important; background:var(--paper) !important; border-color:var(--greenDeep) !important; align-items:flex-end !important; justify-content:flex-start !important; }
    #glanceSection .glance-body{ opacity:1 !important; }
  }
  .team-section-label{
    font-size:clamp(30px,3.4vw,50px); font-weight:500; letter-spacing:-.01em; text-transform:none;
    font-family:'OV Sage','Jost',sans-serif;
    padding-top:0; margin-bottom:32px;
  }
  .team-grid{ display:grid; gap:20px; }
  .team-grid.founders{ grid-template-columns:repeat(3,1fr); }
  .team-grid.lg{ grid-template-columns:repeat(4,1fr); }
  .team-grid.md{ grid-template-columns:repeat(4,1fr); }
  .team-grid.sm{ grid-template-columns:repeat(4,1fr); }
  .tm{ display:flex; flex-direction:column; }
  .tm-photo{
    width:100%; aspect-ratio:3/4; background:var(--tint);
    border:1.5px solid var(--ink); margin-bottom:10px;
    display:flex; align-items:center; justify-content:center;
    font-size:32px; color:#c9b783; position:relative; overflow:hidden;
  }
  .team-grid.founders .tm-photo{ font-size:40px; }
  .tm-photo .kb-poster-ico{ width:44px; height:44px; opacity:.5; }
  .tm-photo-bg{ position:absolute; inset:0; background-size:cover; background-position:center 22%; z-index:0; }
  .tm-parallax{ top:-10%; height:120%; inset:auto 0; position:absolute; left:0; right:0; will-change:transform; }
  /* Founder hover overlay */
  .tm-overlay{
    position:absolute; inset:0; background:rgba(0,0,0,.88); color:#fff;
    display:flex; flex-direction:column; justify-content:flex-end;
    padding:20px; opacity:0; transition:opacity .2s ease;
  }
  .tm-photo:hover .tm-overlay{ opacity:1; }
  .tm-ov-name{ font-size:clamp(28px,2.8vw,46px); font-weight:700; line-height:1.05; font-family:'OV Sage','Jost',sans-serif; margin-bottom:6px; color:var(--gold); }
  .tm-ov-role{ font-size:16px; color:var(--gold); font-family:'Inter',sans-serif; margin-bottom:14px; letter-spacing:.04em; text-transform:uppercase; display:inline-block; background-image:linear-gradient(var(--gold),var(--gold)); background-repeat:no-repeat; background-position:left center; background-size:0% 100%; box-decoration-break:clone; -webkit-box-decoration-break:clone; }
  .tm-photo:hover .tm-ov-role{ color:var(--greenDeep); animation:tmRoleMark .5s ease .18s forwards; }
  @keyframes tmRoleMark{ from{ background-size:0% 100%; } to{ background-size:100% 100%; } }
  .tm-ov-desc{ font-size:17px; line-height:1.6; color:var(--gold); font-family:'Inter',sans-serif; margin-bottom:20px; }
  .tm-ov-li{
    display:inline-flex; align-items:center; justify-content:center; gap:0; cursor:pointer;
    background:var(--paper); color:var(--greenDeep); border:1.5px solid var(--gold); padding:0;
    width:40px; height:40px; text-transform:none;
    font-family:'Inter',sans-serif; transition:none;
  }
  .tm-ov-li svg{ width:18px; height:18px; }
  .tm-ov-li:hover{ background:var(--gold); color:var(--greenDeep); border-color:var(--gold); }
  /* Founder card starburst (top-right), reveals on hover — PE-card style */
  .tm-burst{ position:absolute; top:16px; right:16px; width:120px; height:120px; overflow:visible; pointer-events:none; z-index:4; }
  .tm-burst .conv-burst-dot{ fill:var(--gold); transform-box:fill-box; transform-origin:center; transform:scale(0); transition:transform .4s cubic-bezier(.22,.9,.32,1); }
  .tm-burst .conv-burst-lines line{ stroke:var(--gold); stroke-width:2; stroke-linecap:round; transform-box:fill-box; transform-origin:center; transform:scale(0); transition:transform .4s cubic-bezier(.22,.9,.32,1); }
  .tm-photo:hover .tm-burst .conv-burst-dot{ transform:scale(1); transition-delay:.05s; }
  .tm-photo:hover .tm-burst .conv-burst-lines line{ transform:scale(1); }
  .tm-ov-li svg{ flex-shrink:0; }
  .tm-info-btn{ display:none; }
  .tm-photo.info-open .tm-overlay{ opacity:1; }
  .tm-photo.info-open .tm-ov-role{ color:var(--greenDeep); animation:tmRoleMark .5s ease .18s forwards; }
  .tm-photo.info-open .tm-burst .conv-burst-dot{ transform:scale(1); transition-delay:.05s; }
  .tm-photo.info-open .tm-burst .conv-burst-lines line{ transform:scale(1); }
  @media(max-width:760px){
    .team-grid.founders .tm-info-btn{ display:inline-flex; align-items:center; justify-content:center; position:absolute; top:12px; right:12px; z-index:3; width:36px; height:36px; border-radius:50% !important; background:var(--gold); border:none; color:var(--greenDeep); cursor:pointer; box-shadow:0 3px 10px rgba(0,0,0,.25); transition:opacity .2s ease; }
    .team-grid.founders .tm-photo.info-open .tm-info-btn{ opacity:0; pointer-events:none; }
    .team-grid.founders .tm-photo:hover .tm-overlay{ opacity:0; }
    .team-grid.founders .tm-photo.info-open .tm-overlay{ opacity:1; }
    .team-grid.founders .tm-photo:hover .tm-burst .conv-burst-dot,
    .team-grid.founders .tm-photo:hover .tm-burst .conv-burst-lines line{ transform:scale(0); }
    .team-grid.founders .tm-photo.info-open .tm-burst .conv-burst-dot{ transform:scale(1); }
    .team-grid.founders .tm-photo.info-open .tm-burst .conv-burst-lines line{ transform:scale(1); }
  }
  /* LinkedIn icon beside name (non-founders) */
  .tm-name-row{ display:flex; align-items:center; gap:7px; }
  /* Reported: the non-founder names read much smaller than the founders'.
     Matching size and weight; the family stays Inter, which is what separates
     the two tiers typographically without shrinking anyone. */
  .tm-name{ font-size:21px; font-weight:600; font-family:'Inter',sans-serif; }
  .team-grid.founders .tm-name{ font-size:21px; font-weight:600; font-family:'OV Sage','Jost',sans-serif; }
  .tm-li{
    display:inline-flex; align-items:center; justify-content:center;
    width:18px; height:18px; background:var(--ink); color:var(--paper);
    font-size:8px; font-weight:800; font-family:'OV Sage','Jost',sans-serif;
    cursor:pointer; border:none; flex-shrink:0; line-height:1;
    transition:opacity .12s;
  }
  .tm-li:hover{ opacity:.65; }
  @media(max-width:768px){
    .about-hero-text{ font-size:clamp(18px,4.5vw,26px); }
    .about-hero-photo{ height:auto; }
    .team-grid.founders,.team-grid.lg,.team-grid.md,.team-grid.sm{ grid-template-columns:repeat(2,1fr); }
    .team-section-label{ font-size:22px; }
    .about-teams{ padding:0 18px 60px; }
  }
  @media(max-width:760px){
    .about-hero{ padding-left:16px !important; padding-right:16px !important; padding-bottom:0; }
    .about-hero-head{ gap:22px; margin-bottom:28px; }
    .about-hero-title{ font-size:clamp(32px,9vw,46px) !important; line-height:1.1; }
    .about-hero-burst-wrap{ width:60px; height:60px; }
    .about-hero-photo{ aspect-ratio:3/2 !important; clip-path:inset(8% 0 8% 0) !important; }
    #glanceSection{ padding-left:16px !important; padding-right:16px !important; padding-top:56px !important; padding-bottom:56px !important; }
    #glanceSection .glance-title{ font-size:clamp(30px,8.4vw,44px) !important; margin-bottom:26px; }
    #glanceSection .glance-grid{ grid-auto-rows:168px; gap:12px; }
    #glanceSection .glance-body{ padding:16px !important; }
    #glanceSection .glance-stat{ font-size:clamp(20px,5.4vw,28px) !important; }
    #glanceSection .g-lead .glance-stat, #glanceSection .g-w2 .glance-stat{ font-size:clamp(20px,5.4vw,28px) !important; }
    #glanceSection .glance-label{ font-size:clamp(12px,3.3vw,14px) !important; line-height:1.4 !important; margin-top:8px !important; }
    #glanceSection .glance-burst{ width:44px !important; height:44px !important; top:12px !important; right:12px !important; }
    #glanceSection .glance-cell:not(.g-w2):not(.g-w4):not(.g-h2) .glance-burst{ width:36px !important; height:36px !important; top:10px !important; right:10px !important; }
    .team-section{ margin-top:52px; }
    .team-section-label{ font-size:clamp(20px,6vw,26px) !important; margin-bottom:22px; }
    .team-grid{ gap:14px; }
    .team-grid.founders{ grid-template-columns:1fr; }
    .team-grid.founders .tm-name{ font-size:18px; }
    .tm-name{ font-size:18px; }
  }

  .events-strip{display:flex; gap:12px; overflow-x:auto; padding-bottom:8px;}
  .event-thumb{flex:0 0 130px; height:84px; background:var(--skel); border:1.5px solid var(--ink); display:flex; align-items:center; justify-content:center; font-size:10px; color:var(--gray); font-family:'OV Sage','Jost',sans-serif;}

  /* ===== Dhandho Valley page ===== */
  .dv-hero{
    background:var(--ink); color:var(--paper);
    height:calc(85vh - 78px); min-height:440px;
    display:flex; flex-direction:column; justify-content:flex-end;
    padding:48px 60px 52px; box-sizing:border-box; overflow:hidden;
  }
  .dv-city{
    font-size:clamp(80px,13vw,196px); font-weight:500; line-height:.92;
    letter-spacing:-.03em; font-family:'OV Sage','Jost',sans-serif; color:var(--paper);
    margin-bottom:20px; display:block; width:fit-content;
  }
  .dv-og{
    font-size:20px; font-weight:500; letter-spacing:-.01em;
    font-family:'OV Sage','Jost',sans-serif; color:rgba(255,255,255,.85); margin-bottom:28px;
    text-transform:none; white-space:nowrap; display:block; width:fit-content;
  }
  .dv-tagline{
    font-size:clamp(15px,1.5vw,20px); font-weight:400; line-height:1.65;
    color:rgba(255,255,255,.6); max-width:620px; margin-top:0;
    font-family:'OV Sage','Jost',sans-serif;
  }
  #dvWhySection{ background:var(--paper); transition:background-color .7s ease; padding-left:0 !important; padding-right:0 !important; border-bottom:2px solid var(--greenDeep); }
  #dvWhySection.sfr-gold{ background:var(--greenDeep); }
  #dvWhySection .section-inner{ max-width:none; padding-left:var(--hero-text-inset); padding-right:var(--niv-inset); box-sizing:border-box; padding-top:0; padding-bottom:0; }
  .sfr{ position:relative; }
  .sfr-spacer{ height:170px; }
  .sfr-line{ max-width:1100px; margin:0 auto 150px; text-align:center; color:var(--greenDeep); opacity:0; transform:scale(.96); transform-origin:center; transition:color .25s ease, opacity .25s ease, transform .25s ease; will-change:color,opacity,transform; font-family:var(--f-serif) !important; }
  .sfr-line.sfr-sans{ font-weight:400; font-size:clamp(46px,5.4vw,84px); line-height:1.14; }
  .sfr-line.sfr-turn{ font-weight:300; font-style:italic; font-size:clamp(52px,6.2vw,94px); line-height:1.1; }
  .sfr-line.sfr-payoff{ font-weight:500; font-size:clamp(58px,7vw,108px); line-height:1.08; }
  /* All seven lines rest at opacity:0 and are revealed per frame by the
     scroll-focus driver, so this section - 3015px, the largest single block of
     content on the page - is BLANK until it scrolls.

     Killing the transition alone was not enough: a reduced-motion user got the
     blank page and no reveal to fill it. The driver writes el.style.opacity
     inline, which beats an ordinary rule, so the fallback needs !important -
     that is the one thing that outranks an inline style. */
  @media (prefers-reduced-motion: reduce){
    .sfr-line{ transition:none; }
    .sfr-line{ opacity:1 !important; transform:none !important;
      color:var(--greenDeep) !important; }
  }
  @media(max-width:760px){
    #dvWhySection .section-inner{ padding-left:16px !important; padding-right:16px !important; }
    #dvWhySection .sfr{ text-align:center; }
    #dvWhySection .sfr-spacer{ height:90px; }
    #dvWhySection .sfr-line{ margin:0 auto 80px; text-align:center !important; max-width:100%; padding:0; }
    #dvWhySection .sfr-line.sfr-sans{ font-size:clamp(46px,12.5vw,66px) !important; line-height:1.14 !important; }
    #dvWhySection .sfr-line.sfr-turn{ font-size:clamp(48px,13vw,72px) !important; }
    #dvWhySection .sfr-line.sfr-payoff{ font-size:clamp(52px,14vw,82px) !important; line-height:1.08 !important; }
  }
  .dv-what-grid{
    display:grid; grid-template-columns:repeat(3,1fr); gap:0;
    border:1.5px solid var(--ink); margin-top:40px;
  }
  .dv-what-item{
    padding:40px 36px; border-right:1.5px solid var(--ink);
    font-family:'OV Sage','Jost',sans-serif; aspect-ratio:1/1;
    display:flex; flex-direction:column; justify-content:space-between;
  }
  .dv-what-item:last-child{ border-right:none; }
  .dv-what-label{
    font-size:12px; font-weight:600; letter-spacing:.1em; text-transform:uppercase;
    color:var(--gray); margin-bottom:0;
  }
  .dv-what-text{
    font-size:18px; font-weight:400; line-height:1.55; color:var(--ink); font-family:'Inter',sans-serif;
  }
  .dv-who-row{
    display:flex; gap:0; border:1.5px solid var(--ink); margin-top:40px;
  }
  .dv-who-item{
    flex:1; padding:40px 32px; border-right:1.5px solid var(--ink); position:relative; overflow:hidden; min-height:230px;
    font-family:'OV Sage','Jost',sans-serif;
  }
  .dv-who-item:last-child{ border-right:none; }
  #page-dhandho .dv-who-verb{
    font-family:'OV Sage','Jost',sans-serif; font-size:clamp(40px,4.4vw,60px); font-weight:500; letter-spacing:-.02em; margin-bottom:16px; line-height:1.05; position:relative; z-index:2; color:var(--greenDeep);
  }
  .dv-who-noun{
    font-size:clamp(20px,1.7vw,26px); color:var(--gray); font-weight:400; line-height:1.5; font-family:'Inter',sans-serif; position:relative; z-index:2;
  }
  .dv-who-item .conv-burst{ position:absolute; top:26px; right:26px; width:88px; height:88px; overflow:visible; pointer-events:none; z-index:1; }
  .dv-who-item .conv-burst-dot{ transform:scale(0); transform-origin:center; fill:var(--gold); transition:transform .45s cubic-bezier(.16,1,.3,1); }
  .dv-who-item .conv-burst-lines line{ transform:scale(0); transform-origin:center; stroke:var(--gold); stroke-width:2; transition:transform .45s cubic-bezier(.16,1,.3,1); }
  .dv-who-item:hover .conv-burst-dot,
  .dv-who-item:hover .conv-burst-lines line{ transform:scale(1); }
  .dv-who-item.auto-on .conv-burst-dot,
  .dv-who-item.auto-on .conv-burst-lines line{ transform:scale(1); }
  .dv-who-item.auto-on{ background:var(--greenDeep); }
  #page-dhandho .dv-who-item.auto-on .dv-who-verb{ color:var(--gold); }
  .dv-who-item.auto-on .dv-who-noun{ color:var(--paper); }
  /* ===== Generic circle→rectangle morph grid (reusable) ===== */
  .morph-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin-top:40px; }
  .morph-grid .glance-cell{ display:flex; align-items:center; justify-content:center; min-height:300px; }
  .morph-grid .glance-card{ position:relative; width:88px; height:88px; border-radius:50% !important; background:var(--terra); border:1.5px solid var(--terra); overflow:hidden; display:flex; align-items:center; justify-content:center; transition:width .6s cubic-bezier(.16,1,.3,1),height .6s cubic-bezier(.16,1,.3,1),border-radius .6s cubic-bezier(.16,1,.3,1),background .2s ease,border-color .2s ease; }
  .morph-grid .glance-card.morph-in{ width:100% !important; height:100% !important; border-radius:0 !important; background:var(--paper); border-color:var(--greenDeep); align-items:flex-end; justify-content:flex-start; }
  .morph-grid .morph-body{ opacity:0; padding:28px; width:100%; box-sizing:border-box; text-align:left; transition:opacity .3s ease; }
  .morph-grid .glance-card.morph-in .morph-body{ opacity:1; transition-delay:.3s; }
  .morph-grid .glance-card.morph-in:hover{ background:var(--greenDeep); transition:none; }
  .morph-grid .m-eyebrow{ font-size:11px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--gray); font-family:'Inter',sans-serif; margin-bottom:10px; }
  .morph-grid .glance-card.morph-in:hover .m-eyebrow{ color:var(--paper); opacity:.7; }
  .morph-grid .m-title{ font-family:'OV Sage','Jost',sans-serif; font-weight:400; font-size:clamp(20px,2vw,30px); line-height:1.1; color:var(--greenDeep); }
  .morph-grid .glance-card.morph-in:hover .m-title{ color:var(--gold); }
  .morph-grid .m-text,.morph-grid .m-meta{ font-family:'Inter',sans-serif; font-size:15px; line-height:1.5; color:var(--ink); margin-top:12px; }
  .morph-grid .glance-card.morph-in:hover .m-text,.morph-grid .glance-card.morph-in:hover .m-meta{ color:var(--paper); }
  .morph-grid .m-btn{ margin-top:18px; }
  .morph-grid .glance-burst{ position:absolute; top:16px; right:16px; width:64px; height:64px; overflow:visible; opacity:0; pointer-events:none; }
  .morph-grid .glance-card.morph-in .glance-burst{ opacity:1; }
  .morph-grid .glance-burst line{ stroke:var(--gold); stroke-width:2; stroke-linecap:round; transform:scale(0); transform-origin:center; transition:transform .45s cubic-bezier(.16,1,.3,1); }
  .morph-grid .glance-burst circle{ fill:var(--gold); transform:scale(0); transform-origin:center; transition:transform .4s cubic-bezier(.16,1,.3,1); }
  .morph-grid .glance-card:hover .glance-burst line,.morph-grid .glance-card:hover .glance-burst circle{ transform:scale(1); }
  @media(max-width:760px){ .morph-grid{ grid-template-columns:1fr; }
    #page-community .web-section.intro .section-inner{ padding-left:44px !important; padding-right:16px !important; padding-bottom:56px; }
    #page-community .intro .sec-title{ font-size:clamp(48px,14vw,72px) !important; line-height:1.02 !important; white-space:normal !important; }
    #page-community .intro .comm-br{ display:inline !important; }
    #commHero .comm-title-row{ flex-wrap:nowrap !important; align-items:flex-start !important; gap:14px; }
    #commHero .comm-burst{ width:76px !important; height:76px !important; flex:none; margin-top:0; }
    #page-community .community-hero-desc{ font-size:clamp(19px,5.4vw,26px) !important; max-width:100% !important; }
    #page-community .web-section.alt .section-inner{ padding-left:16px !important; padding-right:16px !important; }
    #eventsGrid .glance-cell{ min-height:210px; }
    #eventsGrid .morph-body{ padding:20px !important; }
    #eventsGrid .m-title{ font-size:clamp(19px,5.4vw,26px) !important; }
    #eventsGrid .glance-burst{ width:46px !important; height:46px !important; top:12px !important; right:12px !important; }
  }
  /* Dhandho Valley "what" cards — top-align so titles + descriptions line up across all three */
  #dvWhatGrid .glance-card.morph-in{ align-items:flex-start !important; justify-content:flex-start !important; }
  #dvWhatGrid .morph-body{ display:flex; flex-direction:column; }
  #dvWhatGrid .m-title{ margin-bottom:14px; font-size:clamp(26px,2.6vw,38px) !important; }
  #dvWhatGrid .m-text{ margin-top:0; font-size:clamp(16px,1.5vw,21px); line-height:1.55; }
  @media(prefers-reduced-motion:reduce){ .morph-grid .glance-card{ width:100% !important; height:100% !important; border-radius:0 !important; background:var(--paper) !important; border-color:var(--greenDeep) !important; align-items:flex-end !important; justify-content:flex-start !important; } .morph-grid .morph-body{ opacity:1 !important; } }
  /* Community intro promo card */
  #page-community .web-section.intro{ position:relative; overflow:hidden; background:var(--greenDeep); }
  #page-community .web-section.intro .section-inner{ position:relative; z-index:2; padding:48px; max-width:none; }
  #page-community .web-section.intro .sec-title{ color:var(--gold); }
  #page-community .web-section.intro .community-hero-desc{ color:var(--gold); }
  #page-community .web-section.intro .btn{ background:transparent; border-color:var(--gold); color:var(--gold); }
  #page-community .web-section.intro .btn:hover{ background:#F0C157; border-color:#F0C157; color:var(--greenDeep); }
  #commHero .ways-guides{ position:absolute; inset:0; width:100%; height:100%; pointer-events:none; overflow:visible; z-index:1; }
  #commHero .ways-guides line{ stroke:var(--gold); stroke-width:1.4; }
  #commHero .ways-guides #cmgNode{ fill:var(--gold); stroke:none; }
  #commHero .comm-title-row{ display:flex; align-items:flex-end; gap:clamp(20px,3vw,44px); flex-wrap:nowrap; }
  #commHero .comm-burst{ flex:none; width:clamp(96px,11vw,190px); height:clamp(96px,11vw,190px); overflow:visible; }
  #commHero .comm-burst line{ stroke:var(--gold); stroke-width:2.6; stroke-linecap:round; transform-box:fill-box; transform-origin:center; animation:commBurst 2.8s cubic-bezier(.16,1,.3,1) infinite; }
  #commHero .comm-burst circle{ fill:var(--gold); transform-box:fill-box; transform-origin:center; animation:commBurstDot 2.8s cubic-bezier(.16,1,.3,1) infinite; }
  @keyframes commBurst{ 0%,100%{ transform:scale(0); } 28%,72%{ transform:scale(1); } }
  @keyframes commBurstDot{ 0%,100%{ transform:scale(0); } 20%,80%{ transform:scale(1); } }
  @media(prefers-reduced-motion:reduce){ #commHero .comm-burst line, #commHero .comm-burst circle{ animation:none; transform:scale(1); } }
    .dv-who-item{ transition:none; }
  .dv-who-item:hover{ background:var(--greenDeep); }
  #page-dhandho .dv-who-item:hover .dv-who-verb{ color:var(--gold); }
  .dv-who-item:hover .dv-who-noun{ color:var(--paper); }
  .dv-cta-block{
    border:none; padding:80px 48px; text-align:center;
    display:flex; flex-direction:column; align-items:center; justify-content:center; gap:28px;
    margin-top:0;
  }
  .dv-cta-text{
    font-size:clamp(34px,5vw,72px); font-weight:400; line-height:1.15; color:var(--greenDeep);
    font-family:'OV Sage','Jost',sans-serif; max-width:900px;
  }
  .dv-cta-inner{
    display:flex; flex-direction:column; align-items:center; justify-content:center; gap:28px;
    margin-top:0;
  }
  .dv-cta-text{
    font-size:clamp(28px,3.8vw,54px); font-weight:400; line-height:1.34; color:var(--greenDeep);
    font-family:'OV Sage','Jost',sans-serif !important; max-width:900px;
  }
  .dv-cta-sub{
    font-size:15px; color:var(--gray); margin-top:8px; font-family:'Inter',sans-serif;
  }
  #page-dhandho .dv-cta-block .dv-cta-text{ font-family:'OV Sage','Jost',sans-serif !important; font-weight:400 !important; font-variant-numeric:lining-nums; font-feature-settings:'lnum' 1; }
  .dv-btn{
    flex-shrink:0; background:var(--ink); color:var(--paper);
    border:2px solid var(--ink); padding:16px 36px;
    font-size:15px; font-weight:500; font-family:'OV Sage','Jost',sans-serif;
    cursor:pointer; transition:background .15s,color .15s; white-space:nowrap;
  }
  .dv-btn:hover{ background:transparent; color:var(--ink); }
  @media(max-width:768px){
    .dv-hero{ padding:40px 24px 56px; }
    .dv-city{ font-size:clamp(64px,18vw,110px); }
    .dv-what-item{ aspect-ratio:unset; }
    .dv-who-verb{ font-size:26px; }
    .dv-what-grid{ grid-template-columns:1fr; }
    .dv-what-item{ border-right:none; border-bottom:1.5px solid var(--ink); }
    .dv-what-item:last-child{ border-bottom:none; }
    .dv-who-row{ flex-direction:column; }
    .dv-who-item{ border-right:none; border-bottom:1.5px solid var(--ink); }
    .dv-who-item:last-child{ border-bottom:none; }
    .dv-who-item .conv-burst{ width:58px !important; height:58px !important; top:20px !important; right:20px !important; }
    .dv-cta-block{ flex-direction:column; align-items:center; text-align:center; padding:32px 20px; }
    .dv-cta-block .btn{ width:100%; box-sizing:border-box; }
  }

  /* ===== Article page ===== */
  .art-progress{
    position:fixed; top:0; left:0; height:3px; background:var(--ink);
    width:0%; z-index:300; pointer-events:none;
  }
  .art-page{ padding:calc(var(--niv-inset) + var(--niv-fab-h) + 32px) 0 80px; }
  .art-inner{ max-width:990px; margin:0 auto; padding:0 28px; }
  .art-layout{ display:grid; grid-template-columns:minmax(300px,360px) 1fr; gap:56px; align-items:start; }
  .art-left{ position:sticky; top:calc(var(--niv-inset) + var(--niv-fab-h) + 24px); align-self:start; }
  @media(max-width:900px){ .art-layout{ grid-template-columns:1fr; gap:28px; } .art-left{ position:static; } }
  .art-back{
    display:inline-flex; align-items:center; gap:8px; border:1.5px solid var(--ink); background:var(--paper);
    font-size:12px; font-weight:600; letter-spacing:.08em; text-transform:uppercase;
    font-family:'Inter',sans-serif; color:var(--ink); cursor:pointer; padding:11px 20px;
    margin:0 0 32px;
  }
  #page-article .art-title{ font-family:'OV Sage','Jost',sans-serif !important; color:var(--ink) !important; }
  #page-article .art-pullquote, #page-article .art-pullquote *{ font-family:'Inter',sans-serif !important; }
  /* ⚠ CLASS-SCOPED TWINS OF THE TWO RULES ABOVE. The Webflow article template
     cannot carry id="page-article": setting it fails with
       [Conflict] The operation could not be applied to the component map
     through the Data API (six attempts, two tools, two elements, before and
     after a publish) AND in the Designer by hand — so it is a page-state
     conflict, not an API limit, and there is no route to the id at all.
     .art-page is the same box the id would have gone on, so these carry the
     identical declarations off a class instead. The id rules stay for the
     static build, which does have the id; both sets are the same values, so
     they cannot disagree. */
  .art-page .art-title{ font-family:'OV Sage','Jost',sans-serif !important; color:var(--ink) !important; }
  .art-page .art-pullquote, .art-page .art-pullquote *{ font-family:'Inter',sans-serif !important; }
  .art-back:hover{ background:var(--ink); color:var(--paper); }
  .art-tags{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:22px; }
  .art-tag{
    font-size:10px; font-weight:700; letter-spacing:.12em; text-transform:uppercase;
    border:1.5px solid var(--ink); padding:4px 12px; font-family:'Inter',sans-serif;
    color:var(--ink);
  }
  .art-tag.filled{ background:var(--blue); border-color:var(--blue); color:var(--paper); }
  .art-title{
    font-size:clamp(34px,4.6vw,62px); font-weight:500; line-height:1.1;
    letter-spacing:-.02em; font-family:'Inter',sans-serif; margin-bottom:18px;
  }
  .art-deck{
    font-size:19px; font-weight:400; line-height:1.65; color:#5a5040;
    font-family:'Inter',sans-serif; margin-bottom:32px; max-width:760px;
  }
  /* Flex, not a 3-column grid: an item with no value is removed (below), and
     the rest share the row instead of leaving an empty ruled cell. */
  .art-meta{
    display:flex;
    border-top:1.5px solid var(--ink); border-bottom:1.5px solid var(--ink);
    margin-bottom:48px;
  }
  .art-meta-item{
    flex:1 1 0; min-width:0;
    padding:14px 16px; border-right:1.5px solid var(--ink);
    font-family:'Inter',sans-serif;
  }
  .art-meta-item:last-child{ border-right:none; }
  .art-meta-label{
    font-size:9px; font-weight:700; letter-spacing:.12em; text-transform:uppercase;
    color:var(--gray); margin-bottom:4px;
  }
  .art-meta-value{ font-size:15px; font-weight:500; color:var(--ink); }
  /* Read time is optional in the CMS. Webflow marks an empty bound field
     .w-dyn-bind-empty; drop the whole item rather than show a label over
     nothing. */
  .art-meta-item:has(> .w-dyn-bind-empty){ display:none; }
  /* Phones: a ruled list, label left and value right, one row per item. */
  @media(max-width:767px){
    .art-meta{ flex-direction:column; margin-bottom:32px; }
    .art-meta-item{
      flex:0 0 auto; display:flex; align-items:baseline; justify-content:space-between; gap:16px;
      padding:11px 0; border-right:none; border-bottom:1px solid rgba(44,46,43,.22);
    }
    .art-meta-item:last-child{ border-bottom:none; }
    .art-meta-label{ order:-1; margin-bottom:0; flex:0 0 auto; }
    .art-meta-value{ text-align:right; font-size:14px; }
  }
  .art-cover{
    width:100%; aspect-ratio:16/7; background:var(--tint);
    border:1.5px solid var(--ink); margin-bottom:52px;
    display:flex; align-items:center; justify-content:center; font-size:32px; color:#c9b783;
  }
  /* Body text */
  .art-body p{
    font-size:18px; font-weight:400; line-height:1.85;
    font-family:'Inter',sans-serif; color:var(--ink); margin-bottom:26px;
  }
  .art-body > p:first-child::first-letter{
    font-size:4.2em; font-weight:600; line-height:.8; float:left; margin:.04em .12em 0 0;
  }
  .art-body h2{
    font-size:22px; font-weight:600; line-height:1.2; letter-spacing:-.01em;
    font-family:'Inter',sans-serif; margin:60px 0 16px;
    border-top:1.5px solid var(--ink); padding-top:22px;
  }
  .art-body h2 .art-sec-num{
    font-size:11px; font-weight:700; letter-spacing:.1em; color:var(--gray);
    display:block; margin-bottom:8px; text-transform:uppercase; font-family:'Inter',sans-serif;
  }
  .art-body h3{
    font-size:18px; font-weight:600; line-height:1.3;
    font-family:'Inter',sans-serif; margin:36px 0 10px;
  }
  .art-body h4{
    font-size:15px; font-weight:600; font-family:'Inter',sans-serif;
    margin:24px 0 6px; letter-spacing:.01em;
  }
  .art-body ul{ margin:0 0 26px 22px; }
  .art-body li{
    font-size:18px; line-height:1.75; font-family:'Inter',sans-serif;
    color:var(--ink); margin-bottom:8px;
  }
  .art-body strong{ font-weight:600; }

  /* ---- Rich-text authored articles (Webflow CMS Body field) ----
     The Body field emits plain tags, so the two in-prose blocks the design uses
     are mapped onto what an editor can actually produce: a blockquote IS the
     pullquote, a figure IS the framed image. Authors never touch a class name.
     Webflow wraps rich-text images as
       figure.w-richtext-figure-type-image > div > img  (+ optional figcaption)
     so the bare and Webflow-classed shapes are both matched.
     Stat rows have no rich-text equivalent and are deliberately not supported —
     nothing an author can type produces one. */
  .art-body blockquote{
    border-left:3px solid var(--ink); padding:18px 28px;
    margin:40px 0; background:var(--tint);
    font-size:20px; font-weight:400; line-height:1.55;
    font-family:'Inter',sans-serif; color:var(--ink);
  }
  .art-body figure{ margin:36px 0; }
  .art-body figure div{ width:100%; }
  .art-body img{
    display:block; width:100%; height:auto;
    border:1.5px solid var(--ink); background:var(--tint);
  }
  .art-body figcaption{
    font-size:12px; color:var(--gray); font-family:'Inter',sans-serif;
    margin-top:8px; padding:0 4px;
  }
  /* ---- Article gallery ----
     Built by deploy/kb-gallery.js from a RUN of consecutive images in the Body
     field: the publisher drops images in and the shape follows, one image
     staying one image. The figures are REAL <img> in the served HTML and this
     only rearranges them, so with JS off the run degrades to a clean stack. */
  .art-gal{ position:relative; margin:36px 0; border:1.5px solid var(--ink);
    background:var(--tint); overflow:hidden; }
  .art-gal-track{ display:flex; transition:transform .38s cubic-bezier(.4,0,.2,1); }
  .art-gal-slide{ flex:0 0 100%; min-width:100%; }
  .art-gal-slide figure{ margin:0; }
  .art-gal-slide img{ border:0; display:block; width:100%; height:auto; }
  .art-gal-slide figcaption{ margin:0; padding:10px 16px 14px; }
  .art-gal-dots{ display:flex; justify-content:center; gap:8px;
    padding:12px 0 14px; border-top:1.5px solid var(--ink); background:var(--paper); }
  .art-gal-dot{ width:9px; height:9px; padding:0; cursor:pointer;
    border:1.5px solid var(--ink); background:transparent; border-radius:0;
    transition:background .15s; }
  .art-gal-dot.is-on{ background:var(--terra); border-color:var(--terra); }
  .art-gal-nav{ position:absolute; top:50%; transform:translateY(-50%);
    width:40px; height:40px; cursor:pointer; border:1.5px solid var(--ink);
    background:var(--paper); border-radius:0; padding:0;
    transition:background .12s, opacity .12s; }
  .art-gal-nav:hover:not(:disabled){ background:var(--ink); }
  .art-gal-nav:disabled{ opacity:.3; cursor:default; }
  .art-gal-prev{ left:14px; }
  .art-gal-next{ right:14px; }
  /* Chevrons drawn from a rotated border so the buttons carry no text. */
  .art-gal-nav::before{ content:''; position:absolute; top:50%; left:50%;
    width:9px; height:9px; border-left:1.6px solid var(--ink);
    border-bottom:1.6px solid var(--ink); }
  .art-gal-nav:hover:not(:disabled)::before{ border-color:var(--paper); }
  .art-gal-prev::before{ transform:translate(-40%,-50%) rotate(45deg); }
  .art-gal-next::before{ transform:translate(-60%,-50%) rotate(-135deg); }
  @media(max-width:600px){
    .art-gal-nav{ display:none; }   /* swipe carries it on touch */
  }
  /* ---- Infographic / Deal gallery — the growth-story treatment ----------
     Same markup as the gallery above, different chrome, so a publisher still
     just drops images into Body and nothing new has to be learned.

     Three deliberate differences from the home page's .ks-* carousel:

     1. NO FIXED RATIO AND NO CROP. The home page stage is aspect-ratio:1/1 with
        object-fit:cover, which is right for a story card and wrong for an
        infographic — a 4:5 portrait would lose its header and its SEBI footer,
        i.e. the regulatory line, to the crop. The track is a flex row of
        natural-height slides instead, so the frame takes the tallest image and
        every pixel of every slide survives at any ratio.
     2. The arrow pair lifts out of the artwork into its own control row, the
        way .ks-nav-pair sits beside the story title.
     3. The arrows stay on at mobile (the plain .art-gal hides them and leans on
        swipe). Stepping an infographic one panel at a time is the whole
        interaction here, and the home page keeps its pair at every width too.

     Applied by kb-gallery.js off the CMS Content type; Research and Quick Read
     keep the plain .art-gal above. */
  .art-gal-ks{ border:0; background:none; overflow:visible; margin:40px 0; }
  .art-gal-ks .art-gal-head{
    display:flex; justify-content:flex-end; align-items:center;
    margin-bottom:clamp(14px,1.6vw,20px); }
  .art-gal-ks .art-gal-navpair{ display:flex; gap:10px; flex:0 0 auto; }
  /* 13- loads BEFORE the canonical .carousel-arrow rule in 21-, so a bare class
     here would lose on source order. These win on specificity instead — which
     also survives any future re-ordering of _ORDER.txt. */
  /* ⚠ border-radius needs !important here: the bundle carries a site-wide
     `*, *::before, *::after{ border-radius:0!important }` squared-off rule, and
     an unflagged 50% loses to it. This is why the home page's own .ks-dot and
     arrow pair carry the flag too - copying them without it produced squares. */
  .art-gal-ks .art-gal-navpair .art-gal-arrow{
    width:45px; height:45px; border-radius:50% !important; box-sizing:border-box;
    display:flex; align-items:center; justify-content:center;
    flex:0 0 auto; padding:0; cursor:pointer;
    border:1.5px solid var(--greenDeep); background:transparent; color:var(--greenDeep);
    transition:background .18s ease, color .18s ease, opacity .18s ease; }
  .art-gal-ks .art-gal-navpair .art-gal-arrow svg{ width:18px; height:18px; }
  .art-gal-ks .art-gal-navpair .art-gal-arrow svg *{
    fill:none; stroke:currentColor; stroke-width:1.4;
    stroke-linecap:round; stroke-linejoin:round; }
  .art-gal-ks .art-gal-navpair .art-gal-arrow:hover:not(:disabled){
    background:var(--greenDeep); color:var(--gold); }
  .art-gal-ks .art-gal-navpair .art-gal-arrow:disabled{ opacity:.35; cursor:default; }
  /* The frame moves off the wrapper and onto the stage, so the control row and
     the dots sit outside the border as they do on the home page. */
  .art-gal-ks .art-gal-stage{
    position:relative; overflow:hidden;
    border:1.5px solid rgba(69,98,50,.28); background:#FCF7EA;
    /* The frame takes the IMAGES' own ratio, written by kb-gallery.js from the
       tallest slide in the run. Without it the stage was as wide as the column
       but only as tall as whatever Webflow's own figure sizing produced, so a
       4:5 infographic sat shrunk inside a landscape box. `auto` is the fallback
       when the ratio cannot be read (script off, image blocked): the stage then
       simply takes its content's height, which is also uncropped. */
    aspect-ratio:var(--gal-ar, auto); }
  .art-gal-ks .art-gal-track{ height:100%; }
  .art-gal-ks .art-gal-slide{ height:100%; }
  /* ⚠ Webflow wraps a rich-text image as figure > div > img and makes that DIV
     an inline-block sized to the image, from its OWN base stylesheet — which is
     not part of this bundle and therefore not visible to the local harness.
     Left alone it centres a narrower image inside the frame. Force the whole
     chain to fill the slide; the figcaption, when present, keeps its own height
     and the image flexes into what is left. */
  .art-gal-ks .art-gal-slide figure{
    display:flex; flex-direction:column; margin:0; height:100%; max-width:none; }
  .art-gal-ks .art-gal-slide figure > div{
    display:block; width:100%; max-width:none; flex:1 1 auto; min-height:0; }
  .art-gal-ks .art-gal-slide img{
    display:block; width:100%; height:100%; object-fit:contain; border:0; }
  .art-gal-ks .art-gal-slide figcaption{ flex:0 0 auto; padding:10px 16px 14px; }
  .art-gal-ks .art-gal-dots{
    border-top:0; background:none; padding:0; margin-top:18px; gap:9px; }
  .art-gal-ks .art-gal-dot{
    width:12px; height:12px; border-radius:50% !important; padding:0; cursor:pointer;
    border:1.5px solid rgba(69,98,50,.5); background:transparent;
    transition:background .25s ease, border-color .25s ease; }
  .art-gal-ks .art-gal-dot.is-on{ background:var(--greenDeep); border-color:var(--greenDeep); }
  /* The browser must keep vertical panning; the horizontal axis is ours. Without
     this the UA can claim the gesture before the swipe handler sees it. */
  .art-gal-ks .art-gal-track{ touch-action:pan-y; }

  /* ---- Desktop split: text left, carousel right (Infographic / Deal) ------
     Client, 15 Sep: "title, descriptions, article text on left and the carousel
     on right - all in single view, 100% visible. If text is longer then left
     side becomes scrollable and the carousel becomes sticky."

     Page scroll + position:sticky is used rather than a nested scroller on the
     left: one scrollbar, the reading position stays linkable, and the keyboard
     and screen-reader order is untouched. The visible result is the same.

     ⚠ This cannot be built natively, and that is a consequence of an earlier
     decision, not an oversight. The images live in the Body rich text so they
     ship as crawlable <img> (see WEBFLOW-KNOWLEDGE-SPEC "Image galleries"), and
     a Webflow rich text element cannot place part of its own output into a
     different column. kb-gallery.js therefore lifts the carousel out and the
     Designer canvas shows the single-column form. */
  .art-split{ --art-split-top:100px;   /* clears the 76px nav row plus air */
              --art-gal-chrome:118px;  /* arrow row + dots, so the unit fits */ }
  @media (min-width:992px){
    /* ⚠ .art-inner is capped at 990px - a single-column PROSE measure. Two
       columns inside it left each about 450px, so the pair read as squeezed
       together with a wide empty margin either side, and the height-led stage
       was then clamped by max-width to roughly half the height it should have
       had. The split gets its own, wider measure; everything BELOW the article
       (takeaways, related basket, Continue Reading) is handed back the reading
       width so those bands do not stretch across the whole screen.
       :has() is already a dependency of this stylesheet - see the quick-read
       measure above. */
    .art-page:has(.art-split) .art-inner{ max-width:min(1520px, calc(100vw - 96px)); }
    .art-page:has(.art-split) .art-inner > *:not(.art-split){
      max-width:990px; margin-inline:auto; }

    .art-split{ display:flex; align-items:flex-start; justify-content:center;
      gap:clamp(36px,3.6vw,72px);
      /* ⚠ The split owns the clearance below itself. When the prose is short -
         which it is on a real infographic - the sticky media column is the
         TALLER of the two, so whatever follows starts level with the dots. The
         related basket card contributes almost no top margin of its own and sat
         right on them. Relying on the next component's margin is what broke it;
         a zero-margin sibling measures a 0px gap without this. */
      margin-bottom:clamp(40px,4vw,72px); }
    /* The prose keeps a readable measure however wide the page gets; the slack
       goes to the carousel, which is the content on an infographic. */
    .art-split-text{ flex:1 1 auto; min-width:0; max-width:820px; }
    .art-split > .art-gal-ks{
      flex:0 0 auto;   /* width comes from the height-led stage below */
      position:sticky; top:var(--art-split-top); margin:0; }
    /* Height-led in this column, so the whole carousel fits one viewport and
       still hugs the images' ratio. max-width hands control back to the column
       when a wide ratio would otherwise overflow it. */
    .art-split > .art-gal-ks .art-gal-stage{
      height:calc(100vh - var(--art-split-top) - var(--art-gal-chrome));
      width:auto; max-width:100%; margin-inline:auto; }
  }

  @media(max-width:600px){
    .art-gal-ks .art-gal-navpair .art-gal-arrow{ width:38px; height:38px; }
    .art-gal-ks .art-gal-navpair .art-gal-arrow svg{ width:15px; height:15px; }
    .art-gal-ks .art-gal-dot{ width:10px; height:10px; }
  }
  /* ---- Empty Key Takeaways must not render an empty box ----------------
     The label is static, so the block drew its border and its "KEY TAKEAWAYS"
     heading even when the CMS field was blank - visible on infographics and
     deals, which rarely carry one. Webflow marks a bound element whose field is
     empty with .w-dyn-bind-empty, so the wrapper can be dropped in CSS, before
     first paint. kb-gallery.js repeats the test on text content as a fallback
     for anything that does not get the class. Applies to EVERY content type:
     an empty box is wrong on a research article too. */
  .art-takeaways:has(.w-dyn-bind-empty),
  .art-takeaways.is-empty{ display:none !important; }

  /* ---- Infographic / Deal: no cover image ----------------------------
     An infographic's first panel IS its opening image, so the poster on top
     duplicates it and pushes the carousel below the fold. The poster is still
     wanted as the Knowledge Hub card thumbnail, so the field stays set and only
     the article-page cover is dropped. [data-art-type] is stamped on <html> by
     the article template's page head code (flash-free, before first paint) with
     kb-gallery.js as a late fallback. */
  :is([data-art-type="infographic"],[data-art-type="deal"]) .art-cover{ display:none; }
  /* The cover is a flex centring box built for a placeholder glyph; the CMS
     poster is a real <img>, so it has to fill rather than sit centred. */
  .art-cover{ overflow:hidden; }
  .art-cover-img{ width:100%; height:100%; object-fit:cover; display:block; }
  .art-pullquote{
    border-left:3px solid var(--ink); padding:18px 28px;
    margin:40px 0; background:var(--tint);
    font-size:20px; font-weight:400; line-height:1.55;
    font-family:'Inter',sans-serif; color:var(--ink);
  }
  .art-stat-row{ display:flex; gap:0; border:1.5px solid var(--ink); margin:36px 0; }
  .art-stat-item{
    flex:1; padding:20px 22px; border-right:1.5px solid var(--ink);
    font-family:'Inter',sans-serif; text-align:center;
  }
  .art-stat-item:last-child{ border-right:none; }
  .art-stat-num{ font-size:28px; font-weight:600; letter-spacing:-.02em; display:block; }
  .art-stat-desc{ font-size:12px; color:var(--gray); margin-top:4px; line-height:1.4; }
  .art-img{
    width:100%; aspect-ratio:16/8; background:var(--tint);
    border:1.5px solid var(--ink); margin:36px 0;
    display:flex; align-items:center; justify-content:center;
    font-size:26px; color:#c9b783; font-family:'Inter',sans-serif;
  }
  .art-img-caption{
    font-size:12px; color:var(--gray); font-family:'Inter',sans-serif;
    margin:-28px 0 36px; padding:0 4px;
  }
  /* Key takeaways */
  .art-takeaways{
    border:1.5px solid var(--ink); padding:32px 36px; margin:64px 0 40px;
    background:var(--tint);
  }
  .art-takeaways-label{
    font-size:10px; font-weight:700; letter-spacing:.12em; text-transform:uppercase;
    font-family:'Inter',sans-serif; margin-bottom:18px;
  }
  .art-takeaways ul{ margin:0 0 0 18px; }
  .art-takeaways li{
    font-size:15px; line-height:1.65; font-family:'Inter',sans-serif;
    color:var(--ink); margin-bottom:12px;
  }
  /* Basket CTA */
  .art-basket-cta{
    border:2px solid var(--ink); padding:32px 36px;
    display:flex; align-items:center; justify-content:space-between; gap:32px;
    margin-bottom:64px;
  }
  .art-basket-label{
    font-size:10px; font-weight:700; letter-spacing:.12em; text-transform:uppercase;
    font-family:'Inter',sans-serif; color:var(--gray); margin-bottom:8px;
  }
  .art-basket-name{
    font-size:20px; font-weight:500; letter-spacing:-.01em;
    font-family:'Inter',sans-serif; margin-bottom:6px;
  }
  .art-basket-desc{
    font-size:13px; color:#555; font-family:'Inter',sans-serif; line-height:1.5;
  }
  .art-basket-btn{
    flex-shrink:0; background:var(--ink); color:var(--paper);
    border:2px solid var(--ink); padding:14px 28px; cursor:pointer;
    font-size:13px; font-weight:600; font-family:'Inter',sans-serif;
    letter-spacing:.04em; white-space:nowrap;
    transition:background .12s,color .12s;
  }
  .art-basket-btn:hover{ background:transparent; color:var(--ink); }
  /* No basket picked on the item: the reference binding leaves the name empty
     (Webflow marks it .w-dyn-bind-empty), so the box would render with just a
     label and a button. Hide it. The script adds .is-empty as a fallback. */
  .art-basket-cta.is-empty,
  .art-basket-cta:has(.art-basket-name.w-dyn-bind-empty){ display:none !important; }
  /* More articles */
  .art-more-label{
    font-size:10px; font-weight:700; letter-spacing:.12em; text-transform:uppercase;
    font-family:'Inter',sans-serif; border-top:1.5px solid var(--ink);
    padding-top:18px; margin-bottom:20px;
  }
  /* Three cards (kb-gallery.js picks them from the hand-picked, same-sector
     and newest lists). The lists it empties, and a list with nothing in it,
     leave no gap and no "No items found". */
  .art-more-grid{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; }
  .art-more-label ~ .w-dyn-list .w-dyn-empty{ display:none; }
  .art-more-label ~ .w-dyn-list + .w-dyn-list{ margin-top:18px; }
  html.art-more-ready .art-more-label ~ .w-dyn-list + .w-dyn-list{ margin-top:0; }
  /* Every card the same size whatever its poster or title length: the
     cells stretch to the row, the card fills its cell, the poster sits in a
     fixed 16:9 frame (cropped to fill, never letterboxed), titles stop at
     three lines and the date sits on the bottom edge of every card. The
     card is a link: ink text, never the browser's link blue or visited
     purple. */
  .art-more-grid > .w-dyn-item{ display:flex; min-width:0; }
  .art-more-card{
    display:flex; flex-direction:column; width:100%;
    border:1.5px solid var(--ink); cursor:pointer;
    transition:background .12s; overflow:hidden;
    color:var(--ink); text-decoration:none;
  }
  .art-more-card:link, .art-more-card:visited{ color:var(--ink); text-decoration:none; }
  .art-more-card:hover{ background:var(--tint); }
  .art-more-thumb{
    flex:none; position:relative;
    width:100%; aspect-ratio:16/9; background:var(--tint);
    border-bottom:1.5px solid var(--ink); overflow:hidden;
    display:flex; align-items:center; justify-content:center;
    font-size:22px; color:#c9b783;
  }
  .art-more-thumb-img{
    position:absolute; inset:0; width:100%; height:100%;
    object-fit:cover; object-position:center top; display:block;
  }
  .art-more-card-body{ flex:1 1 auto; display:flex; flex-direction:column; padding:18px 20px; }
  .art-more-card-tag{
    font-size:9px; font-weight:700; letter-spacing:.12em; text-transform:uppercase;
    font-family:'Inter',sans-serif; color:var(--gray); margin-bottom:10px;
  }
  .art-more-card-title{
    font-size:15px; font-weight:500; line-height:1.4; color:var(--ink);
    font-family:'Inter',sans-serif; margin-bottom:14px;
    display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:3; overflow:hidden;
  }
  .art-more-card:hover .art-more-card-title{ color:var(--greenDeep); }
  .art-more-card-meta{
    margin-top:auto;
    font-size:11px; color:var(--gray); font-family:'Inter',sans-serif;
  }
  @media(max-width:768px){
    .art-stat-row{ flex-direction:column; }
    .art-stat-item{ border-right:none; border-bottom:1.5px solid var(--ink); }
    .art-stat-item:last-child{ border-bottom:none; }
    .art-more-grid{ grid-template-columns:1fr; }
    .art-basket-cta{ flex-direction:column; align-items:flex-start; }
  }

/* ---- QUICK READ ------------------------------------------------------------
   Webflow allows one template page per CMS collection, so a Quick Read is this
   same article template rendered smaller rather than a second template.

   The two pieces of furniture that only earn their place on a long piece - the
   16:7 cover band and the Key Takeaways box - are dropped in the Designer by
   conditional visibility keyed to Content type, so they leave the markup
   entirely rather than being hidden here.

   What conditional visibility cannot reach is type: the drop cap is a
   ::first-letter rule and the measure is a width, and neither is a property
   Webflow can switch per item. Those key off .is-quick-read, an empty marker
   div that the same Content type condition renders ONLY on Quick Reads - so
   the one dropdown still drives all of it, and :has() does the rest. */
  .art-page:has(.is-quick-read) .art-inner{ max-width:820px; }
  .art-page:has(.is-quick-read) .art-title{
    font-size:clamp(28px,3.4vw,44px); margin-bottom:14px;
  }
  .art-page:has(.is-quick-read) .art-deck{
    font-size:17px; line-height:1.6; margin-bottom:26px;
  }
  .art-page:has(.is-quick-read) .art-meta{ margin-bottom:36px; }
  /* A drop cap eats a quarter of a short opening paragraph. */
  .art-page:has(.is-quick-read) .art-body > p:first-child::first-letter{
    font-size:inherit; font-weight:inherit; line-height:inherit;
    float:none; margin:0;
  }
  .art-page:has(.is-quick-read) .art-body p{
    font-size:17px; line-height:1.75; margin-bottom:22px;
  }
  .art-page:has(.is-quick-read) .art-body h2{
    font-size:20px; margin:38px 0 14px; padding-top:18px;
  }
  .art-page:has(.is-quick-read) .art-body h3{
    font-size:17px; margin:26px 0 10px;
  }

/* ---- About, phones: the non-founder teams scroll as 2x2 pages --------------
   Requested: "in the mobile version lets give them 2x2 grid ... top bottom
   cards will be visible 100%, beside them 2 cards top bottom will be visible
   15% only."

   grid-auto-flow:column with two rows lays the cards out in vertical pairs and
   runs them off to the right; the column width is solved so exactly two pairs
   fit plus 15% of the third, which is the peek that shows the row keeps going.
   grid-template-columns has to be cleared or the repeat(2,1fr) rule above wins
   and the flow never becomes horizontal. Founders are left alone - they are a
   single column on phones by design. */
@media(max-width:768px){
  /* The live Webflow lists carry ONLY `team-grid` - there is no lg/md/sm
     modifier on them, which is why an earlier `.team-grid.lg, .team-grid.md,
     .team-grid.sm` rule matched nothing at all on the published page. Read off
     the real element tree via the API. Founders are excluded by name. */
  .team-grid:not(.founders),
  .team-grid.lg,
  .team-grid.md,
  .team-grid.sm{
    --tm-gap:14px;
    display:grid;
    grid-template-columns:none;
    grid-auto-flow:column;
    grid-template-rows:repeat(2,auto);
    grid-auto-columns:calc((100% - 2 * var(--tm-gap)) / 2.15);
    gap:var(--tm-gap);
    overflow-x:auto;
    overscroll-behavior-x:contain;
    -webkit-overflow-scrolling:touch;
    scroll-snap-type:x proximity;
    scroll-padding-left:0;
    padding-bottom:6px;
  }
  .team-grid:not(.founders) > *,
  .team-grid.lg > *,
  .team-grid.md > *,
  .team-grid.sm > *{ scroll-snap-align:start; min-width:0; }
  /* the strip runs to the section's own edges, so no scrollbar gutter shows */
  .team-grid:not(.founders)::-webkit-scrollbar,
  .team-grid.lg::-webkit-scrollbar,
  .team-grid.md::-webkit-scrollbar,
  .team-grid.sm::-webkit-scrollbar{ height:0; }
}

/* ===== 14-pe-showcase-carousels.css ===== */
/* ===== 14-pe-showcase-carousels.css ===== */
/* ===== PE Portfolio Circular 3D Ring Carousel ===== */
  /* ===== PE Portfolio — The Conviction Roll ===== */
  .conv-roll-section{
    background:var(--ink); color:var(--paper);
    min-height:94vh; display:flex; flex-direction:column;
    align-content:start; overflow:hidden; position:relative;
    border-bottom:2px solid rgba(255,255,255,.12);
  }
  /* Fixed custom cursor + label — activated by JS */
  .conv-cursor{
    position:fixed; width:10px; height:10px; background:#fff;
    border-radius:50%; pointer-events:none; z-index:9999;
    transform:translate(-50%,-50%); opacity:0;
    transition:width .2s,height .2s,opacity .15s;
    mix-blend-mode:difference;
  }
  .conv-cursor.active{ opacity:1; width:14px; height:14px; }
  .conv-sector-tag{
    position:fixed; pointer-events:none; z-index:9998;
    font-size:10px; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
    font-family:'OV Sage','Jost',sans-serif; color:rgba(255,255,255,.55);
    background:var(--ink); padding:4px 10px;
    border:1px solid rgba(255,255,255,.18); opacity:0;
    transition:opacity .15s; white-space:nowrap;
  }
  .conv-sector-tag.active{ opacity:1; }
  /* Header */
  .conv-roll-header{
    padding:52px 60px 0; display:flex; justify-content:space-between; align-items:flex-end;
    flex-shrink:0;
  }
  .conv-roll-eyebrow{
    font-size:10px; font-weight:700; letter-spacing:.16em; text-transform:uppercase;
    font-family:'OV Sage','Jost',sans-serif; color:rgba(255,255,255,.4); margin-bottom:10px;
  }
  .conv-roll-title{
    font-size:clamp(28px,3.2vw,44px); font-weight:400; line-height:1.15;
    letter-spacing:-.02em; font-family:'OV Sage','Jost',sans-serif; color:var(--paper);
  }
  .conv-roll-count{
    font-size:clamp(60px,8vw,120px); font-weight:300; line-height:1;
    letter-spacing:-.04em; font-family:'OV Sage','Jost',sans-serif;
    color:rgba(255,255,255,.08); padding-bottom:4px;
  }
  /* Rows */
  .conv-roll-rows{ flex:1; display:flex; flex-direction:column; justify-content:center; gap:0; padding:28px 0; }
  .conv-roll-row{ overflow:hidden; line-height:1; }
  .conv-roll-track{
    display:inline-flex; align-items:center; gap:0; white-space:nowrap;
    will-change:transform;
  }
  .conv-roll-row--l .conv-roll-track{ animation:croll-l 38s linear infinite; }
  .conv-roll-row--r .conv-roll-track{ animation:croll-r 44s linear infinite; }
  .conv-roll-row--l2 .conv-roll-track{ animation:croll-l 32s linear infinite; }
  @keyframes croll-l{ from{transform:translateX(0)} to{transform:translateX(-50%)} }
  @keyframes croll-r{ from{transform:translateX(-50%)} to{transform:translateX(0)} }
  /* Individual company names */
  .conv-co{
    font-size:clamp(48px,6.5vw,92px); font-weight:400; letter-spacing:-.03em;
    font-family:'OV Sage','Jost',sans-serif; color:rgba(255,255,255,.72);
    padding:0 32px; user-select:none;
    transition:color .22s, opacity .22s;
    display:inline-block;
  }
  .conv-sep{
    color:rgba(255,255,255,.18); font-size:clamp(14px,1.8vw,24px);
    padding:0 4px; display:inline-block; align-self:center;
  }
  /* Hover state — triggered on .conv-roll-section by JS */
  .conv-roll-section.cr-hovering .conv-co{ opacity:.14; color:rgba(255,255,255,.14); }
  .conv-roll-section.cr-hovering .conv-roll-track{ animation-play-state:paused; }
  .conv-roll-section.cr-hovering .conv-co.cr-active{
    opacity:1 !important; color:#fff !important;
    text-shadow:0 0 80px rgba(255,255,255,.35);
  }
  /* Footer note */
  .conv-roll-note{
    padding:0 60px 40px; font-size:11px; color:rgba(255,255,255,.28);
    font-family:'OV Sage','Jost',sans-serif; flex-shrink:0; letter-spacing:.02em;
  }

  /* Community, Past Events: bigger, clickable, 3-col / 2-row grid */
  #page-community .web-section.intro .section-inner{ padding-top:calc(var(--niv-inset) + var(--niv-fab-h) + 24px); }
  #page-community .intro .sec-title{ font-family:var(--f-serif); font-size:clamp(56px,8.2vw,128px); font-weight:500; line-height:1.04; white-space:nowrap; }
  #page-community .intro .comm-br{ display:none; }
  .events-grid{ grid-template-columns:repeat(3,1fr); gap:26px; }
  .event-card{ border:1.5px solid var(--greenDeep); border-radius:0; overflow:hidden; cursor:pointer; background:var(--paper); }
  .event-card:hover{ background:var(--greenDeep); }
  .event-card:hover .event-title{ color:var(--gold); }
  .event-card:hover .event-meta{ color:var(--paper); opacity:.8; }
  .event-card .kb-poster-ico{ width:46px; height:46px; opacity:.5; }
  .event-card .event-poster{
    aspect-ratio:4/3; background:var(--skel); border-bottom:1.5px solid var(--greenDeep);
    display:flex; align-items:center; justify-content:center; font-size:34px; color:var(--gray);
  }
  .event-card .event-info{ padding:22px; }
  .event-card .event-title{ font-size:20px; font-weight:400; font-family:'Inter',sans-serif; }
  .event-card .event-meta{ font-size:12.5px; color:var(--gray); font-family:'Inter',sans-serif; margin-top:8px; }

  /* testimonial card */
  .testi-card{border:1.5px solid var(--greenDeep); border-radius:0; padding:0; text-align:left; min-height:520px; display:flex; flex-direction:column; box-sizing:border-box; overflow:hidden; background:var(--paper);}
  .testi-carousel-wrap{ position:relative; min-height:560px; width:100%; }
  .testi-viewport{ overflow:hidden; width:100%; }
  .testi-track{ display:flex; gap:24px; transition:transform .5s cubic-bezier(.4,0,.2,1); }
  .testi-track .testi-card{ flex:0 0 40vw; }
  .testi-bleed{ margin-right:-28px; }
  @media(max-width:760px){ .testi-bleed{ margin-right:-18px; } }
  /* Video thumbnail extended into a portrait — founder photo fills it, face at
     the top so it stays clearly visible; play button overlays the centre. */
  .video-icon{ position:relative; width:100%; flex:1 1 auto; min-height:340px; background:var(--skel); border-bottom:1.5px solid var(--greenDeep); overflow:hidden; font-size:0; transition:background .2s ease; }
  .video-icon .founder-photo{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover !important; object-position:50% 18%; will-change:transform; }
  /* Hover: ONLY the image box background becomes conviction terracotta; the
     cut-out portrait itself and the name/description box are unchanged. */
  .testi-card:hover .video-icon{ background:var(--terra); border-bottom-color:var(--terra); }
  /* Parallax depth layers inside the image box: a blurred, enlarged copy of the
     photo sits behind (moves a lot) and the crisp figure in front (moves less),
     so a horizontal swipe reads as clear 3-layer depth. */
  .video-icon .founder-bg{ display:none !important; }
  .video-icon .founder-photo{ z-index:1; }
  .video-icon .founder-photo.is-contain{ object-fit:contain !important; object-position:center bottom !important; }
  .testi-meta{ position:relative; z-index:1; }
  /* Brand starburst (same as section-2 company cards), top-right, pops on hover */
  .testi-card .conv-burst{ position:absolute; top:22px; right:22px; width:86px; height:86px; overflow:visible; pointer-events:none; z-index:4; }
  .testi-card:hover .conv-burst-dot{ transform:scale(1); }
  .testi-card:hover .conv-burst-lines line{ transform:scale(1); }
  .hero-pair .testi-card:hover .conv-burst-dot,
  .hero-pair.hero-demo .conv-burst-dot{ transform:scale(1) !important; }
  .hero-pair .testi-card:hover .conv-burst-lines line,
  .hero-pair.hero-demo .conv-burst-lines line{ transform:scale(1) !important; }
  .testi-meta{ padding:24px 28px 30px; flex:0 0 auto; }
  .testi-name{ font-size:26px; font-weight:600; line-height:1.15; letter-spacing:-.01em; }
  .testi-role{ font-family:'Jost',sans-serif; font-size:17px; color:var(--ink); margin-top:8px; line-height:1.45; display:inline-block;
    background:linear-gradient(var(--gold),var(--gold)) no-repeat; background-position:0 0; background-size:0% 100%;
    box-decoration-break:clone; -webkit-box-decoration-break:clone; transition:background-size .5s cubic-bezier(.4,0,.2,1); }
  .testi-card:hover .testi-role{ background-size:100% 100%; color:var(--ink); }

/* ===== 20-home-heroes-offerings-popup.css ===== */
/* ===== 20-home-heroes-offerings-popup.css ===== */
/* ===== Heroes + quote paired cards (home section 2) ===== */
  .hero-rail{ overflow:visible; width:100%; padding-bottom:36px; }
  .hero-rail-track{ display:flex; gap:28px; transition:transform .45s cubic-bezier(.4,0,.2,1); will-change:transform; }
  /* founder card (wider) + quote card (narrower, vertical) snapped seamlessly into one rounded unit */
  .hero-pair{ flex:0 0 min(84vw,760px); display:flex; gap:0; align-items:stretch; box-sizing:border-box; border-radius:0; box-shadow:0 16px 42px -18px rgba(44,46,43,.20); }
  /* stop hover repaint flicker: keep both cards on stable composite layers, drop stale will-change */
  .hero-pair .testi-card, .hero-quote, .hero-pair .video-icon{ transform:translateZ(0); backface-visibility:hidden; -webkit-backface-visibility:hidden; }
  .hero-pair .video-icon .founder-photo{ will-change:auto; }
  .hero-pair .video-icon{ transition:none; }
  .hero-pair .testi-card:hover .video-icon{ background-color:var(--terra); }
  /* left founder card reuses .testi-card verbatim; wider, square right edge to snap */
  .hero-pair .testi-card{ flex:0 0 58%; min-height:540px; border:none; border-radius:0; }
  /* right quote card — narrower vertical column, flush against founder card */
  .hero-quote{ flex:1; min-width:0; position:relative; box-sizing:border-box;
    border:none; border-top-left-radius:0; border-bottom-left-radius:0;
    border-top-right-radius:24px; border-bottom-right-radius:24px; background:var(--paper);
    padding:38px 30px 34px; display:flex; flex-direction:column; overflow:hidden; }
  .hero-quote-text{ font-family:'Jost',sans-serif; font-weight:500;
    font-size:clamp(20px,2.1vw,34px); line-height:1.3; color:var(--ink);
    overflow-wrap:break-word; word-break:break-word; hyphens:auto; }
  /* hover: green fill, vibrant-gold outline, soft-gold text + arrow */
  .hero-quote:hover{ background:var(--greenDeep); }
  .hero-quote:hover .hero-quote-text{ color:var(--gold); }
  /* brand growth-arrow: square-fit layout — 5 dots + diagonal shaft, scales in from bottom-left on hover */
  .hero-pair .video-icon{ border-bottom:none !important; }
  .hero-arrow{ position:absolute; left:26px; right:auto; bottom:-6px; width:125px; height:125px; overflow:visible;
    transform:scale(0); transform-origin:left bottom; transition:transform .4s cubic-bezier(.16,1,.3,1); pointer-events:none; }
  .hero-quote:hover .hero-arrow{ transform:scale(1); }
  .hero-arrow line{ stroke:var(--greenDeep); stroke-width:2.5; stroke-linecap:round; }
  .hero-arrow circle{ fill:var(--greenDeep); }
  .hero-pair .testi-name{ font-size:32px; }
  .hero-pair .testi-role{ font-size:20px; margin-top:10px; }
  .hero-quote:hover .hero-arrow line{ stroke:var(--gold); }
  .hero-quote:hover .hero-arrow circle{ fill:var(--gold); }
  #homeConvWrapper .conviction-heading{ font-size:clamp(22px,2.3vw,32px) !important; line-height:1.2 !important; }
  /* heroes subrow: centered serif header with nav arrows on the right, vertically centered to the title */
  .hero-subrow{ display:flex; align-items:center; justify-content:center; position:relative; margin-bottom:36px; }
  .hero-section-header{ font-family:var(--f-serif); font-weight:400; color:var(--ink);
    font-size:clamp(30px,3.4vw,52px); line-height:1.15; text-align:center; }
  .hero-nav{ position:absolute !important; right:calc(var(--niv-inset) - 64px) !important; top:50%; bottom:auto !important; transform:translateY(-50%); display:flex; gap:12px; align-items:center; }
  .hero-nav .conv-arrow-circle{ border:1px solid var(--ink) !important; background:transparent; transition:border-color .18s ease; }
  .hero-nav .conv-arrow-circle svg{ width:26px; height:26px; }
  .hero-nav .conv-arrow-circle path{ stroke:var(--ink); transition:stroke .18s ease; }
  .hero-nav .conv-arrow-circle:hover{ border-color:var(--ink) !important; }
  .hero-nav .conv-arrow-circle:hover path{ stroke:var(--gold); }
  @media(max-width:760px){
    .hero-subrow{ flex-direction:column; gap:18px; margin-bottom:24px; }
    .hero-nav{ position:static; transform:none; }
  }
  /* section 3 — identity / conviction statement, large centered heading + centered founder card */
  .conv-statement-section{ display:flex; align-items:center; justify-content:center; }
  .conv-statement-inner{ display:flex; flex-direction:column; align-items:center; text-align:center; width:100%; max-width:1200px; margin:0 auto; }
  .conv-statement-inner .conviction-heading{
    font-family:var(--f-serif) !important; font-weight:400 !important; color:var(--ink) !important;
    font-size:clamp(40px,6vw,88px) !important; line-height:1.16 !important; max-width:none !important; margin:0 !important; }
  .conv-statement-inner .conv-founder-row{ display:flex; align-items:center; justify-content:center; gap:22px; margin-top:40px; }
  .conv-statement-inner .conv-founder-avatar img{ width:90px; height:90px; border-radius:50%; object-fit:cover; object-position:50% 20%; display:block; }
  .conv-statement-inner .conv-founder-meta{ text-align:left; }
  .conv-statement-inner .conv-founder-name{ font-family:'OV Sage','Jost',sans-serif; font-weight:600; font-size:25px; color:var(--ink); }
  .conv-statement-inner .conv-founder-role{ font-size:21px; color:var(--gray); margin-top:3px; }
  @media(max-width:760px){
    .conv-statement-inner .conviction-heading{ font-size:clamp(28px,8vw,44px) !important; }
    .conv-statement-inner .conv-founder-row{ margin-top:28px; gap:16px; }
    /* Name 20% smaller; avatar, role and gaps rebalanced to match. */
    .conv-statement-inner .conv-founder-name{ font-size:20px; }
    .conv-statement-inner .conv-founder-role{ font-size:17px; margin-top:2px; }
    .conv-statement-inner .conv-founder-avatar img{ width:72px; height:72px; }
  }
  /* tablet / narrow desktop */
  /* Desktop: the founder rail bleeds continuously to the true right edge of the
     canvas (like the backers/logos rails). The conv-viewport's 64px right
     padding was the gap that made the peek look cropped short of the edge — so
     the rail loses it and the header row carries the inset instead. */
  @media(min-width:901px){
    #homeConvWrapper.hh-plain-wrapper .conv-viewport{ padding-left:0 !important; padding-right:0 !important; }
    #homeConvWrapper.hh-plain-wrapper .hero-subrow{ padding-left:80px !important; padding-right:64px !important; box-sizing:border-box; }
    /* arrows: the viewport lost its right padding, so re-inset them to 64px */
    #homeConvWrapper.hh-plain-wrapper .hero-nav{ right:64px !important; }
    /* The rail now bleeds to BOTH canvas edges (like the backers rail). A leading
       ::before spacer keeps the first card resting at the 80px inset (28px gap +
       52px = 80), and the ::after keeps the last card 64px in at scroll end. */
    #homeConvWrapper.hh-plain-wrapper #heroRailArea .hero-rail-track::before{ content:''; flex:0 0 52px; align-self:stretch; order:-1; }
    #homeConvWrapper.hh-plain-wrapper #heroRailArea .hero-rail-track::after{ content:''; flex:0 0 36px; align-self:stretch; }
    /* Exactly the "Read the Kimbal story" arrows: SQUARE, 1.5px green hairline,
       transparent, thin (1.4) chevron; fills green with a gold chevron on hover. */
    #homeConvWrapper.hh-plain-wrapper .hero-nav .conv-arrow-circle{
      width:45px !important; height:45px !important; border:1.5px solid var(--greenDeep) !important;
      background:transparent !important; border-radius:0 !important; padding:0 !important;
      color:var(--greenDeep) !important;
      display:flex; align-items:center; justify-content:center; transition:background .18s ease; }
    #homeConvWrapper.hh-plain-wrapper .hero-nav .conv-arrow-circle svg{
      width:18px !important; height:18px !important; }
    #homeConvWrapper.hh-plain-wrapper .hero-nav .conv-arrow-circle svg *{
      stroke:var(--greenDeep) !important; stroke-width:2.4 !important; fill:none !important; }
    #homeConvWrapper.hh-plain-wrapper .hero-nav .conv-arrow-circle:hover{ background:var(--greenDeep) !important; }
    #homeConvWrapper.hh-plain-wrapper .hero-nav .conv-arrow-circle:hover svg *{ stroke:var(--gold) !important; }
  }
  /* Desktop: shrink pairs so the first two founders show fully and the third
     peeks ~12–15% at the right edge. Divisor ≈ 2.15 = 2 full + a slim peek. */
  @media(min-width:1025px){
    #homeConvWrapper.hh-plain-wrapper #heroRailArea .hero-pair{ flex:0 0 calc((100% - 72px) / 2.5) !important; }
    #homeConvWrapper.hh-plain-wrapper #heroRailArea .testi-card .conv-burst{ width:64px !important; height:64px !important; }
    #homeConvWrapper.hh-plain-wrapper #heroRailArea .hero-arrow{ width:88px !important; height:88px !important; }
    #homeConvWrapper.hh-plain-wrapper #heroRailArea .hero-quote-text{ font-size:clamp(17px,1.55vw,24px) !important; }
  }
  @media(max-width:1024px){
    .hero-pair{ flex:0 0 min(90vw,680px); }
    .hero-pair .testi-card{ flex:0 0 54%; min-height:480px; }
  }
  @media(max-width:760px){
    .hero-rail-track{ gap:16px; }
    .hero-pair{ flex:0 0 86vw; max-width:420px; flex-direction:column; gap:0; }
    /* founder image sits above; keep it compact so the whole pair fits one screen */
    .hero-pair .testi-card{ flex:0 0 auto; min-height:0; border-radius:0; border:none; }
    .hero-pair .video-icon{ aspect-ratio:4/3; height:auto !important; }
    .hero-pair .testi-name{ font-size:22px; }
    .hero-pair .testi-role{ font-size:14px; margin-top:6px; }
    .hero-quote{ border-radius:0; border-top-left-radius:0; border-top-right-radius:0; padding:22px 22px 26px; }
    .hero-quote-text{ font-size:clamp(18px,4.9vw,23px); line-height:1.34; }
    .hero-arrow{ width:74px; height:74px; left:20px; bottom:-4px; }
  }
  @media(max-width:430px){
    .hero-pair{ flex:0 0 90vw; }
    .hero-pair .testi-name{ font-size:20px; }
    .hero-quote{ padding:18px 18px 22px; }
    .hero-quote-text{ font-size:18px; }
    .hero-arrow{ width:62px; height:62px; }
  }

  /* logos / news */
  .logo-box{border:1.5px solid var(--greenDeep); border-radius:0; padding:14px 18px; font-size:12px; font-weight:300; text-align:center; background:var(--paper); display:flex; align-items:center; justify-content:center; min-height:56px;}
  .news-logo-grid .logo-box{ cursor:pointer; transition:background .12s, color .12s; padding:22px 24px; font-size:16px; font-weight:500; }
  .news-logo-grid .logo-box:hover{ background:var(--tint); }
  .news-logo-grid .logo-box.active{ background:var(--greenDeep); color:var(--paper); border-color:var(--greenDeep); }
  #know-articles .news-logo-grid .logo-box.active{ background:var(--blue); border-color:var(--blue); }
  #know-articles .news-logo-grid .logo-box{ border-color:var(--ink); color:var(--ink); }
  #know-articles .news-logo-grid .logo-box.active{ background:transparent; border-color:var(--blue); color:var(--blue); }
  .news-card{border:1.5px solid var(--greenDeep); border-radius:0; padding:26px; cursor:pointer; background:var(--paper); min-height:220px; display:flex; flex-direction:column; justify-content:space-between;}
  .news-title{ font-family:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif; font-size:clamp(17px,1.4vw,20px); font-weight:600; letter-spacing:-.01em; line-height:1.3; color:var(--ink); margin-top:14px; }
  .news-desc{ font-family:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif; font-size:14px; line-height:1.55; color:var(--gray); margin-top:10px; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
  .news-card:hover{background:var(--tint); border-color:var(--greenDeep);}
  .news-card:hover .news-title, .news-card:hover .news-desc, .news-card:hover .news-logo{ color:var(--greenDeep); }
  .news-card:hover .know-tag-news{ background:var(--greenDeep); }

  /* Unified Knowledge section (News & Research) */
  .know-tag{ position:absolute; bottom:16px; right:16px; top:auto; left:auto; font-size:10.5px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; padding:5px 11px; border-radius:0; z-index:2; font-family:'Jost',sans-serif; }
  .know-tag-news{ background:var(--ink); color:var(--paper); }
  /* Reserve a gutter so the absolutely-positioned badge never sits on top of the
     text line that shares its row. */
  #page-home .know-all-grid .know-feature .kb-info .meta,
  #page-home .know-all-grid .news-card .news-desc{ padding-right:104px; }
  .know-tag-research{ background:var(--ink); color:var(--paper); }
  .know-panel .kb-card{ position:relative; }
  .know-subscribe{ margin-top:36px; }

  .know-head{ display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:32px; margin-bottom:26px; }
  .know-head .sec-title{ color:var(--ink) !important; }
  .know-tabs{ display:flex; gap:12px; }
  .know-tabs .tab{ padding:13px 26px; font-size:14px; font-weight:600; border:1.5px solid var(--greenDeep); transition:background .12s, color .12s; }
  .know-tabs .tab:not(.active):hover{ background:var(--tint); }
  .know-tabs .tab-articles.active{ background:var(--blue); border-color:var(--blue); }
  .know-panel{ display:none; }
  .know-panel.active{ display:block; }
  .know-all-grid{ display:grid; grid-template-columns:1fr 1fr; gap:24px; align-items:stretch; }
  /* Homepage: Research feature card on the LEFT, the two news cards on the RIGHT */
  #page-home .know-all-grid .know-feature{ order:1; }
  #page-home .know-all-grid .know-all-news{ order:2; }
  /* The article column must size to its own content: without this the grid
     stretches it to the (now taller) news column and .kb-poster{flex:1 1 0}
     absorbs every leftover pixel, ballooning the thumbnail. */
  #page-home #know-all .know-all-grid{ align-items:start !important; }
  #page-home #know-all .know-feature{ height:auto !important; }
  #page-home #know-all .know-feature .kb-poster{ aspect-ratio:16/9 !important; flex:0 0 auto !important; height:auto !important; }
/* Desktop & tablet: the NEWS column stretches to the full grid row (i.e. the
   article component's top and bottom edges) and its cards share that height, so
   the last news card always ends level with the last article card. The article
   column keeps its own content height — untouched. */
@media(min-width:761px){
  #page-home #know-all .know-feature{ align-self:start !important; }
  #page-home #know-all .know-all-news{ align-self:stretch !important; height:100% !important; }
  #page-home #know-all .know-all-news > .news-card{ flex:1 1 0 !important; min-height:0 !important; }
  /* The cards are compressed to fit that height, so cap the description at two
     lines — otherwise a third line overflows and gets sliced by overflow:hidden. */
  #page-home #know-all .know-all-news .news-desc{ -webkit-line-clamp:2 !important; }
}
  .know-all-news{ display:flex; flex-direction:column; gap:20px; }
  .news-card-row{ display:grid; grid-template-columns:1fr 1fr; gap:20px; }
  .know-feature{ height:100%; display:flex; flex-direction:column; gap:20px; }
  .know-feature .kb-card{ display:flex; flex-direction:column; }
  .know-feature .kb-card:first-child{ height:100%; }
  .know-feature .kb-poster{ flex:1; aspect-ratio:auto; font-size:56px; }
  .know-feature .kb-info{ padding:28px; }
  .know-feature .title{ font-size:22px; }
  .news-grid{ display:grid; grid-template-columns:1fr 1fr; gap:20px; }

  /* research cards, bigger, aligned 4-col */
  .research-grid{ grid-template-columns:repeat(4,1fr); gap:26px; }
  .research-card{ border:1.5px solid var(--greenDeep); border-radius:0; padding:28px; background:var(--paper); display:flex; flex-direction:column; min-height:260px; }
  .research-card .skel-chip-row{ display:flex; gap:8px; margin-bottom:18px; }
  .research-card .card-title{ font-size:20px; font-weight:500; margin-bottom:12px; }
  .research-card .research-desc{ font-family:'Jost',sans-serif; font-size:14.5px; line-height:1.55; color:var(--gray); margin-bottom:18px; }
  .research-card .card-divider{ border-top:1.5px solid var(--ink); margin-top:auto; margin-bottom:16px; }
  .news-logo{ line-height:1; margin-bottom:16px; color:var(--ink); font-size:clamp(26px,2.6vw,34px); font-weight:800; letter-spacing:-.01em; }
  .news-logo.et-serif{ font-family:var(--f-serif); font-weight:700; }
  .news-logo.mc-sans{ font-family:'Jost',sans-serif; font-weight:800; text-transform:lowercase; }
  .news-logo.entr-sans{ font-family:'Jost',sans-serif; font-weight:800; }
  .news-logo.etnow-sans{ font-family:'Jost',sans-serif; font-weight:800; letter-spacing:.03em; }
  /* Mastheads added with the FashionNetwork, Indian Startup News and Mint
     coverage. Set in the site's own faces, not the publications' — the card
     names the outlet, it does not reproduce its logo. */
  .news-logo.fn-sans{ font-family:'Jost',sans-serif; font-weight:700; letter-spacing:-.01em; }
  .news-logo.isn-sans{ font-family:'Jost',sans-serif; font-weight:800; font-size:clamp(22px,2.1vw,28px); }
  .news-logo.mint-serif{ font-family:var(--f-serif); font-weight:700; text-transform:lowercase; }
  .news-source{font-size:10.5px; font-weight:500; color:var(--gray); font-family:'OV Sage','Jost',sans-serif; margin-top:8px;}
  /* growth-arrow motif (same brand mark as founder quote cards), scaled down, bottom-right */
  .news-card{ position:relative; overflow:hidden; }
  .news-arrow{ position:absolute; left:24px; bottom:-1px; width:30px; height:30px; overflow:visible;
    transform:scale(0); transform-origin:left bottom; transition:transform .4s cubic-bezier(.16,1,.3,1); pointer-events:none; }
  .news-card:hover .news-arrow{ transform:scale(1); }
  .news-arrow line{ stroke:var(--greenDeep); stroke-width:2.5; stroke-linecap:round; }
  .news-arrow circle{ fill:var(--greenDeep); }
  @media(max-width:760px){
    .news-arrow{ width:30px; height:30px; left:12px; }
    .news-logo{ font-size:24px; margin-bottom:12px; }
  }

  /* social icons row */
  .social-row{display:flex; gap:10px; margin-top:10px;}
  /* Brand Feel tweak: elevated card presentation (additive, off by default) */
  html[data-card-style="elevated"] .card, html[data-card-style="elevated"] .stat-card,
  html[data-card-style="elevated"] .kb-card, html[data-card-style="elevated"] .event-card,
  html[data-card-style="elevated"] .testi-card, html[data-card-style="elevated"] .news-card,
  html[data-card-style="elevated"] .research-card, html[data-card-style="elevated"] .ways-tab,
  html[data-card-style="elevated"] .aif-works-card{
    box-shadow:0 14px 34px -16px rgba(44,46,43,.28);
    transition:transform .25s cubic-bezier(.4,0,.2,1), box-shadow .25s cubic-bezier(.4,0,.2,1);
  }
  html[data-card-style="elevated"] .card:hover, html[data-card-style="elevated"] .stat-card:hover,
  html[data-card-style="elevated"] .kb-card:hover, html[data-card-style="elevated"] .event-card:hover,
  html[data-card-style="elevated"] .testi-card:hover, html[data-card-style="elevated"] .news-card:hover,
  html[data-card-style="elevated"] .research-card:hover{
    transform:translateY(-6px);
    box-shadow:0 22px 44px -16px rgba(44,46,43,.34);
  }
  .social-icon{width:48px; height:48px; border:1.5px solid var(--greenDeep); border-radius:0; display:flex; align-items:center; justify-content:center; cursor:pointer; font-size:14px; font-weight:500; background:transparent; color:var(--greenDeep); transition:background .22s ease, color .22s ease;}
  .social-icon:hover{background:var(--greenDeep); color:var(--paper);}

  /* contact info card */
  .info-card{border:2px solid var(--ink); padding:18px;}
  .info-row{margin-bottom:14px;}
  .info-row .field-label{font-size:10px; font-weight:500; text-transform:uppercase; letter-spacing:.08em; color:var(--gray); font-family:'OV Sage','Jost',sans-serif; margin-bottom:6px;}

  /* ===== Equity Baskets page ===== */
  #eqbApproachSection{ background:var(--paper); }
  /* bg color is driven inline by scroll progress (JS); class only flips card/title colours */
  #eqbApproachSection .bk-card{ height:34vh; background:var(--paper); border:1.5px solid var(--greenDeep); transition:background-color .7s ease, border-color .7s ease; will-change:transform; transform:translateZ(0); backface-visibility:hidden; }
  #eqbApproachSection.eqb-green .bk-card{ background:var(--greenDeep); border-color:var(--gold); }
  #eqbApproachSection .bk-card-title{ font-family:'OV Sage','Jost',sans-serif !important; color:var(--greenDeep); transition:color .7s ease; }
  #eqbApproachSection.eqb-green .bk-card-title{ color:var(--gold); }
  #eqbApproachSection .bedrock-title{ font-family:'OV Sage','Jost',sans-serif; color:var(--greenDeep); transition:color .7s ease; }
  #eqbApproachSection.eqb-green .bedrock-title{ color:var(--gold); }
  #eqbApproachSection .bk-card:hover{ border-color:#F0C257; transition:none; }
  #eqbApproachSection .bk-card:hover .bk-card-title{ color:#F0C257; }
  #eqbApproachSection .bk-card:hover .bk-card-left::after{ background:#F0C257; }
  #eqbApproachSection .bk-card:hover .bk-dot{ background:#F0C257 !important; }
  #eqbApproachSection .bk-card-body{ color:var(--greenDeep); opacity:.85; font-size:clamp(18px,1.85vw,25px); line-height:1.45; margin-top:12px; transition:color .7s ease; }
  #eqbApproachSection.eqb-green .bk-card-body{ color:var(--gold); opacity:1; }
  #eqbApproachSection .bk-card-right{ padding-right:72px; position:relative; }
  #eqbApproachSection .bk-caption, #eqbApproachSection .bk-caption.bk-caption-sm{ font-family:'OV Sage','Jost',sans-serif !important; font-weight:400; font-size:clamp(24px,2.9vw,40px); line-height:1.05; color:var(--greenDeep); transition:color .7s ease; }
  #eqbApproachSection.eqb-green .bk-caption{ color:var(--gold); }
  #eqbApproachSection .bk-card-left::after{ background:var(--greenDeep); transition:background-color .7s ease; }
  #eqbApproachSection.eqb-green .bk-card-left::after{ background:var(--gold); }
  #eqbApproachSection .bk-dot{ background:var(--greenDeep) !important; border-radius:50% !important; transition:background-color .7s ease; }
  #eqbApproachSection.eqb-green .bk-dot{ background:var(--gold) !important; }
  #eqbApproachSection .bk-burst{ position:absolute; top:24px; right:28px; width:74px; height:74px; overflow:visible; pointer-events:none; z-index:4; }
  #eqbApproachSection .bk-burst line{ stroke:#F0C257; stroke-width:3; stroke-linecap:round; transform:scale(0); transform-origin:center; transition:transform .5s cubic-bezier(.16,1,.3,1); }
  #eqbApproachSection .bk-burst circle{ fill:#F0C257; transform:scale(0); transform-origin:center; transition:transform .4s cubic-bezier(.16,1,.3,1); }
  #eqbApproachSection .bk-card:hover .bk-burst line,
  #eqbApproachSection .bk-card:hover .bk-burst circle{ transform:scale(1); }
  #page-equity-baskets .eqb-hero .section-inner{ padding-top:calc(var(--niv-inset) + var(--niv-fab-h) + 40px); }
  #page-equity-baskets .eqb-hero-title{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(38px,5vw,76px); font-weight:500; line-height:1.08; letter-spacing:-.02em; margin:14px 0 20px; max-width:14ch; }
  #page-equity-baskets .eqb-hero-sub{ font-family:'Inter',sans-serif; font-size:clamp(17px,1.7vw,22px); line-height:1.55; color:#5a5040; max-width:640px; }
  #page-equity-baskets .eqb-sec-title{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(30px,3.6vw,52px); font-weight:500; line-height:1.12; margin:0 0 24px; }
  #page-equity-baskets .eqb-lead{ font-family:'Inter',sans-serif; font-size:clamp(17px,1.5vw,21px); line-height:1.65; color:var(--ink); max-width:820px; margin:0 0 44px; }
  #page-equity-baskets .eqb-bridge{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(22px,2.4vw,34px); font-weight:400; line-height:1.3; color:var(--ink); max-width:760px; }
  #page-equity-baskets .eqb-basket-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:26px; }
  #page-equity-baskets .eqb-card{ display:flex; flex-direction:column; min-height:346px; padding:27px 26px; background:var(--greenDeep); border:1.5px solid var(--gold) !important; position:relative; z-index:2; cursor:pointer; transition:border-color .3s ease; }
  #page-equity-baskets .eqb-card:hover,
  #page-equity-baskets .eqb-card:active{ border-color:#F0C157 !important; }
  #page-equity-baskets .eqb-card .offer-eyebrow{ font-size:11px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; font-family:'OV Sage','Jost',sans-serif; margin-bottom:14px; color:var(--gold) !important; opacity:.8; }
  #page-equity-baskets .eqb-card .card-title{ font-family:'OV Sage','Jost',sans-serif !important; font-size:clamp(21px,2vw,28px); line-height:1.12; margin-bottom:12px; color:var(--gold) !important; padding-right:60px; }
  #page-equity-baskets .eqb-card .offer-desc{ font-size:15px; line-height:1.55; color:var(--gold) !important; opacity:.9; }
  #page-equity-baskets .eqb-card .stat-label{ color:var(--gold) !important; opacity:.8; }
  #page-equity-baskets .eqb-card .stat-value{ color:var(--gold) !important; }
  #page-equity-baskets .eqb-card:hover .stat-label,
  #page-equity-baskets .eqb-card:hover .stat-value,
  #page-equity-baskets .eqb-card:active .stat-label,
  #page-equity-baskets .eqb-card:active .stat-value{ color:#F0C157 !important; }
  #page-equity-baskets .eqb-card .card-divider{ border-top-color:var(--gold) !important; opacity:.5; }
  #page-equity-baskets .eqb-card .stat-row{ margin-top:auto; }
  #page-equity-baskets .eqb-card .btn{ background:var(--greenDeep) !important; border-color:var(--gold) !important; color:var(--gold) !important; }
  #page-equity-baskets .eqb-card .btn:hover{ background:#F0C157 !important; color:var(--greenDeep) !important; border-color:#F0C157 !important; }
  @media(max-width:900px){ #page-equity-baskets .eqb-basket-grid{ grid-template-columns:1fr 1fr; } }
  @media(max-width:600px){ #page-equity-baskets .eqb-basket-grid{ grid-template-columns:1fr; } }
  #page-equity-baskets .eqb-what-grid{ grid-template-columns:repeat(4,1fr); margin-top:0 0 44px; }
  #eqbSignalsSection{ background:var(--paper); }
  @media(max-width:760px){
  #eqbBasketSection .ways-guides{ display:none !important; }
}
@media(max-width:760px){
  #eqbSignalsSection .section-inner{ padding-left:16px !important; padding-right:16px !important; }
  #eqbSignalsSection .eqb-signals-grid{ grid-template-columns:1fr !important; gap:18px !important; }
  #eqbSignalsSection .eqb-signals-grid .kb-card{ width:100% !important; }
  #eqbSignalsSection #eqbSignalsTitle{ font-size:clamp(28px,7.6vw,38px) !important; line-height:1.2 !important; }
  #eqbSignalsSection .kb-poster{ aspect-ratio:16/10 !important; }
  #eqbSignalsSection .eqb-signals-grid ~ div{ text-align:center !important; }
  #eqbSignalsSection .btn{ display:block !important; width:100% !important; box-sizing:border-box; text-align:center; }
}
#eqbSignalsSection .section-inner{ max-width:none; padding-left:var(--hero-text-inset); padding-right:var(--hero-text-inset); }
  #eqbSignalsSection .eqb-signals-grid{ grid-template-columns:repeat(2,1fr); max-width:none; }
  /* Research blue, matching the knowledge-hub and AIF research rails. */
  #eqbSignalsSection .kb-card:hover{ border-color:var(--blue); }
  #eqbSignalsSection .kb-card:hover .know-tag-research{ background:var(--blue); }
  #eqbSignalsSection .kb-card.auto-on{ border-color:var(--blue); }
  #eqbSignalsSection .kb-card.auto-on .know-tag-research{ background:var(--blue); }
  #eqbSignalsSection .kb-card{ position:relative; }
  #page-equity-baskets .eqb-what-grid .glance-cell{ min-height:280px; }
  @media(max-width:900px){ #page-equity-baskets .eqb-what-grid{ grid-template-columns:repeat(2,1fr); } }
  @media(max-width:600px){ #page-equity-baskets .eqb-what-grid{ grid-template-columns:1fr; } }
  /* Contact page, landscape cards matching form input width */
  #page-equity-baskets .web-section.intro .section-inner{ padding-top:calc(var(--niv-inset) + var(--niv-fab-h) + 24px); }
  #page-equity-baskets .intro .sec-title, #page-sambhav .intro .sec-title{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(34px,4.4vw,60px); font-weight:500; line-height:1.12; }
  #page-contact .web-section .section-inner{ padding-top:calc(var(--niv-inset) + var(--niv-fab-h) + 24px); padding-left:var(--niv-inset); padding-right:var(--niv-inset); max-width:none; box-sizing:border-box; }
  #page-contact .event-gallery-sidebar .sec-title{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(34px,4.2vw,58px); font-weight:500; line-height:1.12; }
  /* Contact — two-column layout */
  /* The two columns are plain blocks — .contact-grid owns the columns and the
     measured `gap: normal` on .contact-right is inert, so its children space
     themselves with margins. Declared anyway, for two reasons: it records that
     "block, not flex" is deliberate (a flex column here would collapse the
     margin spacing), and Webflow's whtml builder silently DROPS a class that
     has no style behind it, so an undeclared .contact-lead would not survive
     the build at all. */
  #page-contact .contact-lead{ display:block; }
  #page-contact .contact-right{ display:block; }
  .contact-lead{ display:block; }
  .contact-right{ display:block; }
  #page-contact .contact-grid{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(40px,4.5vw,72px); align-items:start; }
  #page-contact .contact-headline{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(38px,4.6vw,64px); font-weight:500; line-height:1.08; color:var(--ink); margin:10px 0 20px; letter-spacing:-.01em; }
  #page-contact .contact-sub{ font-family:'Inter',sans-serif; font-size:clamp(16px,1.4vw,19px); line-height:1.6; color:var(--gray); max-width:520px; margin:0 0 44px; }
  #page-contact .contact-trust{ display:grid; grid-template-columns:repeat(4,1fr); gap:26px; margin-bottom:52px; }
  #page-contact .trust-num{ font-family:'OV Sage','Jost',sans-serif; font-variant-numeric:lining-nums; font-feature-settings:'lnum' 1; font-size:clamp(32px,3vw,44px); font-weight:500; color:var(--greenDeep); line-height:1; margin-bottom:8px; }
  #page-contact .trust-item svg{ width:26px; height:26px; color:var(--greenDeep); margin-bottom:14px; }
  #page-contact .trust-title{ font-family:'OV Sage','Jost',sans-serif; font-size:16px; font-weight:500; color:var(--ink); line-height:1.2; margin-bottom:8px; }
  #page-contact .trust-body{ font-family:'Inter',sans-serif; font-size:13px; line-height:1.45; color:var(--gray); }
  #page-contact .contact-teams{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:16px 0 40px; }
  #page-contact .team-card{ border:1.5px solid var(--greenDeep); padding:20px 18px; display:flex; flex-direction:column; align-items:flex-start; text-align:left; transition:background-color .2s ease; }
  #page-contact .team-card:hover{ background:var(--greenDeep); }
  #page-contact .team-card:hover .team-name{ color:var(--gold); }
  #page-contact .team-card:hover .team-desc, #page-contact .team-card:hover .team-email, #page-contact .team-card:hover .team-hours{ color:var(--paper); }
  #page-contact .team-name{ font-family:'OV Sage','Jost',sans-serif; font-size:20px; font-weight:500; color:var(--ink); margin-bottom:10px; }
  #page-contact .team-desc{ font-family:'Inter',sans-serif; font-size:12.5px; line-height:1.45; color:var(--ink); margin-bottom:16px; }
  #page-contact .team-email{ font-family:'Inter',sans-serif; font-size:13px; color:var(--ink); text-decoration:underline; text-underline-offset:2px; margin-bottom:14px; }
  #page-contact .team-hours{ font-family:'Inter',sans-serif; font-size:14.5px; color:var(--ink); margin-top:auto; }
  #page-contact .contact-banner{ display:flex; align-items:center; gap:20px; background:var(--tint); border:1.5px solid color-mix(in srgb, var(--gold) 55%, transparent); padding:22px 26px; }
  #page-contact .cb-mark{ width:36px; height:36px; flex:none; }
  #page-contact .cb-mark line{ stroke:var(--greenDeep); stroke-width:5; stroke-linecap:round; }
  #page-contact .cb-mark circle{ fill:var(--greenDeep); }
  #page-contact .cb-title{ font-family:'OV Sage','Jost',sans-serif; font-size:18px; font-weight:500; color:var(--greenDeep); margin-bottom:5px; }
  #page-contact .cb-body{ font-family:'Inter',sans-serif; font-size:14px; line-height:1.5; color:var(--ink); opacity:.85; }
  /* right column */
  #page-contact .contact-form-card{ border:1.5px solid color-mix(in srgb, var(--greenDeep) 30%, transparent); background:color-mix(in srgb, var(--tint) 55%, var(--paper)); padding:clamp(26px,3vw,40px); }
  #page-contact .cf-title{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(26px,2.4vw,34px); font-weight:500; color:var(--ink); margin-bottom:8px; }
  #page-contact .cf-sub{ font-family:'Inter',sans-serif; font-size:14px; color:var(--gray); margin-bottom:26px; }
  #page-contact .contact-form-grid{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
  #page-contact .contact-form-card .dummy-input{ font-family:'Inter',sans-serif; font-size:14px; border:1.5px solid color-mix(in srgb, var(--greenDeep) 26%, transparent); background:var(--paper); padding:15px 16px; }
  #page-contact .contact-form-card .dummy-input:focus{ outline:none; border-color:var(--greenDeep); }
  #page-contact .cf-select{ appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236b6b5f' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 16px center; cursor:pointer; }
  #page-contact .cf-message{ min-height:150px; resize:vertical; }
  #page-contact .cf-secure{ display:flex; align-items:center; gap:8px; font-family:'Inter',sans-serif; font-size:13px; color:var(--gray); margin:4px 0 22px; }
  #page-contact .cf-secure svg{ width:15px; height:15px; flex:none; }
  #page-contact .cf-submit{ width:100%; justify-content:center; background:var(--greenDeep); border-color:var(--greenDeep); color:var(--paper); padding:17px; font-size:15px; position:relative; overflow:hidden; }
  #page-contact .cf-submit > span{ position:relative; z-index:1; transition:color .3s ease; }
  #page-contact .cf-submit::before{ content:''; position:absolute; inset:0; background:#F0C157; clip-path:circle(0% at 34% 50%); transition:clip-path .52s cubic-bezier(.22,.75,.3,1); z-index:0; pointer-events:none; }
  #page-contact .cf-submit:hover::before{ clip-path:circle(230% at 34% 50%); }
  #page-contact .cf-submit:hover{ background:var(--greenDeep); border-color:#F0C157; }
  #page-contact .cf-submit:hover > span{ color:var(--greenDeep); }
  #page-contact .contact-call-card{ display:flex; align-items:center; justify-content:space-between; gap:18px; border:1.5px solid color-mix(in srgb, var(--greenDeep) 22%, transparent); padding:22px 26px; margin-top:16px; }
  #page-contact .cc-title{ font-family:'OV Sage','Jost',sans-serif; font-size:18px; font-weight:500; color:var(--ink); margin-bottom:4px; }
  #page-contact .cc-body{ font-family:'Inter',sans-serif; font-size:13.5px; color:var(--gray); }
  #page-contact .cc-btn{ flex:none; display:inline-flex; align-items:center; gap:9px; background:transparent; border-color:var(--greenDeep); color:var(--greenDeep); padding:13px 20px; font-size:14px; }
  #page-contact .cc-btn svg{ width:17px; height:17px; }
  #page-contact .cc-btn:hover{ background:var(--greenDeep); color:var(--paper); }
  #page-contact .contact-reach{ display:flex; flex-wrap:wrap; align-items:center; gap:12px 26px; margin-top:28px; font-family:'Inter',sans-serif; }
  #page-contact .cr-label{ font-size:13.5px; color:var(--gray); }
  #page-contact .cr-item{ display:inline-flex; align-items:center; gap:9px; font-size:14px; color:var(--ink); }
  #page-contact .cr-item svg{ width:17px; height:17px; color:var(--greenDeep); }
  @media(max-width:980px){ #page-contact .contact-grid{ grid-template-columns:1fr; } #page-contact .contact-trust{ grid-template-columns:1fr 1fr; } }
  @media(max-width:560px){ #page-contact .contact-trust, #page-contact .contact-teams, #page-contact .contact-form-grid{ grid-template-columns:1fr; } #page-contact .contact-call-card{ flex-direction:column; align-items:flex-start; } }
  @media(max-width:760px){
    #page-contact .web-section .section-inner{ padding-left:16px !important; padding-right:16px !important; }
    #page-contact .contact-grid{ gap:40px; }
    #page-contact .contact-headline{ font-size:clamp(32px,9vw,46px) !important; margin:6px 0 16px; }
    #page-contact .contact-sub{ font-size:clamp(15px,4.2vw,18px) !important; max-width:100% !important; margin-bottom:32px; }
    #page-contact .contact-trust{ grid-template-columns:1fr 1fr !important; gap:18px; margin-bottom:40px; }
    #page-contact .trust-num{ font-size:clamp(28px,8vw,38px) !important; }
    #page-contact .contact-teams{ grid-template-columns:1fr !important; }
    #page-contact .contact-form-card{ padding:24px 20px !important; }
    #page-contact .cf-title{ font-size:clamp(24px,6.6vw,30px) !important; }
    #page-contact .contact-form-grid{ grid-template-columns:1fr !important; }
    #page-contact .cf-message{ min-height:130px; }
    #page-contact .contact-call-card{ flex-direction:column; align-items:stretch; text-align:left; gap:14px; padding:22px 20px; }
    #page-contact .cc-btn{ width:100%; justify-content:center; }
    #page-contact .contact-banner{ padding:20px; }
    #page-contact .contact-reach{ gap:10px 20px; }
  }
  .contact-card{
    border:1.5px solid var(--greenDeep); border-radius:0; padding:18px 22px; width:100%; margin-bottom:14px;
    display:flex; align-items:center; gap:32px; transition:none;
  }
  .contact-card:hover{ background:var(--greenDeep); }
  .contact-card:hover .c-field .field-label{ color:var(--paper); opacity:.7; }
  .contact-card:hover .c-field, .contact-card:hover svg{ color:var(--paper); }
  .contact-card .c-field{ flex:1; font-family:'Inter',sans-serif; font-size:14px; color:var(--ink); }
  .contact-card .c-field .field-label{ font-size:10px; font-weight:500; text-transform:uppercase; letter-spacing:.08em; color:var(--gray); font-family:'Inter',sans-serif; margin-bottom:5px; }
  .contact-card .c-field .skel{ height:13px; margin-bottom:0; }

  .dummy-input{border:2px solid var(--ink); padding:12px 14px; font-size:13px; width:100%; margin-bottom:14px; font-family:'OV Sage','Jost',sans-serif;}
  textarea.dummy-input{resize:vertical; min-height:90px;}

  .newsletter-box{border:2px solid var(--ink); padding:28px; display:flex; flex-wrap:wrap; gap:12px; align-items:center;}
  .newsletter-box .dummy-input{flex:1; min-width:220px; margin-bottom:0;}

  /* ===== OUR OFFERINGS, AIF / Equity Baskets tabs ===== */
  .offerings-section{ min-height:92vh; display:flex; flex-direction:column; justify-content:center; }

  .offering-cats{ display:flex; border:2px solid var(--ink); margin-bottom:32px; width:100%; }
  .offering-cat{
    flex:1; padding:26px 30px; background:var(--tint); border:none; font-family:'OV Sage','Jost',sans-serif;
    text-align:left; cursor:pointer;
  }
  .offering-cat + .offering-cat{ border-left:2px solid var(--ink); }
  .offering-cat .cat-title{ font-size:25px; font-weight:500; margin-bottom:34px; }
  .offering-cat .cat-price{ font-size:13px; font-weight:500; color:var(--gray); text-align:right; font-family:'OV Sage','Jost',sans-serif; }
  .offering-cat.active{ background:var(--ink); }
  .offering-cat.active .cat-title{ color:var(--paper); }
  .offering-cat.active .cat-price{ color:var(--paper); opacity:.75; }

  /* Fixed-height swap container, prevents any layout shift on tab change */
  .offer-groups-wrap{ position:relative; min-height:500px; width:100%; }
  .offer-group{ position:absolute; inset:0; visibility:hidden; opacity:0; pointer-events:none; transition:opacity .2s ease; }
  .offer-group.active{ visibility:visible; opacity:1; pointer-events:auto; }

  .offer-card{ min-height:340px; padding:32px 30px; }
  .offer-eyebrow{ font-size:11px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--gray); font-family:'OV Sage','Jost',sans-serif; margin-bottom:18px; }
  .offer-card .card-title{ font-size:clamp(21px,1.9vw,28px) !important; margin-bottom:14px; line-height:1.15; }
  .offer-desc{ font-size:clamp(15px,1.3vw,18px); line-height:1.6; color:var(--ink); font-family:'Jost',sans-serif; }

  /* AIF, static, no motion, full-width flush with buttons */
  .offer-static-grid{ display:flex; gap:3%; width:100%; }
  .offer-static-grid .offer-card{ flex:0 0 48.5%; }

  /* Equity Baskets, manual carousel, arrows only */
  .offerings-nav{ display:flex; justify-content:flex-end; gap:12px; margin-bottom:22px; }
  .offer-static-grid-nav{ display:none; }
  /* .carousel-arrow styled by canonical arrow rule */

  .offerings-viewport{ overflow:hidden; width:100%; }
  .offerings-track{ display:flex; gap:3%; transition:transform .6s ease; }
  .offerings-track .offer-card{ flex:0 0 45%; }

  /* ===== POPUP ===== */
  /* Above the desktop nav (129) and the logo (130) — a dialog is topmost. */
  .overlay{ display:none; position:fixed; inset:0; background:rgba(44,40,30,.5); z-index:400; align-items:center; justify-content:center; padding:20px; }
  .overlay.show{display:flex;}
  .popup{ background:var(--paper); border:3px solid var(--ink); max-width:400px; width:100%; padding:26px; }
  .popup-label{font-size:10px; font-weight:500; letter-spacing:.1em; text-transform:uppercase; color:var(--gray); margin-bottom:12px;}
  .popup-text{font-size:15px; font-weight:500; line-height:1.65; margin-bottom:20px;}
  .popup .btn{width:100%; text-align:center; margin-left:0;}

  .float-whatsapp{
    position:fixed; bottom:64px; right:64px; z-index:40;
    width:56px; height:56px; background:var(--ink); color:var(--paper);
    display:flex; align-items:center; justify-content:center; font-size:24px; font-weight:500;
    cursor:pointer; border:2px solid var(--ink); overflow:hidden;
    border-radius:50%!important;
    transition:border-radius .35s cubic-bezier(.4,0,.2,1), background .22s, color .22s;
  }
  .float-whatsapp:hover{background:var(--paper); color:var(--ink); border-radius:50% !important;}
  .fw-dot{
    position:absolute; width:10px; height:10px; border-radius:50% !important;
    background:var(--gold);
    transform:scale(1); opacity:1;
    transition:transform .4s cubic-bezier(.32,1.15,.4,1), opacity .3s ease;
  }
  .float-whatsapp:hover .fw-dot{ transform:scale(5.6); opacity:0; }
  .fw-icon{
    position:absolute; width:26px; height:26px;
    opacity:0; transform:scale(.4);
    transition:opacity .3s ease .12s, transform .35s cubic-bezier(.34,1.56,.64,1) .12s;
  }
  .float-whatsapp:hover .fw-icon{ opacity:1; transform:scale(1); }

  .mobile-toggle{display:none;}

  @media(max-width:760px){
    .nav-links{display:none;}
    .nav-links.mobile-open{
      display:flex; flex-direction:column; position:absolute; top:58px; left:0; right:0;
      background:var(--paper); border:2px solid var(--ink); padding:12px; gap:12px; z-index:60;
    }
    .mobile-toggle{display:block; border:2px solid var(--ink); padding:7px 12px; font-weight:500; cursor:pointer; background:var(--paper);}
    .web-section{padding:48px 18px;}
    .web-section.hero{min-height:60vh;}
    .web-section.intro{min-height:42vh;}
    .skel.big{height:26px;}
    .sec-title{font-size:24px;}
    .hero-msg{font-size:28px;}
    .float-whatsapp{width:46px; height:46px; bottom:16px; right:16px; font-size:19px;}
    .fw-icon{ width:22px; height:22px; }
    .float-whatsapp:hover .fw-dot{ transform:scale(4.6); }

    .offerings-section{min-height:auto;}
    .offering-cats{flex-direction:column;}
    .offering-cat + .offering-cat{border-left:none; border-top:2px solid var(--ink);}
    .offering-cat .cat-title{margin-bottom:20px;}
    .offer-card{min-height:260px;}
    .offer-static-grid{gap:4%;}
    .offer-static-grid .offer-card{flex:0 0 100%;}
    .offerings-track{gap:4%;}
    .offerings-track .offer-card{flex:0 0 86%;}

    .strategy-baskets-grid{grid-template-columns:1fr; gap:18px;}
    .strategy-baskets-grid .stat-card{padding:24px; min-height:220px;}
    .aif-funds-grid{grid-template-columns:1fr; gap:18px;}
    .aif-funds-grid .stat-card{padding:24px; min-height:220px;}

    .kb-layout{flex-direction:column; gap:24px;}
    .kb-header-top{flex-direction:column; gap:14px; align-items:stretch;}
    .kb-main-title{font-size:clamp(32px,7.5vw,52px); white-space:normal;}
    .kb-header-top .kb-cat{flex:1 1 auto;}
    .kb-tab-row{grid-template-columns:1fr 1fr; gap:10px;}
    .kb-cat{padding:13px 14px; font-size:14px;}
    .kb-grid{grid-template-columns:1fr;}
    .kb-card-stack .kb-poster{aspect-ratio:16/9; font-size:32px;}
    .kb-card-stack .kb-info{padding:16px;}
    .kb-card-stack .title{font-size:16px;}
    .event-gallery-sidebar{flex:0 0 auto; width:100%; position:static;}

    .testi-track .testi-card{flex:0 0 86%;}
    .testi-carousel-wrap{min-height:auto;}
    .testi-card{min-height:340px; padding:32px 28px;}
    .research-grid{grid-template-columns:1fr; gap:18px;}
    .research-card{padding:22px; min-height:200px;}
    .know-head{flex-direction:column; align-items:stretch;}
    .know-tabs{width:100%;}
    .know-tabs .tab{flex:1;}
    .know-all-grid{grid-template-columns:1fr;}
    .news-grid{grid-template-columns:1fr;}
    .news-card-row{grid-template-columns:1fr;}

    .events-grid{grid-template-columns:1fr; gap:18px;}

    .hero-belief{font-size:24px;}
    .hero-exist{font-size:18px;}
    .conv-card{flex:0 0 85vw;}
    .scutt-layout{flex-direction:column;}
    .scutt-sidebar{position:static; width:100%; flex:0 0 auto;}
    .so-far-grid{grid-template-columns:1fr;}
    .so-far-card + .so-far-card{border-left:none; border-top:2px solid var(--ink);}
    .philosophy-layout{flex-direction:column;}
    .phil-list{width:100%; flex-direction:row; flex-wrap:wrap; gap:8px;}
    .phil-item{font-size:18px;}
    .subscribe-box{flex-direction:column; gap:24px; padding:28px;}
    .subscribe-right{flex:0 0 auto; width:100%;}
    .offer-static-grid{grid-template-columns:1fr;}
    .conv-card{flex:0 0 86vw !important; padding:32px 26px !important;}
    .conviction-heading{font-size:26px !important;}
    .ways-tab-sep{display:none;}
    .bk-card-right{display:none;}

    .conviction-scroll-zone{ height:600vh; }
    .conv-card{ flex:0 0 85vw; min-height:50vh; }
    .philosophy-layout{ flex-direction:column; gap:32px; }
    .phil-list{ flex:0 0 auto; width:100%; flex-direction:row; flex-wrap:wrap; gap:8px; }
    .phil-item{ font-size:16px; }
    .phil-circle-wrap{ width:100%; }
    .scutt-sidebar{ flex:0 0 auto; width:100%; position:static; }
    .so-far-section .grid{ grid-template-columns:1fr !important; }
    .so-far-card + .so-far-card{ border-left:none !important; border-top:2px solid var(--ink); }
    .bk-card-inner{ flex-direction:column; height:auto; }
    .bk-card-left{ border-right:none; }
    .bk-card-left::after{ left:0; right:0; top:auto; bottom:0; width:auto !important; height:2px; }
    .bk-card-right{ flex:0 0 auto; align-items:flex-start !important; padding:16px 20px !important; }
    .event-card .event-info{padding:16px;}
    .event-card .event-title{font-size:16px;}

    /* Ways to Invest — compact so title + tabs + one card fit without scrolling */
    .ways-section{ padding-top:44px; padding-bottom:44px; }
    :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .section-inner{ padding-left:16px !important; padding-right:16px !important; }
    .ways-title{ font-size:clamp(30px,8.5vw,44px) !important; margin-bottom:22px; line-height:1.12; }
    :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-title{ font-size:clamp(32px,8.6vw,46px) !important; text-align:left !important; }
    /* 2 lines on mobile: "Alternative" / "Investment Fund" — collapse the 2nd break */
    :is(#home-ways,#aif-ways) .ways-title .ways-title-br2{ display:none; }
    :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-wide-card{ grid-template-columns:1fr !important; gap:24px !important; padding:26px 22px !important; }
    :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-wide-left{ padding-top:0 !important; }
    :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-wide-right{ grid-template-columns:1fr 1fr !important; }
    .ways-tabs{ flex-direction:column; gap:0; margin-bottom:12px; }
    .ways-tab{ flex:0 0 auto !important; padding:22px 18px !important; min-width:auto; flex-direction:column !important; align-items:flex-start; justify-content:flex-start; gap:6px; }
    .ways-tab + .ways-tab{ border-left:1.5px solid var(--greenDeep); border-top:none; margin-top:-1.5px; }
    .ways-tab-title{ font-size:22px !important; margin-bottom:0 !important; white-space:nowrap; }
    .ways-tab-sub{ font-size:14px !important; text-align:left; white-space:nowrap; }
    .ways-burst{ top:12px; right:12px; width:26px; height:26px; }
    .offerings-nav{ margin-bottom:10px; }
    .offer-static-grid-nav{ display:flex !important; justify-content:flex-end; gap:10px; margin-bottom:10px; }
    .offer-card{ min-height:min(48vh,360px) !important; padding:24px 20px !important; }
    .offer-eyebrow{ font-size:10px; margin-bottom:10px; }
    .offer-card .card-title{ font-size:21px !important; margin-bottom:12px; }
    .offer-desc{ font-size:15px !important; line-height:1.6 !important; display:-webkit-box; -webkit-line-clamp:6; -webkit-box-orient:vertical; overflow:hidden; }
    .offer-static-grid{ display:flex !important; flex-wrap:nowrap; overflow-x:auto; scroll-snap-type:x mandatory; gap:12px; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
    .offer-static-grid::-webkit-scrollbar{ display:none; }
    .offer-static-grid .offer-card{ flex:0 0 90% !important; scroll-snap-align:center; }
    .offerings-track .offer-card{ flex:0 0 90%; }
    .offer-card .card-divider{ margin-bottom:auto; margin-top:16px; padding-top:16px; }
    .offer-card .btn{ height:48px; padding:0 22px; font-size:16px; margin-top:0; }
  }

  /* ═══ Mobile refinements (titles, carousels, single-view sections) ═══ */
  @media(max-width:760px){
    /* Section titles brought up to match Section-2's heading scale */
    #page-home .aif-works-heading{ font-size:clamp(32px,9.5vw,44px) !important; line-height:1.12 !important; }
    #page-home #bedrockSection .bedrock-title{ font-size:clamp(32px,9.5vw,44px) !important; line-height:1.12 !important; }
    #page-home .scutt-heading{ font-size:clamp(32px,9.5vw,44px) !important; line-height:1.14 !important; }
    #page-home .signals-head .sec-title,
    #page-home .sec-title{ font-size:clamp(30px,8.5vw,40px) !important; line-height:1.14; }

    /* Section-2 businesses-backed cards → interview-card feel:
       narrower basis so the next card peeks, taller/vertical, title on 2 lines */
    #homeConvWrapper.hh-plain-wrapper .conv-card{
      flex:0 0 80% !important; min-height:clamp(420px,64vh,520px) !important; padding:34px 30px !important;
      scroll-snap-align:center; justify-content:flex-start !important;
    }
    #homeConvWrapper.hh-plain-wrapper .conv-cards-area{ overflow-x:auto !important; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
    #homeConvWrapper.hh-plain-wrapper .conv-cards-area::-webkit-scrollbar{ display:none; }
    #homeConvWrapper.hh-plain-wrapper .conv-track{ gap:16px !important; }
    #homeConvWrapper.hh-plain-wrapper .conv-year{ font-size:15px !important; margin-bottom:20px !important; }
    #homeConvWrapper.hh-plain-wrapper .conv-card-title{ font-size:30px !important; line-height:1.18 !important; margin-bottom:20px !important; }
    #homeConvWrapper.hh-plain-wrapper .conv-body{ font-size:17px !important; line-height:1.6 !important; }

    /* Discover Emerging Signals → horizontal rail w/ arrows */
    .signals-head{ margin-bottom:18px; }
    .signals-arrows{ display:flex !important; }
    .signals-grid{ display:flex !important; grid-template-columns:none; overflow-x:auto; scroll-snap-type:x mandatory; gap:16px; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
    .signals-grid::-webkit-scrollbar{ display:none; }
    .signals-grid .kb-card{ flex:0 0 78%; scroll-snap-align:center; }
    .signals-grid .kb-poster{ aspect-ratio:16/10; }

    /* Subscribe — fit whole box in one view, portrait on mobile */
    .subscribe-section-half{ padding-top:30px; padding-bottom:30px; }
    .subscribe-box{ flex-direction:column; gap:16px; padding:24px 22px; }
    .subscribe-title{ font-size:clamp(26px,7vw,32px) !important; margin:0 0 8px; }
    .subscribe-sub{ font-size:16px; }
    .subscribe-right{ gap:10px; }
    .subscribe-right .dummy-input{ height:48px; }
    .subscribe-right .btn{ height:48px; }
    .subscribe-note{ font-size:11.5px; }
  }

/* ===== 21-home-hero-story.css ===== */
/* ===== 21-home-hero-story.css ===== */
/* ===== HERO, new belief text ===== */
  .hero-belief{ font-size:clamp(22px,3.5vw,46px); line-height:1.3; max-width:700px; margin-bottom:24px; }
  .hero-belief em{ font-style:italic; }
  .hero-u{ }
  .hero-exist{ font-size:clamp(20px,2.8vw,38px); font-weight:500; margin-bottom:40px; }

  /* ===== CONVICTION STORY ===== */
  .conviction-section{ background:var(--paper); }
  .conviction-intro-inner{ padding-bottom:0; }
  .conviction-heading{ font-size:clamp(18px,2.5vw,32px); max-width:620px; margin:8px 0 0; }
  .conviction-scroll-zone{ height:500vh; position:relative; }
  .conviction-sticky-wrap{
    position:sticky; bottom:0; height:100vh;
    display:flex; align-items:flex-end; overflow:hidden;
    border-top:2px solid var(--ink);
  }
  .conviction-track{
    display:flex; gap:0;
    transition:transform .15s linear;
    will-change:transform;
    align-items:stretch;
  }
  .conv-card{
    flex:0 0 45vw; min-height:55vh; padding:32px 36px 32px;
    border-right:2px solid var(--ink); background:var(--paper);
    display:flex; flex-direction:column; justify-content:space-between;
  }
  .conv-card-last{ border-right:none; }
  .conv-year{ font-size:11px; font-weight:500; font-family:'OV Sage','Jost',sans-serif; color:var(--gray); text-transform:uppercase; letter-spacing:.08em; margin-bottom:16px; }
  .conv-card-title{ font-size:clamp(18px,2vw,26px); font-weight:500; margin-bottom:20px; }
  .conv-body{ font-size:15px; line-height:1.6; flex:1; }
  .conv-valuation{ font-size:13px; font-weight:500; font-family:'OV Sage','Jost',sans-serif; margin-top:24px; padding-top:16px; border-top:1.5px solid var(--ink); }

  /* ===== SCUTTLEBUTT ===== */
  .scutt-section{ }
  .scutt-sidebar{
    flex:0 0 320px; position:sticky; top:80px; align-self:flex-start; height:fit-content;
  }
  .scutt-heading{ font-size:clamp(18px,2.2vw,28px); line-height:1.35; margin-top:8px; }

  /* ===== SO FAR ===== */
  .so-far-section{ }
  .so-far-card{
    border:2px solid var(--ink); padding:28px; display:flex; flex-direction:column;
    justify-content:space-between; min-height:320px;
  }
  .so-far-title{ font-size:clamp(16px,2vw,24px); line-height:1.3; }
  .so-far-img{
    margin-top:32px; background:var(--skel); border:1.5px solid var(--ink);
    flex:1; min-height:120px;
  }

  /* ===== WAYS TO INVEST ===== */
  .ways-section{ }
  .offering-cats button.offering-cat:focus{ outline:none; }

  /* ══ HERO ══════════════════════════════════════════════════════════════════ */
  .hero-inner{ display:flex; flex-direction:column; justify-content:space-between; min-height:calc(80vh - 120px); }
  .hero-top{ flex:1; display:flex; align-items:center; }
  .hero-bottom{ padding-top:32px; }
  .hero-belief{ font-size:clamp(26px,4vw,56px); line-height:1.25; max-width:800px; margin:0; }
  .hero-belief em{ font-style:italic; }
  .hero-u{ }
  .hero-exist{ font-size:clamp(20px,2.8vw,40px); margin:0; font-style:italic; }

  /* ══ HOME HERO — two cards: text left, scroll-scrubbed image sequence right ══ */
  .home-hero-track{ position:relative; height:100vh; }
  .home-hero{
    position:sticky; top:0; height:100vh; overflow:hidden;
    background:#9c4a24;
  }
  .hero-cards{
    position:absolute; inset:0; display:block;
    padding:0; box-sizing:border-box;
  }
  .hero-fill{ position:absolute; inset:0; z-index:0; pointer-events:none; }
  .hero-fill-a{ background:#b8531f; }
  .hero-fill-b{ background:#561D09; opacity:0; animation:heroFillFade 1.4s ease both; }
  @keyframes heroFillFade{ 0%,50%{ opacity:0; } 100%{ opacity:1; } }
  @media(prefers-reduced-motion:reduce){ .hero-fill-b{ animation:none; opacity:1; } }
  /* Give the hero's SVG its own compositor layer — the same thing the page
     heroes get for free by being a div with a background-image (they carry
     will-change:transform too). Masked SVG *content* cannot be layerised in
     WebKit, so without this the 1600px photo has no cached texture and every
     repaint in the hero — dots pulsing, the element system drawing, the
     highlight bars — re-rasterises it through both masks. Promoting the SVG
     root caches that raster, so only changes INSIDE the SVG re-render it. */
  .hero-bg-svg{ position:absolute; inset:0; z-index:0; width:100%; height:100%; display:block;
    will-change:transform; }
  /* above the photo layer, below the hero content (z-index 2) — the same
     stacking the dots had from DOM order inside the photo's SVG */
  .hero-dots-layer{ z-index:1; pointer-events:none; }
  .hero-bg-fade{ display:none; }
  #heroZoom{ transform-box:view-box; transform-origin:1290px 600px; opacity:0; animation:heroTreeIn 1.7s cubic-bezier(.5,0,.2,1) both; }
  #heroZoom.zoom-done{ animation:none !important; opacity:1; }
  #heroRevealC{ animation:heroRevealGrow 1.4s cubic-bezier(.5,0,.2,1) both; }
  #heroRevealC.reveal-done{ animation:none; transform:scale(1.55); transition:transform .4s ease-out; }

  .hero-fill-b{ animation:heroFillFade 1.4s ease-in both; }
  @keyframes heroTreeIn{ from{ opacity:0; scale:1.22; } to{ opacity:1; scale:1; } }
  @keyframes heroRevealGrow{ from{ transform:scale(0); } to{ transform:scale(1.55); } }
  @keyframes heroRevealGrowM{ from{ transform:scale(0); } to{ transform:scale(0.8); } }
  @media(prefers-reduced-motion:reduce){ #heroZoom{ opacity:1; animation:none; } #heroRevealC{ animation:none; transform:none; } }
  .hero-dots-svg circle{ fill:#F0C257; opacity:0; filter:drop-shadow(0 0 5px rgba(240,194,87,.4)); }
  /* Dots trigger on their own, right after the highlight settles — separate
     from the element system, which fires later once the card morph is done. */
  .home-hero.intro-dots .hero-dots-svg circle{ animation:htdotPulse var(--dur,3s) ease-in-out var(--dl,0s) infinite; }
  /* While scrolling, the dots HOLD instead of speeding up. Their pulse is an
     infinite opacity animation inside the mask, and in WebKit every frame of it
     re-rasterises the 1600px photo through two nested masks — a continuous cost
     that lands exactly when smoothness matters most. Chrome elides that work;
     Safari does not. The class is toggled once per scroll gesture, not per
     frame, so pausing costs nothing itself. Resumes 500ms after you stop. */
  .home-hero .hero-dots-svg.dots-scrolling circle{ animation-play-state:paused !important; }
  .home-hero .hero-dots-svg.dots-scrub circle{ animation:none !important; transition:opacity .08s linear; }
  @keyframes htdotPulse{ 0%,100%{opacity:.3;} 50%{opacity:1;} }
  @media(prefers-reduced-motion:reduce){ .home-hero.intro .hero-dots-svg circle{ animation:none; opacity:.6; } }
  .hero-card-left,.hero-card-right{
    border-radius:0; overflow:visible; position:relative;
  }
  .hero-card-left{
    position:absolute; inset:0; background:transparent; padding:6vh 0 0;
    display:flex; flex-direction:column; justify-content:center;
    border:none; box-sizing:border-box; z-index:2;
  }
  /* ── Constraint-based corner guide system (see brief) ─────────────────────
     All coordinates are computed in JS from live element rects so the diagonal
     always terminates at the bordered exist-box's bottom-left corner, and the
     guides re-derive their length/angle at every viewport size. */
  .hero-guides{ position:absolute; inset:0; width:100%; height:100%; pointer-events:none; overflow:visible; z-index:1; }
  .hero-guides line{ stroke:#F0C257; stroke-width:1.4; transition:stroke .5s ease; }
  .hero-guides #hgBox{ fill:none; stroke:none; }
  .hero-guides #hgNode{ fill:#F0C257; stroke:none; transition:fill .5s ease; }
  .hero-text-block{ position:relative; z-index:2; margin-left:0; padding-left:var(--hero-text-inset); padding-right:40px; }
  /* Hide the hero text + guide system until fonts are loaded (JS adds .fonts-in
     on document.fonts.ready) so the intro line animation runs on final metrics
     instead of mid-font-swap. Fallback: if JS never runs, stay visible. */
  .home-hero.js-fonts-gate .hero-text-block,
  .home-hero.js-fonts-gate .hero-guides{ opacity:0; }
  .home-hero.fonts-in .hero-text-block,
  .home-hero.fonts-in .hero-guides{ opacity:1; transition:opacity .45s ease; }
  /* Choreographed intro — states driven by JS classes; every state's end value
     equals the resting design, so removing nothing changes nothing. */
  /* Anti-flash: both cards stay hidden for the first instant so the resting
     layout never paints before the choreography freezes it. Pure-CSS fallback:
     the 0s keyframe simply flips them visible after 1.2s if JS never runs. */
  .home-hero .hero-card-left, .home-hero .hero-card-right{ animation:heroHold 0s linear 1.2s both; }
  .home-hero.intro .hero-card-left, .home-hero.intro .hero-card-right,
  .home-hero.fonts-in .hero-card-left, .home-hero.fonts-in .hero-card-right{ animation:none; opacity:1; }
  @keyframes heroHold{ from{ opacity:0; } to{ opacity:1; } }
  .hero-belief .hero-br-m{ display:none !important; }
  .and-m{ display:none !important; }
  .home-hero .hero-belief .hero-line{ white-space:nowrap; }
  .home-hero .hero-belief{ transform-origin:left top; }
  .home-hero.intro .hero-word{ display:inline-block; opacity:0; }
  .home-hero.intro.intro-lines .hero-word{ opacity:1;
    animation:heroWordBlink .38s cubic-bezier(.22,.8,.28,1) backwards;
    animation-delay:calc(var(--wi, 0) * 170ms); }
  @keyframes heroWordBlink{ 0%{ opacity:0; transform:translateY(22px); } 100%{ opacity:1; transform:translateY(0); } }
  /* The title sits directly over the hero's masked SVG. Masked SVG content
     cannot be cached in WebKit, so a repaint ANYWHERE over it re-renders the
     1600px photo through both masks — which is why these transform/opacity
     animations (cheap everywhere else on the site) judder only here. Promoting
     the animating text to its own compositor layer keeps its frames off that
     surface entirely. Applied only while the intro runs, then released: a
     permanent layer per word would eat the phone's layer budget. */
  .home-hero.intro.intro-lines .hero-word,
  .home-hero.intro.intro-lines .hero-lean,
  .home-hero.intro.intro-lines .hero-belief .hero-u::before,
  .home-hero.intro.intro-lines .hero-belief .hero-word::before{ will-change:transform, opacity; }
  .home-hero.intro-words-done .hero-word,
  .home-hero.intro-words-done .hero-lean,
  .home-hero.intro-words-done .hero-belief .hero-u::before,
  .home-hero.intro-words-done .hero-belief .hero-word::before{ will-change:auto; }
  .home-hero.intro-words-done .hero-word{ animation:none !important; opacity:1 !important; transform:none !important; }
  .conv-word-reveal .cwr-word{ display:inline-block; opacity:0; transform:translateY(24px); }
  #hhQuoteHeading .cwr-word, #convStatementHeading .cwr-word, #stratQuote2 .cwr-word, #peQuoteHeading .cwr-word, #aifWhyHeading .cwr-word, #dvCloser .cwr-word, #eqbQuote .cwr-word, #kbTitleReveal .cwr-word, #csTitleReveal .cwr-word, #eqbSignalsTitle .cwr-word{ transform:none !important; transition:none !important; }
  #hhQuoteHeading .cwr-word.cwr-blink, #convStatementHeading .cwr-word.cwr-blink, #stratQuote2 .cwr-word.cwr-blink, #peQuoteHeading .cwr-word.cwr-blink, #aifWhyHeading .cwr-word.cwr-blink, #dvCloser .cwr-word.cwr-blink, #eqbQuote .cwr-word.cwr-blink, #kbTitleReveal .cwr-word.cwr-blink, #csTitleReveal .cwr-word.cwr-blink, #eqbSignalsTitle .cwr-word.cwr-blink{ animation:cwrWordBlink .55s ease-out both; }
  @keyframes cwrWordBlink{ 0%{ opacity:0; color:#014CAE; } 32%{ opacity:1; color:#014CAE; } 58%{ color:#133767; } 80%{ color:var(--greenDeep); } 100%{ opacity:1; color:var(--ink); } }
  #convStatementHeading .cwr-endchar{ opacity:0; }
  .cwr-br-m{ display:none; }
  #convStatementHeading .cwr-dot{ display:inline-block; width:15px; height:15px; border-radius:50% !important; background:var(--terra); vertical-align:baseline; margin-left:1px; opacity:0; }
  #convStatementHeading .cwr-dot.cwr-dot-cycle{ animation:cwrDotCycle 3s steps(1,end) infinite; }
  @keyframes cwrDotCycle{ 0%{ background:var(--terra); } 25%{ background:var(--greenDeep); } 50%{ background:var(--gold); } 75%{ background:var(--blue); } 100%{ background:var(--terra); } }
  .conv-word-reveal.cwr-in-view .cwr-word{ opacity:1; transform:translateY(0);
    transition:opacity .5s ease, transform .55s cubic-bezier(.22,.8,.28,1);
    transition-delay:calc(var(--wi, 0) * 70ms); }
  .home-hero.intro .hero-exist{ opacity:0; transform:translateY(18px); }
  .home-hero.intro.intro-box .hero-exist{ opacity:1; transform:translateY(0);
    transition:opacity .5s ease, transform .55s cubic-bezier(.22,.8,.28,1); }
  .home-hero.intro .hero-guides{ opacity:0; }
  .home-hero.intro.intro-guides .hero-guides{ opacity:1; transition:opacity .35s ease; }
  .home-hero.intro .hero-guides #hgBox{ opacity:0; }
  .home-hero.intro.intro-box .hero-guides #hgBox{ opacity:1; transition:opacity .45s ease .1s; }
  /* Closing line: the bordered outline is drawn as ONE continuous SVG path
     (boolean union of the per-line boxes) in JS — so 1 line = a rectangle,
     2 lines = a single stepped outline with no overlapping/internal strokes. */
  .hero-exist-box{ display:inline; }
  .hero-exist-burst{ position:absolute; top:0; left:0; width:52px; height:52px; overflow:visible; pointer-events:none; z-index:3; transform:translate(-50%,-50%); }
  .hero-exist-burst .conv-burst-dot{ fill:#F0C257; transform-box:fill-box; transform-origin:center; transform:scale(0); transition:transform .4s cubic-bezier(.22,.9,.32,1); }
  .hero-exist-burst .conv-burst-lines line{ stroke:#F0C257; stroke-width:2.4; stroke-linecap:round; transform-box:fill-box; transform-origin:center; transform:scale(0); transition:transform .4s cubic-bezier(.22,.9,.32,1); }
  .home-hero.intro-box .hero-exist-burst .conv-burst-dot{ transform:scale(1); transition-delay:.55s; }
  .home-hero.intro-box .hero-exist-burst .conv-burst-lines line{ transform:scale(1); transition-delay:.63s; }
  @media(max-width:760px){ .hero-exist-burst{ width:38px; height:38px; } }
  .home-hero .hero-exist{ line-height:1.42; }
  /* Landing beat: the instant the diagonal reaches the box (.intro-box), the
     left card flips to the brand green and every text/line/mark on it turns
     soft gold — the box outline included. */
  .home-hero.intro-box .hero-card-left{ background:transparent; }
  .home-hero.intro-box .hero-belief,
  .home-hero.intro-box .hero-exist{ color:#F0C257; }
  .home-hero.intro-box .hero-guides line{ stroke:#F0C257; }
  .home-hero.intro-box .hero-guides #hgNode{ fill:#F0C257; }
  .home-hero.intro-box .hero-u{ background:var(--greenDeep); color:#F0C257; }
  .home-hero.intro-box .hero-belief .hero-u{ background-image:linear-gradient(var(--greenDeep),var(--greenDeep)); color:#F0C257; }
  .home-hero.intro-box .hero-exist-box{ color:#F0C257; }
  .hero-card-right{
    flex:0.82; background:#141308; min-width:0;
  }
  .hero-tree-video{
    position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block;
  }
  .hero-light-sweep{ display:none; }

  /* left-card decorative marks */

  /* text */
  .home-hero .hero-belief,.home-hero .hero-exist{ color:#F0C257; font-family:'OV Sage','Jost',sans-serif; }
  .home-hero .hero-belief{ font-size:clamp(26px,3vw,44px); line-height:1.32; max-width:560px; margin:0 0 clamp(20px,4vh,46px); }
  .home-hero .hero-u{
    background:var(--greenDeep); color:#F0C257; text-decoration:none; padding:2px 6px; border-radius:0;
    box-decoration-break:clone; -webkit-box-decoration-break:clone;
  }
  /* Sequential highlight reveal on load: "great businesses" sweeps in first,
     then "remarkable people" — instead of both appearing highlighted at once. */
  /* The bar is a pseudo-element swept with transform:scaleX, NOT a
     background-size animation. background-size is a PAINT property: every frame
     repaints the text box, and because this text sits over the hero's masked
     SVG, WebKit re-renders the masked photo along with it. transform composites.
     Geometry is identical — inset:0 is the same padding box background-size
     filled, and scaleX(0->1) from the left edge is the same wipe. */
  .home-hero .hero-belief .hero-u{
    position:relative; color:#F0C257;
    background-image:none; background-color:transparent;
  }
  .home-hero .hero-belief .hero-u::before{
    content:''; position:absolute; inset:0; z-index:-1;
    background:var(--greenDeep); transform:scaleX(0); transform-origin:left center;
  }
  .home-hero.intro-hl .hero-belief .hero-u::before{ animation:heroBarX .42s ease-out forwards; animation-delay:.5s; }
  .home-hero.intro-hl .hero-belief .hero-line:nth-of-type(3) .hero-u::before{ animation-delay:.7s; }
  .home-hero.intro.intro-lines .hero-belief .hero-line:last-child .hero-u::before{
    animation:heroBarX .42s ease-out both 900ms !important; }
  @keyframes heroBarX{ to{ transform:scaleX(1); } }
  @keyframes heroUReveal{ to{ background-size:100% 100%; } }
  /* Subtle scroll-down cue, bottom-center of the hero video card */
  .hero-scroll-hint{
    position:absolute; left:50%; bottom:32px; transform:translateX(-50%);
    display:flex; flex-direction:column; align-items:center; gap:6px;
    color:var(--paper); opacity:.5; pointer-events:none; z-index:2;
    font-family:'OV Sage','Jost',sans-serif; font-size:11px; font-weight:500;
    letter-spacing:.16em; text-transform:uppercase;
  }
  .hero-scroll-arrow{ width:15px; height:15px; animation:heroScrollBob 2.4s ease-in-out infinite; }
  @keyframes heroScrollBob{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(5px); } }
  /* ══ Hero stat boxes — dot→outline-card morph (same engine as "companies we've
     backed"), overlapping stagger, plays once the hero lands green (.intro-box) ══ */
  .home-hero .hero-stats{ display:flex; gap:clamp(12px,1vw,20px); margin-top:clamp(22px,3.4vh,46px); max-width:640px; }
  .home-hero .hero-stat{ flex:1 1 0; min-width:0; height:clamp(118px,15vh,164px); display:flex; align-items:center; justify-content:center; }
  .home-hero .hero-stat-card{ position:relative; width:74px; height:74px; border-radius:50%; background:#F0C257; border:1.4px solid #F0C257; overflow:hidden; opacity:0; transform:scale(0);
    display:flex; flex-direction:column; align-items:flex-start; justify-content:flex-end;
    transition:transform .42s cubic-bezier(.34,1.56,.64,1), opacity .34s ease, width .6s cubic-bezier(.16,1,.3,1), height .6s cubic-bezier(.16,1,.3,1), border-radius .6s cubic-bezier(.16,1,.3,1), background .5s ease, border-color .5s ease; }
  .home-hero.intro-box .hero-stat-card{ opacity:1; transform:scale(1); width:100%; height:100%; border-radius:0; background:transparent; border-color:#F0C257; }
  .home-hero.intro-box .hero-stat:nth-child(1) .hero-stat-card{ transition-delay:.33s,.33s,1.18s,1.18s,1.18s,1.33s,1.33s; }
  .home-hero.intro-box .hero-stat:nth-child(2) .hero-stat-card{ transition-delay:.55s,.55s,1.4s,1.4s,1.4s,1.55s,1.55s; }
  .home-hero.intro-box .hero-stat:nth-child(3) .hero-stat-card{ transition-delay:.77s,.77s,1.62s,1.62s,1.62s,1.77s,1.77s; }
  .home-hero .hero-stat-content{ opacity:0; padding:0 clamp(12px,1vw,18px) clamp(11px,1.2vh,17px); transition:opacity .4s ease; }
  .home-hero.intro-box .hero-stat-content{ opacity:1; }
  .home-hero.intro-box .hero-stat:nth-child(1) .hero-stat-content{ transition-delay:1.45s; }
  .home-hero.intro-box .hero-stat:nth-child(2) .hero-stat-content{ transition-delay:1.67s; }
  .home-hero.intro-box .hero-stat:nth-child(3) .hero-stat-content{ transition-delay:1.89s; }
  .home-hero .hero-stat-num{ font-family:'OV Sage','Jost',sans-serif; font-weight:400; font-size:clamp(38px,2.9vw,52px); line-height:1; color:#F0C257; }
  .home-hero .hero-stat-label .stat-br-m{ display:none; }
  .home-hero .hero-stat-label{ font-family:'OV Sage','Jost',sans-serif; font-weight:400; font-size:clamp(16px,1.25vw,21px); line-height:1.16; color:#F0C257; margin-top:8px; }
  /* Tablet: desktop type was too large for the narrower cards, so labels wrapped
     and got sliced by the card's overflow. Scale type/padding to the viewport and
     let the card grow to fit its content. */
  /* Wider tablets keep the desktop's constrained 640px stat row — the expanded,
     full-width treatment only kicks in below 901px, which is where the hero
     title wraps to five lines. */
  @media(min-width:901px) and (max-width:1024px){
    .home-hero .hero-stats{ max-width:640px; gap:clamp(12px,1vw,20px); }
    .home-hero .hero-stat{ height:clamp(118px,15vh,164px); }
  }
  @media(min-width:761px) and (max-width:900px){
    .home-hero .hero-stats{ max-width:none; gap:clamp(10px,1.4vw,16px); }
    .home-hero .hero-stat{ height:clamp(126px,15vh,158px); }
    .home-hero .hero-stat-content{ padding:0 clamp(10px,1.4vw,16px) clamp(10px,1.3vw,15px); }
    .home-hero .hero-stat-num{ font-size:clamp(30px,3.8vw,44px); }
    .home-hero .hero-stat-label{ font-size:clamp(13px,1.6vw,17px); margin-top:5px; overflow-wrap:break-word; }
  }
  @media(prefers-reduced-motion:reduce){
    .home-hero .hero-stat-card{ width:100%; height:100%; border-radius:0; background:transparent; border-color:#F0C257; transition:none; }
    .home-hero .hero-stat-content{ opacity:1; transition:none; }
  }
  .home-hero .hero-exist{ font-size:clamp(26px,3vw,44px); line-height:1.32; margin:0; font-style:normal; font-weight:400; }

  @media(max-width:900px){
    /* Single full-bleed hero (tree SVG + overlaid text). Text block clears the
       fixed logo/menu band and stays left-bound to --hero-text-inset. */
    .home-hero-track{ height:100vh; }
    .hero-card-left{ padding:calc(var(--niv-inset) + var(--niv-fab-h) + 40px) var(--hero-text-inset) 48px; justify-content:center; }
    .hero-text-block{ padding-left:0; padding-right:24px; }
    .hero-mark-plus{ display:none; }
    /* darken the tree slightly behind the text for contrast on smaller screens */
    .home-hero .hero-cards::after{ content:''; position:absolute; inset:0; z-index:1;
      background:linear-gradient(180deg, rgba(86,29,9,.28) 0%, rgba(86,29,9,0) 42%); pointer-events:none; }
    .home-hero .hero-belief{ font-size:clamp(24px,5.4vw,44px) !important; line-height:1.28 !important; margin-bottom:clamp(16px,3vh,32px) !important; max-width:none !important; }
    .home-hero .hero-exist{ font-size:clamp(26px,6vw,48px) !important; line-height:1.22 !important; }
  }
  @media(max-width:760px){
    /* Mobile: heading sits toward the bottom and breaks into 6 lines; tree shifts
       left and scales up so its canopy fills behind the taller text block. */
    .hero-belief .hero-br-m{ display:block !important; }
    .hero-belief .hero-br-d{ display:none !important; }
    .home-hero .hero-belief .hero-line{ white-space:normal; }
    .and-d{ display:none !important; }
    .and-m{ display:inline-block !important; }
    .hero-card-left{ justify-content:flex-end; padding-bottom:calc(env(safe-area-inset-bottom, 0px) + 56px); }
    .home-hero .hero-bg-svg{ transform:none; z-index:auto; }
    /* Fade the photo's hard bottom crop into the flat brown fill. Sits in the
       background layer (between the image and the content) purely by DOM order —
       no z-index on the content is touched, so text and stat cards stay above. */
    .home-hero .hero-bg-fade{ display:block; position:absolute; left:0; right:0; bottom:0; height:34%;
      background:linear-gradient(180deg, rgba(86,29,9,0) 0%, rgba(86,29,9,.3) 20%, rgba(86,29,9,.66) 40%, rgba(86,29,9,.92) 58%, #561D09 72%);
      pointer-events:none; }
    .hero-card-left{ padding:calc(var(--niv-inset) + var(--niv-fab-h) + 32px) 28px 44px 44px; justify-content:flex-end; }
    .niv-logo-fix{ left:44px !important; }
    /* Keep the hero content flush to the logo's 44px left edge on phones. */
    #homeHeroSticky .hero-text-block{ padding-left:0 !important; padding-right:20px !important; }
    #homeHeroSticky .hero-belief{ font-size:clamp(34px,9.4vw,54px) !important; line-height:1.2 !important; white-space:normal !important; }
    #homeHeroSticky .hero-exist{ font-size:clamp(36px,10.2vw,58px) !important; line-height:1.16 !important; }
    /* Portrait phones: pull the tree up a touch so canopy sits behind the text,
       and let the heading wrap its authored lines instead of forcing nowrap. */
    .home-hero .hero-belief{ font-size:clamp(21px,6.4vw,34px) !important; line-height:1.3 !important; white-space:normal !important; }
    .home-hero .hero-exist{ font-size:clamp(23px,7vw,36px) !important; line-height:1.24 !important; }
  }

  /* Home hero — guarantee the whole thing (all belief lines + the boxed element
     system) fits in ONE screen on every phone, WITHOUT shrinking the type: use the
     SMALL viewport height so it never hides behind browser chrome, tighten the
     vertical rhythm, and bottom-anchor the content. */
  @media(max-width:760px){
    .home-hero-track{ height:100svh !important; }
    .home-hero{ height:100svh !important; }
    #homeHeroSticky .hero-card-left{ justify-content:center !important;
      padding-top:calc(var(--niv-inset) + var(--niv-fab-h) + 130px) !important;
      padding-bottom:calc(env(safe-area-inset-bottom, 0px) + 18px) !important; }
    #homeHeroSticky .hero-belief{ font-size:clamp(26px,7.8vw,40px) !important; line-height:1.32 !important; margin-bottom:clamp(20px,3.6vh,34px) !important; }
    /* Keep the authored 5 lines as EXACTLY 5 lines: never let a line wrap into
       more lines — instead the type shrinks with the viewport until it fits. */
    #homeHeroSticky .hero-belief .hero-line{ white-space:nowrap !important; }
    #homeHeroSticky .hero-exist{ font-size:clamp(28px,8.4vw,42px) !important; line-height:1.28 !important; }
    #homeHeroSticky .hero-guides #hgNode{ r:5 !important; }
    #homeHeroSticky .hero-stats{ display:flex !important; gap:6px !important; margin-top:0 !important; max-width:none !important; width:calc(100% + 20px) !important; margin-right:-20px !important; }
    #homeHeroSticky .hero-stat{ flex:1 1 0 !important; height:clamp(96px,12.5vh,112px) !important; }
    #homeHeroSticky .hero-stat-card{ align-items:flex-start !important; justify-content:flex-start !important; }
    #homeHeroSticky .hero-stat-content{ padding:9px 8px 9px !important; text-align:left !important; display:block !important; }
    #homeHeroSticky .hero-stat-num{ font-size:clamp(30px,8.2vw,38px) !important; }
    #homeHeroSticky .hero-stat-label{ font-size:clamp(11px,2.9vw,13.5px) !important; line-height:1.14 !important; margin-top:5px !important; }
    /* Cards 2 and 3 break one word per line on mobile. */
    #homeHeroSticky .hero-stat-label .stat-br-m{ display:none !important; }
    /* Cards 2 and 3 only break one word per line where card 1 itself wraps to
       three lines, so all three stay in step. */
    @media(max-width:344px){
      #homeHeroSticky .hero-stat-label .stat-br-m{ display:inline !important; }
    }
    /* Shrink the tree slightly on phones so it doesn't crowd the text (applies
       once the intro zoom has settled, so it doesn't fight the reveal animation) */
  }

  @media(max-width:760px){
    /* Phones: freeze the hero image — kill the intro zoom + scroll parallax and
       fully reveal it, so it can never drift. Lock the logo at its enlarged size
       so it doesn't default to small or shrink on scroll (its LEFT still shifts
       via JS to align with section content). */
    #homeHeroSticky #heroZoom{ opacity:0;
      animation:heroTreeIn 1.7s cubic-bezier(.5,0,.2,1) both !important; }
    #homeHeroSticky #heroZoom.zoom-done{ animation:none !important; opacity:1 !important; }
    #homeHeroSticky #heroRevealC{ animation:heroRevealGrowM 1.7s cubic-bezier(.33,0,.15,1) both !important; }
    /* Once the intro grow finishes, drop the animation so the scroll-driven
       inline transform can take over (animation fill would otherwise win). */
    #homeHeroSticky #heroRevealC.reveal-done{ animation:none !important; transform:scale(0.8); transition:transform .25s linear; }
    .niv-logo-fix, .niv-logo-fix.logo-hero-big{ transform:scale(1.3) !important; transform-origin:left center !important; }
  }

  /* ══ CONVICTION ══════════════════════════════════════════════════════════════ */
  .conv-wrapper{ position:relative; }
  .conv-viewport{
    position:relative; overflow:hidden; height:calc(100vh - 70px);
    display:flex; flex-direction:column;
    border-bottom:2px solid var(--ink); border-top:2px solid var(--ink);
  }
  .conv-heading-row{
    flex:0 0 auto; padding:32px 28px 24px; position:relative;
    border-bottom:2px solid var(--ink);
  }
  .conv-nav{
    position:absolute; right:28px; bottom:24px;
    display:flex; gap:10px;
  }
  /* .conv-arrow styled by canonical arrow rule below */
  .conviction-heading{ font-size:clamp(16px,2vw,26px); max-width:700px; margin:8px 0 0; }

  /* Home "businesses we've backed" — plain serif heading, gray subline, filled dot circles top-right, bordered rounded cards with a dot in each gap */
  .hh-plain-heading-row{ display:flex; align-items:flex-start; justify-content:space-between; gap:32px; flex-wrap:wrap; }
  .hh-plain-heading-row .conviction-heading{
    font-family:var(--f-serif) !important; font-weight:400 !important; color:var(--ink) !important;
    font-size:clamp(43px,5.2vw,78px) !important; line-height:1.24 !important; max-width:960px !important; margin:0 !important;
  }
  .hh-plain-heading-row .conv-eyebrow{
    text-transform:none; letter-spacing:0; font-weight:400; color:var(--gray);
    font-size:clamp(19px,1.7vw,25px); font-family:'Jost',sans-serif; margin-top:16px;
  }
  .hh-plain-nav{ display:flex; align-items:center; gap:14px; flex:0 0 auto; padding-top:6px; }
  /* ══ CANONICAL ARROW BUTTON — single source of truth for every carousel/nav arrow site-wide ══ */
  .conv-arrow, .conv-arrow-circle, .carousel-arrow, .sofar-arrow{
    width:54px; height:54px; border-radius:50%; display:flex; align-items:center; justify-content:center;
    cursor:pointer; flex:0 0 auto; padding:0; box-sizing:border-box;
    background:var(--paper); border:2px solid var(--greenDeep); color:var(--greenDeep);
    transition:background .18s ease,color .18s ease;
  }
  .conv-arrow:hover, .conv-arrow-circle:hover, .carousel-arrow:hover, .sofar-arrow:hover{ background:var(--greenDeep); color:var(--paper); }
  .conv-arrow svg, .conv-arrow-circle svg, .carousel-arrow svg, .sofar-arrow svg{ width:22px; height:22px; }
  .conv-arrow svg *, .conv-arrow-circle svg *, .carousel-arrow svg *, .sofar-arrow svg *{ fill:none; stroke:currentColor; stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; }

  .hh-plain-wrapper .conv-track{ gap:56px; padding-left:0; }
  .hh-plain-wrapper .conv-card{
    position:relative; border:1.5px solid var(--greenDeep);
    background:transparent; box-sizing:border-box;
  }
  /* Fill-on-hover: green bg, gold title, cream body/year */
  #homeConvWrapper.hh-plain-wrapper .conv-card:hover,
  #homeConvWrapper.hh-plain-wrapper .conv-card.auto-demo{ background:var(--greenDeep); }
  #homeConvWrapper.hh-plain-wrapper .conv-card:hover .conv-year,
  #homeConvWrapper.hh-plain-wrapper .conv-card.auto-demo .conv-year{ color:var(--gold) !important; }
  #homeConvWrapper.hh-plain-wrapper .conv-card:hover .conv-card-title,
  #homeConvWrapper.hh-plain-wrapper .conv-card.auto-demo .conv-card-title{ color:var(--paper) !important; }
  #homeConvWrapper.hh-plain-wrapper .conv-card:hover .conv-body,
  #homeConvWrapper.hh-plain-wrapper .conv-card.auto-demo .conv-body{ color:var(--paper) !important; }
  /* Brand burst mark — circle + 4 thin outward lines, appears top-right on hover.
     The dot pops in first, then the lines grow outward from that same center
     point right after, so the whole thing reads as one continuous firework
     burst. transform-only (fill-box origin), so it's compositor-driven (60fps). */
  .conv-burst{
    position:absolute; top:30px; right:30px; width:104px; height:104px;
    overflow:visible; pointer-events:none; z-index:3;
  }
  .conv-burst-dot{
    fill:#F0D88E; transform-box:fill-box; transform-origin:center;
    transform:scale(0);
    transition:transform .38s cubic-bezier(.22,.9,.32,1);
  }
  .conv-burst-lines line{
    stroke:#F0D88E; stroke-width:2.4; stroke-linecap:round;
    transform-box:fill-box; transform-origin:center;
    transform:scale(0);
    transition:transform .5s cubic-bezier(.22,.9,.32,1);
    transition-delay:.05s;
  }
  #homeConvWrapper.hh-plain-wrapper .conv-card:hover .conv-burst-dot,
  #homeConvWrapper.hh-plain-wrapper .conv-card.auto-demo .conv-burst-dot{ transform:scale(1); }
  #homeConvWrapper.hh-plain-wrapper .conv-card:hover .conv-burst-lines line,
  #homeConvWrapper.hh-plain-wrapper .conv-card.auto-demo .conv-burst-lines line{ transform:scale(1); }
  #homeConvWrapper.hh-plain-wrapper .conv-card:not(:first-child)::before{
    content:''; position:absolute; left:-28px; top:50%; transform:translate(-50%,-50%);
    width:13px; height:13px; border-radius:50%; z-index:2; border:none;
    background:var(--greenDeep);
  }
  .hh-plain-wrapper .conv-year{
    font-family:'OV Sage','Jost',sans-serif !important; font-weight:600 !important; color:var(--greenDeep) !important;
    text-transform:none !important; letter-spacing:0 !important;
    font-size:clamp(28px,3vw,44px) !important; margin-bottom:18px !important;
  }
  .hh-plain-wrapper .conv-card-title{
    font-family:'Jost',sans-serif !important; font-weight:700 !important; color:var(--ink) !important;
    font-size:clamp(19px,1.7vw,25px) !important; margin-bottom:22px !important;
  }
  .hh-plain-wrapper .conv-body{
    font-family:'Jost',sans-serif !important; font-weight:400 !important; color:var(--ink) !important;
    font-size:clamp(15px,1.35vw,18px) !important; line-height:1.7 !important;
  }
  .hh-plain-wrapper .conv-hl{ background-image:linear-gradient(var(--gold),var(--gold)); background-repeat:no-repeat;
    background-position:left center; background-size:0% 100%;
    transition:background-size .55s cubic-bezier(.3,.8,.3,1);
    padding:1px 5px; border-radius:0; box-decoration-break:clone; -webkit-box-decoration-break:clone;
  }
  #homeConvWrapper.hh-plain-wrapper .conv-card:hover .conv-hl,
  #homeConvWrapper.hh-plain-wrapper .conv-card.auto-demo .conv-hl{ background-size:100% 100%; color:var(--greenDeep) !important; }

  /* Centered heading/founder layout (home "businesses we've backed") */
  .conv-heading-centered{ display:flex; flex-direction:column; align-items:center; text-align:center; position:relative; }
  .conv-heading-centered .conv-heading-col{ display:flex; flex-direction:column; align-items:center; width:100%; }
  .conv-heading-centered .conviction-heading{ max-width:1100px !important; }
  .conv-heading-centered .conv-founder-row{ justify-content:center; }
  .conv-subrow .conv-eyebrow{
    text-transform:none; letter-spacing:0; font-weight:400; color:var(--gray);
    font-size:clamp(19px,1.7vw,25px); font-family:'Jost',sans-serif; margin-top:0;
  }
  .conv-subrow{ padding-left:0; display:grid; grid-template-columns:auto 1fr auto; align-items:flex-end; gap:20px; margin-top:16px; }
  .conv-subrow .conv-eyebrow{ grid-column:1; justify-self:start; text-align:left; margin-left:0; }
  .conv-subrow .conv-nav-above-cards{ grid-column:3; justify-self:end; margin-right:0; }
  .conv-heading-centered .conv-nav.hh-plain-nav{ padding-top:0; }
  .conv-nav-above-cards{ position:static; right:auto; bottom:auto; padding:0; }
  @media(max-width:900px){ .conv-subrow{ flex-direction:column; align-items:flex-start; text-align:left; gap:16px; } }

  /* Founder row under the heading, centered */
  .conv-founder-row{ display:flex; align-items:center; gap:22px; margin:32px 0 14px; justify-content:flex-start; }
  .conv-founder-avatar{
    width:92px; height:92px; flex:0 0 auto; overflow:hidden;
    background:var(--tint);
    display:flex; align-items:center; justify-content:center; font-size:22px; color:#c9b783;
  }
  .conv-founder-avatar img{ width:100%; height:100%; object-fit:cover; display:block; transform:scale(1.5) translateY(12%); object-position:center 12%; }
  .conv-founder-meta{ display:flex; flex-direction:column; }
  .conv-founder-name{ font-family:'Jost',sans-serif; font-weight:600; font-size:28px; color:var(--ink); }
  .conv-founder-role{ font-family:'Jost',sans-serif; font-size:19px; color:var(--gray); margin-top:4px; }

  /* Rectangular businesses-backed cards, dot vertically centered on the shorter card */
  #homeConvWrapper.hh-plain-wrapper .conv-viewport{ height:auto !important; overflow:visible; padding:56px 64px 72px 80px; display:block; border:none !important; }
  #homeConvWrapper.hh-plain-wrapper .conv-heading-row{ padding:0 !important; }
  #homeConvWrapper.hh-plain-wrapper .conv-cards-area{ height:auto !important; overflow-x:hidden; overflow-y:visible; margin-top:40px; }
  #homeConvWrapper.hh-plain-wrapper .conv-track{ height:auto !important; align-items:flex-start; }
  #homeConvWrapper.hh-plain-wrapper .conv-card{
    flex:0 0 620px !important; min-height:340px !important; height:auto !important; padding:36px 40px !important; justify-content:space-between; box-sizing:border-box;
  }
  @media(max-width:900px){
    #homeConvWrapper.hh-plain-wrapper .conv-card{ flex:0 0 86vw !important; height:auto !important; min-height:280px; }
  }
  @media(max-width:768px){
    .hh-plain-nav{ display:flex; gap:10px; padding-top:0; }
    .hh-plain-wrapper .conv-card:not(:first-child)::before{ display:none; }
    .hh-plain-wrapper .conv-track{ gap:20px; }
  }
  #homeConvWrapper.hh-plain-wrapper .conv-viewport{ border-top:none !important; border-bottom:none !important; background:#F3EAD1; }
  #homeConvWrapper.hh-plain-wrapper .conv-heading-row{ border-bottom:none !important; }
  .conv-cards-area{ flex:1; overflow:hidden; display:flex; align-items:stretch; }
  .conv-track{ display:flex; gap:0; height:100%; transition:transform .35s cubic-bezier(.4,0,.2,1); will-change:transform; }
  .conv-card{
    flex:0 0 44vw; padding:36px 32px; border-right:2px solid var(--ink);
    background:var(--paper); display:flex; flex-direction:column;
    justify-content:space-between; height:100%;
  }
  .conv-year{ font-size:11px; font-family:'OV Sage','Jost',sans-serif; color:var(--gray); text-transform:uppercase; letter-spacing:.1em; margin-bottom:16px; }
  .conv-card-title{ font-size:clamp(18px,2.2vw,30px); font-weight:500; margin-bottom:18px; }
  .conv-body{ font-size:15px; line-height:1.65; flex:1; }
  .conv-valuation{ font-size:12px; font-weight:500; font-family:'OV Sage','Jost',sans-serif; margin-top:20px; padding-top:14px; border-top:1.5px solid var(--ink); }

  /* ══ SCUTTLEBUTT ══════════════════════════════════════════════════════════ */
  .scutt-section{ background:var(--paper); }
  .scutt-layout{ display:flex; gap:48px; align-items:flex-start; }
  .scutt-sidebar{ flex:0 0 300px; position:sticky; top:80px; align-self:flex-start; }
  .scutt-heading{ font-size:clamp(18px,2.2vw,30px); line-height:1.3; margin-bottom:24px; }
  .scutt-sub{ font-size:14px; line-height:1.65; margin-bottom:16px; }
  .scutt-cards{ flex:1; display:flex; flex-direction:column; }
  .scutt-card{
    position:relative;
    padding:32px 32px 32px 20px;
    border:2px solid var(--ink);
    border-bottom:none;
    background:var(--tint);
  }
  .scutt-card:last-child{ border-bottom:2px solid var(--ink); }
  .scutt-dot{
    position:absolute; left:-8px; top:-8px;
    width:16px; height:16px; border-radius:50%;
    background:var(--ink); display:block;
  }
  .scutt-card-title{ font-size:17px; font-weight:500; margin-bottom:20px; }
  .scutt-card-body{ font-size:14px; line-height:1.7; color:var(--gray); }

  /* ══ SO FAR ═════════════════════════════════════════════════════════════════ */
  .so-far-section{ }
  .so-far-title{ font-size:clamp(26px,4vw,52px); margin-bottom:20px; font-weight:400; }
  .so-far-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
  .so-far-card{ display:grid; grid-template-rows:1fr auto 1fr; border:1.5px solid var(--ink); }

  .so-far-card-top{ padding:22px 20px 0; font-size:clamp(16px,1.8vw,24px); line-height:1.3; flex:0 0 auto; }
  .so-far-divider{
    position:relative; border-top:2px solid var(--ink);
    margin:18px 0; display:flex; align-items:center;
  }
  .so-dot{
    display:inline-block; width:14px; height:14px; border-radius:50%;
    background:var(--ink); margin-top:-8px; flex-shrink:0;
  }
  .so-far-card-bottom{ flex:1; min-height:180px; background:var(--tint); }

  /* ══ PHILOSOPHY ══════════════════════════════════════════════════════════════ */
  .philosophy-section{ background:var(--paper); }
  .philosophy-layout{ display:flex; align-items:center; gap:0; margin-top:40px; }
  .phil-list{ flex:0 0 auto; width:320px; display:flex; flex-direction:column; gap:4px; }
  .phil-item{
    font-size:clamp(22px,2.8vw,40px); cursor:pointer; padding:6px 0;
    font-weight:400; line-height:1.2; white-space:nowrap; position:relative;
    display:flex; align-items:center; gap:4px;
  }
  .phil-item.phil-active .phil-text{ font-weight:500; }
  .phil-dot{ font-size:inherit; display:inline-block; }
  .phil-dot-hidden{ font-size:inherit; display:inline-block; visibility:hidden; }
  .phil-text{ }
  .phil-circle-wrap{ flex:1; }
  .phil-svg{ width:100%; height:auto; display:block; }
  .ring-label{ fill:var(--ink); transition:fill .2s; }

  /* ══ WAYS TABS ═══════════════════════════════════════════════════════════════ */
  .ways-section{ }
  .ways-tabs{ display:flex; align-items:stretch; margin-bottom:32px; gap:20px; }
  .ways-tab{
    flex:1; padding:24px 26px; border:1.5px solid var(--greenDeep); border-radius:0;
    background:transparent; cursor:pointer; text-align:left; position:relative;
    font-family:inherit; display:flex; flex-direction:column; justify-content:flex-start;
  }
  .ways-tab + .ways-tab{ border-left:none; }
  .ways-tab:hover{ background:var(--greenDeep); }
  .ways-tab:hover .ways-tab-title,
  .ways-tab:hover .ways-tab-sub{ color:var(--paper); }
  .ways-tab.active{ background:var(--greenDeep); border-color:var(--greenDeep); }
  .ways-tab.active .ways-tab-title,
  .ways-tab.active .ways-tab-sub{ color:var(--paper); }
  .ways-tab-title{ font-size:26px; font-weight:600; margin-bottom:8px; }
  .ways-tab-sub{ font-size:17px; font-family:'Jost',sans-serif; color:var(--gray); text-align:left; }
  .ways-tab-sub{ display:none !important; }
  .ways-tab-sep{ display:none;
    font-size:18px; color:var(--ink);
  }
  /* Brand burst mark on the product buttons, sized to the button rather than
     the big company cards — same instant-fill, no-fade hover feel. */
  .ways-burst{ position:absolute; top:16px; right:16px; width:34px; height:34px; overflow:visible; pointer-events:none; z-index:2; }
  .ways-burst-dot{ fill:#F0D88E; transform-box:fill-box; transform-origin:center; transform:scale(0); transition:transform .3s cubic-bezier(.22,.9,.32,1); }
  .ways-burst-lines line{ stroke:#F0D88E; stroke-width:3; stroke-linecap:round; transform-box:fill-box; transform-origin:center; transform:scale(0); transition:transform .42s cubic-bezier(.22,.9,.32,1); transition-delay:.04s; }
  .ways-tab:hover .ways-burst-dot,
  .ways-tab.active .ways-burst-dot{ transform:scale(1); }
  .ways-tab:hover .ways-burst-lines line,
  .ways-tab.active .ways-burst-lines line{ transform:scale(1); }

/* ===== 22-home-philosophy-bedrock-patches.css ===== */
/* ===== 22-home-philosophy-bedrock-patches.css ===== */
/* ════ OVERRIDES, precise replication ════════════════════════════════════ */

  /* HERO fixed 3 lines — size tracks BOTH width and height so the heading + box
     always fit the card on short laptop viewports (otherwise the box overflows
     below the corner node and the diagonal ends up pointing downward). */
  .hero-belief{ font-size:clamp(26px,min(4.6vw,8.8vh),78px) !important; line-height:1.34 !important; max-width:none !important; text-align:left !important; white-space:nowrap !important; }
  .hero-belief br{ display:block; }
  .home-hero .hero-exist{ font-size:clamp(30px,min(5.3vw,7vh),88px) !important; line-height:1.2 !important; white-space:nowrap !important; }

  /* PE/Homepage Early Conviction, company name (conv-year) bigger than title */
  #peConvWrapper .conv-year{
    font-size:clamp(30px,3.6vw,52px) !important; font-weight:700 !important;
    color:var(--ink) !important; text-transform:none !important; letter-spacing:-.01em !important;
    margin-bottom:18px !important;
  }
  #homeConvWrapper .conv-year{
    font-family:'OV Sage','Jost',sans-serif !important; font-weight:600 !important;
    color:var(--greenDeep) !important; text-transform:none !important; letter-spacing:0 !important;
    font-size:clamp(26px,3vw,42px) !important; margin-bottom:18px !important;
  }
  #peConvWrapper .conv-card-title{
    font-size:clamp(18px,1.8vw,26px) !important; font-weight:600 !important; margin-bottom:18px !important;
  }
  #homeConvWrapper .conv-card-title{
    font-family:'Jost',sans-serif !important; font-size:clamp(19px,1.75vw,26px) !important; font-weight:700 !important; color:var(--ink) !important; margin-bottom:22px !important;
  }
  #peConvWrapper .conv-body{ font-size:clamp(16px,1.4vw,20px) !important; }
  #homeConvWrapper .conv-body{ font-family:'Jost',sans-serif !important; font-size:clamp(18px,1.6vw,23px) !important; line-height:1.65 !important; color:var(--ink) !important; }
  .conv-val-label{ font-size:12px; font-family:'OV Sage','Jost',sans-serif; color:var(--gray); text-transform:uppercase; letter-spacing:.08em; font-weight:500; }
  .conv-val-num{ font-size:clamp(28px,3.5vw,46px); font-weight:700; line-height:1; letter-spacing:-.01em; }

  /* SCUTTLEBUTT, 30-40% bigger cards, heading sized like So Far */
  .scutt-heading{ font-size:clamp(26px,3.5vw,46px) !important; line-height:1.2 !important; }
  .scutt-card{ padding:44px 40px 44px 30px !important; }
  .scutt-card-title{ font-size:22px !important; margin-bottom:24px !important; }
  .scutt-card-body{ font-size:17px !important; line-height:1.8 !important; }
  .scutt-dot{ width:18px !important; height:18px !important; left:-10px !important; top:-10px !important; }

  /* SO FAR, fix the divider line alignment across all 3 cards */
  .so-far-card{ display:grid; grid-template-rows:auto 1fr; }
  .so-far-card-top{ min-height:88px; }
  .so-far-divider{ margin:0 0 0 0; }
  .so-far-card-bottom{ border-top:2px solid var(--ink); position:relative; }
  .so-far-card-bottom::before{
    content:''; position:absolute; left:-7px; top:-8px; width:14px; height:14px;
    border-radius:50%; background:var(--ink);
  }
  .so-far-divider{ display:none; }

  /* Rings interaction */

  /* The SVG carries React-style strokeWidth / textAnchor attributes, which HTML
     parses as strokewidth / textanchor and then ignores. That is why the hover
     bands drew as 1px hairlines instead of the wide arcs the design calls for,
     and why every label sat half its own length clockwise of its arc midpoint.
     Said in CSS, where the property names are the real ones, so it holds for
     both the static build and the Webflow port (whose builder dropped the dead
     attributes outright). Values are the ones the markup always intended. */
  .ring-fill[data-ring="1"]{ stroke-width:105; }
  .ring-fill[data-ring="2"]{ stroke-width:105; }
  .ring-fill[data-ring="3"]{ stroke-width:100; }
  .ring-fill[data-ring="4"]{ stroke-width:85; }
  .ring-shape{ stroke-width:1.5; }
  .ring-label{ text-anchor:middle; }

  .ring-fill{ transition:none; }
  .ring-fill.ring-active{ opacity:1; transition:opacity .28s ease, stroke .28s ease; }
  .ring-label{ fill:var(--ink); transition:none; }
  .ring-label.ring-active{ fill:var(--paper); font-weight:600; transition:fill .28s ease; }
  /* per-ring hover colours */
  /* Ring 3 has no rule of its own on purpose: it falls through to
     `.ring-fill.ring-active{stroke:var(--terra)}` in 90-rebrand-overrides.css,
     and its labels to the generic `.ring-label.ring-active` paper. The omission
     is deliberate, not missing work -- but it means editing either generic rule
     silently restyles ring 3 alone. RING-SYSTEM.md s5. */
  .ring-fill[data-ring="1"].ring-active{ stroke:var(--gold) !important; }
  .ring-fill[data-ring="2"].ring-active{ stroke:var(--blue) !important; }
  .ring-fill[data-ring="4"].ring-active{ stroke:var(--greenDeep) !important; }
  .ring-label[data-ring="1"].ring-active{ fill:var(--ink) !important; }
  .ring-label[data-ring="2"].ring-active{ fill:var(--paper) !important; }
  .ring-label[data-ring="4"].ring-active{ fill:var(--paper) !important; }
  /* temperament core — black fill + cream label normally; on hover cream fill, black outline + black label */
  .ring-shape[data-ring="0"]{ fill:var(--ink) !important; stroke:none; }
  .ring-label[data-ring="0"]{ fill:var(--paper) !important; }
  .ring-shape[data-ring="0"].ring-active{ fill:var(--paper) !important; stroke:var(--ink) !important; stroke-width:2 !important; }
  .ring-label[data-ring="0"].ring-active{ fill:var(--ink) !important; }
  .ring-temp-label.temp-active{ fill:var(--ink) !important; }
  /* Strategy rings — desktop-only enlargement (scoped so it doesn't fight mobile stacking) */
  @media(min-width:861px){
    #page-strategy .phil-list{ width:520px; flex:0 0 520px; }
    #page-strategy .phil-circle-wrap{ flex:1 1 auto; overflow:visible; }
    #page-strategy .phil-svg{ width:118%; max-width:none; margin-right:-8%; }
  }
  #page-strategy .phil-text, #page-strategy .phil-eyebrow{ font-family:'OV Sage','Jost',sans-serif; }
  #page-strategy .phil-text{ font-size:clamp(30px,3.4vw,54px); }
  #page-strategy .phil-eyebrow{ padding-left:0 !important; font-size:clamp(16px,1.6vw,22px); }
  #page-strategy .phil-plus{ flex:0 0 0 !important; width:0 !important; min-width:0 !important; overflow:hidden !important; margin:0 !important; }
  #page-strategy .phil-dot-perm{ flex:0 0 0 !important; width:0 !important; min-width:0 !important; height:0 !important; margin:0 !important; background:none !important; font-size:0; line-height:0; position:relative; align-self:center; }
  #page-strategy .phil-dot-perm::before{ content:''; position:absolute; left:-26px; top:50%; transform:translateY(-50%); width:16px; height:16px; border-radius:50% !important; background:var(--terra); aspect-ratio:1; }
  @media(min-width:861px){ #page-strategy .phil-svg{ max-width:840px; } }
  @media(max-width:760px){
    #page-strategy .phil-list{ width:100%; flex:0 0 auto; flex-direction:column; gap:6px; text-align:center; align-items:center; }
    #page-strategy .phil-item{ font-size:clamp(19px,5.6vw,26px); justify-content:center; }
    #page-strategy .phil-eyebrow{ font-size:clamp(14px,3.6vw,17px); margin-bottom:14px; text-align:center; width:100%; }
    #page-strategy .phil-circle-wrap{ width:100%; margin-top:28px; }
    #page-strategy .phil-svg{ width:100%; max-width:100%; }
    #page-strategy .phil-dot-perm::before{ left:-20px; width:12px; height:12px; }
  }

  /* ════ PHILOSOPHY, final ════════════════════════════════════════════════ */
  .philosophy-section{ overflow:hidden; }
  .philosophy-layout{ display:flex; align-items:center; gap:0; margin-top:40px; }
  .phil-list{ flex:0 0 320px; display:flex; flex-direction:column; gap:2px; z-index:2; }
  .phil-item{
    font-size:clamp(28px,3.6vw,52px); cursor:pointer; padding:4px 0;
    font-weight:400; line-height:1.15; white-space:nowrap;
    display:flex; align-items:center; gap:6px;
  }
  .phil-item.phil-active .phil-text{ font-weight:700; }
  .phil-dot, .phil-dot-hidden{ font-size:inherit; line-height:1; }
  .phil-dot-hidden{ visibility:hidden; }
  .phil-circle-wrap{ flex:1; display:flex; justify-content:flex-end; align-items:center; }
  .phil-svg{ width:90%; max-width:760px; height:auto; display:block; }
  .ring-label{ font-size:24px; font-family:'Inter',sans-serif; fill:var(--ink); transition:fill .2s; }

  /* ════ BEDROCK, final stacking + card layout ════════════════════════════ */

  .bedrock-title{ font-size:clamp(26px,3.5vw,46px); font-weight:400; line-height:1.2; }

  /* taller title strip area so each reveal shows the full title row */
  .bk-card-title{ line-height:1.1; }
  .bk-dot{
    position:absolute; left:-9px; top:-9px; width:16px; height:16px;
    border-radius:50%; background:var(--ink); z-index:5;
  }
  .bk-card-inner{ display:flex; height:100%; }
  .bk-card-left{ flex:1; padding:40px 44px; position:relative; display:flex; flex-direction:column; }
  .bk-card-left::after{ content:''; position:absolute; right:0; top:0; bottom:0; width:2px; background:var(--ink); }
  .bk-card-right{ flex:0 0 42%; padding:40px 44px; display:flex; flex-direction:column; align-items:flex-end; justify-content:flex-end; }
  .bk-card-title{ font-size:clamp(28px,3.5vw,46px); font-weight:700; margin-bottom:auto; }
  .bk-card-body{ font-size:clamp(20px,2vw,28px); line-height:1.65; margin:20px 0 0; color:var(--ink); }
  .bk-icon-box{ border:1.5px solid var(--ink); padding:12px 16px; font-size:14px; line-height:1.4; letter-spacing:3px; background:var(--tint); align-self:flex-end; }
  .bk-icon-box.bk-icon-star{ font-size:24px; padding:16px 20px; }
  .bk-caption{ font-size:clamp(32px,4.5vw,64px); font-weight:700; align-self:flex-end; text-align:right; line-height:1.1; }

  /* ════ REFINEMENTS PASS ════════════════════════════════════════════════════ */

  /* CONVICTION, title large like hero, stays visible, bigger card text */
  .conviction-heading{ font-size:clamp(28px,4vw,56px) !important; max-width:none !important; line-height:1.15 !important; font-weight:400; margin:0 0 14px !important; }
  .conv-eyebrow{ font-size:13px; font-family:'OV Sage','Jost',sans-serif; color:var(--gray); text-transform:uppercase; letter-spacing:.1em; font-weight:500; }
  .conv-heading-row{ padding:28px 28px 22px !important; }
  .conv-card{ flex:0 0 46vw !important; padding:48px 44px !important; }
  .conv-year{ font-size:14px !important; margin-bottom:24px !important; }
  .conv-card-title{ font-size:clamp(28px,3.2vw,44px) !important; font-weight:600 !important; margin-bottom:28px !important; line-height:1.1; }
  .conv-body{ font-size:clamp(18px,1.6vw,24px) !important; line-height:1.6 !important; }
  .conv-val-label{ font-size:14px !important; }
  .conv-val-num{ font-size:clamp(32px,4vw,52px) !important; }

  /* SCUTTLEBUTT, 20-30% bigger text */
  .scutt-card-title{ font-size:23px !important; margin-bottom:24px !important; }
  .scutt-card-body{ font-size:18px !important; line-height:1.75 !important; }

  /* SO FAR, bigger card titles */
  .so-far-card-top{ font-size:clamp(22px,2.6vw,34px) !important; min-height:120px; padding:28px 24px 0 !important; line-height:1.2; }

  /* PHILOSOPHY, subheading above title */
  .phil-eyebrow{ font-size:clamp(15px,1.6vw,20px); font-weight:600; margin-bottom:10px; }

  /* BEDROCK, bigger title */
  .bedrock-title{ font-size:clamp(30px,4.5vw,58px) !important; font-weight:400; line-height:1.15; }

  /* WAYS, full width matching sections above */
  .ways-section .section-inner{ max-width:1180px; }
  .ways-tabs{ width:100%; }
  .offer-groups-wrap{ width:100%; }
  .offer-static-grid{ display:grid; grid-template-columns:1fr 1fr; gap:24px; width:100%; }

  /* SUBSCRIBE, premium layout — half-height, horizontal band */
  .subscribe-section-half{ padding-top:36px; padding-bottom:36px; }
  .subscribe-box{
    border:2px solid var(--ink); background:var(--ink); color:var(--paper);
    display:flex; gap:48px; padding:36px 48px; align-items:center; flex-wrap:wrap;
  }
  .subscribe-left{ flex:1; min-width:280px; }
  .subscribe-left .eyebrow{ color:var(--paper); opacity:.7; }
  .subscribe-title{ font-size:38px; font-weight:500; margin:0 0 12px; line-height:1.18; }
  .subscribe-sub{ font-size:20px; line-height:1.6; opacity:.85; margin:0; max-width:460px; }
  .subscribe-right{ flex:0 0 320px; display:flex; flex-direction:column; gap:12px; }
  .subscribe-right .dummy-input{
    width:100%; padding:16px 18px; border:1.5px solid var(--paper); background:transparent;
    color:var(--paper); font-family:'OV Sage','Jost',sans-serif; font-size:15px; margin:0; box-sizing:border-box;
  }
  .subscribe-right .dummy-input::placeholder{ color:var(--paper); opacity:.5; }
  .subscribe-right .btn{
    width:100%; background:var(--paper); color:var(--ink); border-color:var(--paper);
    padding:16px; font-size:18px; justify-content:center;
  }
  .subscribe-note{ font-size:12px; opacity:.6; text-align:center; }

  /* ════ PASS 3 FIXES ════════════════════════════════════════════════════════ */

  /* Discover Emerging Signals, 3 cards side by side */
  .signals-head{ display:flex; justify-content:space-between; align-items:center; margin-bottom:24px; }
  .signals-arrows{ display:none; gap:12px; }
  .signals-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; margin-top:8px; }
  .signals-grid .kb-poster{ aspect-ratio:16/10; font-size:42px; }

  /* So Far, auto-scrolling carousel */
  .sofar-carousel{ margin-top:24px; }
  .sofar-viewport{ overflow:hidden; border:1.5px solid var(--ink); }
  .sofar-track{ display:flex; transition:transform .6s cubic-bezier(.4,0,.2,1); }
  .sofar-slide{ flex:0 0 100%; min-height:320px; display:flex; align-items:center; justify-content:center; padding:64px 48px; box-sizing:border-box; }
  .sofar-text{ font-size:clamp(24px,3vw,42px); font-weight:400; line-height:1.25; text-align:center; max-width:900px; margin:0; }
  .sofar-nav{ display:flex; align-items:center; justify-content:center; gap:24px; margin-top:24px; }
  /* .sofar-arrow styled by canonical arrow rule */
  .sofar-arrow:hover-legacy{}
  .sofar-dots{ display:flex; gap:10px; }
  .sofar-dot{ width:10px; height:10px; border-radius:50%; background:var(--skel); cursor:pointer; transition:background .2s; border:none; padding:0; }
  .sofar-dot.active{ background:var(--ink); }
  .bk-caption.bk-caption-sm{ font-size:clamp(24px,3vw,42px); }

  /* AIF, "Here's how an AIF works" parallax sticky-left + scrolling steps */
  .aif-works-layout{ display:flex; gap:64px; align-items:flex-start; }
  .aif-works-left{ flex:0 0 360px; position:sticky; top:120px; align-self:flex-start; }
  .aif-works-heading{ font-size:clamp(28px,3.2vw,46px); font-weight:400; line-height:1.15; margin:18px 0 24px; }
  .aif-works-desc{ font-size:clamp(17px,1.6vw,21px); line-height:1.6; }
  .scutt-explore-btn{ margin-top:24px; }
  .aif-works-right{ flex:1; display:flex; flex-direction:column; gap:120px; }
  .aif-works-step{ display:flex; gap:32px; align-items:flex-start; }
  .aif-works-card{
    flex:0 0 54%; height:420px; overflow:hidden; border:1.5px solid var(--greenDeep); border-radius:0;
    position:relative;
  }
  .aif-works-parallax{
    position:absolute; left:0; right:0; top:-25%; height:150%;
    will-change:transform;
  }
  .aif-works-parallax[data-grad="1"]{ background:linear-gradient(160deg,#33302a 0%,#4a4a4a 40%,#cfcfcf 100%); }
  .aif-works-parallax[data-grad="2"]{ background:linear-gradient(160deg,#2b2b2b 0%,#6e6e6e 50%,#e6e6e6 100%); }
  .aif-works-parallax[data-grad="3"]{ background:linear-gradient(160deg,#0d0d0d 0%,#3a3a3a 45%,#b0b0b0 100%); }
  .aif-works-meta{ flex:1; padding-top:8px; }
  .aif-works-num{ font-size:13px; font-weight:600; letter-spacing:.1em; color:var(--gray); margin-bottom:18px; }
  /* Scuttlebutt section only: swap the "01/02/03" numbering for a small dot that
     grows slightly, ease-in, once its step crosses 50% into view — a quiet focus cue. */
  /* Scuttlebutt section only: no step numbering/dot, text starts flush with
     the top of the image card, and the card has no outline. */
  #homeScuttleSection .aif-works-num{ display:none; }
  #homeScuttleSection .aif-works-meta{ padding-top:0; }
  #homeScuttleSection .aif-works-card{ border:none !important; }
  #homeScuttleSection .aif-works-right{ gap:60px; }
  /* Align the right column's first step title to the top of the left sticky heading */
  #page-home #homeScuttleSection .aif-works-heading{ margin-top:0; font-family:'OV Sage','Jost',sans-serif !important; font-size:clamp(32px,3.9vw,54px) !important; line-height:1.12 !important; }
  #homeScuttleSection .aif-works-title{ margin-top:0; }
  #homeScuttleSection .aif-works-step:first-child .aif-works-meta{ padding-top:0; }
  .aif-works-title{ font-size:clamp(20px,2vw,28px); font-weight:400; line-height:1.15; margin-bottom:16px; }
  .aif-works-body{ font-size:clamp(16px,1.5vw,20px); line-height:1.6; }
  @media(max-width:860px){
    .aif-works-layout{ flex-direction:column; gap:40px; }
    .aif-works-left{ position:static; flex:0 0 auto; }
    .aif-works-right{ gap:64px; }
    #homeScuttleSection .aif-works-right{ gap:32px; }
    #homeScuttleSection .scutt-explore-mobile{ align-self:flex-start; margin-top:8px; }
    #homeScuttleSection.web-section{ padding-left:12px !important; padding-right:12px !important; }
    #homeScuttleSection .aif-works-card{ width:100% !important; height:560px !important; }
    #homeScuttleSection .aif-works-title{ margin-bottom:8px !important; }
    #homeScuttleSection .aif-works-step{ gap:12px !important; }
    /* Push Explore-More to the very end (after the last step): flatten the left
       column so its children join the column flex, then order the button last. */
    #homeScuttleSection .aif-works-left{ display:contents !important; }
    #homeScuttleSection .scutt-explore-btn{ order:99 !important; align-self:flex-start !important; margin-top:20px !important; }
    #homeScuttleSection .aif-works-layout{ display:flex !important; flex-direction:column !important; gap:14px !important; }
  #homeScuttleSection .aif-works-heading{ margin:0 !important; font-size:clamp(28px,8vw,40px) !important; line-height:1.14 !important; overflow-wrap:break-word; word-break:break-word; max-width:100%; }
  #homeScuttleSection .aif-works-desc{ margin-top:0 !important; overflow-wrap:break-word; }
    #homeScuttleSection .aif-works-card{ height:560px !important; }
    .aif-works-step{ flex-direction:column; gap:20px; }
    .aif-works-card{ flex:0 0 auto; width:100%; height:280px; }
  }
  /* AIF how cards, align titles and bodies */
  .aif-how-card{ display:grid; grid-template-rows:auto auto 1fr; }
  .aif-how-title{ min-height:1.2em; align-self:start; }

  /* SO FAR, title big, vertically centered in upper area, line+dot, thin border */
  .so-far-card{ display:grid !important; grid-template-rows:1fr 1fr !important; min-height:300px; border:1.5px solid var(--ink) !important; }
  .so-far-card-top{
    display:flex; align-items:center; justify-content:flex-start;
    padding:32px !important; font-size:clamp(24px,2.8vw,38px) !important;
    line-height:1.2; font-weight:400; min-height:0 !important;
    border-bottom:1.5px solid var(--ink); position:relative;
  }
  .so-far-card-top::after{
    content:''; position:absolute; left:-6px; bottom:-7px; width:13px; height:13px;
    border-radius:50%; background:var(--ink);
  }
  .so-far-card-bottom{ background:var(--tint); border-top:none !important; min-height:0 !important; }
  .so-far-card-bottom::before{ display:none !important; }

  /* SCUTTLEBUTT, another 30% bump on right card text */
  .scutt-card-title{ font-size:30px !important; margin-bottom:28px !important; }
  .scutt-card-body{ font-size:23px !important; line-height:1.7 !important; }
  .scutt-card{ padding:48px 44px 48px 32px !important; }

  /* ════ BEDROCK, JS-driven pinned stack ══════════════════════════════════ */
  .bedrock-section{ position:relative; height:340vh; padding:0; }
  #bedrockSection{ background:#F3EAD1; }
  .bk-viewport{
    position:sticky; top:70px; height:calc(100vh - 70px);
    padding:40px 64px 0 80px; box-sizing:border-box; overflow:hidden;
    display:flex; flex-direction:column;
  }
  /* Home page, from Bedrock section to the end: align edge-to-edge with logo (left) / menu (right) */
  #page-home #bedrockSection ~ .web-section{ padding-left:80px !important; padding-right:64px !important; }
  #page-home #bedrockSection ~ .web-section .section-inner{ max-width:none !important; margin:0 !important; padding:0 !important; }
  .bedrock-title{ font-size:clamp(30px,4.5vw,58px); font-weight:400; line-height:1.15; margin-bottom:14px; flex:0 0 auto; }
  /* Green stacking sections: push the title clear of the fixed logo/menu at top-left */
  #peApproachSection .bk-viewport,
  #hhApproachSection .bk-viewport,
  #eqbApproachSection .bk-viewport,
  #stratSystemSection .bk-viewport{ padding-top:104px; }
  .bk-cards{ position:relative; height:calc(100% - 120px); }
  .bk-card{
    position:absolute; left:0; right:0;
    height:44vh; background:var(--tint);
    border:1.5px solid var(--greenDeep); border-radius:0; box-sizing:border-box;
    will-change:transform;
  }
  .bk-dot{ position:absolute; left:-8px; top:-8px; width:15px; height:15px; border-radius:50%; background:var(--ink); z-index:5; }
  .bk-card-inner{ display:flex; height:100%; }
  .bk-card-left{ flex:1; padding:22px 32px; position:relative; display:flex; flex-direction:column; }
  .bk-card-left::after{ content:''; position:absolute; right:0; top:0; bottom:0; width:1.5px; background:var(--greenDeep); }
  .bk-card-right{ flex:0 0 38%; padding:22px 32px; display:flex; flex-direction:column; align-items:flex-end; justify-content:flex-end; }
  .bk-card-title{ font-size:clamp(28px,3.5vw,46px); font-weight:700; margin-bottom:auto; line-height:1.1; }
  .bk-card-body{ font-size:clamp(20px,2vw,28px); line-height:1.65; margin:16px 0 0; }
  .bk-icon-box{ border:1.5px solid var(--ink); padding:12px 16px; font-size:14px; line-height:1.4; letter-spacing:3px; background:var(--tint); align-self:flex-end; }
  .bk-icon-box.bk-icon-star{ font-size:24px; padding:16px 20px; }
  .bk-caption{ font-size:clamp(32px,4.5vw,64px); font-weight:700; align-self:flex-end; text-align:right; line-height:1.1; }

  /* ════ BEDROCK, rounded pill-row layout (dot+title / bold stat) ══════════ */
  /* This section scrolls normally — no pin, no scroll-hijacked reveal. Only
     the right-hand image keeps the shared aif-works-parallax scroll effect. */
  #bedrockSection{ height:auto; }
  #bedrockSection .bk-viewport{ position:static; height:auto; min-height:560px; padding:88px 64px 96px 80px !important; }
  .bk-pills-viewport{ display:flex; flex-direction:column; overflow:visible; flex:1 1 auto; min-height:0; }
  .bk-split-body{ display:flex; gap:44px; align-items:stretch; }
  .bk-pills-col{ flex:1 1 38%; display:flex; flex-direction:column; gap:28px; min-width:0; }
  .bk-pills{ display:flex; flex-direction:column; gap:14px; width:100%; }
  .bk-pill-row{ position:relative; display:flex; align-items:stretch; gap:12px; flex:0 0 auto; }
  .bk-pill-row.bk-row-green{ --pill-color:var(--greenDeep); }
  .bk-pill{
    border-radius:0; display:flex; align-items:center; box-sizing:border-box;
    font-family:'OV Sage','Jost',sans-serif;
  }
  .bk-pill-label{
    flex:0 0 auto; gap:10px; background:transparent; border:1.5px solid var(--pill-color,var(--greenDeep)); color:var(--ink);
    padding:12px 22px 12px 18px; cursor:pointer;
    transition:flex-basis .4s cubic-bezier(.22,.8,.28,1), background .18s ease, color .18s ease, border-color .18s ease;
  }
  .bk-pill-label:hover,
  .bk-pill-row.bk-pill-active .bk-pill-label{ background:var(--pill-color); color:var(--paper); border-color:var(--pill-color); }
  .bk-pill-dot{
    position:relative; width:13px; height:13px; border-radius:50%; background:var(--pill-color); flex:0 0 auto;
    transition:transform .15s ease-in, background .18s ease;
  }
  .bk-pill-label:hover .bk-pill-dot,
  .bk-pill-row.bk-pill-active .bk-pill-dot{ background:var(--paper); transform:scale(1.3); }
  .bk-pill-title{ font-family:'Jost',sans-serif; font-weight:600; font-size:clamp(14px,1.15vw,18px); white-space:nowrap; }
  .bk-pill-stat{
    flex:1 1 auto; min-width:0; justify-content:flex-end; background:transparent; color:var(--pill-color); border:1.5px solid var(--pill-color,var(--greenDeep));
    padding:12px 22px;
    transition:flex-basis .4s cubic-bezier(.22,.8,.28,1), border-color .2s ease;
  }
  .bk-pill-stat:hover, .bk-pill-row.bk-pill-active .bk-pill-stat{ border-color:var(--pill-color); }
  .bk-pill-row.bk-pill-active .bk-pill-stat{ background:transparent; color:var(--ink); border-color:var(--pill-color,var(--greenDeep)); }
  .bk-pill-stat-text{ font-family:'Jost',sans-serif; font-weight:700; font-size:clamp(14px,1.3vw,20px); text-align:right; line-height:1.1; white-space:nowrap; }

  .bk-active-desc{ font-family:'Jost',sans-serif; font-size:clamp(15px,1.2vw,18px); line-height:1.55; color:var(--ink); max-width:none; width:100%; margin:0; min-height:3em; }
  .bk-image-arrows{ display:flex; gap:10px; }
  .bk-img-arrow{
    width:52px; height:52px; border-radius:50%; display:flex; align-items:center; justify-content:center;
    cursor:pointer; padding:0; box-sizing:border-box; flex:0 0 auto;
    background:transparent; border:1.5px solid var(--greenDeep); color:var(--greenDeep);
    transition:background .18s ease, color .18s ease;
  }
  .bk-img-arrow:hover{ background:var(--greenDeep); color:var(--paper); }
  .bk-img-arrow svg{ width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; }

  /* Right column: arrow-navigated, hover-linked, cross-fading image stage */
  .bk-image-col{ flex:1 1 60%; min-width:0; min-height:0; }
  .bk-image-stage{ position:relative; width:100%; height:100%; min-height:420px; border-radius:0; overflow:hidden; background:var(--tint); }
  .bk-image-slide{ position:absolute; inset:0; opacity:0; transition:opacity .6s ease; }
  .bk-image-slide.active{ opacity:1; z-index:2; }
  .bk-image-slide .aif-works-parallax{ background-size:cover !important; background-position:center !important; background-repeat:no-repeat !important; }
  .bk-image-slide .aif-works-parallax::after{ display:none; }
  .bk-image-slide .bk-stage-team{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e73153219e6c9143b46af_bedrock-stage-team-c.webp') !important; background-size:cover !important; background-position:center !important; }
  .bk-image-slide .bk-stage-surat{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e7314bf75b0bee4db68b6_bedrock-stage-surat-c.webp') !important; }
  .bk-image-slide .bk-stage-founders{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e731444dc373650987858_bedrock-stage-founders-c.jpg') !important; }

  @media(max-width:1440px) and (min-width:761px){
    .bk-image-stage{ min-height:360px; }
  }
  @media(max-width:900px) and (min-width:761px){
    /* Tablet: pills stay side-by-side but shrink so they read as chips, not slabs */
    .bk-pills-col{ flex:1 1 42%; }
    .bk-pill-row{ gap:8px; }
    .bk-pill-label{ padding:10px 16px; gap:8px; }
    .bk-pill-stat{ padding:10px 16px; }
    .bk-pill-title{ font-size:14px; }
    .bk-pill-stat-text{ font-size:14px; }
    .bk-pill-dot{ width:10px; height:10px; }
  }
  @media(max-width:760px){
    .bk-split-body{ flex-direction:column; gap:22px; }
    .bk-image-stage{ min-height:280px; }
    .bk-pill-row{ gap:8px; flex-wrap:wrap; }
    .bk-pill-label{ flex:0 0 auto; padding:10px 16px; gap:8px; }
    .bk-pill-stat{ flex:1 1 auto; padding:10px 16px; justify-content:flex-start; }
    .bk-pill-title{ font-size:13.5px; }
    .bk-pill-stat-text{ font-size:13.5px; text-align:left; }
    .bk-pill-dot{ width:9px; height:9px; }
  }
  @media(max-width:420px){
    .bk-pill-row{ flex-direction:column; align-items:stretch; }
    .bk-pill-label{ flex:0 0 auto; width:100%; }
    .bk-pill-stat{ flex:0 0 auto; width:100%; justify-content:flex-start; }
  }

  /* ════ PATCH PASS ════════════════════════════════════════════════════════ */

  /* Philosophy, eyebrow indented to "Niveshaay" start (past dot) */

  /* Niveshaay Way, always bold, permanent dot */
  .phil-nw .phil-text{ font-weight:700 !important; }
  .phil-dot-perm{
    font-size:inherit; display:inline-block; visibility:visible;
    font-weight:700; margin-right:2px;
  }
  /* "+" indicator, hidden by default, shown on hover via JS */
  .phil-plus{
    font-size:0.9em; display:inline-block; visibility:hidden;
    font-weight:400; color:#1a1a1a; margin-right:2px; line-height:1;
  }
  .phil-item.phil-plus-show .phil-plus{ visibility:visible; }
  .phil-item:hover .phil-plus{ visibility:visible; }
  /* Active text bold */
  .phil-item.phil-active .phil-text{ font-weight:700; }
  /* Reset: Niveshaay Way is always bold regardless of active state */
  .phil-nw .phil-text{ font-weight:700; }

  /* Bedrock, title area of each card (STRIP) should show title clearly */
  .bk-card-title{ font-size:clamp(28px,3.5vw,46px) !important; font-weight:700 !important; }

  /* Ways to Invest, edge-to-edge with big title */
  .ways-title{
    font-size:clamp(28px,4vw,52px); font-weight:400; line-height:1.15;
    margin-bottom:32px;
  }
  .ways-section .ways-tabs{ width:100%; }
  .ways-section .offer-groups-wrap{ width:100%; }

  /* Scuttlebutt final size pass */
  .scutt-card-title{ font-size:clamp(22px,2.8vw,36px) !important; font-weight:700 !important; margin-bottom:24px !important; }
  .scutt-card-body{ font-size:clamp(17px,1.6vw,22px) !important; line-height:1.75 !important; color:var(--ink) !important; }
  .scutt-heading{ font-size:clamp(28px,3.5vw,48px) !important; }

  /* ════ PHILOSOPHY ALIGNMENT, final ══════════════════════════════════════ */
  /* Dot column width: tight, matches "• " visual width */
  /* :root moved to 01-tokens.css */
  .phil-list{ display:flex; flex-direction:column; gap:2px; width:330px; }
  .phil-eyebrow{
    font-size:clamp(15px,1.4vw,19px); font-weight:600; margin-bottom:8px;
    padding-left:var(--dot-w);   /* indent past dot to align with text */
  }
  .phil-item{ display:flex; align-items:baseline; cursor:pointer; gap:0; }
  .phil-dot-perm{
    flex:0 0 var(--dot-w); font-size:inherit; line-height:1.2;
    font-weight:700; text-align:left;
  }
  .phil-plus{
    flex:0 0 var(--dot-w); font-size:inherit; line-height:1.2;
    visibility:hidden; font-weight:300; text-align:left;
  }
  .phil-item.phil-plus-show .phil-plus{ visibility:visible; }
  .phil-item:hover .phil-plus{ visibility:visible !important; }
  #page-strategy .phil-list .phil-item{ position:relative; }
  #page-strategy .phil-list .phil-item .phil-plus{ position:absolute; left:-0.58em; top:50%; transform:translate(-13px,-50%); width:0.6em !important; height:0.6em !important; display:inline-flex !important; align-items:center; justify-content:center; line-height:0; visibility:hidden; }
  #page-strategy .phil-list .phil-item .phil-plus .phil-plus-svg{ width:100%; height:100%; display:block; stroke:#1a1a1a; stroke-width:2.2; stroke-linecap:round; }
  #page-strategy .phil-list .phil-dot-perm{ transform:translateX(-13px); }
  #page-strategy .phil-list .phil-item:hover .phil-plus,
  #page-strategy .phil-list .phil-item.phil-plus-show .phil-plus{ visibility:visible !important; }
  .phil-text{
    flex:1; font-size:clamp(26px,3.2vw,46px);
    line-height:1.15; font-weight:400;
  }
  .phil-nw .phil-text{ font-weight:700; }
  .phil-item.phil-active .phil-text{ font-weight:700; }

/* ===== 30-pages-aif-pe-strategy.css ===== */
/* ===== 30-pages-aif-pe-strategy.css ===== */
/* ════════════════════════════════════════════════════════════════════════
     AIF PAGE, storytelling scroll styles
     ════════════════════════════════════════════════════════════════════════ */

  /* 1. Hero */
  .aif-hero{ }
  .aif-hero-statement{
    font-size:clamp(32px,5vw,72px); font-weight:400; line-height:1.1;
    margin:18px 0 28px; max-width:none;
  }
  .aif-hero-statement em{ font-style:italic; }
  .aif-hero-sub{ font-size:clamp(18px,2vw,26px); line-height:1.5; max-width:760px; color:var(--ink); }

  /* Side description used in sticky-left sections */
  .aif-side-desc{ font-size:clamp(17px,1.6vw,22px); line-height:1.6; margin-top:20px; max-width:380px; }

  /* AIF source card, lighter treatment */
  .scutt-card.aif-source-card{ background:transparent; }
  .scutt-card.aif-source-card .scutt-card-body{ font-size:14px !important; color:var(--gray) !important; }

  /* 5. How we do it, 3 cards side by side */
  .aif-how-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; margin-top:32px; }
  .aif-how-card{ border:1.5px solid var(--ink); padding:36px 32px; display:flex; flex-direction:column; min-height:340px; }
  .aif-how-num{ font-size:14px; font-weight:600; letter-spacing:.1em; color:var(--gray); margin-bottom:auto; }
  .aif-how-title{ font-size:clamp(24px,2.6vw,34px); font-weight:700; margin:24px 0 16px; line-height:1.1; }
  .aif-how-body{ font-size:clamp(16px,1.4vw,19px); line-height:1.65; }

  /* 7. Fund feature sections, sequential, standalone */
  .aif-fund-feature{ border-bottom:2px solid var(--ink); }
  .aif-fund-feature-head{ display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; margin-bottom:18px; }
  .aif-fund-feature-eyebrow{ font-size:13px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--gray); }
  .aif-fund-feature-status{ font-size:clamp(17px,1.7vw,22px); font-weight:600; letter-spacing:.01em; }
  .aif-fund-feature-title{ font-size:clamp(38px,5.6vw,78px); font-weight:400; line-height:1.08; margin-bottom:20px; }
  .aif-fund-feature-lead{ font-size:clamp(18px,1.8vw,24px); line-height:1.55; max-width:820px; margin:0 0 40px; }
  .aif-fund-feature-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:0; border-top:1.5px solid var(--ink); border-left:1.5px solid var(--ink); margin-bottom:40px; }
  .aif-fund-feature-spec{ border-right:1.5px solid var(--ink); border-bottom:1.5px solid var(--ink); padding:24px 24px 28px; }
  .aif-spec-label{ font-size:12px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--gray); margin-bottom:14px; }
  .aif-spec-value{ font-size:clamp(16px,1.5vw,20px); font-weight:500; line-height:1.3; }
  .aif-fund-feature-cta{ display:flex; gap:14px; flex-wrap:wrap; }
  .btn-ghost{ background:transparent; }
  /* Closed fund, muted treatment */
  .aif-fund-closed{ background:var(--tint); }
  .aif-fund-closed .aif-fund-feature-title{ color:var(--gray); }
  @media(max-width:860px){
    .aif-fund-feature-grid{ grid-template-columns:1fr 1fr; }
  }
  @media(max-width:760px){
    #aifHedgehogsFeature > .section-inner, #page-aif-overview .aif-fund-closed > .section-inner{ padding-left:16px !important; padding-right:16px !important; }
    #aifHedgehogsFeature .aif-fund-feature-title, .aif-fund-closed .aif-fund-feature-title{ font-size:clamp(34px,9vw,48px) !important; margin-bottom:16px; }
    .aif-fund-feature-lead{ font-size:clamp(16px,4.4vw,20px) !important; margin-bottom:28px; }
    .aif-fund-feature-head{ gap:10px; margin-bottom:16px; }
    .aif-fund-feature-status{ font-size:clamp(16px,4.6vw,20px) !important; }
    .aif-fund-feature-grid{ grid-template-columns:1fr 1fr !important; margin-bottom:28px; }
    .aif-fund-feature-spec{ padding:18px 16px 20px; }
    .aif-spec-label{ font-size:11px; margin-bottom:8px; }
    .aif-spec-value{ font-size:clamp(15px,4vw,18px) !important; }
    .aif-fund-feature-cta{ flex-direction:column; gap:12px; }
    .aif-fund-feature-cta .btn{ width:100%; text-align:center; box-sizing:border-box; }
  }
  @media(max-width:440px){
    .aif-fund-feature-grid{ grid-template-columns:1fr !important; }
  }

  /* 8. Closing CTA */
  .aif-cta{ }
  .aif-cta-box{
    border:2px solid var(--ink); background:var(--ink); color:var(--paper);
    padding:64px 56px; text-align:center;
  }
  .aif-cta-statement{ font-size:clamp(24px,3.2vw,44px); font-weight:400; line-height:1.34; margin:0 0 20px; font-family:'OV Sage','Jost',sans-serif; }
  .aif-cta-statement em{ font-style:normal; }
  .aif-cta-sub{ font-size:clamp(16px,1.6vw,20px); opacity:.85; margin:0 0 32px; }
  .aif-cta-btn{ background:var(--paper); color:var(--ink); border-color:var(--paper); font-size:16px; padding:16px 36px; }

  @media(max-width:860px){
    .aif-how-grid{ grid-template-columns:1fr; }
    .aif-funds-grid{ grid-template-columns:1fr; }
    .aif-cta-box{ padding:24px 28px 40px; }
  }

  /* ════════════════════════════════════════════════════════════════════════
     PRIVATE EQUITY PAGE
     ════════════════════════════════════════════════════════════════════════ */
  .pe-hero-statement{ font-size:clamp(26px,4vw,56px); font-weight:400; line-height:1.25; margin:18px 0 28px; max-width:800px; }
  .pe-hero-statement em{ font-style:italic; }
  .pe-hero-sub{ font-size:clamp(18px,2vw,26px); line-height:1.5; max-width:780px; }

  /* PE, "We are entrepreneurs before we are investors" centered */
  .pe-entrepreneurs .section-inner{ display:flex; justify-content:center; }
  .pe-ent-block{ max-width:860px; text-align:center; }
  .pe-ent-heading{ font-size:clamp(28px,4vw,56px); font-weight:400; line-height:1.15; margin:0 0 40px; }
  .pe-ent-para{ font-size:clamp(18px,1.7vw,23px); line-height:1.65; margin:0 auto 24px; max-width:760px; }
  .pe-ent-para:last-child{ margin-bottom:0; }

  /* We offer more than capital, 4 cards */
  .pe-offer-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:0; margin-top:32px; border-top:1.5px solid var(--ink); border-left:1.5px solid var(--ink); }
  .pe-offer-card{ border-right:1.5px solid var(--ink); border-bottom:1.5px solid var(--ink); padding:32px 28px 40px; display:grid; grid-template-rows:auto auto 1fr; min-height:300px; }
  .pe-offer-num{ font-size:13px; font-weight:600; letter-spacing:.1em; color:var(--gray); }
  .pe-offer-title{ font-size:clamp(24px,2.6vw,36px); font-weight:700; margin:28px 0 14px; line-height:1.1; min-height:2.2em; display:flex; align-items:flex-start; }
  .pe-offer-body{ font-size:clamp(18px,1.7vw,23px); line-height:1.55; }
  .pe-offer-num{ font-size:15px; }
  .pe-offer-title .offer-sweep{ background-image:linear-gradient(var(--gold),var(--gold)); background-repeat:no-repeat; background-position:0% center; background-size:0% 100%; box-decoration-break:clone; -webkit-box-decoration-break:clone; padding:0 .04em; }
  .pe-offer-title .offer-sweep.pe-sweep-on{ animation:peSweep 4.4s ease forwards; }
  .pe-offer-grid-end{}
  @media(min-width:761px){
    #page-private-equity .pe-offer-card{ opacity:0; transform:translateY(48px); will-change:opacity, transform; transition:opacity 1s cubic-bezier(.22,1,.36,1), transform 1s cubic-bezier(.22,1,.36,1), box-shadow .3s ease; }
    #page-private-equity .pe-offer-card:hover{ transition:transform .3s cubic-bezier(.16,1,.3,1), box-shadow .3s ease; }
    #page-private-equity .pe-offer-card.offer-in{ opacity:1; transform:none; }
    #page-private-equity .pe-offer-grid.offer-run .pe-offer-card:nth-child(1){ transition-delay:0s; }
    #page-private-equity .pe-offer-grid.offer-run .pe-offer-card:nth-child(2){ transition-delay:.16s; }
    #page-private-equity .pe-offer-grid.offer-run .pe-offer-card:nth-child(3){ transition-delay:.32s; }
    #page-private-equity .pe-offer-grid.offer-run .pe-offer-card:nth-child(4){ transition-delay:.48s; }
  }

  /* Portfolio names, all at once */
  .pe-names{ display:flex; flex-wrap:wrap; gap:12px 14px; margin-top:24px; }
  .pe-names span{
    border:1.5px solid var(--ink); padding:10px 18px; font-size:clamp(14px,1.3vw,18px);
    font-weight:500; line-height:1.2; white-space:nowrap;
  }
  .pe-names span:hover{ background:var(--ink); color:var(--paper); cursor:default; }
  .pe-note{ font-size:13px; color:var(--gray); margin-top:24px; font-style:italic; }

  /* Two ways in */
  .pe-ways-grid{ display:grid; grid-template-columns:1fr 1fr; gap:0; margin-top:28px; border:1.5px solid var(--ink); }
  .pe-way-card{ padding:44px 40px; display:flex; flex-direction:column; align-items:flex-start; }
  .pe-way-card + .pe-way-card{ border-left:1.5px solid var(--ink); }
  .pe-way-label{ font-size:13px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--gray); margin-bottom:18px; }
  .pe-way-text{ font-size:clamp(18px,1.8vw,24px); line-height:1.5; margin-bottom:32px; flex:1; }

  @media(max-width:860px){
    .pe-offer-grid{ grid-template-columns:1fr 1fr; }
    .pe-ways-grid{ grid-template-columns:1fr; }
    .pe-way-card + .pe-way-card{ border-left:none; border-top:1.5px solid var(--ink); }
  }

  /* ════════════════════════════════════════════════════════════════════════
     FOUNDER QUOTE, interstitial one-liner (used across pages)
     ════════════════════════════════════════════════════════════════════════ */
  .founder-quote .section-inner{ text-align:center; padding-top:40px; padding-bottom:40px; }
  .fq-mark{ font-size:clamp(60px,8vw,120px); line-height:0.6; font-weight:700; margin:0 0 8px; font-family:'OV Sage','Jost',sans-serif; }
  .fq-text{ font-size:clamp(26px,3.6vw,48px); font-weight:400; font-style:italic; line-height:1.2; max-width:900px; margin:0 auto 20px; }
  .fq-attr{ font-size:15px; font-weight:600; letter-spacing:.04em; color:var(--gray); margin:0; }
  .founder-quote.alt-quote{ background:var(--ink); }
  .founder-quote.alt-quote .fq-mark,
  .founder-quote.alt-quote .fq-text{ color:var(--paper); }
  .founder-quote.alt-quote .fq-attr{ color:var(--paper); opacity:.7; }

  /* ════════════════════════════════════════════════════════════════════════
     STRATEGY PAGE
     ════════════════════════════════════════════════════════════════════════ */
  .strat-hero-statement{ font-size:clamp(26px,4vw,56px); font-weight:400; line-height:1.25; margin:18px 0 28px; max-width:800px; }
  .strat-hero-statement em{ font-style:italic; }
  .strat-hero-sub{ font-size:clamp(18px,2vw,26px); line-height:1.5; max-width:760px; }
  .scutt-eyebrow-sm{ font-size:13px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--gray); margin-bottom:18px; }
  .strat-lead{ font-size:clamp(18px,1.8vw,24px); line-height:1.55; max-width:760px; margin:0 0 36px; }

  /* The businesses we look for, bullet list */
  .strat-look-grid{ display:grid; grid-template-columns:1fr 1fr; gap:0; border-top:1.5px solid var(--ink); border-left:1.5px solid var(--ink); }
  .strat-look-item{ border-right:1.5px solid var(--ink); border-bottom:1.5px solid var(--ink); padding:32px 32px; font-size:clamp(18px,1.8vw,24px); line-height:1.35; display:flex; align-items:flex-start; gap:16px; min-height:120px; }
  .strat-look-dot{ flex:0 0 12px; width:12px; height:12px; border-radius:50%; background:var(--ink); margin-top:8px; }

  /* The people + the angle, pair */
  .strat-pair-grid{ display:grid; grid-template-columns:1fr 1fr; gap:0; border:1.5px solid var(--ink); }
  .strat-pair-card{ padding:48px 44px; }
  .strat-pair-card + .strat-pair-card{ border-left:1.5px solid var(--ink); }
  .strat-pair-title{ font-size:clamp(24px,2.8vw,36px); font-weight:700; line-height:1.1; margin-bottom:20px; }
  .strat-pair-body{ font-size:clamp(16px,1.5vw,20px); line-height:1.6; margin:0; }

  /* The system, header above stacked cards */
  .strat-system-head{ margin-bottom:36px; }
  #stratMethodSection{ border-bottom:none !important; }
  .strat-system-head .bedrock-title{ margin-bottom:0; }
  /* removed: was a stacking-card scroll track */
  #stratSystemSection .bk-card{ height:32vh; }
  #stratSystemSection .bk-cards{ height:calc(100% - 84px); }
  /* Strategy has 5 stacked cards: tighter top gap to the logo + compact cards */
  #stratSystemSection .bk-viewport{ padding-top:72px; }
  #stratSystemSection .strat-system-head{ margin-bottom:24px; }
  @media(max-width:760px){
    /* removed: was a stacking-card scroll track */
    #stratSystemSection .bk-viewport{ padding-top:20px; padding-left:16px !important; padding-right:16px !important; }
    #stratSystemSection.bedrock-section, #hhApproachSection.bedrock-section, #peApproachSection.bedrock-section, #eqbApproachSection.bedrock-section{ padding-left:0 !important; padding-right:0 !important; }
    #hhApproachSection .bk-viewport, #peApproachSection .bk-viewport, #eqbApproachSection .bk-viewport{ padding-left:16px !important; padding-right:16px !important; }
    #stratSystemSection .bk-cards{ height:calc(100% - 64px); }
  }

  /* ════ BEDROCK, home — normal-flow section (no pin), image parallax only ═══════ */
  #bedrockSection{ height:auto; }
  .bk3-art{ display:flex; align-items:center; justify-content:flex-start; padding:4px 0 2px; }
  .bk3-art img{ width:min(30%,88px); height:auto; display:block; }
  .bk-stat{
    font-family:'OV Sage','Jost',sans-serif; font-weight:700;
    font-size:clamp(26px,2.6vw,44px); line-height:1.1; color:var(--greenDeep);
    text-align:right;
  }
  @media (max-width:900px){
    .bk3-art{ justify-content:flex-start; }
    .bk3-art img{ width:64px; }
    .bk-stat{ text-align:left; }
  }

  /* The close */
  .strat-close-cta{ display:flex; gap:14px; justify-content:center; flex-wrap:wrap; }
  .strat-close-ghost{ background:transparent; color:var(--paper); border-color:var(--paper); padding:16px 36px; font-size:16px; }

  @media(max-width:860px){
    .strat-look-grid{ grid-template-columns:1fr; }
    .strat-pair-grid{ grid-template-columns:1fr; }
    .strat-pair-card + .strat-pair-card{ border-left:none; border-top:1.5px solid var(--ink); }
  }

/* ===== 90-rebrand-overrides.css ===== */
/* ===== 90-rebrand-overrides.css ===== */
/* ================= NIVESHAAY REBRAND ================= */
/* :root moved to 01-tokens.css */
html,body{background:var(--paper); overflow-x:clip;}
html{ max-width:100%; }
::selection{background:var(--gold);color:var(--ink);}
.nav,.crumb{display:none !important;}
/* :root moved to 01-tokens.css */
/* moved to 01-tokens.css */
/* moved to 01-tokens.css */
.niv-logo-fix{position:fixed;top:var(--niv-inset);left:var(--hero-text-inset);z-index:130;font-weight:700;font-size:17px;letter-spacing:.14em;color:var(--greenDeep);cursor:pointer;padding:0;line-height:1;user-select:none;}
.niv-logo-fix .niv-dev{font-weight:600;letter-spacing:0;}
.niv-logo-fix{display:flex;align-items:center;}
.niv-logo-img{height:44px;width:auto;display:block;}
.niv-logo-stack{position:relative;display:block;}
.niv-logo-stack .niv-logo-green{transition:opacity .5s ease;}
.niv-logo-stack .niv-logo-gold{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;transition:opacity .5s ease;background-color:#F0C257;-webkit-mask:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e71de01695b95cf796c7c_niveshaay-logo.png') left center/contain no-repeat;mask:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e71de01695b95cf796c7c_niveshaay-logo.png') left center/contain no-repeat;}
.niv-logo-fix.logo-gold .niv-logo-green{opacity:0;}
.niv-logo-fix.logo-gold-instant .niv-logo-green,
.niv-logo-fix.logo-gold-instant .niv-logo-gold{transition:none;}
.niv-logo-fix.logo-gold .niv-logo-gold{opacity:1;}
.niv-logo-fix.aif-logo-gold .niv-logo-green{opacity:0;}
.niv-logo-fix.aif-logo-gold .niv-logo-gold{opacity:1;}
/* Hero-entrance logo enlargement: 1.3× while at the top of the home hero,
   eases back to 1× as soon as the user starts scrolling. */
.niv-logo-fix{ transform-origin:left center; }
/* Mobile: on the Knowledge hub (and its Case Study sub-page) the content inset
   drops to 16px, so the fixed logo — which is also the mobile nav bar — aligns
   to the page title's left edge rather than the wider hero inset. */
@media(max-width:760px){
  /* :has() rather than the JS-set body[data-page] attribute — the attribute
     needs a script reload to appear, this works from the markup alone. */
  body:has(#page-knowledge.active) .niv-logo-fix,
  body:has(#page-case-study.active) .niv-logo-fix,
  body[data-page="knowledge"] .niv-logo-fix,
  body[data-page="case-study"] .niv-logo-fix{ left:16px !important; }
}
.niv-logo-fix.logo-hero-big{ transform:scale(1.3); }
.niv-island{position:fixed;top:var(--niv-inset);right:var(--niv-inset);z-index:130;display:flex;flex-direction:column;align-items:flex-end;}
/* Invisible hover bridge — fills the gap between the fab and the panel so moving the
   pointer down into the menu never crosses a dead zone that closes the dropdown. */
.niv-island::after{content:"";position:absolute;top:100%;right:0;width:300px;height:calc(var(--niv-gap) + 8px);pointer-events:none;}
.niv-island:hover::after,.niv-island.open::after{pointer-events:auto;}
.niv-fab{height:var(--niv-fab-h);padding:0 25px 0 30px;border-radius:0;background:var(--paper);position:relative;overflow:hidden;border:1.5px solid var(--greenDeep);box-shadow:none;cursor:pointer;display:flex;align-items:center;gap:14px;justify-content:center;transition:background .22s cubic-bezier(.4,0,.2,1),border-color .22s;flex:0 0 auto;}
.niv-fab-label{font-family:var(--f-serif);font-size:20px;font-weight:400;color:var(--greenDeep);line-height:1;transition:color .22s;position:relative;z-index:1;}
.niv-fab::before{content:'';position:absolute;inset:0;background:var(--greenDeep);clip-path:circle(0% at 20px 50%);transition:clip-path .52s cubic-bezier(.22,.75,.3,1);z-index:0;pointer-events:none;}
.niv-island:hover .niv-fab::before{clip-path:circle(125% at 20px 50%);}
.niv-fab-icon{position:relative;z-index:1;width:21px;height:15px;flex:0 0 auto;}
.niv-fab-icon span{position:absolute;left:0;width:21px;height:2px;border-radius:0;background:var(--greenDeep);transition:transform .28s cubic-bezier(.4,0,.2,1),opacity .2s,background .22s;}
.niv-fab-icon span:nth-child(1){top:0;}
.niv-fab-icon span:nth-child(2){top:6.5px;}
.niv-fab-icon span:nth-child(3){top:13px;}
.niv-island.open .niv-fab{background:var(--greenDeep);border-color:var(--greenDeep);}
.niv-island.open .niv-fab-label{color:var(--paper);}
.niv-island.open .niv-fab-icon span{background:var(--paper);}
.niv-island.open .niv-fab-icon span:nth-child(1){transform:translateY(6.5px) rotate(45deg);}
.niv-island.open .niv-fab-icon span:nth-child(2){opacity:0;}
.niv-island.open .niv-fab-icon span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg);}
/* Pure-CSS hover fallback — the DC runtime can re-render nodes and drop JS-bound
   listeners, so hover must not depend on JS state at all. */
.niv-island:hover .niv-fab{border-color:var(--paper);}
.niv-island:hover .niv-fab-label{color:var(--paper);}
.niv-island:hover .niv-fab-icon span{background:var(--paper);}
/* icon morph to X only on click (.open), not on hover */
/* Panel opens on click only (.open) — hover animates the button but does NOT drop the menu. */
/* Panel is viewport-fixed with the SAME inset token as the button — a matching
   right+bottom margin from the screen edge, so it never randomly rescales or
   spills off-canvas. It's pinned to the right edge and grows LEFT (wide, not a
   narrow list) — transform-origin stays top-right so it visibly extends
   leftward out of the button. Height is whatever top/bottom insets leave,
   scrolling internally only as a safety net. */
.niv-panel{
  display:flex; flex-direction:column; position:fixed;
  top:calc(var(--niv-inset) + var(--niv-fab-h) + var(--niv-gap));
  right:var(--niv-inset); left:auto; bottom:auto;
  width:max-content;
  min-width:min(248px, calc(100vw - 2 * var(--niv-inset)));
  max-width:calc(100vw - 2 * var(--niv-inset));
  overflow:visible;
  background:var(--paper); border:1.5px solid var(--greenDeep);
  box-shadow:0 18px 50px rgba(44,40,30,.22);
  padding:16px 16px; gap:1px;
  opacity:0; transform:translateY(-8px) scale(.98); pointer-events:none;
  transform-origin:top right;
  transition:opacity .2s cubic-bezier(.4,0,.2,1), transform .2s cubic-bezier(.4,0,.2,1);
}
.niv-island.open .niv-panel{ opacity:1; transform:translateY(0) scale(1); pointer-events:auto; }
/* Traveling hover dot removed. */
.niv-hover-dot{ display:none !important; }
/* Consistent, px-based scale + symmetric spacing across every viewport. */
.niv-item{
  display:flex; align-items:center; width:100%; text-align:left;
  border:none; background:none; color:var(--ink);
  font-family:'OV Sage','Jost',sans-serif; font-size:22px; font-weight:500; line-height:1.1;
  padding:9px 14px; cursor:pointer; white-space:nowrap; letter-spacing:0;
  transition:background .15s ease, color .15s ease;
}
.niv-item:hover{ background:var(--greenDeep); color:var(--paper); }
.niv-item.active{ background:var(--greenDeep); color:var(--paper); }
.niv-item.active:hover{ background:var(--greenDeep); color:var(--paper); }
.niv-item.niv-group-head{
  cursor:default; font-family:'OV Sage','Jost',sans-serif; font-size:22px; font-weight:500;
  letter-spacing:0; text-transform:none; color:var(--ink); padding:10px 14px 4px;
}
.niv-item.niv-group-head:hover{ background:none; color:var(--ink); }
.niv-item.niv-group-head.active{ background:none; color:var(--greenDeep); font-weight:600; }
.niv-sublist{ display:flex; flex-direction:column; gap:2px; margin:2px 0 8px; padding-left:14px; border-left:1.5px solid var(--tint); }
.niv-item.niv-sub{
  font-family:'Jost',sans-serif; font-size:14px; font-weight:500;
  padding:6px 14px; color:var(--ink); opacity:.92; letter-spacing:0;
}
.niv-item.niv-sub:hover{ opacity:1; background:var(--greenDeep); color:var(--paper); }
.niv-item.niv-sub.active{ opacity:1; background:var(--greenDeep); color:var(--paper); }
.niv-item.niv-sub.active:hover{ background:var(--greenDeep); color:var(--paper); }
.niv-portal{
  margin-top:14px; align-self:stretch; width:100%;
  background:transparent; color:var(--greenDeep); border:1.5px solid var(--greenDeep);
  font-family:'OV Sage','Jost',sans-serif; font-size:21px; font-weight:500; height:60px; padding:0 28px;
  display:inline-flex; align-items:center; justify-content:center; gap:8px; line-height:1;
  cursor:pointer; white-space:nowrap; flex:0 0 auto;
  transition:background .22s ease, color .22s ease, border-color .22s ease;
}
.niv-portal:hover{ background:var(--greenDeep); color:var(--gold); border-color:var(--greenDeep); }
/* ══ DESKTOP NAV BAR (>1024px only; mobile/tablet keep the hamburger island) ══ */
.dnav{ display:none; }
@media(min-width:1025px){
  .niv-island{ display:none !important; }
  .dnav{
    display:block; position:fixed; top:0; left:0; right:0; z-index:129;
    transform:translateY(0); transition:transform .34s cubic-bezier(.22,.75,.3,1);
    /* The bar is a full-width band — only its actual controls may take the
       pointer, or it would swallow clicks across the top of every page. */
    pointer-events:none;
  }
  .dnav-item, .dnav-link, .dnav-portal, .dnav-panel, .dnav .niv-logo-fix{ pointer-events:auto; }
  .dnav-sheet{ pointer-events:none; }
  .dnav.dnav-hidden{ transform:translateY(-104%); }
  /* The logo rides inside the bar on desktop — no animation of its own, no
     load-in slide, no scroll slide. The bar's transform carries it. */
  .niv-logo-fix{ animation:none !important; transition:none !important; }
  /* Cream bar that pulls down on scroll-up; invisible at the very top of a page. */
  .dnav-sheet{
    position:absolute; inset:0; background:var(--paper);
    border-bottom:1.5px solid var(--greenDeep);
    box-shadow:0 10px 30px rgba(44,40,30,.10);
    opacity:0; transition:opacity .28s ease; pointer-events:none;
  }
  .dnav.dnav-solid .dnav-sheet{ opacity:1; }
  /* Panel hangs off the compact bar when it is solid. */
  .dnav.dnav-solid .dnav-panel{ top:76px; }
  /* Baseline row: content bottom lands exactly on the logo's bottom edge
     (logo top = --niv-inset, logo height = 44px). */
  /* One vertical position for the bar in every state: the compact 76px strip,
     so the logo and labels don't jump when the cream sheet comes down. */
  .dnav-row{
    position:relative; height:76px;
    display:flex; align-items:flex-end; justify-content:flex-end; gap:clamp(16px,1.8vw,26px);
    padding:0 var(--niv-inset) 16px var(--hero-text-inset);
  }

  /* Once the bar is pulled down as a cream strip, the tall hero inset above the
     links is dead space — tighten it to a compact bar. */
  /* 16px above the logo, 16px below it (logo is 44px tall → 76px bar). */
  .dnav.dnav-solid .dnav-row{ height:76px; padding-bottom:16px; }
  /* Over the hero (bar still transparent) the whole row sits a little lower. */
  .dnav:not(.dnav-solid) .dnav-row{ height:calc(var(--niv-inset) + 44px + 24px); }
  .dnav:not(.dnav-solid) .dnav-panel{ top:calc(var(--niv-inset) + 44px + 32px); }
  .dnav .dnav-row{ transition:height .28s cubic-bezier(.22,.75,.3,1); }
  /* The logo lives in the bar: fixed offset, moved only by the bar itself. */
  /* Scoped to "inside the bar" ON PURPOSE. niv-app.js MOVES this element into
     #dnav; the absolute box only makes sense once it is there. Applied
     unconditionally (as it was), any re-render that returns the logo to its
     authored parent left it absolute against the page — so it dropped out of the
     header and landed mid-document, over section 2. Outside the bar it now keeps
     the base position:fixed and stays in the top-left corner regardless. */
  .dnav > .niv-logo-fix{
    position:absolute !important; top:auto !important; bottom:16px !important;
    left:var(--hero-text-inset) !important; transform:translateY(var(--dnav-logo-shift, 0px)) !important;
  }
  .dnav-logo-slot{ position:relative; }
  /* No colour fade — a transition turns any transient state change into a
     visible blink during page switches. */
  .dnav-link{
    background:none; border:none; padding:6px 0; cursor:pointer; transition:none !important;
    font-family:'OV Sage','Jost',sans-serif; font-size:16px; font-weight:500; line-height:1;
    color:var(--greenDeep); white-space:nowrap; position:relative;
    display:inline-flex; align-items:center; gap:6px;
    transition:color .2s ease;
  }
  .dnav-link::after{
    content:""; position:absolute; left:0; right:0; bottom:0; height:1.5px;
    background:currentColor; transform:scaleX(0); transform-origin:left center;
    transition:transform .26s cubic-bezier(.22,.75,.3,1);
  }
  .dnav-link:hover::after, .dnav-link:focus-visible::after, .dnav-item.open .dnav-link::after{ transform:scaleX(1); }
  .dnav-link.active::after{ transform:scaleX(1); }
  /* On dark hero sections the links go gold, mirroring the logo. */
  .dnav.on-dark:not(.dnav-solid) .dnav-link{ color:#F0C257; }
  .dnav.on-dark:not(.dnav-solid) .dnav-portal{ color:#F0C257; border-color:#F0C257; }
  /* The home hero keeps the vibrant gold; other pages' terracotta hero images
     take the soft gold. */
  .dnav.on-dark.on-terra:not(.dnav-solid) .dnav-link{ color:var(--gold); }
  .dnav.on-dark.on-terra:not(.dnav-solid) .dnav-portal{ color:var(--gold); border-color:var(--gold); }
  .dnav.on-terra:not(.dnav-solid) .niv-logo-fix .niv-logo-gold{ background-color:var(--gold) !important; }
  .dnav-portal{
    background:transparent; color:var(--greenDeep); border:1.5px solid var(--greenDeep);
    font-family:'OV Sage','Jost',sans-serif; font-size:15px; font-weight:500;
    height:34px; padding:0 16px; margin-left:4px;
    display:inline-flex; align-items:center; gap:8px; line-height:1; cursor:pointer; white-space:nowrap;
    transition:background .22s ease, color .22s ease, border-color .22s ease;
  }
  .dnav-portal:hover{ background:var(--greenDeep); color:var(--gold); border-color:var(--greenDeep); }
  /* ── Invest mega-panel ── */
  .dnav-item{ position:relative; display:inline-flex; align-items:flex-end; }
  .dnav-caret{ width:10px; height:10px; flex:none; transition:transform .26s ease; }
  .dnav-item.open .dnav-caret{ transform:rotate(180deg); }
  /* Hover bridge so a diagonal path into the panel never crosses a dead zone. */
  .dnav-item::after{ content:""; position:absolute; top:100%; left:-40px; right:-40px; height:30px; pointer-events:none; }
  .dnav-item:hover::after, .dnav-item.open::after{ pointer-events:auto; }
  .dnav-panel{
    position:fixed; pointer-events:none; top:76px;
    left:var(--hero-text-inset); right:var(--niv-inset);
    background:var(--paper); border:1.5px solid var(--greenDeep);
    box-shadow:0 22px 60px rgba(44,40,30,.20);
    padding:18px 18px 14px;
    opacity:0; transform:translateY(-10px); pointer-events:none; visibility:hidden;
    transition:opacity .22s cubic-bezier(.4,0,.2,1), transform .22s cubic-bezier(.4,0,.2,1), visibility 0s linear .22s;
  }
  .dnav-item:hover .dnav-panel, .dnav-item.open .dnav-panel{
    opacity:1; transform:translateY(0); pointer-events:auto; visibility:visible; transition-delay:0s,0s,0s;
  }
  .dnav-item.dnav-dismissed .dnav-panel{
    opacity:0 !important; transform:translateY(-6px) !important;
    pointer-events:none !important; visibility:hidden !important; transition-delay:0s,0s,0s !important;
  }
  /* An open dialog outranks the nav entirely: hover must not resurrect the
     panel over it, and the bar must not paint above it. */
  body.popup-open .dnav-panel{ opacity:0 !important; visibility:hidden !important; pointer-events:none !important; }
  body.popup-open .dnav{ z-index:60; }
  /* Force-closed beats :hover — used when a panel action opens a dialog. */
  .dnav-item.force-closed .dnav-panel{
    opacity:0 !important; transform:translateY(-10px) !important;
    pointer-events:none !important; visibility:hidden !important;
  }
  .dnav-panel-eyebrow{
    font-family:'Jost',sans-serif; font-size:11.5px; font-weight:600; letter-spacing:.13em;
    text-transform:uppercase; color:var(--gray); margin-bottom:12px;
  }
  /* Height is driven by --dnav-panel-h so the gap to the hero stat cards stays
     constant on larger screens; cells stretch to fill. */
  .dnav-panel[style*="--dnav-panel-h"]{ height:var(--dnav-panel-h); display:flex; flex-direction:column; }
  /* Three vertical cards side by side. */
  .dnav-grid{
    display:grid; grid-template-columns:repeat(3,1fr); grid-template-rows:auto 1fr;
    gap:12px; flex:1 1 auto; min-height:0;
  }
  /* A panel with only two cards (Knowledge, while Case Study is hidden) splits
     the width in two instead of leaving an empty third column. Returns to three
     on its own when the third card is shown again. */
  .dnav-grid:has(> .dnav-cell:nth-child(2):last-child){ grid-template-columns:repeat(2,1fr); }
  .dnav-cell{
    text-align:left; background:transparent; border:1px solid var(--greenDeep); cursor:pointer;
    padding:26px 26px 30px; min-height:214px; display:grid; grid-row:span 2; grid-template-rows:subgrid; gap:14px; position:relative;
    /* Cells stretch with the panel — centre the text block so tall cells don't
       leave dead space under it. Rows are equal height, so titles stay aligned. */
    align-content:start;
    transition:background .2s ease, border-color .2s ease;
  }
  .dnav-cell:hover, .dnav-cell:focus-visible{ background:var(--greenDeep); border-color:var(--greenDeep); outline:none; }
  /* Starburst, top-right — same pop as the glance/approach cards. */
  .dnav-burst{ position:absolute; top:26px; right:14px; width:46px; height:46px; transform:translateY(0); overflow:visible; pointer-events:none; z-index:2; }
  .dnav-burst line{ stroke:var(--gold); stroke-width:2.6; stroke-linecap:round; transform:scale(0); transform-origin:center; transition:transform .45s cubic-bezier(.16,1,.3,1); }
  .dnav-burst circle{ fill:var(--gold); transform:scale(0); transform-origin:center; transition:transform .4s cubic-bezier(.16,1,.3,1); }
  .dnav-cell:hover .dnav-burst line, .dnav-cell:hover .dnav-burst circle,
  .dnav-cell:focus-visible .dnav-burst line, .dnav-cell:focus-visible .dnav-burst circle{ transform:scale(1); }
  .dnav-cell-title{
    font-family:'OV Sage','Jost',sans-serif; font-size:21px; font-weight:500; line-height:1.15;
    color:var(--ink); margin-top:0; padding-right:44px; transition:color .2s ease;
  }
  .dnav-cell-body{
    font-family:'Jost',sans-serif; font-size:14.5px; line-height:1.45; color:var(--ink);
    max-width:none; transition:color .2s ease;
  }
  .dnav-cell:hover .dnav-cell-title, .dnav-cell:focus-visible .dnav-cell-title{ color:var(--gold); }
  .dnav-cell:hover .dnav-cell-body, .dnav-cell:focus-visible .dnav-cell-body{ color:var(--paper); opacity:.9; }
  .dnav-panel-foot{
    display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap;
    margin-top:14px; padding-top:11px; border-top:1px solid var(--tint);
    font-family:'Jost',sans-serif; font-size:11.5px; line-height:1.5; color:var(--gray);
  }
  .dnav-panel-foot button{
    background:none; border:none; padding:0; cursor:pointer; color:var(--greenDeep);
    font-family:'Jost',sans-serif; font-size:11.5px; font-weight:600; text-decoration:underline; text-underline-offset:3px;
  }
  /* While the cream bar is down, the logo must read on cream, not gold. */
  body.dnav-solid .niv-logo-fix .niv-logo-gold{ opacity:0 !important; }
  body.dnav-solid .niv-logo-fix .niv-logo-green{ opacity:1 !important; }
}
@media(min-width:1025px) and (prefers-reduced-motion:reduce){
  .dnav, .dnav-panel{ transition:opacity .01s linear; }
}
/* ══ MOBILE/TABLET pull-down cream bar (≤1024px) ══
   The logo and menu button keep their hero positions; once past the hero they
   hide on scroll-down and return sitting inside a cream bar on scroll-up. */
.mnav-sheet{ display:none; }
@media(max-width:1024px){
  .mnav-sheet{
    /* Same 76px band as the desktop bar. */
    display:block; position:fixed; top:0; left:0; right:0; z-index:128;
    height:76px;
    background:var(--paper); border-bottom:1.5px solid var(--greenDeep);
    box-shadow:0 8px 24px rgba(44,40,30,.10);
    opacity:0; pointer-events:none; transform:translateY(0);
    transition:transform .45s cubic-bezier(.22,.8,.28,1), opacity .3s ease;
  }
  html.nvnav-solid .mnav-sheet{ opacity:1; }
  html.nvnav-hidden .mnav-sheet{ transform:translateY(-100%); }
  /* Logo + menu button ARE the bar's contents once it is down: 16px above and
     below the 44px logo, and they travel with the bar on the same easing. */
  html.nvnav-solid .niv-logo-fix,
  html.nvnav-solid .niv-island{ top:16px !important; }
  html.nvnav-hidden .niv-logo-fix,
  html.nvnav-hidden .niv-island{ transform:translateY(-92px) !important; opacity:1; }
  html.nvnav-solid .niv-logo-fix{ transform:none !important; }

}
/* Mobile/tablet nav sizing — placed AFTER the base .niv-logo-fix/.niv-fab rules
   so it actually wins (equal specificity → later rule applies). Scales the whole
   top band (logo left, menu right) down to sit tidily above the hero text. */
@media(max-width:900px){
  /* logo top now equals the menu button's top edge (both = --niv-inset) */
  .niv-logo-img{ height:37px; }
  .niv-fab{ padding:0 20px 0 24px; }
  .niv-fab-label{ font-size:17px; }
}
@media(max-width:760px){
  .niv-logo-img{ height:31px; }
  .niv-island{ right:20px !important; }
}
/* ── Menu button, mobile + tablet: a circle with the hamburger only. No label,
   no rectangle. Applies everywhere the fixed button appears, including once the
   cream nav bar has come down. ── */
@media(max-width:1024px){
  .niv-fab{
    width:calc(var(--niv-fab-h) - 6px); height:calc(var(--niv-fab-h) - 6px);
    padding:0 !important; gap:0 !important; border-radius:50% !important;
    justify-content:center; align-items:center; flex:0 0 auto;
  }
  .niv-fab-label{ display:none !important; }
  /* Over page content the circle carries no outline. Inside the cream nav bar it
     reads as a solid green disc with cream lines, inverting to a cream disc with
     green lines once tapped open. */
  .niv-fab{ border-color:transparent; }
  html.nvnav-solid .niv-fab{ background:var(--greenDeep); border-color:var(--greenDeep); }
  html.nvnav-solid .niv-fab::before{ display:none; }
  html.nvnav-solid .niv-fab-icon span{ background:var(--paper); }
  html.nvnav-solid .niv-island.open .niv-fab{ background:var(--paper); border-color:var(--greenDeep); }
  html.nvnav-solid .niv-island.open .niv-fab-icon span{ background:var(--greenDeep); }
  /* the fill sweep starts from the middle now the button is round */
  .niv-fab::before{ clip-path:circle(0% at 50% 50%); }
  .niv-island:hover .niv-fab::before,
  .niv-island.open .niv-fab::before{ clip-path:circle(72% at 50% 50%); }
  .niv-fab-icon{ width:19px !important; height:15px !important; }
  .niv-fab-icon span{ width:19px !important; }
}
@media(max-width:760px){
  #page-home #bedrockSection ~ .web-section{ padding-left:28px !important; padding-right:28px !important; }
}
/* Scuttlebutt parallax cards: tall/portrait across the whole stacked range
   (covers tablet ~900px where the layout is single-column). */
@media(max-width:980px){
  #homeScuttleSection .aif-works-layout{ flex-direction:column !important; }
  /* Single-column below 980px: the left column must stop sticking, otherwise it
     stays pinned and overlaps the steps/images as you scroll. */
  #homeScuttleSection .aif-works-left{ position:static !important; top:auto !important; flex:0 0 auto !important; width:100% !important; align-self:auto !important; }
  #homeScuttleSection .aif-works-step{ flex-direction:column !important; gap:14px !important; }
  #homeScuttleSection .aif-works-card{ width:100% !important; height:50vh !important; min-height:322px !important; max-height:462px !important; aspect-ratio:auto !important; }
  #homeScuttleSection .aif-works-parallax{ background-size:cover !important; background-position:center !important; }
  #homeScuttleSection .aif-works-heading{ margin:0 0 8px !important; }
  #homeScuttleSection .aif-works-desc{ margin-top:0 !important; }
}
/* Strategy "When the crisis strikes" parallax cards — same mobile treatment
   as the home scuttlebutt section (single column, tall portrait cards). */
@media(max-width:980px){
  /* superseded by .awh-* grid layout */
  #page-strategy #stratLookSection .aif-works-layout{ flex-direction:column !important; }
  #page-strategy #stratLookSection .aif-works-step{ flex-direction:column !important; gap:14px !important; align-items:stretch !important; }
  #page-strategy #stratLookSection .aif-works-right{ flex:1 1 auto !important; width:100% !important; min-width:0 !important; }
  #page-strategy #stratLookSection .aif-works-card{ width:100% !important; height:50vh !important; min-height:322px !important; max-height:462px !important; aspect-ratio:auto !important; flex:0 0 auto !important; }
  #page-strategy #stratLookSection .aif-works-parallax,
  #page-strategy #stratLookSection .aif-works-parallax[data-grad="1"],
  #page-strategy #stratLookSection .aif-works-parallax[data-grad="2"],
  #page-strategy #stratLookSection .aif-works-parallax[data-grad="3"],
  #page-strategy #stratLookSection .aif-works-parallax[data-grad="4"]{ background-size:cover !important; background-position:center !important; }
  #page-strategy #stratLookSection .aif-works-heading{ margin:0 0 8px !important; }
  #page-strategy #stratLookSection .aif-works-desc{ margin-top:0 !important; }
}
@media(max-width:760px){
  #page-strategy #stratLookSection .aif-works-parallax[data-grad="2"]{ background-size:cover !important; background-position:72% 68% !important; }
  #page-strategy #stratLookSection.web-section{ padding-left:12px !important; padding-right:12px !important; }
  #page-strategy #stratLookSection .aif-works-right{ gap:32px !important; }
  #page-strategy #stratLookSection .aif-works-title{ margin-bottom:8px !important; font-size:clamp(24px,6.6vw,32px) !important; line-height:1.14 !important; }
  #page-strategy #stratLookSection .aif-works-step{ gap:12px !important; }
  #page-strategy #stratLookSection .aif-works-left{ position:static !important; flex:0 0 auto !important; width:100% !important; }
  #page-strategy #stratLookSection .aif-works-heading{ font-size:clamp(28px,8vw,40px) !important; line-height:1.14 !important; overflow-wrap:break-word; word-break:break-word; }
  #page-strategy #stratLookSection .aif-works-desc,
  #page-strategy #stratLookSection .aif-works-body{ font-size:clamp(15px,4vw,18px) !important; line-height:1.55 !important; max-width:100% !important; overflow-wrap:break-word; }
}
/* Very narrow phones handled by base pill layout. */
/* PE "We are entrepreneurs before we are investors" parallax cards — same mobile
   treatment as the strategy crisis section (single column, tall portrait cards). */
@media(max-width:980px){
  #peBuilderSection .aif-works-layout{ flex-direction:column !important; }
  #peBuilderSection .aif-works-step{ flex-direction:column !important; gap:14px !important; align-items:stretch !important; }
  #peBuilderSection .aif-works-right{ flex:1 1 auto !important; width:100% !important; min-width:0 !important; }
  #peBuilderSection .aif-works-card{ width:100% !important; height:50vh !important; min-height:322px !important; max-height:462px !important; aspect-ratio:auto !important; flex:0 0 auto !important; }
  .aif-works-parallax{ top:-10% !important; height:120% !important; }
  #peBuilderSection .aif-works-parallax,
  #peBuilderSection .aif-works-parallax.scutt-img{ background-size:cover !important; background-position:center !important; }
  #peBuilderSection .aif-works-right .aif-works-parallax.scutt-2{ background-position:60% center !important; }
  #peBuilderSection .aif-works-right .aif-works-parallax.scutt-3{ background-position:35% center !important; }
  #peBuilderSection .aif-works-heading{ margin:0 0 8px !important; }
  #peBuilderSection .aif-works-desc{ margin-top:0 !important; }
}
@media(max-width:760px){
  #peBuilderSection.web-section{ padding-left:12px !important; padding-right:12px !important; }
  #peBuilderSection .aif-works-right{ gap:32px !important; }
  #peBuilderSection .aif-works-title{ margin-bottom:8px !important; font-size:clamp(24px,6.6vw,32px) !important; line-height:1.14 !important; }
  #peBuilderSection .aif-works-step{ gap:12px !important; }
  #peBuilderSection .aif-works-left{ position:static !important; flex:0 0 auto !important; width:100% !important; }
  #peBuilderSection .aif-works-heading{ font-size:clamp(28px,8vw,40px) !important; line-height:1.14 !important; overflow-wrap:break-word; word-break:break-word; }
  #peBuilderSection .aif-works-desc,
  #peBuilderSection .aif-works-body{ font-size:clamp(15px,4vw,18px) !important; line-height:1.55 !important; max-width:100% !important; overflow-wrap:break-word; }
}
/* ===== News & Research (home) — native mobile responsiveness ===== */
@media(max-width:760px){
  #page-home .know-head{ flex-direction:column; align-items:stretch; gap:14px; margin-bottom:20px; }
  #page-home #bedrockSection ~ .web-section:has(.know-head){ padding-left:12px !important; padding-right:12px !important; }
  #page-home #bedrockSection ~ .web-section:has(.know-head) .section-inner{ padding-left:0 !important; padding-right:0 !important; max-width:none !important; }
  #page-home .know-head .sec-title{ font-size:clamp(30px,8.5vw,40px) !important; margin-bottom:0; }
  #page-home .know-tabs{ width:100%; gap:8px; }
  #page-home .know-tabs .tab{ flex:1 1 0; padding:11px 12px; font-size:13px; text-align:center; }
  #page-home .know-all-grid{ grid-template-columns:1fr !important; gap:16px; }
  /* News/Research → one-card horizontal carousel (swipe + arrow keys) on mobile */
  #page-home .know-all-news,
  #page-home .news-grid,
  #page-home #signalsGrid{ display:flex !important; flex-direction:row !important; grid-template-columns:none !important; overflow-x:auto; scroll-snap-type:x mandatory; gap:14px; -webkit-overflow-scrolling:touch; scroll-behavior:smooth; scrollbar-width:none; }
  #page-home .know-all-news::-webkit-scrollbar,
  #page-home .news-grid::-webkit-scrollbar,
  #page-home #signalsGrid::-webkit-scrollbar{ display:none; }
  #page-home .know-all-news > .news-card,
  #page-home .news-grid > .news-card,
  #page-home #signalsGrid > .kb-card{ flex:0 0 100% !important; scroll-snap-align:start; }
  #page-home .news-logo-grid{ display:grid !important; grid-template-columns:repeat(3,1fr) !important; gap:8px !important; }
  #page-home .news-logo-grid .logo-box{ padding:9px 8px !important; font-size:12px !important; min-height:0 !important; line-height:1.2; }
  #page-home .news-car-arrows{ display:flex !important; gap:8px; justify-content:flex-end; margin-bottom:12px; }
  #page-home .signals-arrows{ display:flex !important; gap:8px; justify-content:flex-end !important; }
  #page-home .news-car-arrows .carousel-arrow,
  #page-home .signals-arrows .carousel-arrow{ width:34px !important; height:34px !important; min-width:0 !important; padding:0 !important; }
  #page-home .news-car-arrows .carousel-arrow svg,
  #page-home .signals-arrows .carousel-arrow svg{ width:16px !important; height:16px !important; }
  #page-home .know-all-news{ gap:16px; }
  /* News = native horizontal scroll, first card full width with ~10% of the next
     peeking so the row reads as scrollable. No arrows. */
  #page-home #know-all .news-car-arrows{ display:none !important; }
  #page-home #know-all .know-all-news{ scroll-snap-type:none !important; }
  #page-home #know-all .know-all-news > .news-card{ flex:0 0 88% !important; scroll-snap-align:none !important; }
  /* News category panel: same treatment — native scroll, next card peeking, but
     only when the chosen sub-category actually has more than one card. */
  #page-home .news-car-arrows{ display:none !important; }
  #page-home #newsTrack{ scroll-snap-type:none !important; }
  #page-home #newsTrack > .news-card{ flex:0 0 100% !important; scroll-snap-align:none !important; }
  #page-home #newsTrack.multi > .news-card{ flex:0 0 88% !important; }
  /* Research panel: same as the news rows — native horizontal scroll, next card
     peeking, no arrows. */
  #page-home .signals-arrows{ display:none !important; }
  #page-home #signalsGrid{ scroll-snap-type:none !important; }
  #page-home #signalsGrid > .kb-card{ flex:0 0 100% !important; scroll-snap-align:none !important; }
  #page-home #signalsGrid.multi > .kb-card{ flex:0 0 88% !important; }
  /* ALL panel's article column: same native horizontal scroll + peek. */
  #page-home #know-all .know-feature{ display:flex !important; flex-direction:row !important; flex-wrap:nowrap !important; overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; gap:14px; }
  #page-home #know-all .know-feature::-webkit-scrollbar{ display:none; }
  #page-home #know-all .know-feature > .kb-card{ flex:0 0 88% !important; }

  #page-home .news-card-row{ grid-template-columns:1fr !important; }
  #page-home .news-grid{ grid-template-columns:1fr !important; }
  #page-home .news-card{ min-height:0; padding:22px 20px; }
  #page-home .news-title{ font-size:17px !important; line-height:1.3; }
  #page-home .news-desc{ font-size:14px; -webkit-line-clamp:3; }
  #page-home .news-arrow{ width:26px; height:26px; left:20px; }
  #page-home .news-logo-grid{ grid-template-columns:repeat(2,1fr) !important; gap:8px !important; }
  #page-home .news-logo-grid .logo-box{ padding:12px 10px; font-size:13px; }
  #page-home .know-feature{ gap:16px; }
  #page-home .know-feature .kb-card{ min-height:0; }
  #page-home .know-feature .kb-poster{ aspect-ratio:16/9 !important; height:auto !important; background-size:cover !important; }
  #page-home #signalsGrid .kb-card .kb-poster{ aspect-ratio:16/9 !important; height:auto !important; background-size:cover !important; }
  #page-home .know-feature .kb-info .title{ font-size:18px !important; line-height:1.28; }
  /* Subscribe band — stack cleanly, full-width field + button, no cropping */
  #page-home .subscribe-box.know-subscribe{ flex-direction:column !important; gap:16px !important; padding:26px 20px !important; align-items:stretch !important; }
  #page-home .know-subscribe .subscribe-left{ min-width:0 !important; flex:0 0 auto !important; }
  #page-home .know-subscribe .subscribe-title{ font-size:clamp(24px,7.5vw,32px) !important; margin:0 0 8px !important; }
  #page-home .know-subscribe .subscribe-sub{ font-size:15px !important; max-width:none !important; }
  #page-home .know-subscribe .subscribe-right{ flex:0 0 auto !important; width:100% !important; gap:10px !important; }
  #page-home .know-subscribe .dummy-input{ width:100% !important; box-sizing:border-box !important; }
  #page-home .know-subscribe .btn{ width:100% !important; justify-content:center !important; font-size:16px !important; padding:14px 20px !important; }
  #page-home .know-subscribe{ margin-top:24px; }
}
.hero-belief,.hero-exist,.hero-msg,.sec-title,.conviction-heading,.conv-card-title,.bedrock-title,.bk-card-title,.bk-caption,.scutt-heading,.scutt-card-title,.so-far-title,.so-far-card-top,.sofar-text,.ways-title,.phil-text,.phil-eyebrow,.aif-hero-statement,.aif-works-heading,.aif-works-title,.aif-how-title,.aif-fund-feature-title,.aif-cta-statement,.fq-text,.fq-mark,.pe-hero-statement,.pe-offer-title,.pe-ent-heading,.strat-hero-statement,.strat-pair-title,.kb-main-title,.art-title,.art-pullquote,.dv-tagline,.dv-pull,.dv-closer,.dv-who-verb,.dv-cta-text,.hh-becoming-pull,.hh-stage-title,.hh-stat-title,.hh-param-title,.hh-power-title,.hh-cs-title,.hh-chasm-name,.subscribe-title,.about-hero-title,.conv-roll-title{font-family:var(--f-serif);}
.conv-val-num,.hh-stat-num,.art-stat-num{font-family:'OV Sage','Jost',sans-serif; font-variant-numeric:lining-nums; font-feature-settings:'lnum' 1;}
.kb-main-title,.art-title{color:var(--blue);}
.web-section:has(.signals-grid) .sec-title,.web-section:has(.research-grid) .sec-title{color:var(--greenDeep);}
/* ══ COHESION: uniform main section titles (LT Serif, section-2 size) + green OV Sage card sub-titles, home section 2 → footer ══ */
#page-home .sec-title,
#page-home .ways-title,
#page-home .aif-works-heading,
#page-home .bedrock-title{
  font-family:var(--f-serif) !important;
  font-size:clamp(30px,3.6vw,54px) !important;
  font-weight:400 !important; line-height:1.2 !important; max-width:none;
}
.card-title{ font-family:'OV Sage','Jost',sans-serif !important; color:var(--greenDeep) !important; font-weight:600 !important; }
#page-about .about-hero-title{ font-family:'OV Sage','Jost',sans-serif !important; font-weight:400 !important; }
#page-about .about-hero-title strong{ font-family:'OV Sage','Jost',sans-serif !important; font-weight:700 !important; }
/* OV Sage for specific home titles (override the serif !important above) */
#page-home #bedrockSection .bedrock-title,
#page-home .know-head .sec-title,
#page-home #cmpStatusSection .sec-title,
#page-home .subscribe-title{ font-family:'OV Sage','Jost',sans-serif !important; }
.aif-works-title{ font-family:'OV Sage','Jost',sans-serif !important; color:var(--greenDeep) !important; font-weight:400 !important; }
/* Scuttlebutt right-side step titles: black instead of green */
#homeScuttleSection .aif-works-title{ color:var(--ink) !important; }
.art-progress{background:var(--goldBright);}
.conv-sector-tag{background:var(--gold);color:var(--ink);border-color:var(--ink);}
.founder-quote.alt-quote{background:var(--terra);}
.aif-cta-box{background:var(--terra);border-color:var(--terra);}
/* AIF closing CTA — no terracotta box; bigger green statement + buttons, scroll-in reveal, centered */
#stratClose .aif-cta-box, #aifCloseCta .aif-cta-box, #hhCloseCta .aif-cta-box{ background:transparent !important; border:none !important; color:var(--ink) !important; padding:clamp(28px,3.2vw,48px) 56px 96px; }
#stratClose .aif-cta-statement, #aifCloseCta .aif-cta-statement, #hhCloseCta .aif-cta-statement{ color:var(--greenDeep) !important; font-family:'OV Sage','Jost',sans-serif !important; font-weight:400 !important; font-size:clamp(30px,4.4vw,64px) !important; opacity:0; transform:translateY(30px); transition:opacity .85s ease, transform .85s cubic-bezier(.22,.8,.28,1); }
#stratClose .aif-cta-sub, #aifCloseCta .aif-cta-sub, #hhCloseCta .aif-cta-sub{ color:var(--gray) !important; opacity:0; transform:translateY(24px); transition:opacity .8s ease .18s, transform .8s cubic-bezier(.22,.8,.28,1) .18s; }
.cta-br-m{ display:none; }
#stratClose .aif-cta-actions{ display:flex; justify-content:center; }
/* Phones: the two closing CTAs sit side by side and centred, like the hero's
   button pair, instead of stacking full-width. */
@media(max-width:760px){
  :is(#aifCloseCta,#hhCloseCta,#stratClose) .aif-cta-box > div{
    display:flex !important; flex-direction:row !important; flex-wrap:nowrap !important;
    justify-content:center !important; align-items:center !important; gap:10px !important; }
  :is(#aifCloseCta,#hhCloseCta,#stratClose) .aif-cta-btn{
    flex:0 1 auto; width:auto !important; min-width:0;
    padding:13px 14px !important; font-size:clamp(13px,3.6vw,15px) !important;
    white-space:nowrap; }
}
@media(max-width:760px){ #stratClose #stratCtaStatement{ font-size:clamp(26px,7vw,40px) !important; line-height:1.16 !important; } #stratClose #stratCtaStatement .cta-br-m{ display:inline !important; } }
#stratClose .aif-cta-box > div, #aifCloseCta .aif-cta-box > div, #hhCloseCta .aif-cta-box > div{ justify-content:center; opacity:0; transform:translateY(24px); transition:opacity .8s ease .34s, transform .8s cubic-bezier(.22,.8,.28,1) .34s; }
#stratClose.cta-in .aif-cta-statement, #aifCloseCta.cta-in .aif-cta-statement, #hhCloseCta.cta-in .aif-cta-statement{ opacity:1; transform:none; }
#stratClose.cta-in .aif-cta-sub, #aifCloseCta.cta-in .aif-cta-sub, #hhCloseCta.cta-in .aif-cta-sub{ opacity:1; transform:none; color:var(--ink) !important; }
#stratClose.cta-in .aif-cta-box > div, #aifCloseCta.cta-in .aif-cta-box > div, #hhCloseCta.cta-in .aif-cta-box > div{ opacity:1; transform:none; }
#stratClose .aif-cta-btn, #aifCloseCta .aif-cta-btn, #hhCloseCta .aif-cta-btn{ background:var(--greenDeep) !important; color:var(--gold) !important; border-color:var(--greenDeep) !important; }
#stratClose .aif-cta-btn:hover, #aifCloseCta .aif-cta-btn:hover, #hhCloseCta .aif-cta-btn:hover{ background:var(--paper) !important; color:var(--greenDeep) !important; border:1.5px solid var(--greenDeep) !important; }
@media (prefers-reduced-motion: reduce){ #aifCloseCta .aif-cta-statement, #aifCloseCta .aif-cta-sub, #aifCloseCta .aif-cta-box > div, #hhCloseCta .aif-cta-statement, #hhCloseCta .aif-cta-sub, #hhCloseCta .aif-cta-box > div{ opacity:1 !important; transform:none !important; } }
.aif-cta-btn{color:var(--terra);}
.tab.active,.kb-cat.active,.offering-cat.active{background:var(--terra);border-color:var(--terra);}
.offering-cat.active + .offering-cat{border-left-color:var(--ink);}
.scutt-dot,.bk-dot,.so-dot,.so-far-card-top::after{background:var(--terra);}
.sofar-dot.active,.hero-dot.active{background:var(--terra);}
.conv-cursor{background:var(--terra);color:var(--paper);}
body:has(#page-home.active) #convCursor{ background:#F0C257; }
.ring-fill.ring-active{stroke:var(--terra);}
.phil-dot-perm{color:var(--terra);}
.dv-btn,.strat-close-ghost{border-color:var(--paper);}
.aif-works-parallax{background:var(--terra) !important;}
.aif-works-parallax[data-grad="2"]{background:var(--gold) !important;}
.aif-works-parallax[data-grad="3"]{background:var(--greenDeep) !important;}
/* ── AIF "Here's how an AIF works" builder: parallax IMAGE treatment ──
   Photography is layered into each step card and moves with the SAME
   initParallax mechanic (it translates .aif-works-parallax). The brand
   colour is preserved as a multiply tint (::before) so the terra/gold/green
   colour treatment stays intact, and the existing line-art (::after) sits on
   top. Scoped to #aifWorksSection so home bedrock/scutt are untouched. */
#aifWorksSection .aif-works-parallax{ background-size:cover !important; background-position:center !important; background-repeat:no-repeat !important; }
#aifWorksSection .aif-works-parallax[data-grad="1"]{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e7314c515f7e0d9f1be4b_aif-works-pool.webp') !important; }
#aifWorksSection .aif-works-parallax[data-grad="2"]{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e73140f02faf4997fb1e5_aif-works-conviction.webp') !important; background-position:right center !important; }
#aifWorksSection .aif-works-parallax[data-grad="3"]{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e7314bf75b0bee4db687a_aif-works-course.webp') !important; }
#aifWorksSection .aif-works-parallax::before{ content:''; position:absolute; inset:0; z-index:1; }
#aifWorksSection .aif-works-parallax[data-grad="1"]::before{ background:transparent; }
#aifWorksSection .aif-works-parallax[data-grad="2"]::before{ background:transparent; }
#aifWorksSection .aif-works-parallax[data-grad="3"]::before{ background:transparent; }
#aifWorksSection .aif-works-parallax::after{ display:none !important; }
/* Match the home scuttlebutt image-card size (wider, 4:3, auto height) */
#aifWorksSection .aif-works-card{ flex:0 0 66% !important; aspect-ratio:4/3 !important; height:auto !important; border-width:1px !important; }
@media(max-width:1440px) and (min-width:861px){ #aifWorksSection .aif-works-card{ flex:0 0 58% !important; } }
@media(max-width:860px){ #aifWorksSection .aif-works-card{ flex:0 0 auto !important; width:100% !important; aspect-ratio:4/3 !important; height:auto !important; } }
/* Logo-left alignment, matching the home scuttlebutt section exactly */
#aifWorksSection .section-inner{ max-width:none !important; margin:0 !important; }
#aifWorksSection #aifWorksBurst{ width:118px; height:118px; margin-top:-10px; overflow:visible; transform:scale(1) rotate(0deg); transform-origin:center; will-change:transform; }
#aifWorksSection #aifWorksBurst line{ stroke:var(--greenDeep); stroke-width:2.4; stroke-linecap:round; }
#aifWorksSection #aifWorksBurst circle{ fill:var(--greenDeep); }
#aifWorksSection.web-section{ padding-left:80px; padding-right:80px; }
@media(max-width:1440px) and (min-width:861px){ #aifWorksSection.web-section{ padding-left:48px; padding-right:48px; } }
@media(max-width:860px){ #aifWorksSection.web-section{ padding-left:28px; padding-right:28px; } }
/* "Keep in mind" (+ Power Sector) — logo-left alignment, matching scuttlebutt */
.aif-mind .section-inner{ max-width:none !important; margin:0 !important; }
.aif-mind.web-section{ padding-left:80px; padding-right:80px; }
@media(max-width:1440px) and (min-width:861px){ .aif-mind.web-section{ padding-left:48px; padding-right:48px; } }
@media(max-width:860px){ .aif-mind.web-section{ padding-left:28px; padding-right:28px; } }
/* Below 760 the sections these sit between drop to a 16px inset (#peWays and
   the cross-sell blocks both do), but the accordion held 28px all the way
   down, so it read as noticeably narrower than everything around it. Match
   them. Applies to every .aif-mind accordion on the site: keep-in-mind, the PE
   approach and offer blocks, the home scuttlebutt section, and the
   equity-baskets, hedgehogs and strategy copies. */
@media(max-width:760px){ .aif-mind.web-section{ padding-left:16px; padding-right:16px; } }
/* Align the right scrolling cards' left edge with the image cards above (left 360 + gap 64) */
.aif-mind .scutt-layout{ gap:64px; }
.aif-mind .scutt-sidebar{ flex:0 0 360px; top:calc(var(--niv-inset) + var(--niv-fab-h) + 30px); }
@media(max-width:1440px) and (min-width:861px){ .aif-mind .scutt-layout{ gap:36px; } .aif-mind .scutt-sidebar{ flex:0 0 260px; } }
/* Keep-in-mind cards: terracotta outline, no fill; hover fills terracotta with gold text; OV Sage titles; circle dot */
.aif-mind .scutt-cards{ gap:0; }
.aif-mind .scutt-card{ background:transparent !important; border:1.5px solid var(--greenDeep) !important; border-top:none !important; opacity:0; transform:translateY(28px); transition:opacity 1s ease, transform 1s cubic-bezier(.22,.8,.28,1); }
.aif-mind .scutt-card:first-child{ border-top:1.5px solid var(--greenDeep) !important; }
.aif-mind .scutt-card.km-in{ opacity:1; transform:translateY(0); }
@media(hover:hover) and (min-width:861px){
  .aif-mind .scutt-card:hover{ background:var(--greenDeep) !important; }
}
@media (prefers-reduced-motion: reduce){ .aif-mind .scutt-card{ opacity:1 !important; transform:none !important; } }
.aif-mind .scutt-card-title{ font-family:'OV Sage','Jost',sans-serif !important; font-weight:400 !important; font-size:clamp(23px,2.4vw,33px) !important; }
@media(hover:hover) and (min-width:861px){
  .aif-mind .scutt-card:hover .scutt-card-title,
  .aif-mind .scutt-card:hover .scutt-card-body{ color:var(--gold) !important; }
}
/* MOBILE auto-trigger (nearest card to viewport centre) mirrors the hover state */
.aif-mind .scutt-card.auto-on{ background:var(--greenDeep) !important; }
.aif-mind .scutt-card.auto-on .scutt-card-title,
.aif-mind .scutt-card.auto-on .scutt-card-body{ color:var(--gold) !important; }
.aif-mind .scutt-dot{ border-radius:50% !important; background:var(--greenDeep) !important; transition:background .3s ease !important; }
@media(hover:hover) and (min-width:861px){
  .aif-mind .scutt-card:hover .scutt-dot{ background:#F0C257 !important; }
}
.aif-mind .scutt-card.auto-on .scutt-dot{ background:#F0C257 !important; }
@media(hover:none), (max-width:860px){
  .aif-mind .scutt-card{ -webkit-tap-highlight-color:transparent; }
}
/* Keep-in-mind / Power Sector mobile: unstick the sidebar, stack the layout, full-width cards */
@media(max-width:860px){
  .aif-mind .scutt-layout{ flex-direction:column !important; gap:22px !important; }
  .aif-mind .scutt-sidebar{ position:static !important; flex:0 0 auto !important; width:100% !important; top:auto !important; margin-bottom:4px; }
  .aif-mind .scutt-cards{ width:100%; }
  .aif-mind .scutt-card{ padding:26px 22px 26px 18px !important; }
  .aif-mind .scutt-card-title{ font-size:clamp(21px,5.6vw,28px) !important; margin-bottom:14px !important; }
  .aif-mind .scutt-card-body{ font-size:clamp(15px,4.2vw,18px) !important; }
}
/* Step marks: geometric line icons in the starburst's vocabulary, one per step.
   Scoped to the home scuttlebutt section so the AIF "Keep in mind" and Power
   Sector cards, which share these classes, are untouched. */
/* The mark centres on the title's FIRST LINE, not on the title block: giving
   the title a min-height equal to the icon centred it on the whole block, so a
   title that wrapped to two lines dropped the icon to the middle of both. The
   2px lift accounts for cap height — matching geometric centres leaves a mark
   looking low against capitals, which have no descender below the baseline. */
#homeScuttleSection .scutt-card{ display:flex; align-items:flex-start; gap:clamp(18px,2vw,32px);
  --ico:clamp(44px,4.3vw,60px); --tlh:calc(clamp(23px,2.4vw,33px) * 1.2); }
#homeScuttleSection .scutt-c-txt > .scutt-card-title{ line-height:1.2; }
#homeScuttleSection .scutt-c-txt{ flex:1; min-width:0; }
#homeScuttleSection .scutt-ico{ flex:0 0 auto; width:var(--ico); height:var(--ico);
  margin-top:calc((var(--tlh) - var(--ico)) / 2 - 2px);
  fill:none; stroke:var(--greenDeep); stroke-width:1;
  stroke-linecap:round; stroke-linejoin:round; transition:stroke .3s ease; }
@media(hover:hover) and (min-width:861px){
  #homeScuttleSection .scutt-card:hover .scutt-ico{ stroke:#F0C257; }
}
#homeScuttleSection .scutt-card.auto-on .scutt-ico{ stroke:#F0C257; }
@media(max-width:860px){
  #homeScuttleSection .scutt-card{ gap:16px; }
  #homeScuttleSection .scutt-card{ --ico:42px; --tlh:calc(clamp(21px,5.6vw,28px) * 1.2); }
  #homeScuttleSection .scutt-ico{ stroke-width:1.1; }
}

/* Section 3 (home scuttlebutt): align left column with the logo, wider rounded rect cards */
#homeScuttleSection .section-inner{ max-width:none !important; margin:0 !important; }
#homeScuttleSection.web-section{ padding-left:80px; padding-right:80px; }
#homeScuttleSection .aif-works-card{
  flex:0 0 66% !important; aspect-ratio:4/3 !important; height:auto !important; border-radius:0!important;
}
#homeScuttleSection .aif-works-parallax.scutt-img{
  background-color:transparent !important;
  background-size:cover !important; background-position:center !important; background-repeat:no-repeat !important;
}
#homeScuttleSection .aif-works-parallax.scutt-img::after{ display:none !important; }
#homeScuttleSection .aif-works-parallax.scutt-1{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e7319fec4d4054b9d15c6_scutt-01.webp') !important; }
#homeScuttleSection .aif-works-parallax.scutt-2{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e731901695b95cf7a37c7_scutt-02.webp') !important; background-position:62% center !important; }
#homeScuttleSection .aif-works-parallax.scutt-3{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e73193219e6c9143b487f_scutt-03.webp') !important; background-position:44% center !important; }
#homeScuttleSection .aif-works-parallax.scutt-4{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e7319fdb7b2d8a6207021_scutt-04.webp') !important; background-size:cover !important; background-position:74% center !important; }
#homeScuttleSection .aif-works-parallax.scutt-5{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e7319465039fed537f865_scutt-05.webp') !important; background-position:center center !important; }
/* PE §2 — exact replica of the home scuttlebutt section */
/* "We look for quiet leaders" — match the home scuttlebutt section's layout/scaling */
#stratLookSection .section-inner{ max-width:none !important; margin:0 !important; }
#stratLookSection.web-section{ padding-left:80px; padding-right:80px; }
#stratLookSection .aif-works-right{ gap:60px; }
#stratLookSection .aif-works-num{ display:none; }
#stratLookSection .aif-works-meta{ padding-top:0; }
#stratLookSection .aif-works-title{ margin-top:0; }
#stratLookSection .aif-works-step:first-child .aif-works-meta{ padding-top:0; }
#stratLookSection .aif-works-card{ flex:0 0 66% !important; aspect-ratio:4/3 !important; height:auto !important; border-radius:0 !important; border-width:1px !important; }
/* Strategy "businesses we look for" — real photography, parallax, no colour tint or line-art */
/* no star here, and the rail sits closer to the heading */
#hhLookSection .awh-head{ margin-bottom:clamp(20px,2vw,30px) !important; }
#hhLookSection .awh-heading{ margin:0 !important; }
@media(max-width:860px){ #hhLookSection .awh-head{ margin-bottom:18px !important; } }
#hhLookSection .aif-works-parallax[data-grad="1"]{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e731a2b83ba7b292a920f_strat-shadow.webp') !important; }
#hhLookSection .aif-works-parallax[data-grad="2"]{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e731a1406ae49e465e75b_strat-positioning.webp') !important; }
#hhLookSection .aif-works-parallax[data-grad="3"]{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e731a44dc3736509879b2_strat-stairs.jpg') !important; }
#hhLookSection .aif-works-parallax[data-grad="4"]{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e7319d5ee7eab63856063_strat-coins.jpg') !important; }
#hhLookSection .aif-works-parallax::after{ content:none !important; background-image:none !important; }
#hhLookSection .aif-works-parallax{ background-size:cover !important; background-position:center !important; background-repeat:no-repeat !important; }
#stratLookSection .aif-works-parallax{ background-size:cover !important; background-position:center !important; background-repeat:no-repeat !important; }
#stratLookSection .aif-works-parallax[data-grad="1"]{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e731a2b83ba7b292a920f_strat-shadow.webp') !important; }
#stratLookSection .aif-works-parallax[data-grad="2"]{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e731a44dc3736509879b2_strat-stairs.jpg') !important; background-size:190% auto !important; background-position:100% 90% !important; }
#stratLookSection .aif-works-parallax[data-grad="4"]{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e7319d5ee7eab63856063_strat-coins.jpg') !important; }
#stratLookSection .aif-works-parallax[data-grad="3"]{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e731a1406ae49e465e75b_strat-positioning.webp') !important; }
/* When-we-commit editorial section (text-only steps) */
.strat-system-sub{ font-size:clamp(16px,1.6vw,21px); line-height:1.6; color:var(--ink); max-width:680px; margin:14px 0 0; }
#stratQuote2.conviction-heading{ font-size:clamp(34px,5.2vw,72px) !important; }
@media(max-width:760px){ #stratQuote2.conviction-heading{ font-size:clamp(34px,13.5vw,64px) !important; } }
#eqbQuote.conviction-heading{ font-size:clamp(34px,5.2vw,72px) !important; }
@media(max-width:760px){ #eqbQuote.conviction-heading{ font-size:clamp(34px,13.5vw,64px) !important; } }
#hhQuoteHeading.conviction-heading{ font-size:clamp(34px,5.2vw,72px) !important; }
@media(max-width:760px){ #hhQuoteHeading.conviction-heading{ font-size:clamp(34px,13.5vw,64px) !important; line-height:1.12 !important; } }
.strat-closing-line{ font-family:var(--f-serif); font-style:italic; font-size:clamp(20px,2.3vw,32px); line-height:1.4; color:var(--ink); max-width:900px; margin:64px 0 0; }
@media(max-width:760px){ .strat-closing-line{ margin-top:40px; } }
#stratLookSection .aif-works-parallax::after{ display:none !important; }
#stratLookSection .aif-works-parallax::before{ display:none !important; }
#page-strategy #stratLookSection .aif-works-heading{ margin-top:0; font-family:'OV Sage','Jost',sans-serif !important; font-size:clamp(32px,3.9vw,54px) !important; line-height:1.12 !important; }
@media(max-width:1440px) and (min-width:861px){ #stratLookSection.web-section{ padding-left:48px; padding-right:48px; } #stratLookSection .aif-works-card{ flex:0 0 58% !important; } }
@media(max-width:860px){ #stratLookSection.web-section{ padding-left:28px; padding-right:28px; } #stratLookSection .aif-works-card{ flex:0 0 auto !important; width:100% !important; aspect-ratio:4/3 !important; height:auto !important; } }
/* ══ PE companies — 5-col dot grid that morphs to labeled cards ══ */
:is(#peCoSection,#hbCompanies){ background:var(--paper); padding:110px var(--hero-text-inset); }
:is(#peCoSection,#hbCompanies) .section-inner{ max-width:none; margin:0; padding:0; }
:is(#peCoSection,#hbCompanies) .pe-co-title{ font-family:'OV Sage','Jost',sans-serif; color:var(--greenDeep); font-size:clamp(32px,3.9vw,54px); font-weight:400; line-height:1.12; margin-bottom:0; }
:is(#peCoSection,#hbCompanies) .pe-co-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:32px; flex-wrap:wrap; margin-bottom:44px; }
:is(#peCoSection,#hbCompanies) .pe-co-filter-wrap{ display:flex; flex-direction:column; gap:8px; flex:0 0 auto; }
:is(#peCoSection,#hbCompanies) .pe-co-filter-label{ font-family:'Inter',sans-serif; font-size:11px; font-weight:500; letter-spacing:.08em; text-transform:uppercase; color:var(--gray); }
:is(#peCoSection,#hbCompanies) .pe-co-filter{ appearance:none; font-family:'Inter',sans-serif; font-size:15px; color:var(--greenDeep); background:var(--paper); border:1.5px solid var(--greenDeep); border-radius:0; padding:12px 46px 12px 16px; min-width:230px; cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%232f4a2e' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 16px center; transition:border-color .2s ease, background-color .2s ease; }
:is(#peCoSection,#hbCompanies) .pe-co-filter:hover{ border-color:var(--terra); }
:is(#peCoSection,#hbCompanies) .pe-co-filter:focus{ outline:none; border-color:var(--terra); }
:is(#peCoSection,#hbCompanies) .pe-co-cell.pe-co-hide{ display:none; }
@media(max-width:560px){ :is(#peCoSection,#hbCompanies) .pe-co-head{ align-items:flex-start; } :is(#peCoSection,#hbCompanies) .pe-co-filter{ min-width:0; width:100%; } }
:is(#peCoSection,#hbCompanies) .pe-co-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
:is(#peCoSection,#hbCompanies) .pe-co-cell{ aspect-ratio:3/2; display:flex; align-items:center; justify-content:center; }
:is(#peCoSection,#hbCompanies) .pe-co-card{ position:relative; width:78px; height:78px; border-radius:50% !important; background:var(--terra); border:1.5px solid var(--terra); display:flex; align-items:center; justify-content:center; text-align:center; overflow:visible; cursor:default;
  transition:width .6s cubic-bezier(.16,1,.3,1), height .6s cubic-bezier(.16,1,.3,1), border-radius .6s cubic-bezier(.16,1,.3,1), background .2s ease, border-color .2s ease; }
:is(#peCoSection,#hbCompanies) .pe-co-card.morph-in{ width:100%; height:100%; border-radius:0 !important; background:var(--paper); border-color:var(--greenDeep); align-items:flex-end; justify-content:flex-start; }
:is(#peCoSection,#hbCompanies) .pe-co-name{ opacity:0; font-family:'OV Sage','Jost',sans-serif; font-weight:700; font-size:clamp(28px,2.9vw,46px); line-height:1.05; text-align:left; color:var(--greenDeep); padding:0 24px 22px; transition:opacity .35s ease; }
:is(#peCoSection,#hbCompanies) .pe-co-card.morph-in .pe-co-name{ opacity:1; transition-delay:.32s; }
:is(#peCoSection,#hbCompanies) .pe-co-card.morph-in:hover{ background:var(--greenDeep); border-color:var(--greenDeep); transition:none; }
:is(#peCoSection,#hbCompanies) .pe-co-card.morph-in:hover .pe-co-name{ color:#F0C257; transition:none; }
/* Logo-led cards (PE page): the mark is a currentColor mask, so it inherits the
   exact green→gold shift the name already does, with no separate hover rule. */
:is(#peCoGrid,#hbGrid) .pe-co-name.has-logo{
  position:absolute; inset:0; box-sizing:border-box;
  display:flex; flex-direction:column; justify-content:flex-end; align-items:center;
  text-align:center; padding:22px 26px 20px;
  font-size:clamp(13px,1.15vw,17px) !important; font-weight:600 !important;
  letter-spacing:.005em; line-height:1.25; }
:is(#peCoGrid,#hbGrid) .pe-co-name.has-logo::before{
  content:''; position:absolute; inset:0;
  background:var(--logo) center/contain no-repeat; }
@media(max-width:760px){
  :is(#peCoGrid,#hbGrid) .pe-co-name.has-logo{ padding:12px 14px 12px; font-size:12px !important; }
  :is(#peCoGrid,#hbGrid) .pe-co-name.has-logo::before{ inset:0; }
  /* Marks that read small at phone size get a touch more presence */
  :is(#peCoGrid,#hbGrid) .pe-co-name.has-logo[style*="fit/waaree"]::before,
  :is(#peCoGrid,#hbGrid) .pe-co-name.has-logo[style*="fit/sambhv"]::before,
  :is(#peCoGrid,#hbGrid) .pe-co-name.has-logo[style*="fit/esds"]::before,
  :is(#peCoGrid,#hbGrid) .pe-co-name.has-logo[style*="fit/jupiter"]::before,
  :is(#peCoGrid,#hbGrid) .pe-co-name.has-logo[style*="fit/vikram-solar"]::before{ transform:scale(1.15); }
}
:is(#peCoSection,#hbCompanies) .pe-co-burst{ position:absolute; top:16px; right:16px; width:72px; height:72px; overflow:visible; pointer-events:none; opacity:0; }
:is(#peCoSection,#hbCompanies) .pe-co-card.morph-in .pe-co-burst{ opacity:1; }
:is(#peCoSection,#hbCompanies) .pe-co-burst line{ stroke:#F0C257; stroke-width:3; stroke-linecap:round; transform:scale(0); transform-origin:center; transition:transform .45s cubic-bezier(.16,1,.3,1); }
:is(#peCoSection,#hbCompanies) .pe-co-burst circle{ fill:#F0C257; transform:scale(0); transform-origin:center; transition:transform .4s cubic-bezier(.16,1,.3,1); }
:is(#peCoSection,#hbCompanies) .pe-co-card:hover .pe-co-burst line,
:is(#peCoSection,#hbCompanies) .pe-co-card:hover .pe-co-burst circle{ transform:scale(1); }
:is(#peCoSection,#hbCompanies) .pe-co-note{ margin-top:40px; font-family:'Inter',sans-serif; font-size:13px; color:var(--gray); }
@media (prefers-reduced-motion: reduce){ :is(#peCoSection,#hbCompanies) .pe-co-card{ width:100% !important; height:100% !important; border-radius:0 !important; background:var(--paper) !important; border-color:var(--greenDeep) !important; } :is(#peCoSection,#hbCompanies) .pe-co-name{ opacity:1 !important; } }
@media(max-width:560px){ :is(#peCoSection,#hbCompanies) .pe-co-grid{ grid-template-columns:repeat(2,1fr); } :is(#peCoSection,#hbCompanies){ padding-left:28px; padding-right:28px; } }
/* ===== "The companies we've backed" — mobile-native layout (≤760) ===== */
@media(max-width:760px){
  :is(#peCoSection,#hbCompanies){ padding:56px 16px !important; }
  :is(#peCoSection,#hbCompanies) .pe-co-head{ flex-direction:column; align-items:stretch; gap:18px; margin-bottom:28px; }
  :is(#peCoSection,#hbCompanies) .pe-co-title{ font-size:clamp(32px,9vw,46px) !important; line-height:1.1; }
  :is(#peCoSection,#hbCompanies) .pe-co-filter-wrap{ width:100%; }
  :is(#peCoSection,#hbCompanies) .pe-co-filter{ width:100%; min-width:0; font-size:16px; padding-top:13px; padding-bottom:13px; }
  :is(#peCoSection,#hbCompanies) .pe-co-grid{ grid-template-columns:repeat(2,1fr) !important; gap:12px; }
  :is(#peCoSection,#hbCompanies) .pe-co-cell{ aspect-ratio:1/1; }
  :is(#peCoSection,#hbCompanies) .pe-co-card{ width:64px; height:64px; }
  :is(#peCoSection,#hbCompanies) .pe-co-name{ font-size:clamp(15px,4.4vw,21px) !important; padding:0 14px 14px; }
  :is(#peCoSection,#hbCompanies) .pe-co-burst{ width:46px; height:46px; top:10px; right:10px; }
  :is(#peCoSection,#hbCompanies) .pe-co-note{ margin-top:28px; font-size:12px; }
}
#peBuilderSection .aif-works-left{ position:sticky; top:120px; align-self:flex-start; padding-top:0; margin-top:0; }
#peBuilderSection .aif-works-layout{ align-items:flex-start; }
#peBuilderSection .aif-works-heading{ margin-top:0 !important; padding-top:0 !important; }
#peBuilderSection .pe-builder-burst{ width:118px; height:118px; margin-top:18px; overflow:visible; transform:scale(1) rotate(0deg); transform-origin:center; opacity:1; will-change:transform; }
#peBuilderSection .pe-builder-burst line{ stroke:var(--greenDeep); stroke-width:2.4; stroke-linecap:round; }
#peBuilderSection .pe-builder-burst circle{ fill:var(--greenDeep); }
@media(max-width:860px){ #peBuilderSection .pe-builder-burst{ width:88px; height:88px; margin-top:24px; } }
#peBuilderSection .aif-works-num{ display:none; }
#peBuilderSection .aif-works-meta{ padding-top:0; }
#peBuilderSection .aif-works-card{ border:none !important; flex:0 0 66% !important; aspect-ratio:4/3 !important; height:auto !important; border-radius:0 !important; }
#peBuilderSection .aif-works-right{ gap:60px; }
#peBuilderSection .aif-works-heading{ margin-top:0; }
#peBuilderSection .aif-works-title{ margin-top:0; color:var(--ink) !important; }
#peBuilderSection .aif-works-step:first-child .aif-works-meta{ padding-top:0; }
#aifWorksSection .aif-works-num{ display:none; }
#aifWorksSection .aif-works-meta{ padding-top:0; }
#aifWorksSection .aif-works-title{ margin-top:0; }
#aifWorksSection .aif-works-step:first-child .aif-works-meta{ padding-top:0; }
#peBuilderSection .section-inner{ max-width:none !important; margin:0 !important; }
#peBuilderSection.web-section{ padding-left:80px; padding-right:80px; border-bottom:none !important; }
#peBuilderSection .aif-works-parallax.scutt-img{ background-color:transparent !important; background-size:cover !important; background-position:center !important; background-repeat:no-repeat !important; }
#peBuilderSection .aif-works-parallax.scutt-img::after{ display:none !important; }
#peBuilderSection .aif-works-parallax.scutt-1{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e7319fec4d4054b9d15c6_scutt-01.webp') !important; }
#peBuilderSection .aif-works-parallax.scutt-2{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e731901695b95cf7a37c7_scutt-02.webp') !important; background-position:right center !important; }
#peBuilderSection .aif-works-parallax.scutt-3{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e73193219e6c9143b487f_scutt-03.webp') !important; }
@media(max-width:1440px) and (min-width:861px){
  #peBuilderSection.web-section{ padding-left:48px; padding-right:48px; }
  #peBuilderSection .aif-works-card{ flex:0 0 58% !important; }
}
@media(max-width:860px){
  #peBuilderSection.web-section{ padding-left:28px; padding-right:28px; }
  #peBuilderSection .aif-works-card{ flex:0 0 auto !important; width:100% !important; aspect-ratio:4/3 !important; height:auto !important; }
}
@media(max-width:1440px) and (min-width:861px){
  #homeScuttleSection.web-section{ padding-left:48px; padding-right:48px; }
  #homeScuttleSection .aif-works-card{ flex:0 0 58% !important; }
  .aif-works-left{ flex:0 0 260px; }
  .aif-works-layout{ gap:36px; }
  .aif-works-step{ gap:24px; }
}
@media(max-width:860px){
  #homeScuttleSection.web-section{ padding-left:28px; padding-right:28px; }
  #homeScuttleSection .aif-works-card{ flex:0 0 auto !important; width:100% !important; height:50vh !important; min-height:322px !important; max-height:462px !important; aspect-ratio:auto !important; }
}
.aif-works-parallax::after{content:'';position:absolute;inset:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cg stroke='%23F2E5BF' stroke-width='1.6'%3E%3Cline x1='50' y1='10' x2='50' y2='90'/%3E%3Cline x1='10' y1='50' x2='90' y2='50'/%3E%3Cline x1='22' y1='22' x2='78' y2='78'/%3E%3Cline x1='78' y1='22' x2='22' y2='78'/%3E%3C/g%3E%3Ccircle cx='50' cy='50' r='6' fill='%23F2E5BF'/%3E%3C/svg%3E") center/108px no-repeat;}
.aif-works-parallax[data-grad="2"]::after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cg stroke='%23AC4D3B' stroke-width='1.6'%3E%3Cline x1='50' y1='10' x2='50' y2='90'/%3E%3Cline x1='10' y1='50' x2='90' y2='50'/%3E%3Cline x1='22' y1='22' x2='78' y2='78'/%3E%3Cline x1='78' y1='22' x2='22' y2='78'/%3E%3C/g%3E%3Ccircle cx='50' cy='50' r='6' fill='%23AC4D3B'/%3E%3C/svg%3E");}
.conv-val-num,.hh-stat-num,.art-stat-num,.hh-split-value{color:var(--greenTxt);}
.aif-fund-feature-status{color:var(--greenTxt);}
.aif-fund-closed .aif-fund-feature-status{color:var(--gray);}
.hh-open-badge{border-color:var(--greenTxt);color:var(--greenTxt);}
.hh-open-dot{background:var(--greenTxt);}
.newsletter-box{background:var(--greenDeep);border-color:var(--greenDeep);}
.subscribe-box{background:var(--gold);border-color:var(--gold);color:var(--ink);}
.subscribe-box .subscribe-left,.subscribe-box .subscribe-sub,.subscribe-box .subscribe-note{color:var(--ink);}
.subscribe-box .dummy-input{border-color:var(--ink) !important;color:var(--ink) !important;}
.subscribe-box .dummy-input::placeholder{color:var(--ink) !important;opacity:.55;}
.subscribe-box .btn{background:var(--terra) !important;color:var(--paper) !important;border-color:var(--terra) !important;font-size:20px !important;padding:16px 32px !important;}
.newsletter-box .btn{color:var(--greenDeep);}
.float-whatsapp{background:var(--greenDeep);border-color:var(--greenDeep);}
.float-whatsapp{ opacity:0; visibility:hidden; pointer-events:none; transition:opacity .45s ease, visibility .45s ease, background .22s, color .22s, border-radius .35s cubic-bezier(.4,0,.2,1); }
/* No fade on the very first frames — a transition here turns any transient
   class change during boot into a visible pop-and-fade. */
html.nvboot .float-whatsapp{ transition:none !important; }
.float-whatsapp.fw-show{ opacity:1; visibility:visible; pointer-events:auto; }
.float-whatsapp:hover{background:var(--paper);color:var(--greenDeep);}
.float-whatsapp.on-green{ background:var(--paper) !important; color:var(--greenDeep) !important; border-color:var(--greenDeep) !important; }
.float-whatsapp.on-green .fw-dot{ background:var(--greenDeep) !important; }
.float-whatsapp.on-green:hover{ background:var(--greenDeep) !important; color:var(--paper) !important; }
.float-whatsapp.on-green:hover .fw-dot{ background:var(--gold) !important; }
@media(max-width:760px){ .float-whatsapp.fw-hide{ opacity:0 !important; visibility:hidden !important; pointer-events:none !important; } }
/* Custom cursor: terracotta dot (same size as the WhatsApp fw-dot, 10px). Scales
   up 50% while over interactive elements, back to normal otherwise. Falls back to
   the native cursor on touch / coarse-pointer devices. */
@media (hover:hover) and (pointer:fine){
  html.nv-cursor-on, html.nv-cursor-on body, html.nv-cursor-on :is(a, button, .btn, [data-oc], [data-ome], [data-niv-nav], .ways-tab, .ways-arrow, .offer-card, .pe-co-card, input, textarea, select, label){ cursor:none !important; }
}
#nivCursor{ position:fixed; left:0; top:0; width:15px; height:15px; border-radius:50% !important; background:var(--gold); pointer-events:none; z-index:2147483647; transform:translate(-50%,-50%) scale(1); transition:transform .22s cubic-bezier(.22,.9,.32,1), opacity .2s ease, background .25s ease; will-change:left,top,transform; }
#nivCursor.cur-hover{ transform:translate(-50%,-50%) scale(1.58); }
#nivCursor.cur-hide{ opacity:0; }
@media (hover:none), (pointer:coarse){ #nivCursor{ display:none !important; } }
.tm-overlay{background:var(--greenDeep);}
.chasm-invest-box{border-color:var(--greenTxt);color:var(--greenTxt);}
.chasm-invest-text{color:var(--greenTxt);}
/* Hedgehogs chasm — cream bg, green outlines/text/fills */
#hhChasm{ background:var(--paper) !important; }
#hhChasm .chasm-curve, #hhChasm .chasm-axis, #hhChasm .chasm-vline{ stroke:var(--greenDeep) !important; }
#hhChasm .chasm-stage-label, #hhChasm .chasm-annotation{ fill:var(--greenDeep) !important; }
#hhChasm circle{ fill:var(--greenDeep) !important; }
#hhChasm line{ stroke:var(--greenDeep) !important; }
#hhChasm marker path{ fill:var(--greenDeep) !important; }
#hhChasm rect[fill="var(--ink)"]{ fill:var(--greenDeep) !important; }
#hhChasm rect[stroke="var(--ink)"]{ stroke:var(--greenDeep) !important; }
#hhChasm .chasm-invest-box{ fill:none !important; stroke:var(--greenDeep) !important; stroke-width:1.5; }
#hhChasm .chasm-invest-text{ fill:var(--greenDeep) !important; }
#hhChasm .chasm-gap-text{ fill:var(--paper) !important; }

/* ══ Squared-off aesthetic: kill all corner rounding site-wide ══ */
*, *::before, *::after{ border-radius:0!important; }
/* Exception: Bedrock section's left-column pill dots stay circular */
.bk-pill-dot{ border-radius:50% !important; }
/* Exception: hero stat dots start circular, then morph square */
.home-hero .hero-stat-card{ border-radius:50% !important; }
.home-hero.intro-box .hero-stat-card{ border-radius:0 !important; }
/* Exception: the bamboo chart's legend dots match its round line-end markers */
.bam-leg-dot{ border-radius:50% !important; }
/* Exception: the connector dots between "businesses we've backed" cards stay circular */
#homeConvWrapper.hh-plain-wrapper .conv-card:not(:first-child)::before{ border-radius:50% !important; }

/* ══ WAYS TO INVEST (home) — green field, cream cards, gold corner element ══ */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats){ background:var(--greenDeep); position:relative; overflow:hidden; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-title{ color:var(--gold) !important; text-align:center; font-size:clamp(40px,6vw,88px) !important; }
/* Tabs: green bg + soft-gold outline & text. Active tab = persistent gold fill.
   (base bg is specificity-won, NOT !important, so the hover pulse can animate it) */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tab{ background:var(--greenDeep); border-color:var(--gold) !important; transition:background .25s ease, border-color .25s ease; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tab .ways-tab-title{ color:var(--gold) !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tab .ways-tab-sub{ color:var(--gold) !important; opacity:.8; }
/* Selected tab (set on click AND on mouse-enter via data-ome, so hovering a tab
   "presses" it and it STAYS selected until you move to another tab): the bg
   pulses green→gold and settles on soft-gold, text flips green, and a big green
   dot marks it. The default EB tab carries .active in markup, so its dot shows
   on load. background is NOT !important so the pulse keyframe can animate it. */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tab.active{ background:#F0C157 !important; border-color:#F0C157 !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tab.active .ways-tab-title,
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tab.active .ways-tab-sub{ color:var(--greenDeep) !important; opacity:1; }
/* Non-active tab hover: only outline + text shift to vibrant gold (no fill), like the product cards */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tab:not(.active):hover{ background:var(--greenDeep) !important; border-color:#F0C157 !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tab:not(.active):hover .ways-tab-title,
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tab:not(.active):hover .ways-tab-sub{ color:#F0C157 !important; opacity:1; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-burst-dot{ fill:var(--greenDeep) !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-burst-lines line{ stroke:var(--greenDeep) !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-burst-lines{ display:none !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tab .ways-burst-dot{ transform:scale(0); transition:transform .36s cubic-bezier(.22,.9,.32,1); }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tab.active .ways-burst-dot{ transform:scale(4.2); transition-delay:.14s; }
/* (tab selected state changes without a pulse animation) */
/* Cards: green field like the product buttons — soft-gold text + gold edge.
   (background is specificity-won, NOT !important, so the hover pulse can animate it) */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card.stat-card{ background:var(--greenDeep); border-color:var(--gold) !important; position:relative; z-index:2; transition:border-color .3s ease; }
/* the two fund cards are not click targets any more — only their buttons are —
   so they must not advertise one; hover/starburst behaviour is unchanged */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card.stat-card[data-no-card-oc]{ cursor:default; }
/* PE group spans the full button-row width (EB left edge → PE right edge) */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="pe"] .offer-static-grid{ display:block !important; width:100% !important; gap:0 !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="pe"] .offer-static-grid .offer-card{ flex:none !important; width:100% !important; }
/* PE wide card — two columns: elaborated copy left, 2×2 stat grid right */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-wide-card{ display:grid !important; grid-template-columns:1.3fr 1fr; gap:clamp(28px,3vw,52px); align-items:stretch; padding:clamp(32px,3vw,48px) clamp(40px,4vw,72px); }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-wide-left{ display:flex; flex-direction:column; align-items:flex-start; padding-top:34px; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-wide-left .offer-desc{ margin-bottom:auto; max-width:680px; }
.pe-desc-br{ display:none; }
@media(min-width:901px){ .pe-desc-br{ display:block; } }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-wide-left .btn{ margin-top:28px; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-wide-left .btn{ background:transparent !important; border-color:var(--gold) !important; color:var(--gold) !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-wide-left .btn:hover{ background:#F0C157 !important; border-color:#F0C157 !important; color:var(--greenDeep) !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-wide-right{ display:grid; grid-template-columns:1fr 1fr; gap:1px; background:color-mix(in srgb, var(--gold) 40%, transparent); border:1px solid color-mix(in srgb, var(--gold) 40%, transparent); align-self:start; transform:translate(-26px,25px); }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-stat{ background:var(--greenDeep); padding:25px 24px; display:flex; flex-direction:column; gap:7px; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-stat-value{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(30px,3vw,44px); font-weight:500; line-height:1; color:var(--gold); font-variant-numeric:lining-nums; font-feature-settings:'lnum' 1; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-stat-label{ font-family:'Inter',sans-serif; font-size:12px; letter-spacing:.06em; text-transform:uppercase; color:var(--gold); opacity:.78; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-wide-card:hover .pe-stat-value{ color:#F0C157; }
@media(max-width:900px){ :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-wide-card{ grid-template-columns:1fr; gap:28px; } }
/* ── PE section, bare layout: 2-line left title (like AIF), 4 square stat boxes,
   left-aligned Know More; no outer card. ─────────────────────────────────── */
@media(min-width:1025px){
  :is(#home-pe,#pe-page-stats) .section-inner{ display:flex; align-items:flex-start; gap:clamp(32px,3.4vw,64px); }
  :is(#home-pe,#pe-page-stats) .ways-title{ flex:0 0 clamp(170px,14vw,240px); text-align:left !important;
    font-size:clamp(40px,4.8vw,70px) !important; line-height:1.02 !important; margin-bottom:0 !important; }
  :is(#home-pe,#pe-page-stats) .offer-groups-wrap{ flex:1 1 auto; min-width:0; }
}
.pe-bare{ display:flex; flex-direction:column; align-items:flex-start; gap:clamp(24px,2.4vw,38px); }
.pe-stats-bare{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:clamp(14px,1.4vw,22px); width:100%; box-sizing:border-box; }
.pe-stat-cell{ display:flex; align-items:center; justify-content:center; aspect-ratio:1312/1693; }
/* Circle→square morph, like the "companies we've backed" cards: a gold dot that
   expands to the full bordered box on scroll (.pe-go), contents fading in after. */
.pe-stat-card{ position:relative; width:78px; height:78px; border-radius:50% !important;
  border:1.5px solid var(--gold); background:var(--gold); overflow:hidden;
  display:flex; flex-direction:column; justify-content:flex-start; align-items:flex-start;
  padding:clamp(9px,0.9vw,16px) clamp(24px,2.2vw,38px) clamp(24px,2.2vw,38px); box-sizing:border-box;
  transition:width .6s cubic-bezier(.16,1,.3,1), height .6s cubic-bezier(.16,1,.3,1),
    border-radius .6s cubic-bezier(.16,1,.3,1), background .45s ease, border-color .18s ease; }
.pe-stat-card.pe-go{ width:100%; height:100%; border-radius:0 !important; background:transparent; }
.pe-stat-cell:nth-child(2) .pe-stat-card{ transition-delay:.14s; }
.pe-stat-cell:nth-child(3) .pe-stat-card{ transition-delay:.28s; }
.pe-stat-cell:nth-child(4) .pe-stat-card{ transition-delay:.42s; }
:is(#home-pe,#pe-page-stats) .pe-stat-card > *{ opacity:0; transition:opacity .35s ease; }
:is(#home-pe,#pe-page-stats) .pe-stat-card.pe-go > *{ opacity:1; transition-delay:.34s; }
.pe-stat-card:hover{ border-color:var(--gold); background:rgba(240,193,87,.06); }
@media (prefers-reduced-motion: reduce){
  .pe-stat-card{ width:100%; height:100%; border-radius:0 !important; background:transparent; transition:none; }
  :is(#home-pe,#pe-page-stats) .pe-stat-card > *{ opacity:1; }
}
/* fixed icon slot so every number row starts at the same y (top-aligned), and a
   fixed value line so every label row top-aligns too */
/* Wrap spans the FULL card width (left:0) so motifs can bleed to the side
   borders; each icon bakes its own inset into its viewBox coords instead. */
.pe-ico-wrap{ position:absolute; left:0; right:0; bottom:6%;
  height:auto; aspect-ratio:400/248;
  margin:0; display:flex; align-items:flex-end; justify-content:flex-start; }
/* Icon 2 keeps its lifted position; only its vertical ray continues to the
   card's bottom edge, via a tail spanning exactly the lift height. */
/* icon 3 sits flush in the card's bottom-left corner */
/* non-scaling-stroke: identical hairline on every icon regardless of its
   viewBox fit scale (authored stroke-width:3 rendered 1.17–1.67px before). */
.pe-ico{ height:100%; width:100%; max-width:100%; display:block;
  fill:none; stroke:var(--gold); stroke-width:1.6; stroke-linecap:butt; stroke-linejoin:miter; }
.pe-ico path, .pe-ico circle{ vector-effect:non-scaling-stroke; }
.pe-ico{ overflow:visible; }
.pe-ico .pe-dot{ fill:var(--gold); stroke:none; }
/* icons 2 & 4: their vertical ray continues past the lifted icon area to the
   card's bottom edge (left % = the ray's x in the shared 400-unit viewBox) */
/* Icon 3 is pinned to the card's bottom-left corner: a flush, taller wrap
   (48%+6%) with a matching taller viewBox (279 vs 248), so its motif scales up
   by exactly the lift and its top still lands on the other icons' top line. */
.pe-ico-wrap.pe-wrap-3{ bottom:0; height:auto; aspect-ratio:400/279; }
.pe-ico-wrap.pe-wrap-1{ bottom:0; height:auto; aspect-ratio:400/282; }
/* Icons 2 and 4 draw their vertical ray down to y=279 but were authored with a
   248-tall viewBox, so the ray was clipped at the wrapper's bottom edge instead
   of reaching the card's. Same correction as wrap-1 and wrap-3: give the wrapper
   the taller ratio and drop it to bottom:0. The svg also needs viewBox 0 0 400
   279 and overflow:visible - see the markup in index.html / private-equity.html.
   These two matched the Designer's native classes before they existed here; the
   values are identical, so adding them changes nothing that renders. */
.pe-ico-wrap.pe-wrap-2{ bottom:0; height:auto; aspect-ratio:400/279; }
.pe-ico-wrap.pe-wrap-4{ bottom:0; height:auto; aspect-ratio:400/279; }
:is(#home-pe,#pe-page-stats) .pe-stat-card .pe-cr{ margin-left:.28em; }
:is(#home-pe,#pe-page-stats) .pe-stat-card .pe-stat-value{ font-family:'Inter',sans-serif; font-size:clamp(30px,3vw,52px);
  font-weight:400; color:var(--gold); font-variant-numeric:lining-nums;
  display:flex !important; align-items:flex-end !important; height:clamp(44px,4.2vw,64px) !important;
  min-height:0 !important; max-height:none !important; overflow:hidden;
  line-height:1; white-space:nowrap; margin-bottom:12px; flex:0 0 auto; }
:is(#home-pe,#pe-page-stats) .pe-stat-card .pe-stat-value > *{ align-self:flex-end !important; line-height:1 !important; }
:is(#home-pe,#pe-page-stats) .pe-stat-card .pe-stat-value .ovs-num{ display:inline; font-size:1em !important; line-height:1 !important; align-self:flex-end !important; }
:is(#home-pe,#pe-page-stats) .pe-stat-card .pe-stat-label{ font-family:'OV Sage','Jost',sans-serif; font-weight:300;
  font-size:clamp(15px,1.35vw,23px); letter-spacing:0; text-transform:none;
  color:#E9D08A; line-height:1.18; }
.pe-bare-btn{ background:transparent !important; border:1.5px solid var(--gold) !important; color:var(--gold) !important; align-self:flex-start; }
.pe-bare-btn:hover{ background:#F0C157 !important; border-color:#F0C157 !important; color:var(--greenDeep) !important; }
@media(max-width:900px){
  .pe-stats-bare{ grid-template-columns:repeat(2,1fr); gap:14px; }
  :is(#home-pe,#pe-page-stats) .ways-title{ text-align:left !important; }
}
/* AIF: the title always sits above its cards, so it takes the same inset as
   .offer-group (which reserves the guide rail's lane) to share one left edge. */
@media(max-width:760px){ :is(#home-ways,#aif-ways) .ways-title{ padding-left:14px; } }
/* Below the desktop two-column layout the title sits above the cards, so it
   takes the same inset as .offer-group (which reserves the guide rail's lane)
   and the two share one left edge. */
@media(max-width:1024px){
  :is(#home-pe,#pe-page-stats) .ways-title{ padding-left:clamp(22px,4vw,56px) !important; text-align:left !important; }
}
@media(max-width:760px){
  :is(#home-pe,#pe-page-stats) .ways-title{ padding-left:14px !important; }
}
@media(max-width:430px){ .pe-stats-bare{ grid-template-columns:1fr 1fr; } }
/* Hover: outline brightens to the starburst soft gold; the starburst still pops at the top-right corner. */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card.stat-card:hover,
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card.stat-card:active{ border-color:#F0C157 !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card.stat-card:hover .stat-label,
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card.stat-card:hover .stat-value,
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card.stat-card:active .stat-label,
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card.stat-card:active .stat-value{ color:#F0C157 !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card.stat-card > *{ position:relative; z-index:2; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-eyebrow{ color:var(--gold) !important; opacity:.8; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-desc{ color:var(--gold) !important; opacity:.9; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card .card-divider{ border-top-color:var(--gold) !important; opacity:.5; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card .stat-label{ color:var(--gold) !important; opacity:.8; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card .stat-value{ color:var(--gold) !important; }
/* ══ HEDGEHOGS PERFORMANCE PANEL ═══════════════════════════════════════
   Swaps in where the description sits, so the card's frame, height, corner
   mark and buttons are untouched. Gold-on-green like the rest of the card;
   all figures in Inter. */
/* Description and returns panel occupy the SAME grid cell, so the row is as
   tall as the taller of the two and swapping between them cannot resize the
   card. That means visibility, not display — display:none would drop the
   hidden one out of the grid and the card would shrink again. */
.hh-swap{ display:grid; }
/* A mobile rule sets .offer-desc to display:-webkit-box with -webkit-line-clamp.
   That cannot lay out block children, so the three paragraphs rendered on top
   of one another. This card's description flows as normal blocks. */
.hh-swap > .offer-desc{ display:block !important; -webkit-line-clamp:none !important;
  -webkit-box-orient:initial !important; overflow:visible !important; }
.hh-swap > .offer-desc, .hh-swap > .hh-returns{ grid-area:1 / 1; min-width:0; }
.offer-desc p{ margin:0 0 13px; }
.offer-desc p:last-child{ margin-bottom:0; }
.hh-returns{ display:flex; flex-direction:column; gap:7px;
  visibility:hidden; opacity:0; pointer-events:none; transition:opacity .2s ease; }
.offer-card.show-returns .hh-returns{ visibility:visible; opacity:1; pointer-events:auto; }
.offer-card.show-returns .offer-desc{ visibility:hidden; opacity:0; pointer-events:none; }
.hh-ret-head{ display:flex; flex-wrap:wrap; align-items:baseline; gap:3px 12px; }
.hh-ret-cap{ font-family:'Inter',sans-serif; font-size:10.5px; font-weight:600; letter-spacing:.14em;
  text-transform:uppercase; color:#F0D88E; }
.hh-ret-cap2{ margin-top:9px; }

/* ── view toggle: sits at the card's top-right, its baseline on the bottom of
   the two-line title so it reads as part of the title band, not the chart ── */
.hh-title-row{ display:flex; align-items:flex-end; justify-content:space-between; gap:14px; }
/* The view toggle belongs to the chart, so it only exists while the chart does —
   on the description view there is nothing for it to switch. */
/* Hidden but still occupying its space — display:none collapsed the title row
   and shortened the card by ~36px on the description view. */
.hh-view-toggle{ visibility:hidden; }
/* Sambhav has no chart/table views, so its spacer only reserves the toggle's
   box — it must never become visible with the panel. */
.hh-vt-ghost{ visibility:hidden !important; width:54px; height:25px; flex:none; }
/* Head height is set by reserving TWO legend rows in both cards, at every
   width. The legend keeps its normal wrapping, so nothing is ever pushed
   outside the card and no label is truncated — forcing the head to one row
   made it 376px of fixed-px content in a ~310px box, which spilled past the
   card's gold border on laptop widths. Whether each legend happens to fit
   beside the caption no longer changes the height, so the two cards' rows stay
   in step regardless of what their labels say. */
/* DESKTOP ONLY. Both legends take their own right-aligned row of FIXED height,
   so the head is the same size in both cards no matter how many labels each
   carries or how they wrap — reserving a minimum was not enough, because in the
   780-1050px band the Hedgehogs pair needs more rows than Sambhav's single
   label. Deliberately not applied below 761px: the mobile head is a column, and
   there flex-basis sets HEIGHT rather than width, which pushed the legend
   straight out of the card. Scoped to these two AIF cards only. */
@media(min-width:761px){
  /* Both titles reserve three lines. "Hedgehogs Fund" needs a third line
     between roughly 780 and 1050px while "Sambhav Fund" still fits in two, so
     without this the title blocks differ by a line in that band and every row
     below inherits the offset. Equal reservation costs a little space at wide
     widths and keeps the two cards in step at all of them. */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .card-title{ min-height:3.3em; }
  /* Legend sits inline with "Performance", tops aligned, instead of wrapping to
     its own row below it — frees a full row of height for the chart to grow
     into. min-height on the HEAD (not the legend) is the safeguard against the
     two cards' heads mismatching if Hedgehogs' two-label legend ever wraps at a
     narrow width while Sambhav's one-label legend doesn't. */
  /* The head itself never wraps (the legend used to drop to its own row below
     "Performance" when its two labels didn't fit beside it — the exact bug this
     is fixing). The legend instead wraps ITS OWN two items vertically within
     whatever width remains, so it stays an inline flex item, top-aligned with
     the caption, on both cards regardless of how many labels it holds. */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-ret-head{
    align-items:flex-start !important; min-height:2.4em; flex-wrap:nowrap !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-ret-legend{
    flex:1 1 auto; min-width:0; margin-left:auto; justify-content:flex-end;
    flex-wrap:wrap; align-content:flex-start; row-gap:3px; }
}
@media(max-width:760px){ .hh-vt-ghost{ width:72px; height:32px; } }
.offer-card.show-returns .hh-view-toggle{ visibility:visible; }
.hh-title-row .card-title{ flex:1 1 auto; min-width:0; }
.hh-view-toggle{ display:flex; flex:none; margin-bottom:20px; }
.hh-vt{ height:25px; display:inline-flex; align-items:center; justify-content:center;
  padding:0 12px; background:transparent; border:1px solid #F0D88E; border-right-width:0; cursor:pointer;
  color:#F0D88E; font-family:'Inter',sans-serif; font-size:11px; font-weight:600; letter-spacing:.04em;
  transition:background .2s ease, color .2s ease; }
.hh-vt:last-child{ border-right-width:1px; }
.hh-vt:hover{ background:rgba(240,216,142,.16); }
.hh-vt.is-on{ background:#F0D88E; color:var(--greenDeep); }

/* ── table view ── */
.hh-table-wrap{ display:none; aspect-ratio:400/160; min-height:120px; box-sizing:border-box;
  border:1px solid rgba(240,216,142,.34); }
.hh-returns[data-ret-view="table"] .hh-chart-wrap{ display:none; }
.hh-returns[data-ret-view="table"] .hh-table-wrap{ display:block; }
/* Chrome 121+ ignores ::-webkit-scrollbar once the standard scrollbar-width is
   set, which is why the OS scrollbar was showing through. scrollbar-color is
   the standard way to theme it; the webkit rules stay for older engines. */
.hh-tbody{ height:calc(100% - 34px); overflow-y:auto;
  scrollbar-width:thin; scrollbar-color:#F0D88E rgba(240,216,142,.15); }
.hh-tbody::-webkit-scrollbar{ width:6px; }
.hh-tbody::-webkit-scrollbar-track{ background:rgba(240,216,142,.15); }
.hh-tbody::-webkit-scrollbar-thumb{ background:#F0D88E; }
.hh-tr{ display:grid; grid-template-columns:1.1fr 1fr 1fr; gap:10px; padding:9px 12px;
  font-family:'Inter',sans-serif; font-size:12.5px; color:#F0D88E; font-variant-numeric:tabular-nums; }
.hh-tr span:not(:first-child){ text-align:right; }
.hh-tr + .hh-tr{ border-top:1px solid rgba(240,216,142,.16); }
.hh-th{ font-size:9.5px; font-weight:600; letter-spacing:.07em; text-transform:uppercase;
  border-bottom:1px solid rgba(240,216,142,.34); }
.hh-th + .hh-tr{ border-top:none; }
/* Right-aligned beside the caption, and if the two full series names cannot
   fit there the legend wraps to its own line rather than breaking a name. */
.hh-ret-legend{ display:flex; gap:12px; flex:0 0 auto; margin-left:auto; }
.hh-lg{ font-family:'Inter',sans-serif; font-size:10px; letter-spacing:.04em; color:#F0D88E;
  display:inline-flex; align-items:center; gap:5px; white-space:nowrap; }
.hh-lg::before{ content:''; width:13px; height:0; border-top:2px solid #F0C157; }
.hh-lg-bm::before{ border-top:1.5px dashed rgba(240,193,87,.6); }

/* ── chart ── */
/* The wrap follows the chart's own aspect ratio rather than a fixed pixel
   height. A fixed height fought the SVG (width:100% + height:auto), which on a
   wide card rendered ~312px tall inside a 212px box and spilled over the
   Periodic Returns below. Tying both views to the same ratio also keeps the two
   views identical in height at every width, at no cost. */
/* Drawn on a 400x112 grid, so the chart is genuinely flatter rather than a
   400x158 plot squashed into a short box. Uniform scaling restored: the earlier
   non-uniform fit broke the line's draw animation and distorted the dots. */
.hh-chart-wrap{ position:relative; touch-action:pan-y; aspect-ratio:400/160; min-height:120px;
  max-width:100%; min-width:0; }
.hh-chart{ width:100%; height:100%; display:block; overflow:visible; max-width:100%; }
/* Taller/narrower phones: the 120px min-height fights the 400/160 aspect ratio,
   and `overflow:visible` then lets the plot paint past the card's border. The
   tooltip is an HTML sibling, not SVG content, so clipping the SVG to its own
   box costs nothing visible. */
@media(max-width:760px){
  .hh-chart{ overflow:hidden !important; }
  .hh-chart-wrap, .hh-table-wrap{ max-width:100% !important; min-width:0 !important; }
}
.hh-g{ stroke:rgba(240,193,87,.16); stroke-width:.7; }
.hh-g-base{ stroke:rgba(240,193,87,.42); stroke-dasharray:2 2.5; }
/* Authored in viewBox units but rendered at ~0.76×, so these are sized for
   the on-screen result, not the viewBox number. Full-opacity gold: the
   opacity multipliers put every label under the 4.5:1 floor. */
/* In-SVG type is authored in viewBox units, so what lands on screen is
   authored × (chartWidth / 400) — driven by the CHART's width, not the
   viewport. Keying it to viewport breakpoints inverted at the boundary (text
   got smaller as the window grew). These container bands hold the rendered
   size at roughly 9-11px at every chart width. */
.hh-gy, .hh-gx{ font-family:'Inter',sans-serif; fill:#F0D88E; font-size:9.5px; }
/* Sized in viewBox units against the 400x112 grid; the drawing scales
   uniformly, so these hold their rendered size across card widths. */
.hh-gy, .hh-gx{ font-size:7px; }
.hh-gy{ text-anchor:end; }
.hh-area{ fill:rgba(240,193,87,.13); opacity:0; transition:opacity .5s ease .45s; }
.hh-nav{ fill:none; stroke:#F0C157; stroke-width:1.9; stroke-linejoin:round; stroke-linecap:round;
  stroke-dasharray:1; stroke-dashoffset:1; transition:stroke-dashoffset 1.15s cubic-bezier(.32,.72,.32,1); }
.hh-bm{ fill:none; stroke:rgba(240,193,87,.55); stroke-width:1.2; stroke-dasharray:2.4 2.4;
  opacity:0; transition:opacity .6s ease .5s; }
.hh-dot-nav{ fill:#F0C157; opacity:0; transition:opacity .3s ease; }
.hh-dot-bm{ fill:rgba(240,193,87,.5); opacity:0; transition:opacity .3s ease .6s; }
.offer-card.ret-in .hh-nav{ stroke-dashoffset:0; }
.offer-card.ret-in .hh-area,
.offer-card.ret-in .hh-bm,
.offer-card.ret-in .hh-dot-bm{ opacity:1; }
.offer-card.ret-in .hh-dot-nav{ opacity:1; transition-delay:.75s; }
/* the readout cursor only exists while a point is active */
.hh-cursor{ stroke:#F0C157; stroke-width:.9; stroke-dasharray:2 2; opacity:0; }
.hh-cursor-dot{ fill:var(--greenDeep); stroke:#F0C157; stroke-width:1.8; opacity:0; }
.hh-chart-wrap.is-active .hh-cursor{ opacity:.55; }
.hh-chart-wrap.is-active .hh-cursor-dot{ opacity:1; }

/* ── tooltip ── */
.hh-tip{ position:absolute; top:0; left:0; z-index:6; pointer-events:none; opacity:0;
  transform:translate(-50%,-118%); transition:opacity .16s ease;
  background:#2F4423; border:1px solid #F0C157; padding:8px 11px; min-width:172px;
  white-space:nowrap; font-family:'Inter',sans-serif; }
.hh-chart-wrap.is-active .hh-tip{ opacity:1; }
.hh-tip-d{ font-size:9.5px; font-weight:600; letter-spacing:.09em; text-transform:uppercase;
  color:#F0D88E; margin-bottom:5px; }
.hh-tip-r{ display:flex; align-items:center; justify-content:space-between; gap:18px; }
.hh-tip-r + .hh-tip-r{ margin-top:3px; }
.hh-tip-k{ font-size:10px; color:#F0D88E; display:inline-flex; align-items:center; gap:5px; }
.hh-tip-k::before{ content:''; width:9px; height:0; border-top:2px solid #F0C157; }
.hh-tip-r.is-bm .hh-tip-k::before{ border-top:1.5px dashed rgba(240,193,87,.6); }
.hh-tip-v{ font-size:12.5px; font-weight:600; color:#F0D88E; font-variant-numeric:tabular-nums; }

/* ── periodic returns ── */
.hh-ret-stats{ display:grid; grid-template-columns:repeat(4,1fr); gap:0; border:1px solid rgba(240,193,87,.34); }
.hh-stat{ padding:8px 6px 9px; text-align:center; border-right:1px solid rgba(240,193,87,.34);
  display:flex; flex-direction:column; gap:3px; min-width:0; }
.hh-stat:last-child{ border-right:none; }
/* "Since Inception" wraps to two lines while the other three do not, so every
   label reserves the same height and sits on its baseline — otherwise that one
   box grows and drops its figure, which reads as inconsistent sizing even
   though all four are identical. Applies at every width the 4-column grid is
   used; the 2-up breakpoint below resets it, where all labels are single-line. */
.hh-stat{ justify-content:flex-end; }
.hh-stat-l{ font-family:'Inter',sans-serif; font-size:10px; font-weight:400; letter-spacing:.05em;
  text-transform:uppercase; color:#F0D88E; line-height:1.2;
  min-height:2.4em; display:flex; align-items:flex-end; justify-content:center; }
.hh-ret-val{ font-family:'Inter',sans-serif; font-size:15px; font-weight:400; color:#F0D88E;
  font-variant-numeric:tabular-nums; line-height:1.1; }
/* Sambhav is closed, so its box row carries status rather than returns —
   same frame and type as the periodic figures, three cells instead of four. */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-ret-stats{ min-height:63px; }
.sb-statv{ font-family:'Inter',sans-serif; font-size:15px; font-weight:400;
  color:#F0D88E; line-height:1.15; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] :is(.hh-ret-val,.sb-statv){
  height:19px; display:flex; align-items:flex-end; justify-content:center; }
@media(max-width:520px){
  /* Two-up like the Hedgehogs figures, so both box rows are two rows tall and
     the footnotes below them stay level. */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-stat{ min-height:48px; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-ret-stats{ min-height:99px; }
}
.hh-ret-foot{ font-family:'Inter',sans-serif; font-size:9.5px; letter-spacing:.03em; line-height:1.5;
  color:#F0D88E; opacity:.9; }

/* entrance: head, then chart draw, then stats, then footnote */
.hh-ret-head, .hh-ret-stats, .hh-ret-foot{ opacity:0;
  transition:opacity .42s ease, transform .42s cubic-bezier(.22,.8,.28,1); }
.hh-ret-stats{ transform:translateY(7px); }
.offer-card.ret-in .hh-ret-head{ opacity:1; }
.offer-card.ret-in .hh-ret-stats{ opacity:1; transform:none; transition-delay:.5s; }
.offer-card.ret-in .hh-ret-foot{ opacity:1; transition-delay:.8s; }
@media(prefers-reduced-motion:reduce){
  .hh-returns *, .hh-returns{ transition:none !important; }
  .hh-nav{ stroke-dashoffset:0 !important; }
  .hh-area, .hh-bm, .hh-dot-nav, .hh-dot-bm,
  .hh-ret-head, .hh-ret-stats, .hh-ret-foot{ opacity:1 !important; }
  .hh-ret-stats{ transform:none !important; }
}
@media(max-width:760px){
  /* five dates crowd a phone-width axis — keep first, middle and last */
  .hh-gx[data-t="2"], .hh-gx[data-t="4"]{ display:none; }
  /* touch targets, not mouse targets */
  .hh-vt{ height:32px; padding:0 14px; font-size:12px; }
  .hh-view-toggle{ margin-bottom:16px; }
  .hh-ret-head{ flex-direction:column; align-items:flex-start; gap:6px; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-ret-legend{
    flex:0 0 auto; min-height:2.4em; align-content:flex-start; }
  .hh-ret-legend{ margin-left:0; flex-wrap:wrap; justify-content:flex-start; gap:4px 14px; }
  .hh-ret-cap{ font-size:10px; letter-spacing:.11em; }
  .hh-lg{ font-size:9.5px; gap:4px; }
  .hh-lg::before{ width:11px; }
  /* lighter weights on mobile — 600 read as heavy at these sizes */
  .hh-stat-l{ font-size:9.5px; letter-spacing:.02em; font-weight:400; }
  .hh-ret-val{ font-size:15px; font-weight:400; }
  .hh-stat{ padding:8px 4px 9px; }
  .hh-tr{ font-size:12px; padding:8px 9px; gap:6px; }
  .hh-th{ font-size:9px; }
  /* The plot starts 26 of 400 viewBox units in (6.5%) to make room for the
     y-axis values, so the chart read as indented from the PERFORMANCE label
     above it. On a phone the axis values are dropped — the dotted 1000 baseline
     and the tooltip carry that information — and the chart is pulled left by
     exactly that 6.5%, so the plot's left edge lines up with the headings and
     the status boxes below. */
  /* Axis values are dropped on a phone (the dotted 1000 baseline and the
     tooltip carry them), which removes most of the apparent indent. The chart
     is NOT pulled left any more: shifting it by the 6.5% plot inset pushed the
     first date label outside the card, where it was clipped mid-word. */
  .hh-gy{ display:none; }
  .hh-tip{ min-width:0; padding:7px 9px; }
  .hh-tip-r{ gap:12px; }
  .hh-tip-k{ font-size:9.5px; }
  .hh-tip-v{ font-size:11.5px; }
}
/* Very narrow phones: the four periodic figures go two-up rather than
   squeezing four columns into ~300px. */
@media(max-width:520px){
  .hh-ret-stats{ grid-template-columns:repeat(2,1fr); }
  .hh-stat-l{ min-height:0; }
  .hh-stat{ border-bottom:1px solid rgba(240,216,142,.34); }
  .hh-stat:nth-child(2n){ border-right:none; }
  .hh-stat:nth-last-child(-n+2){ border-bottom:none; }
  .hh-title-row{ gap:10px; }
}
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .stat-row{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
/* The removed divider was also supplying the gap above the buttons, so the row
   carries it itself now — spacing without the line. Deliberately NOT scoped to
   .show-returns: the divider it replaces was unconditional, and tying it to the
   view state made the card shrink by this exact margin when the chart hid. */
/* margin-top:auto puts the row on the card floor, so the two cards' buttons
   align with each other whatever sits above them; padding carries the gap the
   removed divider used to provide. */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-card{ display:flex; flex-direction:column; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .stat-row{ margin-top:auto; padding-top:16px; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .stat-row .btn{
  min-width:0; max-width:100%; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.basket-stats{ display:grid; grid-template-columns:repeat(2,1fr); gap:16px; margin-top:auto; padding-top:16px; }
.basket-stats .stat-value.stat-blur{ filter:blur(5px); user-select:none; pointer-events:none; }
/* Title: soft gold (no hover marker — a corner starburst handles the hover).
   Right gutter keeps long titles from running under the corner starburst. */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card .card-title{ color:var(--gold) !important; padding-right:60px; }
/* Know More: identical behaviour to the product buttons (green → gold on hover) */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card .btn{ background:var(--greenDeep) !important; border-color:var(--gold) !important; color:var(--gold) !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card .btn:hover{ background:#F0C157 !important; color:var(--greenDeep) !important; border-color:#F0C157 !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .carousel-arrow{ border-color:var(--gold) !important; color:var(--gold) !important; background:transparent !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .carousel-arrow:hover{ background:var(--goldBright) !important; color:var(--greenDeep) !important; border-color:var(--goldBright) !important; }
/* Brand starburst (same as section-2 company cards), top-right, pops on hover.
   It fires AFTER the ~0.8s bg pulse via a transition-delay, so the whole thing
   (pulse → return → burst) resolves inside ~1.5s. */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card .conv-burst{ position:absolute; top:22px; right:22px; width:60px; height:60px; overflow:visible; pointer-events:none; z-index:4; }
/* Buttery ease-out (expo-out) burst that emerges in an overlapping sequence:
   the dot pops first, the vertical + horizontal lines grow next, and the two
   diagonals follow — each still in flight as the next begins. */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card .conv-burst-dot{ fill:#F0C157 !important; transform-box:fill-box; transform-origin:center; transform:scale(0); transition:transform .46s cubic-bezier(.1,.75,.25,1); }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card .conv-burst-lines line{ stroke:#F0C157 !important; stroke-width:2.4; stroke-linecap:round; transform-box:fill-box; transform-origin:center; transform:scale(0); transition:transform .55s cubic-bezier(.1,.75,.25,1); }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card:hover .conv-burst-dot,
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card:active .conv-burst-dot{ transform:scale(1); transition-delay:0s; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card:hover .conv-burst-lines line:nth-child(1),
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card:hover .conv-burst-lines line:nth-child(2),
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card:active .conv-burst-lines line:nth-child(1),
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card:active .conv-burst-lines line:nth-child(2){ transform:scale(1); transition-delay:.14s; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card:hover .conv-burst-lines line:nth-child(3),
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card:hover .conv-burst-lines line:nth-child(4),
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card:active .conv-burst-lines line:nth-child(3),
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card:active .conv-burst-lines line:nth-child(4){ transform:scale(1); transition-delay:.3s; }
/* The guide lines sit at z-index 1 and the cards at 2, so the cards already
   paint on top — but the cards are transparent, so the gold frame and rays
   showed straight through them. Filling each card with the section's own green
   makes it opaque without changing how it looks: the lines now stop cleanly at
   the card edge instead of crossing the content. */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card{ background:var(--greenDeep); }
/* The guide frame sits 22px in from the section edge while the content column
   only had 28px of padding, so the cards ran right up against the gold lines
   on both sides. This clears them. Desktop only — mobile keeps its 28px. */
@media(min-width:1025px){
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .section-inner{ padding-left:64px !important; padding-right:64px !important; }
}
/* Corner element system — soft gold, bottom-left, diagonal reaches the first card */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-guides{ position:absolute; inset:0; width:100%; height:100%; pointer-events:none; overflow:visible; z-index:1; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-guides line{ stroke:var(--gold); stroke-width:1.4; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-guides :is(#wgNode,#pegNode,#aifWgNode,#swgNode,#pePgNode){ fill:var(--gold); stroke:none; }
@media(max-width:768px){ :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tab{ border:1.5px solid var(--gold) !important; } }

/* ══ AIF HERO — parallax architectural image + gold type ══════════════════════ */
#aifHero{ position:relative; overflow:hidden; min-height:88vh; display:flex; align-items:flex-start; padding-left:0 !important; padding-right:0 !important; }
#aifHero .section-inner{ position:relative; z-index:2; max-width:none; margin:0; padding-left:var(--hero-text-inset); padding-right:28px; padding-top:calc(var(--niv-inset) + var(--niv-fab-h) + 56px); }
#aifHero .aif-hero-bg{
  position:absolute; left:0; right:0; top:-22%; height:144%; z-index:0; transform:translateY(0%);
  background:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e7314bf75b0bee4db6830_aif-hero-arch.webp') center/cover no-repeat;
  will-change:transform;
}
#aifHero .aif-hero-bg::after{ content:''; position:absolute; inset:0; background:linear-gradient(90deg, rgba(60,22,10,.42) 0%, rgba(60,22,10,.12) 55%, rgba(60,22,10,0) 100%); }
#aifHero .section-inner{ position:relative; z-index:2; }
#aifHero .eyebrow{ color:var(--paper) !important; opacity:.92; }
#aifHero .aif-hero-statement,
#aifHero .aif-hero-sub{ color:#F0C257 !important; }
/* Load-in: eyebrow → line 1 → line 2 → description, slide-up + fade */
@keyframes aifHeroRise{ from{ opacity:0; transform:translateY(28px); } to{ opacity:1; transform:translateY(0); } }
#aifHero .aif-anim{ opacity:0; animation:aifHeroRise .8s cubic-bezier(.22,.8,.28,1) both; }
#aifHero .eyebrow.aif-anim{ animation-delay:.1s; }
#aifHero .aif-hero-statement .aif-line1{ display:inline-block; opacity:0; animation:aifHeroRise .8s cubic-bezier(.22,.8,.28,1) .28s both; }
#aifHero .aif-hero-statement .aif-line2{ display:inline-block; opacity:0; animation:aifHeroRise .8s cubic-bezier(.22,.8,.28,1) .46s both; }
#aifHero .aif-hero-sub.aif-anim{ animation-delay:1.15s; }
@media (prefers-reduced-motion: reduce){ #aifHero .aif-anim, #aifHero .aif-line1, #aifHero .aif-line2{ opacity:1 !important; animation:none !important; } }
/* Gate hero text until the bg image has loaded */
#aifHero:not(.hero-ready) .aif-anim,
#aifHero:not(.hero-ready) .aif-line1,
#aifHero:not(.hero-ready) .aif-line2{ animation-play-state:paused !important; }
@media (prefers-reduced-motion: reduce){ #aifWhy .aif-why-title, #aifWhy .aif-why-body{ opacity:1 !important; transform:none !important; } }
#aifHero .aif-hero-statement{ color:var(--gold) !important; font-size:clamp(38px,5.6vw,81px) !important; line-height:1.12 !important; }
#aifHero .aif-hero-sub{ color:var(--paper) !important; opacity:.95; }

/* ══ PE HERO — AIF-hero parallax treatment (PE image) ══ */
#peHero{ position:relative; overflow:hidden; min-height:88vh; display:flex; align-items:flex-start; padding-left:0 !important; padding-right:0 !important; }
#peHero .section-inner{ position:relative; z-index:2; max-width:none; margin:0; padding-left:var(--hero-text-inset); padding-right:28px; padding-top:calc(var(--niv-inset) + var(--niv-fab-h) + 56px); box-sizing:border-box; }
#peHero .aif-hero-bg{ position:absolute; left:0; right:0; top:-22%; height:144%; z-index:0; background:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e731833183567e1285000_pe-hero-arch.webp') center calc(50% - 100px)/cover no-repeat; will-change:transform; }
#peHero .aif-hero-bg::after{ content:''; position:absolute; inset:0; background:linear-gradient(90deg, rgba(60,22,10,.42) 0%, rgba(60,22,10,.12) 55%, rgba(60,22,10,0) 100%); }
#peHero .eyebrow{ color:var(--paper) !important; opacity:.92; }
#peHero .aif-hero-statement{ color:var(--gold) !important; font-size:clamp(38px,5.6vw,81px) !important; line-height:1.12 !important; margin:18px 0 28px; max-width:900px; }
/* LT Serif, at the AIF hero's scale. */
#peHero .aif-hero-statement,
#peHero .aif-hero-statement *{ font-family:var(--f-serif) !important; }
#peHero .aif-hero-statement em{ font-style:italic; }
#peHero .aif-hero-sub{ color:var(--paper) !important; opacity:.95; font-size:clamp(18px,2vw,26px); line-height:1.5; max-width:680px; }
#peHero .eyebrow{ letter-spacing:.14em; text-transform:uppercase; }
#peHero .eyebrow.pe-hl{ display:inline-block; background-image:linear-gradient(var(--gold),var(--gold)); background-repeat:no-repeat; background-position:0% center; background-size:0% 100%; padding:0 .06em; }
#peHero .eyebrow.pe-hl.pe-hl-on{ animation:peHeroHl 3.4s ease .3s forwards; }
@keyframes peHeroHl{ 0%{ background-size:0% 100%; background-position:0% center; } 22%{ background-size:100% 100%; background-position:0% center; } 78%{ background-size:100% 100%; background-position:100% center; } 100%{ background-size:0% 100%; background-position:100% center; } }
@media (prefers-reduced-motion: reduce){ #peHero .eyebrow.pe-hl.pe-hl-on{ animation:none; } }
#peHero .aif-anim{ opacity:0; animation:aifHeroRise .8s cubic-bezier(.22,.8,.28,1) both; }
#peHero .eyebrow.aif-anim{ animation-delay:.1s; }
#peHero .eyebrow#peHeroEyebrow{ opacity:1; }
#peHero .aif-hero-statement .aif-line1{ display:inline-block; opacity:0; animation:aifHeroRise .8s cubic-bezier(.22,.8,.28,1) .28s both; }
#peHero .aif-hero-statement .aif-line2{ display:inline-block; opacity:0; animation:aifHeroRise .8s cubic-bezier(.22,.8,.28,1) .46s both; }
#peHero .aif-hero-sub.aif-anim{ animation-delay:1.15s; }
@media (prefers-reduced-motion: reduce){ #peHero .aif-anim, #peHero .aif-line1, #peHero .aif-line2{ opacity:1 !important; animation:none !important; } }
/* Gate hero text until the bg image has loaded */
#peHero:not(.hero-ready) .aif-anim,
#peHero:not(.hero-ready) .aif-line1,
#peHero:not(.hero-ready) .aif-line2,
#peHero:not(.hero-ready) .eyebrow.pe-hl{ animation-play-state:paused !important; }
#peHero:not(.hero-ready) .aif-hero-statement{ opacity:0; }
/* Desktop: two lines only — the break inside line 1 is for phones. */
@media(min-width:761px){ .pe-hero-br{ display:none; } }
/* EB hero description: two lines on desktop, three on phones. */
@media(min-width:761px){ .eqb-sub-br{ display:none; } }
/* STRATEGY hero — AIF/PE parallax treatment */
#stratHero{ position:relative; overflow:hidden; min-height:88vh; display:flex; align-items:flex-start; padding-left:0 !important; padding-right:0 !important; }
#stratHero .section-inner{ position:relative; z-index:2; max-width:none; margin:0; padding-left:var(--hero-text-inset); padding-right:var(--hero-text-inset); padding-top:calc(var(--niv-inset) + var(--niv-fab-h) + 56px); box-sizing:border-box; }
#stratHero .aif-hero-bg{ position:absolute; left:0; right:0; top:-22%; height:144%; z-index:0; background:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e7319fec4d4054b9d162b_strat-hero.webp') center center/cover no-repeat; will-change:transform; }
#stratHero .aif-hero-bg::after{ content:''; position:absolute; inset:0; background:linear-gradient(90deg, rgba(60,22,10,.46) 0%, rgba(60,22,10,.16) 55%, rgba(60,22,10,0) 100%); }
#stratHero .eyebrow{ color:var(--paper) !important; opacity:.92; letter-spacing:.14em; text-transform:uppercase; }
#stratHero .aif-hero-statement{ color:var(--gold) !important; font-size:clamp(38px,5.6vw,81px) !important; line-height:1.12 !important; margin:18px 0 28px; max-width:none; }
#stratHero .aif-hero-statement em{ font-style:italic; }
.strat-hero-br{ display:none; }
.eqb-hero-br{ display:none; }
#stratHero .aif-hero-sub{ color:var(--paper) !important; opacity:.95; font-size:clamp(18px,2vw,26px); line-height:1.5; max-width:680px; }
/* Parity with the AIF hero: same right inset, same statement rhythm. */
#stratHero .section-inner{ padding-right:28px !important; }
#stratHero .aif-hero-statement{ margin:18px 0 28px !important; }
#stratHero .aif-hero-actions.aif-anim{ animation-delay:1.35s; }
#stratHero .aif-anim{ opacity:0; animation:aifHeroRise .8s cubic-bezier(.22,.8,.28,1) both; }
#stratHero .eyebrow.aif-anim{ animation-delay:.1s; }
#stratHero .aif-hero-statement .aif-line1{ display:inline-block; opacity:0; animation:aifHeroRise .8s cubic-bezier(.22,.8,.28,1) .28s both; }
#stratHero .aif-hero-statement .aif-line2{ display:inline-block; opacity:0; animation:aifHeroRise .8s cubic-bezier(.22,.8,.28,1) .46s both; }
#stratHero .aif-hero-sub.aif-anim{ animation-delay:1.15s; }
#stratHero:not(.hero-ready) .aif-anim,
#stratHero:not(.hero-ready) .aif-line1,
#stratHero:not(.hero-ready) .aif-line2{ animation-play-state:paused !important; }
#stratHero:not(.hero-ready) .aif-hero-statement{ opacity:0; }
/* EQUITY BASKETS hero — AIF/PE parallax treatment */
#eqbHero{ position:relative; overflow:hidden; min-height:88vh; display:flex; align-items:flex-start; padding-left:0 !important; padding-right:0 !important; }
#eqbHero .section-inner{ position:relative; z-index:2; max-width:none; margin:0; padding-left:var(--hero-text-inset); padding-right:28px; padding-top:calc(var(--niv-inset) + var(--niv-fab-h) + 56px); box-sizing:border-box; }
#eqbHero .aif-hero-bg{ position:absolute; left:0; right:0; top:-22%; height:144%; z-index:0; background:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e7318c515f7e0d9f1bec2_eqb-hero.webp?v=5') center center/cover no-repeat; will-change:transform; }
/* Same left-to-right scrim as the AIF hero, so the type reads on the photo. */
#eqbHero .aif-hero-bg::after{ content:''; position:absolute; inset:0; background:linear-gradient(90deg, rgba(60,22,10,.42) 0%, rgba(60,22,10,.12) 55%, rgba(60,22,10,0) 100%); }
#eqbHero .eyebrow{ color:var(--paper) !important; opacity:.92; letter-spacing:.14em; text-transform:uppercase; }
#eqbHero .aif-hero-statement{ color:var(--gold) !important; font-size:clamp(38px,5.6vw,81px) !important; line-height:1.12 !important; margin:18px 0 28px; max-width:none; }
#eqbHero .aif-hero-statement em{ font-style:italic; }
#eqbHero .aif-hero-sub{ color:var(--paper) !important; opacity:.95; font-size:clamp(18px,2vw,26px); line-height:1.5; max-width:680px; }
#eqbHero .aif-anim{ opacity:0; animation:aifHeroRise .8s cubic-bezier(.22,.8,.28,1) both; }
#eqbHero .eyebrow.aif-anim{ animation-delay:.1s; }
#eqbHero .aif-hero-statement .aif-line1{ display:inline-block; opacity:0; animation:aifHeroRise .8s cubic-bezier(.22,.8,.28,1) .28s both; }
#eqbHero .aif-hero-statement .aif-line2{ display:inline-block; opacity:0; animation:aifHeroRise .8s cubic-bezier(.22,.8,.28,1) .46s both; }
#eqbHero .aif-hero-sub.aif-anim{ animation-delay:1.15s; }
#eqbHero:not(.hero-ready) .aif-anim, #eqbHero:not(.hero-ready) .aif-line1, #eqbHero:not(.hero-ready) .aif-line2{ animation-play-state:paused !important; }
#eqbHero:not(.hero-ready) .aif-hero-statement{ opacity:0; }
@media (prefers-reduced-motion: reduce){ #eqbHero .aif-anim, #eqbHero .aif-line1, #eqbHero .aif-line2{ opacity:1 !important; animation:none !important; } }
/* DHANDHO hero — AIF/PE parallax treatment */#dvHero{ position:relative; overflow:hidden; min-height:88vh; display:flex; align-items:flex-start; padding-left:0 !important; padding-right:0 !important; }
#dvHero .section-inner{ position:relative; z-index:2; max-width:none; margin:0; padding-left:var(--hero-text-inset); padding-right:var(--hero-text-inset); padding-top:calc(var(--niv-inset) + var(--niv-fab-h) + 56px); box-sizing:border-box; }
#dvHero .aif-hero-bg{ position:absolute; left:0; right:0; top:-22%; height:144%; z-index:0; background:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e73153ecbdbe39dfa0ebe_dhandho-hero.webp') center center/cover no-repeat; will-change:transform; }
#dvHero .aif-hero-bg::after{ content:''; position:absolute; inset:0; background:linear-gradient(90deg, rgba(60,22,10,.5) 0%, rgba(60,22,10,.18) 55%, rgba(60,22,10,0) 100%); }
#dvHero .eyebrow{ color:var(--paper) !important; opacity:.92; letter-spacing:.14em; text-transform:uppercase; }
#dvHero .aif-hero-statement{ color:var(--gold) !important; font-size:clamp(38px,5.6vw,81px) !important; line-height:1.12 !important; margin:18px 0 28px; max-width:none; text-wrap:balance; }
#dvHero .aif-hero-statement em{ font-style:italic; }
#dvHero .aif-hero-sub{ color:var(--paper) !important; opacity:.95; font-size:clamp(18px,2vw,26px); line-height:1.5; max-width:680px; }
#dvHero .aif-anim{ opacity:0; animation:aifHeroRise .8s cubic-bezier(.22,.8,.28,1) both; }
#dvHero .eyebrow.aif-anim{ animation-delay:.1s; }
#dvHero .aif-hero-statement .aif-line1{ display:inline-block; opacity:0; animation:aifHeroRise .8s cubic-bezier(.22,.8,.28,1) .28s both; }
#dvHero .aif-hero-statement .aif-line2{ display:inline-block; opacity:0; animation:aifHeroRise .8s cubic-bezier(.22,.8,.28,1) .46s both; }
#dvHero .aif-hero-sub.aif-anim{ animation-delay:1.15s; }
#dvHero:not(.hero-ready) .aif-anim, #dvHero:not(.hero-ready) .aif-line1, #dvHero:not(.hero-ready) .aif-line2{ animation-play-state:paused !important; }
#dvHero:not(.hero-ready) .aif-hero-statement{ opacity:0; }
@media (prefers-reduced-motion: reduce){ #dvHero .aif-anim, #dvHero .aif-line1, #dvHero .aif-line2{ opacity:1 !important; animation:none !important; } }
@media (prefers-reduced-motion: reduce){ #stratHero .aif-anim, #stratHero .aif-line1, #stratHero .aif-line2{ opacity:1 !important; animation:none !important; } }
/* STRATEGY hero — native mobile scaling/spacing/positioning */
@media(max-width:760px){
  #stratHero{ min-height:82vh; align-items:flex-end; }
  #stratHero .section-inner{ padding-bottom:56px; padding-left:44px !important; padding-right:28px !important; }
  #stratHero .aif-hero-sub{ font-size:clamp(16px,4.4vw,20px) !important; max-width:100% !important; line-height:1.5 !important; overflow-wrap:break-word; text-align:left !important; }
  #stratHero .eyebrow{ font-size:13px !important; text-align:left !important; }
  #stratHero .aif-hero-bg{ background-position:66% center !important; }
  #stratHero .aif-hero-bg::after{ background:linear-gradient(180deg, rgba(60,22,10,.20) 0%, rgba(60,22,10,.30) 45%, rgba(60,22,10,.68) 100%) !important; }
  #stratHero .strat-hero-br{ display:none !important; }
}
/* AIF / PE / Equity Basket heroes — mirror the strategy hero mobile treatment
   (scaling, alignment, spacing, gradient) — MOBILE ONLY. */
@media(max-width:760px){
  #stratHero,
  #aifHero, #peHero, #eqbHero, #dvHero{ min-height:82vh; align-items:flex-end; }
  #stratHero .section-inner,
  #aifHero .section-inner, #peHero .section-inner, #eqbHero .section-inner, #dvHero .section-inner{ padding-bottom:56px; padding-left:44px !important; padding-right:28px !important; }
  #stratHero .aif-hero-statement,
  #aifHero .aif-hero-statement, #peHero .aif-hero-statement, #eqbHero .aif-hero-statement, #dvHero .aif-hero-statement{ font-size:clamp(42px,12.5vw,68px) !important; line-height:1.02 !important; margin:12px 0 18px !important; max-width:100% !important; overflow-wrap:break-word; word-break:break-word; text-align:left !important; }
  #stratHero .aif-hero-sub,
  #aifHero .aif-hero-sub, #peHero .aif-hero-sub, #eqbHero .aif-hero-sub, #dvHero .aif-hero-sub{ font-size:clamp(16px,4.4vw,20px) !important; max-width:100% !important; line-height:1.5 !important; overflow-wrap:break-word; text-align:left !important; }
  #stratHero .eyebrow,
  #aifHero .eyebrow, #peHero .eyebrow, #eqbHero .eyebrow, #dvHero .eyebrow{ font-size:13px !important; text-align:left !important; }
  #aifHero .aif-hero-bg, #peHero .aif-hero-bg, #eqbHero .aif-hero-bg{ background-position:66% center !important; }
  #aifHero .aif-hero-bg::after, #peHero .aif-hero-bg::after, #eqbHero .aif-hero-bg::after{ background:linear-gradient(180deg, rgba(60,22,10,.20) 0%, rgba(60,22,10,.30) 45%, rgba(60,22,10,.68) 100%) !important; }
  #eqbHero .eqb-hero-br{ display:inline !important; }
}
/* Uniform PE section titles (OV Sage, hedgehogs size), hero excluded */
#page-private-equity .aif-works-heading,
#page-private-equity .bedrock-title,
#page-private-equity .hero-section-header,
#page-private-equity .hh-cross-title,
#page-private-equity .pe-offer .sec-title,
#page-private-equity .conv-roll-title{
  font-family:'OV Sage','Jost',sans-serif !important;
  font-size:clamp(32px,3.9vw,54px) !important;
  line-height:1.12 !important;
}

/* ══ AIF "WHY WE BUILT IT" — centered animated statement + 2×2 card pairs ══════
   Heading reuses the homepage word-reveal (conv-word-reveal). Each of the 4
   items is a header card (bigger, terracotta + starburst on hover) stacked over
   a smaller description card (green fill + gold text + growth arrow on hover),
   mirroring the homepage section-2 heroes cards. */
#aifWhy{ background:var(--paper); }
#aifWhy .section-inner{ display:flex; flex-direction:column; align-items:center; text-align:center; }
/* Hedgehogs Power of Simplicity — reuse AIF section-2 centered statement styles */
#hhPower .section-inner{ display:flex; flex-direction:column; align-items:center; text-align:center; }
#hhPower .aif-why-heading{ font-family:var(--f-serif) !important; font-weight:400 !important; color:var(--ink) !important; text-align:center; font-size:clamp(30px,4.2vw,64px) !important; line-height:1.16 !important; max-width:none !important; margin:0 auto !important; }
#hhPower .hh-power-sub{ font-family:'Jost',sans-serif; font-size:clamp(17px,1.5vw,21px); line-height:1.6; color:var(--gray); text-align:center; max-width:640px; margin:26px auto 0; }
#aifWhy .aif-why-heading{ font-family:var(--f-serif) !important; font-weight:400 !important; color:var(--ink) !important; text-align:center; font-size:clamp(40px,6vw,88px) !important; line-height:1.16 !important; }
/* Unified founder-quote avatar: soft-gold circle, consistent size across pages */
#aifWhy .conv-founder-avatar, #homeConvStatement .conv-founder-avatar, #peQuote .conv-founder-avatar, .conv-statement-inner .conv-founder-avatar{ width:96px !important; height:96px !important; border-radius:50% !important; overflow:hidden; background:var(--gold) !important; flex:0 0 auto; }
.conv-statement-inner .conv-founder-avatar img{ width:100% !important; height:100% !important; border-radius:50% !important; object-fit:cover; object-position:50% 18%; transform:scale(1.5); transform-origin:50% 22%; display:block; }
#aifWhy .aif-why-founder{ justify-content:center; margin:34px 0 58px; }
@media(max-width:760px){
  /* Same treatment as the other quote sections: name 20% smaller, avatar, role
     and gaps rebalanced. */
  #aifWhy .aif-why-founder{ gap:16px; margin:26px 0 44px; }
  #aifWhy .conv-founder-name{ font-size:20px; }
  #aifWhy .conv-founder-role{ font-size:17px; margin-top:2px; }
  #aifWhy .conv-founder-avatar{ width:72px !important; height:72px !important; }
}
#aifWhy .conv-founder-avatar{ border-radius:50% !important; overflow:hidden; }
#aifWhy .conv-founder-avatar img{ object-fit:cover !important; object-position:50% 18% !important; transform:scale(1.5) !important; transform-origin:50% 22% !important; width:100% !important; height:100% !important; }
#aifWhy .aif-why-cards-title{ font-family:var(--f-serif); font-weight:400; color:var(--ink); font-size:clamp(26px,3vw,44px); line-height:1.14; text-align:center; margin:0 auto 28px; }
#aifWhy .aif-why-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:20px; width:100%; max-width:1240px; margin:0 auto; }
#aifWhy .aif-why-item{ display:flex; flex-direction:column; text-align:left; border:1.5px solid var(--greenDeep); box-shadow:0 16px 42px -18px rgba(44,46,43,.20); }
/* Header card — bigger, tint base → terracotta on hover, starburst pops, OV Sage title */
#aifWhy .aif-why-head{ position:relative; overflow:hidden; background:var(--tint); padding:34px 24px; min-height:280px; display:flex; align-items:flex-end; }
#aifWhy .aif-why-head:hover{ background:var(--terra); }
#aifWhy .aif-why-title{ font-family:'OV Sage','Jost',sans-serif; font-weight:500; font-size:clamp(20px,1.7vw,28px); line-height:1.14; color:var(--greenDeep); position:relative; z-index:2; opacity:0; transform:translateY(20px); transition:opacity .6s ease, transform .6s cubic-bezier(.22,.8,.28,1); }
#aifWhy .aif-why-item.in .aif-why-title{ opacity:1; transform:translateY(0); }
#aifWhy .aif-why-head:hover .aif-why-title{ color:var(--gold); }
#aifWhy .aif-why-head .conv-burst{ position:absolute; top:20px; right:20px; width:82px; height:82px; overflow:visible; pointer-events:none; z-index:3; }
#aifWhy .aif-why-head .conv-burst-dot{ transform:scale(0); transform-origin:center; fill:var(--gold); }
#aifWhy .aif-why-head .conv-burst-lines line{ transform:scale(0); transform-origin:center; stroke:var(--gold); stroke-width:2; }
#aifWhy .aif-why-head:hover .conv-burst-dot,
#aifWhy .aif-why-head:hover .conv-burst-lines line{ transform:scale(1); }
/* Description card — smaller, paper base → green fill + gold text + arrow on hover */
#aifWhy .aif-why-desc{ position:relative; overflow:hidden; background:var(--paper); padding:24px 22px 24px; min-height:150px; display:flex; flex-direction:column; gap:18px; }
#aifWhy .aif-why-desc:hover{ background:var(--greenDeep); border-color:var(--greenDeep); }
#aifWhy .aif-why-body{ font-family:'Jost',sans-serif; font-size:clamp(14px,1vw,16px); line-height:1.5; color:var(--ink); position:relative; z-index:2; opacity:0; transform:translateY(16px); transition:opacity .55s ease, transform .55s cubic-bezier(.22,.8,.28,1); }
#aifWhy .aif-why-item.in .aif-why-body{ opacity:1; transform:translateY(0); transition-delay:.34s; }
#aifWhy .aif-why-desc:hover .aif-why-body{ color:var(--gold); }
#aifWhy .aif-why-desc .hero-arrow{ position:relative; align-self:flex-start; margin-top:auto; width:54px; height:54px; overflow:visible; transform:scale(0); transform-origin:left bottom; pointer-events:none; z-index:3; }
#aifWhy .aif-why-desc:hover .hero-arrow{ transform:scale(1); }
#aifWhy .aif-why-desc .hero-arrow line{ stroke:var(--gold); stroke-width:2.5; stroke-linecap:round; }
#aifWhy .aif-why-desc .hero-arrow circle{ fill:var(--gold); }
@media(max-width:1024px){
  #aifWhy .aif-why-grid{ grid-template-columns:1fr 1fr; gap:24px; }
}
@media(max-width:640px){
  #aifWhy .aif-why-grid{ grid-template-columns:1fr; gap:22px; }
  #aifWhy .aif-why-head{ min-height:150px; padding:26px 22px; }
  #aifWhy .aif-why-desc{ padding:22px 22px 24px; }
}

/* ══ AIF ALLOWS US — horizontal rail of pairs, identical to home section 2 ══════
   Each pair = left title card (tint→terracotta on hover, gold title + starburst)
   + right description card (reuses .hero-quote: green on hover, gold text +
   animated growth arrow). Centered serif header with nav arrows on the right. */
#aifAllowsSection, #hhLookSection{ background:var(--paper); padding-left:0 !important; padding-right:0 !important; }
/* Left-align header + cards to the logo left edge; arrows + right edge to the menu button. */
#aifAllowsSection .section-inner, #hhLookSection .section-inner{ max-width:none; margin:0; padding-left:var(--hero-text-inset); padding-right:var(--niv-inset); }
#aifAllowsSection .hero-subrow, #hhLookSection .hero-subrow{ justify-content:flex-start; }
#aifAllowsSection .hero-section-header, #hhLookSection .hero-section-header{ text-align:left; }
#aifAllowsSection .hero-nav, #hhLookSection .hero-nav{ right:0 !important; }
#aifAllowsSection .hero-pair, #hhLookSection .hero-pair{ flex:0 0 calc((100% - 60px) / 2.2); }
#aifAllowsSection .hero-pair .aif-pair-head, #hhLookSection .hero-pair .aif-pair-head{ flex:0 0 58%; min-height:540px; background:var(--tint); position:relative; display:flex; align-items:flex-end; padding:44px 42px; overflow:hidden; border:none; box-sizing:border-box; }
#aifAllowsSection .aif-pair-head:hover, #hhLookSection .aif-pair-head:hover{ background:var(--terra); }
#aifAllowsSection .aif-pair-num{ position:absolute; top:30px; left:36px; z-index:3; font-family:'OV Sage','Jost',sans-serif; font-weight:500; font-size:20px; letter-spacing:.04em; color:var(--greenDeep); font-variant-numeric:lining-nums; font-feature-settings:'lnum' 1; transition:color .18s ease; }
#aifAllowsSection .aif-pair-head:hover .aif-pair-num, #aifAllowsSection .aif-pair-head.demo-active .aif-pair-num, #aifAllowsSection .aif-pair-head.auto-on .aif-pair-num{ color:var(--gold); }
/* Keep card titles contained: big lead words sit on their own line, rest wraps balanced */
#aifAllowsSection .aif-pair-title{ text-wrap:balance; }
#aifAllowsSection .aif-pair-title strong{ display:block; margin-bottom:8px; line-height:1.08; }
#aifAllowsSection .hero-rail, #hhLookSection .hero-rail{ overflow:visible; padding-bottom:36px; }
#aifAllowsSection .aif-pair-head:hover .aif-pair-title, #hhLookSection .aif-pair-head:hover .aif-pair-title{ color:var(--gold); }
#aifAllowsSection .aif-pair-title, #hhLookSection .aif-pair-title{ font-family:'OV Sage','Jost',sans-serif; font-weight:500; font-size:clamp(22px,2.3vw,36px); line-height:1.14; color:var(--greenDeep); position:relative; z-index:2; }
#aifAllowsSection .aif-pair-head .conv-burst, #hhLookSection .aif-pair-head .conv-burst{ position:absolute; top:34px; right:36px; width:96px; height:96px; overflow:visible; pointer-events:none; z-index:3; }
#aifAllowsSection .aif-pair-head .conv-burst-dot, #hhLookSection .aif-pair-head .conv-burst-dot{ transform:scale(0); transform-origin:center; fill:var(--gold); transition:transform .45s cubic-bezier(.16,1,.3,1); }
#aifAllowsSection .aif-pair-head .conv-burst-lines line, #hhLookSection .aif-pair-head .conv-burst-lines line{ transform:scale(0); transform-origin:center; stroke:var(--gold); stroke-width:2; transition:transform .45s cubic-bezier(.16,1,.3,1) .08s; }
#aifAllowsSection .aif-pair-head:hover .conv-burst-dot,
#aifAllowsSection .aif-pair-head:hover .conv-burst-lines line,
#hhLookSection .aif-pair-head:hover .conv-burst-dot,
#hhLookSection .aif-pair-head:hover .conv-burst-lines line{ transform:scale(1); }

/* NO MASKING: the rail does not clip at all (overflow:visible), so every card in
   the row stays fully visible — nothing is ever cropped on either edge. The row
   is moved linearly by transform instead of by a scrollport. */
#aifRailArea, #hhLookRailArea, #eqbLookRailArea, #peLookRailArea, #stratLookRailArea, #dvLookRailArea{
  overflow:visible !important;
  margin-left:0 !important; margin-right:0 !important;
  padding-left:0 !important; padding-right:0 !important;
}
#aifRailArea .hero-rail-track, #hhLookRailArea .hero-rail-track, #eqbLookRailArea .hero-rail-track, #peLookRailArea .hero-rail-track, #stratLookRailArea .hero-rail-track, #dvLookRailArea .hero-rail-track{
  display:flex !important; flex-wrap:nowrap !important; width:max-content !important;
  padding-inline-end:0 !important;
  will-change:transform;
}
#aifRailArea .hero-pair, #hhLookRailArea .hero-pair, #eqbLookRailArea .hero-pair, #peLookRailArea .hero-pair, #stratLookRailArea .hero-pair, #dvLookRailArea .hero-pair{ scroll-snap-align:none !important; }

@media(max-width:760px){
  /* Auto-trigger colour changes are immediate — no fade in or out. */
#aifAllowsSection .aif-pair-head,
#aifAllowsSection .aif-pair-head .aif-pair-title,
#aifAllowsSection .aif-pair-head .pe-look-co,
#aifAllowsSection .aif-pair-head .aif-pair-num,
#aifAllowsSection .aif-pair-head .conv-burst-dot,
#aifAllowsSection .aif-pair-head .conv-burst-lines line,
#aifAllowsSection .hero-quote,
#aifAllowsSection .hero-quote .hero-quote-text,
#aifAllowsSection .hero-quote .hero-arrow,
#aifAllowsSection .hero-quote .hero-arrow line,
#aifAllowsSection .hero-quote .hero-arrow circle,
#hhLookSection .aif-pair-head,
#hhLookSection .aif-pair-head .aif-pair-title,
#hhLookSection .aif-pair-head .pe-look-co,
#hhLookSection .aif-pair-head .aif-pair-num,
#hhLookSection .aif-pair-head .conv-burst-dot,
#hhLookSection .aif-pair-head .conv-burst-lines line,
#hhLookSection .hero-quote,
#hhLookSection .hero-quote .hero-quote-text,
#hhLookSection .hero-quote .hero-arrow,
#hhLookSection .hero-quote .hero-arrow line,
#hhLookSection .hero-quote .hero-arrow circle,
#peLookSection .aif-pair-head,
#peLookSection .aif-pair-head .aif-pair-title,
#peLookSection .aif-pair-head .pe-look-co,
#peLookSection .aif-pair-head .aif-pair-num,
#peLookSection .aif-pair-head .conv-burst-dot,
#peLookSection .aif-pair-head .conv-burst-lines line,
#peLookSection .hero-quote,
#peLookSection .hero-quote .hero-quote-text,
#peLookSection .hero-quote .hero-arrow,
#peLookSection .hero-quote .hero-arrow line,
#peLookSection .hero-quote .hero-arrow circle,
#dvLookSection .aif-pair-head,
#dvLookSection .aif-pair-head .aif-pair-title,
#dvLookSection .aif-pair-head .pe-look-co,
#dvLookSection .aif-pair-head .aif-pair-num,
#dvLookSection .aif-pair-head .conv-burst-dot,
#dvLookSection .aif-pair-head .conv-burst-lines line,
#dvLookSection .hero-quote,
#dvLookSection .hero-quote .hero-quote-text,
#dvLookSection .hero-quote .hero-arrow,
#dvLookSection .hero-quote .hero-arrow line,
#dvLookSection .hero-quote .hero-arrow circle,
#stratMethodSection .aif-pair-head,
#stratMethodSection .aif-pair-head .aif-pair-title,
#stratMethodSection .aif-pair-head .pe-look-co,
#stratMethodSection .aif-pair-head .aif-pair-num,
#stratMethodSection .aif-pair-head .conv-burst-dot,
#stratMethodSection .aif-pair-head .conv-burst-lines line,
#stratMethodSection .hero-quote,
#stratMethodSection .hero-quote .hero-quote-text,
#stratMethodSection .hero-quote .hero-arrow,
#stratMethodSection .hero-quote .hero-arrow line,
#stratMethodSection .hero-quote .hero-arrow circle,
#eqbMethodSection .aif-pair-head,
#eqbMethodSection .aif-pair-head .aif-pair-title,
#eqbMethodSection .aif-pair-head .pe-look-co,
#eqbMethodSection .aif-pair-head .aif-pair-num,
#eqbMethodSection .aif-pair-head .conv-burst-dot,
#eqbMethodSection .aif-pair-head .conv-burst-lines line,
#eqbMethodSection .hero-quote,
#eqbMethodSection .hero-quote .hero-quote-text,
#eqbMethodSection .hero-quote .hero-arrow,
#eqbMethodSection .hero-quote .hero-arrow line,
#eqbMethodSection .hero-quote .hero-arrow circle{ transition:none !important; }
  /* While the demo plays, taps/touches on the pairs do nothing; they work again
     the moment it ends (the lock class is removed). */
  .rail-demo-lock .hero-pair{ pointer-events:none !important; }
}
/* Arrival auto-demo of the first pair's hover (head then quote), then revert */
/* While the demo plays, the section is locked: pointer-events off on the pairs
   kills every :hover state in one rule (no per-selector patching), so only the
   scripted auto-on shows. Desktop only — mobile behaviour is untouched. */
@media(min-width:861px){
  .rail-demo-lock .hero-pair{ pointer-events:none; }
}
.aif-pair-head.demo-active{ background:var(--terra) !important; }
.aif-pair-head.demo-active .aif-pair-title,
.aif-pair-head.demo-active .pe-look-co{ color:var(--gold) !important; }
.aif-pair-head.demo-active .conv-burst-dot,
.aif-pair-head.demo-active .conv-burst-lines line{ transform:scale(1) !important; }
.hero-quote.demo-active{ background:var(--greenDeep) !important; }
.hero-quote.demo-active .hero-quote-text{ color:var(--gold) !important; }
.hero-quote.demo-active .hero-arrow{ transform:scale(1) !important; }
.hero-quote.demo-active .hero-arrow line{ stroke:var(--gold) !important; }
.hero-quote.demo-active .hero-arrow circle{ fill:var(--gold) !important; }

/* PE "Our early conviction" — mirror of What-we-look-for (same base rules) */
#peLookSection{ background:var(--paper); padding-left:0 !important; padding-right:0 !important; }
#peLookSection .section-inner{ max-width:none !important; margin:0 !important; padding-left:var(--hero-text-inset); padding-right:28px; }
#peLookSection .hero-section-header{ text-align:left; }
#peLookSection .hero-nav{ right:0 !important; }
#peLookSection .pe-look-eyebrow{ font-family:'Inter',sans-serif; font-size:12px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--greenDeep); opacity:.7; margin-bottom:10px; }
#peLookSection .hero-rail{ overflow:visible; padding-bottom:36px; }
#peLookSection .hero-pair{ flex:0 0 calc((100% - 60px) / 2.6) !important; }
#peLookSection .hero-pair .aif-pair-head{ flex:0 0 58%; min-width:0; min-height:400px; background:var(--tint); position:relative; display:flex; flex-direction:column; align-items:flex-start; justify-content:flex-end; padding:40px 36px; }
#peLookSection .aif-pair-head:hover{ background:var(--terra); }
#peLookSection .aif-pair-head:hover .aif-pair-title,
#peLookSection .aif-pair-head:hover .pe-look-co{ color:var(--gold); }
#peLookSection .pe-look-co{ font-family:'OV Sage','Jost',sans-serif; font-weight:600; font-size:clamp(28px,2.9vw,42px); line-height:1.04; color:var(--greenDeep); letter-spacing:normal; text-transform:none; overflow-wrap:break-word; max-width:100%; margin-bottom:12px; }
#peLookSection .aif-pair-title{ font-family:'OV Sage','Jost',sans-serif; font-weight:500; font-size:clamp(18px,1.9vw,28px); line-height:1.14; color:var(--ink); }
#peLookSection .hero-quote-text{ font-size:clamp(16px,1.6vw,24px) !important; }
#peLookSection .hero-arrow{ width:64px !important; height:64px !important; }
/* Highlight marker sweep on "we were early, and we stayed." — in then out L→R over 3s */
#peLookSection .pe-sweep{ background-image:linear-gradient(var(--gold),var(--gold)); background-repeat:no-repeat; background-position:0% center; background-size:0% 100%; box-decoration-break:clone; -webkit-box-decoration-break:clone; padding:0 .04em; }
#peLookSection .pe-sweep.pe-sweep-on{ animation:peSweep 4.4s ease forwards; }
@keyframes peSweep{ 0%{ background-size:0% 100%; background-position:0% center; } 16%{ background-size:100% 100%; background-position:0% center; } 84%{ background-size:100% 100%; background-position:100% center; } 100%{ background-size:0% 100%; background-position:100% center; } }
@media (prefers-reduced-motion: reduce){ #peLookSection .pe-sweep.pe-sweep-on{ animation:none; } }
#peLookSection .aif-pair-head .conv-burst{ position:absolute; top:34px; bottom:auto; right:36px; width:96px; height:96px; overflow:visible; pointer-events:none; z-index:3; }
#peLookSection .aif-pair-head .conv-burst-dot{ transform:scale(0); transform-origin:center; fill:var(--gold); transition:transform .45s cubic-bezier(.16,1,.3,1); }
#peLookSection .aif-pair-head .conv-burst-lines line{ transform:scale(0); transform-origin:center; stroke:var(--gold); stroke-width:2; transition:transform .45s cubic-bezier(.16,1,.3,1); }
#peLookSection .aif-pair-head:hover .conv-burst-dot,
#peLookSection .aif-pair-head:hover .conv-burst-lines line{ transform:scale(1); }

/* DHANDHO VALLEY "A celebration" — mirror of PE early-conviction rail */
#dvLookSection{ background:var(--paper); padding-left:0 !important; padding-right:0 !important; }
#dvLookSection .section-inner{ max-width:none !important; margin:0 !important; padding-left:var(--hero-text-inset); padding-right:28px; }
#dvLookSection .hero-section-header{ text-align:left; font-family:'OV Sage','Jost',sans-serif; font-size:clamp(34px,4.4vw,60px); font-weight:500; line-height:1.12; }
#dvLookSection .hero-nav{ right:0 !important; }
#dvLookSection .hero-rail{ overflow:visible; padding-bottom:36px; }
#dvLookSection .hero-pair{ flex:0 0 calc((100% - 60px) / 2.6) !important; }
#dvLookSection .hero-pair .aif-pair-head{ flex:0 0 58%; min-width:0; min-height:400px; background:var(--tint); position:relative; display:flex; flex-direction:column; align-items:flex-start; justify-content:flex-end; padding:40px 36px; }
#dvLookSection .aif-pair-head:hover{ background:var(--terra); }
#dvLookSection .aif-pair-head:hover .aif-pair-title,
#dvLookSection .aif-pair-head:hover .pe-look-co{ color:var(--gold); }
#dvLookSection .pe-look-co{ font-family:'OV Sage','Jost',sans-serif; font-weight:600; font-size:clamp(28px,2.9vw,42px); line-height:1.04; color:var(--greenDeep); letter-spacing:normal; text-transform:none; overflow-wrap:break-word; max-width:100%; margin-bottom:12px; }
#dvLookSection .aif-pair-title{ font-family:'OV Sage','Jost',sans-serif; font-weight:500; font-size:clamp(18px,1.9vw,28px); line-height:1.14; color:var(--ink); }
#dvLookSection .hero-quote-text{ font-size:clamp(16px,1.6vw,24px) !important; }
#dvLookSection .hero-arrow{ width:64px !important; height:64px !important; }
#dvLookSection .pe-sweep{ background-image:linear-gradient(var(--gold),var(--gold)); background-repeat:no-repeat; background-position:0% center; background-size:0% 100%; box-decoration-break:clone; -webkit-box-decoration-break:clone; padding:0 .04em; }
#dvLookSection .pe-sweep.pe-sweep-on{ animation:peSweep 4.4s ease forwards; }
@media (prefers-reduced-motion: reduce){ #dvLookSection .pe-sweep.pe-sweep-on{ animation:none; } }
#dvLookSection .aif-pair-head .conv-burst{ position:absolute; top:34px; bottom:auto; right:36px; width:96px; height:96px; overflow:visible; pointer-events:none; z-index:3; }
#dvLookSection .aif-pair-head .conv-burst-dot{ transform:scale(0); transform-origin:center; fill:var(--gold); transition:transform .45s cubic-bezier(.16,1,.3,1); }
#dvLookSection .aif-pair-head .conv-burst-lines line{ transform:scale(0); transform-origin:center; stroke:var(--gold); stroke-width:2; transition:transform .45s cubic-bezier(.16,1,.3,1); }
#dvLookSection .aif-pair-head:hover .conv-burst-dot,
#dvLookSection .aif-pair-head:hover .conv-burst-lines line{ transform:scale(1); }

/* STRATEGY "The method" — mirror of PE early-conviction rail */
#stratMethodSection{ background:var(--paper); padding-left:0 !important; padding-right:0 !important; }
#stratMethodSection .section-inner{ max-width:none !important; margin:0 !important; padding-left:var(--hero-text-inset); padding-right:28px; }
#stratMethodSection .hero-section-header{ text-align:left; }
#stratMethodSection .hero-nav{ right:0 !important; }
#stratMethodSection .hero-rail{ overflow:visible; padding-bottom:36px; }
#stratMethodSection .hero-pair{ flex:0 0 calc((100% - 60px) / 2.6) !important; }
#stratMethodSection .hero-pair .aif-pair-head{ flex:0 0 58%; min-width:0; min-height:400px; background:var(--tint); position:relative; display:flex; flex-direction:column; align-items:flex-start; justify-content:flex-end; padding:40px 36px; }
#stratMethodSection .aif-pair-head:hover{ background:var(--terra); }
#stratMethodSection .aif-pair-head:hover .aif-pair-title,
#stratMethodSection .aif-pair-head:hover .pe-look-co{ color:var(--gold); }
#stratMethodSection .pe-look-co{ font-family:'OV Sage','Jost',sans-serif; font-weight:600; font-size:clamp(28px,2.9vw,42px); line-height:1.04; color:var(--greenDeep); letter-spacing:normal; text-transform:none; overflow-wrap:break-word; max-width:100%; margin-bottom:12px; }
#stratMethodSection .aif-pair-title{ font-family:'OV Sage','Jost',sans-serif; font-weight:500; font-size:clamp(18px,1.9vw,28px); line-height:1.14; color:var(--ink); }
#stratMethodSection .hero-quote-text{ font-size:clamp(16px,1.6vw,24px) !important; }
#stratMethodSection .hero-arrow{ width:64px !important; height:64px !important; }
#stratMethodSection .pe-sweep{ background-image:linear-gradient(var(--gold),var(--gold)); background-repeat:no-repeat; background-position:0% center; background-size:0% 100%; box-decoration-break:clone; -webkit-box-decoration-break:clone; padding:0 .04em; }
#stratMethodSection .pe-sweep.pe-sweep-on{ animation:peSweep 4.4s ease forwards; }
@media (prefers-reduced-motion: reduce){ #stratMethodSection .pe-sweep.pe-sweep-on{ animation:none; } }
#stratMethodSection .aif-pair-head .conv-burst{ position:absolute; top:34px; bottom:auto; right:36px; width:96px; height:96px; overflow:visible; pointer-events:none; z-index:3; }
#stratMethodSection .aif-pair-head .conv-burst-dot{ transform:scale(0); transform-origin:center; fill:var(--gold); transition:transform .45s cubic-bezier(.16,1,.3,1); }
#stratMethodSection .aif-pair-head .conv-burst-lines line{ transform:scale(0); transform-origin:center; stroke:var(--gold); stroke-width:2; transition:transform .45s cubic-bezier(.16,1,.3,1); }
#stratMethodSection .aif-pair-head:hover .conv-burst-dot,
#stratMethodSection .aif-pair-head:hover .conv-burst-lines line{ transform:scale(1); }

/* EQUITY BASKETS "How a basket works" — mirror of stratMethodSection rail */
/* Section 2 shares section 3's frame: the section itself has no side padding
   and the inner block carries the hero inset instead. */
:is(#eqbMethodSection,#eqbApproachSection){ background:var(--paper); padding-left:0 !important; padding-right:0 !important; }
:is(#eqbMethodSection,#eqbApproachSection) .section-inner{ max-width:none !important; margin:0 !important;
  padding-left:var(--hero-text-inset) !important; padding-right:28px !important; }
/* The control's width must not depend on which sector is selected — the button
   used to shrink-wrap its label, so picking "Technology" narrowed it and the
   open list with it. One fixed width for the button, the list and the row. */
.niv-select{ position:relative; width:var(--niv-sel-w,300px); max-width:100%; }
/* The homepage filter sits in a shrink-to-fit row, so the wrapper had to be
   pinned explicitly — otherwise the control still grew with its label
   ("Infrastructure & Logistics" widened it from 93px to 172px). */
#hbSelect:not(#_), #peCoSelect:not(#_){ width:var(--niv-sel-w,258px) !important; flex:0 0 auto !important; }
@media(max-width:900px){ #hbSelect:not(#_), #peCoSelect:not(#_){ width:100% !important; } }
/* The closed button never resizes with its label — a longer sector must not
   widen the control (that made the whole row jump). !important because the base
   .niv-select-btn rule shrink-wraps to its text. */
.niv-select-btn{ width:100% !important; max-width:100% !important;
  box-sizing:border-box; justify-content:space-between; overflow:hidden; }
/* A label too long for the fixed box is simply clipped on the right — no
   marquee, no reflow of the control. */
.niv-select-val{ flex:1 1 auto; min-width:0; overflow:hidden; white-space:nowrap;
  text-overflow:clip; text-align:left; }
.niv-select-list{ width:100%; box-sizing:border-box; }
@media(max-width:900px){ .niv-select{ --niv-sel-w:100%; } }

/* Sidebar mark: sits beside the heading, its RIGHT edge flush with the cards'
   right edge below it. The dot cluster is the hero burst's geometry; section 3
   uses the site's line starburst. */
/* Desktop: the mark sits BELOW the heading, left-aligned with it (the sidebar
   is a narrow column there, so beside the title it crowded the text). Phones
   keep it on the heading's row, right-aligned to the cards. */
:is(#eqbApproachSection,#eqbMethodSection) .scutt-sidebar{
  display:flex; flex-direction:column; align-items:flex-start; gap:18px; }
:is(#eqbApproachSection,#eqbMethodSection) .scutt-sidebar .scutt-heading{
  flex:0 0 auto; min-width:0; }
@media(max-width:900px){
  :is(#eqbApproachSection,#eqbMethodSection) .scutt-sidebar{
    flex-direction:row; align-items:flex-start; justify-content:space-between; }
  :is(#eqbApproachSection,#eqbMethodSection) .scutt-sidebar .scutt-heading{
    flex:1 1 auto; }
}
.eqb-side-mark{ flex:0 0 auto; width:clamp(74px,9vw,128px); height:clamp(74px,9vw,128px);
  margin-top:4px; overflow:visible; }
.eqb-side-dots circle{ fill:var(--greenDeep); }
.eqb-side-star{ fill:none; stroke:var(--greenDeep); stroke-width:1.4; }
.eqb-side-star circle{ fill:var(--greenDeep); stroke:none; }
/* Scroll-linked, not timed: the mark turns as the page scrolls and holds when
   it stops. A CSS scroll timeline keeps it on the compositor; the JS below is
   only the fallback where animation-timeline is unsupported. */
.eqb-mark-spin{ transform-origin:50% 50%; }
@supports (animation-timeline: scroll(root block)){
  .eqb-mark-spin{
    animation:eqbMarkSpin 1s linear both;
    animation-timeline:scroll(root block);
  }
}
@keyframes eqbMarkSpin{ to{ transform:rotate(1080deg); } }
@media(prefers-reduced-motion:reduce){ .eqb-mark-spin{ animation:none !important; } }
@media(max-width:900px){
  .eqb-side-mark{ width:clamp(62px,17vw,92px); height:clamp(62px,17vw,92px); margin-top:2px; }
}

/* A leftover from the stacking-cards era redefined --hero-text-inset inside this
   section (it resolved to 68px, so the cards sat 52px further in than section
   3's). Inherit the page value instead. */
#eqbApproachSection{ --hero-text-inset:inherit; }
#eqbMethodSection .hero-section-header{ text-align:left; font-family:'OV Sage','Jost',sans-serif !important; font-size:clamp(32px,3.9vw,54px) !important; line-height:1.12 !important; }
#eqbMethodSection .hero-nav{ right:0 !important; }
#eqbMethodSection .hero-rail{ overflow:visible; padding-bottom:36px; }
#eqbMethodSection .hero-pair{ flex:0 0 calc((100% - 28px) / 2) !important; }
#eqbMethodSection .hero-pair .aif-pair-head{ flex:0 0 58%; min-width:0; min-height:400px; background:var(--tint); position:relative; display:flex; flex-direction:column; align-items:flex-start; justify-content:flex-end; padding:32px; box-sizing:border-box; transition:background .18s ease; }
#eqbMethodSection .aif-pair-head:hover{ background:var(--terra); }
#eqbMethodSection .aif-pair-head:hover .aif-pair-title,
#eqbMethodSection .aif-pair-head:hover .pe-look-co{ color:var(--gold); }
#eqbMethodSection .pe-look-co{ font-family:'OV Sage','Jost',sans-serif; font-weight:600; font-size:clamp(28px,2.9vw,42px); line-height:1.04; color:var(--greenDeep); letter-spacing:normal; text-transform:none; margin-bottom:14px; transition:color .18s ease; }
#eqbMethodSection .aif-pair-title{ font-family:'OV Sage','Jost',sans-serif; font-weight:500; font-size:clamp(18px,1.9vw,28px); line-height:1.14; color:var(--ink); transition:color .18s ease; }
#eqbMethodSection .hero-quote-text{ font-size:clamp(16px,1.6vw,24px) !important; }
#eqbMethodSection .hero-arrow{ width:64px !important; height:64px !important; }
#eqbMethodSection .pe-sweep{ background-image:linear-gradient(var(--gold),var(--gold)); background-repeat:no-repeat; background-position:0% center; background-size:0% 100%; box-decoration-break:clone; -webkit-box-decoration-break:clone; }
#eqbMethodSection .pe-sweep.pe-sweep-on{ animation:peSweep 4.4s ease forwards; }
@media (prefers-reduced-motion: reduce){ #eqbMethodSection .pe-sweep.pe-sweep-on{ animation:none; } }
#aifAllowsSection .pe-sweep{ background-image:linear-gradient(var(--gold),var(--gold)); background-repeat:no-repeat; background-position:0% center; background-size:0% 100%; box-decoration-break:clone; -webkit-box-decoration-break:clone; }
#aifAllowsSection .pe-sweep.pe-sweep-on{ animation:peSweep 4.4s ease forwards; }
@media (prefers-reduced-motion: reduce){ #aifAllowsSection .pe-sweep.pe-sweep-on{ animation:none; } }
#hhLookSection .pe-sweep{ background-image:linear-gradient(var(--gold),var(--gold)); background-repeat:no-repeat; background-position:0% center; background-size:0% 100%; box-decoration-break:clone; -webkit-box-decoration-break:clone; }
#hhLookSection .pe-sweep.pe-sweep-on{ animation:peSweep 4.4s ease forwards; }
@media (prefers-reduced-motion: reduce){ #hhLookSection .pe-sweep.pe-sweep-on{ animation:none; } }
.philosophy-section .pe-sweep{ background-image:linear-gradient(var(--gold),var(--gold)); background-repeat:no-repeat; background-position:0% center; background-size:0% 100%; box-decoration-break:clone; -webkit-box-decoration-break:clone; }
.philosophy-section .pe-sweep.pe-sweep-on{ animation:peSweep 4.4s ease forwards; }
@media (prefers-reduced-motion: reduce){ .philosophy-section .pe-sweep.pe-sweep-on{ animation:none; } }
#stratLookSection .pe-sweep{ background-image:linear-gradient(var(--gold),var(--gold)); background-repeat:no-repeat; background-position:0% center; background-size:0% 100%; box-decoration-break:clone; -webkit-box-decoration-break:clone; }
#stratLookSection .pe-sweep.pe-sweep-on{ animation:peSweep 4.4s ease forwards; }
@media (prefers-reduced-motion: reduce){ #stratLookSection .pe-sweep.pe-sweep-on{ animation:none; } }
#eqbMethodSection .aif-pair-head .conv-burst{ position:absolute; top:34px; bottom:auto; right:36px; width:96px; height:96px; overflow:visible; pointer-events:none; z-index:3; }
#eqbMethodSection .aif-pair-head .conv-burst-dot{ transform:scale(0); transform-origin:center; fill:var(--gold); transition:transform .45s cubic-bezier(.16,1,.3,1); }
#eqbMethodSection .aif-pair-head .conv-burst-lines line{ transform:scale(0); transform-origin:center; stroke:var(--gold); stroke-width:2; transition:transform .45s cubic-bezier(.16,1,.3,1); }
#eqbMethodSection .aif-pair-head:hover .conv-burst-dot,
#eqbMethodSection .aif-pair-head:hover .conv-burst-lines line{ transform:scale(1); }
@media(max-width:760px){ #eqbMethodSection .hero-pair{ flex:0 0 86% !important; } }
/* DESKTOP auto-demo visuals: the .auto-on rules above live in the mobile media
   block, so on desktop the scripted demo had nothing to show. These mirror each
   section's :hover state exactly. Desktop only — mobile is untouched. */
@media(min-width:861px){
#aifAllowsSection .aif-pair-head.auto-on{ background:var(--terra); }
#hhLookSection .aif-pair-head.auto-on{ background:var(--terra); }
#peLookSection .aif-pair-head.auto-on{ background:var(--terra); }
#dvLookSection .aif-pair-head.auto-on{ background:var(--terra); }
#stratMethodSection .aif-pair-head.auto-on{ background:var(--terra); }
#eqbMethodSection .aif-pair-head.auto-on{ background:var(--terra); }
#aifAllowsSection .aif-pair-head.auto-on .aif-pair-title,
#aifAllowsSection .aif-pair-head.auto-on .pe-look-co,
#hhLookSection .aif-pair-head.auto-on .aif-pair-title,
#hhLookSection .aif-pair-head.auto-on .pe-look-co,
#peLookSection .aif-pair-head.auto-on .aif-pair-title,
#peLookSection .aif-pair-head.auto-on .pe-look-co,
#dvLookSection .aif-pair-head.auto-on .aif-pair-title,
#dvLookSection .aif-pair-head.auto-on .pe-look-co,
#stratMethodSection .aif-pair-head.auto-on .aif-pair-title,
#stratMethodSection .aif-pair-head.auto-on .pe-look-co,
#eqbMethodSection .aif-pair-head.auto-on .aif-pair-title,
#eqbMethodSection .aif-pair-head.auto-on .pe-look-co{ color:var(--gold); }
#aifAllowsSection .aif-pair-head.auto-on .conv-burst-dot,
#aifAllowsSection .aif-pair-head.auto-on .conv-burst-lines line,
#hhLookSection .aif-pair-head.auto-on .conv-burst-dot,
#hhLookSection .aif-pair-head.auto-on .conv-burst-lines line,
#peLookSection .aif-pair-head.auto-on .conv-burst-dot,
#peLookSection .aif-pair-head.auto-on .conv-burst-lines line,
#dvLookSection .aif-pair-head.auto-on .conv-burst-dot,
#dvLookSection .aif-pair-head.auto-on .conv-burst-lines line,
#stratMethodSection .aif-pair-head.auto-on .conv-burst-dot,
#stratMethodSection .aif-pair-head.auto-on .conv-burst-lines line,
#eqbMethodSection .aif-pair-head.auto-on .conv-burst-dot,
#eqbMethodSection .aif-pair-head.auto-on .conv-burst-lines line{ transform:scale(1); }
#aifAllowsSection .hero-quote.auto-on,
#hhLookSection .hero-quote.auto-on,
#peLookSection .hero-quote.auto-on,
#dvLookSection .hero-quote.auto-on,
#stratMethodSection .hero-quote.auto-on,
#eqbMethodSection .hero-quote.auto-on{ background:var(--greenDeep); }
#aifAllowsSection .hero-quote.auto-on .hero-quote-text,
#hhLookSection .hero-quote.auto-on .hero-quote-text,
#peLookSection .hero-quote.auto-on .hero-quote-text,
#dvLookSection .hero-quote.auto-on .hero-quote-text,
#stratMethodSection .hero-quote.auto-on .hero-quote-text,
#eqbMethodSection .hero-quote.auto-on .hero-quote-text{ color:var(--gold); }
#aifAllowsSection .hero-quote.auto-on .hero-arrow,
#hhLookSection .hero-quote.auto-on .hero-arrow,
#peLookSection .hero-quote.auto-on .hero-arrow,
#dvLookSection .hero-quote.auto-on .hero-arrow,
#stratMethodSection .hero-quote.auto-on .hero-arrow,
#eqbMethodSection .hero-quote.auto-on .hero-arrow{ transform:scale(1); }
#aifAllowsSection .hero-quote.auto-on .hero-arrow line,
#hhLookSection .hero-quote.auto-on .hero-arrow line,
#peLookSection .hero-quote.auto-on .hero-arrow line,
#dvLookSection .hero-quote.auto-on .hero-arrow line,
#stratMethodSection .hero-quote.auto-on .hero-arrow line,
#eqbMethodSection .hero-quote.auto-on .hero-arrow line{ stroke:var(--gold); }
#aifAllowsSection .hero-quote.auto-on .hero-arrow circle,
#hhLookSection .hero-quote.auto-on .hero-arrow circle,
#peLookSection .hero-quote.auto-on .hero-arrow circle,
#dvLookSection .hero-quote.auto-on .hero-arrow circle,
#stratMethodSection .hero-quote.auto-on .hero-arrow circle,
#eqbMethodSection .hero-quote.auto-on .hero-arrow circle{ fill:var(--gold); }
}

/* ── Paired-card rails (AIF allows / hedgehogs look / PE / Dhandho / strategy / equity-baskets):
   mobile = one card per view carousel. Each pair fills the viewport at a fixed comfortable
   size (no shrinking), head + quote stack vertically, arrows/swipe page through. ── */
@media(max-width:760px){
  #aifAllowsSection .hero-rail-track, #hhLookSection .hero-rail-track,
  #peLookSection .hero-rail-track, #dvLookSection .hero-rail-track,
  #stratMethodSection .hero-rail-track, #eqbMethodSection .hero-rail-track{ gap:16px !important; }
  #aifAllowsSection .hero-pair, #hhLookSection .hero-pair,
  #peLookSection .hero-pair, #dvLookSection .hero-pair,
  #stratMethodSection .hero-pair, #eqbMethodSection .hero-pair{
    flex:0 0 86vw !important; max-width:440px !important; flex-direction:column !important;
    box-shadow:0 16px 42px -18px rgba(44,46,43,.20);
  }
  #aifAllowsSection .hero-pair .aif-pair-head, #hhLookSection .hero-pair .aif-pair-head,
  #peLookSection .hero-pair .aif-pair-head, #dvLookSection .hero-pair .aif-pair-head,
  #stratMethodSection .hero-pair .aif-pair-head, #eqbMethodSection .hero-pair .aif-pair-head{
    flex:0 0 auto !important; width:100% !important; min-height:300px !important; box-sizing:border-box;
  }
  #aifAllowsSection .hero-pair .hero-quote, #hhLookSection .hero-pair .hero-quote,
  #peLookSection .hero-pair .hero-quote, #dvLookSection .hero-pair .hero-quote,
  #stratMethodSection .hero-pair .hero-quote, #eqbMethodSection .hero-pair .hero-quote{
    flex:1 1 auto !important; width:100% !important; box-sizing:border-box;
  }
  #aifAllowsSection .aif-pair-title, #hhLookSection .aif-pair-title,
  #peLookSection .aif-pair-title, #dvLookSection .aif-pair-title,
  #stratMethodSection .aif-pair-title, #eqbMethodSection .aif-pair-title{ font-size:clamp(20px,5.6vw,26px) !important; }
  #aifAllowsSection .hero-quote-text, #hhLookSection .hero-quote-text,
  #peLookSection .hero-quote-text, #dvLookSection .hero-quote-text,
  #stratMethodSection .hero-quote-text, #eqbMethodSection .hero-quote-text{ font-size:clamp(15px,4.2vw,19px) !important; }
}
/* Desktop/tablet: keep each pair at a comfortable fixed width so narrowing the window
   (e.g. 1920 → 1280) shows fewer cards rather than shrinking them (which forced the
   text to reflow taller). */
@media(min-width:761px){
  #aifAllowsSection .hero-pair, #hhLookSection .hero-pair,
  #peLookSection .hero-pair, #dvLookSection .hero-pair,
  #stratMethodSection .hero-pair, #eqbMethodSection .hero-pair{
    flex:0 0 clamp(520px, 38vw, 720px) !important;
  }
  /* Cards are fixed-width now, so lock the text sizes too (no vw shrink) */
  #aifAllowsSection .aif-pair-title, #hhLookSection .aif-pair-title,
  #peLookSection .aif-pair-title, #dvLookSection .aif-pair-title,
  #stratMethodSection .aif-pair-title, #eqbMethodSection .aif-pair-title{ font-size:30px !important; }
  #aifAllowsSection .hero-quote-text, #hhLookSection .hero-quote-text,
  #peLookSection .hero-quote-text, #dvLookSection .hero-quote-text,
  #stratMethodSection .hero-quote-text, #eqbMethodSection .hero-quote-text{ font-size:21px !important; }
}

/* STRATEGY "Five habits" — hhApproach green/gold stacking skin */
#stratSystemSection{ background:var(--paper); height:auto !important; }
#stratSystemSection.strat-green{ background:var(--greenDeep); }
#stratSystemSection .bedrock-title{ color:var(--greenDeep); transition:color .7s ease; }
#stratSystemSection.strat-green .bedrock-title{ color:var(--gold); }
#stratSystemSection .bk-card{ height:36vh; background:var(--paper); border:1.5px solid var(--greenDeep); transition:background-color .8s ease, border-color .8s ease; will-change:transform; transform:translateZ(0); backface-visibility:hidden; }
#stratSystemSection.strat-green .bk-card{ background:var(--greenDeep); border-color:var(--gold); }
#stratSystemSection .bk-card-left{ overflow:hidden; }
#stratSystemSection .bk-card-title{ font-family:'OV Sage','Jost',sans-serif !important; color:var(--greenDeep); transition:color .7s ease; font-weight:600 !important; }
@media(max-width:760px){ #stratSystemSection .bk-card-title{ font-size:clamp(20px,6.4vw,26px) !important; } }
#stratSystemSection.strat-green .bk-card-title{ color:var(--gold); }
#stratSystemSection .bk-card:hover{ border-color:#F0C257; transition:none; }
#stratSystemSection .bk-card:hover .bk-card-title{ color:#F0C257; }
#stratSystemSection .bk-card:hover .bk-card-left::after{ background:#F0C257; }
#stratSystemSection .bk-card:hover .bk-dot{ background:#F0C257 !important; }
#stratSystemSection .bk-card-body{ color:var(--greenDeep); opacity:.85; font-size:clamp(17px,1.75vw,23px); line-height:1.46; margin-top:8px; transition:color .7s ease; }
#stratSystemSection .bk-mark{
  background-image:linear-gradient(90deg,#1a1a1a 50%, var(--paper) 50%), linear-gradient(var(--gold),var(--gold));
  background-repeat:no-repeat, no-repeat;
  background-size:200% 100%, 0% 100%;
  background-position:100% 0, 0% center;
  -webkit-background-clip:text, border-box; background-clip:text, border-box;
  -webkit-text-fill-color:transparent;
  box-decoration-break:clone; -webkit-box-decoration-break:clone;
}
#stratSystemSection .bk-card.burst-on .bk-mark{ animation:bkMarkSweep 1.6s ease forwards; }
@keyframes bkMarkSweep{
  0%{ background-size:200% 100%, 0% 100%; background-position:100% 0, 0% center; }
  100%{ background-size:200% 100%, 100% 100%; background-position:0% 0, 0% center; }
}
@media (prefers-reduced-motion: reduce){ #stratSystemSection .bk-card.burst-on .bk-mark{ animation:none; } }
/* Highlight-marking for the EB / Hedgehogs / PE "how we approach" stacking cards —
   identical engine + timing to Strategy's "We commit to". Fires on the same
   settle/hover state (.bk-card.burst-on) and stays highlighted. */
#eqbApproachSection .bk-mark, #hhApproachSection .bk-mark, #peApproachSection .bk-mark{
  background-image:linear-gradient(90deg,#1a1a1a 50%, var(--paper) 50%), linear-gradient(var(--gold),var(--gold));
  background-repeat:no-repeat, no-repeat;
  background-size:200% 100%, 0% 100%;
  background-position:100% 0, 0% center;
  -webkit-background-clip:text, border-box; background-clip:text, border-box;
  -webkit-text-fill-color:transparent;
  box-decoration-break:clone; -webkit-box-decoration-break:clone;
}
/* EB body text is gold on its green cards — match the highlight's resting color to it */
#eqbApproachSection .bk-mark{
  background-image:linear-gradient(90deg,#1a1a1a 50%, var(--gold) 50%), linear-gradient(var(--gold),var(--gold));
}
#eqbApproachSection .bk-card.burst-on .bk-mark,
#hhApproachSection .bk-card.burst-on .bk-mark,
#peApproachSection .bk-card.burst-on .bk-mark{ animation:bkMarkSweep 1.6s ease forwards; }
@media (prefers-reduced-motion: reduce){
  #eqbApproachSection .bk-card.burst-on .bk-mark,
  #hhApproachSection .bk-card.burst-on .bk-mark,
  #peApproachSection .bk-card.burst-on .bk-mark{ animation:none; }
}
@media(max-width:760px){ #stratSystemSection .bk-card-body{ font-size:clamp(18px,5.2vw,22px) !important; line-height:1.48 !important; } }
#stratSystemSection.strat-green .bk-card-body{ color:var(--paper); opacity:.9; }
#stratSystemSection .bk-card-right{ padding-right:72px; position:relative; }
@media(max-width:760px){
  #stratSystemSection .bk-card-right{ padding-right:20px; }
  #page-strategy #stratSystemSection .bk-burst{ width:118px !important; height:118px !important; left:20px !important; right:auto !important; top:auto !important; bottom:16px !important; }
  #stratSystemSection .bk-caption{ font-size:clamp(24px,6vw,32px) !important; }
  /* Card height fills viewport below the (reduced) stack offset so the open
     card shows all content; last card bottom lands at the viewport edge. */
  #stratSystemSection .bk-card{ height:calc(100vh - 340px) !important; min-height:400px; }
  #stratSystemSection .bk-card-body{ font-size:clamp(17px,4.8vw,21px) !important; line-height:1.46 !important; }
  /* Stacking cards tall enough that the fully-open (last) card shows all its
     content without cropping; description sized to fit that height. */
  #stratSystemSection .bk-card-left{ overflow:hidden; padding:26px 22px 96px; }
}
#stratSystemSection .bk-caption{ font-family:'OV Sage','Jost',sans-serif !important; font-size:clamp(48px,6vw,88px); font-weight:400; color:var(--greenDeep); transition:color .7s ease; }
#stratSystemSection.strat-green .bk-caption{ color:var(--gold); }
#stratSystemSection .bk-card-left::after{ background:var(--greenDeep); transition:background-color .7s ease; }
#stratSystemSection.strat-green .bk-card-left::after{ background:var(--gold); }
#stratSystemSection .bk-dot{ background:var(--greenDeep) !important; border-radius:50% !important; transition:background-color .7s ease; }
#stratSystemSection.strat-green .bk-dot{ background:var(--gold) !important; }
#stratSystemSection .bk-burst{ position:absolute; top:24px; right:28px; width:74px; height:74px; overflow:visible; pointer-events:none; z-index:4; }
#stratSystemSection .bk-burst line{ stroke:#F0C257; stroke-width:3; stroke-linecap:round; transform:scale(0); transform-origin:center; transition:transform .5s cubic-bezier(.16,1,.3,1); }
#stratSystemSection .bk-burst circle{ fill:#F0C257; transform:scale(0); transform-origin:center; transition:transform .4s cubic-bezier(.16,1,.3,1); }
#stratSystemSection .bk-card:hover .bk-burst line,
#stratSystemSection .bk-card:hover .bk-burst circle{ transform:scale(1); }
/* Card hover-state (border/title/dot/burst) auto-triggers on scroll-settle only
   on mobile; desktop keeps it on :hover. Highlight marker fires on both. */
@media(max-width:760px){
  #stratSystemSection .bk-card.burst-on .bk-burst line,
  #stratSystemSection .bk-card.burst-on .bk-burst circle{ transform:scale(1); }
  #stratSystemSection .bk-card.burst-on{ border-color:#F0C257; }
  #stratSystemSection .bk-card.burst-on .bk-card-title{ color:#F0C257; }
  #stratSystemSection .bk-card.burst-on .bk-card-left::after{ background:#F0C257; }
  #stratSystemSection .bk-card.burst-on .bk-dot{ background:#F0C257 !important; }
}
/* Replicate the "We commit to" mobile stacking behaviour on the other stacking
   sections (hedgehogs / PE / equity) — MOBILE ONLY, no desktop override, no
   highlight marks. */
@media(max-width:760px){
  #hhApproachSection{ height:640vh !important; }
  /* #eqbApproachSection dropped: it is a Keep-in-mind accordion now, not a
     pinned stack, so the 640vh scroll track was pure empty space below it. */
  #hhApproachSection .bk-viewport, #peApproachSection .bk-viewport, #eqbApproachSection .bk-viewport, #stratSystemSection .bk-viewport{ padding-top:20px !important; padding-left:16px !important; padding-right:16px !important; }
  #hhApproachSection.bedrock-section, #peApproachSection.bedrock-section, #eqbApproachSection.bedrock-section, #stratSystemSection.bedrock-section{ padding-left:0 !important; padding-right:0 !important; }
  #hhApproachSection .bk-cards, #peApproachSection .bk-cards, #eqbApproachSection .bk-cards, #stratSystemSection .bk-cards{ height:calc(100% - 64px) !important; }
  #hhApproachSection .bk-card, #peApproachSection .bk-card, #eqbApproachSection .bk-card, #stratSystemSection .bk-card{ height:calc(100vh - 400px) !important; min-height:380px; }
  #hhApproachSection .bk-card-left, #peApproachSection .bk-card-left, #eqbApproachSection .bk-card-left, #stratSystemSection .bk-card-left{ overflow:hidden; }
  #hhApproachSection .bk-card-body, #peApproachSection .bk-card-body, #eqbApproachSection .bk-card-body, #stratSystemSection .bk-card-body{ font-size:clamp(17px,4.8vw,21px) !important; line-height:1.46 !important; }
  #hhApproachSection .bk-card-right, #peApproachSection .bk-card-right, #eqbApproachSection .bk-card-right, #stratSystemSection .bk-card-right{ padding-right:20px; }
  #hhApproachSection .bk-caption, #peApproachSection .bk-caption, #eqbApproachSection .bk-caption, #stratSystemSection .bk-caption{ font-size:clamp(24px,6vw,32px) !important; }
  #hhApproachSection .bk-burst, #peApproachSection .bk-burst, #eqbApproachSection .bk-burst, #stratSystemSection .bk-burst{ width:118px !important; height:118px !important; left:20px !important; right:auto !important; top:auto !important; bottom:16px !important; }
  #hhApproachSection .bk-card.burst-on .bk-burst line, #peApproachSection .bk-card.burst-on .bk-burst line, #eqbApproachSection .bk-card.burst-on .bk-burst line, #stratSystemSection .bk-card.burst-on .bk-burst line,
  #hhApproachSection .bk-card.burst-on .bk-burst circle, #peApproachSection .bk-card.burst-on .bk-burst circle, #eqbApproachSection .bk-card.burst-on .bk-burst circle, #stratSystemSection .bk-card.burst-on .bk-burst circle{ transform:scale(1); }
  #hhApproachSection .bk-card.burst-on, #peApproachSection .bk-card.burst-on, #eqbApproachSection .bk-card.burst-on{ border-color:#F0C257 !important; }
  #hhApproachSection .bk-card.burst-on .bk-card-title, #peApproachSection .bk-card.burst-on .bk-card-title, #eqbApproachSection .bk-card.burst-on .bk-card-title{ color:#F0C257 !important; }
  #hhApproachSection .bk-card.burst-on .bk-card-left::after, #peApproachSection .bk-card.burst-on .bk-card-left::after, #eqbApproachSection .bk-card.burst-on .bk-card-left::after{ background:#F0C257 !important; }
  #hhApproachSection .bk-card.burst-on .bk-dot, #peApproachSection .bk-card.burst-on .bk-dot, #eqbApproachSection .bk-card.burst-on .bk-dot{ background:#F0C257 !important; }
}
#stratSystemSection .strat-system-head .bedrock-title{ font-family:'OV Sage','Jost',sans-serif !important; font-size:clamp(32px,3.9vw,54px) !important; line-height:1.12 !important; }

/* STRATEGY pair + sticky-left headings — uniform OV Sage title size */
#stratLookSection .aif-works-heading{ font-family:'OV Sage','Jost',sans-serif !important; font-size:clamp(32px,3.9vw,54px) !important; line-height:1.12 !important; color:var(--ink); }
#stratMethodSection .hero-section-header{ font-family:'OV Sage','Jost',sans-serif !important; font-size:clamp(32px,3.9vw,54px) !important; line-height:1.12 !important; }
@media(max-width:760px){
  #stratMethodSection .conv-subrow.hero-subrow{ display:flex !important; flex-direction:column !important; align-items:flex-start !important; gap:14px !important; margin-top:0 !important; }
  #stratMethodSection .conv-nav.hero-nav{ position:static !important; transform:none !important; right:auto !important; justify-self:start !important; padding-top:0 !important; }
  #stratMethodSection .hero-section-header{ font-size:clamp(26px,7.4vw,34px) !important; line-height:1.16 !important; }
  #stratMethodSection .section-inner{ padding-left:16px !important; padding-right:16px !important; padding-top:20px !important; }
  /* bigger top-card titles on mobile */
  #stratMethodSection .pe-look-co{ font-size:clamp(30px,8.2vw,42px) !important; }
  #stratMethodSection .aif-pair-title{ font-size:clamp(19px,5.2vw,25px) !important; }
  /* auto hover-state on scroll (mobile): top card then bottom card */
  #stratMethodSection .aif-pair-head.auto-on{ background:var(--terra); }
  #stratMethodSection .aif-pair-head.auto-on .aif-pair-title,
  #stratMethodSection .aif-pair-head.auto-on .pe-look-co{ color:var(--gold); }
  #stratMethodSection .aif-pair-head.auto-on .conv-burst-dot,
  #stratMethodSection .aif-pair-head.auto-on .conv-burst-lines line{ transform:scale(1); }
  #stratMethodSection .hero-quote.auto-on{ background:var(--greenDeep); }
  #stratMethodSection .hero-quote.auto-on .hero-quote-text{ color:var(--gold); }
  #stratMethodSection .hero-quote.auto-on .hero-arrow{ transform:scale(1); }
  #stratMethodSection .hero-arrow{ width:52px !important; height:52px !important; }
  #stratMethodSection .hero-quote-text{ font-size:clamp(17px,4.6vw,21px) !important; }
  #stratMethodSection .hero-quote.auto-on .hero-arrow line{ stroke:var(--gold); }
  #stratMethodSection .hero-quote.auto-on .hero-arrow circle{ fill:var(--gold); }
}
/* EQUITY BASKET "How a basket keeps working" + PE "Different sectors, one pattern"
   rails — mirror the strategy rail ("Studied like an entrepreneur") mobile treatment. MOBILE ONLY. */
@media(max-width:760px){
  #eqbMethodSection .conv-subrow.hero-subrow, #peLookSection .conv-subrow.hero-subrow{ display:flex !important; flex-direction:column !important; align-items:flex-start !important; gap:14px !important; margin-top:0 !important; }
  #eqbMethodSection .conv-nav.hero-nav, #peLookSection .conv-nav.hero-nav{ position:static !important; transform:none !important; right:auto !important; justify-self:start !important; padding-top:0 !important; }
  #eqbMethodSection .hero-section-header, #peLookSection .hero-section-header{ font-size:clamp(26px,7.4vw,34px) !important; line-height:1.16 !important; }
  #eqbMethodSection .section-inner, #eqbApproachSection .section-inner, #peLookSection .section-inner{ padding-left:16px !important; padding-right:16px !important; padding-top:20px !important; }
  #eqbMethodSection .pe-look-co, #peLookSection .pe-look-co{ font-size:clamp(30px,8.2vw,42px) !important; }
  #eqbMethodSection .aif-pair-title, #peLookSection .aif-pair-title{ font-size:clamp(19px,5.2vw,25px) !important; }
  #eqbMethodSection .aif-pair-head.auto-on, #peLookSection .aif-pair-head.auto-on{ background:var(--terra); }
  #eqbMethodSection .aif-pair-head.auto-on .aif-pair-title,
  #eqbMethodSection .aif-pair-head.auto-on .pe-look-co,
  #peLookSection .aif-pair-head.auto-on .aif-pair-title,
  #peLookSection .aif-pair-head.auto-on .pe-look-co{ color:var(--gold); }
  #eqbMethodSection .aif-pair-head.auto-on .conv-burst-dot,
  #eqbMethodSection .aif-pair-head.auto-on .conv-burst-lines line,
  #peLookSection .aif-pair-head.auto-on .conv-burst-dot,
  #peLookSection .aif-pair-head.auto-on .conv-burst-lines line{ transform:scale(1); }
  #eqbMethodSection .hero-quote.auto-on, #peLookSection .hero-quote.auto-on{ background:var(--greenDeep); }
  #eqbMethodSection .hero-quote.auto-on .hero-quote-text, #peLookSection .hero-quote.auto-on .hero-quote-text{ color:var(--gold); }
  #eqbMethodSection .hero-quote.auto-on .hero-arrow, #peLookSection .hero-quote.auto-on .hero-arrow{ transform:scale(1); }
  #eqbMethodSection .hero-arrow, #peLookSection .hero-arrow{ width:52px !important; height:52px !important; }
  #eqbMethodSection .hero-quote-text, #peLookSection .hero-quote-text{ font-size:clamp(17px,4.6vw,21px) !important; }
  #eqbMethodSection .hero-quote.auto-on .hero-arrow line, #peLookSection .hero-quote.auto-on .hero-arrow line{ stroke:var(--gold); }
  #eqbMethodSection .hero-quote.auto-on .hero-arrow circle, #peLookSection .hero-quote.auto-on .hero-arrow circle{ fill:var(--gold); }
}
/* AIF "AIF allows us" rail — same strategy-rail mobile treatment. MOBILE ONLY. */
@media(max-width:760px){
  #aifAllowsSection .conv-subrow.hero-subrow, #dvLookSection .conv-subrow.hero-subrow, #hhLookSection .conv-subrow.hero-subrow{ display:flex !important; flex-direction:column !important; align-items:flex-start !important; gap:14px !important; margin-top:0 !important; }
  #aifAllowsSection .conv-nav.hero-nav, #dvLookSection .conv-nav.hero-nav, #hhLookSection .conv-nav.hero-nav{ position:static !important; transform:none !important; right:auto !important; justify-self:start !important; padding-top:0 !important; }
  #aifAllowsSection .hero-section-header, #dvLookSection .hero-section-header, #hhLookSection .hero-section-header{ font-size:clamp(26px,7.4vw,34px) !important; line-height:1.16 !important; }
  #aifAllowsSection .section-inner, #dvLookSection .section-inner, #hhLookSection .section-inner{ padding-left:16px !important; padding-right:16px !important; padding-top:20px !important; }
  #aifAllowsSection .pe-look-co, #dvLookSection .pe-look-co, #hhLookSection .pe-look-co{ font-size:clamp(30px,8.2vw,42px) !important; }
  #aifAllowsSection .aif-pair-title, #dvLookSection .aif-pair-title, #hhLookSection .aif-pair-title{ font-size:clamp(19px,5.2vw,25px) !important; }
  #hhLookSection .aif-pair-title{ font-size:clamp(26px,7.4vw,36px) !important; line-height:1.12 !important; }
  #aifAllowsSection .aif-pair-head.auto-on, #dvLookSection .aif-pair-head.auto-on, #hhLookSection .aif-pair-head.auto-on{ background:var(--terra); }
  #aifAllowsSection .aif-pair-head.auto-on .aif-pair-title,
  #aifAllowsSection .aif-pair-head.auto-on .pe-look-co,
  #dvLookSection .aif-pair-head.auto-on .aif-pair-title,
  #dvLookSection .aif-pair-head.auto-on .pe-look-co,
  #hhLookSection .aif-pair-head.auto-on .aif-pair-title,
  #hhLookSection .aif-pair-head.auto-on .pe-look-co{ color:var(--gold); }
  #aifAllowsSection .aif-pair-head.auto-on .conv-burst-dot,
  #aifAllowsSection .aif-pair-head.auto-on .conv-burst-lines line,
  #dvLookSection .aif-pair-head.auto-on .conv-burst-dot,
  #dvLookSection .aif-pair-head.auto-on .conv-burst-lines line,
  #hhLookSection .aif-pair-head.auto-on .conv-burst-dot,
  #hhLookSection .aif-pair-head.auto-on .conv-burst-lines line{ transform:scale(1); }
  #aifAllowsSection .hero-quote.auto-on, #dvLookSection .hero-quote.auto-on, #hhLookSection .hero-quote.auto-on{ background:var(--greenDeep); }
  #aifAllowsSection .hero-quote.auto-on .hero-quote-text, #dvLookSection .hero-quote.auto-on .hero-quote-text, #hhLookSection .hero-quote.auto-on .hero-quote-text{ color:var(--gold); }
  #aifAllowsSection .hero-quote.auto-on .hero-arrow, #dvLookSection .hero-quote.auto-on .hero-arrow, #hhLookSection .hero-quote.auto-on .hero-arrow{ transform:scale(1); }
  #aifAllowsSection .hero-arrow, #dvLookSection .hero-arrow, #hhLookSection .hero-arrow{ width:52px !important; height:52px !important; }
  #aifAllowsSection .hero-quote-text, #dvLookSection .hero-quote-text, #hhLookSection .hero-quote-text{ font-size:clamp(17px,4.6vw,21px) !important; }
  #aifAllowsSection .hero-quote.auto-on .hero-arrow line, #dvLookSection .hero-quote.auto-on .hero-arrow line, #hhLookSection .hero-quote.auto-on .hero-arrow line{ stroke:var(--gold); }
  #aifAllowsSection .hero-quote.auto-on .hero-arrow circle, #dvLookSection .hero-quote.auto-on .hero-arrow circle, #hhLookSection .hero-quote.auto-on .hero-arrow circle{ fill:var(--gold); }
}
#stratLookSection .aif-works-num{ display:none; }
#stratLookSection .aif-works-meta{ align-self:flex-start; padding-top:0; margin-top:0; }
#stratLookSection .aif-works-step{ align-items:flex-start; }

/* STRATEGY "people + angle" — hh-cross card language */
#stratPair{ background:var(--paper); }
#stratPair .hh-cross-grid{ display:grid; grid-template-columns:1fr 1fr; gap:26px; }
#stratPair .hh-cross-card{ background:var(--paper); border:1.5px solid var(--greenDeep); padding:42px 40px; display:flex; flex-direction:column; justify-content:space-between; gap:32px; min-height:300px; transition:transform .3s cubic-bezier(.16,1,.3,1), box-shadow .3s ease; }
#stratPair .hh-cross-card:hover{ background:var(--greenDeep); transform:translateY(-6px); box-shadow:0 22px 48px -20px rgba(44,46,43,.42); }
#stratPair .hh-cross-eyebrow{ font-family:'OV Sage','Jost',sans-serif; font-size:11px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--greenDeep); opacity:.75; margin-bottom:18px; }
#stratPair .hh-cross-cardtitle{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(23px,2.5vw,34px); font-weight:400; line-height:1.16; color:var(--greenDeep); }
#stratPair .hh-cross-body{ font-family:'Jost',sans-serif; font-size:clamp(15px,1.2vw,18px); line-height:1.6; color:var(--ink); opacity:.78; margin:0; }
#stratPair .hh-cross-card:hover .hh-cross-eyebrow{ color:var(--gold); opacity:1; }
#stratPair .hh-cross-card:hover .hh-cross-cardtitle{ color:var(--gold); }
#stratPair .hh-cross-card:hover .hh-cross-body{ color:var(--paper); opacity:.9; }
@media(max-width:760px){ #stratPair .hh-cross-grid{ grid-template-columns:1fr; } }

/* "What we look for" — shorter cards; width + text sizing inherit the shared
   paired-rail rules (fixed width, fewer cards on shrink) like "AIF allows us". */
#hhLookSection .hero-pair .aif-pair-head{ min-height:400px !important; }
#hhLookSection .hero-pair .testi-card{ min-height:400px !important; }
#hhLookSection .hero-arrow{ width:64px !important; height:64px !important; }

/* ══ AIF HEDGEHOGS FUND — Ways-to-Invest green treatment ══════════════════════
   Green field, soft-gold outlines + text, gold→green button effect, and the
   same bottom-left corner element system (animated on scroll into view). */
#aifHedgehogsFeature{ background:var(--greenDeep); position:relative; overflow:hidden; border-bottom:none; }
#aifHedgehogsFeature .section-inner{ position:relative; z-index:2; }
/* Bind hedgehogs + sambhv fund sections to logo-left / menu-right edges (no overflow) */
#aifHedgehogsFeature, #page-aif-overview .aif-fund-closed{ padding-left:0 !important; padding-right:0 !important; }
#aifHedgehogsFeature > .section-inner, #page-aif-overview .aif-fund-closed > .section-inner{ max-width:none !important; margin:0 !important; padding-left:var(--hero-text-inset) !important; padding-right:var(--niv-inset) !important; box-sizing:border-box; }
/* Status pinned LEFT (aligned to the title), highlighted on scroll-in */
#aifHedgehogsFeature .aif-fund-feature-head{ justify-content:flex-start; margin-bottom:22px; }
#aifHedgehogsFeature .aif-fund-status.open{ color:var(--gold) !important; }
/* Marker highlight for both fund statuses (draws on arrival) */
.aif-fund-feature-status.hl{ position:relative; display:inline-block; padding:6px 14px; margin-left:0; text-align:center; z-index:0; }
.aif-fund-feature-status.hl::before{ content:''; position:absolute; inset:0; transform:scaleX(0); transform-origin:left; transition:transform .6s cubic-bezier(.4,0,.2,1); z-index:-1; }
#aifHedgehogsFeature .aif-fund-feature-status.hl::before{ background:var(--gold); }
#aifHedgehogsFeature .aif-fund-feature-status.hl.hl-in{ color:var(--greenDeep) !important; }
.aif-fund-closed .aif-fund-feature-status.hl::before{ background:var(--greenDeep); }
.aif-fund-closed .aif-fund-feature-status.hl.hl-in{ color:var(--paper) !important; }
.aif-fund-feature-status.hl.hl-in::before{ transform:scaleX(1); }
/* Sambhav (closed) — green content on the gray field */
.aif-fund-closed .aif-fund-feature-head{ justify-content:flex-start; }
.aif-fund-closed .aif-fund-feature-title{ color:var(--greenDeep) !important; }
.aif-fund-closed .aif-fund-feature-lead{ color:var(--greenDeep) !important; opacity:.92; }
.aif-fund-closed .aif-fund-feature-status{ color:var(--greenDeep) !important; }
.aif-fund-closed .aif-fund-feature-grid{ border-top-color:var(--greenDeep) !important; border-left-color:var(--greenDeep) !important; }
.aif-fund-closed .aif-fund-feature-spec{ border-right-color:var(--greenDeep) !important; border-bottom-color:var(--greenDeep) !important; }
.aif-fund-closed .aif-spec-label{ color:var(--greenDeep) !important; opacity:.72; }
.aif-fund-closed .aif-spec-value{ color:var(--greenDeep) !important; }
.aif-fund-closed .btn{ border-color:var(--greenDeep) !important; color:var(--greenDeep) !important; }
.aif-fund-closed .btn:hover{ background:var(--greenDeep) !important; color:var(--paper) !important; }
/* Title +20% larger, soft gold */
#aifHedgehogsFeature .aif-fund-feature-title{ color:var(--gold) !important; font-size:clamp(36px,5.4vw,72px) !important; }
#aifHedgehogsFeature .aif-fund-feature-lead{ color:var(--paper) !important; opacity:.92; }
/* Title + lead fade/slide in on scroll (before the boxes reveal) */
#aifHedgehogsFeature .aif-fund-feature-title,
#aifHedgehogsFeature .aif-fund-feature-lead{ opacity:0; transform:translateY(24px); transition:opacity .6s ease, transform .6s cubic-bezier(.22,.8,.28,1); }
#aifHedgehogsFeature.reveal-in .aif-fund-feature-title{ opacity:1 !important; transform:none; transition-delay:.05s; }
#aifHedgehogsFeature.reveal-in .aif-fund-feature-lead{ opacity:.92 !important; transform:none; transition-delay:.2s; }
@media (prefers-reduced-motion: reduce){ #aifHedgehogsFeature .aif-fund-feature-title, #aifHedgehogsFeature .aif-fund-feature-lead{ opacity:1 !important; transform:none !important; } }
/* Spec grid: gold outlines + gold/cream text on green */
#aifHedgehogsFeature .aif-fund-feature-grid{ border:none !important; }
#aifHedgehogsFeature .aif-fund-feature-spec{ border:1.5px solid var(--gold) !important; margin:-0.75px 0 0 -0.75px; transition:opacity .6s ease, transform .6s cubic-bezier(.22,.8,.28,1); }
/* Hover: instant vibrant-gold outline, same 1.5px thickness */
#aifHedgehogsFeature .aif-fund-feature-spec:hover{ box-shadow:inset 0 0 0 1.5px var(--goldBright); }
#aifHedgehogsFeature .aif-fund-feature-spec.spec-hot{ box-shadow:inset 0 0 0 1.5px var(--goldBright); }
/* Scroll-in: fade + slide up, staggered one by one */
#aifHedgehogsFeature .aif-fund-feature-spec{ opacity:0; transform:translateY(26px); }
#aifHedgehogsFeature.specs-in .aif-fund-feature-spec{ opacity:1; transform:translateY(0); }
#aifHedgehogsFeature.specs-in .aif-fund-feature-spec:nth-child(1){ transition-delay:0s; }
#aifHedgehogsFeature.specs-in .aif-fund-feature-spec:nth-child(2){ transition-delay:.1s; }
#aifHedgehogsFeature.specs-in .aif-fund-feature-spec:nth-child(3){ transition-delay:.2s; }
#aifHedgehogsFeature.specs-in .aif-fund-feature-spec:nth-child(4){ transition-delay:.3s; }
@media (prefers-reduced-motion: reduce){ #aifHedgehogsFeature .aif-fund-feature-spec{ opacity:1 !important; transform:none !important; } }
#aifHedgehogsFeature .aif-spec-label{ color:var(--gold) !important; opacity:.82; }
#aifHedgehogsFeature .aif-spec-value{ color:var(--paper) !important; }
/* Buttons: identical to the Ways product buttons (green → gold on hover) */
#aifHedgehogsFeature .btn{ background:var(--greenDeep) !important; border-color:var(--gold) !important; color:var(--gold) !important; }
#aifHedgehogsFeature .btn:hover{ background:#F0C157 !important; color:var(--greenDeep) !important; border-color:#F0C157 !important; }
/* Corner element system — soft gold, bottom-left, diagonal reaches the spec grid */
#aifHedgehogsFeature .ways-guides{ position:absolute; inset:0; width:100%; height:100%; pointer-events:none; overflow:visible; z-index:1; }
#aifHedgehogsFeature .ways-guides line{ stroke:var(--gold); stroke-width:1.4; }
#aifHedgehogsFeature .ways-guides #agNode{ fill:var(--gold); stroke:none; }
/* ===== Hedgehogs + Sambhav fund sections — mobile-native (late override, beats hero-text-inset) ===== */
@media(max-width:760px){
  #aifHedgehogsFeature > .section-inner,
  #page-aif-overview .aif-fund-closed > .section-inner,
  #hhFundHero .section-inner{ padding-left:16px !important; padding-right:16px !important; }
  #aifHedgehogsFeature.web-section{ padding-top:56px !important; padding-bottom:56px !important; }
  #hhFundHero.web-section{ padding-top:104px !important; padding-bottom:80px !important; min-height:auto !important; }
  #page-aif-overview .aif-fund-closed.web-section{ padding-top:56px !important; padding-bottom:56px !important; }
  #aifHedgehogsFeature > .section-inner{ padding-left:40px !important; padding-right:16px !important; }
  #hhFundHero .section-inner{ padding-left:40px !important; padding-right:16px !important; }
  #aifHedgehogsFeature .aif-fund-feature-head,
  #hhFundHero .aif-fund-feature-head,
  .aif-fund-closed .aif-fund-feature-head{ flex-direction:column; align-items:flex-start; gap:8px; margin-bottom:16px; }
  #aifHedgehogsFeature .aif-fund-feature-title,
  #hhFundHero .aif-fund-feature-title,
  .aif-fund-closed .aif-fund-feature-title{ font-size:clamp(34px,9.4vw,46px) !important; line-height:1.08 !important; margin-bottom:14px; }
  #aifHedgehogsFeature .aif-fund-feature-lead,
  #hhFundHero .aif-fund-feature-lead,
  .aif-fund-closed .aif-fund-feature-lead{ font-size:clamp(16px,4.4vw,19px) !important; line-height:1.55 !important; margin-bottom:26px; max-width:100%; }
  #aifHedgehogsFeature .aif-fund-feature-status,
  #hhFundHero .aif-fund-feature-status,
  .aif-fund-closed .aif-fund-feature-status{ font-size:clamp(15px,4.4vw,19px) !important; }
  #aifHedgehogsFeature .aif-fund-feature-grid,
  #hhFundHero .aif-fund-feature-grid,
  .aif-fund-closed .aif-fund-feature-grid{ grid-template-columns:1fr 1fr !important; margin-bottom:26px; }
  #aifHedgehogsFeature .aif-fund-feature-spec,
  #hhFundHero .aif-fund-feature-spec,
  .aif-fund-closed .aif-fund-feature-spec{ padding:18px 16px 20px !important; }
  #aifHedgehogsFeature .aif-spec-value,
  #hhFundHero .aif-spec-value,
  .aif-fund-closed .aif-spec-value{ font-size:clamp(15px,4vw,18px) !important; }
  #aifHedgehogsFeature .aif-fund-feature-cta,
  #hhFundHero .aif-fund-feature-cta{ flex-direction:column !important; gap:12px; align-items:stretch !important; }
  #aifHedgehogsFeature .aif-fund-feature-cta .btn,
  #hhFundHero .aif-fund-feature-cta .btn{ width:100% !important; box-sizing:border-box !important; margin:0 !important; align-self:stretch !important; text-align:center; }
  .aif-fund-closed .aif-fund-feature-cta{ flex-direction:column; gap:12px; }
  .aif-fund-closed .aif-fund-feature-cta .btn{ width:100%; text-align:center; box-sizing:border-box; }
}
@media(max-width:430px){
  /* Keep the 2×2 grid on small phones (was collapsing to a single column) and
     tighten the cell padding/type so both columns fit cleanly. */
  #aifHedgehogsFeature .aif-fund-feature-grid,
  #hhFundHero .aif-fund-feature-grid,
  .aif-fund-closed .aif-fund-feature-grid{ grid-template-columns:1fr 1fr !important; }
  #aifHedgehogsFeature .aif-fund-feature-spec,
  #hhFundHero .aif-fund-feature-spec,
  .aif-fund-closed .aif-fund-feature-spec{ padding:14px 12px 16px !important; display:flex; flex-direction:column; justify-content:flex-start; }
  #aifHedgehogsFeature .aif-spec-label,
  #hhFundHero .aif-spec-label,
  .aif-fund-closed .aif-spec-label{ font-size:10px !important; letter-spacing:.06em; margin-bottom:6px !important; }
  #aifHedgehogsFeature .aif-spec-value,
  #hhFundHero .aif-spec-value,
  .aif-fund-closed .aif-spec-value{ font-size:14px !important; line-height:1.25 !important; overflow-wrap:break-word; }
}

/* Corner element system for Explore Our Equity Baskets (same engine as Ways-to-Invest) */
#eqbBasketSection .ways-guides{ position:absolute; inset:0; width:100%; height:100%; pointer-events:none; overflow:visible; z-index:1; }
#eqbBasketSection .ways-guides line{ stroke:var(--gold); stroke-width:1.4; }
#eqbBasketSection .ways-guides #eqbgNode{ fill:var(--gold); stroke:none; }
#eqbBasketSection .eqb-sec-title{ color:var(--gold); position:relative; z-index:2; }
#eqbBasketSection{ padding-left:0 !important; padding-right:0 !important; }
#eqbBasketSection .eqb-basket-grid{ position:relative; z-index:2; }
#eqbBasketSection .section-inner{ max-width:none; padding-left:var(--hero-text-inset); padding-right:var(--niv-inset); box-sizing:border-box; }
@media(max-width:760px){
  #eqbBasketSection{ overflow:visible !important; }
  #eqbBasketSection .section-inner{ padding-left:16px !important; padding-right:16px !important; }
  /* Side-by-side native scroll rail (same model as the News & Research cards):
     the grid itself is the scroller, first card ~90% wide so the next peeks. */
  #page-equity-baskets #eqbBasketSection .eqb-basket-grid{
    display:flex !important; grid-template-columns:none !important;
    flex-wrap:nowrap !important; align-items:stretch !important;
    gap:14px !important; justify-items:stretch !important;
    overflow-x:auto !important; overflow-y:hidden !important;
    -webkit-overflow-scrolling:touch; scroll-behavior:smooth;
    scroll-snap-type:x mandatory !important; overscroll-behavior-x:contain;
    scroll-padding-left:0 !important;
    scrollbar-width:none; -ms-overflow-style:none;
    padding-right:16px !important; margin-right:-16px !important;
  }
  #page-equity-baskets #eqbBasketSection .eqb-basket-grid::-webkit-scrollbar{ display:none; }
  #page-equity-baskets #eqbBasketSection .eqb-card{
    min-height:0 !important; padding:24px 22px !important;
    flex:0 0 88% !important; width:88% !important; max-width:88% !important;
    scroll-snap-align:start !important; scroll-snap-stop:always !important;
    box-sizing:border-box;
  }
  #eqbBasketSection .eqb-sec-title{ font-size:clamp(28px,8vw,40px) !important; line-height:1.14 !important; margin-bottom:22px !important; }
  #eqbBasketSection .eqb-card .conv-burst{ width:58px !important; height:58px !important; top:18px !important; right:18px !important; }
  #eqbBasketSection .basket-stats{ display:flex !important; flex-wrap:wrap !important; gap:14px 28px !important; }
  #eqbBasketSection .basket-stats > div{ min-width:0; }
  /* Card body is drawn from the start (no fade-in), but the STARBURST holds at
     scale 0 until that card settles into view, then pops in sequence. */
  #eqbBasketSection .eqb-card{ opacity:1 !important; transform:none !important; transition:box-shadow .7s ease !important; }
  #eqbBasketSection .eqb-card .conv-burst-dot,
  #eqbBasketSection .eqb-card .conv-burst-lines line{ transform:scale(0) !important; }
  #eqbBasketSection .eqb-card.eb-in .conv-burst-dot{ transform:scale(1) !important; transition-delay:0s !important; }
  #eqbBasketSection .eqb-card.eb-in .conv-burst-lines line:nth-child(1),
  #eqbBasketSection .eqb-card.eb-in .conv-burst-lines line:nth-child(2){ transform:scale(1) !important; transition-delay:.14s !important; }
  #eqbBasketSection .eqb-card.eb-in .conv-burst-lines line:nth-child(3),
  #eqbBasketSection .eqb-card.eb-in .conv-burst-lines line:nth-child(4){ transform:scale(1) !important; transition-delay:.3s !important; }
}
/* Starburst hover animation on the basket cards (same engine as home Ways-to-Invest) */
#eqbBasketSection .eqb-card{ opacity:0; transform:translateY(30px); transition:opacity .7s ease, transform .7s cubic-bezier(.22,.8,.28,1), box-shadow .7s ease; }
#eqbBasketSection .eqb-card.eb-in{ opacity:1; transform:none; box-shadow:0 24px 46px -18px rgba(0,0,0,.45); }
#eqbBasketSection .eqb-card .conv-burst{ position:absolute; top:22px; right:22px; width:60px; height:60px; overflow:visible; pointer-events:none; z-index:4; }
#eqbBasketSection .eqb-card .conv-burst-dot{ fill:#F0C157 !important; transform-box:fill-box; transform-origin:center; transform:scale(0); transition:transform .46s cubic-bezier(.1,.75,.25,1); }
#eqbBasketSection .eqb-card .conv-burst-lines line{ stroke:#F0C157 !important; stroke-width:2.4; stroke-linecap:round; transform-box:fill-box; transform-origin:center; transform:scale(0); transition:transform .46s cubic-bezier(.1,.75,.25,1); }
#eqbBasketSection .eqb-card:hover .conv-burst-dot,
#eqbBasketSection .eqb-card:active .conv-burst-dot{ transform:scale(1); transition-delay:0s; }
#eqbBasketSection .eqb-card:hover .conv-burst-lines line:nth-child(1),
#eqbBasketSection .eqb-card:hover .conv-burst-lines line:nth-child(2),
#eqbBasketSection .eqb-card:active .conv-burst-lines line:nth-child(1),
#eqbBasketSection .eqb-card:active .conv-burst-lines line:nth-child(2){ transform:scale(1); transition-delay:.14s; }
#eqbBasketSection .eqb-card:hover .conv-burst-lines line:nth-child(3),
#eqbBasketSection .eqb-card:hover .conv-burst-lines line:nth-child(4),
#eqbBasketSection .eqb-card:active .conv-burst-lines line:nth-child(3),
#eqbBasketSection .eqb-card:active .conv-burst-lines line:nth-child(4){ transform:scale(1); transition-delay:.3s; }

/* ══ HEDGEHOGS PAGE HERO — same green fund treatment as AIF Hedgehogs feature ══ *//* ══ AIF HEDGEHOGS FUND — Ways-to-Invest green treatment ══════════════════════
   Green field, soft-gold outlines + text, gold→green button effect, and the
   same bottom-left corner element system (animated on scroll into view). */
#hhFundHero{ background:var(--greenDeep); position:relative; overflow:hidden; border-bottom:none; padding-left:0 !important; padding-right:0 !important; }
#hhFundHero .section-inner{ position:relative; z-index:2; max-width:none; margin:0; padding-left:var(--hero-text-inset); padding-right:var(--niv-inset); box-sizing:border-box; }
/* Status pinned LEFT (aligned to the title), highlighted on scroll-in */
#hhFundHero .aif-fund-feature-head{ justify-content:flex-start; margin-bottom:22px; }
#hhFundHero .aif-fund-status.open{ color:var(--gold) !important; }
/* Marker highlight for both fund statuses (draws on arrival) */
.aif-fund-feature-status.hl{ position:relative; display:inline-block; padding:6px 14px; margin-left:0; text-align:center; z-index:0; }
.aif-fund-feature-status.hl::before{ content:''; position:absolute; inset:0; transform:scaleX(0); transform-origin:left; transition:transform .6s cubic-bezier(.4,0,.2,1); z-index:-1; }
#hhFundHero .aif-fund-feature-status.hl::before{ background:var(--gold); }
#hhFundHero .aif-fund-feature-status.hl.hl-in{ color:var(--greenDeep) !important; }
.aif-fund-closed .aif-fund-feature-status.hl::before{ background:var(--greenDeep); }
.aif-fund-closed .aif-fund-feature-status.hl.hl-in{ color:var(--paper) !important; }
.aif-fund-feature-status.hl.hl-in::before{ transform:scaleX(1); }
/* Sambhav (closed) — green content on the gray field */
.aif-fund-closed .aif-fund-feature-head{ justify-content:flex-start; }
.aif-fund-closed .aif-fund-feature-title{ color:var(--greenDeep) !important; }
.aif-fund-closed .aif-fund-feature-lead{ color:var(--greenDeep) !important; opacity:.92; }
.aif-fund-closed .aif-fund-feature-status{ color:var(--greenDeep) !important; }
.aif-fund-closed .aif-fund-feature-grid{ border-top-color:var(--greenDeep) !important; border-left-color:var(--greenDeep) !important; }
.aif-fund-closed .aif-fund-feature-spec{ border-right-color:var(--greenDeep) !important; border-bottom-color:var(--greenDeep) !important; }
.aif-fund-closed .aif-spec-label{ color:var(--greenDeep) !important; opacity:.72; }
.aif-fund-closed .aif-spec-value{ color:var(--greenDeep) !important; }
.aif-fund-closed .btn{ border-color:var(--greenDeep) !important; color:var(--greenDeep) !important; }
.aif-fund-closed .btn:hover{ background:var(--greenDeep) !important; color:var(--paper) !important; }
/* Title +20% larger, soft gold */
#hhFundHero .aif-fund-feature-title{ color:var(--gold) !important; font-size:clamp(36px,5.4vw,72px) !important; }
#hhFundHero .aif-fund-feature-lead{ color:var(--paper) !important; opacity:.92; }
/* Title + lead fade/slide in on scroll (before the boxes reveal) */
#hhFundHero .aif-fund-feature-title,
#hhFundHero .aif-fund-feature-lead{ opacity:0; transform:translateY(24px); transition:opacity .6s ease, transform .6s cubic-bezier(.22,.8,.28,1); }
#hhFundHero.reveal-in .aif-fund-feature-title{ opacity:1 !important; transform:none; transition-delay:.05s; }
#hhFundHero.reveal-in .aif-fund-feature-lead{ opacity:.92 !important; transform:none; transition-delay:.2s; }
@media (prefers-reduced-motion: reduce){ #hhFundHero .aif-fund-feature-title, #hhFundHero .aif-fund-feature-lead{ opacity:1 !important; transform:none !important; } }
/* Hold the whole fund hero until fonts are ready — nothing shows or animates before */
#hhFundHero:not(.fonts-ready){ visibility:hidden !important; }
/* Spec grid: gold outlines + gold/cream text on green */
#hhFundHero .aif-fund-feature-grid{ border:none !important; }
#hhFundHero .aif-fund-feature-spec{ border:1.5px solid var(--gold) !important; margin:-0.75px 0 0 -0.75px; transition:opacity .6s ease, transform .6s cubic-bezier(.22,.8,.28,1); }
/* Hover: instant vibrant-gold outline, same 1.5px thickness */
#hhFundHero .aif-fund-feature-spec:hover{ box-shadow:inset 0 0 0 1.5px var(--goldBright); }
/* Scroll-in: fade + slide up, staggered one by one */
#hhFundHero .aif-fund-feature-spec{ opacity:0; transform:translateY(26px); }
#hhFundHero.specs-in .aif-fund-feature-spec{ opacity:1; transform:translateY(0); }
#hhFundHero.specs-in .aif-fund-feature-spec:nth-child(1){ transition-delay:0s; }
#hhFundHero.specs-in .aif-fund-feature-spec:nth-child(2){ transition-delay:.1s; }
#hhFundHero.specs-in .aif-fund-feature-spec:nth-child(3){ transition-delay:.2s; }
#hhFundHero.specs-in .aif-fund-feature-spec:nth-child(4){ transition-delay:.3s; }
@media (prefers-reduced-motion: reduce){ #hhFundHero .aif-fund-feature-spec{ opacity:1 !important; transform:none !important; } }
#hhFundHero .aif-spec-label{ color:var(--gold) !important; opacity:.82; }
#hhFundHero .aif-spec-value{ color:var(--paper) !important; }
/* Buttons: identical to the Ways product buttons (green → gold on hover) */
#hhFundHero .btn{ background:var(--greenDeep) !important; border-color:var(--gold) !important; color:var(--gold) !important; }
#hhFundHero .btn:hover{ background:#F0C157 !important; color:var(--greenDeep) !important; border-color:#F0C157 !important; }
/* Corner element system — soft gold, bottom-left, diagonal reaches the spec grid */
#hhFundHero .ways-guides{ position:absolute; inset:0; width:100%; height:100%; pointer-events:none; overflow:visible; z-index:1; }#hhFundHero .ways-guides line{ stroke:var(--gold); stroke-width:1.4; }
#hhFundHero .ways-guides #hhgNode{ fill:var(--gold); stroke:none; }
/* Split hero: left messaging, right 2x2 spec grid */
#hhFundHero .hh-fundhero-split{ display:flex; align-items:stretch; gap:56px; }
#hhFundHero{ min-height:auto; display:block; padding-top:calc(var(--niv-inset) + var(--niv-fab-h) + 48px); padding-bottom:96px; }
#hhFundHero > .section-inner{ display:block; width:100%; }
#hhFundHero .hh-fundhero-split{ flex:0 0 auto; }
/* Lead inside a bordered box (like the home hero belief box); element system touches it */
#hhFundHero .hh-lead-box{ border:1.5px solid var(--gold); padding:22px 26px; display:block; max-width:520px; margin-top:20px; flex:1 1 auto; }
#hhFundHero .hh-fundhero-left{ flex:1 1 0; min-width:0; display:flex; flex-direction:column; }
#hhFundHero .hh-fundhero-left .aif-fund-feature-title{ margin-top:0; }
#hhFundHero .hh-fundhero-grid{ flex:0 0 44%; align-self:stretch; display:grid; grid-template-columns:1fr 1fr; grid-auto-rows:1fr; }
@media(max-width:860px){
  #hhFundHero .hh-fundhero-split{ flex-direction:column; align-items:stretch; gap:34px; }
  #hhFundHero .hh-fundhero-grid{ flex:1 1 auto; }
}

/* Starburst on the top-right corner of the Type spec box (like home hero box burst) */
#hhFundHero .hh-min-spec{ position:relative; }
#hhFundHero .hh-min-burst{ position:absolute; top:0; right:0; width:42px; height:42px; overflow:visible; pointer-events:none; z-index:4; transform:translate(50%,-50%); }
#hhFundHero .hh-min-burst .conv-burst-dot{ fill:var(--gold); transform-box:fill-box; transform-origin:center; transform:scale(0); transition:transform .4s cubic-bezier(.22,.9,.32,1); }
#hhFundHero .hh-min-burst .conv-burst-lines line{ stroke:var(--gold); stroke-width:2.4; stroke-linecap:round; transform-box:fill-box; transform-origin:center; transform:scale(0); transition:transform .4s cubic-bezier(.22,.9,.32,1); }
#hhFundHero.specs-in .hh-min-burst .conv-burst-dot{ transform:scale(1); transition-delay:.5s; }
#hhFundHero.specs-in .hh-min-burst .conv-burst-lines line{ transform:scale(1); transition-delay:.58s; }
/* Compress the whole section — tighter bottom so there's no dead space below the
   cards; the corner element system recomputes and stays pinned to the corner. */
/* top matches section 2's 40px bottom; bottom keeps room for the corner motif */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats).web-section{ padding-top:62px !important; padding-bottom:82px !important; }
/* Groups flow naturally at EVERY width, not just on mobile. The absolute
   overlap exists so tabbed sections can cross-fade between groups; these two
   sections have a single group each, so it bought nothing and meant the wrap
   could not grow with its card — every content change needed a hand-tuned
   min-height, and the desktop card was cropped whenever that number went stale.
   (The identical rule already existed in the mobile block, which is exactly why
   mobile and tablet never showed the crop.) */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-groups-wrap{ position:static !important; min-height:0 !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group{ position:static !important; inset:auto !important; display:none !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group.active{ display:block !important; }
/* ── Corner element-system clearance ────────────────────────────────────
   niv-app.js anchors the guide rays and corner cross at x=22 / y=(bottom-22)
   of the section, then runs a diagonal up to the FIRST card. The cards sat at
   x=28, so the vertical rail and the corner cross landed on the card edge and
   the diagonal terminated inside it. Insetting the card grid gives the motif
   its own lane on the left and bottom; the centred title is unaffected. */
/* the guide rail sits 22px from the section edge; the cards keep a clear lane
   of at least 30px beyond it so the standing line never meets a card border */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group{ padding-left:clamp(22px,4vw,56px); padding-right:clamp(0px,1.4vw,18px); box-sizing:border-box; }
@media(max-width:760px){
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group{ padding-left:14px; padding-right:0; }
}
/* ── Corner-motif clearance ──────────────────────────────────────────────
   The starburst niv-app.js injects into each card is absolutely positioned in
   the top-right corner. Only the eyebrow and title share its band (the body
   copy starts below it), so those two reserve its width instead of the card
   carrying dead padding on every line. */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card{ position:relative; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card .conv-burst{ width:46px !important; height:46px !important; top:16px !important; right:16px !important; }
/* only the eyebrow sits in the mark's band; the title starts below it and can
   use the full width, which is what keeps it to the two authored lines */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card .offer-eyebrow{ max-width:calc(100% - 66px); box-sizing:border-box; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card .card-title{ max-width:100%; box-sizing:border-box; }
/* fund names larger and set on two lines; the <br> is authored in the markup
   so the break lands after "Niveshaay" rather than wherever the box ends */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .card-title{
  font-size:clamp(30px,3.1vw,44px) !important; line-height:1.1 !important;
  margin-bottom:20px !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-card{ min-height:0 !important; padding:34px 30px !important; }
/* fund descriptions a step up from the shared card size */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-desc{
  font-size:clamp(17px,1.35vw,20px) !important; line-height:1.55 !important; }
/* styles/90-rebrand-overrides.css reserves a 60px right gutter on these titles
   for the corner mark. At the larger size that gutter pushed "Hedgehogs Fund"
   onto a third line. The mark's band is the top ~62px, which only the eyebrow
   occupies, so the title can drop the gutter and keep its two authored lines. */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .card-title{ padding-right:0 !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-eyebrow{ margin-bottom:16px !important; }
@media(max-width:760px){
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-desc{ font-size:16px !important; }
}
@media(max-width:1024px){
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .card-title{ font-size:clamp(26px,3.4vw,34px) !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-card{ min-height:460px !important; }
}
@media(max-width:760px){
  /* Smaller so "Niveshaay Hedgehogs Fund" holds two lines, not three. Both
     titles reserve three lines regardless, so the two cards' title blocks match
     even when one wraps further than the other. */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .card-title{
    font-size:clamp(19px,5.2vw,25px) !important; min-height:3.3em; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-card{ min-height:0 !important; padding:26px 22px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-groups-wrap{ min-height:0 !important; }
}
/* the wide PE card puts its title in a two-column grid, so it needs the same
   clearance measured from the card edge rather than the column edge */

@media(max-width:1024px){
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card .conv-burst{ width:40px !important; height:40px !important; top:14px !important; right:14px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card .offer-eyebrow{ max-width:calc(100% - 56px); }
}
@media(max-width:760px){
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card .conv-burst{ width:34px !important; height:34px !important; top:12px !important; right:12px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card .offer-eyebrow{ max-width:calc(100% - 48px); }
}
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-title{ margin-bottom:24px !important; }
/* Tablet / narrow desktop (761–1024px): match the mobile title — left-aligned,
   2 lines ("Alternative" / "Investment Fund"), collapse the 2nd hard break. */
@media(min-width:761px) and (max-width:1024px){
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-title{ text-align:left !important; font-size:clamp(40px,6.4vw,66px) !important; line-height:1.08 !important; }
  :is(#home-ways,#aif-ways) .ways-title .ways-title-br2{ display:none; }
}
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tabs{ margin-bottom:24px !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tab{ padding:19px 24px !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tab-title{ font-size:23px !important; margin-bottom:6px !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card{ min-height:296px !important; padding:27px 26px !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offerings-track .offer-card{ min-height:300px !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-static-grid .offer-card{ min-height:346px !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-eyebrow{ margin-bottom:14px !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card .card-title{ margin-bottom:12px !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card .btn{ height:42px !important; padding:0 20px !important; font-size:15px !important; }
/* Product tabs: no dot inside the button (removed) */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tab .ways-burst{ display:none !important; }
/* Wider spacing between product cards + fixed gap so the connector dot centers
   exactly in the gap (half the gap on each side). */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-static-grid{ gap:56px !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-static-grid .offer-card{ flex:1 1 0 !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offerings-track{ gap:56px !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offerings-track .offer-card{ flex:0 0 calc(48% - 28px) !important; }
/* Soft-gold connector dot, centered in the gap: half of the offer-static-grid gap (72px → 36px) */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-static-grid .offer-card:not(:first-child)::before,
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offerings-track .offer-card:not(:first-child)::before{
  content:''; position:absolute; left:-36px; top:50%; transform:translate(-50%,-50%);
  width:12px; height:12px; background:var(--gold); border-radius:50% !important; z-index:5; pointer-events:none;
}
/* Carousel side arrows (plain icons, no box) flanking the baskets cards */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-carousel{ display:flex; align-items:center; gap:10px; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-carousel .offerings-viewport{ flex:1 1 auto; min-width:0; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-arrow{ flex:0 0 auto; background:none !important; border:none !important; padding:0; margin:0; width:30px; height:44px; display:flex; align-items:center; justify-content:center; cursor:pointer; color:var(--gold); opacity:.75; transition:opacity .2s ease, transform .2s ease; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-arrow:hover{ opacity:1; transform:scale(1.18); }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-arrow svg{ width:24px; height:24px; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-arrow svg path{ stroke:var(--gold); stroke-width:2; fill:none; stroke-linecap:round; stroke-linejoin:round; }
@media(max-width:900px){
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-static-grid .offer-card:not(:first-child)::before,
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offerings-track .offer-card:not(:first-child)::before{ display:none; }
}

/* ══ Section-2 "businesses we've backed" cards below desktop — authoritative rule,
   placed last so it beats the desktop base (flex:620px) + the ≤900px rule above.
   Covers the full tablet→phone range (≤900px) so it also fixes the ~800px preview
   where cards were rendering as one giant full-width block. Matches the interview
   ("serious long-term heroes") founder-card feel: a horizontal snap rail, cards
   sized so the next one peeks, tall/vertical, with constrained title/body. ══ */
@media(max-width:900px){
  #homeConvWrapper.hh-plain-wrapper .conv-cards-area{ overflow-x:auto !important; overflow-y:visible !important; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; scrollbar-width:none; margin-top:26px !important; }
  #homeConvWrapper.hh-plain-wrapper .conv-cards-area::-webkit-scrollbar{ display:none; }
  #homeConvWrapper.hh-plain-wrapper .conv-track{ height:auto !important; align-items:stretch !important; gap:18px !important; padding-left:0 !important; }
  /* min() gives ~2 cards on tablet and ~1.2 (with peek) on a phone, tracking
     the interview cards' behaviour at the same widths. */
  #homeConvWrapper.hh-plain-wrapper .conv-card{
    flex:0 0 min(82%, 380px) !important; min-height:clamp(380px,56vh,480px) !important; height:auto !important;
    padding:34px 30px !important; scroll-snap-align:center; justify-content:flex-start !important;
  }
  #homeConvWrapper.hh-plain-wrapper .conv-year{ font-size:14px !important; margin-bottom:18px !important; }
  #homeConvWrapper.hh-plain-wrapper .conv-card-title{ font-size:clamp(24px,4.2vw,32px) !important; line-height:1.18 !important; margin-bottom:18px !important; }
  #homeConvWrapper.hh-plain-wrapper .conv-body{ font-size:clamp(15px,2vw,18px) !important; line-height:1.6 !important; }
}

/* ══ SEMANTIC REFACTOR GUARDS ══
   .hero-belief was <p>, now <h1> for document outline; every other typographic
   property is set explicitly by existing rules — this pins the one UA default
   that differs (h1 bold) back to the inherited weight the <p> had. */
h1.hero-belief{ font-weight:inherit; }

/* Two lines on phones: "Hear from our" / "Risk-takers". */
.hero-section-header .hs-br-m{ display:none; }
@media(max-width:900px){ .hero-section-header .hs-br-m{ display:inline !important; } }

/* ── Accordion body emphasis (.bk-mark) consistency ──────────────────────────
   The .bk-mark gold-sweep highlight only resolves to its dark final colour on
   .bk-card.burst-on. The keep-in-mind / approach accordions (.aif-mind) are
   NOT bk-cards, so that state never fires and the marks stay stranded at their
   gold resting colour — reading as inconsistent yellow words inside otherwise
   ink body copy (e.g. Equity Baskets "What an Equity Basket is"). In every
   accordion, drop the sweep trick and render the mark in the surrounding text
   colour so the body copy is one consistent colour. Scoped to .aif-mind, so
   the Strategy bk-card grid (which does complete its sweep) is untouched. */
.aif-mind .bk-mark{
  background:none !important;
  -webkit-text-fill-color:currentColor !important;
  color:inherit !important;
  animation:none !important;
}

/* ===== 95-section2-mobile.css ===== */
/* ===== 95-section2-mobile.css ===== */
/* ============================================================
   SECTION 2 — "Our Serious Long-term Heroes" — MOBILE LAYOUT
   Loads LAST (after 90-rebrand-overrides). Desktop ≥901px is
   untouched. Fixes three real phone bugs found by measuring the
   live layout at 390px:
     · the desktop .conv-viewport gutter (padding-left:80px) had no
       media query, pushing the whole rail off the right edge;
     · a generic .testi-card mobile rule leaked 32px padding +
       340px min-height onto the founder card, creating the dead
       gap between the name/role and the quote below;
     · the decorative hover growth-arrow sat over the quote text.
   ============================================================ */

/* Drop the desktop side gutter so the rail fits the viewport. */
@media (max-width:900px){
  #homeConvWrapper.hh-plain-wrapper .conv-viewport{ padding:40px 20px 48px !important; }
  #homeConvWrapper.hh-plain-wrapper .conv-cards-area{ margin-top:26px !important; }
}
/* Unify with the other carousels: drive by transform (JS free-drag + bounce +
   sweep), not native overflow scroll, so every horizontal carousel behaves the same. */
@media (max-width:900px){
  #homeConvWrapper.hh-plain-wrapper .conv-cards-area{ overflow-x:hidden !important; scroll-snap-type:none !important; }
  #homeConvWrapper.hh-plain-wrapper .conv-card{ scroll-snap-align:none !important; }
}

@media (max-width:760px){
  /* One founder pair per swipe, with spacing + a peek of the next — identical to
     the other paired-card rails. */
  .hero-rail{ overflow:hidden; }
  .hero-rail-track{ gap:16px; }
  .hero-pair{
    flex:0 0 74vw !important; max-width:400px !important; width:auto; min-width:0 !important;
    flex-direction:column; gap:0;
    box-shadow:0 12px 30px -16px rgba(44,46,43,.22);
  }

  /* Founder photo: full-bleed top of the card, steady 4:3, no leaked
     padding/min-height from the other testimonial carousel. */
  .hero-pair .testi-card{
    flex:0 0 auto; min-height:0 !important; padding:0 !important; display:block; border:none;
  }
  .hero-pair .video-icon{ aspect-ratio:4/3; height:auto !important; width:100%; border-bottom:none !important; }
  .hero-pair .founder-photo{ width:100%; height:100%; object-fit:cover; }
  /* Yogesh Kabra: scale the whole photo down from the BOTTOM pivot (no crop) so
     the corner starburst doesn't overlap his face. */
  .hero-pair .founder-photo-yk{ transform:scale(1) translateY(5%) !important; transform-origin:50% 100% !important; }

  /* Name + role: tight band directly under the photo. */
  .hero-pair .testi-meta{ padding:14px 20px 16px !important; margin:0 !important; }
  .hero-pair .testi-name{ font-size:20px; }
  .hero-pair .testi-role{ font-size:13.5px; margin-top:4px; }

  /* Quote flows immediately after — no dead space; decorative growth
     arrow hidden on touch (it overlapped the quote text and has no
     hover on mobile anyway). */
  .hero-pair .hero-quote{ padding:20px 20px 66px !important; border-radius:0 !important; }
  .hero-pair .hero-quote-text{ font-size:clamp(19px,5.4vw,25px); line-height:1.36; }
  /* Growth arrow: same scale-in animation as desktop, docked bottom-left of the
     quote card, triggered by .hero-demo on scroll (mirrors .hero-quote:hover). */
  .hero-pair .hero-quote{ display:flex; flex-direction:column; position:relative; }
  .hero-pair .hero-quote-text{ flex:0 0 auto; }
  .hero-pair .hero-arrow{
    display:block !important; position:absolute !important; left:24px; right:auto; bottom:-2px;
    width:52px; height:52px; margin:0; align-self:auto;
    transform:scale(0) !important; transform-origin:left bottom;
    transition:transform .4s cubic-bezier(.16,1,.3,1);
  }
  .hero-pair.hero-demo .hero-arrow{ transform:scale(1) !important; }
  /* No hover on touch: reveal the arrow with its scale-in when the pair scrolls
     into view. Sits inside the quote card's bottom padding, clear of the text. */
  .hero-pair.arrow-in .hero-arrow{ transform:scale(1) !important; }
}

/* Section-2 header + nav: bigger left-aligned title that wraps to two
   lines, with the prev/next arrows pinned to the right (measured fix —
   the stacked/centered version pushed the nav off the right edge). */
@media (max-width:760px){
  #homeConvWrapper #heroRailArea{ position:relative; }
  #homeConvWrapper .hero-nav.nav-overlay{
    position:absolute !important; top:calc((100vw - 40px) * 0.75 - 64px) !important; right:18px; bottom:auto !important; left:auto !important;
    transform:none !important; z-index:6; margin:0 !important; width:auto !important;
    display:flex !important; gap:10px; padding:7px 9px; border-radius:999px;
    background:rgba(20,32,22,.42); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px);
  }
  #homeConvWrapper .hero-nav.nav-overlay .conv-arrow-circle{ width:36px !important; height:36px !important; background:var(--paper) !important; }
  #homeConvWrapper .conv-subrow.hero-subrow{
    flex-direction:row !important; align-items:flex-end !important; justify-content:space-between !important;
    gap:16px !important; margin-bottom:14px !important; position:relative !important;
    width:100% !important; max-width:none !important; align-self:stretch !important;
  }
  #homeConvWrapper .hero-section-header{
    text-align:left !important; flex:1 1 0 !important; min-width:0; max-width:none;
    font-size:clamp(27px,7.6vw,36px) !important; line-height:1.14 !important;
  }
  #homeConvWrapper .hero-nav{
    position:absolute !important; right:0 !important; bottom:0 !important; top:auto !important; left:auto !important; transform:none !important;
    flex:0 0 auto; display:flex; gap:8px; justify-content:flex-end; align-items:flex-end; margin:0 !important; padding:0 !important;
  }
  #homeConvWrapper .hero-nav .conv-arrow-circle{ width:34px !important; height:34px !important; }
  #homeConvWrapper .hero-nav .conv-arrow-circle svg{ width:15px !important; height:15px !important; }
}

/* Section 3 conviction statement — larger heading on mobile (≈45% up),
   allowed to wrap onto more lines. */
@media (max-width:760px){
  #homeConvStatement .conviction-heading{ font-size:clamp(46px,13.5vw,66px) !important; line-height:1.12 !important; }
  #peQuoteHeading.conviction-heading{ font-size:clamp(46px,13.5vw,66px) !important; line-height:1.12 !important; }
  #aifWhy .aif-why-heading{ font-size:clamp(46px,13.5vw,66px) !important; line-height:1.12 !important; }
  #homeConvStatement .cwr-br-m{ display:block; }
}

/* ===== 96-bedrock-mobile.css ===== */
/* ===== 96-bedrock-mobile.css ===== */
/* ============================================================
   BEDROCK ("the bedrock of our journey") — MOBILE LAYOUT
   Loads LAST. Desktop ≥901 untouched.
   Order on mobile: title → IMAGE → pills → description → arrows,
   so the founder image leads and everything fits one view.
   ============================================================ */

@media (max-width:900px){
  #bedrockSection .bk-viewport{ padding:44px 20px 52px !important; min-height:0 !important; }
}

@media (max-width:760px){
  #bedrockSection .bk-split-body{ display:flex; flex-direction:column; gap:18px; }

  /* Flatten the pills column so title/pills/desc/arrows become direct
     flex children and can be ordered around the image card. */
  #bedrockSection .bk-pills-col{ display:contents; }
  #bedrockSection .bedrock-title{ order:0; margin:0 0 2px; font-size:clamp(26px,7vw,34px); line-height:1.12; }
  #bedrockSection .bk-image-col{ order:1; width:100%; }
  #bedrockSection #bkPills{ order:2; }
  #bedrockSection .bk-active-desc{ order:3; font-size:15px; line-height:1.5; margin:0; }
  #bedrockSection .bk-image-arrows{ order:4; }

  /* Founder image: large, full-width within the 20px side gutters. */
  #bedrockSection .bk-image-stage{ width:100%; min-height:clamp(260px,52vw,340px) !important; }
  #bedrockSection .bk-image-slide, #bedrockSection .bk-image-slide .aif-works-parallax{ width:100%; height:100%; }
  /* Keep the parallax MOTION but oversize the layer so its travel never
     exposes the card's cream background: 160% tall, centred with 30%
     overscan each side (JS translate maxes at ~16% of the layer height). */
  #bedrockSection .bk-image-slide .aif-works-parallax{ height:160% !important; top:-30% !important; left:0; }

  /* Pills: real side-by-side rows, shorter — override the JS-pinned
     inline flex (read as height in the old column layout). */
  #bkPills{ display:flex; flex-direction:column; gap:8px; }
  #bkPills .bk-pill-row{ flex-direction:row !important; gap:10px; align-items:stretch; }
  /* No !important on flex: the expand/collapse animation pins flex-basis inline,
     and an !important rule here beat it — which is why the mobile pills only
     changed colour instead of animating. */
  #bkPills .bk-pill-label{ flex:0 0 auto; width:auto !important; padding:9px 16px; }
  #bkPills .bk-pill-stat{ flex:1 1 auto; width:auto !important; padding:9px 16px; justify-content:flex-end; }
  #bkPills .bk-pill-title{ font-size:14px; white-space:normal; }
  #bkPills .bk-pill-stat-text{ font-size:14px; }
}

/* ===== 97-ways-mobile.css ===== */
/* ===== 97-ways-mobile.css ===== */
/* ============================================================
   WAYS TO INVEST (:is(#home-ways,#aif-ways)) — MOBILE LAYOUT
   Loads LAST. Desktop ≥901 untouched.
     · title scaled up to match the section-2 header;
     · category buttons compact AND spaced apart;
     · every tab shows ONE full-width card (same scale as the PE
       card) with prev/next arrows in ONE consistent style (the
       bare gold chevrons used by the equity carousel);
     · groups flow naturally (not absolute-overlapped) so card
       content is never cropped; section bottom extended.
   ============================================================ */

@media (max-width:760px){
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats).ways-section{ padding-top:24px !important; padding-bottom:56px !important; }
  /* Corner element system kept ON for mobile (JS already handles the
     <620px inset); sits behind content, gold on green. Extra bottom
     padding gives its node + rays room below the last card. */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-guides{ display:block !important; }

  /* Title matches the section-2 "Our Serious Long-term Heroes" scale. */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-title{ font-size:clamp(32px,9vw,42px) !important; line-height:1.12 !important; margin-bottom:18px !important; }

  /* Category buttons — compact, each its own bordered button with space between. */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tabs{ flex-direction:row !important; gap:8px !important; margin-bottom:18px !important; align-items:stretch !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tab{
    flex:1 1 0 !important; flex-direction:column !important; align-items:flex-start !important;
    justify-content:flex-start !important; padding:14px 10px !important; gap:3px !important; min-width:0;
    border:1.5px solid var(--gold) !important; margin:0 !important;
    aspect-ratio:auto !important; height:auto !important; overflow:visible !important;
  }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tab-title{ font-size:clamp(14px,2.9vw,20px) !important; margin-bottom:0 !important; line-height:1.1;
    white-space:normal !important; overflow-wrap:normal; word-break:normal; hyphens:none; max-width:100%; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tab-sub{ display:none !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-burst{ display:none !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-tab-sep{ display:none !important; }

  /* Groups flow naturally (drop the absolute overlap) so nothing is cropped. */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-groups-wrap{ position:static !important; min-height:0 !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group{ position:static !important; inset:auto !important; display:none !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group.active{ display:block !important; }

  /* One full-width card per view; uniform scale; full content (no clamp). */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card{ min-height:360px !important; height:auto !important; padding:24px 22px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-eyebrow{ font-size:10px; margin-bottom:12px; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card .card-title{ font-size:21px !important; margin-bottom:12px; line-height:1.15; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-desc{ font-size:15px !important; line-height:1.6 !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card .btn{ height:40px !important; padding:0 18px !important; font-size:14px !important; margin-top:0; }

  /* Prev/next arrows — ONE consistent style everywhere: the bare gold
     chevron used by the equity carousel (AIF's bordered circles retyped). */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offerings-nav,
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-static-grid-nav{ display:flex !important; align-items:center; justify-content:flex-end; gap:6px; height:44px; margin-bottom:12px; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-static-grid-nav .carousel-arrow{
    width:30px !important; height:44px !important; border:none !important; background:none !important;
    border-radius:0 !important; padding:0 !important;
  }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-static-grid-nav .carousel-arrow:hover{ background:none !important; transform:scale(1.18); }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-static-grid-nav .carousel-arrow svg{ width:24px !important; height:24px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-static-grid-nav .carousel-arrow svg path{ stroke:var(--gold) !important; stroke-width:1.6 !important; fill:none; stroke-linecap:round; stroke-linejoin:round; }
  /* Match the equity chevrons exactly (same thinner weight). */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-arrow svg path{ stroke-width:1.6 !important; }

  /* AIF static grid → single-card TRANSFORM rail (waysRailNav), overflow hidden. */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-static-grid{
    display:flex !important; flex-wrap:nowrap !important; gap:0 !important;
    overflow:hidden !important; scrollbar-width:none;
  }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-static-grid::-webkit-scrollbar{ display:none; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-static-grid .offer-card{ flex:0 0 100% !important; }
  /* AIF group is the overflow-clipping VIEWPORT for its transform rail (the grid
     itself is the moving track — it needs a clipping parent, like EB's viewport). */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"]{ overflow:hidden !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-static-grid{ overflow:visible !important; width:auto !important; gap:16px !important; }

  /* Baskets carousel → EXACT clone of the AIF single-card TRANSFORM rail.
     Arrows in a top-right strip (order 1,2); viewport full-width below (order 3). */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-carousel{ display:flex !important; flex-wrap:wrap !important; align-items:center; justify-content:flex-end; gap:6px; width:100% !important; max-width:100% !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-carousel .ways-arrow{ position:static !important; transform:none !important; order:1; margin:0 !important; width:30px !important; height:44px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-carousel .ways-arrow-right{ order:2; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-carousel .offerings-viewport{
    order:3; flex:0 0 100% !important; width:100% !important; max-width:100% !important; min-width:0 !important;
    overflow:hidden !important; scrollbar-width:none; margin-top:10px;
  }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-carousel .offerings-viewport::-webkit-scrollbar{ display:none; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offerings-track{ display:flex !important; flex-wrap:nowrap !important; gap:16px !important; width:auto !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offerings-track .offer-card{
    flex:0 0 100% !important; width:100% !important; max-width:100% !important; min-width:0 !important;
    box-sizing:border-box !important;
  }

  /* PE single card keeps full width, stacked + compact across the whole phone range. */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="pe"] .offer-static-grid{ overflow:visible; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="pe"] .offer-static-grid .offer-card{ flex:0 0 100% !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-wide-card{ grid-template-columns:1fr !important; gap:22px !important; padding:26px 22px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-wide-left{ padding-top:0 !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-wide-left .offer-desc{ margin-bottom:20px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-wide-left .btn{ margin-top:0 !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-wide-right{ grid-template-columns:1fr 1fr !important; width:100% !important; max-width:none !important; justify-self:stretch !important; box-sizing:border-box; margin:2px 0 0 !important; transform:none !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-stat{ padding:18px 14px !important; min-height:104px; justify-content:center !important; gap:8px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="pe"] .offer-card{ min-height:0 !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-stat-value{ font-size:clamp(24px,6.2vw,32px) !important; white-space:nowrap; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-stat:not(.pe-stat-card) .pe-stat-label{ font-size:11px !important; line-height:1.25; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .pe-wide-left .offer-desc{ font-size:15px !important; line-height:1.62 !important; }

  /* EB basket cards → match the Equity-Baskets PAGE card layout exactly:
     grow to content, larger title, flex-wrap stat metrics with big values. */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="baskets"] .offer-card{ min-height:0 !important; height:auto !important; padding:26px 24px !important; display:flex !important; flex-direction:column; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="baskets"] .basket-stats{ gap:16px 24px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="baskets"] .offer-card .card-title{ font-size:21px !important; line-height:1.15 !important; margin-bottom:12px !important; padding-right:64px; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="baskets"] .offer-card .offer-desc{ font-size:15px !important; line-height:1.55 !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .basket-stats{ display:flex !important; flex-wrap:wrap !important; gap:16px 32px !important; margin-top:auto !important; padding-top:20px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .basket-stats > div{ min-width:0; flex:1 1 calc(50% - 16px); }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .basket-stats .stat-label{ font-size:11px !important; letter-spacing:.08em; margin-bottom:6px; opacity:.8; min-height:0; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .basket-stats .stat-value{ font-size:clamp(20px,5.6vw,26px) !important; white-space:nowrap; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="baskets"] .card-divider{ margin-top:20px !important; }

  /* Auto-trigger the card's hover animation (starburst pop + PE stat brighten)
     when it scrolls into view on mobile — mirrors the EB-page basket cards.
     Driven by the .ways-demo class added in JS; plays once and stays. */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card.ways-demo .conv-burst-dot{ transform:scale(1) !important; transition-delay:0s !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card.ways-demo .conv-burst-lines line:nth-child(1),
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card.ways-demo .conv-burst-lines line:nth-child(2){ transform:scale(1) !important; transition-delay:.14s !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card.ways-demo .conv-burst-lines line:nth-child(3),
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card.ways-demo .conv-burst-lines line:nth-child(4){ transform:scale(1) !important; transition-delay:.3s !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card.stat-card.ways-demo{ border-color:#F0C157 !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card.stat-card.ways-demo .pe-stat-value,
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card.stat-card.ways-demo .stat-label,
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-card.stat-card.ways-demo .stat-value{ color:#F0C157 !important; }
}

/* ===== 98-section-titles-mobile — uniform section headings (section 3 → bottom) =====
   Match the section-2 header size (clamp 32–42px) AND its ~40px top spacing. */
@media (max-width:760px){
  #homeScuttleSection .aif-works-heading,
  #page-home #bedrockSection .bedrock-title,
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-title,
  #page-home > section.web-section .sec-title{
    font-size:clamp(32px,9vw,42px) !important;
    line-height:1.12 !important;
    margin-top:0 !important;
  }
  /* Same distance from the top of the section as section 2's title (40px). */
  #homeConvStatement.web-section,
  #homeScuttleSection.web-section,
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats).ways-section,
  #page-home > section.web-section{ padding-top:56px !important; }
  #bedrockSection .bk-viewport{ padding-top:40px !important; }
}

/* ===== 99-section2-autohover — mobile: the founder-quote cards auto-play their
   hover effect (green fill, gold text + arrow) when scrolled/navigated into view,
   and stay. Driven by the .hero-demo class added in JS; transitions animate the
   first reveal, and revisiting an already-demoed card shows it static. */
/* Founder-pair demo/tap STATE — phones and tablets (tap-driven up to 1024). */
@media (max-width:1024px){
  .hero-pair .video-icon{ transition:none !important; }
  .hero-pair.hero-demo .video-icon{ background:var(--terra) !important; border-bottom-color:var(--terra) !important; }
  .hero-pair.hero-demo .conv-burst-dot{ transform:scale(1); }
  .hero-pair.hero-demo .conv-burst-lines line{ transform:scale(1); }
  .hero-pair.hero-demo .hero-quote{ background:var(--greenDeep); }
  .hero-pair.hero-demo .hero-quote-text{ color:var(--gold); }
  .hero-pair.hero-demo .hero-arrow{ transform:scale(1); }
  .hero-pair.hero-demo .hero-arrow line{ stroke:var(--gold); }
  .hero-pair.hero-demo .hero-arrow circle{ fill:var(--gold); }
}
/* CHOREOGRAPHY (quote card follows the photo card half a second later) is
   phone-only: above 760 the pair is still a side-by-side row with real pointer
   hover, and these delays would make that hover snap after 500ms. */
@media (max-width:760px){
  .hero-pair .hero-quote{ transition:background 0s linear .5s; }
  .hero-pair .hero-quote-text{ transition:color 0s linear .5s; }
  .hero-pair .hero-arrow line{ transition:stroke 0s linear .5s; }
  .hero-pair .hero-arrow circle{ transition:fill 0s linear .5s; }
}

/* Section 3 — founder avatar circle: image scaled up to show the face more
   (card/circle box size unchanged; only the image inside is scaled/positioned). */
#homeConvStatement{ position:relative; overflow:hidden; }
#homeConvStatement .conv-statement-inner{ position:relative; z-index:1; }
#homeConvStatement .conv-founder-avatar{ border-radius:50% !important; overflow:hidden; }
#homeConvStatement .conv-founder-avatar img{ object-fit:cover !important; object-position:50% 18% !important; transform:scale(1.5) !important; transform-origin:50% 22% !important; width:100% !important; height:100% !important; }

/* ══ HEDGEHOGS FUND HERO — fits one screen on mobile/tablet ══
   Height follows the device (100dvh) and every measure inside is vh-scaled, so
   status + title + lead + 2×2 specs + CTA all land in a single view. */
@media(max-width:1024px){
  #hhFundHero.web-section{
    min-height:100dvh !important; box-sizing:border-box;
    display:flex; align-items:center;
    padding-top:calc(76px + 3vh) !important; padding-bottom:4vh !important;
  }
  #hhFundHero > .section-inner{ width:100%; }
  #hhFundHero .aif-fund-feature-head{ margin-bottom:clamp(10px,1.8vh,22px) !important; }
  #hhFundHero .aif-fund-feature-status{ font-size:clamp(13px,2vh,19px) !important; }
  #hhFundHero .aif-fund-feature-title{
    font-size:clamp(26px,5.2vh,52px) !important; line-height:1.06 !important;
    margin-bottom:clamp(8px,1.6vh,18px) !important;
  }
  #hhFundHero .aif-fund-feature-lead{
    font-size:clamp(13px,2.1vh,19px) !important; line-height:1.45 !important;
    margin-bottom:clamp(12px,2.4vh,26px) !important;
  }
  #hhFundHero .aif-fund-feature-grid{ margin-bottom:clamp(12px,2.4vh,26px) !important; }
  #hhFundHero .aif-fund-feature-spec{ padding:clamp(9px,1.6vh,18px) clamp(10px,2vw,16px) clamp(10px,1.8vh,20px) !important; }
  #hhFundHero .aif-spec-label{ font-size:clamp(9px,1.2vh,11px) !important; margin-bottom:clamp(3px,.7vh,8px) !important; }
  #hhFundHero .aif-spec-value{ font-size:clamp(12.5px,2vh,18px) !important; line-height:1.2 !important; }
  #hhFundHero .aif-fund-feature-cta .btn{ padding-top:clamp(9px,1.5vh,14px) !important; padding-bottom:clamp(9px,1.5vh,14px) !important; font-size:clamp(13px,1.9vh,17px) !important; }
}
/* Past Events card titles use Inter, not the display face. */
#eventsGrid .m-title{ font-family:'Inter',sans-serif !important; }
/* Connect page: content starts level with the About page title. */
#page-contact > .web-section:first-child{ padding-top:0 !important; }
#page-contact > .web-section:first-child > .section-inner{
  padding-top:calc(var(--niv-inset) + var(--niv-fab-h) + 56px) !important;
}
/* About hero: burst sits to the right of the title, on the photo's right edge. */
#page-about .about-hero-head{
  flex-direction:row !important; align-items:flex-end !important;
  justify-content:space-between !important; gap:32px !important;
  margin-bottom:26px !important;
}
#page-about .about-hero-title{ flex:1 1 auto; min-width:0; }
#page-about .about-hero-burst-wrap{ align-self:flex-end !important; margin-right:0 !important; }
#page-about .about-hero-burst{ width:clamp(84px,8.6vw,144px); height:clamp(84px,8.6vw,144px); }
@media(max-width:760px){
  #page-about .about-hero-head{ gap:18px !important; margin-bottom:20px !important; }
}
@media(max-width:1024px){
  /* Desktop gives non-home heroes the SOFT gold via a .dnav rule; mobile/tablet
     have no .dnav, so they kept the vibrant gold. Match desktop here. */
  body.niv-not-home .niv-logo-fix .niv-logo-gold{ background-color:var(--gold) !important; }
  /* Burst hugs the photo's right edge (the hero's own inset) on mobile/tablet. */
  #page-about .about-hero-head{ gap:16px !important; margin-bottom:20px !important; }
  /* An older mobile rule pinned the wrapper to 60px while the SVG is larger, so
     the burst spilled past the photo's right edge and below the title. */
  #page-about .about-hero-burst-wrap{
    margin-right:0 !important; align-self:flex-end !important;
    width:auto !important; height:auto !important; line-height:0;
  }
  #page-about .about-hero-burst{ width:clamp(72px,15vw,132px); height:clamp(72px,15vw,132px); }
}
@media(max-width:760px){
  #page-about .about-hero-head{ gap:12px !important; margin-bottom:16px !important; }
}
@media(max-width:760px){
  /* Founder-card starburst is oversized on phones. */
  #page-about .tm-burst{ width:72px !important; height:72px !important; top:12px !important; right:12px !important; }
}
/* Community hero: gold is pinned by page + scroll state, with the fade disabled,
   so the observers' transient class churn during a page switch cannot blink.
   Only while the green hero (#commHero) is on the page: with it hidden
   the page opens on cream and the nav keeps its normal green. Bring the hero
   back and the gold returns by itself. */
html.pg-community.nav-at-top:has(#commHero) .dnav .dnav-link{ color:var(--gold) !important; }
html.pg-community.nav-at-top:has(#commHero) .dnav .dnav-portal{ color:var(--gold) !important; border-color:var(--gold) !important; }
html.pg-community.nav-at-top:has(#commHero) .niv-logo-fix .niv-logo-gold{ opacity:1 !important; transition:none !important; }
html.pg-community.nav-at-top:has(#commHero) .niv-logo-fix .niv-logo-green{ opacity:0 !important; transition:none !important; }

/* ═══════════════════════════════════════════════════════════════════════════
   100-native-rails — EVERY card rail now scrolls exactly like the News &
   Research article cards: the rail element owns overflow-x, the browser owns
   the gesture + momentum + inertia. No scroll-snap (snap fights fast flicks),
   no transform track, no JS gesture handlers. All breakpoints.
   ═══════════════════════════════════════════════════════════════════════════ */
#heroRailArea, #aifRailArea, #hhLookRailArea, #eqbLookRailArea,
#peLookRailArea, #stratLookRailArea, #dvLookRailArea,
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-static-grid,
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-carousel .offerings-viewport{
  overflow-x:auto !important; overflow-y:hidden !important;
  -webkit-overflow-scrolling:touch;
  scroll-behavior:smooth;
  scroll-snap-type:none !important;
  overscroll-behavior-x:contain;
  scrollbar-width:none; -ms-overflow-style:none;
}
#heroRailArea::-webkit-scrollbar, #aifRailArea::-webkit-scrollbar,
#hhLookRailArea::-webkit-scrollbar, #eqbLookRailArea::-webkit-scrollbar,
#peLookRailArea::-webkit-scrollbar, #stratLookRailArea::-webkit-scrollbar,
#dvLookRailArea::-webkit-scrollbar,
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-static-grid::-webkit-scrollbar,
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-carousel .offerings-viewport::-webkit-scrollbar{ display:none; }
/* Tracks keep their own layout — we only stop them being transform-animated. */
#heroRailArea .hero-rail-track, #aifRailArea .hero-rail-track,
#hhLookRailArea .hero-rail-track, #eqbLookRailArea .hero-rail-track,
#peLookRailArea .hero-rail-track, #stratLookRailArea .hero-rail-track,
#dvLookRailArea .hero-rail-track,
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offerings-track{
  transform:none !important; transition:none !important; will-change:auto !important;
}
#heroRailArea .hero-pair, #aifRailArea .hero-pair, #hhLookRailArea .hero-pair,
#eqbLookRailArea .hero-pair, #peLookRailArea .hero-pair,
#stratLookRailArea .hero-pair, #dvLookRailArea .hero-pair,
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-static-grid > .offer-card,
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offerings-track > .offer-card{ scroll-snap-align:none !important; }

/* Below 900 the AIF group was the clipping viewport for the old transform rail
   and its grid was overflow:visible — with the rail gone that hid card 2 with no
   way to reach it. Move the scrolling to the grid itself; card sizing untouched. */
@media(max-width:900px){
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"]{ overflow:visible !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-static-grid{
    overflow-x:auto !important; overflow-y:hidden !important; width:100% !important;
  }
}

/* ═══ Ways to Invest: arrows removed — native scroll is the only nav, with the
   next card peeking ~10% at the right edge (same affordance as the News &
   Research article cards). Card sizing/padding otherwise untouched. ═══ */
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offerings-nav,
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-static-grid-nav,
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-arrow{ display:none !important; }
@media(max-width:900px){
  /* the arrow strip used to reserve this space above the cards */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-carousel .offerings-viewport{ margin-top:0 !important; }
  /* Card 1 fully in view with ~10% of card 2 showing: card + gap + 0.1·card
     = 100%, so the basis is (100% - gap) / 1.1. Both cards share one basis and
     one padding, so they scale identically — the rail stretches them to equal
     height, and the chart lives inside that. */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-static-grid{
    gap:14px !important; padding-right:0 !important;
  }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-static-grid > .offer-card{
    flex:0 0 calc((100% - 14px) / 1.1) !important;
    min-width:0 !important; padding:24px 20px !important; box-sizing:border-box;
  }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-card .offer-eyebrow{ margin-bottom:10px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-card .card-title{ margin-bottom:14px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-desc{ font-size:14.5px !important; line-height:1.6 !important; }
  .hh-returns{ gap:8px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .stat-row{ margin-top:auto !important; padding-top:14px; }
  /* The two buttons share the row and shrink to fit rather than wrapping onto
     separate lines: nowrap plus flex:1 1 0 and min-width:0, so they stay side
     by side at any card width instead of stacking on a narrow phone. */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .stat-row{
    flex-wrap:nowrap !important; gap:8px !important;
  }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .stat-row .btn{
    flex:1 1 0 !important; min-width:0 !important; width:auto !important;
    padding:0 10px !important; font-size:13px !important; height:40px !important;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offerings-track > .offer-card{
    flex:0 0 88% !important; width:88% !important; max-width:88% !important;
  }
}

/* PE hero on phones — a 1672×941 landscape image covering a portrait box can
   only ever show a narrow vertical slice of its width (the full HEIGHT is always
   visible under `cover`, so background-position-y does nothing here). Two levers:
   a shorter hero widens the slice (~25% at 82vh → ~32% at 56vh), and the anchor
   decides what lands in it — 74% centres the seated man (he spans 68–84%) with
   the tree trunk beside him, instead of pushing him to the edge. */
/* AIF hero on phones — shifted left off the shared 66% anchor. */
@media(max-width:760px){
  #aifHero .aif-hero-bg{ background-position:52% center !important; }
  #stratHero .aif-hero-bg{ background-position:70% center !important; }
}

/* PE hero on phones — the photo is fitted VERTICALLY, sized against the hero
   rather than the 144%-tall parallax box (which is why `cover` cropped so hard:
   753px instead of the hero's ~520px). auto 85% leaves ~120px of vertical slack
   over the hero so the parallax translate can never open a gap at the top or
   bottom, while still showing ~34% of the image width instead of ~29%. Anchored
   at 67% across to hold the coffee table and the seated man. */
@media(max-width:760px){
  #peHero{ min-height:62vh !important; }
  #peHero .aif-hero-bg{
    background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e731833183567e1285000_pe-hero-arch.webp'),
                     linear-gradient(180deg,#5c170b 0%,#6d2210 40%,#7f3019 72%,#873621 100%) !important;
    background-size:auto 85%, 100% 100% !important;
    background-position:74% 62%, center center !important;
    background-repeat:no-repeat, no-repeat !important;
  }
  #peHero .aif-hero-bg::after{
    background:linear-gradient(180deg, rgba(60,22,10,.12) 0%, rgba(60,22,10,.22) 42%, rgba(60,22,10,.72) 100%) !important;
  }
}

/* PE "We offer more than capital" — hover is OFF entirely, at every width. The
   centre auto-trigger (.auto-on) is the only thing that colours these cards, so
   a tap can't latch a sticky :hover either. */
#page-private-equity .pe-offer-card:hover{
  background:var(--paper) !important; transform:none !important; box-shadow:none !important;
}
#page-private-equity .pe-offer-card:hover .pe-offer-num{ color:var(--greenDeep) !important; opacity:.7 !important; }
#page-private-equity .pe-offer-card:hover .pe-offer-title{ color:var(--greenDeep) !important; }
#page-private-equity .pe-offer-card:hover .pe-offer-body{ color:var(--ink) !important; opacity:.78 !important; }
/* ...but .auto-on must still win over the hover reset above. */
#page-private-equity .pe-offer-card.auto-on{ background:var(--greenDeep) !important; }
#page-private-equity .pe-offer-card.auto-on .pe-offer-num{ color:var(--gold) !important; opacity:1 !important; }
#page-private-equity .pe-offer-card.auto-on .pe-offer-title{ color:var(--gold) !important; }
#page-private-equity .pe-offer-card.auto-on .pe-offer-body{ color:var(--paper) !important; opacity:.9 !important; }

/* Crossing the Chasm — match the About "Our Journey" scroll-to-travel ratio.
   Journey moves 208vh of list (5 steps × 52vh) across a 240vh runway = 0.87,
   which is why it feels 1:1 with the finger. The chasm moved only 99vh
   (4 steps × 33vh) across a 260vh runway = 0.38, so every unit of movement cost
   ~3 units of scroll. 210vh total (110vh runway) brings it to ~0.90. */
#cxScroll{ height:210vh !important; }

/* Section 2 "Serious Long-term Heroes" — founder-card starburst at half size,
   mobile/tablet only; desktop keeps the original 86px. */
@media(max-width:1024px){
  #heroRailArea .testi-card .conv-burst{ width:60px !important; height:60px !important; }
}

/* ═══ Mobile/tablet nav: the logo and menu button ARE part of the bar, so they
   must travel with it — identical distance, easing and duration, and the top
   offset has to animate instead of snapping. Previously the sheet moved 76px
   (translateY(-100%)) while the logo/island moved 92px, and `top` wasn't in
   their transition list at all, so the three pieces drifted apart. ═══ */
@media(max-width:1024px){
  .mnav-sheet, .niv-logo-fix, .niv-island{
    transition:transform .45s cubic-bezier(.22,.8,.28,1),
               top .45s cubic-bezier(.22,.8,.28,1),
               opacity .3s ease !important;
  }
  html.nvnav-hidden .mnav-sheet,
  html.nvnav-hidden .niv-logo-fix,
  html.nvnav-hidden .niv-island{ transform:translateY(-96px) !important; }
  html.nvnav-hidden .niv-logo-fix,
  html.nvnav-hidden .niv-island{ opacity:1 !important; }
  /* the logo already had this reset; the menu button didn't */
  html.nvnav-solid .niv-logo-fix,
  html.nvnav-solid .niv-island{ transform:none !important; }
}

/* Chasm dot: the scale cue used to jump between 1 / 1.25 / 1.3 on a rounded
   index — ease it so the dot glides instead of popping. */
#cxDot{ transition:transform .35s cubic-bezier(.16,1,.3,1); }
@media (prefers-reduced-motion:reduce){ #cxDot{ transition:none; } }

/* ═══ Logo colour: the gold mark is for the dark/terracotta HEROES only. The
   deep-green content sections are mapped to 'green' in niv-app.js, so no
   blanket CSS override is needed here — the hero swap works as designed. ═══ */

/* ═══ HOME SECTION 2 — "A decade of backing bold companies with pooled capital"
   Ported from Niveshaay Backers.dc.html. Namespaced under :is(#homeBackers,#aifBackers)/.bkr-*
   because the source shares .hero-pair/.testi-card names with section 4. ═══ */
:is(#homeBackers,#aifBackers){ background:#F3EAD1; padding:56px 0 22px; overflow-x:clip; }
:is(#homeBackers,#aifBackers) .bkr-inner{ padding:0 var(--niv-inset) 0 80px; }
:is(#homeBackers,#aifBackers) .bkr-title{ font-family:'OV Sage','Jost',sans-serif; font-weight:400; color:var(--ink);
  font-size:clamp(30px,3.4vw,52px); line-height:1.15; text-align:center; margin:0 auto 36px; }
/* Highlight marker: sweeps in left-to-right, the two phrases overlapping, holds,
   then retracts. Painted as a background-size transition so it is compositor
   friendly and wraps correctly if the line breaks. */
:is(#homeBackers,#aifBackers) .bkr-hl{
  background-image:linear-gradient(var(--gold),var(--gold));
  background-repeat:no-repeat; background-position:0 0; background-size:0% 100%;
  box-decoration-break:clone; -webkit-box-decoration-break:clone;
  transition:background-size .62s cubic-bezier(.33,0,.2,1);
  transition-delay:var(--hl-d,0s);
}
:is(#homeBackers,#aifBackers) .bkr-hl.on{ background-size:100% 100%; }
@media(prefers-reduced-motion:reduce){
  :is(#homeBackers,#aifBackers) .bkr-hl{ transition:none; }
}
:is(#homeBackers,#aifBackers) .bkr-marquee{
  overflow-x:auto; overflow-y:hidden; padding:4px 0;
  margin:0 -64px clamp(30px,4vh,52px) -80px; width:calc(100% + 144px);
  touch-action:pan-x pan-y; overscroll-behavior-x:contain; -webkit-overflow-scrolling:touch;
  scrollbar-width:none; -ms-overflow-style:none; }
:is(#homeBackers,#aifBackers) .bkr-marquee::-webkit-scrollbar{ display:none; }
:is(#homeBackers,#aifBackers) .bkr-track{ display:flex; width:max-content; align-items:stretch; }
/* Boxes holding a real logo: the artwork is contained with generous padding so
   wordmarks of very different proportions read at the same optical weight. */
:is(#homeBackers,#aifBackers) .bkr-logo.has-img{ padding:18px 21px; }
:is(#homeBackers,#aifBackers) .bkr-logo-img{ width:100%; height:100%; object-fit:contain; object-position:center;
  display:block; }
:is(#homeBackers,#aifBackers) .bkr-logo{
  flex:0 0 auto; height:clamp(134px,12.4vw,171px); aspect-ratio:16/9; margin-right:22px;
  border:1px solid rgba(69,98,50,.22); background:#FCF7EA;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:10px; padding:14px; box-sizing:border-box;
  transition:border-color .2s ease, background .2s ease; }
:is(#homeBackers,#aifBackers) .bkr-logo:hover{ border-color:var(--greenDeep); background:var(--paper); }
:is(#homeBackers,#aifBackers) .bkr-mark{ font-family:var(--f-serif); font-size:clamp(28px,2.4vw,38px); color:var(--greenDeep); line-height:1; }
:is(#homeBackers,#aifBackers) .bkr-logo-name{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(13px,1.05vw,15.5px);
  font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:#5C5340; text-align:center; line-height:1.2; }
:is(#homeBackers,#aifBackers) .bkr-rail{
  overflow-x:auto; overflow-y:hidden; padding-bottom:44px;
  margin-left:-80px; margin-right:-64px; width:calc(100% + 144px);
  scroll-padding-inline:80px 64px; scroll-snap-type:x proximity;
  -webkit-overflow-scrolling:touch; overscroll-behavior-x:contain;
  scrollbar-width:none; -ms-overflow-style:none; }
:is(#homeBackers,#aifBackers) .bkr-rail::-webkit-scrollbar{ display:none; }
/* 18px is what the card shadow needs; the section supplies the rest */
:is(#homeBackers,#aifBackers) .bkr-rail{ padding-bottom:18px; }
:is(#homeBackers,#aifBackers) .bkr-rail-track{ display:flex; gap:28px; width:max-content; padding-left:80px; padding-right:64px; }
:is(#homeBackers,#aifBackers) .bkr-card{
  flex:0 0 min(54vw,326px); scroll-snap-align:start;
  display:flex; flex-direction:column; height:434px; box-sizing:border-box;
  background:var(--paper); overflow:hidden; box-shadow:0 16px 42px -18px rgba(44,46,43,.20); }
:is(#homeBackers,#aifBackers) .bkr-photo-box{ position:relative; width:100%; flex:1 1 auto; overflow:hidden;
  background:var(--skel); transition:background .2s ease; }
:is(#homeBackers,#aifBackers) .bkr-card:hover .bkr-photo-box{ background:var(--terra); }
:is(#homeBackers,#aifBackers) .bkr-photo{ position:absolute; inset:0; z-index:1; }
:is(#homeBackers,#aifBackers) .bkr-burst{ position:absolute; top:16px; right:16px; width:68px; height:68px; overflow:visible; pointer-events:none; z-index:4; }
:is(#homeBackers,#aifBackers) .bkr-card:hover .conv-burst-dot,
:is(#homeBackers,#aifBackers) .bkr-card:hover .conv-burst-lines line{ transform:scale(1); }
:is(#homeBackers,#aifBackers) .bkr-meta{ position:relative; z-index:1; flex:0 0 auto; height:92px; box-sizing:border-box;
  padding:14px 18px 16px; display:flex; flex-direction:column; justify-content:flex-start; }
:is(#homeBackers,#aifBackers) .bkr-name{ font-size:19px; font-weight:600; line-height:1.2; letter-spacing:-.01em;
  height:calc(19px * 1.2); color:var(--ink);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
:is(#homeBackers,#aifBackers) .bkr-role{ font-family:'Jost',sans-serif; font-size:13px; line-height:1.38; color:#5C5340; margin-top:6px;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
  width:fit-content; max-width:100%;
  background:linear-gradient(var(--gold),var(--gold)) no-repeat; background-position:0 0; background-size:0% 100%;
  box-decoration-break:clone; -webkit-box-decoration-break:clone;
  transition:background-size .5s cubic-bezier(.4,0,.2,1); }
:is(#homeBackers,#aifBackers) .bkr-card:hover .bkr-role{ background-size:100% 100%; color:var(--ink); }
/* Mobile: the card nearest the viewport centre plays the hover state on scroll */
@media(max-width:760px){
  :is(#homeBackers,#aifBackers) .bkr-card.auto-on .bkr-photo-box{ background:var(--terra); }
  :is(#homeBackers,#aifBackers) .bkr-card.auto-on .conv-burst-dot,
  :is(#homeBackers,#aifBackers) .bkr-card.auto-on .conv-burst-lines line{ transform:scale(1); }
  :is(#homeBackers,#aifBackers) .bkr-card.auto-on .bkr-role{ background-size:100% 100%; color:var(--ink); }
}
@media(max-width:760px){
  :is(#homeBackers,#aifBackers){ padding:40px 0 14px; }
  :is(#homeBackers,#aifBackers) .bkr-inner{ padding:0 18px; }
  :is(#homeBackers,#aifBackers) .bkr-marquee,
  :is(#homeBackers,#aifBackers) .bkr-rail{ margin-left:-18px; margin-right:-18px; width:calc(100% + 36px); scroll-padding-inline:18px; }
  :is(#homeBackers,#aifBackers) .bkr-rail-track{ padding-left:18px; padding-right:18px; }
  :is(#homeBackers,#aifBackers) .bkr-title{ font-size:clamp(26px,7.4vw,34px); text-align:left; }
  /* The single-line name was sized for desktop only. On phones the card kept
     shrinking (54vw) while the name stayed 19px, so long names ellipsized and
     the fixed-height meta clipped a second role line. Widen the card, let the
     name scale, and let the meta grow instead of clipping. */
  :is(#homeBackers,#aifBackers) .bkr-card{ flex:0 0 min(78vw,326px); height:auto; }
  :is(#homeBackers,#aifBackers) .bkr-name{ font-size:clamp(15px,4.4vw,19px); height:auto; }
  :is(#homeBackers,#aifBackers) .bkr-meta{ height:auto; min-height:92px; }
  :is(#homeBackers,#aifBackers) .bkr-photo-box{ min-height:296px; }
}

/* ══ BAMBOO SHOOT MENTAL MODEL ═════════════════════════════════════════════
   Research spend runs in research blue, visible outcomes in green. Chart
   internals use Inter, matching the convention set by the fund performance
   charts; editorial type stays on OV Sage. A lighter cream than the scuttlebutt
   section above so the two read as separate fields without a new hue. */
.bam-section{ background:#FCF7EA; }
.bam-section.web-section{ border-bottom:none; }
.bam-section .section-inner{ max-width:none !important; margin:0 !important; }
.bam-section.web-section{ padding-left:80px; padding-right:80px; }
@media(max-width:1440px) and (min-width:861px){ .bam-section.web-section{ padding-left:48px; padding-right:48px; } }
@media(max-width:860px){ .bam-section.web-section{ padding-left:28px; padding-right:28px; } }

/* Sits with the title now rather than floating alone at the section's top-left,
   which left a wide band of dead cream above the content. */
.bam-eyebrow{ margin-top:18px; margin-bottom:0; }
.bam-eb-txt{ font-family:'OV Sage','Jost',sans-serif; font-size:12px; font-weight:600;
  letter-spacing:.16em; text-transform:uppercase; color:var(--ink); }

/* The section was running much taller than its content: the chart is the only
   tall element, so it takes more of the width and the whole block is capped and
   vertically tightened rather than left to float in a deep cream field. */
.bam-section.web-section{ padding-top:clamp(56px,6vw,96px); padding-bottom:clamp(56px,6vw,96px); }
.bam-layout{ display:flex; gap:clamp(32px,4vw,64px); align-items:center; }
.bam-left{ flex:0 0 40%; max-width:560px; }
.bam-right{ flex:1; min-width:0; }

.bam-title strong{ font-weight:700; }
/* OV Sage renders numerals at a smaller optical size than its letters, so any
   number set inline with words is scaled up to match the words' cap-height. */
.ovs-num{ font-size:1.24em; line-height:0; }
/* Desktop/tablet (901px up, phones ≤900px untouched): wider, equal-width cards
   with a tighter gap, more breathing room below the graph, and the returns block
   spaced down. The chart SVG is never touched, so the draw animation is safe. */
@media(min-width:901px){
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-static-grid{ gap:72px !important; padding-right:0 !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-static-grid .offer-card{ flex:1 1 0 !important; width:auto !important; min-width:0 !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-card{ padding:34px 34px 36px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-ret-cap2{ margin-top:42px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .stat-row{ margin-top:24px !important; padding-top:0 !important; }
}
.bam-title{ font-family:'OV Sage','Jost',sans-serif; font-weight:400; color:var(--ink);
  font-size:clamp(26px,3.2vw,46px); line-height:1.12; letter-spacing:-.008em; margin:0; }

.bam-legend{ display:flex; flex-wrap:wrap; gap:12px 30px; margin-top:clamp(26px,3vw,38px);
  padding-top:clamp(22px,2.4vw,30px); border-top:1px solid rgba(69,98,50,.24); }
.bam-leg{ display:flex; align-items:center; gap:13px; }
.bam-leg-dot{ width:13px; height:13px; border-radius:50%; flex:0 0 auto; }
.bam-leg-dot.is-blue{ background:var(--blue); }
.bam-leg-dot.is-green{ background:var(--greenDeep); }
.bam-leg-t{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(15px,1.15vw,17px); font-weight:600;
  color:var(--ink); line-height:1.25; }

.bam-chart{ width:100%; height:auto; display:block; overflow:visible; }
.bam-axis{ stroke:var(--ink); stroke-width:2; }
.bam-line{ fill:none; stroke-width:3.4; stroke-linecap:round; stroke-linejoin:round;
  stroke-dasharray:1; stroke-dashoffset:1; }
.bam-res{ stroke:var(--blue); }
.bam-out{ stroke:var(--greenDeep); }
/* The end of each line is marked with a dot rather than an arrowhead: it rides
   the same draw progress, so nothing appears detached mid-animation. */
.bam-end{ opacity:0; transform:scale(0); transform-origin:center;
  transform-box:fill-box; transition:opacity .3s ease, transform .45s cubic-bezier(.3,1.4,.5,1); }
.bam-end.on{ opacity:1; transform:scale(1); }
.bam-end-res{ fill:var(--blue); }
.bam-end-out{ fill:var(--greenDeep); }
/* Revealed by a clip rect that tracks the line's own drawn length, not by a
   fade — the fill edge stays locked to the tip of the stroke. */
.bam-area-res, .bam-area-out{ opacity:1; }

.bam-years{ display:grid; grid-template-columns:repeat(5,1fr); margin-top:18px; }
.bam-yr{ font-family:'Inter',sans-serif; font-size:clamp(13px,1.05vw,15.5px); color:var(--ink);
  text-align:center; opacity:0; transition:opacity .45s ease; }
.bam-yr.on{ opacity:1; }

@media (prefers-reduced-motion: reduce){
  .bam-line{ stroke-dashoffset:0 !important; }
  .bam-end, .bam-yr{ opacity:1 !important; transform:none !important; }
  .bam-area-res, .bam-area-out{ clip-path:none !important; }
}

@media(max-width:860px){
  .bam-layout{ flex-direction:column; gap:0; align-items:stretch; }
  .bam-left{ display:contents; }
  .bam-title{ order:1; font-size:clamp(24px,6.4vw,34px); }
  .bam-eyebrow{ order:1; margin-top:24px; margin-bottom:0; }
  .bam-legend{ order:2; margin-top:30px; }
  .bam-right{ order:3; width:100%; margin-top:32px; }
  .bam-yr{ font-size:clamp(12px,3.3vw,14px); }
}

/* ══ AIF / PE pair: one screenful on desktop ═══════════════════════════════
   The cards ran the full content width, and because the chart holds a fixed
   aspect ratio a wider card means a taller chart — at 1920 each chart was
   ~350px, which pushed the section well past the fold. Capping the pair's width
   is what brings the whole thing into a single view; it also stops the cards
   reading as over-wide. Desktop only, so tablet and mobile are untouched. */
@media(min-width:1025px){
  /* Every size that drives the section's height is min()'d against a vh figure
     as well as a vw one, so the block shrinks on a short laptop screen instead
     of only on a narrow one. The fund title was the biggest single cost: at
     44px it wrapped to three lines and ate 145px on its own. */
  /* Vertical clearance from the same guide frame: its lines sit 22px in from
     the section's top and bottom too, so the cards need more than that in
     padding or they touch the lines above and below exactly as they did at the
     sides. */
  /* Section fills more of the screen on desktop — bigger elements, ~80vh of
     comfortable height rather than compressed to fit exactly. */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats).web-section{
    padding-top:min(88px,9vh) !important; padding-bottom:min(96px,9.8vh) !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .ways-title{ margin-bottom:0 !important; }
  /* Height is trimmed from the card's own spacing and type, not by scaling or
     squashing: zoom broke the corner guides' geometry, and a non-uniform chart
     aspect distorted the plot and its dots. */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .card-title{
    font-size:min(2.1vw,3.6vh) !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-card{
    padding:min(24px,2.6vh) 26px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-eyebrow{
    margin-top:min(8px,.9vh); margin-bottom:min(10px,1.1vh) !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-title-row{
    margin-bottom:min(14px,1.6vh) !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-returns{ gap:min(9px,1vh) !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-ret-cap2{ margin-top:min(42px,4.6vh) !important; }
  /* Height comes out of the CHART, not the card's width. The wrap is flatter
     than the 400x158 viewBox here, and lets the
     drawing fill it rather than letterboxing; non-scaling-stroke keeps every
     line the same weight through the squash. Mobile keeps the true 400/158
     ratio, where "none" behaves exactly like the default. */
  /* Chart keeps its true 400x158 proportions at full card width. Capping its
     width did shorten the card, but it left the plot floating in gutters with
     the returns boxes and footnote pulled in beside it — worse than the height
     it saved. */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-chart-wrap,
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-table-wrap{
    aspect-ratio:400/160 !important; }
  /* the four figure boxes centre their contents rather than sitting on a shared
     baseline, which left a gap under the shorter labels */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-stat{
    justify-content:center !important; min-height:0 !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-stat-l{
    align-items:center !important; min-height:0 !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-ret-stats{
    min-height:0 !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-ret-head{ gap:6px 18px; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .stat-row{ margin-top:auto !important; padding-top:min(10px,1.1vh) !important; }

  /* ── Cards 20% shorter, everything in them scaled to match ──────────────
     Type, spacing and control heights all come down together so the card keeps
     its proportions rather than looking like small text in a big box. The chart
     is the one block whose height is set by its width, so it narrows to 80% and
     centres — the returns boxes and footnote stay full width, which is what
     stopped an earlier attempt from reading as a plot stranded in gutters. */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-card{
    padding:min(16px,1.7vh) 20px min(30px,3.2vh) !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .card-title{
    font-size:min(1.9vw,3.3vh) !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-eyebrow{
    font-size:9px !important; margin-top:min(6px,.7vh); margin-bottom:min(12px,1.3vh) !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-title-row{
    margin-bottom:min(7px,.9vh) !important; }
  /* Title moves to a left column of its own, sitting in the space between the
     guide line and the cards; the pair takes the rest of the row. Scoped to the
     AIF section — Private Equity keeps its centred title. */
  :is(#home-ways,#aif-ways) .section-inner{ display:flex; align-items:flex-start; gap:clamp(32px,3.4vw,64px); }
  :is(#home-ways,#aif-ways) .ways-title{
    flex:0 0 clamp(200px,17vw,300px); text-align:left !important;
    font-size:clamp(32px,4.8vw,70px) !important;
    margin-bottom:0 !important; line-height:1.02 !important; }
  :is(#home-ways,#aif-ways) .offer-groups-wrap{ flex:1 1 auto; min-width:0; }
  /* The plot was being sized from its 132px min-height rather than from the
     card, which is why it sat tiny in the middle. It now takes the full card
     width and a flatter box; lets it fill that box
     instead of letterboxing, and non-scaling-stroke keeps every line the same
     weight through the flatten. */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-chart-wrap,
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-table-wrap{
    width:100% !important; max-width:none !important; min-height:0 !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-ret-cap{ font-size:9px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-lg{ font-size:8.5px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-ret-cap2{
    margin-top:min(42px,4.6vh) !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-stat-l{ font-size:8.5px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] :is(.hh-ret-val,.sb-statv){
    font-size:12px !important; height:16px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-stat{ padding:5px 5px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-returns{ gap:min(6px,.7vh) !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-ret-cap2{ margin-top:min(7px,.8vh) !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] :is(.hh-ret-val,.sb-statv){ height:14px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .stat-row .btn{
    height:34px !important; font-size:12px !important; padding:0 15px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-ret-foot{ font-size:8px !important; }
  /* The description and the returns panel share one grid cell, so the card is
     as tall as whichever is taller. Shrinking only the returns panel left the
     hidden description setting the height — which is where the dead band above
     the buttons came from. The description scales with everything else. */
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-desc{
    font-size:min(.95vw,1.6vh) !important; line-height:1.5 !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .offer-desc p{
    margin-bottom:min(9px,1vh) !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .hh-vt{ height:22px !important; padding:0 9px !important; font-size:10px !important; }
  :is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .stat-row .btn{
    height:38px !important; font-size:13px !important; padding:0 18px !important; }
}

/* ══ BACKED COMPANIES + KIMBAL STORY — side by side ════════════════════════
   The companies grid is the Private Equity page's own block, lifted verbatim so
   it inherits that styling (its #peCoSection rules were widened to match this
   copy). Only the two-column shell and the carousel are new. */
.hb-section{ background:var(--paper); padding:clamp(64px,7vw,110px) var(--hero-text-inset); }
.hb-split{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.12fr);
  gap:clamp(36px,4.4vw,80px); align-items:start; }
/* Story on the left, companies on the right (desktop) / story on top, companies
   below (mobile) — one order pair drives both, since the grid is 2-col on
   desktop and 1-col on mobile. */
.hb-story{ order:1; }
.hb-companies{ order:2; display:flex; flex-direction:column; min-height:0; }
:is(#peCoSection,#hbCompanies).hb-companies{ padding:0 !important; background:transparent !important; }
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-head{ margin-bottom:clamp(24px,2.6vw,40px); }
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-grid{ grid-template-columns:repeat(2,1fr) !important; }
/* The lifted block was drawn for the PE page's full-width 3-column grid; each
   cell here is roughly half that, so the name needs its own scale or it runs
   past the card edge. */
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-name{
  font-size:clamp(15px,1.35vw,22px) !important; padding:0 16px 14px !important; }
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-cell{ aspect-ratio:16/11; }
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-burst{ width:44px; height:44px; top:12px; right:12px; }
/* The companies list runs its own vertical scroller inside a fixed viewport, so
   the two columns are comparable in height, the whole section fits one screen,
   and nothing needs to stick. The rail is ours, not the browser's: a hairline
   track with a solid green thumb. Heights are in vh so the section stays fully
   visible on a short laptop screen too. */
.hb-section{ padding-top:clamp(40px,4.4vh,72px) !important; padding-bottom:clamp(40px,4.4vh,72px) !important; }
/* The list is a real scroll area, not a scroll-driven track: point at it and the
   wheel moves the logos, point anywhere else and the page moves as normal.
   overscroll-behavior:contain stops the scroll chaining to the page when the
   list hits its end, so you never get a jump out of the card. The scrollbar is
   themed rather than left as the OS one — thin, green, no arrows. */
.hb-viewport{ position:relative; flex:0 0 auto; height:clamp(300px,46vh,560px);
  overflow-y:auto; overflow-x:hidden; overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch; padding-right:16px;
  scrollbar-width:thin; scrollbar-color:var(--greenDeep) rgba(69,98,50,.18); }
.hb-viewport::-webkit-scrollbar{ width:5px; }
.hb-viewport::-webkit-scrollbar-track{ background:rgba(69,98,50,.18); }
.hb-viewport::-webkit-scrollbar-thumb{ background:var(--greenDeep); }
.hb-fade{ position:absolute; left:0; right:16px; height:36px; pointer-events:none; z-index:2; }
.hb-fade-top{ top:0; background:linear-gradient(var(--paper),rgba(242,229,191,0));
  opacity:0; transition:opacity .25s ease; }
/* nothing above the first row yet, so no veil over it until the list moves */
.hb-viewport.is-scrolled .hb-fade-top{ opacity:1; }
.hb-fade-bot{ bottom:0; background:linear-gradient(rgba(242,229,191,0),var(--paper)); }
.hb-rail{ display:none; }
@media(min-width:901px){
  /* the carousel matches the list's viewport so the row reads as one band */
  /* the carousel cards are square artwork, so the frame is 1:1 */
  .hb-story .ks-stage{ aspect-ratio:1/1; height:auto; }
  .hb-story .ks-slide img{ object-position:center; }
}
@media(max-width:900px){
  /* Both halves have to sit in ONE screen, so every vertical measure here is in
     vh and budgeted against 100vh: padding ~5, two heads ~15, the logo list 19,
     the square carousel up to 40, dots ~3. The list keeps its own scroller —
     22 companies flowing freely would be ~1700px on their own. */
  .hb-section{ padding-top:clamp(18px,2.4vh,30px) !important; padding-bottom:clamp(18px,2.4vh,30px) !important; }
  .hb-split{ gap:clamp(14px,2vh,24px); }
  /* heads collapse to their content and sit tight above their block */
  .hb-split :is(.pe-co-head,.ks-head){
    min-height:0 !important; margin-bottom:clamp(10px,1.4vh,16px) !important;
    align-items:flex-end; justify-content:space-between; gap:12px; flex-wrap:nowrap !important; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-title,
  .hb-story .ks-head-txt{ flex:1 1 auto; min-width:0; text-align:left; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-filter-wrap{ flex:0 0 auto; align-items:flex-start; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-title,
  .hb-story .ks-title{ font-size:clamp(22px,5.9vw,29px) !important; line-height:1.16 !important; }
  /* the filter and the arrows shrink together so both heads stay one row */
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-filter{
    font-size:12.5px !important; padding:9px 26px 9px 10px !important;
    width:auto !important; min-width:0 !important; max-width:34vw;
    background-position:right 8px center !important; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-filter-label{ display:none; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-filter-wrap{ gap:0 !important; flex:0 0 auto !important; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-head{
    display:flex !important; flex-direction:row !important; flex-wrap:nowrap !important;
    align-items:flex-end !important; justify-content:space-between !important;
    gap:12px !important; text-align:left !important; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-title{
    flex:0 0 auto !important; min-width:0 !important; max-width:none !important;
    text-align:left !important; white-space:nowrap !important; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-filter-wrap{
    margin-left:auto !important; flex:0 1 auto !important; min-width:0 !important; }
  .ks-nav-pair{ gap:8px; }
  .ks-nav-pair .carousel-arrow{ width:38px !important; height:38px !important; }
  .ks-nav-pair .carousel-arrow svg{ width:15px !important; height:15px !important; }
  /* logo list: one and a bit rows, scrolled inside the card */
  .hb-viewport{ flex:0 0 auto; height:clamp(224px,30vh,300px); padding-right:12px; }
  .hb-fade{ right:12px; height:22px; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-grid{ gap:12px !important; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-name{
    font-size:clamp(12px,3.4vw,15px) !important; padding:0 10px 9px !important; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-burst{ width:30px; height:30px; top:8px; right:8px; }
  /* the artwork stays square and takes whatever height is left */
  .hb-story .ks-stage{ aspect-ratio:1/1; height:auto; width:100%; margin:0 auto; }
  .ks-dots{ margin-top:clamp(8px,1.2vh,14px); margin-bottom:clamp(22px,4vh,40px); gap:10px; }
  /* 2 full rows + ~10% of the third, so it reads as scrollable */
  .hb-viewport{ --hb-cell:calc((100vw - 80px) / 2);
    height:calc(var(--hb-cell) * 0.6875 * 2.1 + 12px); }
  .ks-dot{ width:10px; height:10px; }
  .ks-sub{ display:none; }
}

/* right column: story carousel */
.hb-story{ display:flex; flex-direction:column; }
.ks-title{ font-family:'OV Sage','Jost',sans-serif; color:var(--greenDeep);
  font-size:clamp(28px,3.2vw,46px); font-weight:400; line-height:1.12; }
.ks-sub{ font-family:'Jost',sans-serif; font-size:clamp(14px,1.15vw,17px); color:#5C5340;
  margin:10px 0 0; line-height:1.5; }
.ks-head{ margin-bottom:clamp(20px,2.2vw,32px); }
.ks-stage{ position:relative; width:100%; flex:0 0 auto;
  aspect-ratio:1/1; border:1.5px solid rgba(69,98,50,.28);
  overflow:hidden; background:#FCF7EA; }
/* A real slide rather than a cross-fade: every card is laid out by its index
   against the stage's current index, so they all move together as one strip.
   Transform-only, promoted to its own layer, so it composites at 60fps —
   nothing here triggers layout or paint. */
.ks-stage{ --cur:0; }
.ks-slide{ position:absolute; inset:0; margin:0; pointer-events:none;
  transform:translate3d(calc((var(--i) - var(--cur)) * 100%),0,0);
  transition:transform .46s cubic-bezier(.62,.02,.28,1);
  will-change:transform; backface-visibility:hidden; }
.ks-slide.is-on{ pointer-events:auto; }
@media (prefers-reduced-motion: reduce){ .ks-slide{ transition:none; } }
.ks-slide img{ width:100%; height:100%; object-fit:cover; display:block; }
/* The pair sits at the right of the story heading, off the artwork entirely,
   reusing .carousel-arrow so it matches every other rail on the site. */
/* Both column heads share one type scale and one height, and both put their
   control on the bottom edge — so the filter bar and the arrow pair land on the
   same line, and the list and the carousel start level beneath them. */
.hb-split :is(.pe-co-head,.ks-head){
  display:flex; align-items:flex-end; justify-content:space-between; gap:20px;
  min-height:clamp(104px,9.5vw,148px); margin-bottom:clamp(20px,2.2vw,30px) !important; }
/* Both titles sit on the bottom edge of an equal-height head, so their first
   lines start level and the filter bar and arrow pair share one baseline. */
.hb-split :is(.pe-co-title,.ks-head-txt){ align-self:flex-end; }
.ks-head-txt{ min-width:0; }
.hb-story .ks-nav-pair{ align-self:flex-end; margin:0 !important; padding:0 !important; }
/* Hero line 2 carries the emphasis: the serif, a step up in size, and its own
   tighter line box so the two lines still sit as one block. */
.hero-belief .hero-line:last-child .hero-u .hero-word:first-child{
  font-style:normal; margin-right:.2em; }
.hero-lean{ display:inline-block; transform:skewX(-13deg); transform-origin:0 100%; }
.home-hero.intro.intro-lines .hero-lean{
  animation:heroItalicLean .42s cubic-bezier(.33,0,.24,1) both calc(var(--wi,0) * 170ms + 560ms); }
@keyframes heroItalicLean{ from{ transform:skewX(0deg); } to{ transform:skewX(-13deg); } }
.hero-belief .hero-line:last-child .hero-u{
  color:#F0C257 !important;
  font-family:var(--f-serif) !important; font-weight:400 !important;
  font-size:1.74em !important; line-height:1 !important;
  display:inline-block; letter-spacing:-.01em; }
.hb-story .ks-head{ align-items:flex-end; }
.ks-nav-pair{ flex:0 0 auto; display:flex; gap:10px; }
/* Same hairline weight as the filter dropdown beside it, and small — the pair is
   a control, not a feature. */
.ks-nav-pair .carousel-arrow{ width:45px !important; height:45px !important;
  border:1.5px solid var(--greenDeep) !important; background:transparent !important;
  padding:0 !important; display:flex; align-items:center; justify-content:center; }
.ks-nav-pair .carousel-arrow svg{ width:18px !important; height:18px !important;
  stroke:var(--greenDeep); stroke-width:1.4; fill:none; stroke-linecap:round; stroke-linejoin:round; }
.ks-nav-pair .carousel-arrow:hover{ background:var(--greenDeep) !important; }
.ks-nav-pair .carousel-arrow:hover svg{ stroke:var(--gold); }
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-title,
.hb-story .ks-title{
  font-size:clamp(28px,3.2vw,46px) !important; line-height:1.12 !important; margin-bottom:0 !important; }
.ks-dots{ display:flex; gap:9px; justify-content:center; margin-top:18px; }
.ks-dot{ width:12px; height:12px; border-radius:50% !important; padding:0; cursor:pointer;
  background:transparent; border:1.5px solid rgba(69,98,50,.5); transition:background .25s ease, border-color .25s ease; }
.ks-dot.is-on{ background:var(--greenDeep); border-color:var(--greenDeep); }

@media(max-width:900px){
  /* mobile: story (Kimbal) on top, companies below */
  .hb-split{ grid-template-columns:1fr; gap:clamp(40px,7vw,56px); }
  .hb-story{ order:1; }
  .hb-companies{ order:2; position:relative; }
  .hb-section{ padding-left:28px; padding-right:28px; }
  .ks-nav{ width:38px; height:38px; }
}
@media(max-width:560px){
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-grid{ grid-template-columns:repeat(2,1fr) !important; }
/* The lifted block was drawn for the PE page's full-width 3-column grid; each
   cell here is roughly half that, so the name needs its own scale or it runs
   past the card edge. */
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-name{
  font-size:clamp(15px,1.35vw,22px) !important; padding:0 16px 14px !important; }
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-cell{ aspect-ratio:16/11; }
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-burst{ width:44px; height:44px; top:12px; right:12px; }
/* The companies list runs its own vertical scroller inside a fixed viewport, so
   the two columns are comparable in height, the whole section fits one screen,
   and nothing needs to stick. The rail is ours, not the browser's: a hairline
   track with a solid green thumb. Heights are in vh so the section stays fully
   visible on a short laptop screen too. */
.hb-section{ padding-top:clamp(40px,4.4vh,72px) !important; padding-bottom:clamp(40px,4.4vh,72px) !important; }
/* The list is a real scroll area, not a scroll-driven track: point at it and the
   wheel moves the logos, point anywhere else and the page moves as normal.
   overscroll-behavior:contain stops the scroll chaining to the page when the
   list hits its end, so you never get a jump out of the card. The scrollbar is
   themed rather than left as the OS one — thin, green, no arrows. */
.hb-viewport{ position:relative; flex:0 0 auto; height:clamp(300px,46vh,560px);
  overflow-y:auto; overflow-x:hidden; overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch; padding-right:16px;
  scrollbar-width:thin; scrollbar-color:var(--greenDeep) rgba(69,98,50,.18); }
.hb-viewport::-webkit-scrollbar{ width:5px; }
.hb-viewport::-webkit-scrollbar-track{ background:rgba(69,98,50,.18); }
.hb-viewport::-webkit-scrollbar-thumb{ background:var(--greenDeep); }
.hb-fade{ position:absolute; left:0; right:16px; height:36px; pointer-events:none; z-index:2; }
.hb-fade-top{ top:0; background:linear-gradient(var(--paper),rgba(242,229,191,0));
  opacity:0; transition:opacity .25s ease; }
/* nothing above the first row yet, so no veil over it until the list moves */
.hb-viewport.is-scrolled .hb-fade-top{ opacity:1; }
.hb-fade-bot{ bottom:0; background:linear-gradient(rgba(242,229,191,0),var(--paper)); }
.hb-rail{ display:none; }
@media(min-width:901px){
  /* the carousel matches the list's viewport so the row reads as one band */
  /* the carousel cards are square artwork, so the frame is 1:1 */
  .hb-story .ks-stage{ aspect-ratio:1/1; height:auto; }
  .hb-story .ks-slide img{ object-position:center; }
}
@media(max-width:900px){
  /* Both halves have to sit in ONE screen, so every vertical measure here is in
     vh and budgeted against 100vh: padding ~5, two heads ~15, the logo list 19,
     the square carousel up to 40, dots ~3. The list keeps its own scroller —
     22 companies flowing freely would be ~1700px on their own. */
  .hb-section{ padding-top:clamp(18px,2.4vh,30px) !important; padding-bottom:clamp(18px,2.4vh,30px) !important; }
  .hb-split{ gap:clamp(14px,2vh,24px); }
  /* heads collapse to their content and sit tight above their block */
  .hb-split :is(.pe-co-head,.ks-head){
    min-height:0 !important; margin-bottom:clamp(10px,1.4vh,16px) !important;
    align-items:flex-end; justify-content:space-between; gap:12px; flex-wrap:nowrap !important; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-title,
  .hb-story .ks-head-txt{ flex:1 1 auto; min-width:0; text-align:left; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-filter-wrap{ flex:0 0 auto; align-items:flex-start; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-title,
  .hb-story .ks-title{ font-size:clamp(22px,5.9vw,29px) !important; line-height:1.16 !important; }
  /* the filter and the arrows shrink together so both heads stay one row */
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-filter{
    font-size:12.5px !important; padding:9px 26px 9px 10px !important;
    width:auto !important; min-width:0 !important; max-width:34vw;
    background-position:right 8px center !important; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-filter-label{ display:none; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-filter-wrap{ gap:0 !important; flex:0 0 auto !important; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-head{
    display:flex !important; flex-direction:row !important; flex-wrap:nowrap !important;
    align-items:flex-end !important; justify-content:space-between !important;
    gap:12px !important; text-align:left !important; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-title{
    flex:0 0 auto !important; min-width:0 !important; max-width:none !important;
    text-align:left !important; white-space:nowrap !important; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-filter-wrap{
    margin-left:auto !important; flex:0 1 auto !important; min-width:0 !important; }
  .ks-nav-pair{ gap:8px; }
  .ks-nav-pair .carousel-arrow{ width:38px !important; height:38px !important; }
  .ks-nav-pair .carousel-arrow svg{ width:15px !important; height:15px !important; }
  /* logo list: one and a bit rows, scrolled inside the card */
  .hb-viewport{ flex:0 0 auto; height:clamp(224px,30vh,300px); padding-right:12px; }
  .hb-fade{ right:12px; height:22px; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-grid{ gap:12px !important; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-name{
    font-size:clamp(12px,3.4vw,15px) !important; padding:0 10px 9px !important; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-burst{ width:30px; height:30px; top:8px; right:8px; }
  /* the artwork stays square and takes whatever height is left */
  .hb-story .ks-stage{ aspect-ratio:1/1; height:auto; width:100%; margin:0 auto; }
  .ks-dots{ margin-top:clamp(8px,1.2vh,14px); margin-bottom:clamp(22px,4vh,40px); gap:10px; }
  /* 2 full rows + ~10% of the third, so it reads as scrollable */
  .hb-viewport{ --hb-cell:calc((100vw - 80px) / 2);
    height:calc(var(--hb-cell) * 0.6875 * 2.1 + 12px); }
  .ks-dot{ width:10px; height:10px; }
  .ks-sub{ display:none; }
}
}

/* ══ Sector filter chevron ═════════════════════════════════════════════════
   One brand-green chevron, native control fully reset so nothing draws a second
   arrow over it. Same on every device. */
:is(#peCoSection,#hbCompanies) .pe-co-filter{
  appearance:none !important; -webkit-appearance:none !important; -moz-appearance:none !important;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23456232%22%20stroke-width%3D%222.4%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M5%208.5%2012%2015.5%2019%208.5%22%2F%3E%3C%2Fsvg%3E") !important;
  background-repeat:no-repeat !important;
  background-position:right 12px center !important;
  background-size:14px 14px !important;
  padding-right:36px !important;
}
:is(#peCoSection,#hbCompanies) .pe-co-filter::-ms-expand{ display:none !important; }
/* The wrap is wider than the select on mobile, and aligning its contents to the
   start left the control floating away from the right edge. */
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-filter-wrap{
  align-items:flex-end !important; }
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-head{ padding-right:16px !important; }
@media(max-width:900px){
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-filter{
    background-position:right 10px center !important; background-size:12px 12px !important;
    padding-right:30px !important; padding-left:10px !important; }
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-head{ padding-right:12px !important; }
}

/* Bigger serif on the phone, and one mark per word rather than a single block
   spanning both lines. The sweep moves onto the words with it, keeping the same
   900ms start so both boxes fill together. */
@media(max-width:760px){
  .home-hero .hero-belief .hero-line:last-child .hero-u{
    font-size:2.05em !important;
    background-image:none !important; background-color:transparent !important;
    padding:0 !important; animation:none !important; }
  .home-hero .hero-belief .hero-line:last-child .hero-u .hero-word{
    color:#F0C257; background-image:none; background-color:transparent;
    position:relative; padding:2px 7px;
    box-decoration-break:clone; -webkit-box-decoration-break:clone; }
  /* bar as a composited layer, matching the :first-child treatment above */
  .home-hero .hero-belief .hero-line:last-child .hero-u .hero-word:last-child::before{
    content:''; position:absolute; inset:0; z-index:-1;
    background:var(--greenDeep); transform:scaleX(0); transform-origin:left center; }
  .home-hero.intro.intro-lines .hero-belief .hero-line:last-child .hero-u .hero-word:last-child::before{
    animation:heroBarX .42s ease-out both 980ms; }
  .home-hero .hero-belief .hero-line:last-child .hero-u .hero-word:first-child{
    margin-right:0; padding:.1em .1em .04em .09em;
    display:inline-block; font-size:1.18em; position:relative;
    background-image:none !important; background-color:transparent !important; }
  /* Entrepreneurs' bar runs further right than the one above it */
  .home-hero .hero-belief .hero-line:last-child .hero-u .hero-word:last-child{
    padding:2px .2em 2px .2em; }
  /* three lines enter in sequence with a slight overlap */
  .home-hero.intro.intro-lines .hero-belief .hero-line:first-child .hero-word{
    animation-delay:0ms !important; }
  .home-hero .hero-belief .hero-lean{ animation-delay:420ms !important; }
  .home-hero.intro.intro-lines .hero-belief .hero-line:last-child .hero-u .hero-word:first-child{
    animation-delay:420ms !important; }
  .home-hero.intro.intro-lines .hero-belief .hero-line:last-child .hero-u .hero-word:first-child::before{
    animation-delay:560ms !important; }
  .home-hero.intro.intro-lines .hero-belief .hero-line:last-child .hero-u .hero-word:last-child{
    animation-delay:840ms !important; }
  /* the green parallelogram is its own layer, so the word's reveal animation
     (which drives transform) can't cancel the slant */
  .home-hero .hero-belief .hero-line:last-child .hero-u .hero-word:first-child::before{
    content:''; position:absolute; inset:0; z-index:-1;
    background:var(--greenDeep); transform:skewX(-13deg) scaleX(0); transform-origin:0 100%; }
  /* only reveals once the intro sequence runs, in step with the italic lean */
  .home-hero.intro.intro-lines .hero-belief .hero-line:last-child .hero-u .hero-word:first-child::before{
    animation:heroBarIn .42s cubic-bezier(.33,0,.24,1) both 900ms; }
  @keyframes heroBarIn{ to{ transform:skewX(-13deg) scaleX(1); } }
  /* "For & By" steps in from the left and clears the taller green block */
  .home-hero .hero-belief .hero-line:first-child{
    display:inline-block; margin-left:.62em; margin-bottom:.14em; }
  /* reference layout: the title block sits low in the frame so the tree reads
     above it, rather than being vertically centred */
  .home-hero .hero-card-left{ justify-content:flex-end !important; padding-bottom:clamp(20px,4vh,40px) !important; }
  /* whole title, bars included, up 10% */
  .home-hero .hero-belief{ font-size:clamp(28.6px,8.58vw,48.4px) !important; }
  .home-hero.intro.intro-lines .hero-belief .hero-line:last-child .hero-u .hero-word{
    animation:heroWordBlink .38s cubic-bezier(.22,.8,.28,1) backwards calc(var(--wi,0) * 170ms) !important; }

}

#homeHeroSticky .hero-text-block{ padding-top:clamp(16px,3.2vh,52px); }
#homeHeroSticky .hero-stats{ margin-top:clamp(30px,4.6vh,62px) !important; }
.home-hero .hero-card-right{ overflow:hidden; }

@media(max-width:760px){
  #homeHeroSticky .hero-text-block{ padding-top:clamp(92px,17vh,196px) !important; }
  #homeHeroSticky .hero-stats{ margin-top:clamp(34px,5.2vh,60px) !important; }
}

@media(min-width:761px){
  /* Tree scaled down on desktop/tablet only. The hard seam before came from a
     flat rectangular cut where the shrunk photo ended; heroImgFade (above) now
     feathers that same edge to transparent, so it dissolves into the fill
     colour instead of cutting off — solved with the gradient already on the
     image, not by trying to outrun the mask geometry. */
  #homeHeroSticky #heroZoom{ animation:none !important; }
  #homeHeroSticky #heroZoom image{
    transform-box:view-box; transform-origin:1290px 600px;
    transform:scale(.748);
    animation:heroTreeIn 1.7s cubic-bezier(.5,0,.2,1) both; }
}

:is(#peCoSection,#hbCompanies).hb-companies .pe-co-head{
  display:flex !important; flex-direction:row !important; flex-wrap:nowrap !important;
  align-items:flex-end !important; justify-content:space-between !important;
  gap:20px !important; text-align:left !important; }
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-title{
  flex:0 0 auto !important; max-width:none !important; text-align:left !important; }
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-filter-wrap{
  flex:0 1 auto !important; min-width:0 !important; margin-left:auto !important;
  align-items:flex-end !important; }

:is(#peCoSection,#hbCompanies).hb-companies .pe-co-filter{
  min-width:0 !important; width:100% !important; max-width:100% !important; }
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-title{
  flex:0 0 auto !important; min-width:0 !important; white-space:nowrap !important; }
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-filter-wrap{
  flex:0 1 auto !important; }
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-filter{
  font-size:12px !important; padding:8px 26px 8px 9px !important;
  background-position:right 8px center !important; background-size:11px 11px !important; }
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-head{ padding-right:26px !important; }

:is(#peCoSection,#hbCompanies).hb-companies .pe-co-name{ opacity:1 !important; }
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-card.morph-in{
  width:100% !important; height:100% !important; border-radius:0 !important;
  background:var(--paper) !important; border-color:var(--greenDeep) !important;
  align-items:flex-end !important; justify-content:flex-start !important; }
@media(max-width:900px){
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-head{ padding-right:12px !important; }
}

:is(#peCoSection,#hbCompanies).hb-companies .pe-co-card{
  width:100% !important; height:100% !important; border-radius:0 !important;
  background:var(--paper) !important; border:1px solid var(--greenDeep) !important;
  align-items:flex-end !important; justify-content:flex-start !important;
  overflow:hidden !important; transition:background .2s ease, border-color .2s ease !important; }
/* The base rule above locks background/border with !important, which silently
   beat the original (non-!important) .morph-in:hover rule — hover could never
   actually flip the card to green. Matching !important restores it. */
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-card:hover{
  background:var(--greenDeep) !important; border-color:var(--greenDeep) !important; transition:none !important; }
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-card:hover .pe-co-name{
  color:#F0C257 !important; transition:none !important; }

:is(#peCoSection,#hbCompanies).hb-companies .hb-viewport,
#hbViewport{ scrollbar-gutter:auto !important; scrollbar-width:none !important;
  padding-right:0 !important; }
#hbViewport::-webkit-scrollbar{ width:0 !important; display:none !important; }
#homeBackedSection .hb-rail{
  display:block !important; position:absolute !important; top:0; bottom:0; right:0;
  width:2px; height:auto !important; z-index:3; background:rgba(69,98,50,.22); }
#homeBackedSection .hb-thumb{
  display:block !important; position:absolute !important; left:-1px; top:0;
  width:4px; min-height:36px; background:var(--greenDeep); }
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-grid{ padding-right:14px !important; }
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-head{ padding-right:0 !important; }
.hb-fade{ right:0 !important; }

/* ── "Companies we've backed" rail: taken out of the scroller ──────────────
   The rail/fades used to be children of #hbViewport itself (the overflow:auto
   element), so they scrolled away WITH the content instead of staying put as a
   static track — exactly the bug reported. They're now children of a
   non-scrolling wrapper sibling to the viewport, so only the thumb (driven by
   JS) moves; the track and the up/down markers stay fixed in place. */
.hb-vp-wrap{ position:relative; }
.hb-rail-arrow{ position:absolute; left:50%; width:10px; height:10px; transform:translateX(-50%);
  fill:none; stroke:var(--greenDeep); stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round;
  opacity:.85; pointer-events:none; }
.hb-rail-arrow-up{ top:-15px; }
.hb-rail-arrow-down{ bottom:-15px; }

/* ── Custom sector dropdown, replacing the native <select> ─────────────────
   The real <select> stays in the DOM as the source of truth (existing filter
   JS reads its .value on 'change' — unchanged), just hidden; this is the
   visible control, in Niveshaay's own type/border language rather than the OS
   menu. */
.pe-co-filter.niv-select-native{ display:none; }
.niv-select{ position:relative; width:100%; min-width:0; }
.niv-select-btn{ display:flex; align-items:center; justify-content:space-between; gap:14px;
  width:100%; min-width:0; box-sizing:border-box; font-family:'Inter',sans-serif; font-size:15px; color:var(--greenDeep);
  background:var(--paper); border:1.5px solid var(--greenDeep); padding:11px 14px;
  cursor:pointer; text-align:left; }
.niv-select-btn:hover{ border-color:var(--terra); }
.niv-select-btn[aria-expanded="true"]{ border-color:var(--terra); }
.niv-select-chev{ width:13px; height:13px; flex:0 0 auto; fill:none; stroke:var(--greenDeep);
  stroke-width:2; stroke-linecap:round; stroke-linejoin:round; transition:transform .2s ease; }
.niv-select-btn[aria-expanded="true"] .niv-select-chev{ transform:rotate(180deg); }
.niv-select-list{ position:absolute; top:calc(100% + 6px); left:0; right:0; z-index:20;
  margin:0; padding:6px 0; list-style:none; background:var(--paper);
  border:1.5px solid var(--greenDeep); max-height:280px; overflow-y:auto; }
.niv-select-list[hidden]{ display:none !important; }
.niv-select-opt{ font-family:'Inter',sans-serif; font-size:14.5px; color:var(--ink);
  padding:9px 14px; cursor:pointer; }
.niv-select-opt:hover, .niv-select-opt.is-focus{ background:rgba(69,98,50,.08); }
.niv-select-opt.is-sel{ color:var(--greenDeep); font-weight:600; }
@media(max-width:900px){
  .niv-select-btn{ min-width:0; width:auto; max-width:100%; font-size:12.5px; padding:9px 26px 9px 10px; gap:8px; }
  .niv-select-chev{ width:11px; height:11px; }
  .niv-select-list{ min-width:180px; right:0; left:auto; }
}

/* ── Know More / Explore More: minimal right arrow ────────────────────────
   A real inline SVG (stroke:currentColor) rather than a masked ::after, which
   rendered unreliably inside the height-capped AIF card buttons. */
.btn-go{ display:inline-flex; align-items:center; gap:.55em; }
.btn-go-ico{ width:1.05em; height:1.05em; flex:0 0 auto; display:block;
  fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round;
  transition:transform .2s ease; }
.btn-go:hover .btn-go-ico{ transform:translateX(3px); }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .stat-row .btn.btn-go{
  overflow:visible !important; text-overflow:clip !important; gap:8px; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .stat-row .btn.btn-go .btn-go-ico{
  width:15px; height:15px; }

/* ── PE section: tablet & mobile ──────────────────────────────────────────── */
@media(max-width:760px){
  /* title on one line */
  .pe-title-br{ display:none; }
  /* card content sits higher, description a step larger */
  :is(#home-pe,#pe-page-stats) .pe-stat-card{ padding:clamp(7px,1.6vw,11px) clamp(15px,3.4vw,22px) clamp(20px,4vw,28px); }
  :is(#home-pe,#pe-page-stats) .pe-stat-card .pe-stat-value{ height:clamp(34px,8vw,44px) !important; margin-bottom:9px; }
  :is(#home-pe,#pe-page-stats) .pe-stat-card .pe-stat-label{ font-size:clamp(12px,3.2vw,15px) !important; line-height:1.25 !important; }
}
@media(min-width:761px) and (max-width:1024px){
  :is(#home-pe,#pe-page-stats) .pe-stat-card{ padding:clamp(8px,1vw,12px) clamp(18px,2.6vw,28px) clamp(18px,2.6vw,28px); }
  :is(#home-pe,#pe-page-stats) .pe-stat-card .pe-stat-label{ font-size:clamp(15px,2vw,20px); }
}

@media(max-width:760px){
  :is(#peCoSection,#hbCompanies).hb-companies .pe-co-head{ padding-right:14px !important; }
  #hbCompanies .pe-co-filter-wrap .niv-select{ width:max-content !important; margin-left:auto !important; }
  #hbCompanies .pe-co-filter-wrap .niv-select-btn{ width:max-content !important; min-width:0 !important; max-width:100% !important;
    font-size:11.5px !important; padding:7px 9px !important; gap:6px !important; }
  #hbCompanies .pe-co-filter-wrap .niv-select-chev{ width:9px !important; height:9px !important; }
  #hbCompanies .pe-co-filter-wrap .niv-select-list{ left:auto !important; right:0 !important;
    width:max-content !important; min-width:210px !important; max-width:min(82vw,280px) !important; }
  #hbCompanies .pe-co-filter-wrap .niv-select-opt{ white-space:nowrap; font-size:14px; padding:9px 14px; }
}

@media(max-width:760px){
  .hb-section{ padding-left:12px !important; padding-right:12px !important; }
  .hb-viewport{ --hb-cell:calc((100vw - 48px) / 2) !important; }
}

/* ══ NIVESHAAY PODCAST ═════════════════════════════════════════════════════
   Reuses the Research section's .kb-card / .kb-poster / .kb-info vocabulary, so
   border, hover, tag, title and meta styling all inherit rather than being
   re-specified. Only the play badge and the click-to-play swap are new. */
.pod-grid{ display:grid; grid-template-columns:1fr 1fr; gap:24px; align-items:stretch; }
.pod-card{ cursor:pointer; display:flex; flex-direction:column; }
.pod-card .kb-info{ flex:1 1 auto; display:flex; flex-direction:column; }
.pod-poster{ position:relative; aspect-ratio:16/9 !important; background-size:cover;
  background-position:center; overflow:hidden; }
.pod-poster::after{ content:''; position:absolute; inset:0; background:rgba(44,46,43,.16);
  transition:background .25s ease; }
.pod-card:hover .pod-poster::after{ background:rgba(44,46,43,.04); }
.pod-play{ position:absolute; left:50%; top:50%; transform:translate(-50%,-50%);
  width:clamp(58px,5.4vw,74px); height:clamp(58px,5.4vw,74px); z-index:2;
  display:flex; align-items:center; justify-content:center;
  border:1.5px solid var(--paper); border-radius:50% !important;
  background:rgba(44,46,43,.42); backdrop-filter:blur(2px);
  transition:background .22s ease, border-color .22s ease, transform .28s cubic-bezier(.16,1,.3,1); }
.pod-play svg{ width:52%; height:52%; fill:var(--paper); transition:fill .22s ease; }
.pod-card:hover .pod-play{ background:var(--greenDeep); border-color:var(--greenDeep);
  transform:translate(-50%,-50%) scale(1.06); }
.pod-card:hover .pod-play svg{ fill:var(--gold); }
/* playing state: the poster becomes the player frame */
.pod-poster.is-playing::after, .pod-poster.is-playing .pod-play{ display:none; }
.pod-poster iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; display:block; }
@media(max-width:760px){
  .pod-grid{ grid-template-columns:1fr; gap:16px; }
  :is(#homePodcast,#stratPodcast) .pod-card .kb-info .title{ font-size:20px !important; line-height:1.28; }
}

.pod-yt-tab{ display:inline-flex; align-items:center; gap:9px; color:var(--ink) !important;
  text-decoration:none !important; }
.pod-yt-arrow{ width:14px; height:14px; flex:0 0 auto; fill:none; stroke:currentColor;
  stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round;
  transition:transform .22s cubic-bezier(.16,1,.3,1); }
.pod-yt-tab{ transition:background .2s ease, border-color .2s ease, color .2s ease; }
@media(hover:hover){
  .pod-yt-tab:hover{ background:var(--terra) !important; border-color:var(--terra) !important;
    color:var(--paper) !important; }
  .pod-yt-tab:hover .pod-yt-arrow{ transform:translate(2px,-2px); stroke:var(--paper); }
}

:is(#homePodcast,#stratPodcast) .pod-card .kb-info .meta{ font-size:15px; line-height:1.4; }
@media(max-width:760px){ :is(#homePodcast,#stratPodcast) .pod-card .kb-info .meta{ font-size:14px; } }

:is(#homePodcast,#stratPodcast) .pod-card .kb-info .title{ font-size:22px; }

/* AIF hero CTAs — gold fill + gold outline against the terracotta hero. */
.aif-hero-actions{ display:flex; align-items:flex-start; gap:14px; flex-wrap:wrap; margin-top:clamp(26px,3vw,42px); }
.aif-hero-btn{ height:auto !important; align-self:flex-start; }
.aif-hero-btn{ background:var(--gold) !important; border:1.5px solid var(--gold) !important;
  color:var(--ink) !important; transition:background .2s ease, color .2s ease, border-color .2s ease;
  font-size:12.5px !important; padding:9px 19px !important; line-height:1.25 !important; }
.aif-hero-btn:hover{ background:transparent !important; color:var(--gold) !important; }
.aif-hero-btn-ghost{ background:transparent !important; color:var(--gold) !important; }
.aif-hero-btn-ghost:hover{ background:var(--gold) !important; color:var(--ink) !important; }
@media(max-width:760px){
  .aif-hero-actions{ gap:10px; margin-top:24px; flex-wrap:nowrap; }
  .aif-hero-actions .btn{ flex:0 1 auto; width:auto; text-align:center; box-sizing:border-box;
    font-size:12.5px !important; padding:9px 16px !important; white-space:nowrap; }
}

/* Podcast tag = same treatment as the Research/News thumbnails: it inherits
   .know-tag's bottom-right placement and sits inside .pod-poster, which is
   position:relative, so it can never resolve against the page. */
/* The tag sits in the info block, bottom-right beside the meta line — the same
   placement the Research/News cards use. .kb-info is the positioning context. */
:is(#homePodcast,#stratPodcast) .kb-info{ position:relative; }
:is(#homePodcast,#stratPodcast) .kb-info > .know-tag{ z-index:3; }
:is(#homePodcast,#stratPodcast) .kb-info .meta{ padding-right:104px; }

:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .stat-row{
  flex-wrap:nowrap !important; }
:is(#home-ways,#aif-ways,#home-pe,#pe-page-stats) .offer-group[data-group="aif"] .stat-row .btn{
  flex:1 1 0 !important; min-width:0 !important; width:auto !important;
  padding-left:12px !important; padding-right:12px !important;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

@media(max-width:760px){
  /* Head stacks: title on its own line, the link sized to its text and aligned
     left with the cards — the shared .know-tabs rule was stretching it to the
     full column width, which read as a banner rather than a link. */
  :is(#homePodcast,#stratPodcast) .know-head{ display:flex; flex-direction:column; align-items:flex-start; gap:14px; }
  :is(#homePodcast,#stratPodcast) .know-tabs{ width:auto !important; }
  :is(#homePodcast,#stratPodcast) .know-tabs .tab{ flex:0 0 auto !important; }
  :is(#homePodcast,#stratPodcast) .pod-yt-tab{ padding:10px 16px !important; font-size:13px !important; }
  :is(#homePodcast,#stratPodcast) .sec-title{ font-size:clamp(30px,8.4vw,44px) !important; line-height:1.1; }
  /* one card per row, tighter, with the caption block compact */
  :is(#homePodcast,#stratPodcast) .pod-grid{ gap:18px; }
  :is(#homePodcast,#stratPodcast) .pod-card .kb-info{ padding:16px 18px 18px !important; }
  :is(#homePodcast,#stratPodcast) .pod-card .kb-info .title{ font-size:19px !important; line-height:1.25; }
  :is(#homePodcast,#stratPodcast) .pod-card .kb-info .meta{ font-size:13px !important; padding-right:96px; }
  :is(#homePodcast,#stratPodcast) .pod-play{ width:52px !important; height:52px !important; }
}

/* No founder rail in this copy, so the band sets its own vertical rhythm:
   equal air above the title and below the logo strip. */
#aifBackers{ padding-top:clamp(56px,6vw,104px); padding-bottom:clamp(56px,6vw,104px); }
#aifBackers .bkr-title{ margin-top:0; }
#aifBackers .bkr-marquee{ margin-bottom:0; margin-top:clamp(34px,4vw,60px); }

/* ══ AIF PODCAST + RESEARCH ════════════════════════════════════════════════
   Two equal columns on the .hb-split shell, each holding its OWN horizontal
   scroller — so the podcast strip and the research strip scroll independently
   rather than the page scrolling. Cards keep the .kb-card / .pod-card
   vocabulary, so posters, titles, tags and hovers are inherited. */
.akr-section{ background:var(--paper); }
:is(#aifKnowledge,#eqbKnowledge) .hb-split{ align-items:start; }
.akr-col{ display:flex; flex-direction:column; min-width:0; }
.akr-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:20px;
  min-height:clamp(78px,7vw,112px); margin-bottom:clamp(18px,2vw,28px); }
.akr-title{ font-family:'OV Sage','Jost',sans-serif; color:var(--greenDeep);
  font-size:clamp(26px,2.9vw,42px); font-weight:400; line-height:1.12; align-self:flex-end; }
.akr-title strong{ font-weight:600; }
/* the rail: native horizontal scroll, themed bar, snap so a card lands square */
.akr-rail{ display:flex; gap:18px; overflow-x:auto; overflow-y:hidden;
  scroll-snap-type:x proximity; overscroll-behavior-x:contain;
  -webkit-overflow-scrolling:touch; padding-bottom:14px;
  scrollbar-width:thin; scrollbar-color:var(--greenDeep) rgba(69,98,50,.18); }
.akr-rail::-webkit-scrollbar{ height:5px; }
.akr-rail::-webkit-scrollbar-track{ background:rgba(69,98,50,.18); }
.akr-rail::-webkit-scrollbar-thumb{ background:var(--greenDeep); }
.akr-rail > .kb-card{ flex:0 0 clamp(230px,74%,330px); scroll-snap-align:start;
  display:flex; flex-direction:column; }
.akr-rail .kb-poster{ aspect-ratio:16/9 !important; flex:0 0 auto; }
.akr-rail .kb-info{ position:relative; flex:1 1 auto; padding:18px 20px 22px; }
.akr-rail .kb-info .title{ font-size:18px; line-height:1.28; }
.akr-rail .kb-info .meta{ padding-right:96px; }
:is(#aifKnowledge,#eqbKnowledge) .pod-yt-tab{ padding:10px 16px !important; font-size:13px !important; }
@media(max-width:900px){
  :is(#aifKnowledge,#eqbKnowledge) .hb-split{ grid-template-columns:1fr; gap:clamp(34px,5vw,52px); }
  .akr-head{ min-height:0; align-items:flex-start; flex-direction:column; gap:12px; }
  .akr-title{ font-size:clamp(24px,6.6vw,34px); }
  .akr-rail > .kb-card{ flex:0 0 78%; }
  .akr-rail .kb-info .title{ font-size:17px; }
}

/* Research is the only column now, so it spans the full width. */
:is(#aifKnowledge,#eqbKnowledge) .hb-split{ grid-template-columns:1fr !important; }
:is(#aifKnowledge,#eqbKnowledge) .akr-rail > .kb-card{
  flex:0 0 calc((100% - 36px) / 2.2) !important; min-width:0 !important; }
:is(#aifKnowledge,#eqbKnowledge) .akr-rail .kb-info .title{ font-size:21px; }
:is(#aifKnowledge,#eqbKnowledge) .akr-rail .kb-info{ padding:22px 24px 26px; }
@media(max-width:900px){
  :is(#aifKnowledge,#eqbKnowledge) .akr-rail > .kb-card{ flex:0 0 82% !important; }
  :is(#aifKnowledge,#eqbKnowledge) .akr-rail .kb-info .title{ font-size:18px; }
}

#aifKnowledge{ --akr-bleed:28px; }
:is(#aifKnowledge,#eqbKnowledge) .akr-rail{
  margin-right:calc(-1 * var(--akr-bleed));
  padding-right:0;
}
:is(#aifKnowledge,#eqbKnowledge) .akr-rail::after{
  content:''; flex:0 0 var(--akr-bleed); align-self:stretch;
}

/* Filter buttons replace the dropdown — same .tab treatment as the Research &
   News tabs, so the active state and hover are inherited. */
:is(#aifKnowledge,#eqbKnowledge) .akr-filters{ display:flex; flex-wrap:wrap; gap:10px; align-self:flex-end; }
:is(#aifKnowledge,#eqbKnowledge) .akr-filter{ cursor:pointer; }
@media(max-width:900px){
  :is(#aifKnowledge,#eqbKnowledge) .akr-head{ gap:14px; flex-direction:column; align-items:flex-start; }
  :is(#aifKnowledge,#eqbKnowledge) .akr-title{ font-size:clamp(23px,6.2vw,32px); line-height:1.14;
    align-self:flex-start; text-align:left; }
  :is(#aifKnowledge,#eqbKnowledge) .akr-filters{
    align-self:stretch; gap:8px; flex-wrap:nowrap; overflow-x:auto;
    scrollbar-width:none; -ms-overflow-style:none;
    margin-right:-28px; padding-right:28px;
  }
  :is(#aifKnowledge,#eqbKnowledge) .akr-filters::-webkit-scrollbar{ display:none; }
  :is(#aifKnowledge,#eqbKnowledge) .akr-filter{
    flex:0 0 auto; padding:9px 14px; font-size:12.5px; white-space:nowrap; }
  :is(#aifKnowledge,#eqbKnowledge) .akr-rail .kb-info{ padding:16px 18px 20px; }
  :is(#aifKnowledge,#eqbKnowledge) .akr-rail .kb-info .meta{ padding-right:88px; }
}

:is(#aifKnowledge,#eqbKnowledge) .akr-filter:hover{ background:var(--blue) !important; border-color:var(--blue) !important;
  color:var(--paper) !important; }
:is(#aifKnowledge,#eqbKnowledge) .akr-filter.active{ background:var(--blue); border-color:var(--blue); color:var(--paper); }
:is(#aifKnowledge,#eqbKnowledge) .akr-rail .kb-card{ position:relative; transition:background .2s ease, border-color .2s ease; }
:is(#aifKnowledge,#eqbKnowledge) .akr-rail .kb-card:hover{ background:var(--tint); border-color:var(--blue); }
:is(#aifKnowledge,#eqbKnowledge) .akr-rail .kb-card:hover .know-tag-research{ background:var(--blue); }

:is(#aifKnowledge,#eqbKnowledge) .akr-rail{ scrollbar-width:none !important; -ms-overflow-style:none; padding-bottom:0 !important; }
:is(#aifKnowledge,#eqbKnowledge) .akr-rail::-webkit-scrollbar{ display:none !important; }

#aifWhy .conv-founder-row{ margin-bottom:0 !important; }

/* ══ KEEP IN MIND — accordion ══════════════════════════════════════════════
   Collapsed by default: only the title shows, with a chevron centred on the
   right. Height animates via grid-template-rows 0fr→1fr, which transitions
   cleanly without needing a measured pixel height. Scoped to this section, so
   the home scuttlebutt and Power Sector cards (same classes) are untouched. */
.aif-mind-acc .kim-card{ padding:0 !important; }
.aif-mind-acc .kim-head{
  display:flex; align-items:center; justify-content:space-between; gap:22px;
  width:100%; background:none; border:0; text-align:left; cursor:pointer;
  padding:clamp(22px,2.2vw,32px) clamp(22px,2.4vw,38px);
  font:inherit; color:inherit; }
.aif-mind-acc .kim-head .scutt-card-title{ margin:0; }
.aif-mind-acc .kim-chev{ flex:0 0 auto; width:22px; height:22px; fill:none;
  stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round;
  transition:transform .3s cubic-bezier(.4,0,.2,1); }
.aif-mind-acc .kim-head[aria-expanded="true"] .kim-chev{ transform:rotate(180deg); }
/* chevron follows the same soft-gold shift as the title on hover / open / mobile auto-state */
@media(hover:hover) and (min-width:861px){
  :is(.aif-mind,.aif-mind-acc) .scutt-card:hover .kim-chev{ stroke:var(--gold) !important; }
}
:is(.aif-mind,.aif-mind-acc) .scutt-card.auto-on .kim-chev,
:is(.aif-mind,.aif-mind-acc) .kim-card.is-open .kim-chev{ stroke:#F0C257 !important; }
.aif-mind-acc .kim-chev{ transition:transform .3s cubic-bezier(.4,0,.2,1), stroke .3s ease; }

/* Homepage grid shows the mark alone — the name stays in the DOM for the
   sector filter and screen readers, just not rendered */
#hbGrid .pe-co-name.has-logo{ font-size:0 !important; }
/* Logos sit 10% larger than the old canvas fit, on both grids and in both
   states (the hover silhouette is the same pseudo-element). */
:is(#peCoGrid,#hbGrid) .pe-co-name.has-logo::before{ transform:scale(1.1); }
/* Company cards (homepage + PE page). At rest each company's own logo is
   painted in its true colours on the original paper card with the green
   hairline; the PE page keeps its scroll-in morph (circle grows into the
   card). On hover the original treatment returns: the card floods green,
   the mark turns into a gold silhouette of itself (the same logo, masked in
   currentColor) and the starburst draws in.
   Each logo file carries its own transparent margin (the old 2:1 canvas
   fit), so the mark is painted edge to edge of the card as before. */
#peCoSection .pe-co-card{
  transition:width .6s cubic-bezier(.16,1,.3,1), height .6s cubic-bezier(.16,1,.3,1),
    border-radius .6s cubic-bezier(.16,1,.3,1), background .2s ease, border-color .2s ease !important; }
#peCoSection .pe-co-card.morph-in,
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-card,
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-card.morph-in{
  width:100% !important; height:100% !important; border-radius:0 !important;
  background:var(--paper) !important; border:1px solid var(--greenDeep) !important;
  box-shadow:none !important; align-items:flex-end !important; justify-content:flex-start !important; }
#peCoSection .pe-co-card.morph-in:hover,
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-card:hover,
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-card.morph-in:hover{
  background:var(--greenDeep) !important; border-color:var(--greenDeep) !important; transition:none !important; }
:is(#peCoSection,#hbCompanies) .pe-co-card:hover .pe-co-name,
:is(#peCoSection,#hbCompanies).hb-companies .pe-co-card:hover .pe-co-name{
  color:#F0C257 !important; transition:none !important; }
:is(#peCoGrid,#hbGrid) .pe-co-card:hover .pe-co-name.has-logo::before{
  background:currentColor;
  -webkit-mask:var(--logo) center/contain no-repeat;
  mask:var(--logo) center/contain no-repeat; }
/* Solfin's bolt is black on a green disc, so its own alpha would give a
   solid disc. Its hover uses a purpose-made silhouette of the same logo with
   the bolt cut out, so it reads like every other card: flat gold, bolt
   showing through. At rest the card still paints the untouched logo. */
:is(#peCoGrid,#hbGrid) .pe-co-card:hover .pe-co-name.has-logo[style*="solfin"]::before{
  -webkit-mask:url("https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6ab9182d807f9120f4fb3a82_co-solfin-hover-mask-s.png") center/contain no-repeat;
  mask:url("https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6ab9182d807f9120f4fb3a82_co-solfin-hover-mask-s.png") center/contain no-repeat; }


/* Long-term heroes: quote copy down 30% with the green card tightened to match */
#heroRailArea .hero-quote-text{ font-size:clamp(14px,1.47vw,23.8px) !important; line-height:1.42 !important; }
#heroRailArea .hero-quote{ padding:26px 24px 24px !important; }
@media(max-width:1024px){
  #heroRailArea .hero-quote-text{ font-size:clamp(12.6px,3.43vw,16.1px) !important; }
  #heroRailArea .hero-quote{ padding:18px 20px 20px !important; }
}
@media(max-width:760px){
  #heroRailArea .hero-pair .hero-quote{ padding:16px 18px 56px !important; }
  #heroRailArea .hero-pair .hero-quote-text{ font-size:clamp(13.3px,3.78vw,17.5px) !important; line-height:1.4 !important; }
}

/* Explore More matched to the Know More button in the AIF fund cards */
#homeScuttleSection .scutt-explore-btn{ font-size:13px !important; padding:0 12px !important; height:40px !important; }
#homeScuttleSection .scutt-explore-btn .btn-go-ico{ width:15px !important; height:15px !important; }
/* The PE section's Know More carries the same size as the Scuttlebutt one. */
#home-pe .pe-bare-btn{ font-size:13px !important; padding:0 12px !important; height:40px !important; }
#home-pe .pe-bare-btn .btn-go-ico{ width:15px !important; height:15px !important; }

/* Homepage Scuttlebutt cards as accordions — icon + title always visible,
   description expands on click/tap. Same mechanics as the Keep-in-mind list. */
#homeScuttleSection .scutt-card.kim-card{ cursor:pointer; position:relative; }
/* the header button's hit area is stretched over the whole card, so a tap
   anywhere toggles it — the click still lands on a real <button> */
#homeScuttleSection .kim-head::after{ content:''; position:absolute; inset:0; }
#homeScuttleSection .kim-head{ display:flex; align-items:center; justify-content:space-between;
  gap:16px; width:100%; background:none; border:0; text-align:left; cursor:pointer;
  padding:0; font:inherit; color:inherit; }
#homeScuttleSection .kim-head .scutt-card-title{ margin:0 !important; line-height:1.2; }
#homeScuttleSection .kim-chev{ flex:0 0 auto; width:22px; height:22px; fill:none; stroke:currentColor;
  stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round;
  transition:transform .3s cubic-bezier(.4,0,.2,1), stroke .3s ease; }
#homeScuttleSection .kim-head[aria-expanded="true"] .kim-chev{ transform:rotate(180deg); }
#homeScuttleSection .kim-body{ display:grid; grid-template-rows:0fr;
  transition:grid-template-rows .38s cubic-bezier(.4,0,.2,1); }
#homeScuttleSection .kim-card.is-open .kim-body{ grid-template-rows:1fr; }
#homeScuttleSection .kim-body > .scutt-card-body{ overflow:hidden; min-height:0; opacity:0;
  padding-top:0; transition:opacity .28s ease, padding-top .38s cubic-bezier(.4,0,.2,1); }
#homeScuttleSection .kim-card.is-open .kim-body > .scutt-card-body{ opacity:1; padding-top:14px; transition-delay:.06s; }
@media(hover:hover) and (min-width:861px){
  #homeScuttleSection .scutt-card:hover .kim-chev{ stroke:#F0C257; }
}
#homeScuttleSection .scutt-card.auto-on .kim-chev,
#homeScuttleSection .kim-card.is-open .kim-chev{ stroke:#F0C257; }
@media (prefers-reduced-motion: reduce){
  #homeScuttleSection .kim-body, #homeScuttleSection .kim-chev,
  #homeScuttleSection .kim-body > .scutt-card-body{ transition:none; }
}

/* ── Home hero, phones + portrait tablets: two-phase reveal ──────────────
   Phase 1 (no scroll): title only, larger and sitting low; the word / italic /
   highlight sequence plays, then a scroll cue appears. Nothing else moves.
   Phase 2 (on scroll): the title eases down to its final scale and position
   while the stats settle in; past that, the page moves to the next section. */
@media(max-width:1024px) and (orientation:portrait){
  .home-hero-track{ height:190svh !important; }
  .home-hero{ height:100svh !important; }
  /* Once a real scroll starts the transform is driven frame-by-frame, so the
     1.5s intro transition only fights it — the title lagged behind the finger
     and read as jerky. Load-in keeps the transition. */
  #homeHeroSticky.hp-scrolling .hero-text-block{ transition:none !important; }
  /* Keep the title on its own compositor layer for the whole travel, so the
     per-frame transform is a composite step rather than a repaint. */
  #homeHeroSticky .hero-text-block{ will-change:transform; backface-visibility:hidden; }
  #homeHeroSticky .hero-text-block{
    transform:translate(var(--hp-x,0px), var(--hp-y,13vh)) scale(var(--hp-s,1.17));
    /* grow from the centre, not the left edge — scaling from the left pushed the
       block's right side out and made the margins uneven */
    transform-origin:50% 100%; will-change:transform; }
  /* phase 1 shows the tree larger; it settles back as the scroll resolves */
  #homeHeroSticky .hero-bg-svg{
    transform:scale(var(--hp-bg,1.12)); transform-origin:60% 42%; will-change:transform; }

  #homeHeroSticky .hero-cue{ display:flex; opacity:var(--hp-cue,0); transition:opacity .3s ease; }

  /* ── Scroll-tracked, but driven by the browser instead of JavaScript ──────
     Same travel as the variable-driven version above, expressed as an animation
     whose timeline IS the scroll position. The compositor runs it, so it tracks
     the finger exactly and never waits on the main thread — which is what made
     the JS version stutter on real phones. The JS path stays as the fallback for
     browsers without scroll-driven animations; .hp-tl is only added when the
     feature is present. */
  @supports (animation-timeline: scroll()){
    html.hp-tl #homeHeroSticky .hero-text-block{
      animation:hpTitle 1s cubic-bezier(.215,.61,.355,1) both;
      animation-timeline:scroll(root block);
      animation-range:0 var(--hp-range, 56svh);
      transition:none !important;
    }
    html.hp-tl #homeHeroSticky .hero-bg-svg{
      animation:hpBg 1s cubic-bezier(.215,.61,.355,1) both;
      animation-timeline:scroll(root block);
      animation-range:0 var(--hp-range, 56svh);
    }
    /* once the reveal is complete the frame is final — scrolling back must not
       run the travel in reverse */
    html.hp-tl #homeHeroSticky.hp-tl-lock .hero-text-block{
      animation:none !important; transform:translate(0px,0px) scale(1) !important; }
    html.hp-tl #homeHeroSticky.hp-tl-lock .hero-bg-svg{
      animation:none !important; transform:scale(1) !important; }
  }
}
@keyframes hpTitle{
  from{ transform:translate(var(--hp-x0,0px), 13vh) scale(1.17); }
  to{   transform:translate(0px, 0px) scale(1); }
}
@keyframes hpBg{
  from{ transform:scale(1.12); }
  to{   transform:scale(1); }
}

@media (prefers-reduced-motion: reduce){
  #homeHeroSticky .hero-text-block{ transform:none !important; }
  #homeHeroSticky .hero-stats{ opacity:1 !important; transform:none !important; }
}

/* PE hero scroll cue — mobile only: hero fills the viewport, chevron bobs at bottom centre */
.pe-m-br{ display:none; }
.pe-scroll-cue{ display:none; position:absolute; left:50%; bottom:20px; margin-left:-17px;
  width:34px; height:34px; align-items:center; justify-content:center; pointer-events:none; z-index:5; }
.pe-scroll-cue svg{ width:26px; height:26px; fill:none; stroke:var(--paper);
  stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round;
  animation:peCueBob 1.9s cubic-bezier(.4,0,.2,1) infinite; }
@keyframes peCueBob{ 0%,100%{ transform:translateY(-4px); opacity:.45; } 50%{ transform:translateY(4px); opacity:1; } }
@media (prefers-reduced-motion: reduce){ .pe-scroll-cue svg{ animation:none; opacity:.8; } }
@media(min-width:1025px){
  /* Desktop: the three sub-page heroes fill the viewport, with the same bobbing
     chevron the mobile versions use. min-height, so a short window grows rather
     than clipping the composition. */
  :is(#peHero,#aifHero,#eqbHero,#stratHero){ position:relative; min-height:100vh !important; box-sizing:border-box; }
  :is(#peHero,#aifHero,#eqbHero,#stratHero) .section-inner{ padding-bottom:96px !important; }
  :is(#peHero,#aifHero,#eqbHero,#stratHero) .pe-scroll-cue{ display:flex; bottom:28px; }
}
@media(max-width:760px){
  /* min-height, not height — a short (landscape) viewport grows instead of
     clipping bottom-justified content out through the top under overflow:hidden */
  :is(#peHero,#aifHero,#eqbHero,#stratHero){ position:relative; min-height:100svh !important;
    display:flex; flex-direction:column; justify-content:flex-end;
    padding-top:0 !important; padding-bottom:0 !important; box-sizing:border-box; }
  /* the inner's 142px nav-clearance pad is pointless once the hero is
     bottom-justified, and its bottom pad now carries the cue clearance */
  :is(#peHero,#aifHero,#eqbHero,#stratHero) .section-inner{ width:100%; padding-top:88px !important; padding-bottom:104px !important; }
  :is(#peHero,#aifHero,#eqbHero,#stratHero) .pe-scroll-cue{ display:flex; }
  :is(#peHero,#aifHero,#eqbHero,#stratHero) .eyebrow{ font-size:12px !important; letter-spacing:.2em !important; margin-bottom:16px !important; }
  #eqbHero .aif-hero-statement{ line-height:1.06 !important; margin:0 0 20px !important; }
  #eqbHero .aif-hero-sub{ line-height:1.55 !important; max-width:100% !important; margin:0 !important; }
  #eqbHero .aif-hero-actions{ margin-top:26px !important; }
  #aifHero .aif-hero-statement{ line-height:1.06 !important; margin:0 0 20px !important; }
  #aifHero .aif-hero-sub{ line-height:1.55 !important; max-width:100% !important; margin:0 !important; }
  #aifHero .aif-hero-actions{ margin-top:26px !important; }
  #stratHero .aif-hero-statement{ line-height:1.06 !important; margin:0 0 20px !important; }
  #stratHero .aif-hero-sub{ line-height:1.55 !important; max-width:100% !important; margin:0 !important; }
  #stratHero .aif-hero-actions{ margin-top:26px !important; }
  /* No font-size here: matches the AIF hero, which has no mobile size override
     and so keeps the shared clamp(38px,5.6vw,81px). */
  #peHero .aif-hero-statement{ line-height:1.06 !important;
    margin:0 0 20px !important; }
  /* exact line breaks on phones (headline + sub) */
  #peHero .pe-m-br{ display:inline; }
  /* Mirrors the AIF hero exactly: no font-size override (so both keep the
     shared scale) and the same 26px action offset. */
  #peHero .aif-hero-sub{ line-height:1.55 !important;
    max-width:100% !important; margin:0 !important; }
  #peHero .aif-hero-actions{ margin-top:26px !important; }
}
.aif-mind-acc .kim-body{
  display:grid; grid-template-rows:0fr;
  transition:grid-template-rows .38s cubic-bezier(.4,0,.2,1); }
.aif-mind-acc .kim-card.is-open .kim-body{ grid-template-rows:1fr; }
.aif-mind-acc .kim-body > .scutt-card-body{
  overflow:hidden; min-height:0;
  padding:0 clamp(22px,2.4vw,38px);
  opacity:0; transition:opacity .28s ease, padding-bottom .38s cubic-bezier(.4,0,.2,1); }
.aif-mind-acc .kim-card.is-open .kim-body > .scutt-card-body{
  opacity:1; padding-bottom:clamp(24px,2.4vw,34px); transition-delay:.06s; }
@media (prefers-reduced-motion: reduce){
  .aif-mind-acc .kim-body, .aif-mind-acc .kim-chev,
  .aif-mind-acc .kim-body > .scutt-card-body{ transition:none; }
}
@media(max-width:860px){
  .aif-mind-acc .kim-head{ padding:20px 22px; gap:16px; }
  .aif-mind-acc .kim-chev{ width:20px; height:20px; }
  .aif-mind-acc .kim-body > .scutt-card-body{ padding:0 22px; }
  .aif-mind-acc .kim-card.is-open .kim-body > .scutt-card-body{ padding-bottom:22px; }
}

/* ══ HOW AN AIF WORKS — three cards side by side ═══════════════════════════
   Was a sticky-left / scrolling-steps layout; now a simple 3-up row with the
   title on its own line above and the starburst beside it. The burst keeps its
   existing #aifWorksBurst id so the scroll-rotation JS still drives it. */
.awh-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:32px;
  margin-bottom:clamp(38px,4.2vw,68px); }
.awh-heading{ margin:0 !important; text-align:left !important; }
.awh-burst{ flex:0 0 auto; width:clamp(52px,4.4vw,74px); height:clamp(52px,4.4vw,74px);
  overflow:visible; transform-origin:center; will-change:transform; margin-top:-2px; }
.awh-burst line{ stroke:var(--greenDeep); stroke-width:2.4; stroke-linecap:round; }
.awh-burst circle{ fill:var(--greenDeep); }
.awh-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(20px,2.4vw,38px);
  align-items:start; }
.awh-card{ display:flex; flex-direction:column; min-width:0; }
.awh-media{ position:relative; aspect-ratio:4/3; overflow:hidden;
  border:1px solid var(--greenDeep); margin-bottom:clamp(18px,1.8vw,26px); }
.awh-media .aif-works-parallax{ position:absolute; inset:-10% 0 -10% 0; height:120%; }
.awh-title{ font-family:'OV Sage','Jost',sans-serif; color:var(--greenDeep);
  font-size:clamp(20px,1.9vw,27px); font-weight:400; line-height:1.2;
  margin-bottom:clamp(9px,.9vw,14px); }
.awh-body{ font-family:'Jost',sans-serif; font-size:clamp(16px,1.35vw,20px);
  line-height:1.58; color:#5C5340; }
@media(max-width:860px){
  .awh-head{ flex-direction:row; align-items:flex-start; gap:18px; margin-bottom:28px; }
  .awh-burst{ width:56px; height:56px; }
  .awh-grid{ grid-template-columns:1fr; gap:30px; }
  .awh-media{ aspect-ratio:16/10; }
}

/* Same sizing the homepage applies via #page-home #know-all: the article column
   sizes to its own content, posters stay 16/9 instead of absorbing the row. */
.strat-know .know-all-grid{ align-items:start !important; }
.strat-know .know-feature{ height:auto !important; }
.strat-know .know-feature .kb-card:first-child{ height:auto !important; }
.strat-know .know-feature .kb-poster{ aspect-ratio:16/9 !important; flex:0 0 auto !important; height:auto !important; background-size:cover !important; }
@media(min-width:761px){
  .strat-know .know-feature{ align-self:start !important; }
  .strat-know .know-all-news{ align-self:stretch !important; height:100% !important; }
  .strat-know .know-all-news > .news-card{ flex:1 1 0 !important; min-height:0 !important; }
}
@media(max-width:760px){
  .strat-know .know-feature{ display:flex !important; flex-direction:row !important; flex-wrap:nowrap !important;
    overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; gap:16px; }
  .strat-know .know-feature::-webkit-scrollbar{ display:none; }
  .strat-know .know-all-news{ display:flex !important; flex-direction:row !important; flex-wrap:nowrap !important;
    overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; gap:16px; }
  .strat-know .know-all-news::-webkit-scrollbar{ display:none; }
  .strat-know .know-all-news > .news-card{ flex:0 0 88% !important; }
  .strat-know .know-feature > .kb-card{ flex:0 0 88% !important; min-height:0; }
  .strat-know .know-feature .kb-info .title{ font-size:18px !important; line-height:1.28; }
}
.strat-know .know-all-grid .know-feature{ order:1; }
.strat-know .know-all-grid .know-all-news{ order:2; }
.strat-know .know-all-grid .know-feature .kb-info .meta,
.strat-know .know-all-grid .news-card .news-desc{ padding-right:104px; }
.awh-num{ font-family:'Jost',sans-serif; font-size:13px; letter-spacing:.16em;
  color:var(--greenDeep); opacity:.55; margin-bottom:8px; }
.awh-head-text{ min-width:0; max-width:760px; }
.awh-desc{ font-family:'Jost',sans-serif; font-size:clamp(16px,1.4vw,21px); line-height:1.58;
  color:#5C5340; margin:14px 0 0 !important; max-width:640px; }
/* Strategy crisis rail — horizontal scroll at every width, smaller media */
.awh-grid-4{
  display:flex !important; grid-template-columns:none !important;
  flex-wrap:nowrap; gap:clamp(16px,1.8vw,28px);
  overflow-x:auto; overflow-y:hidden;
  scroll-snap-type:x proximity; overscroll-behavior-x:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none; -ms-overflow-style:none;
  padding-bottom:6px;
}
.awh-grid-4::-webkit-scrollbar{ display:none; }
.awh-grid-4 > .awh-card{ flex:0 0 clamp(240px,26vw,340px); min-width:0; scroll-snap-align:start; }
/* From tablet up the four cards share the container instead of running off its
   right edge. The authored rail width (clamp 240-340px) plus three gaps is wider
   than the container at every desktop width, so the fourth card was always cut
   in half. Equal flex children fit exactly, and the rail behaviour below stays
   for phones where four columns cannot fit. */
@media(min-width:861px){
  .awh-grid-4{ overflow:visible !important; scroll-snap-type:none !important; padding-bottom:0 !important; }
  .awh-grid-4 > .awh-card{ flex:1 1 0 !important; scroll-snap-align:none; }
}
.awh-grid-4 .awh-media{ aspect-ratio:4/3; margin-bottom:16px; }
.awh-grid-4 .awh-title{ font-size:clamp(19px,1.5vw,23px); }
.awh-grid-4 .awh-body{ font-size:clamp(15px,1.1vw,17px); line-height:1.55; }
@media(max-width:860px){
  .awh-grid-4{ gap:16px; margin-right:-28px; }
  .awh-grid-4 > .awh-card{ flex:0 0 78%; }
  .awh-grid-4::after{ content:''; flex:0 0 28px; align-self:stretch; }
}

.strat-awh .awh-burst{ width:clamp(78px,6.6vw,111px) !important; height:clamp(78px,6.6vw,111px) !important; }
@media(max-width:860px){ .strat-awh .awh-burst{ width:84px !important; height:84px !important; } }
.strat-commit-dial{ display:block; width:clamp(78px,6.5vw,110px); height:clamp(78px,6.5vw,110px);
  margin-top:clamp(22px,2.4vw,34px); overflow:visible; }
.strat-commit-dial .scd-dot{ fill:#456232; }
.strat-commit-dial .scd-spin{ transform-box:view-box; transform-origin:50px 50px; will-change:transform; }
@media(max-width:860px){
  /* Dial moves beside the title: top-aligned with it, flush to the cards' right edge. */
  /* Title left, dial top-right on the same row, flush with the cards' right edge */
  #stratSystemSection .scutt-sidebar{ display:flex !important; flex-direction:row !important;
    align-items:flex-start !important; justify-content:space-between !important;
    gap:16px; }
  #stratSystemSection .scutt-sidebar .scutt-heading{ flex:1 1 auto; min-width:0; }
  #stratSystemSection .strat-commit-dial{ position:static !important; flex:0 0 auto !important;
    width:68px !important; height:68px !important; margin:0 !important; }
}
#stratSystemSection .scutt-c-txt{ min-width:0; }
#stratSystemSection .kim-head{ display:flex; align-items:flex-start; gap:clamp(16px,1.8vw,26px); }
#stratSystemSection .kim-head .scutt-card-title{ flex:1; min-width:0; line-height:1.2; }
#stratSystemSection .scutt-ico{ flex:0 0 auto; order:-1;
  width:clamp(38px,3.4vw,50px); height:clamp(38px,3.4vw,50px);
  margin-top:calc((clamp(23px,2.4vw,33px) * 1.2 - clamp(38px,3.4vw,50px)) / 2 - 1px);
  fill:none; stroke:var(--greenDeep); stroke-width:1;
  stroke-linecap:round; stroke-linejoin:round; transition:stroke .3s ease; }
@media(hover:hover) and (min-width:861px){
  #stratSystemSection .scutt-card:hover .scutt-ico{ stroke:#F0C257; }
}
#stratSystemSection .scutt-card.auto-on .scutt-ico{ stroke:#F0C257; }
@media(max-width:860px){
  #stratSystemSection .kim-head{ gap:14px; }
  #stratSystemSection .scutt-ico{ width:34px; height:34px; stroke-width:1.1;
    margin-top:calc((clamp(21px,5.6vw,28px) * 1.2 - 34px) / 2 - 1px); }
}
#stratSystemSection .scutt-heading{
  font-family:'OV Sage','Jost',sans-serif !important;
  font-size:clamp(32px,3.9vw,54px) !important;
  line-height:1.12 !important;
  color:var(--greenDeep);
}
.aif-mind-acc .kim-faq{ font-size:.62em; font-weight:400; white-space:nowrap; }

#aifCloseCta.web-section{ padding-top:clamp(42px,4.6vw,80px) !important; }
@media(max-width:860px){
  .awh-grid{
    display:flex !important; grid-template-columns:none !important;
    flex-wrap:nowrap; gap:16px;
    overflow-x:auto; overflow-y:hidden;
    scroll-snap-type:x proximity; overscroll-behavior-x:contain;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none; -ms-overflow-style:none;
    margin-right:-28px; padding-right:0;
  }
  .awh-grid::-webkit-scrollbar{ display:none; }
  .awh-grid > .awh-card{ flex:0 0 82%; min-width:0; scroll-snap-align:start; }
  /* trailing spacer so the last card settles back at the section inset */
  .awh-grid::after{ content:''; flex:0 0 28px; align-self:stretch; }
  .awh-media{ aspect-ratio:4/3; }
}

@media(max-width:860px){
  #aifWorksSection #aifWorksBurst{ width:64px !important; height:64px !important; margin-top:-4px !important; }
}

#cxScroll .cx-step{ justify-content:center; align-content:center; }
#cxScroll .cx-step-label{ margin:0; }

:is(#peApproachSection,#peOfferSection,#eqbApproachSection,#eqbMethodSection) .scutt-heading{
  font-family:'OV Sage','Jost',sans-serif !important;
  font-size:clamp(32px,3.9vw,54px) !important;
  line-height:1.12 !important;
}

#peKimbalSection .hb-split-story{ grid-template-columns:minmax(0,0.85fr) minmax(0,1.15fr); align-items:start; }
#peKimbalSection .hb-story-title{ position:sticky; top:calc(var(--niv-inset) + var(--niv-fab-h) + 30px); }
#peKimbalSection .scutt-heading{
  font-family:'OV Sage','Jost',sans-serif !important;
  font-size:clamp(32px,3.9vw,54px) !important;
  line-height:1.12 !important;
}
#peKimbalSection .ks-head{ min-height:0; }
@media(max-width:900px){
  #peKimbalSection .hb-split-story{ grid-template-columns:1fr; gap:clamp(10px,1.8vh,18px) !important; }
  #peKimbalSection .hb-story-title{ position:static; }
}
/* Mobile: carousel runs to a 20px inset, title/burst/dots align to those same
   edges, and the two arrows group above the carousel on its right. */
@media(max-width:760px){
  #peKimbalSection.hb-section{ padding-left:0 !important; padding-right:0 !important; }
  #peKimbalSection .hb-split-story{ gap:0 !important; }
  #peKimbalSection .pe-ks-frame{ margin-top:-10px; }
  /* star spans the arrow pair below it: 82px of drawn width (the viewBox has a
     4% margin each side, hence 89px box) with a nudge so the right edges line up */
  #peKimbalSection .pe-ks-burst{ width:89px !important; height:89px !important; margin-right:-7.6px !important; }
  #peKimbalSection .hb-story-title{ padding-left:10px !important; padding-right:6.4px !important; }
  #peKimbalSection .ks-dots{ padding-left:10px !important; padding-right:10px !important; }
  #peKimbalSection .pe-ks-frame{
    display:flex !important; flex-wrap:wrap; align-items:center;
    padding:0 10px !important; gap:6px; }
  #peKimbalSection .pe-ks-arrow{
    display:flex !important; position:static !important; transform:none !important;
    flex:0 0 auto; width:38px !important; height:38px !important; opacity:1 !important; }
  #peKimbalSection #peKsPrev{ order:1; margin-left:auto !important; }
  #peKimbalSection #peKsNext{ order:2; }
  #peKimbalSection .ks-stage{ order:3; flex:0 0 100%; width:100%; margin-top:2px; }
}

@media(min-width:901px){
  /* the removed button freed vertical room — spend it on card height only */
  #pe-page-stats .pe-stat-cell{ aspect-ratio:1312/1860; }
}

/* Kimbal case study (PE): title, scroll-rotating burst and arrows stack in the
   left column; the carousel sits top-aligned beside them. */
#peKimbalSection .hb-split-story{ align-items:start; }
#peKimbalSection .hb-story-title{ display:flex; flex-direction:column; align-items:flex-start; }
#peKimbalSection .pe-ks-burst{ width:clamp(128px,12vw,192px); height:clamp(128px,12vw,192px);
  margin-top:clamp(4px,0.6vw,12px); margin-left:-8px; fill:none; stroke:var(--greenDeep); stroke-width:1.4;
  transform:rotate(0deg); will-change:transform; }
#peKimbalSection .pe-ks-burst circle{ fill:var(--greenDeep); stroke:none; }
#peKimbalSection .hb-story{ margin-top:0; }
@media(min-width:901px){
  /* slightly larger carousel, still top-aligned with the title */
  #peKimbalSection .hb-split-story{ grid-template-columns:minmax(0,0.72fr) minmax(0,1.28fr); }
}
@media(max-width:900px){
  #peKimbalSection .hb-story-title{
    flex-direction:row !important; align-items:flex-start !important;
    justify-content:space-between; gap:16px;
    padding-left:26px; padding-right:26px; box-sizing:border-box; }
  #peKimbalSection .ks-dots{ padding-left:26px; padding-right:26px; box-sizing:border-box; }
  #peKimbalSection .hb-story-title .scutt-heading{ flex:1 1 auto; min-width:0; }
  #peKimbalSection .pe-ks-burst{
    flex:0 0 auto; width:clamp(72px,20vw,104px) !important; height:clamp(72px,20vw,104px) !important;
    margin-top:2px !important; margin-left:0 !important; }
}

/* ── Carousels on touch devices: native horizontal snap scrolling ────────── */
@media (hover:none), (pointer:coarse){
  #ksStage, #peKsStage{
    display:flex; overflow-x:auto; overflow-y:hidden;
    scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch;
    overscroll-behavior-x:contain; touch-action:pan-x pan-y;
    scrollbar-width:none; -ms-overflow-style:none;
  }
  #ksStage::-webkit-scrollbar, #peKsStage::-webkit-scrollbar{ display:none; }
  #ksStage .ks-slide, #peKsStage .ks-slide{
    position:relative; inset:auto; flex:0 0 100%; width:100%;
    transform:none !important; transition:none !important;
    scroll-snap-align:center; scroll-snap-stop:always;
  }
}

@media(max-width:860px){
  :is(#peApproachSection,#peOfferSection).web-section{
    padding-top:clamp(30px,3.9vh,46px) !important;
    padding-bottom:clamp(30px,3.9vh,46px) !important; }
}

/* Manual paging beside the Kimbal carousel: bare green chevrons, no box, so the
   artwork stays uncovered. They sit outside the stage, which keeps working as a
   native scroller on touch. */
.pe-ks-frame{ display:flex; align-items:center; gap:clamp(8px,1.2vw,18px); }
.pe-ks-frame .ks-stage{ flex:1 1 auto; min-width:0; }
.pe-ks-arrow{ flex:0 0 auto; width:28px; height:48px; display:flex; align-items:center;
  justify-content:center; padding:0; background:none; border:none; cursor:pointer;
  color:var(--greenDeep); opacity:.55; transition:opacity .2s ease, transform .2s ease; }
.pe-ks-arrow svg{ width:24px; height:24px; fill:none; stroke:currentColor; stroke-width:1.5;
  stroke-linecap:round; stroke-linejoin:round; }
.pe-ks-arrow:hover{ opacity:1; }
#peKsPrev:hover{ transform:translateX(-2px); }
#peKsNext:hover{ transform:translateX(2px); }
@media(max-width:900px){
  .pe-ks-frame{ gap:4px; }
  .pe-ks-arrow{ width:22px; height:40px; }
  .pe-ks-arrow svg{ width:20px; height:20px; }
}

.conv-word-reveal .cwr-word{ opacity:0; }
.conv-word-reveal.cwr-in-view .cwr-word{ opacity:1; }
.conv-word-reveal:not(.cwr-armed):not(.cwr-in-view) .cwr-word{
  animation:cwrFailSafe 0s linear 2.5s forwards; }
@keyframes cwrFailSafe{ to{ opacity:1; } }

/* Knowledge panel: single-line titles, so the three bodies start on the same
   line as each other rather than following titles of differing heights. */
#dnavKnowPanel .dnav-cell-title{ white-space:nowrap; }
#dnavKnowPanel .dnav-cell{ display:flex; flex-direction:column; }
#dnavKnowPanel .dnav-cell-body{ margin-top:18px; }

/* Case Study page head — aligned to the logo's inset, regular weight. */
#caseStudyHero{ padding-left:0 !important; padding-right:0 !important;
  padding-top:calc(var(--niv-inset) + var(--niv-fab-h) + 46px) !important; }
#caseStudyHero .section-inner{ max-width:none !important; margin:0 !important;
  padding-left:var(--hero-text-inset) !important; padding-right:var(--niv-inset) !important; }
#caseStudyHero .kb-title-lg{ font-family:'OV Sage','Jost',sans-serif;
  font-size:clamp(32px,3.6vw,52px); font-weight:500; line-height:1.12; color:var(--ink);
  letter-spacing:-.01em; margin:0; white-space:nowrap; }
#caseStudyHero .kb-title-lg strong{ font-weight:700; }
@media(max-width:760px){
  #caseStudyHero .kb-title-lg{ white-space:normal; font-size:clamp(34px,10vw,50px); line-height:1.08; }
}
@media(max-width:760px){
  #caseStudyHero{ padding-top:calc(var(--niv-inset) + var(--niv-fab-h) + 28px) !important; }
  #caseStudyHero .section-inner{ padding-left:16px !important; padding-right:16px !important; }
}

/* ── "Hear from our Risk-takers": approved final design ─────────────────────
   Signed off 2026-09-08, and a deliberate departure from what this stylesheet
   shipped. What was here: a CENTRED LT Serif heading (.hero-section-header
   takes font-family:var(--f-serif) at 20-home-heroes-offerings-popup.css:39,
   and .hero-subrow centres it), with the nav absolutely positioned and its
   buttons rendered as 54px circles by the canonical arrow rule at
   21-home-hero-story.css:428.

   The approved design is a LEFT-aligned OV Sage heading with the arrows
   squared off and sitting at the right end of that same row. Scoped to
   #homeConvWrapper on purpose: the canonical arrow rule is shared by every
   carousel on the site, and nothing else was signed off. */
#homeConvWrapper .conv-subrow.hero-subrow{
  justify-content:space-between !important; gap:24px; }
#homeConvWrapper .hero-section-header{
  font-family:'OV Sage','Jost',sans-serif !important; text-align:left !important; }
#homeConvWrapper .hero-nav{
  position:static !important; transform:none !important; flex:0 0 auto; }
#homeConvWrapper .hero-nav .conv-arrow-circle{
  border-radius:0 !important; border:1px solid var(--ink) !important;
  background:transparent !important; color:var(--ink) !important; }

/* ---- Class-scoped fallback for the mobile section padding ------------------
   Reported: on phones this section's heading sits hard against the section's
   top edge - "it's too much tighter, earlier we had better padding".

   Both rules above are keyed on :is(#home-ways,#aif-ways,...), and those ids
   exist only once deploy/about-ids.js has stamped them. Where the stamp does
   not land the section keeps Webflow's own padding, which is tighter than the
   40px the design calls for. The same values, hung on the class the element
   always carries, so the spacing no longer depends on the id arriving. */
@media (max-width:760px){
  .ways-section{ padding-top:56px !important; padding-bottom:64px !important; }
}

/* ===== 98-webflow-native.css ===== */
/* ═══════════════════════════════════════════════════════════════════════════
   98 — WEBFLOW NATIVE LAYER
   Rules that exist because the Webflow build expresses a piece of the source
   design with a different element than the static build does. Every rule here
   has a matching native class in the Designer, so the canvas and the published
   page agree.

   Three kinds of rule live here:

   1. CARRIERS. Webflow cannot bind an attribute value or an inline style on a
      Block, so CMS values that must land in an attribute ride in a hidden
      element and are stamped on at runtime (deploy/niv-stamp.js).

   2. THE COLLECTION LIST LAYER. Webflow renders wrapper > list > item, so a
      grid class sits on .w-dyn-items and the cards are one level deeper than
      in the static markup. These rules pass the sizing through .w-dyn-item.

   3. ELEMENT SWAPS. A CMS poster is an <img> rather than a background-image;
      a card is an <a> rather than a <div>; the subscribe box is a real
      Webflow form rather than a bare input and button.
   ═════════════════════════════════════════════════════════════════════════ */

/* ── 1. Carriers ──────────────────────────────────────────────────────────
   Never rendered. Read by the stamper, then ignored. */
/* BOTH spellings. The Designer carries two carrier classes - .nvs-carrier on the
   private equity grid and .nv-carrier on the home grid - and only the first was
   ever hidden here, so the home page printed the raw logo image on top of the
   JS-painted mask as a doubled mark. Keep both, and keep both flagged. */
.nvs-carrier, .nv-carrier{ display:none !important; }

/* ── 2. The Collection List layer ─────────────────────────────────────────
   .w-dyn-item is Webflow's per-item wrapper. It has no counterpart in the
   static build, so it must be transparent to layout: the card inside has to
   receive the width (and, in a stretched column, the height) the grid gave
   the item. */
.pod-grid > .w-dyn-item,
.news-grid > .w-dyn-item,
.signals-grid > .w-dyn-item,
.know-feature > .w-dyn-item,
.know-all-news > .w-dyn-item{ display:flex; min-width:0; }

/* MEASURED at 390px: the grid track resolved to 1080px on a 354px grid, so
   every 88% card came out 950px wide and the whole section scrolled instead
   of the rail inside it.

   A 1fr track is minmax(auto, 1fr), and that auto floor is the item's
   min-content. In the static build the scroller WAS the grid item, so
   overflow-x:auto made it a scroll container and its min-content was zero.
   The scroller is now one level in; .w-dyn-list has no overflow of its own,
   so its min-content is the entire un-scrolled row and the track grows to
   fit it. This puts the floor back where the static build had it. */
.know-all-grid > .w-dyn-list{ min-width:0; }

.pod-grid > .w-dyn-item > *,
.news-grid > .w-dyn-item > *,
.signals-grid > .w-dyn-item > *,
.know-feature > .w-dyn-item > *,
.know-all-news > .w-dyn-item > *{ flex:1 1 auto; width:100%; min-width:0; }

/* The news column stretches to the article column's height and its cards share
   that height — the static build says this with .news-card directly, which is
   now a grandchild, so it has to be said at two levels instead of one.

   min-height must stay AUTO here. The static rule pairs flex-basis 0 with
   min-height 0 safely because it lands on .news-card, which carries its own
   min-height:220px. On .w-dyn-item, which carries nothing, that same pair is
   a basis of zero with no floor: every card collapses to a hairline and the
   column telescopes into itself. Auto lets each item floor at its card. */
@media(min-width:761px){
  #page-home #know-all .know-news-col{
    align-self:stretch; display:flex; flex-direction:column;
  }
  #page-home #know-all .know-news-col > .know-all-news{ flex:1 1 auto; }
  #page-home #know-all .know-all-news > .w-dyn-item{ flex:1 1 0; }
}

/* Strategy says the same thing, and needs it said the same way. The static
   build puts align-self:stretch + height:100% on .know-all-news itself
   (97-ways-mobile.css). Here .know-all-news is the Collection List, one level
   inside the grid item, so the stretch belongs to the wrapper and the fill to
   the list. Without this the news column sizes to its own content and stops
   short of the research column — the mismatch reported on /strategy.

   .news-card carries min-height:220px, so flex-basis 0 on .w-dyn-item still
   has a floor, exactly as on home. */
@media(min-width:761px){
  .strat-know .know-all-grid > .know-news-col{ align-self:stretch; }
  .strat-know .know-news-col > .know-all-news{ flex:1 1 auto; height:100%; }
  .strat-know .know-all-news > .w-dyn-item{ flex:1 1 0; }
}
@media(max-width:760px){
  /* One column below 760: the wrapper no longer shares a row to stretch to. */
  .strat-know .know-all-grid > .know-news-col{ align-self:auto; }
  .strat-know .know-all-news > .w-dyn-item{ flex:0 0 88% !important; scroll-snap-align:none !important; min-width:0; }
  .strat-know .know-feature > .w-dyn-item{ flex:0 0 88% !important; min-width:0; }
}

/* ── 3. Element swaps ─────────────────────────────────────────────────────*/

/* Cards are anchors now (the news card links to its coverage, the research
   card to its article), so the anchor defaults have to go. */
.kb-card, .news-card{ text-decoration:none; color:var(--ink); }
.kb-card:visited, .news-card:visited{ color:var(--ink); }

/* A CMS image cannot be a background-image, so the poster is an <img> laid
   over the placeholder icon: with no image on the item, Webflow omits the
   <img> and the icon shows through, which is exactly the static behaviour. */
.kb-poster-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
/* The icon carries opacity:.5 (a Designer style), and opacity puts it in the
   same paint layer as positioned boxes, so being later in the DOM it drew on
   top of the poster. z-index lifts the image above it; with no image on the
   item the <img> is absent and the icon still shows. */
.kb-poster .kb-poster-img{ z-index:1; }

/* The play glyph is an embed, so the svg is a grandchild of the badge and
   its percentage sizing needs a full-size box to resolve against. */
.pod-play-ico{ display:flex; align-items:center; justify-content:center; width:100%; height:100%; }

/* The crawlable transcription of the ring diagram's thirteen words. The labels
   themselves are curved <textPath>, which no Text Block can reproduce, so the
   words also ship here as ordinary paragraphs for search and screen readers.
   Visually hidden rather than display:none, which crawlers discount. Mirrors
   the native .phil-ring-words style on the Webflow page so both surfaces and
   the static build agree. */
.phil-ring-words{
  position:absolute; width:1px; height:1px; overflow:hidden;
  white-space:nowrap; margin:-1px; padding:0; border:0; clip-path:inset(50%);
}
.phil-ring-words > p{ margin:0; font-size:12px; line-height:1.4; }

/* The month label is a Webflow text block, not a bare <label>. */
.cmp-mb-label{ font-family:'Jost',sans-serif; font-size:clamp(14px,1.2vw,16px); color:var(--ink); }

/* Subscribe is a real Webflow form: the wrapper keeps .subscribe-right's
   flex basis and the <form> itself carries the column. */
.subscribe-form{ display:flex; flex-direction:column; gap:12px; width:100%; margin:0; }
.subscribe-box .subscribe-btn{
  width:100%; background:var(--terra); color:var(--paper); border:1.5px solid var(--terra);
  font-family:'OV Sage','Jost',sans-serif; font-size:20px; padding:16px 32px; height:auto;
  justify-content:center;
}

/* ── 4. The mobile rails ──────────────────────────────────────────────────
   Below 760 the news row, the news panel, the research panel and the ALL
   panel's article column all become native horizontal scrollers with the
   next card peeking. Every one of those rules sizes a DIRECT CHILD —
   `> .news-card`, `> .kb-card` — and the direct child is now .w-dyn-item.
   The container rules still land (the ids and classes sit on .w-dyn-items),
   so only the card widths have to be said again, one level out.

   Kept verbatim from 90-rebrand-overrides: 100% where a single card fills
   the viewport, 88% where the next one should peek. */
@media(max-width:760px){
  #page-home .know-all-news > .w-dyn-item,
  #page-home .news-grid > .w-dyn-item,
  #page-home #signalsGrid > .w-dyn-item{
    flex:0 0 100% !important; scroll-snap-align:start; min-width:0;
  }
  #page-home #signalsGrid.multi > .w-dyn-item{ flex:0 0 88% !important; }
  #page-home #newsTrack > .w-dyn-item{ flex:0 0 100% !important; scroll-snap-align:none !important; }
  #page-home #newsTrack.multi > .w-dyn-item{ flex:0 0 88% !important; }
  /* Research and News tabs peek like ALL: the next card shows at the edge.
     When a source/category filter leaves a single card, the filter script
     marks the track .single and that card fills the width.
     (This used to be a :has() test on the cards' inline display:none. A
     selector on the style attribute inside :has() makes iOS Safari
     re-serialise and re-match inline styles on EVERY style write on the page
     — the hero engine, the PE morph and the logo marquee write one per
     frame — which is what made every scroll animation stutter on phones.) */
  #page-home #newsTrack > .w-dyn-item,
  #page-home #signalsGrid > .w-dyn-item{ flex:0 0 88% !important; }
  #page-home #newsTrack.single > .w-dyn-item,
  #page-home #signalsGrid.single > .w-dyn-item{ flex:0 0 100% !important; }

  /* ALL panel: the news row and the article column both peek. */
  #page-home #know-all .know-all-news > .w-dyn-item{
    flex:0 0 88% !important; scroll-snap-align:none !important;
  }
  #page-home #know-all .know-feature > .w-dyn-item{ flex:0 0 88% !important; min-width:0; }

  /* The wrapper is a grid item at every width; on mobile the grid is one
     column, so it must not try to stretch a row it no longer shares. */
  #page-home #know-all .know-news-col{ align-self:auto; }
}

/* ── AIF keep-in-mind chevron ────────────────────────────────────────────
   In the source the chevron IS the <svg class="kim-chev">. As an HtmlEmbed
   the class lands on Webflow's wrapper div, so the wrapper would take the
   22px box and the svg inside it would have nothing to resolve against.
   Dissolving the wrapper puts the inner svg.kim-chev back in the flex row
   exactly where the source rules expect it. */
.aif-mind-acc .w-embed.kim-chev{ display:contents; }

/* ── AIF "How an AIF works" burst ────────────────────────────────────────
   Same wrapper problem as the chevron: the source svg carries BOTH .awh-burst
   and #aifWorksBurst, and the id rule (118px) is what gives the star its real
   size. As an HtmlEmbed the classes land on the wrapper, which then clamps the
   svg to the 74px class size. Dissolving the wrapper hands both selectors back
   to the svg itself, and the id wins as it does in the source. */
.awh-head > .w-embed.awh-burst{ display:contents; }

/* Source buttons are <button>; Webflow's Button element renders an <a>, which
   picks up the UA underline. Colour already comes from .btn and its combos. */
a.btn{ text-decoration:none; }

/* Dissolving an embed wrapper with display:contents keeps its ::before/::after
   boxes, and Webflow gives .w-embed a display:table clearfix pair. Inside a
   space-between flex row those two become flex items of their own and take the
   end slot, which is what pushed the works burst in off the right edge. */
.aif-mind-acc .w-embed.kim-chev::before,
.aif-mind-acc .w-embed.kim-chev::after,
.awh-head > .w-embed.awh-burst::before,
.awh-head > .w-embed.awh-burst::after{ content:none; }

/* The source sets the quote section's cream ground with an inline style, which
   outranks `#aifWhy{ background:var(--paper) }` in 90-rebrand-overrides. Here
   the ground is a Webflow class, so that id rule wins instead and the section
   came out the same tone as the navbar. Same specificity, later file. */
#aifWhy{ background:#FCF7EA; }

/* AIF hero parallax, bound straight to the ids.

   The ported effect is a scroll-driven animation, but the app only attaches it
   after tagging the section .nv-plx-host and the layer .nv-plx-layer at
   runtime. On the published page that tagging does not land (the works-section
   images, which use a different per-frame path in the same script, animate
   fine), so the layer never got an animation at all.

   MEASURED in Chromium: this pair moves the layer 12px -> 150px -> 193px over
   the hero's exit, with no script involved. Same ramp and same endpoints as the
   source: cover 0%..100% IS (vh - top)/(vh + h), and the amplitude is 17% of
   the layer's own height. --nv-plx is still honoured when the app does write it
   inline (an inline value wins), so this is the exact effect either way; the
   21.5vh fallback is that same 0.17 x 144% x 88vh worked out.

   #aifHeroBg (1,0,0) outranks .nv-plx-layer (0,1,0), so if both ever apply
   there is one animation, not two. */
@supports (animation-timeline: view()) and (animation-range: cover 0% cover 100%){
  @keyframes nvAifHeroPlx{
    from{ transform:translate3d(0, calc(var(--nv-plx, 21.5vh) * -1), 0); }
    to  { transform:translate3d(0, var(--nv-plx, 21.5vh), 0); }
  }
  #aifHero{ view-timeline-name:--nvAifPlx; view-timeline-axis:block; }
  #aifHeroBg{
    animation:nvAifHeroPlx linear both;
    animation-timeline:--nvAifPlx;
    animation-range:cover 0% cover 100%;
  }
}

/* Strategy hero parallax — the same id-bound binding, for the same reason.
   The app's runtime tagging does not land here either, so without this the
   Strategy hero photo sits still while AIF's moves.

   MEASURED (spec §5): the layer is 1294.55px at 1440 and 1139.04px at 1024,
   1.4383x the hero box. 17% of those is 220px / 193.6px, so 220px is the
   desktop amplitude and the fallback below. The app still writes --nv-plx
   inline whenever it runs, and an inline value wins, so this is exact then and
   close enough when the script never arrives.

   #stratHeroBg (1,0,0) outranks .nv-plx-layer (0,1,0): if the runtime tagging
   ever does land, there is one animation, not two. */
@supports (animation-timeline: view()) and (animation-range: cover 0% cover 100%){
  @keyframes nvStratHeroPlx{
    from{ transform:translate3d(0, calc(var(--nv-plx, 220px) * -1), 0); }
    to  { transform:translate3d(0, var(--nv-plx, 220px), 0); }
  }
  #stratHero{ view-timeline-name:--nvStratPlx; view-timeline-axis:block; }
  #stratHeroBg{
    animation:nvStratHeroPlx linear both;
    animation-timeline:--nvStratPlx;
    animation-range:cover 0% cover 100%;
  }
}

/* ── AIF backer marquee (Collection List) ────────────────────────────────
   .bkr-track is now .w-dyn-items, so a .w-dyn-list sits between the rail and
   the track and a .w-dyn-item between the track and each logo box. The track's
   width:max-content has to be carried by the wrapper too, or the rail's
   scrollable width collapses to 100%. */
#aifBkrMarquee > .w-dyn-list{ width:max-content; }
#aifBkrTrack > .w-dyn-item{ display:flex; }

/* ── AIF research rail (Collection List) ─────────────────────────────────
   Every source rule here is `.akr-rail > .kb-card`, a direct-child selector
   that the two wrappers break. Dissolving both hands the cards straight back
   to the rail's flex row, so the gap, the snap and the card basis all come
   from the source rules untouched. The one thing that has to move is the
   flex basis itself, which now belongs to .w-dyn-item.

   Card basis follows the source's
   `:is(#aifKnowledge,#eqbKnowledge) .akr-rail > .kb-card` — 2.2-up on desktop,
   82% (one card plus a peek) at <=900. Both have to be restated here: the
   basis now lives on .w-dyn-item, so the source's own mobile rule, which
   targets .akr-rail's direct child, no longer reaches the element that
   actually sizes the track. */
#aifResRail > .w-dyn-list,
#aifResRail .w-dyn-items{ display:contents; }
#aifResRail > .w-dyn-list::before,
#aifResRail > .w-dyn-list::after{ content:none; }
#aifResRail .w-dyn-item{
  flex:0 0 calc((100% - 36px) / 2.2); min-width:0;
  scroll-snap-align:start; display:flex;
}
#aifResRail .w-dyn-item > .kb-card{
  flex:1 1 auto; min-width:0; display:flex; flex-direction:column;
}
@media(max-width:900px){
  #aifResRail .w-dyn-item{ flex:0 0 82%; }
}

/* The ways section's inner padding is an inline style in the source
   (`padding:0 28px`), so there is no rule for it to inherit here and the
   native class carries 64px. Scoped to the AIF copy: the home section has the
   same divergence, but it is signed-off work and is not changed from here. */
#aif-ways .section-inner.ways-inner{ padding-left:28px; padding-right:28px; }

/* PE companies grid (§7). The burst is an HtmlEmbed, so Webflow puts the
   class on its wrapper div and the inner svg — which carries the same class
   in the source markup — has nothing to resolve against. Dissolve the
   wrapper; kill the .w-embed clearfix pair with it, since the card is a flex
   row and those pseudos would otherwise become flex items. */
#peCoSection .w-embed.pe-co-burst{ display:contents; }
#peCoSection .w-embed.pe-co-burst::before,
#peCoSection .w-embed.pe-co-burst::after{ content:none; }

/* PE page stats (§8). The stat motifs and the guide rail ride in HtmlEmbeds
   carrying .svg-slot (display:contents). That keeps the wrapper box out of
   the way but not its ::before/::after — Webflow's .w-embed clearfix pair —
   and .pe-ico-wrap is a flex row, so the pair would take the first slot and
   shove the motif sideways. */
#pe-page-stats .w-embed.svg-slot::before,
#pe-page-stats .w-embed.svg-slot::after{ content:none; }

/* Same .w-embed clearfix problem in the two remaining PE embeds: the Kimbal
   chevron buttons and the chasm chart. .pe-ks-frame and .pe-ks-arrow are both
   flex, so the pair would sit beside the chevron and shift it. */
#peKimbalSection .w-embed.svg-slot::before,
#peKimbalSection .w-embed.svg-slot::after,
#cxChartScroll .w-embed.svg-slot::before,
#cxChartScroll .w-embed.svg-slot::after{ content:none; }

/* The chart svg is inside an embed wrapper that .svg-slot dissolves, so
   `.cx-chart-wrap svg` still matches. Nothing else to do here. */

/* Equity Baskets research rail. Same Collection List shape as AIF's: the
   cards sit two wrappers deep, so the rail's own flex rules never reach them
   and the basis has to move onto .w-dyn-item. Mirrors #aifResRail exactly.

   The margin-right divergence the spec flagged between the two copies is not
   a bug: `--akr-bleed` is declared on #aifKnowledge only, so the shared
   `margin-right:calc(-1 * var(--akr-bleed))` resolves to nothing here and the
   rail sits flush. Left as authored. */
#eqbResRail > .w-dyn-list,
#eqbResRail .w-dyn-items{ display:contents; }
#eqbResRail > .w-dyn-list::before,
#eqbResRail > .w-dyn-list::after{ content:none; }
#eqbResRail .w-dyn-item{
  flex:0 0 calc((100% - 36px) / 2.2); min-width:0;
  scroll-snap-align:start; display:flex;
}
#eqbResRail .w-dyn-item > .kb-card{
  flex:1 1 auto; min-width:0; display:flex; flex-direction:column;
}
@media(max-width:900px){
  #eqbResRail .w-dyn-item{ flex:0 0 82%; }
}

/* The basket cards' Explore More is a real anchor now, not the source's
   button, so it picks up the UA underline the way the AIF buttons did. */
#eqbBasketSection a.btn{ text-decoration:none; }


/* ===== Connect (/connect) — class-scoped twins of the #page-contact rules =====
   Webflow will not let us put `id="page-contact"` on the section: every route
   to it, API and Designer alike, returns

       [Conflict] The operation could not be applied to the component map

   the same refusal the Research Article template gave. So the 74 id-scoped
   rules in 20-home-heroes-offerings-popup.css and 97-ways-mobile.css never
   match on the Webflow build. These are their twins, keyed on a `.contact-page`
   class that the section CAN carry, generated from the source rules rather than
   retyped so they cannot drift.

   The originals are deliberately left in place: site/contact.html still uses
   them, and they remain the reference for parity. They are inert here — an id
   that does not exist matches nothing — so there is no specificity contest
   between the two sets, only between these twins and ordinary class rules,
   where `.contact-page .x` (0,2,0) ranks exactly where `#page-contact .x` did
   relative to a bare `.x`.

   ⚠ Regenerate these whenever a #page-contact rule changes:
   `python3 work/twin-contact.py`. */
.contact-page .web-section .section-inner{ padding-top:calc(var(--niv-inset) + var(--niv-fab-h) + 24px); padding-left:var(--niv-inset); padding-right:var(--niv-inset); max-width:none; box-sizing:border-box; }
.contact-page .event-gallery-sidebar .sec-title{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(34px,4.2vw,58px); font-weight:500; line-height:1.12; }
.contact-page .contact-lead{ display:block; }
.contact-page .contact-right{ display:block; }
.contact-page .contact-grid{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(40px,4.5vw,72px); align-items:start; }
.contact-page .contact-headline{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(38px,4.6vw,64px); font-weight:500; line-height:1.08; color:var(--ink); margin:10px 0 20px; letter-spacing:-.01em; }
.contact-page .contact-sub{ font-family:'Inter',sans-serif; font-size:clamp(16px,1.4vw,19px); line-height:1.6; color:var(--gray); max-width:520px; margin:0 0 44px; }
.contact-page .contact-trust{ display:grid; grid-template-columns:repeat(4,1fr); gap:26px; margin-bottom:52px; }
.contact-page .trust-num{ font-family:'OV Sage','Jost',sans-serif; font-variant-numeric:lining-nums; font-feature-settings:'lnum' 1; font-size:clamp(32px,3vw,44px); font-weight:500; color:var(--greenDeep); line-height:1; margin-bottom:8px; }
.contact-page .trust-item svg{ width:26px; height:26px; color:var(--greenDeep); margin-bottom:14px; }
.contact-page .trust-title{ font-family:'OV Sage','Jost',sans-serif; font-size:16px; font-weight:500; color:var(--ink); line-height:1.2; margin-bottom:8px; }
.contact-page .trust-body{ font-family:'Inter',sans-serif; font-size:13px; line-height:1.45; color:var(--gray); }
.contact-page .contact-teams{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:16px 0 40px; }
.contact-page .team-card{ border:1.5px solid var(--greenDeep); padding:20px 18px; display:flex; flex-direction:column; align-items:flex-start; text-align:left; transition:background-color .2s ease; }
.contact-page .team-card:hover{ background:var(--greenDeep); }
.contact-page .team-card:hover .team-name{ color:var(--gold); }
.contact-page .team-card:hover .team-desc, .contact-page .team-card:hover .team-email, .contact-page .team-card:hover .team-hours{ color:var(--paper); }
.contact-page .team-name{ font-family:'OV Sage','Jost',sans-serif; font-size:20px; font-weight:500; color:var(--ink); margin-bottom:10px; }
.contact-page .team-desc{ font-family:'Inter',sans-serif; font-size:12.5px; line-height:1.45; color:var(--ink); margin-bottom:16px; }
.contact-page .team-email{ font-family:'Inter',sans-serif; font-size:13px; color:var(--ink); text-decoration:underline; text-underline-offset:2px; margin-bottom:14px; }
.contact-page .team-hours{ font-family:'Inter',sans-serif; font-size:14.5px; color:var(--ink); margin-top:auto; }
.contact-page .contact-banner{ display:flex; align-items:center; gap:20px; background:var(--tint); border:1.5px solid color-mix(in srgb, var(--gold) 55%, transparent); padding:22px 26px; }
.contact-page .cb-mark{ width:36px; height:36px; flex:none; }
.contact-page .cb-mark line{ stroke:var(--greenDeep); stroke-width:5; stroke-linecap:round; }
.contact-page .cb-mark circle{ fill:var(--greenDeep); }
.contact-page .cb-title{ font-family:'OV Sage','Jost',sans-serif; font-size:18px; font-weight:500; color:var(--greenDeep); margin-bottom:5px; }
.contact-page .cb-body{ font-family:'Inter',sans-serif; font-size:14px; line-height:1.5; color:var(--ink); opacity:.85; }
.contact-page .contact-form-card{ border:1.5px solid color-mix(in srgb, var(--greenDeep) 30%, transparent); background:color-mix(in srgb, var(--tint) 55%, var(--paper)); padding:clamp(26px,3vw,40px); }
.contact-page .cf-title{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(26px,2.4vw,34px); font-weight:500; color:var(--ink); margin-bottom:8px; }
.contact-page .cf-sub{ font-family:'Inter',sans-serif; font-size:14px; color:var(--gray); margin-bottom:26px; }
.contact-page .contact-form-grid{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.contact-page .contact-form-card .dummy-input{ font-family:'Inter',sans-serif; font-size:14px; border:1.5px solid color-mix(in srgb, var(--greenDeep) 26%, transparent); background:var(--paper); padding:15px 16px; }
.contact-page .contact-form-card .dummy-input:focus{ outline:none; border-color:var(--greenDeep); }
.contact-page .cf-select{ appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236b6b5f' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 16px center; cursor:pointer; }
.contact-page .cf-message{ min-height:150px; resize:vertical; }
.contact-page .cf-secure{ display:flex; align-items:center; gap:8px; font-family:'Inter',sans-serif; font-size:13px; color:var(--gray); margin:4px 0 22px; }
.contact-page .cf-secure svg{ width:15px; height:15px; flex:none; }
.contact-page .cf-submit{ width:100%; justify-content:center; background:var(--greenDeep); border-color:var(--greenDeep); color:var(--paper); padding:17px; font-size:15px; position:relative; overflow:hidden; }
.contact-page .cf-submit > span{ position:relative; z-index:1; transition:color .3s ease; }
.contact-page .cf-submit::before{ content:''; position:absolute; inset:0; background:#F0C157; clip-path:circle(0% at 34% 50%); transition:clip-path .52s cubic-bezier(.22,.75,.3,1); z-index:0; pointer-events:none; }
.contact-page .cf-submit:hover::before{ clip-path:circle(230% at 34% 50%); }
.contact-page .cf-submit:hover{ background:var(--greenDeep); border-color:#F0C157; }
.contact-page .cf-submit:hover > span{ color:var(--greenDeep); }
.contact-page .contact-call-card{ display:flex; align-items:center; justify-content:space-between; gap:18px; border:1.5px solid color-mix(in srgb, var(--greenDeep) 22%, transparent); padding:22px 26px; margin-top:16px; }
.contact-page .cc-title{ font-family:'OV Sage','Jost',sans-serif; font-size:18px; font-weight:500; color:var(--ink); margin-bottom:4px; }
.contact-page .cc-body{ font-family:'Inter',sans-serif; font-size:13.5px; color:var(--gray); }
.contact-page .cc-btn{ flex:none; display:inline-flex; align-items:center; gap:9px; background:transparent; border-color:var(--greenDeep); color:var(--greenDeep); padding:13px 20px; font-size:14px; }
.contact-page .cc-btn svg{ width:17px; height:17px; }
.contact-page .cc-btn:hover{ background:var(--greenDeep); color:var(--paper); }
.contact-page .contact-reach{ display:flex; flex-wrap:wrap; align-items:center; gap:12px 26px; margin-top:28px; font-family:'Inter',sans-serif; }
.contact-page .cr-label{ font-size:13.5px; color:var(--gray); }
.contact-page .cr-item{ display:inline-flex; align-items:center; gap:9px; font-size:14px; color:var(--ink); }
.contact-page .cr-item svg{ width:17px; height:17px; color:var(--greenDeep); }
@media(max-width:980px){
  .contact-page .contact-grid{ grid-template-columns:1fr; }
  .contact-page .contact-trust{ grid-template-columns:1fr 1fr; }
}
@media(max-width:560px){
  .contact-page .contact-trust, .contact-page .contact-teams, .contact-page .contact-form-grid{ grid-template-columns:1fr; }
  .contact-page .contact-call-card{ flex-direction:column; align-items:flex-start; }
}
@media(max-width:760px){
  .contact-page .web-section .section-inner{ padding-left:16px !important; padding-right:16px !important; }
  .contact-page .contact-grid{ gap:40px; }
  .contact-page .contact-headline{ font-size:clamp(32px,9vw,46px) !important; margin:6px 0 16px; }
  .contact-page .contact-sub{ font-size:clamp(15px,4.2vw,18px) !important; max-width:100% !important; margin-bottom:32px; }
  .contact-page .contact-trust{ grid-template-columns:1fr 1fr !important; gap:18px; margin-bottom:40px; }
  .contact-page .trust-num{ font-size:clamp(28px,8vw,38px) !important; }
  .contact-page .contact-teams{ grid-template-columns:1fr !important; }
  .contact-page .contact-form-card{ padding:24px 20px !important; }
  .contact-page .cf-title{ font-size:clamp(24px,6.6vw,30px) !important; }
  .contact-page .contact-form-grid{ grid-template-columns:1fr !important; }
  .contact-page .cf-message{ min-height:130px; }
  .contact-page .contact-call-card{ flex-direction:column; align-items:stretch; text-align:left; gap:14px; padding:22px 20px; }
  .contact-page .cc-btn{ width:100%; justify-content:center; }
  .contact-page .contact-banner{ padding:20px; }
  .contact-page .contact-reach{ gap:10px 20px; }
}
.contact-page > .web-section:first-child{ padding-top:0 !important; }
.contact-page > .web-section:first-child > .section-inner{ padding-top:calc(var(--niv-inset) + var(--niv-fab-h) + 56px) !important; }

/* The Connect form's subject options come from a hidden Collection List of
   Contact Desks (see deploy/connect-form.js §1) — it is a data source, never a
   visible element. `.cf-hidden` is also declared as a Webflow class so the
   Designer shows it hidden too; this is the belt to that braces. */
[data-cf-subject-src]{ display:none !important; }
.cf-hidden{ display:none !important; }

/* ===== Connect — the two neutralisers that do not survive the Webflow build =====
   Both are `99-semantic.css` rules that the static page relies on and the
   Webflow page never matches. WEBFLOWCONTACTSPEC §Neutralisers predicted both.

   1. `:where(a[data-sem="a-inline"]){ color:inherit; text-decoration:none }`
      keys on an attribute the semantic pass stamps onto the static markup.
      Webflow's links carry no `data-sem`, so the two links in the reach block
      fell back to the UA's blue-and-underlined. They are the only two real
      links on the page, so it read as broken.

   2. `main :where(address.contact-reach){ font-style:normal }` needs a <main>
      ancestor. The Webflow page puts the section straight in <body>, so the
      selector misses and the UA's italic <address> came back.

   Fixed by class rather than by re-adding `data-sem`: the attribute exists to
   record what the static neutraliser restores, and inventing it here would be a
   second source of truth for the same decision. */
  .contact-page .contact-reach{ font-style:normal; }
  .contact-page .cr-item a{ color:var(--ink); text-decoration:none; }
  .contact-page .cr-item a:hover{ color:var(--terra); }

  /* ---- Mobile: stack the reach block ----
     At 1440 the label and both items sit on one line. Below ~560 they cannot:
     the email is 19 characters and the phone 15, so a wrapped row leaves one
     item stranded on a ragged second line — which is what the client saw. A
     column puts the label on its own line and each contact under it, left
     aligned on the same edge as everything else in the card. */
  @media(max-width:560px){
    .contact-page .contact-reach{ flex-direction:column; align-items:flex-start; gap:8px; }
    .contact-page .cr-label{ margin-bottom:2px; }
    .contact-page .cr-item{ font-size:15px; }
  }

/* ===== About (/about) — class-scoped twins of the #page-about rules =====
   Same refusal as Connect and the article template: Webflow will not put
   `id="page-about"` on the section. Generated by `work/twin-about.py` from the
   source rules in 90-rebrand-overrides.css and 97-ways-mobile.css. */
.about-page .about-hero-title{ font-family:'OV Sage','Jost',sans-serif !important; font-weight:400 !important; }
.about-page .about-hero-title strong{ font-family:'OV Sage','Jost',sans-serif !important; font-weight:700 !important; }
.about-page .about-hero-head{ flex-direction:row !important; align-items:flex-end !important;
  justify-content:space-between !important; gap:32px !important;
  margin-bottom:26px !important; }
.about-page .about-hero-title{ flex:1 1 auto; min-width:0; }
.about-page .about-hero-burst-wrap{ align-self:flex-end !important; margin-right:0 !important; }
.about-page .about-hero-burst{ width:clamp(84px,8.6vw,144px); height:clamp(84px,8.6vw,144px); }
@media(max-width:760px){
  .about-page .about-hero-head{ gap:18px !important; margin-bottom:20px !important; }
}
@media(max-width:1024px){
  .about-page .about-hero-head{ gap:16px !important; margin-bottom:20px !important; }
  .about-page .about-hero-burst-wrap{ margin-right:0 !important; align-self:flex-end !important;
    width:auto !important; height:auto !important; line-height:0; }
  .about-page .about-hero-burst{ width:clamp(72px,15vw,132px); height:clamp(72px,15vw,132px); }
}
@media(max-width:760px){
  .about-page .about-hero-head{ gap:12px !important; margin-bottom:16px !important; }
  .about-page .tm-burst{ width:72px !important; height:72px !important; top:12px !important; right:12px !important; }
}

/* ---- About: things Webflow could not express ----
   1. The glance morph stagger. The source carries `--d` as an inline style per
      card, and Webflow REJECTS an inline custom property outright: the whtml
      call fails with "Invalid length unit provided" (and, worse, leaves a
      partially-built section behind — that is how a duplicate glance grid got
      onto the page mid-build). The sequence is deliberately NOT DOM order —
      the wave follows the visual layout — so it is reproduced verbatim here,
      per card, rather than regenerated.
   2. The team photo. `.tm-photo-bg` is an inline background-image in the source
      and a CMS image cannot bind to a background, so it is a real <img> here.
      When a member has no Photo, Webflow renders the img empty and it simply
      does not paint over `.tm-photo`'s #E9D9AC fill — which is exactly the
      fallback the spec asked for, with no conditional visibility needed.
   3. The LinkedIn buttons. 29 of 32 have no URL yet. A Link Block bound to an
      empty link field renders with no usable href, so hide it rather than show
      a dead button: the button appears by itself as each URL is filled in. */
  .about-page .glance-cell:nth-child(1) .glance-card{ --d:0ms; }
  .about-page .glance-cell:nth-child(2) .glance-card{ --d:60ms; }
  .about-page .glance-cell:nth-child(3) .glance-card{ --d:120ms; }
  .about-page .glance-cell:nth-child(4) .glance-card{ --d:300ms; }
  .about-page .glance-cell:nth-child(5) .glance-card{ --d:360ms; }
  .about-page .glance-cell:nth-child(6) .glance-card{ --d:180ms; }
  .about-page .glance-cell:nth-child(7) .glance-card{ --d:240ms; }
  .about-page .glance-cell:nth-child(8) .glance-card{ --d:420ms; }
  .about-page .glance-cell:nth-child(9) .glance-card{ --d:480ms; }

  .about-page .tm-photo{ overflow:hidden; }
  .about-page img.tm-photo-bg{ position:absolute; inset:0; width:100%; height:100%;
    object-fit:cover; object-position:50% 22%; display:block; }
  .about-page img.tm-photo-bg.w-dyn-bind-empty{ display:none; }

  .about-page .tm-li:not([href]),
  .about-page .tm-li[href=""],
  .about-page .tm-ov-li:not([href]),
  .about-page .tm-ov-li[href=""]{ display:none !important; }

  /* 18x18 is below the 44px minimum hit target the content guidelines set, and
     there are 29 of them. This USED to pad the element out and pull the padding
     back with a negative margin - but .tm-li carries background:var(--ink), so
     the padding painted a 44px black square that swallowed the name beside it.
     The hit area has to be a box that is never painted. */
  .about-page .tm-li{ padding:0; margin:0; position:relative; }
  .about-page .tm-li::after{
    content:''; position:absolute; top:50%; left:50%;
    width:44px; height:44px; transform:translate(-50%,-50%);
  }

/* ===== Home — two inline styles Webflow did not carry =====
   site/index.html gives the inner container of BOTH the AIF ("ways") and the
   Private Equity sections an inline override:

       <div class="section-inner padding-global container-large"
            style="width:100%; max-width:none; padding:0 28px;">

   Webflow kept only 9 inline styles on the Home page and neither of these is
   among them, so both sections fall back to `.container-large`'s max-width and
   the standard gutter. The content area is then far narrower than designed:
   the four PE stat cards get squeezed, `.pe-stat-value` clips ("3 IPOs",
   "₹500 c") and `.pe-stat-label` wraps to four lines instead of two.

   ⚠ DESKTOP-ONLY by construction — below `.container-large`'s max-width the
   constraint never binds, which is exactly how it presented.

   Restored here rather than as an inline style because the carrier is a Block
   element, and Blocks reject every attribute write in this MCP version with
   "[Conflict] The operation could not be applied to the component map".
   The two section ids exist (they are DOM-type elements, which do take ids),
   so an id-scoped rule is reliable. */
  #home-pe > .section-inner{
    width:100%; max-width:none; padding:0 28px;
  }
  /* ⚠ #home-ways (the AIF section directly above) has the IDENTICAL missing
     override in the source — same defect, same cause. Deliberately NOT applied
     yet: only the PE section was reported, and the blast radius stays smaller
     if each is confirmed before the next. Apply the same rule there once PE is
     verified. */

/* ===== Navbar position: identical on every page at desktop widths =====
   Client: the desktop nav must sit exactly where it sits on the homepage, on
   every page, with no per-page shift.

   The site-wide desktop baseline is
       body#v3site .niv-logo-fix{ left:3vw }            (43.2px at 1440)
       @media(min-width:1025px){ .dnav-row{ padding:0 3vw } }
   so the links already match everywhere. Only the LOGO moved, via this rule in
   00-shell-hero.css:

       html.nav-at-top:is(.pg-aif-overview,.pg-private-equity,
                          .pg-equity-baskets,.pg-strategy)
         .niv-logo-fix{ left:var(--hero-text-inset,78px) !important }

   It carries no media query, so it applied at desktop too: on those four dark
   photo heroes the logo sat at 78px instead of 3vw, and jumped back to 3vw the
   moment `nav-at-top` dropped on scroll. `pg-*` comes from the active section's
   id, which is why it hit exactly those pages.

   Neutralised at >=1025px only. Below that the nav is the hamburger island and
   the phone rules (16px on Knowledge, 24px on the photo heroes) are deliberate
   and untouched.

   :not(#_):not(#__) carries two ids' worth of weight against the original's
   one, so this wins regardless of source order. */
@media(min-width:1025px){
  html.nav-at-top:is(.pg-aif-overview,.pg-private-equity,.pg-equity-baskets,.pg-strategy) .niv-logo-fix:not(#_):not(#__),
  html.nav-at-top:is(.pg-aif-overview,.pg-private-equity,.pg-equity-baskets,.pg-strategy) .dnav > .niv-logo-fix:not(#_):not(#__){
    left:3vw !important;
  }
}

/* ===== Knowledge Hub cards: tag bottom-right, tighter card foot =====
   Client: the type badge should sit where the homepage cards put it — bottom
   right — not top left, and the card's text block carries more height than it
   needs.

   The homepage pattern is already in the bundle and is what we match:

       .know-tag{ position:absolute; bottom:16px; right:16px;
                  top:auto; left:auto; ... }

   ...including its gutter trick: the badge is absolutely positioned over the
   card's text block, so the meta line needs padding reserved on that side or
   the date runs underneath it. Scoped to .kb-signals-grid so the same class on
   other surfaces (event and stacked cards) is untouched. */
  /* Compact foot. The empty space was not the padding: the title is an <h3>
     and carried Webflow's default heading margins (20px above, 10px below)
     and a 30px line box, plus a top margin on the meta line. Those go; the
     meta row is pinned to the bottom of the text block so rows of cards stay
     aligned when one title wraps; and the badge is a fixed 24px tall and sits
     on that same row, so it no longer props the block open. */
  .kb-signals-grid .kb-card .kb-info{ padding:14px 18px 14px; }
  .kb-signals-grid .kb-card .kb-info .title{ margin:0 0 6px; line-height:1.3; }
  .kb-signals-grid .kb-card .kb-info .meta{ margin-top:auto; min-height:24px; line-height:24px; padding-right:104px; }
  .kb-signals-grid .kb-type-tag{
    top:auto; left:auto; bottom:14px; right:18px;
    height:24px; line-height:24px; padding:0 10px; box-sizing:border-box;
  }
  @media(max-width:767px){
    .kb-signals-grid .kb-card .kb-info{ padding:12px 14px 12px; }
    .kb-signals-grid .kb-type-tag{ bottom:12px; right:14px; }
    .kb-signals-grid .kb-card .kb-info .meta{ padding-right:96px; }
  }

/* About — inline SVG slots (founder starburst and info toggle, glance card
   bursts, the hero burst, the LinkedIn glyphs).
   Both ride in HtmlEmbeds carrying .svg-slot (display:contents). The wrapper
   box dissolves but Webflow's .w-embed clearfix ::before/::after pair does
   not, and .tm-photo is a fixed-height box holding absolutely-positioned
   children — the pair would add two stray table boxes inside it. Same fix as
   the PE page embeds above. */
/* Site-wide, not page-scoped: an .svg-slot embed only ever holds an <svg>, so
   Webflow's clearfix pair has nothing to clear and only ever adds two stray
   table boxes inside whatever flex or fixed-height box the slot sits in. The
   PE-scoped versions above predate this and are now redundant but harmless. */
.w-embed.svg-slot::before,
.w-embed.svg-slot::after{ content:none; }
/* The source ships a <button>; Webflow's element builder only offers a Link
   for a custom-tag button, so the toggle renders as an <a> with no href. Kill
   the anchor's inherited underline — everything else comes from the source
   rule in 13-page-about-dhandho-article.css. */
.tm-info-btn{ text-decoration:none; }

/* ═══ COMMUNITY ══════════════════════════════════════════════════════════════
   Class-scoped twins of the source's #page-community rules. The id is stamped
   at runtime (Webflow refuses a DOM id on a Section), so without these the
   green hero would paint cream for a beat on every load. Generated by
   work/twin-community.py from the source sheets; keep them in step. */
.community-page .web-section.intro{ position:relative; overflow:hidden; background:var(--greenDeep); }
.community-page .web-section.intro .section-inner{ position:relative; z-index:2; padding:48px; max-width:none; }
.community-page .web-section.intro .section-inner{ padding-top:calc(var(--niv-inset) + var(--niv-fab-h) + 24px); }
.community-page .web-section.intro .sec-title{ color:var(--gold); }
.community-page .web-section.intro .community-hero-desc{ color:var(--gold); }
.community-page .web-section.intro .btn{ background:transparent; border-color:var(--gold); color:var(--gold); }
.community-page .web-section.intro .btn:hover{ background:#F0C157; border-color:#F0C157; color:var(--greenDeep); }
.community-page .intro .sec-title{ font-family:var(--f-serif); font-size:clamp(56px,8.2vw,128px); font-weight:500; line-height:1.04; white-space:nowrap; }
.community-page .intro .comm-br{ display:none; }
@media(max-width:760px){
  .community-page .web-section.intro .section-inner{ padding-left:44px !important; padding-right:16px !important; padding-bottom:56px; }
  .community-page .intro .sec-title{ font-size:clamp(48px,14vw,72px) !important; line-height:1.02 !important; white-space:normal !important; }
  .community-page .intro .comm-br{ display:inline !important; }
  .community-page .community-hero-desc{ font-size:clamp(19px,5.4vw,26px) !important; max-width:100% !important; }
  .community-page .web-section.alt .section-inner{ padding-left:16px !important; padding-right:16px !important; }
}
/* #eventsGrid is stamped too. These two are the only id-keyed rules that would
   otherwise be late, and the Inter override is the one the eye catches. */
.community-page .morph-grid .m-title{ font-family:'Inter',sans-serif !important; }
@media(max-width:760px){
  .community-page .morph-grid .glance-cell{ min-height:210px; }
  .community-page .morph-grid .morph-body{ padding:20px !important; }
  .community-page .morph-grid .m-title{ font-size:clamp(19px,5.4vw,26px) !important; }
  .community-page .morph-grid .glance-burst{ width:46px !important; height:46px !important; top:12px !important; right:12px !important; }
}

/* The event card is a Lightbox element, so Webflow renders it as an <a>. The
   source card is an anchor too, but there it carries data-sem="a-from-div" and
   99-semantic.css strips the UA underline off it. Webflow has no data-sem, so
   the underline reaches the title and the meta line. Same fix .kb-card and
   .news-card already carry. */
.morph-grid .glance-card,
.morph-grid .glance-card:visited{ text-decoration:none; }

/* The hero description and the Past Events heading are ENTIRELY inline-styled
   in the source. Webflow carries no inline styles, so both are restated here
   against the classes they now carry. */
.community-page .community-hero-desc{
  font-family:'OV Sage','Jost',sans-serif;
  font-size:clamp(20px,2.2vw,30px); font-weight:400; line-height:1.2;
  margin:16px 0 28px; max-width:560px;
}
.community-page h2.sec-title{
  font-family:'OV Sage','Jost',sans-serif;
  font-size:clamp(34px,4.4vw,60px); font-weight:500; line-height:1.12;
}
/* Block 2 carries an inline border-bottom:none in the source. */
.community-page .web-section.alt{ border-bottom-width:0; }

/* The events grid is a Collection List: .morph-grid rides on .w-dyn-items and
   .glance-cell on .w-dyn-item, so every source rule lands unchanged. Only the
   wrapper Webflow inserts between the container and the grid is new, and it
   needs the same zero floor the other rails get. */
.community-page .section-inner > .w-dyn-list{ min-width:0; }

/* The six titles are h3 here and divs in the source, so the heading's own
   margin has to go. Titles are stored in natural case and uppercased in CSS,
   so an editor typing "Wealth Expo" still ships WEALTH EXPO. */
.community-page .morph-grid h3.m-title{ margin:0; text-transform:uppercase; }

/* Past-event galleries use Webflow's own lightbox. Its default chrome is a
   full-bleed near-black field; the brief is a panel over a darkened page, so
   the backdrop takes the ink tone and the stage is inset to 85%. */
.w-lightbox-backdrop{ background:rgba(28,30,27,.9); }
.w-lightbox-content{ width:85vw; height:85vh; margin:7.5vh auto; overflow:visible; }
.w-lightbox-view, .w-lightbox-view:before{ height:85vh; }
.w-lightbox-group, .w-lightbox-group .w-lightbox-view,
.w-lightbox-group .w-lightbox-view:before{ height:85vh; }
.w-lightbox-image{ max-width:85vw; max-height:85vh; }
.w-lightbox-control{ width:64px; background-size:22px; }
.w-lightbox-close{ height:64px; }

/* ── About — the team sections below the founders scroll horizontally ─────
   29 people across five departments ran to eight rows of a 4-up grid. These
   become rails using the SAME mechanism as the homepage conversations rail
   (niv-app.js: "#heroRailArea owns overflow-x, the browser owns momentum") —
   the scroll area owns overflow-x, the browser owns the gesture. No transform,
   no snapping, so a trackpad or touch drag glides instead of jumping.

   No new elements: Webflow's Collection List already nests wrapper > list >
   item, so .w-dyn-list becomes the scroll area and .w-dyn-items the flex track.

   The card width is stated the way the FOUNDERS grid states it — three across
   with a 20px gap — so a rail card and a founder card measure identically at
   every width, which is the point. Founders keep their grid; only .lg/.md/.sm
   become rails. */
.about-page .team-section .w-dyn-list{
  overflow-x:auto; overflow-y:hidden; -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
}
/* The rail bleeds to the right edge of the VIEWPORT rather than stopping at the
   container, so the next face spills out of the column instead of being sliced
   off at it.

   The negative margin widens the scroll area to the viewport edge; the equal
   padding puts its CONTENT box back at the container's width. That pairing is
   what keeps the cards honest: grid-auto-columns' percentage resolves against
   the content box, so a rail card still measures exactly a founder card, while
   overflow clips at the PADDING box - out at the viewport edge - so cards
   render into the bleed instead of being cropped.

   Only .team-section rails bleed; the founders grid is a plain grid and never
   overflows, so it is unaffected. */
.about-page .team-section .w-dyn-list{
  box-sizing:border-box;
  margin-right:calc(50% - 50vw);
  padding-right:calc(50vw - 50%);
}
.about-page .team-section .w-dyn-list::-webkit-scrollbar{ display:none; }
/* A single-row grid, not a flex row. A percentage flex-basis inside a scroll
   container resolves against a flex container whose width the overflow itself
   makes ambiguous; grid-auto-columns resolves against the grid container's
   inline size, which is definitely the scroll area's width. Same three-up
   arithmetic as the founders grid, reliably.

   SELECTOR NOTE, learned the hard way: the source marks these grids .lg/.md/.sm
   and the FOUNDERS grid .founders. In the Webflow build only .founders survived
   - the other five lists carry the bare .team-grid class. A rule written against
   .team-grid.lg matches nothing here, which also means the source's own
   repeat(4,1fr) never applied and those lists were rendering as a single
   full-width column. Always read the real element tree before writing a
   selector against it. */
.about-page .team-grid:not(.founders){
  display:grid; grid-template-columns:none;
  grid-auto-flow:column; grid-auto-columns:calc((100% - 40px) / 3);
}
.about-page .team-grid:not(.founders) > .w-dyn-item{ min-width:0; }
/* Below 760 the founders grid drops to ONE column, so an exactly-matching rail
   card would fill the viewport and give no sign it scrolls. 88% is the peek
   every other mobile rail on this site uses (§4 above), so the next face shows.
   The gap is 14px here, not 20 - the width is a percentage, so it follows. */
/* Requested: a 2x2 rail on phones - "top bottom cards visible 100%, beside
   them 2 cards top bottom visible 15% only." The single 88% face above was one
   row of one card; two rows plus a 2.15-column track gives two full pairs and a
   15% peek of the third. This block, not the one in 13-page-about-*, is what
   governs: it is later AND more specific (.about-page .team-grid:not(.founders)),
   which is why the earlier edit there changed nothing on the live page. */
@media(max-width:760px){
  .about-page .team-grid:not(.founders){
    grid-template-rows:repeat(2,auto);
    grid-auto-columns:calc((100% - 20px) / 2.15);
    gap:6px 10px;
    overflow-x:auto; overscroll-behavior-x:contain;
  }
  /* ---- 2x2 rail card, tuned for the half-width column -------------------
     At 3/4 the portrait is taller than the column is wide, which is what put
     a screen-height gap between the two rows. 1/1 in a half-width track keeps
     both rows on one screen. The name also came down from 21px, which is the
     desktop size and wrapped to two lines in half the width - a wrapped name
     drags the whole grid row taller, since auto rows size to the tallest card.
     The rows are sized here rather than left to auto so one long name cannot
     push its row out of step with the other. */
  .about-page .team-grid:not(.founders) .tm-photo{
    aspect-ratio:1/1; margin-bottom:6px;
  }
  .about-page .team-grid:not(.founders) .tm-name-row{
    align-items:center; gap:5px; min-width:0;
  }
  .about-page .team-grid:not(.founders) .tm-name{
    font-size:14px; line-height:1.25; min-width:0;
    overflow-wrap:anywhere;
  }
  /* the LinkedIn chip was sized for a full-width card and broke to its own
     line beside a wrapped name */
  .about-page .team-grid:not(.founders) .tm-li{
    width:15px; height:15px; font-size:7px; flex:0 0 auto;
  }
}
/* 761-768 is the one band where the source drops the team grids to two columns
   while the founders grid is still three. Without this the rail would inherit
   that two-up track and each card would come out half the viewport - wider
   than a founder card, which is the opposite of the point. */
@media(min-width:761px) and (max-width:768px){
  .about-page .team-grid:not(.founders){
    grid-template-rows:repeat(2,auto);
    grid-auto-columns:calc((100% - 40px) / 3.15);
    gap:20px;
  }
}

/* ── About hero: align to the logo, and let the photo run wider ───────────
   The Webflow build wraps the hero contents in .section-inner.padding-global
   .container-large, which the source does not have. So the hero was inset
   twice - once by .about-hero's own --hero-text-inset (78px), then again by
   the container's 1180px cap - and the title started ~200px in while the
   navbar logo sat at 3vw.

   3vw is the logo's own inset: `body#v3site .niv-logo-fix{ left:3vw }` is the
   site-wide desktop baseline, and About is not one of the four pages whose
   nav-at-top rule overrides it. So the title now starts exactly where the logo
   does, and the photo - width:100% of the same container - expands with it.

   The burst needs no rule of its own: #page-about .about-hero-head is already
   row + space-between, so it tracks the container's right edge.

   Desktop only. Below 1025 the nav is the hamburger island with its own insets
   and the source's mobile hero rules are deliberate. */
@media(min-width:1025px){
  .about-page .about-hero{ padding-left:0; padding-right:0; }
  .about-page .about-hero > .section-inner.container-large{
    max-width:none; padding-left:3vw; padding-right:3vw;
  }
}

/* ── About / Connect: the phone logo sits on its own hero's left edge ──────
   `html:not(.nvnav-solid) body#v3site .niv-logo-fix{ left:45px }` in
   00-shell-hero.css is the LANDING hero's arithmetic - its own comment says so
   ("card 12/16px + 1px border + 30px padding"). The selector is global though,
   so it also placed the logo on every other page's hero, where the title is
   somewhere else entirely: About's is 16px on a phone, Connect's is
   var(--niv-inset) = 28px. The logo therefore sat right of both titles.

   These two pages get the logo pinned to their OWN hero inset, expressed with
   the same tokens the heroes use so it tracks them instead of drifting.
   `pg-*` is set by niv-app.js from the active section id, so .pg-about and
   .pg-contact are the page hooks available above the navbar.

   Only while the hero is showing: once .nvnav-solid lands the nav is the
   compact bar and its own 20/12px insets are correct.

   >=1025 is untouched: there the About hero is aligned to 3vw, which is exactly
   where the desktop logo already sits. */
html.pg-about{ --nvs-hero-inset: var(--hero-text-inset); }
@media(max-width:760px){ html.pg-about{ --nvs-hero-inset: 16px; } }
@media(max-width:1024px){
  html.pg-about:not(.nvnav-solid) body#v3site .niv-logo-fix{
    left: var(--nvs-hero-inset) !important;
  }
}
/* Connect is NOT included yet. Its hero inset is var(--niv-inset) on paper, but
   the only replica I have of that page's hero markup is invented, and a rule
   verified against an invented replica is how the team rails shipped twice
   doing nothing. Read #page-contact's real tree, measure, then add .pg-contact
   to the selector above. */


/* ═══════════════════════════════════════════════════════════════════════════
   HEDGEHOGS (/hedgehogs)
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── 1. The inline styles Webflow's builder drops ──────────────────────────
   data_whtml_builder discards every style="" attribute, and site/hedgehogs.html
   carries five that carry real design decisions. Restated here as class rules.

   Unlike block 2 below, these are LIVE on the published site: they are not a
   canvas fallback, they ARE the value the source renders. */
.hedgehogs-page .conv-statement-section{ background:#FCF7EA; }
/* !important because the value it replaces was an INLINE style, and the rule it
   has to beat is `#aifAllowsSection, #hhLookSection{ background:var(--paper) }`
   in 90-rebrand-overrides.css - an id, which no class selector can outrank.
   Inline sits directly below !important in the cascade, so this is the faithful
   translation, not an escalation. Verified nothing else sets this background
   with !important and no media query changes it.
   Caught by work/inlinecheck.mjs: the section was shipping --paper (#F2E5BF)
   against the source's #F3EAD1. */
.hedgehogs-page .strat-awh{ background:#F3EAD1 !important; }
.hedgehogs-page .web-section.hh-cross{ border-top:none; }
.hedgehogs-page .hh-fs-title{ max-width:820px; }
@media(max-width:760px){ .hedgehogs-page .hh-fs-title{ max-width:100%; } }
.hedgehogs-page .aif-cta-sub{ font-size:clamp(18px,1.84vw,23px); }

/* .hh-cross-title is a <div> in the source and an <h2> here: the cross-sell
   section shipped with no heading element at all, which is a real gap on a page
   that has to read well in search. .hh-cross-title already sets family, size,
   weight and line-height, so the promotion changes nothing but the UA margin. */
.hedgehogs-page .hh-cross-title{ margin-top:0; }

/* ── 2. Canvas twins — GENERATED by work/twin-hh.py, do not hand-edit ──────
   Webflow refuses a DOM id on Block and Section elements ("[Conflict] The
   operation could not be applied to the component map"), so #hhHeroScene,
   #page-hedgehogs and the rest exist only on the PUBLISHED page, where
   deploy/about-ids.js stamps them at runtime.

   The Designer canvas runs no footer JS. Without these twins every one of the
   346 rules keyed on those ids matches nothing there and the page renders as
   unstyled boxes - which is exactly the canvas/published divergence reported
   on About and Community.

   Every twin is guarded with :not(#id). On the published page the id IS there,
   the guard fails, and the original rule stands untouched - so this block
   cannot change production. On the canvas there is no id and the twin applies.
   That guard is load-bearing: 98-webflow-native.css loads after
   90-rebrand-overrides.css, so an unguarded twin could resurrect a value that
   file had deliberately overridden.

   .hero-scene twins are not page-scoped on purpose. Only index.html and
   hedgehogs.html carry that class, and the source rules are written
   :is(#heroScene,#hhHeroScene) to serve both - so these fix the home hero's
   canvas at the same time. */

/* ═══════════════════════════════════════════════════════════════════════════
   DHANDHO VALLEY (/dhandho)
   ═══════════════════════════════════════════════════════════════════════════ */

/* The inline styles Webflow's builder drops. data_whtml_builder discards every
   style="" attribute, and site/dhandho.html carries two that matter. Restated
   here as class rules, and LIVE on the published site - not a canvas fallback,
   these ARE the values the source renders. */
.dhandho-page .sec-title{
  max-width:760px;
  font-family:'OV Sage','Jost',sans-serif;
  font-size:clamp(34px,4.4vw,60px);
  font-weight:500;
  line-height:1.12;
}
.dhandho-page .dv-cta-sec{ border-bottom:none; }

/* Six labels promoted from <div> to headings. The page shipped with ONE h2 for
   6423px of content and no heading at all above the seven-line argument, which
   is a real gap on a page that has to read well in search. Each class already
   sets family, size, weight and line-height, so the promotion changes nothing
   but the UA margin - which this removes. */
.dhandho-page .hero-section-header,
.dhandho-page .pe-look-co,
.dhandho-page .dv-who-verb{ margin:0; }

/* >>> GENERATED TWINS - work/twin-pages.py - do not hand-edit >>> */
html.nvboot :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-word,
html.nvboot :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-lean,
html.nvboot :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-mark .hero-word::before{ animation-play-state:paused !important; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never){ position:relative; height:220vh; border-bottom:none; background:#F3EAD1; --v3-nav:76px; }
@media(max-width:1024px){
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never){ --v3-nav:100px; }
}
@media(max-width:820px){
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero{ padding-top:78px !important; }
}
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero{ position:sticky; top:var(--v3-nav,76px); height:calc(100vh - var(--v3-nav,76px)); display:flex; flex-direction:column; justify-content:flex-start; gap:16px; padding:clamp(20px,3vw,40px); background:#F3EAD1; color:#2C2E2B; overflow:hidden; border-bottom:none; box-sizing:border-box; opacity:1; animation:heroSceneIn .28s ease-out both; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-cards{ position:relative; display:grid; grid-template-columns:1fr 1fr; gap:16px; flex:0 0 auto; overflow:hidden; will-change:height; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-card{ border:1px solid #456232; background:#F2E5BF; overflow:hidden; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-card-text{ position:relative; padding:clamp(30px,3.6vw,56px) clamp(30px,3.6vw,56px) clamp(28px,3.4vh,44px); display:flex; flex-direction:column; justify-content:center; overflow:hidden; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero-title{ font-family:'OV Sage','Jost',sans-serif; text-align:left; font-size:clamp(32px,3.8vw,58px); font-weight:400; line-height:1.12; letter-spacing:-.03em; color:#2C2E2B; margin:0 0 14px; max-width:none; white-space:normal; position:relative; z-index:2; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-belief{ font-family:'OV Sage','Jost',sans-serif; font-weight:400; text-align:left; font-size:calc(clamp(39px,4.46vw,69px) * var(--v3-ts, 1)) !important; line-height:1.06; letter-spacing:-.015em; color:#456232; max-width:none; margin:0; transform-origin:left top; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-belief,
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-belief *{ font-family:'OV Sage','Jost',sans-serif !important; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-belief .hero-line{ white-space:nowrap; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-belief .hero-line{ display:inline-block; margin:0; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-belief .hero-u .hero-word:first-child{ margin-bottom:.1em; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-belief .hero-u{ line-height:1.14; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-mark{ display:inline; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-mark .hero-word{ position:relative; padding:.06em .1em; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-mark .hero-word::before{ content:''; position:absolute; inset:0; z-index:-1; background:#F0D88E; transform:scaleX(0); transform-origin:left center; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-mark .hero-word::before{ animation:heroMarkX .34s cubic-bezier(.33,0,.24,1) both; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-mark .hero-word::before{ animation-delay:900ms; }
@media(prefers-reduced-motion:reduce){
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-mark .hero-word::before{ transform:scaleX(1); animation:none !important; }
}
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-belief .hero-line-bold .hero-word{ font-weight:700 !important; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-belief .hero-sub-line{ display:block; margin-top:.45em; line-height:1.06; white-space:nowrap; font-size:1em; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-belief .hero-br-m{ display:inline !important; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-word{ display:inline-block; opacity:0; animation:cwrWordBlinkGreen .52s ease both; animation-delay:calc(220ms + var(--wi,0) * 120ms); }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-belief .hero-u{ font-size:2.05em; color:#456232 !important; background:none; background-image:none; background-color:transparent; padding:0; text-decoration:none; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-belief .hero-u .hero-word{ color:#456232 !important; position:relative; padding:0; box-decoration-break:clone; -webkit-box-decoration-break:clone; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-belief .hero-u .hero-word:first-child{ margin-right:0; padding:0; display:inline-block; font-size:1em; font-style:normal; font-weight:700 !important; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-belief .hero-u .hero-word:last-child{ padding:0; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-lean{ display:inline-block; transform:none !important; transform-origin:0 100%; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-belief .hero-u .hero-word::before,
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-belief .hero-u::before{ content:none !important; display:none !important; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-belief .hero-line:last-child .hero-u .hero-word:first-child{ animation-delay:420ms; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-belief .hero-line:last-child .hero-u .hero-word:last-child{ animation-delay:840ms; }
@media(prefers-reduced-motion:reduce){
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-word{ opacity:1 !important; animation:none !important; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-lean{ animation:none !important; }
}
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .cwr-word{ display:inline-block; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never).words-pending .cwr-word{ opacity:0; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never).words-pending .cwr-word.cwr-blink{ opacity:1; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .cwr-bold{ font-weight:700; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero-title .cwr-word.cwr-blink{ animation:cwrWordBlinkGreen .52s ease both; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero-sub{ margin:0 !important; font-family:'OV Sage','Jost',sans-serif; font-size:clamp(17px,1.7vw,23px); margin:0 0 30px; max-width:none; color:#000; line-height:1.3; letter-spacing:-.01em; opacity:0; position:relative; z-index:2; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-burst{ width:clamp(64px,6.5vw,104px); height:clamp(64px,6.5vw,104px); display:block; margin:clamp(16px,2.4vh,30px) 0 clamp(10px,1.4vh,16px); overflow:visible; transform-origin:center center; opacity:0; transform:scale(.4); transition:opacity .5s ease, transform .6s cubic-bezier(.16,1,.3,1), height .5s ease, margin .5s ease; position:relative; z-index:2; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-burst.in{ opacity:1; transform:scale(1); }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-burst.out{ opacity:0; transform:scale(0); height:0; margin:0 0 clamp(30px,4.2vh,48px); }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hb-dot{ fill:#456232; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hb-spin{ transform-box:view-box; transform-origin:50px 50px; animation:hbSpin 9s linear infinite; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-burst.out .hb-spin{ animation:none; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero-btns{ display:flex; gap:14px; flex-wrap:wrap; position:relative; z-index:2; opacity:0; transform:translateY(14px); transition:opacity .5s ease, transform .55s cubic-bezier(.33,1,.68,1); }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero.buttons-in .sc-hero-btns{ opacity:1; transform:none; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-btn-lg{ font-family:'OV Sage','Jost',sans-serif; font-weight:500; font-size:15.6px; padding:13px 26px; background:#456232; color:#F2E5BF; border:1px solid #456232; cursor:pointer; transition:background-color .3s ease, color .3s ease; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-btn-lg:hover{ background:transparent; color:#456232; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-btn-alt{ background:transparent; color:#456232; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-btn-alt:hover{ background:#456232; color:#F2E5BF; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-guides{ position:absolute; inset:0; width:100%; height:100%; pointer-events:none; overflow:visible; z-index:0; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hg{ stroke:#456232; stroke-width:1.4; stroke-linecap:round; transition:stroke .3s ease, stroke-width .3s ease; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hg-node{ fill:#456232; opacity:0; transition:opacity .4s ease; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-scrollcue{ position:absolute; right:26px; bottom:22px; display:flex; align-items:center; gap:10px; font-family:'OV Sage','Jost',sans-serif; font-size:12px; letter-spacing:.14em; text-transform:uppercase; color:#456232; pointer-events:none; opacity:0; transition:opacity .5s ease; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hsc-arrow{ font-size:18px; line-height:1; animation:hscNudge 1.2s ease-in-out infinite; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-card-video{ position:relative; background:#456232; overflow:hidden; }
@media(max-width:860px){
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .sc-hero{ padding-top:78px !important; padding-bottom:10px !important; overflow:visible !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .hero-cards{ display:flex !important; flex-direction:column !important; gap:10px; grid-template-columns:none !important; height:calc(100svh - 78px - 12px) !important; min-height:0; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .hero-card-video{ order:1; flex:1 1 50%; min-height:0 !important; height:auto !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .hero-media{ top:-16% !important; height:132% !important; background-size:cover !important; background-position:center 42% !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .hero-card-text{ order:2; flex:1 1 50%; min-height:0; display:flex; flex-direction:column; justify-content:center; gap:clamp(8px,1.5vh,13px); padding:clamp(13px,3.6vw,18px) clamp(15px,4.2vw,20px) clamp(13px,2.4vh,18px) !important; padding-left:clamp(26px,7vw,34px) !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .hero-card-text > *{ margin:0 !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .hh-hero-tag{ font-size:10px !important; padding:4px 9px !important; letter-spacing:.1em !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .hh-hero-titlerow{ display:flex; align-items:flex-start; gap:clamp(8px,2.4vw,14px); justify-content:space-between; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .hh-hero-titlerow .hero-belief{ flex:1 1 auto; min-width:0; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .hh-hero-titlerow .hero-burst{ flex:0 0 auto; margin:1px 0 0 !important; width:clamp(60px,15.8vw,78px) !important; height:clamp(60px,15.8vw,78px) !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .sc-hero-title.hero-belief{ font-size:clamp(25px,7.4vw,35px) !important; line-height:1.05 !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .sc-hero-title.hero-belief .hero-line{ white-space:normal; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .hh-title-br{ display:inline !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .sc-hero-sub.hh-hero-lead{ font-size:clamp(13.5px,3.7vw,15.5px) !important; line-height:1.42 !important; max-width:38ch !important; text-align:left !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .sc-hero-btns{ display:flex; gap:8px; flex-wrap:nowrap !important; width:100%; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .sc-hero-btns .btn{ font-size:11px !important; padding:0 10px !important; letter-spacing:.03em !important; flex:1 1 0 !important; min-width:0 !important; white-space:nowrap; text-align:center; justify-content:center; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .hero-scrollcue{ display:none !important; }
}
@media(min-width:861px) and (max-width:1024px){
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .sc-hero-title.hero-belief{ font-size:clamp(26px,3.1vw,36px) !important; line-height:1.1 !important; margin-bottom:12px !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .hh-hero-tag{ font-size:11.5px !important; padding:6px 11px !important; margin-bottom:12px !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .sc-hero-sub.hh-hero-lead{ font-size:15px !important; line-height:1.45 !important; margin-bottom:12px !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .hero-burst{ width:46px !important; height:46px !important; margin:0 0 12px !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .sc-hero-btns{ flex-wrap:nowrap !important; gap:8px; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .sc-hero-btns .btn{ font-size:12px !important; padding:7px 13px !important; white-space:nowrap; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .hero-card-text{ padding:22px 24px 20px !important; }
}
:where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .aif-fund-feature-status.hl::before{ background:#F0D88E; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .aif-fund-feature-status.hl{ color:var(--greenDeep) !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .aif-fund-feature-status.hl::before{ animation:hhTagSweep .6s cubic-bezier(.4,0,.2,1) 320ms both; }
html.nvboot :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .aif-fund-feature-status.hl::before{ animation-play-state:paused !important; }
@media(prefers-reduced-motion:reduce){
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .aif-fund-feature-status.hl::before{ animation:none !important; transform:scaleX(1); }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .sc-hero-title.hero-belief{ transition:none !important; }
}
@media(max-width:860px){
  :where(.hedgehogs-page:not(#page-hedgehogs) .hh-unl-sec):not(#nvs-never) .scutt-sidebar{ display:flex !important; flex-direction:row !important; align-items:flex-start !important; justify-content:space-between !important; gap:16px; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hh-unl-sec):not(#nvs-never) .scutt-sidebar .scutt-heading{ flex:1 1 auto; min-width:0; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hh-unl-sec):not(#nvs-never) .hh-unl-star{ flex:0 0 auto; width:72px; height:72px; margin:0 !important; }
}
:where(.hedgehogs-page:not(#page-hedgehogs) .hh-unl-sec):not(#nvs-never) .scutt-c-txt{ min-width:0; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hh-unl-sec):not(#nvs-never) .kim-head{ display:flex; align-items:flex-start; gap:clamp(16px,1.8vw,26px); }
:where(.hedgehogs-page:not(#page-hedgehogs) .hh-unl-sec):not(#nvs-never) .kim-head .scutt-card-title{ flex:1; min-width:0; line-height:1.2; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hh-unl-sec):not(#nvs-never) .scutt-ico{ flex:0 0 auto; order:-1; width:clamp(36px,3.2vw,46px); height:clamp(36px,3.2vw,46px); margin-top:calc((clamp(23px,2.4vw,33px) * 1.2 - clamp(38px,3.4vw,50px)) / 2 - 1px); fill:none; stroke:var(--greenDeep); stroke-width:1; stroke-linecap:round; stroke-linejoin:round; transition:stroke .3s ease; }
@media(hover:hover) and (min-width:861px){
  :where(.hedgehogs-page:not(#page-hedgehogs) .hh-unl-sec):not(#nvs-never) .scutt-card:hover .scutt-ico{ stroke:#F0C257; }
}
:where(.hedgehogs-page:not(#page-hedgehogs) .hh-unl-sec):not(#nvs-never) .scutt-card.auto-on .scutt-ico,
:where(.hedgehogs-page:not(#page-hedgehogs) .hh-unl-sec):not(#nvs-never) .kim-card.is-open .scutt-ico{ stroke:#F0C257; }
@media(max-width:860px){
  :where(.hedgehogs-page:not(#page-hedgehogs) .hh-unl-sec):not(#nvs-never) .kim-head{ gap:14px; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hh-unl-sec):not(#nvs-never) .scutt-ico{ width:36px; height:36px; stroke-width:1; margin-top:calc((clamp(21px,5.6vw,28px) * 1.2 - 34px) / 2 - 1px); }
}
:is(:where(.hedgehogs-page:not(#page-hedgehogs)):not(#nvs-never)) .aif-cta-box > div:last-child{ display:flex !important; flex-wrap:wrap !important; justify-content:center !important; align-items:stretch !important; gap:12px !important; width:100% !important; }
:is(:where(.hedgehogs-page:not(#page-hedgehogs)):not(#nvs-never)) .aif-cta-box > div:last-child > .btn{ display:inline-flex !important; align-items:center !important; justify-content:center !important; gap:9px !important; box-sizing:border-box !important; flex:0 1 auto !important; min-width:0 !important; max-width:100% !important; height:52px !important; min-height:52px !important; padding:0 20px !important; margin:0 !important; line-height:1 !important; white-space:nowrap !important; }
:is(:where(.hedgehogs-page:not(#page-hedgehogs)):not(#nvs-never)) .aif-cta-box > div:last-child > .btn svg{ flex:0 0 auto !important; }
@media(max-width:900px){
  :is(:where(.hedgehogs-page:not(#page-hedgehogs)):not(#nvs-never)) .aif-cta-box{ padding-left:18px !important; padding-right:18px !important; }
  :is(:where(.hedgehogs-page:not(#page-hedgehogs)):not(#nvs-never)) .aif-cta-box .aif-cta-statement{ font-size:clamp(34px,10.4vw,56px) !important; line-height:1.1 !important; }
  :is(:where(.hedgehogs-page:not(#page-hedgehogs)):not(#nvs-never)) .aif-cta-box > div:last-child{ display:grid !important; grid-template-columns:1fr !important; gap:10px !important; width:100% !important; max-width:100% !important; justify-items:stretch !important; justify-content:stretch !important; }
  :is(:where(.hedgehogs-page:not(#page-hedgehogs)):not(#nvs-never)) .aif-cta-box > div:last-child > .btn{ display:flex !important; align-items:center !important; justify-content:center !important; gap:9px !important; width:100% !important; max-width:100% !important; min-width:0 !important; box-sizing:border-box !important; height:50px !important; min-height:50px !important; padding:0 14px !important; margin:0 !important; font-size:15px !important; line-height:1 !important; white-space:nowrap !important; overflow:hidden !important; text-overflow:ellipsis !important; }
  :is(:where(.hedgehogs-page:not(#page-hedgehogs)):not(#nvs-never)) .aif-cta-box > div:last-child > .btn svg{ flex:0 0 auto !important; width:15px !important; height:15px !important; }
}
@media(max-width:760px){
  :where(.hedgehogs-page:not(#page-hedgehogs) .conv-statement-section):not(#nvs-never) .conviction-heading,
  :where(.hedgehogs-page:not(#page-hedgehogs) .conviction-heading):not(#nvs-never).conviction-heading{ font-size:clamp(34px,13.5vw,64px) !important; line-height:1.12 !important; }
}
@media(min-width:861px){
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .hero-scrollcue{ bottom:52px !important; right:18px !important; font-size:10px !important; letter-spacing:.14em !important; gap:7px !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .hero-scrollcue .hsc-arrow{ font-size:12px !important; }
}
:where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .hh-hero-titlerow{ display:flex; align-items:flex-start; gap:clamp(14px,1.8vw,28px); justify-content:space-between; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .hh-hero-titlerow .hero-belief{ flex:1 1 auto; min-width:0; margin-bottom:0 !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .hh-hero-titlerow .hero-burst{ flex:0 0 auto; margin:4px 0 0 !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .sc-hero-sub.hh-hero-lead{ margin-top:clamp(14px,1.6vw,22px) !important; }
@media(min-width:1025px){
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .hero-card-text{ display:flex; flex-direction:column; justify-content:center; gap:clamp(14px,1.5vw,24px); padding:clamp(34px,3.2vw,52px) clamp(34px,3.4vw,56px) clamp(30px,2.8vw,46px) !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .hero-card-text > *{ margin:0 !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .sc-hero{ --v3-k: calc((1 - var(--v3-ts, 1)) / 0.18); --hh-title-a: clamp(39px,4.6vw,68px); --hh-title-b: clamp(31px,3.6vw,54px); --hh-gap-a: clamp(14px,1.5vw,24px); --hh-gap-b: clamp(10px,1.1vw,16px); --hh-padt-a: clamp(34px,3.2vw,52px); --hh-padt-b: clamp(27px,2.5vw,39px); --hh-padb-a: clamp(30px,2.8vw,46px); --hh-padb-b: clamp(30px,2.8vw,44px); --hh-lead-a: clamp(22px,1.72vw,27px); --hh-lead-b: clamp(17px,1.3vw,21px); --hh-btnt-a: clamp(10px,1.4vw,22px); --hh-btnt-b: clamp(2px,.25vw,4px); --hh-btnb-a: 0px; --hh-btnb-b: clamp(20px,2.1vw,35px); --hh-tag-a: 18px; --hh-tag-b: 13.7px; --hh-tagpv-a: 8px; --hh-tagpv-b: 6px; --hh-tagph-a: 18px; --hh-tagph-b: 13.7px; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .sc-hero-title.hero-belief{ font-size:calc(var(--hh-title-a) + (var(--hh-title-b) - var(--hh-title-a)) * var(--v3-k, 0)) !important; line-height:calc(1.05 + 0.01 * var(--v3-k, 0)) !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .hero-card-text{ justify-content:safe center; gap:calc(var(--hh-gap-a) + (var(--hh-gap-b) - var(--hh-gap-a)) * var(--v3-k, 0)); padding-top:calc(var(--hh-padt-a) + (var(--hh-padt-b) - var(--hh-padt-a)) * var(--v3-k, 0)) !important; padding-bottom:calc(var(--hh-padb-a) + (var(--hh-padb-b) - var(--hh-padb-a)) * var(--v3-k, 0)) !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .hh-hero-tag{ font-size:calc(var(--hh-tag-a) + (var(--hh-tag-b) - var(--hh-tag-a)) * var(--v3-k, 0)) !important; padding:calc(var(--hh-tagpv-a) + (var(--hh-tagpv-b) - var(--hh-tagpv-a)) * var(--v3-k, 0)) calc(var(--hh-tagph-a) + (var(--hh-tagph-b) - var(--hh-tagph-a)) * var(--v3-k, 0)) !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .sc-hero-sub.hh-hero-lead{ font-size:calc(var(--hh-lead-a) + (var(--hh-lead-b) - var(--hh-lead-a)) * var(--v3-k, 0)) !important; line-height:1.45 !important; max-width:36ch !important; margin-top:0 !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .hh-hero-titlerow .hero-burst{ width:clamp(94px,7.8vw,125px) !important; height:clamp(94px,7.8vw,125px) !important; margin:8px 0 0 !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .sc-hero-btns{ gap:calc(12px - 4px * var(--v3-k, 0)); margin-top:calc(var(--hh-btnt-a) + (var(--hh-btnt-b) - var(--hh-btnt-a)) * var(--v3-k, 0)) !important; margin-bottom:calc(var(--hh-btnb-a) + (var(--hh-btnb-b) - var(--hh-btnb-a)) * var(--v3-k, 0)) !important; }
}
:where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .hh-stats-cap{ font-family:'Inter',sans-serif; font-size:10.5px; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--greenDeep); opacity:.75; margin:0 0 8px; flex:0 0 auto; }
@media(max-width:860px){
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .hh-stats-cap{ font-size:9.5px; letter-spacing:.12em; margin-bottom:6px; }
}
:where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .sc-hero-btns .btn{ --btn-f: calc(1 - 0.2 * var(--v3-k, 0)); height:calc(44px * var(--btn-f)) !important; font-size:calc(16px * var(--btn-f)) !important; padding-left:calc(26px * var(--btn-f)) !important; padding-right:calc(26px * var(--btn-f)) !important; min-height:0 !important; padding-top:0 !important; padding-bottom:0 !important; display:inline-flex !important; align-items:center; justify-content:center; }
@media(min-width:861px) and (max-width:1024px){
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .sc-hero-btns .btn{ height:38px !important; }
}
@media(max-width:860px){
  :where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never).hero-scene .sc-hero-btns .btn{ height:34px !important; }
}
:where(.hedgehogs-page:not(#page-hedgehogs)):not(#nvs-never) > *:not(:where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never)){ position:relative; z-index:2; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .hh-hero-tag{ align-self:flex-start; margin:0 0 clamp(14px,1.6vw,22px); }
:where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .hero-belief{ font-size:clamp(30px,3.5vw,54px) !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .hh-hero-lead{ font-family:'Jost',sans-serif; font-size:clamp(16px,1.5vw,22px); line-height:1.55; color:var(--ink); opacity:.9; max-width:34ch; margin:0 0 clamp(12px,1.4vw,20px); }
:where(.hedgehogs-page:not(#page-hedgehogs) .hero-scene):not(#nvs-never) .hero-media{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e7318c07bd000efbf0e9e_hh-hero-courtyard.jpg') !important; background-position:center 52% !important; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-media{ position:absolute; left:0; right:0; top:-7%; height:114%; background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e73183ecbdbe39dfa109c_hero-media-niveshaay.jpg'); background-size:cover; background-position:center 44%; background-repeat:no-repeat; will-change:transform; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero-stats{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; flex:0 0 auto; border:none; background:none; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hstat{ position:relative; overflow:hidden; background:#456232; padding:22px 20px; border:1px solid rgba(69,98,50,var(--bo,0)); clip-path:circle(26px at 50% 50%); will-change:clip-path; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hstat-disc{ position:absolute; inset:0; background:#F0D88E; z-index:0; opacity:var(--disc,1); }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hstat-in{ position:relative; z-index:1; opacity:var(--c,0); transform:translateY(var(--cy,12px)); }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hstat-num{ font-family:'Inter',sans-serif; font-size:clamp(28px,3.4vw,44px); font-weight:400; line-height:1; letter-spacing:-.02em; margin-bottom:8px; color:#F0D88E; font-variant-numeric:lining-nums; }
:where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hstat-label{ font-family:'Inter',sans-serif; font-size:clamp(16px,1.25vw,20px); line-height:1.5; color:rgba(240,216,142,.78); }
@media(max-width:820px){
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-belief{ font-size:clamp(24px,6.4vw,40px) !important; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never){ height:auto; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero{ position:static; height:auto; overflow:visible; padding:16px 16px 22px; gap:16px; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-cards{ grid-template-columns:1fr; height:auto !important; gap:14px; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-card-text{ padding:30px 24px 46px 34px; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero-title.hero-belief{ font-size:clamp(32px,9.36vw,50px) !important; line-height:1.06; margin-bottom:12px; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero-title .hero-line{ white-space:nowrap; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero-btns{ display:flex; gap:10px; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero-btns .btn{ flex:1 1 0; min-width:0; padding:13px 10px !important; font-size:clamp(14px,3.9vw,16px) !important; white-space:nowrap; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero-sub{ font-size:clamp(16px,4vw,20px); margin-bottom:24px; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero-btns .btn{ text-align:center; margin-left:0; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-burst{ margin:2px 0 12px; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-card-video{ min-height:clamp(240px,60vw,360px); }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-media{ top:-20% !important; height:140% !important; backface-visibility:hidden; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-guides{ display:block !important; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hg{ stroke-width:1.2; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-scrollcue{ display:none !important; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero-stats{ grid-template-columns:1fr 1fr; gap:12px; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hstat{ padding:18px 16px; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hstat-num{ font-size:26px; margin-bottom:6px; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hstat-label{ font-size:15px !important; line-height:1.4; }
}
@media(max-width:760px){
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero-stats{ grid-template-columns:1fr 1fr; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hstat-r2{ border-right:none; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hstat-row1{ border-bottom:1px solid #2C2E2B; }
}
@media(max-width:520px){
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero{ padding:12px 12px 18px; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-card-text{ padding:26px 20px 42px 30px; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero-title.hero-belief{ font-size:clamp(29px,9.54vw,41px) !important; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero-btns .btn{ padding:12px 8px !important; font-size:14px !important; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero-stats{ gap:10px; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hstat{ padding:16px 14px; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hstat-num{ font-size:24px; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hstat-label{ font-size:14px !important; }
}
@media(prefers-reduced-motion:reduce){
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never){ height:auto; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero{ position:static; height:auto; opacity:1; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-cards{ height:auto !important; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .cwr-word{ opacity:1 !important; animation:none !important; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero-sub{ opacity:1 !important; animation:none !important; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .sc-hero-btns{ opacity:1 !important; transform:none !important; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hstat{ clip-path:none !important; border-color:#456232 !important; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hstat-disc{ opacity:0 !important; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hstat-in{ opacity:1 !important; transform:none !important; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-scrollcue{ display:none !important; }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hero-burst{ opacity:1; transform:scale(1); }
  :where(.hero-scene:not(#heroScene,#hhHeroScene)):not(#nvs-never) .hb-spin{ animation:none; }
}
:where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never){ background:var(--greenDeep); }
:where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) .hh-fs-title{ color:var(--gold) !important; font-family:'OV Sage','Jost',sans-serif !important; font-size:clamp(36px,5.4vw,72px) !important; font-weight:400; line-height:1.1; }
:where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) .hh-split{ border-color:var(--gold); }
:where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) .hh-split-item{ border-right-color:var(--gold); }
:where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) .hh-split-item:last-child{ border-right:none; }
:where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) .hh-split-label{ color:var(--gold); opacity:.8; }
:where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) .hh-split-value{ color:var(--gold) !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) .hh-split-desc{ color:var(--paper) !important; opacity:.9; font-family:'Jost',sans-serif !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) .hh-theme{ border-color:var(--gold); color:var(--gold); }
:where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) .hh-split-label{ font-size:14px; }
:where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) .hh-split-desc{ font-size:clamp(17px,1.55vw,21px); }
:where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) .hh-theme{ font-size:15px; padding:11px 22px; }
@media(max-width:760px){
  :where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) .hh-split-item{ border-right:none; border-bottom-color:var(--gold); }
  :where(.hedgehogs-page:not(#page-hedgehogs)):not(#nvs-never) :where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) > .section-inner{ padding-left:16px !important; padding-right:16px !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never).web-section{ padding-top:56px !important; padding-bottom:56px !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) .hh-fs-title{ font-size:clamp(30px,8.4vw,42px) !important; line-height:1.12 !important; max-width:100% !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) .hh-split{ margin-top:26px; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) .hh-split-item{ padding:26px 22px; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) .hh-split-label{ font-size:12px !important; margin-bottom:10px; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) .hh-split-value{ font-size:clamp(24px,7vw,32px) !important; margin-bottom:12px; line-height:1.16 !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) .hh-split-desc{ font-size:clamp(15px,4.2vw,17px) !important; line-height:1.55; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) .hh-themes{ display:grid !important; grid-template-columns:1fr 1fr; gap:10px; margin-top:24px; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) .hh-theme{ font-size:13px !important; padding:12px 14px !important; text-align:center; display:flex; align-items:center; justify-content:center; box-sizing:border-box; }
}
:where(.hedgehogs-page:not(#page-hedgehogs)):not(#nvs-never) .cx-title,
:where(.hedgehogs-page:not(#page-hedgehogs)):not(#nvs-never) .bedrock-title,
:where(.hedgehogs-page:not(#page-hedgehogs)):not(#nvs-never) .hero-section-header,
:where(.hedgehogs-page:not(#page-hedgehogs)):not(#nvs-never) .scutt-heading,
:where(.hedgehogs-page:not(#page-hedgehogs)):not(#nvs-never) .aif-works-heading,
:where(.hedgehogs-page:not(#page-hedgehogs)):not(#nvs-never) .hh-fs-title{ font-family:'OV Sage','Jost',sans-serif !important; font-size:clamp(32px,3.9vw,54px) !important; line-height:1.12 !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never){ background:var(--paper); padding-left:0 !important; padding-right:0 !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) > .section-inner{ max-width:none !important; margin:0 !important; padding-left:var(--hero-text-inset) !important; padding-right:var(--niv-inset) !important; box-sizing:border-box; }
:where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never){ padding-left:0 !important; padding-right:0 !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .web-section.alt):not(#nvs-never) > .section-inner{ max-width:none !important; margin:0 !important; padding-left:var(--hero-text-inset) !important; padding-right:var(--niv-inset) !important; box-sizing:border-box; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) .hh-cross-title{ font-family:'OV Sage','Jost',sans-serif; color:var(--greenDeep); font-size:clamp(30px,3.6vw,50px); font-weight:400; line-height:1.12; margin-bottom:36px; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) .hh-cross-grid{ display:grid; grid-template-columns:1fr 1fr; gap:26px; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) .hh-cross-card{ background:var(--paper); border:1.5px solid var(--greenDeep); padding:42px 40px; display:flex; flex-direction:column; justify-content:space-between; gap:32px; min-height:320px; cursor:pointer; transition:transform .3s cubic-bezier(.16,1,.3,1), box-shadow .3s ease; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) .hh-cross-card:hover{ background:var(--greenDeep); transform:translateY(-6px); box-shadow:0 22px 48px -20px rgba(44,46,43,.42); }
:where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) .hh-cross-eyebrow{ font-family:'OV Sage','Jost',sans-serif; font-size:11px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--greenDeep); opacity:.75; margin-bottom:18px; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) .hh-cross-cardtitle{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(23px,2.5vw,34px); font-weight:400; line-height:1.16; color:var(--greenDeep); margin-bottom:16px; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) .hh-cross-desc{ font-family:'Jost',sans-serif; font-size:clamp(14px,1.15vw,16px); line-height:1.6; color:var(--ink); opacity:.78; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) .hh-cross-card:hover .hh-cross-eyebrow{ color:var(--gold); opacity:1; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) .hh-cross-card:hover .hh-cross-cardtitle{ color:var(--gold); }
:where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) .hh-cross-card:hover .hh-cross-desc{ color:var(--paper); opacity:.9; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) .hh-cross-btn{ align-self:flex-start; display:inline-flex; align-items:center; gap:10px; background:transparent; border:1.5px solid var(--greenDeep); color:var(--greenDeep); font-family:'OV Sage','Jost',sans-serif; font-size:15px; font-weight:500; padding:13px 26px; }
:where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) .hh-cross-card:hover .hh-cross-btn{ background:var(--gold); border-color:var(--gold); color:var(--greenDeep); }
@media(max-width:760px){
  :where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) .hh-cross-grid{ grid-template-columns:1fr; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) > .section-inner{ padding-left:16px !important; padding-right:16px !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) .hh-cross-title{ font-size:clamp(30px,8.4vw,44px) !important; margin-bottom:24px; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) .hh-cross-grid{ gap:16px; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) .hh-cross-card{ padding:30px 24px; min-height:0; gap:24px; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) .hh-cross-cardtitle{ font-size:clamp(22px,6vw,28px); }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) .hh-cross-desc{ font-size:clamp(15px,4.2vw,18px); margin-top:12px; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .hh-cross):not(#nvs-never) .hh-cross-btn{ width:100%; justify-content:space-between; padding:15px 20px; font-size:15px; box-sizing:border-box; }
}
:where(.hedgehogs-page:not(#page-hedgehogs) .conviction-heading):not(#nvs-never) .cwr-word{ transform:none !important; transition:none !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .conviction-heading):not(#nvs-never) .cwr-word.cwr-blink{ animation:cwrWordBlink .55s ease-out both; }
:where(.hedgehogs-page:not(#page-hedgehogs) .aif-cta):not(#nvs-never) .aif-cta-box{ background:transparent !important; border:none !important; color:var(--ink) !important; padding:clamp(28px,3.2vw,48px) 56px 96px; }
:where(.hedgehogs-page:not(#page-hedgehogs) .aif-cta):not(#nvs-never) .aif-cta-statement{ color:var(--greenDeep) !important; font-family:'OV Sage','Jost',sans-serif !important; font-weight:400 !important; font-size:clamp(30px,4.4vw,64px) !important; opacity:0; transform:translateY(30px); transition:opacity .85s ease, transform .85s cubic-bezier(.22,.8,.28,1); }
:where(.hedgehogs-page:not(#page-hedgehogs) .aif-cta):not(#nvs-never) .aif-cta-sub{ color:var(--gray) !important; opacity:0; transform:translateY(24px); transition:opacity .8s ease .18s, transform .8s cubic-bezier(.22,.8,.28,1) .18s; }
@media(max-width:760px){
  :is(:where(.hedgehogs-page:not(#page-hedgehogs) .aif-cta):not(#nvs-never)) .aif-cta-box > div{ display:flex !important; flex-direction:row !important; flex-wrap:nowrap !important; justify-content:center !important; align-items:center !important; gap:10px !important; }
  :is(:where(.hedgehogs-page:not(#page-hedgehogs) .aif-cta):not(#nvs-never)) .aif-cta-btn{ flex:0 1 auto; width:auto !important; min-width:0; padding:13px 14px !important; font-size:clamp(13px,3.6vw,15px) !important; white-space:nowrap; }
}
:where(.hedgehogs-page:not(#page-hedgehogs) .aif-cta):not(#nvs-never) .aif-cta-box > div{ justify-content:center; opacity:0; transform:translateY(24px); transition:opacity .8s ease .34s, transform .8s cubic-bezier(.22,.8,.28,1) .34s; }
:where(.hedgehogs-page:not(#page-hedgehogs) .aif-cta):not(#nvs-never).cta-in .aif-cta-statement{ opacity:1; transform:none; }
:where(.hedgehogs-page:not(#page-hedgehogs) .aif-cta):not(#nvs-never).cta-in .aif-cta-sub{ opacity:1; transform:none; color:var(--ink) !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .aif-cta):not(#nvs-never).cta-in .aif-cta-box > div{ opacity:1; transform:none; }
:where(.hedgehogs-page:not(#page-hedgehogs) .aif-cta):not(#nvs-never) .aif-cta-btn{ background:var(--greenDeep) !important; color:var(--gold) !important; border-color:var(--greenDeep) !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .aif-cta):not(#nvs-never) .aif-cta-btn:hover{ background:var(--paper) !important; color:var(--greenDeep) !important; border:1.5px solid var(--greenDeep) !important; }
@media (prefers-reduced-motion: reduce){
  :where(.hedgehogs-page:not(#page-hedgehogs) .aif-cta):not(#nvs-never) .aif-cta-statement,
  :where(.hedgehogs-page:not(#page-hedgehogs) .aif-cta):not(#nvs-never) .aif-cta-sub,
  :where(.hedgehogs-page:not(#page-hedgehogs) .aif-cta):not(#nvs-never) .aif-cta-box > div{ opacity:1 !important; transform:none !important; }
}
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .awh-head{ margin-bottom:clamp(20px,2vw,30px) !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .awh-heading{ margin:0 !important; }
@media(max-width:860px){
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .awh-head{ margin-bottom:18px !important; }
}
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-works-parallax[data-grad="1"]{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e731a2b83ba7b292a920f_strat-shadow.webp') !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-works-parallax[data-grad="2"]{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e731a1406ae49e465e75b_strat-positioning.webp') !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-works-parallax[data-grad="3"]{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e731a44dc3736509879b2_strat-stairs.jpg') !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-works-parallax[data-grad="4"]{ background-image:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e7319d5ee7eab63856063_strat-coins.jpg') !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-works-parallax::after{ content:none !important; background-image:none !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-works-parallax{ background-size:cover !important; background-position:center !important; background-repeat:no-repeat !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .conviction-heading):not(#nvs-never).conviction-heading{ font-size:clamp(34px,5.2vw,72px) !important; }
@media(max-width:760px){
  :where(.hedgehogs-page:not(#page-hedgehogs) .conviction-heading):not(#nvs-never).conviction-heading{ font-size:clamp(34px,13.5vw,64px) !important; line-height:1.12 !important; }
}
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never){ background:var(--paper); padding-left:0 !important; padding-right:0 !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .section-inner{ max-width:none; margin:0; padding-left:var(--hero-text-inset); padding-right:var(--niv-inset); }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-subrow{ justify-content:flex-start; }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-section-header{ text-align:left; }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-nav{ right:0 !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-pair{ flex:0 0 calc((100% - 60px) / 2.2); }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-pair .aif-pair-head{ flex:0 0 58%; min-height:540px; background:var(--tint); position:relative; display:flex; align-items:flex-end; padding:44px 42px; overflow:hidden; border:none; box-sizing:border-box; }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head:hover{ background:var(--terra); }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-rail{ overflow:visible; padding-bottom:36px; }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head:hover .aif-pair-title{ color:var(--gold); }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-title{ font-family:'OV Sage','Jost',sans-serif; font-weight:500; font-size:clamp(22px,2.3vw,36px); line-height:1.14; color:var(--greenDeep); position:relative; z-index:2; }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head .conv-burst{ position:absolute; top:34px; right:36px; width:96px; height:96px; overflow:visible; pointer-events:none; z-index:3; }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head .conv-burst-dot{ transform:scale(0); transform-origin:center; fill:var(--gold); transition:transform .45s cubic-bezier(.16,1,.3,1); }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head .conv-burst-lines line{ transform:scale(0); transform-origin:center; stroke:var(--gold); stroke-width:2; transition:transform .45s cubic-bezier(.16,1,.3,1) .08s; }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head:hover .conv-burst-dot,
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head:hover .conv-burst-lines line{ transform:scale(1); }
@media(max-width:760px){
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head,
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head .aif-pair-title,
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head .pe-look-co,
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head .aif-pair-num,
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head .conv-burst-dot,
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head .conv-burst-lines line,
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-quote,
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-quote .hero-quote-text,
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-quote .hero-arrow,
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-quote .hero-arrow line,
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-quote .hero-arrow circle{ transition:none !important; }
}
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .pe-sweep{ background-image:linear-gradient(var(--gold),var(--gold)); background-repeat:no-repeat; background-position:0% center; background-size:0% 100%; box-decoration-break:clone; -webkit-box-decoration-break:clone; }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .pe-sweep.pe-sweep-on{ animation:peSweep 4.4s ease forwards; }
@media (prefers-reduced-motion: reduce){
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .pe-sweep.pe-sweep-on{ animation:none; }
}
@media(min-width:861px){
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head.auto-on{ background:var(--terra); }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head.auto-on .aif-pair-title,
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head.auto-on .pe-look-co{ color:var(--gold); }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head.auto-on .conv-burst-dot,
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head.auto-on .conv-burst-lines line{ transform:scale(1); }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-quote.auto-on{ background:var(--greenDeep); }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-quote.auto-on .hero-quote-text{ color:var(--gold); }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-quote.auto-on .hero-arrow{ transform:scale(1); }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-quote.auto-on .hero-arrow line{ stroke:var(--gold); }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-quote.auto-on .hero-arrow circle{ fill:var(--gold); }
}
@media(max-width:760px){
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-rail-track{ gap:16px !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-pair{ flex:0 0 86vw !important; max-width:440px !important; flex-direction:column !important; box-shadow:0 16px 42px -18px rgba(44,46,43,.20); }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-pair .aif-pair-head{ flex:0 0 auto !important; width:100% !important; min-height:300px !important; box-sizing:border-box; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-pair .hero-quote{ flex:1 1 auto !important; width:100% !important; box-sizing:border-box; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-title{ font-size:clamp(20px,5.6vw,26px) !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-quote-text{ font-size:clamp(15px,4.2vw,19px) !important; }
}
@media(min-width:761px){
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-pair{ flex:0 0 clamp(520px, 38vw, 720px) !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-title{ font-size:30px !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-quote-text{ font-size:21px !important; }
}
@media(max-width:760px){
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .conv-subrow.hero-subrow{ display:flex !important; flex-direction:column !important; align-items:flex-start !important; gap:14px !important; margin-top:0 !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .conv-nav.hero-nav{ position:static !important; transform:none !important; right:auto !important; justify-self:start !important; padding-top:0 !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-section-header{ font-size:clamp(26px,7.4vw,34px) !important; line-height:1.16 !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .section-inner{ padding-left:16px !important; padding-right:16px !important; padding-top:20px !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .pe-look-co{ font-size:clamp(30px,8.2vw,42px) !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-title{ font-size:clamp(19px,5.2vw,25px) !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-title{ font-size:clamp(26px,7.4vw,36px) !important; line-height:1.12 !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head.auto-on{ background:var(--terra); }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head.auto-on .aif-pair-title,
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head.auto-on .pe-look-co{ color:var(--gold); }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head.auto-on .conv-burst-dot,
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .aif-pair-head.auto-on .conv-burst-lines line{ transform:scale(1); }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-quote.auto-on{ background:var(--greenDeep); }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-quote.auto-on .hero-quote-text{ color:var(--gold); }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-quote.auto-on .hero-arrow{ transform:scale(1); }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-arrow{ width:52px !important; height:52px !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-quote-text{ font-size:clamp(17px,4.6vw,21px) !important; }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-quote.auto-on .hero-arrow line{ stroke:var(--gold); }
  :where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-quote.auto-on .hero-arrow circle{ fill:var(--gold); }
}
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-pair .aif-pair-head{ min-height:400px !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-pair .testi-card{ min-height:400px !important; }
:where(.hedgehogs-page:not(#page-hedgehogs) .strat-awh):not(#nvs-never) .hero-arrow{ width:64px !important; height:64px !important; }
:where(.dhandho-page:not(#page-dhandho) .dv-why-sec):not(#nvs-never){ background:var(--paper); transition:background-color .7s ease; padding-left:0 !important; padding-right:0 !important; border-bottom:2px solid var(--greenDeep); }
:where(.dhandho-page:not(#page-dhandho) .dv-why-sec):not(#nvs-never).sfr-gold{ background:var(--greenDeep); }
:where(.dhandho-page:not(#page-dhandho) .dv-why-sec):not(#nvs-never) .section-inner{ max-width:none; padding-left:var(--hero-text-inset); padding-right:var(--niv-inset); box-sizing:border-box; padding-top:0; padding-bottom:0; }
@media(max-width:760px){
  :where(.dhandho-page:not(#page-dhandho) .dv-why-sec):not(#nvs-never) .section-inner{ padding-left:16px !important; padding-right:16px !important; }
  :where(.dhandho-page:not(#page-dhandho) .dv-why-sec):not(#nvs-never) .sfr{ text-align:center; }
  :where(.dhandho-page:not(#page-dhandho) .dv-why-sec):not(#nvs-never) .sfr-spacer{ height:90px; }
  :where(.dhandho-page:not(#page-dhandho) .dv-why-sec):not(#nvs-never) .sfr-line{ margin:0 auto 80px; text-align:center !important; max-width:100%; padding:0; }
  :where(.dhandho-page:not(#page-dhandho) .dv-why-sec):not(#nvs-never) .sfr-line.sfr-sans{ font-size:clamp(46px,12.5vw,66px) !important; line-height:1.14 !important; }
  :where(.dhandho-page:not(#page-dhandho) .dv-why-sec):not(#nvs-never) .sfr-line.sfr-turn{ font-size:clamp(48px,13vw,72px) !important; }
  :where(.dhandho-page:not(#page-dhandho) .dv-why-sec):not(#nvs-never) .sfr-line.sfr-payoff{ font-size:clamp(52px,14vw,82px) !important; line-height:1.08 !important; }
}
:where(.dhandho-page:not(#page-dhandho)):not(#nvs-never) .dv-who-verb{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(40px,4.4vw,60px); font-weight:500; letter-spacing:-.02em; margin-bottom:16px; line-height:1.05; position:relative; z-index:2; color:var(--greenDeep); }
:where(.dhandho-page:not(#page-dhandho)):not(#nvs-never) .dv-who-item.auto-on .dv-who-verb{ color:var(--gold); }
:where(.dhandho-page:not(#page-dhandho)):not(#nvs-never) .dv-who-item:hover .dv-who-verb{ color:var(--gold); }
:where(.dhandho-page:not(#page-dhandho)):not(#nvs-never) .dv-cta-block .dv-cta-text{ font-family:'OV Sage','Jost',sans-serif !important; font-weight:400 !important; font-variant-numeric:lining-nums; font-feature-settings:'lnum' 1; }
:where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never){ position:relative; overflow:hidden; min-height:88vh; display:flex; align-items:flex-start; padding-left:0 !important; padding-right:0 !important; }
:where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never) .section-inner{ position:relative; z-index:2; max-width:none; margin:0; padding-left:var(--hero-text-inset); padding-right:var(--hero-text-inset); padding-top:calc(var(--niv-inset) + var(--niv-fab-h) + 56px); box-sizing:border-box; }
:where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never) .aif-hero-bg{ position:absolute; left:0; right:0; top:-22%; height:144%; z-index:0; background:url('https://cdn.prod.website-files.com/6a9e60a1c32695d1eb9992c9/6a9e73153ecbdbe39dfa0ebe_dhandho-hero.webp') center center/cover no-repeat; will-change:transform; }
:where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never) .aif-hero-bg::after{ content:''; position:absolute; inset:0; background:linear-gradient(90deg, rgba(60,22,10,.5) 0%, rgba(60,22,10,.18) 55%, rgba(60,22,10,0) 100%); }
:where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never) .eyebrow{ color:var(--paper) !important; opacity:.92; letter-spacing:.14em; text-transform:uppercase; }
:where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never) .aif-hero-statement{ color:var(--gold) !important; font-size:clamp(38px,5.6vw,81px) !important; line-height:1.12 !important; margin:18px 0 28px; max-width:none; text-wrap:balance; }
:where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never) .aif-hero-statement em{ font-style:italic; }
:where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never) .aif-hero-sub{ color:var(--paper) !important; opacity:.95; font-size:clamp(18px,2vw,26px); line-height:1.5; max-width:680px; }
:where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never) .aif-anim{ opacity:0; animation:aifHeroRise .8s cubic-bezier(.22,.8,.28,1) both; }
:where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never) .eyebrow.aif-anim{ animation-delay:.1s; }
:where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never) .aif-hero-statement .aif-line1{ display:inline-block; opacity:0; animation:aifHeroRise .8s cubic-bezier(.22,.8,.28,1) .28s both; }
:where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never) .aif-hero-statement .aif-line2{ display:inline-block; opacity:0; animation:aifHeroRise .8s cubic-bezier(.22,.8,.28,1) .46s both; }
:where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never) .aif-hero-sub.aif-anim{ animation-delay:1.15s; }
:where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never):not(.hero-ready) .aif-anim,
:where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never):not(.hero-ready) .aif-line1,
:where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never):not(.hero-ready) .aif-line2{ animation-play-state:paused !important; }
:where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never):not(.hero-ready) .aif-hero-statement{ opacity:0; }
@media (prefers-reduced-motion: reduce){
  :where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never) .aif-anim,
  :where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never) .aif-line1,
  :where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never) .aif-line2{ opacity:1 !important; animation:none !important; }
}
@media(max-width:760px){
  :where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never){ min-height:82vh; align-items:flex-end; }
  :where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never) .section-inner{ padding-bottom:56px; padding-left:44px !important; padding-right:28px !important; }
  :where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never) .aif-hero-statement{ font-size:clamp(42px,12.5vw,68px) !important; line-height:1.02 !important; margin:12px 0 18px !important; max-width:100% !important; overflow-wrap:break-word; word-break:break-word; text-align:left !important; }
  :where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never) .aif-hero-sub{ font-size:clamp(16px,4.4vw,20px) !important; max-width:100% !important; line-height:1.5 !important; overflow-wrap:break-word; text-align:left !important; }
  :where(.dhandho-page:not(#page-dhandho) .aif-hero):not(#nvs-never) .eyebrow{ font-size:13px !important; text-align:left !important; }
}
:where(.dhandho-page:not(#page-dhandho) .hero-rail):not(#nvs-never){ overflow:visible !important; margin-left:0 !important; margin-right:0 !important; padding-left:0 !important; padding-right:0 !important; }
:where(.dhandho-page:not(#page-dhandho) .hero-rail):not(#nvs-never) .hero-rail-track{ display:flex !important; flex-wrap:nowrap !important; width:max-content !important; padding-inline-end:0 !important; will-change:transform; }
:where(.dhandho-page:not(#page-dhandho) .hero-rail):not(#nvs-never) .hero-pair{ scroll-snap-align:none !important; }
@media(max-width:760px){
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head,
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head .aif-pair-title,
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head .pe-look-co,
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head .aif-pair-num,
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head .conv-burst-dot,
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head .conv-burst-lines line,
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-quote,
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-quote .hero-quote-text,
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-quote .hero-arrow,
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-quote .hero-arrow line,
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-quote .hero-arrow circle{ transition:none !important; }
}
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never){ background:var(--paper); padding-left:0 !important; padding-right:0 !important; }
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .section-inner{ max-width:none !important; margin:0 !important; padding-left:var(--hero-text-inset); padding-right:28px; }
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-section-header{ text-align:left; font-family:'OV Sage','Jost',sans-serif; font-size:clamp(34px,4.4vw,60px); font-weight:500; line-height:1.12; }
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-nav{ right:0 !important; }
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-rail{ overflow:visible; padding-bottom:36px; }
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-pair{ flex:0 0 calc((100% - 60px) / 2.6) !important; }
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-pair .aif-pair-head{ flex:0 0 58%; min-width:0; min-height:400px; background:var(--tint); position:relative; display:flex; flex-direction:column; align-items:flex-start; justify-content:flex-end; padding:40px 36px; }
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head:hover{ background:var(--terra); }
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head:hover .aif-pair-title,
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head:hover .pe-look-co{ color:var(--gold); }
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .pe-look-co{ font-family:'OV Sage','Jost',sans-serif; font-weight:600; font-size:clamp(28px,2.9vw,42px); line-height:1.04; color:var(--greenDeep); letter-spacing:normal; text-transform:none; overflow-wrap:break-word; max-width:100%; margin-bottom:12px; }
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-title{ font-family:'OV Sage','Jost',sans-serif; font-weight:500; font-size:clamp(18px,1.9vw,28px); line-height:1.14; color:var(--ink); }
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-quote-text{ font-size:clamp(16px,1.6vw,24px) !important; }
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-arrow{ width:64px !important; height:64px !important; }
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .pe-sweep{ background-image:linear-gradient(var(--gold),var(--gold)); background-repeat:no-repeat; background-position:0% center; background-size:0% 100%; box-decoration-break:clone; -webkit-box-decoration-break:clone; padding:0 .04em; }
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .pe-sweep.pe-sweep-on{ animation:peSweep 4.4s ease forwards; }
@media (prefers-reduced-motion: reduce){
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .pe-sweep.pe-sweep-on{ animation:none; }
}
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head .conv-burst{ position:absolute; top:34px; bottom:auto; right:36px; width:96px; height:96px; overflow:visible; pointer-events:none; z-index:3; }
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head .conv-burst-dot{ transform:scale(0); transform-origin:center; fill:var(--gold); transition:transform .45s cubic-bezier(.16,1,.3,1); }
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head .conv-burst-lines line{ transform:scale(0); transform-origin:center; stroke:var(--gold); stroke-width:2; transition:transform .45s cubic-bezier(.16,1,.3,1); }
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head:hover .conv-burst-dot,
:where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head:hover .conv-burst-lines line{ transform:scale(1); }
@media(min-width:861px){
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head.auto-on{ background:var(--terra); }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head.auto-on .aif-pair-title,
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head.auto-on .pe-look-co{ color:var(--gold); }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head.auto-on .conv-burst-dot,
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head.auto-on .conv-burst-lines line{ transform:scale(1); }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-quote.auto-on{ background:var(--greenDeep); }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-quote.auto-on .hero-quote-text{ color:var(--gold); }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-quote.auto-on .hero-arrow{ transform:scale(1); }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-quote.auto-on .hero-arrow line{ stroke:var(--gold); }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-quote.auto-on .hero-arrow circle{ fill:var(--gold); }
}
@media(max-width:760px){
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-rail-track{ gap:16px !important; }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-pair{ flex:0 0 86vw !important; max-width:440px !important; flex-direction:column !important; box-shadow:0 16px 42px -18px rgba(44,46,43,.20); }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-pair .aif-pair-head{ flex:0 0 auto !important; width:100% !important; min-height:300px !important; box-sizing:border-box; }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-pair .hero-quote{ flex:1 1 auto !important; width:100% !important; box-sizing:border-box; }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-title{ font-size:clamp(20px,5.6vw,26px) !important; }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-quote-text{ font-size:clamp(15px,4.2vw,19px) !important; }
}
@media(min-width:761px){
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-pair{ flex:0 0 clamp(520px, 38vw, 720px) !important; }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-title{ font-size:30px !important; }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-quote-text{ font-size:21px !important; }
}
@media(max-width:760px){
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .conv-subrow.hero-subrow{ display:flex !important; flex-direction:column !important; align-items:flex-start !important; gap:14px !important; margin-top:0 !important; }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .conv-nav.hero-nav{ position:static !important; transform:none !important; right:auto !important; justify-self:start !important; padding-top:0 !important; }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-section-header{ font-size:clamp(26px,7.4vw,34px) !important; line-height:1.16 !important; }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .section-inner{ padding-left:16px !important; padding-right:16px !important; padding-top:20px !important; }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .pe-look-co{ font-size:clamp(30px,8.2vw,42px) !important; }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-title{ font-size:clamp(19px,5.2vw,25px) !important; }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head.auto-on{ background:var(--terra); }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head.auto-on .aif-pair-title,
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head.auto-on .pe-look-co{ color:var(--gold); }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head.auto-on .conv-burst-dot,
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .aif-pair-head.auto-on .conv-burst-lines line{ transform:scale(1); }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-quote.auto-on{ background:var(--greenDeep); }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-quote.auto-on .hero-quote-text{ color:var(--gold); }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-quote.auto-on .hero-arrow{ transform:scale(1); }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-arrow{ width:52px !important; height:52px !important; }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-quote-text{ font-size:clamp(17px,4.6vw,21px) !important; }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-quote.auto-on .hero-arrow line{ stroke:var(--gold); }
  :where(.dhandho-page:not(#page-dhandho) .aif-allows-section):not(#nvs-never) .hero-quote.auto-on .hero-arrow circle{ fill:var(--gold); }
}
:where(.dhandho-page:not(#page-dhandho) .hero-rail):not(#nvs-never){ overflow-x:auto !important; overflow-y:hidden !important; -webkit-overflow-scrolling:touch; scroll-behavior:smooth; scroll-snap-type:none !important; overscroll-behavior-x:contain; scrollbar-width:none; -ms-overflow-style:none; }
:where(.dhandho-page:not(#page-dhandho) .hero-rail):not(#nvs-never)::-webkit-scrollbar{ display:none; }
:where(.dhandho-page:not(#page-dhandho) .hero-rail):not(#nvs-never) .hero-rail-track{ transform:none !important; transition:none !important; will-change:auto !important; }
/* <<< END GENERATED TWINS <<< */

/* ===== 99-semantic.css ===== */
/* ===== 99-semantic.css ===== */
/* UA heading defaults, neutralised on elements the semantic pass renamed.
   Discovered by measurement: .scutt-heading declares no font-weight, so as an
   <h2> it rendered bold (w700 vs w400) and the text reflowed wider. */
main :where(
  .sec-title,
  .aif-works-heading,
  .awh-heading,
  .scutt-heading,
  .aif-cta-statement,
  .hh-fs-title,
  .kb-title-lg,
  .aif-hero-statement,
  .hero-belief,
  .sc-hero-title,
  .conviction-heading,
  .card-title,
  .bkr-name,
  .news-title,
  .awh-title,
  .scutt-card-title,
  .niv-acc-h,
  .about-hero-title,
  .art-title,
  .bam-title,
  .bkr-title,
  .contact-headline,
  .cx-title,
  .eqb-sec-title,
  .oj-title
){
  font-size: inherit;
  font-weight: inherit;
  margin: 0;
}

/* Accordion headings wrap their button (the accessible disclosure pattern).
   display:contents means the wrapper contributes no box, so the surrounding
   flex/grid layout is exactly as it was before the wrap. */
/* display:contents removes the wrapper's box, but it still passes its own
   inherited font down — and .kim-head declares font:inherit, so the button
   picked up the UA h3 size and weight. Both are neutralised above; this only
   removes the box. */
main h3.niv-acc-h{ display: contents; }

/* Navigation that was a <button> is now a crawlable <a>. These are the only
   properties the two disagree on in the UA sheet, so restoring them makes the
   swap invisible; :where() keeps specificity at zero, so every authored rule
   still wins. Found by measurement, not assumption. */
:where(a[data-sem="a-from-button"]){
  display: inline-block;
  text-align: center;
  color: inherit;
  text-decoration: none;
  cursor: pointer;
  font: inherit;
}
:where(a[data-sem="a-from-div"]){
  display: block;
  color: inherit;
  text-decoration: none;
  cursor: pointer;
}

/* Structural elements introduced by the semantic pass.
   blockquote carries margin:1em 40px in the UA sheet, which would indent every
   founder quote; .conviction-heading declares its own margins, so :where()
   lets those win and only fills the gap. */
main :where(blockquote.conviction-heading){
  margin: 0;
  padding: 0;
  quotes: none;
}
/* The header's children are fixed-position, so the landmark itself must not
   take part in layout — otherwise it adds an empty block above the page. */
header.niv-header{
  display: contents;
}

/* <address> is italic in the UA sheet; the contact block was a <div>. */
main :where(address.contact-reach){ font-style: normal; }
/* Inline links added by the semantic pass (mailto:, tel:) keep the surrounding
   type rather than picking up the browser's link colour and underline. */
:where(a[data-sem="a-inline"]){ color: inherit; text-decoration: none; }

/* ===== 99z-published-only.css ===== */
/* ===========================================================================
   PUBLISHED-ONLY CORRECTIONS — keep this file LAST in _ORDER.txt.

   This block used to live in the site's head custom code. It is identical in
   effect there and here: both the hosted stylesheet and the head block are
   linked after Webflow's own CSS and neither applies on the Designer canvas,
   so "published-only" still holds. Moving it here keeps every rule under
   version control and makes a stylesheet deploy a one-line head edit.
   =========================================================================== */

/* ---- Canvas-only styles, restored here so published is unaffected ---- */
.dnav-panel{ display:flex !important; }
.hstat-disc{ display:block !important; }

/* Swap overlay. On the published site .offer-desc and .hh-returns share ONE
   grid cell (hosted CSS puts grid-area:1/1 on both, and .show-returns toggles
   visibility between them). The Designer canvas has neither rule, so both draw
   at once and the copy collides. The native style therefore puts the returns
   panel in row 2 — both stay readable and editable on canvas — and this rule
   restores the overlay for published. */
.hh-swap > .hh-returns{ grid-row-start:1 !important; }

/* ---- Behaviour corrections ---- */

/* Hero burst fallback.

   The burst's own intro is JS: the hero waits on __nvReadyPromise, then flips
   burstIn at 1500ms (mobileIntro uses 1540). This rule is only a safety net
   for the case where that never lands.

   It MUST NOT be timed from style resolution. The CSS arrives in <head> and
   the 425KB app script arrives in the footer, so a delay measured from paint
   fires long before the title sequence has started on a slow load — which is
   exactly the reported bug: the circle appearing before the words.

   html:not(.nvboot) fixes the origin. The boot curtain is up until the app has
   mounted and the hero is ready, and an animation cannot start until its
   selector matches, so the delay is now measured from the same moment the
   hero's own intro starts. 1.6s clears the title sequence, which ends at 1400.
   :not(.in) means the JS path, when it works, cancels this before it runs. */
@keyframes nvBurstIn{ to{ opacity:1; transform:scale(1); } }
html:not(.nvboot) #heroBurst:not(.in):not(.out){
  animation:nvBurstIn .45s cubic-bezier(.16,1,.3,1) 1.6s forwards;
}

/* Right-align the mobile menu panel with the menu button. */
@media(max-width:1024px){ .niv-panel{ right:3vw !important; } }
@media(max-width:820px){  .niv-panel{ right:20px !important; } }
@media(max-width:520px){  .niv-panel{ right:12px !important; } }

/* Gold logo mask — source uses a relative ../../assets/ path that 404s on the
   Webflow CDN, and a failed mask renders the element fully transparent. */
.niv-logo-fix .niv-logo-gold{
  -webkit-mask:url('https://s3.amazonaws.com/webflow-prod-assets/6a9e60a1c32695d1eb9992c9/6a9e71de01695b95cf796c7c_niveshaay-logo.png') left center/contain no-repeat !important;
          mask:url('https://s3.amazonaws.com/webflow-prod-assets/6a9e60a1c32695d1eb9992c9/6a9e71de01695b95cf796c7c_niveshaay-logo.png') left center/contain no-repeat !important;
}

/* AIF Portal hover text. */
html.pg-home .dnav .dnav-portal:hover{ color:var(--gold) !important; }

/* ---- Navbar breakpoint reconciliation ----
   MEASURED: the source nav steps at 1024 / 900 / 820 / 760 / 520. Webflow's
   breakpoints are 991 / 767 / 478 and are not configurable, so native styles
   are right only where the two sets agree. Each rule covers one disagreement.
   The `:not(.nvnav-solid)` guards stop these static rules overriding the
   scroll-state rule `html.nvnav-solid .niv-island{top:16px}`. */
@media(min-width:992px) and (max-width:1024px){
  .dnav{ display:none !important; }
  .niv-island{ display:flex !important; }
}
@media(min-width:901px) and (max-width:991px){
  html:not(.nvnav-solid) .niv-island{ top:64px !important; }
  .niv-fab{ width:52px !important; height:52px !important; }
}
@media(min-width:768px) and (max-width:820px){
  .niv-island{ right:20px !important; }
  .niv-fab{ border-color:#456232 !important; }
}
@media(min-width:761px) and (max-width:767px){
  html:not(.nvnav-solid) .niv-island{ top:34px !important; }
  .niv-fab{ width:44px !important; height:44px !important; }
}
@media(min-width:479px) and (max-width:520px){
  .niv-island{ right:12px !important; }
}

/* ---- Logo/menu hide must stay in sync (821-1024) ----
   `body#v3site .niv-logo-fix{ transform:none !important }` in 00-shell-hero.css
   carries NO media query and has specificity (1,1,1), outranking the generic
   `html.nvnav-hidden .niv-logo-fix` (0,2,1). Below 820 the source adds a (1,2,2)
   rule to win that fight; none was ever written for 821-1024, so the logo never
   hid there while the menu button did. -124px clears top:64px + a 52px button;
   the source's -96px left 20px of it on screen. */
@media(min-width:821px) and (max-width:1024px){
  html.nvnav-hidden body#v3site .niv-logo-fix,
  html.nvnav-hidden body#v3site .niv-logo-fix.logo-hero-big,
  html.nvnav-hidden body#v3site .niv-island{
    transform:translateY(-124px) !important;
  }
}

/* ---- 761-767: sections whose padding steps at 760 ----
   MEASURED: #homeScuttleSection and #homeConvStatement both change their
   section padding at 760. Webflow's nearest boundary is 767, so their native
   `small` rules fire 7px early. Both native selectors are combo classes (0,2,0)
   and outrank the hosted `.web-section` rule that would otherwise correct them,
   so published needs these two lines. #bambooSection needs no entry: its hosted
   rule sets both vertical paddings at combo specificity unconditionally and so
   already wins the tie there. */
@media(min-width:761px) and (max-width:767px){
  #homeScuttleSection.web-section{ padding-top:72px !important; padding-bottom:72px !important; }
  #homeConvStatement.web-section{ padding:72px 28px !important; }
}

/* ---- Backed-companies logo fit-scale: CDN filename spelling ----
   The source gives five small marks a touch more presence at phone size via
   [style*="fit/waaree"] and friends — matching the static build's own path,
   assets/logos/pe/fit/waaree.png. Webflow flattens that path into the asset
   FILENAME (…_pefit__waaree.png), so the source selectors can never match
   here. Same five logos, same 1.15, spelled the way the CDN writes them.
   The --logo value they test is stamped inline by nivstamp. */
@media(max-width:760px){
  :is(#peCoGrid,#hbGrid) .pe-co-name.has-logo[style*="fit__waaree"]::before,
  :is(#peCoGrid,#hbGrid) .pe-co-name.has-logo[style*="fit__sambhv"]::before,
  :is(#peCoGrid,#hbGrid) .pe-co-name.has-logo[style*="fit__esds"]::before,
  :is(#peCoGrid,#hbGrid) .pe-co-name.has-logo[style*="fit__jupiter"]::before,
  :is(#peCoGrid,#hbGrid) .pe-co-name.has-logo[style*="fit__vikram-solar"]::before{ transform:scale(1.15); }
}

/* ===== Community event gallery ===== */
/* Hidden CMS source: the album list only feeds the viewer. */
#nvAlbums{ display:none !important; }

/* Card cover: first photo of the event's first album. It fills the round
   terra dot, then the whole card once the card morphs open; the title and
   meta sit in a small solid label on the photo (no gradient; see below). */
.morph-grid .glance-card.has-cover{ cursor:pointer; }
.morph-grid .glance-card .nvg-cover{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; z-index:0; transition:transform .6s cubic-bezier(.16,1,.3,1); }
.morph-grid .glance-card.has-cover .morph-body,
.morph-grid .glance-card.has-cover .glance-burst{ position:relative; z-index:2; }
.morph-grid .glance-card.has-cover .glance-burst{ position:absolute; }
.morph-grid .glance-card.has-cover.morph-in .m-title{ color:var(--paper); }
.morph-grid .glance-card.has-cover.morph-in .m-meta{ color:var(--paper); opacity:.85; }
.morph-grid .glance-card.has-cover.morph-in:hover{ background:var(--greenDeep); }
.morph-grid .glance-card.has-cover.morph-in:hover .nvg-cover{ transform:scale(1.04); }
.morph-grid .glance-card.has-cover.morph-in:hover .m-title{ color:var(--gold); }
.morph-grid .glance-card.has-cover:focus-visible{ outline:2px solid var(--gold); outline-offset:3px; }

/* Viewer */
html.nvg-lock, html.nvg-lock body{ overflow:hidden !important; }
/* The site's custom dot cursor (#nivCursor, z-index 99999) replaces the native
   pointer on buttons and links; lift it above the viewer while it is open, or
   the arrows, tabs, close and thumbnails show no pointer at all. Over the photo
   the native zoom cursor is used instead (the script hides the dot there). */
html.nvg-lock #nivCursor{ z-index:2147483600 !important; }
html.nvg-lock.nvg-on-photo #nivCursor{ opacity:0 !important; }
.nvg{ position:fixed; inset:0; z-index:2147483000; display:grid; grid-template-columns:minmax(0,1fr); grid-template-rows:auto auto minmax(0,1fr) auto auto; background:#1a2415; color:var(--paper); opacity:0; transition:opacity .25s ease; font-family:'Inter',sans-serif; -webkit-tap-highlight-color:transparent; }
.nvg[hidden]{ display:none !important; }
/* Fixed rows: the tab row is hidden on single-album events, and without these
   the stage would slide up into its auto-height track. */
.nvg-top{ grid-row:1; } .nvg-tabs{ grid-row:2; } .nvg-stage{ grid-row:3; } .nvg-ctrl{ grid-row:4; } .nvg-strip{ grid-row:5; }
.nvg > *{ min-width:0; }
.nvg-ctrl{ display:none; }
.nvg.in{ opacity:1; }
.nvg button{ font:inherit; color:inherit; background:none; border:0; padding:0; margin:0; cursor:pointer; }
.nvg button:focus-visible{ outline:2px solid var(--gold); outline-offset:2px; }
.nvg svg{ width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; display:block; }
/* Title bar breathing room: it sat 14px under the screen edge ("titles look
   very top attached on all devices"). */
.nvg-top{ display:flex; align-items:center; justify-content:space-between; gap:16px; padding:calc(clamp(28px,4.5vh,48px) + env(safe-area-inset-top,0px)) clamp(16px,3vw,36px) 16px; }
.nvg-head{ display:flex; align-items:baseline; gap:18px; min-width:0; }
.nvg-title{ font-family:'OV Sage','Jost',sans-serif; font-size:clamp(20px,2.2vw,30px); line-height:1.1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; }
.nvg-count{ font-size:13px; letter-spacing:.08em; color:var(--gold); font-variant-numeric:tabular-nums; flex:none; }
.nvg-x{ width:44px; height:44px; display:flex !important; align-items:center; justify-content:center; border:1px solid rgba(242,229,191,.35) !important; flex:none; transition:background .2s ease,color .2s ease; }
.nvg-x:hover{ background:var(--paper) !important; color:var(--greenDeep); }
.nvg-tabs{ display:flex; gap:8px; overflow-x:auto; padding:0 clamp(16px,3vw,36px) 12px; scrollbar-width:none; }
.nvg-tabs::-webkit-scrollbar{ display:none; }
.nvg-tabs[hidden]{ display:none; }
.nvg-tab{ flex:none; display:inline-flex !important; align-items:center; gap:8px; padding:8px 14px !important; border:1px solid rgba(242,229,191,.3) !important; font-size:13px !important; line-height:1.2; white-space:nowrap; transition:background .2s ease,color .2s ease,border-color .2s ease; }
.nvg-tab-n{ font-size:11px; opacity:.6; font-variant-numeric:tabular-nums; }
.nvg-tab:hover{ border-color:var(--gold) !important; }
.nvg-tab.on{ background:var(--gold) !important; border-color:var(--gold) !important; color:#1a2415; }
.nvg-tab.on .nvg-tab-n{ opacity:.75; }
.nvg-stage{ position:relative; min-height:0; display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; }
.nvg-frame{ position:relative; height:100%; min-height:0; overflow:hidden; display:flex; align-items:center; justify-content:center; touch-action:none; cursor:zoom-in; user-select:none; -webkit-user-select:none; }
.nvg.zoomed .nvg-frame{ cursor:grab; }
.nvg-img{ max-width:100%; max-height:100%; width:auto; height:auto; object-fit:contain; display:block; transform-origin:center center; will-change:transform; pointer-events:none; }
.nvg-nav{ width:56px; height:56px; margin:0 clamp(4px,1.5vw,20px) !important; display:flex !important; align-items:center; justify-content:center; border:1px solid rgba(242,229,191,.35) !important; transition:background .2s ease,color .2s ease,opacity .2s ease; }
.nvg-nav:hover{ background:var(--paper) !important; color:var(--greenDeep); }
.nvg.single .nvg-nav, .nvg.zoomed .nvg-nav{ opacity:0; pointer-events:none; }
.nvg-strip{ display:flex; gap:8px; overflow-x:auto; padding:12px clamp(16px,3vw,36px) calc(14px + env(safe-area-inset-bottom,0px)); scrollbar-width:thin; scrollbar-color:rgba(242,229,191,.3) transparent; }
.nvg-strip[hidden]{ display:none; }
.nvg-th{ flex:none; width:84px; height:60px; overflow:hidden; opacity:.5; border:2px solid transparent !important; transition:opacity .2s ease,border-color .2s ease; }
.nvg-th img{ width:100%; height:100%; object-fit:cover; display:block; }
.nvg-th:hover{ opacity:.85; }
.nvg-th.on{ opacity:1; border-color:var(--gold) !important; }
@media(max-width:760px){
  /* Phone: compact header (title up to two lines + close), a thumb-sized
     prev / count / next row above the thumbnails, photo in between. */
  .nvg-top{ align-items:flex-start; gap:12px; padding:calc(28px + env(safe-area-inset-top,0px)) 12px 14px 16px; }
  .nvg-head{ flex:1; }
  .nvg-title{ font-size:clamp(19px,5.4vw,24px); line-height:1.15; white-space:normal; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
  .nvg-count{ display:none; }
  .nvg-x{ width:44px; height:44px; }
  .nvg-tabs{ padding-left:16px; padding-right:16px; }
  .nvg-stage{ grid-template-columns:minmax(0,1fr); }
  .nvg-nav{ display:none !important; }
  .nvg-ctrl{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 16px 0; }
  .nvg.single .nvg-ctrl{ display:none; }
  .nvg-cbtn{ width:44px; height:44px; display:flex !important; align-items:center; justify-content:center; border:1px solid rgba(242,229,191,.35) !important; flex:none; }
  .nvg-cbtn svg{ width:20px; height:20px; }
  .nvg-cbtn:active{ background:var(--paper) !important; color:var(--greenDeep); }
  .nvg-ccount{ font-size:14px; letter-spacing:.08em; color:var(--gold); font-variant-numeric:tabular-nums; }
  .nvg.zoomed .nvg-ctrl{ opacity:.35; pointer-events:none; }
  .nvg-strip{ padding:12px 16px calc(16px + env(safe-area-inset-bottom,0px)); }
  .nvg-th{ width:64px; height:46px; }
}
@media(prefers-reduced-motion:reduce){ .nvg, .nvg-img, .morph-grid .glance-card .nvg-cover{ transition:none !important; } }

/* Past Events rail - same treatment as the homepage founders rail: it starts
   on the content's left edge and runs out to the right edge of the screen
   instead of being cropped at the container. Card width is still measured on
   the CONTENT width (container query on the list wrapper): three cards and a
   fifth of the fourth fit inside it, and the rail carries on into the margin.
   No scrollbar; desktop gets the founders' square arrows beside the heading
   (added by the gallery script), touch screens swipe. html/body already clip
   horizontal overflow, so the bleed cannot scroll the page. */
.community-page .section-inner > .w-dyn-list{ container-type:inline-size; }
.community-page .morph-grid.w-dyn-items{ display:flex !important; grid-template-columns:none !important; gap:18px; overflow-x:auto; overflow-y:hidden; margin-right:calc((100cqw - 100vw) / 2); scroll-snap-type:x proximity; scroll-behavior:smooth; -webkit-overflow-scrolling:touch; overscroll-behavior-x:contain; scrollbar-width:none; }
.community-page .morph-grid.w-dyn-items::-webkit-scrollbar{ display:none; }
.community-page .morph-grid.w-dyn-items > .glance-cell{ flex:0 0 calc((100cqw - 54px) / 3.2); aspect-ratio:4 / 5; min-height:0 !important; min-width:0; scroll-snap-align:start; }
.community-page .morph-grid.w-dyn-items > .glance-cell > .glance-card{ min-width:0; }
.community-page .morph-grid.w-dyn-items::after{ content:""; flex:0 0 max(1px, calc((100vw - 100cqw) / 2 - 18px)); }
@media(max-width:1100px){
  .community-page .morph-grid.w-dyn-items > .glance-cell{ flex-basis:calc((100cqw - 36px) / 2.2); }
}
@media(max-width:760px){
  .community-page .morph-grid.w-dyn-items{ gap:12px; }
  .community-page .morph-grid.w-dyn-items > .glance-cell{ flex-basis:calc((100cqw - 12px) / 1.2); }
}
/* No scroll animation on the Past Events cards: they render in their finished
   state from the first paint (CSS below) and the gallery script adds .morph-in
   so the hover / cover rules keyed on it apply. Other .morph-grid pages keep
   their dot-to-card reveal. */
.community-page .morph-grid .glance-card{ width:100% !important; height:100% !important; border-radius:0 !important; background:var(--paper); border-color:var(--greenDeep); align-items:flex-end; justify-content:flex-start; transition:background .2s ease, border-color .2s ease !important; }
.community-page .morph-grid .morph-body{ opacity:1 !important; transition:none !important; }
.community-page .morph-grid .glance-card .glance-burst{ opacity:1; }
/* Heading row + arrows (founders rail styling: 45px squares, green border,
   gold arrow on a green fill on hover). */
.nv-rail-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:24px; }
.nv-rail-head > .sec-title{ margin-bottom:0 !important; }
.nv-rail-nav{ display:flex; gap:12px; flex:none; }
.nv-rail-btn{ width:45px; height:45px; display:flex; align-items:center; justify-content:center; padding:0; margin:0; border:1.5px solid var(--greenDeep); border-radius:0 !important; background:transparent; color:var(--greenDeep); cursor:pointer; transition:background .18s ease, opacity .18s ease; }
.nv-rail-btn svg{ width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; display:block; }
.nv-rail-btn:hover{ background:var(--greenDeep); color:var(--gold); }
.nv-rail-btn:focus-visible{ outline:2px solid var(--gold); outline-offset:2px; }
.nv-rail-btn[disabled]{ opacity:.35; cursor:default; background:transparent; color:var(--greenDeep); }
@media(max-width:760px), (hover:none){ .nv-rail-nav{ display:none; } }

/* Past Events: heading and rail start on the header logo's left edge (the
   logo sits at 3vw, 20px at <=820px, 12px at <=520px - see .niv-logo-fix at the
   top of this file), with more air above the heading. The rail still bleeds
   to the right screen edge; the right padding mirrors the left so the arrows
   end where the nav island does. */
.community-page .web-section.alt{ padding-left:0 !important; padding-right:0 !important; padding-top:120px !important; }
.community-page .web-section.alt > .section-inner{ max-width:none !important; margin:0 !important; width:100% !important; box-sizing:border-box; padding-left:3vw !important; padding-right:3vw !important; }
@media(max-width:820px){
  .community-page .web-section.alt > .section-inner{ padding-left:20px !important; padding-right:20px !important; }
}
@media(max-width:760px){
  .community-page .web-section.alt{ padding-top:80px !important; }
}
@media(max-width:760px){
  /* an older phone rule keyed on #page-community sets 16px; match its weight */
  #page-community .web-section.alt > .section-inner, .community-page .web-section.alt > .section-inner{ padding-left:20px !important; padding-right:20px !important; }
}
@media(max-width:520px){
  #page-community .web-section.alt > .section-inner, .community-page .web-section.alt > .section-inner{ padding-left:12px !important; padding-right:12px !important; }
}

/* Past Events cards: no gradient over the photo. Title + meta sit in a compact
   solid green strip across the full width of the card's foot, so they read on any
   picture while the photo itself stays untouched. Every title stays on ONE
   line: the gallery script measures the longest title and sets --nv-tfs, one
   shared size that fits it (18px until measured). */
.community-page .morph-grid .glance-card.has-cover .morph-body{ width:100% !important; max-width:none; margin:0; padding:16px 22px 18px !important; background:var(--greenDeep); box-sizing:border-box; }
#eventsGrid .glance-card.has-cover .m-title,
.community-page .morph-grid .glance-card.has-cover .m-title{ color:var(--paper) !important; font-size:var(--nv-tfs,18px) !important; line-height:1.15; white-space:nowrap; }
.community-page .morph-grid .glance-card.has-cover .m-meta{ color:var(--paper) !important; opacity:.8; margin-top:6px; font-size:14px; white-space:nowrap; }
.community-page .morph-grid .glance-card.has-cover:hover .m-title{ color:var(--gold) !important; }
@media(max-width:760px){
  .community-page .morph-grid .glance-card.has-cover .morph-body{ padding:12px 16px 14px !important; }
  .community-page .morph-grid .glance-card.has-cover .m-meta{ font-size:13px; }
}

/* ===== PDF viewer (footer investor charters, Grievance, Disclosures) ===== */
html.nvpdf-lock, html.nvpdf-lock body{ overflow:hidden !important; }
html.nvpdf-lock #nivCursor{ z-index:2147483600 !important; }
.nvpdf{ position:fixed; inset:0; z-index:2147483000; display:flex; align-items:center; justify-content:center; padding:clamp(12px,4vh,48px) clamp(12px,4vw,56px); background:rgba(28,30,27,.72); opacity:0; transition:opacity .22s ease; font-family:'Inter',sans-serif; }
.nvpdf[hidden]{ display:none !important; }
.nvpdf.in{ opacity:1; }
.nvpdf-panel{ width:min(1040px,100%); height:100%; max-height:calc(100vh - 2 * clamp(12px,4vh,48px)); display:flex; flex-direction:column; background:var(--paper); box-shadow:0 30px 80px rgba(0,0,0,.35); }
.nvpdf-bar{ display:flex; align-items:center; gap:20px; padding:16px 18px 16px 24px; background:var(--greenDeep); color:var(--paper); }
.nvpdf-title{ flex:1; min-width:0; font-family:'OV Sage','Jost',sans-serif; font-size:clamp(18px,1.9vw,26px); line-height:1.15; color:var(--gold); }
.nvpdf-open{ flex:none; font-size:12px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--gold); text-decoration:none; border-bottom:1px solid rgba(240,216,142,.6); padding-bottom:2px; }
.nvpdf-open:hover{ color:var(--paper); border-color:var(--paper); }
.nvpdf-dl{ flex:none; font:inherit; font-size:12px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--greenDeep); background:var(--gold); border:1px solid var(--gold); padding:9px 14px; cursor:pointer; transition:background .18s ease,color .18s ease; }
@media(hover:hover){ .nvpdf-dl:hover{ background:var(--paper); border-color:var(--paper); } }
.nvpdf-dl:disabled{ opacity:.7; cursor:progress; }
.nvpdf-x{ flex:none; width:40px; height:40px; display:flex; align-items:center; justify-content:center; background:transparent; border:1px solid rgba(242,229,191,.35); color:var(--paper); cursor:pointer; padding:0; transition:background .18s ease,color .18s ease; }
.nvpdf-x:hover{ background:var(--paper); color:var(--greenDeep); }
.nvpdf-x svg{ width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; }
.nvpdf button:focus-visible, .nvpdf a:focus-visible{ outline:2px solid var(--gold); outline-offset:2px; }
.nvpdf-body{ flex:1; min-height:0; background:#525659; }
.nvpdf-frame{ width:100%; height:100%; border:0; display:block; background:#525659; }
/* Phones / touch: a compact card with Open and Download, not a blank frame. */
.nvpdf.is-card .nvpdf-panel{ height:auto; }
.nvpdf.is-card .nvpdf-open{ display:none; }
.nvpdf.is-card .nvpdf-body{ flex:none; background:var(--paper); padding:22px 24px 26px; }
.nvpdf-note{ margin:0 0 18px; font-size:15px; line-height:1.5; color:var(--ink); }
.nvpdf-actions{ display:flex; gap:10px; flex-wrap:wrap; }
.nvpdf-btn{ display:inline-flex; align-items:center; justify-content:center; min-height:46px; padding:0 22px; border:1.5px solid var(--greenDeep); color:var(--greenDeep); font-size:14px; font-weight:600; letter-spacing:.04em; text-decoration:none; }
.nvpdf-btn-main{ background:var(--greenDeep); color:var(--paper); }
@media(max-width:760px){ .nvpdf-bar{ padding:14px 12px 14px 18px; gap:12px; } .nvpdf-x{ width:38px; height:38px; } }
@media(prefers-reduced-motion:reduce){ .nvpdf{ transition:none; } }
/* Phones: the same panel, full screen, with the pages drawn by pdf.js (mobile
   browsers cannot show a PDF inside a frame). The bar keeps the title, "Open in
   new tab" and close. */
.nvpdf.is-phone{ padding:0; align-items:stretch; }
.nvpdf.is-phone .nvpdf-panel{ width:100%; height:100%; max-height:none; box-shadow:none; }
.nvpdf.is-phone .nvpdf-bar{ padding:calc(10px + env(safe-area-inset-top,0px)) 10px 10px 16px; gap:10px; }
.nvpdf.is-phone .nvpdf-title{ font-size:17px; line-height:1.25; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
/* Phone bar: title and close on the first row, the two actions share the second. */
.nvpdf.is-phone .nvpdf-body{ overflow:auto; -webkit-overflow-scrolling:touch; overscroll-behavior:contain; padding:8px 8px 16px; }
/* Desktop: the actions wrapper is transparent to the top bar's layout. Phones:
   it is a bar pinned to the bottom of the screen (the panel is a full-screen
   column: title bar, scrolling pages, this), clear of the home indicator. */
.nvpdf-acts{ display:contents; }
.nvpdf.is-phone .nvpdf-acts{ display:flex; flex:none; gap:10px; padding:10px 12px calc(10px + env(safe-area-inset-bottom,0px)); background:var(--greenDeep); border-top:1px solid rgba(240,216,142,.25); }
.nvpdf.is-phone .nvpdf-open{ flex:1 1 0; display:inline-flex; align-items:center; justify-content:center; gap:4px; min-height:46px; padding:0 10px; font-size:12px; letter-spacing:.08em; border:1px solid rgba(240,216,142,.6); white-space:nowrap; }
.nvpdf.is-phone .nvpdf-dl{ flex:1 1 0; min-height:46px; padding:0 10px; font-size:12px; letter-spacing:.08em; }
.nvpdf-page{ position:relative; margin:0 auto 8px; background:#fff; box-shadow:0 1px 3px rgba(0,0,0,.35); max-width:100%; }
.nvpdf-page canvas{ display:block; width:100%; height:100%; }
.nvpdf-link{ position:absolute; display:block; }
.nvpdf-msg{ margin:0; padding:18vh 28px 0; text-align:center; font-size:15px; line-height:1.6; color:var(--paper); }
.gfoot-social a.social-icon, .gfoot-social a.social-icon:visited{ text-decoration:none; }

/* Disclosures page — desktop vertical licence tabs (built by the bundle from
   .dsc-cards). The comparison table stays in the page as the no-JS fallback. */
.dsc-tabs{ display:none; }
@media(min-width:992px){
  .dsc-inner:has(.dsc-cards.is-tabs) .dsc-table{ display:none !important; }
  .dsc-cards.is-tabs{ display:grid !important; grid-template-columns:minmax(260px,340px) minmax(0,1fr); gap:24px; align-items:start; }
  .dsc-tabs{ display:flex; flex-direction:column; gap:8px; }
  .dsc-tab{ display:flex; flex-direction:column; align-items:flex-start; gap:8px; width:100%; text-align:left; cursor:pointer;
    padding:18px 22px; border:1px solid #456232; background:#456232; color:#F0D88E; font:inherit;
    transition:background-color .2s ease,color .2s ease; }
  .dsc-tab-name{ font-family:'OV Sage','Jost',sans-serif; font-size:22px; line-height:1.1; }
  .dsc-tab-sub{ font-family:'Inter',sans-serif; font-size:12px; letter-spacing:.06em; color:#F2E5BF; opacity:.8; font-variant-numeric:tabular-nums; }
  .dsc-tab:hover{ background:#3A5429; }
  .dsc-tab.on{ background:#F0D88E; color:#456232; border-color:#F0D88E; }
  .dsc-tab.on .dsc-tab-sub{ color:#456232; opacity:.75; }
  .dsc-tab:focus-visible{ outline:2px solid #456232; outline-offset:3px; }
  .dsc-cards.is-tabs > .dsc-card{ display:none; grid-column:2; grid-row:1; }
  .dsc-cards.is-tabs > .dsc-card.on{ display:block; }
  .dsc-cards.is-tabs .dsc-card-title{ display:none; }
  .dsc-cards.is-tabs .dsc-row{ display:grid; grid-template-columns:minmax(200px,260px) minmax(0,1fr); gap:24px; align-items:baseline; padding:10px 24px; }
  .dsc-cards.is-tabs .dsc-row:first-of-type{ border-top:0; }
  .dsc-cards.is-tabs .dsc-row-label{ margin-bottom:0; }
}
/* Short laptop screens (e.g. 1366x768, 1536x864 at 125%): tighten so the
   whole page still fits one view. */
@media(min-width:992px) and (max-height:760px){
  html .dsc-section{ padding-top:92px; padding-bottom:32px; }
  html .dsc-eyebrow{ margin-bottom:4px; }
  html .dsc-title{ font-size:40px; margin-bottom:16px; }
  .dsc-cards.is-tabs .dsc-row{ padding-top:7px; padding-bottom:7px; }
  .dsc-cards.is-tabs .dsc-row-value{ font-size:14px; line-height:1.4; }
  .dsc-tab{ padding:14px 20px; gap:6px; }
  .dsc-tab-name{ font-size:20px; }
}

/* Grievance page — short laptop screens: tighten so it fits one view. */
@media(min-width:992px) and (max-height:760px){html .grv-section{padding-top:92px;padding-bottom:28px;}html .grv-eyebrow{margin-bottom:4px;}html .grv-title{font-size:40px;margin-bottom:12px;}html .grv-intro{font-size:16px;margin-bottom:22px;}html .grv-card{min-height:180px;padding:24px;}html .grv-card-title{font-size:28px;margin-top:20px;}html .grv-note{margin-top:22px;padding-top:14px;font-size:13px;}}

/* Grievance + Disclosures, desktop: fill the viewport height. The section is
   already min-height:100vh (the site's .page class); the main block — the
   licence tabs + panel, or the three desk cards — takes whatever height is
   left, so the page never ends in an empty band. */
@media(min-width:992px){
  /* .page.active{display:block} outranks a plain class — match its weight. */
  html .grv-section.page.active, html .dsc-section.page.active, html .grv-section, html .dsc-section{ display:flex; flex-direction:column; min-height:100vh; box-sizing:border-box; }
  html .grv-inner, html .dsc-inner{ flex:1 1 auto; display:flex; flex-direction:column; width:100%; }
  html .grv-grid{ flex:1 1 auto; min-height:220px; }
  html .dsc-cards.is-tabs{ flex:1 1 auto; align-items:stretch; grid-template-rows:minmax(0,1fr); }
  .dsc-cards.is-tabs .dsc-tabs{ height:100%; }
  .dsc-cards.is-tabs .dsc-tab{ flex:1 1 0; justify-content:center; }
  .dsc-cards.is-tabs > .dsc-card.on{ display:flex; flex-direction:column; }
  .dsc-cards.is-tabs > .dsc-card.on .dsc-row{ flex:1 1 auto; align-content:center; align-items:center; }
}

/* Grievance + Disclosures — button states in the site's own card language
   (the Dhandho "who" cards): at rest cream with a green outline and green
   text; on hover / selected the surface fills green, type turns gold and the
   brand starburst (.conv-burst) pops. No terracotta, no lift, no shadow. */
html .grv-card{ position:relative; overflow:hidden; background-color:transparent; border:1.5px solid #456232;
  transition:background-color .3s ease, border-color .3s ease; }
html .grv-card .grv-card-eyebrow{ color:#456232; transition:color .3s ease; }
html .grv-card .grv-card-title{ color:#456232; transition:color .3s ease; }
html .grv-card .grv-card-entity{ color:#2C2E2B; transition:color .3s ease; }
html .grv-card .grv-card-cta{ display:inline-flex; align-items:center; gap:10px; align-self:flex-start;
  padding:11px 18px; border:1px solid #456232; color:#456232; background-color:transparent; position:relative; z-index:2;
  transition:background-color .3s ease, color .3s ease, border-color .3s ease; }
html .grv-card .grv-card-cta::after{ content:"\2192"; font-size:15px; letter-spacing:0; transition:transform .25s ease; }
html .grv-card .grv-card-eyebrow, html .grv-card .grv-card-title, html .grv-card .grv-card-entity{ position:relative; z-index:2; }
html .grv-card:hover, html .grv-card:focus-visible{ background-color:#456232; border-color:#456232; }
html .grv-card:hover .grv-card-eyebrow, html .grv-card:hover .grv-card-title,
html .grv-card:focus-visible .grv-card-eyebrow, html .grv-card:focus-visible .grv-card-title{ color:#F0D88E; }
html .grv-card:hover .grv-card-entity, html .grv-card:focus-visible .grv-card-entity{ color:#F2E5BF; }
html .grv-card:hover .grv-card-cta, html .grv-card:focus-visible .grv-card-cta{ background-color:#F0D88E; border-color:#F0D88E; color:#456232; }
html .grv-card:hover .grv-card-cta::after{ transform:translateX(4px); }
html .grv-card:focus-visible{ outline:2px solid #456232; outline-offset:4px; }

.grv-card .conv-burst{ position:absolute; top:26px; right:26px; width:88px; height:88px; overflow:visible; pointer-events:none; z-index:1; }
.dsc-tab .conv-burst{ position:absolute; top:50%; right:18px; width:40px; height:40px; margin-top:-20px; overflow:visible; pointer-events:none; display:none; }
@media(min-width:992px){ .dsc-cards.is-tabs .dsc-tab .conv-burst{ display:block; } }
:is(.grv-card,.dsc-tab) .conv-burst-dot{ transform:scale(0); transform-origin:center; transform-box:fill-box; fill:var(--gold,#F0D88E); transition:transform .45s cubic-bezier(.16,1,.3,1); }
:is(.grv-card,.dsc-tab) .conv-burst-lines line{ transform:scale(0); transform-origin:center; transform-box:fill-box; stroke:var(--gold,#F0D88E); stroke-width:2; stroke-linecap:round; transition:transform .45s cubic-bezier(.16,1,.3,1); }
.dsc-tab .conv-burst-lines line{ stroke-width:4; }
:is(.grv-card,.dsc-tab):is(:hover,:focus-visible,.on) .conv-burst-dot,
:is(.grv-card,.dsc-tab):is(:hover,:focus-visible,.on) .conv-burst-lines line{ transform:scale(1); }
/* Phones: a smaller burst tucked in the top-right corner, clear of the title
   (the eyebrow line is short and sits left). */
@media(max-width:767px){
  .grv-card .conv-burst{ top:18px; right:18px; width:40px; height:40px; }
  .grv-card .conv-burst-lines line{ stroke-width:3.5; }
}

@media(min-width:992px){
  html .dsc-cards.is-tabs .dsc-tab{ position:relative; padding-right:68px; background:transparent; border:1.5px solid #456232; color:#456232;
    transition:background-color .3s ease, color .3s ease, border-color .3s ease; }
  html .dsc-cards.is-tabs .dsc-tab .dsc-tab-sub{ color:#456232; opacity:.75; }
  html .dsc-cards.is-tabs .dsc-tab:hover, html .dsc-cards.is-tabs .dsc-tab.on, html .dsc-cards.is-tabs .dsc-tab.on:hover{ background:#456232; border-color:#456232; color:#F0D88E; }
  html .dsc-cards.is-tabs .dsc-tab:hover .dsc-tab-sub, html .dsc-cards.is-tabs .dsc-tab.on .dsc-tab-sub{ color:#F2E5BF; opacity:.85; }
  html .dsc-cards.is-tabs .dsc-tab.on{ cursor:default; }
}
/* "View document": green outline at rest, filled green on hover. */
html .dsc-doc{ display:inline-flex; align-items:center; gap:8px; padding:10px 16px; background-color:transparent; color:#456232;
  border:1.5px solid #456232; font-size:11.5px; transition:background-color .3s ease, color .3s ease; }
html .dsc-doc::after{ content:"\2197"; font-size:13px; letter-spacing:0; transition:transform .25s ease; }
html .dsc-doc:hover{ background-color:#456232; color:#F0D88E; border-color:#456232; }
html .dsc-doc:hover::after{ transform:translate(2px,-2px); }
html .dsc-doc:focus-visible{ outline:2px solid #456232; outline-offset:3px; }
@media(prefers-reduced-motion:reduce){
  html .grv-card, html .grv-card *, .dsc-tab, html .dsc-doc, html .dsc-doc::after,
  :is(.grv-card,.dsc-tab) .conv-burst-dot, :is(.grv-card,.dsc-tab) .conv-burst-lines line{ transition:none !important; }
}

/* ── Custom cursor: fail-safes (see window.__nvCursor contract) ─────────────
   The native pointer is hidden ONLY under html.nv-cursor-on, which the script
   sets after the dot is live. The Conviction Roll's own no-pointer rule is
   gated the same way. Top-layer content (modal <dialog>, :fullscreen) sits
   above every z-index, so there the browser pointer comes back and the dot
   steps aside. Each rule stands alone so an unsupported selector in one
   cannot void the others. */
@media (hover:hover) and (pointer:fine){
  html.nv-cursor-on .conv-roll-section, html.nv-cursor-on .conv-co{ cursor:none !important; }
}
html:has(dialog:modal) #nivCursor{ display:none !important; }
html.nv-cursor-on:has(dialog:modal), html.nv-cursor-on:has(dialog:modal) body, html.nv-cursor-on:has(dialog:modal) body *{ cursor:revert !important; }
html:has(:fullscreen) #nivCursor{ display:none !important; }
html.nv-cursor-on:has(:fullscreen), html.nv-cursor-on:has(:fullscreen) body, html.nv-cursor-on:has(:fullscreen) body *{ cursor:revert !important; }
@media print{ #nivCursor{ display:none !important; } }

/* Home hero hold (niveshaay-boot.js adds it in the head; the hero engine lifts
   it once it has drawn the opening frame). Without it the at-rest layout -
   card-sized photograph, four closed cells - showed first and then jumped to
   full screen. The hero's own CSS animations (fade-in, title) wait with it. */
html.nv-hero-hold #heroScene{ visibility:hidden; }
html.nv-hero-hold #heroScene *,
html.nv-hero-hold #heroScene *::before,
html.nv-hero-hold #heroScene *::after{ animation-play-state:paused !important; }

/* Home, section 2: the founder rail is hidden until the founders' testimonial
   videos exist. In its place, directly under the logo marquee, sits the
   testimonial rail from "Hear from our Risk-takers" - with that section's title
   and arrows hidden (client: no title, no arrows, like the founder rail).
   Spacing: the marquee keeps its own bottom margin (the gap the founder rail
   had under it); section 2 drops its bottom padding and the risk-takers section
   its top padding, so the testimonial rail starts exactly where the founder rail
   started. To bring the founder rail back, delete this block. Home only: the
   AIF page's rail (#aifBackers) is untouched. */
#homeBackers #bkrRail{ display:none; }
#page-home #homeBackers{ padding-bottom:0; }
#page-home #homeConvWrapper .conv-subrow.hero-subrow{ display:none !important; }
#page-home #homeConvWrapper.hh-plain-wrapper .conv-viewport{ padding-top:0 !important; }
/* Tablets (761-900px): start the cards at 80px and let the rail bleed to both
   screen edges, as the founder rail did here - the same arrangement this rail
   already uses from 901px up (edge-to-edge scroller, 52px lead + 28px gap). */
@media (min-width:761px) and (max-width:900px){
  #page-home #homeConvWrapper.hh-plain-wrapper .conv-viewport{ padding-left:0 !important; padding-right:0 !important; }
  #page-home #homeConvWrapper.hh-plain-wrapper #heroRailArea .hero-rail-track::before{ content:''; flex:0 0 52px; align-self:stretch; order:-1; }
  #page-home #homeConvWrapper.hh-plain-wrapper #heroRailArea .hero-rail-track::after{ content:''; flex:0 0 36px; align-self:stretch; }
}
/* Tablets (761-1024px): the cards were a fixed 680px, so the next one barely
   showed (0-17% up to 900px) and nothing said "scroll". Size them so ~30% of
   the next card is always in view: width = (viewport - 80px lead - 28px gap)
   / 1.3, never wider than the 680px they were. */
@media (min-width:761px) and (max-width:1024px){
  #page-home #homeConvWrapper.hh-plain-wrapper #heroRailArea .hero-pair{ flex:0 0 min(680px, calc((100vw - 108px) / 1.3)) !important; }
}

/* Home Research & News: the News tab's active fill is green, not terracotta
   (All keeps terracotta, Research keeps blue). */
#knowTabs .tab.active[data-oc*="'news'"]{ background:var(--greenDeep); border-color:var(--greenDeep); }

/* Popups: the page behind never scrolls. niveshaay.js sets .nv-modal-lock on
   <html> while a form popup (.sch-overlay.open) or the info popup
   (.overlay.show) is open. The form scrolls inside itself and
   overscroll-behavior:contain stops that scroll passing to the page at its
   ends. scrollbar-gutter keeps the scrollbar's space so the page does not
   shift sideways when the lock goes on. */
html.nv-modal-lock{ overflow:hidden !important; scrollbar-gutter:stable; }
html.nv-modal-lock body{ overflow:hidden !important; }
.sch-overlay, .overlay{ overscroll-behavior:contain; }
.sch-modal{ overscroll-behavior:contain; }

/* About, team cards (not the founders): 30% smaller on desktop, and the
   card turns soft gold on hover. The portraits are the client's transparent
   PNGs, so the card's own background shows through: cream (#E6DAB0, the
   original photos' backdrop, so nothing looks different at rest) and
   --gold on hover. Phones keep their 2x2 rail. */
@media(min-width:769px){
  .about-page .team-grid:not(.founders){ grid-auto-columns:calc(((100% - 40px) / 3) * .7); }
}
.about-page .team-grid:not(.founders) .tm-photo{
  background-color:#E6DAB0; transition:background-color .3s ease;
}
@media(hover:hover){
  .about-page .team-grid:not(.founders) .tm:hover .tm-photo{ background-color:var(--gold); }
}

/* About founders: the parallax (niveshaay.js) slides each portrait by up to
   ±13% of its own height, so the photo must be taller than its frame. The
   CMS-image rule above (.about-page img.tm-photo-bg: inset 0, height 100%)
   outranked .tm-parallax's 120% and left the photo exactly frame-height,
   so the slide uncovered the card background at the top or bottom edge.
   140% with a -20% top keeps a margin larger than the largest slide. */
.about-page img.tm-photo-bg.tm-parallax{ top:-20%; bottom:auto; height:140%; }

/* Disclosures: every licence card marked data-dsc-tag in the Designer (all five)
   shows its registration number as a small outlined tag. Colour follows the tab state via currentColor. */
html .dsc-cards.is-tabs .dsc-tab.is-tagged .dsc-tab-sub{ display:inline-block; padding:3px 8px; border:1.2px solid currentColor; font-size:12px; font-weight:600; letter-spacing:.08em; line-height:1.3; opacity:1; }
.dsc-card-tag{ display:none; }
/* Stacked cards (below 992px) carry the number under the title, cream on the green title bar. */
.dsc-cards:not(.is-tabs) .dsc-card-tag, .dsc-cards.is-tabs .dsc-card-title .dsc-card-tag{ display:block; width:fit-content; margin-top:10px; padding:3px 8px; border:1.2px solid #F0D88E; color:#F0D88E; font-family:'Inter',sans-serif; font-size:12px; font-weight:600; letter-spacing:.08em; line-height:1.2; font-variant-numeric:tabular-nums; }

/* ── Article Continue Reading: the rail ───────────────────────────────────
   kb-gallery.js turns the first Continue Reading grid into a swipeable row
   (.is-rail) under a heading built like the AIF research rail's: a large
   two-tone title with the type chips to its right (under it on phones). The
   cards take the AIF rail card: thin green frame, 16:9 poster, Jost title,
   a dark type tag in the bottom-right corner, tint + blue frame on hover.
   2.2 cards across on desktop, one card and a peek at <=900px, native scroll
   with snap and no visible bar. The chips keep the Knowledge hub's colours:
   All terracotta, Research / Infographics / Quick Reads blue, Podcast /
   Niveshaay Deals green, with hover previewing the active colour. */
html.art-more-ready .art-more-label{ display:none; }
.art-more-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:20px;
  border-top:1.5px solid var(--ink); padding-top:clamp(28px,3vw,44px);
  margin-bottom:28px; }
.art-more-title{ font-family:'OV Sage','Jost',sans-serif; color:var(--greenDeep);
  font-size:clamp(26px,2.9vw,42px); font-weight:400; line-height:1.12; flex:0 0 auto; }
.art-more-title strong{ font-weight:600; }
.art-more-filters{ display:flex; flex-wrap:wrap; justify-content:flex-end; gap:10px; margin:0; }
.art-more-filters .art-more-chip{ width:auto; height:auto; min-width:0;
  font-family:'Jost',sans-serif; font-size:14px; font-weight:600; line-height:20px;
  padding:13px 26px; border:1px solid var(--greenDeep); background:var(--paper); color:var(--ink); }
.art-more-filters .art-more-chip:hover,
.art-more-filters .art-more-chip.active{ background:var(--terra); border-color:var(--terra); color:var(--paper); }
.art-more-filters .art-more-chip.kb-chip-blue:hover,
.art-more-filters .art-more-chip.kb-chip-blue.active{ background:var(--blue); border-color:var(--blue); color:var(--paper); }
.art-more-filters .art-more-chip.kb-chip-green:hover,
.art-more-filters .art-more-chip.kb-chip-green.active{ background:var(--greenDeep); border-color:var(--greenDeep); color:var(--paper); }
.art-more-grid.is-rail{
  display:flex; gap:18px; overflow-x:auto; overflow-y:hidden;
  scroll-snap-type:x proximity; overscroll-behavior-x:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none; -ms-overflow-style:none;
}
.art-more-grid.is-rail::-webkit-scrollbar{ display:none; }
.art-more-grid.is-rail > .w-dyn-item{
  flex:0 0 calc((100% - var(--art-bleed, 0px) - 36px) / 2.2); min-width:0;
  scroll-snap-align:start; display:flex;
}
/* the card */
.art-more-grid.is-rail .art-more-card{ position:relative; border:1px solid var(--greenDeep);
  background:var(--paper); transition:background .2s ease, border-color .2s ease; }
.art-more-grid.is-rail .art-more-thumb{ border-bottom:1px solid var(--greenDeep); }
.art-more-grid.is-rail .art-more-card-body{ padding:22px 24px 26px; }
.art-more-grid.is-rail .art-more-card-title{ font-family:'Jost',sans-serif; font-size:21px;
  font-weight:500; line-height:1.28; color:var(--ink); margin-bottom:8px; }
.art-more-grid.is-rail .art-more-card-meta{ margin-top:0; font-family:'Jost',sans-serif;
  font-size:12.5px; color:var(--gray); padding-right:96px; }
.art-more-grid.is-rail .art-more-card-tag{ position:absolute; right:16px; bottom:16px; z-index:2;
  margin:0; font-family:'Jost',sans-serif; font-size:10.5px; font-weight:700; letter-spacing:.07em;
  text-transform:uppercase; padding:5px 11px; background:var(--ink); color:var(--paper);
  transition:background .2s ease; }
.art-more-grid.is-rail .art-more-card:hover{ background:var(--tint); border-color:var(--blue); }
.art-more-grid.is-rail .art-more-card:hover .art-more-card-title{ color:var(--ink); }
.art-more-grid.is-rail .art-more-card:hover .art-more-card-tag{ background:var(--blue); }
.art-more-grid.is-rail [data-rail-type="podcast"] .art-more-card:hover,
.art-more-grid.is-rail [data-rail-type="deal"] .art-more-card:hover{ border-color:var(--greenDeep); }
.art-more-grid.is-rail [data-rail-type="podcast"] .art-more-card:hover .art-more-card-tag,
.art-more-grid.is-rail [data-rail-type="deal"] .art-more-card:hover .art-more-card-tag{ background:var(--greenDeep); }
@media(max-width:900px){
  .art-more-head{ flex-direction:column; align-items:flex-start; gap:14px; margin-bottom:18px; }
  .art-more-title{ font-size:clamp(23px,6.2vw,32px); line-height:1.14; }
  /* Phones: the chips WRAP instead of scrolling sideways. Six chips do not
     fit one row, and a row that scrolls hides the last two with nothing to
     say they are there. Two rows keep every type in sight. */
  .art-more-filters{ align-self:stretch; justify-content:flex-start; flex-wrap:wrap; gap:8px; }
  .art-more-filters .art-more-chip{ flex:0 0 auto; padding:9px 11px; font-size:12.5px; white-space:nowrap; }
  .art-more-grid.is-rail > .w-dyn-item{ flex:0 0 calc((100% - var(--art-bleed, 0px)) * .82); }
  .art-more-grid.is-rail .art-more-card-body{ padding:16px 18px 20px; }
  .art-more-grid.is-rail .art-more-card-title{ font-size:18px; }
  .art-more-grid.is-rail .art-more-card-meta{ padding-right:88px; }
}
.art-more-thumb.is-blank .art-more-thumb-img{ display:none; }
.art-more-thumb.is-pod{ background:var(--greenDeep); }
.art-more-play{ width:58px; height:58px; border-radius:50% !important; background:var(--paper);
  display:flex; align-items:center; justify-content:center; }
.art-more-play svg{ width:26px; height:26px; fill:var(--greenDeep); margin-left:3px; }
.art-more-card:hover .art-more-thumb.is-pod{ background:#3a5429; }
/* Podcast card once its YouTube ID is found: the real thumbnail fills the
   poster (inline background-image), and the badge goes when the video plays. */
.art-more-thumb.pod-poster{ background-size:cover; background-position:center; }
.art-more-thumb.pod-poster.is-playing .art-more-play{ display:none; }
.art-more-thumb.pod-poster .art-more-play{ position:relative; z-index:1; }
/* Bleed: kb-gallery.js measures the gap from the rail to the screen's right
   edge into --art-bleed; the rail reaches into it and a spacer of the same
   width lets the last card scroll back into line with the column. */
.art-more-grid.is-rail{ margin-right:calc(-1 * var(--art-bleed, 0px)); }
.art-more-grid.is-rail::after{ content:''; flex:0 0 calc(var(--art-bleed, 0px) - 18px); align-self:stretch; }
.art-more-grid.is-rail::before{ content:none; }
/* Desktop: match the AIF rail section exactly. The head and the rail leave
   the text column for the page's 28px side margins (kb-gallery.js measures
   the column into --art-l / --art-r); 72px above the title like the AIF
   section; the chips stay on one line; cards are 2.2-up of the page width
   with the same 28px tail spacer the AIF rail has. */
@media(min-width:901px){
  .art-more-head{ margin-left:calc(28px - var(--art-l, 28px)); margin-right:calc(28px - var(--art-r, 28px));
    padding-top:72px; margin-bottom:28px; min-height:clamp(78px,7vw,112px); }
  .art-more-filters{ flex-wrap:nowrap; }
  .art-more-filters .art-more-chip{ white-space:nowrap; }
  .art-more-grid.is-rail{ margin-left:calc(28px - var(--art-l, 28px)); margin-right:calc(-1 * var(--art-r, 0px)); }
  .art-more-grid.is-rail > .w-dyn-item{ flex:0 0 calc((100% - 36px) / 2.2); }
  .art-more-grid.is-rail::after{ flex:0 0 28px; }
}
@media(min-width:901px) and (max-width:1199px){
  .art-more-filters{ gap:8px; }
  .art-more-filters .art-more-chip{ padding:12px 12px; font-size:13px; }
}

/* ── Community page on phones ─────────────────────────────────────────────
   The page has no photo hero any more (just the events rail), so it takes the
   Knowledge hub's phone layout: logo, title and cards share one 16px left
   edge (the logo rule is in the Knowledge block near the top), the title
   clears the logo by the same ~50px the Knowledge title does and sets on two
   lines, and the page is no longer held to a full screen's height, which left
   an empty band between the cards and the footer. */
@media(max-width:767px){
  html body#v3site .community-page{ min-height:0 !important; }
  html body#v3site .community-page .web-section.alt{ padding-top:112px !important; padding-bottom:56px !important; }
  html body#v3site .community-page .web-section.alt .section-inner{ padding-left:16px !important; padding-right:16px !important; }
  html body#v3site .community-page .nv-rail-head .sec-title{
    width:min-content; font-size:clamp(28px,8vw,40px) !important;
    line-height:1.05 !important; white-space:normal !important; margin:0; }
  /* the events rail runs to the screen's right edge, cards slide off it */
  html body#v3site .community-page #eventsGrid{ margin-top:32px !important; margin-right:-16px !important; }
}

/* Community title: styled like the Knowledge hub title ("Discover **Emerging
   Signals**": OV Sage, first word 500, the rest 700) but in brand green, and
   revealed the same way on load (kb words blink blue -> green, one by one).
   niveshaay.js wraps the words. Until it runs the heading
   shows as plain green text; if it never runs, nothing is hidden. */
html body#v3site .community-page .nv-rail-head .sec-title{
  font-family:'OV Sage','Jost',sans-serif !important; font-weight:500 !important;
  color:var(--greenDeep) !important; letter-spacing:-.01em; }
.community-page .sec-title.comm-title-reveal strong{ font-weight:700; }
/* OV Sage's space is narrow at display sizes; widen the one between the words
   (word-spacing acts on the space itself, so a wrapped phone title gets no indent) */
.community-page .sec-title.comm-title-reveal{ word-spacing:.18em; }
.community-page .sec-title.comm-title-reveal .cwr-word{ display:inline-block; opacity:0; }
.community-page .sec-title.comm-title-reveal .cwr-word.cwr-blink{ animation:cwrWordBlinkGreen .55s ease-out both; }
.community-page .sec-title.comm-title-reveal:not(.cwr-armed) .cwr-word{ animation:cwrFailSafe 0s linear 2.5s forwards; }
@media (prefers-reduced-motion:reduce){
  .community-page .sec-title.comm-title-reveal .cwr-word{ opacity:1 !important; animation:none !important; }
}

/* Gallery swipe-to-dismiss (iOS Photos): while the photo is dragged the chrome
   fades out at once and the photo may leave its frame; niveshaay.js thins the
   backdrop and moves the photo. */
.nvg .nvg-top, .nvg .nvg-tabs, .nvg .nvg-strip, .nvg .nvg-ctrl, .nvg .nvg-nav{ transition:opacity .18s ease; }
.nvg.nvg-drag .nvg-top, .nvg.nvg-drag .nvg-tabs, .nvg.nvg-drag .nvg-strip,
.nvg.nvg-drag .nvg-ctrl, .nvg.nvg-drag .nvg-nav{ opacity:0 !important; pointer-events:none; }
.nvg.nvg-drag .nvg-frame, .nvg.nvg-drag .nvg-stage{ overflow:visible; }
.nvg.nvg-drag .nvg-stage{ z-index:2; }

/* Community title: hidden until niveshaay.js arms the word reveal, so the
   plain heading never paints first and then animates again. Same 2.5s
   fail-safe as the Knowledge title if the script never runs. */
.community-page .nv-rail-head .sec-title:not(.cwr-armed){ opacity:0; animation:cwrFailSafe 0s linear 2.5s forwards; }
@media (prefers-reduced-motion:reduce){ .community-page .nv-rail-head .sec-title{ opacity:1 !important; animation:none !important; } }

/* Community event cards: the photo ENDS where the green caption begins
   (caption below the image, not laid over its bottom edge). The card keeps
   its 4:5 cell; it becomes a column, the cover takes the space above the
   caption and is cropped to fill it. */
.community-page .morph-grid .glance-card.has-cover{ flex-direction:column !important; align-items:stretch !important; justify-content:flex-start !important; }
.community-page .morph-grid .glance-card.has-cover .nvg-cover{ position:relative !important; inset:auto !important; flex:1 1 auto; min-height:0; height:auto !important; width:100%; }
.community-page .morph-grid .glance-card.has-cover .morph-body{ flex:none; position:relative; z-index:1; }

/* Community event cards on phones: 20% taller than the 4:5 cell (4:6 = 2:3),
   the extra height going to the photo above the caption. */
@media(max-width:767px){
  html body#v3site .community-page .morph-grid .glance-cell{ aspect-ratio:2 / 3 !important; height:auto !important; }
}

/* Community event cards in the Knowledge-card look: cream box, thin (1px)
   green outline, a thin green rule between photo and caption, Jost title in
   ink (no caps) and the muted date line. Hover tints the box and the thin
   green outline stays, as on the Knowledge hub. Replaces the solid green
   caption block and the green-fill hover. */
html body .community-page #eventsGrid .glance-card.has-cover.morph-in,
html body .community-page #eventsGrid .glance-card.has-cover.morph-in:hover{
  border:1px solid var(--greenDeep) !important; background:var(--paper) !important;
  transition:background .2s ease !important; }
html body .community-page #eventsGrid .glance-card.has-cover.morph-in:hover{ background:var(--tint) !important; }
html body .community-page #eventsGrid .glance-card.has-cover .nvg-cover{ border-bottom:1px solid var(--greenDeep); box-sizing:border-box; }
html body .community-page #eventsGrid .glance-card.has-cover .morph-body,
html body .community-page #eventsGrid .glance-card.has-cover.morph-in:hover .morph-body{
  background:transparent !important; padding:16px 20px 18px !important; }
html body .community-page #eventsGrid .glance-card.has-cover .m-title,
html body .community-page #eventsGrid .glance-card.has-cover.morph-in:hover .m-title{
  font-family:'Jost',sans-serif !important; font-weight:500 !important; text-transform:none !important;
  letter-spacing:0 !important; font-size:20px !important; line-height:1.28 !important; color:var(--ink) !important; }
html body .community-page #eventsGrid .glance-card.has-cover .m-meta,
html body .community-page #eventsGrid .glance-card.has-cover.morph-in:hover .m-meta{
  font-family:'Jost',sans-serif !important; font-size:12.5px !important; color:var(--gray) !important;
  opacity:1 !important; margin-top:4px; }
@media(max-width:767px){
  html body .community-page #eventsGrid .glance-card.has-cover .morph-body,
  html body .community-page #eventsGrid .glance-card.has-cover.morph-in:hover .morph-body{ padding:14px 16px 16px !important; }
  html body .community-page #eventsGrid .glance-card.has-cover .m-title,
  html body .community-page #eventsGrid .glance-card.has-cover.morph-in:hover .m-title{ font-size:17px !important; }
  html body .community-page #eventsGrid .glance-card.has-cover .m-meta,
  html body .community-page #eventsGrid .glance-card.has-cover.morph-in:hover .m-meta{ font-size:12px !important; }
}

/* Community page background = the Knowledge hub's: cream paper (#F2E5BF)
   instead of the darker sand band, so the events sit like the hub's cards. */
html body .community-page, html body .community-page .web-section.alt{ background-color:var(--paper) !important; }

/* Gallery hand-off: the card the photo has just landed on stays perfectly
   still (no hover zoom / tint transition) while it is revealed. On touch
   screens the card's hover effects are off altogether: a tap leaves :hover
   stuck on the card, which made its cover zoom in right after the morph. */
.morph-grid .glance-card.nvg-landed, .morph-grid .glance-card.nvg-landed .nvg-cover{ transition:none !important; }
.morph-grid .glance-card.nvg-landed .nvg-cover{ transform:none !important; }
html body .community-page #eventsGrid .glance-card.has-cover.nvg-landed{ background:var(--paper) !important; }
@media (hover:none){
  .morph-grid .glance-card.has-cover.morph-in:hover .nvg-cover{ transform:none !important; }
  html body .community-page #eventsGrid .glance-card.has-cover.morph-in:hover{ background:var(--paper) !important; }
}

/* Strategy › Research & News on phones. The inner wrapper's -40px top margin
   pulled the title up against the rule above it (8px), while a 32px gap plus
   the title's own 22px margin left a hole before a full-width, left-aligned
   "Go to Knowledge Hub" bar. Now: the section's own 48px above the title, the
   title and a compact outlined link 16px apart, 24px to the cards, and both
   card rails run to the screen's right edge like the site's other rails. */
@media(max-width:767px){
  #stratKnowSection .section-inner{ margin-top:0 !important; }
  #stratKnowSection .know-head{ gap:16px !important; margin-bottom:24px !important; align-items:flex-start !important; }
  #stratKnowSection .know-head .sec-title{ margin:0 !important; font-size:clamp(26px,7vw,32px) !important; line-height:1.1 !important; }
  #stratKnowSection .know-head .know-tabs{ width:auto; }
  #stratKnowSection .know-head .tab{ display:inline-flex !important; align-items:center; gap:10px; width:auto !important;
    padding:11px 18px !important; font-size:14px !important; line-height:1.2; }
  #stratKnowSection .know-head .tab::after{ content:'→'; font-weight:500; transition:transform .2s ease; }
  #stratKnowSection .know-head .tab:active::after{ transform:translateX(3px); }
  #stratKnowSection .know-feature, #stratKnowSection .know-all-news{ margin-right:-18px !important; padding-right:18px !important; }
}
