/* Readability floor for secondary UI text.
   Loaded last so compact component styles cannot shrink essential copy below
   a comfortable desktop/mobile reading size. */

:root {
  --type-caption: 0.75rem;
  --type-meta: 0.8125rem;
  --type-supporting: 0.875rem;
}

/* Section labels, counters, badges, tabs, filters, and tertiary controls. */
:where(
  .eyebrow,
  .path-card > span,
  .n5-overview-card > span,
  .resource-card > span,
  .n5-lesson-head > span,
  .n5-activity-card > span,
  .lesson-head-copy > span,
  .workbook-kicker,
  .basic-number,
  .basic-card small,
  .basic-card em,
  .annual-save,
  .popular-badge,
  .trial-badge,
  .word-card > span,
  .word-card button,
  .phrase-translation dt,
  .phrase-breakdown summary,
  .phrase-breakdown span,
  .phrase-breakdown small,
  .phrase-breakdown em,
  .phrase-meaning > span,
  .phrase-tap-hint,
  .phrase-word-usage,
  .phrase-word-romaji,
  .phrase-word-button small,
  .lesson-suggestions > span,
  .lesson-suggestions small,
  .lesson-hiragana,
  .lesson-romaji,
  .lesson-feedback,
  .speech-status,
  .speech-privacy,
  .kanji-frequency,
  .kanji-reading,
  .kanji-card em,
  .kanji-card small,
  .kanji-card-actions button,
  .data-credit,
  .library-status,
  .library-toolbar > label:not(.library-search),
  .library-filter,
  .download-card small,
  .hero-stats dd,
  .footer-disclaimer,
  .copyright
) {
  font-size: var(--type-caption) !important;
  line-height: 1.45;
}

/* Dense learning surfaces previously used 8–11px type. These labels are still
   compact at 12px, but no longer require browser zoom to decipher. */
:where(
  .brand small,
  .account-open span,
  .eyebrow span,
  .hero-card-label,
  .hero-card-reading i,
  .hero-card small,
  .kana-cell small,
  .kanji-progress span,
  .kanji-hear,
  .kanji-learn-toggle,
  .kanji-context,
  .formula span,
  .flashcard-summary span,
  .flashcard-kicker,
  .flashcard-tap span,
  .flash-tool,
  .flashcard-ratings p,
  .flashcard-ratings small,
  .jlpt-kicker,
  .jlpt-path-card dd,
  .jlpt-phrase-card > span,
  .hear-full-phrase,
  .jlpt-note strong,
  .price-kicker,
  .price-card small,
  .price span,
  .search kbd,
  .phrase-category,
  .phrase-id,
  .form-submit p,
  ruby rt
) {
  font-size: var(--type-caption) !important;
  line-height: 1.4;
}

:where(
  .premium-prices p > span,
  [lang="ja"] > small[lang="en"],
  .footer-disclaimer strong,
  .footer-disclaimer p
) {
  font-size: var(--type-caption) !important;
  line-height: 1.5;
}

/* Descriptions and instructional text that carry meaning. */
:where(
  .section-heading > p,
  .path-card p,
  .kana-note p,
  .n5-overview-card p,
  .resource-card p,
  .n5-lesson-head p,
  .resource-signin-prompt p,
  .n5-activity-card p,
  .basic-card > p,
  .formula p,
  .workbook-banner p,
  .kanji-meaning,
  .phrase-translation dd,
  .phrase-focus span,
  .phrase-focus-note,
  .word-card p,
  .signup-success p,
  .password-hint,
  .form-intro,
  .danger-zone p,
  .form-note,
  .account-security-panel > p:not(.eyebrow),
  .account-mfa-panel > p:not(.eyebrow),
  .legal-updated,
  .legal-note,
  .legal-footer
) {
  font-size: var(--type-meta) !important;
  line-height: 1.55;
}

/* Keep interactive text readable without relying on zoom. */
:where(
  .category-filter,
  .chip,
  .lesson-tabs button,
  .word-tabs button,
  .jlpt-tabs button,
  .n5-overview-card button,
  .n5-overview-card a,
  .n5-lesson-head button,
  .n5-activity-card button,
  .resource-card a,
  .resource-signin-prompt button,
  .account-section-nav a
) {
  font-size: var(--type-meta) !important;
}

@media (max-width: 680px) {
  :root {
    --type-caption: 0.75rem;
    --type-meta: 0.8125rem;
    --type-supporting: 0.875rem;
  }

  .brand small,
  .download-card small,
  .hero-stats dd,
  .tab,
  .category-filter,
  .library-status,
  .kanji-reading,
  .kanji-card-actions button {
    font-size: var(--type-caption) !important;
  }
}
