/*
 * f7c_design :: бренд-пакет Forbion (клиентский бренд, НЕ визуальный язык системы).
 * Источник: share/guideline.pdf (брендбук Forbion, 25 стр., взят из share 2026-07-09).
 * Подключается ПОСЛЕ tokens/tokens.css. Переопределяет ТОЛЬКО значения
 * темизируемых токенов по docs/THEMING.md — базовые токены остаются нейтральными.
 * Производный артефакт: источник истины — brand.json (раздел tokens),
 * правки только синхронно с ним.
 *
 * Контрасты проверены (WCAG): primary #70B62C / on-primary #1D1D1B = 6.77;
 * hover #63A427 = 5.52; active #5B9624 = 4.69; link #478016 на белом = 4.81.
 * Фирменный зелёный НЕ проходит с белым текстом (2.5) — поэтому on-primary чёрный.
 */
:root {
  /* Акцентные цвета: фирменный зелёный PANTONE P 154-8 C */
  --ds-color-primary: #70b62c;
  --ds-color-primary-hover: #63a427;
  --ds-color-primary-active: #5b9624;
  --ds-color-on-primary: #1d1d1b;
  --ds-color-accent: #478016; /* тёмно-зелёный: бейджи/выделения на светлом */
  --ds-text-link: #478016;

  /* Поверхности: белый / фирменный серый PANTONE P 126-9 C / чёрный PANTONE Black C */
  --ds-surface-page: #ffffff;
  --ds-surface-raised: #ecf2f2;
  --ds-surface-sunken: #dfe8e8;
  --ds-surface-inverse: #1d1d1b;

  /* Шрифты: Raleway (SIL OFL; загрузка @font-face — зона шаблона) */
  --ds-font-base: 'Raleway', 'Segoe UI', system-ui, sans-serif;
  --ds-font-heading: 'Raleway', 'Segoe UI', system-ui, sans-serif;

  /* Геометрия: бренд угловатый (полосы 25°, параллелограммы) — скругления минимальные */
  --ds-radius-sm: 2px;
  --ds-radius-md: 3px;
  --ds-radius-lg: 6px;
}

/* ── ОРБЫ В ТЁМНОЙ ТЕМЕ (c-design, 12.08) ──────────────────────────────────────
 * Класс описан в tokens.css:336 и до сих пор не был закрыт для forbion:
 * цвет орба выведен из primary, а primary НЕ флипается (do-not-flip, и правильно) —
 * значит производная не флипается тоже, хотя ПОВЕРХНОСТЬ под ней флипается.
 * Та же альфа на тёмном читается слабее, и атмосфера пропадает.
 *
 * Значения сняты С КАНОНА concept-v0.30.4 (DESIGN v0.60.0), а не подобраны:
 *   светлая  орб1 rgba(112,182,44,.16)  орб2 rgba(112,182,44,.09)
 *   тёмная   орб1 rgba(139,214,69,.10)  орб2 rgba(139,214,69,.05)
 * В тёмной меняется И оттенок, И альфа — это не «тот же цвет тише».
 *
 * Светлую НЕ переопределяю: ядро уже даёт primary 16 %, что совпадает с каноном
 * бит-в-бит. Переопределять совпадающее — заводить второй источник на ровном месте.
 * Задаю только орб2 (в ядре -accent выведен из accent #478016, а канон хочет тот же
 * оттенок, что орб1, но тише) и обе тёмные величины.
 *
 * СПЕЦИФИЧНОСТЬ: ядро объявляет эти токены на :root = (0,1,0). Бренд грузится ПОСЛЕ,
 * поэтому :root достаточно для светлой. Для тёмной беру :root:not([data-theme="light"])
 * и :root[data-theme="dark"] — переключатель темы обязан побеждать медиазапрос
 * в ОБЕ стороны, а не только включать тёмную.
 *
 * ⚠ ОТСТУПЛЕНИЕ ОТ СВОЕГО ЖЕ КОНТРАКТА, называю вслух: brand.json объявлен источником
 * истины для токенов, но его секция tokens ПЛОСКАЯ — измерения тем в ней нет. Класть
 * туда тёмные значения значило бы менять интерфейс бренд-пакета, а его читает валидатор
 * c-tpl (гейт 3). Поэтому пока живут здесь; расширение brand.json под темы — письмо-ДО
 * к c-tpl, отдельным предметом. Два источника на один токен я не завожу: в brand.json
 * этих ключей НЕТ вовсе, они существуют только тут. */
:root {
  --ds-orb-color-accent: rgba(112, 182, 44, 0.09);
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --ds-orb-color-primary: rgba(139, 214, 69, 0.10);
    --ds-orb-color-accent:  rgba(139, 214, 69, 0.05);
  }
}
:root[data-theme="dark"] {
  --ds-orb-color-primary: rgba(139, 214, 69, 0.10);
  --ds-orb-color-accent:  rgba(139, 214, 69, 0.05);
}

/* ── ПЛОТНОСТЬ ПАТТЕРНА (c-design, 12.08) ─────────────────────────────────────
 * Значения СНЯТЫ С КАНОНА concept-v0.30.4, а не подобраны. Замер: декоративные
 * бруски 25° в каноне встречаются ТРИЖДЫ, с инлайн-плотностями .07 / .09 / .16 —
 * называю число вхождений, потому что сегодня уже ошибся, взяв одно значение из
 * нескольких и выдав за единственное.
 * Интерфейс c-tpl (TEMPLATE v0.87.x) даёт две ступени, поэтому:
 *   soft   = 0.07  — самая частая, ею живёт герой;
 *   strong = 0.16  — верхняя канонная.
 * Средняя .09 слота не имеет; если понадобится — это третья ступень у c-tpl,
 * а не «подберём между».
 *
 * ТЁМНАЯ ТЕМА: в каноне бруски НЕ переопределяются (проверил — правил нет), в
 * отличие от шаров, у которых своя пара (--sphop .5 / .2). Повторяю канон:
 * переопределения не завожу. Это ЗАМЕР, а не утверждение, что так верно, — если
 * на тёмной 0.07 окажется невидимым, это отдельная правка с отдельным замером. */
:root {
  --ds-pattern-opacity-soft: 0.07;
  --ds-pattern-opacity-strong: 0.16;
}
