/* ARVIS SHELL — единая оболочка (ТЗ-2.1, 23.09.2026). Работает только там, где подключён /includes/arvis_shell.inc.php
   (признак — класс body.sh-ready, его ставит arvis-shell.js после переноса кнопки «Меню» в шапку). Токены главной: фон #FAF8F7, текст #171412, подписи #59514C, бордовый #990400, Onest.
   Части: 1 шапка шаблона; 2 кнопка «Меню»; 3 выдвижное меню; 4 нижняя панель; 5 reduced motion. */

/* ===== 1. Шапка шаблона: одна строка на desktop, «Меню» вместо бургера и «Ещё» =====
   Всё в этом разделе действует только после того, как скрипт поставил кнопку «Меню» в шапку (body.sh-ready):
   без JS остаётся штатная шапка шаблона с бургером. */
body.sh-ready .vc-header__burger{display:none!important}
@media (min-width:1280px){
  /* верхняя строка шаблона (адрес, телефон, чат, версия для слабовидящих, поиск, кабинет) остаётся на всех страницах;
     в ряду шапки — корень меню, поэтому кнопка «Меню» на desktop не нужна */
  body.sh-ready .vc-header__icons-wrapper .sh-menubtn{display:none!important}
  /* «Акции» и «Ещё» (если остались в меню шаблона) — внутри уровней меню */
  body.sh-ready .vc-header__menu .sh-hide-desk{display:none!important}
  /* старые выпадающие списки «Направлений», «Пациентам», «О клинике» не раскрываются: пункт открывает уровень меню */
  body.sh-ready .sh-level-item>.vc-menu__item-list,body.sh-ready .sh-level-item .vc-menu__item-list{display:none!important}
  body.sh-ready .sh-level-trigger{cursor:pointer}
}
@media (max-width:900px){
  /* телефон: шапка уходит вверх при прокрутке, закреплена только нижняя панель */
  /* relative, не static: шапка прокручивается вместе со страницей и остаётся опорой для абсолютного ряда иконок шаблона (иначе «Меню» уезжает в середину страницы) */
  body.sh-ready .vc-header{position:relative!important;top:auto!important;transform:none!important}
  body.sh-ready{padding-bottom:var(--sh-mbar,76px)!important}
  body.sh-ready .apv-top,body.sh-ready .apv-up,body.sh-ready [class*="scroll-top"]{display:none!important}
}

/* ===== 2. Кнопка «Меню» (серверная разметка, скриптом переносится в ряд шапки) ===== */
.sh-menubtn{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border-radius:12px;border:1px solid #ded5ce;background:#fff;color:#171412;font:500 15px/1 Onest,Arial,sans-serif;white-space:nowrap;text-decoration:none;transition:border-color .16s ease,background-color .16s ease}
.sh-menubtn:hover{border-color:#b98e7e;color:#171412}
.sh-menubtn:not(.sh-menubtn--placed){position:absolute;left:-9999px}
.sh-menubtn__i{display:inline-flex;flex-direction:column;gap:3px;width:16px}
.sh-menubtn__i i{display:block;height:2px;border-radius:2px;background:currentColor}
.sh-menubtn[aria-expanded="true"]{background:#171412;color:#fff;border-color:#171412}
.sh-menubtn:focus-visible,.sh-nav :is(a,button):focus-visible{outline:3px solid #990400;outline-offset:3px}
body.sh-ready .vc-header__icons-wrapper{gap:10px}
@media (max-width:900px){ body.sh-ready .vc-header__icons-wrapper .sh-menubtn{margin-left:auto} }

/* ===== 3. Выдвижное меню (один компонент для телефона и desktop) ===== */
.sh-nav{position:fixed;inset:0;z-index:10050;background:rgba(23,20,18,.42);font:400 16px/1.5 Onest,Arial,sans-serif;color:#171412}
.sh-nav[hidden]{display:none}
#apv-nav.sh-nav:target{display:block!important}
.sh-nav *,.sh-nav *::before,.sh-nav *::after{box-sizing:border-box}
.sh-nav ul{list-style:none;margin:0;padding:0}
.sh-nav li::before{display:none}
.sh-nav a{text-decoration:none}
.sh-nav__panel{position:absolute;top:0;right:0;bottom:0;width:100%;background:#fff;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:0 20px calc(24px + env(safe-area-inset-bottom,0px));outline:none}
.sh-nav__bar{position:sticky;top:0;z-index:2;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;min-height:64px;background:#fff;border-bottom:1px solid #ded5ce;margin:0 -20px 8px;padding:0 20px}
.sh-nav__title{grid-column:2;font-size:18px;font-weight:600;color:#171412}
.sh-nav__back{grid-column:1;justify-self:start;display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 4px;border:0;background:none;color:#990400;font:500 16px/1 Onest,Arial,sans-serif;cursor:pointer}
.sh-nav__back[hidden]{display:none}
.sh-nav__close{grid-column:3;justify-self:end;width:44px;height:44px;border:0;border-radius:12px;background:#f3eee9;color:#171412;font-size:26px;line-height:1;cursor:pointer}
.sh-nav__list li+li{border-top:1px solid #ede6e0}
.sh-nav__item{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:56px;padding:14px 2px;border:0;background:none;text-align:left;color:#171412;font:500 18px/1.3 Onest,Arial,sans-serif;cursor:pointer}
.sh-nav__item:hover{color:#990400}
.sh-nav__item[aria-current="page"]{color:#990400}
.sh-nav__item--more span{color:#990400;font-size:22px}
.sh-nav__item--all{color:#990400}
.sh-nav__group{margin:22px 0 2px;color:#59514c;font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}
.sh-nav__aux{margin-top:24px;padding-top:12px;border-top:1px solid #ded5ce}
.sh-nav__aux a,.sh-nav__auxbtn{display:flex;align-items:center;gap:8px;width:100%;min-height:44px;padding:0;border:0;background:none;color:#59514c;font:400 15px/1.3 Onest,Arial,sans-serif;text-align:left;cursor:pointer}
.sh-nav__aux a:hover,.sh-nav__auxbtn:hover{color:#171412}
.sh-nav__auxbtn[hidden]{display:none}
.sh-nav__level[hidden]{display:none}
.sh-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
body.sh-nav-open{position:fixed;left:0;right:0;overflow:hidden;width:100%}
body.sh-nav-open .apv-mbar{display:none!important}
@media (min-width:761px){ .sh-nav__panel{max-width:440px;box-shadow:-8px 0 32px rgba(23,20,18,.18)} }

/* ===== 4. Нижняя панель шаблона: полные подписи 11 px ===== */
@media (max-width:900px){ body.sh-ready .apv-mbar__i{font-size:11px;letter-spacing:-.01em} }

/* ===== 5. Меньше движения ===== */
@media (prefers-reduced-motion:reduce){ .sh-nav *,.sh-menubtn{transition:none!important;animation:none!important;scroll-behavior:auto!important} }

/* _____ 6. Версия для слабовидящих (панель шаблона .vc-impaired, класс body vc-body--fs*) — 24.09 _____ */
/* desktop: шапка поверх контента, панель добавляет 72 px — сдвигаем контент, чтобы не перекрывались «хлебные крошки» */
@media (min-width:901px){ body.sh-ready[class*="vc-body--fs"]{padding-top:72px} }
/* телефон: панель — отдельной строкой над логотипом, кнопка «Меню» — по центру строки логотипа */
@media (max-width:900px){
  body.sh-ready[class*="vc-body--fs"] header.vc-header{flex-wrap:wrap;align-items:stretch}
  body.sh-ready[class*="vc-body--fs"] header.vc-header>.vc-impaired{flex:0 0 100%;max-width:100%}
  body.sh-ready[class*="vc-body--fs"] header.vc-header>.vc-header__main{flex:0 0 100%}
  body.sh-ready[class*="vc-body--fs"] header.vc-header>.vc-header__icons-wrapper{top:auto!important;bottom:17px;transform:none!important}
}
/* шаблон задаёт всем элементам один кегль — вложенные в заголовок фрагменты наследуют кегль заголовка */
body[class*="vc-body--fs"] :is(h1,h2,h3,h4) *{font-size:inherit!important}

/* _____ 7. Планшет и небольшой ноутбук (901–1279 px) — 24.09 _____ */
/* в этом диапазоне шаблон VIT показывает в шапке содержимое своего мобильного меню (две кнопки записи, крупный телефон, соцсети,
   вертикальный список пунктов) — навигацию здесь даёт кнопка «Меню», поэтому ряд шапки: логотип · Меню · Запись на приём */
@media (min-width:901px) and (max-width:1279px){
  body.sh-ready .vc-header__mob-btns,
  body.sh-ready .vc-header__mob-socials,
  body.sh-ready .vc-header__main-wrapper>.vc-header__menu{display:none!important}
  body.sh-ready .vc-header__main-wrapper{height:auto!important;flex-wrap:nowrap!important;align-items:center!important}
}
/* 1201–1279 px: шаблон прячет значки «Версия для слабовидящих» и поиск, а также кнопку записи (правило для 901–1200 сюда не доходит) — возвращаем как в 901–1200 */
@media (min-width:1201px) and (max-width:1279px){
  body.sh-ready .vc-header__record{display:flex!important}
  body.sh-ready .vc-header__icons{display:flex!important;gap:6px!important}
  body.sh-ready .vc-header__icons-wrapper{display:flex!important;align-items:center!important;gap:12px!important}
  body.sh-ready .vc-header__record .vc-btn,body.sh-ready .vc-header__record a{min-height:46px!important;padding:0 20px!important;font-size:16px!important;white-space:nowrap!important}
}

/* _____ 8. Контраст (дизайн-аудит 24.09) _____ */
/* «Оставить отзыв» в шапке врача: белый текст на светлой шапке (1,06:1) — бордовый текст и рамка */
body .vc-page-head .vc-btn.vc-btn--transparent:not(#zz){color:#990400!important;background:transparent!important;border:1px solid rgba(153,4,0,.35)!important;box-shadow:none!important}
body .vc-page-head .vc-btn.vc-btn--transparent:not(#zz):hover{background:rgba(153,4,0,.06)!important;border-color:#990400!important}
body .vc-page-head .vc-btn.vc-btn--transparent:not(#zz) *{color:inherit!important}
body .vc-page-head .vc-btn.vc-btn--transparent:not(#zz){padding-left:24px!important;padding-right:24px!important}
/* выбранный фильтр /doctors/: тёмный текст на бордовом (2,12:1) — белый (8,85:1) */
body .apv-chip.apv-chip--on:not(#zz),body .apv-chip[aria-pressed="true"]:not(#zz){color:#fff!important}
body .apv-chip.apv-chip--on:not(#zz) em,body .apv-chip[aria-pressed="true"]:not(#zz) em{color:rgba(255,255,255,.82)!important}

/* 9. Одна система (дизайн-аудит 24.09, решение Виктора «все правки применяем»):
   заголовки разделов без бордовой черты — как на главной; оглавление без розовой плашки и красной линии;
   скругления: 20 — карточки, блоки и карты, 16 — строки прайса. Кнопки уже 999. Откат — удалить раздел 9. */
body .vc-services-detail h2:not(#zz)::before,
body .vc-services-section .vc-visual-editor h2:not(#zz)::before,
body .apv-kids .vc-center>h2:not(#zz)::before,
body .apv-secdoc__title:not(#zz)::before,
body .apv-ab__title:not(#zz)::before,
body .apv-clinic__title:not(#zz)::before,
body h2.vc-doctors-detail__title:not(#zz)::before,
body h2.apv-compl__title:not(#zz)::before,
body h2.apv-docx__title:not(#zz)::before{content:none!important;display:none!important}
body .vc-services-detail h2:not(#zz),
body .vc-services-section .vc-visual-editor h2:not(#zz),
body .apv-kids .vc-center>h2:not(#zz),
body .apv-secdoc__title:not(#zz),
body .apv-ab__title:not(#zz),
body .apv-clinic__title:not(#zz),
body h2.vc-doctors-detail__title:not(#zz),
body h2.apv-compl__title:not(#zz),
body h2.apv-docx__title:not(#zz){padding-left:0!important}
body .apv-toc:not(#zz){background:#FAF8F7!important;border:0!important;border-radius:16px!important}
body .apv-toc .apv-toc__list a:not(#zz){border-bottom-color:#E8E1DD!important}
body .apv-toc .apv-toc__list li:not(#zz)::before{color:#6B625F!important}
/* верхняя строка шапки на внутренних страницах: «Позвонить» и «Чат 24/7» в одну строку, как на главной (там ссылки без обёртки) */
@media (min-width:901px){ body.apv-tworow .vc-header__actions>div:not([class]){display:flex!important;align-items:center;gap:18px} }
body .vc-price-list__item:not(#zz){border-radius:16px!important}
/* последние розовые подложки (карточка «Готовые программы», фон фото и плашка стажа в шапке врача) — тёплый нейтральный, как панели главной */
body .apv-prglink:not(#zz),body .vc-page-head__doctor-image:not(#zz),body .vc-page-head__doctor-progress-item:not(#zz){background-color:#F0EAE5!important}
body .apv-secdoc__card:not(#zz),body .apv-also:not(#zz),body .apv-rel__card:not(#zz),body .apv-cta__box:not(#zz),body .apv-ab__cta:not(#zz),
body .vc-branches__info-card:not(#zz),body .vc-branches-map:not(#zz),body .vc-branches-map__container:not(#zz),body .vc-heads__item:not(#zz),
body .apv-docx__price:not(#zz),body .apv-fact:not(#zz),body .apv-red:not(#zz),body .apv-docs__note:not(#zz){border-radius:20px!important}

/* 10. Зоны нажатия на телефоне и планшете — не меньше 44 px (дизайн-аудит 24.09, цены).
   Отступ + равный отрицательный margin: палец попадает шире, раскладка строки не меняется. */
@media (max-width:900px),(pointer:coarse){
  /* в шаблоне на ≤900 px ссылка — блок с отступом 3 px (!important): 22 + 11 + 11 = 44, минус 8 + 8 — место в строке прежнее (28) */
  body table.apv-price__table td a[href]:not(#zz){padding-top:11px!important;padding-bottom:11px!important;margin-top:-8px!important;margin-bottom:-8px!important}
  body details.apv-faqp__i>summary:not(#zz){padding-top:12px;padding-bottom:12px;margin-top:-12px;margin-bottom:-12px}
  body .apv-mini:not(#zz),body .apv-skip:not(#zz){min-height:44px}
}
/* пустая ссылка в строке «Приём гастроэнтеролога» прайса (рядом стоит ссылка с текстом) — убрать из фокуса и озвучки */
body table.apv-price__table td a[href]:empty:not(#zz){display:none!important}
