/* Общая часть: версия для слабовидящих, карта сайта и поиск (118н прил. 2 п. 2; практика ГОСТ Р 52872-2019), WEBCRAFT LAB 29.10.2026.
   Перенос образца ИТС (css/its-a11y.css) на медсайты парка. Файл css/a11y.css = эта часть + часть сайта (шапка, сетки, цвета полоски),
   собирает wcl/fleet/a11y_118n_20261029/build.py. Режим включает строчный скрипт в <head>: класс .lv и атрибуты на <html>
   (data-lv-fs 1-3, data-lv-scheme bw|wb|blue, data-lv-img on|off, data-lv-sp 1-2), кнопки в js/a11y.js.
   Цвета полоски задаёт часть сайта: --a11y-bg, --a11y-ink, --a11y-accent, --a11y-line, --a11y-field, --a11y-ring, --a11y-max, --a11y-pad. */

/* текст только для экранного диктора */
.vh{position:absolute !important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ---------- полоска над шапкой: версия для слабовидящих, карта сайта, поиск ---------- */
.tbar--lv{position:relative;z-index:1001;background:var(--a11y-bg);color:var(--a11y-ink);border-bottom:1px solid var(--a11y-line);font-size:13.5px;line-height:1.3}
.tbar--lv>.tbar__in{display:flex;align-items:center;gap:6px 22px;min-height:40px;max-width:var(--a11y-max);margin:0 auto;padding:0 var(--a11y-pad);box-sizing:border-box}
.tbar__lv{display:inline-flex;align-items:center;gap:8px;font:inherit;font-weight:700;color:var(--a11y-ink);background:none;border:0;padding:4px 0;min-height:40px;cursor:pointer}
.tbar__lv svg{width:20px;height:20px;color:var(--a11y-accent);flex:none}
.tbar__lv:hover{color:var(--a11y-accent)}
.tbar__map{margin-left:auto;color:var(--a11y-ink);font-weight:600;text-decoration:none}
.tbar__map:hover{color:var(--a11y-accent);text-decoration:underline}
.tsearch{display:flex;align-items:center;height:32px;margin:0;padding-left:14px;background:var(--a11y-field);border:1px solid var(--a11y-line);border-radius:999px;box-sizing:border-box}
.tsearch:focus-within{border-color:var(--a11y-accent);box-shadow:0 0 0 3px var(--a11y-ring)}
.tsearch input{width:180px;height:auto;margin:0;border:0;background:none;font:inherit;color:var(--a11y-ink);outline:none;padding:0;box-shadow:none}
.tsearch input::placeholder{color:var(--a11y-ink);opacity:.75}
.tsearch input::-webkit-search-cancel-button{-webkit-appearance:none}
.tsearch button{width:36px;height:30px;margin:0;border:0;background:none;color:var(--a11y-ink);display:grid;place-items:center;cursor:pointer;padding:0}
.tsearch button:hover{color:var(--a11y-accent)}
.tsearch svg{width:18px;height:18px}
@media (max-width:620px){
  .tbar__map{display:none}
  .tsearch{margin-left:auto;border:0;background:none;padding-left:0;height:40px}
  .tsearch input{display:none}          /* на телефоне значок ведёт на страницу поиска, там поле во всю ширину */
  .tsearch button{width:40px;height:40px}
  .tsearch svg{width:22px;height:22px}
}

/* ---------- страница поиска ---------- */
.sform label{display:block;font-weight:700;margin-bottom:8px}
.sform__row{display:flex;flex-wrap:wrap;gap:10px}
.sform input{flex:1 1 260px;min-width:0;min-height:50px;padding:10px 16px;border:1px solid var(--a11y-line-strong,#8a8a8a);border-radius:14px;background:#fff;font:inherit;font-size:17px;color:inherit;box-sizing:border-box}
.sform input:focus{outline:3px solid var(--a11y-ring);outline-offset:1px;border-color:var(--a11y-accent)}
.sform button{min-height:50px}
.sres__count{margin:24px 0 6px}
.sres{list-style:none;padding:0;margin:0}
.sres li{margin:0;padding:16px 0;border-bottom:1px solid var(--a11y-line)}
.sres li::before{content:none}
.sres a{font-weight:700;font-size:18px;text-decoration:underline;text-underline-offset:3px}
.sres p{margin:4px 0 0}
.sres .sres__p{font-size:14px;opacity:.85;margin:2px 0 0}
.sres mark{background:var(--a11y-ring);color:inherit;border-radius:3px;padding:0;box-shadow:0 0 0 2px var(--a11y-ring)}

/* ---------- карта сайта ---------- */
.smap{list-style:none;padding:0;margin:8px 0 24px}
.smap li::before{content:none}
.smap>li{margin:0 0 18px}
.smap>li>a,.smap>li>span{font-weight:700;font-size:18px}
.smap a{text-decoration:underline;text-underline-offset:3px}
.smap ul{list-style:none;margin:8px 0 0;padding:0 0 0 18px;border-left:2px solid var(--a11y-accent)}
.smap ul li{margin:0 0 6px}
.smap ul ul{margin-top:6px}
.smap__lv{margin-top:8px}

/* ---------- панель настроек (видна только в версии для слабовидящих) ---------- */
.lvbar{display:none}
html.lv .lvbar{display:block;border-top:2px solid}
html.lv .tbar__lv{display:none}
.lvbar__in{display:flex;flex-wrap:wrap;align-items:center;gap:10px 22px;max-width:var(--a11y-max);margin:0 auto;padding:10px var(--a11y-pad) 12px;box-sizing:border-box}
.lvbar__g{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px}
.lvbar__g>span{font-weight:700;margin-right:4px}
.lvbar button{min-width:44px;min-height:44px;padding:4px 12px;border:2px solid;border-radius:10px;font:inherit;font-weight:700;cursor:pointer;background:none}
html.lv .lvbar button[aria-pressed="true"]{outline:4px solid var(--lv-fg);outline-offset:2px;text-decoration:underline}
html.lv .lvbar .lvbar__a2{font-size:calc(var(--lv-fs) * 1.25) !important}
html.lv .lvbar .lvbar__a3{font-size:calc(var(--lv-fs) * 1.5) !important}
html.lv .lvbar .lvbar__c--bw{color:#000 !important;background-color:#fff !important;border-color:#000 !important}
html.lv .lvbar .lvbar__c--wb{color:#fff !important;background-color:#000 !important;border-color:#fff !important;box-shadow:0 0 0 2px #000 !important}
html.lv .lvbar .lvbar__c--blue{color:#063462 !important;background-color:#9dd1ff !important;border-color:#063462 !important}
.lvbar__off{display:inline-flex;align-items:center;gap:8px;margin-left:auto}
.lvbar__off svg{width:22px;height:22px}
@media (max-width:620px){html.lv .lvbar__off{margin-left:0;text-align:left}}

/* ---------- версия для слабовидящих ---------- */
html.lv{--lv-fs:20px;--lv-fg:#000;--lv-bg:#fff}
html.lv[data-lv-fs="2"]{--lv-fs:24px}
html.lv[data-lv-fs="3"]{--lv-fs:28px}
html.lv[data-lv-scheme="wb"]{--lv-fg:#fff;--lv-bg:#000}
html.lv[data-lv-scheme="blue"]{--lv-fg:#063462;--lv-bg:#9dd1ff}

/* Шрифт: один крупный кегль на весь текст, заголовки крупнее; длинные слова переносятся, а не вылезают за край */
html.lv body{font-size:var(--lv-fs);line-height:1.5}
html.lv body :is(p,li,a,span,td,th,label,input,textarea,select,button,small,figcaption,dd,dt,b,strong,em,i,summary,h4,h5,h6,blockquote,mark,div){font-size:var(--lv-fs) !important;line-height:1.5 !important}
html.lv body h1{font-size:calc(var(--lv-fs) * 1.6) !important;line-height:1.2 !important}
html.lv body h2{font-size:calc(var(--lv-fs) * 1.35) !important;line-height:1.25 !important}
html.lv body h3{font-size:calc(var(--lv-fs) * 1.15) !important;line-height:1.3 !important}
html.lv body :is(h1,h2,h3) *{font-size:inherit !important;line-height:inherit !important}
html.lv body :is(h1,h2,h3,h4,p,li,a,td,th,span,div,label,button,strong,b){overflow-wrap:break-word;hyphens:auto}
html.lv[data-lv-sp="2"] body *{letter-spacing:.08em !important;word-spacing:.16em !important}

/* Цвета: три схемы по ГОСТ Р 52872-2019, всё в два цвета; фото остаются как есть */
html.lv,html.lv body{background:var(--lv-bg) !important;color:var(--lv-fg) !important}
html.lv body *:not(svg):not(svg *):not(img):not(canvas):not(video):not(iframe){color:var(--lv-fg) !important;background-color:var(--lv-bg) !important;background-image:none !important;border-color:var(--lv-fg) !important;box-shadow:none !important;text-shadow:none !important;-webkit-text-fill-color:currentColor !important;filter:none !important;backdrop-filter:none !important}
html.lv body *::before,html.lv body *::after{background-image:none !important;box-shadow:none !important;text-shadow:none !important;border-color:var(--lv-fg) !important}
html.lv body svg{color:var(--lv-fg)}
/* полупрозрачный текст прямо в разметке (style="opacity:.6" у пометки «(стац.)») в двухцветной схеме теряет контраст */
html.lv body [style*="opacity"]:not(img){opacity:1 !important}
html.lv body a{text-decoration:underline !important;text-underline-offset:4px}
html.lv body :is(input,textarea,select){border:2px solid var(--lv-fg) !important}
html.lv .tsearch{border:2px solid var(--lv-fg) !important;height:auto;min-height:44px}
html.lv .tsearch input{border:0 !important;width:min(240px,32vw)}
/* кнопка-лупа внутри круглого поля: без своего фона, иначе закрашивает правый край рамки */
html.lv .tbar .tsearch button{background-color:transparent !important;border-radius:999px}
html.lv body ::placeholder{color:var(--lv-fg) !important;opacity:.75}
html.lv :focus-visible{outline:4px solid var(--lv-fg) !important;outline-offset:3px !important}
html.lv body :is(input[type="checkbox"],input[type="radio"]){accent-color:var(--lv-fg)}

/* Без движения: анимации, переходы, бегущие строки, параллакс */
html.lv *,html.lv *::before,html.lv *::after{animation:none !important;transition:none !important}
html.lv{scroll-behavior:auto !important}

/* Таблицы с длинным текстом: не шире экрана */
html.lv body table{max-width:100%}
html.lv body :is(td,th){overflow-wrap:anywhere}
@media (max-width:620px){
  html.lv body :is(a,span,b,strong,button,p,li,h1,h2,h3,h4,td,th,label,figcaption,div,dd,dt){overflow-wrap:anywhere}
}

/* Изображения скрыты: фото, видео, карты; текст о них остаётся. Часть сайта добавляет свои блоки с картинками */
html.lv[data-lv-img="off"] :is(img,picture,video,canvas,iframe){display:none !important}
html.lv[data-lv-img="off"] a[data-lv-imgonly]{display:none !important}

/* ---------- КОД МОЛОДОСТИ: часть сайта (полоска, шапка, сетки, плавающие кнопки, прайс, контраст), 29.10.2026 ----------
   У сайта уже есть своя верхняя полоса .tbar (часы, адрес, маршрут, мессенджеры). Полоска 118н стоит над ней и носит
   классы «tbar tbar--lv»: общие правила полоски в css/a11y.css при сборке привязаны к .tbar--lv (KODMOLODOSTI/site.py),
   чтобы не перекрасить полосу сайта, а правила сайта для .tbar__in ниже сняты с полоски 118н. */
:root{--a11y-bg:#eef4f1;--a11y-ink:#1c1f1d;--a11y-accent:#00543c;--a11y-line:#d7e3dd;--a11y-line-strong:#8a958f;--a11y-field:#fff;--a11y-ring:#cfe3d9;--a11y-max:1180px;--a11y-pad:24px}
.tbar--lv>.tbar__in{flex-wrap:nowrap;justify-content:flex-start}
/* полоска здесь не липкая: z-index 1001 из общей части поднимал её над затемнением окна акции (.pmod 200) */
.tbar.tbar--lv{z-index:55}
/* правило сайта «.tbar a{display:inline-block}» (до 700 px) сильнее общего «.tbar__map{display:none}» (до 620 px) */
@media (max-width:620px){.tbar--lv .tbar__map{display:none}}

/* кнопка «Версия для слабовидящих» в подвале выглядит как соседние ссылки */
.foot__lv{font:inherit;color:var(--ink-soft);background:none;border:0;padding:0;margin:0;cursor:pointer;text-align:left;
  text-decoration:underline;text-underline-offset:2px}
.foot__lv:hover{color:var(--accent)}
.a11y-page .btn{display:inline-flex;align-items:center;justify-content:center;gap:10px}
.a11y-page .btn svg{width:18px;height:18px;flex:none}
.legal .smap,.legal .sres{padding-left:0}
.legal .smap ul{padding-left:18px}
.legal .sres li{margin:0}
.sform input{border-radius:0;font-family:inherit}
.sform button{min-height:50px}
.smap__lv .btn{margin-left:6px;vertical-align:middle}

/* ---------- обычная версия: WCAG 2.2 AA (axe-core 29.10.2026) ----------
   Контраст, было → стало (тот же оттенок на шаг темнее):
   нижняя строка подвала #8a918c на #f6f8f6 3,0:1 → #6b726e 4,6:1;
   номера направлений «01-06» #b8c2bb на белом 1,8:1 → #66716a 5,1:1 (и 4,6:1 на подсветке при наведении);
   «Важно» в условии акции #e2465f на белом 4,0:1 → #c9304d 5,2:1;
   белая метка акции в окне записи и в «Предложении месяца» на #e2465f 4,0:1 → на #c9304d 5,2:1.
   Размер цели (2.5.8): ссылки подвала стояли строками по 22 px вплотную, теперь каждая не ниже 24 px. */
.foot__bot{color:#6b726e}
.dir__n{color:#66716a}
.promo__warn b{color:#c9304d}
.pmod__tag,.pmonth__tag{background:#c9304d}
.foot__cols p a,.foot__cols .foot__lv,.foot__bot a,.foot__bot .foot__lv{display:inline-block;min-height:24px}

/* ================= версия для слабовидящих ================= */
html.lv body *::before,html.lv body *::after{color:inherit !important}
html.lv body svg{color:var(--lv-fg) !important}   /* значок телефона в полосе красился изумрудным правилом сайта */
html.lv :is(section[id],h2[id]){scroll-margin-top:16px !important}
html.lv .tbar--lv>.tbar__in{flex-wrap:wrap}

/* Верхняя полоса сайта: часы и адрес видны на любой ширине, строка переносится, а не режется многоточием */
html.lv .tbar:not(.tbar--lv) .tbar__in{flex-wrap:wrap !important;justify-content:flex-start !important;gap:8px 24px;padding-top:10px;padding-bottom:10px}
html.lv :is(.tbar__hours,.tbar__addr){display:inline !important;margin-left:0 !important;white-space:normal !important;overflow:visible !important;text-overflow:clip !important}
html.lv .tbar__route-l{display:inline !important}
html.lv .tbar__tel .ico-tel{display:inline-block !important;width:24px;height:24px}
html.lv .tbar__msgs{flex-wrap:wrap;gap:10px}
html.lv .msg{width:48px;height:48px;border:2px solid var(--lv-fg) !important}
html.lv .msg svg{width:26px;height:26px;fill:currentColor !important}

/* Шапка: не прилипает, разделы строкой без бургера (все есть и на карте сайта) */
html.lv .top{position:static !important}
html.lv .top__in,html.lv .top--fixed .top__in{flex-wrap:wrap !important;min-height:0 !important;padding-top:14px !important;padding-bottom:14px !important;gap:12px 24px !important}
html.lv .nav,html.lv .top--fixed .nav{position:static !important;display:flex !important;flex-direction:row !important;flex-wrap:wrap;order:3;width:100%;
  margin:0 !important;padding:0 !important;gap:4px 24px !important;opacity:1 !important;visibility:visible !important;transform:none !important;border:0 !important}
html.lv .nav a{padding:6px 2px !important;border-bottom:0 !important}
html.lv .nav a.nav__hot::after{display:none !important}
html.lv .nav__btn{display:none !important}
html.lv .btn--sm{margin-left:auto;order:2}
/* логотип тёмный на прозрачном: на чёрном фоне выворачиваем в белый; при «скрыть изображения» остаётся */
html.lv .logo img{filter:none !important}
html.lv[data-lv-scheme="wb"] .logo img{filter:invert(1) !important}
@media (max-width:960px){html.lv .top .logo img{height:64px !important;width:auto !important}}   /* на телефоне сайт ужимает логотип до 40 px */
html.lv[data-lv-img="off"] .logo img{display:block !important}

/* Плавающие кнопки и окна: та же «Онлайн-запись» и телефон есть в шапке, круглая кнопка и нижняя панель крупным
   шрифтом закрывали бы текст. Окно «Подберём процедуру» (callback-popup.js) в этой версии не всплывает. */
html.lv :is(.zap,.callbar,.wcb){display:none !important}
html.lv body{padding-bottom:0 !important}
/* Баннер cookie в конце страницы, а не поверх текста. Пока не нажали «Принять», Метрика не грузится */
html.lv .cookie{position:static !important;border-top:2px solid var(--lv-fg) !important}
html.lv .cookie__in{padding:20px 24px}
html.lv .cookie__btns{flex-wrap:wrap !important;width:100%}
html.lv .cookie .btn{flex:1 1 auto}
/* Окно «Записаться по акции»: во всю ширину, листается целиком */
html.lv .pmod{align-items:flex-start !important;overflow:auto;padding:16px !important}
html.lv .pmod__box{max-width:760px;max-height:none !important;margin:auto;border:2px solid var(--lv-fg) !important;border-radius:12px !important}
html.lv .pmod__x{width:48px;height:48px;border:2px solid var(--lv-fg) !important}
html.lv .pmod__tag{max-width:calc(100% - 60px)}

/* Кнопки и метки: перенос строк, рамка */
html.lv :is(.btn,.btn--call,.btn--sm,.cookie .btn){display:inline-flex;align-items:center;justify-content:center;gap:10px;white-space:normal !important;
  height:auto;min-height:48px;text-align:center;line-height:1.3 !important;border:2px solid var(--lv-fg) !important}
html.lv :is(.tbar__tel,.tbar__route,.ba__i span,.t td,.t th,.pmod__or span,.nf__lead a,.pban__go,.proc__new,.pmonth__price b){white-space:normal !important}
html.lv :is(.proc__new,.pmod__tag,.pmonth__tag,.pban__tag,.promo__warn){border:2px solid var(--lv-fg) !important}
html.lv .eyebrow::before{display:none !important}
html.lv .pmod__or::before,html.lv .pmod__or::after{background:var(--lv-fg) !important}
html.lv :is(.pmod__tag,.pmonth__tag,.pban__tag){border-radius:10px !important}
/* карточка-ссылка целиком: подчёркнут только заголовок, а не каждый абзац внутри */
html.lv body :is(a.dir,.nf__grid a,a.rev-badge){text-decoration:none !important}
html.lv body :is(a.dir h3,.nf__grid a b){text-decoration:underline !important;text-underline-offset:4px}
/* найденное слово в выдаче поиска: в двухцветной схеме подложки нет, выделяем жирным с подчёркиванием */
html.lv .sres mark{font-weight:700 !important;text-decoration:underline !important;text-decoration-thickness:3px !important}

/* Первый экран и шапки услуг: одна колонка, сначала заголовок и текст, потом фото */
html.lv :is(.hero__in,.page__head-in,.book){grid-template-columns:minmax(0,1fr) !important;gap:28px !important}
html.lv :is(.hero__media,.hero__photo){order:2 !important;margin:0 !important}
html.lv .hero__in{padding-top:32px !important}   /* на телефоне сайт ставит фото вплотную к шапке, здесь сверху текст */
html.lv :is(.hero__photo img,.page__photo img){height:auto !important;max-height:380px}
/* баннер «Первый визит» на главной в двух копиях (в колонке текста для ПК и под фото для телефона): здесь одна колонка,
   оставляем копию у кнопок записи, вторую прячем */
html.lv .pban--side{display:flex !important}
html.lv .pban--top{display:none !important}
html.lv .pban{flex-direction:column;align-items:flex-start;gap:8px;width:100%;max-width:none !important;margin:28px 0 0 !important;border:2px solid var(--lv-fg) !important;border-radius:12px !important}
html.lv .pban>*{align-self:flex-start !important}
html.lv .pban .pban__big{font-size:calc(var(--lv-fs) * 1.6) !important;line-height:1.1 !important}
html.lv .pban::after{display:none !important}
html.lv .pban__go{border:2px solid var(--lv-fg) !important;margin:6px 0 0 !important}
html.lv .hero__facts{flex-wrap:wrap}

/* Сцена «Что мы делаем» (WCL Scroll Progress): без полёта, карточки сразу стоят сеткой (scroll-progress.js при .lv
   ставит конечное состояние, здесь то же на случай, если скрипт не загрузился) */
html.lv [data-scroll-progress]{overflow:visible !important}
html.lv .sp-card{transform:none !important;opacity:1 !important;filter:none !important;will-change:auto !important}
html.lv .dirs,html.lv .dirs[data-sp-scatter]{gap:16px !important;border:0 !important}
html.lv .dir{border:2px solid var(--lv-fg) !important;min-height:0}

/* Сетки: крупный шрифт не помещается в 3-4 колонки */
html.lv :is(.dirs,.trust,.contacts__grid,.foot__cols,.gal,.steps,.team,.ba,.revs,.mpromo__grid,.shots,.shots--6,.promo__grid,.proc,.nf__grid,.slots){
  grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr)) !important;gap:16px !important}
html.lv :is(.promo__grid,.nf__grid){border:0 !important}
html.lv :is(.promo__i,.nf__grid a,.proc a){border:2px solid var(--lv-fg) !important}
html.lv .pmonth,html.lv .pmonth__r{flex-wrap:wrap}

/* Прайс: на планшете и телефоне строка таблицы раскладывается столбиком (услуга, под ней цены с подписью колонки) */
html.lv .t{min-width:0 !important}
html.lv .t th{hyphens:manual !important;overflow-wrap:normal !important}
@media (min-width:961px){html.lv .t td:not(:first-child){white-space:nowrap !important}}
@media (max-width:960px){
  html.lv .t thead{display:none}
  html.lv :is(.t,.t tbody){display:block !important}
  html.lv .t tr{display:block !important;border-top:2px solid var(--lv-fg)}
  html.lv .t td{display:block !important;text-align:left !important;padding:8px 14px !important;border:0 !important}
  html.lv .t td:not(:first-child){white-space:nowrap !important}   /* «18 275 ₽» не рвётся на «18» и «275 ₽» */
  html.lv .t td[data-l]::before{content:attr(data-l) !important;display:block !important;white-space:normal !important;font-weight:400;
    font-size:var(--lv-fs) !important;text-transform:none !important;letter-spacing:inherit !important;margin:0 !important}
}

/* Изображения скрыты: фото первого экрана, кадры процедур, интерьер, акции картинками; подписи остаются */
html.lv[data-lv-img="off"] :is(.hero__photo,.page__photo,.mpromo__img,.shots,.gal){display:none !important}
html.lv .map-stub__pin{stroke:currentColor !important}
