/*
 * Шрифты — своя копия, не fonts.googleapis.com (замер загрузки CRM, продолжение
 * docs/frontend-load-review-2026-09-18.md).
 *
 * Прежняя ссылка на сторонний домен была снята с критического пути (media="print"), и это
 * убрало ожидание: при молчании Google на 3 с старт приложения был 3094 мс, стал 156 мс.
 * Но прийти самому шрифту это не помогало — при недоступном Google текст рисовался
 * запасным system-ui с другими метриками, и такой случай не гипотетический: в облачном
 * окружении проекта fonts.googleapis.com закрыт совсем, и соседняя проверка из-за этого
 * приняла обрезанный плейсхолдер за дефект вёрстки. Своя копия — единственное, что даёт
 * одинаковые метрики у оператора, у владельца и в проверках.
 *
 * Состав РОВНО тот же, что запрашивала ссылка Google, ничего не добавлено: Sans 400/500/600/
 * 700 и Mono 400/500/600, только normal. Курсива не было и там (в URL не было `ital`), два
 * места с font-style: italic (.jg-msg__empty, .jg-drow__last--none) как синтезировались
 * браузером, так и синтезируются — поведение не меняется.
 *
 * Подмножества — latin и cyrillic, диапазоны те же, что отдаёт Google. `unicode-range`
 * обязателен: без него два @font-face с одинаковыми family/weight/style не дополняют друг
 * друга, а последний просто перекрывает первый. С ним браузер тянет только те файлы, чьи
 * символы реально есть на экране.
 *
 * Файлы — из @fontsource/ibm-plex-sans@5.3.0 и @fontsource/ibm-plex-mono@5.3.0 (те же
 * оригиналы IBM, SIL Open Font License 1.1, текст лицензии — ./fonts/LICENSE.txt).
 * Адреса версионируются и отдаются immutable тем же механизмом, что остальная статика.
 */

@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./fonts/ibm-plex-sans-latin-400-normal.woff2?v=4bc5931cc77d') 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+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./fonts/ibm-plex-sans-cyrillic-400-normal.woff2?v=4bc5931cc77d') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('./fonts/ibm-plex-sans-latin-500-normal.woff2?v=4bc5931cc77d') 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+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('./fonts/ibm-plex-sans-cyrillic-500-normal.woff2?v=4bc5931cc77d') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('./fonts/ibm-plex-sans-latin-600-normal.woff2?v=4bc5931cc77d') 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+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('./fonts/ibm-plex-sans-cyrillic-600-normal.woff2?v=4bc5931cc77d') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('./fonts/ibm-plex-sans-latin-700-normal.woff2?v=4bc5931cc77d') 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+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('./fonts/ibm-plex-sans-cyrillic-700-normal.woff2?v=4bc5931cc77d') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./fonts/ibm-plex-mono-latin-400-normal.woff2?v=4bc5931cc77d') 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+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./fonts/ibm-plex-mono-cyrillic-400-normal.woff2?v=4bc5931cc77d') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('./fonts/ibm-plex-mono-latin-500-normal.woff2?v=4bc5931cc77d') 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+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('./fonts/ibm-plex-mono-cyrillic-500-normal.woff2?v=4bc5931cc77d') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('./fonts/ibm-plex-mono-latin-600-normal.woff2?v=4bc5931cc77d') 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+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('./fonts/ibm-plex-mono-cyrillic-600-normal.woff2?v=4bc5931cc77d') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/*
 * Токены нового UI CRM (обе темы). Источник — Claude Design, проект
 * d61919b6-5aef-4751-bc9d-09413da1532f: «Design system.dc.html» (разделы 01–10), экраны
 * CRM, тёмные значения экрана — «Dashboard B - dark.dc.html». Резервная копия:
 * docs/design-source/crm-2026-09-11/.
 *
 * Префикс --jg-: пока новые компоненты живут рядом со старыми /design-system/tokens.css и
 * /crm/crm.css (--bg, --surface…), имена не пересекаются — старые страницы не меняются.
 * Тема — тот же атрибут и ключ, что у старых страниц: <html data-theme="dark">,
 * localStorage 'jet-ds-theme'.
 */

:root {
  --jg-font: 'IBM Plex Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --jg-mono: 'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, monospace;

  /* основа */
  --jg-bg: #F5F5F7;
  --jg-surface: #FFFFFF;
  --jg-surface-2: #FAFAFB;      /* шапка таблицы, hover строки */
  --jg-fill: #F0F0F3;           /* неактивная пилюля/вкладка, скелетон, аватар-заглушка */
  --jg-field: #F5F5F7;          /* заливка поля ввода, key-value плашка */
  --jg-field-focus: #FFFFFF;    /* заливка поля в фокусе */
  --jg-field-bd: #E4E4EA;
  --jg-control-bd: #8C8896;     /* не в макете: край чекбокса/выключенного переключателя ≥3:1 (в макете #D8D8DF ≈1.4:1) */
  --jg-knob: #FFFFFF;
  --jg-border: #E4E4EA;
  --jg-border-strong: #D8D8DF;
  --jg-divider: #F0F0F3;        /* граница между строками внутри панели */
  --jg-btn2-hover: #F5F5F7;     /* hover вторичной/ghost-кнопки */

  /* текст */
  --jg-text: #15141A;
  --jg-text-2: #57545F;
  --jg-muted: #6B6875;
  --jg-label: #6E6B7B;
  --jg-disabled: #A9A6B2;
  --jg-disabled-bg: #F0F0F3;
  --jg-grip: #B6B3BE;           /* ручка перетаскивания: светлее текста, темнее рамки (макет сцен) */

  /* акцент — только действия и выделение */
  --jg-accent: #FF6B00;
  --jg-accent-hover: #E85F00;
  --jg-on-accent: #1B0F05;      /* белый на #FF6B00 — 2.9:1 (ниже AA); тёмный — 6.6:1, на hover 5.4:1 */
  --jg-link: #C24F00;
  --jg-link-hover: #A34200;
  --jg-accent-soft: #FFF8F3;    /* фон акцентной плашки */
  --jg-accent-tint: #FFF1E6;    /* метка «видно на витрине» */
  --jg-accent-text: #8A4A10;
  --jg-accent-border: #FFD9BC;
  --jg-focus: #FFE7D3;          /* кольцо фокуса поля, 3px */
  --jg-accent-hover-bd: #FFB27A; /* рамка карточки оффера под курсором (холст Dialogs) */
  --jg-bubble-out: #FFE7D3;     /* пузырь исходящего сообщения */
  --jg-bubble-out-text: #3D2510;
  --jg-sys-bg: #E9E9EE;         /* системная строка и разделитель даты в ленте */
  --jg-focus-outline: #C24F00;  /* обводка :focus-visible кнопок/ссылок/строк (контраст ≥3:1) */

  /* ink — сайдбар: всегда тёмная поверхность, в обеих темах */
  --jg-ink: #241A2B;
  --jg-ink-2: #33253C;          /* hover пункта, блок аккаунтов, переключатель темы */
  --jg-ink-border: transparent;
  --jg-ink-text: #EFEAF2;
  --jg-ink-strong: #FFFFFF;
  --jg-ink-muted: #A79BAE;
  --jg-ink-label: #B9ADC0;
  --jg-ink-avatar: #4A3A55;
  --jg-ink-seg-on: #FFFFFF;
  --jg-ink-seg-on-text: #15141A;
  --jg-ink-focus: #FFB27A;
  --jg-nav-active-bg: #FF6B00;
  --jg-nav-active-fg: #1B0F05;  /* как --jg-on-accent: белый на акценте ниже AA */

  /* семантика: цвет / фон бейджа / рамка плашки */
  --jg-pos: #0E7A52;  --jg-pos-bg: #E7F4EE; --jg-pos-bd: #CDE8DB;
  --jg-neu: #5A5A68;  --jg-neu-bg: #F0F0F3;
  --jg-wait: #6244E5; --jg-wait-bg: #EEEBFD; --jg-wait-bd: #DCD6FA; --jg-wait-soft: #F6F4FE; --jg-wait-text: #3B2A9C;
  --jg-wait-strong: #4B33C7;    /* Models 03/04: фиолетовый текст на --jg-wait-bg (вкладка персоны, № этапа, роль аватар/обложка), hover фиолетовой кнопки */
  --jg-warn: #8F5606; --jg-warn-bg: #FBF3E2; --jg-warn-bd: #F0E1BE; --jg-warn-text: #7A4D06;
  --jg-err: #C62B2B;  --jg-err-bg: #FDECEC;  --jg-err-bd: #F1C9C9;  --jg-err-text: #8F1F1F; --jg-err-ring: #FBDEDE;
  --jg-danger: #B22222;         /* текст опасной кнопки; фон/рамка — err-bg/err-bd */

  /* острота ступени (JET-1106) — ШКАЛА, а не пять одинаковых плашек: цвет греется от
     песочного к оранжевому, поэтому «4 из 5» читается не пересчётом квадратиков.
     Значения — из макета «Scenes - redaktor v2» (HEAT_ON). */
  --jg-heat-1: #FFD08A; --jg-heat-2: #FFC06B; --jg-heat-3: #FFA94D;
  --jg-heat-4: #FF8A3D; --jg-heat-5: #FF6B2C;
  /* признак набора на обложке и точка «описание есть» — синий: он не занят ни одним
     состоянием готовности, поэтому не читается как предупреждение. */
  --jg-info: #2C5B8F;

  --jg-shadow-pop: 0 18px 48px rgba(20, 16, 26, .28);
  --jg-shadow-menu: 0 16px 40px rgba(20, 16, 26, .16);
  --jg-shadow-drawer: -12px 0 32px rgba(20, 16, 26, .12);
  --jg-backdrop: rgba(29, 21, 36, .38);

  --jg-gutter: 26px;            /* боковой отступ рабочей области экранов */

  /* радиусы */
  --jg-r-badge: 8px;
  --jg-r-control: 10px;
  --jg-r-tile: 12px;
  --jg-r-panel: 14px;
  --jg-r-dialog: 16px;
  --jg-r-pill: 999px;

  /* контролы S/M/L */
  --jg-h-s: 30px;
  --jg-h-m: 36px;
  --jg-h-l: 42px;

  --jg-side-w: 240px;
}

:root[data-theme='dark'] {
  --jg-bg: #121016;
  --jg-surface: #1A1720;
  --jg-surface-2: #221E2A;
  --jg-fill: #262231;
  --jg-field: #221E2A;
  --jg-field-focus: #221E2A;    /* Design system §10: в фокусе заливка поля остаётся */
  --jg-field-bd: #3C3746;
  --jg-control-bd: #746E80;
  --jg-knob: #F4F2F7;
  --jg-border: #2E2A38;
  --jg-border-strong: #3C3746;
  --jg-divider: #262231;
  --jg-btn2-hover: #221E2A;

  --jg-text: #F4F2F7;
  --jg-text-2: #B7B2C0;
  --jg-muted: #948E9E;
  --jg-label: #948E9E;
  --jg-disabled: #6E6878;
  --jg-disabled-bg: #1E1B25;    /* не в макете: отличимо и от поля (#221E2A), и от панели */
  --jg-grip: #5C5768;           /* не в макете: та же роль, что #B6B3BE в светлой — виден, но не спорит с текстом */

  --jg-accent: #FF7A1A;
  --jg-accent-hover: #FF8F3D;
  --jg-on-accent: #171216;      /* на светлом акценте текст тёмный */
  --jg-link: #FF9A4D;
  --jg-link-hover: #FFB27A;
  --jg-accent-soft: #2A1C14;
  --jg-accent-tint: #3A2312;
  --jg-accent-text: #FFB27A;
  --jg-accent-border: #5A3418;
  --jg-focus: #3A2312;
  --jg-focus-outline: #FF9A4D;
  --jg-accent-hover-bd: #7A4A1E;
  --jg-bubble-out: #3A2312;
  --jg-bubble-out-text: #F4F2F7;
  --jg-sys-bg: #262231;

  /* сайдбар в тёмной теме сливается с фоном и отделяется границей;
     активный пункт — тинт, не сплошной акцент (Design system, раздел 10) */
  --jg-ink: #171420;
  --jg-ink-2: #262231;
  --jg-ink-border: #2E2A38;
  --jg-ink-text: #F4F2F7;
  --jg-ink-strong: #F4F2F7;
  --jg-ink-muted: #948E9E;
  --jg-ink-label: #B7B2C0;
  --jg-ink-avatar: #3C3746;
  --jg-ink-seg-on: #2E2A38;
  --jg-ink-seg-on-text: #F4F2F7;
  --jg-nav-active-bg: #3A2312;
  --jg-nav-active-fg: #FFB27A;

  --jg-pos: #3DBE8B;  --jg-pos-bg: #14281F; --jg-pos-bd: #1F4A38;
  --jg-neu: #B7B2C0;  --jg-neu-bg: #262231;
  --jg-wait: #9B8BF5; --jg-wait-bg: #221D3A; --jg-wait-bd: #342C5C; --jg-wait-soft: #1E1A30; --jg-wait-text: #C4B9FA;
  --jg-wait-strong: #C4B9FA;    /* в тёмной «сильнее» = светлее (как hover акцента) */
  --jg-warn: #E0A83C; --jg-warn-bg: #2C2211; --jg-warn-bd: #4A3817; --jg-warn-text: #E8BE6A;
  /* тёмная: шкала та же по тону, но приглушена — на тёмном фоне исходные светлее бумаги */
  --jg-heat-1: #7A5A2E; --jg-heat-2: #96682C; --jg-heat-3: #B87A2B;
  --jg-heat-4: #D98B33; --jg-heat-5: #FF7A1A;
  --jg-info: #6FA3D9;
  --jg-err: #F2726A;  --jg-err-bg: #2E1618;  --jg-err-bd: #4A2226;  --jg-err-text: #F6A19B; --jg-err-ring: #3A1C1F;
  --jg-danger: #F2726A;

  /* на тёмном тени не читаются — всплывающим слоям граница (Design system, раздел 10) */
  --jg-shadow-pop: 0 0 0 1px #3C3746, 0 18px 48px rgba(0, 0, 0, .55);
  --jg-shadow-menu: 0 0 0 1px #3C3746, 0 16px 40px rgba(0, 0, 0, .45);
  --jg-shadow-drawer: none;
  --jg-backdrop: rgba(6, 4, 9, .62);
}
