/* The approved blog heading face becomes the paper voice for plans and campus
   chapters. Functional labels stay in the complete shared interface family. */
:root #main-content .path-public-workspace,
:root main :is(.minor-shell, .scheme-compare, .campus-shell, .campus-photos-page) {
  font-family: var(--nylon-type-ui);
  font-size: 16px;
  font-weight: 500;
  line-height: 1.75;
  color: var(--ny-text);
}

/* The main plan sheet already scopes its font shorthands with #main-content.
   Keep that scope and add :root so the final face wins without !important.
   Nylon Reading supplies full Han coverage beyond the fixed paper subset. */
:root #main-content .path-public-workspace :is(.path-cover h1,
  .path-program-heading h2, .path-section-title, .path-year-heading h3,
  .path-term > h4, .pathway-sources h2, .path-course-panel h3),
:root .minor-shell :is(.pathway-heading h1, .minor-evidence > h2,
  .minor-requirements h3),
:root .scheme-compare :is(.compare-heading h1, h2),
:root .campus-shell :is(.campus-heading h1, .campus-heading h2,
  .campus-selection-identity h2, .campus-detail-copy h2,
  .campus-search-results > h2, .campus-planner > h2,
  .campus-map-toolbar h2, .campus-scene-heading h2,
  .campus-route-result h2, .campus-atlas-empty h2, .campus-tour > header h2),
:root :is(.campus-shell, .campus-photos-page) .campus-photo-card h2,
:root .campus-photos-page > h1 {
  font-family: var(--nylon-type-paper);
  font-weight: 700;
  color: var(--ny-text);
}

/* A photographic poster needs its original overlay ink in both themes. Only
   its title face changes; camera coordinates and marker labels are untouched. */
:root .campus-shell :is(.campus-vr-poster h3, .campus-scene-empty h3) {
  font-family: var(--nylon-type-paper);
  font-weight: 700;
}

:root #main-content .path-public-workspace :is(.path-row-heading h4,
  .path-row-heading h5, .path-course-panel h2, .path-course-panel h4,
  .path-plan-switch > h2, .scheme-school > summary),
:root .scheme-compare :is(.compare-course-columns h3, .compare-rule h3,
  .compare-note-changes h3, .compare-note-changes h4, .compare-sources h3),
:root .campus-shell :is(.campus-related h3, .campus-related summary,
  .campus-place-sources summary, .campus-route-result h3) {
  font-family: var(--nylon-type-ui);
  font-weight: 600;
  color: var(--ny-text);
}

/* Three typed exclusions match interface.css's legacy (0,4,2) shorthand.
   The independent-page rule is (0,5,1); the main plan scope also wins over its
   ID-scoped shorthand. All visible native/custom controls use a real 500 face. */
:root #main-content .path-public-workspace
  :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]), select, textarea),
:root :is(.minor-shell, .scheme-compare, .campus-shell, .campus-photos-page)
  :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]), select, textarea),
:root #main-content .path-public-workspace .ny-select > button.ny-select-trigger[aria-expanded],
:root :is(.minor-shell, .scheme-compare, .campus-shell, .campus-photos-page)
  .ny-select > button.ny-select-trigger[aria-expanded] {
  font-family: var(--nylon-type-ui);
  font-size: 16px;
  font-weight: 500;
  color: var(--ny-text);
}

:root #main-content .path-public-workspace :is(input, textarea)::placeholder,
:root :is(.minor-shell, .scheme-compare, .campus-shell, .campus-photos-page)
  :is(input, textarea)::placeholder {
  color: var(--ny-muted);
  font-weight: 500;
  opacity: 1;
}

:root #main-content .path-public-workspace :is(.pathway-controls label,
  .path-course-panel label, .path-cover-label),
:root .minor-shell .pathway-controls label,
:root .scheme-compare label,
:root .campus-shell :is(.campus-search label, .campus-route-form label,
  .campus-atlas-filters label),
:root .campus-photos-page .campus-photo-form label {
  font-family: var(--nylon-type-ui);
  font-size: 14px;
  font-weight: 600;
  color: var(--ny-text);
}

:root #main-content .path-public-workspace :is(.pathway-controls button,
  .path-directory-action button, .path-directory-action a,
  .path-section-links a, .path-section-links button, .path-year-nav a,
  .path-cover nav a, .path-cover-actions a, .path-course-panel button,
  .path-course-panel .path-detail-full, .pathway-sources > a),
:root .minor-shell :is(.pathway-controls button, nav a, .minor-evidence > a),
:root .scheme-compare :is(button, .compare-back, .compare-result-heading nav a,
  .compare-row footer a, .compare-sources article > a),
:root .campus-shell :is(.campus-search button, .campus-primary,
  .campus-secondary, .campus-selection-actions button,
  .campus-selection-actions .secondary-button, .campus-workbench-tabs a,
  .campus-label-toggle, .campus-zoom button, .campus-heading nav a,
  .campus-route-step, .campus-map-load button),
:root .campus-photos-page :is(button, nav a) {
  font-family: var(--nylon-type-ui);
  font-weight: 600;
}

/* Directory names stay practical and compact; semester titles above them use
   the paper face. Dates and evidence are a real readable secondary layer. */
:root #main-content .path-public-workspace :is(.path-course-name,
  .path-rule-text, .scheme-programmes a, .path-search-result-list button),
:root .minor-shell :is(.minor-requirements p, .minor-requirements li),
:root .scheme-compare :is(.compare-course-columns li > span,
  .compare-moved li p, .compare-row-text),
:root .campus-shell :is(.campus-directory .campus-result span,
  .campus-building-list a, .campus-detail-copy > p,
  .campus-route-steps li, .campus-photo-card figcaption > p),
:root .campus-photos-page .campus-photo-card figcaption > p {
  font-family: var(--nylon-type-ui);
  font-size: 15px;
  font-weight: 500;
}
:root #main-content .path-public-workspace .path-search-result-list button {
  font-weight: 600;
}
:root .campus-shell .campus-directory .campus-result[aria-current] span {
  font-weight: 650;
}
:root .campus-shell :is(.campus-workbench-tabs a[aria-current],
  .campus-building-list a[aria-current]) { font-weight: 700; }

:root #main-content .path-public-workspace :is(.path-cover-intro,
  .path-course-panel [data-course-detail-fragment] > p:not(.path-course-code)),
:root .minor-shell .pathway-heading p,
:root .scheme-compare .compare-heading > p:last-child,
:root .campus-shell .campus-heading p {
  font-family: var(--nylon-type-ui);
  font-size: 15px;
  font-weight: 500;
}

:root #main-content .path-public-workspace :is(.path-cover-context,
  .path-cover-evidence > span, .path-program-heading > p, .pathway-controls form > p,
  .scheme-streams a, .scheme-kind, .path-course-meta, .path-search-result-list small,
  .pathway-sources p, .path-caution, .path-evidence-note, .scheme-history-toggle,
  .path-course-panel small, .path-detail-count, .path-year-kicker),
:root .minor-shell :is(.path-caution, .pathway-controls p, .path-credit-grid dt,
  .minor-evidence > p, .minor-evidence .eyebrow),
:root .scheme-compare :is(.compare-overline, .compare-summary span, .compare-scope,
  .compare-course-columns h3 span, .compare-course-columns small,
  .compare-column-head, .compare-rule > header > span, .compare-row-credits,
  .compare-row footer, .compare-side, .compare-other a span,
  .compare-sources p, .compare-note-changes p),
:root .campus-shell :is(.campus-result small, .campus-result-count,
  .campus-map-toolbar h2 small, .campus-map-caption, .campus-map-load,
  .campus-scene-note, .campus-scene-heading > span, .campus-area-label,
  .campus-selection-aliases, .campus-selection-availability,
  .campus-detail-copy .campus-muted, .campus-building-list small,
  .campus-map-directory summary span, .campus-photo figcaption,
  .campus-muted, .campus-photo-card .campus-muted, .campus-sources p,
  .campus-atlas-pagination),
:root .campus-photos-page :is(.campus-muted, .campus-photo-card small, nav) {
  font-size: 13px;
  font-weight: 500;
}

/* Replace the old fixed night ink in the independent compare/minor pages;
   use the established paired palette without changing any paper/background. */
:root .scheme-compare :is(.compare-heading h1, h2, .compare-row-text,
  .compare-course-columns li > span, .compare-rule h3),
:root .minor-shell :is(.pathway-heading h1, .minor-evidence > h2,
  .minor-requirements h3, .minor-requirements p, .path-credit-grid dd),
:root .campus-shell :is(.campus-result span, .campus-building-list a) {
  color: var(--ny-text);
}
:root .scheme-compare :is(.compare-overline, .compare-heading > p:last-child,
  .compare-summary span, .compare-scope, .compare-muted,
  .compare-course-columns h3 span, .compare-course-columns small,
  .compare-column-head, .compare-row-credits, .compare-side, .compare-row footer,
  .compare-sources p, .compare-note-changes p, .compare-other a span),
:root .minor-shell :is(.pathway-heading p, .pathway-controls form > p,
  .path-credit-grid dt, .minor-evidence > p:not(.path-source-conflict)) {
  color: var(--ny-muted);
}
:root .scheme-compare :is(.compare-back, .compare-result-heading nav a,
  .compare-row footer a, .compare-sources article > a),
:root .minor-shell :is(nav a, .minor-evidence > a) { color: var(--ny-link); }
:root .scheme-compare button,
:root .minor-shell .pathway-controls button { color: var(--ny-text); }
:root .campus-shell :is(.campus-heading p, .campus-result small,
  .campus-result-count, .campus-map-caption, .campus-map-toolbar h2 small,
  .campus-scene-note, .campus-detail-copy .campus-muted,
  .campus-building-list small, .campus-photo-card .campus-muted) {
  color: var(--ny-muted);
}

/* Codes, source digests and timeline indices remain the original mono role.
   The local Latin face has a regular asset: do not synthesize a bold code. */
:root #main-content .path-public-workspace :is(.path-course-code,
  .path-year-index, .path-year-kicker),
:root .minor-shell :is(.minor-hash, .path-credit-grid dd),
:root .scheme-compare :is(.compare-course-columns li > strong,
  .compare-moved li > strong, .compare-row-codes, .compare-digest) {
  font-family: var(--nylon-type-code);
  font-weight: 400;
}

@media (max-width: 740px) {
  /* The cohort's 104px field shares a line with the programme. Keep its
     16px medium face and recover room from chrome, rather than narrowing the
     programme or hiding the final year digit. */
  :root #main-content .path-public-workspace #path-filter-cohort
    .ny-select > button.ny-select-trigger {
    padding-inline: 10px;
    column-gap: 6px;
  }
  :root #main-content .path-public-workspace :is(.path-directory-action button,
    .path-section-links button, .path-year-nav a),
  :root .campus-shell :is(.campus-label-toggle, .campus-map-toolbar h2 small,
    .campus-zoom button, .campus-result-count) { font-size: 13px; }
}
