/* lh-tokens.css — цвет и типографика ЛК 2.0.
 * Единственное место, где записаны значения цвета. В остальных файлах — только var().
 * Главная пара задана Гузелью 29.09.2026: #43A388 и #25765F.
 * Все пары «текст на фоне» проверены по WCAG 2.1 — см. palette.py.
 */

/* Копия data/tokens/kit/lh-tokens.css из рабочей папки Евы (кит ЛК 2.0),
 * перенесена на стенд Ксенией 14.10.2026 для раздела «Для граждан».
 * Единственное отличие от оригинала — шрифт самохостом (typography.md:
 * «в прод — самохостом»), файлы в static/fonts/onest/. Правки значений —
 * только в palette.py / typography.py у Евы, потом скопировать сюда. */
@font-face {
	font-family: 'Onest';
	font-style: normal;
	font-weight: 400 500;
	font-display: swap;
	src: url("../fonts/onest/onest-cyrillic.fe2bd26ae82a.woff2") format('woff2');
	unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
	font-family: 'Onest';
	font-style: normal;
	font-weight: 400 500;
	font-display: swap;
	src: url("../fonts/onest/onest-latin.3db826ed1c5d.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;
}

/* ─── Светлая тема ─── */
:root {
	--lh-bg-page:          #FAF9F7;  /* Фон страницы под всем */
	--lh-bg-surface:       #FFFFFF;  /* Карточка, панель, модальное окно */
	--lh-bg-surface-2:     #E8F4F0;  /* Подложка строки, наведение в таблице */
	--lh-bg-sidebar:       #FAF9F7;  /* Фон навигации на планшете и мобильном; на десктопе отдельной подложки нет */
	--lh-fg-primary:       #181615;  /* Основной текст и заголовки */
	--lh-fg-muted:         #6E6C6A;  /* Подписи, даты, второстепенное; подписи неактивных пунктов меню */
	--lh-fg-inverse:       #FFFFFF;  /* Текст на цветной и тёмной подложке */
	--lh-fg-sidebar:       #9FBAB1;  /* Декоративные иконки неактивных пунктов меню; подписи — fg/muted */
	--lh-line-base:        #E2E9E6;  /* Границы карточек, разделители, рамки полей */
	--lh-line-strong:      #C7D5D0;  /* Граница поля под курсором, активная вкладка */
	--lh-accent-base:      #43A388;  /* Активный пункт меню, ссылка, иконка, фокус */
	--lh-accent-strong:    #25765F;  /* Заливка главной кнопки */
	--lh-accent-hover:     #1B5B49;  /* Главная кнопка под курсором и нажатая */
	--lh-accent-soft:      #E8F4F0;  /* Подложка плашки, выделение найденного */
	--lh-accent-contrast:  #FFFFFF;  /* Текст и иконка на главной кнопке */
	--lh-state-success:    #1B5B49;  /* Успех операции, «на контроле» */
	--lh-state-success-soft: rgba(67, 163, 136, .20);  /* Фон блока «сохранено», значок движения */
	--lh-state-danger:     #B11D0A;  /* Ошибка, удаление, «доступ закрыт» */
	--lh-state-danger-soft: #FFE9E6;  /* Фон блока с ошибкой формы */
	--lh-state-warning:    #B15200;  /* «Требует внимания», близкое заседание, лимит */
	--lh-state-warning-soft: #FBF1E0;  /* Фон плашки «требует внимания» */
	--lh-state-info:       #0A6A9D;  /* Нейтральная подсказка, новое движение по делу */
	--lh-state-info-soft:  rgba(10, 106, 157, .14);  /* Фон подсказки и служебной плашки */
	--lh-focus-ring:       rgba(67, 163, 136, 0.45);  /* обводка элемента в фокусе */
	--lh-focus-ring-danger: rgba(177, 29, 10, 0.3);  /* обводка опасного действия в фокусе: зелёное кольцо вокруг «Удалить» спорит с самой кнопкой */
	--lh-focus-ring-warning: rgba(177, 82, 0, 0.3);  /* обводка предупреждающего действия в фокусе */
	--lh-focus-ring-success: rgba(27, 91, 73, 0.3);  /* обводка подтверждающего действия в фокусе */
	--lh-hover-bg:         rgba(67, 163, 136, 0.08);  /* фон карточки под курсором (Гузель, 08.10.2026) */
	--lh-shadow:           rgba(24, 22, 21, 0.08);  /* тень карточки */
	--lh-shadow-lift:      rgba(24, 22, 21, 0.18);  /* тень всплывающей панели и модального окна */
	--lh-backdrop:         rgba(24, 22, 21, 0.55);  /* затемнение под модальным окном */
}

/* ─── Тёмная тема: те же имена, другие значения ─── */
@media (prefers-color-scheme: dark) {
	:root:not([data-theme='light']) {
		--lh-bg-page:          #0D1512;  /* Фон страницы под всем */
		--lh-bg-surface:       #15201C;  /* Карточка, панель, модальное окно */
		--lh-bg-surface-2:     #16302A;  /* Подложка строки, наведение в таблице */
		--lh-bg-sidebar:       #0D1512;  /* Фон навигации на планшете и мобильном; на десктопе отдельной подложки нет */
		--lh-fg-primary:       #E9F0ED;  /* Основной текст и заголовки */
		--lh-fg-muted:         #93A8A0;  /* Подписи, даты, второстепенное; подписи неактивных пунктов меню */
		--lh-fg-inverse:       #0D1512;  /* Текст на цветной и тёмной подложке */
		--lh-fg-sidebar:       #3A4A44;  /* Декоративные иконки неактивных пунктов меню; подписи — fg/muted */
		--lh-line-base:        #27342F;  /* Границы карточек, разделители, рамки полей */
		--lh-line-strong:      #3B4E47;  /* Граница поля под курсором, активная вкладка */
		--lh-accent-base:      #5CBFA1;  /* Активный пункт меню, ссылка, иконка, фокус */
		--lh-accent-strong:    #4DB495;  /* Заливка главной кнопки */
		--lh-accent-hover:     #6FCCAF;  /* Главная кнопка под курсором и нажатая */
		--lh-accent-soft:      #16302A;  /* Подложка плашки, выделение найденного */
		--lh-accent-contrast:  #06201A;  /* Текст и иконка на главной кнопке */
		--lh-state-success:    #6FCCAF;  /* Успех операции, «на контроле» */
		--lh-state-success-soft: rgba(92, 191, 161, .20);  /* Фон блока «сохранено», значок движения */
		--lh-state-danger:     #E1685B;  /* Ошибка, удаление, «доступ закрыт» */
		--lh-state-danger-soft: #331A18;  /* Фон блока с ошибкой формы */
		--lh-state-warning:    #D9A038;  /* «Требует внимания», близкое заседание, лимит */
		--lh-state-warning-soft: #32270F;  /* Фон плашки «требует внимания» */
		--lh-state-info:       #5E9CE0;  /* Нейтральная подсказка, новое движение по делу */
		--lh-state-info-soft:  rgba(94, 156, 224, .14);  /* Фон подсказки и служебной плашки */
		--lh-focus-ring:       rgba(92, 191, 161, 0.45);  /* обводка элемента в фокусе */
		--lh-focus-ring-danger: rgba(225, 104, 91, 0.3);  /* обводка опасного действия в фокусе: зелёное кольцо вокруг «Удалить» спорит с самой кнопкой */
		--lh-focus-ring-warning: rgba(217, 160, 56, 0.3);  /* обводка предупреждающего действия в фокусе */
		--lh-focus-ring-success: rgba(111, 204, 175, 0.3);  /* обводка подтверждающего действия в фокусе */
		--lh-hover-bg:         rgba(92, 191, 161, 0.08);  /* фон карточки под курсором (Гузель, 08.10.2026) */
		--lh-shadow:           rgba(233, 240, 237, 0.08);  /* тень карточки */
		--lh-shadow-lift:      rgba(233, 240, 237, 0.18);  /* тень всплывающей панели и модального окна */
		--lh-backdrop:         rgba(233, 240, 237, 0.55);  /* затемнение под модальным окном */
	}
}

[data-theme='dark'] {
	--lh-bg-page:          #0D1512;  /* Фон страницы под всем */
	--lh-bg-surface:       #15201C;  /* Карточка, панель, модальное окно */
	--lh-bg-surface-2:     #16302A;  /* Подложка строки, наведение в таблице */
	--lh-bg-sidebar:       #0D1512;  /* Фон навигации на планшете и мобильном; на десктопе отдельной подложки нет */
	--lh-fg-primary:       #E9F0ED;  /* Основной текст и заголовки */
	--lh-fg-muted:         #93A8A0;  /* Подписи, даты, второстепенное; подписи неактивных пунктов меню */
	--lh-fg-inverse:       #0D1512;  /* Текст на цветной и тёмной подложке */
	--lh-fg-sidebar:       #3A4A44;  /* Декоративные иконки неактивных пунктов меню; подписи — fg/muted */
	--lh-line-base:        #27342F;  /* Границы карточек, разделители, рамки полей */
	--lh-line-strong:      #3B4E47;  /* Граница поля под курсором, активная вкладка */
	--lh-accent-base:      #5CBFA1;  /* Активный пункт меню, ссылка, иконка, фокус */
	--lh-accent-strong:    #4DB495;  /* Заливка главной кнопки */
	--lh-accent-hover:     #6FCCAF;  /* Главная кнопка под курсором и нажатая */
	--lh-accent-soft:      #16302A;  /* Подложка плашки, выделение найденного */
	--lh-accent-contrast:  #06201A;  /* Текст и иконка на главной кнопке */
	--lh-state-success:    #6FCCAF;  /* Успех операции, «на контроле» */
	--lh-state-success-soft: rgba(92, 191, 161, .20);  /* Фон блока «сохранено», значок движения */
	--lh-state-danger:     #E1685B;  /* Ошибка, удаление, «доступ закрыт» */
	--lh-state-danger-soft: #331A18;  /* Фон блока с ошибкой формы */
	--lh-state-warning:    #D9A038;  /* «Требует внимания», близкое заседание, лимит */
	--lh-state-warning-soft: #32270F;  /* Фон плашки «требует внимания» */
	--lh-state-info:       #5E9CE0;  /* Нейтральная подсказка, новое движение по делу */
	--lh-state-info-soft:  rgba(94, 156, 224, .14);  /* Фон подсказки и служебной плашки */
	--lh-focus-ring:       rgba(92, 191, 161, 0.45);  /* обводка элемента в фокусе */
	--lh-focus-ring-danger: rgba(225, 104, 91, 0.3);  /* обводка опасного действия в фокусе: зелёное кольцо вокруг «Удалить» спорит с самой кнопкой */
	--lh-focus-ring-warning: rgba(217, 160, 56, 0.3);  /* обводка предупреждающего действия в фокусе */
	--lh-focus-ring-success: rgba(111, 204, 175, 0.3);  /* обводка подтверждающего действия в фокусе */
	--lh-hover-bg:         rgba(92, 191, 161, 0.08);  /* фон карточки под курсором (Гузель, 08.10.2026) */
	--lh-shadow:           rgba(233, 240, 237, 0.08);  /* тень карточки */
	--lh-shadow-lift:      rgba(233, 240, 237, 0.18);  /* тень всплывающей панели и модального окна */
	--lh-backdrop:         rgba(233, 240, 237, 0.55);  /* затемнение под модальным окном */
}


/* ─── Типографика: Onest, 8 смысловых стилей ─── */
:root {
	--lh-font: 'Onest', -apple-system, 'Segoe UI', Roboto, sans-serif;
	--lh-line: 1.45;             /* межстрочный — коэффициент, одна единица на всю систему */
	--lh-weight-text: 400;       /* основной текст */
	--lh-weight-head: 500;       /* заголовки и метки */
	--lh-content-max: 80rem;
	--lh-text-max: 68ch;         /* ch — доля от шрифта, уже резиновая единица */
	--lh-radius: 0.75rem;
	--lh-radius-s: 0.5rem;
	--lh-radius-l: 1rem;

	/* Шкала: один размер — одно имя. Отсюда их берут и классы, и компоненты. */
	--lh-type-display:   clamp(1.75rem, calc(1.36309rem + 1.5873vw), 2.125rem);  /* Экран активации и короткое пустое состояние. */
	--lh-type-h1:        clamp(1.5rem, calc(1.24206rem + 1.0582vw), 1.75rem);  /* Заголовок раздела. Один на страницу. */
	--lh-type-h2:        clamp(1.25rem, calc(1.12103rem + 0.529101vw), 1.375rem);  /* Заголовок блока внутри экрана. */
	--lh-type-h3:        1.125rem;  /* Название в карточке и шапка таблицы. */
	--lh-type-body-m:    1rem;  /* Основной текст, значения полей, пункты списка. */
	--lh-type-body-s:    0.875rem;  /* Плотные списки, таблицы и второстепенный текст. */
	--lh-type-caption:   0.8125rem;  /* Метка, номер дела и служебная подпись. */
	--lh-type-micro:     0.75rem;  /* Короткий статус и счётчик. Не для длинного текста. */
	--lh-type-counter:   2.25rem;  /* Число счётчика. Только цифры, не текст. */
	--lh-type-counter-line: 1;
}

/* Второй плавный отрезок: 768→1280 px; выше 1280 — потолок. Переопределяем токен, а не каждый класс. */
@media (min-width: 768px) {
	:root {
		--lh-type-display: clamp(2.125rem, calc(1.75rem + 0.78125vw), 2.375rem);
		--lh-type-h1: clamp(1.75rem, calc(0.625rem + 2.34375vw), 2.5rem);
		--lh-type-h2: clamp(1.375rem, calc(1.1875rem + 0.390625vw), 1.5rem);
	}
}

/* ─── Движение ───
 * Значения взяты из того, что уже стоит в lh-kit.css ЛК (.16s / .42s /
 * cubic-bezier(.22,.61,.36,1)) — не новые числа, а те же, но именем.
 * Шкалу утверждает Гузель: см. references/06-motion.md навыка design-system.
 */
:root {
	--lh-fast:   .16s;   /* наведение, фокус, мелкие переходы */
	--lh-slow:   .42s;   /* появление панели, раскрытие блока, модальное окно */
	--lh-ease:   cubic-bezier(.22, .61, .36, 1);  /* основная кривая */
	--lh-linear: linear; /* только бесконечные: вращение, мерцание */
	--lh-spin:   .7s;    /* оборот индикатора загрузки */
}

/* Правило одно на систему, а не по классам: иначе каждый новый компонент
   надо не забыть дописать, и однажды забудут. 1 мс, а не 0, — иначе в части
   браузеров не срабатывает transitionend. */
@media (prefers-reduced-motion: reduce) {
	:root { --lh-fast: 1ms; --lh-slow: 1ms; --lh-spin: 2s; }
	*, *::before, *::after {
		animation-duration: 1ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 1ms !important;
		scroll-behavior: auto !important;
	}
	/* Индикатор загрузки — исключение: он несёт состояние, но крутится
	   медленно и без рывков. */
	.lh-btn__spin { animation-duration: var(--lh-spin) !important;
	                animation-iteration-count: infinite !important; }
}

.lh-display      { font: var(--lh-weight-head) var(--lh-type-display)/var(--lh-line) var(--lh-font); margin: 0; }
.lh-h1           { font: var(--lh-weight-text) var(--lh-type-h1)/var(--lh-line) var(--lh-font); margin: 0; }
.lh-h2           { font: var(--lh-weight-head) var(--lh-type-h2)/var(--lh-line) var(--lh-font); margin: 0; }
.lh-h3           { font: var(--lh-weight-head) var(--lh-type-h3)/var(--lh-line) var(--lh-font); margin: 0; }
.lh-body-m       { font: var(--lh-weight-text) var(--lh-type-body-m)/var(--lh-line) var(--lh-font); margin: 0; }
.lh-body-s       { font: var(--lh-weight-text) var(--lh-type-body-s)/var(--lh-line) var(--lh-font); margin: 0; }
.lh-caption      { font: var(--lh-weight-head) var(--lh-type-caption)/var(--lh-line) var(--lh-font); margin: 0; }
.lh-micro        { font: var(--lh-weight-head) var(--lh-type-micro)/var(--lh-line) var(--lh-font); margin: 0; }
.lh-counter      { font: var(--lh-weight-text) var(--lh-type-counter)/var(--lh-type-counter-line) var(--lh-font); margin: 0; }

/* Старые имена UI-kit 2.0 (29.09): удалить только после миграции всех потребителей. */
.lh-body-l       { font: var(--lh-weight-text) var(--lh-type-body-m)/var(--lh-line) var(--lh-font); margin: 0; }
.lh-body         { font: var(--lh-weight-text) var(--lh-type-body-m)/var(--lh-line) var(--lh-font); margin: 0; }
.lh-label        { font: var(--lh-weight-head) var(--lh-type-caption)/var(--lh-line) var(--lh-font); margin: 0; }
.lh-btn-text     { font: var(--lh-weight-text) var(--lh-type-body-m)/var(--lh-line) var(--lh-font); margin: 0; font-weight: 500; }
.lh-link         { font: var(--lh-weight-text) var(--lh-type-body-m)/var(--lh-line) var(--lh-font); margin: 0; text-decoration: underline; }
.lh-num          { font: var(--lh-weight-head) var(--lh-type-caption)/var(--lh-line) var(--lh-font); margin: 0; font-variant-numeric: tabular-nums; }

/* Ставится в <head> до стилей — иначе тёмная тема мигнёт белым при загрузке.
<script>
(function () {
	var saved = null;
	try { saved = localStorage.getItem('lh-theme'); } catch (e) {}
	if (saved === 'light' || saved === 'dark') {
		document.documentElement.setAttribute('data-theme', saved);
	}
})();
</script>
Тумблер в профиле пишет localStorage 'lh-theme' = 'light' | 'dark' | удаляет ключ («как в системе»)
и ставит/снимает data-theme на <html>. Третье положение обязательно: без него нельзя вернуться
к системной настройке, когда пользователь один раз выбрал вручную. */
