/* Ядро Craft: общие токены идентичности для всех форматов. */
@font-face {
  font-family: "Geologica";
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url("fonts/geologica-cyrillic.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: "Geologica";
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url("fonts/geologica-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Onest";
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url("fonts/onest-cyrillic.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: "Onest";
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url("fonts/onest-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  color-scheme: dark;

  /* Поверхности. Страница лежит на --craft-bg. --craft-surface выделяет
     смысловую группу, --craft-surface-muted — её тихий вариант,
     --craft-sunken — врезанную область: код, поле ввода, дно графика. */
  --craft-bg: #111;
  --craft-surface: #1a1a1a;
  --craft-surface-muted: #161616;
  --craft-sunken: #0d0d0d;

  /* Линии. --craft-line — обычный разделитель и рамка. --craft-line-strong
     нужен там, где линия сама несёт данные: ось, курсор, шкала. */
  --craft-line: #2a2a2a;
  --craft-line-strong: #eee;

  /* Текст. --craft-text — заголовки и значения, --craft-text-body — абзацы
     для чтения, --craft-muted — подписи, единицы, служебные пояснения. */
  --craft-text: #eee;
  --craft-text-body: rgb(238 238 238 / .82);
  --craft-muted: #a8a8a8;

  /* Красный работает в четырёх разных ролях, и подменять их друг другом нельзя.
     --craft-accent — акцентный ТЕКСТ: ссылка, приоритетное число, подпись
     порога. Он приглушён намеренно, потому что его читают.
     --craft-accent-mark — насыщенная МЕТКА: точка статуса, полоса, линия
     графика, рамка фокуса. Она ярче текста, потому что её не читают.
     --craft-accent-fill — ПЛОСКОСТЬ под белым текстом: кнопка, врезка,
     итоговая строка. Она темнее текста, иначе белый теряет контраст:
     на метке он даёт 3,5, на плоскости — 5,4 при пороге 4,5.
     --craft-accent-tint — едва заметный ФОН сигнала без белого текста.
     Он сохраняет обычный цвет текста и не заменяет подпись состояния.
     --craft-accent-base — исходный красный идентичности, крупные надписи
     на светлом фоне. --craft-accent-fill-hover — наведение на плоскость. */
  --craft-accent: #ff5a67;
  --craft-accent-mark: #ff3f4d;
  --craft-accent-fill: #c5303d;
  --craft-accent-fill-hover: #a92633;
  --craft-accent-tint: rgb(255 63 77 / .09);
  --craft-accent-base: #e63946;

  /* Поверх акцентной плоскости. Белый текст, его тихий вариант и линия,
     которая делит содержимое внутри красной области. */
  --craft-on-accent: #fff;
  --craft-on-accent-muted: rgb(255 255 255 / .78);
  --craft-on-accent-line: rgb(255 255 255 / .28);

  /* Выделение текста тонирует строку, а не закрашивает её: сквозь заливку
     виден исходный цвет букв, поэтому кегль и начертание не «прыгают».
     На акцентной плоскости красным тонировать нечего — там белый. */
  --craft-selection: rgb(230 57 70 / .32);
  --craft-selection-on-accent: rgb(255 255 255 / .3);

  /* Служебное. --craft-overlay-line обводит образец цвета поверх любого
     фона, --craft-disabled — недоступный элемент управления, --craft-scrim
     затемняет страницу под модальным окном. */
  --craft-overlay-line: rgb(255 255 255 / .16);
  --craft-disabled: #666;
  --craft-scrim: rgb(0 0 0 / .64);

  /* Код и только код. Подсветка синтаксиса живёт отдельно от палитры
     интерфейса, чтобы яркие статусы не попадали в листинг. */
  --craft-code-text: #d4d0cc;
  --craft-code-gold: #c9a96e;
  --craft-code-blue: #7a9ab5;

  /* Статусы. Три состояния и больше никаких: норма, предупреждение, ошибка.
     Ошибка — тот же красный, что и любая метка, отдельного оттенка нет.
     Цвет всегда сопровождается словом: он ускоряет чтение, а не заменяет
     подпись. Для рамок и обычного текста эти значения не используются;
     тихий фон ошибки берёт отдельный --craft-error-tint. */
  --craft-ok: #23cc70;
  --craft-warn: #ffae1a;
  --craft-error: var(--craft-accent-mark);
  --craft-error-tint: var(--craft-accent-tint);

  /* Ряды данных. Назначаются по порядку: приоритетный ряд красный, дальше
     нейтральный, синий, янтарный, зелёный. Пятью рядами набор исчерпан;
     если рядов больше, их объединяют или показывают по одному. */
  --craft-data-red: var(--craft-accent-mark);
  --craft-data-neutral: var(--craft-text);
  --craft-data-blue: #4ea6ff;
  --craft-data-amber: var(--craft-warn);
  --craft-data-green: var(--craft-ok);

  /* Печать. Роли те же, значения перевёрнуты под светлую бумагу: экранная
     яркость на белом не читается, поэтому метки и ряды становятся тёмными.
     Формат подставляет эти значения сам, вручную их не применяют. */
  --craft-print-bg: #f8f8f8;
  --craft-print-surface: #eaeaea;
  --craft-print-line: #ccc;
  --craft-print-text: #111;
  --craft-print-text-body: rgb(17 17 17 / .82);
  --craft-print-muted: #555;
  --craft-print-accent: #a92633;
  --craft-print-accent-tint: rgb(169 38 51 / .09);
  --craft-print-data-red: #a92633;
  --craft-print-data-neutral: #111;
  --craft-print-data-blue: #1f5c99;
  --craft-print-data-amber: #8a5a00;
  --craft-print-data-green: #1f7a45;
  --craft-print-code-text: #2d2a27;
  --craft-print-code-gold: #73521f;
  --craft-print-code-blue: #365f7d;

  /* Светлая тема Craft: тёплые бумажные нейтрали снижают блики,
     но сохраняют контраст текста, таблиц и графиков. */
  --craft-light-bg: #f3f2ef;
  --craft-light-surface: #e8e6e1;
  --craft-light-surface-muted: #eeece8;
  --craft-light-sunken: #dfdcd6;
  --craft-light-line: #d1cec7;
  --craft-light-line-strong: #3b3a37;
  --craft-light-text: #20201e;
  --craft-light-text-body: rgb(32 32 30 / .82);
  --craft-light-muted: #65635d;
  --craft-light-accent: #b22938;
  --craft-light-accent-mark: #d52f40;
  --craft-light-accent-fill: #b42b39;
  --craft-light-accent-fill-hover: #992331;
  --craft-light-accent-tint: rgb(213 47 64 / .09);
  --craft-light-selection: rgb(178 41 56 / .24);
  --craft-light-overlay-line: rgb(32 32 30 / .16);
  --craft-light-disabled: #8a8780;
  --craft-light-scrim: rgb(32 32 30 / .48);
  --craft-light-data-blue: #1e659f;
  --craft-light-data-amber: #8a5a00;
  --craft-light-data-green: #237447;

  /* Шрифты. Geologica — короткие заголовки и значимые числа, Onest — текст
     и элементы управления, моноширинный — только настоящий код. */
  --craft-font-display: "Geologica", "Liberation Sans", system-ui, sans-serif;
  --craft-font-text: "Onest", "Liberation Sans", system-ui, sans-serif;
  --craft-font-mono: "JetBrains Mono", "JetBrainsMono NF", ui-monospace, monospace;
}

:root[data-theme="light"] {
  color-scheme: light;
  --craft-bg: var(--craft-light-bg);
  --craft-surface: var(--craft-light-surface);
  --craft-surface-muted: var(--craft-light-surface-muted);
  --craft-sunken: var(--craft-light-sunken);
  --craft-line: var(--craft-light-line);
  --craft-line-strong: var(--craft-light-line-strong);
  --craft-text: var(--craft-light-text);
  --craft-text-body: var(--craft-light-text-body);
  --craft-muted: var(--craft-light-muted);
  --craft-accent: var(--craft-light-accent);
  --craft-accent-mark: var(--craft-light-accent-mark);
  --craft-accent-fill: var(--craft-light-accent-fill);
  --craft-accent-fill-hover: var(--craft-light-accent-fill-hover);
  --craft-accent-tint: var(--craft-light-accent-tint);
  --craft-selection: var(--craft-light-selection);
  --craft-overlay-line: var(--craft-light-overlay-line);
  --craft-disabled: var(--craft-light-disabled);
  --craft-scrim: var(--craft-light-scrim);
  --craft-code-text: #383532;
  --craft-code-gold: #73521f;
  --craft-code-blue: #365f7d;
  --craft-data-red: var(--craft-light-accent-mark);
  --craft-data-neutral: var(--craft-light-text);
  --craft-data-blue: var(--craft-light-data-blue);
  --craft-data-amber: var(--craft-light-data-amber);
  --craft-data-green: var(--craft-light-data-green);
  --craft-error: var(--craft-light-accent-mark);
  --craft-error-tint: var(--craft-light-accent-tint);
}
