/*
 * Токены публичной части — первый шаг удушения купленной темы.
 *
 * Зачем. В теме 481 КБ CSS, из которых используется 13%, цвет акцента написан
 * литералом #5566dd в 107 местах, а типографика и отступы живут в тысячах
 * правил без единого источника. Поменять акцент сегодня — это правка ста семи
 * строк, из которых часть неизбежно забудется.
 *
 * Что это меняет прямо сейчас: ничего. Файл только объявляет значения — те же,
 * что уже стоят в теме, снятые из неё замером (`grep -oE '#[0-9a-f]{6}'`,
 * отсортировано по частоте). Тема продолжает работать как работала.
 *
 * Как этим пользоваться. Страница считается переехавшей, когда её правила
 * ссылаются на токены, а не на литералы, и не зависят от сетки Bootstrap.
 * Порядок переезда — по цене ошибки: офферы, блог, инструменты, главная.
 * jQuery и Bootstrap удаляются последними, когда их не запрашивает ни одна
 * страница.
 *
 * Правило: новые правила пишутся только через токены. Литерал в новом коде —
 * это ещё одно место, которое придётся искать при следующей смене цвета.
 *
 * Образец — @theme админки (assets/admin-spa/src/index.css), где этот подход
 * уже работает. Здесь обычные пользовательские свойства, а не директива
 * Tailwind: публичная часть собирается без сборщика.
 */

:root {
    /* --- Цвет ------------------------------------------------------------
       Акцент темы (#5566dd) встречается в её файлах 107 раз. Название
       описывает роль, а не оттенок: --color-brand переживёт смену цвета,
       --color-blue — нет. */
    --ov-brand: #5566dd;
    --ov-brand-hover: #4453c4;
    --ov-brand-soft: #edf1fe;
    --ov-brand-faint: #f4f5fe;

    --ov-ink: #3b3b3b;          /* основной текст, 36 упоминаний в style.css */
    --ov-body: #6f6f6f;         /* вторичный текст */
    --ov-muted: #9aa0ab;        /* подписи, метаданные */
    --ov-inverse: #ffffff;

    --ov-surface: #ffffff;
    --ov-surface-2: #f7faff;
    --ov-border: #e5e5e5;

    --ov-dark: #252930;         /* подвал и тёмные секции */
    --ov-dark-2: #25283a;

    /* Состояния. В теме отдельных цветов состояний нет — формы красились
       бутстраповскими alert'ами. Здесь они названы, чтобы переехавшие
       страницы не тянули Bootstrap ради двух оттенков. */
    --ov-success: #0f9d6e;
    --ov-success-soft: #e6f6ef;
    --ov-danger: #e5484d;
    --ov-danger-soft: #fdeced;
    --ov-focus: #ffd54f;        /* тот же, что у skip-link */

    /* --- Типографика -----------------------------------------------------
       Семейства уже локальные и вариативные (assets/css/fonts.css). */
    --ov-font-heading: 'Montserrat', system-ui, -apple-system, 'Segoe UI', Arial, sans-serif;
    --ov-font-body: 'Roboto', system-ui, -apple-system, 'Segoe UI', Arial, sans-serif;
    --ov-font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

    /* Шкала кратна 1.25 от 16px. Ровные значения выбраны намеренно:
       дробные размеры темы (13.6px, 17.8px) появились от вложенных em
       и воспроизводить их незачем. */
    --ov-text-xs: 0.8125rem;    /* 13px — подписи */
    --ov-text-sm: 0.875rem;     /* 14px */
    --ov-text-base: 1rem;       /* 16px */
    --ov-text-lg: 1.125rem;     /* 18px — лид */
    --ov-text-xl: 1.375rem;     /* 22px — h4 */
    --ov-text-2xl: 1.75rem;     /* 28px — h3 */
    --ov-text-3xl: 2.25rem;     /* 36px — h2 */
    --ov-text-4xl: 3rem;        /* 48px — h1 */

    --ov-leading-tight: 1.25;
    --ov-leading-normal: 1.5;
    --ov-leading-relaxed: 1.75; /* тело статьи */

    /* --- Отступы ---------------------------------------------------------
       Шаг 4px. Тема пользуется значениями от 5px до 150px без системы;
       здесь их восемь, и этого хватает. */
    --ov-space-1: 0.25rem;
    --ov-space-2: 0.5rem;
    --ov-space-3: 0.75rem;
    --ov-space-4: 1rem;
    --ov-space-6: 1.5rem;
    --ov-space-8: 2rem;
    --ov-space-12: 3rem;
    --ov-space-16: 4rem;
    --ov-space-24: 6rem;        /* вертикальный ритм секций */

    /* --- Прочее ---------------------------------------------------------- */
    --ov-radius-sm: 6px;
    --ov-radius: 10px;
    --ov-radius-lg: 16px;

    --ov-shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.06);
    --ov-shadow: 0 4px 16px rgba(15, 23, 42, 0.08);

    --ov-container: 1200px;     /* тема ставит 1500px — для текста это слишком широко */
}

/*
 * Видимый фокус на всей публичной части.
 *
 * Тема полагалась на браузерное умолчание, а во многих правилах гасила его
 * через outline: none вместе с :hover. Клавиатурная навигация при этом
 * становится слепой: фокус есть, увидеть его нельзя.
 *
 * :focus-visible, а не :focus — мышь не должна оставлять рамку после клика.
 */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
    outline: 3px solid var(--ov-focus);
    outline-offset: 2px;
    border-radius: var(--ov-radius-sm);
}


/* --- Базовый сброс ---------------------------------------------------------
 *
 * До 31.07.2026 эти правила приходили из bootstrap.css, и вся тема была
 * написана в расчёте на них. При снятии Bootstrap шапка тут же поехала:
 * `outer-container` стал шире окна на 60px, потому что ширина 100% плюс
 * внутренние отступы без border-box дают больше ста процентов.
 *
 * Поэтому сброс переезжает сюда, а не исчезает: он не часть Bootstrap,
 * а базовое соглашение, на которое опирается любой современный CSS.
 */
*,
*::before,
*::after {
    box-sizing: border-box;
}

img,
picture,
video,
canvas,
svg {
    max-width: 100%;
}
