/* Codex typography: 12px minimum labels, 14px reading text. */
@media (min-width: 821px) and (pointer: fine), (min-width: 1101px) {
  .sidebar .brand { height: 68px; flex-shrink: 0; }
  .sidebar .mode-badge { margin: 8px 14px 4px; padding: 6px 8px; }
  .sidebar .main-nav { padding: 4px 8px; }
  .sidebar .main-nav a { min-height: 36px; padding-block: 5px; }
  .sidebar .nav-group { padding: 3px 0 5px; }
  .sidebar .nav-group > small { padding-bottom: 2px; }
}
.main-nav a { min-height: 42px; height: auto; padding-block: 9px; font-size: 12px; line-height: 1.45; letter-spacing: .8px; }
.main-nav a i { flex: 0 0 22px; }
.nav-group > small { font-size: 12px; letter-spacing: 1.5px; }
.brand small, .mode-badge { font-size: 12px; }
.breadcrumb { font-size: 12px; letter-spacing: .8px; }
.global-search input { font-size: 12px; letter-spacing: .5px; }
.mj-tool { font-size: 12px; line-height: 1.35; }
.eyebrow, .page-head .eyebrow { font-size: 12px; letter-spacing: 1.8px; }
.button { font-size: 12px; letter-spacing: .8px; line-height: 1.4; min-height: 42px; padding: 10px 16px; text-align: center; }
.hero-sub { font-size: 12px; letter-spacing: 3px; }
.section-heading { font-size: 12px; }
.status-strip small, .data-pair small { font-size: 12px; letter-spacing: 1px; }
.data-pair strong { font-size: 14px; }
.data-card small { font-size: 12px; line-height: 1.5; }
.data-card p, .archive-card p, .timeline-item p, .entity-event-card p,
.search-result p, .planned-action p, .union-action-card > p, .union-result p {
  font-size: 14px; line-height: 1.65;
}
.card-action, .entity-event-open { font-size: 12px; letter-spacing: .7px; }
.data-card.card-with-heading { display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: auto 1fr; }
.data-card.card-with-heading.has-media { grid-template-columns: minmax(130px, 38%) minmax(0, 1fr); }
.card-kicker {
  grid-column: 1 / -1; min-width: 0; padding: 12px 20px;
  border-bottom: 1px solid var(--line); background: rgba(4, 15, 29, .45);
}
.card-kicker > small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; letter-spacing: .8px; }
.card-with-heading .card-content { display: flex; flex-direction: column; padding: 20px; }
.card-with-heading .card-content > h3 { margin-top: 0; overflow-wrap: anywhere; }
.card-with-heading .card-content > p { flex-shrink: 0; }
.act-card-footer { margin-top: auto; padding-top: 20px; display: grid; gap: 12px; }
.act-card .act-card-progress, .card-with-heading .card-action { position: static; }
.card-with-heading .card-action { display: block; line-height: 1.5; overflow-wrap: anywhere; }
.card-with-heading .card-content > .card-action,
.card-with-heading .character-card-footer { margin-top: auto; padding-top: 20px; }
.card-with-heading .character-card-footer { position: static; gap: 12px; flex-wrap: wrap; }
.act-card-progress > div small, .act-card-progress > div strong { font-size: 12px; }
.character-card-footer { flex-wrap: wrap; position: static; margin-top: 18px; }
.data-card[data-character-card] .card-content { padding-bottom: 20px; }
.character-card-footer .card-action { font-size: 12px; white-space: normal; }
.character-encounter strong { font-size: 12px; }
.data-card .character-card-footer {
  display: grid; grid-template-columns: max-content minmax(0, 1fr);
  align-items: center; gap: 12px; margin-top: auto; padding-top: 20px;
}
.data-card.card-with-heading[hidden] { display: none; }
.data-card .character-card-footer .card-action {
  position: static; margin: 0; white-space: nowrap;
}
.data-card .character-encounter {
  justify-self: end; min-width: 0; max-width: 100%;
}
.data-card .character-encounter small {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.card-flags span, .chip, .badge { font-size: 12px; line-height: 1.45; }
.chapter-row strong { font-size: 14px; }
.chapter-row small, .timeline-meta, .entity-event-meta, .relation-list span { font-size: 12px; }
.filter-bar a, .cosmos-toolbar button { font-size: 12px; }
.character-filters:not(.archive-filters) label > small,
.character-filters:not(.archive-filters) output { font-size: 12px; line-height: 1.5; letter-spacing: .7px; }
.character-filters:not(.archive-filters) input,
.character-filters:not(.archive-filters) select { font-size: 14px; min-height: 44px; }
.character-filter-reset, .character-filter-empty button { font-size: 12px; min-height: 44px; letter-spacing: .5px; }
.character-filter-empty strong { font-size: 13px; }
.session-date time, .session-links small, .session-original summary small,
.foundry-entry summary small, .archive-source-note { font-size: 12px; }
.session-links a, .session-original summary, .chapter-archive summary,
.foundry-entry summary span, .intel-entry summary { font-size: 13px; line-height: 1.55; }
.union-action-details dt, .union-result small, .union-progress small,
.union-summary small { font-size: 12px; letter-spacing: .6px; }
.union-action-details dd { font-size: 13px; line-height: 1.55; }
.union-action-card > header > span, .planned-action > span { font-size: 12px; }
.campaign-progress > header small { font-size: 12px; letter-spacing: 1.2px; }
.campaign-act-progress b, .campaign-act-progress strong { font-size: 12px; letter-spacing: .4px; }
.campaign-progress > p { font-size: 12px; }
.mj-login-panel > small, .mj-login-panel label,
.visibility-drawer > header small, .visibility-scope > small { font-size: 12px; }
.visibility-scope p, .visibility-row strong { font-size: 13px; }
.visibility-row small, .visibility-drawer > footer { font-size: 12px; }

/* Long-form content, including dossier drawers and mobile variants. */
.session-card > p, .session-original-content,
.player-note summary, .player-note-body, .intel-entry summary,
.session-briefing-position, .session-briefing-situation,
.session-briefing-alert p, .session-objectives li p, .session-objectives li strong,
.ship-overview > p, .ship-zone-detail > p, .ship-map-preview i,
.ship-equipment li span, .ship-particularity p, .ship-element-description,
.artifact-lore .narrative-copy p, .artifact-abilities p, .linked-artifact li,
.location-zone-copy > p, .location-zone-copy aside p,
.archive-richtext p, .foundry-entry .archive-richtext p,
.archive-richtext li, .archive-richtext dd,
.event-detail-copy p, .entity-event-summary p, .event-sources p,
.relation-map-inspector p, .union-action-details dd,
.session-links a, .session-original summary, .chapter-archive summary,
.foundry-entry summary span, .page-head > p:last-child {
  font-size: 14px; line-height: 1.65;
}
.archive-richtext h3, .archive-richtext h4 { font-size: 16px; line-height: 1.45; }
.chapter-row small { font-size: 14px; line-height: 1.6; }
.section-heading { height: auto; min-height: 24px; }
.filter-bar { flex-wrap: wrap; }
.portrait-status { max-width: calc(100% - 24px); }
.card-media, .visual-frame { container-type: inline-size; }
.portrait-status.echo {
  grid-template-columns: 6px minmax(0, 1fr); gap: 3px 6px;
  max-width: calc(100% - 28px); padding: 8px 9px;
  font-size: clamp(9px, 5cqi, 12px); letter-spacing: .8px; line-height: 1.15;
}
.portrait-status.echo i { width: 6px; height: 6px; }
.portrait-status.echo b, .portrait-status.echo small {
  min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.portrait-status.echo small, .portrait-status.echo.profile-status small {
  font-size: clamp(8px, 4.2cqi, 10px); line-height: 1.25; letter-spacing: .1px;
}
.portrait-status.echo.profile-status {
  max-width: calc(100% - 40px); padding: 8px 10px;
  font-size: clamp(9px, 5cqi, 12px);
}
.biometric-monitor { height: 52px; }
.biometric-monitor svg { top: 18px; }
.biometric-label { letter-spacing: .3px; }
.session-date time { white-space: nowrap; letter-spacing: 0; }
.session-timeline { --session-date-width: 112px; }
.relation-node strong, .relation-node small { letter-spacing: .2px; line-height: 1.35; }

/* Stack narrow cards before their footer columns become cramped. */
@media (min-width: 821px) and (max-width: 1200px) {
  .card-grid { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 1100px) {
  .topbar { gap: 10px; }
  .breadcrumb { min-width: 0; }
  .global-search { min-width: 0; width: min(240px, 24vw); }
  .global-search kbd { display: none; }
}
@media (max-width: 560px) {
  .session-timeline { --session-date-width: 96px; gap: 8px; }
  .session-date { padding-right: 8px; }
  .session-card { margin-left: 8px; }
  .data-card.card-with-heading.has-media { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto auto 1fr; }
  .card-with-heading .card-media { min-height: 220px; border-right: 0; border-bottom: 1px solid var(--line); }
  .card-with-heading .card-media img { object-fit: contain; }
  .breadcrumb { font-size: 12px; letter-spacing: .3px; }
  .mj-tool { font-size: 12px; letter-spacing: .03em; }
  .hero-actions { align-items: stretch; }
  .hero-actions .button { width: 100%; }
  .campaign-act-progress { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .character-filters:not(.archive-filters) input,
  .character-filters:not(.archive-filters) select { font-size: 16px; }
  .chapter-row small { max-width: none; white-space: normal; }
  .chapter-row { grid-template-columns: 36px minmax(0, 1fr) 20px; }
  .data-card p, .archive-card p, .timeline-item p { font-size: 14px; }
}
