/*
 * Версия для слабовидящих (ГОСТ Р 52872-2019, WCAG 2.1).
 * Все правила действуют только при классе .lv на <html>, который ставит lv.js.
 */

/* ---------- Кнопка «Версия для слабовидящих» в шапке ---------- */

.lv-toggle {
    background: none;
    border: 0;
    font: inherit;
    color: inherit;
    cursor: pointer;
}

/* В обычной версии — жёлтым по тёмному, как было у прежней ссылки (контраст 14:1) */
.header .nav-version .lv-toggle {
    background: #333333;
    color: #f1ff14 !important;
}

/* Тот же размер, что у соседних ссылок шапки */
.header .navbar-top .lv-toggle {
    font-size: 11pt;
}

.header .nav-version .lv-toggle:hover {
    background: #f1ff14;
    color: #333333 !important;
}

/* ---------- Цветовые схемы (цвета по ГОСТ Р 52872-2019) ---------- */

html.lv-scheme-bw    { --lv-fg: #000000; --lv-bg: #ffffff; }
html.lv-scheme-wb    { --lv-fg: #ffffff; --lv-bg: #000000; }
html.lv-scheme-blue  { --lv-fg: #063462; --lv-bg: #9dd1ff; }
html.lv-scheme-beige { --lv-fg: #4d4b43; --lv-bg: #f7f3d6; }
html.lv-scheme-green { --lv-fg: #a9e44d; --lv-bg: #3b2716; }

html.lv { --lv-lh: 1.5; --lv-ls: normal; --lv-ff: Arial, "Helvetica Neue", Helvetica, sans-serif; }
html.lv-line-medium   { --lv-lh: 1.8; }
html.lv-line-large    { --lv-lh: 2.2; }
html.lv-letter-medium { --lv-ls: 0.08em; }
html.lv-letter-large  { --lv-ls: 0.16em; }
html.lv-font-serif    { --lv-ff: "Times New Roman", Times, Georgia, serif; }

/* ---------- Панель настроек ---------- */

.lv-panel {
    display: none;
}

html.lv .lv-panel {
    display: block;
    position: relative;
    z-index: 1040;
    padding: 0 16px;
    background: var(--lv-bg);
    color: var(--lv-fg);
    border-bottom: 4px double var(--lv-fg);
    font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
    font-size: 16px;
    line-height: 1.4;
    letter-spacing: normal;
    text-align: left;
}

.lv-panel *,
.lv-panel *::before,
.lv-panel *::after {
    box-sizing: border-box;
}

/* Текст панели — всегда в цвет выбранной схемы, независимо от стилей сайта */
html.lv .lv-panel .lv-panel__title,
html.lv .lv-panel .lv-group__title,
html.lv .lv-panel .lv-speech-hint {
    color: var(--lv-fg);
    font-family: Arial, sans-serif;
}

.lv-panel__inner {
    max-width: 1240px;
    margin: 0 auto;
}

/* Верхняя строка: название и кнопки «Скрыть настройки», «Обычная версия сайта» */
.lv-panel__bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px 16px;
    padding: 10px 0;
}

.lv-panel__title {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0;
    font-size: 20px;
    font-weight: bold;
}

.lv-panel__title:focus {
    outline: none;
}

.lv-panel__icon {
    flex: none;
}

.lv-panel__bar-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

/* Настройки — в рамке под верхней строкой */
.lv-panel__body {
    margin-bottom: 14px;
    padding: 14px 18px 16px;
    border: 2px solid var(--lv-fg);
    border-radius: 10px;
}

.lv-panel__body[hidden],
.lv-row[hidden] {
    display: none;
}

.lv-row {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 14px 32px;
}

.lv-row--more {
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px dashed var(--lv-fg);
}

.lv-group {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.lv-group--more {
    margin-left: auto;
}

.lv-group__title {
    font-size: 15px;
    font-weight: bold;
}

.lv-group__buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

/* Варианты одной настройки — единым переключателем */
.lv-group__buttons--segmented {
    flex-wrap: nowrap;
    gap: 0;
}

.lv-panel .lv-group__buttons--segmented .lv-btn {
    border-radius: 0;
}

.lv-panel .lv-group__buttons--segmented .lv-btn + .lv-btn {
    margin-left: -2px;
}

.lv-panel .lv-group__buttons--segmented .lv-btn:first-child {
    border-radius: 8px 0 0 8px;
}

.lv-panel .lv-group__buttons--segmented .lv-btn:last-child {
    border-radius: 0 8px 8px 0;
}

/* Кнопки панели: не меньше 44×44 px (WCAG 2.5.5) */
.lv-panel .lv-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-width: 44px;
    min-height: 44px;
    margin: 0;
    padding: 6px 14px;
    background: var(--lv-bg);
    color: var(--lv-fg);
    border: 2px solid var(--lv-fg);
    border-radius: 8px;
    font-family: Arial, sans-serif;
    font-size: 16px;
    font-weight: bold;
    line-height: 1.2;
    letter-spacing: normal;
    text-decoration: none;
    text-transform: none;
    white-space: nowrap;
    cursor: pointer;
}

.lv-panel .lv-btn[hidden] {
    display: none;
}

.lv-panel .lv-btn:hover {
    text-decoration: underline;
}

/* Второстепенные кнопки — без рамки, с подчёркиванием */
.lv-panel .lv-btn--quiet {
    border-color: transparent;
    text-decoration: underline;
}

.lv-panel .lv-btn--quiet:hover {
    border-color: var(--lv-fg);
}

/* Выбранный вариант — инвертированные цвета и галочка */
.lv-panel .lv-btn[aria-pressed="true"] {
    position: relative;
    z-index: 1;
    background: var(--lv-fg);
    color: var(--lv-bg);
}

.lv-panel .lv-btn[aria-pressed="true"]::after {
    content: "✓";
}

/* Стрелка у раскрывающихся кнопок */
.lv-chevron {
    display: inline-block;
    width: 9px;
    height: 9px;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: translateY(-2px) rotate(45deg);
}

[aria-expanded="true"] > .lv-chevron {
    transform: translateY(2px) rotate(-135deg);
}

.lv-panel .lv-btn:focus-visible {
    outline: 3px solid var(--lv-fg) !important;
    outline-offset: 3px !important;
    box-shadow: 0 0 0 7px var(--lv-bg) !important;
    z-index: 2;
}

/* Образцы цветовых схем всегда показаны своими цветами */
.lv-panel .lv-swatch { width: 48px; padding: 0; font-family: Arial, sans-serif; font-size: 18px; }
.lv-panel .lv-swatch--bw,    .lv-panel .lv-swatch--bw[aria-pressed="true"]    { background: #ffffff; color: #000000; border-color: #000000; }
.lv-panel .lv-swatch--wb,    .lv-panel .lv-swatch--wb[aria-pressed="true"]    { background: #000000; color: #ffffff; border-color: #ffffff; outline: 1px solid #000000; }
.lv-panel .lv-swatch--blue,  .lv-panel .lv-swatch--blue[aria-pressed="true"]  { background: #9dd1ff; color: #063462; border-color: #063462; }
.lv-panel .lv-swatch--beige, .lv-panel .lv-swatch--beige[aria-pressed="true"] { background: #f7f3d6; color: #4d4b43; border-color: #4d4b43; }
.lv-panel .lv-swatch--green, .lv-panel .lv-swatch--green[aria-pressed="true"] { background: #3b2716; color: #a9e44d; border-color: #a9e44d; outline: 1px solid #000000; }
.lv-panel .lv-swatch[aria-pressed="true"] {
    width: auto;
    padding: 0 10px;
    box-shadow: 0 0 0 3px var(--lv-bg), 0 0 0 6px var(--lv-fg);
}

.lv-panel .lv-font-sample--serif { font-family: "Times New Roman", Times, serif; font-size: 17px; }

.lv-speech-hint {
    margin: 12px 0 0;
    font-size: 16px;
    font-style: italic;
}

.lv-speech-hint[hidden] {
    display: none;
}

/* Свёрнутая панель — одна строка */
.lv-panel--collapsed .lv-panel__bar {
    padding: 6px 0;
}

/* На телефонах переключатели переносятся, кнопки растягиваются */
@media (max-width: 600px) {
    .lv-group__buttons--segmented {
        flex-wrap: wrap;
    }

    .lv-panel .lv-group__buttons--segmented .lv-btn,
    .lv-panel .lv-group__buttons--segmented .lv-btn:first-child,
    .lv-panel .lv-group__buttons--segmented .lv-btn:last-child {
        border-radius: 8px;
        margin: 0 6px 6px 0;
    }

    .lv-group--more {
        margin-left: 0;
    }

    .lv-panel .lv-btn {
        white-space: normal;
    }
}

/* ---------- Режим для слабовидящих: цвета ---------- */

html.lv,
html.lv body,
html.lv body *:not(.lv-panel):not(.lv-panel *) {
    background-color: var(--lv-bg) !important;
    background-image: none !important;
    color: var(--lv-fg) !important;
    border-color: var(--lv-fg) !important;
    box-shadow: none !important;
    text-shadow: none !important;
}

html.lv body a:not(.lv-panel *) {
    text-decoration: underline !important;
}

html.lv body svg:not(.lv-panel *),
html.lv body svg *:not(.lv-panel *) {
    fill: currentColor !important;
    background: transparent !important;
}

html.lv body *:not(.lv-panel *):focus-visible {
    outline: 3px solid var(--lv-fg) !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 6px var(--lv-bg) !important;
}

/* ---------- Режим для слабовидящих: текст ---------- */

html.lv body,
html.lv body *:not(.lv-panel):not(.lv-panel *) {
    font-size: var(--lv-fs) !important;
    line-height: var(--lv-lh) !important;
    letter-spacing: var(--lv-ls) !important;
}

/* Шрифт меняем у текста, но не у значков (Font Awesome) */
html.lv body *:not(.lv-panel):not(.lv-panel *):not(.fa):not([class^="fa-"]):not([class*=" fa-"]) {
    font-family: var(--lv-ff) !important;
}

/* Заголовки крупнее текста. Учитываем и настоящий уровень из aria-level */
html.lv body h1:not(.lv-panel *),
html.lv body [aria-level="1"]:not(.lv-panel *) { font-size: calc(var(--lv-fs) * 1.75) !important; line-height: 1.3 !important; }
html.lv body h2:not(.lv-panel *),
html.lv body [aria-level="2"]:not(.lv-panel *) { font-size: calc(var(--lv-fs) * 1.45) !important; line-height: 1.3 !important; }
html.lv body h3:not(.lv-panel *),
html.lv body [aria-level="3"]:not(.lv-panel *) { font-size: calc(var(--lv-fs) * 1.25) !important; line-height: 1.35 !important; }
html.lv body h4:not(.lv-panel *),
html.lv body h5:not(.lv-panel *):not([aria-level]),
html.lv body h6:not(.lv-panel *):not([aria-level]) { font-size: calc(var(--lv-fs) * 1.1) !important; }

/* Заголовки и ссылки внутри заголовков — того же размера, что и сам заголовок */
html.lv body h1 *, html.lv body h2 *, html.lv body h3 *, html.lv body h4 *, html.lv body h5 *, html.lv body h6 * {
    font-size: inherit !important;
    line-height: inherit !important;
}

/* ---------- Режим для слабовидящих: изображения ---------- */

html.lv-img-gray body img:not(.lv-panel *),
html.lv-img-gray body video:not(.lv-panel *),
html.lv-img-gray body iframe:not(.lv-panel *) {
    filter: grayscale(100%) !important;
}

html.lv-img-off body img:not(.lv-panel *) {
    display: none !important;
}

.lv-img-alt {
    display: none;
}

html.lv-img-off .lv-img-alt {
    display: inline-block !important;
    margin: 4px 0;
    padding: 4px 8px;
    border: 2px dashed var(--lv-fg) !important;
}

/* ---------- Режим для слабовидящих: упрощение страницы ---------- */

/* Фоновое видео и затемнение над ним убираем — движение мешает читать */
html.lv .section.videoheader {
    display: none !important;
}

/* Шапка не закрепляется при прокрутке, чтобы не закрывать крупный текст */
html.lv header.header,
html.lv header.header.fixed-top {
    position: static !important;
}

/* Убираем анимации */
html.lv *,
html.lv *::before,
html.lv *::after {
    animation-duration: 0.001s !important;
    animation-iteration-count: 1 !important;
    transition: none !important;
}

/* Крупный текст не должен обрезаться фиксированной высотой блоков */
html.lv body *:not(.lv-panel *):not(img):not(video):not(iframe):not(svg):not(svg *):not(.slick-track):not(.slick-list) {
    max-height: none !important;
}


/* Без изображений рамки картинок с фиксированной высотой не должны оставлять пустоту */
html.lv-img-off .card-img,
html.lv-img-off .card-img-top,
html.lv-img-off :is(div, a, figure, span):has(> img:only-child) {
    height: auto !important;
    min-height: 0 !important;
    padding-top: 0 !important;
}

/* Блоки с фиксированной высотой растут вместе с крупным текстом, а не обрезают его */
html.lv .btn-home,
html.lv .btn-home-in,
html.lv .card,
html.lv .card-body,
html.lv .media,
html.lv .slick-slide,
html.lv .slick-slide > div,
html.lv .newservice-service,
html.lv .newservice-service-center,
html.lv .newservice-service .col-md-4,
html.lv .footer-bottom,
html.lv select.form-control,
html.lv input.form-control {
    height: auto !important;
    min-height: 0 !important;
}

html.lv .btn-home-in {
    min-height: 70px !important;
    padding-top: 10px !important;
    padding-bottom: 10px !important;
}

/* Плашки и карточки в слайдерах выравниваем по высоте самой высокой */
html.lv .slick-track {
    display: flex !important;
}

html.lv .slick-track .slick-slide {
    float: none !important;
}

html.lv .footer-bottom .float-left,
html.lv .footer-bottom .float-right {
    float: none !important;
}

/* Длинные слова переносятся, а не вылезают за край узких блоков.
   Сплошные заглавные буквы читаются хуже — показываем текст как он написан */
html.lv body *:not(.lv-panel):not(.lv-panel *) {
    overflow-wrap: anywhere;
    -webkit-hyphens: auto;
    hyphens: auto;
    text-transform: none !important;
}
