:root {
  --oracle-font-ui: "BIZ UDPGothic", "Yu Gothic UI", "Hiragino Kaku Gothic ProN", Meiryo, sans-serif;
  --oracle-font-display: "Yu Mincho", YuMincho, "Hiragino Mincho ProN", "Noto Serif JP", serif;
  --oracle-font-code: "Cascadia Code", "Cascadia Mono", Consolas, "BIZ UDPGothic", monospace;
}

html,
body,
button,
input,
select,
textarea {
  font-family: var(--oracle-font-ui);
}

/* Interface language: Japanese and Latin share one glyph system. */
body .brand-copy .eyebrow,
body .model-launcher-kicker,
body .header-model > strong,
body .model-launcher-action,
body .panel-kicker,
body .game-command-menu header span,
body .game-command-menu button strong,
body .game-command-menu button small,
body .model-picker-header span,
body .model-picker-header small,
body .model-card-name,
body .model-card-maker,
body .model-card-archetype,
body .model-card-alignment,
body .model-name,
body .composer-title,
body .composer-entity-button,
body .picker-confirm,
body .location-state,
body .connection-status,
body .run-banner,
body .error-state-overlay > span,
body .error-state-overlay > small {
  font-family: var(--oracle-font-ui);
}

/* Bound intelligence header: remove the conspicuous mixed-font seam. */
body .header-model {
  font-family: var(--oracle-font-ui);
}

body .model-launcher-kicker {
  font-size: 0.52rem;
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: 0.045em;
}

body .header-model > strong {
  font-size: 1.02rem;
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: 0.012em;
}

body .model-launcher-action {
  font-weight: 700;
  letter-spacing: 0.025em;
}

/* Narrative and proper-name hierarchy. */
body .brand-copy h1,
body .boot-sequence strong,
body .location-intel > strong,
body .game-command-menu header b,
body .model-picker-header h2,
body .panel-heading h2,
body .invocation-copy > strong,
body .character-speech header b,
body .character-speech p,
body .hina-dialogue header b,
body .hina-dialogue > p,
body .error-state-overlay > strong {
  font-family: var(--oracle-font-display);
}

/* Machine-only data keeps a strict terminal rhythm. */
body .model-launcher-meta,
body .model-launcher-rank,
body .descent-link,
body .model-card-id,
body .model-card-rank,
body .model-card-price,
body .model-card-stats,
body .model-card-loadout,
body .location-intel-head,
body .location-meta,
body .location-map-sector,
body .location-map-depth,
body .location-map-attribution,
body .location-chronometer,
body .imperial-clock,
body .capability-status,
body .score-value,
body .entity-stage-code,
body .active-entity-card > header,
body .active-entity-card > footer span,
body .invocation-copy > span,
body .invocation-copy > b,
body .invocation-copy > small {
  font-family: var(--oracle-font-code);
  font-variant-numeric: tabular-nums;
}

@media (max-width: 780px) {
  body .model-launcher-kicker {
    font-size: 0.46rem;
  }

  body .header-model > strong {
    font-size: 0.84rem;
  }
}
