/* =========================================================================
   RBCCM Hero - shared component
   Deploy path: /assets/rbccm/css/components/rbccm-hero.css

   Purpose
   -------------------------------------------------------------------------
   Shared hero shell + per-page variant modifiers. Each RBCCM page that
   ships a big top-of-page hero authors its own markup with the shared
   .rbccm-hero block + a --{page-slug} modifier that owns the variant's
   layout, typography ramp, background treatment, and section-specific
   accents.

   The BASE block owns:
     - Vertical padding response (compensates for the fixed site nav)
     - Container max-width + centring
     - Font-family locks (RBCDisplay + Roboto -- defends against
       unified.css sibling rules that reset h1/h2 tag-level)
     - Overflow clipping so decorative bg/halos don't bleed to siblings
     - Reset of margin/padding on inner elements when a tag-selector
       from the CMS global stylesheet would otherwise interfere

   Each VARIANT modifier owns:
     - Layout (centred vs split-column vs full-bleed image, etc.)
     - Background treatment (glow halo, chart image, gradient, plain)
     - Typography ramp (H1 size + weight + colour flip)
     - Aside/media slot styling
     - CTA button row layout

   Variants (one TeamSite skin each, all sharing this file)
   -------------------------------------------------------------------------
     MAAS+MATA               .rbccm-hero.rbccm-hero--maas-mata
                             skin rbccm-hero--maas-mata.xsl
                             (buttons are styled in this file; no
                             rbccm-button.css needed)
     Strategy & Economics    .rbccm-hero.rbccm-hero--strategy-and-economics
                             skin rbccm-hero--strategy-and-economics.xsl
                             (insight card also needs rbccm-hero.js)
     US Credentials          .rbccm-hero.rbccm-hero--us-credentials
                             skin rbccm-hero--us-credentials.xsl
     Option on any variant:  .rbccm-hero--header-center (HeaderAlignment)
     (candidate) Insights hub, About Us, others as they migrate.

   Adding a new variant
   -------------------------------------------------------------------------
   1. Copy the closest skin to rbccm-hero--{page-slug}.xsl and change its
      hardcoded variant class to .rbccm-hero--{page-slug}
   2. Add a new modifier block at the bottom of this file with the
      variant's layout + typography + bg treatment
   3. List it above
   4. Load rbccm-hero.css BEFORE the page's own CSS so page rules can
      still override if needed
   ========================================================================= */

/* ---------- Base block -------------------------------------------------- */
.rbccm-hero {
  --rbccm-hero-ink:        #082043;
  --rbccm-hero-navy:       #003168;
  --rbccm-hero-navy-dark:  #002144;
  --rbccm-hero-blue:       #0051A5;
  --rbccm-hero-yellow:     #FFC72C;
  --rbccm-hero-serif:      RBCDisplay, Georgia, Times, serif;
  --rbccm-hero-sans:       Roboto, Arial, sans-serif;

  /* Vertical padding compensates for the fixed site navbar (~55px)
     sitting on top of the hero. Variants can override via inline
     `style="--rbccm-hero-pt-m: 120px; --rbccm-hero-pt-d: 160px;"`
     or by re-declaring in their modifier block. */
  padding-top:    var(--rbccm-hero-pt-m, 95px);
  padding-bottom: var(--rbccm-hero-pb-m, 75px);
  position: relative;
  overflow: hidden;
  box-sizing: border-box;
}
.rbccm-hero *,
.rbccm-hero *::before,
.rbccm-hero *::after { box-sizing: border-box; }

@media (min-width: 992px) {
  .rbccm-hero {
    padding-top:    var(--rbccm-hero-pt-d, 130px);
    padding-bottom: var(--rbccm-hero-pb-d, 120px);
  }
}

/* Container -- max width + horizontal gutter. Individual variants can
   override to full-bleed by targeting .rbccm-hero__container inside
   their modifier scope. */
.rbccm-hero__container {
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 16px;
  position: relative;
  z-index: 1;
}
@media (min-width: 992px) {
  .rbccm-hero__container { padding: 0 24px; }
}

/* Safety net for direct children of the hero that sit OUTSIDE the
   container -- keeps them above decorative ::before backdrops that
   variants layer at z-index 0. */
.rbccm-hero > * { position: relative; z-index: 1; }

/* Font-family lock on the big serif visual headings. unified.css
   sets its own font-family + letter-spacing on h1/h2 via tag
   selectors, which suppresses RBCDisplay and opens tracking. The
   lock targets the semantic classes (not h1/h2 raw tags), because
   MAAS+MATA authors the H1 on the eyebrow (Roboto uppercase, SEO)
   and the visual "title" as a <p>. Locking the tag would force
   serif onto the sans eyebrow. */
.rbccm-hero .rbccm-hero__title,
.rbccm-hero .rbccm-hero__title-line {
  font-family: var(--rbccm-hero-serif) !important;
  letter-spacing: 0 !important;
}

/* Reset margin/padding on inner elements where a CMS global tag
   rule would otherwise apply !important margins. Tag-agnostic --
   authors can use <h1> or <p> for either element depending on
   their page's semantic needs. Variants own the visual margin via
   their own class rules. */
h1.rbccm-hero__eyebrow, p.rbccm-hero__eyebrow,
h1.rbccm-hero__title,   p.rbccm-hero__title,
h1.rbccm-hero__subtitle, p.rbccm-hero__subtitle,
h1.rbccm-hero__body,    p.rbccm-hero__body {
  padding: 0;
}


/* =========================================================================
   Variant: MAAS + MATA
   -------------------------------------------------------------------------
   Centred hero. Eyebrow with yellow underline, 2-line H1 (last line
   flips to bright blue), subtitle, dual CTA row. Soft blue glow halo
   at top-centre via ::before. Faint graph-paper backdrop across the
   whole hero (ported from `.rbccm-maas-mata` page-root pattern:
   1.2px vertical + horizontal rules @ 23.35px pitch, plus a small
   "cross" accent at every intersection). If the consumer page also
   paints the graph paper site-wide (as maas-mata.css does today),
   the two stacks are visually identical and layer harmlessly.
   ========================================================================= */
.rbccm-hero--maas-mata {
  /* Clears the fixed site navbar; 170px from 992 up (below). */
  padding-top: 140px;
  background-color: #fff;
  background-image:
    repeating-linear-gradient(
      90deg,
      rgba(0, 49, 104, 0.025) 0,
      rgba(0, 49, 104, 0.025) 1.2px,
      transparent 1.2px,
      transparent 23.35px,
      rgba(0, 49, 104, 0.01) 23.35px,
      rgba(0, 49, 104, 0.01) 24.55px,
      transparent 24.55px,
      transparent 46.70px,
      rgba(0, 49, 104, 0.01) 46.70px,
      rgba(0, 49, 104, 0.01) 47.90px,
      transparent 47.90px,
      transparent 70.05px,
      rgba(0, 49, 104, 0.01) 70.05px,
      rgba(0, 49, 104, 0.01) 71.25px,
      transparent 71.25px,
      transparent 93.40px,
      rgba(0, 49, 104, 0.01) 93.40px,
      rgba(0, 49, 104, 0.01) 94.60px,
      transparent 94.60px,
      transparent 116.75px
    ),
    repeating-linear-gradient(
      180deg,
      rgba(0, 49, 104, 0.025) 0,
      rgba(0, 49, 104, 0.025) 1.2px,
      transparent 1.2px,
      transparent 23.35px,
      rgba(0, 49, 104, 0.01) 23.35px,
      rgba(0, 49, 104, 0.01) 24.55px,
      transparent 24.55px,
      transparent 46.70px,
      rgba(0, 49, 104, 0.01) 46.70px,
      rgba(0, 49, 104, 0.01) 47.90px,
      transparent 47.90px,
      transparent 70.05px,
      rgba(0, 49, 104, 0.01) 70.05px,
      rgba(0, 49, 104, 0.01) 71.25px,
      transparent 71.25px,
      transparent 93.40px,
      rgba(0, 49, 104, 0.01) 93.40px,
      rgba(0, 49, 104, 0.01) 94.60px,
      transparent 94.60px,
      transparent 116.75px
    ),
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='116.75' height='116.75' viewBox='0 0 116.75 116.75'><rect x='54.1975' y='57.778' width='8.355' height='1.194' fill='%23003168' fill-opacity='0.05'/><rect x='57.778' y='54.1975' width='1.194' height='8.355' fill='%23003168' fill-opacity='0.05'/></svg>");
  background-size: auto, auto, 116.75px 116.75px;
  background-position: 0 0, 0 0, -57.775px -57.775px;
  background-repeat: repeat, repeat, repeat;
}
@media (min-width: 992px) {
  .rbccm-hero--maas-mata { padding-top: 170px; }
}
.rbccm-hero--maas-mata .rbccm-hero__container { text-align: center; }
/* Same as the MAAS+MATA page: 75px below the button at every size
   (the base block's desktop 120 is for the other variants). */
.rbccm-hero--maas-mata {
  --rbccm-hero-pb-d: 75px;
}

/* Glow halo -- soft light-blue disc, blurred, sitting at top-centre
   like a backdrop. Kept OUT of the accessibility tree via ::before. */
.rbccm-hero--maas-mata::before {
  content: "";
  position: absolute;
  top: -369px;
  left: 50%;
  width: 702px;
  height: 702px;
  margin-left: -351px;
  border-radius: 50%;
  background: rgba(0, 81, 165, 0.04);
  filter: blur(100px);
  pointer-events: none;
  z-index: 0;
}

/* Eyebrow -- blue, letter-spaced, text as typed (not uppercased,
   same as the MAAS+MATA page), with a 45x2 yellow underline beneath
   via ::after. Bottom margin of 80px lands the eyebrow-to-H1
   measurement per Figma. It's the page's h1, so !important beats the
   site's h1 tag rules (size, weight, case, tracking). */
.rbccm-hero--maas-mata .rbccm-hero__eyebrow {
  color: var(--rbccm-hero-blue) !important;
  font-family: var(--rbccm-hero-sans) !important;
  font-size: 14px !important;
  font-weight: 400 !important;
  line-height: 120% !important;
  letter-spacing: 3px !important;
  text-transform: none !important;
  margin: 0 0 80px !important;
}
.rbccm-hero--maas-mata .rbccm-hero__eyebrow::after {
  content: "";
  display: block;
  width: 45px;
  height: 2px;
  background: var(--rbccm-hero-yellow);
  margin: 15px auto 0;
}

/* Title -- RBCDisplay 50/75px, 2 lines. Last line flips to blue via
   __title-line:last-child. */
.rbccm-hero--maas-mata .rbccm-hero__title {
  font-family: var(--rbccm-hero-serif);
  font-size: 50px;
  font-weight: 500;
  line-height: 100%;
  color: var(--rbccm-hero-ink);
  margin: 0 auto 12px;
}
@media (min-width: 992px) {
  .rbccm-hero--maas-mata .rbccm-hero__title {
    font-size: 75px;
    margin: 0 0 20px;
  }
}
.rbccm-hero--maas-mata .rbccm-hero__title-line { display: block; }
.rbccm-hero--maas-mata .rbccm-hero__title-line:last-child { color: var(--rbccm-hero-blue); }

/* Subtitle -- Roboto, centered, cap width. Values match the MAAS+MATA
   page (620 / 832 caps, 33 / 48 desktop margins). !important on type:
   site p rules otherwise add letter-spacing and change the size. */
.rbccm-hero--maas-mata .rbccm-hero__subtitle {
  color: var(--rbccm-hero-ink) !important;
  font-family: var(--rbccm-hero-sans) !important;
  font-size: 16px !important;
  font-weight: 400 !important;
  line-height: 120% !important;
  letter-spacing: 0 !important;
  max-width: 620px;
  margin: 0 auto 32px !important;
}
.rbccm-hero--maas-mata .rbccm-hero__subtitle strong { font-weight: 700; }
@media (min-width: 992px) {
  .rbccm-hero--maas-mata .rbccm-hero__subtitle {
    font-size: 21.945px !important;
    max-width: 832px;
    margin: 33px auto 48px !important;
  }
}

/* CTA row -- two buttons centered, 12px gap. Wraps on narrow. */
.rbccm-hero--maas-mata .rbccm-hero__actions {
  display: inline-flex;
  gap: 12px;
  align-items: center;
  flex-wrap: wrap;
  justify-content: center;
}

/* ---- MAAS+MATA buttons (baked in) ---------------------------------------
   The hero's buttons are styled right here, copied from maas-mata.css
   (.rbccm-maas-mata__btn / --primary / --secondary, their icon, the
   shine sweep + arrow flyby, and the TeamSite defence block), so the
   hero doesn't need rbccm-button.css. The skin still outputs the
   rbccm-button class names; these rules are scoped to the MAAS+MATA
   hero so they don't touch rbccm-button anywhere else.
   !important where maas-mata.css used it: unified.css / unified2.css
   .btn, a and a:hover rules otherwise reshape the pill. */
.rbccm-hero--maas-mata .rbccm-button {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 10px;
  height: 50px !important;
  padding: 12px 35px !important;
  border-radius: 100px !important;
  border: 1px solid transparent;
  cursor: pointer;
  font-family: Roboto, Arial, sans-serif !important;
  font-size: 18px;
  line-height: 29.26px;
  letter-spacing: 0 !important;
  text-decoration: none !important;
  box-sizing: border-box;
  position: relative !important;
  overflow: hidden !important;
}
.rbccm-hero--maas-mata .rbccm-button > * { position: relative !important; z-index: 1 !important; }
.rbccm-hero--maas-mata .rbccm-button:hover,
.rbccm-hero--maas-mata .rbccm-button:focus { text-decoration: none !important; }
.rbccm-hero--maas-mata .rbccm-button:focus-visible {
  outline: 2px solid #0051A5;
  outline-offset: 3px;
}

/* Primary: #0051A5 pill, white 18/29.26 wt 500 text, white arrow. */
.rbccm-hero--maas-mata .rbccm-button--primary {
  background: #0051A5 !important;
  color: #fff !important;
  border: 1px solid #0051A5 !important;
  font-size: 18px !important;
  font-weight: 500 !important;
  line-height: 29.26px !important;
}
.rbccm-hero--maas-mata .rbccm-button--primary:hover,
.rbccm-hero--maas-mata .rbccm-button--primary:focus-visible {
  background: #003168 !important;
  border-color: #003168 !important;
  color: #fff !important;
}
.rbccm-hero--maas-mata .rbccm-button--primary .rbccm-button__icon {
  fill: #fff;
  width: 23px;
  height: 23px;
  flex-shrink: 0;
  transition: transform 200ms ease, opacity 200ms ease !important;
  will-change: transform, opacity;
}

/* Secondary: outlined, grey text + border, small grey icon. */
.rbccm-hero--maas-mata .rbccm-button--secondary {
  background: transparent !important;
  color: #494949 !important;
  border: 1px solid #D8D8D8 !important;
  font-weight: 400 !important;
}
.rbccm-hero--maas-mata .rbccm-button--secondary:hover,
.rbccm-hero--maas-mata .rbccm-button--secondary:focus-visible {
  border-color: #494949 !important;
  color: #494949 !important;
}
.rbccm-hero--maas-mata .rbccm-button--secondary .rbccm-button__icon {
  fill: #494949;
  width: 12px;
  height: 13px;
  flex-shrink: 0;
}

/* Shine sweep on primary: a soft white diagonal band crosses the pill
   on hover / keyboard focus (transition-based, like the live page, so
   it retriggers on every hover). */
.rbccm-hero--maas-mata .rbccm-button--primary::before {
  content: "" !important;
  position: absolute !important;
  top: 0 !important;
  bottom: 0 !important;
  left: -60% !important;
  width: 40% !important;
  background: linear-gradient(120deg, transparent 0%, rgba(255,255,255,0.35) 50%, transparent 100%) !important;
  transform: skewX(-18deg) !important;
  pointer-events: none !important;
  opacity: 0 !important;
  z-index: 0 !important;
  transition: left 600ms ease-out, opacity 600ms ease-out !important;
  animation: none !important;
}
.rbccm-hero--maas-mata .rbccm-button--primary:hover::before,
.rbccm-hero--maas-mata .rbccm-button--primary:focus-visible::before {
  left: 120% !important;
  opacity: 1 !important;
}

/* Arrow flyby: slides out right, reappears from the left, settles. */
.rbccm-hero--maas-mata .rbccm-button--primary:hover .rbccm-button__icon,
.rbccm-hero--maas-mata .rbccm-button--primary:focus-visible .rbccm-button__icon {
  animation: rbccm-hero-arrow-flyby 550ms cubic-bezier(0.55, 0, 0.1, 1) both !important;
}
@keyframes rbccm-hero-arrow-flyby {
  0%   { transform: translateX(0);     opacity: 1; }
  45%  { transform: translateX(32px);  opacity: 0; }
  46%  { transform: translateX(-32px); opacity: 0; }
  100% { transform: translateX(0);     opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  .rbccm-hero--maas-mata .rbccm-button--primary::before { transition: none !important; }
  .rbccm-hero--maas-mata .rbccm-button--primary:hover::before,
  .rbccm-hero--maas-mata .rbccm-button--primary:focus-visible::before { opacity: 0 !important; }
  .rbccm-hero--maas-mata .rbccm-button--primary:hover .rbccm-button__icon,
  .rbccm-hero--maas-mata .rbccm-button--primary:focus-visible .rbccm-button__icon { animation: none !important; }
}


/* =========================================================================
   Variant: Strategy & Economics
   -------------------------------------------------------------------------
   Mobile-first spec (per Justin's Figma-derived measurements).
   Outer bg: soft blue-grey #E7EEF1. Content stacks: H1 + body copy,
   then a dark-navy "Latest insight" card below. Fixed 781px mobile
   height, 23px horizontal padding, content capped at 1320px inside.
   Desktop layout override lands at >=992px (grid split, insight
   card moves to the right column) -- kept as a light layer atop the
   mobile base so nothing shifts unexpectedly.
   ========================================================================= */
.rbccm-hero--strategy-and-economics {
  background: #E7EEF1;
  color: var(--rbccm-hero-ink);
  /* Vertical rhythm from the Figma spec:
       frame height    781px
       content height  568.1875px
       remainder       ~212.8125px  -> split ~106px top / ~106px bottom
     Using padding rather than a fixed height so the section grows
     with content if the copy runs longer than Figma expected. Outer
     23px horizontal gutter matches the Figma spec exactly.

     Top padding also carries the shared nav compensation: the base
     .rbccm-hero block sets 95px top on mobile to clear the fixed
     nav, but the shorthand below would clobber it, so we add the
     95 back in (95 + 106 = 201px total). Bottom stays at 106px. */
  padding: 171px 23px 106px;
  height: auto;
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden;
  /* 8px warm-yellow rule at the bottom, per Figma. Applied on the
     base variant so it carries through both mobile and desktop. */
  border-bottom: 8px solid var(--Yellow-Warm-Yellow, #FFC72C);
  /* position: relative is inherited from the shared block base; keeps
     the bg-video slot anchored to this section. */
}

/* Optional background video slot. When an author includes an
   `.rbccm-hero__bg-video` element inside the section, it fills the
   entire section as an absolute-cover backdrop and the solid
   #E7EEF1 fallback stays behind it (visible until the video paints,
   and if the source ever fails). aria-hidden on the wrapper keeps
   assistive tech from announcing decorative motion. In production
   this element hosts a Brightcove Player iframe with autoplay,
   muted, loop, playsinline, controls disabled - same URL contract
   as featured-conferences.js already uses. */
.rbccm-hero--strategy-and-economics .rbccm-hero__bg-video {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
}
.rbccm-hero--strategy-and-economics .rbccm-hero__bg-video video,
.rbccm-hero--strategy-and-economics .rbccm-hero__bg-video iframe {
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* Anchor the crop to the top-right so the "interesting" corner of
     the frame stays in view when the container aspect-ratio changes
     across breakpoints. */
  object-position: top right;
  border: 0;
  display: block;
  /* Figma doesn't ship a spec for the video opacity so we set it
     here. Chosen to let the video read as a subtle motion backdrop
     without competing with the H1 lede + insight card in the
     foreground. Bump toward 1.0 for a more prominent video; drop
     toward 0.1 for a barely-there ambient feel. */
  opacity: 0.1;
}
/* Brightcove background (in-page player, see the skin and
   rbccm-brightcove-bg-layer.css, which hides the player chrome and crops
   the video to cover). The S&E cuts read too faint at the MP4's 0.1, so
   the layer is 0.2 on mobile (behind the stacked title and card) and
   0.4 from tablet up. The opacity sits on the layer, so the poster
   fallback matches; the video inside goes back to 1 to undo the 0.1
   from the shared video rule above. */
.rbccm-hero--strategy-and-economics .rbccm-brightcove-bg-layer {
  opacity: 0.2;
}
@media (min-width: 768px) {
  .rbccm-hero--strategy-and-economics .rbccm-brightcove-bg-layer {
    opacity: 0.4;
  }
}
.rbccm-hero--strategy-and-economics .rbccm-brightcove-bg-layer video {
  opacity: 1;
}

/* Content column lifted above the video. Base container already
   sits at z-index 1 (from the shared block's `> *` z-index safety
   net), so this rule just makes the intent explicit. */
.rbccm-hero--strategy-and-economics .rbccm-hero__container {
  position: relative;
  z-index: 1;
}

/* Inner column: fills the outer flex, stacks its own child (the
   1320-capped content column) centred. */
.rbccm-hero--strategy-and-economics .rbccm-hero__container {
  max-width: none;
  padding: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  flex: 1 0 0;
}

/* Content column - the actual copy + card stack. Fills 100% on
   mobile (no cap until desktop authors a max-width). 51px gap
   between the text block and the insight card. */
.rbccm-hero--strategy-and-economics .rbccm-hero__grid {
  display: flex;
  width: 100%;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  gap: 51px;
  align-self: stretch;
}

/* Top block: H1 + paragraph, 24px gap between them. */
.rbccm-hero--strategy-and-economics .rbccm-hero__lede {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  gap: 13px;
  align-self: stretch;
}

/* H1 -- RBC Display 39px / 120% / weight 500, colour #003168.
   Left-aligned, no bottom margin (gap on the parent handles rhythm). */
.rbccm-hero--strategy-and-economics .rbccm-hero__title {
  color: var(--rbccm-hero-navy);
  font-family: var(--rbccm-hero-serif);
  font-size: 39px;
  font-style: normal;
  font-weight: 500;
  line-height: 120%; /* 46.8px */
  margin: 0;
}

/* Body copy -- Roboto 16/150%, #444, ligatures off per spec. */
.rbccm-hero--strategy-and-economics .rbccm-hero__body {
  color: #444;
  font-feature-settings: 'liga' off, 'clig' off;
  font-family: var(--rbccm-hero-sans);
  font-size: 16px;
  font-style: normal;
  font-weight: 400;
  line-height: 150%; /* 24px */
  align-self: stretch;
  margin: 0;
}

/* -------- Insight card -------- */
/* Dark navy card. 30/20 padding, 10px radius, subtle grey border,
   soft box shadow.
   ..............................................................
   !important on padding + background is defensive: this is a
   semantic <article> element, and the RBCCM site-wide CSS
   applies a bare `footer { ... }` rule at unified2.css:2970 --
   assume similar bare `article { ... }` rules could land next
   and paint over the card. Hardening now prevents a future
   drive-by regression. */
.rbccm-hero--strategy-and-economics .rbccm-hero__insight-card {
  display: flex;
  padding: 30px 20px !important;
  margin: 0 !important;
  flex-direction: column;
  align-items: flex-start;
  align-self: stretch;
  border-radius: 10px;
  border: 1px solid #D7D7D7;
  background: #051B38 !important;
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
}

/* Pill row wrapper. 12px bottom padding pushes the H3 down. */
.rbccm-hero--strategy-and-economics .rbccm-hero__insight-eyebrow-row {
  display: flex;
  padding-bottom: 12px;
  flex-direction: column;
  align-items: flex-start;
  align-self: stretch;
}
.rbccm-hero--strategy-and-economics .rbccm-hero__insight-eyebrow-inner {
  display: flex;
  padding-bottom: 10px;
  justify-content: space-between;
  align-items: center;
  align-self: stretch;
}

/* Yellow pill with a 4x4 navy dot + tiny uppercase label. */
.rbccm-hero--strategy-and-economics .rbccm-hero__insight-eyebrow {
  display: flex;
  padding: 2px 8px;
  align-items: center;
  gap: 6px;
  border-radius: 100px;
  background: var(--rbccm-hero-yellow);
  color: var(--rbccm-hero-navy);
  font-family: var(--rbccm-hero-sans);
  font-size: 9px;
  font-style: normal;
  font-weight: 600;
  line-height: 13.5px; /* 150% */
  letter-spacing: 0.8px;
  text-transform: uppercase;
  margin: 0;
}
.rbccm-hero--strategy-and-economics .rbccm-hero__insight-eyebrow::before {
  content: "";
  width: 4px;
  height: 4px;
  aspect-ratio: 1 / 1;
  border-radius: 33554400px;
  background: var(--rbccm-hero-navy);
}

/* Card H3 -- RBC Display 22 / 25.65 line-height, white. */
.rbccm-hero--strategy-and-economics .rbccm-hero__insight-title {
  display: flex;
  padding-bottom: 8px;
  flex-direction: column;
  align-items: flex-start;
  align-self: stretch;
  color: #FFF;
  font-family: var(--rbccm-hero-serif);
  font-size: 22px;
  font-style: normal;
  font-weight: 500;
  line-height: 25.65px;
  margin: 0;
}

/* Card body copy -- Roboto 12 / 18.6, warm light grey. */
.rbccm-hero--strategy-and-economics .rbccm-hero__insight-body {
  display: flex;
  padding-bottom: 20px;
  flex-direction: column;
  align-items: flex-start;
  align-self: stretch;
  color: #D7D7D7;
  font-family: var(--rbccm-hero-sans);
  font-size: 12px;
  font-style: normal;
  font-weight: 400;
  line-height: 18.6px; /* 155% */
  margin: 0;
}

/* Divider row: date left, read-more right. Top hairline in warm
   light grey at 77% alpha.
   ..............................................................
   !important on padding + background is defensive against RBCCM's
   site-wide `footer { padding: 30px 0; background-color: #003168; }`
   rule (unified2.css). Our footer here is a semantic <footer> tag
   inside the insight card, so bare element selectors from the
   site cascade override anything we set without !important. Same
   pattern applied to margin so a site `footer { margin: ... }`
   rule can't push us out of the card. */
.rbccm-hero--strategy-and-economics .rbccm-hero__insight-footer {
  display: flex;
  padding: 10px 0 0 0 !important;
  margin: 0 !important;
  background: transparent !important;
  justify-content: space-between;
  align-items: center;
  align-self: stretch;
  border-top: 1px solid rgba(215, 215, 215, 0.77);
}
.rbccm-hero--strategy-and-economics .rbccm-hero__insight-date {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  color: #D7D7D7;
  font-family: var(--rbccm-hero-sans);
  font-size: 11px;
  font-weight: 400;
}

/* Read more link -- warm-yellow 11/700, uppercase-ish tracking,
   with a small chevron+shaft SVG icon on the right. Underline uses
   the same soft-fade pattern as the ITM card-title / "See all"
   links + the leading-experts CTAs: text-decoration always present
   in the layout but starts transparent + 0 thickness, then fades
   to currentColor + auto thickness over 250ms on hover / focus. */
.rbccm-hero--strategy-and-economics .rbccm-hero__insight-link {
  display: flex;
  align-items: center;
  gap: 6px;
  /* !important on color to beat the site-wide `a { color: #003168 }`
     style RBCCM applies globally. Same reason for text-decoration --
     the site paints an underline on every anchor and we want the
     soft-fade pattern instead. Background pinned to transparent so
     no bare `a { background }` rule can turn the link into a block. */
  color: var(--rbccm-hero-yellow) !important;
  background: transparent !important;
  leading-trim: both;
  text-edge: cap;
  font-family: var(--rbccm-hero-sans);
  font-size: 11px;
  font-style: normal;
  font-weight: 700;
  line-height: 16.5px; /* 150% */
  letter-spacing: 1px;
  text-decoration: underline !important;
  text-decoration-color: transparent !important;
  text-decoration-thickness: 0 !important;
  text-underline-offset: 3px;
  transition:
    opacity 0.15s ease,
    text-decoration-color 0.25s ease,
    text-decoration-thickness 0.25s ease;
}
.rbccm-hero--strategy-and-economics .rbccm-hero__insight-link:hover,
.rbccm-hero--strategy-and-economics .rbccm-hero__insight-link:focus-visible {
  color: var(--rbccm-hero-yellow) !important;
  /* Keep the link + arrow at full opacity on hover -- underline
     fade and arrow bounce do the interaction lift on their own. */
  opacity: 1 !important;
  text-decoration-color: currentColor !important;
  text-decoration-thickness: auto !important;
}
.rbccm-hero--strategy-and-economics .rbccm-hero__insight-link-icon {
  width: 13px;
  height: 13px;
  flex-shrink: 0;
}
/* Arrow right-bounce on hover / keyboard focus. Same 450ms nudge as the
   In-the-Media "See all" link (rbccm-itm-arrow-bounce) so the S&E hero
   card and the ITM footer feel like the same interaction. Uses its own
   keyframe name so the two components stay independently deployable. */
.rbccm-hero--strategy-and-economics .rbccm-hero__insight-link:hover .rbccm-hero__insight-link-icon,
.rbccm-hero--strategy-and-economics .rbccm-hero__insight-link:focus-visible .rbccm-hero__insight-link-icon {
  animation: rbccm-hero-arrow-bounce 450ms cubic-bezier(0.4, 0, 0.2, 1) both;
}
@keyframes rbccm-hero-arrow-bounce {
  0%   { transform: translateX(0); }
  50%  { transform: translateX(6px); }
  100% { transform: translateX(0); }
}
@media (prefers-reduced-motion: reduce) {
  .rbccm-hero--strategy-and-economics .rbccm-hero__insight-link:hover .rbccm-hero__insight-link-icon,
  .rbccm-hero--strategy-and-economics .rbccm-hero__insight-link:focus-visible .rbccm-hero__insight-link-icon {
    animation: none !important;
  }
  /* Kill the underline fade for motion-sensitive users -- they still
     get the visible underline on hover / focus, just no soft entrance. */
  .rbccm-hero--strategy-and-economics .rbccm-hero__insight-link {
    transition: none !important;
  }
}

/* -------- Desktop layout (>=992): full Figma spec --------
   Section switches from mobile's padded stack to a horizontal band.
   Row centres a 1100px content bar with space-between so the H1
   column sits left, the insight card right. Between 992 and 1099
   the columns flex naturally (lede holds a 562 floor, card takes
   the leftover); at 1100+ a second query below relaxes to fixed
   widths + a wider 75px gap that only fits at full width.

   H1 scales up to 65px w/ -1.08px tracking; body copy to 21/27.2.

   A soft blur ellipse (Figma "Ellipse 56") sits behind the text
   column so text stays readable if the section carries a video
   backdrop rather than the solid #E7EEF1 fill. */
@media (min-width: 992px) {

  .rbccm-hero--strategy-and-economics {
    display: flex;
    height: auto;
    /* Vertical rhythm mirrors the mobile approach: no fixed height,
       padding derived from the Figma frame vs. content-column delta.
       116px top / 116px bottom is half the difference between the
       525px frame and its child row, so the visible geometry matches
       Figma at exactly-Figma widths and the section grows naturally
       if the copy or card runs taller than expected.

       Top padding also carries the shared nav compensation: the base
       .rbccm-hero block sets 130px top on desktop to clear the fixed
       nav, but the shorthand below would clobber it, so we add the
       130 back in (130 + 86 = 216px total). Bottom stays at 116px.
       Section owns the outer horizontal gutter (23px, same as mobile);
       container underneath sits at padding:0 and just centres the row. */
    padding: 216px 23px 116px;
    align-items: center;
    align-self: stretch;
    justify-content: center;
  }

  /* Content container behaves as the flex host for the row.
     No horizontal padding here -- the parent section (or the page
     shell above it) owns the outer gutter, so this element just
     centres its child. */
  .rbccm-hero--strategy-and-economics .rbccm-hero__container {
    max-width: none;
    width: 100%;
    padding: 0;
    display: flex;
    justify-content: center;
    align-items: center;
    flex: none;
  }

  /* Row: fills available width up to a 1100px cap so it responds
     down through mid-widths instead of hard-locking to 1100.
     Between 992 and 1099 the columns flex naturally: the lede holds
     a 562px minimum on the left, and the insight card takes whatever
     width is left over up to the 1100 cap. The mobile 51px gap
     carries through so the columns never touch as they flex. */
  .rbccm-hero--strategy-and-economics .rbccm-hero__grid {
    display: flex;
    flex-direction: row;
    width: 100%;
    max-width: 1140px;
    justify-content: space-between;
    align-items: center;
    gap: 51px;
    align-self: auto;
  }

  /* Left column: 540px floor + basis, 32px gap between H1 and body.
     flex: 1 0 540px grows above 540 to fill leftover space at wider
     viewports but never shrinks below 540, so the type never
     compresses even in the mid-range 992-1099 window. */
  .rbccm-hero--strategy-and-economics .rbccm-hero__lede {
    flex: 1 0 540px;
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    gap: 10px;
  }

  /* H1: RBC Display 65 / 100% / weight 500 / -1.08px tracking. */
  .rbccm-hero--strategy-and-economics .rbccm-hero__title {
    font-size: 65px;
    line-height: 100%; /* 65px */
    letter-spacing: -1.08px;
  }

  /* Body copy: Roboto 21 / 27.2px line-height. */
  .rbccm-hero--strategy-and-economics .rbccm-hero__body {
    font-size: 21px;
    line-height: 27.2px; /* 129.524% */
    /* Optional desktop max-width for widow control. XSL emits
       `--rbccm-hero-se-body-max-width: {value}` from the
       SeBodyMaxWidth Datum on the __body element; blank Datum falls
       back to 100% (no cap). Mobile / tablet always render at 100%. */
    max-width: var(--rbccm-hero-se-body-max-width, 100%);
  }

  /* Right column: 482px base, grows to fill remaining space up to
     the 1100px row cap. min-width: 0 lets it shrink freely inside
     the flex row so nothing overflows between 992 and 1100. */
  .rbccm-hero--strategy-and-economics .rbccm-hero__insight-card {
    width: auto;
    min-width: 0;
    flex: 1 1 482px;
    padding: 40px 30px;
    align-self: auto;
  }

  /* Extra right-padding on the title + body so they don't run to
     the card edge -- leaves optical breathing room at desktop widths
     where the card is fixed at 482. Title gets 40px, body 30px. */
  .rbccm-hero--strategy-and-economics .rbccm-hero__insight-title {
    padding-right: 40px;
  }
  .rbccm-hero--strategy-and-economics .rbccm-hero__insight-body {
    padding-right: 30px;
  }

  /* Blur ellipse behind the text column -- Figma "Ellipse 56".
     527 x 200 rounded blob (border-radius: 527px is huge on purpose;
     Figma exported it that way to guarantee a pill regardless of
     dimensions), tinted #E7EEF2 with a 50px blur so it reads as a
     soft glow. Anchored bottom-left of the section per the design.
     Only shown at desktop (mobile stack doesn't need it). Absolute
     positioned; the __blur element sits directly inside the section. */
  .rbccm-hero--strategy-and-economics .rbccm-hero__blur {
    position: absolute;
    left: 148px;
    bottom: 79px;
    width: 527px;
    height: 200px;
    border-radius: 527px;
    background: #E7EEF2;
    filter: blur(50px);
    pointer-events: none;
    z-index: 0;
  }
}


/* -------- Desktop layout (>=1100): full-width Figma spec --------
   Above 1100 the row hits its 1100 max-width and stops growing.
   The lede + card flex declarations from 992+ already do the right
   thing here (lede holds 540 floor, both grow to share leftover
   space), so all this breakpoint changes is the parent gap -- 51 ->
   75px, the Figma spec at full width. */
@media (min-width: 1100px) {
  .rbccm-hero--strategy-and-economics .rbccm-hero__grid {
    gap: 75px;
  }
}


/* =========================================================================
   Header alignment modifier -- editor-toggleable via HeaderAlignment
   Datum. Base defaults are left; --header-center centers the visible
   text stack. Scope is variant-specific because each hero preset has
   its own layout: MAAS+MATA lays out a single centered column already
   (the modifier is largely a no-op there but still stamps text-align);
   S+E has a 2-col grid and the modifier only re-anchors the left
   __lede column's title + body, not the whole grid.
   ========================================================================= */
.rbccm-hero--maas-mata.rbccm-hero--header-center .rbccm-hero__container {
  text-align: center;
}

.rbccm-hero--strategy-and-economics.rbccm-hero--header-center .rbccm-hero__lede {
  align-items: center;
  text-align: center;
}
.rbccm-hero--strategy-and-economics.rbccm-hero--header-center .rbccm-hero__title,
.rbccm-hero--strategy-and-economics.rbccm-hero--header-center .rbccm-hero__body {
  text-align: center;
}


/* =========================================================================
   Strategy and Economics -- page-shell adjustment
   -------------------------------------------------------------------------
   TeamSite emits a `<div class="ls-row content-section-pull-up" id="content">`
   as the default main-content rail on every page. On S+E the whole page
   is composed of dedicated section components (accordions, expertise,
   leading-experts, featured-insights, cta-band, platforms, in-the-media),
   so this rail sits empty between the ITM section and the Marketo
   subscribe footer -- and its default `.content-section-pull-up` padding
   / margin (from site-wide unified.css) inflates a ~40px+ gap that reads
   as unintentional whitespace.

   Fix: when the S+E hero is present on the page, auto-hide any
   `.content-section-pull-up` rail whose `.ls-area-body` has no children.
   The `:has(.rbccm-hero--strategy-and-economics)` scope on `.ls-canvas`
   restricts this rule to S+E; the inner `:has(.ls-area-body:empty)`
   check leaves it untouched on any page that actually drops a
   component into the rail.

   Placed here (in rbccm-hero.css) instead of a stand-alone stylesheet
   because the S+E hero is the marker for "this is the S+E page" -- and
   the hero's CSS is unconditionally included on every S+E page.
   ========================================================================= */
/* Selector notes:
   - `.ls-canvas:has(.rbccm-hero--strategy-and-economics)` scopes the
     override to S+E pages only.
   - `#content.content-section-pull-up` targets the specific main-content
     rail. Site-wide unified2.css applies `margin-top: 40px` to
     `.content-section-pull-up` (a group selector shared with team-
     profiles arrows + page-banner breadcrumbs); on the S+E page the
     hero already carries its own bottom padding, so that 40px reads
     as unintentional whitespace between the hero and the first
     content component below. Zero it out.
   - Not hiding the rail here (an earlier version did that on the
     assumption the rail would be empty). The rail is where TeamSite
     drops the page's actual content components -- if the whole
     stack was moved into this rail, hiding it would nuke the page. */
.ls-canvas:has(.rbccm-hero--strategy-and-economics) #content.content-section-pull-up {
  margin-top: 0 !important;
}


/* =========================================================================
   Variant: US Credentials
   -------------------------------------------------------------------------
   Blend of the two existing variants:
     - MAAS+MATA-style CENTERED text stack (2-line title with accent
       colour on line 2 + subtitle) - no CTA row.
     - S+E-style optional bg VIDEO backdrop (native <video> or
       Brightcove iframe), rendered under a solid navy fallback so
       the section reads even before video paints.
   Dark navy surface throughout. Yellow warm-yellow accent on the
   second title line matches the design comp.
   ========================================================================= */
.rbccm-hero--us-credentials {
  background: #001E3C;
  color: #fff;
  /* Padding = Figma spec + fixed-nav clearance on the top edge:
       Mobile  Figma  80 / 0 / 60 / 0
               +nav   65 top
               total  145 / 0 / 60 / 0
       Desktop Figma  130 / 0 / 80 / 0
               +nav   98 top
               total  228 / 0 / 80 / 0
     Horizontal 0 on the section; inner .__container carries its
     own 23px gutter so copy never touches the viewport edge. */
  /* 2026-10 v3 mobile: 31 top / 60 bottom below the nav (65).
     (Was 46 top; 15px less set 2026-10-22.) */
  padding: 96px 0 60px;
  overflow: hidden;
  text-align: center;
  /* position: relative inherited from the shared block base - keeps
     the bg-video slot anchored to this section. */
}
/* v3 desktop: 120 top / 80 bottom below the nav (98); the art layer is
   the 490px band between the nav and the hero's bottom edge. */
@media (min-width: 992px) {
  .rbccm-hero--us-credentials { padding: 218px 0 80px; }
}

/* Bg-video slot - identical mechanics to the S+E variant so the
   Datum shape carries over (Uc*BgVideoMp4 or Uc*BgBrightcove*).
   The wrapper fills the section as an absolute-cover backdrop; the
   #001E3C fallback stays visible until the media paints, and if the
   source ever fails. aria-hidden on the wrapper (XSL side) keeps
   assistive tech from announcing decorative motion. Opacity kept
   at 0.4 - higher than S+E (0.1) because US Creds uses the video
   as a decorative "constellation" backdrop that should register
   visually, not just ambient motion. Tune per art direction. */
.rbccm-hero--us-credentials .rbccm-hero__bg-video {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
}
.rbccm-hero--us-credentials .rbccm-hero__bg-video video,
.rbccm-hero--us-credentials .rbccm-hero__bg-video iframe {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  border: 0;
  display: block;
  opacity: 0.4;
}

/* Background image sets (2026-10 design v3: stills replace the video).
   The skin puts all four URLs on the section as custom properties and
   sets data-hero-bg from the page URL (?hero=global-markets -> gm,
   otherwise gib). Only the active pair is referenced here, so only the
   image in use downloads. Mobile art (under 768px) is portrait with the
   subject at the bottom under the copy; desktop art has the subject on
   the right, so each anchors to its subject when cropped. Full opacity:
   the art is designed to sit behind the copy (dark where the text is). */
.rbccm-hero--us-credentials[data-hero-bg="gib"] {
  --rbccm-hero-bg-mobile: var(--rbccm-hero-bg-gib-mobile);
  --rbccm-hero-bg-desktop: var(--rbccm-hero-bg-gib-desktop);
}
.rbccm-hero--us-credentials[data-hero-bg="gm"] {
  --rbccm-hero-bg-mobile: var(--rbccm-hero-bg-gm-mobile);
  --rbccm-hero-bg-desktop: var(--rbccm-hero-bg-gm-desktop);
}
/* The art starts below the fixed nav (65 mobile, 98 desktop), as in
   the comps, instead of running under it.

   Phones (under 600): the hero's height follows the art's shape
   (750 x 1068 = 142.4vw tall) instead of a fixed 534px, so the
   composition matches the comp at every phone width: the dark top of
   the art stays behind the copy and the subject stays below it. A
   fixed height let the art scale up with the width, crop its dark top
   and bring the robots / globe up behind the text on wider phones.
   Longer copy still makes the hero taller (the art is anchored to the
   top, so any extra crops off the bottom).

   600-991 (big phones, small tablets): following the art would make the
   hero 900px+ tall, so it is capped at 760px of art and the art anchors
   to the bottom to keep the subject in view; the navy glow below grows
   with the width to keep the copy readable where the subject rises.

   The desktop art takes over at 992, where the layout changes. */
.rbccm-hero--us-credentials[data-hero-bg] {
  min-height: calc(65px + 142.4vw);
}
.rbccm-hero--us-credentials .rbccm-hero__bg-image {
  background-image: var(--rbccm-hero-bg-mobile);
  background-position: center top;
  background-repeat: no-repeat;
  background-size: cover;
  bottom: 0;
  left: 0;
  pointer-events: none;
  position: absolute;
  right: 0;
  top: 65px;
  z-index: 0;
}
@media (min-width: 600px) and (max-width: 991px) {
  .rbccm-hero--us-credentials[data-hero-bg] {
    min-height: calc(65px + min(142.4vw, 760px));
  }
  .rbccm-hero--us-credentials .rbccm-hero__bg-image {
    background-position: center bottom;
  }
}
/* 768-991: the site nav is already its two-row desktop size here (99px,
   119px just above 768 where "Sign In" wraps), not the 65px phone nav,
   so the copy and the art start lower. */
@media (min-width: 768px) and (max-width: 991px) {
  .rbccm-hero--us-credentials {
    padding: 126px 0 60px;     /* 27px under the 99px nav (was 161; set 2026-10-22) */
  }
  .rbccm-hero--us-credentials[data-hero-bg] {
    min-height: calc(99px + min(142.4vw, 760px));
  }
  .rbccm-hero--us-credentials .rbccm-hero__bg-image {
    top: 99px;
  }
}
/* Navy glow between the art and the copy (Figma "Ellipse 55" on the
   v3 mobile frame): 443 x 434, rgba(5, 27, 56, 0.81), blur 150px,
   centred horizontally (left -34 in the 375 frame) with its top 53px
   above the art. It darkens the art behind the headline and fades out
   toward the edges; it is not in the exported images. Sized in vw so
   it scales with the art (exactly the comp's px values at 375), and
   capped at its 600px-wide size so it doesn't swallow the subject on
   tablets. The hero's overflow: hidden clips the blur. */
.rbccm-hero--us-credentials .rbccm-hero__bg-image::after {
  background: rgba(5, 27, 56, 0.81);
  border-radius: 50%;
  content: "";
  filter: blur(min(40vw, 240px));
  height: min(115.73vw, 694px);
  left: 50%;
  pointer-events: none;
  position: absolute;
  top: max(-14.13vw, -85px);
  transform: translateX(-50%);
  width: min(118.13vw, 709px);
}
@media (min-width: 992px) {
  /* Desktop: 98 nav + a 475px art band (the comp's 490 less 15, to sit
     the copy 15px higher; the 1440 x 490 art scales ~3% and crops a few
     px top/bottom at 1440), with the copy pinned to the bottom:
     always 80px under the paragraph, at least 120px above the h1 (the
     section's padding). The browser sets the copy a little shorter than
     Figma's 280px text box, so the spare height goes above it, not
     below. Longer copy grows the hero and keeps both paddings. */
  .rbccm-hero--us-credentials[data-hero-bg] {
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    min-height: 573px;
  }
  /* Desktop: the glow becomes the v3 desktop frame's gradient behind
     the copy: 953 x 490 at 1440, #002142 solid -> 55% -> 0% left to
     right. It is kept wide enough to stay behind the copy on wider
     screens, where the copy rail moves right with the centred
     container (50% + 233px = 953 at 1440). */
  .rbccm-hero--us-credentials .rbccm-hero__bg-image::after {
    background: linear-gradient(90deg, #002142 0%, rgba(0, 33, 66, 0.55) 50%, rgba(0, 33, 66, 0) 100%);
    border-radius: 0;
    filter: none;
    height: 100%;
    left: 0;
    top: 0;
    transform: none;
    width: max(953px, calc(50% + 233px));
  }
  /* Desktop: the hero starts at the top of the page under the fixed
     nav (99px), so the art layer starts 98px down: the 490px band below
     the nav, where the 1440 x 490 art fits at its comp size. With top: 0
     the art scales up ~1.2x to fill the strip hidden under the nav. */
  .rbccm-hero--us-credentials .rbccm-hero__bg-image {
    background-image: var(--rbccm-hero-bg-desktop);
    background-position: right center;
    top: 98px;
  }
}
/* Wider than the 1440 art (1441+), GIB robots: keep cover so the art
   grows with the screen and always reaches the left edge (no navy
   strip), pinned top right. Its copy gradient is off 1240-1439 and
   back at 1440+, scaled with the art (see below). The globe has its own rules (bottom left, gradient on). */
@media (min-width: 1441px) {
  .rbccm-hero--us-credentials .rbccm-hero__bg-image {
    background-position: right top;
  }
}
/* GIB (default) 1240-1439: no copy gradient. The robots sit far
   enough right at these widths that the art's own dark left side
   carries the copy. */
@media (min-width: 1240px) and (max-width: 1439px) {
  .rbccm-hero--us-credentials[data-hero-bg="gib"] .rbccm-hero__bg-image::after {
    opacity: 0;
  }
}
/* GIB 1440+: the gradient is back as a narrow band on the far left
   (10.18% of the width, about 147px at 1440), growing with the art as
   the screen widens. */
@media (min-width: 1440px) {
  .rbccm-hero--us-credentials[data-hero-bg="gib"] .rbccm-hero__bg-image::after {
    opacity: 1;
    width: 10.18%;
  }
}
/* Global Markets (globe) desktop, 992+: always cover, pinned bottom
   left (keeps the globe's left side and lower half, crops from the
   right / top), and the
   standard desktop copy gradient at every width. The globe and
   starfield hold up to scaling, so it skips the 1441+ fixed-size art and
   navy extension above, which stays for the GIB robots. The
   [data-hero-bg="gm"] attribute outranks the 1441+ rules. */
@media (min-width: 992px) {
  .rbccm-hero--us-credentials[data-hero-bg="gm"] .rbccm-hero__bg-image {
    background-color: transparent;
    background-position: left bottom;
    background-size: cover;
  }
  /* Wider than the base gradient (50% + 933px vs 233px) so the globe
     fades out more gradually behind and beyond the copy. */
  .rbccm-hero--us-credentials[data-hero-bg="gm"] .rbccm-hero__bg-image::after {
    background: linear-gradient(90deg, #002142 0%, rgba(0, 33, 66, 0.55) 50%, rgba(0, 33, 66, 0) 100%);
    width: max(953px, calc(50% + 933px));
  }
}

/* Content sits above the video. Base shared block already assigns
   z-index: 1 to `> *`, so `position: relative` here is a re-affirm.
   Container is a flex column so eyebrow / title / subtitle stack
   with a single `gap` rule - each child gets its own bottom margin
   zeroed. */
.rbccm-hero--us-credentials .rbccm-hero__container {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  width: 100%;
  /* v3 mobile: the container runs the full hero width inside 23px side
     gutters, so the breadcrumbs can span it left-aligned. The copy
     itself is capped (284px, 475px from 600) by the rule below. */
  max-width: none;
  padding: 0 23px;
  margin: 0 auto;
  gap: 16px;                 /* v3 mobile: title -> paragraph */
  box-sizing: border-box;
}
@media (min-width: 992px) {
  .rbccm-hero--us-credentials .rbccm-hero__container {
    gap: 24px;                 /* v3 desktop: title -> paragraph */
    max-width: 1180px;       /* desktop unchanged until the v3 desktop specs */
  }
}

/* Optional eyebrow - mirrors MAAS+MATA but on dark bg so colour
   flips to warm-yellow. Only renders if the Datum is non-empty. */
.rbccm-hero--us-credentials .rbccm-hero__eyebrow {
  color: var(--rbccm-hero-yellow);
  font-family: var(--rbccm-hero-sans);
  font-size: 14px;
  font-weight: 400;
  line-height: 120%;
  letter-spacing: 3px;
  text-transform: uppercase;
  margin: 0 0 40px;
}
.rbccm-hero--us-credentials .rbccm-hero__eyebrow::after {
  content: "";
  display: block;
  width: 45px;
  height: 2px;
  background: var(--rbccm-hero-yellow);
  margin: 15px auto 0;
}

/* Title - 2 lines, RBCDisplay serif. Line 1 white; line 2 accent
   warm-yellow via :last-child. Mobile 50/desktop 75 matches the
   MAAS+MATA type ramp. Bottom margin is 0 - parent container's
   flex `gap: 48px` owns the title->subtitle spacing. */
/* v3 mobile: 35px / 100%. letter-spacing and text-transform reset so
   picking h1 (or any tag) in the Title tag field can't pull in the
   site's global heading styles. */
.rbccm-hero--us-credentials .rbccm-hero__title {
  font-family: var(--rbccm-hero-serif);
  font-size: 35px;
  font-style: normal;
  font-weight: 500;
  letter-spacing: 0;
  line-height: 100%;
  color: #fff;
  max-width: 100%;
  margin: 0 auto;
  padding: 0;
  text-transform: none;
}
/* v3 desktop: 50px / 100%. The comp's text column is 477px; the h1 is
   capped at 380px because that is what gives the comp's line breaks in
   RBC Display in the browser ("Your capital / needs strategy. / Our
   insights / deliver results."): "needs strategy." is 343px and "Your
   capital needs" 415px, so anything from 343 to 414 works. */
@media (min-width: 992px) {
  .rbccm-hero--us-credentials .rbccm-hero__title {
    font-size: 50px;
    line-height: 100%;
    max-width: 380px;
  }
}
.rbccm-hero--us-credentials .rbccm-hero__title-line { display: block; }
.rbccm-hero--us-credentials .rbccm-hero__title-line:last-child {
  color: var(--rbccm-hero-yellow);
}

/* Subtitle - Roboto, centered white. Desktop caps at 558 per the
   design spec so the paragraph wraps to ~2-3 lines. */
.rbccm-hero--us-credentials .rbccm-hero__subtitle {
  color: #fff;
  font-feature-settings: 'liga' off, 'clig' off;
  font-family: var(--rbccm-hero-sans);
  font-size: 16px;
  font-weight: 400;
  line-height: 150%;
  width: 100%;
  max-width: 558px;
  margin: 0 auto;
}
.rbccm-hero--us-credentials .rbccm-hero__subtitle strong { font-weight: 700; }
/* v3 desktop: Roboto 16px / 130%, 459px wide. (The comp says 18px;
   16px was chosen 2026-10-19. Rule kept separate so it can go back to
   18 by changing this one value.) */
@media (min-width: 992px) {
  .rbccm-hero--us-credentials .rbccm-hero__subtitle {
    font-size: 16px;
    line-height: 130%;
    max-width: 459px;
  }
}

/* Mobile / tablet copy width: at most 284px, centred; large phones and
   small tablets (600+) up to 475px. Set on the copy, not the container,
   so the breadcrumbs above it can go full width. */
@media (max-width: 991px) {
  .rbccm-hero--us-credentials .rbccm-hero__eyebrow,
  .rbccm-hero--us-credentials .rbccm-hero__title,
  .rbccm-hero--us-credentials .rbccm-hero__subtitle {
    max-width: 284px;
  }
}
@media (min-width: 600px) and (max-width: 991px) {
  .rbccm-hero--us-credentials .rbccm-hero__eyebrow,
  .rbccm-hero--us-credentials .rbccm-hero__title,
  .rbccm-hero--us-credentials .rbccm-hero__subtitle {
    max-width: 475px;
  }
}
/* v3 desktop (992+, with the desktop art, type and gradient): copy
   left-aligned over the dark left side of the art, at the container's
   left edge (same rail as the page content). */
@media (min-width: 992px) {
  .rbccm-hero--us-credentials .rbccm-hero__container {
    align-items: flex-start;
    text-align: left;
  }
  .rbccm-hero--us-credentials .rbccm-hero__title,
  .rbccm-hero--us-credentials .rbccm-hero__subtitle {
    margin: 0;
    text-align: left;
  }
  .rbccm-hero--us-credentials .rbccm-hero__eyebrow::after {
    margin: 15px 0 0;
  }
}

/* ---- Breadcrumbs (US Creds, S+E) ------------------------------------
   <nav class="rbccm-hero__breadcrumbs" aria-label="Breadcrumb"> wrapping
   the editor's <li> items from the HeroBreadcrumbs field (plain <li> /
   <a>, no classes needed). Matches the Imagine hero's
   .rbccm-hero__breadcrumbs spec: 13px, line-height 160%, a muted "|"
   (82%, the spec's #ffffffd0) with a 4px gap + 4px / 6px margin, no
   hover underline; about 30px down to the headline. Colour per hero: white on US Creds' dark
   art, navy on S+E's light hero. Separators are CSS, so screen readers
   don't read them. Selectors are specific enough to beat the site's
   bare li / a colour rules. */
.rbccm-hero .rbccm-hero__breadcrumbs {
  margin: 0;
}
.rbccm-hero .rbccm-hero__breadcrumb-list {
  align-items: center;
  color: var(--rbccm-hero-crumb-color, #fff);
  display: flex;
  flex-wrap: wrap;
  font-family: "Roboto Light", Roboto, Arial, sans-serif;
  font-size: 13px;
  font-weight: 400;
  gap: 0.25rem;
  letter-spacing: 0;
  line-height: 160%;
  list-style: none;
  margin: 0;
  padding: 0;
}
/* The field's rich-text editor wraps the items in its own <ul>. The skins
   unwrap it (so the markup is one valid list); this is a safety net for
   older skin versions or other editor wrappers (<p> / <div>): they drop
   out of the layout so the items still sit in this row, and the item
   rules below match items at any depth. */
.rbccm-hero .rbccm-hero__breadcrumb-list ul,
.rbccm-hero .rbccm-hero__breadcrumb-list ol,
.rbccm-hero .rbccm-hero__breadcrumb-list p,
.rbccm-hero .rbccm-hero__breadcrumb-list div {
  display: contents;
  list-style: none;
  margin: 0;
  padding: 0;
}
.rbccm-hero .rbccm-hero__breadcrumb-list li {
  align-items: center;         /* pipe and link share one centre line */
  background: none;
  color: inherit;
  display: inline-flex;
  font-size: 13px;
  list-style: none;
  margin: 0;
  padding: 0;
}
.rbccm-hero .rbccm-hero__breadcrumb-list li + li::before {
  color: inherit;
  content: "|";
  font-size: 13px;
  line-height: 1;
  margin: 0 6px 0 4px;
  opacity: 0.82;               /* the Imagine spec's #ffffffd0 muted pipe */
}
.rbccm-hero .rbccm-hero__breadcrumb-list a,
.rbccm-hero .rbccm-hero__breadcrumb-list a:visited {
  color: inherit;
  font-size: 13px;
  line-height: 160%;
  text-decoration: none;
}
/* Underline on hover (and keyboard focus), in the link's own colour. */
.rbccm-hero .rbccm-hero__breadcrumb-list a:hover,
.rbccm-hero .rbccm-hero__breadcrumb-list a:focus-visible {
  color: inherit;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
}
.rbccm-hero .rbccm-hero__breadcrumb-list a:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 2px;
}

/* US Creds: white, the first item in the copy column (.__container).
   Left-aligned at every width. Mobile / tablet: they span the full-width
   container (23px from the hero edge) above the centred, capped copy; the column's 16px gap +
   14px margin = 30px to the headline.
   Desktop (992+, background images): the hero's top padding drops to
   128px (98 nav + 30) and the copy column fills the hero, its items
   pushed to the bottom. The breadcrumbs take margin-bottom: auto, so
   they sit at the top of the column, 30px under the nav, and the copy
   stays pinned 80px from the bottom exactly as without breadcrumbs.
   Without breadcrumbs the copy is simply pinned to the bottom. */
.rbccm-hero--us-credentials {
  --rbccm-hero-crumb-color: #fff;
}
.rbccm-hero--us-credentials .rbccm-hero__breadcrumbs {
  align-self: stretch;         /* full column width, so the list can sit left */
  margin-bottom: 14px;
}
.rbccm-hero--us-credentials .rbccm-hero__breadcrumb-list {
  justify-content: flex-start;
}
@media (min-width: 992px) {
  .rbccm-hero--us-credentials[data-hero-bg] {
    padding-top: 128px;
  }
  .rbccm-hero--us-credentials[data-hero-bg] .rbccm-hero__container {
    flex: 1 1 auto;
    justify-content: flex-end;
  }
  .rbccm-hero--us-credentials .rbccm-hero__breadcrumbs {
    margin-bottom: auto;
  }
}

/* S+E: navy like its headline, left-aligned. The breadcrumbs are a
   direct child of the section, before .__container (copy + card row),
   30px above it. The section is a centring flex row, so it stacks as a
   column instead (identical without breadcrumbs: the video and blur
   layers are absolute, the container is the only flow child). On
   desktop the breadcrumbs share the row's 1140px cap so they line up
   with the headline. */
.rbccm-hero--strategy-and-economics {
  --rbccm-hero-crumb-color: var(--rbccm-hero-navy);
  flex-direction: column;
}
.rbccm-hero--strategy-and-economics > .rbccm-hero__container {
  align-self: stretch;
  /* Full width. The shared container rule's margin: 0 auto would
     otherwise win over the stretch in this column and shrink the row to
     its content (centred, narrower than the breadcrumbs) when the copy
     is short. */
  width: 100%;
}
.rbccm-hero--strategy-and-economics > .rbccm-hero__breadcrumbs {
  align-self: stretch;
  margin-bottom: 30px;
}
@media (min-width: 992px) {
  .rbccm-hero--strategy-and-economics > .rbccm-hero__breadcrumbs {
    align-self: center;
    max-width: 1140px;
    width: 100%;
  }
}
/* With breadcrumbs (the skin adds --has-breadcrumbs when the field is
   filled) they sit at the top of the hero, 30px under the fixed nav
   (65px below 768, 98px from 768), and the copy + card row stays where
   the design puts it: the top padding shrinks to nav + 30 and the
   breadcrumbs' bottom margin takes up the difference (breadcrumb row =
   20.8px tall: 13px x 160%).
     below 768   padding 95,  row at 171 (95 + 20.8 + 55.2)
     768 - 991   padding 128, row at 178.8 (needs the 30px minimum gap,
                 so the row sits 8px lower than without breadcrumbs)
     992+        padding 128, row at 216 (128 + 20.8 + 67.2)
   Without breadcrumbs nothing here applies. */
.rbccm-hero--strategy-and-economics.rbccm-hero--has-breadcrumbs {
  padding-top: 95px;
}
.rbccm-hero--strategy-and-economics.rbccm-hero--has-breadcrumbs > .rbccm-hero__breadcrumbs {
  margin-bottom: 55.2px;
}
@media (min-width: 768px) {
  .rbccm-hero--strategy-and-economics.rbccm-hero--has-breadcrumbs {
    padding-top: 128px;
  }
  .rbccm-hero--strategy-and-economics.rbccm-hero--has-breadcrumbs > .rbccm-hero__breadcrumbs {
    margin-bottom: 30px;
  }
}
@media (min-width: 992px) {
  .rbccm-hero--strategy-and-economics.rbccm-hero--has-breadcrumbs > .rbccm-hero__breadcrumbs {
    margin-bottom: 67.2px;
  }
}

/* ---- Hero entrance: visible from the first paint ---
   The hero holds the largest text on the page, which is what Largest
   Contentful Paint (LCP) measures. It used to start at opacity 0 and
   wait for rbccm-animate.js to run after the page finished parsing,
   plus animate.css from the CDN, so on mobile the headline showed up
   seconds late and LCP failed. Elements marked data-hero-rise are
   never hidden: CSS alone slides them up 16px as the page first
   paints, with the same stagger as before. No JS involved. */
[data-hero-rise] {
  animation: rbccm-hero-rise 900ms cubic-bezier(0.2, 0.7, 0.2, 1) backwards;
}
[data-hero-rise][data-animate-delay="150"] { animation-delay: 150ms; }
[data-hero-rise][data-animate-delay="300"] { animation-delay: 300ms; }
[data-hero-rise][data-animate-delay="325"] { animation-delay: 325ms; }
[data-hero-rise][data-animate-delay="450"] { animation-delay: 450ms; }
[data-hero-rise][data-animate-delay="600"] { animation-delay: 600ms; }
@keyframes rbccm-hero-rise {
  from { transform: translate3d(0, 16px, 0); }
  to   { transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  [data-hero-rise] { animation: none !important; }
}
