/* =====================================================================
   MBA Western PA — Homepage (2026 refresh)
   Implemented from the Claude Design handoff bundle "MBA Design System".
   Static recreation of the events-led homepage prototype (the prototype's
   medium was React/Babel; this is the production-appropriate static build).

   Tokens + scale come from the bundle's colors_and_type.css, verbatim.
   Section/pixel values match the prototype (1320 container, 120px section
   padding, 1024/640 breakpoints).

   ANNIVERSARY (140th) TOGGLE — single switch:
   The <body> carries class "anniv-on". Anniversary pieces (hero 1886–2026
   lockup, footer 140-seal, and the "since 1886" copy) are tagged .anniv /
   .no-anniv and shown/hidden by that one class. To turn the 140th content
   OFF pending client sign-off, remove "anniv-on" from the <body> tag. That
   is the only edit required. (See .anniv rules at the bottom of this file.)
   ===================================================================== */

:root {
  /* ---- Brand (official primary palette) ---- */
  --mba-orange: #FF6B00;
  --mba-orange-hover: #E06000;  /* AA-safe hover fill for the dark-label primary button (5.04:1 with --text) */
  --mba-orange-dark: #C25000;
  --mba-orange-darker: #A64500;
  --mba-blue: #3886C8;
  --mba-blue-deep: #2C6CA3;  /* AA-safe brand blue for text on white (~5.5:1; plain #3886C8 is 3.88:1) */
  --mba-blue-hover: #23537C;  /* darker blue for the secondary-button hover fill; white label clears AA (~8:1) */
  --black: #000000;

  /* ---- Grounds ---- */
  --bg-dark: #0E1A2B;
  --bg-dark-2: #16263C;
  --bg: #FFFFFF;
  --bg-muted: #F2F3F5;
  --bg-muted-2: #E3E7EC;
  --bg-blue-tint: #F3F7FB;  /* light blue tint used on the Join application band */

  /* ---- Text ---- */
  --text: #14161A;
  --text-muted: #5A626E;
  --text-slate: #41556B;  /* muted slate-blue, dark-blue family, ~7.7:1 on white */
  --text-on-dark: #FFFFFF;
  --text-on-dark-muted: #AEB7C4;

  /* ---- Lines ---- */
  --border: #E4E7EB;
  --border-strong: #C7CDD5;

  /* ---- Special use only ---- */
  --accent-green: #15824D;
  --accent-pink: #D45F7A;
  --accent-yellow: #FFC63B;

  /* ---- Type: Inter (Google Fonts), the locked web type ---- */
  --font: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;

  --weight-regular: 400;
  --weight-medium: 500;
  --weight-semibold: 600;
  --weight-bold: 700;
  --weight-black: 800;

  /* ---- Spacing scale (px) — 4,8,12,16,24,32,48,64,96,128 ---- */
  --space-1: 4px;  --space-2: 8px;  --space-3: 12px; --space-4: 16px;
  --space-6: 24px; --space-8: 32px; --space-12: 48px; --space-16: 64px;
  --space-24: 96px; --space-32: 128px;

  /* ---- Shape ---- */
  --radius-button: 8px;
  --radius-pill: 999px;
  --radius-card: 14px;

  /* ---- Elevation (use sparingly) ---- */
  --shadow-soft: 0 8px 28px rgba(14, 26, 43, 0.10);

  /* ---- Layout ---- */
  --container: 1320px;   /* the homepage prototype uses a 1320 max width */
  --gutter: 40px;
}

/* =====================================================================
   Reset / base
   ===================================================================== */
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; scroll-behavior: smooth; }
body {
  font-family: var(--font);
  color: var(--text);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  line-height: 1.65;
}
img { display: block; max-width: 100%; }
a { color: inherit; }
h1, h2, h3, h4, p { margin: 0; }
button { font: inherit; cursor: pointer; }
ul { margin: 0; padding: 0; list-style: none; }
::selection { background: rgba(56, 134, 200, .22); }

:where(a, button, input):focus-visible {
  outline: 3px solid var(--mba-blue);
  outline-offset: 2px;
  border-radius: 6px;
}

.skip-link {
  position: absolute; left: 16px; top: -120px; z-index: 200;
  background: var(--text); color: #fff; padding: 10px 16px; border-radius: 6px;
  text-decoration: none; transition: top .15s ease;
}
.skip-link:focus { top: 12px; }

.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

/* =====================================================================
   Type roles (from colors_and_type.css)
   ===================================================================== */
.mba-eyebrow {
  font-family: var(--font); font-size: .75rem; font-weight: 600;
  line-height: 1.4; letter-spacing: .09em; text-transform: uppercase;
  color: var(--text-muted); margin: 0;
}
.mba-eyebrow.on-dark { color: var(--text-on-dark-muted); }
.mba-eyebrow .lc { text-transform: none; }  /* keep a single connector word (e.g. "to") lowercase within an uppercase eyebrow */

.container { max-width: calc(var(--container) - 80px); margin: 0 auto; }

/* Section base — generous vertical rhythm, 40px gutters */
.sec { padding: 120px 40px; }
.sec--bg { background: var(--bg); }
.sec--muted { background: var(--bg-muted); }
.sec--dark { background: var(--bg-dark); color: var(--text-on-dark); }

/* =====================================================================
   Icons (inline SVG, Lucide-equivalent line set; inherit currentColor)
   ===================================================================== */
.ico { display: inline-flex; align-items: center; flex: none; }
.ico[hidden] { display: none; }
.ico svg { display: block; stroke: currentColor; fill: none;
  stroke-width: 1.85; stroke-linecap: round; stroke-linejoin: round; }

/* =====================================================================
   Buttons
   ===================================================================== */
.btn {
  font-family: var(--font); font-size: 1rem; font-weight: 600; line-height: 1;
  border-radius: var(--radius-button); padding: 14px 28px;
  border: 1.5px solid transparent; cursor: pointer;
  display: inline-flex; align-items: center; gap: 8px; white-space: nowrap;
  text-decoration: none;
  transition: background .2s ease, color .2s ease, border-color .2s ease, transform .08s ease;
}
.btn:active { transform: scale(0.985); }
/* Primary: bright brand orange with dark ink label = 6.34:1 (AA). Hover deepens
   the fill to its AA-safe limit (#E06000 = 5.04:1; #C25000/#A64500 would fail) on
   the same .2s ease as .btn--outline, plus a subtle scale-up (.08s, crisp) for
   presence. The click press (scale-down) is preserved; focus uses the shared
   ring. No box-shadow or glow anywhere. */
.btn--primary { background: var(--mba-orange); color: var(--text); }
.btn--primary:hover { background: var(--mba-orange-hover); transform: scale(1.015); }
.btn--primary:active { transform: scale(0.985); }
/* Secondary: white with a blue outline + label (the AA-safe --mba-blue-deep,
   matching the document links), inverting to a darker --mba-blue-hover fill with
   a white label on hover (same .08s scale-up as primary, no shadow). For secondary
   actions (e.g. document downloads) so downloads read as blue and orange stays the
   one primary action. Keyboard focus uses the shared blue ring (see base reset). */
.btn--secondary { background: #fff; color: var(--mba-blue-deep); border: 1.6px solid var(--mba-blue-deep); }
.btn--secondary:hover { background: var(--mba-blue-hover); border-color: var(--mba-blue-hover); color: #fff; transform: scale(1.015); }
.btn--secondary:active { transform: scale(0.985); }
.btn--outline { background: #fff; color: var(--mba-orange); border-color: var(--mba-orange); }
.btn--outline:hover { background: var(--mba-orange); color: #fff; }
.btn--ghost { background: transparent; color: var(--text); border-color: var(--text); }
.btn--ghost:hover { border-color: var(--mba-blue); color: var(--mba-blue); }
.btn--ghost.on-dark { color: #fff; border-color: rgba(255,255,255,.5); }
.btn--ghost.on-dark:hover { border-color: #fff; }

/* =====================================================================
   Text link with arrow
   ===================================================================== */
.tlink {
  display: inline-flex; align-items: center; gap: 7px;
  font-size: 1rem; font-weight: 600; cursor: pointer; text-decoration: none;
  color: var(--text); transition: color .2s ease;
}
.tlink .arr { transition: transform .2s ease; }
.tlink:hover { color: var(--mba-blue); }
.tlink:hover .arr { transform: translateX(3px); }
.tlink.on-dark { color: #fff; }
.tlink.on-dark:hover { color: var(--text-on-dark-muted); }

/* =====================================================================
   Header
   ===================================================================== */
.site-header { position: sticky; top: 0; z-index: 50; background: var(--bg); border-bottom: 1px solid var(--border); transition: transform .3s ease; will-change: transform; }
/* Hide-on-scroll: slide the whole header (utility bar + main row) up out of view.
   Sticky stays put; transform avoids layout shift. Toggled by site.js. */
.site-header--hidden { transform: translateY(-100%); }

/* utility row — deep blue-black band */
.util-row { background: var(--bg-dark); }
.util-row__inner {
  display: flex; align-items: center; justify-content: flex-end; gap: 22px;
  padding: 9px 40px; font-size: 13px; color: #fff; max-width: var(--container); margin: 0 auto;
}
.util-link {
  display: inline-flex; align-items: center; gap: 6px; text-decoration: none;
  color: rgba(255,255,255,.82); transition: color .2s ease; min-height: 24px;
}
.util-link:hover { color: var(--mba-blue); }
.util-link .ext { font-size: 11px; opacity: .7; }

/* main row */
.main-row {
  display: flex; align-items: center; gap: 36px; padding: 18px 40px;
  max-width: var(--container); margin: 0 auto;
}
/* Logo never compresses when the row runs short: the link is a non-shrinking
   flex item and the image holds its intrinsic ratio (fixed height, auto width). */
.main-row > a { flex: 0 0 auto; display: inline-flex; }
.logo-main { height: 56px; width: auto; max-width: none; flex-shrink: 0; cursor: pointer; }

.nav-desktop { display: flex; align-items: center; gap: 26px; margin-left: 8px; }
.nav-item { position: relative; }
.nav-item__link {
  position: relative; display: inline-flex; align-items: center; gap: 5px;
  font-size: 15.5px; font-weight: 500; color: var(--bg-dark); cursor: pointer;
  text-decoration: none; transition: color .2s ease; padding: 4px 0 8px;
  white-space: nowrap;
}
.nav-item__link .chev { opacity: .6; transition: transform .18s ease; }
.nav-item__bar {
  position: absolute; left: 0; right: 0; bottom: 0; height: 2px; border-radius: 2px;
  background: var(--mba-orange); opacity: 0; transition: opacity .15s ease;
}
.nav-item:hover .nav-item__link { color: var(--mba-blue); }
.nav-item:hover .nav-item__bar,
.nav-item--active .nav-item__bar { opacity: 1; }
.nav-item--active .nav-item__link { font-weight: 700; color: var(--bg-dark); }

/* desktop dropdown (CSS hover/focus) */
.nav-drop {
  position: absolute; top: 100%; left: -12px; padding-top: 12px;
  opacity: 0; visibility: hidden; transform: translateY(-6px);
  transition: opacity .18s ease, transform .18s ease; z-index: 60;
}
.nav-item:hover .nav-drop,
.nav-item:focus-within .nav-drop { opacity: 1; visibility: visible; transform: translateY(0); }
.nav-item:hover .nav-item__link .chev { transform: rotate(180deg); }
.nav-drop__panel {
  background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius-card);
  box-shadow: var(--shadow-soft); padding: 10px; min-width: 238px;
  display: flex; flex-direction: column; gap: 2px;
}
.drop-link {
  display: flex; align-items: center; gap: 8px; padding: 9px 12px; border-radius: 8px;
  font-size: 14.5px; font-weight: 500; text-decoration: none; cursor: pointer; white-space: nowrap;
  color: var(--text); transition: background .15s ease, color .15s ease;
}
.drop-link:hover { color: var(--mba-blue); background: rgba(56,134,200,.10); }
.drop-link .ext { font-size: 11px; margin-left: auto; padding-left: 14px; opacity: .6; }
.nav-drop__note {
  font-size: 10px; letter-spacing: .08em; color: var(--text-muted);
  padding: 9px 12px 3px; margin-top: 4px; border-top: 1px solid var(--border);
}

.nav-divider { width: 1px; align-self: stretch; background: var(--border); margin: 6px 4px; }
.search-link {
  display: inline-flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 500;
  color: var(--text-muted); text-decoration: none; padding: 4px 0 8px; transition: color .15s ease; cursor: pointer;
  white-space: nowrap;
}
.search-link:hover { color: var(--mba-blue); }

/* Join button block holds its size; only nav spacing flexes when the row tightens. */
.header-actions { margin-left: auto; display: flex; align-items: center; gap: 14px; flex-shrink: 0; }
.header-actions .btn { white-space: nowrap; }
.burger {
  display: none; align-items: center; justify-content: center; width: 42px; height: 42px;
  background: transparent; border: 1.5px solid var(--bg-dark); border-radius: var(--radius-button); color: var(--bg-dark);
}

/* mobile menu */
.mobile-menu {
  display: none; border-top: 1px solid var(--border); background: var(--bg);
  max-height: calc(100vh - 120px); overflow-y: auto;
}
.mobile-menu.open { display: block; }
.mm-search {
  display: flex; align-items: center; gap: 12px; background: var(--bg-dark);
  padding: 18px 22px; text-decoration: none; color: #fff;
}
.mm-search .ico:first-child { color: var(--mba-blue); }
.mm-search__label { font-size: 16px; font-weight: 600; }
.mm-search .chev-r { margin-left: auto; color: var(--mba-blue); }
.mm-group { padding: 18px 22px 6px; }
.mm-group--services { padding: 10px 22px 24px; }
.mm-group__label { color: var(--mba-blue-deep); margin-bottom: 8px; }
.mm-nav { display: flex; flex-direction: column; }
.mm-item { border-bottom: 1px solid var(--border); }
.mm-item__row {
  display: flex; align-items: center; justify-content: space-between; width: 100%;
  padding: 14px 4px; background: transparent; border: 0; cursor: pointer; text-align: left;
  font-size: 17px; font-weight: 600; color: var(--bg-dark); font-family: var(--font); text-decoration: none;
}
.mm-item__row .chev { color: var(--mba-blue); transition: transform .2s ease; }
.mm-item.open .mm-item__row .chev { transform: rotate(180deg); }
/* Split row: the label links to the parent page, the chev button toggles .mm-sub. */
.mm-item__row--split { padding: 0; }
.mm-item__link {
  flex: 1 1 auto; padding: 14px 4px;
  font-size: 17px; font-weight: 600; color: var(--bg-dark);
  font-family: var(--font); text-decoration: none;
}
.mm-item__link:hover { color: var(--mba-blue); }
.mm-toggle {
  flex: 0 0 auto; align-self: stretch;
  display: flex; align-items: center; justify-content: center;
  padding: 14px 8px; background: transparent; border: 0; cursor: pointer; color: var(--mba-blue);
}
.mm-sub { display: none; flex-direction: column; padding: 0 0 12px; }
.mm-item.open .mm-sub { display: flex; }
.mm-sublink {
  display: flex; align-items: center; gap: 8px; padding: 10px 12px 10px 18px; font-size: 15px;
  text-decoration: none; cursor: pointer; border-radius: 8px; color: var(--text-slate);
  transition: color .15s ease, background .15s ease;
}
.mm-sublink:hover { color: var(--mba-blue); background: rgba(56,134,200,.10); }
.mm-sublink .ext { font-size: 11px; margin-left: auto; color: var(--mba-blue); }
.mm-ext {
  display: flex; align-items: center; gap: 10px; padding: 12px 4px; font-size: 15.5px; font-weight: 500;
  text-decoration: none; cursor: pointer; color: var(--text); transition: color .15s ease;
}
.mm-ext:hover { color: var(--mba-blue); }
.mm-ext .ext { font-size: 12px; margin-left: auto; color: var(--mba-blue); }

/* =====================================================================
   HERO — dark, full-bleed photo + gradient, anniversary lockup
   ===================================================================== */
.hero {
  position: relative; min-height: 84vh; display: flex; align-items: flex-end;
  overflow: hidden; background: var(--bg-dark);
}
.hero__bg { position: absolute; inset: -10% 0; will-change: transform; }
.hero__bg img { width: 100%; height: 100%; object-fit: cover; }
.hero__scrim {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(14,26,43,.66) 0%, rgba(14,26,43,.20) 34%, rgba(14,26,43,.34) 58%, rgba(14,26,43,.90) 100%);
}
.hero__inner {
  position: relative; z-index: 2; width: 100%; max-width: var(--container);
  margin: 0 auto; padding: 0 40px 72px; color: #fff;
}
.hero__col { max-width: 820px; }
.hero__anniv { display: inline-flex; align-items: center; gap: 14px; margin-bottom: 22px; }
.hero__anniv .mba-eyebrow { color: #fff; }
.hero__anniv .rule { width: 28px; height: 1px; background: rgba(255,255,255,.4); }
.hero__title {
  font-size: clamp(3rem, 6vw, 5.4rem); font-weight: 800; line-height: 1.0;
  letter-spacing: -0.03em; margin: 0; text-wrap: balance;
}
.hero__lede {
  font-size: 1.3rem; line-height: 1.55; color: rgba(255,255,255,.88);
  margin: 24px 0 0; max-width: 46ch;
}
.hero__cta { display: flex; align-items: center; gap: 26px; margin-top: 36px; flex-wrap: wrap; }

/* =====================================================================
   EVENTS — featured card + feed list (split layout)
   ===================================================================== */
.sec-head {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 24px; margin-bottom: 48px; flex-wrap: wrap;
}
.sec-head__title { font-size: clamp(2.2rem, 3.4vw, 3rem); font-weight: 700; line-height: 1.1; letter-spacing: -0.02em; margin: 14px 0 10px; }
.sec-head__lede { font-size: 1.1875rem; line-height: 1.5; color: var(--text-muted); margin: 0; max-width: 52ch; }

.cat-tag { color: var(--mba-blue); letter-spacing: .1em; }

.events-grid {
  display: grid; grid-template-columns: minmax(0,1.42fr) minmax(0,1fr);
  gap: 32px; align-items: stretch;
}

/* Featured event card */
.feat {
  position: relative; border-radius: var(--radius-card); overflow: hidden;
  min-height: 540px; height: 100%; display: flex;
  box-shadow: 0 12px 32px rgba(14,26,43,.12); transition: box-shadow .35s ease;
}
.feat:hover { box-shadow: 0 26px 56px rgba(14,26,43,.22); }
.feat__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
.feat:hover .feat__img { transform: scale(1.04); }
.feat__scrim { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(14,26,43,.10) 30%, rgba(14,26,43,.62) 66%, rgba(14,26,43,.92) 100%); }
.feat__body { position: relative; margin-top: auto; padding: 40px 42px; color: #fff; width: 100%; }
.feat__meta { display: inline-flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.feat__meta .rule { width: 22px; height: 1px; background: rgba(255,255,255,.45); }
.feat__meta .mba-eyebrow.lead { color: #fff; }
.feat__meta .mba-eyebrow.date { color: rgba(255,255,255,.82); }
.feat__title { font-size: clamp(1.9rem, 2.6vw, 2.6rem); font-weight: 700; line-height: 1.08; letter-spacing: -0.02em; margin: 0 0 12px; max-width: 15ch; text-wrap: balance; }
.feat__loc { display: inline-flex; align-items: center; gap: 8px; color: rgba(255,255,255,.85); font-size: 15.5px; margin-bottom: 6px; }
.feat__line { font-size: 1.0625rem; line-height: 1.5; color: rgba(255,255,255,.85); margin: 8px 0 26px; max-width: 44ch; }
.feat__actions { display: flex; align-items: center; gap: 26px; flex-wrap: wrap; }

/* Feed list (right column) */
.feed { display: flex; flex-direction: column; justify-content: center; }
.feed-row {
  display: grid; grid-template-columns: 1fr auto; gap: 20px; align-items: center;
  padding: 22px 4px; border-top: 1px solid var(--border); cursor: pointer; text-decoration: none; color: inherit;
}
.feed-row:first-child { border-top: none; }
.feed-row__tagline { display: flex; align-items: center; gap: 12px; margin-bottom: 9px; }
.feed-row__soon { font-size: 12px; font-weight: 600; color: var(--text-muted); }
.feed-row__title { font-size: 1.3rem; font-weight: 600; line-height: 1.2; letter-spacing: -0.01em; margin: 0 0 8px; transition: color .2s ease; }
.feed-row:hover .feed-row__title { color: var(--mba-blue); }
.feed-row__meta { display: flex; flex-wrap: wrap; gap: 4px 18px; color: var(--text-muted); font-size: 14.5px; }
.feed-row__meta span { display: inline-flex; align-items: center; gap: 7px; }
.feed-row__reg { display: inline-flex; align-items: center; gap: 6px; font-size: 15px; font-weight: 600; color: var(--text); transition: color .2s ease; white-space: nowrap; }
.feed-row:hover .feed-row__reg { color: var(--mba-blue); }
.feed-row__reg .arr { transition: transform .2s ease; }
.feed-row:hover .feed-row__reg .arr { transform: translateX(3px); }
.feed__all { border-top: 1px solid var(--border); padding-top: 22px; margin-top: 2px; }

/* =====================================================================
   STATS — dark, "stack" layout (headline left, stat rows right)
   ===================================================================== */
.stats { background: var(--bg-dark); padding: 104px 40px; }
.stats__stack { display: grid; grid-template-columns: minmax(0,5fr) minmax(0,7fr); gap: 80px; align-items: center; }
.stats__title { font-size: clamp(2rem, 3.2vw, 2.9rem); font-weight: 700; line-height: 1.1; letter-spacing: -0.02em; margin: 16px 0 0; max-width: 16ch; color: var(--text-on-dark); }
.stat-row { display: grid; grid-template-columns: minmax(0,auto) 1fr; gap: 28px; align-items: center; padding: 26px 0; border-top: 1px solid rgba(255,255,255,.16); }
.stat-row:first-child { border-top: none; }
.stat-row__num { font-size: clamp(2.8rem, 5vw, 4rem); font-weight: 800; line-height: 1; letter-spacing: -0.03em; color: var(--mba-blue); font-variant-numeric: tabular-nums; width: 4ch; }
.stat-row__label { font-size: 16px; color: var(--text-on-dark-muted); line-height: 1.5; }

/* =====================================================================
   PROGRAMS — lead photo card + ranked mini-row list
   ===================================================================== */
.programs__head { max-width: 720px; margin-bottom: 52px; }
.programs__title { font-size: clamp(2.2rem, 3.4vw, 3rem); font-weight: 700; line-height: 1.08; letter-spacing: -0.02em; margin: 14px 0 12px; max-width: 18ch; }
.programs__lede { font-size: 1.1875rem; line-height: 1.55; color: var(--text-muted); margin: 0; max-width: 52ch; }
.programs__grid { display: grid; grid-template-columns: minmax(0,1.25fr) minmax(0,1fr); gap: 48px; align-items: stretch; }

.lead-prog {
  position: relative; border-radius: var(--radius-card); overflow: hidden;
  min-height: 420px; height: 100%; display: flex; cursor: pointer;
  box-shadow: 0 10px 28px rgba(14,26,43,.10); transition: box-shadow .35s ease; text-decoration: none; color: #fff;
}
.lead-prog:hover { box-shadow: 0 24px 52px rgba(14,26,43,.20); }
.lead-prog__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
.lead-prog:hover .lead-prog__img { transform: scale(1.04); }
.lead-prog__scrim { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(14,26,43,.03) 0%, rgba(14,26,43,.32) 26%, rgba(14,26,43,.6) 42%, rgba(14,26,43,.82) 62%, rgba(14,26,43,.95) 100%); }
.lead-prog__body { position: relative; margin-top: auto; padding: 36px 38px; }
.lead-prog__body .mba-eyebrow { color: rgba(255,255,255,.82); }
.lead-prog__title { font-size: clamp(1.7rem, 2.4vw, 2.2rem); font-weight: 700; line-height: 1.1; letter-spacing: -0.02em; margin: 12px 0 10px; max-width: 16ch; }
.lead-prog__line { font-size: 1.0625rem; line-height: 1.5; color: rgba(255,255,255,.85); margin: 0 0 18px; max-width: 46ch; }

.mini-list { height: 100%; display: flex; flex-direction: column; justify-content: space-between; }
.mini-row { padding: 26px 0; border-top: 1px solid var(--border); cursor: pointer; text-decoration: none; color: inherit; display: block; }
.mini-row__tagline { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.mini-row__dot { width: 9px; height: 9px; border-radius: 999px; }
.mini-row__title { font-size: 1.35rem; font-weight: 600; line-height: 1.18; letter-spacing: -0.01em; margin: 0 0 8px; color: var(--text); transition: color .2s ease; display: inline-flex; align-items: center; gap: 8px; }
.mini-row:hover .mini-row__title { color: var(--mba-blue); }
.mini-row__title .ext { font-size: 13px; color: var(--text-muted); }
.mini-row__blurb { font-size: 15.5px; line-height: 1.55; color: var(--text-muted); margin: 0; max-width: 44ch; }

/* =====================================================================
   FIND A CONTRACTOR — text + parallax photo
   ===================================================================== */
.find { background: var(--bg-muted); padding: 104px 40px; }
.find__grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.05fr); gap: 56px; align-items: center; }
.find__title { font-size: clamp(2rem, 3.2vw, 2.8rem); font-weight: 700; line-height: 1.1; letter-spacing: -0.02em; margin: 16px 0 0; max-width: 18ch; }
.find__lede { font-size: 1.1875rem; line-height: 1.6; color: var(--text-muted); margin: 20px 0 30px; max-width: 48ch; }
.find__media { border-radius: var(--radius-card); overflow: hidden; height: 460px; }
.find__media-inner { height: 120%; margin-top: -10%; will-change: transform; }
.find__media img { width: 100%; height: 100%; object-fit: cover; }

/* =====================================================================
   JOIN BAND — dark, parallax skyline
   ===================================================================== */
.join { position: relative; overflow: hidden; background: var(--bg-dark); color: #fff; }
.join__bg { position: absolute; inset: -12% 0; will-change: transform; }
.join__bg img { width: 100%; height: 100%; object-fit: cover; }
.join__scrim { position: absolute; inset: 0; background: linear-gradient(100deg, rgba(14,26,43,.94) 0%, rgba(14,26,43,.85) 30%, rgba(14,26,43,.40) 52%, rgba(14,26,43,.16) 100%); }
.join__inner { position: relative; z-index: 2; max-width: var(--container); margin: 0 auto; padding: 120px 40px; }
.join__col { max-width: 720px; }
.join__title { font-size: clamp(2.4rem, 4vw, 3.6rem); font-weight: 800; line-height: 1.04; letter-spacing: -0.025em; margin: 18px 0 0; max-width: 18ch; }
.join__lede { font-size: 1.2rem; line-height: 1.6; color: rgba(255,255,255,.86); margin: 22px 0 34px; max-width: 48ch; }
.join__cta { display: flex; align-items: center; gap: 26px; flex-wrap: wrap; }

/* =====================================================================
   FOOTER
   ===================================================================== */
.site-footer { background: var(--bg-dark); color: var(--text-on-dark); }
.footer-grid { max-width: var(--container); margin: 0 auto; padding: 72px 40px 56px; display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 48px; }
.footer__logo { height: 56px; width: auto; }
.footer__tagline { color: var(--text-on-dark-muted); font-size: 14px; font-style: italic; line-height: 1.6; margin-top: 16px; max-width: 260px; }
.footer__addr { color: var(--text-on-dark-muted); font-size: 13.5px; line-height: 1.6; margin-top: 16px; font-style: normal; }
.footer__contact { color: var(--text-on-dark-muted); font-size: 13.5px; line-height: 1.6; margin-top: 12px; }
.footer__contact a { color: inherit; text-decoration: none; }
.footer__contact a:hover { color: var(--mba-blue); }
.footer__social { display: flex; gap: 18px; margin-top: 24px; }
.social-ico { display: inline-flex; color: rgba(255,255,255,.66); transition: color .2s ease; }
.social-ico:hover { color: var(--mba-blue); }
.social-ico svg { fill: currentColor; }
/* Legal links live in the dark footer (white via .footer-link), not the white bar */
.footer__legal { display: flex; gap: 20px; margin-top: 22px; }

.footer-col__label { color: var(--mba-blue); margin-bottom: 16px; }
.footer-links { display: flex; flex-direction: column; gap: 11px; align-items: flex-start; }
.footer-link { color: #fff; font-size: 14.5px; text-decoration: none; cursor: pointer; opacity: .86; transition: opacity .2s ease, color .2s ease; display: inline-flex; align-items: center; gap: 6px; }
.footer-link:hover { opacity: 1; color: var(--mba-blue); }
.footer-link .ext { font-size: 11px; opacity: .6; }

.footer__divider { height: 6px; background: var(--mba-blue); }
.subfooter { background: #fff; }
.subfooter__inner { max-width: var(--container); margin: 0 auto; padding: 20px 40px; display: flex; align-items: center; justify-content: space-between; gap: 28px; flex-wrap: wrap; }
.subfooter__left { display: flex; align-items: center; gap: 20px; color: var(--text-muted); font-size: 13px; }
.subfooter__left a { color: var(--text-muted); text-decoration: none; cursor: pointer; }
.subfooter__left a:hover { color: var(--mba-blue); }
.subfooter__logos { display: flex; align-items: center; gap: 36px; flex-wrap: wrap; }
.subfooter__logos img { display: block; width: auto; }
.logo-agc { height: 34px; }
.logo-cap { height: 26px; }
.logo-seal { height: 48px; width: 48px; }

/* =====================================================================
   Animation (Reveal entrance + Ken-Burns); reduced-motion safe
   ===================================================================== */
@keyframes mbaIn { from { opacity: 0; transform: translateY(26px); } to { opacity: 1; transform: none; } }
@keyframes mbaKen { from { transform: scale(1.06); } to { transform: scale(1.18); } }
.reveal { opacity: 1; animation: mbaIn .85s cubic-bezier(.22,.61,.36,1) both; }
/* Scroll-triggered variant of the same entrance: site.js arms it (hidden) only
   when JS + motion are on, then adds .is-revealed as it enters the viewport.
   With no JS or under reduced motion it stays visible. */
.reveal-scroll.reveal-armed { opacity: 0; }
.reveal-scroll.reveal-armed.is-revealed { opacity: 1; animation: mbaIn .85s cubic-bezier(.22,.61,.36,1) both; }
.hero__bg img { animation: mbaKen 22s ease-out forwards; }

@media (prefers-reduced-motion: reduce) {
  html, body { scroll-behavior: auto; }
  .reveal { animation: none !important; }
  .reveal-scroll.reveal-armed { opacity: 1 !important; }
  .reveal-scroll.is-revealed { animation: none !important; }
  .hero__bg img { animation: none !important; }
  [data-parallax] { transform: none !important; }
  /* Hide-on-scroll is disabled in JS for reduced motion; this is a belt-and-suspenders
     guarantee that the header stays put and visible. */
  .site-header { transition: none !important; }
  .site-header--hidden { transform: none !important; }
}

/* =====================================================================
   ANNIVERSARY (140th) — single toggle via body.anniv-on
   .anniv  = shown only when anniversary is ON
   .no-anniv = shown only when anniversary is OFF
   Remove "anniv-on" from <body> to switch all 140th content off.
   ===================================================================== */
.no-anniv { display: none; }
body:not(.anniv-on) .anniv { display: none !important; }
body.anniv-on .no-anniv { display: none !important; }
body:not(.anniv-on) .no-anniv { display: inline; }

/* =====================================================================
   RESPONSIVE — breakpoints match the prototype (1024 / 640)
   ===================================================================== */
/* Below 1024px the horizontal nav collapses to the hamburger; the full row only
   shows at 1024px and up (matches the min-width rule below, no dead 1024px gap). */
@media (max-width: 1023.98px) {
  .util-row { display: none; }
  .nav-desktop { display: none; }
  .burger { display: inline-flex; }
  .sec { padding-left: 32px; padding-right: 32px; }
  .hero__inner { padding-left: 32px; padding-right: 32px; }
  .join__inner { padding-left: 32px; padding-right: 32px; }
  .stats, .find { padding-left: 32px; padding-right: 32px; }
  .stats__stack, .programs__grid, .find__grid { grid-template-columns: 1fr; gap: 44px; }
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 40px; }
}
/* Tighten desktop nav spacing in the 1024–1280px range so every item fits on one
   row without wrapping or overflow. Only the nav gaps and link padding flex here;
   the logo and Join button keep their size (set above). */
@media (min-width: 1024px) and (max-width: 1280px) {
  .main-row { gap: 22px; padding-left: 28px; padding-right: 28px; }
  .nav-desktop { gap: 16px; margin-left: 0; }
  .nav-item__link { font-size: 15px; }
  .nav-divider { margin-left: 2px; margin-right: 2px; }
}
@media (min-width: 1024px) {
  .mobile-menu { display: none !important; }
  /* Larger partner logos in the white bar (desktop only). All three scaled ~1.6x
     from base, keeping their 34/26/48 proportion and aspect ratios; nowrap holds
     them on one row, the 44px gap keeps clear space between each, align-items
     centers them. They stay right-aligned opposite the copyright via the inner's
     space-between. Row (AGC 108 + CAP ~210 + seal 77 + two 44px gaps = ~483px)
     clears the right-side budget even at a 1025px viewport. */
  .subfooter__logos { flex-wrap: nowrap; gap: 44px; }
  .logo-agc { height: 54px; }
  .logo-cap { height: 42px; }
  .logo-seal { height: 77px; width: auto; }
  /* Featured event title holds on one line on desktop; the 15ch base cap and
     balance wrap are for narrower viewports only. */
  .feat__title { max-width: none; white-space: nowrap; text-wrap: nowrap; }
}
@media (max-width: 640px) {
  .main-row { padding-left: 20px; padding-right: 20px; gap: 12px; }
  .logo-main { height: 42px; }
  .header-actions .btn { padding: 11px 16px; font-size: 14px; }
  .sec { padding-top: 64px; padding-bottom: 64px; padding-left: 22px; padding-right: 22px; }
  .stats, .find { padding-top: 64px; padding-bottom: 64px; padding-left: 22px; padding-right: 22px; }
  .hero { min-height: 72vh; align-items: center; }
  /* Center the hero copy block vertically on phones with balanced space above
     and below; symmetric padding also keeps it clear of the sticky header if
     the headline wraps tall. Tablet/desktop keep flex-end (set on .hero). */
  .hero__inner { padding: 56px 22px; }
  .hero__cta { flex-direction: column; align-items: stretch; gap: 16px; }
  .hero__cta > .btn { width: 100%; justify-content: center; }
  .events-grid { grid-template-columns: 1fr; gap: 24px; }
  /* Stack event rows on phones: details (category, title, date, location) take
     the full width so the title breaks naturally, and Register drops to its own
     line below. Tablet/desktop keep the 1fr/auto side-by-side grid. */
  .feed-row { grid-template-columns: 1fr; gap: 12px; align-items: start; }
  .stats__stack, .programs__grid, .find__grid { gap: 28px; }
  /* Find-a-member CTA: full width of its column on phones (desktop stays
     content-width). 44px+ tap target comes from the base .btn padding. */
  .find .btn { width: 100%; justify-content: center; }
  .join__inner { padding: 72px 22px; }
  /* Vertical scrim on phones: dark pools full-width at the bottom and fades
     upward so the dusk skyline reads at the top, matching the hero's 180deg
     direction. Lower stops stay >=.85 so white copy and buttons clear WCAG AA. */
  .join__scrim { background: linear-gradient(180deg, rgba(14,26,43,.28) 0%, rgba(14,26,43,.52) 32%, rgba(14,26,43,.85) 66%, rgba(14,26,43,.96) 100%); }
  .footer-grid { grid-template-columns: 1fr; gap: 40px; }
  /* Align the footer's left/right edges with the rest of the page on phones.
     The footer kept the 40px desktop gutter while the header logo (.main-row)
     drops to 20px here, so footer content sat inset further than everything
     above it. Match the header's 20px gutter (max-width is already --container,
     and desktop/tablet already share the header's 40px, so only mobile differs). */
  .footer-grid { padding-left: 20px; padding-right: 20px; }
  .subfooter__inner { flex-direction: column; align-items: flex-start; gap: 16px; padding-left: 20px; padding-right: 20px; }
  /* Logos: one row (nowrap), scaled to fill the width. flex-grow matches each
     logo's natural display width (AGC 2:1, CAP ~5:1, seal 1:1 -> 34:65:24) with
     flex-basis 0, so the three keep their 34/26/48 height proportion, hold their
     aspect ratios (height:auto), grow together as the viewport widens, and stay
     vertically centered (align-items:center from the base). The 16px gap keeps a
     clear space between each; min-width:0 lets them shrink to fit at 320px. */
  .subfooter__logos { flex-wrap: nowrap; gap: 16px; width: 100%; }
  .subfooter__logos img { min-width: 0; height: auto; }
  .logo-agc { flex: 34 1 0; height: auto; }
  .logo-cap { flex: 65 1 0; height: auto; }
  .logo-seal { flex: 24 1 0; width: auto; height: auto; }
  .feat__body, .lead-prog__body { padding-left: 26px; padding-right: 26px; }
  /* Featured-event eyebrow: stack on phones so the label and date never overlap.
     Label on its own line, full date directly below, both flush left; each stays
     on one line (no "FEATURED"/"EVENT" or "OCT 23"/"2026" breaks). The dash only
     reads inline, so it is hidden here and kept on desktop. */
  .feat__meta { flex-direction: column; align-items: flex-start; gap: 4px; }
  .feat__meta .rule { display: none; }
  .feat__meta .mba-eyebrow.lead,
  .feat__meta .mba-eyebrow.date { white-space: nowrap; }
  /* Copy reads over the photo: the body is already bottom-anchored (margin-top
     auto), so strengthen the bottom-up scrim like desktop but ramped darker,
     since the copy sits higher relative to the taller mobile card. The eyebrow
     (~26% down) lands on ~.64 ground (~5:1 with white); headline, location,
     description, and buttons below sit on progressively darker ground. */
  .feat__scrim { background: linear-gradient(180deg, rgba(14,26,43,.32) 0%, rgba(14,26,43,.64) 26%, rgba(14,26,43,.84) 54%, rgba(14,26,43,.96) 100%); }
  /* Actions: Register (content-width orange) and Event details share one row
     when they fit (~390px+) and wrap to stack with Register on top at 320px.
     Both keep a 44px tap height; the text link gets a 44px floor here. */
  .feat__actions { gap: 16px; }
  .feat__actions .tlink { min-height: 44px; }
  /* Location: top-align the pin with the first line when the address wraps,
     instead of centering it across both lines. */
  .feat__loc { align-items: flex-start; }
  .feat__loc .ico { margin-top: 2px; }
  /* --- Mobile footer only: tap targets + rhythm. Order, colors, and the type
     family are unchanged. --- */
  /* Social: a tight, left-aligned cluster. Each icon is a 44px-tall tap target,
     36px wide (24px glyph + 6px padding each side); rows touch (no overlap) so
     the glyphs sit ~12px apart instead of spread across the row. The -6px pull
     lines the first glyph up with the gutter. A true 44x44 box would force
     ~20px glyph gaps or overlapping targets, so width is 36px (well above the
     WCAG 2.5.8 24px minimum) to keep the cluster tight as asked. */
  .footer__social { gap: 0; margin-left: -6px; flex-wrap: nowrap; }
  .social-ico { height: 44px; padding: 0 6px; align-items: center; justify-content: center; }
  .social-ico svg { width: 24px; height: 24px; }
  /* Links: one step larger (14.5 -> 16px) for readability; the 44px tap height
     comes from padding plus a floor, not from line spacing between rows. */
  .footer-links { gap: 0; }
  .footer-link { font-size: 16px; min-height: 44px; padding-top: 11px; padding-bottom: 11px; }
  /* Group hierarchy: the label hugs its own links (8px below it) while the 40px
     grid gap above each group (set on .footer-grid) separates the groups, so
     each label reads as belonging to the list beneath it. */
  .footer-col__label { margin-bottom: 8px; }
}

/* =====================================================================
   ABOUT PAGE (interior) — built on the shared tokens/components above.
   No new tokens, no new stylesheet. Eyebrows reuse .mba-eyebrow; the
   closing band reuses the .join band; count-up reuses [data-count] in
   site.js. Section padding/gutters come from .sec / .sec--muted /
   .sec--dark. These classes only add the About-specific layouts.
   ===================================================================== */

/* Page header: deep blue-black ground, type left, image right (asymmetric) */
.about-hero { background: var(--bg-dark); color: #fff; }
.about-hero__grid {
  max-width: var(--container); margin: 0 auto; padding: 96px 40px;
  display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.15fr);
  gap: 56px; align-items: stretch;
}
/* Text-only dark hero (no image): one full-width column so the title and intro
   span the container instead of being squeezed into the left grid column. */
.about-hero__grid--solo { grid-template-columns: 1fr; }
.about-hero__col { display: flex; flex-direction: column; justify-content: center; }
.about-hero__title {
  font-size: clamp(2.6rem, 5vw, 4.4rem); font-weight: 800; line-height: 1.04;
  letter-spacing: -0.03em; margin: 20px 0 0; color: #fff; text-wrap: balance;
}
/* Optional answer-first dek paragraph under the dark-hero H1 (About, Safety). */
.about-hero__dek { font-size: 1.2rem; line-height: 1.6; color: var(--text-on-dark-muted); margin-top: 1.5rem; max-width: 52ch; text-wrap: pretty; }
.about-hero__img { min-height: 380px; border-radius: var(--radius-card); overflow: hidden; }
.about-hero__img img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* Two-column editorial stack (Our vision, Who we are) */
.about-stack {
  max-width: var(--container); margin: 0 auto;
  display: grid; grid-template-columns: minmax(0,5fr) minmax(0,7fr);
  gap: 72px; align-items: stretch;
}
.about-stack--muted { gap: 64px; }
.about-stack__title {
  font-size: clamp(1.6rem, 2.6vw, 2.2rem); font-weight: 700; line-height: 1.2;
  letter-spacing: -0.015em; margin: 16px 0 0; max-width: 20ch;
}
.about-vision__col { display: grid; grid-template-rows: auto 1fr; height: 100%; }

/* Editorial image panels (object-fit cover, card corners) */
.about-figure { position: relative; margin-top: 34px; border-radius: var(--radius-card); overflow: hidden; min-height: 220px; }
.about-figure--tall { margin-top: 0; height: 100%; min-height: 460px; }
.about-figure img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }

/* Our vision: faded index number + label + blurb (editorial numbered list) */
.vision-row { display: grid; grid-template-columns: minmax(0,auto) 1fr; gap: 28px; align-items: start; padding: 26px 0; border-top: 1px solid var(--border); }
.vision-row:first-child { border-top: none; }
/* Oversized index number, top-aligned to the first line of its heading. Uses the
   same --mba-blue (#3886C8) as the stats-band numerals. At this display size
   (>=44px, weight 800) it is large text, so 3:1 applies and #3886C8 clears it
   (3.88:1 on white). No orange (reserved for primary actions). line-height:1 +
   the heading's tightened 1.2 line-height keep the two tops aligned. */
.vision-row__num {
  font-size: clamp(2.8rem, 4.5vw, 4rem); font-weight: 800; line-height: 1; letter-spacing: -0.03em;
  color: var(--mba-blue); font-variant-numeric: tabular-nums; width: 2.4ch;
}
.vision-row__label { font-size: clamp(1.35rem, 2vw, 1.75rem); font-weight: 600; line-height: 1.2; letter-spacing: -0.01em; color: var(--text); }
.vision-row__blurb { font-size: 1.0625rem; line-height: 1.6; color: var(--text-muted); margin: 8px 0 0; max-width: 46ch; }

/* Who we are: narrative + AGC link (blue text on white uses the AA-safe deep blue) */
.about-narrative__title { font-size: clamp(1.7rem, 2.6vw, 2.3rem); font-weight: 700; line-height: 1.16; letter-spacing: -0.02em; margin: 16px 0 22px; max-width: 18ch; }
.about-prose { max-width: 64ch; }
.about-prose p { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 0; }
.about-prose p + p { margin-top: 20px; }
.about-link { color: var(--mba-blue-deep); text-decoration: none; font-weight: 600; }
.about-link:hover { text-decoration: underline; }

/* Key figures band: blue numerals on the dark ground (homepage stats treatment) */
.figures { max-width: var(--container); margin: 0 auto; }
.figures__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 28px; margin-top: 36px; }
.figure { padding-left: 28px; border-left: 1px solid rgba(255,255,255,.16); }
.figure__num { font-size: clamp(2.6rem, 4vw, 3.6rem); font-weight: 800; line-height: 1; letter-spacing: -0.03em; color: var(--mba-blue); font-variant-numeric: tabular-nums; }
.figure__label { font-size: 15.5px; color: var(--text-on-dark-muted); line-height: 1.45; margin-top: 14px; max-width: 22ch; }

/* Closing band statement (reuses the .join band markup) */
.about-closing__text { font-size: clamp(1.4rem, 2.4vw, 1.9rem); font-weight: 600; line-height: 1.4; letter-spacing: -0.015em; color: #fff; margin: 0; max-width: 44ch; }
.about-closing__cta { margin-top: 30px; }

/* About responsive — mirrors the homepage breakpoints (1024 / 640) */
@media (max-width: 1024px) {
  .about-hero__grid { grid-template-columns: 1fr; gap: 28px; padding-left: 32px; padding-right: 32px; }
  .about-hero__img { min-height: 0; height: 300px; }
  .about-stack { grid-template-columns: 1fr; gap: 44px; }
  .about-figure { min-height: 0; height: 320px; }
  .about-figure--tall { min-height: 0; height: 360px; }
  .figures__grid { grid-template-columns: repeat(2, 1fr); gap: 36px 28px; }
}
@media (max-width: 640px) {
  .about-hero__grid { padding: 56px 22px; }
  .about-hero__img { height: 240px; }
  .about-stack { gap: 30px; }
  .about-figure { height: 260px; }
  .about-figure--tall { height: 280px; }
  .figures__grid { grid-template-columns: repeat(2, 1fr); gap: 32px 22px; }
}

/* =====================================================================
   JOIN MBA PAGE (interior, join.html) — built on the shared tokens and
   components above. Reuses .sec / .sec--bg / .sec--dark / .sec--muted,
   .container, .mba-eyebrow, .btn, .tlink. Adds only Join-specific section
   layout. The membership application FORM and its reusable form components
   are added in a later step; this covers the opening, the dark "includes"
   band (the footer's label-and-column treatment), the national affiliation
   row, and the application section's intro + form slot.
   ===================================================================== */

/* Opening — eyebrow/headline/lede/CTA left, warm event photo right
   (light, asymmetric: photo column slightly wider). */
.join-intro__grid {
  display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.1fr);
  gap: 56px; align-items: center;
}
.join-intro__title {
  font-size: clamp(2.4rem, 4.4vw, 3.7rem); font-weight: 800; line-height: 1.05;
  letter-spacing: -0.03em; margin: 18px 0 0; max-width: 16ch; text-wrap: balance;
}
.join-intro__lede {
  font-size: 1.2rem; line-height: 1.6; color: var(--text-muted);
  margin: 22px 0 0; max-width: 52ch;
}
.join-intro__cta { display: flex; align-items: center; gap: 26px; margin-top: 34px; flex-wrap: wrap; }
/* Fixed landscape ratio wider than the 3:2 source, so object-fit: cover crops
   vertically; object-position pulls to the lower/foreground portion so the
   attendees read close instead of as a distant high-angle crowd. */
.join-intro__media { border-radius: var(--radius-card); overflow: hidden; aspect-ratio: 16 / 9; }
.join-intro__media img { width: 100%; height: 100%; object-fit: cover; object-position: center 85%; }

/* What membership includes — dark band; footer-style blue label + stacked
   list, four columns. No orange, no chrome (restraint). */
.includes__head { max-width: 720px; margin-bottom: 52px; }
.includes__title {
  font-size: clamp(2rem, 3.4vw, 2.9rem); font-weight: 700; line-height: 1.08;
  letter-spacing: -0.02em; color: var(--text-on-dark); margin: 14px 0 12px;
}
/* Keep the short "What membership includes" heading on one line on desktop;
   it is free to wrap on smaller screens. */
@media (min-width: 1024px) { .includes__title { white-space: nowrap; } }
.includes__lede { font-size: 1.1875rem; line-height: 1.55; color: var(--text-on-dark-muted); margin: 0; max-width: 52ch; }
.includes__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 40px 36px; }
.includes__label { color: var(--mba-blue); margin-bottom: 16px; }  /* footer-col label treatment */
.includes__list { display: flex; flex-direction: column; gap: 11px; }
.includes__list li { color: #fff; opacity: .86; font-size: 15.5px; line-height: 1.45; }

/* National affiliation — AGC logo beside subhead + sentence + link (white) */
.affil__grid { display: grid; grid-template-columns: minmax(0,auto) minmax(0,1fr); gap: 56px; align-items: center; }
.affil__logo { display: flex; align-items: center; }
.affil__logo img { height: 96px; width: auto; }
.affil__title { font-size: clamp(1.7rem, 2.8vw, 2.4rem); font-weight: 700; line-height: 1.1; letter-spacing: -0.02em; margin: 12px 0 14px; }
.affil__text { font-size: 1.0625rem; line-height: 1.65; color: var(--text-muted); margin: 0 0 20px; max-width: 60ch; }

/* Membership application — left rail + form on the cool tint (--bg-muted).
   The band runs the full length of the form through the submit button. The rail
   is narrower (5fr) than the form (7fr); both top-align. */
.apply__grid { display: grid; grid-template-columns: minmax(0,5fr) minmax(0,7fr); gap: 64px; align-items: start; }
.apply__rail { align-self: start; }
.apply__title { font-size: clamp(2rem, 3.4vw, 2.9rem); font-weight: 700; line-height: 1.08; letter-spacing: -0.02em; margin: 14px 0 16px; }
.apply__lede { font-size: 1.1875rem; line-height: 1.55; color: var(--text-muted); margin: 0 0 22px; max-width: 40ch; }
.apply__note { font-size: 0.95rem; line-height: 1.6; color: var(--text-muted); margin: 0 0 12px; max-width: 42ch; }
.apply__note--contact { margin-top: 6px; margin-bottom: 0; }
.apply__note a { color: var(--mba-blue-deep); text-decoration: none; font-weight: 600; }
.apply__note a:hover { text-decoration: underline; }

/* =====================================================================
   FORM CONTROLS (reusable, site-wide) — first used by the Join membership
   application. Labels sit above fields; input text is 16px minimum (also
   blocks iOS zoom); controls use the 8px --radius-button; focus shows the
   site-wide --mba-blue ring (3px clears WCAG AA on mouse + keyboard). The
   error state pairs a heavier near-black border with the icon + message in
   the markup, so meaning never rides on color alone and no red is added to
   the palette. Built entirely on the shared tokens above.
   ===================================================================== */
/* Field groups + 6-col grid (fields sized to content via fc-* spans) */
.form-group { border: 0; margin: 0 0 34px; padding: 0; min-width: 0; }
.form-group__label { color: var(--mba-blue); margin-bottom: 18px; padding: 0; }  /* footer column-label blue */
.form-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 22px 18px; }
.form-field { display: flex; flex-direction: column; min-width: 0; }
.fc-1 { grid-column: span 1; }
.fc-2 { grid-column: span 2; }
.fc-3 { grid-column: span 3; }
.fc-4 { grid-column: span 4; }
.fc-6 { grid-column: span 6; }

/* Label (above the field) + required indicator (text, not color) */
.form-label { display: inline-flex; align-items: baseline; gap: 8px; font-size: 0.875rem; font-weight: 600; color: var(--text); margin-bottom: 7px; }
.form-req { font-size: 0.8125rem; font-weight: 400; letter-spacing: 0; text-transform: none; color: var(--text-muted); }

/* Text input, select, textarea */
.form-input, .form-select, .form-textarea {
  width: 100%; min-width: 0; font-family: var(--font); font-size: 16px; line-height: 1.4;
  color: var(--text); background: #fff; border: 1px solid var(--border);
  border-radius: var(--radius-button); padding: 12px 14px;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.form-textarea { resize: vertical; min-height: 88px; }
.form-select {
  appearance: none; -webkit-appearance: none; cursor: pointer; padding-right: 40px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%235A626E' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 14px center;
}

/* Focus — visible on all focus (mouse + keyboard), the site-wide blue ring */
.form-input:focus, .form-select:focus, .form-textarea:focus {
  outline: none; border-color: var(--mba-blue); box-shadow: 0 0 0 3px rgba(56,134,200,.32);
}

/* Helper text */
.form-help { font-size: 0.8125rem; line-height: 1.5; color: var(--text-muted); margin: 7px 0 0; max-width: 52ch; }

/* Error state — heavier near-black border + the markup's icon and message.
   Color is never the only cue (icon + text carry it). */
.form-field--error .form-input,
.form-field--error .form-select,
.form-field--error .form-textarea { border-color: var(--text); border-width: 2px; }
.form-error { display: flex; align-items: flex-start; gap: 7px; margin: 8px 0 0; font-size: 0.875rem; line-height: 1.45; font-weight: 500; color: var(--text); }
.form-error[hidden] { display: none; }
.form-error__ico { flex: none; margin-top: 1px; color: var(--text); }
.form-error__ico svg { stroke-width: 2; }

/* reCAPTCHA placeholder (for-position-only; real widget added with GrowthZone) */
.form-recaptcha { display: flex; align-items: center; gap: 14px; max-width: 320px; margin: 6px 0 28px; padding: 16px 18px; background: #fff; border: 1px dashed var(--border-strong); border-radius: var(--radius-button); }
.form-recaptcha__box { flex: none; width: 24px; height: 24px; border: 2px solid var(--border-strong); border-radius: 4px; }
.form-recaptcha__label { font-size: 0.875rem; color: var(--text-muted); }

.form-actions { margin-top: 8px; }

/* Join responsive — mirrors html/join.html page-scoped rules at 1024 / 640.
   Targets the .mba-* classes the join-page block actually renders (the prior
   .join-intro__grid / .includes__grid / .affil__grid / .apply__grid rules
   referenced an older markup pass and matched nothing on this page). */
@media (max-width: 1024px) {
  .mba-sec { padding-left: 32px !important; padding-right: 32px !important; }
  .mba-open-grid { grid-template-columns: 1fr !important; gap: 36px !important; }
  .mba-open-img { min-height: 0 !important; height: 320px !important; }
  .mba-benefit-groups { grid-template-columns: repeat(2, minmax(0,1fr)) !important; }
  .mba-join-grid { grid-template-columns: 1fr !important; gap: 44px !important; }
  .mba-agc-row { flex-direction: column !important; align-items: flex-start !important; gap: 28px !important; }
  .mba-agc-row img { height: 84px !important; }
}
@media (max-width: 640px) {
  .mba-sec { padding-left: 22px !important; padding-right: 22px !important; }
  .mba-open-img { height: 230px !important; }
  .mba-benefit-groups { grid-template-columns: 1fr !important; gap: 32px !important; }
  .mba-form-row { grid-template-columns: 1fr !important; }
  /* Form collapses to a single column on phones so 16px inputs stay tappable. */
  .join-form-wrap .forminator-col-6,
  .join-form-wrap .forminator-col-4,
  .join-form-wrap .forminator-col-8 { width: 100% !important; flex: 0 0 100% !important; max-width: 100% !important; }
}

/* =====================================================================
   STANDARD CONTENT — side-rail card (white). The reusable card ground for
   the Standard Content template's optional right rail (reference page:
   drug-free-program.html): white fill, a 1px --border hairline, and a
   restrained shadow so the white card separates cleanly from the white
   page. Pairs with the page-scoped base .std-card (radius + padding) and
   the navy .std-card__title eyebrow labels.
   ===================================================================== */
.std-card--white { background: #fff; border: 1px solid var(--border); box-shadow: 0 1px 2px rgba(14,26,43,.05), 0 6px 16px rgba(14,26,43,.06); }

/* =====================================================================
   SECTION-LANDING (hub) — .ts-* (migrated from the static training-services
   page-scoped <style> into the theme so the mba/numbered-list "areas" layout
   and the hub hero intro can use them). Shared tokens only.
   ===================================================================== */
  /* Hero intro on the dark ground (the About hero is eyebrow + title only) */
  .ts-hero__intro { font-size: 1.2rem; line-height: 1.6; color: var(--text-on-dark-muted); margin: 22px 0 0; max-width: 52ch; }

  /* The four areas — editorial numbered rows, not equal cards. Asymmetric
     5fr / 7fr (the .about-stack split): index + name on the left, description
     and links on the right, with a hairline --border between rows. All four
     blocks are identical in scale; there is no featured block. */
  /* Match the hero/CTA content width: those use the 1320 max-width with a 40px
     gutter inside it (1240 content), but .ts-areas sits inside .sec's 40px padding,
     so cap it at container - 80px to line up with the rest of the page. */
  .ts-areas { max-width: calc(var(--container) - 80px); margin: 0 auto; }
  .ts-areas__head { margin-bottom: 52px; }
  .ts-areas__title { font-size: clamp(2rem, 3.2vw, 2.8rem); font-weight: 700; line-height: 1.1; letter-spacing: -0.02em; color: var(--text); margin: 12px 0 0; white-space: nowrap; }

  .ts-area { display: grid; grid-template-columns: minmax(0,5fr) minmax(0,7fr); gap: 40px 64px; padding: 44px 0; border-top: 1px solid var(--border); align-items: start; }
  .ts-area__index { display: block; font-size: clamp(2rem, 3.2vw, 2.8rem); font-weight: 800; line-height: 1; letter-spacing: -0.03em; color: var(--mba-blue); font-variant-numeric: tabular-nums; }
  /* One fixed size for all four area names (not viewport/column auto-fit), so
     they read identically regardless of name length. */
  .ts-area__name { font-size: 1.875rem; font-weight: 700; line-height: 1.15; letter-spacing: -0.015em; color: var(--text); margin: 12px 0 0; }
  /* The area name is the primary route into the section landing: dark at rest
     (inherits the heading color), shifting to the blue link color + underline on
     hover. The small blue arrow is the at-rest cue that the name is a link. */
  .ts-area__name-link { color: inherit; text-decoration: none; transition: color .2s ease; }
  .ts-area__name-link:hover { color: var(--mba-blue-deep); text-decoration: underline; }
  .ts-area__name-link .arr { color: var(--mba-blue-deep); font-size: 0.62em; margin-left: 0.32em; }
  .ts-area__desc { font-size: 1.0625rem; line-height: 1.65; color: var(--text-muted); margin: 0; max-width: 60ch; }
  /* Secondary line: the section's deep-link page shortcuts as standard blue text
     links separated by middots. No label, tags, chips, or backgrounds. */
  .ts-area__inside { font-size: 0.95rem; line-height: 1.7; color: var(--text-muted); margin: 18px 0 0; }
  .ts-link { color: var(--mba-blue-deep); font-weight: 600; text-decoration: none; }
  .ts-link:hover { text-decoration: underline; }
  .ts-link .ext { font-size: 11px; opacity: .6; }
  .ts-dot { margin: 0 7px; }

  /* Responsive — matches the site's 1024 / 640 breakpoints */
  @media (max-width: 1023.98px) {
    .ts-areas__head { margin-bottom: 36px; }
    .ts-areas__title { white-space: normal; }
    .ts-area { grid-template-columns: 1fr; gap: 14px; padding: 34px 0; }
    .ts-area__name { margin-top: 6px; }
    .ts-area__desc { max-width: none; }
  }
  @media (max-width: 640px) {
    .ts-area { padding: 28px 0; }
  }

/* =====================================================================
   STANDARD CONTENT TEMPLATE — .std-* (migrated from the static
   drug-free-program page-scoped <style> into the theme for the
   mba/hero interior_light, mba/std-layout, std-prose, and rail blocks).
   ===================================================================== */
  /* --- Region 1: interior header — white ground, left-aligned, no slab, no photo --- */
  .std-head { background: var(--bg); border-bottom: 1px solid var(--border); }
  .std-head__inner { max-width: var(--container); margin: 0 auto; padding: 48px 40px 42px; }
  /* Flush variant (hero "Flush bottom" toggle, interior_light only): drop the
     rule and tighten the space below so the next block sits close. Opt-in per
     instance via the field, so default .std-head pages are unaffected. */
  .std-head--flush { border-bottom: 0; }
  .std-head--flush .std-head__inner { padding-bottom: 8px; }
  .std-breadcrumb { display: flex; flex-wrap: wrap; align-items: center; gap: 9px; font-size: 14px; line-height: 1.4; color: var(--text-muted); margin: 0 0 20px; }
  .std-breadcrumb a { color: var(--text-muted); text-decoration: none; transition: color .15s ease; }
  .std-breadcrumb a:hover { color: var(--mba-blue-deep); text-decoration: underline; }
  .std-breadcrumb [aria-current] { color: var(--text); font-weight: 600; }
  .std-breadcrumb .sep { color: var(--border-strong); }
  .std-title { font-size: clamp(2.3rem, 4vw, 3.3rem); font-weight: 800; line-height: 1.05; letter-spacing: -0.025em; color: var(--text); margin: 0; max-width: 20ch; text-wrap: balance; }
  .std-intro { font-size: 1.25rem; line-height: 1.55; color: var(--text-muted); margin: 18px 0 0; max-width: 62ch; }
  /* Optional right-side header image: add .std-head__inner--media to switch the
     interior header to two columns (text left, image right); it stacks on mobile.
     Without it the header stays the text-only layout above. (None on this page.) */
  .std-head__inner--media { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,0.82fr); gap: 56px; align-items: center; }
  .std-head__text { min-width: 0; }
  .std-head__media { margin: 0; border-radius: var(--radius-card); overflow: hidden; }
  .std-head__media img { width: 100%; height: auto; display: block; }

  /* --- Region 2/3: content column (reading measure) + side rail (asymmetric) --- */
  .std-layout { max-width: var(--container); margin: 0 auto; padding: 72px 40px 96px; display: grid; grid-template-columns: minmax(0,1fr) 340px; gap: 80px; align-items: start; }
  /* No side rail: single reading column (mba/std-layout has_rail off) */
  .std-layout--solo { grid-template-columns: minmax(0,1fr); }

  /* About "Who we are": the std-layout grid on the soft-gray ground — narrative
     prose in the main column beside the "More in About" card. .std-main mirrors
     .std-prose's min-width:0 so the grid column can shrink; the muted ground is
     carried by the section wrapper. */
  .who-sec { background: var(--bg-muted); }
  .std-main { min-width: 0; }

  /* Editable rich-text body — comfortable measure, not full width */
  .std-prose { max-width: 68ch; }
  .std-prose > * + * { margin-top: 20px; }
  .std-prose h2 { font-size: clamp(1.6rem, 2.4vw, 2.1rem); font-weight: 700; line-height: 1.2; letter-spacing: -0.015em; color: var(--text); }
  .std-prose h3 { font-size: 1.3rem; font-weight: 700; line-height: 1.25; letter-spacing: -0.01em; color: var(--text); margin-top: 40px; }
  .std-prose h2:first-child, .std-prose h3:first-child { margin-top: 0; }
  .std-prose p { font-size: 1.0625rem; line-height: 1.7; color: var(--text); }
  .std-prose ul, .std-prose ol { padding-left: 22px; }
  .std-prose ul { list-style: disc; }
  .std-prose ol { list-style: decimal; }
  .std-prose li { font-size: 1.0625rem; line-height: 1.6; color: var(--text); }
  .std-prose li + li { margin-top: 8px; }
  /* Body-text links use the AA-safe blue on white; buttons (.btn) are excluded so
     the secondary button keeps its own blue treatment in both states. */
  .std-prose a:not(.btn) { color: var(--mba-blue-deep); text-decoration: none; font-weight: 600; }
  .std-prose a:not(.btn):hover { text-decoration: underline; }
  /* Body images + figures: responsive, card corners, optional caption. Any <img>
     or <figure> dropped into the rich text renders correctly (none on this page). */
  .std-prose img { max-width: 100%; height: auto; display: block; border-radius: var(--radius-card); }
  .std-prose figure { margin: 28px 0 0; }
  .std-prose figure img { width: 100%; }
  .std-prose figcaption { margin-top: 10px; font-size: 0.9375rem; line-height: 1.5; color: var(--text-muted); }
  /* Wrapper that gives an inline button room to breathe within the prose flow */
  .std-prose__action { margin-top: 28px; }
  /* A core/button inside the prose renders as the secondary (blue/white) button:
     orange stays the single primary action, downloads read as blue. The class is
     also applied on the block, but we style the rendered link so the look holds
     whether or not an editor keeps the class. */
  .std-prose .wp-block-buttons { margin-top: 28px; }
  /* Only the inner link is the button. The wrapper must never render its own
     box, or a `.btn`/`.btn--secondary` class landing on it (as the block markup
     applies) doubles the border and padding. Strip all button chrome here. */
  .std-prose .wp-block-button { margin: 0; padding: 0; border: 0; background: none; border-radius: 0; }
  .std-prose .wp-block-button__link {
    font-family: var(--font); font-size: 1rem; font-weight: 600; line-height: 1;
    border-radius: var(--radius-button); padding: 14px 28px;
    display: inline-flex; align-items: center; gap: 8px; white-space: nowrap;
    text-decoration: none;
    background: #fff; color: var(--mba-blue-deep); border: 1.6px solid var(--mba-blue-deep);
    transition: background .2s ease, color .2s ease, border-color .2s ease, transform .08s ease;
  }
  .std-prose .wp-block-button__link:hover { background: var(--mba-blue-hover); border-color: var(--mba-blue-hover); color: #fff; transform: scale(1.015); }
  .std-prose .wp-block-button__link:active { transform: scale(0.985); }
  /* A core/button cannot carry the inline download glyph the static design has,
     so file/download buttons (links to a document) get it via CSS. The mask is
     the lucide "download" icon; background-color: currentColor recolors it with
     the label (blue at rest, white on hover). Scoped to document extensions so
     a plain prose button (e.g. "Learn more") stays icon-free. */
  .std-prose .wp-block-button__link[href$=".pdf"]::before,
  .std-prose .wp-block-button__link[href$=".doc"]::before,
  .std-prose .wp-block-button__link[href$=".docx"]::before,
  .std-prose .wp-block-button__link[href$=".xls"]::before,
  .std-prose .wp-block-button__link[href$=".xlsx"]::before,
  .std-prose .wp-block-button__link[href$=".zip"]::before {
    content: ""; width: 18px; height: 18px; flex: 0 0 auto; background-color: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='black'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M21%2015v4a2%202%200%200%201-2%202H5a2%202%200%200%201-2-2v-4'/%3E%3Cpath%20d='M7%2010l5%205%205-5'/%3E%3Cpath%20d='M12%2015V3'/%3E%3C/svg%3E") no-repeat center / 18px 18px;
            mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='black'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M21%2015v4a2%202%200%200%201-2%202H5a2%202%200%200%201-2-2v-4'/%3E%3Cpath%20d='M7%2010l5%205%205-5'/%3E%3Cpath%20d='M12%2015V3'/%3E%3C/svg%3E") no-repeat center / 18px 18px;
  }

  /* Side rail (optional region) — quiet grouped cards, no shadow */
  .std-rail { display: flex; flex-direction: column; gap: 24px; }
  .std-card { border-radius: var(--radius-card); padding: 28px 28px 30px; }
  .std-card__title { font-size: .8rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--text); margin: 0 0 18px; }

  /* Downloads group */
  .std-dl { display: flex; flex-direction: column; }
  .std-dl__item { display: flex; align-items: flex-start; gap: 12px; padding: 13px 0; border-top: 1px solid var(--border); text-decoration: none; color: var(--mba-blue-deep); transition: color .15s ease; }
  .std-dl__item:first-child { border-top: 0; padding-top: 2px; }
  .std-dl__item:last-child { padding-bottom: 0; }
  .std-dl__item .ico { color: var(--text-muted); margin-top: 1px; flex: none; }
  .std-dl__label { font-size: 1rem; font-weight: 600; line-height: 1.45; }
  .std-dl__item:hover .std-dl__label { text-decoration: underline; }

  /* Contact card */
  .std-contact__name { font-size: 1.0625rem; font-weight: 700; color: var(--text); margin: 0; }
  .std-contact__role { font-size: 14.5px; line-height: 1.5; color: var(--text-muted); margin: 3px 0 16px; }
  .std-contact__row { display: flex; align-items: center; gap: 11px; font-size: 1rem; line-height: 1.5; color: var(--text); }
  .std-contact__row + .std-contact__row { margin-top: 10px; }
  .std-contact__row .ico { color: var(--text-muted); flex: none; }
  .std-contact__row a { color: var(--mba-blue-deep); text-decoration: none; font-weight: 600; }
  .std-contact__row a:hover { text-decoration: underline; }

  /* --- Responsive (matches the site's 1024 / 640 breakpoints) --- */
  @media (max-width: 1023.98px) {
    .std-head__inner { padding: 40px 32px 32px; }
    .std-head__inner--media { grid-template-columns: 1fr; gap: 28px; }
    .std-layout { grid-template-columns: 1fr; gap: 48px; padding: 56px 32px 72px; }
    .std-rail { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
  }
  @media (max-width: 640px) {
    .std-head__inner { padding: 32px 22px 26px; }
    .std-layout { gap: 36px; padding: 48px 22px 64px; }
    .std-rail { grid-template-columns: 1fr; }
  }

/* =====================================================================
   BREAKINGGROUND (News) — page-scoped layout (.bg-*), ported from
   html/breaking-ground.html, built on shared tokens only.
   ===================================================================== */
  .bg-hero { background: var(--bg-dark); color: #fff; }
  .bg-hero__inner { max-width: var(--container); margin: 0 auto; padding: 0 40px; }
  .bg-crumb { display: flex; flex-wrap: wrap; align-items: center; gap: 9px; padding-top: 34px; font-size: 14px; line-height: 1.4; color: var(--text-on-dark-muted); }
  .bg-crumb a { color: var(--text-on-dark-muted); text-decoration: none; transition: color .15s ease; }
  .bg-crumb a:hover { color: #fff; text-decoration: underline; }
  .bg-crumb [aria-current] { color: #fff; font-weight: 600; }
  .bg-crumb .sep { color: rgba(255,255,255,.4); }
  .bg-hero__grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.05fr); gap: 56px; align-items: center; padding: 44px 0 92px; }
  .bg-hero__col { display: flex; flex-direction: column; justify-content: center; min-width: 0; }
  .bg-hero__logo { margin: 0; }
  .bg-hero__logo img { display: block; width: clamp(300px, 38vw, 460px); max-width: 100%; height: auto; filter: brightness(0) invert(1); }
  .bg-hero__kick { margin-top: 30px; }
  .bg-hero__issue { font-size: clamp(1.9rem, 3vw, 2.6rem); font-weight: 800; line-height: 1.08; letter-spacing: -0.02em; color: #fff; margin: 8px 0 0; }
  .bg-hero__tease { font-size: 1.1875rem; line-height: 1.6; color: var(--text-on-dark); margin: 16px 0 0; max-width: 46ch; }
  .bg-hero__cta { margin-top: 28px; display: flex; flex-wrap: wrap; align-items: center; gap: 14px 22px; }
  .bg-hero__altlink { color: var(--text-on-dark); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
  .bg-hero__altlink:hover { color: var(--text-on-dark-muted); }
  .bg-hero__img { display: flex; align-items: center; justify-content: center; min-width: 0; }
  .bg-hero__img img { width: auto; max-width: 100%; height: auto; max-height: 560px; border-radius: var(--radius-card); display: block; }

  .bg-lede { background: var(--bg); }
  .bg-lede__inner { max-width: var(--container); margin: 0 auto; padding: 64px 40px 0; }
  .bg-lede__text { font-size: 1.3rem; line-height: 1.6; color: var(--text); margin: 0; max-width: none; }
  .bg-lede__text a { color: var(--mba-blue-deep); font-weight: 600; text-decoration: none; }
  .bg-lede__text a:hover { text-decoration: underline; }

  .bg-advertise { background: var(--bg); border-bottom: 1px solid var(--border); }
  .bg-advertise__inner { max-width: var(--container); margin: 0 auto; padding: 40px 40px 44px; }
  .bg-advertise__title { font-size: 1.3rem; font-weight: 700; letter-spacing: -0.01em; color: var(--text); margin: 0 0 16px; }
  .bg-advertise__row { display: flex; flex-wrap: wrap; gap: 14px 28px; }
  .bg-advertise__link { display: inline-flex; align-items: center; gap: 8px; font-size: 1.0625rem; font-weight: 600; color: var(--mba-blue-deep); text-decoration: none; }
  .bg-advertise__link:hover { text-decoration: underline; }
  .bg-advertise__link .ico { color: var(--text-muted); }

  .bg-archive { background: var(--bg); padding: 88px 0 104px; }
  .bg-archive__inner { max-width: var(--container); margin: 0 auto; padding: 0 40px; }
  .bg-archive__title { font-size: clamp(1.9rem, 3vw, 2.6rem); font-weight: 800; line-height: 1.1; letter-spacing: -0.02em; color: var(--text); margin: 0; }
  .bg-archive__intro { font-size: 1.0625rem; line-height: 1.6; color: var(--text-muted); margin: 14px 0 0; max-width: none; }
  .bg-archive__years { margin-top: 44px; }

  .bg-year { display: grid; grid-template-columns: 70px repeat(6, minmax(0, 1fr)); align-items: baseline; gap: 10px 20px; padding: 14px 16px; border-radius: 8px; }
  .bg-year:nth-of-type(even) { background: var(--bg-muted); }
  .bg-year__num { font-size: 1.25rem; font-weight: 800; line-height: 1.2; letter-spacing: -0.01em; color: var(--text); margin: 0; }
  .bg-issue { font-size: 1rem; font-weight: 600; color: var(--mba-blue-deep); text-decoration: none; white-space: nowrap; }
  .bg-issue:hover { text-decoration: underline; }
  .bg-cell--empty { visibility: hidden; }
  .bg-special { grid-column: 2 / -1; margin-top: 2px; }
  .bg-special a { font-size: 1rem; font-weight: 600; color: var(--mba-blue-deep); text-decoration: none; }
  .bg-special a:hover { text-decoration: underline; }

  .bg-earlier { margin-top: 4px; }
  .bg-earlier > summary { display: inline-flex; align-items: center; gap: 10px; padding: 18px 16px; cursor: pointer; font-size: 1.0625rem; font-weight: 700; color: var(--mba-blue-deep); list-style: none; }
  .bg-earlier > summary::-webkit-details-marker { display: none; }
  .bg-earlier > summary .ico { color: var(--text-muted); transition: transform .2s ease; }
  .bg-earlier[open] > summary .ico { transform: rotate(90deg); }
  .bg-earlier > summary:hover { text-decoration: underline; }
  .bg-earlier > summary:focus-visible { outline: 3px solid var(--mba-blue); outline-offset: 3px; border-radius: 4px; }

  @media (max-width: 1023.98px) {
    .bg-hero__inner { padding: 0 32px; }
    .bg-crumb { padding-top: 28px; }
    .bg-hero__grid { grid-template-columns: 1fr; gap: 28px; padding: 28px 0 64px; align-items: start; }
    .bg-hero__logo img { width: clamp(260px, 60vw, 380px); }
    .bg-hero__img { justify-content: flex-start; }
    .bg-hero__img img { max-height: 460px; }
    .bg-lede__inner { padding: 48px 32px 0; }
    .bg-advertise__inner { padding: 36px 32px 40px; }
    .bg-archive { padding: 64px 0 80px; }
    .bg-archive__inner { padding: 0 32px; }
    .bg-year { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px 18px; padding: 14px 14px; }
    .bg-year__num { grid-column: 1 / -1; margin-bottom: 4px; }
    .bg-cell--empty { display: none; }
    .bg-special { grid-column: 1 / -1; }
  }
  @media (max-width: 640px) {
    .bg-hero__inner { padding: 0 22px; }
    .bg-hero__grid { padding: 22px 0 52px; }
    .bg-hero__img img { max-height: 380px; }
    .bg-lede__inner { padding: 40px 22px 0; }
    .bg-advertise__inner { padding: 30px 22px 34px; }
    .bg-archive { padding: 52px 0 64px; }
    .bg-archive__inner { padding: 0 22px; }
    .bg-year { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }
  @media (prefers-reduced-motion: reduce) {
    .bg-earlier > summary .ico { transition: none; }
  }

/* =====================================================================
   2025 MEMBERS REPORT (News) — additive, ported from
   html/2025-members-report/index.html. Reuses BreakingGround's .bg-hero /
   .bg-lede shells; only the rules that differ are scoped under a --report
   modifier, so BreakingGround renders byte-identically. New selectors
   (.bg-hero__wordmark, the linked cover, .bg-lede__body) are report-only.
   ===================================================================== */
  /* Hero: the report wordmark as white display text (BreakingGround uses an
     image logo, .bg-hero__logo, instead). */
  .bg-hero__wordmark { font-size: clamp(2.6rem, 5.2vw, 4.4rem); font-weight: 800; line-height: 1.02; letter-spacing: -0.03em; color: #fff; margin: 0; text-wrap: balance; }
  /* Cover links to the report (BreakingGround's cover is a plain image). */
  .bg-hero__img a { display: inline-flex; border-radius: var(--radius-card); }
  .bg-hero__img a:focus-visible { outline: 3px solid var(--mba-blue); outline-offset: 4px; }
  /* The report's intro is the last block on the page, so it carries bottom
     padding and the lede is held to a 60ch measure (BreakingGround's intro has
     neither, because advertise + archive follow it). */
  .bg-lede--report .bg-lede__inner { padding-bottom: 104px; }
  .bg-lede--report .bg-lede__text { max-width: 60ch; }
  /* Body group below the lede (invitation + contact). */
  .bg-lede__body { margin: 22px 0 0; max-width: 72ch; }
  .bg-lede__body p { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 0; }
  .bg-lede__body p + p { margin-top: 22px; }
  .bg-lede__body a { color: var(--mba-blue-deep); font-weight: 600; text-decoration: none; }
  .bg-lede__body a:hover { text-decoration: underline; }
  /* Desktop: keep the report hero tease on a single line. */
  @media (min-width: 1280px) {
    .bg-hero--report .bg-hero__tease { max-width: none; white-space: nowrap; }
  }
  @media (max-width: 1023.98px) {
    .bg-lede--report .bg-lede__inner { padding-bottom: 80px; }
  }
  @media (max-width: 640px) {
    .bg-lede--report .bg-lede__inner { padding-bottom: 64px; }
  }

/* =====================================================================
   DEVELOPINGPITTSBURGH (News) — additive, ported from
   html/developing-pittsburgh/index.html. Reuses BreakingGround's .bg-hero /
   .bg-lede / .bg-advertise shells and the wordmark / linked cover / .bg-lede__body
   added for the Members Report; only the rules that differ are scoped under --dp
   modifiers, so BreakingGround renders byte-identically.
   ===================================================================== */
  .bg-lede--dp .bg-lede__text { max-width: 56ch; }
  .bg-advertise--dp .bg-advertise__inner { padding-top: 48px; }
  /* Semiannual archive: a 70px year column + a flexible wrap of issue links
     (not BreakingGround's bi-monthly six-column matrix). */
  .bg-archive--dp .bg-year { grid-template-columns: 70px minmax(0, 1fr); gap: 10px 24px; padding: 16px 16px; }
  .bg-archive--dp .bg-year__num { grid-column: auto; margin-bottom: 0; }
  .bg-archive--dp .bg-year__issues { display: flex; flex-wrap: wrap; gap: 10px 28px; }
  .bg-archive--dp .bg-issue { white-space: normal; }
  @media (max-width: 1023.98px) {
    .bg-advertise--dp .bg-advertise__inner { padding: 40px 32px 40px; }
  }
  @media (max-width: 640px) {
    .bg-advertise--dp .bg-advertise__inner { padding: 34px 22px 36px; }
    /* Year stacks: number on its own line above its issues. */
    .bg-archive--dp .bg-year { grid-template-columns: 1fr; gap: 8px; padding: 16px 14px; }
  }

/* =====================================================================
   JOIN (membership) — page-scoped layout + AGC-row links, ported from
   html/join.html. The application form is a Forminator form embedded in
   .join-form-wrap; the .forminator-* overrides below restyle it to match the
   prototype's .jf-field / .jf-submit visuals. Built on shared tokens.
   ===================================================================== */
  :root {
    --field-border: #6F7680;
    --field-border-hover: #14161A;
    --error: #B42318;
    --focus-ring: 0 0 0 3px rgba(56,134,200,.55);
    --bg-blue-tint: #F3F7FB;
  }
  .jf-tlink { display: inline-flex; align-items: center; gap: 7px; font-size: 1rem; font-weight: 600; cursor: pointer; text-decoration: none; color: var(--mba-blue-deep); transition: color .2s ease; }
  .jf-tlink .jf-arr { transition: transform .2s ease; }
  .jf-tlink:hover .jf-arr { transform: translateX(3px); }
  .jf-mail { font-weight: 600; color: var(--mba-blue-deep); text-decoration: none; }
  .jf-mail:hover { text-decoration: underline; }
  /* Application left-rail copy: muted paragraphs with spacing, matching the design */
  .join-rail-intro p { font-size: 1.0625rem; line-height: 1.7; color: var(--text-muted); margin: 0 0 22px; max-width: 42ch; }
  .join-rail-intro p:last-child { margin-bottom: 0; }

  /* ---- Forminator overrides (scoped to the Join application form) ---- */
  .join-form-wrap .forminator-ui.forminator-custom-form { font-family: var(--font); margin: 0; }
  .join-form-wrap .forminator-row { margin-bottom: 24px; }
  .join-form-wrap .forminator-row.forminator-row-last { margin-bottom: 0; }
  .join-form-wrap .forminator-label { font-family: var(--font) !important; font-size: 15px !important; font-weight: 600 !important; color: var(--text) !important; line-height: 1.3 !important; margin: 0 0 8px !important; text-transform: none !important; letter-spacing: 0 !important; }
  .join-form-wrap .forminator-label .forminator-required { color: var(--text-muted); }
  .join-form-wrap input.forminator-input,
  .join-form-wrap textarea.forminator-textarea,
  .join-form-wrap .forminator-select2 .select2-selection,
  .join-form-wrap select.forminator-select--field {
    font-family: var(--font) !important; font-size: 16px !important; line-height: 1.4 !important; color: var(--text) !important;
    background: #fff !important; border-radius: var(--radius-button) !important; border: 1px solid var(--field-border) !important;
    padding: 12px 14px !important; width: 100% !important; box-sizing: border-box !important; box-shadow: none !important;
    height: auto !important; min-height: 0 !important; transition: border-color .15s ease, box-shadow .15s ease;
  }
  .join-form-wrap input.forminator-input:hover,
  .join-form-wrap textarea.forminator-textarea:hover,
  .join-form-wrap .forminator-select2 .select2-selection:hover { border-color: var(--field-border-hover) !important; }
  .join-form-wrap input.forminator-input:focus,
  .join-form-wrap textarea.forminator-textarea:focus { border-color: var(--mba-blue) !important; box-shadow: var(--focus-ring) !important; outline: none; }
  .join-form-wrap textarea.forminator-textarea { resize: vertical; min-height: 96px !important; }
  /* select2 single: align the selection text + arrow inside the box */
  .join-form-wrap .forminator-select2 .select2-selection--single { display: flex; align-items: center; }
  .join-form-wrap .forminator-select2 .select2-selection__rendered { padding: 0 !important; line-height: 1.4 !important; color: var(--text); }
  .join-form-wrap .forminator-select2 .select2-selection__arrow { height: 100%; right: 12px; }
  .join-form-wrap .forminator-select2.select2-container--focus .select2-selection,
  .join-form-wrap .forminator-select2.select2-container--open .select2-selection { border-color: var(--mba-blue) !important; box-shadow: var(--focus-ring) !important; }
  /* helper/description text */
  .join-form-wrap .forminator-description { color: var(--text-muted); font-size: 14px; line-height: 1.5; margin-top: 6px; font-weight: 400; }
  /* section header (Your contact / Your company) */
  .join-form-wrap .forminator-field-section { margin-top: 8px; }
  .join-form-wrap .forminator-field-section .forminator-title,
  .join-form-wrap h2.forminator-title {
    font-family: var(--font) !important; font-size: 13px !important; line-height: 1.3 !important;
    text-transform: uppercase !important; letter-spacing: .08em !important; font-weight: 700 !important;
    color: var(--text-muted) !important; margin: 0 !important; padding: 0 !important; border: 0 !important;
  }
  .join-form-wrap .forminator-field-section .forminator-description { display: none; }
  /* primary submit = orange button, dark label */
  .join-form-wrap .forminator-button-submit {
    font-family: var(--font) !important; font-size: 1rem !important; font-weight: 600 !important; line-height: 1 !important;
    border-radius: var(--radius-button) !important; padding: 14px 28px !important; border: 1.5px solid transparent !important;
    background: var(--mba-orange) !important; color: var(--text) !important; box-shadow: none !important; text-transform: none !important;
    transition: background .2s ease, transform .12s ease;
  }
  .join-form-wrap .forminator-button-submit:hover { background: var(--mba-orange-hover) !important; transform: scale(1.015); }

/* =====================================================================
   BOARD OF DIRECTORS — people grid (.pg-*), ported from
   html/board-of-directors.html. The .std-head header is the shared Standard
   Content header (already defined above). Headshots normalize to one 4:5 crop.
   ===================================================================== */
  .pg-sec { background: var(--bg); padding: 72px 0 96px; }
  .pg { max-width: var(--container); margin: 0 auto; padding: 0 40px; }
  .pg__group + .pg__group { margin-top: 72px; }
  .pg__label { margin: 0 0 28px; }
  .pg__grid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 44px 32px; }
  .pg-card__photo { aspect-ratio: 4 / 5; border-radius: var(--radius-card); overflow: hidden; background: var(--text); }
  .pg-card__photo img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; }
  .pg-card__name { font-size: 1.0625rem; font-weight: 700; line-height: 1.3; color: var(--text); margin: 16px 0 0; }
  .pg-card__role { font-size: 0.9375rem; line-height: 1.4; color: var(--text-muted); margin: 3px 0 0; }
  .pg-card__company { display: inline-block; font-size: 0.9375rem; font-weight: 600; line-height: 1.4; color: var(--mba-blue-deep); text-decoration: none; margin: 6px 0 0; }
  .pg-card__company:hover { text-decoration: underline; }
  @media (max-width: 1023.98px) {
    .pg-sec { padding: 56px 0 72px; }
    .pg { padding: 0 32px; }
    .pg__grid { grid-template-columns: repeat(3, minmax(0,1fr)); gap: 36px 28px; }
    .pg__group + .pg__group { margin-top: 56px; }
  }
  @media (max-width: 640px) {
    .pg-sec { padding: 48px 0 64px; }
    .pg { padding: 0 22px; }
    .pg__grid { grid-template-columns: repeat(2, minmax(0,1fr)); gap: 30px 18px; }
  }

/* =====================================================================
   SAFETY PAGE (section-landing) — additive, page-scoped selectors only.
   Nothing here overrides an existing rule, so no other page changes.
   The .sf-* blocks (safety-areas/awards/partners), the shared breadcrumb
   component ported from the static stylesheet (.hero-crumb / .crumb), and
   the Safety hero size/spacing tweaks scoped to .about-hero--crumb.
   ===================================================================== */

/* Shared breadcrumb strip (new in this theme; nothing else uses it yet). */
.hero-crumb { max-width: var(--container); margin: 0 auto; padding: 34px 40px 0; }
.crumb { display: flex; flex-wrap: wrap; align-items: center; gap: 9px; margin: 0; font-size: 14px; line-height: 1.4; }
.crumb a { text-decoration: none; transition: color .15s ease; }
.crumb--on-dark { color: var(--text-on-dark-muted); }
.crumb--on-dark a { color: var(--text-on-dark-muted); }
.crumb--on-dark a:hover { color: #fff; text-decoration: underline; }
.crumb--on-dark [aria-current] { color: #fff; font-weight: 600; }
.crumb--on-dark .sep { color: rgba(255,255,255,.4); }
.crumb--on-light { color: var(--text-muted); }
.crumb--on-light a { color: var(--text-muted); }
.crumb--on-light a:hover { color: var(--mba-blue-deep); text-decoration: underline; }
.crumb--on-light [aria-current] { color: var(--text); font-weight: 600; }
.crumb--on-light .sep { color: var(--border-strong); }

/* Safety hero: the crumb strip sits above the grid, so trim the grid's top
   padding by ~the strip height; and temper the title (a full sentence, not a
   short tagline) so it does not become a wall. Scoped to .about-hero--crumb so
   the About / Training & Services heroes are untouched. */
.about-hero--crumb .about-hero__grid { padding-top: 44px; }
/* Safety-only: its title is a full sentence, so temper it. About / Training &
   Services keep the default large tagline size (they get .about-hero--crumb for
   the spacing, but NOT --statement). */
.about-hero--statement .about-hero__title { font-size: clamp(2.1rem, 3.6vw, 3.35rem); }

/* Three routing rows — editorial numbered rows, asymmetric 5fr/7fr split. */
.sf-areas { max-width: calc(var(--container) - 80px); margin: 0 auto; }
.sf-areas__head { margin-bottom: 52px; }
.sf-areas__title { font-size: clamp(2rem, 3.2vw, 2.8rem); font-weight: 700; line-height: 1.1; letter-spacing: -0.02em; color: var(--text); margin: 12px 0 0; white-space: nowrap; }
.sf-area { display: grid; grid-template-columns: minmax(0,5fr) minmax(0,7fr); gap: 40px 64px; padding: 44px 0; border-top: 1px solid var(--border); align-items: start; }
.sf-area:not(:has(.sf-area__inside)) { align-items: center; }
.sf-area__index { display: block; font-size: clamp(2rem, 3.2vw, 2.8rem); font-weight: 800; line-height: 1; letter-spacing: -0.03em; color: var(--mba-blue); font-variant-numeric: tabular-nums; }
.sf-area__name { font-size: 1.875rem; font-weight: 700; line-height: 1.15; letter-spacing: -0.015em; color: var(--text); margin: 12px 0 0; }
.sf-area__name-link { color: inherit; text-decoration: none; transition: color .2s ease; }
.sf-area__name-link:hover { color: var(--mba-blue-deep); text-decoration: underline; }
.sf-area__name-link .arr { color: var(--mba-blue-deep); font-size: 0.62em; margin-left: 0.32em; }
.sf-area__desc { font-size: 1.0625rem; line-height: 1.65; color: var(--text-muted); margin: 0; max-width: 60ch; }
.sf-area__inside { font-size: 0.95rem; line-height: 1.7; color: var(--text-muted); margin: 18px 0 0; }
.sf-link { color: var(--mba-blue-deep); font-weight: 600; text-decoration: none; }
.sf-link:hover { text-decoration: underline; }
.sf-dot { margin: 0 7px; }

/* Safety Awards — two editorial rows on the same 5fr/7fr split. */
.sf-awards { max-width: calc(var(--container) - 80px); margin: 0 auto; }
.sf-awards__head { margin-bottom: 44px; }
.sf-awards__title { font-size: clamp(2rem, 3.2vw, 2.8rem); font-weight: 700; line-height: 1.1; letter-spacing: -0.02em; color: var(--text); margin: 12px 0 0; }
.sf-awards__intro { font-size: 1.0625rem; line-height: 1.65; color: var(--text-muted); margin: 16px 0 0; max-width: 60ch; }
.sf-award { display: grid; grid-template-columns: minmax(0,5fr) minmax(0,7fr); gap: 24px 64px; padding: 48px 0; border-top: 1px solid var(--border); align-items: start; }
.sf-award__year { color: var(--mba-blue-deep); }
.sf-award__name { font-size: 1.6rem; font-weight: 700; line-height: 1.18; letter-spacing: -0.015em; color: var(--text); margin: 10px 0 0; max-width: 16ch; }
.sf-award__desc p { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 0; max-width: 64ch; }
.sf-award__desc p + p { margin-top: 18px; }
.sf-award__action { margin-top: 28px; }
.sf-award__action .ico { margin-right: 2px; }
.sf-award__action .btn { max-width: 100%; white-space: normal; line-height: 1.3; text-align: left; }

/* Industry partners — heading block + a simple external resource list. */
.sf-partners { max-width: calc(var(--container) - 80px); margin: 0 auto; display: grid; grid-template-columns: minmax(0,5fr) minmax(0,7fr); gap: 40px 64px; align-items: start; }
.sf-partners__title { font-size: clamp(1.7rem, 2.6vw, 2.2rem); font-weight: 700; line-height: 1.18; letter-spacing: -0.02em; color: var(--text); margin: 12px 0 0; max-width: 16ch; }
.sf-partners__lede { font-size: 1.0625rem; line-height: 1.65; color: var(--text-muted); margin: 16px 0 0; max-width: 42ch; }
.sf-partner-list { display: flex; flex-direction: column; }
.sf-partner { display: block; padding: 22px 0; border-top: 1px solid var(--border); text-decoration: none; }
.sf-partner:first-child { border-top: none; padding-top: 2px; }
.sf-partner__name { font-size: 1.25rem; font-weight: 700; line-height: 1.3; color: var(--mba-blue-deep); }
.sf-partner:hover .sf-partner__name { text-decoration: underline; }
.sf-partner__name .ext { font-size: 13px; opacity: .65; margin-left: 5px; }
.sf-partner__desc { font-size: 1rem; line-height: 1.55; color: var(--text-muted); margin: 6px 0 0; }

@media (max-width: 1023.98px) {
  .hero-crumb { padding: 28px 32px 0; }
  .sf-areas__head { margin-bottom: 32px; }
  .sf-areas__title { white-space: normal; }
  .sf-area { grid-template-columns: 1fr; gap: 14px; padding: 34px 0; }
  .sf-area__name { margin-top: 6px; }
  .sf-area__desc { max-width: none; }
  .sf-awards__head { margin-bottom: 32px; }
  .sf-award { grid-template-columns: 1fr; gap: 16px; padding: 36px 0; }
  .sf-award__name { max-width: none; margin-top: 4px; }
  .sf-partners { grid-template-columns: 1fr; gap: 28px; }
  .sf-partners__title, .sf-partners__lede { max-width: none; }
}
@media (max-width: 640px) {
  .hero-crumb { padding: 28px 22px 0; }
  .about-hero--crumb .about-hero__grid { padding-top: 28px; }
  .sf-area { padding: 28px 0; }
  .sf-award { padding: 30px 0; }
}

/* =====================================================================
   MICA / About-pages Standard Content extras — additive, page-scoped
   selectors only (logo hero treatment, the intro band, the address row,
   and the "More in About" nav card). No existing rule is modified.
   ===================================================================== */

/* Logo treatment for the interior-light hero side image: center a small mark
   instead of a full-bleed photo. */
.std-head__media--logo { display: flex; align-items: center; justify-content: center; }
.std-head__media--logo img { width: 100%; max-width: 300px; height: auto; display: block; border-radius: 0; }

/* Address row in the rail contact card. */
.std-contact__row--addr { align-items: flex-start; }
.std-contact__row--addr .ico { margin-top: 2px; }
.std-contact__row--addr address { font-style: normal; line-height: 1.55; }

/* About MICA intro band — copy left, contained framing photo right, on the same
   container width as .std-layout. */
.mica-intro { max-width: var(--container); margin: 0 auto; padding: 120px 40px; display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.15fr); gap: 56px; align-items: stretch; }
.mica-intro__text { display: flex; flex-direction: column; justify-content: center; }
.mica-intro__media { margin: 0; border-radius: var(--radius-card); overflow: hidden; min-height: 360px; }
.mica-intro__media img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* Rail details card — a definition list of label/value rows (e.g. AGC Student
   Chapter). Uppercase muted labels, plain values, blue links where set. */
.rail-meta { margin: 0; }
.rail-meta > div + div { margin-top: 16px; }
.rail-meta dt { font-size: .72rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; color: var(--text-muted); }
.rail-meta dd { margin: 3px 0 0; font-size: 1rem; line-height: 1.5; color: var(--text); }
.rail-meta dd a { color: var(--mba-blue-deep); text-decoration: none; font-weight: 600; word-break: break-word; }
.rail-meta dd a:hover { text-decoration: underline; }

/* "More in About" rail card — hairline link rows, blue labels, nudging arrow. */
.more-nav { display: flex; flex-direction: column; }
.more-nav__item { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 13px 0; border-top: 1px solid var(--border); text-decoration: none; color: var(--mba-blue-deep); }
.more-nav__item:first-child { border-top: 0; padding-top: 2px; }
.more-nav__item:last-child { padding-bottom: 0; }
.more-nav__label { font-size: 1rem; font-weight: 600; line-height: 1.45; }
.more-nav__item:hover .more-nav__label { text-decoration: underline; }
.more-nav__item .arr { color: var(--text-muted); flex: none; transition: transform .2s ease; }
.more-nav__item:hover .arr { transform: translateX(3px); }

/* Figures band, 6-up milestones variant (Historical Overview): 6 desktop,
   3 tablet, 2 mobile. Additive — the default 4-up grid is unchanged. */
.figures__grid--cols6 { grid-template-columns: repeat(6, 1fr); }

@media (max-width: 1023.98px) {
  .mica-intro { grid-template-columns: 1fr; gap: 28px; padding-left: 32px; padding-right: 32px; }
  .mica-intro__media { min-height: 0; height: 320px; }
  .figures__grid--cols6 { grid-template-columns: repeat(3, 1fr); gap: 36px 28px; }
}
@media (max-width: 640px) {
  .mica-intro { padding: 64px 22px; }
  .mica-intro__media { height: 240px; }
  .figures__grid--cols6 { grid-template-columns: repeat(2, 1fr); gap: 32px 22px; }
}

/* =====================================================================
   STAFF (About > Staff): full-width body on the shared .std-layout--solo.
   The roster is a 3-up text-card grid (NO photos); the Speakers Bureau
   section (merged in from the retired standalone page) carries the intro
   prose, a structured contact line, a footnote, and two speaker profiles
   with 4:5 headshots. Page-scoped (.stf-* / .sb-*), additive only — no
   shared rule touched (the .std-layout--solo container is reused as-is).
   Ported byte-faithfully from html/about/staff/index.html.
   ===================================================================== */
.stf-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 36px 32px; }
.stf-card__name { font-size: 1.0625rem; font-weight: 700; line-height: 1.3; color: var(--text); margin: 0; }
.stf-card__role { font-size: 0.9375rem; line-height: 1.4; color: var(--text-muted); margin: 4px 0 0; }
.stf-card__email { display: inline-block; font-size: 0.9375rem; font-weight: 600; line-height: 1.4; color: var(--mba-blue-deep); text-decoration: none; margin: 7px 0 0; word-break: break-word; }
.stf-card__email:hover { text-decoration: underline; }

.stf-sb { margin-top: 64px; padding-top: 56px; border-top: 1px solid var(--border); }
.stf-sb__title { font-size: clamp(1.6rem, 2.4vw, 2.1rem); font-weight: 700; line-height: 1.2; letter-spacing: -0.015em; color: var(--text); margin: 0; }
.stf-sb__body { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 16px 0 0; }

.sb-prose { margin-top: 20px; }
.sb-prose > * + * { margin-top: 20px; }
.sb-prose p { font-size: 1.0625rem; line-height: 1.7; color: var(--text); }
.sb-prose a:not(.btn) { color: var(--mba-blue-deep); text-decoration: none; font-weight: 600; }
.sb-prose a:not(.btn):hover { text-decoration: underline; }
.sb-prose strong { font-weight: 700; }
.sb-contact { margin-top: 24px; }
.sb-contact a { color: var(--mba-blue-deep); text-decoration: none; font-weight: 600; }
.sb-contact a:hover { text-decoration: underline; }
.sb-foot { font-size: 0.875rem; line-height: 1.6; color: var(--text-muted); }

.sb-speakers { margin-top: 64px; padding-top: 56px; border-top: 1px solid var(--border); }
.sb-speakers__label { font-size: clamp(1.6rem, 2.4vw, 2.1rem); font-weight: 700; line-height: 1.2; letter-spacing: -0.015em; color: var(--text); margin: 0 0 40px; }
.sb-speaker { display: grid; grid-template-columns: 200px minmax(0,1fr); gap: 36px; align-items: start; }
.sb-speaker + .sb-speaker { margin-top: 48px; padding-top: 48px; border-top: 1px solid var(--border); }
.sb-speaker__photo { aspect-ratio: 4 / 5; border-radius: var(--radius-card); overflow: hidden; background: var(--text); margin: 0; }
.sb-speaker__photo img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; }
.sb-speaker__name { font-size: 1.3rem; font-weight: 700; line-height: 1.2; letter-spacing: -0.01em; color: var(--text); margin: 0; }
.sb-speaker__role { font-size: 0.9375rem; line-height: 1.4; color: var(--text-muted); margin: 4px 0 18px; }
.sb-speaker__bio > p { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 0; }
.sb-speaker__bio > p + p { margin-top: 16px; }

@media (max-width: 1023.98px) {
  .stf-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 640px) {
  .stf-grid { grid-template-columns: 1fr; gap: 26px; }
  .sb-speaker { grid-template-columns: 140px minmax(0,1fr); gap: 20px; }
}

/* =====================================================================
   COMMITTEES (About > Committees): full-width body on .std-layout--solo.
   An expanded list (no accordion), one .cm row per committee: content left
   (name, prose or disc bullets, optional note + external link) beside a
   chair/staff meta column. A .cm__row--full variant drops the meta column
   for the President's Council roster. Page-scoped (.cm-*), additive only.
   Ported byte-faithfully from html/about/committees/index.html.
   ===================================================================== */
.cm { padding-top: 48px; margin-top: 48px; border-top: 1px solid var(--border); }
.cm:first-child { padding-top: 0; margin-top: 0; border-top: 0; }
.cm__row { display: grid; grid-template-columns: minmax(0,40rem) minmax(0,1fr); gap: 64px; align-items: start; }
.cm__row--full { grid-template-columns: 1fr; }
.cm__main { min-width: 0; }
.cm__name { font-size: clamp(1.4rem, 2.2vw, 1.8rem); font-weight: 700; line-height: 1.2; letter-spacing: -0.015em; color: var(--text); margin: 0 0 16px; }
.cm__body { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 0; max-width: 40rem; }
.cm__body + .cm__body { margin-top: 16px; }
.cm__bullets { margin: 0; padding-left: 22px; list-style: disc; max-width: 40rem; }
.cm__bullets li { font-size: 1.0625rem; line-height: 1.6; color: var(--text); }
.cm__bullets li + li { margin-top: 8px; }
.cm__note { font-size: 0.9375rem; line-height: 1.6; color: var(--text-muted); margin: 16px 0 0; max-width: 40rem; }
.cm__link { display: inline-flex; align-items: center; gap: 7px; margin-top: 16px; color: var(--mba-blue-deep); font-weight: 600; text-decoration: none; }
.cm__link:hover { text-decoration: underline; }
.cm__link .ext { font-size: 12px; opacity: .65; }
.cm__meta { min-width: 0; }
.cm-person + .cm-person { margin-top: 16px; }
.cm-person__name { font-size: 1rem; font-weight: 700; line-height: 1.3; color: var(--text); margin: 0; }
.cm-person__org { font-size: 0.9375rem; line-height: 1.45; color: var(--text-muted); margin: 2px 0 0; }
.cm-staff { font-size: 0.9375rem; line-height: 1.5; margin: 18px 0 0; }
.cm-staff:first-child { margin-top: 0; }
.cm-staff__label { font-weight: 700; color: var(--text); }
.cm-staff__names { /* color: var(--mba-blue-deep); */ font-weight: 600; }
.cm-roster { list-style: none; margin: 18px 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 12px 40px; }
.cm-roster li { font-size: 1rem; line-height: 1.45; color: var(--text-muted); }
.cm-roster .nm { font-weight: 700; color: var(--text); }

@media (max-width: 1023.98px) {
  .cm__row { grid-template-columns: minmax(0,1.5fr) minmax(0,1fr); gap: 48px; }
  .cm-roster { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 640px) {
  .cm__row { grid-template-columns: 1fr; gap: 22px; }
  .cm-roster { grid-template-columns: 1fr; }
}

/* =====================================================================
   CARING FOR OUR COMMUNITY (About > Caring): a full-width subpage, NO aside.
   The shared white .std-head header gains a .std-deck sub-title (rendered by
   the hero block's optional Deck field), then a single full-width column: a
   constrained intro measure and a three-up row of charity logo cards (white
   logo tile, name, body, bottom-aligned blue "Learn more" text link). Page-
   scoped (.std-deck / .cc-*), additive only. Ported byte-faithfully from
   html/about/caring-for-our-community/index.html.
   ===================================================================== */
.std-deck { font-size: 1.125rem; line-height: 1.6; color: var(--text-muted); margin: 16px 0 0; max-width: 70ch; }
.cc-body { max-width: var(--container); margin: 0 auto; padding: 64px 40px 96px; }
.cc-intro { max-width: 720px; font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 0; }
.cc-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 30px 44px; margin-top: 40px; }
.cc-card { display: flex; flex-direction: column; }
.cc-card__tile { display: flex; align-items: center; justify-content: center; height: 150px; padding: 28px; background: #fff; border: 1px solid var(--border); border-radius: 10px; }
.cc-card__tile img { max-height: 90px; width: auto; max-width: 100%; object-fit: contain; }
.cc-card__name { font-size: 1.25rem; font-weight: 700; line-height: 1.3; color: var(--text); margin: 22px 0 0; }
.cc-card__body { font-size: 0.9375rem; line-height: 1.6; color: var(--text); margin: 12px 0 0; }
.cc-card__more { display: inline-flex; align-items: center; gap: 6px; align-self: flex-start; margin-top: auto; padding-top: 18px; color: var(--mba-blue-deep); font-weight: 600; font-size: 0.9375rem; text-decoration: none; }
.cc-card__more .arr { transition: transform .2s ease; }
.cc-card__more:hover .link-label, .cc-card__more:focus .link-label { text-decoration: underline; }
.cc-card__more:hover .arr { transform: translateX(3px); }

@media (max-width: 1023.98px) {
  .cc-body { padding: 56px 32px 72px; }
}
@media (max-width: 880px) {
  .cc-grid { grid-template-columns: 1fr; gap: 28px; }
}
@media (max-width: 640px) {
  .cc-body { padding: 48px 22px 64px; }
}

/* =====================================================================
   ABOUT LANDING rework (ID 11): the "Who we are" 5/7 editorial band, the
   "Our Story" timeline, and the "More about the MBA" explore grid. The
   existing .who-sec (bg-muted) and shared .about-narrative__title /
   .about-prose / .about-link are reused; .who-wrap is a page-scoped
   container so it does NOT collide with the theme's rail-grid .std-layout.
   Page-scoped, additive only. Ported byte-faithfully from html/about.html.
   ===================================================================== */
.who-wrap { max-width: var(--container); margin: 0 auto; padding: 72px 40px 96px; }
.who-grid { display: grid; grid-template-columns: minmax(0,5fr) minmax(0,7fr); gap: 72px; align-items: start; }
.who-grid__head { min-width: 0; }
.who-grid__head .about-narrative__title { max-width: none; }
.who-grid .about-prose { min-width: 0; max-width: 68ch; }

.about-insert { max-width: calc(var(--container) - 80px); margin: 0 auto; }
.about-insert__title { font-size: clamp(1.7rem, 2.6vw, 2.3rem); font-weight: 700; line-height: 1.16; letter-spacing: -0.02em; color: var(--text); margin: 14px 0 0; max-width: 24ch; }
.about-insert__lead { font-size: 1.125rem; line-height: 1.6; color: var(--text-muted); margin: 14px 0 0; max-width: 62ch; }

.timeline { margin-top: 52px; }
.tl-entry { display: grid; grid-template-columns: 104px 1fr; gap: 36px; align-items: start; }
.tl-year { font-size: 1.5rem; font-weight: 800; line-height: 1.2; letter-spacing: -0.02em; color: var(--mba-blue); font-variant-numeric: tabular-nums; text-align: right; padding-top: 14px; }
.tl-text { position: relative; border-left: 2px solid var(--border); padding: 14px 0 40px 38px; }
.tl-entry:last-child .tl-text { padding-bottom: 0; }
.tl-text::before { content: ""; position: absolute; box-sizing: border-box; left: -8px; top: 20px; width: 16px; height: 16px; border-radius: 50%; background: var(--mba-blue); border: 3px solid var(--bg); }
.tl-text p { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 0; max-width: 72ch; }

.explore__grid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 24px; margin-top: 44px; }
.exp-card { display: flex; flex-direction: column; background: #fff; border: 1px solid #E3E6EA; border-radius: 10px; padding: 26px 26px 24px; text-decoration: none; transition: border-color .2s ease; }
.exp-card:hover, .exp-card:focus-visible { border-color: var(--mba-blue); }
.exp-card__title { font-size: 1.1875rem; font-weight: 700; line-height: 1.25; letter-spacing: -0.01em; color: var(--text); margin: 0; }
.exp-card__body { font-size: 0.9375rem; line-height: 1.6; color: var(--text-muted); margin: 12px 0 0; }
.exp-card__more { display: inline-flex; align-items: center; gap: 6px; margin-top: auto; padding-top: 22px; color: var(--mba-blue-deep); font-weight: 600; font-size: 0.9375rem; }
.exp-card__more .arr { transition: transform .2s ease; }
.exp-card:hover .exp-card__more .link-label, .exp-card:focus-visible .exp-card__more .link-label { text-decoration: underline; }
.exp-card:hover .exp-card__more .arr, .exp-card:focus-visible .exp-card__more .arr { transform: translateX(3px); }

@media (max-width: 1023.98px) {
  .who-wrap { padding: 56px 32px 72px; }
  .who-grid { grid-template-columns: 1fr; gap: 26px; }
  .explore__grid { grid-template-columns: repeat(2, minmax(0,1fr)); gap: 22px; }
}
@media (max-width: 640px) {
  .who-wrap { padding: 48px 22px 64px; }
  .tl-entry { grid-template-columns: 1fr; gap: 4px; }
  .tl-year { text-align: left; padding-top: 0; }
  .tl-text { border-left: 0; padding: 4px 0 26px; }
  .tl-text::before { display: none; }
  .explore__grid { grid-template-columns: 1fr; gap: 18px; }
}

/* CAP body — two equal .std-prose columns (Board of Trustees | Contributors /
   Annual Scholarship / Publications) inside .std-main, on the std-layout twocol
   variant. Additive; ported from html/about/construction-advancement-program-cap. */
.cap-body { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 72px; align-items: start; }
@media (max-width: 1023.98px) {
  .cap-body { grid-template-columns: 1fr; gap: 48px; }
}

/* =====================================================================
   WORKFORCE DEVELOPMENT (Training & Services > Workforce Development)
   Standard Content sub-page, single column at the standard container width
   (no aside). The shared .std-head + .std-card chrome from above are reused
   as-is. Only the page-scoped .wd-* selectors are added here, additively
   (no shared rule modified). Ported byte-faithfully from
   html/training-services/workforce-development/index.html.
   ===================================================================== */
.wd-body { max-width: var(--container); margin: 0 auto; padding: 56px 40px 96px; }
.wd-lead { font-size: 1.1875rem; line-height: 1.7; color: var(--text); margin: 0 0 48px; max-width: 76ch; }
.wd-sec + .wd-sec { margin-top: 56px; }
.wd-link { color: var(--mba-blue-deep); text-decoration: none; font-weight: 600; }
.wd-link:hover { text-decoration: underline; }

/* Section 1: one full-width pathway card (BuildWPA). The 52px side padding
   matches the Ground Up feature panel (.wd-feature) so the two sections'
   content edges line up; it tracks the panel's sides at each breakpoint. */
.wd-twoup { display: grid; grid-template-columns: 1fr; gap: 24px; }
.wd-block { display: flex; flex-direction: column; padding-left: 52px; padding-right: 52px; }
/* Shared modest image treatment for all three content images (pathway logos
   + Ground Up banner): contained at a consistent 140px height, left-aligned,
   never full-width. Subordinate to the copy. */
.wd-block__logo,
.wd-block__img,
.wd-feature__img { display: block; height: 140px; width: auto; max-width: 100%; object-fit: contain; margin: 0 0 16px; }
.wd-block__img,
.wd-feature__img { border-radius: var(--radius-card); }
.wd-block__name { font-size: 1.3125rem; font-weight: 700; line-height: 1.2; letter-spacing: -0.01em; color: var(--text); margin: 0; }
.wd-block__body { font-size: 1rem; line-height: 1.65; color: var(--text-muted); margin: 10px 0 0; }
.wd-block__link { margin: auto 0 0; padding-top: 20px; }

/* Section 2: Ground Up Construction feature panel, on the cool blue tint. */
.wd-feature { background: var(--bg-blue-tint); border-radius: var(--radius-card); padding: 52px 52px 56px; }
.wd-feature__head { display: flex; align-items: center; gap: 36px; }
.wd-feature__head .wd-feature__img { margin: 0; flex: 0 0 auto; }
.wd-feature__intro-col { min-width: 0; }
.wd-feature__title { font-size: clamp(2rem, 3.2vw, 2.7rem); font-weight: 800; line-height: 1.06; letter-spacing: -0.025em; color: var(--text); margin: 0; }
.wd-feature__intro { font-size: 1.1875rem; line-height: 1.6; color: var(--text); margin: 16px 0 0; max-width: 66ch; }
.wd-parts { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 40px; margin-top: 38px; }
.wd-part__title { font-size: 1.25rem; font-weight: 700; line-height: 1.2; letter-spacing: -0.01em; color: var(--text); margin: 0 0 10px; }
.wd-part__body { font-size: 1rem; line-height: 1.65; color: var(--text); margin: 0; }
.wd-play { margin-top: 40px; }
.wd-play__title { font-size: 1.25rem; font-weight: 700; line-height: 1.2; letter-spacing: -0.01em; color: var(--text); margin: 0 0 14px; }
.wd-play__list { list-style: disc; margin: 0; padding-left: 1.3em; max-width: 80ch; }
.wd-play__list li { margin: 0 0 10px; padding-left: 4px; line-height: 1.6; color: var(--text); }
.wd-play__list li:last-child { margin-bottom: 0; }

/* Download row: label over two matched store buttons. Neutral navy (the App
   Store badge rule); orange stays the single primary action on the page. */
.wd-download { margin-top: 42px; }
.wd-download__label { font-size: 1.0625rem; font-weight: 700; line-height: 1.3; color: var(--text); margin: 0 0 16px; }
.wd-stores { display: flex; flex-wrap: wrap; gap: 14px; }
.wd-store { display: inline-flex; align-items: center; gap: 12px; min-width: 210px; padding: 10px 22px; background: var(--bg-dark); color: var(--text-on-dark); border-radius: var(--radius-button); text-decoration: none; transition: transform .08s ease, background .2s ease; }
.wd-store:hover { background: #16263b; transform: scale(1.015); }
.wd-store:active { transform: scale(0.99); }
.wd-store__glyph { display: inline-flex; flex: 0 0 auto; }
.wd-store__glyph svg { width: 24px; height: 24px; display: block; fill: #fff; }
.wd-store__txt { display: flex; flex-direction: column; line-height: 1.08; }
.wd-store__top { font-size: 0.6875rem; font-weight: 500; letter-spacing: 0.01em; }
.wd-store__name { font-size: 1.1875rem; font-weight: 700; letter-spacing: -0.01em; }

@media (max-width: 1023.98px) {
  .wd-body { padding: 48px 32px 72px; }
  .wd-feature { padding: 40px 36px 44px; }
  .wd-block { padding-left: 36px; padding-right: 36px; }
}
@media (max-width: 640px) {
  .wd-body { padding: 40px 22px 64px; }
  .wd-twoup { gap: 18px; }
  .wd-feature { padding: 32px 24px 36px; }
  .wd-block { padding-left: 24px; padding-right: 24px; }
  .wd-feature__head { flex-direction: column; align-items: stretch; gap: 18px; }
  .wd-parts { grid-template-columns: 1fr; gap: 28px; }
  .wd-store { flex: 1 1 100%; min-width: 0; justify-content: center; }
  .wd-block__logo, .wd-block__img { margin-left: auto; margin-right: auto; }
  .wd-feature__head .wd-feature__img { margin-left: auto; margin-right: auto; }
}

/* =====================================================================
   STANDARD HEADER TAGLINE (additive component)
   Optional bold one-liner that renders under .std-deck on interior_light
   heroes (the Education "What you learn in class today..." line). Empty
   by default → harmless on every other Standard Content page.
   ===================================================================== */
.std-tagline { font-size: 1.0625rem; font-weight: 600; line-height: 1.5; color: var(--text); margin: 12px 0 0; }

/* =====================================================================
   EDUCATION (Training & Services > Education)
   Standard Content sub-page, single full-width column at the standard
   container width. The shared .std-head + .std-card chrome from above are
   reused as-is; only the page-scoped .edu-* selectors are added here,
   additively. Body cards' rich-text region (.edu-block__rt) carries the
   wysiwyg child-element styling so the rendered <p>/<h3>/<ul>/<a> match
   the prototype's .edu-block__body / .edu-sub__title / .edu-list / .edu-ilink.
   Ported from html/training-services/education/index.html.
   ===================================================================== */
.edu-body { max-width: var(--container); margin: 0 auto; padding: 56px 40px 96px; }
.edu-block { display: grid; grid-template-columns: 200px minmax(0,1fr); gap: 36px; align-items: start; }
.edu-block + .edu-block { margin-top: 24px; }
.edu-logobox { width: 200px; height: 140px; display: flex; align-items: center; justify-content: center; }
.edu-block__img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; border-radius: 8px; display: block; }
.edu-block__content { min-width: 0; }
.edu-block__title { font-size: clamp(1.5rem, 2.4vw, 2rem); font-weight: 700; line-height: 1.15; letter-spacing: -0.02em; color: var(--text); margin: 0; }

/* Rich-text body (wysiwyg) inside an offering card. Children styled to match
   the prototype's structured spacing/typography. */
.edu-block__rt { margin-top: 16px; max-width: 74ch; }
.edu-block__rt > p { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 14px 0 0; }
.edu-block__rt > p:first-child { margin-top: 0; }
.edu-block__rt > h3 { font-size: 1.1875rem; font-weight: 700; line-height: 1.25; letter-spacing: -0.01em; color: var(--text); margin: 24px 0 0; }
.edu-block__rt > h3 + p { margin-top: 10px; }
.edu-block__rt > ul { list-style: disc; padding-left: 1.3em; margin: 14px 0 0; }
.edu-block__rt > ul > li { font-size: 1.0625rem; line-height: 1.6; color: var(--text); margin: 0 0 8px; padding-left: 4px; }
.edu-block__rt > ul > li:last-child { margin-bottom: 0; }
.edu-block__rt a { color: var(--mba-blue-deep); text-decoration: none; font-weight: 600; }
.edu-block__rt a:hover { text-decoration: underline; }
/* A solo-bold paragraph inside the body reads as a subhead (the prototype's
   .edu-block__subhead pattern: a bold lead line between paragraphs). Mary
   writes it as a paragraph of all-bold text in the wysiwyg. */
.edu-block__rt > p strong:only-child { display: block; font-size: 1.125rem; font-weight: 700; line-height: 1.3; }

/* Route-in link under the card body. */
.edu-link { display: inline-flex; align-items: center; gap: 7px; margin-top: 20px; color: var(--mba-blue-deep); font-weight: 600; font-size: 1rem; text-decoration: none; }
.edu-link .arr { transition: transform .2s ease; }
.edu-link:hover .link-label, .edu-link:focus-visible .link-label { text-decoration: underline; }
.edu-link:hover .arr, .edu-link:focus-visible .arr { transform: translateX(3px); }

@media (max-width: 1023.98px) {
  .edu-body { padding: 48px 32px 72px; }
}
@media (max-width: 640px) {
  .edu-body { padding: 40px 22px 64px; }
  .edu-block { grid-template-columns: 1fr; gap: 20px; }
  .edu-logobox { justify-self: center; }
}

/* =====================================================================
   MBA U (Training & Services > Education > MBA U)
   Standard Content sub-page (3 levels deep). The shared .std-head with
   media_style=logo carries the MICA-style two-column header (text left,
   MBA U logo right). The body is one full-width column at the standard
   container width with intro + 4 feature cards + 3 course-list sections.
   Additive only; ported from html/training-services/education/mba-u/.
   ===================================================================== */
.mbu-body { max-width: var(--container); margin: 0 auto; padding: 64px 40px 96px; }
.mbu-h2 { font-size: clamp(1.6rem, 2.6vw, 2.2rem); font-weight: 700; line-height: 1.15; letter-spacing: -0.02em; color: var(--text); margin: 0; }
.mbu-tagline { font-size: 1.125rem; font-weight: 600; line-height: 1.45; color: var(--text); margin: 10px 0 0; }
.mbu-intro { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 18px 0 0; max-width: 80ch; }
.mbu-intro--rt > p { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 18px 0 0; max-width: 80ch; }
.mbu-intro--rt > p:first-child { margin-top: 18px; }
.mbu-intro--rt a { color: var(--mba-blue-deep); text-decoration: none; font-weight: 600; }
.mbu-intro--rt a:hover { text-decoration: underline; }

/* Four feature cards: 4-up on desktop, 2-up on tablet, 1-up on mobile. */
.mbu-cards { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 24px; margin-top: 40px; }
.mbu-card__title { font-size: 1.0625rem; font-weight: 700; line-height: 1.3; letter-spacing: -0.01em; color: var(--text); margin: 0; }
.mbu-card__text { font-size: 0.9375rem; line-height: 1.55; color: var(--text-muted); margin: 8px 0 0; }

/* Course sections with hairline divider, then a 2- or 3-column course list. */
.mbu-sec { margin-top: 52px; padding-top: 52px; border-top: 1px solid var(--border); }
.mbu-sec__title { font-size: clamp(1.5rem, 2.3vw, 2rem); font-weight: 700; line-height: 1.18; letter-spacing: -0.02em; color: var(--text); margin: 0; }
.mbu-sec__intro { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 14px 0 0; max-width: 84ch; }

/* Course lists: markers sit OUTSIDE the text (absolute dot), so wrapped lines
   indent under the text and never hang under the bullet. */
.course-list { list-style: none; margin: 22px 0 0; padding: 0; column-gap: 2.5rem; }
.course-list.cols-2 { column-count: 2; }
.course-list.cols-3 { column-count: 3; }
.course-list li { break-inside: avoid; position: relative; padding-left: 1.25rem; margin: 0 0 .5rem; line-height: 1.45; font-size: 1.0625rem; color: var(--text); }
.course-list li::before { content: ""; position: absolute; left: 0; top: .55em; width: 6px; height: 6px; border-radius: 50%; background: var(--mba-blue-deep); }
.course-list a { color: var(--mba-blue-deep); text-decoration: none; font-weight: 500; }
.course-list a:hover { text-decoration: underline; }

/* Closing line. */
.mbu-closing { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 44px 0 0; }
.mbu-closing--rt > p { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 0; }
.mbu-closing--rt > p + p { margin-top: 18px; }
.mbu-closing--rt a { color: var(--mba-blue-deep); text-decoration: none; font-weight: 600; }
.mbu-closing--rt a:hover { text-decoration: underline; }

@media (max-width: 1023.98px) {
  .mbu-body { padding: 48px 32px 72px; }
  .mbu-cards { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 768px) {
  .course-list.cols-2, .course-list.cols-3 { column-count: 1; }
}
@media (max-width: 640px) {
  .mbu-body { padding: 40px 22px 64px; }
  .mbu-cards { grid-template-columns: 1fr; gap: 18px; }
}

/* =====================================================================
   FLASH WEBINARS / MEDIA SHOWCASE TEMPLATE (page-scoped)
   A grid-of-media interior template: 2-column grid of video cards on
   desktop, 1-column on mobile. No card chrome (no boxes, borders, drop
   shadows); hierarchy comes from size and weight. Each card is a
   lazy-load YouTube facade — poster only on load, real player on click
   (handled in assets/js/site.js). Ported byte-faithfully from
   html/services/education/flash-webinars/index.html.
   ===================================================================== */
.sc-sec { background: var(--bg); padding: 72px 0 96px; }
.sc { max-width: var(--container); margin: 0 auto; padding: 0 40px; }
.sc-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 60px 48px; }

.sc-card { display: flex; flex-direction: column; }
.sc-card__media { position: relative; }
.sc-card__media--video { aspect-ratio: 16 / 9; border-radius: var(--radius-card); overflow: hidden; background: var(--bg-dark); }
.sc-card__body { padding-top: 20px; }
.sc-card__title { font-size: 1.3rem; font-weight: 700; line-height: 1.25; letter-spacing: -0.015em; color: var(--text); margin: 0; }
.sc-card__meta { font-size: 1rem; line-height: 1.55; color: var(--text-muted); margin: 8px 0 0; max-width: 52ch; }
.sc-card__resources { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; margin: 14px 0 0; }
.sc-card__resource { display: inline-flex; align-items: center; gap: 8px; font-size: 0.95rem; font-weight: 600; color: var(--mba-blue-deep); text-decoration: none; }
.sc-card__resource:hover { text-decoration: underline; }
.sc-card__resource .ico { color: var(--text-muted); }

/* Lazy YouTube facade. The veil and play button render on the poster;
   site.js swaps the facade for a real iframe on click. */
.vfacade { position: absolute; inset: 0; width: 100%; height: 100%; display: block; border: 0; padding: 0; cursor: pointer; background: var(--bg-dark); border-radius: var(--radius-card); }
.vfacade:focus-visible { outline: 3px solid var(--mba-blue); outline-offset: -3px; }
.vfacade__poster { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .6s ease; }
.vfacade::after { content: ""; position: absolute; inset: 0; background: rgba(14,26,43,.18); transition: background .25s ease; }
.vfacade:hover .vfacade__poster, .vfacade:focus-visible .vfacade__poster { transform: scale(1.04); }
.vfacade:hover::after, .vfacade:focus-visible::after { background: rgba(14,26,43,.30); }
.vfacade__play { position: absolute; inset: 0; margin: auto; width: 66px; height: 66px; z-index: 2; display: flex; align-items: center; justify-content: center; background: #fff; border-radius: var(--radius-card); color: var(--text); transition: transform .2s ease; }
.vfacade__play svg { display: block; fill: currentColor; margin-left: 3px; }
.vfacade:hover .vfacade__play, .vfacade:focus-visible .vfacade__play { transform: scale(1.06); }
.vfacade__player { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: block; }

@media (max-width: 1023.98px) {
  .sc-sec { padding: 56px 0 72px; }
  .sc { padding: 0 32px; }
  .sc-grid { gap: 48px 32px; }
}
@media (max-width: 640px) {
  .sc-sec { padding: 48px 0 64px; }
  .sc { padding: 0 22px; }
  .sc-grid { grid-template-columns: 1fr; gap: 40px; }
}
@media (prefers-reduced-motion: reduce) {
  .vfacade__poster, .vfacade__play, .vfacade::after { transition: none; }
}

/* =====================================================================
   RESOURCES (Training & Services > Resources)
   Standard Content sub-page, single full-width column at the standard
   container width. Three sections divided by hairline rules: For members
   (2-up cards), MBA Services Directory (intro + note + multi-column A–Z
   list), Industry Resources (groups of multi-column external link lists).
   Ported from html/training-services/resources/index.html.
   ===================================================================== */
.res-body { max-width: var(--container); margin: 0 auto; padding: 64px 40px 96px; }
.res-sec + .res-sec { margin-top: 64px; padding-top: 60px; border-top: 1px solid var(--border); }
.res-sec__title { font-size: clamp(1.6rem, 2.4vw, 2.1rem); font-weight: 700; line-height: 1.15; letter-spacing: -0.015em; color: var(--text); margin: 0 0 26px; }
.res-link { color: var(--mba-blue-deep); text-decoration: none; font-weight: 600; }
.res-link:hover { text-decoration: underline; }

/* Section 1 — For members: a 2-up of compact cards. */
.res-members { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 24px; }
.res-member__name { font-size: 1.1875rem; font-weight: 700; line-height: 1.25; letter-spacing: -0.01em; color: var(--text); margin: 0; }
.res-member__body { font-size: 1rem; line-height: 1.6; color: var(--text-muted); margin: 8px 0 0; }
.res-member__link { margin: 16px 0 0; }
.res-member__note { font-size: 0.9375rem; line-height: 1.6; color: var(--text-muted); margin: 14px 0 0; }
.res-member__note a { color: var(--mba-blue-deep); text-decoration: none; font-weight: 600; }
.res-member__note a:hover { text-decoration: underline; }

/* Section 2 — MBA Services Directory: A-Z list, multi-column. */
.dir-intro { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 0; max-width: 88ch; }
.dir-note  { font-size: 0.9375rem; line-height: 1.6; color: var(--text-muted); margin: 12px 0 0; }
.dir-note a { color: var(--mba-blue-deep); text-decoration: none; font-weight: 600; }
.dir-note a:hover { text-decoration: underline; }
.dir-list { list-style: none; margin: 30px 0 0; padding: 0; columns: 3; column-gap: 44px; }
.dir-item { break-inside: avoid; margin: 0 0 18px; }
.dir-item__svc { display: block; font-weight: 700; color: var(--text); line-height: 1.35; }
.dir-item__contact { display: block; font-size: 0.9375rem; line-height: 1.5; margin-top: 2px; }
.dir-item__contact a { color: var(--mba-blue-deep); text-decoration: none; font-weight: 500; }
.dir-item__contact a:hover { text-decoration: underline; }

/* Section 3 — Industry Resources: grouped multi-column link lists. */
.res-group + .res-group { margin-top: 40px; }
.res-group__label { font-size: 1.0625rem; font-weight: 700; line-height: 1.3; color: var(--text); margin: 0 0 18px; }
.res-list { list-style: none; margin: 0; padding: 0; columns: 3; column-gap: 44px; }
.res-list li { break-inside: avoid; margin: 0 0 13px; }
.res-list a { color: var(--mba-blue-deep); text-decoration: none; font-weight: 500; line-height: 1.45; }
.res-list a:hover { text-decoration: underline; }

@media (max-width: 1023.98px) {
  .res-body { padding: 56px 32px 72px; }
  .res-list { columns: 2; column-gap: 36px; }
  .dir-list { columns: 2; column-gap: 36px; }
}
@media (max-width: 640px) {
  .res-body { padding: 48px 22px 64px; }
  .res-members { grid-template-columns: 1fr; gap: 18px; }
  .res-list { columns: 1; }
  .dir-list { columns: 1; }
}

/* =====================================================================
   ADVOCACY (Training & Services > Advocacy)
   Standard Content sub-page, single column at the standard container
   width. Two sections (Labor Relations + Legislation) split by a hairline.
   Ported from html/training-services/advocacy/index.html.
   ===================================================================== */
.adv-body { max-width: var(--container); margin: 0 auto; padding: 56px 40px 96px; }
.adv-sec + .adv-sec { margin-top: 60px; padding-top: 60px; border-top: 1px solid var(--border); }
.adv-sec__head { margin: 0 0 24px; }
.adv-sec__title { font-size: clamp(1.7rem, 2.6vw, 2.2rem); font-weight: 700; line-height: 1.12; letter-spacing: -0.02em; color: var(--text); margin: 0; }
.adv-sec__body { min-width: 0; }
.adv-sec__body > * { margin: 0; }
.adv-sec__body > * + * { margin-top: 18px; }
.adv-sec__body p { font-size: 1.0625rem; line-height: 1.7; color: var(--text); }
.adv-sec__body > p { max-width: 72ch; }
.adv-link { color: var(--mba-blue-deep); text-decoration: none; font-weight: 600; }
.adv-link:hover { text-decoration: underline; }
.adv-sec__body a { color: var(--mba-blue-deep); text-decoration: none; font-weight: 600; }
.adv-sec__body a:hover { text-decoration: underline; }

/* Two national org cards (AGC, TAUC): the shared Explore card component
   (.exp-card, About hub / Safety landing) — whole card links out, blue
   border on hover, "Learn more" + the external ↗ marker (no slide). Only
   the grid wrapper and the ext sizing are advocacy-scoped. */
.adv-orgs { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 24px; }
.adv-sec__body > .adv-orgs { margin-top: 22px; }
.exp-card__more .ext { font-size: 12px; opacity: .65; }
/* Guard the card against the generic .adv-sec__body link/paragraph rules
   above (whole-card underline on hover, 1.0625rem body, inherited 600). */
.adv-sec__body a.exp-card:hover, .adv-sec__body a.exp-card:focus-visible { text-decoration: none; }
.adv-orgs .exp-card__body { font-size: 0.9375rem; line-height: 1.6; color: var(--text-muted); font-weight: 400; }

/* Services bullet list. */
.adv-list { list-style: disc; padding-left: 1.3em; max-width: 72ch; }
.adv-list li { font-size: 1.0625rem; line-height: 1.6; color: var(--text); margin: 0 0 10px; padding-left: 4px; }
.adv-list li:last-child { margin-bottom: 0; }

/* Federal / State / Local 3-up. */
.adv-parts { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 24px; }
.adv-sec__body > .adv-parts { margin-top: 24px; }
.adv-part { display: flex; flex-direction: column; }
.adv-part__title { font-size: 1.1875rem; font-weight: 700; line-height: 1.25; letter-spacing: -0.01em; color: var(--text); margin: 0 0 10px; }
.adv-parts .adv-part p { font-size: 1rem; line-height: 1.6; color: var(--text-muted); }

/* PA Separations Act sub-section. */
.adv-sec__body > .adv-sub { margin-top: 36px; }
.adv-sub__title { font-size: 1.1875rem; font-weight: 700; line-height: 1.25; letter-spacing: -0.01em; color: var(--text); margin: 0 0 10px; }
.adv-sub > p { max-width: 72ch; }

/* Separations Act download cards. */
.adv-dl { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 18px; margin-top: 22px; }
.adv-dl__card { display: flex; flex-direction: column; text-decoration: none; transition: border-color .2s ease; }
.adv-dl__card:hover, .adv-dl__card:focus-visible { border-color: var(--mba-blue); }
.adv-dl__icon { color: var(--mba-blue-deep); margin-bottom: 14px; }
.adv-dl__title { font-size: 1rem; font-weight: 700; line-height: 1.4; letter-spacing: -0.005em; color: var(--text); }
.adv-dl__cue { display: inline-flex; align-items: center; gap: 7px; margin-top: auto; padding-top: 18px; color: var(--mba-blue-deep); font-weight: 600; font-size: 0.9375rem; }
.adv-dl__card:hover .adv-dl__cue .link-label,
.adv-dl__card:focus-visible .adv-dl__cue .link-label { text-decoration: underline; }

@media (max-width: 1023.98px) {
  .adv-body { padding: 48px 32px 72px; }
  .adv-sec + .adv-sec { margin-top: 48px; padding-top: 48px; }
  .adv-parts { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .adv-body { padding: 40px 22px 64px; }
  .adv-orgs { grid-template-columns: 1fr; }
  .adv-dl { grid-template-columns: 1fr; gap: 14px; }
}

/* =====================================================================
   TRAINING & SERVICES HUB (the .ts-* and .svc-* page-scoped components)
   Hub-page styles built on the shared chrome: a light .sec--bg intro
   band, a .sec--muted services launcher row, and a .sec--bg photo+navy
   safety callout. The shared .about-hero (dark) handles the hero band.
   Ported from html/training-services.html.
   ===================================================================== */
.ts-hero__intro { font-size: 1.2rem; line-height: 1.6; color: var(--text-on-dark-muted); margin: 22px 0 0; max-width: 56ch; }

.ts-wrap { max-width: var(--container); margin: 0 auto; padding: 120px 40px; }

/* Intro: 5/7 editorial. */
.ts-intro { display: grid; grid-template-columns: minmax(0,5fr) minmax(0,7fr); gap: 72px; align-items: start; }
.ts-intro__head { min-width: 0; }
.ts-intro__title { font-size: clamp(1.7rem, 2.6vw, 2.3rem); font-weight: 700; line-height: 1.16; letter-spacing: -0.02em; color: var(--text); margin: 14px 0 0; }
.ts-intro__body { min-width: 0; max-width: 68ch; }
.ts-intro__body p { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 0; }
.ts-intro__body p + p { margin-top: 20px; }

/* Services launcher: eyebrow + heading + lead + 2-up of cards. */
.ts-explore__title { font-size: clamp(1.7rem, 2.6vw, 2.3rem); font-weight: 700; line-height: 1.16; letter-spacing: -0.02em; color: var(--text); margin: 14px 0 0; max-width: 24ch; }
.ts-explore__lead { font-size: 1.125rem; line-height: 1.6; color: var(--text-muted); margin: 14px 0 0; max-width: 62ch; }
.svc-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 24px; margin-top: 40px; }
.svc-card { display: flex; flex-direction: column; background: #fff; border: 1px solid #E3E6EA; border-radius: 12px; padding: 28px 28px 26px; text-decoration: none; transition: border-color .2s ease; }
.svc-card:hover, .svc-card:focus-visible { border-color: var(--mba-blue); }
.svc-card__title { font-size: 1.1875rem; font-weight: 700; line-height: 1.25; letter-spacing: -0.01em; color: var(--text); margin: 0; }
/* Optional subhead between the title and body — additive; empty by default
   on every existing services-cards usage so nothing else is affected. */
.svc-card__subhead { font-size: 0.9375rem; font-weight: 700; line-height: 1.4; color: var(--text); margin: 8px 0 0; }
.svc-card__body { font-size: 0.9375rem; line-height: 1.6; color: var(--text-muted); margin: 12px 0 0; }
.svc-card__more { display: inline-flex; align-items: center; gap: 6px; margin-top: auto; padding-top: 22px; color: var(--mba-blue-deep); font-weight: 600; font-size: 0.9375rem; }
.svc-card__more .arr { transition: transform .2s ease; }
.svc-card:hover .svc-card__more .link-label, .svc-card:focus-visible .svc-card__more .link-label { text-decoration: underline; }
.svc-card:hover .svc-card__more .arr, .svc-card:focus-visible .svc-card__more .arr { transform: translateX(3px); }

/* Safety pointer: contained photo + dark navy text panel. */
.ts-safety { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); align-items: stretch; background: #F7F8FA; border: 1px solid var(--border); border-radius: var(--radius-card); overflow: hidden; margin-bottom: var(--space-6); }
.ts-safety__media { margin: 0; height: 320px; }
.ts-safety__media img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%; display: block; }
.ts-safety__text { min-width: 0; display: flex; flex-direction: column; align-items: flex-start; justify-content: center; padding: 40px 44px; background: var(--bg-dark); }
.ts-safety__title { font-size: 1.5rem; font-weight: 700; line-height: 1.2; letter-spacing: -0.015em; color: var(--text-on-dark); margin: 0; }
.ts-safety__body { font-size: 1.0625rem; line-height: 1.6; color: var(--text-on-dark); margin: 14px 0 0; max-width: 52ch; }
.ts-safety__link { display: inline-flex; align-items: center; gap: 6px; margin-top: 22px; color: var(--text-on-dark); font-weight: 600; font-size: 1rem; text-decoration: none; }
.ts-safety__link .arr { transition: transform .2s ease; }
.ts-safety__link:hover .link-label, .ts-safety__link:focus-visible .link-label { text-decoration: underline; }
.ts-safety__link:hover .arr, .ts-safety__link:focus-visible .arr { transform: translateX(3px); }

@media (max-width: 1023.98px) {
  .ts-wrap { padding-left: 32px; padding-right: 32px; }
  .ts-intro { grid-template-columns: 1fr; gap: 26px; }
}
@media (max-width: 640px) {
  .ts-wrap { padding-top: 64px; padding-bottom: 64px; padding-left: 22px; padding-right: 22px; }
  .svc-grid { grid-template-columns: 1fr; gap: 18px; }
  .ts-safety { grid-template-columns: 1fr; }
  .ts-safety__media { height: 220px; }
  .ts-safety__text { padding: 28px 24px; }
}

/* =====================================================================
   TOOLBOX TALKS (the BUILD with Respect page body)
   Native HTML5 video grid: an overview video centered on top, then a 2-up
   grid of cards (each = video with poster/controls + title + PDF link).
   preload="none" → only the poster image fetches on render; the video
   loads when the user clicks play. Page-scoped .tt-*; no JS facade.
   ===================================================================== */
.tt-sec { background: var(--bg); }
.tt-wrap { max-width: var(--container); margin: 0 auto; padding: 64px 40px 96px; }

/* Overview video: a single centered 16:9 frame, narrower than the grid
   so it reads as a feature element (not full-bleed). */
.tt-overview { max-width: 880px; margin: 0 auto 64px; aspect-ratio: 16 / 9; background: var(--bg-dark); border-radius: var(--radius-card); overflow: hidden; }
.tt-overview__video { width: 100%; height: 100%; display: block; object-fit: cover; }

/* Section heading. */
.tt-sec__title { font-size: clamp(1.7rem, 2.6vw, 2.3rem); font-weight: 700; line-height: 1.12; letter-spacing: -0.02em; color: var(--text); margin: 0; max-width: 24ch; }

/* PDF download chip-row directly under the section title. Each chip is a
   small white pill with a hairline border, a PDF icon, and the talk name.
   Wraps freely on narrower viewports. Matches the source page's "stack
   of PDF heading-links at the top of the section" — laid out as a clean
   row instead of a centered stack. */
.tt-pdfs { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 26px; }
.tt-pdf { display: inline-flex; align-items: center; gap: 10px; padding: 10px 18px; background: #fff; border: 1px solid var(--border); border-radius: var(--radius-button); color: var(--text); font-weight: 600; font-size: 0.9375rem; text-decoration: none; transition: border-color .2s ease; }
.tt-pdf:hover, .tt-pdf:focus-visible { border-color: var(--mba-blue); }
.tt-pdf .ico { color: var(--mba-blue-deep); display: inline-flex; flex: 0 0 auto; }
.tt-pdf:hover .link-label, .tt-pdf:focus-visible .link-label { text-decoration: underline; }

/* 2-up card grid below the PDF strip. Each card = video at top (no
   padding), then a small body with the plain-text talk-name caption. */
.tt-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 40px 32px; margin-top: 40px; }
.tt-card { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--border); border-radius: var(--radius-card); overflow: hidden; transition: border-color .2s ease; }
.tt-card:hover, .tt-card:focus-within { border-color: var(--mba-blue); }
.tt-card__media { aspect-ratio: 16 / 9; background: var(--bg-dark); }
.tt-card__video { width: 100%; height: 100%; display: block; object-fit: cover; }
.tt-card__body { padding: 20px 26px 22px; }
.tt-card__title { font-size: 1.1875rem; font-weight: 700; line-height: 1.25; letter-spacing: -0.01em; color: var(--text); margin: 0; }

@media (max-width: 1023.98px) {
  .tt-wrap { padding: 56px 32px 72px; }
  .tt-overview { margin-bottom: 48px; }
  .tt-grid { gap: 32px 24px; margin-top: 32px; }
  .tt-card__body { padding: 20px 22px 22px; }
}
@media (max-width: 640px) {
  .tt-wrap { padding: 48px 22px 64px; }
  .tt-overview { margin-bottom: 40px; }
  .tt-grid { grid-template-columns: 1fr; gap: 28px; }
}

/* =====================================================================
   SAFETY LANDING — Explore card grid override.

   The shared .explore__grid (About hub) defaults to 4-up. The Safety
   landing renders 3 cards (Safety Resources / Drug-Free / Safety
   Training), so scope a 3-up grid only under the Safety .sf-areas
   wrapper. Additive — the About hub's 4-up rule above is untouched.
   ===================================================================== */
.sf-areas .explore__grid { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 1023.98px) {
  .sf-areas .explore__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; }
}
@media (max-width: 640px) {
  .sf-areas .explore__grid { grid-template-columns: 1fr; gap: 18px; }
}

/* =====================================================================
   SAFETY RESOURCES — the Safety section sub-page. Built on the shared
   .std-head + tokens; full-width single column body (.sr-body). All
   selectors here are page-scoped under .sr-* and ported byte-faithfully
   from html/safety/safety-resources/index.html. Reused on Safety Training
   (which adds .st-* on top of .sr-*).
   ===================================================================== */
.sr-body { max-width: var(--container); margin: 0 auto; padding: 64px 40px 96px; }
.sr-sec + .sr-sec { margin-top: 64px; padding-top: 60px; border-top: 1px solid var(--border); }
.sr-sec__title { font-size: clamp(1.6rem, 2.4vw, 2.1rem); font-weight: 700; line-height: 1.15; letter-spacing: -0.015em; color: var(--text); margin: 0 0 26px; text-wrap: balance; }

/* AA-safe in-prose link, reused page-wide for the .sr-* sections. */
.sr-link { color: var(--mba-blue-deep); text-decoration: none; font-weight: 600; }
.sr-link:hover { text-decoration: underline; }

/* --- Section 1: mental health and wellbeing — feature beside a card. --- */
.sr-mhw { display: grid; grid-template-columns: 1.12fr 1fr; gap: 28px; align-items: start; }
.sr-feature__media { margin: 0 0 20px; border-radius: var(--radius-card); overflow: hidden; }
.sr-feature__media img { width: 100%; height: auto; display: block; }
.sr-feature__title { font-size: 1.5rem; font-weight: 700; line-height: 1.2; letter-spacing: -0.015em; color: var(--text); margin: 10px 0 0; text-wrap: balance; }
.sr-feature__body { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 14px 0 0; max-width: 62ch; }
.sr-feature__prose p { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 14px 0 0; max-width: 62ch; }
.sr-feature__cta { margin-top: 26px; }

.sr-card__logo { margin: 0 0 14px; }
.sr-card__logo img { display: block; width: 380px; max-width: 100%; height: auto; }
.sr-card__title { font-size: 1.25rem; font-weight: 700; line-height: 1.25; letter-spacing: -0.01em; color: var(--text); margin: 8px 0 0; }
.sr-card__body { font-size: 1rem; line-height: 1.6; color: var(--text-muted); margin: 10px 0 0; }
.sr-card__contact { font-size: 0.95rem; line-height: 1.6; color: var(--text-muted); margin: 18px 0 0; }

/* Download list (in the Youturn card). */
.sr-dl { list-style: none; margin: 18px 0 0; padding: 0; }
.sr-dl li { border-top: 1px solid var(--border); }
.sr-dl a { display: flex; align-items: flex-start; gap: 11px; padding: 12px 0; color: var(--mba-blue-deep); text-decoration: none; font-weight: 600; font-size: 0.975rem; line-height: 1.45; }
.sr-dl a:hover { text-decoration: underline; }
.sr-dl .ico { color: var(--text-muted); flex: none; margin-top: 1px; }

/* --- Section 2: products and member discounts — two-up reflowing cards. --- */
.sr-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
.sr-pcard__logo { margin: 0 0 12px; }
.sr-pcard__logo img { display: block; width: 300px; max-width: 100%; height: auto; }
.sr-pcard__title { font-size: 1.1875rem; font-weight: 700; line-height: 1.25; letter-spacing: -0.01em; color: var(--text); margin: 8px 0 0; }
.sr-pcard__body { font-size: 1rem; line-height: 1.6; color: var(--text-muted); margin: 8px 0 0; }
.sr-pcard__link { margin: 16px 0 0; font-size: 0.975rem; }

/* --- Section 3: programs and documents — clean rows, typed link on the right. --- */
.sr-docs { margin: 0; }
.sr-doc { display: flex; align-items: flex-start; justify-content: space-between; gap: 36px; padding: 22px 0; border-top: 1px solid var(--border); }
.sr-doc:last-child { border-bottom: 1px solid var(--border); }
.sr-doc__main { min-width: 0; }
.sr-doc__name { font-size: 1.125rem; font-weight: 700; line-height: 1.3; color: var(--text); margin: 0; }
.sr-doc__desc { font-size: 1rem; line-height: 1.6; color: var(--text-muted); margin: 6px 0 0; max-width: 72ch; }
.sr-doc__link { flex: none; }
.sr-doc__link a { display: inline-flex; align-items: center; gap: 9px; color: var(--mba-blue-deep); text-decoration: none; font-weight: 600; font-size: 0.975rem; white-space: nowrap; }
.sr-doc__link a:hover { text-decoration: underline; }
.sr-doc__link .ico { flex: none; }

/* --- Section 4: Tool Box Talks. --- */
.sr-tbt__intro { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 0 0 24px; max-width: 74ch; }
.sr-tbt__group { font-size: 1.05rem; line-height: 1.3; margin: 26px 0 10px; }
.sr-starters { display: flex; flex-wrap: wrap; gap: 16px; margin: 0 0 40px; }
.sr-focus { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 30px 0 6px; max-width: 78ch; }

.sr-lib { border-top: 1px solid var(--border); }
.sr-lib:last-of-type { border-bottom: 1px solid var(--border); }
.sr-lib__list { columns: 2; column-gap: 44px; list-style: none; margin: 18px 0 22px; padding: 0; }
.sr-lib__list li { break-inside: avoid; margin: 0 0 13px; }
.sr-lib__list a { color: var(--mba-blue-deep); text-decoration: none; font-weight: 500; line-height: 1.45; }
.sr-lib__list a:hover { text-decoration: underline; }

@media (max-width: 1023.98px) {
  .sr-body { padding: 56px 32px 72px; }
  .sr-mhw { grid-template-columns: 1fr; gap: 26px; }
}
@media (max-width: 640px) {
  .sr-body { padding: 48px 22px 64px; }
  .sr-cards { grid-template-columns: 1fr; }
  .sr-doc { flex-direction: column; gap: 10px; }
  .sr-lib__list { columns: 1; }
  .sr-starters .btn { width: 100%; justify-content: center; }
}

/* =====================================================================
   SAFETY TRAINING — page-scoped additions (.st-*) on top of the .sr-*
   selectors above. Two-column layout with the MSA-U feature on the left
   and a stacked Programs card + free-access prose card on the right.
   ===================================================================== */
.st-logo { margin: 0 0 16px; }
.st-logo img { display: block; width: 300px; max-width: 100%; height: auto; }
.st-cols { display: grid; grid-template-columns: 1.7fr 1fr; gap: 28px; align-items: start; }
.st-benefits { margin: 0.2em 0 0; padding-left: 1.1em; }
.st-benefits li { margin: 0.35em 0; }
.st-free { margin-top: 24px; }
@media (max-width: 820px) {
  .st-cols { grid-template-columns: 1fr; }
}

/* =====================================================================
   CONTACT page (Standard Content header from the shared acf/hero, then
   the page-scoped body below). Full-bleed light-tint band holding a 5/7
   two-column grid (office info + Forminator form), then a full-container
   Google Maps iframe. All selectors here are page-scoped (.contact-*)
   and additive — no shared rule is modified.

   The Forminator form is rendered inside <div class="join-form-wrap
   contact-form-wrap">, so the existing .join-form-wrap .forminator-*
   restyle (lines ~1306-1356 above) applies unchanged. The
   .contact-form-wrap class is reserved for any contact-only tweaks.
   ===================================================================== */
.contact-formsec { background: var(--bg-blue-tint); padding: 52px 40px; }
.contact-grid {
  max-width: calc(var(--container) - 80px);
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: 48px 64px;
  align-items: start;
}

.contact-info { min-width: 0; }
.contact-info__title { font-size: 1.15rem; margin: 0 0 14px; line-height: 1.3; }
.contact-info address { font-style: normal; line-height: 1.6; margin: 0 0 14px; }
.contact-info__line { margin: 0.2em 0; }
.contact-info__line span { font-weight: 600; }
.contact-info a { color: var(--mba-blue-deep); text-decoration: none; font-weight: 600; }
.contact-info a:hover { text-decoration: underline; }

.contact-form-col { min-width: 0; }
.mba-form-title { font-size: 1.15rem; margin: 0 0 16px; line-height: 1.3; }

.contact-map { max-width: var(--container); margin: 0 auto; padding: 48px 40px; }
.contact-map__frame { display: block; width: 100%; height: 420px; border: 0; border-radius: 12px; }

@media (max-width: 1023.98px) {
  .contact-formsec { padding: 44px 32px; }
  .contact-grid { grid-template-columns: 1fr; gap: 36px; }
  .contact-map { padding: 36px 32px; }
}
@media (max-width: 700px) {
  .contact-map__frame { height: 320px; }
}
@media (max-width: 640px) {
  .contact-formsec { padding: 40px 22px; }
  .contact-map { padding: 32px 22px; }
}

/* =====================================================================
   NEWS landing — page-scoped hub (the .nw-* family). Reuses the About
   page's visual language: the dark .about-hero ground, the standard
   section rhythm (.sec / .sec--bg / .sec--muted), and the shared
   .hero-crumb breadcrumb strip. The hero is text-only (single full-width
   column, NOT the .about-hero__grid 2-col), and the body has two
   sections: Publications (3-up covers) and Latest news (uniform card
   grid). No new tokens; all additive.
   ===================================================================== */

/* Hero (single-column inside .about-hero). The top padding is trimmed
   because the .hero-crumb strip already sits above this block. */
.nw-hero__inner { max-width: var(--container); margin: 0 auto; padding: 44px 40px 92px; }
.nw-hero__intro { font-size: 1.2rem; line-height: 1.6; color: var(--text-on-dark-muted); margin: 22px 0 0; max-width: 60ch; }

/* Shared wrap for both body sections — same width as the hero copy. */
.nw-wrap { max-width: calc(var(--container) - 80px); margin: 0 auto; }
.nw-sec__label { font-size: clamp(1.9rem, 3vw, 2.6rem); font-weight: 800; line-height: 1.1; letter-spacing: -0.02em; color: var(--text); margin: 0 0 48px; }

/* Publications — 3 contained covers (no card chrome). */
.nw-pubs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 52px 48px; align-items: start; }
.nw-pub { display: flex; flex-direction: column; }
.nw-pub__cover { display: block; margin: 0 0 24px; border-radius: var(--radius-card); overflow: hidden; align-self: flex-start; }
.nw-pub__cover img { display: block; width: 100%; height: auto; border-radius: var(--radius-card); }
.nw-pub__name { font-size: 1.5rem; font-weight: 700; line-height: 1.2; letter-spacing: -0.01em; color: var(--text); margin: 0; }
.nw-pub__desc { font-size: 1.0625rem; line-height: 1.65; color: var(--text-muted); margin: 12px 0 0; }

/* Blue arrow text link, used for publications and (separately) for the
   news-card actions below. Never orange — orange stays the single
   primary signal site-wide and this page has none. */
.nw-link { display: inline-flex; align-items: center; gap: 8px; margin-top: 20px; color: var(--mba-blue-deep); font-weight: 600; text-decoration: none; }
.nw-link:hover .link-label { text-decoration: underline; }
.nw-link .arr { transition: transform .2s ease; }
.nw-link:hover .arr { transform: translateX(3px); }
.nw-link .ext { font-size: 12px; opacity: .65; }

/* Latest news — uniform card grid, 3 → 2 → 1. White on the muted ground
   with a hairline; no drop shadow (15 boxes with reflexive shadows would
   read heavy). The action link is bottom-pinned so cards stay uniform
   whether or not they carry a blurb. */
.nw-news { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.nw-card { display: flex; flex-direction: column; background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius-card); padding: 30px 28px; }
.nw-card__title { font-size: 1.2rem; font-weight: 700; line-height: 1.3; letter-spacing: -0.01em; color: var(--text); margin: 0; }
.nw-card__blurb { font-size: 1rem; line-height: 1.6; color: var(--text-muted); margin: 14px 0 0; }
.nw-card__link { display: inline-flex; align-items: center; gap: 8px; align-self: flex-start; margin-top: auto; padding-top: 24px; color: var(--mba-blue-deep); font-weight: 600; text-decoration: none; }
.nw-card__link:hover .link-label { text-decoration: underline; }
.nw-card__link .ext { font-size: 12px; opacity: .65; }

@media (max-width: 1023.98px) {
  .nw-hero__inner { padding: 28px 32px 64px; }
  .nw-sec__label { margin-bottom: 36px; }
  .nw-news { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
  .nw-hero__inner { padding: 22px 22px 52px; }
  .nw-pubs { grid-template-columns: 1fr; gap: 44px; }
  .nw-pub__cover { max-width: 320px; }
  .nw-news { grid-template-columns: 1fr; gap: 20px; }
}

/* =====================================================================
   CAREERS (top-level landing). Page-scoped (.cr-*) on the shared tokens
   in this file (no new colors/fonts/effects). Three regions: a dark
   text-only hero (the only editable region, same family as the News
   landing), a clearly-marked GrowthZone feed placeholder for Tom to
   replace pre-launch, and the shared skyline Join CTA band.
   Ported byte-faithfully from html/careers/index.html.
   ===================================================================== */
.cr-hero__inner { max-width: var(--container); margin: 0 auto; padding: 44px 40px 92px; }
.cr-hero__dek { font-size: 1.2rem; line-height: 1.6; color: var(--text-on-dark-muted); margin: 22px 0 0; max-width: 60ch; }

.cr-ph { max-width: 640px; margin: 0 auto; text-align: center; background: var(--bg-muted); border: 2px dashed var(--border-strong); border-radius: var(--radius-card); padding: 56px 40px; }
.cr-ph__label { margin: 0 0 14px; }
.cr-ph__note { font-size: 1.0625rem; line-height: 1.6; color: var(--text); margin: 0; }
.cr-ph__link { display: inline-flex; align-items: center; gap: 8px; margin-top: 22px; color: var(--mba-blue-deep); font-weight: 600; text-decoration: none; }
.cr-ph__link:hover { text-decoration: underline; }
.cr-ph__link .ext { font-size: 12px; opacity: .65; }

@media (max-width: 1023.98px) {
  .cr-hero__inner { padding: 28px 32px 64px; }
  .cr-ph { padding: 44px 28px; }
}
@media (max-width: 640px) {
  .cr-hero__inner { padding: 22px 22px 52px; }
  .cr-ph { padding: 36px 22px; }
}

/* =====================================================================
   EVENTS LISTING (.ev-*). Ported from html/events/index.html. The dark
   text-only hero, the full-width featured event (photo beside a dark details
   panel), the upcoming-events card grid (matching the News "Latest news" feed
   cards), and the closing partners + policy section. No new tokens.
   ===================================================================== */
.ev-hero__inner { max-width: var(--container); margin: 0 auto; padding: 44px 40px 92px; }
.ev-hero__intro { font-size: 1.2rem; line-height: 1.6; color: var(--text-on-dark-muted); margin: 22px 0 0; max-width: 62ch; }

.ev-feat { display: grid; grid-template-columns: minmax(0,1.12fr) minmax(0,1fr); border-radius: var(--radius-card); overflow: hidden; box-shadow: 0 12px 32px rgba(14,26,43,.12); }
.ev-feat__media { position: relative; min-height: 440px; }
.ev-feat__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.ev-feat__body { background: var(--bg-dark); color: #fff; padding: 48px; display: flex; flex-direction: column; justify-content: center; }
.ev-feat__meta { display: inline-flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.ev-feat__rule { width: 22px; height: 1px; background: rgba(255,255,255,.45); }
.ev-feat__lead { color: #fff; }
.ev-feat__date { color: rgba(255,255,255,.82); }
.ev-feat__title { font-size: clamp(1.9rem, 2.6vw, 2.6rem); font-weight: 700; line-height: 1.08; letter-spacing: -0.02em; margin: 0 0 12px; text-wrap: balance; }
.ev-feat__loc { display: inline-flex; align-items: center; gap: 8px; color: rgba(255,255,255,.85); font-size: 15.5px; margin: 0 0 6px; }
.ev-feat__line { font-size: 1.0625rem; line-height: 1.5; color: rgba(255,255,255,.85); margin: 8px 0 26px; max-width: 44ch; }
.ev-feat__actions { display: flex; align-items: center; gap: 26px; flex-wrap: wrap; }

.ev-upcoming { margin-top: 72px; }
.ev-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.ev-card { display: flex; flex-direction: column; background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius-card); padding: 30px 28px; }
.ev-card__tag { margin-bottom: 12px; }
.ev-card__title { font-size: 1.2rem; font-weight: 700; line-height: 1.3; letter-spacing: -0.01em; color: var(--text); margin: 0; }
.ev-card__meta { display: flex; flex-direction: column; gap: 6px; margin-top: 14px; color: var(--text-muted); font-size: 14.5px; }
.ev-card__meta span { display: inline-flex; align-items: center; gap: 7px; }
.ev-card__detail { font-size: 14.5px; line-height: 1.5; color: var(--text-muted); margin: 10px 0 0; }
.ev-card__link { display: inline-flex; align-items: center; gap: 8px; align-self: flex-start; margin-top: auto; padding-top: 24px; color: var(--mba-blue-deep); font-weight: 600; text-decoration: none; }
.ev-card__link .arr { transition: transform .2s ease; }
.ev-card__link:hover .link-label { text-decoration: underline; }
.ev-card__link:hover .arr { transform: translateX(3px); }
.ev-card__link .ext { font-size: 12px; opacity: .65; }

.ev-block + .ev-block { margin-top: 64px; }
.ev-h2 { font-size: clamp(1.8rem, 2.8vw, 2.4rem); font-weight: 700; line-height: 1.12; letter-spacing: -0.02em; color: var(--text); margin: 0 0 26px; }
.ev-partners { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 0 56px; }
.ev-partner { display: inline-flex; align-items: center; gap: 8px; padding: 14px 2px; border-top: 1px solid var(--border); font-size: 1.0625rem; font-weight: 600; color: var(--mba-blue-deep); text-decoration: none; }
.ev-partner:hover { text-decoration: underline; }
.ev-partner .ext { font-size: 12px; opacity: .6; }
.ev-policy__text { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 0; max-width: 72ch; }
.ev-wpa__text { margin-bottom: 22px; }

@media (max-width: 1023.98px) {
  .ev-hero__inner { padding: 28px 32px 64px; }
  .ev-feat { grid-template-columns: 1fr; }
  .ev-feat__media { min-height: 300px; }
  .ev-feat__body { padding: 36px 32px; }
  .ev-upcoming { margin-top: 56px; }
  .ev-grid { grid-template-columns: repeat(2, 1fr); }
  .ev-partners { gap: 0 40px; }
}
@media (max-width: 640px) {
  .ev-hero__inner { padding: 22px 22px 52px; }
  .ev-feat__media { min-height: 240px; }
  .ev-feat__body { padding: 30px 24px; }
  .ev-feat__meta { flex-direction: column; align-items: flex-start; gap: 4px; }
  .ev-feat__rule { display: none; }
  .ev-upcoming { margin-top: 44px; }
  .ev-grid { grid-template-columns: 1fr; }
  .ev-partners { grid-template-columns: 1fr; }
  .ev-block + .ev-block { margin-top: 48px; }
}

/* =====================================================================
   EVENT DETAIL (.evd-*). Ported from html/events/<slug>/. The dark hero with a
   back link + at-a-glance facts strip, the body sections (about, good-to-know,
   schedule, inclusions/sponsorships, cancellation), and the closing block. The
   "Other upcoming events" grid reuses .ev-card / .ev-grid (defined above). The
   facts strip carries a count modifier (--2/--3/--4) so its columns match the
   number of facts. No new tokens.
   ===================================================================== */
.evd-back { display: inline-flex; align-items: center; gap: 8px; margin-top: 12px; color: var(--text-on-dark-muted); font-size: .95rem; font-weight: 600; text-decoration: none; }
.evd-back:hover { color: #fff; }
.evd-back .arr { transition: transform .2s ease; }
.evd-back:hover .arr { transform: translateX(-3px); }

.evd-hero__inner { max-width: var(--container); margin: 0 auto; padding: 30px 40px 88px; }
.evd-venue { font-size: 1.2rem; line-height: 1.5; color: var(--text-on-dark-muted); margin: 14px 0 0; }

.evd-facts { display: grid; gap: 24px 36px; margin: 34px 0 0; }
.evd-facts--2 { grid-template-columns: repeat(2, minmax(0,1fr)); max-width: 680px; }
.evd-facts--3 { grid-template-columns: repeat(3, minmax(0,1fr)); max-width: 940px; }
.evd-facts--4 { grid-template-columns: repeat(4, minmax(0,1fr)); }
.evd-fact { min-width: 0; }
.evd-fact__label { display: inline-flex; align-items: center; gap: 8px; font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--text-on-dark-muted); margin: 0; }
.evd-fact__label .ico { color: var(--mba-blue); }
.evd-fact__val { font-size: 1.05rem; line-height: 1.45; color: #fff; margin: 6px 0 0; }
.evd-hero__cta { margin-top: 34px; }

.evd-section + .evd-section { margin-top: 64px; }
.evd-h2 { font-size: clamp(1.6rem, 2.4vw, 2.1rem); font-weight: 700; line-height: 1.15; letter-spacing: -0.015em; color: var(--text); margin: 0 0 18px; }
.evd-lead { font-size: 1.2rem; line-height: 1.6; color: var(--text); margin: 0; max-width: 72ch; }
.evd-lead > :first-child { margin-top: 0; }
.evd-lead > :last-child { margin-bottom: 0; }
.evd-prose { font-size: 1.0625rem; line-height: 1.7; color: var(--text); margin: 0; max-width: 72ch; }
.evd-prose > :first-child { margin-top: 0; }
.evd-prose > :last-child { margin-bottom: 0; }

.evd-sched { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 24px; }
.evd-sched__block { background: var(--bg-muted); border-radius: var(--radius-card); padding: 28px 30px; }
.evd-sched__day { font-size: 1.15rem; font-weight: 700; letter-spacing: -0.01em; color: var(--text); margin: 0 0 12px; }
.evd-sched__list { list-style: none; margin: 0; padding: 0; }
.evd-sched__list li { font-size: 1.0625rem; line-height: 1.5; color: var(--text); padding: 9px 0; border-top: 1px solid var(--border-strong); }
.evd-sched__list li:first-child { border-top: 0; padding-top: 0; }

.evd-cols { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 48px; align-items: start; }
.evd-list { margin: 0; padding-left: 1.2em; list-style: disc; }
.evd-list li { font-size: 1.0625rem; line-height: 1.6; color: var(--text); padding: 4px 0; }
.evd-note { font-size: .95rem; line-height: 1.6; color: var(--text-muted); margin: 16px 0 0; max-width: 64ch; }
.evd-note--italic { font-style: italic; }

.evd-back-btn { margin: 0 0 48px; }

@media (max-width: 1023.98px) {
  .evd-hero__inner { padding: 22px 32px 64px; }
  .evd-facts { gap: 22px 28px; }
  .evd-facts--4 { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .evd-section + .evd-section { margin-top: 52px; }
  .evd-sched { grid-template-columns: 1fr; }
  .evd-cols { grid-template-columns: 1fr; gap: 36px; }
}
@media (max-width: 640px) {
  .evd-hero__inner { padding: 18px 22px 52px; }
  .evd-facts--2, .evd-facts--3, .evd-facts--4 { grid-template-columns: 1fr; }
  .evd-facts { gap: 20px; }
}

/* =====================================================================
   FLAGSHIP EVENT DETAIL (.bea-*). Ported from
   html/events/building-excellence-awards-2026/. A contained two-column split
   hero on the dark band (text left, rounded photo right) plus a separate dark
   facts band below it. Used when an event's Layout is set to Flagship. The
   body, facts component, and closing grid are the shared .evd-* / .ev-* ones.
   ===================================================================== */
.bea-back { display: inline-flex; align-items: center; gap: 8px; margin-top: 12px; color: rgba(255,255,255,.82); font-size: .95rem; font-weight: 600; text-decoration: none; }
.bea-back:hover { color: #fff; }
.bea-back .arr { transition: transform .2s ease; }
.bea-back:hover .arr { transform: translateX(-3px); }

.bea-hero__inner { max-width: var(--container); margin: 0 auto; padding: 0 40px; }
.bea-hero__grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.05fr); gap: 56px; align-items: center; padding: 10px 0 92px; }
.bea-hero__col { display: flex; flex-direction: column; min-width: 0; }
.bea-hero__title { font-size: clamp(2.2rem, 3.6vw, 3.6rem); font-weight: 800; line-height: 1.05; letter-spacing: -0.025em; color: #fff; margin: 14px 0 0; text-wrap: balance; }
.bea-hero__meta { font-size: 1.15rem; line-height: 1.5; color: rgba(255,255,255,.9); margin: 18px 0 0; }
.bea-hero__tagline { font-size: 1.2rem; line-height: 1.55; color: var(--text-on-dark); margin: 16px 0 0; max-width: 44ch; }
.bea-hero__cta { margin-top: 30px; }
.bea-hero__img { display: flex; align-items: center; min-width: 0; }
.bea-hero__img img { display: block; width: 100%; height: auto; max-height: 480px; border-radius: var(--radius-card); }

.bea-facts { background: var(--bg-dark); }
.bea-facts__inner { max-width: var(--container); margin: 0 auto; padding: 8px 40px 56px; }
.bea-facts .evd-facts { grid-template-columns: repeat(2, minmax(0,1fr)); max-width: 760px; }

@media (max-width: 1023.98px) {
  .bea-hero__inner { padding: 0 32px; }
  .bea-hero__grid { grid-template-columns: 1fr; gap: 28px; align-items: start; padding: 4px 0 64px; }
  .bea-hero__img img { max-height: 420px; }
  .bea-facts__inner { padding: 8px 32px 48px; }
}
@media (max-width: 640px) {
  .bea-hero__inner { padding: 0 22px; }
  .bea-hero__grid { padding: 0 0 52px; }
  .bea-hero__img img { max-height: 320px; }
  .bea-facts__inner { padding: 4px 22px 40px; }
  .bea-facts .evd-facts { grid-template-columns: 1fr; gap: 20px; }
}

/* =====================================================================
   WPA CONSTRUCTION INDUSTRY CALENDAR (.gcal-*). A public Google Calendar (.ics)
   rendered as the shared .ev-card grid (reused), with a months-window +
   "Load more" and the full-calendar link. No new tokens.
   ===================================================================== */
.gcal-h2 { margin-bottom: 12px; }
.gcal-intro { font-size: 1.0625rem; line-height: 1.6; color: var(--text-muted); margin: 0 0 32px; max-width: 72ch; }
.ev-card.gcal-hidden { display: none; }
.gcal-actions { margin-top: 36px; }
.gcal-full { margin: 28px 0 0; }
.gcal-empty { font-size: 1.0625rem; color: var(--text); margin: 0; }
.cal-more { display: inline-flex; align-items: center; gap: 8px; color: var(--mba-blue-deep); font-weight: 600; text-decoration: none; }
.cal-more:hover { text-decoration: underline; }
.cal-more .ext { font-size: 12px; opacity: .65; }
