/* Shared readability layer: retain the visual system while making investor copy easy to read. */
body { font-size: 16px; line-height: 1.7; }

/* Home page body copy and supporting notes. */
body:not(.route-page):not(.research-page) main p:not(.eyebrow):not(.large):not(.caption):not(.muted) {
  font-size: 16px;
  line-height: 1.75;
  color: #354039;
}
body:not(.route-page):not(.research-page) main .hero-copy > p:not(.eyebrow) {
  font-size: 18px;
  color: #f5f5f1;
}
body:not(.route-page):not(.research-page) main .dark p:not(.eyebrow):not(.large):not(.caption):not(.muted),
body:not(.route-page):not(.research-page) main .dark .muted {
  color: #e0e6df;
}
.caption, figcaption {
  font-size: 14px !important;
  line-height: 1.7 !important;
  color: #465148 !important;
}
.dark .caption, .dark figcaption { color: #e0e6df !important; }
.rule-note { font-size: 15px; line-height: 1.75; }
.preseed-uses dt, .preseed-uses dd { font-size: 15px; line-height: 1.6; }
.eyebrow { font-size: 12px; line-height: 1.5; }
.hero-foot { font-size: 12px; line-height: 1.5; }
header nav, .contactlink { font-size: 15px; }
@media (max-width: 760px) {
  header nav { font-size: 14px; }
}

/* Vision and Resilient pages. */
.route-page .route-nav, .route-page .route-contact { font-size: 14px; }
.route-page .route-brand small { font-size: 10px; }
.route-page .route-kicker, .route-page .route-label { font-size: 12px; line-height: 1.55; }
.route-page .route-hero p, .route-page .route-lead, .route-page .route-copy,
.route-page .route-card p, .route-page .route-points p, .route-page .route-callout,
.route-page .route-cta-panel p, .route-page .route-table td {
  font-size: 16px;
  line-height: 1.75;
}
.route-page .route-copy, .route-page .route-card p, .route-page .route-points p { color: #3c463e; }
.route-page .route-section.dark .route-copy,
.route-page .route-section.dark .route-points p,
.route-page .route-section.dark .route-callout { color: #e1e7e0; }
.route-page .route-source, .route-page .route-figure figcaption { font-size: 14px; line-height: 1.7; color: #485249; }
.route-page .route-number-grid span, .route-page .route-number-grid small { font-size: 14px; line-height: 1.6; }
.route-page .route-table th { font-size: 12px; }
.route-page .route-footer { font-size: 13px; }
@media (max-width: 650px) {
  .route-page .route-nav { font-size: 14px; }
  .route-page .route-contact { font-size: 13px; }
}

/* Research page: body copy, metrics, credits, and disclosure text. */
.research-page main p:not(.section-label) { font-size: 16px; line-height: 1.75; color: #3b453d; }
.research-page main .research-hero-copy > p { font-size: 18px; line-height: 1.75; color: #edf1eb; }
.research-page main .research-method p, .research-page main .comparison-heading p,
.research-page main .scale-copy p, .research-page main .operator-body > p {
  font-size: 16px; line-height: 1.75; color: #3b453d;
}
.research-page .research-hero-side span, .research-page .research-hero-side small { font-size: 13px; line-height: 1.65; }
.research-page .operator-top, .research-page .operator-photo > span,
.research-page .xcon-panel-head > div:first-child > span { font-size: 12px; line-height: 1.6; }
.research-page .metric > span { font-size: 14px; line-height: 1.65; color: #485249; }
.research-page .metric > b small { font-size: 14px; }
.research-page .image-credit { font-size: 13px; line-height: 1.65; color: #4c564e; }
.research-page .scale-row span, .research-page .scale-row b { font-size: 13px; line-height: 1.6; }
.research-page .scale-foot { font-size: 13px; line-height: 1.65; color: #4c564e; }
.research-page .concept-stamp { font-size: 12px; line-height: 1.65; }
.research-page .xcon-metrics span { font-size: 13px; line-height: 1.6; color: #e0e7df; }
.research-page .xcon-metrics b small { font-size: 14px; }
.research-page main .xcon-metrics p, .research-page main .xcon-verdict p { font-size: 15px; line-height: 1.7; color: #e0e6df; }
.research-page .source-list b { font-size: 12px; line-height: 1.6; }
.research-page .source-list span { font-size: 15px; line-height: 1.7; color: #3b453d; }
.research-page .research-disclaimer { font: 14px/1.75 'DM Mono', monospace; color: #465148; }
.research-page footer { font-size: 13px; }
@media (max-width: 560px) {
  .research-page main .research-hero-copy > p { font-size: 17px; }
  .research-page .research-page .topbar nav a,
  .research-page .topbar nav a { font-size: 14px; }
  .research-page .xcon-metrics span { font-size: 13px; }
}

/* Keep the high contrast hero treatment after mobile and site-specific rules. */
body:not(.route-page):not(.research-page) main .hero .hero-copy > p:not(.eyebrow) {
  font-size: 18px;
  line-height: 1.75;
  color: #f5f5f1 !important;
}
body:not(.route-page):not(.research-page) main table th { font-size: 12px; line-height: 1.5; }
body:not(.route-page):not(.research-page) main table td { font-size: 15px; line-height: 1.65; color: #354039; }

/* Shared typography and navbar system across every public page. */
body { font-family: 'DM Sans', sans-serif !important; }
h1, h2, h3, h4 { font-family: 'Manrope', sans-serif !important; }
header, header.route-header, header.topbar {
  box-sizing: border-box;
  height: 84px;
  min-height: 84px;
  padding: 10px clamp(24px, 5vw, 64px);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  background: #050505 !important;
  color: #f5f3ed !important;
  border-bottom: 1px solid #292929;
  position: relative;
  z-index: 100;
}
header > .brand, header > .route-brand, header > a.brand,
header.topbar > .brand {
  order: 1;
  display: flex;
  align-items: center;
  flex: 0 0 auto;
  gap: 12px;
  text-decoration: none;
  color: #f5f3ed;
}
header .x-logo, header .route-brand img, header .brand-logo {
  display: block;
  width: 42px !important;
  height: 42px !important;
  object-fit: contain;
  filter: brightness(0) invert(1);
}
header .brand-copy, header .route-brand span, header .brand-caption {
  display: block;
  max-width: 190px;
  font: 700 11px/1.4 'DM Sans', sans-serif !important;
  letter-spacing: .12em !important;
  color: #f5f3ed !important;
}
header .brand-copy small, header .route-brand small, header .brand-caption small {
  display: block;
  margin-top: 3px;
  font: 500 9px/1.45 'DM Sans', sans-serif !important;
  letter-spacing: .13em !important;
  color: #b8c1b8 !important;
}
header nav, header .route-nav, header.topbar nav {
  order: 2;
  display: flex;
  flex: 1 1 auto;
  min-width: 0;
  width: auto !important;
  overflow: visible;
  align-items: center;
  justify-content: center;
  gap: clamp(18px, 2.5vw, 34px);
  margin: 0;
  padding: 0;
  color: #e1e5df;
  font: 500 14px/1.4 'DM Sans', sans-serif !important;
  white-space: nowrap;
}
header nav a, header .route-nav a, header.topbar nav a {
  display: inline-flex;
  flex-shrink: 0;
  align-items: center;
  min-height: 44px;
  padding: 0 0 2px;
  border-bottom: 2px solid transparent;
  text-decoration: none;
  color: #e1e5df;
  font: inherit;
}
header nav a:hover, header .route-nav a:hover, header.topbar nav a:hover,
header .contactlink:hover, header .route-contact:hover, header .top-cta:hover { color: #d4e988; }
header nav a[aria-current="page"], header .route-nav a[aria-current="page"], header.topbar nav a[aria-current="page"] {
  border-bottom-color: #d4e988;
  color: #ffffff;
}
header > .contactlink, header > .route-contact, header > .top-cta {
  order: 3;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  flex-shrink: 0;
  padding: 0;
  border: 0;
  border-bottom: 1px solid #717a72;
  background: transparent;
  color: #f5f3ed;
  font: 600 14px/1.4 'DM Sans', sans-serif !important;
  text-decoration: none;
  white-space: nowrap;
}
@media (max-width: 1160px) {
  header, header.route-header, header.topbar {
    height: auto;
    min-height: 76px;
    padding: 10px 5%;
    flex-wrap: wrap;
    gap: 8px 18px;
  }
  header > .brand, header > .route-brand, header > a.brand, header.topbar > .brand { order: 1; }
  header > .contactlink, header > .route-contact, header > .top-cta { order: 2; font-size: 13px !important; }
  header nav, header .route-nav, header.topbar nav {
    order: 3;
    flex: 0 0 100%;
    justify-content: flex-start;
    overflow-x: auto;
    gap: clamp(20px, 5vw, 30px);
    padding: 2px 0 4px;
    font-size: 14px !important;
  }
}
@media (max-width: 420px) {
  header, header.route-header, header.topbar { gap: 6px 12px; }
  header .x-logo, header .route-brand img, header .brand-logo { width: 38px !important; height: 38px !important; }
  header .brand-copy, header .route-brand span, header .brand-caption { font-size: 10px !important; }
  header > .contactlink, header > .route-contact, header > .top-cta { font-size: 12px !important; }
}

/* Keep light cards legible when they sit inside a dark section. */
.route-page .route-card h3 { color: #17211c; }
.route-page .route-section.dark .route-callout { color: #17211c; }
.route-page .vision-sources {
  width: min(760px, 86%);
  max-width: 760px;
  margin: 18px auto 0;
  text-align: center;
  font-size: 12px;
  line-height: 1.65;
}
