/* ═══════════════════════════════════════════════════════════════════════════
   ⚠️  FONT LICENSING REQUIRED BEFORE GOING LIVE
   Parabolica + Parabolica Text are PROPRIETARY Adobe Fonts (Typekit) faces,
   self-hosted here for brand fidelity. Do NOT publish to aem.live until the
   webfont/self-hosting license is confirmed. See styles/fonts/LICENSING.md
   for the remove-and-fall-back path.
   ─────────────────────────────────────────────────────────────────────────
   riverview — EDS foundation (AuthorKit runtime)
   Design system: Mode A brand-faithful (DESIGN.md / DESIGN.json).
   Tokens lifted verbatim from the approved prototypes' :root.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ---- self-hosted brand faces (proprietary — see licensing alert above) ---- */
@font-face { font-family: "parabolica"; src: url("/styles/fonts/parabolica-400.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: optional; }
@font-face { font-family: "parabolica"; src: url("/styles/fonts/parabolica-700.woff2") format("woff2"); font-weight: 700; font-style: normal; font-display: optional; }
@font-face { font-family: "parabolica"; src: url("/styles/fonts/parabolica-900.woff2") format("woff2"); font-weight: 900; font-style: normal; font-display: optional; }
@font-face { font-family: "parabolica-text"; src: url("/styles/fonts/parabolica-text-400.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: optional; }
@font-face { font-family: "parabolica-text"; src: url("/styles/fonts/parabolica-text-700.woff2") format("woff2"); font-weight: 700; font-style: normal; font-display: optional; }
@font-face { font-family: "parabolica-text"; src: url("/styles/fonts/parabolica-text-900.woff2") format("woff2"); font-weight: 900; font-style: normal; font-display: optional; }

/* Metric-matched fallbacks, one per face (fonttools-computed from the
   self-hosted woff2 metrics; Arial xAvgCharWidth base 44.14%). Overloading the
   literal "Arial" family with Text-face metrics reflowed every 700/900 heading
   at swap time (hero CLS). */
@font-face {
  font-family: "parabolica-fallback";
  src: local("Arial");
  font-weight: 900;
  size-adjust: 139.56%;
  ascent-override: 77.89%;
  descent-override: 17.77%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "parabolica-fallback";
  src: local("Arial");
  font-weight: 400 700;
  size-adjust: 136.84%;
  ascent-override: 79.15%;
  descent-override: 18.13%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "parabolica-text-fallback";
  src: local("Arial");
  size-adjust: 140.91%;
  ascent-override: 77.14%;
  descent-override: 17.60%;
  line-gap-override: 0%;
}

:root {
  --heading-font-family: "parabolica", "parabolica-fallback", arial, "Segoe UI", "Helvetica Neue", sans-serif;
  --body-font-family: "parabolica-text", "parabolica-text-fallback", arial, "Segoe UI", "Helvetica Neue", sans-serif;
  --heading-xxl: 61px;
  --heading-xl: 39px;
  --heading-lg: 31px;
  --heading-md: 25px;
  --lede: 20px;
  --body: 16px;
  --body-sm: 14px;
  --line-height-heading: 1.1;
  --line-height-body: 1.55;
  --color-bg: #ffffff;
  --color-fg: #14162b;
  --color-accent: #262b62;
  --color-mint: #84c5b8;
  --color-mint-wash: #e6f3f1;
  --color-ink-navy: #1c204d;
  --color-link: #376ea9;
  --color-muted: #5a6072;
  --color-border: #e7e7e7;
  --color-surface: #f2f2f2;
  --spacing-xs: 8px;
  --spacing-sm: 16px;
  --spacing-md: 32px;
  --spacing-lg: 48px;
  --spacing-xl: 64px;
  --spacing-2xl: 96px;
  --section-padding: 64px;
  --max-width: 1320px;
  --radius: 8px;
  --radius-tile: 16px;
  --radius-pill: 9999px;
  --shadow-card: 0 6px 14px rgba(20, 22, 43, 0.15);
  --shadow-chip: 0 2px 3px rgba(20, 22, 43, 0.15);
  --shadow-plinth: 10px 10px 0 0 #84c5b8;
  /* aliases + block tokens referenced by lifted block CSS (kept 1:1 with the prototype scale) */
  --spacing-s: 16px;
  --spacing-m: 32px;
  --spacing-l: 48px;
  --spacing-xxl: 96px;
  --color-dark: #14162b;
  --color-light: #ffffff;
  --grid-column-width: 88px;
  --heading-hero-article: 48px;
  --measure-article: 68ch;
  --star: #e9a13b;
}

/* ---- reset ---- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: arial, sans-serif; /* metric-matched fallback until body.session */
  font-size: var(--body);
  line-height: var(--line-height-body);
  color: var(--color-fg);
  background: var(--color-bg);
}
body.session { font-family: var(--body-font-family); }
img { display: block; max-width: 100%; height: auto; }
h1, h2, h3, h4, h5, h6 { font-family: var(--heading-font-family); line-height: var(--line-height-heading); margin: 0; overflow-wrap: break-word; }
p { margin: 0; }
ul { margin: 0; padding: 0; list-style: none; }
a { color: var(--color-link); }
button { font: inherit; }
::selection { background: var(--color-mint); color: var(--color-ink-navy); }
:focus-visible { outline: 3px solid var(--color-ink-navy); outline-offset: 2px; box-shadow: 0 0 0 6px rgba(132, 197, 184, 0.55); }

/* ---- EDS section scaffold ---- */
main .section { display: block; }
main .section > .default-content,
main .section > .block-content { display: block; }
main .section:empty { display: none; } /* metadata-consumed section collapse */
main > div.has-template, div[data-status] { display: none; }

.ds-wrap, .wrap { max-width: var(--max-width); margin-inline: auto; padding-inline: 32px; }
/* default content (section headings + intro prose emitted outside a block) must
   share the same centered content column as .ds-wrap, else it renders full-bleed */
main .section > .default-content { max-width: var(--max-width); margin-inline: auto; padding-inline: 32px; }
@media (max-width: 640px) { main .section > .default-content { padding-inline: 20px; } }
.ds-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; }

/* ---- header height reservation (late postlcp fragment inject → CLS) ---- */
header { min-height: 132px; background: var(--color-bg); }
@media (max-width: 900px) { header { min-height: 118px; } }
@media (max-width: 767px) { header { min-height: 74px; } }

/* ---- global button system (maps AuthorKit strong/em convention to the
        prototype's .ds-btn treatments) ---- */
a.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  border-radius: var(--radius-pill);
  font-family: var(--heading-font-family);
  font-weight: 700;
  font-size: var(--body);
  line-height: 1.2;
  min-height: 48px;
  padding: 12px 24px;
  text-decoration: none;
  box-shadow: var(--shadow-chip);
  border: 0;
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
a.btn-primary { background: var(--color-accent); color: #ffffff; }
a.btn-primary:hover { background: var(--color-ink-navy); }
a.btn-secondary { background: transparent; border: 2px solid var(--color-accent); color: var(--color-accent); box-shadow: none; padding: 10px 22px; }
a.btn-secondary:hover { background: rgba(38, 43, 98, 0.08); }
a.btn-accent { background: var(--color-mint); color: var(--color-ink-navy); }
a.btn-accent:hover { background: #77bbad; }
/* on-dark surfaces: outline light */
main .section.dark a.btn-secondary,
main .hero a.btn-secondary,
main .story a.btn-secondary { border-color: #ffffff; color: #ffffff; }
main .section.dark a.btn-secondary:hover,
main .hero a.btn-secondary:hover,
main .story a.btn-secondary:hover { background: rgba(255, 255, 255, 0.12); }
.btn-group { display: inline-flex; flex-wrap: wrap; gap: var(--spacing-sm); align-items: center; }

/* text link with underline flourish (not a button) */
a.ds-link { color: var(--color-link); font-family: var(--heading-font-family); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; display: inline-block; padding-block: 10px; }
a.ds-link:hover { color: var(--color-ink-navy); }

/* shared dynamic list-search controls (scripts/list-search.js — blog + location listings) */
.ds-lfilter { display: flex; flex-wrap: wrap; align-items: center; gap: var(--spacing-sm); margin-bottom: var(--spacing-md); padding-bottom: var(--spacing-sm); border-bottom: 1px solid var(--color-border); }
.ds-lfilter input[type="search"], .ds-lfilter select { min-height: 44px; padding: 10px 14px; border: 1px solid var(--color-muted); border-radius: var(--radius); font: inherit; background: #fff; }
.ds-lfilter input[type="search"] { min-width: 220px; }
.ds-lfilter-count { margin-left: auto; color: var(--color-muted); font-family: var(--heading-font-family); font-weight: 700; }
.ds-pager { display: flex; flex-wrap: wrap; gap: 6px; margin-top: var(--spacing-md); }
.ds-pager button { min-width: 44px; min-height: 44px; border: 1px solid var(--color-border); background: #fff; border-radius: var(--radius); font-family: var(--heading-font-family); font-weight: 700; cursor: pointer; }
.ds-pager button.is-current { background: var(--color-accent); color: #fff; border-color: var(--color-accent); }
.ds-pager button:hover:not(.is-current) { border-color: var(--color-accent); }
@media (max-width: 640px) { .ds-lfilter-count { margin-left: 0; width: 100%; } }

@media (max-width: 1023px) { :root { --section-padding: 48px; } }
@media (max-width: 640px) { :root { --section-padding: 32px; } .ds-wrap, .wrap { padding-inline: 20px; } }

/* ---- rebuild rhythm: section heads, banded sections (ortho exemplar polish) ---- */
main .section > .default-content h2 { margin-top: 40px; }
main .section > .default-content h2:first-child { margin-top: 0; }
main .section > .default-content { padding-top: var(--section-padding); }
main .section:has(> .block-content > .people):not(.rail-page) > .default-content { text-align: center; }
main .section:has(> .block-content > .service-hero) > .default-content,
main .section:first-child > .default-content { padding-top: 0; }
/* trailing default-content after a block (e.g. people View More): no doubled top gap, section-padding below */
main .section > .block-content + .default-content { padding-top: 0; padding-bottom: var(--section-padding); }
/* banded card sections + centered section heads (batch-1 treatments) */
main .section:has(> .block-content > .cards.band) { background: var(--color-surface); }
main .section:has(> .block-content > .cards.band) > .default-content,
main .section:has(> .block-content > .cards.features) > .default-content { text-align: center; max-width: 72ch; }
main .section:has(> .block-content > .tabs.band) { background: var(--color-surface); }
main .section:has(> .block-content > .cards.programs) { background: var(--color-mint-wash); }
main .section:has(> .block-content > .cards.programs) > .default-content,
main .section:has(> .block-content > .cards.stories) > .default-content h2 { text-align: center; }

/* ---- rail-page composite: a section whose service-body is rail-only pins it
       as a sticky right column beside ALL sibling blocks (leadership et al.) ---- */
main .section.rail-page { max-width: var(--max-width); margin-inline: auto; padding-inline: 32px;
  display: grid; grid-template-columns: minmax(0, 1fr) 304px; gap: 0 var(--spacing-xl); align-items: start; }
main .section.rail-page > * { grid-column: 1; }
main .section.rail-page > .block-content:has(> .service-body:first-child) { grid-column: 2; grid-row: 1 / span 20; position: sticky; top: 24px; }
main .section.rail-page > .block-content:has(> .service-body) .ds-body-grid { grid-template-columns: 1fr; grid-template-areas: "rail"; }
main .section.rail-page > .block-content:has(> .service-body) .ds-main { display: none; }
main .section.rail-page .service-body { padding-block: 0; }
main .section.rail-page > .default-content { max-width: none; margin: 0; padding: 0; }
main .section.rail-page > .default-content h2 { font-size: clamp(27px, 4vw, var(--heading-xl)); font-weight: 800; margin-top: var(--spacing-xl); }
main .section.rail-page > .default-content:first-child h2, main .section.rail-page > .block-content + .default-content h2 { margin-top: var(--spacing-xl); }
main .section.rail-page .ds-wrap { max-width: none; margin: 0; padding: 0; }
main .section.rail-page { padding-block: var(--section-padding); }
@media (max-width: 900px) {
  main .section.rail-page { grid-template-columns: 1fr; }
  main .section.rail-page > .block-content:has(> .service-body) { grid-column: 1; grid-row: auto; position: static; }
}
/* qa: long unbroken URLs/words in prose must wrap (mobile overflow fix) */
main a[href] { overflow-wrap: anywhere; }
main p, main li, main td { overflow-wrap: break-word; }
