/* Компоненты и состояния интерфейса: выпадающие списки, шапка,
   баннер куки, всплывающие окна, уведомления, анимации.
   Переменные и темы — в tokens.css. */
*, *::before, *::after { box-sizing:border-box; }
  body { margin:0; background:var(--surface); font-family:Inter, system-ui, -apple-system, "Segoe UI", sans-serif; }
  a { color:var(--brand-ink); }
  a:hover { color:var(--brand-ink-strong); }
  a:focus-visible { outline:3px solid var(--focus); outline-offset:2px; border-radius:4px; }
  button:focus-visible { outline:3px solid var(--focus); outline-offset:2px; }
  header nav a { white-space:nowrap; }
  [data-icon-moon] { display:none; }
  :root[data-theme="dark"] [data-icon-sun] { display:none; }
  :root[data-theme="dark"] [data-icon-moon] { display:block; }
  :root[data-theme="dark"] [data-logoword] { filter:invert(1) brightness(1.85) contrast(1.05); }
  :root[data-theme="dark"] [data-logomark] { filter:brightness(1.25) saturate(1.15); }
  header { transition:box-shadow .18s ease; }
  header[data-compact="1"] { box-shadow:0 6px 20px rgba(16,24,40,.14); }
  header[data-compact="1"] [data-header-row] { height:76px !important; }
  header[data-compact="1"] [data-logoword] { display:none !important; }
  header[data-compact="1"] [data-logobox] { width:46px !important; height:46px !important; }
  header[data-compact="1"] [data-callbtn] { height:46px !important; font-size: var(--fs-19) !important; }
  header[data-compact="1"] [data-hdrtool="theme"],
  header[data-compact="1"] [data-hdrtool="a11y"] { width:44px !important; height:44px !important; }
  header[data-compact="1"] [data-hdrtool="a11y"] svg { width:22px; height:22px; }
  header[data-compact="1"] [data-hdrtool="lang"] > button { height:44px !important; }
  header[data-compact="1"] [data-desktopnav] a { height:44px !important; }
  @keyframes toastCountdown { from { width:100%; } to { width:0%; } }
  [data-toast] { animation:toastIn .22s ease-out; }
  @keyframes toastIn { from { transform:translateY(100%); opacity:0; } to { transform:translateY(0); opacity:1; } }
  @media (prefers-reduced-motion: reduce) { [data-toast] { animation:none; } [data-toastbar] { animation:none !important; width:100%; } }
  [data-skip]:focus { top:0 !important; }
  [data-drop] { display:none; }
  [data-navitem][data-open="1"] > [data-drop] { display:block; }
  @media (hover: hover) and (pointer: fine) {
    [data-navitem]:hover > [data-drop] { display:block; }
  }
  @keyframes callPulse {
    0%, 68%, 100% { box-shadow:0 0 0 0 rgba(15,122,90,.45); }
    76% { box-shadow:0 0 0 10px rgba(15,122,90,0); }
  }
  [data-callbtn] { animation:callPulse 2.6s ease-out infinite; }
  @keyframes msBreathe {
    0%, 55% { transform:scale(1) rotate(0deg); }
    70% { transform:scale(1.07) rotate(-3deg); }
    85% { transform:scale(1.07) rotate(3deg); }
    100% { transform:scale(1) rotate(0deg); }
  }
  @keyframes msHalo {
    0%, 55% { opacity:0; transform:scale(.75); }
    72% { opacity:.5; transform:scale(1.05); }
    100% { opacity:0; transform:scale(1.35); }
  }
  [data-logomark] { animation:msBreathe 9s cubic-bezier(.5,.05,.2,1) infinite; }
  [data-logohalo] { animation:msHalo 9s ease-out infinite; }
  @media (prefers-reduced-motion: reduce) {
    [data-callbtn], [data-logomark] { animation:none; }
    [data-logohalo] { display:none; }
  }

/* Шапка в две строки на десктопе.

   Одной строкой логотип, меню, три инструмента и кнопка с номером не
   помещались в контейнер 1200: на русском требовалось ~1213, на английском
   ~1290, и последним в ряду выдавливался телефон. Две строки снимают вопрос
   с запасом на любом языке и не требуют ужимать шрифты и прятать логотип.

   Порядок в разметке - логотип, меню, инструменты; порядок на экране задаём
   здесь, чтобы меню ушло во вторую строку, а инструменты остались в первой.

   При скролле шапка схлопывается в одну строку: там слово-логотип скрыто,
   и места снова достаточно. */
@media (min-width: 1024px) {
  [data-header-row] { flex-wrap: wrap; height: auto !important; padding-top: 12px !important; padding-bottom: 0 !important; }
  [data-header-row] > a { order: 1; }
  [data-header-row] > div { order: 2; margin-left: auto; }
  [data-header-row] > nav { order: 3; flex: 1 0 100%; height: 52px; margin-top: 10px; border-top: 1px solid var(--divider); }

  header[data-compact="1"] [data-header-row] { flex-wrap: nowrap; padding-top: 0 !important; }
  header[data-compact="1"] [data-header-row] > nav { order: 2; flex: 0 1 auto; height: auto; margin-top: 0; border-top: 0; }
  header[data-compact="1"] [data-header-row] > div { order: 3; }

  /* Во второй строке место есть, поэтому пункты меню крупнее.
     В компактном режиме шапка снова в одну строку - возвращаем базовый размер. */
  [data-header-row] > nav .navlink { font-size: var(--fs-19); padding: 0 12px; }
  header[data-compact="1"] [data-header-row] > nav .navlink { font-size: var(--fs-md); padding: 0 8px; }
}

  /* Базовый блок здесь был записан второй раз, слово в слово. Дубль убран. */
  [data-tile]:hover { box-shadow:0 8px 24px rgba(46,16,101,.18), 0 0 0 3px var(--brand-300); transform:translateY(-3px); }
  [data-tile]:hover [data-arrow] { transform:translateX(6px); }
  [data-tile]:hover [data-tileimg] { transform:scale(1.05); }
  [data-tile]:hover [data-rule] { width:64px; background:var(--action-300); }
  @media (prefers-reduced-motion: reduce) {
    [data-tile], [data-tileimg], [data-arrow], [data-rule] { transition:none !important; }
    [data-tile]:hover { transform:none; }
    [data-tile]:hover [data-tileimg] { transform:none; }
  }
  [data-tile]:focus-visible { outline:3px solid var(--focus); outline-offset:2px; }
  @keyframes callPulse {
    0%, 68%, 100% { box-shadow:0 0 0 0 rgba(15,122,90,.45); }
    76% { box-shadow:0 0 0 10px rgba(15,122,90,0); }
  }
  @media (max-width: 1080px) {
    [data-cols="side"] { grid-template-columns:minmax(0,1fr) !important; gap:32px !important; }
    [data-cols="hero"] { display:block !important; }
    [data-cols="hero"] [data-herophoto] { display:block; width:100%; max-width:560px; height:320px; aspect-ratio:auto !important; margin:32px 0 0; }
    [data-cols="3"] { grid-template-columns:repeat(2, minmax(0,1fr)) !important; }
    [data-stack] { flex-wrap:wrap; }
  }
  @media (max-width: 680px) {
    [data-cols="3"], [data-cols="2"] { grid-template-columns:minmax(0,1fr) !important; }
  }
  [data-callbtn] { animation:callPulse 2.6s ease-out infinite; }
  @media (prefers-reduced-motion: reduce) { [data-callbtn] { animation:none; } }

[data-page="1"] {
  width: 100%;
  margin: 0 auto;
  background: var(--surface);
  color: var(--text-900);
  font-size: var(--fs-base);
  line-height: 1.65;
  display: flex;
  flex-direction: column;
}

/* ── Каркас страницы ──────────────────────────────────────────────────────
   Ширину и полосы фона задаёт сам макет: [data-page] в site.css объявлен
   как width:100%, max-width:none, а содержимое ограничено обёртками внутри
   секций. Здесь — только то, чего в макете нет, потому что в канвасе
   этого не бывает: пропуск к содержимому для клавиатуры.               */
.skip { position: absolute; left: -9999px; }
.skip:focus {
  left: 16px; top: 16px; z-index: 100; padding: 12px 16px;
  background: var(--surface); border: 2px solid var(--action-600); border-radius: 8px;
}
[hidden] { display: none !important; }

/* ── Состояния, которые в макете считались в скрипте канваса ──────────────
   Значения перенесены из его функций nav(), tab(), toggle(), themeBig()
   и из выражений renderVals. Вид тот же, задаёт его теперь CSS.         */
.navlink {
  display: flex; align-items: center; gap: 6px; height: 48px; padding: 0 8px;
  border: 0; border-radius: 8px; font-family: inherit; font-size: var(--fs-md); font-weight: 600;
  text-decoration: none; cursor: pointer; background: transparent; color: var(--text-900);
}
.navlink[aria-current="page"] { background: var(--brand-100); color: var(--brand-ink-strong); }

.modaltab {
  flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 56px; padding: 0 24px; background: none; border: 0;
  border-bottom: 3px solid transparent; font-family: inherit; font-size: var(--fs-base);
  font-weight: 600; color: var(--text-600); cursor: pointer;
}
.modaltab[aria-pressed="true"] { border-bottom-color: var(--action-600); color: var(--action-700); }

.modalpane { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 28px 32px 32px; }
.routesent { margin: 12px 0 0; font-size: var(--fs-sm); line-height: 1.55; font-weight: 600; color: var(--action-700); }

.ctoggle {
  flex: 0 0 auto; display: inline-flex; align-items: center; gap: 10px;
  min-height: 48px; min-width: 150px; justify-content: center;
  padding: 0 18px; border-radius: 10px;
  font-family: inherit; font-size: var(--fs-sm); font-weight: 600; cursor: pointer;
  border: 2px solid var(--border); background: var(--surface); color: var(--text-600);
}
/* Кружок состояния: по нему видно включено или выключено даже до чтения подписи */
.ctoggle__dot {
  flex: 0 0 auto; width: 12px; height: 12px; border-radius: 50%;
  background: var(--text-600); opacity: .45;
}
.ctoggle[aria-pressed="true"] { border-color: var(--action-600); background: var(--action-600); color: var(--text-inverse); }
.ctoggle[aria-pressed="true"] .ctoggle__dot { background: var(--text-inverse); opacity: 1; }

/* Кнопки-инструменты в шапке: доступность и тема */
.hdrtool {
  display: flex; align-items: center; justify-content: center; width: 48px; height: 48px;
  border-radius: 8px; font-family: inherit; cursor: pointer;
  border: 1px solid var(--border); background: var(--surface); color: var(--text-900);
}
.hdrtool[aria-pressed="true"] {
  border-color: var(--brand-ink-strong); background: var(--brand-100); color: var(--brand-ink-strong);
}
/* Те же переключатели крупно, в листе мобильного меню */
.bigtool {
  display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 48px;
  border-radius: 8px; font-family: inherit; font-size: var(--fs-md); font-weight: 600; cursor: pointer;
  border: 1px solid var(--border); background: var(--surface); color: var(--text-900);
}
.bigtool[aria-pressed="true"] { border: 0; background: var(--brand-600); color: var(--text-inverse); }
.bigtool--wide { grid-column: 1 / -1; min-height: 56px; padding: 0 18px; font-size: var(--fs-base); border-width: 2px; }
.bigtool--wide[aria-pressed="true"] {
  border: 2px solid var(--brand-ink-strong); background: var(--brand-100); color: var(--brand-ink-strong);
}

.barmenu {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
  min-height: 60px; border: 1px solid var(--border); border-radius: 10px;
  background: var(--surface); color: var(--text-900);
  font-family: inherit; font-size: var(--fs-xs); font-weight: 700; cursor: pointer;
}
/* Открытое меню - фиолетовое: зелёный внизу экрана только у кнопки записи */
.barmenu[aria-expanded="true"] { border-color: var(--brand-600); background: var(--brand-100); color: var(--brand-ink-strong); }

.overlay {
  position: fixed; inset: 0; z-index: 60; display: flex;
  align-items: flex-start; justify-content: center; padding: 24px; overflow-y: auto;
}
.overlay[data-overlay-id="cookies"] { z-index: 70; }

.cookiebar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 50;
  background: var(--surface); border-top: 1px solid var(--border);
  padding: 20px 0; box-shadow: 0 -4px 16px rgba(16, 24, 40, .08);
}

/* Уведомление после выбора куки: на десктопе такая же полоса во всю ширину,
   как и баннер согласия. Вёрстка из design/SiteHeader.dc.html. */
.toast {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 80;
  padding: 20px 0; background: var(--surface);
  border-top: 3px solid var(--action-600);
  box-shadow: 0 -4px 16px rgba(16, 24, 40, .12);
}
.toast[data-kind="rejected"] { border-top-color: var(--brand-600); }
.toast__icon {
  flex: 0 0 auto; display: flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; border-radius: 8px; font-size: var(--fs-20); font-weight: 700;
  background: var(--action-100); color: var(--action-ink);
}
.toast[data-kind="rejected"] .toast__icon { background: var(--brand-100); color: var(--brand-ink-strong); }
/* Полоска, отсчитывающая время до автоскрытия */
.toast__bar {
  position: absolute; left: 0; bottom: 0; display: block; height: 4px;
  background: var(--action-600); animation: toastbar 7s linear forwards;
}
.toast[data-kind="rejected"] .toast__bar { background: var(--brand-600); }
@keyframes toastbar { from { width: 100%; } to { width: 0%; } }
@media (prefers-reduced-motion: reduce) { .toast__bar { animation: none; width: 100%; } }

/* Выпадающие списки: мышью по наведению, на таче — по нажатию */
[data-drop] { display: none; }
@media (hover: hover) and (pointer: fine) {
  /* Только наведение. По фокусу список больше не раскрывается: иначе Tab
     проходил каждый пункт подменю и до телефона было больше 20 нажатий.
     С клавиатуры пункт меню ведёт на страницу раздела с полным списком. */
  [data-navitem]:hover > [data-drop] { display: block; }
}
[data-navitem][data-open="1"] > [data-drop] { display: block; }

/* ── Вопросы: знак «+» превращается в «−» у раскрытого пункта ─────────── */
[data-faqlist] summary::-webkit-details-marker { display: none; }
[data-faqlist] summary::marker { content: ""; }
[data-faqlist] summary:hover { color: var(--brand-ink); }
[data-faqlist] details[open] [data-faqsign] { font-size: var(--fs-24); }
[data-faqlist] details[open] [data-faqsign]::after { content: "−"; }
[data-faqlist] details[open] [data-faqsign] { color: transparent; position: relative; }
[data-faqlist] details[open] [data-faqsign]::after { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: var(--brand-ink-strong); }

/* ── Баннер куки и уведомление на узких экранах ───────────────────────
   На планшете три кнопки согласия и текст не помещаются в одну строку,
   а уведомление после выбора вылезало за край. Раскладываем в столбец
   и даём кнопкам переноситься. */
@media (max-width: 1023px) {
  .cookiebar > div { flex-direction: column; align-items: stretch !important; gap: 16px !important; }
  .cookiebar [data-cookiebtns] { flex-wrap: wrap; }
  .cookiebar [data-cookiebtns] > * { flex: 1 1 auto; justify-content: center; }
  .toast [data-stack] { flex-direction: column; align-items: stretch; gap: 16px; }
  .toast [data-toastactions] { flex-wrap: wrap; }
  .toast [data-toastactions] > * { flex: 1 1 auto; justify-content: center; }
}
@media (max-width: 599px) {
  .cookiebar [data-cookiebtns] > * { flex: 1 1 100%; }
  .toast [data-toastactions] > * { flex: 1 1 100%; }
  .ctoggle { min-width: 0; width: 100%; }
  .toast [data-stack] { padding-left: 16px; padding-right: 16px; }
}

/* Плашка «сейчас нерабочее время» под часами приёма. Значок «!» и текст
   стоят в одной строке; атрибут hidden должен побеждать display:flex. */
.afterhours { display: flex; align-items: flex-start; gap: 10px; margin-top: 10px; }
.afterhours[hidden] { display: none; }

/* ── Квалификация на телефоне ─────────────────────────────────────────
   Таблица документов свёрстана под широкий экран: пять колонок, три из
   них с фиксированной шириной (90 + 130 + 150 пикселей). На 360–390 эти
   числа уже не помещаются, колонки сжимаются, длинные слова вылезают за
   ячейку и накладываются друг на друга, а вылезший текст растягивает
   страницу вбок. Порог 900, а не 680: между ними колонки тоже не держат
   текст - фиксированные 370 пикселей плюс 34% под название не оставляют
   месту выдачи ничего. Ниже этого порога таблица перестаёт быть таблицей
   и разворачивается вниз: строка = карточка документа, шапка не нужна,
   значения читаются сами по себе. Правила с !important: инлайновые стили
   шаблона иначе не перебить. */
@media (max-width: 900px) {
  [data-doclist] { table-layout: auto !important; font-size: var(--fs-sm) !important; }
  [data-doclist] caption { padding-bottom: 10px !important; }
  /* Шапку убираем от глаз, но оставляем скринридеру. */
  [data-doclist] thead {
    position: absolute !important; width: 1px; height: 1px;
    overflow: hidden; clip-path: inset(50%); white-space: nowrap;
  }
  [data-doclist], [data-doclist] tbody, [data-doclist] tr, [data-doclist] td { display: block !important; }
  [data-doclist] tr {
    margin: 0 0 14px; border: 1px solid var(--divider); border-radius: 10px;
    overflow: hidden; background: var(--surface);
  }
  [data-doclist] td {
    width: auto !important; border: 0 !important;
    border-bottom: 1px solid var(--divider) !important;
    padding: 12px 14px !important; overflow-wrap: anywhere; hyphens: auto;
  }
  [data-doclist] td[data-col="year"] {
    padding: 8px 14px !important; background: var(--brand-100);
    font-size: var(--fs-xs) !important; color: var(--brand-ink-strong) !important;
  }
  /* Жирным только название; строка-примечание под ним остаётся обычной. */
  [data-doclist] td[data-col="title"] { font-size: var(--fs-md) !important; font-weight: 400 !important; }
  [data-doclist] td[data-col="title"] > span:first-child { font-weight: 600; }
  [data-doclist] td[data-col="kind"] { font-size: var(--fs-xs) !important; }
  [data-doclist] td[data-col="open"] { border-bottom: 0 !important; }
  /* Превью во всю ширину карточки делает её высотой в экран: двадцать два
     документа превращаются в бесконечную ленту. Кладём превью и подпись
     в строку и придерживаем картинку. */
  [data-doclist] td[data-col="open"] button { flex-direction: row !important; align-items: center !important; gap: 12px !important; }
  [data-doclist] td[data-col="open"] [data-imgslot] { max-width: 170px; margin: 0 !important; }
}

@media (max-width: 680px) {
  /* Карточка членства: 200 пикселей под картинку рядом с текстом не влезают. */
  [data-cardrow] { grid-template-columns: minmax(0, 1fr) !important; }
  [data-cardrow] > button { max-width: 260px; }
  /* Окно просмотра диплома: поля по 32 съедают треть экрана, а max-height:100%
     на мобильных браузерах считается от «большого» вьюпорта и уводит низ
     окна под адресную строку. */
  [data-docmodal] { padding: 12px !important; align-items: flex-start !important; }
  [data-docmodal] > div {
    padding: 14px !important; max-height: calc(100dvh - 24px) !important;
    overscroll-behavior: contain;
  }
  [data-docmodal] figcaption > span { overflow-wrap: anywhere; }
}

/* Превью роликов: на узком экране в одну колонку. */
@media (max-width: 680px) {
  [data-videogrid] { grid-template-columns: minmax(0, 1fr) !important; }
}

/* Окно настроек куки на телефоне: строка согласия перестаёт быть
   двухколоночной - иначе текст сжимается в столбик, а тумблер вылезает. */
@media (max-width: 600px) {
  [data-overlay-id="cookies"] [role="dialog"] { max-width: calc(100vw - 20px) !important; }
  [data-consentrow] { flex-direction: column !important; align-items: stretch !important; gap: 12px !important; }
  [data-consentrow] .ctoggle,
  [data-consentrow] > span { width: 100% !important; min-width: 0 !important; text-align: center; }
  [data-cookieactions] { flex-wrap: wrap !important; }
  [data-cookieactions] > button { flex: 1 1 100% !important; }
}

/* Портрет в шапке страницы врача: <picture> - строчный элемент, из-за него
   height:100% у картинки считался от нуля и снизу оставалась полоса фона. */
[data-biophoto] > picture { display: block; height: 100%; }
@media (max-width: 1023px) {
  [data-biophoto] { height: auto !important; }
  [data-biophoto] > picture, [data-biophoto] img { height: auto !important; }
}

/* Таблица в статье на узком экране. Тот же приём, что у списка документов:
   ниже порога таблица перестаёт быть таблицей, строка становится карточкой,
   шапка прячется от глаз и остаётся скринридеру. Подпись колонки шаблон
   кладёт в data-th, здесь она выводится над значением - иначе в карточке
   не понять, что к чему относится. Первая ячейка строки - заголовок
   карточки: в таблицах-сравнениях это признак, в таблицах ключ-значение
   сам ключ. Правила с !important: инлайновые стили шаблона иначе не перебить. */
@media (max-width: 900px) {
  [data-table] { overflow-x: visible !important; }
  [data-table] table { min-width: 0 !important; font-size: var(--fs-sm) !important; }
  [data-table] thead {
    position: absolute !important; width: 1px; height: 1px;
    overflow: hidden; clip-path: inset(50%); white-space: nowrap;
  }
  [data-table] table, [data-table] tbody, [data-table] tr, [data-table] td { display: block !important; }
  [data-table] tr {
    margin: 0 0 14px; border: 1px solid var(--divider); border-radius: 10px;
    overflow: hidden; background: var(--surface);
  }
  [data-table] td {
    width: auto !important; border: 0 !important;
    border-bottom: 1px solid var(--divider) !important;
    padding: 12px 14px !important; overflow-wrap: anywhere; hyphens: auto;
  }
  [data-table] td:last-child { border-bottom: 0 !important; }
  [data-table] td[data-cell="head"] {
    padding: 10px 14px !important; background: var(--brand-100);
    font-size: var(--fs-md) !important; font-weight: 600;
    color: var(--brand-ink-strong) !important;
  }
  [data-table] td[data-th]:not([data-th=""])::before {
    content: attr(data-th); display: block; margin-bottom: 2px;
    font-size: var(--fs-xs); font-weight: 600; color: var(--text-600);
  }
}

/* Ряд кнопок под заголовком страницы: на телефоне в столбик во всю ширину,
   подпись по центру. Кнопки с короткой подписью иначе висят половинками. */
@media (max-width: 767px) {
  [data-btnrow] { flex-direction: column !important; align-items: stretch !important; }
  [data-btnrow] > * { width: 100% !important; justify-content: center !important; }
}


/* ============================================================
   Наведение. Вёрстка перенесена из макетов с инлайновыми стилями,
   а инлайн сильнее любого правила без !important - поэтому прежние
   :hover здесь молча не работали. Правила ниже с !important и узнают
   кнопку по её же инлайну: зелёная, фиолетовая, контурная.
   ============================================================ */
a, button { transition: background-color .18s ease, border-color .18s ease, color .18s ease,
                        box-shadow .18s ease, transform .18s ease; }

/* Стрелка в подписи «… →» уезжает вправо */
[data-go] { display: inline-block; transition: transform .18s ease; }
a:hover [data-go], button:hover [data-go], a:focus-visible [data-go] { transform: translateX(5px); }

/* Зелёные кнопки записи и звонка */
a[style*="background:var(--action-600)"]:hover,
button[style*="background:var(--action-600)"]:hover {
  background: var(--action-700) !important; transform: translateY(-1px);
  box-shadow: 0 8px 20px rgba(11, 99, 73, .30) !important;
}
/* Фиолетовые залитые: «Прийняти все», «Дивитися кваліфікацію», «Закрити» */
a[style*="background:var(--brand-600)"]:hover,
button[style*="background:var(--brand-600)"]:hover {
  background: var(--brand-700) !important; border-color: var(--brand-700) !important;
  transform: translateY(-1px); box-shadow: 0 8px 20px rgba(46, 16, 101, .28);
}
/* Контурные: рамка темнеет, подложка светится */
a[style*="solid var(--brand-600)"]:not([style*="background:var(--brand-600)"]):hover,
button[style*="solid var(--brand-600)"]:not([style*="background:var(--brand-600)"]):hover,
a[style*="solid var(--brand-300)"]:hover,
button[style*="solid var(--brand-300)"]:not([aria-pressed="true"]):hover {
  background: var(--brand-100) !important; border-color: var(--brand-ink) !important;
  color: var(--brand-ink-strong) !important; transform: translateY(-1px);
}
/* Те же контурные на фиолетовом подвале: светлеют, а не уходят в лиловый */
footer a[style*="solid var(--brand-300)"]:hover,
footer button[style*="solid var(--brand-300)"]:hover {
  background: rgba(255, 255, 255, .14) !important; border-color: #FFFFFF !important; color: #FFFFFF !important;
}
/* Кнопки без рамки и подложки: «Налаштувати», «Фото входу…» */
button[style*="background:none"][style*="border:0"]:hover { color: var(--brand-ink-strong) !important; }
footer button[style*="background:none"][style*="border:0"]:hover { color: #FFFFFF !important; }
/* Инструменты шапки, крестики окон */
.hdrtool:hover, [data-hdrtool] > button:hover, [data-burger]:hover, [data-close]:hover,
[data-action="closeCookieSettings"]:hover, [data-action="closeDoc"]:hover {
  background: var(--brand-100) !important; color: var(--brand-ink-strong) !important; border-color: var(--brand-ink) !important;
}
/* Вкладки окна записи: подсветка, а не заливка цветом кнопки */
.modaltab:hover { background: var(--surface-alt) !important; color: var(--brand-ink-strong) !important; }
.modaltab[aria-pressed="true"]:hover { color: var(--action-700) !important; }

/* Карточки-ссылки без своего ховера в макете */
[data-card]:hover { border-color: var(--brand-300) !important; box-shadow: var(--shadow-card); transform: translateY(-2px); }
a[style*="solid var(--action-200)"]:hover {
  border-color: var(--action-ink) !important; background: var(--action-050) !important;
  box-shadow: var(--shadow-card); transform: translateY(-2px);
}
/* Зелёные чипы «Як лікуємо» */
a[style*="background:var(--action-100)"]:hover { background: var(--action-200) !important; border-color: var(--action-ink) !important; }

/* Текстовые ссылки: подчёркивание плотнее */
a:hover { text-decoration-thickness: 2px; text-underline-offset: 3px; }
[data-phone="1"]:hover { text-decoration: underline; }

/* Телефон: трубка покачивается, как при звонке */
@keyframes phoneRing {
  0%, 100% { transform: rotate(0); }
  15% { transform: rotate(-16deg); } 30% { transform: rotate(13deg); }
  45% { transform: rotate(-10deg); } 60% { transform: rotate(7deg); } 75% { transform: rotate(-3deg); }
}
a[href^="tel:"]:hover svg,
[data-action="openCall"]:not(.modaltab):hover svg,
[data-callbtn]:hover svg { animation: phoneRing .8s ease-in-out; transform-origin: 50% 50%; }

/* ── Знак движка в подвале ──────────────────────────────────────── */
[data-heron] {
  flex: 0 0 auto; align-self: center; display: inline-flex; flex-direction: column; align-items: center; gap: 4px;
  padding: 7px 16px 6px; border-radius: 10px; text-decoration: none !important;
  background: #FFFFFF; border: 1px solid rgba(255, 255, 255, .7); box-shadow: 0 6px 18px rgba(0, 0, 0, .22);
}
[data-heroncap] { font-size: var(--fs-xs); line-height: 1; font-weight: 600; letter-spacing: .02em; color: #2E1065; }
[data-heronimg] { display: block; width: auto; height: 52px; margin-inline: auto; }
/* tokens.css на узких экранах ставит картинкам height:auto - логотипу нужен свой размер */
[data-heron] img[data-heronimg] { width: auto !important; height: 52px !important; max-width: none !important; }
[data-heronimg="dark"] { display: none; }
[data-heron]:hover { transform: translateY(-2px); box-shadow: 0 10px 26px rgba(0, 0, 0, .3); }
:root[data-theme="dark"] [data-heron] { background: rgba(255, 255, 255, .06); border-color: rgba(255, 255, 255, .24); box-shadow: none; }
:root[data-theme="dark"] [data-heron]:hover { border-color: #FFFFFF; background: rgba(255, 255, 255, .1); }
:root[data-theme="dark"] [data-heronimg="light"] { display: none; }
:root[data-theme="dark"] [data-heronimg="dark"] { display: block; }
:root[data-theme="dark"] img[data-heronimg] { filter: none !important; }
@media (max-width: 767px) { [data-heron] { align-self: flex-start !important; } }

@media (prefers-reduced-motion: reduce) {
  a, button, [data-go], [data-card] { transition: none !important; }
  a:hover, button:hover, [data-card]:hover, [data-heron]:hover, a:hover [data-go], button:hover [data-go] { transform: none !important; }
  a[href^="tel:"]:hover svg, [data-action="openCall"]:hover svg, [data-callbtn]:hover svg { animation: none !important; }
}

/* ── Ролик маршрута ─────────────────────────────────────────────── */
[data-vidprev] [data-vidplay] { transition: transform .25s ease, box-shadow .25s ease; }
[data-vidprev] picture img, [data-vidprev] > img { transition: transform .35s ease, opacity .25s ease; }
[data-vidprev]:hover [data-vidplay], [data-vidprev]:focus-visible [data-vidplay] { transform: scale(1.12); box-shadow: 0 8px 26px rgba(0,0,0,.38); }
[data-vidprev]:hover img { transform: scale(1.03); opacity: .92; }
button[data-action="openVideo"]:hover svg { animation: playNudge .9s ease-in-out infinite; }
@keyframes playNudge { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(3px); } }

/* Номер в окне записи: кроме трубки меняются цвет и подчёркивание */
.modalpane a[data-phone]:hover, .modalpane a[data-phone]:focus-visible {
  color: var(--action-700) !important; text-decoration: underline !important;
  text-decoration-thickness: 3px !important; text-underline-offset: 6px !important;
}
@media (prefers-reduced-motion: reduce) {
  [data-vidprev]:hover [data-vidplay], [data-vidprev]:hover img, button[data-action="openVideo"]:hover { transform: none !important; }
  button[data-action="openVideo"]:hover svg { animation: none !important; }
}
