/* Shared typography roles. Keep the existing sizes, leading, spacing and artwork.
   Route styles and the Perception shadow shell also load this policy. */
:root {
  --nous-interface: 'ibm-plex-sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --nous-editorial: 'newsreader', Georgia, 'Times New Roman', serif;
}

body, .q-app, .nm-app, .nm-integrated {
  font-family: var(--nous-interface) !important;
}

/* Control labels are interface text even when a surrounding title is serif.
   Font-only importance keeps lazily loaded route rules from changing this role. */
button, input, select, textarea:not(#typing),
button :is(strong, small, em, span),
.primary-action, .secondary-action,
.site-header :is(nav, .nav-submenu),
.mobile-explore-sheet :is(h2, h3, strong),
.site-header .nav-submenu :is(h2, h3, strong, em),
.site-header .explore-catalogue-panel :is(h2, h3, strong),
.site-header .ep-preview :is(h2, h3),
.site-header .ep-journal a strong,
.site-header .et-invitation > span,
.atlas-chapter-links a, .article-pagination button strong,
.edition-part-list > button > strong, .knowing-buttons button,
.loop-instrument > button > strong {
  font-family: var(--nous-interface) !important;
}

/* Nousophy wordmarks keep the verified live Newsreader Medium weight. */
.site-header .brand, [data-site-header] [data-site-brand],
[data-site-brand] > span, .site-footer .brand,
.nm-wordmark, .q-brand > span, .legal-wordmark, .missing-wordmark {
  font-family: var(--nous-editorial) !important;
  font-weight: 500;
}
.site-header .brand > span:not(.brand-mark),
.site-footer .brand > span:not(.brand-mark) {
  font-family: var(--nous-editorial) !important;
  font-weight: inherit;
}

/* Cards, menu previews and practical reading aids use the same clean face. */
.dimension-card h3, .home-module-caption h3, .aspect-study-title,
.how-section h3, .about-process li h3, .book-practice-grid h3,
.deep-profile-inclusion h3, .source-audit-card h3,
.journal-essay-link h3, .journal-entry-copy h3,
.journal-card h2, .journal-card h2 button,
.gx-card-title, .gx-card-meaning, .gx-card-link,
.gx-map-heading h2, .gx-scenario h2,
.gx-lens-description h3, .gx-scenario-perspective h3, .gx-reflection h3,
.mx-page .mx-methods h2, .mx-page .mx-example h2,
.nm-app .nm-choice-title, .nm-app .nm-module h3,
.nm-app .nm-module-identity-title,
.nm-app .nm-starting-route h2,
.nm-app .nm-finding :is(h2, h3),
.nm-app .nm-map-observation > h3,
.q-app .q-finding h3, .q-app .q-finding .q-definition,
.q-app .q-next p,
.q-app .rp-capacity-card h3, .q-app .rp-capacity-experiment h3,
.q-app .rp-measure h3, .q-app .rp-typology-card h3, .q-app .rp-scenario h3,
.q-app .rp-capacity-pair-question,
.q-app .rp-typology-summary strong, .q-app .rp-typology-intro,
.q-app .rp-axis-list > div > strong,
.q-app .rp-measure .rp-definition, .q-app .rp-scenario .rp-situation,
.ac-main .ac-word-body h3,
.uf-page .uf-people strong, .uf-page .uf-topic strong,
.uf-page .uf-summary-body .uf-question, .uf-page .uf-next .uf-question,
.cf-page .cf-definition h2 {
  font-family: var(--nous-interface) !important;
}

/* Every actual assessment prompt stays plain and keeps its exact wording. */
.question-card h1, .q-app .q-question :is(h1, h2, h3),
.nm-app .nm-question :is(h1, h2, h3),
.nm-integrated .nm-question-heading h2,
.mx-page .mx-question,
.aspect-reflection p,
.assessment-orientation-copy > p:not(.eyebrow),
.assessment-orientation-guide li strong,
.assessment-landing .assessment-lens-reading h2,
.assessment-landing .assessment-landing-journey h2,
.assessment-landing .assessment-landing-guidance h3 {
  font-family: var(--nous-interface) !important;
}

/* Explanatory prose is sans; authored long-form reading and major titles retain
   their existing editorial face, italics and print treatment. */
.home-deep-profile-copy > p, .home-book-copy > p:not(.eyebrow),
.featured-essay-copy > p:not(.journal-card-meta),
.about-hero-copy > p:not(.eyebrow), .about-laboratory-copy > p,
.about-process p, .contact-details > p,
.book-thesis > p, .book-hero-description, .deep-profile-intro,
.manifesto-project > div > p:not(.eyebrow),
.exhibit-head > p, .exhibit-reading > p, .knowing-description > p:last-child,
.loop-detail > p:not(.eyebrow),
.result-summary, .result-subtitle,
.report-content p, .report-content li,
.profile-map-detail p, .site-footer p,
.ac-main .ac-intro .ac-lead,
.nm-app .nm-score span, .q-app .q-finding h3 small,
.q-app .rp-capacity-card-meta :is(strong, small),
.q-app .rp-measure-heading small {
  font-family: var(--nous-interface) !important;
}

/* Perception's interface and explanations; scientific stimuli are untouched. */
.category-card h3, .experiment-card h2, .how-label,
.response-panel h2, .reveal-copy h3, .guide-experiment h3,
.journal-entry h2, .choice-field legend, .choice, .probe-question {
  font-family: var(--nous-interface) !important;
}

/* Loaded typing UI only. Preserve the font-free phone entry, selectable
   passage/textarea fonts and the existing monospace timing/statistics. */
html[data-typing-entry=app] .shell,
html[data-typing-entry=app] .shell :is(h1, h2, h3, p, label, legend, summary),
html[data-typing-entry=app] .metric-label,
html[data-typing-entry=app] .metric .metric-inline-goal,
html[data-typing-entry=app] .metric .ghost-delta,
html[data-typing-entry=app] .pace-axis,
html[data-typing-entry=app] .history-chart-axis,
html[data-typing-entry=app] .history-chart-label,
html[data-typing-entry=app] .history-run-card {
  font-family: var(--nous-interface) !important;
}
