/* =====================================================================
   tokens.css — единый источник дизайн-токенов (Фаза 1 / ШАГ 0).

   Консолидирует ДВА независимых `:root`, которые раньше жили отдельно в
   blog-design.css и blog-listing.css (правка токена в одном молча не била
   по другому шаблону — см. CURRENT-BLOG-INVENTORY.md §6.2). Теперь это
   ОДИН физический источник правды; blog-design.css/blog-listing.css только
   ЧИТАЮТ переменные через var(), больше их не объявляют.

   РЕШЕНИЕ по --maxw (было 1200px в blog-design.css vs 1180px в
   blog-listing.css) — выбран 1200px: шире, ближе к ДНК Якова
   (design/Redesign/DESIGN-DNA.md контейнер = 1200px).

   Подключается ПЕРВЫМ в очереди (functions.php, handle `rp-tokens`,
   зависимость всех остальных handle) — все остальные CSS-файлы читают
   эти переменные, сами их не переопределяют.
   ===================================================================== */

:root{
  /* ===== Блог: существующая палитра (перенесена как есть из старых :root) ===== */
  --paper:#fbf9f5; --card:#ffffff;
  --ink:#1c1d22; --ink-soft:#54565f; --ink-faint:#6c6e77;
  --line:#e9e4da; --line-soft:#f0ece4;
  --accent:#e8590c; --accent-ink:#d16537; --accent-text:#b8470a; --accent-wash:#fdf0e7;
  --brown:#231c17;
  --good:#1f7a4d; --good-wash:#e8f4ed;
  /* neutral grays for borders/captions/zebra (были только в blog-design.css) */
  --gray-50:#f7f5f1; --gray-100:#f0ece4; --gray-200:#e4ded3;

  /* ===== Шрифтовые стеки ===== */
  --font-display:'Onest',system-ui,sans-serif;   /* H1-H4, кнопки, эйбраузы — блоговый дисплей-шрифт */
  --font-body:'Inter',system-ui,sans-serif;      /* параграфы, мета, инпуты — self-hosted (fonts.css) */
  /* ДНК Якова: Montserrat = числа/крупные цены/заголовки. Self-hosted (см. ниже
     @font-face), заведён по ШАГ 0.4 — НЕ применяется нигде в Фазе 1 Шаг 0-1
     (это Шаг 2 типографики), доступен как токен на будущее. */
  --font-numeric:'Montserrat',var(--font-display);

  /* ===== Геометрия — контейнер / измерение ===== */
  --maxw:1200px; /* было 1200 (blog-design.css) vs 1180 (blog-listing.css) → выбран 1200, шире */
  --measure:70ch;

  /* Легаси-радиусы блога (карточки/инпуты/чипы) — переезжают на шкалу Якова
     позже, в Шаге 2 punch-list; трогать сейчас не нужно, Шаг 0-1 = только кнопки. */
  --r:14px; --r-sm:9px; --r-lg:22px;

  /* Шкала радиусов ДНК Якова (design/Redesign/DESIGN-DNA.md §5):
     кнопки 13-17px / карточки 24-28px / пилюли 999px. */
  --radius-btn:17px;      /* primary/donor/nav-toggle/rp-sand — крупные CTA */
  --radius-btn-sm:13px;   /* компактные кнопки (иконка-тоггл и т.п.) */
  --radius-card-sm:24px;
  --radius-card-lg:28px;
  --radius-pill:999px;

  /* ===== Кнопки — фирменный градиент Якова (primary CTA, ШАГ 1) =====
     "Цвет на hover НЕ меняется" — узнаваемая деталь ДНК, hover = только
     подъём (translateY) + усиление тени.
     AA-фикс (2026-07-26): рампа затемнена целиком (перепад светлоты сохранён,
     НЕ выровнен) — белый текст на любом из трёх стопов проходит AA:
     #c45500→4.52:1, #b44400→5.57:1, #af3300→6.37:1. Применяется ТОЛЬКО там,
     где на градиенте лежит белый текст (кнопки/CTA/сабмиты/лончер чата).
     Яркий бренд-акцент вне кнопок — см. --accent ниже, он НЕ трогается. */
  --btn-gradient:linear-gradient(135deg,#c45500,#b44400 43%,#af3300);
  --btn-shadow:0 14px 28px rgba(180,68,0,.28);
  --btn-shadow-hover:0 18px 34px rgba(180,68,0,.34);
  --btn-disabled-bg:#c9cdd5;
  /* AA-фикс (2026-07-26), догон: тот же принцип для СПЛОШНОЙ (не градиентной)
     заливки под белым текстом — .btn.secondary:hover, чекбокс-чипы калькулятора,
     .form--frame. Сырой --accent (#e8590c) под белым текстом = 3.84:1, AA-провал.
     --btn-solid = средний стоп кнопочной рампы (#b44400, белый на нём = 5.57:1).
     ТОЛЬКО для «белый текст на сплошной заливке акцентом»; декор/бренд-акцент
     без текста (полоски, точки, бордеры, --accent сам по себе) не трогать. */
  --btn-solid:#b44400;

  /* ===== Тени — нейтральные ВСЕГДА холодно-синие (rgba(31,43,72,…)), не серые/чёрные ===== */
  --shadow:0 24px 70px rgba(31,43,72,.12);
  --shadow-soft:0 14px 40px rgba(31,43,72,.08);
  --cta-shadow:0 18px 44px -22px rgba(140,70,30,.30);

  /* ===== Spacing — вертикальный ритм лонгрида (blog-design.css) ===== */
  --sp-para:18px; --sp-section:64px; --sp-after-h2:24px; --sp-cta:80px; --sp-card:28px;

  /* ===== Брейкпоинты — канон (справочно; @media не читает var(), фиксируем
     значения тут, чтобы новые media-query в теме сверялись с одним источником) =====
     Главный мобильный порог блога — 767/760px (донор-хром режет на 767),
     второй слом — 900px, третий — 1180/1200px (= --maxw). */
  --bp-mobile:760px; --bp-tablet:900px; --bp-desktop:1200px;
}

/* =====================================================================
   Montserrat — self-hosted (design/Redesign/raw_redesign_tariffs/public/fonts),
   variable 600-800 (Яков использует Montserrat ТОЛЬКО для h2/h3/цен/крупных
   чисел — правило "не пускать на body-текст", DESIGN-DNA.md §2). Заведено по
   ШАГ 0.4, применение — отдельный проход (Шаг 2 типографики), не в этом коммите.
   ===================================================================== */
@font-face{
  font-family:'Montserrat';
  font-style:normal;
  font-weight:600 800;
  font-display:swap;
  src:url('fonts/montserrat-cyrillic.woff2') format('woff2');
  unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face{
  font-family:'Montserrat';
  font-style:normal;
  font-weight:600 800;
  font-display:swap;
  src:url('fonts/montserrat-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;
}
