/*
 * Палитра проекта — единственный источник цвета.
 * Значения сняты скриптом с боевого style.min.css старого сайта, а не с
 * colors.css: тот не подключается и содержит устаревшую палитру.
 *
 * Цвет в шаблонах пишется только как var(--c-…). Hex мимо токенов — дефект.
 */

:root {
	/* Каналы: держим тройками, чтобы прозрачные варианты выводились, а не дублировались */
	--rgb-primary: 22 58 116; /* #163a74 — тёмно-синий, основной */
	--rgb-primary-light: 40 87 176; /* #2857b0 */
	--rgb-primary-dark: 14 163 212; /* #0ea3d4 — см. «Долги палитры» ниже */
	--rgb-accent: 243 181 58; /* #f3b53a — золотой, акцент */
	--rgb-accent-warm: 251 169 7; /* #fba907 */
	--rgb-ink: 77 77 77; /* #4d4d4d — основной текст */
	--rgb-ink-blue: 82 92 102; /* #525c66 — вторичный текст */
	--rgb-light: 255 255 255;
	--rgb-gray: 189 189 189; /* #bdbdbd */
	--rgb-gray-light: 245 246 248; /* #f5f6f8 — фон секций */
	--rgb-green: 76 209 55; /* #4cd137 — успех */

	/*
	 * Шкала состояния: от хорошего к плохому. Заведена под опросник IPSS, где
	 * балл нужно окрасить, — красного в палитре не было вовсе, а --rgb-green
	 * (#4cd137) даёт на белом 2,0:1 и годится точкой рядом с текстом, но не
	 * самим текстом. Здесь три цвета, каждый читается на белом: 4,9 / 4,6 / 5,0.
	 */
	--rgb-status-good: 30 126 52; /* #1e7e34 */
	--rgb-status-mid: 176 108 0; /* #b06c00 */
	--rgb-status-bad: 192 57 43; /* #c0392b */

	/* Цвета */
	--c-primary: rgb(var(--rgb-primary));
	--c-primary-30: rgb(var(--rgb-primary) / 0.3);
	--c-primary-50: rgb(var(--rgb-primary) / 0.5);
	--c-primary-light: rgb(var(--rgb-primary-light));
	--c-primary-light-10: rgb(var(--rgb-primary-light) / 0.1);
	/* Вторая ступень подмеса: там, где заливка в покое уже тонированная,
	   наведению нужна ступень заметнее, а не тот же самый тон. */
	--c-primary-light-20: rgb(var(--rgb-primary-light) / 0.2);
	--c-primary-light-50: rgb(var(--rgb-primary-light) / 0.5);
	--c-primary-dark: rgb(var(--rgb-primary-dark));
	/*
	 * Светлый конец градиента главной кнопки. Не новый цвет палитры, а подмес
	 * белого к уже имеющемуся: своего тона тут не заводится. Доля белого
	 * ограничена контрастом — белый текст на этом фоне даёт 5,5:1, и дальше
	 * светлить нельзя, норма для 13 px жирного 4,5:1.
	 */
	--c-primary-lift: color-mix(in srgb, var(--c-primary-light) 90%, var(--c-light));

	--c-accent: rgb(var(--rgb-accent));
	--c-accent-30: rgb(var(--rgb-accent) / 0.3);
	--c-accent-warm-40: rgb(var(--rgb-accent-warm) / 0.4);

	--c-ink: rgb(var(--rgb-ink));
	--c-ink-05: rgb(var(--rgb-ink) / 0.05);
	--c-ink-10: rgb(var(--rgb-ink) / 0.1);
	--c-ink-15: rgb(var(--rgb-ink) / 0.15);
	--c-ink-20: rgb(var(--rgb-ink) / 0.2);
	--c-ink-30: rgb(var(--rgb-ink) / 0.3);
	--c-ink-50: rgb(var(--rgb-ink) / 0.5);

	--c-ink-blue: rgb(var(--rgb-ink-blue));
	--c-ink-blue-05: rgb(var(--rgb-ink-blue) / 0.05);
	--c-ink-blue-10: rgb(var(--rgb-ink-blue) / 0.1);
	--c-ink-blue-20: rgb(var(--rgb-ink-blue) / 0.2);
	--c-ink-blue-30: rgb(var(--rgb-ink-blue) / 0.3);

	--c-light: rgb(var(--rgb-light));
	--c-gray: rgb(var(--rgb-gray));
	--c-gray-light: rgb(var(--rgb-gray-light));
	--c-green: rgb(var(--rgb-green));
	--c-status-good: rgb(var(--rgb-status-good));
	--c-status-mid: rgb(var(--rgb-status-mid));
	--c-status-bad: rgb(var(--rgb-status-bad));
	--c-green-50: rgb(var(--rgb-green) / 0.5);

	/* Шрифты — те же, что на старом сайте, но со своего домена */
	--font-heading: "Montserrat", system-ui, sans-serif;
	--font-body: "Roboto", system-ui, sans-serif;

	/*
	 * Скругления. Их два, и делятся они не по размеру, а по назначению:
	 * нажимаемое и ненажимаемое.
	 *
	 * --r-sm — мера кнопки: всё, что нажимают, скруглено так же, как она.
	 * --r-badge — подписи, которые нажать нельзя: стаж, регалии, длительность
	 *   этапа. Более круглая форма и есть сообщение «сюда не нажимают»
	 *   (решение владельца 09.08.2026).
	 *
	 * Третьего значения нет и заводить его не за чем: пилюли спорят с
	 * прямоугольной сеткой и делают форму развлекательной, а сайт врачебный.
	 */
	--r-sm: 0.375rem;
	--r-badge: 0.75rem;

	/*
	 * Отступы. Шкала нужна, чтобы воздух между элементами задавался решением
	 * «на ступень больше», а не подбором на глаз: подобранные значения
	 * расползаются, и через десяток блоков ритма на странице уже нет.
	 */
	--space-2xs: 0.25rem;
	--space-xs: 0.5rem;
	--space-sm: 0.75rem;
	--space-md: 1.25rem;
	--space-lg: 2rem;
	--space-xl: 3rem;
	/*
	 * Ритм между разделами. Это роль, а не ступень шкалы: шкала отвечает за
	 * воздух внутри блока, и продолжать её ради одного применения значит
	 * заводить ступень, на которую никто больше не встанет.
	 *
	 * Смежные поля секций схлопываются, поэтому между разделами стоит одно
	 * значение, а не сумма двух. На --space-xl это давало 48 px — ровно
	 * столько же, сколько отделяет заголовок раздела от его содержимого, и
	 * разделы читались как один длинный список.
	 */
	--space-section: 7rem;

	/*
	 * Тени. Считаются из канала чернил, а не задаются своим цветом: тень —
	 * это тот же текст, только размытый, и отдельного цвета у неё быть не должно.
	 */
	--shadow-card: 0 2px 8px rgb(var(--rgb-ink) / 0.06);
	--shadow-lift: 0 14px 28px rgb(var(--rgb-ink) / 0.1);
	--shadow-float: 0 6px 26px rgb(var(--rgb-ink) / 0.12);
	/*
	 * Тень главной кнопки считается из её собственного канала, а не из чернил:
	 * серая тень под цветной кнопкой выглядит грязью, потому что это тень от
	 * другого предмета.
	 */
	--shadow-cta: 0 3px 10px rgb(var(--rgb-primary) / 0.35);
	/*
	 * Тень крупного блока. Она шире и мягче остальных не для красоты: у карточки
	 * в половину экрана короткая тень читается как обрезанный край, а не как
	 * приподнятая поверхность.
	 */
	--shadow-section: 0 18px 48px rgb(var(--rgb-ink) / 0.08);

	/* Движение */
	--ease-out: cubic-bezier(0.22, 0.61, 0.36, 1);
	--dur-fast: 120ms;
	--dur-base: 220ms;

	/* Роли — шаблоны обращаются к ним, а не к палитре напрямую */
	--c-page-bg: var(--c-light);
	--c-section-bg: var(--c-gray-light);
	--c-text: var(--c-ink);
	--c-text-muted: var(--c-ink-blue);
	--c-heading: var(--c-primary);
	--c-link: var(--c-primary);
	--c-link-hover: var(--c-primary-light);
	/*
	 * Главная кнопка. Роль держит целиком заливку, а не один цвет: заливка
	 * теперь градиент, и разбирать её на концы по месту применения — значит
	 * собирать один и тот же градиент заново в каждой кнопке.
	 *
	 * Жёлтой кнопка была до 09.08.2026. Тёмный текст на акценте давал 4,5:1 —
	 * ровно нижнюю границу нормы; белый на синем даёт 5,4:1 на светлом конце
	 * градиента и 6,8:1 на тёмном. Решение владельца.
	 */
	--c-cta-bg: linear-gradient(90deg, var(--c-primary-lift) 0%, var(--c-primary-light) 100%);
	--c-cta-text: var(--c-light);
	--c-border: var(--c-ink-10);
	/* Подложка под наведением и активным пунктом: тон основного, а не серый */
	--c-hover-tint: var(--c-primary-light-10);
}

/*
 * Версия для слабовидящих — требование приказа 118н, прил. 2 п. 2.
 * Переключатель ставит [data-vision="low"] на корне; перекрываются только роли,
 * палитра остаётся общей. Значения подберём на М6 вместе с переключателем.
 */
[data-vision="low"] {
	/* --c-page-bg: … ; --c-text: … ; --c-link: … ; */
}

/*
 * Долги палитры, унаследованные со старого сайта. Разбираем на М3 вместе с
 * вёрсткой, здесь ничего не додумано — значения сохранены как есть:
 *   1. --c-primary-dark (#0ea3d4) голубой и выпадает из синего семейства —
 *      остаток прежней палитры.
 *   2. --accent-dark на старом сайте равен --accent: тёмного акцента нет.
 *   3. --accent-dark-40 (#fba907) — отдельный цвет, а не прозрачный акцент.
 */
