/*
 * Четыре режима чтения. Включаются классом на корне страницы.
 *
 * Правила намеренно грубые (`!important`): они обязаны перебить чужую тему,
 * какой бы она ни была, — в этом весь смысл кнопки для посетителя. Но грубость
 * ограничена: медиа не трогаем, разметку не переписываем, после выключения
 * страница возвращается сама, потому что мы всего лишь снимаем класс.
 *
 * Сам виджет из-под режимов выведен: панель, которой человек включает контраст,
 * не должна от контраста разъезжаться.
 */

/* ------------------------------------------------------------------ */
/* 1. Крупный текст                                                     */
/* ------------------------------------------------------------------ */

/*
 * Ступень 125 % — заметно, но вёрстка держится. Полтора-два раза ломают сетку
 * почти на любой теме, и человек получает нечитаемую кашу вместо помощи.
 *
 * Две строки, потому что темы считают размеры по-разному: первая работает на
 * темах в rem (их большинство и таковы все блочные), вторая добирает те, что
 * задают размер на body.
 */
html.onsite-a11yw-shrift {
	font-size: 125% !important;
}

/*
 * Никакого второго правила на body.
 *
 * Оно было — «чтобы добрать темы, которые задают размер на body», — и сделало
 * ровно обратное: перебило размеры темы своим значением, и текст на стенде
 * УМЕНЬШИЛСЯ с 22 до 21.2 px. Кнопка «крупный текст», делающая текст мельче,
 * хуже, чем её отсутствие. Правим только корень, а темы, считающие в rem
 * (это все блочные и большинство современных), растут от него сами.
 */
html.onsite-a11yw-shrift body {
	line-height: 1.6 !important;
}

/* Заголовкам добавка не нужна: они и так растут от корня, а вторая прибавка
   выкидывает их за край экрана. */
html.onsite-a11yw-shrift h1,
html.onsite-a11yw-shrift h2,
html.onsite-a11yw-shrift h3 {
	line-height: 1.25 !important;
	overflow-wrap: break-word !important;
}

/* ------------------------------------------------------------------ */
/* 2. Высокий контраст                                                  */
/* ------------------------------------------------------------------ */

/*
 * Чёрное на белом, а НЕ инверсия. Инверсия превращает фотографии и логотипы в
 * негатив: человек перестаёт узнавать товар и уходит с сайта. Поэтому картинки,
 * видео и svg мы не трогаем вовсе.
 */
html.onsite-a11yw-kontrast body,
html.onsite-a11yw-kontrast body *:not( .onsite-a11yw ):not( .onsite-a11yw * ) {
	background-color: #ffffff !important;
	background-image: none !important;
	color: #000000 !important;
	text-shadow: none !important;
	box-shadow: none !important;
}

/*
 * Дальше важен ВЕС селектора, а не только порядок строк. Общее правило выше
 * тяжёлое (три класса), и первые версии этих строк оно перебивало: ссылки
 * выходили чёрными, а картинкам доставался белый фон. Поэтому у каждого
 * исключения ровно столько же классов, сколько у общего правила.
 */
html.onsite-a11yw-kontrast body a:not( .onsite-a11yw ):not( .onsite-a11yw * ) {
	color: #00008b !important;
	text-decoration: underline !important;
}

html.onsite-a11yw-kontrast body button:not( .onsite-a11yw ):not( .onsite-a11yw * ),
html.onsite-a11yw-kontrast body input:not( .onsite-a11yw ):not( .onsite-a11yw * ),
html.onsite-a11yw-kontrast body select:not( .onsite-a11yw ):not( .onsite-a11yw * ),
html.onsite-a11yw-kontrast body textarea:not( .onsite-a11yw ):not( .onsite-a11yw * ) {
	border: 2px solid #000000 !important;
}

/* Медиа остаётся собой: ни фона, ни цвета, ни фильтров. */
html.onsite-a11yw-kontrast body img:not( .onsite-a11yw ):not( .onsite-a11yw * ),
html.onsite-a11yw-kontrast body video:not( .onsite-a11yw ):not( .onsite-a11yw * ),
html.onsite-a11yw-kontrast body svg:not( .onsite-a11yw ):not( .onsite-a11yw * ),
html.onsite-a11yw-kontrast body canvas:not( .onsite-a11yw ):not( .onsite-a11yw * ),
html.onsite-a11yw-kontrast body iframe:not( .onsite-a11yw ):not( .onsite-a11yw * ) {
	background-color: transparent !important;
	filter: none !important;
}

/* ------------------------------------------------------------------ */
/* 3. Подсветка ссылок                                                  */
/* ------------------------------------------------------------------ */

/*
 * Ссылку должно быть видно БЕЗ наведения и не по одному цвету: подчёркивание
 * плюс заметный цвет. Ссылка, отличающаяся от текста только цветом, — это
 * нарушение, которое наш же сканер и находит.
 */
html.onsite-a11yw-ssylki body a:not( .onsite-a11yw ):not( .onsite-a11yw * ) {
	color: #00008b !important;
	text-decoration: underline !important;
	text-decoration-thickness: 2px !important;
	text-underline-offset: 2px !important;
	background-color: #ffff8d !important;
}

html.onsite-a11yw-ssylki body a:not( .onsite-a11yw ):not( .onsite-a11yw * ):focus-visible,
html.onsite-a11yw-ssylki body a:not( .onsite-a11yw ):not( .onsite-a11yw * ):hover {
	outline: 2px solid #00008b !important;
	outline-offset: 2px !important;
}

/* ------------------------------------------------------------------ */
/* 4. Стоп-анимация                                                     */
/* ------------------------------------------------------------------ */

/*
 * Движение убираем целиком, включая плавную прокрутку. Отдельная строка про
 * появление: блоки на scroll-reveal висят прозрачными, пока до них не долистали,
 * и с выключенной анимацией остались бы невидимыми навсегда — то есть кнопка
 * «стоп» стёрла бы человеку половину страницы.
 */
html.onsite-a11yw-animacia,
html.onsite-a11yw-animacia body {
	scroll-behavior: auto !important;
}

html.onsite-a11yw-animacia *:not( .onsite-a11yw ):not( .onsite-a11yw * ) {
	animation-duration: 0s !important;
	animation-delay: 0s !important;
	animation-iteration-count: 1 !important;
	transition-duration: 0s !important;
	transition-delay: 0s !important;
}

html.onsite-a11yw-animacia [class*="animate"]:not( .onsite-a11yw * ),
html.onsite-a11yw-animacia [class*="fade"]:not( .onsite-a11yw * ),
html.onsite-a11yw-animacia [data-aos]:not( .onsite-a11yw * ),
html.onsite-a11yw-animacia .elementor-invisible:not( .onsite-a11yw * ) {
	opacity: 1 !important;
	visibility: visible !important;
	transform: none !important;
}
