/* Общая часть: версия для слабовидящих, карта сайта и поиск (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{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__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}

/* ---------- Олимп: часть сайта (шапка, подвал, сетки, контраст) ---------- */
:root{--a11y-bg:#efecf8;--a11y-ink:#2b2740;--a11y-accent:#574a7e;--a11y-line:#dad8ee;--a11y-line-strong:#8a86a0;--a11y-field:#fff;--a11y-ring:#dad8ee;--a11y-max:1400px;--a11y-pad:40px}
@media (max-width:1100px){:root{--a11y-pad:24px}}
@media (max-width:560px){:root{--a11y-pad:14px}}
/* кнопка «Версия для слабовидящих» в подвале выглядит как соседние ссылки колонки документов */
.foot__lv{font:inherit;font-size:15px;color:rgba(255,255,255,.85);background:none;border:0;padding:0;cursor:pointer;text-align:inherit}
.foot__lv:hover{color:#fff;text-decoration:underline}
.a11y-page{max-width:900px}
.a11y-page .btn svg{width:20px;height:20px}
.sres li{list-style:none}

/* Шапка: не прилипает, разделы строкой (без бургера и выпадающих меню: всё есть на страницах разделов и на карте сайта) */
html.lv .hdr{position:static}
html.lv .hdr__in{flex-wrap:wrap;height:auto;padding-top:12px;padding-bottom:12px;gap:10px 20px}
html.lv .hdr__nav{display:flex !important;order:3;flex-wrap:wrap;width:100%;margin:0;gap:4px 18px}
html.lv .hdr__nav a{padding:6px 2px}
html.lv .hdr__nav a::after,html.lv .hdr__nav a.has-drop::before{display:none}
html.lv .hdr__menu{display:none !important}
html.lv .hdr__burger,html.lv .hdr__call{display:none !important}
html.lv .hdr__right{flex-wrap:wrap;margin-left:0;gap:10px 14px}
html.lv .hdr__soc{display:flex !important}
html.lv :is(.hdr__tel,.hdr__cta){display:inline-flex !important;align-items:center;min-height:48px;padding:6px 16px;border:2px solid var(--lv-fg) !important;border-radius:12px;white-space:normal}
html.lv .hdr__soc a{width:44px;height:44px;border:2px solid var(--lv-fg) !important}
html.lv .hdr__soc a svg{width:22px;height:22px}
body.nav-open .lvbar{display:none}
/* логотип светлый (под фиолетовую шапку): в двухцветной схеме перекрашиваем в цвет текста */
html.lv :is(.hdr__logo img,.foot__logo){filter:brightness(0) !important}
html.lv[data-lv-scheme="wb"] :is(.hdr__logo img,.foot__logo){filter:brightness(0) invert(1) !important}
html.lv[data-lv-img="off"] :is(.hdr__logo img,.foot__logo){display:block !important}

/* Декор, «живые» блоки и плавающие элементы */
html.lv :is(.deco,.cross,.top-heart,.tooth,.reviews__deco,.uslugi__ring,.uslugi__caret){display:none !important}
html.lv :is(.hero__card,.subhero__card,.uslugi__card)::before{display:none !important}
html.lv .reveal{opacity:1 !important;transform:none !important}
html.lv .fab{position:static !important;flex-direction:row;flex-wrap:wrap;justify-content:center;padding:16px;gap:12px}
html.lv .fab__opt{opacity:1 !important;transform:none !important;pointer-events:auto !important;border:2px solid var(--lv-fg) !important}
html.lv .fab__toggle{display:none !important}
/* Баннер cookie крупным шрифтом закрывал бы полэкрана: в конце страницы, не поверх. Пока не нажали «Принять», Метрика не грузится */
html.lv .cookie-banner{position:static !important;transform:none !important;opacity:1 !important;max-width:none !important;margin:0 !important;border-radius:0 !important;border-top:2px solid var(--lv-fg) !important}
html.lv .cookie-banner__btn{white-space:normal;border:2px solid var(--lv-fg) !important}
@media (max-width:620px){html.lv .cookie-banner__actions{flex-wrap:wrap}html.lv .cookie-banner__btn{flex:1 1 100%}}

/* Первый экран и подстраницы: из абсолютной раскладки в поток, как на телефоне */
html.lv .hero__card{min-height:0 !important;padding:30px 24px;display:flex;flex-direction:column;align-items:flex-start;gap:20px}
html.lv :is(.hero__plate,.hero__offer,.hero__addr,.hero__cta-row,.hero__online,.hero__media){position:static !important;left:auto;top:auto;right:auto;bottom:auto;width:auto;max-width:100%}
html.lv .hero__plate{white-space:normal}
html.lv .hero__media img{height:auto;max-height:420px}
html.lv .subhero__card{min-height:0}
html.lv .subhero__body{padding:28px 24px;max-width:none}
html.lv .uslugi__card{min-height:0;padding-bottom:0}
html.lv .uslugi__content{max-width:none}
html.lv .block__plate{width:auto;white-space:normal;justify-content:flex-start;text-align:left;border:2px solid var(--lv-fg) !important}
html.lv :is(.btn,.hero__cta,.subhero__cta,.uslugi__cta,.foot__cta,.price__tab,.booking button,.cbpop__btn){white-space:normal;height:auto;min-height:48px;border:2px solid var(--lv-fg) !important}

/* Сетки: крупный шрифт не помещается в 3-4 колонки */
html.lv :is(.tiles__grid,.foot__in){grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr)) !important}
html.lv .foot__docs{align-items:flex-start;text-align:left}
/* Таблицы цен на телефоне: услуга и цена друг под другом, цена не вылезает за край при 28 px с интервалом */
@media (max-width:620px){
  html.lv .price__table td{display:block;padding:10px 14px}
  html.lv .price__table td.price__val{text-align:left;white-space:normal;padding-top:0}
}
html.lv .foot__lv{text-decoration:underline;text-underline-offset:4px}

/* Изображения скрыты: фото врачей, услуг, акций, карта; текст о них остаётся */
html.lv[data-lv-img="off"] :is(.hero__media,.cat__photo,.doc__photo,.uslugi__doc,.contacts__map,.map){display:none !important}

/* ---------- обычная версия: контраст по WCAG 2.2 AA (axe-core 29.10.2026) и таблица цен на 320 px ----------
   Было: фиолетовый #7a64a9 на сиреневых строках и «пилюлях» 3,6:1, хлебные крошки #8a86a0 3,5:1, белый на бирюзовой плашке 2,3:1,
   подпись автора 3:1. Оттенки те же, на шаг темнее; на белом фоне цвет прежний */
.price__table td,.pills a:not(.is-active):not(:hover),.reqtable td:first-child{color:#5f4d93}
.crumbs,.crumbs a,.sec-sub{color:#6b6680}
.crumbs span{color:#4a4570}
.svc-author__label{color:#66617d}
.block__plate--teal{background:#2f8f90}
@media (max-width:400px){
  .price__table td{padding:11px 10px}
  .price__table td:first-child{overflow-wrap:anywhere;hyphens:auto}
}
