/* Shared GATEKEEPR typography, based on the approved Reporter/Screener trial.
 * Load after each page stylesheet. Explicit text sizes preserve layout dimensions
 * and small data labels; PDF layout probes and print styles stay independent.
 */
body.gatekeepr-typography:not(.pdf-layout-probe) {
  font-size: 14px;
  -webkit-font-smoothing: antialiased;
}

.gatekeepr-typography:not(.pdf-layout-probe) .brand {
  flex-shrink: 0;
}

.gatekeepr-typography:not(.pdf-layout-probe) .brand > span:last-child {
  line-height: 1.06;
  letter-spacing: -.045em;
}

.gatekeepr-typography:not(.pdf-layout-probe) .brand strong {
  font-size: 19px;
  font-weight: 900;
}

.gatekeepr-typography:not(.pdf-layout-probe) .brand small {
  margin-top: 3px;
  font-size: 11px;
  font-weight: 650;
  letter-spacing: .045em;
}

.gatekeepr-typography:not(.pdf-layout-probe) .brand-mark,
.gatekeepr-typography:not(.pdf-layout-probe) .brand-logo-svg {
  width: 44px !important;
  height: 44px !important;
  max-width: 44px !important;
  flex-basis: 44px;
}

.gatekeepr-typography:not(.pdf-layout-probe) :is(.top-nav, .lab-nav) a,
.gatekeepr-typography:not(.pdf-layout-probe) .nav-dropdown-button {
  font-size: 12px;
  font-weight: 700;
}

.gatekeepr-typography:not(.pdf-layout-probe) .nav-dropdown-menu a {
  font-size: 12px;
}

.gatekeepr-typography:not(.pdf-layout-probe) .hero-copy h1 {
  max-width: none;
  margin: 14px 0 20px;
  font-size: clamp(37px, 4.5vw, 64px);
  font-weight: 850;
  line-height: 1;
  letter-spacing: -.063em;
}

.gatekeepr-typography:not(.pdf-layout-probe) .hero-screener-word {
  display: inline-block;
  font-family: var(--font-display);
  font-size: clamp(56px, 6.3vw, 94px);
  font-style: italic;
  font-weight: 300;
  line-height: .91;
  letter-spacing: -.06em;
  color: var(--primary-2);
}

.gatekeepr-typography:not(.pdf-layout-probe) .hero-lead {
  max-width: 600px;
  font-size: 14px;
  line-height: 1.82;
  color: var(--text-soft);
}

.gatekeepr-typography:not(.pdf-layout-probe) :is(.eyebrow, .kicker) {
  font-size: 11px;
  font-weight: 830;
  letter-spacing: .1em;
}

.gatekeepr-typography:not(.pdf-layout-probe).screener-page h2 {
  font-size: clamp(29px, 3vw, 39px);
  line-height: 1.15;
  letter-spacing: -.055em;
}

.gatekeepr-typography:not(.pdf-layout-probe) :is(.theme-picker-button, .theme-picker-option, .theme-picker-random) {
  font-size: 12px;
  font-weight: 730;
}

.gatekeepr-typography:not(.pdf-layout-probe) .theme-picker-group-label {
  font-size: 10px;
  font-weight: 800;
}

.gatekeepr-typography:not(.pdf-layout-probe) :is(.btn, .screener-pagination button) {
  font-size: 12px;
  font-weight: 750;
}

.gatekeepr-typography:not(.pdf-layout-probe) .page-actions .icon-refresh-btn {
  font-size: 18px;
}

.gatekeepr-typography:not(.pdf-layout-probe) :is(.soft-pill, .badge, .gk-data-freshness) {
  font-size: 10px;
  font-weight: 730;
}

.gatekeepr-typography:not(.pdf-layout-probe) .hero-mos-card > span {
  font-size: 10px;
  font-weight: 830;
}

.gatekeepr-typography:not(.pdf-layout-probe) .hero-mos-row strong {
  font-size: 14px;
  font-weight: 800;
}

.gatekeepr-typography:not(.pdf-layout-probe) .hero-mos-row small {
  font-size: 11px;
  font-weight: 650;
  line-height: 1.6;
}

.gatekeepr-typography:not(.pdf-layout-probe) .kpi-card span {
  font-size: 11px;
  font-weight: 720;
}

.gatekeepr-typography:not(.pdf-layout-probe) .kpi-card strong {
  font-size: 17px;
  font-weight: 800;
  line-height: 1.35;
  letter-spacing: -.025em;
}

.gatekeepr-typography:not(.pdf-layout-probe) .kpi-card small {
  font-size: 10px;
  font-weight: 500;
  line-height: 1.5;
}

.gatekeepr-typography:not(.pdf-layout-probe) :is(.composite-company, .radar-row strong, .discipline-row strong,
  .opportunity-zone-title, .discipline-zone-title) {
  font-size: 12px;
  font-weight: 800;
  line-height: 1.4;
}

.gatekeepr-typography:not(.pdf-layout-probe) :is(.composite-meta span, .radar-row small, .radar-row em,
  .discipline-row em, .opportunity-zone-description, .opportunity-zone-empty,
  .opportunity-company-pill, .discipline-zone-description, .discipline-zone-empty,
  .opportunity-map-intro, .discipline-map-intro, .panel-conclusion, .panel-note) {
  font-size: 11px;
  line-height: 1.6;
}

.gatekeepr-typography:not(.pdf-layout-probe) .discipline-row small {
  font-size: 11px;
  line-height: 1.6;
}

.gatekeepr-typography:not(.pdf-layout-probe) .action-panel .composite-summary-copy > p {
  font-size: 11px;
  line-height: 1.6;
}

.gatekeepr-typography:not(.pdf-layout-probe) .composite-score-main {
  font-size: 21px;
  font-weight: 800;
  letter-spacing: -.03em;
}

.gatekeepr-typography:not(.pdf-layout-probe) .screener-notice {
  font-size: 11px;
  line-height: 1.78;
}

.gatekeepr-typography:not(.pdf-layout-probe) :is(input, select) {
  font-size: 12px;
}

.gatekeepr-typography:not(.pdf-layout-probe) .screener-filter-grid label > span {
  font-size: 10px;
  font-weight: 730;
}

.gatekeepr-typography:not(.pdf-layout-probe) :is(.screener-table-meta p, .gatekeepr-typography:not(.pdf-layout-probe)-size) {
  font-size: 11px;
  line-height: 1.6;
}

.gatekeepr-typography:not(.pdf-layout-probe) .data-table th,
.gatekeepr-typography:not(.pdf-layout-probe) .sortable-head button {
  font-size: 10px;
  font-weight: 750;
  letter-spacing: .035em;
}

.gatekeepr-typography:not(.pdf-layout-probe) .data-table td {
  font-size: 12px;
  line-height: 1.5;
}

.gatekeepr-typography:not(.pdf-layout-probe) .company-cell strong {
  font-size: 12px;
  font-weight: 800;
  letter-spacing: -.012em;
}

.gatekeepr-typography:not(.pdf-layout-probe) :is(.company-cell small, .metric-sub, .base-mos-target) {
  font-size: 10px;
  line-height: 1.5;
}

.gatekeepr-typography:not(.pdf-layout-probe) :is(.price-input, .score-pill, .kpi-index-badge) {
  font-size: 12px;
  font-weight: 750;
}

.gatekeepr-typography:not(.pdf-layout-probe) .kpi-index-badge b {
  font-weight: 750;
}

.gatekeepr-typography:not(.pdf-layout-probe) .footer {
  font-size: 11px;
  line-height: 1.5;
}

.gatekeepr-typography:not(.pdf-layout-probe) :is(.company-inline-head h3, .company-inline-section-head h3) {
  font-size: 24px;
  font-weight: 800;
  letter-spacing: -.04em;
}

.gatekeepr-typography:not(.pdf-layout-probe) :is(.company-inline-head p, .company-inline-note,
  .case-view-intro p, .case-narrative-card p, .case-valuation-note) {
  font-size: 12px;
  line-height: 1.7;
}

/* Keep the brand visible when the full product navigation no longer fits. */
@media (max-width: 980px) {
  .gatekeepr-typography:not(.pdf-layout-probe) .top-nav { display: none; }
  .gatekeepr-typography:not(.pdf-layout-probe) .lab-nav > a { display: none; }
  .gatekeepr-typography:not(.pdf-layout-probe) .lab-nav > a.active { display: inline-flex; }
  .gatekeepr-typography:not(.pdf-layout-probe) .watchlist-control-mobile {
    display: grid;
    margin-left: auto;
  }
  .gatekeepr-typography.reporter-page .reporter-mobile-toggle {
    display: grid !important;
    place-items: center;
    width: 40px;
    height: 39px;
    margin-left: auto;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: var(--surface);
    color: var(--text);
    font-size: 18px;
  }
  .gatekeepr-typography.reporter-page .reporter-mobile-nav:not([hidden]) {
    display: grid !important;
  }
}

@media (max-width: 1100px) {
  .gatekeepr-typography:not(.pdf-layout-probe) .hero-copy h1 { font-size: clamp(31px, 4vw, 48px); }
  .gatekeepr-typography:not(.pdf-layout-probe) .hero-screener-word { font-size: clamp(50px, 6vw, 72px); }
}

@media (max-width: 820px) {
  .gatekeepr-typography:not(.pdf-layout-probe) .hero-copy h1 { font-size: clamp(34px, 6vw, 55px); }
  .gatekeepr-typography:not(.pdf-layout-probe) .hero-screener-word { font-size: clamp(54px, 9vw, 84px); }
}

@media (max-width: 540px) {
  .gatekeepr-typography:not(.pdf-layout-probe) .brand strong { font-size: 17px; }
  .gatekeepr-typography:not(.pdf-layout-probe) .brand-mark,
  .gatekeepr-typography:not(.pdf-layout-probe) .brand-logo-svg {
    width: 39px !important;
    height: 39px !important;
    max-width: 39px !important;
    flex-basis: 39px;
  }
  .gatekeepr-typography:not(.pdf-layout-probe) .hero-copy h1 { font-size: clamp(32px, 8.1vw, 42px); }
  .gatekeepr-typography:not(.pdf-layout-probe) .hero-screener-word { font-size: clamp(47px, 12.1vw, 67px); }
  .gatekeepr-typography:not(.pdf-layout-probe) .hero-lead { font-size: 12px; }
  .gatekeepr-typography:not(.pdf-layout-probe).screener-page h2 { font-size: 29px; }
}

/* Shared text roles for page-specific components. */
.gatekeepr-typography:not(.pdf-layout-probe):not(.company-report-page)
  :is(.section-heading, .rankings-section-head, .method-section-head) h2 {
  font-size: clamp(29px, 3vw, 39px);
  line-height: 1.15;
  letter-spacing: -.055em;
}

.gatekeepr-typography:not(.pdf-layout-probe)
  :is(.rankings-spotlight-card h2, .ranking-card-head h3, .cards-toolbar h2,
  .dynamic-filter-head h2, .method-panel-head h2, .tool-panel-head h2,
  .tool-results-head h2, .mos-section-head h2) {
  font-size: 24px;
  font-weight: 800;
  line-height: 1.17;
  letter-spacing: -.04em;
}

.gatekeepr-typography:not(.pdf-layout-probe)
  :is(.ranking-card-head p, .rankings-spotlight-card p, .rankings-section-head > p,
  .rankings-state-card, .runway-proof-card p, .runway-proof-leg span,
  .dynamic-filter-head p, .dynamic-state, .tool-results-head p,
  .tool-info-card p, .tool-interpretation p, .tool-message, .tool-warning,
  .tool-formula, .dcf-sensitivity-intro, .mos-interpretation p, .mos-method p,
  .mos-company-context span, .method-section-head p, .method-panel-head p,
  .method-question-card p, .method-mini-card p, .method-mini-card span,
  .method-details-body p, .method-details-body li, .method-rule,
  .method-formula, .guide-section-intro, .tool-card p, .lab-step p,
  .method-note p, .reporter-content .section-heading p,
  .reporter-content .news-card p, .reporter-content .sidebar-panel p) {
  font-size: 12px;
  line-height: 1.7;
}

.gatekeepr-typography:not(.pdf-layout-probe)
  :is(.ranking-company strong, .dynamic-company strong, .gk-matrix-company strong,
  .company-card-open, .method-reading-step strong, .method-mini-card strong,
  .method-map-row strong, .method-model-node strong, .tool-summary-list dd,
  .mos-metrics dd, .status-export-name strong) {
  font-size: 12px;
  font-weight: 800;
  line-height: 1.4;
}

.gatekeepr-typography:not(.pdf-layout-probe)
  :is(.ranking-company small, .ranking-row-meta, .ranking-card-coverage,
  .ranking-secondary-value, .ranking-signal-pill, .ranking-value-badge,
  .ranking-metrics small, .runway-summary-item small, .runway-summary-item span,
  .runway-proof-card small, .runway-proof-score, .runway-proof-leg b,
  .gk-matrix-legend, .gk-matrix-company small, .gk-matrix-detail > small,
  .dynamic-company span, .dynamic-group-head p, .dynamic-range-caption,
  .dynamic-hint, .dynamic-results-copy p, .dynamic-preset-label,
  .dynamic-sort-label, .dynamic-group-count, .near-card .ticker,
  .near-context span, .section-kicker, .tool-form label, .note-label,
  .tool-summary-list dt, .tool-input-hint, .tool-disclaimer, .lab-disclaimer,
  .mos-page label, .mos-metrics dt, .mos-kicker, .mos-disclaimer,
  .mos-metadata-note, .method-question-card small, .method-model-node small,
  .method-model-node span, .method-reading-step span, .method-pill,
  .method-model-map-label, .method-code, .method-disclaimer,
  .method-term span, .method-publish-flow > div small,
  .method-publication-status span, .tool-category, .tool-status) {
  font-size: 10px;
  line-height: 1.5;
}

.gatekeepr-typography:not(.pdf-layout-probe)
  :is(.rankings-status-row, .ranking-count, .ranking-position,
  .method-chip-row span, .method-jump a, .tool-badge, .tools-local-nav a,
  .tool-advanced summary, .mos-back-pill, .mos-btn, .mos-source-tabs button,
  .dynamic-preset, .dynamic-sort, .dynamic-control-label, .dynamic-value,
  .active-chip, .dynamic-links a, .mini-pill, .near-miss,
  .reporter-content .category-chip, .reporter-content .coverage-row) {
  font-size: 11px;
  font-weight: 730;
}

.gatekeepr-typography:not(.pdf-layout-probe)
  :is(.tool-form input, .tool-form select, .tool-form textarea,
  .mos-page input, .mos-page select, .cards-search input,
  .reporter-content .search-field input, .reporter-content .filter-grid select) {
  font-size: 12px;
}

.gatekeepr-typography:not(.pdf-layout-probe)
  :is(.dynamic-table, .gk-matrix-table, .tool-table, .mos-ladder) {
  font-variant-numeric: tabular-nums;
}

.gatekeepr-typography:not(.pdf-layout-probe)
  :is(.dynamic-table, .gk-matrix-table, .tool-table, .mos-ladder) th {
  font-size: 10px;
  font-weight: 750;
  letter-spacing: .035em;
}

.gatekeepr-typography:not(.pdf-layout-probe)
  :is(.dynamic-table, .gk-matrix-table, .tool-table, .mos-ladder) td {
  font-size: 12px;
  line-height: 1.5;
}

.gatekeepr-typography:not(.pdf-layout-probe)
  :is(.company-card-link h3, .runway-proof-card h3, .dynamic-group-head h3,
  .dynamic-results-copy h2, .dynamic-near-head h3, .gk-matrix-detail h3,
  .method-question-card h3, .tool-card h3, .lab-step h3, .tool-info-card h2) {
  font-size: 17px;
  font-weight: 800;
  line-height: 1.35;
  letter-spacing: -.025em;
}

.gatekeepr-typography:not(.pdf-layout-probe) .ranking-metrics b {
  font-size: 12px;
  font-weight: 750;
}

.gatekeepr-typography .reporter-mobile-nav a {
  font-size: 12px;
  font-weight: 700;
}

@media (min-width: 861px) and (max-width: 980px) {
  .gatekeepr-typography.reporter-page .reporter-mobile-nav:not([hidden]) {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 8px;
    padding: 11px 16px 16px;
    border-top: 1px solid var(--line);
    background: var(--header-bg);
  }
  .gatekeepr-typography.reporter-page .reporter-mobile-nav a {
    padding: 10px 7px;
    border: 1px solid var(--line);
    border-radius: 9px;
    color: var(--text);
    text-align: center;
    background: var(--surface);
  }
}

.gatekeepr-typography:not(.pdf-layout-probe) .dynamic-count-line strong {
  font-size: clamp(32px, 4vw, 56px);
  font-weight: 850;
}

.gatekeepr-typography:not(.pdf-layout-probe)
  :is(.method-hero-copy h1, .tool-hero-copy h1, .status-hero h1) {
  max-width: none;
  font-size: clamp(37px, 4.5vw, 64px);
  font-weight: 850;
  line-height: 1;
  letter-spacing: -.063em;
  white-space: normal;
  overflow-wrap: anywhere;
}

.gatekeepr-typography:not(.pdf-layout-probe)
  :is(.method-hero-copy .hero-lead, .tool-hero-copy > p, .status-hero p) {
  font-size: 14px;
  line-height: 1.82;
}

/* The full text title on Lab needs wrapping rather than the short product lockup. */
.gatekeepr-typography.lab-page .hero-copy h1 { max-width: 15ch; }

/* Standalone status shell uses its own header and compact information cards. */
.gatekeepr-typography .status-brand strong {
  font-size: 19px;
  font-weight: 900;
  letter-spacing: -.045em;
}
.gatekeepr-typography .status-brand small { font-size: 11px; font-weight: 650; }
.gatekeepr-typography :is(.status-back, .status-refresh) { font-size: 12px; font-weight: 730; }
.gatekeepr-typography :is(.status-label, .status-kicker, .status-eyebrow,
  .status-trust div > span, .status-card > span, .status-technical dt) { font-size: 10px; }
.gatekeepr-typography :is(.status-health-card p, .status-note, .status-client-note,
  .status-incident p, .status-card small, .status-trust small, .status-technical dd) {
  font-size: 11px;
  line-height: 1.6;
}
.gatekeepr-typography :is(.status-health-card strong, .status-card strong) { font-size: 21px; }
.gatekeepr-typography .status-trust strong { font-size: 12px; }

/* Report web view: excluded from print and the off-screen PDF measurement probe. */
.gatekeepr-typography.company-report-page:not(.pdf-layout-probe) .company-heading h1 {
  font-size: clamp(38px, 5vw, 56px);
  font-weight: 300;
  font-style: italic;
  letter-spacing: -.04em;
}
.gatekeepr-typography.company-report-page:not(.pdf-layout-probe) .section-heading h2 {
  font-size: 19px;
  font-weight: 300;
  font-style: italic;
  line-height: 1.15;
}
.gatekeepr-typography.company-report-page:not(.pdf-layout-probe)
  :is(.case-block p, .runway-narratives p, .decision-rule, .valuation-alert,
  .web-evidence .evidence-list p) { font-size: 11px; line-height: 1.6; }
.gatekeepr-typography.company-report-page:not(.pdf-layout-probe)
  :is(.case-block h3, .runway-narratives h3, .gk-watch h3) { font-size: 10px; font-weight: 800; }

@media (max-width: 540px) {
  .gatekeepr-typography:not(.pdf-layout-probe)
    :is(.method-hero-copy h1, .tool-hero-copy h1, .status-hero h1) {
    font-size: clamp(32px, 8.1vw, 42px);
  }
  .gatekeepr-typography:not(.pdf-layout-probe)
    :is(.method-hero-copy .hero-lead, .tool-hero-copy > p, .status-hero p) { font-size: 12px; }
  .gatekeepr-typography:not(.pdf-layout-probe):not(.company-report-page)
    :is(.section-heading, .rankings-section-head, .method-section-head) h2 { font-size: 29px; }
  .gatekeepr-typography .status-brand strong { font-size: 17px; }
}

/* Reporter uses the same text roles as the current subpages.
 * Keep component geometry in reporter/assets/reporter.css; typography belongs here.
 */
.gatekeepr-typography.reporter-page :is(.status-pill, .reporter-hero-chips span, .news-badge, .empty-meta) {
  font-size: 10px;
  font-weight: 730;
  line-height: 1.5;
}
.gatekeepr-typography.reporter-page :is(.stat-label, .stat-help, .section-topline, .panel-kicker, .feature-row,
  .news-card-top, .news-ticker, .news-time, .news-card-footer, .coverage-ticker, .sidebar-footnote a) {
  font-size: 11px;
  line-height: 1.6;
}
.gatekeepr-typography.reporter-page :is(.stat-label, .section-topline, .panel-kicker) {
  font-weight: 800;
}
.gatekeepr-typography.reporter-page :is(.section-topline, .panel-kicker) {
  letter-spacing: .1em;
}
.gatekeepr-typography.reporter-page :is(.reporter-hero-link, .count-bubble, .filter-grid label span,
  .text-action, .load-more, .empty-state p) {
  font-size: 12px;
  line-height: 1.7;
}
.gatekeepr-typography.reporter-page :is(.reporter-hero-link, .count-bubble, .text-action, .load-more) {
  font-weight: 750;
}
.gatekeepr-typography.reporter-page :is(.reporter-stat-card strong, .reporter-stat-card strong.stat-last) {
  font-size: 21px;
  font-weight: 800;
  line-height: 1.35;
  letter-spacing: -.03em;
}
.gatekeepr-typography.reporter-page :is(.sidebar-feature h3, .panel-head h3) {
  font-size: 24px;
  font-weight: 800;
  line-height: 1.17;
  letter-spacing: -.04em;
}
.gatekeepr-typography.reporter-page :is(.news-card h3, .empty-state h3, .sidebar-footnote h3) {
  font-size: 17px;
  font-weight: 800;
  line-height: 1.35;
  letter-spacing: -.025em;
}
.gatekeepr-typography.reporter-page :is(.news-company, .feature-row strong, .coverage-name) {
  font-weight: 800;
}
.gatekeepr-typography.reporter-page .mini-count {
  font-size: 17px;
  font-weight: 800;
  line-height: 1.35;
}

/* Tools remains reachable when the product navigation collapses on small screens. */
@media screen and (max-width: 980px) {
  .gatekeepr-typography:not(.pdf-layout-probe) .top-nav {
    display: flex;
    flex: 0 0 auto;
    margin-left: auto;
    gap: 0;
  }
  .gatekeepr-typography:not(.pdf-layout-probe) .top-nav > a,
  .gatekeepr-typography:not(.pdf-layout-probe) .top-nav > .watchlist-control { display: none; }
}
@media screen and (max-width: 540px) {
  .gatekeepr-typography:not(.pdf-layout-probe) .site-header .nav-wrap { gap: 8px; }
}
