/* ==========================================================
   TOL.Charge — палитра ПРОДУКТОВЫХ экранов. Раздаётся отсюда, и только отсюда.
   Дом решения: ADR-0200 · конструкция: TA-0149 · карточка: #430.

   ⛔ ЭТОТ ФАЙЛ НЕ ПРАВИТСЯ РУКАМИ. Он — ПРОИЗВОДНАЯ канона
   `tokens/colors.css` (репозиторий `charge-star/tol-design`, скил `tol-charge-design`).
   Владелец значений — канон. Расхождение с ним есть дефект продукта, а не местное решение.
   Породить заново и сверить:
       python scripts/lib/palette_canon.py check-canon --skill <путь к клону> [--write]

   ★ СПИСОК ТРАНСФОРМАЦИЙ — ЗДЕСЬ, потому что критерий равенства держится этим списком,
   а не памятью роли. Их ровно три, и `check-canon` применяет к эталону именно их:

     T1 — ИЗЪЯТА MARKETING-ШКАЛА. Не перенесены `--navy-*`, блок `[data-scale="marketing"]`
          и блок `[data-theme="dark"][data-scale="marketing"]`. Продуктовый экран не может
          уехать в navy копированием: копировать нечего. Навигация, лендинги и КП-деки
          берут navy из своего носителя и в область не входят.
     T2 — DARK-СЕЛЕКТОР РАСШИРЕН СПИСКОМ: `[data-theme="dark"]` →
          `[data-theme="dark"], [data-bs-theme="dark"]`. В продукте фактически два
          переключателя: свой JS автономных страниц (13 файлов) и theme-picker Phoenix
          (4 файла). Специфичность обоих (0,1,0), равна `:root`; декларации внутри —
          канонические, без изменений.
     T3 — НИЧЕГО БОЛЬШЕ. Все прочие байты канона перенесены дословно, включая светлый
          `--text-3` = `#626D80` (канон снял `#6F7A91` как 4.31 на белом). Заменена только
          эта шапка-комментарий — ею и объявлен настоящий список; `check-canon` сверяет
          файл от первого селектора, шапку не сверяя.
          ⚠ Значения в этой шапке пишутся ЧЕРЕЗ «=», а не «имя: значение»: детектор К-1
          якоря приёмки #430 лексический и посчитал бы прозу шапки за ещё одно значение
          токена. Проверено 13.08.2026 — `--text-3` показывал 3 вместо 2.

   ⚠ ЧЕГО ЗДЕСЬ НЕТ И НЕ БУДЕТ: тёмных значений для оттеночных ступеней `-50`/`-100`.
   Канон определяет их только для светлой темы. Страница, которой нужна тёмная подложка
   бейджа, объявляет её у себя — раздачи для неё нет, и гард такое объявление не запрещает.
   ========================================================== */

:root {
  /* ── Brand: blue (logo + dev.tol.kz buttons/charts) ── */
  --brand-50:  #EEF4FF;
  --brand-100: #DAE6FE;
  --brand-200: #B5CCFC;
  --brand-300: #82A7F8;
  --brand-400: #4D80F2;
  --brand-500: #2563EB;   /* links, charts */
  --brand-600: #1F4FCC;   /* ★ PRIMARY brand */
  --brand-700: #173FA8;   /* hover */
  --brand-800: #133289;
  --brand-900: #0F2A6E;

  /* ── Ink: warm neutral greys — PRODUCT surfaces (admin, console, session) ──
     Copied verbatim from the product canon `theme-tol.css` (--tol-ink-*).
     This is what the product actually ships; do not "improve" these values. */
  --ink-0:   #FFFFFF;
  --ink-50:  #F7F7F5;
  --ink-100: #EEEEEB;
  --ink-200: #DDDDD7;
  --ink-300: #C2C2BB;
  --ink-400: #8E8E86;
  --ink-500: #5E5E56;
  --ink-600: #3E3E38;
  --ink-700: #262621;
  --ink-800: #141411;   /* product calls this --tol-bg-page */
  --ink-900: #0A0A08;

  /* ── Accent: orange CTA (the ONLY call-to-action colour) ── */
  --accent-50:  #FFF1EA;
  --accent-100: #FFE0CE;
  --accent-200: #FFC9AE;
  --accent-300: #FFA67D;
  --accent-400: #FF8E5C;
  --accent-500: #FF6B35;  /* ★ PRIMARY CTA */
  --accent-600: #E54E1A;
  --accent-700: #B83C13;

  /* ── Functional (status only; never as brand) ── */
  --success-50:  #ECFDF5;
  --success-100: #D1FAE5;
  --success-500: #16A34A;
  --success-700: #166534;

  --danger-50:  #FEF2F2;
  --danger-100: #FEE2E2;
  --danger-500: #DC2626;
  --danger-700: #991B1B;

  --warning-50:  #FFFBEB;
  --warning-100: #FEF3C7;
  --warning-500: #F59E0B;  /* warnings + charge indicators only */
  --warning-700: #B45309;

  --info-50:  #ECFEFF;
  --info-100: #CFFAFE;
  --info-500: #06B6D4;
  --info-700: #0E7490;

  /* ── Light theme neutrals (semantic surfaces / text) ── */
  --surface:       #FFFFFF;
  --surface-2:     #F7F9FC;
  --surface-3:     #EEF1F6;
  --surface-4:     #E1E6EE;
  --page:          #FFFFFF;
  --border:        #DDE3EC;
  --border-strong: #C5CDDC;
  --text:    #0E1B2F;
  --text-2:  #475066;
  --text-3:  #5C677A;
  --decor:   #788499;
  --on-brand:  #FFFFFF;
  --on-accent: #FFFFFF;

  /* ── Hue TEXT tones — the readable tone of a hue ON THE CURRENT THEME ──
     Use these whenever a functional/brand hue is TYPE. The -500 stays a fill,
     the -700 is the light-theme text tone; on dark both are too dark to read,
     so the dark block lifts them. Same lift serves navy — it is darker still.
     These are TEXT: the name pattern `--<hue>-text` puts them in the text family,
     and the guard holds them to 4.5 against every surface (ADR-0203). */
  --success-text: #166534;
  --danger-text:  #991B1B;
  --warning-text: #AB4A00;
  --info-text:    #0A708C;
  --brand-text:   #173FA8;
  --accent-text:  #B83C13;

  /* ── Scale-dependent semantics ──
     Components must use THESE, not --navy-* directly, so that one component
     renders correctly on both scales. Defaults below = product (ink). */
  --featured-surface: #262621;   /* ink-700 */
  --featured-on:      #F7F7F5;   /* ink-50  */
  --neutral-solid:    #3E3E38;   /* ink-600 */
  --neutral-solid-on: #FFFFFF;

  /* WhatsApp (used on outbound landings) */
  --whatsapp: #25D366;
  --whatsapp-700: #128C7E;
}

/* ── Dark theme — DEFAULT SCALE = INK (product: console, operator, session) ──
   Warm greys from the product canon. Only neutrals and shadows flip.
   ⚠ The rule that used to live here as prose — which token may carry body copy,
   and on which surface — is NOT prose any more. It is an invariant over this
   dictionary, enforced by `palette_canon.py` (G-5, ADR-0203, card #422): the
   text family clears 4.5 and the `--decor*` family clears 3.0 against EVERY
   surface this file declares. Prose was the carrier that failed: the rule was
   written here and broken in 48 places. Do not restore it. */
[data-theme="dark"], [data-bs-theme="dark"] {
  --surface:       #1F1F1E;
  --surface-2:     #262621;
  --surface-3:     #2F2F2A;
  --surface-4:     #3E3E38;
  --page:          #141411;
  --border:        #3E3E38;
  --border-strong: #4A4A42;
  --text:    #F7F7F5;
  --text-2:  #DDDDD7;
  --text-3:  #A9A9A1;
  --decor:   #888880;

  --featured-surface: #262621;
  --featured-on:      #F7F7F5;
  --neutral-solid:    #3E3E38;
  --neutral-solid-on: #FFFFFF;

  /* Lifted hue text tones — apply to BOTH dark scales (navy inherits these). */
  --success-text: #4ADE80;
  --danger-text:  #FF8383;
  --warning-text: #FBBF24;
  --info-text:    #22D3EE;
  --brand-text:   #82A7F8;
  --accent-text:  #FF8E5C;
}
