/* =========================================================================
   Gorilla Tech Capital ??CONCEPT 01 · "Institutional Grid"
   A light-dominant, editorial, structured-grid system built directly from
   the GTC Brand Identity Guidelines: Roboto type, GTC Reliable Navy on
   white, the logo's angular/diagonal geometry echoed as thin corner-clips
   and rule lines, and calm architectural photography.
   ========================================================================= */

:root {
  /* Brand primary ??exact guideline values */
  --navy:      #071E56;   /* GTC Reliable Navy */
  --blue:      #0080FF;   /* Gorilla Future Bright Blue */
  --indigo:    #363AD8;   /* Gorilla Dynamic Indigo */
  --purple:    #6718D3;   /* Gorilla Smart Purple */

  /* Secondary */
  --periwinkle:#8595F3;
  --concrete:  #92A2CC;
  --greyblue:  #CCD5F2;
  --violet:    #9966FF;

  /* Accent */
  --cobalt:    #2F57AF;
  --teal:      #0BBCDD;
  --turquoise: #54D6BD;
  --coral:     #F77462;

  /* Neutral */
  --ink:       #14213D;
  --slate:     #565F72;
  --slate-lt:  #8891A3;
  --grey-1:    #E2E2E2;
  --grey-2:    #F3F2F7;
  --line:      #E4E7F0;
  --white:     #FFFFFF;

  --grad: linear-gradient(100deg, var(--blue) 0%, var(--indigo) 55%, var(--purple) 100%);
  --grad-2: linear-gradient(150deg, #22408b 0%, var(--navy) 70%, #132b66 85%);

  --maxw: 1200px;
  --font: "Roboto", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
  --shadow: 0 18px 44px rgba(7,30,86,.10);
  --radius: 12px;
  --radius-sm: 8px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0; font-family: var(--font); color: var(--ink); background: var(--white);
  line-height: 1.65; font-size: 17px; -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 { font-family: var(--font); font-weight: 500; line-height: 1.14; color: var(--navy); letter-spacing: -.01em; margin: 0 0 .5em; }
h1 { font-weight: 700; font-size: clamp(2.2rem, 4.4vw, 3.5rem); }
h2 { font-weight: 700; font-size: clamp(1.6rem, 2.9vw, 2.3rem); }
h3 { font-weight: 700; font-size: 1.2rem; }
/* Blocksy's main.min.css resets heading margins to 0 at the same (0,0,1)
   specificity as the rule above and loads later, collapsing the heading->text
   gap site-wide. Restore the design's rhythm in content with a higher-specificity
   selector. (Paragraph `p{margin:0 0 1.1em}` already wins, so it's unaffected.) */
.entry-content h1, .entry-content h2, .entry-content h3, .entry-content h4 { margin-bottom: .5em; }
p { margin: 0 0 1.1em; }
a { color: var(--indigo); text-decoration: none; }
a:hover { text-decoration: underline; }
strong { color: var(--navy); }

.wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 28px; position: relative; z-index:50; }
.note-flag + .prose { margin-top: 24px; }
.section { padding: 84px 0; }
.section--alt { background: var(--grey-2) url('../images/bg-light.jpg') center/cover no-repeat; }
.section--navy { background: radial-gradient(circle at 88% 160%, rgba(133, 149, 243, 0.42) 0%, rgba(133, 149, 243, 0.28) 14%, rgba(7, 30, 86, 0) 38%), linear-gradient(135deg, #071E56 0%, #0A2468 45%, #071E56 100%); color: #C6CFE6; }
.section--navy h1, .section--navy h2, .section--navy h3 { color: #fff; }
.section--ruled { border-top: 1px solid var(--line); }

/* ---------- Reusable background-image utilities (apply to any section) ---------- */
.bg-dark-navy { background: var(--navy) url('../images/bg-dark-navy.jpg') center/cover no-repeat; color: #C6CFE6; }
.bg-dark-navy h1, .bg-dark-navy h2, .bg-dark-navy h3 { color: #fff; }
.bg-light { background: var(--grey-2) url('../images/bg-light.jpg') center/cover no-repeat; }
.bg-building { background: var(--navy) url('../images/bg-building.jpg') center/cover no-repeat; }

/* ---------- Per-page overrides (scope by stable slug class, never .page-id-N) ---------- */
/* Investor Portal — bg-light image (Media Library) instead of the default white body. */
body.gtc-page-investor-portal { background: var(--grey-2) url('/wp-content/uploads/2026/07/bg-light.jpg') center/cover no-repeat; }
/* Investor Portal — widen the access card. Design CSS owns this width (beats the
   shared .wrap--xs 560px); change it here, not via a per-block Greenshift Max. */
.gtc-page-investor-portal .wrap--xs { max-width: 800px; }
/* Investor Portal — vertically centre the access card in the viewport below the
   fixed header (even top/bottom spacing), replacing the lopsided 150/84 section
   padding. The section keeps small symmetric padding so it never touches the edges
   on short viewports. */
.gtc-page-investor-portal .gated-wrap {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: calc(100vh - 77px);
}
.gtc-page-investor-portal .gated-wrap .section {
	width: 100%;
	padding-top: 48px;
	padding-bottom: 48px;
}

/* ---------- Grain texture overlay ---------- */
/* Apply to any section-like container (must be position:relative, which
   .section/.section--alt/.section--navy already are via .wrap, or set it
   directly on the element). Renders as a ::after layer above the
   background and below the content, so it doesn't need its own stacking
   context on .wrap. Not for elements that already define their own
   ::after (e.g. .hero, .page-hero) ??those would need a ::after variant. */
.grain { position: relative; }
.grain::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background-image: url('../brand/grain.svg');
  background-repeat: repeat;
  background-size: 200px 200px;
  opacity: .8;
  mix-blend-mode: overlay;
  pointer-events: none;

  mask-image: linear-gradient(
    150deg,
    transparent 0%,
    black 70%,
    black 100%
  );
}
.center { text-align: center; }
.maxch { max-width: 68ch; }
.muted { color: #7e92a5; }

.eyebrow {
  display: flex; align-items: center; gap: 10px;
  text-transform: uppercase; letter-spacing: .16em; font-size: .74rem; font-weight: 700;
  color: var(--indigo); margin: 0 0 16px;
}
.eyebrow::before { content: ""; width: 26px; height: 2px; background: var(--grad); display: inline-block; }
.eyebrow.center { justify-content: center; }
.section--navy .eyebrow { color: var(--periwinkle); }
.section--navy .eyebrow::before { background: var(--periwinkle); }

.lead { font-size: 1.14rem; font-weight: 500; color: var(--navy); max-width: 59ch; }
.section--navy .lead { color: #B7C1DE; }
.lead.center { margin: 0 auto 30px; }
.lead--intro { font-size: 1.1rem; }
.lead--wide { max-width: 66ch; }

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex; align-items: center; gap: 8px; cursor: pointer; border: 1px solid transparent;
  font-family: var(--font); font-weight: 700; font-size: .94rem; letter-spacing: .01em;
  padding: 14px 26px; border-radius: 100px; transition: filter .15s, background .15s, transform .05s, border-color .15s;
  text-decoration: none;
}
.btn:hover { text-decoration: none; }
.btn:active { transform: translateY(1px); }
.btn--primary { background: var(--navy); color: #fff; }
.btn--primary:hover { background: var(--indigo); }
.btn--primary.btn--on-navy { background: #fff; color: var(--navy); }
.btn--primary.btn--on-navy:hover { background: var(--greyblue); }
.btn--ghost { background: rgba(255,255,255,.4); color: var(--navy); border-color: var(--navy); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }
.btn--ghost:hover { background: var(--navy); color: #fff; }
.btn--dark { background: var(--navy); color: #fff; }
.btn--block { display: flex; width: 100%; justify-content: center; }
/* on navy sections, ghost flips to white */
.section--navy .btn--ghost { color: #fff; border-color: rgba(255,255,255,.45); }
.section--navy .btn--ghost:hover { background: rgba(255,255,255,.14); }

/* ---------- Logo / brand ---------- */
.brand { display: flex; align-items: center; text-decoration: none; gap: 10px; }
.brand:hover { text-decoration: none; }
.brand img { display: block; height: 30px; width: auto; }

/* ---------- Footer ---------- */
#footer {
  background: var(--navy);
}

[data-footer*="type-1"] .ct-footer {
  color: #9DABCB;
  font-size: .9rem;
}

[data-footer*="type-1"] .ct-footer [data-row="top"] > div,
/* Footer content sits in the same centered content box as the page bands
   (static reference .wrap = --maxw, 1200px); the navy background stays full-bleed.
   Blocksy's "fixed" footer container is tied to Max Site Width (1900px), which has no
   concept of the child theme's --maxw content box, so pin the row containers here. */
[data-footer*="type-1"] .ct-footer [data-row] .ct-container {
  max-width: var(--maxw);
  margin-inline: auto;
  padding-inline: 28px;
  box-sizing: border-box;
}

[data-footer*="type-1"] .ct-footer [data-row="top"] .ct-container {
  display: grid;
  grid-template-columns: 1.6fr 1fr 1fr 1fr;   /* matches the static .footer-grid */
  gap: 34px;
  align-items: start;
  padding-top: 56px;
  padding-bottom: 0;
}

/* General (public) has no middle column; Blocksy renders that slot as an empty
   "ghost" column. Hide it and drop the grid to three columns so brand + Platform
   + Legal align correctly (matches the reference footer for that audience). */
[data-footer*="type-1"] .ct-footer [data-row="top"] [data-column="ghost"] {
  display: none;
}
[data-footer*="type-1"] .ct-footer [data-row="top"] > div:has([data-column="ghost"]),
[data-footer*="type-1"] .ct-footer [data-row="top"] .ct-container:has([data-column="ghost"]) {
  grid-template-columns: 1.6fr 1fr 1fr;
}

[data-footer*="type-1"] .ct-footer [data-row="middle"] {
  margin-top: 40px;
}

[data-footer*="type-1"] .ct-footer [data-row="middle"] > div,
[data-footer*="type-1"] .ct-footer [data-row="middle"] .ct-container {
  border-top: 1px solid rgba(255,255,255,.12);
  padding-top: 24px;
  padding-bottom: 0;
}

[data-footer*="type-1"] .ct-footer [data-row="bottom"] {
  padding-bottom: 0;
}

[data-footer*="type-1"] .ct-footer [data-row="bottom"] > div,
[data-footer*="type-1"] .ct-footer [data-row="bottom"] .ct-container {
  padding-top: 20px;
  padding-bottom: 30px;
}

[data-footer*="type-1"] .ct-footer .widget-title {
  color: #fff;
  font-size: .92rem;
  font-weight: 700;
  letter-spacing: .1em;
  margin-bottom: 14px;
  text-transform: uppercase;
}

[data-footer*="type-1"] .ct-footer .ct-widget,
[data-footer*="type-1"] .ct-footer p {
  color: #9DABCB;
  margin-bottom: 0;
}

[data-footer*="type-1"] .ct-footer [data-column="widget-area-1"] .wp-block-image {
  margin-bottom: 16px;
}

[data-footer*="type-1"] .ct-footer [data-column="widget-area-1"] .wp-block-image a {
  display: inline-block;
  padding: 0;
}

[data-footer*="type-1"] .ct-footer [data-column="widget-area-1"] .wp-block-image img {
  display: block;
  height: 38px;
  width: auto;
}

[data-footer*="type-1"] .ct-footer [data-column="widget-area-1"] p {
  max-width: 34ch;
}

[data-footer*="type-1"] .ct-footer h4 {
  color: #fff;
  font-size: .82rem;
  line-height: 1.2;
  margin: 0 0 12px;
  text-transform: uppercase;
  letter-spacing: 0;
}

[data-footer*="type-1"] .ct-footer ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

[data-footer*="type-1"] .ct-footer li + li {
  margin-top: 0;
}

[data-footer*="type-1"] .ct-footer a,
[data-footer*="type-1"] .ct-footer .ct-menu-link {
  color: #9DABCB;
  display: block;
  padding: 4px 0;
}

[data-footer*="type-1"] .ct-footer a:hover,
[data-footer*="type-1"] .ct-footer .ct-menu-link:hover {
  color: #fff;
  text-decoration: none;
}

[data-footer*="type-1"] .ct-footer [data-row="middle"],
[data-footer*="type-1"] .ct-footer [data-id="copyright"] {
  color: #7C8BAC;
  font-size: .8rem;
  line-height: 1.6;
}

@media (max-width: 820px) {
  [data-footer*="type-1"] .ct-footer [data-row="top"] > div,
  [data-footer*="type-1"] .ct-footer [data-row="top"] .ct-container {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 28px;
  }
}

@media (max-width: 560px) {
  [data-footer*="type-1"] .ct-footer [data-row="top"] > div,
  [data-footer*="type-1"] .ct-footer [data-row="top"] .ct-container {
    grid-template-columns: 1fr;
    padding-top: 48px;
  }

  [data-footer*="type-1"] .ct-footer [data-row="bottom"] {
    padding-bottom: 28px;
  }
}

/* ---------- Blocksy header: GTC institutional chrome ---------- */
#header.ct-header {
  position: relative;
  z-index: 1000;
  background: var(--navy);
}

#header.ct-header [data-sticky*="auto-hide"] {
  transition: transform .3s ease, box-shadow .2s cubic-bezier(.455,.03,.515,.955), backdrop-filter .2s cubic-bezier(.455,.03,.515,.955), background-color .2s cubic-bezier(.455,.03,.515,.955);
  will-change: transform;
}

#header.ct-header [data-sticky*="auto-hide"].gtc-sticky-hidden {
  transform: translateY(-100%);
}

#header.ct-header [data-row="middle"] {
  min-height: 76px;
  background: rgba(7, 30, 86, .96);
  border-bottom: 1px solid rgba(255, 255, 255, .08);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

#header.ct-header [data-row="middle"] .ct-container {
  min-height: 76px;
  max-width: var(--maxw);
}

#header.ct-header .site-title a {
  color: #fff;
  font-family: var(--font);
  font-size: 1.02rem;
  font-weight: 700;
  letter-spacing: 0;
  text-decoration: none;
}

#header.ct-header .menu > li > .ct-menu-link {
  min-height: 76px;
  color: #C6CFE6;
  font-family: var(--font);
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
}

#header.ct-header .menu > li > .ct-menu-link:hover,
#header.ct-header .menu > li.current-menu-item > .ct-menu-link,
#header.ct-header .menu > li.current_page_item > .ct-menu-link {
  color: #fff;
}

#header.ct-header .menu > li.current-menu-item > .ct-menu-link::after,
#header.ct-header .menu > li.current_page_item > .ct-menu-link::after {
  background: var(--periwinkle);
}

/* ADMIN-ONLY preview toolbar (mounted only for WordPress logged-in users; see
   gtc-access.js). Fixed bottom-left, stacked, never shown to the public.
   Holds the role switcher and the "reset cookie banner" testing button. */
.gtc-admin-tools {
  position: fixed;
  left: 16px;
  bottom: 16px;
  z-index: 100000;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 8px;
}

.gtc-role-pill {
  color: #fff;
  background: var(--navy);
  border: 1px solid rgba(255, 255, 255, .30);
  border-radius: 100px;
  box-shadow: 0 6px 20px rgba(7, 30, 86, .35);
  font-family: var(--font);
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .08em;
  line-height: 1;
  padding: 9px 14px;
  text-transform: uppercase;
  cursor: pointer;
  opacity: .85;
}

.gtc-role-pill:hover {
  opacity: 1;
  border-color: #fff;
}

/* The cookie-banner reset button reads as a secondary/utility action. */
.gtc-cookie-reset {
  text-transform: none;
  letter-spacing: .02em;
  background: rgba(7, 30, 86, .72);
}

/* Match the Complianz soft cookie-wall backdrop to the access-gate (router)
   overlay — same navy tint + blur — so the two sequential overlays read as one
   system (Complianz default is rgba(0,0,0,.7)). */
#cmplz-cookiebanner-container.cmplz-soft-cookiewall {
  background: rgba(7, 30, 86, .82) !important;
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
}

@media (max-width: 999px) {
  #header.ct-header [data-row="middle"],
  #header.ct-header [data-row="middle"] .ct-container {
    min-height: 68px;
  }

  /* Keep the logo / toggle / role pill off the screen edges on mobile,
     aligned to the same 20px gutter as the collapsed header content. */
  #header.ct-header [data-row="middle"] .ct-container {
    padding-left: 20px;
    padding-right: 20px;
  }

  #header.ct-header .site-title a {
    font-size: .95rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  #header.ct-header [data-sticky*="auto-hide"] {
    transition: none;
  }
}

/* ---------- Back to top ---------- */
#gtc-top {
  position: fixed; bottom: 24px; right: 24px; width: 48px; height: 48px; border-radius: 50%;
  display: grid; place-items: center; background: var(--grad-2); color: #fff; border: 0;
  box-shadow: 0 8px 22px rgba(7,30,86,.35); cursor: pointer; z-index: 60;
  opacity: 0; visibility: hidden; transform: translateY(8px);
  transition: opacity .25s, transform .25s, visibility .25s;
}
#gtc-top.show { opacity: 1; visibility: visible; transform: translateY(0); }
#gtc-top:hover { filter: brightness(1.08); }

/* ---------- Hero (full-bleed Ken-Burns background, text right-aligned) ---------- */
@keyframes kenburns {
  0%   { transform: scale(1) translate(0, 0); }
  100% { transform: scale(1.14) translate(-2%, 1.5%); }
}
.hero { position: relative; overflow: hidden; border-bottom: 1px solid var(--line); min-height: 56vh; display: flex; align-items: center; }
.hero-bg { position: absolute; inset: 0; z-index: 0; overflow: hidden; background-color: var(--navy); }
.hero-slide {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block;
  transform-origin: 65% 45%; opacity: 0; z-index: 0;
  animation: kenburns 24s ease-in-out infinite alternate;
  transition: opacity 1.6s ease;
}
.hero-slide.is-active { opacity: 1; z-index: 1; }

.hero-dots {
  position: absolute; right: 2.5%; bottom: 22px; transform: translateX(-50%); z-index: 3;
  display: flex; align-items: center; gap: 16px;
}
.hero-dot {
  width: 9px; height: 9px; padding: 0; border-radius: 50%; cursor: pointer;
  background: rgba(7,30,86,.28); border: 2px solid rgba(255,255,255,.4);
  transition: background .2s, border-color .2s, transform .2s;
}
.hero-dot:hover { border-color: var(--navy); }
.hero-dot.is-active { background: var(--navy); border-color: var(--navy); transform: scale(1.2); }

.hero::before {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(to right, rgba(255,255,255,.97) 0%, rgba(255,255,255,.90) 34%, rgba(255,255,255, 0) 70%, rgba(255,255,255,.12) 100%);
}
/* .hero::after {
  content: ""; position: absolute; left: 0; top: 0; width: 30%; height: 100%; z-index: 1;
  clip-path: polygon(0 0, 0 100%, 55% 100%);
  background: var(--grad); opacity: .12;
} */
.hero .wrap { position: relative; z-index: 2; padding-top: 64px; padding-bottom: 64px; width: 100%; }
.hero-head { max-width: 800px;  animation: heroFade 1s cubic-bezier(.19,1,.22,1) both; }
.hero h1 { max-width: 20ch; }
.hero-actions { margin-top: 30px; display: flex; gap: 14px; flex-wrap: wrap; }

.kicker-row {
  display: flex; align-items: center; gap: 0; flex-wrap: wrap; margin-top: 24px;
  background: rgba(133, 149, 243,.2); border: 1px solid rgba(133, 149, 243,.7);
  border-radius: 8px; padding: 8px 18px; width: fit-content;
}
.chip {
  display: inline-block; font-size: .74rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em;
  color: var(--indigo); padding-right: 8px; margin-right: 8px; border-right: 1px solid var(--indigo);
}
.chip:last-child { padding-right: 0; margin-right: 0; border-right: 0; }
.section--navy .chip { color: var(--periwinkle); border-right-color: rgba(255,255,255,.2); }

.page-hero { position: relative; overflow: hidden; border-bottom: 1px solid var(--line); padding: 76px 0 66px; }
.page-hero-bg { position: absolute; inset: 0; z-index: 0; overflow: hidden; background-color: var(--navy); }
.page-hero-bg::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background-image: url('../brand/grain.svg');
  background-repeat: repeat;
  background-size: 200px 200px;
  opacity: .8;
  mix-blend-mode: overlay;
  pointer-events: none;

  mask-image: linear-gradient(
    150deg,
    transparent 0%,
    black 70%,
    black 100%
  );
}
.page-hero-bg img {
  width: 100%; height: 100%; object-fit: cover; display: block; transform-origin: 65% 45%;
  animation: kenburns 24s ease-in-out infinite alternate;
}
.page-hero::before {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(to right, rgba(7,30,86,.97) 0%, rgba(7,30,86,.90) 34%, rgba(7,30,86,.25)60%, rgba(7,30,86,.15) 100%);
}
.page-hero .wrap { position: relative; z-index: 2; }
.page-hero-head { max-width: 800px; animation: heroFade 1s cubic-bezier(.19,1,.22,1) both; }
/* Give the title room to wrap to two lines for longer marketing titles (the lead keeps
   its own 59ch cap for readability). text-wrap:balance evens the two lines. Very long
   news/story headlines (60-80 chars) can still exceed two lines. */
.page-hero h1 { max-width: none; text-wrap: balance; }
/* News/story pages have long article headlines (60-80 chars); scale the hero title down
   (~44px desktop vs 56px) so they still fit two lines. `gtc-story` body class is added in
   the child theme functions for pages with a `story-` slug. */
.gtc-story .page-hero h1 { font-size: clamp(1.7rem, 3.4vw, 2.75rem); }
/* dark navy/violet hero background (hero-inner.jpg) needs light text, matching .section--navy */
.page-hero-head .eyebrow { color: var(--periwinkle); }
.page-hero-head .eyebrow::before { background: var(--periwinkle); }
.page-hero-head h1 { color: #fff; }
.page-hero-head .lead { color: #B7C1DE; }

/* Editor parity: the block editor forces position:relative on every block wrapper
   (.block-editor-block-list__block), which drops these absolutely-positioned hero
   background layers into flow — the bg image then takes its intrinsic height and
   pushes the hero content to the bottom (hero ~1330px vs ~450px on the frontend).
   Restore absolute in the editor so the bg fills the band behind the content, matching
   the frontend. (0,2,0 beats the editor's .block-editor-block-list__block, no !important.) */
.editor-styles-wrapper .hero-bg,
.editor-styles-wrapper .page-hero-bg {
  position: absolute;
}

@keyframes heroFade {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ---------- Scroll-triggered entrance animation (per content element, not whole sections) ---------- */
.reveal { opacity: 0; transform: translateY(28px); transition: opacity .7s cubic-bezier(.19,1,.22,1), transform .7s cubic-bezier(.19,1,.22,1); }
.reveal.in-view { opacity: 1; transform: translateY(0); }
/* gentle cascade for repeating grid/card content */
.grid > .reveal:nth-child(1), .pf-grid > .reveal:nth-child(1), .fm > .reveal:nth-child(1) { transition-delay: 0s; }
.grid > .reveal:nth-child(2), .pf-grid > .reveal:nth-child(2), .fm > .reveal:nth-child(2) { transition-delay: .08s; }
.grid > .reveal:nth-child(3), .pf-grid > .reveal:nth-child(3), .fm > .reveal:nth-child(3) { transition-delay: .16s; }
.grid > .reveal:nth-child(4), .pf-grid > .reveal:nth-child(4), .fm > .reveal:nth-child(4) { transition-delay: .24s; }
.grid > .reveal:nth-child(5), .pf-grid > .reveal:nth-child(5), .fm > .reveal:nth-child(5) { transition-delay: .32s; }
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; transition: none; }
  .hero-head, .page-hero-head { animation: none; }
  .hero-bg img, .page-hero-bg img { animation: none; }
}

/* ---------- Grid / stats ---------- */
.grid { display: grid; gap: 22px; }
:where(.grid-2) { grid-template-columns: repeat(2, 1fr); }
:where(.grid-3) { grid-template-columns: repeat(3, 1fr); }
:where(.grid-4) { grid-template-columns: repeat(4, 1fr); }
.grid.grid--gap { gap: 26px; }
@media (max-width: 900px) { .grid-3, .grid-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 620px) { .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; } }

.stat { padding: 30px 28px; background: var(--white); border: 1px solid var(--line); border-top: 3px solid var(--line); border-radius: var(--radius); }
.stat--a { border-top-color: var(--violet); }
.stat--b { border-top-color: var(--periwinkle); }
.stat--c { border-top-color: var(--greyblue); }
.stat .n { font-size: 2.6rem; font-weight: 700; color: var(--indigo); line-height: 1; font-variant-numeric: tabular-nums; }
.stat .n span { color: var(--indigo); }
.stat .l { color: var(--slate); font-size: .93rem; margin-top: 10px; }

/* ---------- Cards ---------- */
.card {
  background: var(--white); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 32px; height: 100%; position: relative; overflow: hidden;
}
.card::before {
  content: ""; position: absolute; top: -1px; left: 0; width: 36px; height: 36px;
  clip-path: polygon(0 0, 100% 0, 0 100%);
  background: linear-gradient(212deg, rgba(54, 58, 216, 1) 0%, rgba(54, 58, 216, 0) 100%);
}
.card--accent::before  { background: linear-gradient(212deg, rgba(47, 87, 175, 1) 0%, rgba(47, 87, 175, 0) 100%); }
.card--violet::before  { background: linear-gradient(212deg, rgba(153, 102, 255, 1) 0%, rgba(153, 102, 255, 0) 100%); }
.card--greyblue::before{ background: linear-gradient(212deg, rgba(204, 213, 242, 1) 0%, rgba(204, 213, 242, 0) 100%); }
.card--accent   { border-top: 3px solid var(--cobalt); }
.card--violet   { border-top: 3px solid var(--violet); }
.card--greyblue { border-top: 3px solid var(--greyblue); }
.card h3 { margin-top: 4px; }
.card .ic {
  width: 44px; height: 44px; border-radius: 10px; display: grid; place-items: center; margin-bottom: 18px;
  background: var(--grey-2);
}
.card .ic img { width: 22px; height: 22px; filter: brightness(0) invert(1); opacity: .92; }
.card--accent .ic   { background: var(--cobalt); }
.card--violet .ic   { background: var(--violet); }
.card--greyblue .ic { background: var(--greyblue); }
.card--greyblue .ic img { filter: none; opacity: 1; } /* too pale a chip for a white icon ??keep the navy line icon */

/* ---------- Force multiplier diagram ---------- */
.fm { display: grid; grid-template-columns: 1fr auto 1fr auto 1fr; align-items: stretch; gap: 0; }
.fm .node { border: 1px solid rgba(255,255,255,.16); border-radius: var(--radius); padding: 28px 24px; text-align: center; background: var(--navy); }
.fm .node h4 { color: #fff; margin: 0 0 8px; font-size: 1.05rem; }
.fm .node.engine { border-top: 2px solid var(--blue); }
.fm .node.fuel   { border-top: 2px solid var(--periwinkle); }
.fm .node.outcome{ border-top: 2px solid var(--turquoise);  background: var(--navy); }
.fm .op { display: grid; place-items: center; font-size: 2rem; font-weight: 700; color: var(--periwinkle); padding: 0 0.5em; }
@media (max-width: 760px) { .fm { grid-template-columns: 1fr; } .fm .op { padding: 6px; } }

/* ---------- Warnbox ---------- */
.warnbox {
  background: var(--grey-2); border: 1px solid var(--line); border-left: 3px solid var(--navy);
  border-radius: var(--radius); padding: 20px 24px; color: var(--ink); font-size: .9rem; line-height: 1.6;
}
.warnbox strong { color: var(--navy); }
.section--navy .warnbox { background: rgba(255,255,255,.06); border-color: rgba(255,255,255,.16); color: #D5DCEE; }
.section--navy .warnbox strong { color: #fff; }

/* ---------- Portfolio ---------- */
.pf-grouphead { display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap; margin: 54px 0 8px; padding-bottom: 14px; border-bottom: 2px solid var(--navy); }
.pf-grouphead h3 { margin: 0; font-size: 1.7rem; display: flex; align-items: center; gap: 10px; }
.pf-grouphead .via { font-size: .84rem; color: var(--slate); text-transform: uppercase; letter-spacing: .05em; }
.pf-grouphead .dot { width: 10px; height: 10px; border-radius: 50%; flex: 0 0 auto; }
.pf-grouphead--platform  { border-bottom-color: var(--periwinkle); }
.pf-grouphead--platform  .dot { background: var(--periwinkle); }
.pf-grouphead--direct    { border-bottom-color: var(--violet); }
.pf-grouphead--direct    .dot { background: var(--violet); }
.pf-grouphead--ioniq     { border-bottom-color: var(--concrete); }
.pf-grouphead--ioniq     .dot { background: var(--concrete); }
.pf-grouphead--heartbeat { border-bottom-color: var(--greyblue); }
.pf-grouphead--heartbeat .dot { background: var(--greyblue); }
.pf-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; margin-top: 22px; }
@media (min-width: 601px){ .pf-grid { grid-auto-rows: 1fr; } }
@media (max-width: 900px){ .pf-grid { grid-template-columns: repeat(2,1fr); } }
@media (max-width: 600px){ .pf-grid { grid-template-columns: 1fr; } }
.pf-card { background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); padding: 26px; display: flex; flex-direction: column; }
.pf-card,
.member,
.news-card { transition: box-shadow .15s, border-color .15s; }
.pf-card:hover,
.member:hover,
.news-card:hover { box-shadow: var(--shadow); border-color: var(--concrete); position: relative; z-index: 1; }
.pf-card .brand { min-height: 36px; display: flex; align-items: center; margin-bottom: 14px; }
.pf-card .brand .logo { max-height: 38px; max-width: 180px; width: auto; height: auto; object-fit: contain; display: block;  opacity: .82; }
.pf-card:hover .brand .logo { filter: none; opacity: 1; }
.pf-card .brand .wordmark { font-weight: 700; color: var(--navy); font-size: 1.05rem; letter-spacing: -.01em; }
.pf-card .sec2 { font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; color: var(--indigo); font-weight: 700; margin-bottom: 14px; }
.pf-card .desc { font-size: .89rem; color: var(--slate); margin: 0 0 16px; flex: 1; }
.pf-card .foot { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding-top: 14px; border-top: 1px solid var(--line); }
.pf-tag { font-size: .68rem; font-weight: 700; padding: 4px 10px; border-radius: 100px; text-transform: uppercase; letter-spacing: .04em; }
.pf-tag.current { background: var(--grey-2); color: var(--indigo); }
.pf-tag.platform { background: var(--periwinkle); color: #fff; }
.portfolio-group-platform-investments .pf-tag { background: var(--periwinkle); color: #fff; }
.pf-card .via { font-size: .7rem; color: var(--slate-lt); }
.pf-card .ext { font-size: .8rem; margin-left: auto; font-weight: 600; }

/* ---------- Portfolio dynamic Query Loop (core blocks -> .pf design) ---------- */
.wp-block-query .pf-grid.wp-block-post-template { list-style: none; margin: 22px 0 0; padding: 0; }
.pf-grid.wp-block-post-template > li { display: flex; }
.pf-grid.wp-block-post-template > li > .pf-card { flex: 1 1 auto; height: 100%; }
/* logo (featured image) mapped onto the static .logo look */
.pf-card .brand .wp-block-post-featured-image { margin: 0; line-height: 0; }
.pf-card .brand .wp-block-post-featured-image img {
  max-height: 38px; max-width: 180px; width: auto; height: auto; object-fit: contain; display: block; opacity: .82;
}
.pf-card:hover .brand .wp-block-post-featured-image img { opacity: 1; }
/* company name shown only when there is no logo */
.pf-card .brand .pf-brandname { margin: 0; font-weight: 700; color: var(--navy); font-size: 1.05rem; letter-spacing: -.01em; }
.pf-card .brand:has(.wp-block-post-featured-image) .pf-brandname { display: none; }
/* bound fields: hide empties so holding vehicles / no-site cards stay clean */
.pf-card .via:empty { display: none; }
/* visit link: strip the core button chrome back to the plain .ext link */
.pf-card .foot .wp-block-buttons { margin: 0 0 0 auto; }
.pf-card .foot .wp-block-button { margin: 0; }
.pf-card .foot .wp-block-button__link {
  display: inline; min-height: 0; padding: 0; background: none; border: 0; border-radius: 0; box-shadow: none;
  color: var(--blue); font-family: var(--font); font-size: .8rem; font-weight: 600; white-space: nowrap;
}
.pf-card .foot .wp-block-button__link:hover { text-decoration: underline; }
.pf-card .foot .wp-block-button:not(:has(a[href])),
.pf-card .foot .wp-block-button:has(a[href=""]) { display: none; }

.note-flag { background: var(--grey-2); border: 1px dashed var(--concrete); border-radius: var(--radius); padding: 16px 20px; font-size: .85rem; color: var(--slate); margin: 22px 0; }
.prose h2 { margin-top: 1.6em; }
.prose h3 { margin-top: 1.4em; color: var(--navy); }

/* ---------- Team grid ---------- */
.page-id-9 .entry-content h3.gtc-mt-30,
.page-id-9 .entry-content h3.gtc-mt-42 { font-size: 1.7rem; }
.team-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 24px; }
@media (max-width: 820px){ .team-grid { grid-template-columns: repeat(2,1fr);} }
@media (max-width: 540px){ .team-grid { grid-template-columns: 1fr;} }
.member { border: 1px solid var(--line); border-radius: var(--radius); background: var(--white); padding: 30px 24px 26px; text-align: center; }
.member .ph {
  width: 112px; height: 112px; border-radius: 50%; margin: 0 auto 18px; position: relative; overflow: hidden;
  background: linear-gradient(180deg, rgba(54,58,216,.05), transparent); display: grid; place-items: center; color: rgba(255,255,255,.95);
  font-size: 1.7rem; font-weight: 700; border: 3px solid var(--white); box-shadow: var(--shadow);
}
.member .ph img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 22%; }
.member .body { padding: 0; }
.member .name { font-weight: 700; color: var(--navy); font-size: 1.08rem; }
.member .role {
  font-weight: 700; font-size: .8rem; text-transform: uppercase; letter-spacing: .05em; margin: 4px 0 12px; color: var(--indigo);
}
.member .bio { font-size: .91rem; color: var(--slate); margin: 0; text-align: left; }
.member .tag { display: inline-block; margin-top: 12px; font-size: .72rem; font-weight: 700; color: var(--violet); background: rgba(153,102,255,.12); padding: 4px 10px; border-radius: 100px; }

/* ---------- Checklist ---------- */
.checklist { list-style: none; padding: 0; margin: 0; }
.checklist li { position: relative; padding: 9px 0 9px 34px; border-bottom: 1px solid var(--line); }
.checklist li::before {
  content: "\2713"; position: absolute; left: 0; top: 8px; width: 22px; height: 22px;
  background: var(--grey-2); color: var(--indigo); border-radius: 50%;
  display: grid; place-items: center; font-size: .8rem; font-weight: 700;
}
.section--navy .checklist li { border-bottom-color: rgba(255,255,255,.14); }
.section--navy .checklist li::before { background: rgba(255,255,255,.1); color: #fff; }

/* ---------- Forms ---------- */
.field { margin-bottom: 18px; }
.field label { display: block; font-family: var(--font); font-weight: 700; font-size: .9rem; color: var(--navy); margin-bottom: 6px; }
.field input, .field select, .field textarea {
  width: 100%; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--radius);
  font-family: var(--font); font-size: 1rem; background: var(--white); color: var(--ink);
  /* Blocksy forces height:40px on native controls, which clips text under our padding. */
  height: auto; box-sizing: border-box; line-height: 1.4;
}
.field select { padding-right: 36px; }   /* room for Blocksy's dropdown arrow */
.field input:focus, .field select:focus, .field textarea:focus { outline: 2px solid var(--periwinkle); border-color: var(--indigo); }
.form-card { background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); padding: 32px; box-shadow: var(--shadow); }

/* ---------- Fluent Forms contact form: GTC brand skin (scoped to .form-card) ---------- */
.form-card .fluentform { margin: 0; }
.form-card .fluentform .ff-el-group { margin-bottom: 18px; }
.form-card .fluentform .ff-el-input--label label { display: block; font-family: var(--font); font-weight: 700; font-size: .9rem; color: var(--navy); margin-bottom: 6px; }
.form-card .fluentform .ff-el-form-control {
  width: 100%; height: auto; box-sizing: border-box; padding: 12px 14px; line-height: 1.4;
  border: 1px solid var(--line); border-radius: var(--radius);
  font-family: var(--font); font-size: 1rem; background: var(--white); color: var(--ink);
}
.form-card .fluentform select.ff-el-form-control { padding-right: 36px; }
.form-card .fluentform textarea.ff-el-form-control { min-height: 120px; resize: vertical; }
.form-card .fluentform .ff-el-form-control:focus { outline: 2px solid var(--periwinkle); border-color: var(--indigo); }
.form-card .fluentform .ff-el-is-error .ff-el-form-control { border-color: #c0392b; }
.form-card .fluentform .ff-el-form-check label { font-weight: 400; color: var(--slate); }
.form-card .fluentform .ff-btn-submit {
  background: var(--navy); color: #fff; border: 0; border-radius: 100px;
  padding: 12px 24px; font-family: var(--font); font-weight: 700; font-size: .9rem; cursor: pointer; box-shadow: none; width: 100%;
}
.form-card .fluentform .ff-btn-submit:hover { background: var(--indigo); }
.form-card .fluentform .ff-message-success { color: var(--navy); font-weight: 500; }
/* All fields are full-width (single column). */

/* ---------- Utility ---------- */
.divider { height: 1px; background: var(--line); border: 0; margin: 0; }

/* ---------- Exit / data table ---------- */
.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--line); border-radius: var(--radius); }
.exit-table { width: 100%; border-collapse: collapse; font-size: .92rem; min-width: 620px; }
.exit-table thead th {
  text-align: left; font-size: .72rem; text-transform: uppercase; letter-spacing: .07em;
  color: var(--slate); background: var(--grey-2); padding: 12px 16px; border-bottom: 1px solid var(--line); position: sticky; top: 0;
}
.exit-table td { padding: 12px 16px; border-bottom: 1px solid var(--line); vertical-align: top; color: var(--slate); }
.exit-table tr:last-child td { border-bottom: 0; }
.exit-table tbody tr:hover td { background: var(--grey-2); }
.exit-table .co { font-weight: 700; color: var(--navy); white-space: nowrap; }
.exit-table .yr { color: var(--slate); white-space: nowrap; font-variant-numeric: tabular-nums; }
.exit-table .acq { color: var(--indigo); font-weight: 600; }

/* ---------- News ---------- */
.news-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; margin-top: 24px; }
@media (max-width: 720px){ .news-grid { grid-template-columns: 1fr; } }
.news-card { border: 1px solid var(--line); border-radius: var(--radius); background: var(--white); padding: 26px; display: flex; flex-direction: column; }
.news-meta { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.news-cat { font-size: .68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; padding: 3px 9px; border-radius: 100px; background: rgba(153,102,255,.12); color: var(--violet); }
.news-cat.exit { background: rgba(133,149,243,.16); color: var(--cobalt); }
.news-cat.pr { background: var(--navy); color: #fff; }
.news-date { font-size: .8rem; color: var(--slate); font-variant-numeric: tabular-nums; }
.news-card h3 { font-size: 1.12rem; margin: 0 0 10px; }
.news-card p { font-size: .93rem; color: var(--slate); margin: 0 0 14px; flex: 1; }
.news-foot { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.news-card .via { font-size: .74rem; color: var(--blue); font-weight: 600; }
.news-card .ext { font-size: .8rem; margin-left: auto; white-space: nowrap; }

/* ---- Dynamic Press Releases: core Query Loop reusing the .news-* design.
   Fields render as <p>/<button> instead of <span>/<a>, so a few resets keep it
   pixel-identical to the static cards. Scoped to the post-template grid. ---- */
.news-grid.wp-block-post-template { list-style: none; margin: 24px 0 0; padding: 0; }
.news-grid.wp-block-post-template > li { display: flex; }             /* equal-height cards */
.news-grid.wp-block-post-template > li > .news-card { width: 100%; }
.wp-block-query .news-card .news-cat, .wp-block-query .news-card .news-date, .wp-block-query .news-card .via { flex: none; margin: 0; }  /* not the flexing excerpt */
.wp-block-query .news-card .wp-block-post-title { font-size: 1.12rem; line-height: 1.25; font-weight: 700; margin: 0 0 10px; }
/* Excerpt clamp to 6 lines with "…". The excerpt sits in a `.pr-excerpt` wrapper
   (the flex item that grows to bottom-align the footer); the clamp goes on the
   paragraph inside it — a direct flex child can't be -webkit-box (it blockifies). */
.wp-block-query .news-card > .pr-excerpt { flex: 1; }
.wp-block-query .news-card .pr-excerpt > p { margin: 0; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 5; line-clamp: 5; overflow: hidden; }
/* footer: via left, Read link right, one row — match the static span/a. Core renders
   the link as a full-width centred flex button, so make it a plain inline link. */
.wp-block-query .news-foot { justify-content: space-between; flex-wrap: nowrap; }
.wp-block-query .news-foot .wp-block-buttons { display: flex; margin: 0; }
.wp-block-query .news-foot .wp-block-button { display: flex; margin: 0; }
.wp-block-query .news-foot .wp-block-button__link {
  display: inline; min-height: 0; padding: 0; background: none; border: 0; border-radius: 0; box-shadow: none;
  color: var(--blue); font-family: var(--font); font-size: .8rem; font-weight: 600; white-space: nowrap;
}

/* ---- Portfolio News cards (core Query Loop, CPT portfolio-news). Reuses the
   .news-* design; adds a 3-col grid, category-badge styling for core/post-terms,
   post-excerpt clamp, and the read-more "Read the story" link. ---- */
.wp-block-post-template.pn-grid { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 900px){ .wp-block-post-template.pn-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 620px){ .wp-block-post-template.pn-grid { grid-template-columns: 1fr; } }
.wp-block-query .news-card .wp-block-post-terms.news-cat { display: inline-block; }
.wp-block-query .news-card .wp-block-post-terms.news-cat a { color: inherit; text-decoration: none; }
.wp-block-query .news-card .news-cat:has(a[href*="realisation"]) { background: rgba(133,149,243,.16); color: var(--cobalt); }
.wp-block-query .news-card > .wp-block-post-excerpt { flex: 1; margin: 0 0 14px; }
.wp-block-query .news-card .wp-block-post-excerpt p { margin: 0; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 5; line-clamp: 5; overflow: hidden; }
.wp-block-query .news-foot .wp-block-read-more { color: var(--blue); font-family: var(--font); font-size: .8rem; font-weight: 600; text-decoration: none; white-space: nowrap; }
.footnotes { margin-top: 30px; padding-top: 16px; border-top: 1px solid var(--line); font-size: .8rem; color: var(--slate); line-height: 1.6; }
sup.fn { color: var(--violet); font-weight: 700; }

/* ---------- Story page ---------- */
.story-meta {
  display: grid; grid-template-columns: repeat(4, 1fr); border: 1px solid var(--line);
  border-radius: var(--radius); overflow: hidden; margin: 6px 0 34px; background: var(--white);
}
.story-meta > div { padding: 16px 18px; border-right: 1px solid var(--line); border-top: 3px solid transparent; }
.story-meta > div:last-child { border-right: 0; }
.story-meta > div:first-child { background: linear-gradient(180deg, rgba(54,58,216,.05), transparent); }
.story-meta .lbl { display: block; font-size: .68rem; text-transform: uppercase; letter-spacing: .09em; color: var(--slate); font-weight: 700; margin-bottom: 6px; }
.story-meta .val { font-size: .96rem; font-weight: 600; color: var(--navy); line-height: 1.3; }
.story-meta .val small { display: block; font-weight: 500; color: var(--slate); font-size: .8rem; margin-top: 2px; }
.story-type { display: inline-block; font-size: .72rem; font-weight: 700; padding: 3px 10px; border-radius: 100px; background: var(--grad); color: #fff; }
.story-type.exit { background: rgba(133,149,243,.16); color: var(--cobalt); }
.story-type.award { background: rgba(153,102,255,.12); color: var(--violet); }
@media (max-width: 680px){ .story-meta { grid-template-columns: repeat(2,1fr); } .story-meta > div:nth-child(2){ border-right:0; } }
.src { font-size: .85rem; color: var(--slate); margin-top: 8px; }
.backlink { display: inline-block; margin-top: 26px; font-weight: 600; }


/* ---------- WordPress integration: full-bleed sections ----------
   The static design places .section / .page-hero / .hero at <body> level so their
   backgrounds bleed edge-to-edge. In WordPress they sit as direct children of Blocksy's
   content area (.entry-content.is-layout-constrained), which is itself already full width
   but caps normal child blocks to the readable content size. We only lift that cap so the
   bands fill the full content width edge-to-edge; their inner .wrap keeps text readable.

   No 100vw / negative-margin breakout is used: the content area already spans the viewport,
   so lifting the cap avoids the scrollbar-width overflow a 100vw rule causes (which is why
   the editor no longer needs overflow-x clipping). Native block align:full is not an option
   here because the Greenshift `element` block declares no align support (only core group
   blocks do); lifting the constrained-layout cap is the equivalent, minimal override.
   Two caps apply to constrained children: WP core's max-width (content-size) and Blocksy's
   width: var(--theme-block-width) (~1728px). This selector (0,2,0) outranks both core's
   :where() rule and Blocksy's .is-layout-constrained (0,1,0), so no !important is needed.

   .gated-wrap: role-gated pages (professional/entrepreneur content) wrap their bands in a
   .gated-wrap div for the access overlay. That wrapper is the direct child of the constrained
   layout, so IT gets capped to Max Site Width and the bands inside can only fill it — leaving
   a side gap on wide screens. Lift the cap on .gated-wrap too so the bands bleed edge-to-edge.
   (Public pages like Corporate Overview have no .gated-wrap, which is why they were already
   full-bleed and this was missed earlier.)

   The gap BETWEEN the bands is not set here — it is controlled natively in Blocksy:
   Customizer -> General -> Entry Content -> Content Spacing (set to "None" => 0). That is
   the editable knob (theme mod `contentSpacing`, drives --theme-content-spacing). Each band
   supplies its own vertical padding. NB the separate "Content Area Spacing" / "Content Edge
   Spacing" controls are content-to-header/footer, not between blocks. */
.entry-content .gated-wrap,
.entry-content .section,
.entry-content .page-hero,
.entry-content .hero,
.entry-content .wimn {
  max-width: none;    /* lift WP core content-size cap */
  width: auto;        /* lift Blocksy's width: var(--theme-block-width) cap */
}

/* Editor canvas: the block-list root applies the theme contentSize cap
   (.block-editor-block-list__layout.is-root-container > :where(...) { max-width: 760px }),
   which ties a plain .section selector on specificity (0,2,0) and wins on source order.
   Match the editor's block-wrapper class too (.wp-block.section = 0,3,0) to override it
   without !important. Sections then fill the root container; their .wrap keeps 1200px. */
.editor-styles-wrapper .wp-block.gated-wrap,
.editor-styles-wrapper .wp-block.section,
.editor-styles-wrapper .wp-block.page-hero,
.editor-styles-wrapper .wp-block.hero,
.editor-styles-wrapper .wp-block.wimn {
  max-width: none;
  width: auto;
}

/* ---------- Track Record: "Why It Matters Now" full-bleed split band ---------- */
.wimn { padding: 0; overflow: hidden; }
.wimn-grid { display: grid; grid-template-columns: 60% 40%; min-height: 560px; }
.wimn-photo { position: relative; overflow: hidden; background: var(--navy); }
.wimn-img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.wimn-panel {
  position: relative; overflow: hidden; display: flex; align-items: center;
  /* reuse the homepage .section--navy gradient glow */
  background: radial-gradient(circle at 88% 160%, rgba(133, 149, 243, 0.42) 0%, rgba(133, 149, 243, 0.28) 14%, rgba(7, 30, 86, 0) 38%), linear-gradient(135deg, #071E56 0%, #0A2468 45%, #071E56 100%);
}
/* reuse the .grain texture overlay on the panel */
.wimn-panel::after {
  content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: url('../brand/grain.svg') repeat; background-size: 200px 200px;
  opacity: .8; mix-blend-mode: overlay;
  mask-image: linear-gradient(150deg, transparent 0%, black 70%, black 100%);
  -webkit-mask-image: linear-gradient(150deg, transparent 0%, black 70%, black 100%);
}
.wimn-overlay { display: none; }   /* replaced by the gradient + grain (homepage look) */
.wimn-content {
  position: relative; z-index: 2;
  padding: 72px clamp(30px, 6vw, 104px);
  padding-left: max(28px, calc((100vw - var(--maxw)) / 2 + 28px));
  width: 100%; max-width: none;
}
.wimn-content .eyebrow { color: var(--periwinkle); }
.wimn-content .eyebrow::before { background: var(--periwinkle); }
.wimn-content h2 { color: #fff; margin: 14px 0 22px; }
.wimn-content p { color: #B7C1DE; }
.wimn-content > p:last-child { margin-top: 26px; }
.wimn-content a { color: var(--periwinkle); font-weight: 700; text-decoration: none; }
.wimn-content a:hover { text-decoration: underline; }
.wimn-content a:focus-visible { outline: 2px solid var(--periwinkle); outline-offset: 3px; border-radius: 2px; }
.wimn-content > p:last-child span { color: rgba(183,193,222,.45); }
@media (max-width: 820px) {
  .wimn-grid { grid-template-columns: 1fr; min-height: 0; }
  .wimn-photo { height: 240px; }
  .wimn-content { padding: 48px 24px; max-width: none; }
}

/* ---------- Editor↔frontend parity: layout that the static design had as inline
   styles (converted to render-only Greenshift dynamicAttributes, so invisible in the
   editor). Expressed here as scoped design-system rules so both match. ---------- */
.grid-2:has(.prose) { align-items: start; column-gap: 48px; }   /* prose + sidebar: don't stretch the card */
.grid-2:has(.prose) .card--accent { margin-bottom: 22px; }
.fm .node p { margin: 0; }
.fm .node.outcome p { color: #C6D3E0; }
.section.center .hero-actions { justify-content: center; }

/* ─── Design utilities ───────────────────────────────────────────────────────
   One class per unique declaration from the static design's inline styles, so the
   page conversion can drop all inline styles (which become editor-blind Greenshift
   dynamicAttributes) and use editor-visible classes instead. Kept at the end of the
   file so a utility wins on a specificity tie with a base component rule (e.g.
   .gtc-gap-48 over .grid{gap:22px}). Combined inline styles map to multiple classes. */
/* content widths */
/* Legal/policy pages (Privacy, Terms, Prudential, Stewardship, Complaints,
   Cookie Policy) use this modifier; per client request they now match the
   standard content width (var(--maxw), 1200px) like every other page rather
   than a narrower 820px column. */
.wrap--narrow { max-width: var(--maxw); }
.wrap--md { max-width: 860px; }
.wrap--xs { max-width: 560px; }
.mw-64ch { max-width: 64ch; }
/* margin-top scale */
.gtc-mt-4 { margin-top: 4px; }
.gtc-mt-8 { margin-top: 8px; }
.gtc-mt-12 { margin-top: 12px; }
.gtc-mt-14 { margin-top: 14px; }
.gtc-mt-16 { margin-top: 16px; }
.gtc-mt-18 { margin-top: 18px; }
.gtc-mt-24 { margin-top: 24px; }
.gtc-mt-26 { margin-top: 26px; }
.gtc-mt-30 { margin-top: 30px; }
.gtc-mt-38 { margin-top: 38px; }
.gtc-mt-42 { margin-top: 42px; }
.gtc-mt-54 { margin-top: 54px; }
/* margin-bottom scale */
.gtc-mb-8 { margin-bottom: 8px; }
.gtc-mb-22 { margin-bottom: 22px; }
.gtc-mb-30 { margin-bottom: 30px; }
.gtc-mb-34 { margin-bottom: 34px; }
.gtc-mb-36 { margin-bottom: 36px; }
/* margin shorthands */
.gtc-m-0 { margin: 0; }
.gtc-my-16 { margin: 16px 0; }
.gtc-my-54 { margin: 54px 0; }
.gtc-m-22-0-26 { margin: 22px 0 26px; }
/* gap */
.gtc-gap-16 { gap: 16px; }
.gtc-gap-22 { gap: 22px; }
.gtc-gap-48 { gap: 48px; }
/* flex / grid alignment */
.gtc-ai-start { align-items: start; }
.gtc-ai-center { align-items: center; }
.gtc-jc-center { justify-content: center; }
.gtc-cols-1 { grid-template-columns: 1fr; }
/* colours */
.gtc-c-dim { color: #C6D3E0; }
.gtc-c-white { color: #fff; }
.gtc-c-peri { color: var(--periwinkle); }
.gtc-c-slate { color: var(--slate-lt); }
/* font-size */
.gtc-fs-72 { font-size: .72rem; }
.gtc-fs-78 { font-size: .78rem; }
.gtc-fs-80 { font-size: .8rem; }
.gtc-fs-84 { font-size: .84rem; }
.gtc-fs-85 { font-size: .85rem; }
.gtc-fs-90 { font-size: .9rem; }
.gtc-fs-95 { font-size: .95rem; }
.gtc-fs-100 { font-size: 1rem; }
/* font-weight */
.gtc-fw-500 { font-weight: 500; }
.gtc-fw-600 { font-weight: 600; }
/* misc */
.gtc-ta-center { text-align: center; }
.gtc-pt-150 { padding-top: 150px; }
.gtc-bc-light { border-color: rgba(255,255,255,.12); }
.gtc-bg-light { background: rgba(255,255,255,.04); }

/* ============================================================
   Self-owned site footer — [gtc_footer] (data from the Footer CPT).
   Sits inside Blocksy's navy footer row; text colours assume a dark bg.
   ============================================================ */
.gtc-site-footer { display: block; background: var(--navy, #071E56); padding-top: 44px; }
.gtc-footer { color: #C6CFE6; font-family: var(--font); }
.gtc-footer a { color: #C6CFE6; text-decoration: none; transition: color .15s ease; }
.gtc-footer a:hover { color: #fff; }

.gtc-footer__top {
  max-width: var(--maxw); margin: 0 auto;
  padding: 8px clamp(20px, 5vw, 28px) 42px;
  display: flex; flex-wrap: wrap; gap: clamp(28px, 4vw, 56px);
}
.gtc-footer__brand { flex: 0 0 300px; max-width: 340px; }
.gtc-footer__logo { height: 40px; width: auto; display: block; margin: 0 0 18px; }
.gtc-footer__tagline { font-size: .9rem; line-height: 1.6; color: #A9B4D6; margin: 0; }

.gtc-footer__cols { flex: 1 1 420px; display: flex; flex-wrap: wrap; gap: clamp(24px, 4vw, 48px); }
.gtc-footer-col { flex: 1 1 140px; min-width: 128px; }
.gtc-footer-col__title {
  font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em;
  color: #fff; margin: 0 0 16px;
}
.gtc-footer-col__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 11px; }
.gtc-footer-col__list a { font-size: .9rem; }
/* "Cookie Settings" trigger — a <button> styled to read as a footer link. */
.gtc-footer-col__list .gtc-cookie-settings {
  appearance: none; -webkit-appearance: none; background: none; border: 0;
  margin: 0; padding: 0; font: inherit; font-size: .9rem; line-height: inherit;
  color: #C6CFE6; text-align: left; cursor: pointer; transition: color .15s ease;
}
.gtc-footer-col__list .gtc-cookie-settings:hover { color: #fff; }

.gtc-footer__bottom {
  max-width: var(--maxw); margin: 0 auto;
  padding: 26px clamp(20px, 5vw, 28px);
  border-top: 1px solid rgba(255, 255, 255, .1);
}
.gtc-footer__disclaimer { font-size: .72rem; line-height: 1.65; color: #8C99C2; margin: 0 0 14px; }
.gtc-footer__disclaimer strong { color: #A9B4D6; font-weight: 700; }
.gtc-footer__meta {
  font-size: .72rem; color: #8C99C2; margin: 0; display: flex; flex-wrap: wrap; gap: 4px 12px;
}
.gtc-footer__loc { margin-left: auto; }

@media (max-width: 1360px) {
  .gtc-footer__meta { padding-inline-end: 72px; }
}

@media (max-width: 560px) {
  .gtc-footer__cols { flex-basis: 100%; }
  .gtc-footer-col { flex-basis: 45%; }
  .gtc-footer__loc { flex-basis: 100%; margin-left: 0; }
}

/* ============================================================
   404 error page (gtc-404 Greenshift page) — one navy+grain,
   left-aligned section. Pills read as ghost chips on the navy.
   ============================================================ */
.gtc-404-more { margin-top: 44px; padding-top: 34px; border-top: 1px solid rgba(255, 255, 255, .12); }
.gtc-404-links { display: flex; flex-wrap: wrap; justify-content: flex-start; gap: 12px; margin-top: 22px; }
.gtc-404-links a {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 12px 22px; border: 1px solid var(--line); border-radius: 100px;
  font-family: var(--font); font-weight: 700; font-size: .9rem;
  color: var(--navy); background: var(--white);
  transition: border-color .15s ease, color .15s ease, background .15s ease;
}
.gtc-404-links a:hover { border-color: var(--indigo); color: var(--indigo); text-decoration: none; }
.section--navy .gtc-404-links a { background: rgba(255, 255, 255, .05); border-color: rgba(255, 255, 255, .22); color: #fff; }
.section--navy .gtc-404-links a:hover { background: rgba(255, 255, 255, .12); border-color: rgba(255, 255, 255, .5); color: #fff; }
