/* zxlab — токены дизайн-системы. Только :root: цвета, шрифты, отступы, радиусы и
   тени. Файл подключается первым, до app.css; общий слой и файлы областей
   (orders.css, order-card.css, intake.css, money.css, admin.css, board.css) берут
   значения отсюда и не заводят собственных цветовых литералов.

   Границы, которые проверяет браузерная приёмка (studio-ui.mjs):
   - цвета — только 6-значный #rrggbb. Проба контраста читает --ink, --muted,
     --faint, --accent на --surface и --ok, --warn, --danger, --violet, --teal на
     их -soft прямо из переменных и не понимает #fff, rgb(), альфу и color-mix;
   - --faint не светлее #5f6368 (6:1 на белом). Светлый серый #85888d — только
     --decor для разделителей и прочерков, не для текста (3,6:1);
   - тема всегда светлая, в том числе при системной тёмной.
   Альфа допустима только в тенях и подложке диалога: их проба не читает. */
:root {
  color-scheme: light;

  /* ---- примитивы: нейтральные */
  --gray-0: #ffffff;
  --gray-25: #fbfbfa;   /* футер диалога */
  --gray-50: #f7f7f4;   /* боковое меню, шапка таблицы */
  --gray-75: #f3f3ef;   /* колонка доски */
  --gray-100: #f0f0ec;  /* chip, сегментные вкладки */
  --gray-150: #efefeb;  /* линия строки таблицы */
  --gray-200: #ebebe7;  /* линия карточки и панели */
  --gray-250: #e2e2dd;  /* рамка ghost-кнопки, кольцо активного пункта */
  --gray-300: #e0e0dc;  /* рамка поля */
  --gray-350: #d6d6d0;  /* сегмент «не нужно» в полосе готовности */
  --gray-400: #b8bab6;  /* кромка круга незакрытого шага — не текст */
  --gray-500: #85888d;  /* декор: разделители, прочерки — не текст */
  --gray-600: #5f6368;
  --gray-700: #3b3e42;
  --gray-900: #17181a;

  /* ---- примитивы: смысловые оттенки (текст -700 на своей заливке -50 ≥ 4,5:1) */
  --red-700: #b42318;    --red-50: #fdecec;
  --amber-700: #8a5a00;  --amber-50: #fff4d6;
  --green-700: #067647;  --green-50: #e5f5ec;
  --blue-700: #175cd3;   --blue-50: #e8f1fd;
  --orange-700: #b54708; --orange-50: #fff1e6;
  --violet-700: #6941c6; --violet-50: #f1ecfb;
  --teal-700: #0e7c6b;   --teal-50: #e3f5f1;
  --indigo-700: #4338ca; --indigo-50: #eceefe;
  --slate-700: #475467;  --slate-50: #eef0f3;
  --lime-400: #c6f36d;   --lime-50: #f1fadf;  --lime-800: #3f6212;
  --lime-25: #fbfdf6;    /* фон следующего шага настройки */
  /* рамки смысловых плашек (README: warn, danger) */
  --amber-200: #f3e1a8;  --red-200: #f3c4c0;

  /* ---- бренд: чёрный с лаймом из логотипа; лайм только заливкой, не текстом на белом */
  --brand-ink: var(--gray-900);
  --brand-lime: var(--lime-400);
  --brand-soft: var(--lime-50);
  --brand-soft-ink: var(--lime-800);

  /* ---- поверхности и текст (прежние имена — их читают правила и пробы) */
  --bg: var(--gray-0);
  --surface: var(--gray-0);
  --surface-solid: var(--gray-0);
  --surface-2: var(--gray-100);
  --glass-blur: none;
  --ink: var(--gray-900);
  --ink-2: var(--gray-700);
  --muted: var(--gray-600);
  --faint: var(--gray-600);
  --decor: var(--gray-500);
  --rule: var(--gray-200);
  --rule-strong: var(--gray-300);
  --divider: var(--gray-150);

  /* Основное действие — чёрное. Имя --primary-gradient сохранено ради прежних
     правил; значение — сплошной цвет, градиентов в системе нет. */
  --primary: var(--gray-900);
  --primary-light: var(--gray-700);
  --primary-gradient: var(--gray-900);
  --success-gradient: var(--green-700);
  --accent: var(--gray-900);
  --accent-ink: var(--gray-0);
  --accent-soft: var(--gray-100);

  /* ---- смысловые состояния: текст на своей мягкой заливке */
  --ok: var(--green-700);       --ok-soft: var(--green-50);
  --warn: var(--amber-700);     --warn-soft: var(--amber-50);
  --danger: var(--red-700);     --danger-soft: var(--red-50);
  --info: var(--blue-700);      --info-soft: var(--blue-50);
  --held: var(--orange-700);    --held-soft: var(--orange-50);
  --violet: var(--violet-700);  --violet-soft: var(--violet-50);
  --teal: var(--teal-700);      --teal-soft: var(--teal-50);
  /* Рамки смысловых плашек (README этапа 2, «Рамки смысловых плашек»). */
  --warn-line: #f3e1a8;  --danger-line: #f3c4c0;  --ok-line: #bfe3cd;
  --info-line: #bcd3f7;  --held-line: #f5c9a8;
  /* Рамка кнопки «Отмена» на жёлтой плашке возврата в «Деньгах» (макет 23). */
  --warn-button-line: #d9c27a;

  /* ---- календарь сдач и нагрузка (этап 2, экраны 08 и 09) */
  --brand-soft-line: #d9eeb0;   /* рамка панели «Когда обещать» */
  --brand-soft-field: #c9dfa0;  /* рамка поля и кнопки на лаймовой подложке */
  --brand-promise: #9cc95a;     /* рамка дня, куда встанет обещанная работа */
  --brand-promise-bg: #fbfdf6;
  --load-over-fill: #e8a49c;    /* загрузка дня, у которого есть перегруз */
  --load-held-fill: #f0b48a;    /* часы наряда в очереди, пока часы стоят */
  --load-1: var(--blue-50);  --load-1-line: #d3e2f8;   /* до 40 % смены */
  --load-2: #c9dcf7;         --load-2-line: #b4cdf2;   /* до 70 % */
  --load-3: #9dbef0;         --load-3-line: #86ade9;   /* до 100 % */
  --hatch-line: #d6d6d0;        /* рамка штриховки «не назначено», пунктир пустого */
  --today-col: #fbfbff;         /* столбец сегодняшнего дня в сетке нагрузки */
  /* Рамки смысловых плашек (README этапа 2): жёлтая причина исправления, красная
     сводка ошибок, оранжевая плашка неподтверждённого ответа. */
  --warn-border: #f3e1a8;
  --danger-border: #f3c4c0;
  --held-border: #f5c9a8;

  /* ---- согласование врачом и челюсти (макеты этапа 1: «Заявки», «Наряды»,
     «Карточка наряда»): рамки плашек согласования, контур челюсти на формуле,
     полоса «сроки сдачи» на третий день, строка неназначенной операции. */
  --approval-ok-line: #b7e2c8;
  --approval-warn-line: #f0dca0;
  --jaw-line: #c3c8f4;
  --due-warn-bar: #e0a526;
  --unassigned-row: #fffbef;
  --route-external-line: #d9cdf3;
  --overdue-row: #fffafa;
  --file-drop-line: #d6d6d0;
  --teal-line: #b5e0d6;              /* рамка блока срока закрытого наряда */
  --rule-soft-ink: rgba(23, 24, 26, .08); /* черта «Простои» на цветной заливке */

  /* ---- рамки смысловых плашек и подсветка правки (README этапа 2) */
  --changed-bg: #fffbf0;  --changed-line: #e6cf8a; /* изменённая строка до сохранения */
  --changed-button-line: #d9c27a; /* «Отменить» в сводке изменений прайса */
  --info-tint: #f5f9fe;   /* строка со своей ценой клиники */
  /* Рамки смысловых плашек (README этапа 2): линия 1 px вокруг мягкой заливки. */
  /* Рамки смысловых плашек (README этапа 2) и самая бледная красная подложка строки
     «ушёл в минус». Только линия и фон, не текст. */
  --danger-faint: #fffafa;

  /* ---- стадии наряда и операции: ожидание синее, работа янтарная, готовность
     зелёная, сдача бирюзовая, остановка оранжевая. Цвет дополняет подпись. */
  --stage-pending: var(--blue-700);    --stage-pending-soft: var(--blue-50);
  --stage-working: var(--amber-700);   --stage-working-soft: var(--amber-50);
  --stage-ready: var(--green-700);     --stage-ready-soft: var(--green-50);
  --stage-done: var(--teal-700);       --stage-done-soft: var(--teal-50);
  --stage-held: var(--orange-700);     --stage-held-soft: var(--orange-50);

  /* Этапы будущей доски (макет «Воронки»): только маркер — точка, полоса, значок.
     Текст этими цветами не писать: у части пар контраст ниже 4,5:1. */
  --stage-intake: #4e7187;  --stage-intake-soft: #e9f0f4;
  --stage-model: #7754b5;   --stage-model-soft: #f1ecfa;
  --stage-make: #227eb1;    --stage-make-soft: #e6f2f9;
  --stage-finish: #b26826;  --stage-finish-soft: #fbf0e4;
  --stage-control: #b44f72; --stage-control-soft: #f9eaf0;
  --stage-issue: #15856e;   --stage-issue-soft: #e3f4ef;
  /* Холст сценария (макет «Изделия и работы»): фон, плитки типов блоков. */
  --flow-canvas: #f7f7f5; --flow-issue-line: #fbe1de;
  --flow-intake-soft: #e9eff3; --flow-make-soft: #e6f1f8; --flow-control-soft: #f7e8ee; --flow-issue-soft: #e3f3ef;

  /* ---- цвета групп меню: значок страницы и активный пункт */
  --hue-work: var(--indigo-700);   --hue-work-soft: var(--indigo-50);
  --hue-funnels: var(--violet-700); --hue-funnels-soft: var(--violet-50);
  --hue-ledger: var(--green-700);  --hue-ledger-soft: var(--green-50);
  --hue-dirs: var(--slate-700);    --hue-dirs-soft: var(--slate-50);

  /* ---- зубная формула: белая цифра на заливке */
  --tooth-unit: var(--indigo-700);
  --tooth-abutment: var(--violet-700);
  --tooth-pontic: var(--amber-700);

  /* ---- экран входа сохраняет свою палитру */
  --gate-bg: #5940db;
  --gate-ink-soft: #e5defd;
  --coral: #ff8e7f;
  --lime: #d5f584;
  --lilac: #ddd1fa;
  --gate-deep: #4a33c4;  /* тень под фигурами панели входа */

  /* ---- элементы */
  --ink-inverse: var(--gray-0);  /* текст и цифра на тёмной или цветной заливке */
  --fill-soft: var(--gray-50);   /* мягкая нейтральная заливка: заметка, пустое состояние */
  --hover-bg: var(--gray-50);
  --sidebar-bg: var(--gray-50);
  --sidebar-border: var(--gray-250);
  --sidebar-active-bg: var(--gray-0);
  --sidebar-active-ring: var(--gray-250);
  --sidebar-hover: #efefea;     /* наведение на пункт меню (каркас макета) */
  --column-bg: var(--gray-75);
  --card-border: var(--gray-200);
  --row-rule: var(--gray-150);
  --table-head-bg: var(--gray-50);
  --chip-bg: var(--gray-100);
  --field-border: var(--gray-300);
  --button-border: var(--gray-250);
  --button-primary-bg: var(--gray-900);
  --button-primary-ink: var(--gray-0);
  --button-primary-icon: var(--lime-400);
  --dialog-footer-bg: var(--gray-25);
  --focus-ring: var(--gray-900);
  --overlay: rgb(23 24 26 / .45);
  --menu-scrim: rgb(23 24 26 / .4); /* затемнение под выезжающим меню (каркас макета) */

  /* ---- пост участка (макет 28): рамка «↶ Отменить» на зелёной заливке успеха */
  --post-undo-line: rgb(255 255 255 / .7);
  /* экран 32 «Бейджи и посты»: подложка карточки техника, её тень справа и лист печати */
  --scrim-light: rgb(23 24 26 / .32);
  --shadow-drawer-right: -12px 0 40px rgb(16 24 40 / .18);
  --shadow-sheet: 0 1px 3px rgb(16 24 40 / .12);

  /* ---- приложение техника (макет 29): плашка «ждут сети» и скелет загрузки, рамка
     плашки конфликта, камера (фон, текст, кнопки на тёмном), кнопка «Отменить» в тосте */
  --app-quiet: #e7e7e2;
  --app-conflict-line: #f5cfae;
  --app-camera: #0b0c0d;
  --app-camera-text: #d0d0cc;
  --app-camera-button: rgb(255 255 255 / .14);
  --app-camera-line: rgb(255 255 255 / .3);
  --app-toast-button: rgb(255 255 255 / .12);
  --app-sheet-scrim: rgb(23 24 26 / .45);

  /* ---- администрирование (макет 41): шкала сроков подписки — предупреждение,
     время на оплату, только чтение; черта синей плашки приглашения (макет 40) */
  --sub-scale-warn: #f5d27a;
  --sub-scale-over: #f2a16b;
  --sub-scale-ro: #e0796f;
  --info-line: #d6e4fa;
  --shadow-dialog: 0 24px 60px rgb(16 24 40 / .28);

  /* ---- лента сканов карточки наряда (макет 06, Q2): канал «пост …» */
  --scan-channel-post: #e9e9e4;

  /* ---- шрифты: Onest — текст, JetBrains Mono — номера, суммы, даты, счётчики */
  --font: "Onest", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --mono: "JetBrains Mono", ui-monospace, Menlo, monospace;
  --fs-10-5: .65625rem; /* группы меню капсом */
  --fs-11: .6875rem;
  --fs-11-5: .71875rem; /* счётчики фильтров справочников */
  --fs-12: .75rem;      /* подсказки, заголовки колонок */
  --fs-12-5: .78125rem; /* ячейки таблиц, кнопки */
  --fs-13: .8125rem;    /* основной текст, меню */
  --fs-14: .875rem;     /* заголовок панели и карточки */
  --fs-17: 1.0625rem;   /* заголовок окна и раздела */
  --fs-20: 1.25rem;
  --fs-22: 1.375rem;    /* число в плитке */
  --fs-26: 1.625rem;    /* заголовок листа */
  --fw-400: 400;
  --fw-500: 500;
  --fw-600: 600;
  --fw-700: 700;

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

  /* ---- высоты. Внутри .orders-primary и открытых диалогов пробы требуют
     controls не ниже 31,5 px: 28-пиксельных кнопок и вкладок там нет. */
  --control-h: 32px;
  --control-h-lg: 38px;
  --menu-item-h: 28px;
  --row-h: 48px;
  --header-h: 56px;

  /* ---- скругления: 6 chip, 8 кнопка и поле, 10 карточка, 12 панель и плитка, 14 окно */
  --radius-sm: 6px;
  --radius: 8px;
  --radius-card: 10px;
  --radius-panel: 12px;
  --radius-dialog: 14px;
  --radius-pill: 999px;

  /* ---- тени: карточки и панели без тени, линия 1 px. Тень только у активного
     пункта меню (кольцо + 1 px), выбранной вкладки и окна. */
  --shadow-sm: 0 1px 1px rgb(16 24 40 / .04);
  --shadow-card: none;
  --shadow-button: none;
  --shadow-active: 0 0 0 1px var(--sidebar-active-ring), 0 1px 2px rgb(16 24 40 / .06);
  --shadow-tab: 0 1px 2px rgb(16 24 40 / .08);
  --shadow-dialog: 0 24px 60px rgb(16 24 40 / .28);
  --shadow-toast: 0 6px 20px rgb(16 24 40 / .14);
  --shadow-drawer: 14px 0 40px rgb(16 24 40 / .18);
  --shadow-panel: 0 12px 40px rgb(16 24 40 / .24); /* выезжающая панель справочника */
  --shadow-popover: 0 12px 40px rgb(16 24 40 / .18), 0 0 0 1px var(--gray-200); /* панель уведомлений под колокольчиком */
  --shadow-focus: 0 0 0 3px rgb(23 24 26 / .08);

  /* ---- перевозка и ресурсы (этап 2): выбранная строка, штриховка «неизвестно»,
     рамка рабочего окна станка. Штриховку рисует repeating-linear-gradient из
     этих двух цветов — неизвестный день не должен выглядеть ни пустым, ни нулём. */
  --row-selected-bg: #fbfdf6;
  --stage-make-line: #c3dcec;
  /* рамки смысловых плашек из README: неподтверждённый запрос, ошибка загрузки */
}
