/* core.css: типографічна база
   Канонічне джерело: docs/design-system.md §5
   Порядок завантаження: core → layout → components → themes → print → nichlyst
   TECH_STANDARDS.md §4.1 */

/* Самохостинговий моноширинний шрифт.
   Крок 89. design-system.md §5.8.
   IBM Plex Mono, OFL-ліцензія. Походження — критерій автора
   (заміна JetBrains Mono, 2026-10-26).
   Сабсет: latin + cyrillic + символи дизайн-системи.
   Вага: 13,6 КБ (бюджет 60 КБ, AGENTS.md §3). */
@font-face {
  font-family: "IBM Plex Mono";
  src: url("/fonts/IBMPlexMono-Regular-subset.woff2") format("woff2");
  font-display: optional;
  font-weight: 400;
  font-style: normal;
  unicode-range: U+0020-00FF, U+0100-017F, U+0400-04FF, U+2013, U+2014,
    U+2018, U+2019, U+201C, U+201D, U+201E, U+2026, U+00AB, U+00BB, U+02BC,
    U+2116, U+2192, U+2248, U+258D;
}

:root {
  /* Системний стек тексту із засічками.
     Крок 87. design-system.md §5.1. */
  --font-text: Georgia, "Times New Roman", "Noto Serif", serif;

  /* Службовий стек без засічок: шапка, підвал, мітки.
     Крок 88. design-system.md §5.5. */
  --font-ui: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;

  /* Моноширинний: акценти, код, лінійка запису.
     Крок 89. design-system.md §5.8. */
  --font-mono: "IBM Plex Mono", ui-monospace, "Cascadia Code", "Courier New", monospace;

  /* Типографічна шкала: ratio 1.25, 5 розмірів.
     Крок 90. design-system.md §5.9. */
  --text-sm: 0.8rem;
  --text-base: 1rem;
  --text-lg: 1.25rem;
  --text-xl: 1.5625rem;
  --text-xxl: 1.9531rem;
  --text-display: 2.4414rem; /* Теза головної: 6-й щабель (§5.9) */

  /* Вертикальний ритм та ширина рядка.
     Крок 91. design-system.md §5.10. */
  --leading: 1.6;
  --measure: 68ch;
}

/* Типографічна база (design-system.md §5).
   Змінні визначені вище; кольори --bg/--ink — у themes.css (порядок не важливий
   для var(), резолв у computed time). */
body {
  font-family: var(--font-text);
  font-size: var(--text-base);
  line-height: var(--leading);
  color: var(--ink);
  background: var(--bg);
}

/* Шкала 1.25: заголовки за кроками (§5.9). */
h1 {
  font-size: var(--text-xxl);
}
h2 {
  font-size: var(--text-xl);
}
h3 {
  font-size: var(--text-lg);
}
h4,
h5,
h6 {
  font-size: var(--text-base);
}

/* Ритм абзаців та списків (§5.10, §6.3). */
p,
ul,
ol,
blockquote,
pre {
  margin: 0 0 1em;
}

/* Заголовки: простір перед/після (§6.3). */
h1,
h2,
h3,
h4,
h5,
h6 {
  margin: 1.5em 0 0.5em;
  line-height: 1.2;
}
h1 {
  margin-top: 0;
}

/* Виділення тексту: оксид замість браузерного синього (design-system §4.3.1).
   Пари перевірено (palette-check): accent/bg = 8,46:1 (ПАПІР),
   8,27:1 (БУНКЕР) — AAA для тексту на тлі. */
::selection {
  background: var(--accent);
  color: var(--bg);
}

/* Службовий стек для UI-елементів (§5.5): шапка, підвал, мітки. */
.site-header,
.site-footer,
.entry-meta,
.lang-switch {
  font-family: var(--font-ui);
}

/* Таб-навігація (TECH_STANDARDS §9, крок 134):
   видимий фокус для клавіатури — outline 2px accent, контраст ≥3:1
   (пари перевіряє palette-check). outline-offset — щоб обідок не
   ховався під сусідніми елементами. */
:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

/* Фокус не ховається ніде (AGENTS §5: видимий :focus обов'язковий). */

/* Посилання: базовий колір (design-system §4, accent).
   Контекстні правила (layout/components) специфікацією вищі.
   :visited = той самий колір: браузерний синій/фіолетовий
   палітрі не належить. */
a {
  color: var(--accent);
}

a:visited {
  color: var(--accent);
}
