/* ============================================================================================
   dxweb — токены оформления (v1.0.276, задача 130, волна 1)
   Единственный источник правды по цветам, размерам шрифта, радиусам и отступам.
   Подключается первым в public/_header.php, до style.css и ui.css.

   Значения палитры перенесены из public/assets/style.css ОДИН В ОДИН (там они лежали с самого
   начала) — на вид страниц волна 1 не влияет: страницы, у которых есть свой блок <style>,
   по-прежнему перекрывают общий слой, а запасные цвета var(--x, #цвет) пока не тронуты.

   Блок «тёмная тема» — заготовка: он ничего не меняет, пока на <html> нет data-theme="dark".
   ============================================================================================ */

:root{
  /* --- палитра (текущие значения проекта) --- */
  --bg:#f4f5f7;          /* фон страницы */
  --panel:#fff;          /* панели, карточки, поля */
  --border:#e6e8ec;      /* границы */
  --text:#20242e;        /* основной текст */
  --muted:#667085;       /* приглушённый текст (v1.0.580: 4.56 к фону — норма 4.5) */
  --blue:#0b6fd8;        /* акцент */
  --active:#eef4fc;      /* фон активного пункта меню */
  --orange:#f26b1d;      /* фирменный акцент логотипа */
  --on-accent:#fff;      /* текст на цветном/тёмном фоне (кнопки, шапки): НЕ то же, что фон панели —
                            в тёмной теме остаётся белым, тогда как --panel темнеет */
  --on-dark:#fff;        /* текст на тёмной кнопке */
  /* Цвета иконок выбора темы — постоянные, НЕ меняются вместе с темой. */
  --ico-winter:#3d8ff5;  /* синяя снежинка */
  --ico-autumn:#f2a33c;  /* жёлтый кленовый лист */
  --ico-summer:#3f8f38;  /* зелёный куст */
  --ico-night:#111318;   /* чёрная луна */
  --ico-night-crescent:#ffffff;
  /* Тени, затемнение под модалками и подсветки — тоже часть темы. */
  --sh-1:rgba(0,0,0,.06);
  --sh-2:rgba(0,0,0,.12);
  --sh-3:rgba(0,0,0,.20);
  --sh-4:rgba(0,0,0,.40);
  --overlay:rgba(15,20,25,.45);
  --overlay-soft:rgba(15,23,42,.18);
  --overlay-strong:rgba(20,24,28,.66);
  --tint-1:rgba(127,127,127,.12);
  --focus-glow:rgba(11,111,216,.25);
  --danger-glow:rgba(217,48,37,.45);

  /* --- смысловые цвета (объявлены токенами; на вид пока не влияют) --- */
  --bg-soft:#fbfcfd;     /* фон шапок таблиц и плашек кнопок */
  --bg-hover:#f8fafc;    /* подсветка строки под курсором */
  --bg-accent:#f0f7ff;   /* светлый акцентный фон (блок подсказок, «✓ Проверено») */
  --focus-ring:#dcebfc;  /* обводка поля в фокусе */
  --border-strong:#d3d9e3; /* дорожка тумблера, границы кнопок вторичного вида */
  --danger:#c0392b;      /* удаление, ошибки */
  --danger-hover:#fdecea;
  --danger-border:#f0c8c4;
  --success:#1a7f37;     /* «ок», сходится */
  --dark:#23292f;        /* тёмная кнопка */
  --primary-hover:#095cba; /* акцент под курсором */

  /* --- шкала размеров шрифта (задача 135, волна 3) ---
     Верхний ряд — СМЫСЛОВАЯ шкала: эти восемь значений и есть целевой набор, им пишется новый код.
     Нижний ряд — «исторические» значения, живущие на страницах с самого начала. Теперь КАЖДОЕ
     объявление font-size на страницах и в общих файлах берётся отсюда (замер 17.10.2026: 602
     объявления, 22 значения в блоках <style> и 13 в инлайн-стилях). Значения в px равны тем, что
     стояли в коде, поэтому замена на токены НЕ меняет вид — проверено построчной сверкой
     (tmp/ui135/verify_tokens.py) и замером computed-стилей в браузере.
     Сведение исторических значений к смысловой шкале (11.5→12, 13→13.5 и т.п.) — отдельное решение:
     оно МЕНЯЕТ вид, поэтому в волну 3 не входит. */
  --fs-xs:11px;    --fs-sm:12px;   --fs-sm2:12.5px; --fs-base:13.5px;
  --fs-md:14px;    --fs-lg:16px;   --fs-xl:20px;    --fs-xxl:24px;
  /* исторические значения (держатся как есть, чтобы волна 3 была без изменения вида) */
  --fs-10:10px;  --fs-11:11px;    --fs-115:11.5px; --fs-12:12px;   --fs-125:12.5px;
  --fs-13:13px;  --fs-135:13.5px; --fs-14:14px;    --fs-15:15px;   --fs-16:16px;
  --fs-17:17px;  --fs-18:18px;    --fs-19:19px;    --fs-20:20px;   --fs-22:22px;
  --fs-24:24px;  --fs-32:32px;    --fs-42:42px;

  /* --- радиусы --- */
  --radius-sm:6px; --radius:8px; --radius-lg:10px; --radius-xl:12px; --radius-pill:20px;

  /* --- отступы (шаг 4 px) --- */
  --sp-1:4px; --sp-2:8px; --sp-3:10px; --sp-4:12px; --sp-5:16px; --sp-6:20px; --sp-7:24px;

  /* --- размеры элементов управления --- */
  --btn-py:7px; --btn-px:12px;          /* кнопка: базовый вид (18 страниц из 37) */
  --pad-plashka:10px 12px;              /* плашка кнопок внизу формы */
  --bar-h:71px;                         /* высота плашки по замеру 15.10.2026 */
  --font:-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;

  /* --- тени --- */
  --shadow-pop:0 8px 24px rgba(0,0,0,.12);
  --shadow-modal:0 10px 40px rgba(0,0,0,.2);

  /* --- поля ввода, списки, тумблеры (v1.0.580, темы) ---
     Раньше эти цвета были зашиты: поля всегда белые, тумблер серый. Теперь они тоже
     часть темы, иначе в тёмной теме поля светятся белыми пятнами. */
  --input-bg:#fff;
  --input-border:#e6e8ec;
  --input-text:#20242e;
  --input-placeholder:#9aa1ad;
  --input-disabled:#f1f3f6;
  --toggle-off:#d3d9e3;
  --toggle-on:#0b6fd8;
  --toggle-knob:#fff;
  --table-head:#fbfcfd;
  --chip-bg:#eef2f7;
  --chip-text:#475569;
  --shadow-soft:0 2px 8px rgba(15,23,42,.06);
  --warn:#a16207;          /* предупреждение: текст */
  --warn-bg:#fdf3d7;       /* предупреждение: фон строки */
  --warn-border:#eccf9a;   /* предупреждение: рамка */
  --success-border:#a5d3a7;/* успех: рамка */
  --success-bg:#e6f6ec;    /* успех: фон строки */

  /* Цвета смысловых блоков в документах (задача 137). Держим ПОСТОЯННЫМИ во всех темах:
     в летней теме акцент сам зелёный, и если блок «выгрузка» тоже зелёный, блоки сливаются. */
  --blk-load:#2563eb;          /* погрузка — синий */
  --blk-unload:#0f9d58;        /* выгрузка и грузополучатель — зелёный */
  --row-alt:#dbe8f8;           /* фон чередующихся строк (груз, пункты) */
  --peach-bg:#fdeee4;          /* блок «Выгрузка» в заявке (тёплый персиковый) */
  --peach:#d9754a;             /* обводка блока «Выгрузка» */
  --blk-load-bg:#eef4fd;       /* фон блока погрузки (постоянный, не из темы) */
  --blk-unload-bg:#f0fdf4;     /* фон блока выгрузки */
}

/* ============================================================================================
   Темы (задача 137). Переключаются атрибутом data-theme на <html>, выбор хранится за сотрудником.
   Зима — текущая синяя палитра (по умолчанию), осень — тёплая, лето — салатовая, ночь — тёмная.
   ============================================================================================ */

/* ЗИМА — по умолчанию, значения уже в :root, здесь только явная фиксация */
html[data-theme="winter"]{
  color-scheme:light;
  --input-bg:#fff; --input-border:#e6e8ec; --input-text:#20242e;
  --input-placeholder:#9aa1ad; --input-disabled:#f1f3f6;
  --toggle-off:#d3d9e3; --toggle-on:#0b6fd8; --toggle-knob:#fff;
  --table-head:#fbfcfd; --chip-bg:#eef2f7; --chip-text:#475569;
  --warn:#a16207; --warn-bg:#fdf3d7; --success-bg:#e6f6ec;
  --blk-load:#2563eb; --blk-unload:#0f9d58;
  --blk-load-bg:#eef4fd; --blk-unload-bg:#f0fdf4;
  --row-alt:#dbe8f8; --peach-bg:#fdeee4; --peach:#d9754a;
  --sh-1:rgba(0,0,0,.06); --sh-2:rgba(0,0,0,.12); --sh-3:rgba(0,0,0,.20); --sh-4:rgba(0,0,0,.40);
  --overlay:rgba(15,20,25,.45); --overlay-soft:rgba(15,23,42,.18); --overlay-strong:rgba(20,24,28,.66);
  --tint-1:rgba(127,127,127,.12); --focus-glow:rgba(11,111,216,.25); --danger-glow:rgba(217,48,37,.45);
}

/* ОСЕНЬ — тёплая жёлто-оранжевая */
html[data-theme="autumn"]{
  color-scheme:light;
  --bg:#fbf6ee; --panel:#fffdf9; --border:#ecdfcd; --text:#3a2f25; --muted:#7a6a56;
  --blue:#c96a12; --active:#fdf0dd; --orange:#d2591a; --on-accent:#fff; --on-dark:#fff;
  --bg-soft:#fdf8f0; --bg-hover:#fbf2e4; --bg-accent:#fdf1dc;
  --focus-ring:#f7e0c0; --border-strong:#dfcdb4; --dark:#4a3a2a; --primary-hover:#a9580e;
  --danger:#b23c2a; --danger-hover:#fceeea; --danger-border:#efc9c1; --success:#5d7f2e;
  --input-bg:#fffdf8; --input-border:#e7d9c6; --input-text:#3a2f25;
  --input-placeholder:#a8977f; --input-disabled:#f6efe4;
  --toggle-off:#ddcbb2; --toggle-on:#c96a12; --toggle-knob:#fffdf9;
  --table-head:#fdf7ee; --chip-bg:#f7ecdc; --chip-text:#7a5c3a;
  --warn:#8a5a08; --warn-bg:#fbf0d8; --success-bg:#eef6e6;
  --warn-border:#e8d3a8; --success-border:#b5d3ab;
  --blk-load:#2159c9; --blk-unload:#0b7a45;
  --blk-load-bg:#eaf0fb; --blk-unload-bg:#eaf5ee;
  --row-alt:#f3e2c6; --peach-bg:#fbe6d6; --peach:#c2632f;
  --sh-1:rgba(60,40,15,.07); --sh-2:rgba(60,40,15,.14); --sh-3:rgba(60,40,15,.22); --sh-4:rgba(60,40,15,.42);
  --overlay:rgba(30,22,12,.45); --overlay-soft:rgba(30,22,12,.18); --overlay-strong:rgba(30,22,12,.66);
  --tint-1:rgba(127,110,80,.14); --focus-glow:rgba(201,106,18,.25); --danger-glow:rgba(217,48,37,.45);
  --shadow-soft:0 2px 8px rgba(122,76,24,.08);
}

/* ЛЕТО — спокойная светло-салатовая */
html[data-theme="summer"]{
  color-scheme:light;
  --bg:#f2f7ee; --panel:#ffffff; --border:#dbe7d3; --text:#22301f; --muted:#5f7358;
  --blue:#3f8f38; --active:#e7f3e0; --orange:#79a832; --on-accent:#fff; --on-dark:#fff;
  --bg-soft:#f7fbf4; --bg-hover:#eff7ea; --bg-accent:#e9f5e2;
  --focus-ring:#d7ecc9; --border-strong:#c9dcc0; --dark:#2f4029; --primary-hover:#357a2f;
  --danger:#b0453a; --danger-hover:#fbecea; --danger-border:#ecc9c4; --success:#3f8f38;
  --input-bg:#ffffff; --input-border:#d8e5d0; --input-text:#22301f;
  --input-placeholder:#8fa287; --input-disabled:#f0f6ec;
  --toggle-off:#cbdbc3; --toggle-on:#3f8f38; --toggle-knob:#fff;
  --table-head:#f6faf3; --chip-bg:#e9f2e4; --chip-text:#4c6445;
  --warn:#7d6208; --warn-bg:#f7f3d9; --success-bg:#eaf5e5;
  --warn-border:#e0d9a0; --success-border:#bcdcae;
  --blk-load:#1f5fbf; --blk-unload:#0d7a4a;
  --blk-load-bg:#e9eff9; --blk-unload-bg:#eaf4ec;
  --row-alt:#d5e8c4; --peach-bg:#f7e8dc; --peach:#bd6a3c;
  --sh-1:rgba(30,50,20,.06); --sh-2:rgba(30,50,20,.12); --sh-3:rgba(30,50,20,.20); --sh-4:rgba(30,50,20,.40);
  --overlay:rgba(20,30,15,.45); --overlay-soft:rgba(20,30,15,.18); --overlay-strong:rgba(20,30,15,.66);
  --tint-1:rgba(110,127,90,.14); --focus-glow:rgba(63,143,56,.25); --danger-glow:rgba(217,48,37,.45);
  --shadow-soft:0 2px 8px rgba(50,80,35,.07);
}

/* НОЧЬ — тёмно-серая */
html[data-theme="night"]{
  color-scheme:dark;   /* нативные окна: календарь в поле даты, списки, полосы */
  --bg:#14181d; --panel:#1c2128; --border:#2c333c; --text:#e6e9ee; --muted:#a9b3c2;
  --blue:#4c9ff0; --active:#22303f; --orange:#ff8a3d; --on-accent:#0d1620; --on-dark:#e6e9ee;
  --bg-soft:#1f252c; --bg-hover:#232a32; --bg-accent:#1d2b3a;
  --focus-ring:#24405c; --border-strong:#39424d; --dark:#3a424c; --primary-hover:#3b8ada;
  --danger:#ff9184; --danger-hover:#33201e; --danger-border:#6b3d36; --success:#5fbf74;
  --input-bg:#232a32; --input-border:#39424d; --input-text:#e6e9ee;
  --input-placeholder:#9aa6b5; --input-disabled:#1b2027;
  --toggle-off:#7b8798; --toggle-on:#4c9ff0; --toggle-knob:#eef2f7;
  --table-head:#1f252c; --chip-bg:#28313a; --chip-text:#c3cbd6;
  --warn:#e0b341; --warn-bg:#332c18; --success-bg:#1c3327;
  --warn-border:#5a4a24; --success-border:#2f5a3a;
  --blk-load:#7db4f7; --blk-unload:#4ade80;
  --blk-load-bg:#1a2433; --blk-unload-bg:#16281d;
  --row-alt:#2b3742; --peach-bg:#342420; --peach:#e0a07a;
  --sh-1:rgba(0,0,0,.40); --sh-2:rgba(0,0,0,.55); --sh-3:rgba(0,0,0,.65); --sh-4:rgba(0,0,0,.82);
  --overlay:rgba(0,0,0,.70); --overlay-soft:rgba(0,0,0,.45); --overlay-strong:rgba(0,0,0,.80);
  --tint-1:rgba(255,255,255,.08); --focus-glow:rgba(76,159,240,.35); --danger-glow:rgba(255,120,105,.50);
  --shadow-soft:0 2px 8px rgba(0,0,0,.35);
}


