/* ТОМОКО — мобильная адаптация. Генерится, руками не править.
   Порядок важен: сначала главная (m1–m3), затем внутренние страницы —
   при равной специфичности выигрывает последнее правило. */

/* ═══ главная · m1 ═══ */
/* ТОМОКО — мобильная версия верха главной: полоса-анонс, шапка с бургером,
   раскрытое меню, герой, «Новые возможности».
   Снято 27.08.2026 с макетов Figma «М · Главная» 345:13655 (375×12107)
   и «М · Меню раскрытое» 345:16448 (375×983).

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → mobile-m1.css. Часть правил ниже спорит с блоками
   @media (max-width: 680px) в sections.css при равной специфичности,
   и выигрывает только за счёт порядка подключения.

   Разметка одна на оба размера. Ниже — только перестроение уже
   существующих классов; новых элементов два, оба физически отсутствуют
   на десктопе: .tk-burger и панель .tk-mmenu (см. html_patch).
   Теней нет нигде, элевация только цветом. */


/* ═══ 0. Новые элементы вне мобильной ширины не существуют ═══════════════ */
/* Объявлено вне медиазапроса, чтобы бургер и панель были скрыты
   на любой ширине больше точки перелома, независимо от состояния. */

.tk-burger { display: none; }
.tk-mmenu  { display: none; }


@media (max-width: 680px) {

/* ═══ 1. Полоса-анонс (Figma 345:13656, 375×38) ══════════════════════════
   Раскладка в две строки уже есть в sections.css (.tk-announce--stack).
   Здесь только метрика: в макете полоса 38 против 48 на десктопе,
   поля 20/12, кегль 10. Ступени 10 в шкале нет — берём нижнюю, 12. */

.tk-announce--stack .tk-announce__inner {
  min-height: 38px;             /* высота полосы в макете; токена высоты нет */
  padding-block: var(--s-3);    /* 12 — точное значение макета */
}
.tk-announce--stack .tk-announce__text,
.tk-announce--stack .tk-announce__link {
  font-size:      var(--t-label-12-size);
  line-height:    var(--t-label-12-lh);
  letter-spacing: var(--t-label-12-ls);
}


/* ═══ 2. Шапка (Figma 345:13661, 375×62) ════════════════════════════════
   Логотип слева, справа пилюля записи и бургер. Навигация и телефон
   уже сняты в sections.css (1100 и 680 соответственно). */

/* Единственный канонический класс, который правится здесь: на мобильных
   шапка ниже — 62 против 88 (логотип 34 + поля 14). Только геометрия,
   только ≤680; если решение приживётся, правилу место в components.css. */
.tk-header__inner {
  min-height: 62px;             /* 34 логотип + 14×2 поля, замер макета */
  gap: var(--s-4);
}

/* Логотип 56.44×34 в макете. Ширину не задаём: пропорцию держат
   атрибуты width/height у <img>. */
.tk-hero__logo img { height: 34px; width: auto; }

.tk-hero__actions { gap: var(--s-3); }   /* 12 — точное значение макета */

/* Кнопка записи уходит в малый размер кита (33px, паддинг 9/16, кегль 12).
   Класс .tk-btn--sm в разметку не добавляем — размер задаётся здесь,
   через собственный класс блока. */
.tk-hero__actions .tk-btn {
  padding: 9px var(--s-4);
  font-size:      var(--t-label-12-size);
  letter-spacing: var(--t-label-12-ls);
}

/* ── Бургер (345:13700) ──────────────────────────────────────────────────
   Иконка в макете 20×14 без поля. Тап-таргет доводим до 44×44 и гасим
   отрицательным полем справа, чтобы полоски встали ровно по полю
   страницы: (44 − 20) / 2 = 12. */
.tk-burger {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--s-1);              /* 4 — точное значение макета */
  flex: none;
  width: 44px;                  /* минимальный тап-таргет, токена нет */
  height: 44px;
  margin-right: -12px;
  color: var(--c-paper);
}
.tk-burger__bar {
  width: 20px;                  /* размеры полоски из макета */
  height: 2px;
  border-radius: 2px;
  background: currentColor;
}


/* ═══ 3. Раскрытое меню (Figma 345:16448, 375×983) ══════════════════════
   Панель во весь экран поверх всего. Состояние переключает JS:
   у .tk-mmenu снимается атрибут hidden, у бургера aria-expanded="true",
   на <body> вешается .is-menu-open. */

.tk-mmenu {
  position: fixed;
  inset: 0;
  z-index: 100;                 /* выше .tk-header--overlay (10) */
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  background: var(--c-paper);
  color: var(--c-ink-green);
}
.tk-mmenu[hidden] { display: none; }

/* Пока панель открыта, страница под ней не прокручивается. */
.is-menu-open { overflow: hidden; }

/* ── Шапка панели (345:16449, 375×70) ───────────────────────────────── */
.tk-mmenu__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-4);
  padding: 18px var(--l-page-padding);   /* 18 — значение макета, как у .tk-btn--lg */
  border-bottom: 1px solid var(--c-hairline);  /* волосяная линия 345:16486 */
}
.tk-mmenu__logo img { height: 34px; width: auto; }

.tk-mmenu__close {
  flex: none;
  display: grid;
  place-items: center;
  width: 44px;                  /* тап-таргет; сам знак в макете 18×24 */
  height: 44px;
  margin-right: -12px;
  font-size: var(--t-subheading-size);
  font-weight: var(--w-medium);
  line-height: 1;
  color: var(--c-ink-green);
}
.tk-mmenu__close:hover { color: var(--c-brand-green); }

/* ── Разделы (345:16487) ────────────────────────────────────────────── */
.tk-mmenu__nav {
  padding: var(--s-1) var(--l-page-padding);   /* макет 6 → шаг сетки 4 */
}
.tk-mmenu__list { display: flex; flex-direction: column; }

/* Разделители между пунктами и под последним (345:16503 и далее). */
.tk-mmenu__item + .tk-mmenu__item,
.tk-mmenu__list > .tk-mmenu__item:last-child {
  border-top: 1px solid var(--c-hairline);
}
.tk-mmenu__list > .tk-mmenu__item:last-child {
  border-bottom: 1px solid var(--c-hairline);
}

.tk-mmenu__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-4);
  width: 100%;
  padding-block: 18px;          /* высота пункта 56 = 20 текст + 18×2 */
  font-size: 16px;              /* кегль макета; ступени 16 в капсе нет,
                                   --t-body-size на мобильных даёт 15 */
  font-weight: var(--w-semibold);
  letter-spacing: 0.075em;      /* 1.2px при кегле 16 */
  line-height: 1.25;
  text-align: left;
  text-transform: uppercase;
  color: inherit;
}
.tk-mmenu__row:hover { color: var(--c-brand-green); }

/* Знак справа: у раскрывающихся разделов оранжевый ± (рисуется здесь,
   потому что меняется вместе с состоянием), у прямых ссылок — серая
   стрелка, она лежит в разметке. */
.tk-mmenu__sign {
  flex: none;
  font-weight: var(--w-medium);
  letter-spacing: 0;
  color: var(--c-fog);
}
.tk-mmenu__row--toggle .tk-mmenu__sign { color: var(--c-orange); }
.tk-mmenu__row--toggle .tk-mmenu__sign::before { content: "+"; }
.tk-mmenu__row--toggle[aria-expanded="true"] .tk-mmenu__sign::before { content: "−"; }

/* Раскрытый раздел подсвечен зелёным (345:16489). */
.tk-mmenu__row--toggle[aria-expanded="true"] { color: var(--c-brand-green); }

/* ── Подпункты (345:16491) ──────────────────────────────────────────── */
.tk-mmenu__sub {
  display: flex;
  flex-direction: column;
  padding-bottom: var(--s-3);   /* макет 18, минус 7 нижнего поля ссылки */
}
.tk-mmenu__sub[hidden] { display: none; }

/* Просвет 14 из макета перенесён в паддинг ссылки: шаг строк остаётся
   макетным (18 + 7×2 = 32), но тап-таргеты смыкаются без дыр. */
.tk-mmenu__sub a {
  display: block;
  padding-block: 7px;
  font-size: var(--t-body-size);
  line-height: 1.2;
  color: var(--c-ink-green);
}
.tk-mmenu__sub a:hover { color: var(--c-brand-green); }

/* Компенсация: у раскрытого пункта нижнее поле уменьшено ровно на
   верхний паддинг первой ссылки, иначе просвет вырастает с 18 до 25. */
.tk-mmenu__row--toggle[aria-expanded="true"] { padding-bottom: 11px; }

/* ── Контакты в меню (345:16524) ────────────────────────────────────── */
.tk-mmenu__contacts {
  margin-top: auto;             /* при коротком меню прижаты к низу экрана */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--s-3);              /* 12 — точное значение макета */
  padding: var(--s-6) var(--l-page-padding)
           calc(var(--s-8) + env(safe-area-inset-bottom, 0px));
  /* макет 26 сверху / 34 снизу → шаги сетки 24 и 32 плюс безопасная зона */
  background: var(--c-mist);
}
.tk-mmenu__phone:hover { color: var(--c-brand-green); }
.tk-mmenu__cta { width: 100%; }
.tk-mmenu__hours { line-height: 1.45; }


/* ═══ 4. Герой (Figma 345:13659, 375×600) ═══════════════════════════════
   В макете порядок снизу вверх: надстрочник у самого низа кадра, над ним
   белая кнопка во всю ширину, выше лид и заголовок. В разметке
   надстрочник идёт первым — переставляем его флексом, не разметкой:
   .tk-hero__body раскрывается (display: contents), и три его блока
   становятся прямыми детьми .tk-hero наравне с нижним рядом.
   Из-за этого поля контейнера и подъём над вуалью приходится вернуть
   каждому блоку отдельно. */

.tk-hero {
  min-height: 600px;            /* высота кадра героя в макете */
  gap: var(--s-4);              /* 16 между всеми блоками, как в макете */
  padding-bottom: var(--s-6);   /* макет 27 под надстрочником → шаг 24 */
}

.tk-hero__body { display: contents; }

.tk-hero__eyebrow,
.tk-hero__title,
.tk-hero__lead {
  position: relative;
  z-index: 2;                   /* поверх вуали (z-index 1) */
  width: 100%;
  padding-inline: var(--l-page-padding);
}

.tk-hero__title {
  order: 1;
  margin-top: auto;             /* весь текст прижат к низу кадра */
  margin-bottom: 0;
  /* Макет: 34 / 1.05 / −1.2px. Трекинг переведён в em: −1.2 / 34. */
  font-size: 34px;
  line-height: 1.05;
  letter-spacing: -0.035em;
}

.tk-hero__lead {
  order: 2;
  max-width: none;
}
/* В макете лид набран 14 — ступени 14 в тексте нет, берём нижнюю
   мобильную ступень body (15). На десктопе это body-lg. */
.tk-hero__lead p {
  font-size: var(--t-body-size);
  line-height: 1.5;
}

/* Нижний ряд: кнопка во всю ширину. Позиционирование снимаем, чтобы
   кнопка паузы считала координаты от кадра героя, а не от этого ряда;
   подъём над вуалью переезжает на саму кнопку. */
.tk-hero__foot {
  order: 3;
  position: static;
  display: block;
  padding-bottom: 0;
}
.tk-hero__cta {
  position: relative;
  z-index: 2;
  width: 100%;
  padding-block: var(--s-4);    /* макет 16/16 → высота 49 вместо 58 */
}

/* Кнопка паузы. В макете её на мобильных нет, но видео проигрывается
   само и по WCAG 2.2.2 управление обязано остаться. Уводим её в правый
   нижний угол кадра, в пустое поле рядом с надстрочником. */
.tk-hero__player {
  position: absolute;
  right: var(--l-page-padding);
  bottom: var(--s-6);
  z-index: 2;
}

/* Надстрочник — подпись к видео у нижнего края (345:13709).
   Правое поле увеличено на ширину кнопки паузы с просветом
   (44 + 4), иначе строка заезжает под неё на узких экранах. */
.tk-hero__eyebrow {
  order: 4;
  margin-bottom: 0;
  padding-right: calc(var(--l-page-padding) + var(--s-12));
  white-space: normal;
}


/* ═══ 5. Новые возможности (Figma 345:13710, 375×781) ═══════════════════
   Одна колонка с ровным просветом: заголовок, лид, две кнопки во всю
   ширину, макро радужки, плитка метрик. Метрики съезжают с фотографии
   в отдельную карточку под ней. */

.tk-newops__inner { gap: var(--s-4); }   /* макет 18 → шаг сетки 16 */

.tk-newops__title {
  /* Макет: 32 / 1.05 / −1.1px. Трекинг переведён в em: −1.1 / 32. */
  font-size: 32px;
  line-height: 1.05;
  letter-spacing: -0.034em;
}

/* Растягиваем колонку, иначе кнопки ужимаются по самой длинной надписи
   и не дотягиваются до полей страницы. */
.tk-newops__intro {
  align-items: stretch;
  gap: var(--s-4);
}
.tk-newops__lead {
  width: auto;
  max-width: none;
  /* В макете 15/1.55 — это мобильная ступень body, не body-lg. */
  font-size: var(--t-body-size);
  line-height: 1.55;
}

/* ── Макро радужки и метрики ────────────────────────────────────────── */
/* Фигура перестаёт быть кадром с наложением: теперь это колонка
   «фотография + плитка». Скругление и подложка уезжают на детей,
   затемнение под метрики больше не нужно. */
.tk-newops__figure {
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
  aspect-ratio: auto;
  border-radius: 0;
  overflow: visible;
  background: none;
}
.tk-newops__figure::after { display: none; }

.tk-newops__figure img {
  height: auto;
  aspect-ratio: 335 / 240;      /* пропорция кадра в макете */
  border-radius: var(--r-image);
}

.tk-newops__stats {
  position: static;
  flex-direction: row;
  gap: var(--s-4);
  padding: var(--s-5);          /* макет 20/18 → 20 по обеим осям */
  border-radius: var(--r-image);
  background: var(--c-mist);
  color: var(--c-fog);
  white-space: normal;
}
.tk-newops__stats { flex-wrap: wrap; row-gap: var(--s-4); }
.tk-newops__stats li {
  flex: 1 1 0;
  min-width: 0;
  gap: var(--s-1);              /* 4 — точное значение макета */
  /* Подписи длинные («ВРАЧЕЙ-ОФТАЛЬМОЛОГОВ»), в колонку 92px не влезают.
     break-word тут не годится: без русского словаря переносов браузер
     рвёт слово посреди слога — «ОФТАЛЬМОЛ ОГОВ». Поэтому колонки не
     держим равными, а даём им разойтись по ширине и перенестись
     между словами; рвём слово только как крайнюю меру. */
  flex: 0 1 auto;
  -webkit-hyphens: auto;        /* сработает там, где словарь есть */
  hyphens: auto;
  overflow-wrap: normal;
  word-break: keep-all;
}
/* Цифра: в макете 22 полужирным зелёным — ступени 22 нет, берём
   мобильную subheading (20), она уже полужирная. */
.tk-newops__stats li > span:first-child {
  font-size:      var(--t-subheading-size);
  line-height:    var(--t-subheading-lh);
  letter-spacing: var(--t-subheading-ls);
  font-weight:    var(--w-semibold);
  color: var(--c-brand-green);
}

} /* /max-width: 680px */


/* ═══ 6. Тесные экраны ══════════════════════════════════════════════════
   Точка 360 добавлена ради одного случая: components.css с 680 разрешает
   подписи кнопок переноситься, и на 320 пилюля записи в шапке встаёт
   в две строки. Ужимаем поля и запрещаем перенос — места хватает. */

@media (max-width: 360px) {
  .tk-hero__actions .tk-btn {
    padding-inline: var(--s-3);
    white-space: nowrap;
  }
}

/* ── Тап-цели ниже нормы ────────────────────────────────
   WCAG 2.5.8 (AA) требует минимум 24×24 CSS-пикселя. Замер зондом
   на 390: крошка «Главная» 46×15, ссылка анонса 134×17, кнопка
   записи 165×32. Добираем высоту отступами, не трогая кегль. */
@media (max-width: 680px) {
  .tk-announce__link,
  .tk-breadcrumbs a,
  .tk-breadcrumbs--slash a {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
  }
  /* Кнопка записи в шапке: 32 проходит норму, но для основного действия
     мало — поднимаем до 40, ближе к рекомендованным 44. */
  .tk-header__inner .tk-btn { min-height: 40px; }
}

/* ═══ главная · m2 ═══ */
/* ТОМОКО — мобильная раскладка блока M2:
   «Услуги», «Новое оборудование», «Прайс», «Наши специалисты».

   Снято 27.08.2026 с мобильного артборда Figma «М · Главная /» 345:13655
   (полотно 375). Разметка одна на оба размера: здесь ТОЛЬКО медиазапросы
   к десктопным классам, ни одного нового элемента.

   Подключать последним — после tokens.css, base.css, components.css,
   sections.css: часть правил спорит с их же блоками @media 680 и
   выигрывает порядком объявления при равной специфичности.

   Точка перелома одна — 680, как во всей системе. Поля 20 и сжатую
   шкалу кеглей даёт tokens.css, здесь они не трогаются.
   Теней нет ни одной, элевация только цветом.

   Расхождения с макетом, которые сознательно НЕ реализованы (кегли
   мельче ступени, текстовые отличия, отбивка секции), перечислены
   в notes отчёта — в CSS они не заводились. */


/* ══ 1. Услуги · 345:13728 ════════════════════════════════════
   Карточки в один столбец даёт base.css. В макете просвет между
   карточками 16 (236 шаг − 220 высота), а не сеточные 24, и шапка
   секции отбита от первой карточки на 16. */

@media (max-width: 680px) {
  .tk-services .tk-grid--4 { gap: var(--s-4); }
  .tk-services .tk-sec-head { margin-bottom: var(--s-4); }

  /* В макете у секции одно действие — кнопка 335×48 под рядом карточек.
     В разметке действий два (ссылка «ВСЕ УСЛУГИ» в шапке и кнопка
     догрузки внизу), убирать содержимое медиазапросом нельзя — поэтому
     обе растянуты на ширину колонки. Правится только геометрия кнопки,
     как в .tk-equipment__text .tk-btn: цвет и типографика канонические. */
  .tk-services .tk-sec-head .tk-btn,
  .tk-services__more .tk-btn { width: 100%; }
  .tk-services__more { margin-top: var(--s-4); }   /* макет 964 − 948 */
}


/* ══ 2. Новое оборудование · 345:13752 ════════════════════════
   Карточка 335 шириной, поля 24, все блоки через 20. Порядок в макете:
   лейбл → заголовок → лид → ФОТО → показания → кнопка → сноска, то есть
   фото стоит в СЕРЕДИНЕ текстовой колонки, а не над ней. */

@media (max-width: 680px) {
  .tk-equipment__card {
    gap: var(--s-5);                /* макет 20 */
    padding: var(--s-6);            /* макет 24 по бокам, 28 сверху и снизу */
    background: var(--g-green);     /* на 375 градиент вертикальный, не --g-green-x */
  }

  /* Единственный способ поставить фото в середину колонки, не трогая
     разметку: обёртка текста на мобильном растворяется, и её дети
     становятся прямыми элементами карточки-флексбокса. Порядок DOM
     сохраняется, поэтому хватает order на трёх хвостовых блоках. */
  .tk-equipment__text { display: contents; }
  .tk-equipment__list,
  .tk-equipment__text .tk-btn,
  .tk-equipment__note { order: 1; }

  /* sections.css поднимает фото наверх (order: -1) — на макете его место
     после лида, возвращаем в естественный поток. */
  .tk-equipment__media { order: 0; }
  .tk-equipment__media img { aspect-ratio: 287 / 200; }   /* макет 287×200 */

  /* Пункты показаний переносятся на две строки: маркер прижимается
     к первой строке, а не к центру блока. */
  .tk-equipment__list li { align-items: flex-start; }
  .tk-equipment__list li::before { margin-top: 6px; }  /* центр по первой строке 15/1.4 */
}


/* ══ 3. Прайс · 345:13778 ═════════════════════════════════════
   Плашка та же, но таблица разложена в карточки: код → наименование →
   цена, каждая строка в свой столбец. Само перестроение строки —
   состояние компонента, оно в блоке 5.
   Вкладки уже уезжают вбок: .tk-tabs--scroll. */

@media (max-width: 680px) {
  .tk-price .tk-sec-head { margin-bottom: var(--s-4); }
  .tk-price .tk-sec-head .tk-btn { width: 100%; }

  .tk-price__panel { margin-top: var(--s-4); }             /* макет 138 − 122 */
  .tk-price__box { padding: var(--s-2) var(--s-card); }    /* макет 8 / 20 / 8 */
  .tk-price__footnote { margin-top: var(--s-4); }          /* макет 666 − 650 */
}


/* ══ 4. Наши специалисты · 345:13821 ══════════════════════════
   На 375 врачи стоят в ДВА столбца по 160,5 — сетка не сваливается
   в один, как остальные .tk-grid--4. Плитка карточки и подпись —
   состояние компонента, в блоке 5. */

@media (max-width: 680px) {
  .tk-doctors .tk-sec-head { margin-bottom: var(--s-4); }
  .tk-doctors .tk-sec-head .tk-btn { width: 100%; }

  .tk-doctors .tk-grid--4 {
    grid-template-columns: repeat(2, 1fr);
    column-gap: 14px;              /* макет 14; шага 14 в сетке нет */
    row-gap: var(--s-4);           /* макет 16 (483 − 467) */
  }

  /* Подписи у соседей разной длины, а плитка теперь видна — карточки
     тянутся до высоты ряда, чтобы низ плиток стоял по одной линии.
     Тот же приём, что у .tk-promos__list > li в sections.css. */
  .tk-doctors .tk-grid--4 > li { display: flex; }
  .tk-doctors .tk-card-doctor { width: 100%; }

  /* Пилюли «К ВРАЧУ» на мобильном макете нет: на карточке 160 она
     закрывает половину портрета. Ссылка — вся карточка, доступность
     не страдает. */
  .tk-doctors__cta { display: none; }
}


/* ══ 5. Мобильные состояния канонических компонентов ══════════
   ВНИМАНИЕ. Ниже правится не раскладка секции, а сами компоненты
   .tk-card-service, .tk-card-doctor и .tk-price-row: на 375 они
   выглядят иначе везде, где встретятся, а не только на главной.
   По правилу «никаких переопределений канонических классов» этим
   правилам место в components.css, рядом с его собственным
   @media (max-width: 680px). Здесь они собраны отдельным блоком,
   чтобы переехать туда одним куском; модификатор завести нельзя —
   он потребовал бы правки разметки. */

@media (max-width: 680px) {

  /* Услуга (345:13730). На 375 карточка ложится поперёк: 335×220,
     скругление 20, а не карточное 24. Затемнение идёт во всю высоту
     тремя стопами, а не только по нижней трети. */
  .tk-card-service {
    aspect-ratio: 335 / 220;
    border-radius: var(--r-image);
  }
  .tk-card-service::after {
    inset: 0;
    height: auto;
    background: linear-gradient(to bottom,
      color-mix(in srgb, var(--c-ink-green) 12%, transparent) 0%,
      color-mix(in srgb, var(--c-ink-green) 35%, transparent) 55%,
      color-mix(in srgb, var(--c-ink-green) 90%, transparent) 100%);
  }
  .tk-card-service__body { padding: var(--s-5); }   /* макет 20 */
  /* Пилюли «ПОДРОБНЕЕ» поверх фото на мобильном макете нет —
     карточка целиком ссылка, дублирующая метка не нужна. */
  .tk-card-service__action { display: none; }

  /* Врач (345:13825). Карточка становится плиткой --c-mist со
     скруглением 20: портрет вверху без собственных углов, подпись
     на плитке с полями 12 / 14 / 14 и просветом 4. */
  .tk-card-doctor {
    gap: var(--s-1);
    background: var(--c-mist);
    border-radius: var(--r-image);
    overflow: hidden;
  }
  .tk-card-doctor__photo {
    aspect-ratio: 160 / 190;        /* макет 160,5×190 */
    border-radius: 0;               /* углы режет сама плитка */
  }
  .tk-card-doctor__name {
    margin-top: var(--s-2);         /* 8 + просвет 4 = 12 от портрета */
    padding-inline: 14px;           /* макет 14; шага 14 в сетке нет */
    /* В макете фамилия 16, имя-отчество 12 — двух кеглей в одном абзаце
       разметка не различает. Берём ступень body: на 161-пиксельной
       карточке ступень body-lg (17) рвёт имена на три строки. */
    font-size: var(--t-body-size);
  }
  .tk-card-doctor__role {
    padding-inline: 14px;
    padding-bottom: 14px;
  }

  /* Строка прайса (345:13798). Три колонки складываются в одну:
     код → наименование → цена, просвет 4, поля 16 сверху и снизу.
     Разделителей между строками в мобильном макете нет — строки
     разделяет воздух. */
  .tk-price-row {
    grid-template-columns: 1fr;
    gap: var(--s-1);
    padding-block: var(--s-4);
    border-bottom: 0;
  }
}

/* ═══ главная · m3 ═══ */
/* ТОМОКО — мобильная раскладка блока M3:
   «Наши ценности», «Отзывы пациентов», «Акции и предложения»,
   «Новости и события», «Оптика», финальный блок (CTA + подвал).

   Снято 27.08.2026 с мобильного артборда Figma «М · Главная /» 345:13655
   (полотно 375), узлы 345:13886, 345:13903, 345:13930, 345:13961,
   345:13992, 345:14000.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам. Новых элементов нет ни одного — бургер и мобильное меню,
   единственная разметка, которой на десктопе физически не существует,
   уже заведены в M1.

   Подключать последним: tokens.css → base.css → components.css →
   sections.css → mobile-m1.css → mobile-m2.css → mobile-m3.css.
   Часть правил спорит с блоками @media (max-width: 680px) в base.css,
   components.css и sections.css при равной специфичности и выигрывает
   только за счёт порядка подключения.

   Точка перелома одна — 680, как во всей системе. Поля 20 и сжатую
   шкалу кеглей даёт tokens.css, здесь они не трогаются.
   Теней нет ни одной, элевация только цветом.

   Расхождения макета с дизайн-системой, которые сознательно НЕ
   реализованы (кегль и насыщенность заголовков секций, отбивка секции
   44 против 56, оранжевые заголовки колонок подвала, квадратные
   соцкнопки, сокращённые тексты), перечислены в notes отчёта —
   в CSS они не заводились. */


@media (max-width: 680px) {

/* ══ 1. Наши ценности · 345:13886 ═══════════════════════════════════════
   Один столбец даёт base.css. В макете просвет между плитками 16, а не
   сеточные 24; заголовок секции отбит от первой плитки тоже на 16. */

.tk-values .tk-sec-head { margin-bottom: var(--s-4); }
.tk-values .tk-grid--3  { gap: var(--s-4); }

/* Плитка: поля 24 (на мобильных --s-card сжимается до 20, макету нужно
   24), внутренний просвет 8 вместо канонических 16 у .tk-card-value. */
.tk-values__card {
  padding: var(--s-6);
  gap: var(--s-2);
}

/* Иконка 80 вместо 88. Канонический .tk-card-value__icon не трогаем —
   размер задаётся через плитку секции. */
.tk-values__card .tk-card-value__icon {
  width:  var(--s-20);
  height: var(--s-20);
}


/* ══ 2. Отзывы пациентов · 345:13903 ════════════════════════════════════
   Две перестройки: карточки площадок встают в два столбца (а не в один,
   как схлопывает .tk-grid--2), а слайдер отзывов превращается в
   настоящую горизонтальную ленту с прокруткой пальцем. */

.tk-reviews .tk-sec-head {
  gap: var(--s-4);              /* макет: заголовок → дата снятия 16 */
  margin-bottom: var(--s-4);
}

/* ── Карточки площадок (345:13906) ──
   В макете два узких блока по 161,5 через 12: заливка mist, без обводки.
   minmax(0, 1fr), а не 1fr: минимальная ширина элемента сетки по
   умолчанию равна min-content, и колонка раздувается по самой длинной
   неразрывной строке — карточки вылезают за экран. */
.tk-reviews .tk-grid--2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--s-3);
}

/* Обводку не снимаем, а гасим цветом: 1,5px остаются в габарите, и
   поле 16 вместе с ними дают макетные 18. */
.tk-reviews__platform {
  flex-direction: column;
  align-items: stretch;
  gap: var(--s-2);              /* макет 6 → ближайший шаг 8 */
  padding: var(--s-4);
  background: var(--c-mist);
  border-color: transparent;
  border-radius: var(--r-image);   /* макет 20 */
}

/* Сбрасываем растяжки, заведённые для горизонтальной раскладки:
   в колонке flex-basis и flex-grow меряются по высоте и ломают блок. */
.tk-reviews__platform-data { flex: none; order: 0; }

/* Кнопка во всю ширину плитки. Боковые поля 32 в колонку 161 не
   помещаются — слово «ЧИТАТЬ» вместе с ними шире плитки. Правится
   только геометрия, цвет и типографика остаются каноническими. */
.tk-reviews__platform .tk-btn {
  flex: none;
  width: 100%;
  padding-inline: calc(var(--s-4) - var(--bw-outline));
}

/* Рейтинг прижимался вправо — в колонке выравнивается по левому краю. */
.tk-reviews__rating { align-items: flex-start; }

/* Логотипа площадки в макете нет вовсе. Картинку не гасим — уменьшаем
   до 24, чтобы площадка опознавалась значком, а не только подписью. */
.tk-reviews__logo { width: var(--s-6); height: var(--s-6); }

/* ── Лента отзывов (345:13915) ──
   В макете карточки 300 стоят в ряд через 12 и уезжают за правый край
   экрана — следующая видна краем. Сетка 3×1fr превращается в
   однорядную ленту с прокруткой и примагничиванием. */
.tk-reviews__slider { margin-top: var(--s-4); }

.tk-reviews__slider .tk-grid--3 {
  grid-template-columns: none;
  grid-auto-flow: column;
  /* 300 — ширина карточки в макете. Ограничение по вьюпорту оставляет
     край следующей карточки видимым и на экранах уже 375. */
  grid-auto-columns: min(300px, calc(100vw - var(--l-page-padding) * 3));
  gap: var(--s-3);
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  /* Лента идёт до края экрана: гасим поля контейнера и возвращаем их
     внутренним отступом, чтобы первая карточка стояла по сетке.
     scroll-padding нужен, иначе примагничивание уводит карточку
     под самый край и поле 20 пропадает. */
  margin-inline: calc(var(--l-page-padding) * -1);
  padding-inline: var(--l-page-padding);
  scroll-padding-inline: var(--l-page-padding);
}
.tk-reviews__slider .tk-grid--3::-webkit-scrollbar { display: none; }
/* position обязателен: подписи .visually-hidden внутри карточек лежат
   абсолютом, и без ближайшего позиционированного предка они считаются
   от корня — вылезают из ленты и тянут горизонтальную прокрутку всей
   страницы на ширину неувиденных отзывов. */
.tk-reviews__slider .tk-grid--3 > li {
  position: relative;
  scroll-snap-align: start;
}

/* Карточка отзыва: поля 24 (--s-card на мобильных даёт 20), просвет 12. */
.tk-reviews__card {
  padding: var(--s-6);
  gap: var(--s-3);              /* макет 10 → шаг сетки 12 */
}


/* ══ 3. Акции и предложения · 345:13930 ═════════════════════════════════
   Один столбец даёт base.css, коробка карточки уже описана в sections.css.
   Здесь метрика мобильного макета: просветы 16, радиус 20, кадр 335×190. */

.tk-promos .tk-sec-head { margin-bottom: var(--s-4); }
.tk-promos .tk-grid--3  { gap: var(--s-4); }

/* Единственное действие секции в макете — кнопка во всю ширину. В шапке
   её не подвинуть, поэтому растягиваем на месте: правится только
   геометрия, цвет и типографика остаются каноническими. */
.tk-promos .tk-sec-head .tk-btn { width: 100%; }

.tk-promos__card { border-radius: var(--r-image); }   /* макет 20 */
.tk-promos__card .tk-card-post__cover { aspect-ratio: 335 / 190; }

.tk-promos__body { gap: var(--s-3); }                 /* макет 10 */

/* Бейдж «АКЦИЯ» в макете стоит на 14/14 — то же место, что у
   канонического чипа даты; выравниваем по нему, а не по десктопным 20. */
.tk-promos__badge { top: var(--s-3); left: var(--s-3); }


/* ══ 4. Новости и события · 345:13961 ═══════════════════════════════════
   На мобильном карточка статьи выглядит как карточка акции: белая
   коробка с волосяной обводкой, обложка во всю её ширину, текст в полях
   20. На десктопе коробки нет — это перестроение, а не правка кита. */

.tk-blog .tk-sec-head { margin-bottom: var(--s-4); }
.tk-blog .tk-grid--4  { gap: var(--s-4); }
.tk-blog .tk-sec-head .tk-btn { width: 100%; }

.tk-blog__card {
  gap: 0;                       /* просветы задаёт коробка, не .tk-card-post */
  padding-inline: var(--s-5);
  padding-bottom: var(--s-5);
  background: var(--c-paper);
  border: var(--bw-outline) solid var(--c-hairline);   /* та же толщина, что у .tk-promos__card */
  border-radius: var(--r-image);                       /* макет 20 */
  overflow: hidden;
}

/* Обложка выходит из полей коробки во всю её ширину; углы режет коробка,
   поэтому собственное скругление снимается. */
.tk-blog__card .tk-card-post__cover {
  margin: 0 calc(var(--s-5) * -1) var(--s-4);   /* макет: отбивка до заголовка 18 → шаг 16 */
  border-radius: 0;
  aspect-ratio: 335 / 190;
}

.tk-blog__more { padding-top: var(--s-3); }     /* макет 10 → шаг сетки 12 */


/* ══ 5. Оптика · 345:13992 ══════════════════════════════════════════════
   Плашка в колонку, но фото стоит в СЕРЕДИНЕ: лейбл → заголовок → ФОТО →
   текст → кнопка. Тот же приём, что в карточке оборудования (M2):
   обёртка текста растворяется, её дети становятся прямыми элементами
   плашки-флексбокса, порядок правится тремя правилами order. */

.tk-optics__card {
  gap: var(--s-3);              /* макет 12 */
  padding: var(--s-6);          /* макет 24 по бокам, 28 сверху и снизу */
}

.tk-optics__body { display: contents; }
.tk-optics__body > :nth-child(-n+2) { order: -1; }   /* лейбл и заголовок — над фото */
.tk-optics__body > :nth-child(n+3)  { order:  1; }   /* текст и кнопка — под фото */

/* В sections.css фото поднято наверх (order: -1) — возвращаем на место. */
.tk-optics__media { order: 0; }
.tk-optics__media img {
  aspect-ratio: 287 / 180;      /* кадр макета */
  border-radius: var(--r-image);   /* макет 16 → ближайший токен 20 */
}


/* ══ 6. Финальный блок · 345:14000 ══════════════════════════════════════
   Порядок блоков в макете совпадает с DOM: заголовок, лид, кнопка, фото,
   шов, логотип, адрес, соцсети, контакты, три колонки ссылок, плашки,
   карты, шов, копирайт, политика. Перестраивается только метрика:
   в макете весь подвал — одна колонка с равным просветом 26. */

/* ── CTA · заголовок, лид, кнопка, фото ── */
.tk-final__cta-inner {
  gap: var(--s-6);                        /* макет 26 → шаг сетки 24 */
  padding-block: var(--s-12) var(--s-6);  /* макет 44 сверху, 26 до шва */
}
.tk-final__cta-media img {
  aspect-ratio: 335 / 220;                /* кадр макета */
  border-radius: var(--r-image);          /* макет 20 */
}

/* ── Подвал ── */
.tk-final__footer { padding-bottom: var(--s-8); }   /* макет 30 */

/* Колонки подвала идут одна за другой с тем же шагом 24, что и всё
   остальное: канонические 40 на мобильном рвут подвал на куски. */
.tk-final__footer .tk-footer__cols {
  gap: var(--s-6);
  padding-block: var(--s-6);
}

.tk-final__brand { gap: var(--s-6); }

/* Логотип 63×38 в макете против 94×56 на десктопе. Высоту не задаём —
   пропорцию держат атрибуты width/height картинки. */
.tk-final__brand > a > img { width: 63px; }

/* Верхняя отбивка блока контактов уже заложена в просвет .tk-final__brand. */
.tk-final__contacts { margin-top: 0; }

/* Плашки партнёров: у картинок разные натуральные размеры (96×74,
   232×100, 170×100) и в 335 они не помещаются. В макете все три
   приведены к высоте 52 — тогда ряд занимает 276,5 и встаёт в строку. */
.tk-final__plates { gap: var(--s-3); }        /* макет 14 → шаг сетки 12 */
.tk-final__plates img {
  height: 52px;                               /* высота ряда плашек в макете */
  width: auto;
}

.tk-final__marks { padding-bottom: var(--s-6); }   /* макет 26 */

}

/* ═══ akcii ═══ */
/* ТОМОКО — мобильная адаптация страницы «Акции — каталог» /akcii/.
   Снято 28.08.2026 с артборда Figma «М · Акции  /akcii/» 345:15015
   (375×3585), файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы. Новых элементов нет — бургер и мобильное меню,
   единственная разметка, которой на десктопе физически не существует,
   заведены в mobile-m1.css.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Часть правил ниже
   дословно спорит с блоком @media (max-width: 680px) в page-akcii.css
   при равной специфичности и выигрывает только за счёт порядка
   подключения — это и есть способ поправить замеры, снятые раньше
   по метаданным, не трогая сгенерированный pages.css.

   Что уже сделано и здесь не повторяется:
     • шапка, бургер, раскрытое меню          — mobile-m1.css;
     • финальный блок (CTA и подвал)          — mobile-m3.css, узел 358:4187
       мобильного артборда совпадает с ним дословно;
     • отбивка крошек 32 и «/» вместо тире    — components.css;
     • тап-цель крошек 24                     — mobile-m1.css, блок тап-целей;
     • карточка акции на 375                  — mobile.css, блок 3: белая
       коробка, скругление 20 (--r-image), кадр обложки 335×190, бейдж
       на 12/12, поля текста 20, просвет 10 → 12, просвет ряда 16.
       Класс .tk-promos на секции каталога стоит именно ради этого —
       вся метрика карточки приезжает даром. Здесь только то, чем
       каталог отличается: кегль заголовка карточки и высота коробки;
     • один столбец сетки .tk-grid--3         — base.css;
     • сброс .tk-akcii__card { min-height: 0 } — page-akcii.css: в один
       столбец карточка набирает макетные 295 сама, десктопные 470
       растянули бы её вдвое.

   Точка перелома одна — 680. Поля 20 даёт токен --l-page-padding,
   сжатую шкалу кеглей — он же. Теней нет ни одной, элевация только
   цветом и волосяной обводкой.

   Расхождения с макетом, сознательно НЕ реализованные (кегли 9, 11 и 13
   мельче нижней ступени шкалы; четыре карточки в макете против шести
   в разметке — это сокращение макета, а не свойство страницы),
   перечислены в notes отчёта — в CSS они не заводились. */


@media (max-width: 680px) {

/* ══ 1. Шапка страницы · 345:15059 ═══════════════════════════════════════
   Кадр 375×246: поля 20 держит .tk-container, вертикальные — 36 сверху
   и 28 снизу, просветы между крошками, заголовком и лидом по 14.
   Крошки лежат в своей обёртке (.tk-crumbs, отбивка 32 из components.css),
   поэтому верхнее поле блока — ровно просвет 14.
   Сумма сходится: 36 + 13 + 14 + 72 + 14 + 69 + 28 = 246. */

.tk-akcii__head {
  gap: var(--s-4);              /* макет 14 → ближайший шаг сетки 16 */
  padding-top: var(--s-4);      /* просвет от крошек до заголовка, тот же 14 */
  padding-bottom: var(--s-8);   /* макет 28 → шаг 32 */
}

/* Заголовок в макете 36 / leading-none / −1,3px (345:15061). Мобильная
   ступень --t-display-md-size даёт 34, --t-display-size — 38; макетные
   36 ровно между ними, ступени 36 в шкале нет. Ставим замер, как это уже
   сделано на «М · О клинике» (там тот же кегль 36 и тот же трекинг):
   заводить третью мобильную ступень заголовка ради двух пунктов незачем,
   а поехать вслед за Figma тут можно только в самой Figma.
   В page-akcii.css на 680 стоял подобранный 34 — эта строка его правит. */
.tk-akcii__title {
  font-size:      36px;         /* макет 345:15061 */
  line-height:    1;
  letter-spacing: -0.036em;     /* −1,3px при кегле 36 */
}

/* Лид на мобильном опускается на ступень: в макете 15 / 1.55 (345:15062),
   а класс .t-body-lg в разметке даёт 17. Мера строки снимается —
   колонка одна. Цвет менять не нужно: #7c8a81 — это --c-fog, ровно то,
   что даёт .c-muted. */
.tk-akcii__lead {
  max-width:   none;
  font-size:   var(--t-body-size);
  line-height: 1.5;             /* макет 1.55; проза, а не подпись */
}


/* ══ 2. Сетка акций · 345:15063 ══════════════════════════════════════════
   Шесть карточек 335×295 в один столбец с просветом 14; и столбец,
   и просвет уже дают base.css и mobile.css. Здесь остаётся кегль
   заголовка карточки и нижняя граница секции. */

/* ОТКЛОНЕНИЕ: название акции в макете 19 SemiBold / 1.18 / −0,4px
   (345:15069), а канонический .tk-card-post__title — 17 Regular / 1.2.
   Ступени 19 в шкале нет, берём ближайшую body-lg (17), насыщенность
   и интерлиньяж — из макета. Правится КАНОНИЧЕСКИЙ класс кита, поэтому
   строго под .tk-akcii: тот же компонент стоит в секции «Акции» на
   главной и в подборке на детальной акции, там его вид не меняется.
   Тот же приём и та же причина, что у .tk-catalog .tk-card-service__title
   в mobile-page-uslugi.css. */
.tk-akcii .tk-card-post__title {
  font-size:      var(--t-body-lg-size);
  line-height:    1.18;
  letter-spacing: -0.021em;             /* −0,4px при макетном кегле 19 */
  font-weight:    var(--w-semibold);
}

/* Нижняя граница секции: в макете от последней карточки до подвала 36
   (кадр 345:15063 высотой 1258 при нижней кромке карточек 1222).
   Канонические --s-section (56 на мобильном) здесь велики. */
.tk-akcii { padding-bottom: var(--s-10); }   /* макет 36 → шаг 40 */

}

/* ═══ akciya ═══ */
/* ТОМОКО — мобильная адаптация страницы «Акция — детальная» /akcii/<slug>/.
   Снято 28.08.2026 с артборда Figma «М · Акция  /akcii/<slug>/» 345:15409
   (375×4930), файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы. Новых элементов нет — бургер и мобильное меню,
   единственная разметка, которой на десктопе физически не существует,
   заведены в mobile-m1.css.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Правила ниже
   дословно спорят с блоком @media (max-width: 680px) в page-akciya.css
   при равной специфичности и выигрывают только за счёт порядка
   подключения. Это существенно: в page-akciya.css тот блок помечен
   «ОТДЕЛЬНОГО МОБИЛЬНОГО МАКЕТА У ЭТОЙ СТРАНИЦЫ НЕТ» и выведен по
   правилам системы. Макет нашёлся — и он расходится с выведенной
   раскладкой в главном: порядок блоков на 375 другой.

   ПЕРЕСТРОЕНИЕ ПОРЯДКА. На 375 макет читается так:
       крошки → фотография акции → заголовок → срок → лид →
       плашка условий с ценой и кнопкой → «Что входит» →
       «Кому подойдёт» → «Другие предложения».
   В разметке фотография стоит ПОСЛЕ текста героя, а плашка условий
   лежит во второй секции рядом с составом обследования. Оба различия
   снимаются свойством order внутри уже существующих flex-контейнеров:
   фотографии --1 в .tk-akciya-hero__inner, заголовку --1 в
   .tk-akciya-hero__text, плашке условий --1 в .tk-akciya-deal__inner.
   Разметка не трогается, порядок обхода с клавиатуры не ломается:
   в плашке состава, которая визуально уезжает вниз, фокусируемых
   элементов нет вовсе.

   Что уже сделано и здесь не повторяется:
     • шапка, бургер, раскрытое меню          — mobile-m1.css;
     • финальный блок (CTA и подвал)          — mobile-m3.css, узел 358:4543
       мобильного артборда совпадает с ним дословно;
     • отбивка крошек 32 и «/» вместо тире    — components.css;
     • тап-цель крошек 24                     — mobile-m1.css, блок тап-целей;
     • карточка акции в подборке «Другие
       предложения» на 375                    — mobile.css, блок 3 (класс
       .tk-promos на секции стоит ровно ради этого), плюс оттуда же
       кнопка «ВСЕ АКЦИИ» во всю ширину и просвет ряда 16;
     • один столбец сеток .tk-grid--3         — base.css;
     • ширина плашки условий 100% и поля 20   — page-akciya.css.

   Точка перелома одна — 680. Поля 20 и сжатую шкалу кеглей даёт
   tokens.css. Теней нет ни одной, элевация только цветом и градиентом.

   Расхождения с макетом, сознательно НЕ реализованные (кегли 9, 10, 13
   и 14 мельче нижней ступени шкалы; условия одним абзацем вместо списка;
   низкая детализация кадра «Другие акции»), перечислены в notes отчёта —
   в CSS они не заводились. */


@media (max-width: 680px) {

/* ══ 1. Герой акции · 345:15453 ══════════════════════════════════════════
   Кадр 375×724: поля 20 держит .tk-container, сверху 32 до крошек,
   между всеми строками по 14, снизу 24. Крошки лежат в своей обёртке
   (.tk-crumbs, отбивка 32 из components.css — ровно макетные 32),
   поэтому верхнее поле секции — ровно просвет 14.

   Нижнее поле тоже 14, а не макетные 24: 24 в макете — это просвет от
   плашки условий до «Что входит», а сама плашка на сайте лежит в
   следующей секции. 24 отдаём просвету .tk-akciya-deal__inner ниже. */

.tk-akciya-hero { padding-block: var(--s-4); }   /* макет 14 → шаг 16 */

.tk-akciya-hero__inner {
  flex-direction: column;
  align-items: stretch;    /* иначе колонка ужимает плашки по содержимому */
  gap: var(--s-4);         /* макет 14 → шаг 16 */
  position: relative;      /* система координат для бейджа «АКЦИЯ», см. ниже */
}

/* Фотография поднимается над текстом — первое, что видно на 375. */
.tk-akciya-hero__photo {
  order: -1;
  width: 100%;
  aspect-ratio: 335 / 200;         /* макет 345:15455; на 680 в page-akciya.css
                                      стоял системный кадр 335/230 */
  border-radius: var(--r-image);   /* макет 20 */
}

.tk-akciya-hero__text { gap: var(--s-4); }   /* макет 14 → шаг 16 */

/* Заголовок поднимается над строкой меток: в макете сперва название
   акции, под ним срок действия (345:15458 → 345:15459). */
.tk-akciya-hero__title {
  order: -1;
  font-size:      var(--t-page-title-size);  /* макет 30 — ровно мобильная ступень */
  line-height:    1.06;                      /* макет 1.06, токен даёт 1.08 */
  letter-spacing: -0.033em;                  /* −1px при кегле 30 */
}

/* Бейдж «АКЦИЯ» в макете снят с текстовой колонки и посажен на
   фотографию, на 14/14 — ровно как у карточек акций в каталоге и на
   главной. В разметке чип лежит внутри строки меток, перенести его
   в другой контейнер медиазапросом нельзя, поэтому он вынимается из
   потока и позиционируется от .tk-akciya-hero__inner.

   Координаты держатся на двух условиях, оба заданы в этом же блоке:
   фотография идёт первой (order: −1), у .tk-akciya-hero__inner нет
   вертикальных полей — значит верх фотографии совпадает с верхом
   системы координат. Горизонталь считается от края экрана, потому что
   абсолют отмеряется от padding-box контейнера, а поля 20 лежат как раз
   на нём: 20 поля + 12 отступ бейджа. Правится только посадка чипа,
   сам .tk-chip--accent канонический и не трогается. */
.tk-akciya-hero__marks .tk-chip {
  position: absolute;
  top:  var(--s-3);                                        /* макет 14 → 12, как у .tk-promos__badge */
  left: calc(var(--l-page-padding) + var(--s-3));
}

/* Лид на мобильном опускается на ступень: в макете 15 / 1.55 (345:15460),
   а класс .t-body-lg в разметке даёт 17. Своего класса у лида в разметке
   нет, поэтому правится каноническая утилита — но строго внутри героя
   этой страницы, на остальные .t-body-lg сайта это не действует. */
.tk-akciya-hero__text .t-body-lg {
  font-size:   var(--t-body-size);
  line-height: 1.5;             /* макет 1.55; проза, а не подпись */
}

/* Кнопка «ЗАПИСАТЬСЯ ПО АКЦИИ» из героя на 375 снимается: в макете её
   нет, а на сайте она встала бы вплотную к такой же кнопке в плашке
   условий, которая по перестроению порядка идёт сразу следом. Это не
   потеря содержания — обе ссылки ведут в одну цель (#zapis) и подписаны
   одинаково, остаётся та, что нарисована в макете. */
.tk-akciya-hero__cta { display: none; }


/* ══ 2. Условия и что входит · 345:15461 + 345:15468 ═════════════════════
   В макете плашка условий — последняя строка героя, а «Что входит» идёт
   отдельным блоком под ней. В разметке они соседи по одной секции,
   поэтому плашка поднимается вверх свойством order. */

.tk-akciya-deal { padding-bottom: var(--s-8); }   /* макет 32 (кадр 345:15468) */

.tk-akciya-deal__inner {
  flex-direction: column;
  align-items: stretch;    /* иначе колонка ужимает плашки по содержимому */
  gap: var(--s-6);         /* макет 24: от плашки условий до «Что входит» */
}


/* ── Плашка условий · 345:15461 ────────────────────────────────────────
   Кадр 335×208: поля 20, просветы 10, скругление 20, градиент сверху вниз
   #268034 → #12301c. Высота сходится: 20 + 37 + 10 + 63 + 10 + 48 + 20 = 208. */

.tk-akciya-terms {
  order: -1;
  gap: var(--s-3);                 /* макет 10 → шаг сетки 12 */
  background: var(--g-green);      /* на 375 градиент вертикальный, на десктопе --g-green-x */
  border-radius: var(--r-image);   /* макет 20; десктопные 24 = --r-card */
}

/* Цена и старая цена в макете стоят в одну строку по центру (345:15462),
   а не по базовой линии: кегли слишком разные, базовая линия их разводит. */
.tk-akciya-terms__price {
  align-items: center;
  gap: var(--s-3);                 /* макет 10 → шаг 12 */
}

/* ОТКЛОНЕНИЕ КЕГЛЯ: в макете 30 / normal / −1px (345:15463). Ступени 30
   в мобильной шкале нет — --t-page-title-size даёт 30, но это ступень
   заголовка страницы, цене она не по смыслу. Кегль оставлен сырым
   и замеренным, как и десктопные 40 в page-akciya.css; на 680 там стоял
   подобранный 32. */
.tk-akciya-terms__now {
  font-size:      30px;
  letter-spacing: -0.033em;        /* −1px при кегле 30 */
}

/* Условия в макете набраны одним абзацем без маркеров; в разметке это
   список из трёх пунктов, и списком он остаётся — убирать содержимое
   медиазапросом нельзя. Ужимаем просвет, чтобы блок читался абзацем. */
.tk-akciya-terms__list { gap: var(--s-2); }   /* макет: строки одного абзаца */


/* ── Что входит · 345:15468 ────────────────────────────────────────────
   На 375 плашки нет вовсе: заголовок и строки лежат прямо на бумаге,
   во всю ширину колонки, разделённые волосяными линиями. Кадр 375×423:
   поля 20, просвет 12, снизу 32. */

.tk-akciya-incl {
  display: flex;
  flex-direction: column;
  gap: var(--s-3);           /* макет 12: от заголовка до первой строки */
  padding: 0;                /* на 375 плашки нет — mist-подложка снимается */
  background: none;
  border-radius: 0;
}

/* Заголовок в макете 26 / 1.05 / −0,8px (345:15469) — это ровно мобильная
   ступень --t-heading-size с её же трекингом (−0,8 / 26 = −0,031em против
   токенных −0,03em). На десктопе кегль сырой 28, здесь ступень сошлась. */
.tk-akciya-incl__title {
  font-size:      var(--t-heading-size);
  line-height:    1.05;
  letter-spacing: var(--t-heading-ls);
}

.tk-akciya-incl__list {
  display: flex;
  flex-direction: column;
  gap: var(--s-3);           /* макет 12 между строками */
}

/* Строка состава: волосяная линия сверху остаётся, поля ужимаются
   с 16 до 12, содержимое прижимается влево — иначе оранжевый маркер,
   название и пометка разъедутся по всей ширине от space-between. */
.tk-akciya-incl__row {
  justify-content: flex-start;
  gap: var(--s-3);           /* макет 12 */
  padding-block: var(--s-3); /* макет 12 */
}

/* Оранжевый маркер 6px (345:15471, заливка #f39314 = --c-orange).
   На десктопе его нет — он появляется ровно на 375. Рисуется
   псевдоэлементом, как маркеры .tk-akciya-terms__item в этой же
   странице: чистая декорация, отдельного файла ей заводить незачем. */
.tk-akciya-incl__row::before {
  content: "";
  flex: none;
  width: 6px;
  height: 6px;
  border-radius: var(--r-pill);
  background: var(--c-orange);
}

/* Название занимает всю свободную ширину, поэтому пометка «входит»
   уезжает к правому краю сама, без space-between. min-width нужен,
   чтобы длинное название переносилось, а не распирало строку. */
.tk-akciya-incl__name {
  flex: 1 1 auto;
  min-width: 0;
  line-height: 1.5;          /* макет 15 / 1.5; на десктопе 1.45 */
}


/* ══ 3. Кому подойдёт · 345:15485 ════════════════════════════════════════
   Кадр 375×526: поля 20, вертикальные 36, просветы 14. Три плитки
   335×126 в один столбец. Заголовок в макете 28, ступени 28 в шкале
   нет — оставлен канонический .t-heading-lg (30 на мобильном). */

.tk-akciya-fit { padding-block: var(--s-10); }        /* макет 36 → шаг 40 */

.tk-akciya-fit__title { margin-bottom: var(--s-4); }  /* макет 14 → шаг 16 */

.tk-akciya-fit__list { gap: var(--s-4); }             /* макет 14; канон --s-gutter 24 */

/* На 375 плитка меняет материал: не белая коробка с волосяной обводкой,
   а сплошная mist со скруглением 20 (345:15487). Поля 20 = --s-card
   на мобильном, просвет 8. */
.tk-akciya-fit__card {
  gap: var(--s-2);                 /* макет 8 */
  padding: var(--s-card);          /* макет 20 */
  background: var(--c-mist);
  border: 0;                       /* обводка снимается вместе с белым фоном */
  border-radius: var(--r-image);   /* макет 20; десктопные 24 = --r-card */
}

/* Заголовок плитки — 20 SemiBold (345:15488), это ровно мобильная
   ступень .t-subheading, которую h3 берёт по умолчанию. Текст — 15
   --c-fog, ровно .t-body.c-muted. Своих правил обоим не нужно;
   интерлиньяж 1.5 у текста задан в page-akciya.css и на 375 остаётся. */


/* ══ 4. Другие предложения · 345:15496 ═══════════════════════════════════
   Кадр 375×1176: вертикальные поля 36, просвет от шапки секции до
   карточек 14, между карточками 14. Сами карточки, кнопка «ВСЕ АКЦИИ»
   во всю ширину и просвет ряда приезжают из mobile.css по классу
   .tk-promos — здесь только границы секции.

   РАСХОЖДЕНИЕ С МАКЕТОМ: карточки в этом кадре нарисованы черновой
   плиткой mist с текстовым словом «АКЦИЯ» вместо оранжевого чипа
   и с датой отдельной строкой. На соседнем артборде «М · Акции»
   (345:15064) та же карточка нарисована набело — белая коробка,
   волосяная обводка, чип на обложке. Берём набело: это один компонент,
   и разводить два его вида по страницам нельзя. */

.tk-akciya-more { padding-block: var(--s-10); }            /* макет 36 сверху и снизу */

.tk-akciya-more .tk-sec-head { margin-bottom: var(--s-4); } /* макет 14 → шаг 16 */

}

/* ═══ blog ═══ */
/* ТОМОКО — мобильная адаптация страницы «Блог — каталог» /blog/.
   Снято 28.08.2026 с артборда Figma «М · Блог  /blog/» 345:15106
   (375×3829), файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы. Никакой отдельной мобильной вёрстки нет; единственная
   разметка, которой на десктопе физически не существует, — бургер
   и раскрытое меню — заведена в mobile-m1.css и здесь не повторяется.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Часть правил ниже
   спорит с блоком @media (max-width: 680px) в page-blog.css при равной
   специфичности и выигрывает только за счёт порядка подключения.

   ЗАЧЕМ ФАЙЛ ВООБЩЕ НУЖЕН. В page-blog.css мобильная раскладка была
   ВЫВЕДЕНА, а не снята: там прямо написано «отдельного мобильного макета
   у /blog/ нет», и метрика бралась с мобильной секции «Новости и события»
   главной (345:13961). Макет теперь есть, и он расходится с выведенным
   ровно в семи местах — они и составляют весь смысл этого файла:
     1. заголовок страницы 36, а не 34 (345:15152);
     2. лид опускается до 15 при интерлиньяже 1,55 — класс .t-body-lg
        давал 17 (345:15153);
     3. у вкладок-фильтров своя мобильная геометрия: поля 16 против
        десктопных 24, вертикальные 10 против 13, кегль 11 против 12,
        цвет надписи чернильный, а не приглушённый (345:15155);
     4. лестница шапки: 14 между строками и 28 до фильтров, дальше 14
        до сетки — вместо выведенных 16 / 32 / 32;
     5. заголовок карточки 19/1,18, а не канонические 17/1,2 (345:15167);
     6. пагинация: кружки заливкой --c-mist без обводки, 42×41 против
        48×48, кегль 14 SemiBold (345:15201);
     7. низ секции 36, а не канонические --s-section (56 на мобильном).

   Что уже сделано и здесь сознательно НЕ повторяется:
     • шапка, бургер, раскрытое меню            — mobile-m1.css;
     • финальный блок (CTA и подвал, 358:4276)  — mobile-m3.css;
     • крошки со слэшем и их отбивка            — components.css;
     • одна колонка в сетке                     — base.css (.tk-grid--4);
     • прокрутка полосы фильтров вбок           — .tk-tabs--scroll
       (components.css) + .tk-blogcat__filters (page-blog.css):
       полоса едет внутри себя, страница вбок не едет никогда;
     • коробка карточки (белая плашка, обводка 1.5, скругление 20,
       поля 20, обложка 335×190 во всю ширину коробки) — page-blog.css:
       совпало с макетом 345:15162 до пикселя, трогаем только те четыре
       свойства, которые разошлись.

   Поля 20 и сжатую шкалу кеглей даёт tokens.css, здесь они не трогаются.
   Теней нет ни одной: элевация только цветом и волосяной обводкой.

   ПЕРЕОПРЕДЕЛЕНИЯ КАНОНИЧЕСКИХ КЛАССОВ. Их четыре — .tk-tab (через
   .tk-blogcat__filter), .tk-card-post__title, .tk-chip (через
   .tk-card-post__date) и .tk-pager. Это заявленный контракт мобильного
   слоя; у каждого правила ниже стоит причина, почему без него никак. */


@media (max-width: 680px) {

/* ═══ 1. Шапка страницы (Figma 345:15150, 375×246) ═════════════════════════
   Кадр: поля 20 держит .tk-container, вертикальные 36 сверху и 28 снизу —
   здесь. Лестница «крошки → H1 → лид» с просветом 14, от лида до фильтров
   28. Крошки лежат выше, в своей полосе .tk-crumbs, поэтому верхнее поле
   блока — ровно просвет 14, а не 36.
   Сумма сходится: 36 + 13 + 14 + 72 + 14 + 69 + 28 = 246. */

.tk-blogcat__head {
  gap: 14px;               /* макет 14; ступени 14 в ритме 4px нет */
  padding-top: 14px;       /* тот же просвет: крошки → заголовок */
  padding-bottom: 0;       /* отбивку до фильтров даёт сам блок фильтров */
}

/* Кегль 36 при интерлиньяже 1,0 и трекинге −1,3px (345:15152). Ступени 36
   в шкале нет: мобильный --t-display-sm даёт 32, --t-page-title — 30.
   Заводить девятую ступень ради одной страницы дороже, чем один замер. */
.tk-blogcat__title {
  font-size: 36px;
  line-height: 1;
  letter-spacing: -0.036em;   /* −1,3px при кегле 36 */
}

/* Лид на телефоне садится со ступени body-lg (17) на body (15) с макетным
   интерлиньяжем 1,55 (345:15153). Трекинг остаётся канонический −0,03em:
   в макете у лида он нулевой, но ради 0,45px ступень не ломаем. */
.tk-blogcat__lead {
  font-size: var(--t-body-size);
  line-height: 1.55;
}


/* ═══ 2. Фильтры разделов (Figma 345:15155, 335×33) ════════════════════════
   Полоса лежит последней строкой внутри .tk-blogcat__head, поэтому
   собственный отступ 14 складывается с просветом колонки 14 и даёт
   макетные 28 от лида. */

.tk-blogcat__filters { margin-top: 14px; }   /* 14 + gap 14 = 28 из макета */

/* ПЕРЕОПРЕДЕЛЕНИЕ .tk-tab. Канонический размер вкладки — 24/13 при кегле
   12 и приглушённом цвете; на 375 четыре такие вкладки дают полосу 718
   вместо 335, и первая же строка уезжает за экран, даже с прокруткой
   ощущается как сбой. Макет (345:15156, 345:15158) сжимает пилюлю
   до 16/10 при кегле 11 и делает надпись чернильной. Без этого правила
   мобильная полоса фильтров расходится с макетом целиком, а не в детали.
   Обводка 1.5 вычитается из паддингов — тот же приём, что в .tk-btn--secondary:
   иначе вкладка станет на 3px выше макетных 33. */
.tk-blogcat__filter {
  padding: calc(10px - var(--bw-outline)) calc(var(--s-4) - var(--bw-outline));
  font-size: 11px;               /* макет 11; ступень 12 не влезает в 335 */
  letter-spacing: 0.0909em;      /* макет 1px при кегле 11 */
  color: var(--c-ink-green);     /* макет: чернильный, а не --c-fog */
}
/* Активный раздел в макете набран SemiBold (345:15157). Заливку и цвет
   надписи уже даёт .tk-blogcat__filter[aria-current] из page-blog.css. */
.tk-blogcat__filter[aria-current="page"] { font-weight: var(--w-semibold); }


/* ═══ 3. Сетка статей (Figma 345:15154) ════════════════════════════════════
   Одна колонка (base.css), просвет рядов 14, отбивка от фильтров тоже 14
   (карточки идут с шагом 14: y = 47, 378, 687, 996 при высотах 317 и 295).

   СЕЛЕКТОР СОСТАВНОЙ НАМЕРЕННО. В base.css стоит сброс
   ul[class], ol[class] { padding: 0 } — специфичность 0,1,1. Одиночный
   .tk-blogcat__list (0,1,0) проигрывает ему, и верхнее поле молча
   обнуляется. Пара классов, оба уже висят на этом же <ul>, даёт 0,2,0
   и забирает правило обратно. Та же ловушка съедает и десктопные 52
   в page-blog.css — там верхнее поле сетки сейчас не работает; чинить
   его отсюда нельзя, правила слоя живут только внутри медиазапроса. */

.tk-blogcat__list.tk-grid {
  padding-top: 14px;   /* макет: фильтры кончаются на 33, карточка на 47 */
  row-gap: 14px;
}

/* Коробка карточки (белая плашка, обводка, скругление, поля) уже собрана
   в page-blog.css и с макетом 345:15162 совпала. Здесь только две правки
   геометрии, которые в выведенной раскладке не угаданы. */

/* Отбивка обложки до заголовка: макет 18 (текстовый блок 345:15166 имеет
   верхнее поле 18), выведено было 16. */
.tk-blogcat__card .tk-card-post__cover { margin-bottom: 18px; }

/* ПЕРЕОПРЕДЕЛЕНИЕ .tk-chip (через .tk-card-post__date). Канонический чип —
   14/7 при кегле 12 и сплошной белой заливке; в макете (345:15164) он
   на 12/7, поставлен в 14 от края обложки и залит белым на 94 % — сквозь
   него просвечивает фотография. Без этого чип на 375 занимает половину
   ширины обложки и перестаёт читаться как метка даты.
   Кегль макета 9 НЕ реализован: нижняя граница читаемости слоя 11. */
.tk-blogcat__card .tk-card-post__date {
  top: 14px;
  left: 14px;
  padding: 7px var(--s-3);
  background: color-mix(in srgb, var(--c-paper) 94%, transparent);
  font-size: 11px;
  font-weight: var(--w-semibold);   /* макет SemiBold, канон Medium */
}

/* ПЕРЕОПРЕДЕЛЕНИЕ .tk-card-post__title. Канонический заголовок карточки —
   ступень body-lg (17 на мобильном) при интерлиньяже 1,2. В макете
   (345:15167) он 19 при 1,18 и трекинге −0,4px: карточка на 375 идёт
   одна в ряд и держит заголовок крупнее, чем в четырёхколоночной сетке.
   Ступени 19 в шкале нет, поэтому замер. */
.tk-blogcat__card .tk-card-post__title {
  font-size: 19px;
  line-height: 1.18;
  letter-spacing: -0.021em;   /* −0,4px при кегле 19 */
}

/* Нижняя строка карточки. Макет (345:15170): 11 SemiBold, трекинг 1,1px —
   это ровно канонические 0.1em ступени label-12, поэтому трекинг
   не трогаем, только кегль и начертание. Отбивка от заголовка 10. */
.tk-blogcat__more {
  padding-top: 10px;
  font-size: 11px;
  font-weight: var(--w-semibold);
}


/* ═══ 4. Пагинация (Figma 345:15200, 375×113) ══════════════════════════════
   Кадр: вертикальные поля 36 сверху и снизу, ряд пилюль по центру,
   просвет 8 (канонический .tk-pager даёт ровно 8 — не трогаем). */

/* 72 = 36 нижнего поля кадра «Фильтры и сетка» + 36 верхнего поля кадра
   «Пагинация». В макете внутрь этих 36 сверху попадает кнопка «ПОКАЗАТЬ
   ЕЩЁ» (345:15198), которой в разметке нет, — на сумму отбивки это
   не влияет. */
.tk-blogcat__pagination { padding-top: calc(var(--s-16) + var(--s-2)); }

/* ПЕРЕОПРЕДЕЛЕНИЕ .tk-pager. Канонический пейджер — кружок 44 (на этой
   странице 48) с волосяной обводкой и прозрачной заливкой. Мобильный макет
   (345:15202…345:15208) даёт другой компонент: пилюля 42×41 БЕЗ обводки,
   залитая --c-mist, кегль 14 SemiBold. Обводку здесь не убрать иначе —
   она объявлена на самом .tk-pager. Тап-цель 42×41 больше требуемых 24×24. */
.tk-blogcat__pager > li > a,
.tk-blogcat__pager > li > span {
  min-width: 42px;                     /* макет 42 у «1», 45 у остальных */
  height: 41px;                        /* макет: 12 + 17 + 12 */
  padding-inline: 0;                   /* макетные 18 сбоку дают ту же ширину
                                          на цифре, но раздувают пилюлю
                                          со стрелкой до 84: глиф «→» берётся
                                          из подстановочного шрифта и вдвое
                                          шире цифры. Ровный кружок надёжнее —
                                          тот же приём, что на десктопе. */
  border: 0;
  background: var(--c-mist);
  font-size: var(--t-label-14-size);   /* макет 14 — ступень label-14 */
  font-weight: var(--w-semibold);
  letter-spacing: normal;              /* цифра, капсовый трекинг не нужен */
  text-transform: none;
}
/* СЕЛЕКТОР ЧЕРЕЗ ПРЯМОГО ПОТОМКА <li> — НАМЕРЕННО. Каноническое правило
   написано как .tk-pager span и ловит не только пилюлю текущей страницы,
   но и служебный <span aria-hidden="true">→</span> ВНУТРИ ссылки-стрелки:
   тот получает вторую пилюлю поверх первой, со своим фоном и скруглением,
   сдвинутую центрированием грида. На десктопе этот же дефект виден как
   двойной кружок у стрелки (заливки там нет, но обводка удваивается) —
   чинить его надо в components.css, отсюда нельзя: правила слоя живут
   только внутри медиазапроса. Здесь стрелка приводится в порядок явно. */
.tk-blogcat__pager a > span {
  min-width: 0;
  height: auto;
  padding: 0;
  border: 0;
  background: none;
}

/* Текущая страница — зелёная пилюля. Правило повторяет каноническое,
   потому что общее правило выше сняло заливку у всех разом. */
.tk-blogcat__pager > li > [aria-current="page"] {
  background: var(--c-brand-green);
  color: var(--c-paper);
}


/* ═══ 5. Низ секции ════════════════════════════════════════════════════════
   Кадр «Пагинация» кончается на 1810, там же начинается подвал: нижнее
   поле секции 36, а не канонические --s-section (56 на мобильном). */

.tk-blogcat { padding-bottom: calc(var(--s-8) + var(--s-1)); }   /* 36 */

}


/* ═══ 6. Тесные экраны ═════════════════════════════════════════════════════
   На 360 (iPhone SE, бюджетные Android) внутренняя ширина падает до 320.
   Заголовок 36 на такой мере ломается на четыре строки с висячим слогом,
   поэтому садится на мобильную ступень --t-display-sm (32). Больше ничего
   не трогается: карточка, фильтры и пагинация на 320 стоят как на 375. */

@media (max-width: 360px) {
  .tk-blogcat__title {
    font-size: var(--t-display-sm-size);
    letter-spacing: var(--t-display-sm-ls);
  }
}

/* ═══ dms ═══ */
/* ТОМОКО — мобильная адаптация страницы «Список ДМС организаций» /pacientu/dms/.
   Снято 28.08.2026 с артборда Figma «М · Список ДМС организаций» 345:15726
   (375×3455), файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы. Новых элементов нет — бургер и мобильное меню,
   единственная разметка, которой на десктопе физически не существует,
   заведены в mobile-m1.css.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Почти каждое
   правило ниже дословно спорит с блоком @media (max-width: 680px)
   в page-dms.css при равной специфичности и выигрывает только
   за счёт порядка подключения.

   ВАЖНО. В page-dms.css мобильная раскладка была ВЫВЕДЕНА, а не снята:
   там прямо написано «отдельного мобильного макета у /pacientu/dms/
   нет». Макет теперь есть. Выведенное угадало главное — две плитки
   в строке при просвете 12 и последнюю плитку во всю ширину, — но
   расходится в шести местах:
     • кегль заголовка         — 34 / 1.02, а не токенные 38 / 0.94;
     • кегль лида              — 15, а не 17 (класс .t-body-lg в разметке);
     • заголовок «С кем работаем» на мобильном НЕ НАРИСОВАН;
     • плитка компании         — поля 18/16, просвет 6, скругление 16;
     • примечание под лентой   — 13 Medium --c-ash, отбивка 12, а не 24;
     • просвет между шагами    — 12, а не сеточные 24;
   плюс нижняя граница секций 32 вместо канонических 56.

   Что уже сделано и здесь не повторяется:
     • шапка, бургер, раскрытое меню          — mobile-m1.css;
     • финальный блок (CTA и подвал)          — mobile-m3.css;
     • отбивка крошек 32 и «/» вместо тире    — components.css;
     • тап-цель крошки 24                     — mobile.css;
     • поля 20 и сжатая шкала кеглей          — tokens.css;
     • раскладка ленты (flex 1 1 140px)       — page-dms.css, макетом
       подтверждена дословно: (335 − 12) / 2 = 161,5 — ровно ширина
       плитки на артборде.

   Отбивка крошек сошлась в ноль: макет ставит их на y=32 от низа шапки,
   ровно столько даёт .tk-crumbs на 680 из components.css.

   ПРАВИЛО ОКРУГЛЕНИЯ КЕГЛЕЙ, единое для файла: значение макета, совпавшее
   со ступенью шкалы, берётся токеном; расхождение в один пункт (14 против
   15, 18 против 17) оставляется на ступени и перечислено в notes;
   расхождение больше пункта берётся пикселями по замеру. Ниже 11px
   не опускаемся нигде — WCAG: подпись «ДМС» нарисована кеглем 9,
   а стоит канонические 12.

   Точка перелома одна — 680. Тесноту 360 отдельным запросом не разводим:
   единственное узкое место — длинные неразрывные названия страховых
   в плитке 154, и оно закрыто переносом по слогам (см. п. 4), который
   работает на всех ширинах сразу. Теней нет ни одной. */


@media (max-width: 680px) {

/* ══ 1. Шапка страницы · 345:15770 ═══════════════════════════════════════
   Кадр 375×236: поля 20 держит .tk-container, вертикальные — 32 сверху
   (до крошек) и 24 снизу, просветы между крошками, заголовком и лидом
   по 14. Крошки лежат в своей обёртке (.tk-crumbs, отбивка 32 из
   components.css — ровно макетные 32), поэтому верхнее поле блока —
   ровно просвет 14.
   Сумма сходится: 32 + 13 + 14 + 70 + 14 + 69 + 24 = 236.
   Кадр совпадает с шапкой «М · ОМС» 345:15675 до пикселя. */

.tk-dms-head {
  gap:            var(--s-4);   /* макет 14 → ближайший шаг сетки 16 */
  padding-top:    var(--s-4);   /* просвет от крошек до заголовка, тот же 14 */
  padding-bottom: var(--s-6);   /* макет 24 */
}

/* Заголовок в макете 34 / 1.02 / −1,2px (345:15772). Мобильная ступень
   --t-page-title-size даёт 30, а выведенная раньше раскладка ставила
   вовсе --t-display-size (38). Кегль берём из макета пикселями, трекинг
   переводим в em делением на кегль (−1.2 / 34 = −0.0353em).

   Цвет остаётся чернильным: в отличие от соседней «М · ОМС» (345:15677,
   где заголовок зелёный) здесь он #0b1a10, как на десктопе. Правила
   «на мобильных заголовок зеленеет» в системе нет. */
.tk-dms-head__title {
  font-size:      34px;         /* макет 345:15772; ступени 34 в шкале нет */
  line-height:    1.02;
  letter-spacing: -0.0353em;    /* −1,2px при кегле 34 */
}

/* Лид на мобильном опускается на ступень: в макете 15 / 1.55 --c-fog
   (345:15773), а класс .t-body-lg в разметке даёт 17 / 1.29. Кегль 15 —
   это ровно мобильная ступень --t-body-size. Цвет приходит .c-muted. */
.tk-dms-head__lead {
  font-size:   var(--t-body-size);
  line-height: 1.55;            /* макет 1.55 */
}


/* ══ 2. Общая обвязка секций · 345:15774 и 345:15829 ═════════════════════
   Оба блока страницы отбиты снизу на 32, а не на канонические
   --s-section (56 на мобильном). Замер: компании 678 + 12 + 60 + 32 = 782;
   шаги 27 + 12 + 101 + 12 + 80 + 12 + 80 + 32 = 356. */

.tk-dms-sec { padding-bottom: var(--s-8); }   /* макет 32 */

/* Заголовок раздела: 26 / 1.05 / −0,8px (345:15830). Кегль и трекинг
   сошлись со ступенью .t-heading на 680 в ноль (26 и −0.03em = −0.78px),
   макетным остаётся только интерлиньяж: токен даёт 1.0, и на двухстрочном
   «Как записаться по ДМС» строки слипаются. Отбивка от содержимого 12. */
.tk-dms-sec__title {
  line-height:   1.05;
  margin-bottom: var(--s-3);    /* макет 12 */
}


/* ══ 3. Заголовок «С кем работаем» на мобильном не показывается ══════════
   В кадре «Компании» (345:15774) заголовка нет вовсе: блок начинается
   сразу с первого ряда плиток, и лента примыкает к шапке страницы без
   зазора. На десктопе (345:32871) заголовок есть.

   Разметку трогать нельзя, да и не нужно: <section> ссылается на этот
   же <h2> через aria-labelledby, и удалять его было бы ошибкой. Поэтому
   заголовок не удаляется, а прячется каноническим приёмом .visually-hidden
   из base.css — обрезкой, а не display:none: обрезанный элемент остаётся
   в дереве доступности, и подпись секции продолжает работать.

   Правило написано по id, а не по классу: .tk-dms-sec__title носят оба
   заголовка страницы, а прятать нужно ровно этот. Id уже есть в разметке,
   он и так адресуется из aria-labelledby. Если решение не примут, откат —
   удалить правило целиком; см. notes. */

#dms-companies-title {
  position:  absolute;
  width:     1px;
  height:    1px;
  padding:   0;
  margin:    -1px;
  overflow:  hidden;
  clip:      rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
}


/* ══ 4. Лента компаний · 345:15775 и однотипные ══════════════════════════
   Пятнадцать плиток по две в строке, просвет 12 по обеим осям;
   пятнадцатая остаётся одна и растягивается на всю ширину — это
   не отдельный ряд, а поведение ленты. Раскладка уже выведена
   в page-dms.css (flex: 1 1 140px при просвете 12) и макетом
   подтверждена: (335 − 12) / 2 = 161,5 — ровно ширина плитки
   на артборде, а последняя строка забирает все 335.
   Здесь — только метрика самой плитки.

   Высота плитки в макете 70 = 18 + 17 + 6 + 11 + 18. На сайте она
   выйдет около 79: подпись «ДМС» набрана канонической ступенью 12
   вместо макетных 9 (ниже 11 не опускаемся — WCAG), а название —
   ступенью 15 вместо 14. Высоту силой не держим: ряды выравниваются
   по самой высокой плитке сами, как и в макете, где ряд с «РМС ·
   Регион Медсервис» выше соседних на 17. */

.tk-dms-co {
  min-height:    0;                /* десктопные 96 колонке из двух не нужны */
  gap:           6px;              /* макет 6; ступени 6 в ритме нет */
  padding:       18px var(--s-4);  /* макет 18 / 16; ступени 18 в ритме нет */
  border-radius: 16px;             /* макет 16: между --r-input 12 и --r-image 20 */
}

/* ПЕРЕПОЛНЕНИЕ. «АльфаСтрахование» — одно неразрывное слово в 16 знаков;
   кеглем 15 это около 150 точек при поле плитки 129. Без переноса такое
   слово задаёт минимальную ширину флекс-элемента, плитки перестают
   ужиматься, и лента уезжает за экран — ровно то, чего быть не должно.
   Снимаем автоматический min-width флекс-элемента и разрешаем перенос:
   сначала по слогам (в разметке lang="ru"), а если словарь не сработал —
   принудительно. В макете эта же строка нарисована шире плитки
   и обрезана рамкой (345:15822, текст 146 в плитке 161,5), то есть
   в самом макете переполнение не решено. */
.tk-dms-grid > li  { min-width: 0; }
.tk-dms-co__name {
  hyphens:        auto;
  overflow-wrap:  break-word;
}


/* ══ 5. Примечание под лентой · 345:15828 ════════════════════════════════
   Отбивка от последнего ряда 12 (в макете ряды кончаются на 678,
   примечание стоит на 690), а не десктопные 24. Кегль 13 Medium
   с интерлиньяжем 1.5 цветом --c-ash: это на два пункта ниже ступени
   body, поэтому взят из макета пикселями — сноска и должна читаться
   тише основного текста. Цвет приходит утилитой .c-tertiary. */

.tk-dms-note {
  margin-top:  var(--s-3);      /* макет 12 */
  font-size:   13px;            /* макет 345:15828; ступени 13 в шкале нет */
  font-weight: var(--w-medium);
  line-height: 1.5;
}


/* ══ 6. Шаги записи · 345:15831 и однотипные ═════════════════════════════
   Три шага в один столбец, между ними 12, а не сеточные 24 из .tk-grid.
   Линия сверху 2px уже стоит в page-dms.css — так в макете, значение
   не подбиралось. Внутри шага: отступ от линии 14, просветы по 6.
   Высота первого шага 101 = 14 + 12 + 6 + 21 + 6 + 42. */

.tk-dms-steps { gap: var(--s-3); }   /* макет 12; .tk-grid даёт 24 */

.tk-dms-step {
  gap:         6px;    /* макет 6; ступени 6 в ритме нет */
  padding-top: 14px;   /* макет 14; ступени 14 в ритме нет */
}

/* Подзаголовок шага в макете 18 SemiBold / 1.18 (345:15833). Ступени 18
   на мобильном нет — она между body-lg 17 и subheading 20; класс
   .t-body-lg в разметке даёт 17, кегль оставлен на нём, насыщенность
   уже стоит в page-dms.css. Из макета взят интерлиньяж. */
.tk-dms-step__title { line-height: 1.18; }

}

/* ═══ gosgarantii ═══ */
/* ТОМОКО — мобильная адаптация страницы «Программа госгарантий»
   /pacientu/programma-gosgarantiy/.
   Снято 28.08.2026 с артборда Figma «М · Программа госгарантий» 345:16367
   (375×3101), файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы. Новых элементов нет — бургер и мобильное меню,
   единственная разметка, которой на десктопе физически не существует,
   заведены в mobile-m1.css.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Почти каждое
   правило ниже дословно спорит с блоком @media (max-width: 680px)
   в page-gosgarantii.css при равной специфичности и выигрывает только
   за счёт порядка подключения.

   ВАЖНО. В page-gosgarantii.css мобильная раскладка была ВЫВЕДЕНА,
   а не снята: там прямо написано «отдельного мобильного макета
   у /pacientu/programma-gosgarantiy/ нет», и раскладка бралась
   по соседней /pacientu/oms/. Макет теперь есть и расходится
   с выведенным в пяти местах:
     • кегль заголовка       — 34 / 1.02, а не токенные 38 / 0.94;
     • кегль лида            — 15, а не 17 (класс .t-body-lg в разметке);
     • градиент плашки       — сверху вниз, а не слева направо;
     • просвет между пунктами — 10, на десктопе линии идут встык;
     • «СМОТРЕТЬ →»          — от строки остаётся одна стрелка, и она
                               НЕ уходит под название, а стоит справа;
   плюс нижняя граница секций 32 вместо выведенных 40.

   Страница — близнец /pacientu/oms/: плашка «Обратите внимание»
   и пункт списка документов совпали с «М · ОМС» (345:15680 и 345:15700)
   до пикселя. Значения намеренно повторены, а не подобраны заново;
   классы свои, чтобы кусок не зависел от соседнего куска сборки.

   Что уже сделано и здесь не повторяется:
     • шапка, бургер, раскрытое меню          — mobile-m1.css;
     • финальный блок (CTA и подвал)          — mobile-m3.css;
     • отбивка крошек 32 и «/» вместо тире    — components.css;
     • тап-цель крошки 24                     — mobile.css;
     • поля 20 и сжатая шкала кеглей          — tokens.css.

   Отбивка крошек сошлась в ноль: макет ставит их на y=32 от низа шапки,
   ровно столько даёт .tk-crumbs на 680 из components.css.

   ПРАВИЛО ОКРУГЛЕНИЯ КЕГЛЕЙ, единое для файла: значение макета, совпавшее
   со ступенью шкалы, берётся токеном; расхождение в один пункт (11 против
   12, 14 против 15, 16 против 17) оставляется на ступени и перечислено
   в notes; расхождение больше пункта у заголовков берётся пикселями
   по замеру. Ниже 11px не опускаемся нигде — WCAG.

   Точка перелома одна — 680, теснее не понадобилось: колонка одна,
   самое длинное слово («Территориальная», 15 знаков кеглем 15) в поле
   пункта 260 умещается и на 360. Теней нет ни одной. */


@media (max-width: 680px) {

/* ══ 1. Шапка страницы · 345:16411 ═══════════════════════════════════════
   Кадр 375×259: поля 20 держит .tk-container, вертикальные — 32 сверху
   (до крошек) и 24 снизу, просветы между крошками, заголовком и лидом
   по 14. Крошки лежат в своей обёртке (.tk-crumbs, отбивка 32 из
   components.css — ровно макетные 32), поэтому верхнее поле блока —
   ровно просвет 14. Кадр выше соседних «М · ОМС» и «М · ДМС» на 23:
   лид здесь в четыре строки, а не в три.
   Сумма сходится: 32 + 13 + 14 + 70 + 14 + 92 + 24 = 259. */

.tk-gos-head {
  gap:            var(--s-4);   /* макет 14 → ближайший шаг сетки 16 */
  padding-top:    var(--s-4);   /* просвет от крошек до заголовка, тот же 14 */
  padding-bottom: var(--s-6);   /* макет 24 */
}

/* Заголовок в макете 34 / 1.02 / −1,2px (345:16413). Мобильная ступень
   --t-page-title-size даёт 30, а выведенная раньше раскладка ставила
   вовсе --t-display-size (38). Кегль берём из макета пикселями, трекинг
   переводим в em делением на кегль (−1.2 / 34 = −0.0353em).

   Перенос по слогам, доставшийся от выведенной раскладки, снимаем:
   он ставился под кегль 38, где «госгарантий» в строку не влезало.
   На 34 заголовок ложится в две строки сам — ровно как в макете
   (кадр 335×70 = две строки по 34,7), и дефис в нём не нужен.

   Цвет остаётся чернильным: в отличие от соседней «М · ОМС» (345:15677,
   где заголовок зелёный) здесь он #0b1a10, как на десктопе. */
.tk-gos-head__title {
  font-size:      34px;         /* макет 345:16413; ступени 34 в шкале нет */
  line-height:    1.02;
  letter-spacing: -0.0353em;    /* −1,2px при кегле 34 */
  hyphens:        manual;       /* снимает auto из page-gosgarantii.css */
}

/* Лид на мобильном опускается на ступень: в макете 15 / 1.55 --c-fog
   (345:16414), а класс .t-body-lg в разметке даёт 17 / 1.29. Кегль 15 —
   это ровно мобильная ступень --t-body-size. Цвет приходит .c-muted. */
.tk-gos-head__lead {
  font-size:   var(--t-body-size);
  line-height: 1.55;            /* макет 1.55 */
}


/* ══ 2. Общая обвязка секций · 345:16415 и 345:16419 ═════════════════════
   Оба блока страницы отбиты снизу на 32: и канонические --s-section
   (56 на мобильном), и выведенные раньше 40 велики.
   Замер: плашка 206 + 32 = 238; документы 27 + 10 + 454 + 32 = 523.

   Заголовок раздела: 26 / 1.05 / −0,8px (345:16420). Кегль и трекинг
   сошлись со ступенью .t-heading на 680 в ноль (26 и −0.03em = −0.78px),
   макетным остаётся только интерлиньяж — токен даёт 1.0. Отбивка
   от первого пункта 10, а не выведенные 16: это тот же просвет,
   с которым идут сами пункты. */

.tk-gos-sec { padding-bottom: var(--s-8); }   /* макет 32 */

.tk-gos-sec__title {
  line-height:   1.05;
  margin-bottom: 10px;          /* макет 10; ступени 10 в ритме нет */
}


/* ══ 3. Плашка «Обратите внимание» · 345:16416 ═══════════════════════════
   Поля 20 со всех сторон, просвет 10, скругление 20.
   Высота 206 = 20 + 12 + 10 + 144 + 20. Все величины совпали
   с плашкой «М · ОМС» (345:15680) до пикселя.

   ГРАДИЕНТ РАЗВЁРНУТ. На десктопе плашка широкая и залита --g-green-x
   (слева направо); в мобильном макете она высокая, и градиент идёт
   сверху вниз — тот же токен без буквы x. Это не косметика: на 375
   горизонтальный градиент прошёл бы все три стопа за 335 точек,
   и плашка стала бы пёстрой поперёк текста. */

.tk-gos-alert {
  gap:           10px;             /* макет 10; ступени 10 нет, между --s-2 и --s-3 */
  padding:       var(--s-5);       /* макет 20 со всех сторон */
  border-radius: var(--r-image);   /* макет 20; карточные 24 здесь велики */
  background:    var(--g-green);   /* макет: стопы идут сверху вниз */
}

/* Текст плашки в макете 16 / 1.5 (345:16418). Ступени 16 на мобильном
   нет — она ровно между body 15 и body-lg 17; класс .t-body-lg
   в разметке даёт 17, кегль оставлен на нём. Из макета взят
   интерлиньяж: десктопные 1.45 на шести строках заметно плотнее
   нарисованного. */
.tk-gos-alert__text { line-height: 1.5; }


/* ══ 4. Документы · 345:16421 и однотипные ═══════════════════════════════
   Пять пунктов, между ними просвет 10, у каждого волосяная линия сверху.
   Высота пункта — 12 + текст + 12: 108 у четырёхстрочного первого,
   87 у трёхстрочных и 66 у двухстрочных.

   Просвета между пунктами на десктопе нет — линии идут встык. Список
   раскладывается сеткой; маркеры и поля <ol> уже сняты в base.css. */

.tk-gos-docs {
  display: grid;
  gap:     10px;                       /* макет 10; ступени 10 в ритме нет */
}

/* СТРЕЛКА ОСТАЁТСЯ СПРАВА. Выведенная раньше раскладка уводила
   «СМОТРЕТЬ →» под название второй строкой; в макете (345:16421)
   пункт остаётся строкой из трёх колонок — номер, название, стрелка,
   выключенная по правому краю. Возвращаем третью колонку
   и выравнивание по центру, снятые в page-gosgarantii.css. */
.tk-gos-doc {
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap:                   var(--s-3);   /* макет 12 */
  align-items:           center;
  padding-block:         var(--s-3);   /* макет 12 */
}

/* СЛОВО «СМОТРЕТЬ» НА МОБИЛЬНОМ НЕ ПОКАЗЫВАЕТСЯ: в макете от строки
   остаётся одна стрелка шириной 8 (345:16424). Разметку трогать нельзя,
   а слово лежит голым текстовым узлом рядом со <span> стрелки, поэтому
   гасим его нулевым кеглем на абзаце и возвращаем кегль стрелке.
   Из доступности при этом ничего не пропадает: стрелка помечена
   aria-hidden, и экранный диктор по-прежнему читает «СМОТРЕТЬ».
   Приём тот же, что у .tk-oms-doc__go. Если решение не примут,
   откат — удалить два правила ниже; см. notes. */
.tk-gos-doc__go {
  grid-column:    auto;        /* снимает перенос под название из page-gosgarantii.css */
  font-size:      0;
  line-height:    0;
  letter-spacing: 0;
}
.tk-gos-doc__go [aria-hidden="true"] {
  font-size:      var(--t-label-12-size);  /* макет 13 — ступень ближе на пункт */
  font-weight:    var(--w-medium);
  letter-spacing: normal;
  line-height:    1.2;
}

}

/* ═══ kontakty ═══ */
/* ТОМОКО — мобильная адаптация страницы «Контакты» /kontakty/.
   Снято 28.08.2026 с артборда Figma «М · Контакты  /kontakty/»
   345:15315 (375×3616), файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы. Новых элементов нет — бургер и мобильное меню,
   единственная разметка, которой на десктопе физически не существует,
   заведены в mobile-m1.css.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Часть правил ниже
   дословно спорит с блоком @media (max-width: 680px) в page-kontakty.css
   при равной специфичности и выигрывает только за счёт порядка
   подключения — это и есть способ поправить замеры, снятые раньше,
   не трогая сгенерированный pages.css.

   Что уже сделано и здесь не повторяется:
     • шапка, бургер, раскрытое меню          — mobile-m1.css;
     • финальный блок (CTA и подвал)          — mobile-m3.css, узел 358:4454
       мобильного артборда совпадает с ним дословно;
     • отбивка крошек 32 и «/» вместо тире    — components.css;
     • тап-цель крошек 24                     — mobile-m1.css, блок тап-целей;
     • схлопывание сеток --3 и --2 в одну
       колонку                                — base.css.

   Точка перелома одна — 680. Поля 20 даёт токен --l-page-padding.
   Теней нет ни одной, элевация только цветом и обводкой.

   Расхождения с макетом, сознательно НЕ реализованные (кегли 10, 13 и 14
   мельче нижней ступени шкалы, снятые четвёртые строки карточек, снятые
   заголовок «Режим работы» и подпись под картой, пилюля вместо строки
   капсом), перечислены в notes отчёта — в CSS они не заводились. */


@media (max-width: 680px) {

/* ══ 1. Шапка страницы · 345:15359 ═══════════════════════════════════════
   Кадр 375×210: поля 20 держит .tk-container, сверху 36 до крошек, между
   всеми тремя строками по 14, снизу 28. Крошки лежат в своей обёртке
   (.tk-crumbs, отбивка 32 из components.css), поэтому верхнее поле
   блока — ровно просвет 14. Кадр совпадает с «М · О клинике» 345:14771
   до пикселя: это общая шапка внутренних страниц, а не свойство именно
   «Контактов». */

.tk-kontakty__head {
  gap: var(--s-4);              /* макет 14 → ближайший шаг сетки 16 */
  padding-top: var(--s-4);      /* просвет от крошек до заголовка, тот же 14 */
  padding-bottom: var(--s-8);   /* макет 28 → шаг 32 */
}

/* Заголовок в макете 36/leading-none/−1,3px (345:15361). Мобильная ступень
   --t-display-sm-size даёт 32 — сжатая шкала tokens.css с мобильными
   макетами внутренних страниц тут расходится (то же на «М · О клинике»).
   Кегль берём из макета, токен не трогаем. Интерлиньяж обязателен: класс
   тянет --t-display-sm-lh (1.05), а макет говорит leading-none. */
.tk-kontakty__title {
  font-size:      36px;         /* макет 345:15361 */
  line-height:    1;
  letter-spacing: -0.036em;     /* −1,3px при кегле 36 */
}

/* Лид на мобильном опускается на ступень: в макете 15/1.55 (345:15362),
   а класс .t-body-lg в разметке даёт 17/1.29. Мера строки снимается —
   колонка одна. */
.tk-kontakty__lead {
  max-width:   none;
  font-size:   var(--t-body-size);
  line-height: 1.5;             /* макет 1.55; проза, а не подпись */
}


/* ══ 2. Способы связи · 345:15363 ════════════════════════════════════════
   Кадр 375×481, нижнее поле 28. Три карточки 335×143 подряд через 12:
   заливка --c-mist, скругление 20, поля 20 со всех сторон, строки
   разогнаны по высоте (justify-content: space-between уже стоит
   на десктопе — в макете просветы внутри карточки не равны между собой,
   а вычисляются: 23 у первой карточки, 13 у второй). */

.tk-kontakty { padding-bottom: var(--s-8); }   /* макет 28 → шаг 32 */

/* Просвет между карточками 12 вместо канонических 24: три плашки подряд
   в столбец иначе растягивают экран. Канонический .tk-grid не трогаем —
   правило на собственном классе списка. */
.tk-kontakty__ways { gap: var(--s-3); }

/* Высота 143 из макета остаётся нижней границей, а не жёстким размером:
   в макете у карточек по три строки, на сайте их четыре — примечания
   («Клиника: пн–пт…», «Ответим…», «Парковка…») с телефона не выбрасываем,
   часы приёма и доступность входа нужны именно там. Карточка просто
   становится выше. Поля 20 отдаёт --s-card, который tokens.css на 680
   переключает сам. */
.tk-kontakty__way {
  min-height:    143px;         /* высота карточки в макете; токена высоты нет */
  border-radius: var(--r-image);   /* макет 20, а не карточные 24 */
}

/* Главная строка карточки в макете 20/1.25/−0,5px SemiBold (345:15366) —
   это ступень subheading мобильной шкалы, но её интерлиньяж 1.13 даёт
   строку в 22,6px. Ставим макетные 1.25: заодно это поднимает высоту
   ссылки-телефона до 25px и снимает недобор тап-цели (WCAG 2.5.8 — 24).
   Правило внутри медиазапроса, шире 680 канон не меняется. */
.tk-kontakty__value { line-height: 1.25; }

/* Телефоны, почта и соцсети — вторые по важности цели нажатия
   на странице. Строчная ссылка при кегле 15/1.5 даёт 22,5px, при 12/1.5
   на метке карты — 18px: обе ниже нормы 24. Добираем высоту, не трогая
   кегль, тем же приёмом, что у крошек в mobile-m1.css. */
.tk-kontakty__value a,
.tk-kontakty__extra a,
.tk-kontakty-map__links a {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
}

/* ОТКЛОНЕНИЕ: надстрочник карточки в макете 10px SemiBold с трекингом 1px
   (345:15365), вторая строка — 13px (345:15367). Ступени 10 и 13 в шкале
   нет, а 10 вдобавок ниже порога читаемости; остаются label-12 и
   мобильная ступень body (15) — они уже стоят в page-kontakty.css
   без медиазапроса и здесь не повторяются. */


/* ══ 3. Карта · 345:15376 ════════════════════════════════════════════════
   Кадр 375×288: плашка-заглушка 335×260, скругление 20, нижнее поле 28.
   Полотно #e9f0eb собрано смешиванием токенов в page-kontakty.css. */

.tk-kontakty-map { padding-bottom: var(--s-8); }   /* макет 28 → шаг 32 */
.tk-kontakty-map__frame {
  height:        260px;         /* высота плашки в макете; токена высоты нет */
  border-radius: var(--r-image);
}

/* Метка (345:15378): 20 слева, 90 сверху, поля 14/16, просвет 4.
   ОТКЛОНЕНИЕ: скругление в макете 16, ступени 16 в токенах нет — взята
   --r-image (20), как и на десктопе. В мобильном макете у метки две
   строки; на сайте оставлены три — ссылки «Открыть в Яндекс Картах ·
   2ГИС» единственный способ построить маршрут с телефона. */
.tk-kontakty-map__pin {
  top:     90px;
  left:    var(--s-5);
  gap:     var(--s-1);          /* макет 4 */
  padding: 14px var(--s-4);     /* макет 14/16; шага 14 в ритме нет */
}


/* ══ 4. Режим работы и реквизиты · 345:15381 + 345:15398 ═════════════════
   Две карточки идут одна под другой. В макете это два отдельных кадра:
   у «Режима» снизу 36, у «Реквизитов» сверху и снизу по 36 — то есть
   между карточками 72, а до подвала 36. Канонические сеточные 24 здесь
   не годятся: это два разных раздела, а не ряд одной сетки. */

.tk-kontakty-info { padding-bottom: var(--s-10); }   /* макет 36 → шаг 40 */
.tk-kontakty-info__grid { row-gap: calc(var(--s-16) + var(--s-2)); }  /* 72 из макета */

/* Карточка режима (345:15382): белая, обводка 1.5 --c-hairline,
   скругление 20, поля 8 сверху / 20 по бокам / 16 снизу.
   Заголовка «Режим работы» в мобильном макете нет — на сайте он оставлен:
   пять строк со временем без заголовка не читаются, да и секции нужен
   ориентир. Строка 44 = 13 + 18 + 13. */
.tk-kontakty-hours {
  padding:       var(--s-2) var(--s-card) var(--s-4);
  border-radius: var(--r-image);
}
.tk-kontakty-hours__row {
  padding-block: 13px;          /* мера строки из макета (44); шага 13 в ритме нет */
  align-items:   center;        /* макет items-center: на 360 длинная подпись
                                   дня уходит в две строки, и выключка
                                   по базовой линии вешает часы на первую */
}

/* Карточка реквизитов (345:15399): заливка --c-mist, скругление 20,
   поля 20, шаг между строками 8 — в макете он одинаков и над текстом,
   и под ним. */
.tk-kontakty-rekv {
  gap:           var(--s-2);    /* макет 8 вместо десктопных 16 */
  border-radius: var(--r-image);
}

/* В мобильном макете «ЛИЦЕНЗИИ И ДОКУМЕНТЫ» — просто строка капсом
   (345:15402, текстовый узел, не компонент кнопки). Пилюлю сохраняем:
   это ссылка в другой раздел, ей нужна заметная цель нажатия, — но
   растягиваем на всю ширину карточки, чтобы она читалась как строка
   макета, а не как случайно короткая кнопка. Тот же приём, что
   у .tk-allprice на /uslugi/. */
.tk-kontakty-rekv .tk-btn { align-self: stretch; }

}

/* ═══ licenzii ═══ */
/* ТОМОКО — мобильная адаптация страницы «Лицензии и документы»
   /o-klinike/licenzii/. Снято 28.08.2026 с артборда Figma
   «М · Лицензии и документы  /o-klinike/licenzii/» 345:15521 (375×5343),
   файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы. Новых элементов нет — бургер и мобильное меню,
   единственная разметка, которой на десктопе физически не существует,
   заведены в mobile-m1.css.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Часть правил ниже
   дословно спорит с блоком @media (max-width: 680px) в page-licenzii.css
   при равной специфичности и выигрывает только за счёт порядка
   подключения — это и есть способ поправить замеры, снятые раньше
   по метаданным, не трогая сгенерированный pages.css.

   ВАЖНО. В page-licenzii.css мобильная раскладка была снята по одним
   координатам кадров, без типографики и без вертикального ритма секций.
   Макет разошёлся с ней в восьми местах, и эти восемь правил — весь
   смысл файла:
     • нижнее поле шапки страницы    24, а не 32;
     • интерлиньяж заголовка         1.02, а не 1.05 от --t-display-sm-lh;
     • кегль лида                    15, а не 17 от .t-body-lg;
     • отбивка заголовка «Реквизиты» 16, а не 12 (у «Документов» 12 верны);
     • скругление плашки реквизитов  20, а не карточные 24;
     • нижние поля обеих секций      32, а не --s-section (на 680 это 56);
     • просвет между документами     12, а не сеточные 24;
     • высота карточки документа     405 и кегль описания 13, а не
                                     «по содержимому» и не ступень 15.
   Ещё три правила добавлены сверх макета — тап-цель телефона и почты
   (WCAG 2.5.8), перенос длинных счетов и мера строки надстрочника;
   у каждого свой разбор на месте.

   Что уже сделано и здесь не повторяется:
     • шапка, бургер, раскрытое меню          — mobile-m1.css;
     • финальный блок (CTA и подвал)          — mobile-m3.css: узел
       358:4632 мобильного артборда совпадает с ним дословно;
     • отбивка крошек 32 и «/» вместо тире    — components.css;
     • тап-цель крошек 24                     — mobile-m1.css, блок тап-целей;
     • верхнее поле и просвет шапки страницы  — page-licenzii.css, блок 5
       (16 против макетных 14 — цена шага 4px, переопределения не стоит);
     • лестница «признак → значение» в строке
       реквизитов, поля плашки, кегли ключа
       и значения, поля и скругление карточки
       документа, кадр превью 295×190         — page-licenzii.css, блок 5:
       совпало с макетом до пикселя, трогать нечего.

   Точка перелома одна — 680: страница по всей ширине идёт в одну колонку,
   ни на 480, ни на 360 ничего не ломается. Поля 20 и сжатую шкалу кеглей
   даёт tokens.css. Теней нет ни одной, элевация только цветом
   и волосяной обводкой.

   Расхождения с макетом, сознательно НЕ реализованные (кегли 11 у
   надстрочника и у «СМОТРЕТЬ», сокращённый до 12 строк состав реквизитов,
   снятая рамка превью), перечислены в notes отчёта — в CSS они
   не заводились. */


@media (max-width: 680px) {

/* ══ 1. Шапка страницы · 345:15565 ═══════════════════════════════════════
   Кадр 375×213: поля 20 держит .tk-container, сверху 32 до крошек, между
   всеми тремя строками по 14, снизу 24. Крошки лежат в своей обёртке
   (.tk-crumbs, отбивка 32 из components.css), поэтому верхнее поле
   блока — ровно просвет 14, и оно уже стоит в page-licenzii.css
   округлённым до шага 16.

   ИСПРАВЛЕНИЕ: в page-licenzii.css нижнее поле стоит 32. В макете 24 —
   ровно столько же, сколько между строками секции ниже, и на этих 24
   сходится высота кадра: 32 + 13 + 14 + 70 + 14 + 46 + 24 = 213. */

.tk-lic__head { padding-bottom: var(--s-6); }   /* макет 24 */

/* Заголовок: 34 / 1.02 / −1,2px (345:15567). Кегль 34 уже стоит
   в page-licenzii.css, но интерлиньяж он тянет из --t-display-sm-lh
   (на 680 это 1.05) — на двух строках макета это лишние 2px, и высота
   кадра перестаёт сходиться. Трекинг переведён в em делением на кегль,
   чтобы не разъезжался на 480 и 360.

   ОТКЛОНЕНИЕ ОТ ШКАЛЫ: ступени 34 на мобильных нет — сжатая шкала
   tokens.css даёт 30 (--t-page-title-size) и 32 (--t-display-sm-size).
   Оба мобильных макета этой сдачи просят 34, причём с одним и тем же
   интерлиньяжем и трекингом (ср. 345:16310 на «Томоко-TV»): это одна
   мобильная ступень на двух страницах, а не два подбора. Кегль взят
   из макета, токен не тронут — править его пришлось бы вслед за Figma.
   См. notes отчёта. */
.tk-lic__title {
  font-size:      34px;         /* макет 345:15567 */
  line-height:    1.02;
  letter-spacing: -0.035em;     /* −1,2px при кегле 34 */
}

/* Лид на мобильном опускается на ступень: в макете 15 / 1.55 (345:15568),
   а класс .t-body-lg в разметке даёт 17 / 1.29. Кегль 15 — это ровно
   мобильная --t-body-size, отдельного пикселя не нужно. Интерлиньяж
   1.5 вместо макетных 1.55: это ступень прозы, принятая в системе
   (.tk-card-review__text, .tk-check__text), разница — 0,75px на строку.
   Меру строки page-licenzii.css уже снял — колонка одна. */
.tk-lic__lead {
  font-size:   var(--t-body-size);
  line-height: 1.5;             /* макет 1.55; проза, а не подпись */
}


/* ══ 2. Реквизиты организации · 345:15569 ════════════════════════════════
   Кадр 375×905: заголовок 27, просвет 14, плашка 335×832, нижнее поле 32.
   Сумма сходится: 27 + 14 + 832 + 32 = 905.

   Заголовок секции в макете 26 / 1.05 / −0,8px (345:15570) — это ровно
   мобильная ступень --t-heading (26 / 1.0 / −0.03em, то есть −0,78px),
   её base.css уже отдаёт <h2>. Своего правила заголовку не нужно. */

/* ИСПРАВЛЕНИЕ: нижнее поле секции берётся не из ритма (--s-section, на
   мобильных 56), а из макета — 32. Кадр «Документы» начинается ровно
   на 1180 = 275 + 905, дыры в 56 там нет. */
.tk-lic-req { padding-bottom: var(--s-8); }     /* макет 32 */

/* ИСПРАВЛЕНИЕ: в page-licenzii.css оба заголовка секций отбиты на 12.
   У «Реквизитов» в макете 14 → шаг 16; у «Документов» действительно 12,
   его правило остаётся как есть. */
.tk-lic-req__title { margin-bottom: var(--s-4); }   /* макет 14 → шаг 16 */

/* ИСПРАВЛЕНИЕ: плашка на мобильном скруглена на 20, а не на карточные 24
   (345:15571) — тот же радиус, что у мобильных плиток акций и статей
   в mobile.css. Заливка --c-mist и поля 20 по бокам / 16 снизу уже стоят
   в page-licenzii.css; верхнее поле макета 6 округлено там до шага 8,
   разница в 2px переопределения не стоит. */
.tk-lic-req__table { border-radius: var(--r-image); }   /* макет 20 */

/* Мера строки надстрочника. Кегль остаётся канонический 12 (в макете 11,
   ступени 11 в шкале нет), но интерлиньяж он наследует от <body> — 1.33,
   то есть 16px на строку против макетных 13. На девятнадцати строках
   реквизитов набегает под 60px лишней высоты. Ставим ту же плотность,
   что в макете (leading normal у Montserrat ≈ 1.2): 12 × 1.2 = 14,4.
   Ключ набран капителью и занимает одну-две строки — теснее ему
   не мешает. */
.tk-lic-req__key { line-height: 1.2; }          /* макет 345:15573: 13 при кегле 11 */

/* Расчётный и корреспондентский счета — по 20 цифр без единого пробела.
   На 375 они помещаются, на 320 запаса уже нет, а строка реквизитов
   на мобильных однколоночная (grid-template-columns: 1fr), то есть
   min-content колонки ничем не ограничен и число вытолкнуло бы страницу
   вбок. Разрешаем перенос внутри слова — у кадра в макете ровно то же
   (word-break: break-word на 345:15571). */
.tk-lic-req__val { overflow-wrap: anywhere; }

/* Телефон и почта в реквизитах — ссылки. Строчная ссылка при 15 / 1.4
   даёт 21px в высоту, норма WCAG 2.5.8 (AA) — 24. Добираем высоту,
   не трогая кегль: тем же приёмом, что у контактов в mobile.css
   и у крошек в mobile-m1.css. Ширина у обеих ссылок заведомо больше 24. */
.tk-lic-req__val a {
  display:     inline-flex;
  align-items: center;
  min-height:  24px;
}


/* ══ 3. Документы · 345:15608 ════════════════════════════════════════════
   Кадр 375×2144: заголовок 27, просвет 12, пять карточек 335×405 через 12,
   нижнее поле 32. Сумма сходится: 27 + 12 + 405×5 + 12×4 + 32 = 2144. */

/* То же исправление, что и у реквизитов: нижнее поле из макета, а не
   из ритма. Ниже начинается финальный блок (358:4632). */
.tk-lic-docs { padding-bottom: var(--s-8); }    /* макет 32 */

/* ИСПРАВЛЕНИЕ: в одну колонку карточки стоят через 12, а не через
   сеточные 24 (--s-gutter из base.css): 456 − 39 − 405 = 12. */
.tk-lic-docs__list { gap: var(--s-3); }         /* макет 12 */

/* ИСПРАВЛЕНИЕ: в page-licenzii.css высота карточки на мобильных снята
   совсем (min-height: 0). В макете все пять карточек ровно 405 при
   раскладке space-between — короткие описания (карточки 2 и 5) растягивают
   лестницу, а не оставляют «СМОТРЕТЬ» посреди плашки. Возвращаем меру
   макета: это МИНИМУМ, длинные описания карточку по-прежнему растят.
   Разбор высоты первой карточки, кегли — из правил ниже:
   20 + 190 + 21 + 42 + 21 + 57 + 21 + 13 + 20 = 405; просветы по 21
   получаются сами, их раздаёт space-between. */
.tk-lic-doc { min-height: 405px; }              /* макет 345:15610 */

/* Заголовок карточки: 18 SemiBold / 1.18 (345:15612). Класс собственный,
   канонический .tk-card-post__title здесь ни при чём. Ступени 18 в шкале
   нет: мобильная --t-body-lg-size даёт 17 при интерлиньяже 1.29 —
   на двух строках это на 9px выше макетного. Насыщенность и трекинг
   уже стоят в page-licenzii.css. */
.tk-lic-doc__title {
  font-size:   18px;            /* макет 345:15612 */
  line-height: 1.18;
}

/* Описание документа: 13 / 1.45 (345:15613). Разница со ступенью здесь
   не косметическая — на мобильной --t-body-size (15) три строки описания
   вырастают с 57 до 65, лестница перестаёт умещаться в 405, и все пять
   плашек становятся выше макетных на три десятка пикселей. Ступени 13
   в шкале нет, 13 — замер; порог читаемости слоя (11) не нарушен.
   Интерлиньяж 1.45 уже стоит в page-licenzii.css и на мобильном
   не менялся. */
.tk-lic-doc__text { font-size: 13px; }          /* макет 345:15613 */

}

/* ═══ nalogovyy-vychet ═══ */
/* ТОМОКО — мобильная адаптация страницы «Налоговый вычет»
   /pacientu/nalogovyy-vychet/. Снято 28.08.2026 с артборда Figma
   «М · Налоговый вычет  /pacientu/nalogovyy-vychet/» 345:15849 (375×4896),
   файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы. Новых элементов нет — бургер и мобильное меню,
   единственная разметка, которой на десктопе физически не существует,
   заведены в mobile-m1.css.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Часть правил ниже
   дословно спорит с блоком @media (max-width: 680px) в
   page-nalogovyy-vychet.css при равной специфичности и выигрывает только
   за счёт порядка подключения.

   ВАЖНО. Когда писался page-nalogovyy-vychet.css, мобильного макета
   у страницы не было: в его блоке 7 так и записано — «раскладка выведена
   по правилам системы и по мобильным видам соседних страниц». Теперь
   макет есть, и он разошёлся с выведенной раскладкой в тринадцати местах.
   Эти тринадцать правил — весь смысл файла:
     • нижнее поле шапки страницы     24, а не 32;
     • кегль заголовка                34 / 1.02 / −1,2px, а не 38 / 0.94
                                      от --t-display-size;
     • кегль лида                     15, а не 17 от .t-body-lg;
     • нижние поля всех трёх секций   32, а не 40;
     • отбивка заголовка секции       12, а не 16;
     • просвет между вопросами        12, а не 16;
     • поля и скругление плашек       18/20 и 18, а не 20/20 и 20;
     • кегль вопроса                  18, а не мобильная ступень 20;
     • кегль названия способа         18 / 1.18, а не ступень .t-subheading;
     • маркер и кегль пункта способа  кружок 5, отступ 15, кегль 14,
                                      а не кружок 6, отступ 18 и ступень 15;
     • карточка формы                 просвет 16, поля 24, скругление 24 —
                                      а не 20 / 20 / 20;
     • кегли внутри формы             заголовок 24, лид 14, текст зелёной
                                      плашки 13 — а не 26, 15 и 15;
     • кнопка «Отправить заявку»      во всю ширину карточки, а не по
                                      содержимому слева.
   Плюс одно правило сверх макета — тап-цель строки чекбокса (WCAG 2.5.8),
   разбор на месте.

   Что уже сделано и здесь не повторяется:
     • шапка, бургер, раскрытое меню          — mobile-m1.css;
     • финальный блок (CTA и подвал)          — mobile-m3.css: узел
       358:4899 мобильного артборда совпадает с ним дословно;
     • отбивка крошек 32 и «/» вместо тире    — components.css (макет 32 ✓);
     • тап-цель крошек 24                     — mobile-m1.css, блок тап-целей;
     • верхнее поле и просветы шапки страницы — page-nalogovyy-vychet.css,
       блок 7: 16 против макетных 14 — цена шага 4px, переопределения
       не стоит (то же решение принято на «Лицензиях»);
     • столбик вместо двух колонок у способов
       и у рядов формы, поля ввода, плашка
       «ВАЖНО» в столбик, просветы 8 в вопросе
       и 12 внутри карточки способа           — page-nalogovyy-vychet.css,
       блок 7: совпало с макетом, трогать нечего.

   Точка перелома одна — 680: страница по всей ширине идёт в одну колонку,
   ни на 480, ни на 360 ничего не ломается — самая широкая строка на 320
   (подсказка «Паспорт: серия и номер», 16px в поле шириной 232) влезает
   с запасом. Поля 20 и сжатую шкалу кеглей даёт tokens.css. Теней нет
   ни одной, элевация только цветом и волосяной обводкой.

   Расхождения с макетом, сознательно НЕ реализованные (кегли 10 и 11
   у надстрочников, чекбокс 22 против канонических 20, кнопка 45 против
   канонических 49, поле 56 против канонических 53, нижнее поле секции
   формы 36 против 32 у двух соседних), перечислены в notes отчёта —
   в CSS они не заводились. */


@media (max-width: 680px) {

/* ══ 1. Шапка страницы · 345:15893 ═══════════════════════════════════════
   Кадр 375×201: поля 20 держит .tk-container, сверху 32 до крошек, между
   всеми тремя строками по 14, снизу 24. Крошки лежат в своей обёртке
   (.tk-crumbs, отбивка 32 из components.css — сошлось с макетом), поэтому
   верхнее поле блока — ровно просвет 14, и оно уже стоит округлённым
   до шага 16 в page-nalogovyy-vychet.css.

   ИСПРАВЛЕНИЕ: там же нижнее поле стоит 32. В макете 24, и на этих 24
   сходится высота кадра: 32 + 13 + 14 + 35 + 14 + 69 + 24 = 201. */

.tk-vychet-head { padding-bottom: var(--s-6); }   /* макет 24 */

/* ИСПРАВЛЕНИЕ: заголовок в макете 34 / 1.02 / −1,2px (345:15895),
   а выведенная раскладка брала мобильную ступень --t-display-size (38)
   с интерлиньяжем 0.94 — на 375 это лишние 4px кегля, и «Налоговый вычет»
   перестаёт держаться в одну строку 335. Трекинг переведён в em делением
   на кегль, чтобы не разъезжался на 480 и 360.

   ОТКЛОНЕНИЕ ОТ ШКАЛЫ: ступени 34 на мобильных нет — сжатая шкала
   tokens.css даёт 30 (--t-page-title-size) и 32 (--t-display-sm-size).
   Значения ровно те же, что у .tk-lic__title и .tk-pamyatka__title:
   это одна мобильная ступень на трёх страницах, а не три подбора.
   Кегль взят из макета, токен не тронут. См. notes отчёта. */
.tk-vychet-head__title {
  font-size:      34px;         /* макет 345:15895 */
  line-height:    1.02;
  letter-spacing: -0.035em;     /* −1,2px при кегле 34 */
}

/* ИСПРАВЛЕНИЕ: лид на телефоне опускается на ступень — в макете 15 / 1.55
   (345:15896), а класс .t-body-lg в разметке даёт 17 / 1.29. Кегль 15 —
   это ровно мобильная --t-body-size, отдельного пикселя не нужно.
   Интерлиньяж 1.5 вместо макетных 1.55: ступень прозы, принятая
   в системе (.tk-card-review__text, .tk-lic__lead), разница —
   0,75px на строку. Меру строки page-nalogovyy-vychet.css уже снял
   на 1100 — колонка одна. */
.tk-vychet-head__lead {
  font-size:   var(--t-body-size);   /* макет 15 = мобильная ступень body */
  line-height: 1.5;                  /* макет 1.55; проза, а не подпись */
}


/* ══ 2. Ритм секций · 345:15897, 345:15907, 345:15930 ════════════════════
   ИСПРАВЛЕНИЕ: выведенная раскладка отбивала секции снизу на 40. В макете
   у всех трёх кадров нижнее поле 32, и на нём сходятся высоты:
   вопросы   163 + 12 + 138 + 12 + 138 + 32 = 495;
   способы   27 + 12 + 162 + 12 + 183 + 12 + 122 + 32 = 562.

   У кадра формы то же поле 36 (1557 − 1521), а не 32. Четыре пикселя
   отданы за единый ритм страницы: три одинаковые секции важнее, чем
   4px перед подвалом, который и так начинается новой поверхностью.
   См. notes отчёта. */

.tk-vychet-sec { padding-bottom: var(--s-8); }        /* макет 32 */

/* ИСПРАВЛЕНИЕ: заголовок секции отбит от содержимого на 12, а не на 16.
   Сам заголовок правил не требует: в макете 26 / 1.05 / −0,8px
   (345:15908) — это мобильная ступень .t-heading (26 / 1.0 / −0.03em,
   то есть −0,78px), которую разметка уже держит классом. */
.tk-vychet-sec__title { margin-bottom: var(--s-3); }  /* макет 12 */


/* ══ 3. Вопросы и ответы · 345:15897 ═════════════════════════════════════
   Три плашки --c-mist столбиком. Кадр 375×495, плашки 335 во всю ширину
   контейнера.

   ИСПРАВЛЕНИЕ: просвет между плашками 12, а не 16 (кадры стоят на
   y = 0 / 175 / 325 при высотах 163 и 138). */
.tk-vychet-faq { gap: var(--s-3); }   /* макет 12 */

/* ИСПРАВЛЕНИЕ: поля плашки 18/20, а не 20 со всех сторон, и скругление 18,
   а не --r-image (20). Просвет 8 внутри плашки выведенная раскладка
   угадала — он не переопределяется.

   Скругление 18 — мобильная величина всех плашек этой сдачи (вопрос,
   способ, «ВАЖНО», врезка памятки): токена нет, ближайшие --r-input (12)
   и --r-image (20). Пишем пикселями с замером, как это сделано
   для полей 26 и 22 в десктопном куске страницы.

   Высота кадра сходится: 18 + 23 + 8 + 96 + 18 = 163. */
.tk-vychet-faq__item {
  padding:       18px var(--s-5);   /* макет 18/20 */
  border-radius: 18px;              /* макет 345:15898; токена 18 нет */
}

/* ИСПРАВЛЕНИЕ: кегль вопроса 18 / 1.25 (345:15899), а выведенная
   раскладка ставила мобильную ступень --t-subheading-size (20).
   На 295 доступной ширины 20 даёт третью строку там, где в макете две. */
.tk-vychet-faq__q {
  font-size:   18px;   /* макет 345:15899; ступени 18 на мобильных нет */
  line-height: 1.25;
}

/* Ответ правил не требует: в макете 15 / 1.6 (345:15900) — мобильная
   ступень .t-body с интерлиньяжем, который десктопный кусок уже задал.
   Цвет макета #3d4f44 в палитру не входит; как и на десктопе, берём
   канонический чернильный — ответ это содержание, а не примечание. */


/* ══ 4. Как заказать справку · 345:15907 ═════════════════════════════════
   Два способа столбиком и плашка «ВАЖНО» под ними. Столбик вместо двух
   колонок даёт base.css (.tk-grid--2 на 680), это уже работает.

   ИСПРАВЛЕНИЕ: просвет между карточками и отбивка плашки — 12, а не 16
   (карточки на y = 39 / 213 при высотах 162 и 183, плашка на 408). */
.tk-vychet-ways {
  gap:           var(--s-3);   /* макет 12 */
  margin-bottom: var(--s-3);   /* макет 12 */
}

/* ИСПРАВЛЕНИЕ: поля карточки 18/20 и скругление 18 — те же, что
   у плашки вопроса. Просвет 12 внутри карточки выведенная раскладка
   угадала. Обводка 1.5 --c-hairline и белая заливка в макете совпали
   с десктопом дословно. */
.tk-vychet-way {
  padding:       18px var(--s-5);   /* макет 18/20 */
  border-radius: 18px;              /* макет 345:15909 */
}

/* ИСПРАВЛЕНИЕ: название способа в макете 18 / 1.18 (345:15911), а класс
   .t-subheading в разметке даёт мобильные 20 / 1.13. Правило навешено
   на элемент внутри карточки, а не на .t-subheading: канонический класс
   типографической шкалы работает на всех страницах сразу, трогать его
   ради одной карточки нельзя. Специфичность (0,1,1) против (0,1,0)
   у класса — правило выигрывает без !important.

   На этих 18 сходится высота карточки 01:
   18 + 12 + 12 + 21 + 12 + 21 + 12 + 42 + 18 = 162. */
.tk-vychet-way h3 {
  font-size:   18px;   /* макет 345:15911 */
  line-height: 1.18;
}

/* ИСПРАВЛЕНИЕ: пункт способа на телефоне мельче прозы — 14 / 1.5
   (345:15914), кружок 5 вместо 6, просвет до текста 10 вместо 12,
   то есть отступ 15 вместо 18. Ступени 14 в прозе нет: в шкале 14 —
   это ступень подписей (--t-label-14-size), брать её кеглем абзаца
   нельзя, поэтому замер записан пикселями. Норму 11px кегль проходит
   с запасом. */
.tk-vychet-way__list li {
  padding-left: 15px;   /* макет: кружок 5 + просвет 10 */
  font-size:    14px;   /* макет 345:15914 */
  line-height:  1.5;
}

.tk-vychet-way__list li::before {
  width:  5px;          /* замер 345:15913 */
  height: 5px;
  top:    8px;          /* середина первой строки: (14 × 1.5 − 5) / 2 = 8 */
}


/* ══ 5. Плашка «ВАЖНО» · 345:15927 ═══════════════════════════════════════
   ИСПРАВЛЕНИЕ: поля 18/20 и скругление 18 — как у соседних плашек;
   выведенная раскладка ставила 20/22 и --r-image. Столбик вместо строки
   и просвет 8 она угадала, они не переопределяются.

   Текст плашки правил не требует: в макете 15 Medium / 1.45 (345:15929) —
   мобильная ступень .t-body с насыщенностью и интерлиньяжем из
   десктопного куска. Заливка #fdf1e0 в макете та же, что на десктопе, —
   13% оранжевого на бумаге, уже собранные color-mix.

   Высота кадра сходится: 18 + 12 + 8 + 66 + 18 = 122. */
.tk-vychet-note {
  padding:       18px var(--s-5);   /* макет 18/20 */
  border-radius: 18px;              /* макет 345:15927 */
}


/* ══ 6. Форма заявки · 345:15930 → карточка 345:15931 ════════════════════
   Карточка 335 во всю ширину контейнера, высота 1521.

   ИСПРАВЛЕНИЕ: выведенная раскладка ужимала карточку до мобильного
   --s-card (20) и скругления --r-image (20). В макете поля 24, просвет
   между всеми блоками 16, скругление карточное 24 — на телефоне карточка
   формы скругления не теряет, в отличие от плашек-примечаний.
   Просветы сходятся с координатами детей: 24 → 80 → 96 → 201 → 217 →
   562 → 578 → 638 → 654 → 999 → 1015 → 1137 → 1153 → 1302 → 1318 →
   1340 → 1356 → 1436 → 1452 → 1497 + 24 = 1521. */
.tk-vychet-form {
  gap:           var(--s-4);     /* макет 16 */
  padding:       var(--s-6);     /* макет 24 */
  border-radius: var(--r-card);  /* макет 24 */
}

/* ИСПРАВЛЕНИЕ: заголовок карточки в макете 24 / 1.15 (345:15932),
   а выведенная раскладка ставила мобильную ступень --t-heading-size (26).
   Ступени 24 на мобильных нет: сжатая шкала даёт 20 (--t-subheading-size)
   и 26 (--t-heading-size). Тот же кегль 24 просит мобильный макет памятки
   для заголовков разделов — это одна мобильная ступень на двух страницах.
   Сброс трекинга десктопный кусок уже сделал, здесь только кегль. */
.tk-vychet-form__title {
  font-size:   24px;   /* макет 345:15932 */
  line-height: 1.15;
}

/* ИСПРАВЛЕНИЕ: подзаголовок формы 14 (345:15933), а класс .t-body
   в разметке даёт мобильные 15. Интерлиньяж 1.5 десктопный кусок
   уже задал, он совпал с макетом. */
.tk-vychet-form__lead { font-size: 14px; }   /* макет 345:15933 */

/* ИСПРАВЛЕНИЕ: внутри блока полей и внутри ряда просвет 10 → шаг 12,
   а не 16. Столбик вместо двух колонок в ряду выведенная раскладка
   угадала — повторяем его здесь только чтобы правило читалось целиком. */
.tk-vychet-form__block { gap: var(--s-3); }   /* макет 10 → шаг 12 */
.tk-vychet-form__row {
  grid-template-columns: 1fr;
  gap: var(--s-3);                            /* макет 10 → шаг 12 */
}

/* ИСПРАВЛЕНИЕ: зелёная плашка на телефоне поля НЕ ужимает — в макете
   те же 22/26, что на десктопе (345:15971), а выведенная раскладка
   зачем-то срезала их до 20/22. Возвращаем десктопные: правило стоит
   позже в порядке подключения и перебивает их. Просвет 10 → шаг 12,
   скругление --r-image (20) в макете совпало с десктопом. */
.tk-vychet-form__notice {
  gap:     var(--s-3);   /* макет 10 → шаг 12 */
  padding: 22px 26px;    /* макет 22/26 — как на десктопе */
}

/* ИСПРАВЛЕНИЕ: текст зелёной плашки 13 (345:15973), а класс .t-body
   в разметке даёт 15. Это самый мелкий кегль страницы; норму 11px
   он проходит, белым по зелёному контраст около 5:1 (светлый конец градиента
   #268034) — выше порога AA даже для мелкого текста. */
.tk-vychet-form__notice-text { font-size: 13px; }   /* макет 345:15973 */

/* ИСПРАВЛЕНИЕ: кнопка отправки на телефоне тянется во всю ширину
   карточки (345:15980, 287 при внутренней ширине карточки 287),
   а десктопный кусок ставит её по содержимому слева. */
.tk-vychet-form__submit { align-self: stretch; }


/* ══ 7. Тап-цели ниже нормы ══════════════════════════════════════════════
   Правило сверх макета. WCAG 2.5.8 (AA) требует 24×24 CSS-пикселя.
   Строка чекбокса «Нажмите, если не робот» однострочная: канонический
   бокс .tk-check 20×20 и подпись 14 / 1.45 (20,3px) дают цель высотой
   20 — ниже нормы. Добираем высоту самой строке-подписи: нажимается
   вся строка целиком, кегль и бокс не трогаем. В макете бокс 22×22,
   но и он нормы не даёт, а канонический компонент ради двух пикселей
   переопределять незачем. */
.tk-vychet-form__check { min-height: 24px; }

}

/* ═══ o-klinike ═══ */
/* ТОМОКО — мобильная адаптация страницы «О клинике» /o-klinike/.
   Снято 28.08.2026 с артборда Figma «М · О клинике  /o-klinike/»
   345:14727 (375×5493), файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы. Новых элементов нет — бургер и мобильное меню,
   единственная разметка, которой на десктопе физически не существует,
   заведены в mobile-m1.css.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Часть правил ниже
   дословно спорит с блоком @media (max-width: 680px) в page-o-klinike.css
   при равной специфичности и выигрывает только за счёт порядка
   подключения — это и есть способ поправить замеры, снятые раньше
   по метаданным, не трогая сгенерированный pages.css.

   Что уже сделано и здесь не повторяется:
     • шапка, бургер, раскрытое меню          — mobile-m1.css;
     • финальный блок (CTA и подвал)          — mobile-m3.css, узел 358:3920
       мобильного артборда совпадает с ним дословно;
     • отбивка крошек 32 и «/» вместо тире    — components.css;
     • тап-цель крошек 24                     — mobile-m1.css, блок тап-целей;
     • плитка ценности на 375 (поля 24,
       просвет 8, радиус 24)                  — mobile-m3.css, блок 1.

   Точка перелома одна — 680. Поля 20 даёт токен --l-page-padding,
   схлопывание сеток --2 и --3 в одну колонку — base.css. Теней нет
   ни одной, элевация только цветом и градиентом.

   Расхождения с макетом, сознательно НЕ реализованные (кегли 10, 13 и 14
   мельче нижней ступени шкалы, кегль и насыщенность заголовка секции,
   отсутствие карточки партнёра и маркеров у «Концепции»), перечислены
   в notes отчёта — в CSS они не заводились. */


@media (max-width: 680px) {

/* ══ 1. Шапка страницы · 345:14771 ═══════════════════════════════════════
   Кадр 375×256: поля 20 держит .tk-container, сверху 36 до крошек, между
   всеми тремя строками по 14, снизу 28. Крошки лежат в своей обёртке
   (.tk-crumbs, отбивка 32 из components.css), поэтому верхнее поле
   блока — ровно просвет 14. */

.tk-oklinike__head {
  gap: var(--s-4);              /* макет 14 → ближайший шаг сетки 16 */
  padding-top: var(--s-4);      /* просвет от крошек до заголовка, тот же 14 */
  padding-bottom: var(--s-8);   /* макет 28 → шаг 32 */
}

/* Заголовок в макете 36/leading-none/−1,3px (345:14773). Мобильная ступень
   --t-display-sm-size даёт 32 — это ОДИН ИЗ ДВУХ случаев, где сжатая шкала
   tokens.css расходится с мобильными макетами (второй — «М · Контакты»,
   там ровно те же 36). Кегль берём из макета, ступень не трогаем: править
   токен пришлось бы вслед за Figma, а там у остальных страниц свои 36.
   Интерлиньяж обязателен: класс тянет --t-display-sm-lh (1.05), а макет
   говорит leading-none — на «О клинике» в одну строку это лишние 2px
   под заголовком. */
.tk-oklinike__title {
  font-size:      36px;         /* макет 345:14773 */
  line-height:    1;
  letter-spacing: -0.036em;     /* −1,3px при кегле 36 */
}

/* Лид на мобильном опускается на ступень: в макете 15/1.55 (345:14774),
   а класс .t-body-lg в разметке даёт 17/1.29. Мера строки снимается —
   колонка одна. */
.tk-oklinike__lead {
  max-width:   none;
  font-size:   var(--t-body-size);
  line-height: 1.5;             /* макет 1.55; проза, а не подпись */
}


/* ══ 2. Снимок ресепшена · 345:14775 ═════════════════════════════════════
   Кадр 375×248: снимок 335×220 во всю ширину контейнера, нижнее поле 28.
   Секция «О клинике» на этом снимке кончается, поэтому её нижнее поле
   и есть эти 28. */

.tk-oklinike { padding-bottom: var(--s-8); }   /* макет 28 → шаг 32 */

/* ПОПРАВКА к page-o-klinike.css: там на 680 скругление оставлено карточным
   (24) «как в макете». В макете (345:14776) снимок скруглён на 20 —
   обложечное --r-image, ровно то же правило кита, что и на карточках
   услуг и статей: «карточки и изображения 24» относится только
   к карточкам. Пропорция 335/220 задана через aspect-ratio, а не высотой:
   на экранах у́же 375 снимок обязан сжиматься вместе с контейнером. */
.tk-oklinike__photo {
  aspect-ratio:  335 / 220;
  border-radius: var(--r-image);
}


/* ══ 3. Концепция и цели · 345:14777 ═════════════════════════════════════
   Кадр 375×941, нижнее поле 28. Две колонки встают в одну (это делает
   .tk-grid--2), между ними 22, внутри колонки шаг 12. */

.tk-oklinike-idea { padding-bottom: var(--s-8); }   /* макет 28 → шаг 32 */
.tk-oklinike-idea__grid { gap: var(--s-6); }        /* макет 22 → шаг 24 */

.tk-oklinike-idea__col,
.tk-oklinike-idea__list { gap: var(--s-3); }        /* макет 12 */

/* Заголовки колонок в макете 26/1.05/−0,8px (345:14779, 345:14785).
   Кегль 26 — ровно мобильная ступень --t-heading-size, трекинг совпал
   с токеном (−0,0308em против −0,03em), а интерлиньяж base.css отдаёт
   тегу <h2> как 1.0. Правится только он: «Концепция центра «ТОМОКО»»
   на 375 идёт в две строки, и 1.0 их склеивает. */
.tk-oklinike-idea__col > h2 { line-height: 1.05; }

/* ОТКЛОНЕНИЕ: пункты перечней в макете 14/1.5 (345:14780 и далее),
   ступени 14 в прозаической шкале нет — --t-label-14-size это капс
   с трекингом 0.1em, для абзаца он не годится. Остаётся мобильная
   ступень body (15) с интерлиньяжем макета 1.5; строка выходит на 1,5px
   выше макетной. Само правило line-height живёт в page-o-klinike.css
   без медиазапроса и здесь не повторяется.

   Маркер на 375 меньше десктопного: точка 6 при отступе слева 10
   (замер 345:14787 — рамка маркера 6×14, текст начинается на 16).
   Отступ сверху 8 ставит точку по середине первой строки (cy=11 при r=3).
   В мобильном макете точки стоят только у «Целей», у «Концепции» их нет —
   на сайте маркеры оставлены у обоих перечней: это два одинаковых списка,
   и разнобой читался бы как ошибка вёрстки. */
.tk-oklinike-idea__list li { gap: 10px; }   /* макет 10; шага 10 в ритме нет */
.tk-oklinike-idea__list li::before {
  width:      6px;
  height:     6px;
  margin-top: 8px;
}


/* ══ 4. Слоган и партнёрство · 345:14802 ═════════════════════════════════
   Кадр 375×1043: плашка 335×1015, нижнее поле 28. На 375 градиент
   вертикальный (--g-green), а не горизонтальный, скругление обложечное 20,
   поля 32/24, шаг между блоками 14. */

.tk-oklinike-slogan { padding-bottom: var(--s-8); }   /* макет 28 → шаг 32 */

.tk-oklinike-slogan__plate {
  gap: var(--s-4);                       /* макет 14 → шаг 16 */
  padding: var(--s-8) var(--s-6);        /* макет 32 сверху и снизу, 24 по бокам */
  border-radius: var(--r-image);         /* макет 20, а не карточные 24 */
  background: var(--g-green);            /* 345:14803: #268034 → --c-forest сверху вниз */
}

/* Верхний ряд разворачивается в колонку, карточка партнёра — во всю
   ширину плашки. В мобильном макете карточки партнёра нет вовсе;
   на сайте она оставлена: логотип НФ МНТК — часть содержания страницы,
   а не украшение, и на телефоне он тоже нужен. Логотип 200×141 сжимается
   сам — max-width у картинок стоит в base.css. */
.tk-oklinike-slogan__head { flex-direction: column; gap: var(--s-4); }
.tk-oklinike-slogan__col  { gap: var(--s-4); }         /* макет 14 → шаг 16 */
.tk-oklinike-slogan__partner { width: 100%; }

/* Строка о партнёрстве на 375 — 19/1.3/−0,7px (345:14805). Кегль 19
   совпадает со ступенью subheading мобильной шкалы (20) с точностью
   до пикселя, поэтому берётся токен, а не сырое значение.
   Перенос по слогам: «Лечебно-диагностическое» при кегле 20 шире колонки
   плашки на экранах у́же 360 — без этого правила строка вылезает
   за край и тянет вбок всю страницу. */
.tk-oklinike-slogan__lead {
  font-size:      var(--t-subheading-size);
  line-height:    1.3;
  letter-spacing: -0.037em;     /* −0,7px при кегле 19 */
  overflow-wrap:  break-word;
}

/* ОТКЛОНЕНИЕ: абзацы плашки в макете 13/1.55 (345:14806 и далее) —
   ниже нижней ступени шкалы (12 — капс) и ниже порога читаемости для
   прозы на тёмном. Остаётся мобильная ступень body (15) с интерлиньяжем
   макета; правило line-height: 1.55 стоит в page-o-klinike.css без
   медиазапроса и здесь не повторяется. Плашка выходит выше макетной —
   это осознанно. */


/* ══ 5. Наши ценности · 345:14811 ════════════════════════════════════════
   Кадр 375×924: поля секции 44 сверху и снизу, заголовок отбит от первой
   плитки на 16, плитки между собой — тоже на 16 вместо сеточных 24.
   Сама плитка на 375 (поля 24, просвет 8, радиус 24) перестроена
   в mobile-m3.css — здесь это не повторяется. */

.tk-oklinike-values { padding-block: 44px; }      /* макет 44; шага 44 в ритме нет */
.tk-oklinike-values__head { margin-bottom: var(--s-4); }
.tk-oklinike-values__grid { gap: var(--s-4); }

/* Иконка на 375 — 80 (345:14814), а не страничные 96. mobile-m3.css уже
   даёт этот размер через .tk-values__card .tk-card-value__icon и по
   специфичности перебивает .tk-oklinike-values__icon, но держаться
   на случайном перевесе селекторов нельзя: правило продублировано
   на собственном классе страницы, чтобы порядок и специфичность
   совпадали явно. */
.tk-oklinike-values__icon {
  width:  var(--s-20);
  height: var(--s-20);
}

}


/* ══ 6. Тесные экраны ════════════════════════════════════════════════════
   Точка 360 добавлена ради одного случая: боковые поля плашки-слогана 24
   оставляют на 320 колонку в 232, и строка о партнёрстве при кегле 20
   рвётся по слогам посреди слова. Ужимаем поля до 20 — места хватает,
   а перенос из блока 4 остаётся страховкой. */

@media (max-width: 360px) {
  .tk-oklinike-slogan__plate { padding-inline: var(--s-5); }
}

/* ═══ oms ═══ */
/* ТОМОКО — мобильная адаптация страницы «ТОМОКО в системе ОМС» /pacientu/oms/.
   Снято 28.08.2026 с артборда Figma «М · ТОМОКО в системе ОМС» 345:15631
   (375×3337), файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы. Новых элементов нет — бургер и мобильное меню,
   единственная разметка, которой на десктопе физически не существует,
   заведены в mobile-m1.css.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Почти каждое
   правило ниже дословно спорит с блоком @media (max-width: 680px)
   в page-oms.css при равной специфичности и выигрывает только
   за счёт порядка подключения.

   ВАЖНО. В page-oms.css мобильная раскладка была ВЫВЕДЕНА, а не снята:
   там прямо написано «отдельного мобильного макета у /pacientu/oms/
   нет», и раскладка бралась по соседней /o-klinike/licenzii/. Макет
   теперь есть, и он расходится с выведенным в семи местах:
     • кегль заголовка       — 34 / 1.02, а не токенные 38 / 0.94;
     • цвет заголовка        — зелёный, а не чернильный;
     • кегль лида            — 15, а не 17 (класс .t-body-lg в разметке);
     • градиент плашки       — сверху вниз, а не слева направо;
     • скругление таблицы    — 20, а не карточные 24;
     • код в строке таблицы  — капитель 12 --c-ash, а не строчные 15 --c-fog;
     • «СМОТРЕТЬ →»          — от строки остаётся одна стрелка, и она
                               НЕ уходит под название, а стоит справа;
   плюс нижняя граница секций 32 вместо канонических 56. Эти правила —
   весь смысл файла.

   Что уже сделано и здесь не повторяется:
     • шапка, бургер, раскрытое меню          — mobile-m1.css;
     • финальный блок (CTA и подвал)          — mobile-m3.css;
     • отбивка крошек 32 и «/» вместо тире    — components.css;
     • тап-цель крошки 24                     — mobile.css;
     • поля 20 и сжатая шкала кеглей          — tokens.css.

   Отбивка крошек сошлась в ноль: макет ставит их на y=32 от низа шапки,
   ровно столько даёт .tk-crumbs на 680 из components.css.

   ПРАВИЛО ОКРУГЛЕНИЯ КЕГЛЕЙ, единое для файла: значение макета, совпавшее
   со ступенью шкалы, берётся токеном; расхождение в один пункт (11 против
   12, 14 против 15, 16 против 17) оставляется на ступени и перечислено
   в notes; расхождение больше пункта у заголовков берётся пикселями
   по замеру. Ниже 11px не опускаемся нигде — WCAG.

   Точка перелома одна — 680, теснее не понадобилось: колонка одна,
   самое длинное слово («исследование», 12 знаков кеглем 15) в поле
   таблицы 280 умещается и на 360. Теней нет ни одной. */


@media (max-width: 680px) {

/* ══ 1. Шапка страницы · 345:15675 ═══════════════════════════════════════
   Кадр 375×236: поля 20 держит .tk-container, вертикальные — 32 сверху
   (до крошек) и 24 снизу, просветы между крошками, заголовком и лидом
   по 14. Крошки лежат в своей обёртке (.tk-crumbs, отбивка 32 из
   components.css — ровно макетные 32), поэтому верхнее поле блока —
   ровно просвет 14.
   Сумма сходится: 32 + 13 + 14 + 70 + 14 + 69 + 24 = 236. */

.tk-oms-head {
  gap:            var(--s-4);   /* макет 14 → ближайший шаг сетки 16 */
  padding-top:    var(--s-4);   /* просвет от крошек до заголовка, тот же 14 */
  padding-bottom: var(--s-6);   /* макет 24 */
}

/* Заголовок в макете 34 / 1.02 / −1,2px (345:15677). Мобильная ступень
   --t-page-title-size даёт 30, а выведенная раньше раскладка ставила
   вовсе --t-display-size (38): и то и другое с макетом расходится.
   Кегль берём из макета пикселями, трекинг переводим в em делением
   на кегль (−1.2 / 34 = −0.0353em), чтобы не разъезжался.

   ЦВЕТ — ОТКЛОНЕНИЕ МОБИЛЬНОГО МАКЕТА ОТ ДЕСКТОПНОГО. На артборде 375
   заголовок набран --c-brand-green (345:15677, #237e33), на десктопном
   1440 он чернильный (345:32774). Тот же случай, что на «М · Пациенту»
   и «М · Врачи», и реализован так же — как нарисовано. Соседние
   «М · ДМС» (345:15772) и «М · Программа госгарантий» (345:16413)
   заголовок оставляют чернильным: это не общее правило мобильных,
   а решение одной страницы. Если это описка дизайнера, снимается
   удалением одной строки; см. notes. */
.tk-oms-head__title {
  font-size:      34px;         /* макет 345:15677; ступени 34 в шкале нет */
  line-height:    1.02;
  letter-spacing: -0.0353em;    /* −1,2px при кегле 34 */
  color:          var(--c-brand-green);
}

/* Лид на мобильном опускается на ступень: в макете 15 / 1.55 --c-fog
   (345:15678), а класс .t-body-lg в разметке даёт 17 / 1.29. Кегль 15 —
   это ровно мобильная ступень --t-body-size, подбирать нечего.
   Цвет приходит утилитой .c-muted. */
.tk-oms-head__lead {
  font-size:   var(--t-body-size);
  line-height: 1.55;            /* макет 1.55 */
}


/* ══ 2. Общая обвязка секций · 345:15679, 345:15683, 345:15698 ═══════════
   Все три блока страницы — плашка, таблица и документы — отбиты снизу
   одинаково на 32, а не на канонические --s-section (56 на мобильном).
   Замер: плашка 158 + 32 = 190; таблица 27 + 12 + 362 + 32 = 433;
   документы 27 + 10 + 355 + 32 = 424 (кадр 397 при пяти пунктах). */

.tk-oms-sec { padding-bottom: var(--s-8); }   /* макет 32 */

/* Заголовок раздела: 26 / 1.05 / −0,8px (345:15684 и 345:15699).
   Кегль и трекинг сошлись со ступенью .t-heading на 680 в ноль
   (26 и −0.03em = −0.78px), макетным остаётся только интерлиньяж:
   токен даёт 1.0, и на двухстрочном «Что доступно по полису» строки
   слипаются. Отбивка от содержимого 12 — замер блока «Что доступно»;
   в блоке документов она 10, разницу в два пикселя не разводим
   вторым правилом, записано в notes. */
.tk-oms-sec__title {
  line-height:   1.05;
  margin-bottom: var(--s-3);    /* макет 12 */
}


/* ══ 3. Плашка «Обратите внимание» · 345:15680 ═══════════════════════════
   Поля 20 со всех сторон, просвет 10, скругление 20.
   Высота 158 = 20 + 12 + 10 + 96 + 20.

   ГРАДИЕНТ РАЗВЁРНУТ. На десктопе плашка широкая и залита --g-green-x
   (слева направо); в мобильном макете она высокая, и градиент идёт
   сверху вниз — тот же токен без буквы x. Это не косметика: на 375
   горизонтальный градиент прошёл бы все три стопа за 335 точек,
   и плашка стала бы пёстрой поперёк текста. */

.tk-oms-alert {
  gap:           10px;             /* макет 10; ступени 10 нет, между --s-2 и --s-3 */
  padding:       var(--s-5);       /* макет 20 со всех сторон */
  border-radius: var(--r-image);   /* макет 20; карточные 24 здесь велики */
  background:    var(--g-green);   /* макет: стопы идут сверху вниз */
}

/* Текст плашки в макете 16 / 1.5 (345:15682). Ступени 16 на мобильном
   нет — она ровно между body 15 и body-lg 17; класс .t-body-lg
   в разметке даёт 17, кегль оставлен на нём. Из макета взят
   интерлиньяж: десктопные 1.45 на шести строках заметно плотнее
   нарисованного. */
.tk-oms-alert__text { line-height: 1.5; }


/* ══ 4. Что доступно по полису · 345:15685 ═══════════════════════════════
   Плашка --c-mist: поля 20 по бокам, сверху 6 и снизу 16, скругление 20.
   Верхние 6 меньше нижних 16 намеренно — у первой строки есть своя
   верхняя линия, и она уже даёт воздух. Высота 362 = 6 + 85 × 4 + 16. */

.tk-oms-table {
  padding:       6px var(--s-5) var(--s-4);  /* макет 6 / 20 / 16 */
  border-radius: var(--r-image);             /* макет 20, а не карточные 24 */
}

/* Строка складывается в лестницу «код → услуга»: колонка 260 в 335
   не помещается. Высота 85 = 13 + 13 + 4 + 42 + 13.
   Значения совпадают с тем, что выведено в page-oms.css; повторены
   здесь целиком, чтобы блок читался как снятая метрика макета,
   а не как половина метрики плюс половина наследства. */
.tk-oms-table__row {
  grid-template-columns: 1fr;
  gap:                   var(--s-1);   /* макет 4 */
  padding-block:         13px;         /* макет 13; ступени 13 в ритме нет */
}

/* КОД УХОДИТ В КАПИТЕЛЬ. В макете (345:15687, 345:15693) он набран
   11 Medium с трекингом 0,8px цветом --c-ash и прописными: строки
   «АППАРАТНОЕ ЛЕЧЕНИЕ» и «ХИРУРГИЯ КАТАРАКТЫ» в разметке записаны
   строчными, значит капитель даёт CSS. Это ПРЯМО ПРОТИВОРЕЧИТ
   комментарию page-oms.css («код остаётся строчным, а не уходит
   в капитель»): тот вывод делался без макета. Макет старше вывода —
   реализуем как нарисовано, разметку не трогаем.
   Кегль 11 округлён до ступени 12 (--t-label-12), трекинг взят
   из шкалы; см. notes. */
.tk-oms-table__code {
  font-size:      var(--t-label-12-size);
  font-weight:    var(--w-medium);
  letter-spacing: var(--t-label-12-ls);
  line-height:    1.2;                 /* макет leading-normal */
  text-transform: uppercase;
  color:          var(--c-ash);        /* макет; на десктопе --c-fog */
}

/* Название услуги 15 SemiBold — ровно мобильная ступень --t-body-size,
   она и приходит из body. Из макета только интерлиньяж 1.4
   против десктопных 1.45. */
.tk-oms-table__name { line-height: 1.4; }


/* ══ 5. Нормативные документы · 345:15700 и однотипные ═══════════════════
   Пять пунктов, между ними просвет 10, у каждого волосяная линия сверху.
   Высота пункта 66 для двухстрочных и 45 для однострочных: 12 + текст + 12.

   Просвета между пунктами на десктопе нет — линии идут встык. Список
   раскладывается сеткой; маркеры и поля <ol> уже сняты в base.css. */

.tk-oms-docs {
  display: grid;
  gap:     10px;                       /* макет 10; ступени 10 в ритме нет */
}

/* СТРЕЛКА ОСТАЁТСЯ СПРАВА. Выведенная раньше раскладка уводила
   «СМОТРЕТЬ →» под название второй строкой; в макете (345:15700)
   пункт остаётся строкой из трёх колонок — номер, название, стрелка,
   выключенная по правому краю. Возвращаем третью колонку и
   выравнивание по центру, снятые в page-oms.css. */
.tk-oms-doc {
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap:                   var(--s-3);   /* макет 12 */
  align-items:           center;
  padding-block:         var(--s-3);   /* макет 12 */
}

/* СЛОВО «СМОТРЕТЬ» НА МОБИЛЬНОМ НЕ ПОКАЗЫВАЕТСЯ: в макете от строки
   остаётся одна стрелка шириной 8 (345:15703). Разметку трогать нельзя,
   а слово лежит голым текстовым узлом рядом со <span> стрелки, поэтому
   гасим его нулевым кеглем на абзаце и возвращаем кегль стрелке.
   Из доступности при этом ничего не пропадает: стрелка помечена
   aria-hidden, и экранный диктор по-прежнему читает «СМОТРЕТЬ».
   Если решение не примут, откат — удалить два правила ниже; см. notes. */
.tk-oms-doc__go {
  grid-column:    auto;        /* снимает перенос под название из page-oms.css */
  font-size:      0;
  line-height:    0;
  letter-spacing: 0;
}
.tk-oms-doc__go [aria-hidden="true"] {
  font-size:      var(--t-label-12-size);  /* макет 13 — ступень ближе на пункт */
  font-weight:    var(--w-medium);
  letter-spacing: normal;
  line-height:    1.2;
}

}

/* ═══ pacientu ═══ */
/* ТОМОКО — мобильная адаптация страницы «Пациенту» /pacientu/.
   Снято 28.08.2026 с артборда Figma «М · Пациенту  /pacientu/» 345:14834
   (375×3330), файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы. Новых элементов нет — бургер и мобильное меню,
   единственная разметка, которой на десктопе физически не существует,
   заведены в mobile-m1.css.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Часть правил ниже
   спорит с блоком @media (max-width: 680px) в page-pacientu.css при
   равной специфичности и выигрывает только за счёт порядка подключения.

   ВАЖНО. В page-pacientu.css мобильная раскладка была ВЫВЕДЕНА, а не
   снята: там прямо написано «отдельного мобильного макета у /pacientu/
   нет», и раскладка бралась по правилам системы. Макет теперь есть,
   и он расходится с выведенным в пяти местах:
     • кегль заголовка       — 36, а не 34;
     • цвет заголовка        — зелёный, а не чернильный;
     • кегль лида            — 15, а не 17 (класс .t-body-lg в разметке);
     • скругление карточки   — 20, а не карточные 24;
     • просвет карточек      — 12, а не сеточные 24;
   плюс нижняя граница секции 36 вместо канонических 56. Эти правила —
   весь смысл файла.

   Что уже сделано и здесь не повторяется:
     • шапка, бургер, раскрытое меню          — mobile-m1.css;
     • финальный блок (CTA и подвал)          — mobile-m3.css;
     • отбивка крошек, «/» вместо тире и
       тап-цель крошки 24                     — components.css и mobile.css;
     • поля 20 и сжатая шкала кеглей          — tokens.css.

   Точка перелома одна — 680, теснее не понадобилось: колонка одна,
   самое длинное слово («Территориальная», 15 знаков кеглем 15) в поле
   карточки 280 умещается и на 360. Теней нет ни одной.

   Расхождения с макетом, сознательно НЕ реализованные (кегли 11, 14 и 19
   между ступенями шкалы; сокращённые описания карточек; отбивка крошек
   36 вместо канонических 32), перечислены в notes отчёта — в CSS они
   не заводились. */


@media (max-width: 680px) {

/* ══ 1. Шапка страницы · 345:14878 ═══════════════════════════════════════
   Кадр 375×210: поля 20 держит .tk-container, вертикальные — 36 сверху
   (до крошек) и 28 снизу, просветы между крошками, заголовком и лидом
   по 14. Крошки лежат в своей обёртке (.tk-crumbs, отбивка 32 из
   components.css), поэтому верхнее поле блока — ровно просвет 14.

   Значения совпадают с тем, что уже стоит в page-pacientu.css: повторены
   здесь целиком, чтобы блок читался как снятая метрика макета, а не как
   половина метрики плюс половина наследства. */

.tk-pacientu__head {
  gap: var(--s-4);              /* макет 14 → ближайший шаг сетки 16 */
  padding-top: var(--s-4);      /* просвет от крошек до заголовка, тот же 14 */
  padding-bottom: var(--s-8);   /* макет 28 → шаг 32 */
}

/* Заголовок в макете 36 / leading-none / −1,3px (345:14880). Мобильная
   ступень --t-display-sm-size даёт 32 — сжатая шкала tokens.css с этим
   макетом расходится, ровно как на «М · Контакты» и «М · О клинике».
   Кегль берём из макета, токен не трогаем. Интерлиньяж обязателен:
   класс тянет --t-display-sm-lh (1.05), а макет говорит leading-none.

   ЦВЕТ — ОТКЛОНЕНИЕ МОБИЛЬНОГО МАКЕТА ОТ ДЕСКТОПНОГО. На артборде 375
   заголовок набран --c-brand-green (345:14880, #237e33), на десктопном
   1440 он чернильный (345:31813, наследует --c-ink-green). Ровно тот же
   случай, что на «М · Врачи» 345:14510, и ровно так же реализован —
   как нарисовано. Если это описка дизайнера, снимается удалением одной
   строки; см. notes. */
.tk-pacientu__title {
  font-size:      36px;         /* макет 345:14880; ступени 36 в шкале нет */
  line-height:    1;
  letter-spacing: -0.036em;     /* −1,3px при кегле 36 */
  color:          var(--c-brand-green);
}

/* Лид на мобильном опускается на ступень: в макете 15/1.55 (345:14881),
   а класс .t-body-lg в разметке даёт 17/1.29. Кегль 15 — это ровно
   мобильная ступень --t-body-size, подбирать нечего. Мера строки
   снимается — колонка одна. */
.tk-pacientu__lead {
  max-width:   none;
  font-size:   var(--t-body-size);
  line-height: 1.5;             /* макет 1.55; проза, а не подпись */
}


/* ══ 2. Сетка разделов · 345:14882 ═══════════════════════════════════════
   Семь карточек 335×133 в один столбец. Столбец даёт base.css, здесь
   только просвет: ряды идут с шагом 145 при высоте карточки 133,
   то есть 12, а не сеточные 24.

   Правится .tk-grid--4 в области страницы, а не сам канонический класс:
   на других страницах та же сетка живёт со своими просветами. */

.tk-pacientu .tk-grid--4 { gap: var(--s-3); }   /* макет 12 */

/* Нижняя граница секции: в макете от последней карточки до подвала 36
   (кадр 1039 при низе карточки 1003). Канонические --s-section
   (56 на мобильном) здесь велики. */
.tk-pacientu { padding-bottom: var(--s-10); }   /* макет 36 → шаг 40 */


/* ══ 3. Карточка раздела · 345:14883 и однотипные ════════════════════════
   Плашка --c-mist 335×133: поля 20 со всех сторон, просвет строк 8,
   скругление 20. Высота карточки в макете не задана силой, а набегает
   из содержимого: 20 + 22 + 8 + 42 + 8 + 13 + 20 = 133 — поэтому
   min-height снимается, а space-between с десктопа остаётся без работы
   и ничего не портит.

   Поля 20 приходят сами: --s-card на 680 равен 20. */

.tk-pacientu-card {
  min-height:    0;             /* десктопные 275 на колонке в один ряд не нужны */
  gap:           var(--s-2);    /* макет 8 */
  border-radius: var(--r-image);/* макет 20; карточное скругление 24 здесь велико */
}

/* ОТКЛОНЕНИЕ КЕГЛЕЙ, реализованное только интерлиньяжем. Название
   в макете 19 SemiBold / 1.15 / −0,4px — ступень .t-subheading даёт
   на мобильном 20 / 1.13 / −0,03em, расхождение в один пункт, ступени 19
   в шкале нет: класс оставлен как есть. Описание в макете 14 / 1.5,
   ступень body даёт 15 / 1.33 — кегль тоже оставлен канонический,
   а интерлиньяж взят из макета: на описании в три строки 1.33 заметно
   плотнее нарисованного. Тот же приём, что у .tk-zabkat__text. */
.tk-pacientu-card .t-body { line-height: 1.5; }

}

/* ═══ pamyatka ═══ */
/* ТОМОКО — мобильная адаптация страницы «Памятка пациенту»
   /pacientu/pamyatka/. Снято 28.08.2026 с артборда Figma
   «М · Памятка пациенту  /pacientu/pamyatka/» 345:15988 (375×3165),
   файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы. Новых элементов нет — бургер и мобильное меню,
   единственная разметка, которой на десктопе физически не существует,
   заведены в mobile-m1.css.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Часть правил ниже
   дословно спорит с блоком @media (max-width: 680px) в page-pamyatka.css
   при равной специфичности и выигрывает только за счёт порядка
   подключения.

   ВАЖНО. Когда писался page-pamyatka.css, мобильного макета у страницы
   не было: в его блоке 7 так и записано — «раскладка выведена по правилам
   системы и по мобильному виду соседних страниц того же типа». Теперь
   макет есть, и он разошёлся с выведенной раскладкой в десяти местах.
   Эти десять правил — весь смысл файла:
     • нижнее поле шапки страницы     24, а не 32;
     • кегль заголовка                34 / 1.02 / −1,2px, а не 38 / 0.94
                                      от --t-display-size;
     • кегль лида                     15, а не 17 от .t-body-lg;
     • нижнее поле страницы           32, а не 40;
     • надстрочник «СОДЕРЖАНИЕ»       в макете его нет — снят с глаз,
                                      но оставлен диктору;
     • строка оглавления              номер по центру строки, а не по верху;
     • просветы текста памятки        16, а не 20;
     • кегль заголовка раздела        24 / 1.08, а не ступень .t-heading (26);
     • кегль прозы и пунктов          16, а НЕ мобильные 15 из шкалы;
     • врезка                         поля 18/20 и скругление 18,
                                      а не 20 со всех сторон и --r-image.

   Что уже сделано и здесь не повторяется:
     • шапка, бургер, раскрытое меню          — mobile-m1.css;
     • финальный блок (CTA и подвал)          — mobile-m3.css: узел
       358:4988 мобильного артборда совпадает с ним дословно;
     • отбивка крошек 32 и «/» вместо тире    — components.css (макет 32 ✓);
     • тап-цель крошек 24                     — mobile-m1.css, блок тап-целей;
     • верхнее поле и просветы шапки страницы — page-pamyatka.css, блок 7:
       16 против макетных 14 — цена шага 4px, переопределения не стоит
       (то же решение принято на «Лицензиях» и «Налоговом вычете»);
     • одна колонка вместо «оглавление 300 + текст» и просвет 32 между
       ними                                   — page-pamyatka.css, блок 7:
       сошлось с макетом до пикселя (кадр оглавления 272 при нижнем
       поле 32, кадр текста начинается ровно на 535);
     • просвет 16 между пунктами списка,
       просвет 12 «маркер → текст», волосяная
       линия и поля строки оглавления         — page-pamyatka.css, блоки
       5–6: сошлось, трогать нечего.

   Точка перелома одна — 680: страница по всей ширине идёт в одну колонку,
   ни на 480, ни на 360 ничего не ломается. Самая длинная неразрывная
   строка — «направление ф. 057/у-04» — на 320 умещается в меру 262.
   Поля 20 даёт tokens.css. Теней нет ни одной, элевация только цветом.

   Расхождения с макетом, сознательно НЕ реализованные (кегли 11
   у номера пункта, высота строки оглавления 40 против 44, маркер списка
   по центру всего пункта вместо первой строки, состав оглавления
   и разделов), перечислены в notes отчёта — в CSS они не заводились. */


@media (max-width: 680px) {

/* ══ 1. Шапка страницы · 345:16032 ═══════════════════════════════════════
   Кадр 375×201 — тот же, что у «Налогового вычета», до пикселя: сверху 32
   до крошек, между всеми тремя строками по 14, снизу 24. Крошки лежат
   в своей обёртке (.tk-crumbs, отбивка 32 из components.css — сошлось
   с макетом), поэтому верхнее поле блока — ровно просвет 14, и оно уже
   стоит округлённым до шага 16 в page-pamyatka.css.

   ИСПРАВЛЕНИЕ: там же нижнее поле стоит 32. В макете 24, и на этих 24
   сходится высота кадра: 32 + 13 + 14 + 35 + 14 + 69 + 24 = 201. */

.tk-pamyatka__head { padding-bottom: var(--s-6); }   /* макет 24 */

/* ИСПРАВЛЕНИЕ: заголовок в макете 34 / 1.02 / −1,2px (345:16034),
   а выведенная раскладка брала мобильную ступень --t-display-size (38)
   с интерлиньяжем 0.94. Трекинг переведён в em делением на кегль,
   чтобы не разъезжался на 480 и 360.

   ОТКЛОНЕНИЕ ОТ ШКАЛЫ: ступени 34 на мобильных нет — сжатая шкала
   tokens.css даёт 30 (--t-page-title-size) и 32 (--t-display-sm-size).
   Значения ровно те же, что у .tk-lic__title и .tk-vychet-head__title:
   это одна мобильная ступень на трёх страницах, а не три подбора.
   Кегль взят из макета, токен не тронут. См. notes отчёта. */
.tk-pamyatka__title {
  font-size:      34px;         /* макет 345:16034 */
  line-height:    1.02;
  letter-spacing: -0.035em;     /* −1,2px при кегле 34 */
}

/* ИСПРАВЛЕНИЕ: лид на телефоне опускается на ступень — в макете 15 / 1.55
   (345:16035), а класс .t-body-lg в разметке даёт 17 / 1.29. Кегль 15 —
   это ровно мобильная --t-body-size. Интерлиньяж 1.5 вместо макетных
   1.55: ступень прозы, принятая в системе. Меру строки page-pamyatka.css
   уже снял — колонка одна. */
.tk-pamyatka__lead {
  font-size:   var(--t-body-size);   /* макет 15 = мобильная ступень body */
  line-height: 1.5;                  /* макет 1.55; проза, а не подпись */
}


/* ══ 2. Нижнее поле страницы ═════════════════════════════════════════════
   ИСПРАВЛЕНИЕ: выведенная раскладка отбивала страницу от подвала на 40.
   В макете нижнее поле кадра «Текст памятки» — 32 (579 + 32 = 611),
   ровно столько же, сколько под оглавлением. */
.tk-pamyatka { padding-bottom: var(--s-8); }   /* макет 32 */


/* ══ 3. Оглавление · 345:16036 ═══════════════════════════════════════════
   Пять строк с волосяной линией сверху, номер оранжевый, название
   чернильное, текущий раздел зелёный. Всё это десктопный кусок уже
   держит, и просветы сошлись: между строками в макете 10 → шаг 12,
   который там и стоит.

   ИСПРАВЛЕНИЕ: надстрочника «СОДЕРЖАНИЕ» в мобильном макете нет —
   оглавление начинается сразу первой строкой. Убираем его с глаз, но
   НЕ из разметки и не из дерева доступности: <nav> ссылается на него
   через aria-labelledby, и без этой строки навигация теряет имя.
   Приём и набор свойств — те же, что у .visually-hidden в base.css.
   Элемент выпадает из потока, поэтому просвет 12 между ним и списком
   исчезает сам: у абсолютно спозиционированного ребёнка флексбокса
   gap не работает. */
.tk-pamyatka-toc__title {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
}

/* ИСПРАВЛЕНИЕ: в макете номер и название стоят по центру строки
   (345:16037, items-center), а десктопный кусок ровняет их по верху —
   там номер намеренно поднят над строкой. На 335 название занимает одну
   строку, и выравнивание по верху даёт видимый скос номера вверх. */
.tk-pamyatka-toc__row { align-items: center; }


/* ══ 4. Текст памятки · 345:16052 ════════════════════════════════════════
   Кадр 375×611: просвет между ВСЕМИ элементами — заголовками, абзацами,
   пунктами, врезкой — ровно 14. Шага 14 в сетке 4px нет; берём 16, как
   это уже сделано на десктопе для макетных 22 → 24.

   ИСПРАВЛЕНИЕ: выведенная раскладка ставила 20. Просвет между пунктами
   списка (16) она угадала — он не переопределяется. */
.tk-pamyatka-text      { gap: var(--s-4); }   /* макет 14 → шаг 16 */
.tk-pamyatka-text__sec { gap: var(--s-4); }   /* макет 14 → шаг 16 */

/* ИСПРАВЛЕНИЕ: заголовок раздела в макете 24 / 1.08 / −0,7px (345:16053),
   а класс .t-heading в разметке даёт мобильные 26 / 1.0. Трекинг макета
   −0,7px при кегле 24 — это −0.029em, канонический −0.03em сходится,
   своего правила ему не нужно.

   Правило навешено на элемент внутри памятки, а не на .t-heading:
   канонический класс типографической шкалы работает на всех страницах
   сразу, трогать его ради одной статьи нельзя. Специфичность (0,1,1)
   против (0,1,0) у класса — правило выигрывает без !important.

   Ступени 24 на мобильных нет: сжатая шкала даёт 20 (--t-subheading-size)
   и 26 (--t-heading-size). Тот же кегль 24 просит мобильный макет
   «Налогового вычета» для заголовка карточки формы — это одна мобильная
   ступень на двух страницах, а не два подбора. */
.tk-pamyatka-text h2 {
  font-size:   24px;   /* макет 345:16053 */
  line-height: 1.08;
}

/* ИСПРАВЛЕНИЕ И ОТКЛОНЕНИЕ ОТ ШКАЛЫ: проза памятки на телефоне НЕ падает
   до мобильных 15 — в макете и абзацы, и пункты списка набраны 16
   (345:16054 — 16 / 1.68, 345:16057 — 16 / 1.55). Это единственная
   страница сдачи, где мобильный макет держит кегль десктопной прозы,
   и держит намеренно: здесь медицинские предписания, которые пациент
   обязан прочесть перед операцией. Класс .t-body в разметке даёт 15,
   поэтому кегль записан пикселями — токена «16 на мобильных» нет,
   --t-body-size внутри этого медиазапроса равен 15. */
.tk-pamyatka-text__p {
  font-size:   16px;   /* макет 345:16054; --t-body-size здесь = 15 */
  line-height: 1.68;   /* макет 1.68; на десктопе 1.65 */
}

.tk-pamyatka-text__list li {
  font-size:   16px;   /* макет 345:16057 */
  line-height: 1.55;
}

/* Маркер — оранжевый кружок 6, как на десктопе (345:16056, замер 6×6),
   и просвет 12 до текста тоже совпал. ИСПРАВЛЕНИЕ только в отступе
   сверху: он ставит кружок в оптический центр ПЕРВОЙ строки, а при
   кегле 16 и интерлиньяже 1.55 это (16 × 1.55 − 6) / 2 ≈ 9, а не 8,
   посчитанные для 15 / 1.5.

   В макете кружок центрирован по всему пункту целиком, включая вторую
   строку. Не повторяем сознательно: на трёхстрочном пункте (а такие
   появляются на 360) кружок уезжает в середину абзаца. То же решение
   и та же оговорка — в блоке 6 page-pamyatka.css. */
.tk-pamyatka-text__list li::before { margin-top: 9px; }

/* ИСПРАВЛЕНИЕ: врезка в макете 335×108 с полями 18/20 и скруглением 18
   (345:16071), кегль 16 Medium / 1.5 (345:16072). Выведенная раскладка
   ставила поля 20 со всех сторон, скругление --r-image (20) и кегль
   от .t-body-lg (мобильные 17). Высота сходится: 18 + 72 + 18 = 108.

   Скругление 18 — мобильная величина всех плашек этой сдачи (врезка
   памятки, вопрос, способ и «ВАЖНО» на «Налоговом вычете»): токена нет,
   ближайшие --r-input (12) и --r-image (20). Пишем пикселями с замером,
   как это сделано для полей 28 и 22 в десктопных кусках. */
.tk-pamyatka-text__callout {
  padding:       18px var(--s-5);   /* макет 18/20 */
  border-radius: 18px;              /* макет 345:16071; токена 18 нет */
  font-size:     16px;              /* макет 345:16072 */
}

}

/* ═══ price ═══ */
/* ТОМОКО — мобильная адаптация страницы «Прайс» /price/.
   Снято 28.08.2026 с артборда Figma «М · Прайс  /price/» 345:14365
   (375×3434), файл U5M0ihzdUI9upBTwUAHZ42. Размеры замерены на узлах,
   не подобраны: у каждого отклонения от шкалы в комментарии стоит замер.

   Слой медиазапросов к ТОЙ ЖЕ десктопной разметке pages/price.html.
   Отдельной вёрстки нет, классы те же, HTML не менялся.

   Порядок подключения: mobile.css идёт после pages.css, поэтому этот файл
   переопределяет мобильный блок из .build/page-price.css — тот писался
   до съёмки мобильного макета и расходится с ним в кеглях и метрике.
   Здесь правится только то, что действительно разошлось; совпавшее
   (поля плашки, ширина кнопки, скрытая шапка таблицы, колонка вместо
   трёх столбцов) заново не объявляется.

   Общий хром — шапка, бургер, раскрытое меню, крошки, финальный блок —
   не трогается: он разобран в mobile-m1 и mobile-m3 и одинаков на всех
   внутренних страницах.

   Поля 20 и сжатую шкалу кеглей даёт tokens.css.

   Все селекторы привязаны к классам этой страницы (.tk-pricelist*,
   .tk-omsnote*): файл склеивается в общий mobile.css, и правила не
   должны протекать на соседние страницы. Точка перелома одна — 680,
   плюс один запас на 360. Правил шире 680 в файле нет. */

@media (max-width: 680px) {

/* ══ 1. Каркас секции · 345:14418 ═══════════════════════════════════════
   Между кнопкой «показать все» и финальным блоком в макете 36
   (1043 − 1007 в кадре «Вкладки и таблица»). Канонические --s-section
   дают на мобильном 56 — слишком много. Шага 36 в ритме нет,
   берём меньший соседний. */
.tk-pricelist { padding-bottom: var(--s-8); }


/* ══ 2. Шапка страницы · 345:14409 ══════════════════════════════════════
   Кадр 375×212, поля 20/36/20/28, просвет 14. Отступы совпали с тем,
   что уже стоит в page-price.css, — заново не объявляем. Разошлись два
   кегля. */

/* Заголовок. Замер: 38 / интерлиньяж normal (1.0) / трекинг −1,4px.
   В page-price.css стоит 34 — это кегль заголовка каталога услуг,
   поставленный по аналогии, а не по этому макету.
   38 численно совпадает со ступенью --t-display-size мобильной шкалы,
   но это ступень героя главной: подставлять её сюда — врать о смысле,
   поэтому число написано числом. Трекинг переведён в em: 1.4 / 38. */
.tk-pricelist__title {
  font-size: 38px;
  line-height: 1;
  letter-spacing: -0.0368em;
}

/* Лид. Замер: 15 / 1.55. В разметке класс .t-body-lg, на мобильном это
   17 — на 335 такой лид занимает четыре строки вместо трёх. Ступень 15
   в мобильной шкале есть (--t-body-size), берём её; интерлиньяж 1.55
   токеном не описан — это плотность абзаца, а не подписи. */
.tk-pricelist__lead {
  font-size: var(--t-body-size);
  line-height: 1.55;
}


/* ══ 3. Поиск по прайсу · 345:14413 ═════════════════════════════════════
   Поле 335×59, скругление 12, обводка волосяная, поля 18 слева и 15
   сверху-снизу. В page-price.css поле возвращено к каноническим 52 —
   макет просит 59.
   59 в макете набирается глифом лупы 24: 15 + 29 + 15. У нас лупа —
   отдельная кнопка 44×44 с абсолютным позиционированием, высоту поля
   она не тянет, поэтому 59 набираем полем: 18 + строка 15/1.33 ≈ 20
   + 18 + обводка 2 = 58. Шага 18 в ритме нет. */
.tk-pricelist__input { padding-block: 18px; }


/* ══ 4. Вкладки разделов · 345:14419 ════════════════════════════════════
   Полоса 335×33 с прокруткой: в кадр влезают две с половиной вкладки
   из семи, третья обрезана краем контейнера — это и есть прокрутка,
   а не ошибка макета. Сама прокрутка уже включена (.tk-tabs--scroll
   плюс flex-wrap: nowrap из page-price.css), просвет 8 канонический. */

/* Отбивка от подсказки под поиском: 8, а не канонические 24.
   Замер: кадр поиска кончается на 372, вкладки начинаются там же. */
.tk-pricelist__tabs { margin-top: var(--s-2); }

/* ПЕРЕОПРЕДЕЛЕНИЕ КАНОНИЧЕСКОГО .tk-tab. Без него никак: мобильная
   пилюля в макете 33 против десктопных 39, поля 16 против 24, кегль 11
   против 12. С десктопной геометрией семь вкладок уезжают за край
   заметно дальше, и первая вкладка перестаёт помещаться целиком.
   Модификатор завести нельзя — он потребовал бы правки разметки,
   поэтому правило прижато к .tk-pricelist__tabs и на другие страницы
   не протекает.
   Обводка внутренняя (1,5), поэтому вычитается из полей — тем же
   приёмом, что в самом .tk-tab. Высота: 8,5 + 11×1,2 + 8,5 + 3 = 33. */
.tk-pricelist__tabs .tk-tab {
  padding: calc(10px - var(--bw-outline)) calc(var(--s-4) - var(--bw-outline));
  /* Замер 11. Ступени 11 в шкале нет, ближайшая --t-label-12 даёт 12.
     11 — ровно нижняя граница читаемости, принятая в этом слое. */
  font-size: 11px;
  /* Замер: подпись невыбранной вкладки чернильная, а не приглушённая.
     На 375 приглушённый серый по белому на 11-м кегле не читается. */
  color: var(--c-ink-green);
}
/* Выбранная вкладка в макете набрана полужирным, невыбранные — средним.
   Цвет и подложку даёт канонический [aria-selected="true"]. */
.tk-pricelist__tabs .tk-tab[aria-selected="true"] { font-weight: var(--w-semibold); }


/* ══ 5. Таблица прайса · 345:14426 ══════════════════════════════════════ */

/* Отбивка панели от вкладок: 16 (вкладки кончаются на 405, таблица
   начинается на 421), а не канонические 24. */
.tk-pricelist__panel { margin-top: var(--s-4); }

/* Скругление плашки 20, а не карточное 24: на мобильном к 20 приведены
   все крупные поверхности — тот же приём, что у .tk-card-service
   и .tk-blog__card в mobile-m2 и mobile-m3. Поля 6/20/16 из макета
   уже стоят в page-price.css (8/20/16), разница в 2 не стоит правила. */
.tk-pricelist__plate { border-radius: var(--r-image); }

/* Разделители строк. В mobile-m2 канонический .tk-price-row лишён
   границы — так нарисован тизер прайса на главной (345:13798), там
   строки разделяет воздух. На самой странице прайса макет разделители
   держит: волосяная линия сверху у КАЖДОЙ строки, включая первую,
   а под последней линии нет. Возвращаем их сверху, а не снизу —
   иначе не совпадёт ни первая линия, ни отсутствие последней.
   Правило прижато к .tk-pricelist__list: тизер главной не заденет. */
.tk-pricelist__list .tk-price-row {
  border-top: 1px solid var(--c-hairline);   /* волосяная линия: токена толщины нет */
}

/* Метрику строки (столбец, просвет 4, поля 16) канонический слой уже
   даёт, и высота строки совпадает с макетом до пикселя: 16 + 12 + 4
   + 44 + 4 + 22 + 16 = 118, ровно шаг строк в кадре. Макетные 14/6
   дают ту же сумму, поэтому переопределять нечего. */


/* ══ 6. Показать все · 345:14454 ════════════════════════════════════════ */

/* Счётчик. Замер 12; в разметке класс .t-label, а он и на мобильном
   остаётся 14 — мобильная шкала ступени label не сжимает. */
.tk-pricelist__count {
  font-size: var(--t-label-12-size);
  line-height: var(--t-label-12-lh);
}

/* Кнопка. В макете она залита, обводка 1 (а не 1,5), высота 46.
   ЗАЛИВКА ИНВЕРТИРОВАНА НАМЕРЕННО. В макете кнопка залита --c-mist
   и лежит на белом полотне, потому что «показать все» вынесено из
   плашки таблицы. В разметке этот блок лежит ВНУТРИ плашки --c-mist,
   и мистовая заливка там просто исчезает. Берём --c-paper: отношение
   «залитая кнопка на контрастном фоне» сохраняется, цвета — из палитры.
   Высота: 14 + 14×1,2 ≈ 17 + 14 + обводка 2 = 47 при макетных 46.
   Кегль остаётся канонический 14: в макете 13, ступени 13 в шкале нет —
   то же решение, что у крошек. */
.tk-pricelist__more {
  background: var(--c-paper);
  border-width: 1px;
  padding-block: 14px;                       /* шага 14 в ритме нет, замер макета */
  padding-inline: calc(var(--s-5) - 1px);    /* обводка внутренняя, вычитается */
}


/* ══ 7. Плашка ОМС · 345:14451 ══════════════════════════════════════════
   Отбивка 16 вместо 24, скругление 20 вместо карточного 24, поля 20
   (уже стоят в page-price.css). Градиент разворачивается обратно
   по вертикали: --g-green-x нужен широкой плашке, в колонке 335
   горизонтальный градиент вырождается в почти ровную заливку.
   --g-green — тот же токен, что у финального блока. */
.tk-omsnote {
  margin-top: var(--s-4);
  border-radius: var(--r-image);
  background: var(--g-green);
}

/* Текст плашки: замер 15 / 1.5. В разметке .t-body-lg — на мобильном 17,
   и абзац разъезжается на четыре строки вместо трёх. */
.tk-omsnote__text .t-body-lg {
  font-size: var(--t-body-size);
  line-height: 1.5;
}

}  /* /max-width: 680px */


/* ══ 8. Тесные экраны ═══════════════════════════════════════════════════
   Одна правка. Подпись «ПОКАЗАТЬ ВСЕ 59 УСЛУГ ↓» на 14-м кегле с
   трекингом 0,1em занимает около 245. Кнопка лежит внутри плашки, её
   внутренняя ширина на 375 — 255, подпись встаёт в строку; уже 375
   ширины перестаёт хватать, и components.css (там .tk-btn ниже 680
   разрешает перенос) роняет подпись на две строки. Ужимаем поля —
   на 375 это ничего не меняет (текст центрирован), а полосу 320…374
   вытягивает. Кегль не трогаем.
   На 320 подпись переносится всё равно: внутренних 216 не хватит и с
   нулевыми полями. Это допустимо — перенос разрешён самим китом. */
@media (max-width: 480px) {
  .tk-pricelist__more { padding-inline: calc(var(--s-3) - 1px); }
}

/* ═══ statya ═══ */
/* ТОМОКО — мобильная адаптация страницы «Статья» /blog/<slug>/.
   Снято 28.08.2026 с артборда Figma «М · Статья  /blog/<slug>/» 345:15216
   (375×4761), файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы. Никакой отдельной мобильной вёрстки нет; единственная
   разметка, которой на десктопе физически не существует, — бургер
   и раскрытое меню — заведена в mobile-m1.css и здесь не повторяется.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Часть правил ниже
   спорит с блоком @media (max-width: 680px) в page-statya.css при равной
   специфичности и выигрывает только за счёт порядка подключения.

   ЗАЧЕМ ФАЙЛ ВООБЩЕ НУЖЕН. В page-statya.css мобильная раскладка была
   ВЫВЕДЕНА, а не снята: там прямо написано «отдельного мобильного макета
   у этой страницы нет», и метрика бралась с мобильных секций главной
   и соседних внутренних страниц. Макет теперь есть, и он расходится
   с выведенным в семи местах — они и составляют весь смысл файла:
     1. заголовок статьи 30 — и это ровно мобильная ступень --t-page-title,
        подбирать 34 было не нужно (345:15266);
     2. вся проза статьи опускается до 16 при интерлиньяже 1,7,
        а H2 — до 24 (класс .t-heading даёт на мобильном 26);
     3. просветы внутри текста 16, а не выведенные 20;
     4. карточка автора: портрет 56 вместо 72, поля 16/18, скругление 20
        вместо карточных 24, имя 15, должность 12 (345:15286);
     5. «Читайте также» набрано 28 без трекинга, а не ступенью
        --t-heading-lg (30 при −0,04em) (345:15292);
     6. карточка в «Читайте также» на 375 — это ВТОРОЙ тип мобильной
        карточки статьи: плашка --c-mist, фотография ВНУТРИ полей
        со скруглением 14, дата отдельной строкой ПОД фотографией.
        Не белая коробка с обложкой во всю ширину, как в каталоге
        блога (345:15293);
     7. вертикальные поля секций 24 / 28 / 36 вместо канонических
        40 и --s-section.

   Что уже сделано и здесь сознательно НЕ повторяется:
     • шапка, бургер, раскрытое меню            — mobile-m1.css;
     • финальный блок (CTA и подвал, 358:4365)  — mobile-m3.css;
     • крошки со слэшем и их отбивка            — components.css;
     • колонка текста 960 снята ещё на 1100     — page-statya.css;
     • обложка 335×220 со скруглением --r-image — page-statya.css:
       совпало с макетом 345:15268 до пикселя, правим только отбивку;
     • кнопка «К ВРАЧУ» отдельной строкой во всю ширину карточки
       автора                                   — page-statya.css;
     • одна колонка в «Читайте также»           — base.css;
     • оранжевый маркер списка 6×6              — page-statya.css.

   Поля 20 и сжатую шкалу кеглей даёт tokens.css, здесь они не трогаются.
   Теней нет ни одной: элевация только цветом.

   ПЕРЕОПРЕДЕЛЕНИЯ КАНОНИЧЕСКИХ КЛАССОВ. Их три — .tk-card-post__cover,
   .tk-card-post__date (то есть .tk-chip) и .t-heading внутри текста
   статьи. Это заявленный контракт мобильного слоя; у каждого правила
   ниже стоит причина, почему без него никак. */


@media (max-width: 680px) {

/* ═══ 1. Шапка статьи (Figma 345:15260, 375×324) ═══════════════════════════
   Кадр: поля 20 держит .tk-container, вертикальные 36 сверху и 24 снизу.
   Лестница «крошки → мета → H1 → лид» с просветом 12. Крошки лежат выше,
   в своей полосе .tk-crumbs, поэтому верхнее поле блока — ровно просвет 12.
   Сумма сходится: 36 + 13 + 12 + 12 + 12 + 128 + 12 + 75 + 24 = 324. */

.tk-statya-head {
  gap: var(--s-3);              /* макет 12 */
  padding-top: var(--s-3);      /* тот же просвет: крошки → мета */
  padding-bottom: var(--s-6);   /* макет 24 */
}

/* Мета-строка. Макет даёт кегль 10 — он ниже границы читаемости слоя,
   поэтому ставим 11, минимум. Просвет между частями 10; при переносе
   строки хватает 8. Разделители «·» на телефоне скрыты правилом
   page-statya.css: в макете в строке два элемента и она укладывается
   в одну строку, а в разметке их три и точка повисает в конце первой. */
.tk-statya-head__meta {
  gap: var(--s-2) 10px;   /* макет 10 по горизонтали */
  font-size: 11px;        /* макет 10 → нижняя граница читаемости слоя */
}

/* Заголовок 30 при интерлиньяже 1,08 и трекинге −1px (345:15266) — это
   мобильная ступень --t-page-title дословно по кеглю и интерлиньяжу.
   Подбирать нечего: снимаем выведенные 34 и возвращаем ступень. */
.tk-statya-head__title {
  font-size: var(--t-page-title-size);
  line-height: var(--t-page-title-lh);
  letter-spacing: var(--t-page-title-ls);
}

/* Лид 16 при 1,55 (345:15267). Ступени 16 на мобильном нет: body даёт 15,
   body-lg — 17, поэтому замер. Цвет --c-fog берётся с класса .c-muted. */
.tk-statya-head__lead {
  font-size: 16px;        /* замер 345:15267 */
  line-height: 1.55;
}


/* ═══ 2. Обложка (Figma 345:15268, 375×244) ════════════════════════════════
   Кадр 335×220 со скруглением 20 уже собран в page-statya.css и с макетом
   совпал. Здесь только нижнее поле: макет 24, выведено было 32. */

.tk-statya-cover { padding-bottom: var(--s-6); }


/* ═══ 3. Текст статьи (Figma 345:15270, 375×801) ═══════════════════════════
   Верхнего поля у кадра нет — его дала обложка. Нижнее 28. Просвет между
   ВСЕМИ элементами ровно 16: и между абзацами, и между пунктами списка,
   и вокруг врезки. Раздел с <h2> — такой же флекс с тем же просветом:
   семантика добавляется, ритм не меняется. */

.tk-statya-body {
  gap: var(--s-4);                                /* макет 16 */
  padding-bottom: calc(var(--s-6) + var(--s-1));  /* макет 28 */
}
.tk-statya-body__sec { gap: var(--s-4); }

/* Проза, пункты списка и врезка на телефоне идут одним кеглем 16
   (345:15271, 345:15275, 345:15283). Мобильная ступень body даёт 15,
   body-lg — 17; ступени 16 на этой ширине в шкале нет, поэтому замер.
   Интерлиньяжи из макета разные: у прозы 1,7, у пунктов 1,55,
   у врезки 1,5 — они уже стоят в page-statya.css, повторяем только
   тот, что там не задан. */
.tk-statya-body__p,
.tk-statya-body__list,
.tk-statya-body__callout { font-size: 16px; }   /* замер 345:15271 */

.tk-statya-body__list    { gap: var(--s-4); }   /* макет 16 */
.tk-statya-body__list li { gap: var(--s-3); }   /* макет 12 */

/* Маркер встаёт в оптический центр первой строки: (16 × 1,55 − 6) / 2 ≈ 9.
   В page-statya.css расчёт шёл от кегля 17, теперь кегль 16. */
.tk-statya-body__list li::before { margin-top: 9px; }

/* ПЕРЕОПРЕДЕЛЕНИЕ .t-heading внутри текста статьи. Ступень heading даёт
   на мобильном 26 при интерлиньяже 1,0; в макете (345:15272, 345:15284)
   подзаголовки набраны 24 при 1,08 и трекинге −0,7px. Правило заужено
   до .tk-statya-body — сама ступень не трогается, на других страницах
   заголовки остаются каноническими. Ступени 24 в мобильной шкале нет:
   --t-subheading-size даёт 20 и притом SemiBold, а здесь Regular. */
.tk-statya-body h2 {
  font-size: 24px;                        /* замер 345:15272 */
  line-height: 1.08;
  letter-spacing: var(--t-heading-ls);    /* макет −0,7px ≈ −0,029em */
}


/* ═══ 4. Карточка автора (Figma 345:15286, 335×88) ═════════════════════════
   Плашка --c-mist, скругление 20 (не карточные 24), поля 16 по вертикали
   и 18 по горизонтали, просвет 14, портрет 56 в круге.
   Кнопки «К ВРАЧУ» в макете нет — в разметке она есть и остаётся,
   уходя на свою строку во всю ширину (правило page-statya.css). */

.tk-statya-author {
  gap: 14px;                        /* макет 14 */
  padding: var(--s-4) 18px;         /* макет 16 / 18 */
  border-radius: var(--r-image);    /* макет 20, канон карточки 24 */
}

.tk-statya-author__photo {
  width: 56px;    /* замер 345:15287; ступени 56 в ритме нет */
  height: 56px;
}

/* Портрет и подпись стоят В СТРОКУ (макет: «Данные» на x=88 = 18 поля +
   56 портрета + 14 просвета). В page-statya.css мобильный блок ставит
   данным flex: 1 1 auto — при flex-wrap базис auto равен max-content
   длинной должности, строка не помещается, и подпись срывается под
   портрет, оставляя справа от него пустоту. Базис 0 возвращает её
   на место; кнопка «К ВРАЧУ» по-прежнему уходит на свою строку
   собственным flex: 1 0 100%. */
.tk-statya-author__data {
  flex: 1 1 0;
  gap: 3px;   /* макет 3 */
}

/* Имя 15 = мобильная ступень body (класс .t-body-lg давал 17),
   должность 12 = ступень label-12 (класс .t-body давал 15). */
.tk-statya-author__name { font-size: var(--t-body-size); }
.tk-statya-author__role { font-size: var(--t-label-12-size); }


/* ═══ 5. Читайте также (Figma 345:15291, 375×1311) ═════════════════════════
   Кадр: вертикальные поля 36 сверху и снизу, заголовок, просвет 14,
   четыре блока с шагом 14. */

.tk-statya-also {
  padding-top: calc(var(--s-8) + var(--s-1));      /* макет 36 */
  padding-bottom: calc(var(--s-8) + var(--s-1));   /* макет 36, не --s-section */
}

/* Заголовок 28 без трекинга (345:15292). Мобильная ступень heading-lg
   даёт 30 при −0,04em — на 335 это уводит «Читайте также» во вторую
   строку. Ступени 28 в шкале нет, поэтому замер. */
.tk-statya-also__title {
  font-size: 28px;
  line-height: 1.2;          /* макет: кадр 34 при кегле 28 */
  letter-spacing: normal;
  margin-bottom: 14px;       /* макет 14 */
}

.tk-statya-also__list { gap: 14px; }   /* макет 14 */

/* ВТОРОЙ ТИП МОБИЛЬНОЙ КАРТОЧКИ СТАТЬИ (345:15293). В каталоге блога
   карточка на 375 — белая коробка с обложкой во всю её ширину; здесь
   макет даёт другое: плашка --c-mist со скруглением 20, фотография
   ВНУТРИ полей 20 со своим скруглением 14, дата отдельной строкой под
   фотографией, и всё это с равным просветом 8. Разные они не по недосмотру:
   в каталоге карточка — единица списка на белом полотне, здесь — врезка
   в конце статьи, и мягкая плашка отделяет её от текста. */
.tk-statya-also__card {
  gap: var(--s-2);                  /* макет 8 между всеми строками */
  padding: var(--s-5);              /* макет 20 */
  background: var(--c-mist);
  border-radius: var(--r-image);    /* макет 20 */
}

/* ПЕРЕОПРЕДЕЛЕНИЕ .tk-card-post__cover. Канонически обложка — кадр
   282/190 со скруглением 20, обрезкой по краю и абсолютно позиционированным
   чипом даты поверх. Мобильный макет требует обратного: фотография 295×150
   со скруглением 14 и дата НЕ поверх неё, а строкой ниже. Разметку трогать
   нельзя, поэтому кадр распускается — высоту задаёт сама картинка,
   обрезка снимается, и дата, выйдя из абсолюта, встаёт следующей строкой. */
.tk-statya-also__card .tk-card-post__cover {
  aspect-ratio: auto;
  overflow: visible;
  border-radius: 0;
  background: none;
}
.tk-statya-also__card .tk-card-post__cover img {
  height: auto;
  aspect-ratio: 295 / 150;      /* кадр 355:3479 */
  border-radius: 14px;          /* замер 355:3479; ступени 14 в шкале нет */
  background: var(--c-hairline);  /* подложка, пока картинка грузится */
}

/* ПЕРЕОПРЕДЕЛЕНИЕ .tk-chip (через .tk-card-post__date). В макете
   (345:15294) дата — не метка на фотографии, а обычная строка: без
   заливки, без полей, чернильная, 11 SemiBold. Оставить чип нельзя:
   он выпал бы из абсолюта белой пилюлей на мятой плашке. Капс
   и трекинг 0,1em — канонические, их не трогаем. Блочная выкладка вместо
   строчной обязательна: атомарный inline-flex подхватил бы строковый
   ящик родителя (15 × 1,33) и добавил бы под фотографию лишние 8. */
.tk-statya-also__card .tk-card-post__date {
  position: static;
  display: block;
  margin-top: var(--s-2);        /* макет 8 от фотографии */
  padding: 0;
  background: none;
  color: var(--c-ink-green);
  font-size: 11px;
  font-weight: var(--w-semibold);
}

/* Нижняя строка карточки: 11 SemiBold зелёным (345:15296). Просвет 8
   даёт сам флекс карточки, собственной отбивки не нужно. */
.tk-statya-also__more {
  padding-top: 0;
  font-size: 11px;
  font-weight: var(--w-semibold);
}

}


/* ═══ 6. Тесные экраны ═════════════════════════════════════════════════════
   На 360 внутренняя ширина падает до 320. Портрет автора 56 плюс просвет 14
   оставляют данным 250 — «Врач-офтальмолог, ортокератолог · детский приём
   и подбор ОКЛ» уходит в четыре строки и карточка растёт вдвое. Портрет
   садится до 48, поля — до 16. Горизонтального переполнения нет ни у одного
   блока: и текст, и карточки тянутся по ширине контейнера. */

@media (max-width: 360px) {
  .tk-statya-author {
    gap: var(--s-3);
    padding: var(--s-4);
  }
  .tk-statya-author__photo { width: 48px; height: 48px; }
}

/* ═══ test ═══ */
/* ТОМОКО — мобильная адаптация страницы «Тест — детальная»
   /pacientu/test-zreniya/cvetovospriyatie/. Снято 28.08.2026 с артборда
   Figma «М · Тест — детальная  /pacientu/test-zreniya/cvetovospriyatie/»
   349:3475 (375×4979), файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы. Новых элементов нет — бургер и мобильное меню,
   единственная разметка, которой на десктопе физически не существует,
   заведены в mobile-m1.css.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Правила ниже
   дословно спорят с блоком @media (max-width: 680px) в page-test.css
   при равной специфичности и выигрывают только за счёт порядка подключения.

   Этой странице повезло: page-test.css писался уже по этому макету,
   и вертикальный ритм (просветы 14→16, нижние поля секций 36→40, поля
   и просветы плашки «ВАЖНО», просветы шагов, кегль заголовка 34/1.05,
   столбик вместо строки у дисклеймера) там снят верно. Осталось пять
   мест, где макет разошёлся с раскладкой, и это весь смысл файла:
     • кегль лида                 15, а не 17 от .t-body-lg;
     • изображение теста          кадр 335×220, а не полоса 335×117
                                  в натуральных пропорциях;
     • плашка результата          поля 22 и скругление 20, а не 20 и 24;
     • карточка «других тестов»   скругление 20 и разгон содержимого
                                  по высоте, а не карточные 24 с прижатой
                                  книзу кнопкой;
     • заголовок на 320           «Цветовосприятие» не разрывается
                                  и в 280 не помещается — ступень ниже.

   Что уже сделано и здесь не повторяется:
     • шапка, бургер, раскрытое меню          — mobile-m1.css;
     • финальный блок (CTA и подвал)          — mobile-m3.css: узел 358:5433
       мобильного артборда совпадает с ним дословно;
     • отбивка крошек и «/» вместо тире       — components.css;
     • тап-цель крошек 24                     — mobile-m1.css, блок тап-целей;
     • одна колонка вместо трёх, четырёх и двух — base.css (.tk-grid--*);
     • шапка страницы, шаги «Как проходить», отбивки заголовков секций,
       нижние поля секций, плашка «ВАЖНО», высота карточки 261 и её поля 20
                                              — page-test.css, блок 8.

   Точка перелома одна — 680; на 360 добавлено одно правило (см. блок 5).
   Поля 20 и сжатую шкалу кеглей даёт tokens.css. Теней нет ни одной,
   элевация только цветом и волосяной линией шагов.

   Расхождения с макетом, сознательно НЕ реализованные (кегли 10
   у надстрочников, 14 у описаний и 13 у подписи к картинке, SemiBold
   и нулевой трекинг у h1, кегль 19 у имени результата, просвет шага 6,
   отбивка крошек 24, скругление плашки 18, высота кнопки 46, третья
   карточка в «Других тестах»), перечислены в notes отчёта — в CSS
   они не заводились. */


@media (max-width: 680px) {

/* ══ 1. Шапка страницы · 349:3519 ════════════════════════════════════════
   Кадр 375×251: поля 20 держит .tk-container, сверху 24 до крошек, между
   всеми четырьмя строками по 14, снизу 28. Верхнее поле блока и просветы
   уже стоят в page-test.css округлёнными до шага 16.
   Сумма кадра: 24 + 15 + 14 + 14 + 14 + 36 + 14 + 92 + 28 = 251.

   ИСПРАВЛЕНИЕ: класс .t-body-lg в разметке даёт на мобильном 17 / 1.29,
   в макете лид 15 / 1.5 (349:3523): четыре строки по 23 при высоте 92.
   Кегль 15 — это ровно мобильная ступень --t-body-size, подбирать нечего.
   То же исправление сделано на «Лицензиях», «Памятке» и в каталоге
   тестов: лид на телефоне везде опускается на ступень. */
.tk-test-head__lead {
  font-size:   var(--t-body-size);
  line-height: 1.5;
}


/* ══ 2. Изображение теста · 349:3538 / 349:3539 ══════════════════════════
   Кадр 375×308: спектр 335×220 со скруглением 20, просвет 14, подпись,
   нижнее поле 36. Скругление и просвет уже стоят в page-test.css.

   ИСПРАВЛЕНИЕ и разбор, почему оно именно такое.
   Файл /assets/theme/img/test-cvetovospriyatie-spektr.jpg — 1200×420,
   пропорция 2.857. При width: 100% на 375 он даёт полосу 335×117,
   а в макете кадр 335×220: дизайнер нарисовал полосу почти вдвое выше.
   Три способа попасть в 220, и два из них запрещены:
     • object-fit: cover — кадрирует по горизонтали, то есть выбрасывает
       часть цветов. Для ЭТОЙ картинки это не косметика, а порча теста:
       весь тест в том, чтобы пересчитать оттенки. Запрещено прямым
       комментарием в page-test.css, блок 4;
     • object-fit: contain — вписывает полосу 335×117 в кадр 220
       и добавляет сверху и снизу по 51 пустоты. Так стоит в самом макете
       (у плейсхолдера Figma пропорция кадра), но на настоящем файле это
       белые поля внутри скруглённой плашки — брак;
     • object-fit: fill — растягивает по вертикали. Картинка состоит
       из вертикальных полос и по вертикали ПОСТОЯННА: любой её столбец
       пикселей одинаков сверху донизу (проверено на файле). Растяжение
       по вертикали для неё зрительно неотличимо от оригинала, а по
       горизонтали ничего не режется — все 39 оттенков на месте.
   Берём третий. На 680 (контейнер 640) высота 220 почти совпадает
   с натуральной 224 — растяжения нет вовсе; оно нарастает к узким
   экранам и на 320 (контейнер 280) достигает 2,25×, оставаясь
   незаметным по той же причине. */
.tk-test-shot__img {
  height:     220px;                     /* макет 349:3539, h=220 */
  object-fit: fill;                      /* вертикальная растяжка, см. разбор */
}


/* ══ 3. Плашка результата · 349:3543 и три однотипных ════════════════════
   Плашки --c-mist 335×181 / 181 / 160 / 160 — высота по содержимому,
   просвет между строками 8, между плашками 14. Всё это уже стоит
   в page-test.css.
   Сумма первой плашки: 22 + 14 + 8 + 23 + 8 + 84 + 22 = 181.

   ИСПРАВЛЕНИЕ: там поля стоят --s-card (на 680 это 20) с комментарием
   «поля плашки на телефоне 22 — это и есть мобильный --s-card»; замер
   говорит 22 (текст 291 при ширине плашки 335), и это не 20. Шага 22
   в ритме 4px нет — пишем пикселями, как это уже сделано у плашки
   «ВАЖНО» на этой же странице. Скругление в макете 20, а не карточные 24:
   на телефоне у всех плашек страницы обложечный радиус. */
.tk-test-res__card {
  padding:       22px;                   /* макет 349:3543; шага 22 в ритме нет */
  border-radius: var(--r-image);         /* макет 20; на десктопе карточные 24 */
}


/* ══ 4. Карточка «Других тестов» · 349:3565 и две однотипные ═════════════
   Плашка --c-mist 335×261 — та же карточка, что в каталоге тестов
   (345:16128), до пикселя. Высота 261 и поля 20 уже стоят в page-test.css.

   ИСПРАВЛЕНИЕ, две части.

   Скругление: в макете 20, на десктопе карточные 24.

   Разгон: четыре строки (надстрочник, название, описание, кнопка)
   разогнаны по высоте — в макете это auto-layout со space-between,
   а не прижатая книзу кнопка. Проверено: 261 − 20×2 = 221 внутренней
   высоты, содержимое 12 + 23 + 63 + 46 = 144, свободных 77 на три
   просвета по 25,67 — ровно координаты макета (57,67 / 106,33 / 195).
   У «Эйнштейна» описание на строку длиннее, содержимое 165, просветы
   сходятся до 18,67 — то же самое space-between.

   Десктоп собирает карточку иначе: просветы внутри .tk-test-more__top
   фиксированные 12, кнопка отжата книзу через margin-top: auto. Чтобы
   получить разгон, не трогая разметку, обёртка __top на телефоне
   растворяется: display: contents убирает её собственный бокс, и все
   четыре строки становятся прямыми детьми карточки — тем самым флексом,
   которым они нарисованы в Figma. Обёртка — простой <div> без роли
   и без семантики, растворять её безопасно; известные баги
   display: contents в Safari касаются списков и таблиц, а не голого <div>.

   Просвет 12 остаётся нижней границей разгона: если описание на 360
   или 320 разойдётся на строку-две больше, карточка вырастет выше 261,
   а строки не слипнутся. Решение дословно повторено в
   mobile-page-test-zreniya.css — это одна карточка на двух страницах. */

.tk-test-more__card {
  border-radius:   var(--r-image);       /* макет 20; на десктопе карточные 24 */
  justify-content: space-between;        /* разгон строк по высоте, см. разбор */
  gap:             var(--s-3);           /* нижняя граница разгона, макет 12 */
}

.tk-test-more__top { display: contents; }

/* Прижим книзу снимается: авто-поле съедает всё свободное место раньше,
   чем до него доберётся space-between. Ширину во всю плашку
   (295 = 335 − 20×2) правило .tk-test-more__btn держит само. */
.tk-test-more__btn { margin-top: 0; }

}


/* ══ 5. Теснота · 360 и уже ══════════════════════════════════════════════
   Заголовок страницы — одно слово, переносить его не по чему.
   «Цветовосприятие» при кегле 34 имеет меру 8,7em ≈ 296px, с трекингом
   −0,03em ≈ 281px. На 360 контейнер 320 — помещается; на 320 контейнер
   280 — не помещается, и страница поехала бы вбок, чего быть не должно.
   Опускаем заголовок на ступень --t-page-title (на мобильном 30):
   8,7em × 30 ≈ 261 − трекинг ≈ 248 при 280 доступных — запас 32.

   Медиазапрос взят на 360, а не на 340: 360 — принятая в системе точка
   тесноты (её же использует mobile-m1.css для пилюли записи в шапке),
   а кегль 30 на 360 ничего не портит. Правило вынесено из блока 680
   отдельным запросом намеренно: внутри одного медиазапроса вложенности
   в системе нет. */
@media (max-width: 360px) {
  .tk-test-head__title {
    font-size:   var(--t-page-title-size);
    line-height: var(--t-page-title-lh);
  }
}

/* ═══ test-zreniya ═══ */
/* ТОМОКО — мобильная адаптация страницы «Тесты зрения — каталог»
   /pacientu/test-zreniya/. Снято 28.08.2026 с артборда Figma
   «М · Тесты зрения  /pacientu/test-zreniya/» 345:16079 (375×4131),
   файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы. Новых элементов нет — бургер и мобильное меню,
   единственная разметка, которой на десктопе физически не существует,
   заведены в mobile-m1.css.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Все правила ниже
   дословно спорят с блоком @media (max-width: 680px) в page-test-zreniya.css
   при равной специфичности и выигрывают только за счёт порядка подключения.

   ВАЖНО. В page-test-zreniya.css, блок 5, записано: «ОТДЕЛЬНОГО МОБИЛЬНОГО
   МАКЕТА У КАТАЛОГА ТЕСТОВ НЕТ», и раскладка там выведена по правилам
   системы и по соседней детальной. Макет есть — 345:16079, и он разошёлся
   с выведенной раскладкой в семи местах. Эти семь правил — весь смысл файла:
     • нижнее поле шапки страницы   24, а не 32;
     • кегль заголовка              34 / 1.02 / −1,2px, а не 38 / 0.94
                                    от --t-display-size;
     • ЦВЕТ заголовка               зелёный #237e33 (--c-brand-green),
                                    а не чернильный: на этом артборде h1
                                    покрашен так же, как на «М · Пациенту»;
     • кегль лида                   15, а не 17 от .t-body-lg;
     • нижнее поле секции           32, а не 40;
     • просвет между карточками     12, а не 16 (и столько же до плашки);
     • карточка                     скругление 20, высота 261 и разгон
                                    содержимого по высоте, а не «по
                                    содержимому» с прижатой книзу кнопкой;
     • поля плашки «ВАЖНО»          18/20, а не 20/22.
   (Семь пунктов раскладки плюс цвет заголовка — восьмая правка, но она
   не про метрику, поэтому в счёт «расхождений раскладки» не идёт.)

   Что уже сделано и здесь не повторяется:
     • шапка, бургер, раскрытое меню         — mobile-m1.css;
     • финальный блок (CTA и подвал)         — mobile-m3.css: узел 358:5077
       мобильного артборда совпадает с ним дословно;
     • отбивка крошек 32 и «/» вместо тире   — components.css (макет 32 ✓);
     • тап-цель крошек 24                    — mobile-m1.css, блок тап-целей;
     • одна колонка вместо трёх              — base.css (.tk-grid--3 на 680);
     • верхнее поле и просветы шапки страницы — page-test-zreniya.css, блок 5:
       16 против макетных 14 — цена шага 4px, переопределения не стоит
       (то же решение принято на «Лицензиях», «Памятке» и «Вычете»);
     • поля карточки 20 (--s-card) и заливка --c-mist,
       поля плашки по горизонтали, просвет метки и текста 8 — сошлось
       с макетом до пикселя, трогать нечего.

   Точка перелома одна — 680: страница по всей ширине идёт в одну колонку.
   На 360 и 320 ничего не ломается: самое длинное неразрывное слово
   каталога — «Цветовосприятие» в заголовке карточки (кегль 20, мера
   8.7em ≈ 168px) — умещается в 240 внутренней ширины карточки даже на 320.
   Поля 20 и сжатую шкалу кеглей даёт tokens.css. Теней нет ни одной,
   элевация только цветом.

   Расхождения с макетом, сознательно НЕ реализованные (кегли 10 у
   надстрочника карточки и у метки «ВАЖНО», кегль 14 у описаний,
   скругление плашки 18, высота кнопки 46, кегль и трекинг крошек),
   перечислены в notes отчёта — в CSS они не заводились. */


@media (max-width: 680px) {

/* ══ 1. Шапка страницы · 345:16123 ═══════════════════════════════════════
   Кадр 375×236: поля 20 держит .tk-container, сверху 32 до крошек, между
   всеми тремя строками по 14, снизу 24. Крошки лежат в своей обёртке
   (.tk-crumbs, отбивка 32 из components.css — с макетом сошлась),
   поэтому верхнее поле блока — ровно просвет 14, и оно уже стоит
   в page-test-zreniya.css округлённым до шага 16.
   Сумма кадра: 32 + 13 + 14 + 70 + 14 + 69 + 24 = 236. */

/* ИСПРАВЛЕНИЕ: в page-test-zreniya.css нижнее поле 32 (--s-8). В макете 24 —
   ровно столько же, сколько на «Лицензиях» и «Памятке». */
.tk-tests-head { padding-bottom: var(--s-6); }

/* ИСПРАВЛЕНИЕ, две части.

   Кегль. В page-test-zreniya.css заголовок берёт мобильную ступень
   --t-display-size (38 / 0.94). В макете 34 / 1.02 / −1,2px (345:16125):
   строка 335 при высоте 70 — это ровно две строки по 34.7. Ступени 34
   в шкале нет, значение то же, что у .tk-pamyatka__title,
   .tk-staff__title и .tk-zabkat__title — одна мобильная ступень
   заголовка внутренней страницы на пяти страницах, а не пять подборов.
   Интерлиньяж и трекинг заданы явно: без них класс тянет --t-page-title-lh
   и токенный трекинг ступени 64.

   Цвет. В макете заголовок зелёный, #237e33 = --c-brand-green (замер
   345:16125), а не чернильный, как на десктопе. Ровно тот же приём, что
   на «М · Пациенту»: у каталогов-посадочных раздела h1 на телефоне
   позеленел. Контраст зелёного на бумаге 5.6:1 — норму AA держит. */
.tk-tests-head__title {
  font-size:      34px;                  /* макет 345:16125; ступени 34 в шкале нет */
  line-height:    1.02;
  letter-spacing: -0.035em;              /* −1,2px при кегле 34 */
  color:          var(--c-brand-green);
}

/* ИСПРАВЛЕНИЕ: класс .t-body-lg в разметке даёт на мобильном 17 / 1.29,
   в макете лид 15 / 1.55 (345:16126): три строки по 23 при высоте 69.
   Кегль 15 — это ровно мобильная ступень --t-body-size, подбирать нечего.
   Интерлиньяж 1.5 вместо макетных 1.55: это проза, а не подпись, тот же
   шаг сделан на «Заболеваниях» и «Лицензиях». */
.tk-tests-head__lead {
  font-size:   var(--t-body-size);
  line-height: 1.5;
}


/* ══ 2. Секция тестов · 345:16127 ════════════════════════════════════════
   Кадр 375×1814: шесть карточек 335×261 с шагом 273, то есть просветом 12,
   затем те же 12 до плашки «ВАЖНО» (144) и 32 до подвала.
   Сумма: 6×261 + 5×12 + 12 + 144 + 32 = 1814. */

/* ИСПРАВЛЕНИЕ: в page-test-zreniya.css нижнее поле секции 40 (--s-10).
   В макете 32 — то же значение, что на «Заболеваниях» и «Памятке». */
.tk-tests-sec { padding-bottom: var(--s-8); }

/* ИСПРАВЛЕНИЕ: там же просветы стоят 16. В макете 12 — сеточные 24
   на телефоне широки, но и 16 макет не подтверждает. */
.tk-tests-grid {
  gap:           var(--s-3);             /* макет 12 */
  margin-bottom: var(--s-3);             /* до плашки «ВАЖНО», те же 12 */
}


/* ══ 3. Карточка теста · 345:16128 и пять однотипных ═════════════════════
   Плашка --c-mist 335×261: поля 20, скругление 20, четыре строки
   (надстрочник, название, описание, кнопка) РАЗОГНАНЫ ПО ВЫСОТЕ —
   в макете это auto-layout со space-between, а не прижатая книзу кнопка.
   Разгон проверен: 261 − 20×2 = 221 внутренней высоты, содержимое
   12 + 23 + 84 + 46 = 165, свободных 56 на три просвета по 18,67 —
   ровно те координаты, что стоят у текстов в макете (50,67 / 92,33 / 195).
   У карточек с описанием в три строки содержимое 144, и просветы
   расходятся до 25,67 — то же самое space-between.

   Десктоп собирает карточку иначе: просветы внутри .tk-tests-card__top
   фиксированные 12, а кнопка отжата книзу через margin-top: auto. На 1200
   это верно (высота 314 задана, разгона в макете нет), на 375 — нет.
   Чтобы получить разгон, не трогая разметку, обёртка __top на телефоне
   растворяется: display: contents убирает её собственный бокс, и все
   четыре строки становятся прямыми детьми карточки — тем самым флексом,
   которым они нарисованы в Figma. Обёртка — простой <div> без роли
   и без семантики, растворять её безопасно; в Safari известные баги
   display: contents касаются списков и таблиц, а не голого <div>.

   Просвет 12 остаётся нижней границей разгона: если описание на 360
   или 320 разойдётся на строку-две больше, карточка вырастет выше 261,
   а строки не слипнутся. */

.tk-tests-card {
  min-height:      261px;                /* макет 345:16128, h=261 */
  border-radius:   var(--r-image);       /* макет 20; на десктопе карточные 24 */
  justify-content: space-between;        /* разгон строк по высоте, см. разбор */
  gap:             var(--s-3);           /* нижняя граница разгона, макет 12 */
}

/* Обёртка растворяется — см. разбор выше. Её собственные gap 12
   и margin-bottom при display: contents не применяются, гасить нечем
   и не нужно. */
.tk-tests-card__top { display: contents; }

/* Прижим книзу снимается: авто-поле съедает всё свободное место раньше,
   чем до него доберётся space-between, и разгона бы не получилось.
   Ширину во всю плашку (295 = 335 − 20×2) правило .tk-tests-card__btn
   держит само, её не трогаем. */
.tk-tests-card__btn { margin-top: 0; }


/* ══ 4. Плашка «ВАЖНО» · 345:16164 ═══════════════════════════════════════
   Кадр 335×144: поля 18 по вертикали и 20 по горизонтали, просвет метки
   и текста 8, скругление 18. Столбик (метка над текстом) и просвет 8
   уже стоят в page-test-zreniya.css, заливка --c-orange 13% на бумаге
   и притемнённая метка — в общем блоке страницы; сошлось, трогать нечего.
   Сумма кадра: 18 + 12 + 8 + 88 + 18 = 144.

   ИСПРАВЛЕНИЕ: там поля стоят 20/22, в макете 18/20. Горизонтальные 20 —
   это ровно мобильный --s-card, вертикальных 18 в ритме 4px нет. */
.tk-tests-note { padding: 18px var(--s-card); }

}

/* ═══ tomoko-tv ═══ */
/* ТОМОКО — мобильная адаптация страницы «Томоко-TV» /o-klinike/tomoko-tv/.
   Снято 28.08.2026 с артборда Figma «М · Томоко-TV  /o-klinike/tomoko-tv/»
   345:16264 (375×3403), файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы. Новых элементов нет — бургер и мобильное меню,
   единственная разметка, которой на десктопе физически не существует,
   заведены в mobile-m1.css.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Часть правил ниже
   дословно спорит с блоком @media (max-width: 680px) в page-tomoko-tv.css
   и с .tk-card-post в components.css при равной специфичности и выигрывает
   только за счёт порядка подключения.

   ВАЖНО. В page-tomoko-tv.css мобильная раскладка была ВЫВЕДЕНА, а не
   снята: там прямо написано «ОТДЕЛЬНОГО МОБИЛЬНОГО МАКЕТА У ЭТОЙ СТРАНИЦЫ
   НЕТ», и метрика бралась по правилам системы и по соседним страницам того
   же типа. Макет теперь есть, и он расходится с выведенным в семи местах:
     • кегль заголовка            34 / 1.02, а не 38 / 0.94 от --t-display;
     • кегль лида                 15, а не 17 от .t-body-lg;
     • нижнее поле шапки страницы 24, а не 32;
     • нижнее поле галереи        32, а не --s-section (на 680 это 56);
     • просвет между роликами     14, а не выведенные 24;
     • просвет внутри карточки    10, а не канонические 16;
     • диаметр знака видео        48, а не 56, и кадр постера 335×190
                                  вместо 16:9.
   Эти семь правил — весь смысл файла.

   Что уже сделано и здесь не повторяется:
     • шапка, бургер, раскрытое меню          — mobile-m1.css;
     • финальный блок (CTA и подвал)          — mobile-m3.css: узел
       358:5255 мобильного артборда совпадает с ним дословно;
     • отбивка крошек 32 и «/» вместо тире    — components.css;
     • тап-цель крошек 24                     — mobile-m1.css, блок тап-целей;
     • схлопывание .tk-grid--3 в одну колонку — base.css;
     • верхнее поле шапки страницы, просвет
       её строк и снятая мера строки лида     — page-tomoko-tv.css, блок 4
       (16 против макетных 14 — цена шага 4px, переопределения не стоит).

   Точка перелома одна — 680: страница по всей ширине идёт в одну колонку,
   ни на 480, ни на 360 ничего не ломается. Поля 20 и сжатую шкалу кеглей
   даёт tokens.css. Теней нет ни одной, элевация только цветом.

   Чего в разметке нет и что здесь не выдумывалось: под галереей в макете
   стоит обводочная пилюля «СМОТРЕТЬ ВСЕ 15 РОЛИКОВ» во всю ширину
   (345:16337, 335×46) — на десктопе такого элемента нет, разметку
   не трогаем. Расхождения, сознательно НЕ реализованные (кегль метки 9 —
   ниже порога читаемости слоя, четыре ролика вместо шести, скругление
   постера 18), перечислены в notes отчёта. */


@media (max-width: 680px) {

/* ══ 1. Шапка страницы · 345:16308 ═══════════════════════════════════════
   Кадр 375×178: поля 20 держит .tk-container, сверху 32 до крошек, между
   всеми тремя строками по 14, снизу 24. Крошки лежат в своей обёртке
   (.tk-crumbs, отбивка 32 из components.css), поэтому верхнее поле
   блока — ровно просвет 14, и оно уже стоит в page-tomoko-tv.css
   округлённым до шага 16. Сумма сходится:
   32 + 13 + 14 + 35 + 14 + 46 + 24 = 178. */

.tk-tv__head { padding-bottom: var(--s-6); }   /* макет 24 */

/* ИСПРАВЛЕНИЕ: выведенный кегль заголовка — --t-display-size, на мобильных
   это 38 при интерлиньяже 0.94. В макете 34 / 1.02 / −1,2px (345:16310),
   ровно те же три значения, что у заголовка «М · Лицензии» 345:15567:
   это одна мобильная ступень на двух страницах, а не два подбора.
   Трекинг переведён в em делением на кегль, чтобы не разъезжался
   на 480 и 360.

   ОТКЛОНЕНИЕ ОТ ШКАЛЫ: ступени 34 на мобильных нет — сжатая шкала
   tokens.css даёт 30 (--t-page-title-size) и 32 (--t-display-sm-size).
   Кегль взят из макета, токен не тронут: править его пришлось бы вслед
   за Figma. См. notes отчёта. */
.tk-tv__title {
  font-size:      34px;         /* макет 345:16310 */
  line-height:    1.02;
  letter-spacing: -0.035em;     /* −1,2px при кегле 34 */
}

/* Лид на мобильном опускается на ступень: в макете 15 / 1.55 (345:16311),
   а класс .t-body-lg в разметке даёт 17 / 1.29. Кегль 15 — это ровно
   мобильная --t-body-size, отдельного пикселя не нужно. Интерлиньяж
   1.5 вместо макетных 1.55: ступень прозы, принятая в системе,
   разница — 0,75px на строку. */
.tk-tv__lead {
  font-size:   var(--t-body-size);
  line-height: 1.5;             /* макет 1.55; проза, а не подпись */
}


/* ══ 2. Видеогалерея · 345:16312 ═════════════════════════════════════════
   Кадр 375×1144, верхнего поля нет — отбивку сверху дала шапка страницы.
   Ролики 335 в одну колонку через 14, под ними пилюля «смотреть все»
   (её в разметке нет, см. шапку файла) и нижнее поле 32. Сумма сходится:
   263 + 14 + 242 + 14 + 263 + 14 + 242 + 14 + 46 + 32 = 1144. */

/* ИСПРАВЛЕНИЕ: нижнее поле секции берётся не из ритма (--s-section,
   на мобильных 56), а из макета — 32: кадр «Подвал мобильный» начинается
   ровно на 1384 = 240 + 1144. */
.tk-tv { padding-bottom: var(--s-8); }          /* макет 32 */

/* ИСПРАВЛЕНИЕ: в одну колонку ролики стоят через 14 → шаг 16, а не через
   выведенные десктопные 24: 277 − 0 − 263 = 14. */
.tk-tv__list { gap: var(--s-4); }               /* макет 14 → шаг 16 */

/* ПЕРЕОПРЕДЕЛЕНИЕ КАНОНИЧЕСКОГО КЛАССА. Просвет внутри карточки в макете
   10 (постер → метка → заголовок), канонический .tk-card-post даёт 16.
   Без правила лестница карточки становится на 12px выше макетной,
   и четыре ролика перестают помещаться в кадр галереи. Правится только
   раскладка, в своей области видимости и только ≤680; тот же приём,
   что у .tk-blog__card и .tk-promos__body в mobile.css. */
.tk-tv__card { gap: var(--s-3); }               /* макет 10 → шаг 12 */

/* Постер: 335×190 (345:16314). Десктопный .tk-tv__poster держит 16:9 —
   при ширине 335 это 188, на полтора пикселя ниже макета. Ставим кадр
   макета: 335×190 — общая мобильная пропорция обложки на сайте, ею же
   набраны плитки акций, статей и каталога услуг в mobile.css.
   Скругление в макете 18; токена 18 нет, ближайший --r-image (20) уже
   стоит на .tk-card-post__cover — тот же выбор, что у .tk-optics__media. */
.tk-tv__poster { aspect-ratio: 335 / 190; }     /* кадр макета 345:16314 */

/* Знак видео на мобильном мельче: круг 48 вместо 56 (345:16315 — эллипс
   48×48, левый край 143 и верхний 71 при кадре 335×190, то есть ровно
   по центру). Глиф остаётся 16×16: в макете треугольник 15×17, готовый
   icon-play.svg квадратный. Знак декоративный (aria-hidden), тап-целью
   не является — карточка ролика на этой странице вообще не ссылка. */
.tk-tv__play { width: 48px; height: 48px; }     /* макет 345:16315 */

/* ПЕРЕОПРЕДЕЛЕНИЕ КАНОНИЧЕСКОГО КЛАССА. Заголовок ролика в макете
   18 SemiBold / 1.18 (345:16318); .tk-card-post__title даёт 20 (на
   мобильных наследует --t-body-lg-size, то есть 17) при интерлиньяже 1.2.
   Ступени 18 в шкале нет, 18 — замер, порог читаемости слоя (11)
   не нарушен. Правило уже существует в page-tomoko-tv.css в той же
   области видимости — там ему задавали насыщенность; здесь дописываются
   кегль и интерлиньяж, и только внутри .tk-tv__card: на карточки статей
   и акций правило не протекает. */
.tk-tv__card .tk-card-post__title {
  font-size:   18px;            /* макет 345:16318 */
  line-height: 1.18;
}

}

/* ═══ usluga ═══ */
/* ТОМОКО — мобильная адаптация страницы «Услуга — детальная»
   /uslugi/lazernaya-korrekciya/. Снято 28.08.2026 с артборда Figma
   «М · Услуга  /uslugi/lazernaya-korrekciya/» 345:14201 (375×6581),
   файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы, новых элементов нет ни одного.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Часть правил ниже
   спорит с блоком @media (max-width: 680px) в page-usluga.css и в
   mobile.css при равной специфичности и выигрывает порядком подключения.

   Что уже сделано и здесь не повторяется:
     • шапка, бургер, раскрытое меню      — mobile-m1.css;
     • финальный блок (CTA и подвал)      — mobile-m3.css;
     • отбивка крошек и «/» вместо тире   — components.css;
     • плитка .tk-card-doctor на 375      — mobile.css, блок 5
       (подложка --c-mist, скругление 20, портрет 160×190).

   Общее по макету: все плашки на 375 скруглены на 20 (--r-image), а не
   на карточные 24; исключение одно — оранжевая плашка «Студентам»,
   у неё в макете как раз 24. Ритм страницы двухступенчатый: верхний
   блок (герой → факты → студентам → шаги) идёт плотно, отбивка 28,
   а справочные секции ниже — 36 сверху и снизу.

   Расхождения с макетом, сознательно НЕ реализованные (кегли 8–11,
   мельче нижней ступени шкалы, вторая кнопка героя, пилюля «К ВРАЧУ»,
   кнопка «ВСЕ СПЕЦИАЛИСТЫ», интерлиньяж прозы 1.2), перечислены
   в notes отчёта — в CSS они не заводились.

   Тап-цели: скрыты только неинтерактивные <span>-пилюли внутри ссылок,
   ни одна ссылка и ни одна кнопка не уменьшена. Теней нет ни одной. */


@media (max-width: 680px) {

/* ══ 1. Герой · 345:14245 + 345:14249 ════════════════════════════════════
   Кадр складывается в колонку с просветом 14: крошки → заголовок → лид →
   ФОТО → кнопка. Вертикальные поля 14 сверху (до заголовка) и 28 снизу. */

.tk-usluga-hero {
  padding-block: var(--s-4) var(--s-8);   /* макет 14 / 28 → шаги 16 и 32 */
}

.tk-usluga-hero__inner { gap: var(--s-4); }   /* макет 14; колонку даёт правило 1100 */

/* Порядок макета — заголовок, лид, ФОТО, кнопка: снимок стоит МЕЖДУ
   лидом и кнопками, а в разметке кнопки лежат внутри текстовой колонки.
   Единственный способ переставить их, не трогая разметку: обёртка текста
   растворяется, её дети становятся прямыми элементами флексбокса.
   Тот же приём, что у .tk-equipment__text и .tk-optics__body в mobile.css. */
.tk-usluga-hero__text { display: contents; }

.tk-usluga-hero__media {
  order: 0;
  flex-basis: auto;              /* в колонке basis — это высота; 520 отсюда убрать */
  margin-top: var(--s-3);        /* 16 просвета + 12 = 28 из макета */
  border-radius: var(--r-image); /* макет 20, десктопное карточное 24 */
}
/* Кадр на 375 шире десктопного: 335×220 вместо 520×420. */
.tk-usluga-hero__media img { aspect-ratio: 335 / 220; }

/* Заголовок 38 — ровно мобильная ступень --t-display-size. Интерлиньяж
   в макете leading-none: три строки по 38 дают ровно 114 из кадра,
   токен 0.94 их бы склеил. */
.tk-usluga-hero__title {
  font-size:      var(--t-display-size);
  line-height:    1;
  letter-spacing: var(--t-display-ls);   /* макет −1,4px = −0,0368em */
}

/* Лид опускается на ступень: макет 15/1.55, десктопная body-lg даёт 17. */
.tk-usluga-hero__lead {
  font-size:   var(--t-body-size);
  line-height: 1.5;
}

/* Кнопки уходят под снимок (order) и идут столбиком во всю ширину.
   В макете кнопка одна, в разметке две («ЗАПИСАТЬСЯ» и «ЦЕНЫ И ЭТАПЫ»);
   содержимое медиазапросом не убираем — обе повторяют геометрию
   единственной кнопки макета. */
.tk-usluga-hero__actions {
  order: 1;
  flex-direction: column;
  width: 100%;
  gap: var(--s-4);              /* макет 14 */
}
.tk-usluga-hero__actions .tk-btn { width: 100%; }


/* ══ 2. Ритм секций ══════════════════════════════════════════════════════
   У кадров макета верхнего поля нет: отбивку держит нижнее поле
   предыдущей секции. Верхний блок страницы идёт плотно — 28 между
   факт-плашками и шагами. */

.tk-usluga-sec { padding-block-end: var(--s-8); }   /* макет 28 → шаг 32 */

/* Справочные секции ниже шагов в макете отбиты вдвое просторнее:
   36 сверху и 36 снизу, то есть 72 между соседями. Модификатора под это
   в разметке нет, различать секции приходится по их содержимому —
   :has() здесь читается лучше, чем :nth-of-type по порядку в <main>.
   Если браузер :has() не понимает, секция просто остаётся с полем 32:
   ритм чуть плотнее макета, ничего не ломается. */
.tk-usluga-sec:has(.tk-usluga-method),
.tk-usluga-sec:has(.tk-usluga-contra),
.tk-usluga-sec:has(.tk-usluga-doctors__card),
.tk-usluga-sec:has(.tk-usluga-price__plate) {
  padding-block: var(--s-8);    /* макет 36 сверху и снизу → шаг 32 */
}

/* Заголовки секций: в макете 28 при интерлиньяже 1.05–1.2. Ступени 28
   в шкале нет, ближайшая --t-heading-lg даёт 30; канонический 1.0
   склеивает двухстрочные заголовки («Методики, которые применяем»
   в макете занимает 68 = две строки по 34). */
.tk-usluga-sec__title {
  line-height:   1.1;
  margin-bottom: var(--s-4);    /* макет 14 → шаг 16 */
}

/* Просвет между блоками во всех сетках страницы — 14, а не сеточные 24.
   Плашку фактов правило не задевает: у неё строки разделяет линия,
   а не просвет (см. блок 3). */
.tk-grid:has(.tk-usluga-step),
.tk-grid:has(.tk-usluga-method),
.tk-grid:has(.tk-usluga-doctors__card) { gap: var(--s-4); }


/* ══ 3. Факты · 345:14253 ════════════════════════════════════════════════
   На 375 три равные колонки превращаются в список строк: цифра слева,
   подпись справа колонкой 160, строки разделены волосяной линией.
   Плашка --c-mist остаётся, но поля у неё 6 / 20 / 14. */

.tk-usluga-facts__plate {
  gap: 0;                          /* строки разделяет линия, а не просвет сетки */
  padding: var(--s-2) var(--s-5) var(--s-4);   /* макет 6 / 20 / 14 */
  border-radius: var(--r-image);   /* макет 20 */
}

.tk-usluga-fact {
  flex-direction: row;
  flex-wrap: wrap;                 /* длинная подпись уходит под цифру — как факт 3 макета */
  align-items: center;
  justify-content: space-between;
  gap: var(--s-2);
  padding-block: var(--s-4);       /* макет 14 → шаг 16 */
  border-top: 1px solid var(--c-hairline);   /* волосяная линия: токена толщины нет */
}

/* Цифра факта: в макете 20 SemiBold, а класс .t-heading в разметке даёт
   на мобильном 26 Regular. Ступень subheading совпадает с макетом точно.
   Ширину цифра держит сама — переносится подпись, а не она. */
.tk-usluga-fact .t-heading {
  flex: none;
  font-size:      var(--t-subheading-size);
  line-height:    var(--t-subheading-lh);
  letter-spacing: var(--t-subheading-ls);
  font-weight:    var(--w-semibold);
}

/* Колонка подписи в макете 160 — по ней строка и ломается. Базис, а не
   max-width: у третьего факта подпись не помещается рядом с цифрой,
   съезжает на свою строку и там должна занять всю ширину плашки,
   а не остаться колонкой в 160 (как раз случай макета 345:14261). */
.tk-usluga-fact .t-label-sm { flex: 1 1 160px; }


/* ══ 4. Студентам · 345:14265 ════════════════════════════════════════════
   Плашка та же, поля в макете 26/28 — это ближе к десктопным 24/32,
   чем к сжатому --s-card (20), которым она была на 680 до сверки. */

.tk-usluga-students {
  gap: var(--s-2);                     /* макет 10 → шаг 8 */
  padding: var(--s-6) var(--s-8);      /* макет 26 / 28 */
}

/* Цена в макете 22: ступени 22 в шкале нет, subheading (20) заметно
   мельче — на плашке это главная строка, кегль замерен, не подобран. */
.tk-usluga-students__price { font-size: 22px; }


/* ══ 5. Как проходит · 345:14269 ═════════════════════════════════════════
   Четыре шага в столбик, каждый отбит сверху линией 2px.
   Просвет между шагами 14 задан в блоке 2. */

.tk-usluga-step {
  gap: var(--s-2);              /* макет 8 */
  padding-top: var(--s-4);      /* макет 16 */
}


/* ══ 6. Методики · 345:14289 ═════════════════════════════════════════════
   Три плитки --c-mist во всю ширину. Поля 20 даёт сам --s-card,
   он сжимается токеном; правится скругление и внутренний просвет. */

.tk-usluga-method {
  gap: var(--s-2);                 /* макет 8, десктопные 16 */
  border-radius: var(--r-image);   /* макет 20 */
}


/* ══ 7. Противопоказания · 345:14299 ═════════════════════════════════════
   На 375 и текстовый блок, и каждый пункт списка становятся плитками
   --c-mist со скруглением 20 и полем 20; линий и оранжевых маркеров
   в мобильном макете нет — пункты разделяет просвет 14. */

.tk-usluga-contra { gap: var(--s-4); }   /* макет 14 → шаг 16 */

.tk-usluga-contra__text {
  gap: var(--s-2);                 /* макет 8 */
  padding: var(--s-card);
  background: var(--c-mist);
  border-radius: var(--r-image);
}

.tk-usluga-contra__list {
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
}
.tk-usluga-contra__list li {
  padding: var(--s-card);
  background: var(--c-mist);
  border-top: 0;                   /* линию заменила плитка */
  border-radius: var(--r-image);
}
/* Маркера в мобильном макете нет: пункты и так разделены плитками. */
.tk-usluga-contra__list li::before { display: none; }


/* ══ 8. Кто оперирует · 345:14316 ════════════════════════════════════════
   Врачи стоят в ДВА столбца по 160,5 через 14 — сетка не сваливается
   в один столбец, как остальные .tk-grid--4 на 680. Плитка карточки
   (подложка, скругление 20, портрет 160×190) уже собрана в mobile.css. */

.tk-grid:has(.tk-usluga-doctors__card) {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
/* minmax(0, 1fr), а не 1fr: минимум элемента сетки по умолчанию равен
   min-content, и колонка раздувается по самой длинной фамилии. */

/* Подписи у соседей разной длины, а плитка теперь видна — карточки
   тянутся до высоты ряда, чтобы низ плиток стоял по одной линии. */
.tk-grid:has(.tk-usluga-doctors__card) > li { display: flex; }

/* Просвет 0: mobile.css задаёт .tk-card-doctor просвет 4 — он рассчитан
   на карточку главной, где у подписи нет верхнего поля. Здесь поле есть,
   своё, и портрет должен стоять в упор к подписи, как в макете. */
.tk-usluga-doctors__card {
  width: 100%;
  gap: 0;
}
.tk-usluga-doctors__photo { aspect-ratio: 160 / 190; }   /* макет 160,5×190 */

.tk-usluga-doctors__body {
  gap: var(--s-1);                       /* макет 4 */
  padding: var(--s-3) 14px 14px;         /* макет 12 / 14 / 14; шага 14 в сетке нет */
}

/* Пилюли «К ВРАЧУ» в мобильном макете нет: на карточке 160 она закрывает
   половину портрета. Это неинтерактивный <span> внутри ссылки-карточки —
   ссылкой остаётся вся карточка, доступность не страдает. Ровно так же
   снята пилюля .tk-doctors__cta на главной (mobile.css, блок 4). */
.tk-usluga-doctors__cta { display: none; }


/* ══ 9. Сколько стоит · 345:14343 ════════════════════════════════════════
   Таблица разбирается на карточки: каждая строка — своя плитка --c-mist
   с полем 20, внутри код → наименование → цена столбиком через 8.
   Шапка секции в макете тоже лежит на такой плитке. */

.tk-usluga-price__head {
  gap: var(--s-2);                 /* макет 8; components.css на 680 даёт 24 */
  margin-bottom: var(--s-4);       /* макет 14 */
  padding: var(--s-card);
  background: var(--c-mist);
  border-radius: var(--r-image);
}

/* Общая плашка больше не нужна — плиткой стала каждая строка. */
.tk-usluga-price__plate {
  padding: 0;
  background: none;
}

.tk-usluga-price__list {
  display: flex;
  flex-direction: column;
  gap: var(--s-4);                 /* макет 14 */
}

/* Канонический .tk-price-row переопределяется намеренно и только внутри
   списка этой страницы: mobile.css раскладывает строку в один столбец
   с просветом 4 и полем 16 — это состояние строки на главной и в прайсе.
   В макете услуги строка живёт на собственной плитке: просвет 8,
   поле 20, разделителей нет. Модификатор завести нельзя — он потребовал
   бы правки разметки, поэтому правило прижато к .tk-usluga-price__list. */
.tk-usluga-price__list .tk-price-row {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);                 /* макет 8 */
  padding: var(--s-card);          /* макет 20 */
  background: var(--c-mist);
  border-radius: var(--r-image);   /* макет 20 */
  border-bottom: 0;
}

}

/* ═══ uslugi ═══ */
/* ТОМОКО — мобильная адаптация страницы «Услуги — каталог» /uslugi/.
   Снято 28.08.2026 с артборда Figma «М · Услуги  /uslugi/» 345:14089
   (375×4621), файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы. Новых элементов нет — бургер и мобильное меню,
   единственная разметка, которой на десктопе физически не существует,
   заведены в mobile-m1.css.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Часть правил ниже
   спорит с блоком @media (max-width: 680px) в page-uslugi.css при равной
   специфичности и выигрывает только за счёт порядка подключения.

   Что уже сделано и здесь не повторяется:
     • шапка, бургер, раскрытое меню          — mobile-m1.css;
     • финальный блок (CTA и подвал)          — mobile-m3.css;
     • отбивка крошек и «/» вместо тире       — components.css;
     • карточка .tk-card-service на 375       — mobile.css, блок 5
       (335×220, скругление 20, затемнение во всю высоту, поле 20,
        пилюля «ПОДРОБНЕЕ» снята). Здесь только то, чем каталог
        отличается от главной.

   Точка перелома одна — 680. Поля 20 и сжатую шкалу кеглей даёт
   tokens.css, здесь они не трогаются. Теней нет ни одной.

   Расхождения с макетом, сознательно НЕ реализованные (кегли мельче
   нижней ступени шкалы, плашка «весь прайс», сокращённые тексты),
   перечислены в notes отчёта — в CSS они не заводились. */


@media (max-width: 680px) {

/* ══ 1. Шапка страницы · 345:14133 ═══════════════════════════════════════
   Кадр 375×212: поля 20 держит .tk-container, вертикальные — 36 сверху
   и 28 снизу, просветы между крошками, заголовком и лидом по 14.
   Крошки лежат в своей обёртке (.tk-crumbs, отбивка 32 из components.css),
   поэтому верхнее поле блока — ровно просвет 14. */

.tk-catalog__head {
  gap: var(--s-4);              /* макет 14 → ближайший шаг сетки 16 */
  padding-top: var(--s-4);      /* просвет от крошек до заголовка, тот же 14 */
  padding-bottom: var(--s-8);   /* макет 28 → шаг 32 */
}

/* Заголовок 38 — ровно мобильная ступень --t-display-size. В page-uslugi.css
   на 680 стоял подобранный 34: макет говорит 38, ставим ступень.
   Интерлиньяж в макете leading-none, токен даёт 0.94 — «Услуги» в одну
   строку это не меняет, но на длинных заголовках 0.94 склеивает строки. */
.tk-catalog__title {
  font-size:      var(--t-display-size);
  line-height:    1;
  letter-spacing: var(--t-display-ls);   /* макет −1,4px = −0,0368em, токен −0,0397em */
}

/* Лид на мобильном опускается на ступень: в макете 15/1.55, а класс
   .t-body-lg в разметке даёт 17. Мера строки снимается — колонка одна. */
.tk-catalog__lead {
  max-width: none;
  font-size:   var(--t-body-size);
  line-height: 1.5;             /* макет 1.55; проза, а не подпись */
}


/* ══ 2. Сетка услуг · 345:14137 ══════════════════════════════════════════
   Один столбец даёт base.css. В макете шаг ряда 204 при высоте карточки
   190, то есть просвет 14, а не сеточные 24. */

.tk-catalog .tk-grid--4 { gap: var(--s-4); }   /* макет 14 → шаг 16 */

/* Карточка каталога ниже карточки главной: 335×190 против 335×220.
   Сам .tk-card-service уже переопределён в mobile.css глобально —
   здесь правится только пропорция и только внутри каталога. */
.tk-catalog .tk-card-service { aspect-ratio: 335 / 190; }

/* ОТКЛОНЕНИЕ: название в макете 19 SemiBold, ступени 19 в шкале нет —
   берём ближайшую body-lg (17), насыщенность из макета. */
.tk-catalog .tk-card-service__title {
  font-size:   var(--t-body-lg-size);
  line-height: 1.15;                    /* макет 1.15 */
  font-weight: var(--w-semibold);       /* канон — Medium */
}

/* Нижняя граница секции: в макете от кнопки до подвала 36.
   Канонические --s-section (56 на мобильном) здесь велики. */
.tk-catalog { padding-bottom: var(--s-10); }   /* макет 36 → шаг 40 */


/* ══ 3. Плашка «Весь прайс» · 345:31189 ══════════════════════════════════
   РАСХОЖДЕНИЕ С МАКЕТОМ. На 375 вместо плашки стоит одна кнопка во всю
   ширину — «СМОТРЕТЬ ПРАЙС», обводочная, 335×48 (345:14193). В разметке
   плашка несёт надстрочник и абзац текста, убирать содержимое
   медиазапросом нельзя, поэтому плашка остаётся: складывается в колонку,
   кнопка растягивается на ширину колонки — ровно как кнопка макета. */

.tk-allprice {
  flex-direction: column;
  align-items: stretch;
  gap: var(--s-5);
  margin-top: var(--s-4);          /* макет: от последней карточки 14 → шаг 16 */
  padding: var(--s-card);
  border-radius: var(--r-image);   /* мобильные плашки макета скруглены на 20, не 24 */
}

/* Кнопка на всю ширину колонки: подпись длинная, в строку она
   переносится и пилюля разъезжается по высоте. */
.tk-allprice .tk-btn {
  align-self: stretch;
  width: 100%;
}

}

/* ═══ vrach ═══ */
/* ТОМОКО — мобильная адаптация страницы «Врач — личная страница»
   /vrachi/krivosheina-olga-ivanovna/. Снято 28.08.2026 с артборда Figma
   «М · Врач  /vrachi/krivosheina-olga-ivanovna/» 345:14602 (375×4307),
   файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы, новых элементов нет ни одного.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Часть правил ниже
   спорит с блоками @media (max-width: 680px) в page-vrach.css,
   в components.css и в mobile.css; там, где специфичность равна,
   выигрывает порядок подключения, где нет — селектор прижат
   к .tk-doctor-reviews (см. блок 4).

   ВАЖНО. В page-vrach.css мобильная раскладка была ВЫВЕДЕНА, а не снята:
   там прямо написано «отдельного мобильного макета у этой страницы нет».
   Макет теперь есть и расходится с выведенным в четырёх местах:
     • герой идёт просветом 16, а не 20, и кончается полем 28, а не 40;
     • плашка фактов — не столбик, а три СТРОКИ «цифра слева, подпись
       справа» с волосяными разделителями;
     • шапка секции отзывов лежит на плитке --c-mist;
     • отзывы стоят СТОЛБИКОМ, а не лентой с прокруткой, как на главной.
   Последние два пункта — единственные места, где приходится спорить
   с mobile.css.

   Что уже сделано и здесь не повторяется:
     • шапка, бургер, раскрытое меню          — mobile-m1.css;
     • финальный блок (CTA и подвал)          — mobile-m3.css;
     • отбивка крошек и «/» вместо тире       — components.css;
     • одна колонка вместо двух, кнопка героя
       во всю ширину, строка «термин → значение»
       в две строки                           — page-vrach.css, блок 6.

   Точка перелома одна — 680. Поля 20 и сжатую шкалу кеглей даёт
   tokens.css, здесь они не трогаются. Теней нет ни одной.

   Расхождения с макетом, сознательно НЕ реализованные (кегли 8–13,
   мельче нижней ступени шкалы, третий бейдж, пятая строка образования,
   строчный регистр подписей у фактов, «ВСЕ ОТЗЫВЫ» простым текстом),
   перечислены в notes отчёта — в CSS они не заводились. */


@media (max-width: 680px) {

/* ══ 1. Герой врача · 345:14646 ══════════════════════════════════════════
   Кадр 375×876 складывается в колонку с просветом 16: крошки → портрет →
   имя → бейджи → лид → плашка фактов → кнопка. Поля 36 сверху (до крошек)
   и 28 снизу; крошки живут в своей обёртке (.tk-crumbs, отбивка 32 из
   components.css), поэтому верхнее поле героя — ровно просвет 16.
   Порядок макета совпадает с порядком разметки, переставлять нечего. */

.tk-doctor-hero { padding-block: var(--s-4) var(--s-8); }  /* макет 16 / 28 → шаги 16 и 32 */

.tk-doctor-hero__inner { gap: var(--s-4); }   /* макет 16; колонку даёт правило 1100 */
.tk-doctor-hero__data  { gap: var(--s-4); }   /* макет 16 */

/* Портрет на 375 — кадр 335×300 со скруглением 20, а не карточным 24:
   на мобильном макете все плашки скруглены на --r-image. Снимок в макете
   выше кадра (502) и подрезан снизу — верх держит object-position
   из page-vrach.css, его не трогаем. */
.tk-doctor-hero__photo     { border-radius: var(--r-image); }
.tk-doctor-hero__photo img { aspect-ratio: 335 / 300; }     /* макет 345:14648 */

/* Имя 32/1.05 — это ровно мобильная ступень --t-display-sm, заведённая
   в tokens.css под мобильные заголовки. В page-vrach.css на 680 стоял
   выведенный 34 сырыми пикселями; макет говорит 32, ставим ступень.
   Трекинг в макете −1,1px (−0,0344em), токен даёт −0,0395em — берём
   токен, чтобы ступень не разъезжалась по страницам. */
.tk-doctor__title {
  font-size:      var(--t-display-sm-size);
  line-height:    var(--t-display-sm-lh);
  letter-spacing: var(--t-display-sm-ls);
}

/* Бейджи: просвет 8, поля чипа 7/12 против канонических 7/14.
   Правится .tk-doctor__badge — это модификатор страницы, лежащий
   на том же элементе, что .tk-chip; сам канонический чип не трогаем. */
.tk-doctor__badges { gap: var(--s-2); }             /* макет 8 */
.tk-doctor__badge  { padding-inline: var(--s-3); }  /* макет 12 */

/* Лид на мобильном опускается на ступень: в макете 15/1.55, а правило
   страницы поднимает его до body-lg (17 на 375). */
.tk-doctor__lead {
  font-size:   var(--t-body-size);
  line-height: 1.5;             /* макет 1.55; проза, а не подпись */
}


/* ══ 2. Плашка ключевых фактов · 345:14657 ═══════════════════════════════
   На 1440 это три колонки встык, на 375 — три СТРОКИ: цифра слева,
   подпись справа, между строками волосяная линия. Заливка --c-mist
   и скругление 20 у плашки уже свои, десктопные, — совпали.

   Поля плашки 6 сверху и 14 снизу — асимметрия из макета, а не описка
   при переносе: верхняя волосяная линия первой строки в макете стоит
   ровно в 6px от края плашки (проверено на отрисовке узла). Если
   выяснится, что верхняя линия — артефакт автолэйаута, лечится
   добавлением .tk-doctor__fact:first-child { border-top: 0 }
   и симметричным полем; см. notes. */

.tk-doctor__facts {
  padding: 6px var(--s-5) 14px;   /* макет 6 / 20 / 14; шагов 6 и 14 в сетке нет */
}

/* Строки идут встык — просвет между ними рисует волосяная линия. */
.tk-doctor__facts-grid { row-gap: 0; }

.tk-doctor__fact {
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-4);
  min-width: 0;
  padding-block: 14px;                        /* макет 14; шага 14 в сетке нет */
  border-top: 1px solid var(--c-hairline);    /* волосяная линия: токена толщины нет */
}

/* Подпись прижата к правому краю строки и там же выключается: «ОПЫТА
   В ЛАЗЕРНОЙ ХИРУРГИИ» каноническим кеглем 12 в одну строку на 375
   не помещается и переносится. */
.tk-doctor__fact > p:last-child { text-align: right; }


/* ══ 3. Опыт и направления · 345:14669 + 345:14683 ═══════════════════════
   Обе колонки уже стоят друг под другом (правило 1100 в page-vrach.css).
   Здесь только метрика макета: заголовок → содержимое 12, между строками
   образования 12, между плитками услуг 10, между разделами и под ними 28. */

.tk-doctor-exp        { padding-bottom: var(--s-8); }  /* макет 28 → шаг 32 */
.tk-doctor-exp__inner { gap: var(--s-8); }             /* макет 28 → шаг 32 */
.tk-doctor-exp__col   { gap: var(--s-3); }             /* макет 12 и 10 → шаг 12 */

.tk-doctor-edu { gap: var(--s-3); }                    /* макет 12 */

/* Плитка услуги 335×45: поля 14/16, скругление 14 против десктопных 16.
   Ступени радиуса между --r-input 12 и --r-image 20 в токенах нет —
   значение из макета, как и на десктопе. */
.tk-doctor-svc__link {
  padding: 14px var(--s-4);     /* макет 14 / 16; шага 14 в сетке нет */
  border-radius: 14px;          /* макет 345:14685 */
}


/* ══ 4. Отзывы о враче · 345:14697 ═══════════════════════════════════════
   Кадр 375×724, поля 36 сверху и снизу, просвет 14. Секция расходится
   с мобильной секцией отзывов главной, откуда её метрику брал mobile.css,
   в двух вещах, и обе правятся ниже.

   ПЕРВОЕ: шапка секции лежит на плитке --c-mist со скруглением 20 —
   заголовок и действие внутри неё, просвет 8. Ровно тот же приём, что
   у .tk-usluga-price__head на странице услуги.

   ВТОРОЕ: карточки стоят СТОЛБИКОМ во всю ширину через 14, а не лентой
   с прокруткой. mobile.css превращает .tk-reviews__slider .tk-grid--3
   в однорядную ленту с примагничиванием — на этой странице ленту надо
   разобрать обратно. Селекторы прижаты к .tk-doctor-reviews: правило
   касается ровно этой секции, слайдер главной остаётся лентой. */

.tk-doctor-reviews { padding-block: var(--s-10); }   /* макет 36 / 36 → шаг 40 */

/* Шапка-плитка. Колонку и выключку влево .tk-sec-head даёт сам
   (components.css, 680), просвет там 24 — в макете 8. */
.tk-doctor-reviews__head {
  gap: var(--s-2);                 /* макет 8 */
  margin-bottom: 0;                /* отбивку до карточек даёт слайдер */
  padding: var(--s-card);          /* макет 20 */
  background: var(--c-mist);
  border-radius: var(--r-image);   /* мобильные плашки макета скруглены на 20 */
}

/* Внутри плитки действие стоит компактно у левого края — в макете это
   подпись «ВСЕ ОТЗЫВЫ», а не пилюля во всю ширину, как в page-vrach.css
   на 680. Кнопка остаётся канонической (обводочная, тап-цель 49):
   правится только ширина. */
.tk-doctor-reviews__head .tk-btn { width: auto; }

/* Отбивка шапки от первой карточки — 14 из макета. */
.tk-doctor-reviews .tk-reviews__slider { margin-top: var(--s-4); }

/* Лента разбирается обратно в столбик. Гасятся ровно те свойства,
   которые ставит mobile.css: поток, ширина колонки, прокрутка,
   примагничивание и вынос за поля контейнера. Последнее обязательно —
   иначе плитки поехали бы под края экрана. */
.tk-doctor-reviews .tk-reviews__slider .tk-grid--3 {
  grid-auto-flow: row;
  grid-template-columns: minmax(0, 1fr);
  grid-auto-columns: auto;
  gap: var(--s-4);                 /* макет 14 → шаг 16 */
  overflow-x: visible;
  scroll-snap-type: none;
  margin-inline: 0;
  padding-inline: 0;
  scroll-padding-inline: 0;
}

/* Карточка отзыва: поле 20 и просвет 8 из макета против 24 и 12,
   которые mobile.css ставит для ленты главной. Скругление 20, а не
   карточное 24, — как у всех плашек мобильного макета. */
.tk-doctor-reviews .tk-reviews__card {
  padding: var(--s-card);          /* макет 20 */
  gap: var(--s-2);                 /* макет 8 */
  border-radius: var(--r-image);
}

/* Точки уходят под центр полосы: sections.css на 680 отжимает их влево,
   освобождая место стрелкам справа. Стрелок в макете нет — карточки
   больше не лента, листать нечего, и две круглые кнопки под столбиком
   отзывов вводили бы в заблуждение. Точки оставлены: они показывают,
   сколько отзывов всего, и в макете нарисованы. */
.tk-doctor-reviews .tk-reviews__controls { grid-template-columns: 1fr; }
.tk-doctor-reviews .tk-reviews__controls .tk-dots {
  grid-column: 1;
  justify-content: center;
}
.tk-doctor-reviews .tk-reviews__arrows { display: none; }

}

/* ═══ vrachi ═══ */
/* ТОМОКО — мобильная адаптация страницы «Врачи — каталог» /vrachi/.
   Снято 28.08.2026 с артборда Figma «М · Врачи  /vrachi/» 345:14464
   (375×4115), файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы. Новых элементов нет — бургер и мобильное меню,
   единственная разметка, которой на десктопе физически не существует,
   заведены в mobile-m1.css.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Часть правил ниже
   спорит с блоком @media (max-width: 680px) в page-vrachi.css и
   в mobile.css при равной специфичности и выигрывает только за счёт
   порядка подключения.

   ВАЖНО. В page-vrachi.css мобильная раскладка была ВЫВЕДЕНА, а не снята:
   там прямо написано «отдельного мобильного макета у /vrachi/ нет», и
   метрика бралась с мобильной секции «Наши специалисты» главной
   (345:13821). Макет теперь есть, и он расходится с выведенным в трёх
   местах: кегль заголовка (38, а не 34), его цвет (зелёный), просвет
   рядов сетки (14, а не 16) и одиннадцатая карточка во всю ширину.
   Эти четыре правила — весь смысл файла.

   Что уже сделано и здесь не повторяется:
     • шапка, бургер, раскрытое меню          — mobile-m1.css;
     • финальный блок (CTA и подвал)          — mobile-m3.css;
     • отбивка крошек и «/» вместо тире       — components.css;
     • плитка .tk-card-doctor на 375          — mobile.css, блок 5
       (подложка --c-mist, скругление 20, портрет 160×190, подпись
        полями 12 / 14 / 14 и просветом 4) — совпало с макетом
       до пикселя, трогать нечего;
     • снятая пилюля «К ВРАЧУ», поля подписи
       и скругление плитки                    — page-vrachi.css, блок 6.

   Точка перелома одна — 680. Поля 20 и сжатую шкалу кеглей даёт
   tokens.css, здесь они не трогаются. Теней нет ни одной.

   Расхождения с макетом, сознательно НЕ реализованные (кегли 8–11,
   мельче нижней ступени шкалы, сокращённые подписи должностей,
   укороченный лид), перечислены в notes отчёта — в CSS они
   не заводились. */


@media (max-width: 680px) {

/* ══ 1. Шапка страницы · 345:14508 ═══════════════════════════════════════
   Кадр 375×250: поля 20 держит .tk-container, вертикальные — 36 сверху
   (до крошек) и 28 снизу, просветы между крошками, заголовком и лидом
   по 14. Крошки лежат в своей обёртке (.tk-crumbs, отбивка 32 из
   components.css), поэтому верхнее поле блока — ровно просвет 14.

   Значения совпадают с тем, что уже стоит в page-vrachi.css: повторены
   здесь целиком, чтобы блок читался как снятая метрика макета, а не как
   половина метрики плюс половина наследства. */

.tk-staff__head {
  gap: var(--s-4);              /* макет 14 → ближайший шаг сетки 16 */
  padding-top: var(--s-4);      /* просвет от крошек до заголовка, тот же 14 */
  padding-bottom: var(--s-8);   /* макет 28 → шаг 32 */
}

/* Заголовок 38 — ровно мобильная ступень --t-display-size. В page-vrachi.css
   на 680 стоял выведенный 34: макет говорит 38, ставим ступень. Интерлиньяж
   в макете leading-none; токен даёт 0.94, а заголовок здесь ломается на две
   строки — 0.94 их склеивает, поэтому ровно 1, как на каталоге услуг.

   ЦВЕТ — ОТКЛОНЕНИЕ МОБИЛЬНОГО МАКЕТА ОТ ДЕСКТОПНОГО. На артборде 375
   заголовок набран --c-brand-green (345:14510, #237e33), на десктопном
   1440 он чернильный (345:31480, #0b1a10), и на соседнем мобильном
   каталоге услуг (345:14135) тоже чернильный. То есть зелёный заголовок —
   свойство ровно этой страницы на ровно этой ширине. Реализовано как
   нарисовано; если это описка дизайнера, снимается удалением одной
   строки — см. notes. */
.tk-staff__title {
  font-size:      var(--t-display-size);
  line-height:    1;
  letter-spacing: var(--t-display-ls);   /* макет −1,4px = −0,0368em, токен −0,0397em */
  color:          var(--c-brand-green);
}

/* Лид на мобильном опускается на ступень: в макете 15/1.55, а класс
   .t-body-lg в разметке даёт 17. Мера строки снимается — колонка одна. */
.tk-staff__lead {
  max-width: none;
  font-size:   var(--t-body-size);
  line-height: 1.5;             /* макет 1.55; проза, а не подпись */
}


/* ══ 2. Сетка специалистов · 345:14512 ═══════════════════════════════════
   Одиннадцать карточек 160,5 в ДВА столбца — сетка не сваливается в один,
   как остальные .tk-grid--4 на 680. Просвет 14 по обеим осям: ряды в
   макете идут с шагом 299 при высоте 285 и 283 при высоте 269.
   Канонический .tk-grid--4 не трогаем — правится свой .tk-staff__grid. */

.tk-staff__grid {
  /* minmax(0, 1fr), а не 1fr: минимум элемента сетки по умолчанию равен
     min-content, и колонка раздувается по самой длинной фамилии
     («Тиманова Анастасия Александровна»). */
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;                    /* макет 14 по обеим осям; шага 14 в сетке нет */
}

/* Последняя карточка нечётного списка стоит в макете во всю ширину
   («Ряд 6», 345:14589: 335×269 против 160,5 у соседей) — иначе она
   висела бы половиной ряда. Пара :nth-child(odd):last-child держит это
   свойством СПИСКА, а не одиннадцатого элемента: добавится двенадцатый
   сотрудник — ряд снова станет полным сам собой. */
.tk-staff__grid > li:nth-child(odd):last-child { grid-column: 1 / -1; }

/* Портрет во всю ширину — тот же кадр 190 по высоте, что у парных
   карточек, но 335 по ширине. Без этого правила портрет унаследовал бы
   пропорцию 160/190 из mobile.css и вырос бы до 398. */
.tk-staff__grid > li:nth-child(odd):last-child .tk-staff__photo {
  aspect-ratio: 335 / 190;      /* макет 345:14590 */
}

/* Нижняя граница секции: в макете от последнего ряда до подвала 36.
   Канонические --s-section (56 на мобильном) здесь велики. */
.tk-staff { padding-bottom: var(--s-10); }   /* макет 36 → шаг 40 */

}

/* ═══ zabolevanie ═══ */
/* ТОМОКО — мобильная адаптация страницы «Заболевание»
   /pacientu/zabolevaniya/katarakta/. Снято 28.08.2026 с артборда Figma
   «М · Заболевание» 345:14917 (375×11049),
   файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы. Новых элементов нет — бургер и мобильное меню,
   единственная разметка, которой на десктопе физически не существует,
   заведены в mobile-m1.css.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Почти каждое
   правило ниже спорит либо с блоком @media (max-width: 680px)
   в page-zabolevanie.css, либо с мобильными состояниями компонентов
   в mobile.css, и при равной специфичности выигрывает только
   за счёт порядка подключения.

   ВАЖНО. Мобильный блок в page-zabolevanie.css был написан ДО того,
   как нашёлся этот артборд: там прямо сказано «отдельного мобильного
   макета у этой страницы нет», и раскладка выведена по правилам системы.
   Макет нашёлся и в трёх местах расходится с выводом принципиально,
   а не на пиксель:
     • оглавление     — не открытый список с волосяными линейками,
                        а плитка --c-mist со скруглением 20 и полями 22;
                        линеек в мобильном макете нет вовсе;
     • карточка       — не фотокарточка с текстом поверх снимка
       связанной        (так она выглядит на мобильной главной и так её
       услуги           перестраивает mobile.css), а плитка --c-mist:
                        фото 150 сверху, под ним подпись, кикер и
                        «ПОДРОБНЕЕ →» обычным текстом, без пилюли;
     • ритм статьи    — просветы внутри раздела 12, между разделами 34;
                        выведенные 16 и 40 макету не соответствуют.
   Остальное — метрика: поля, кегли, интерлиньяжи.

   Что уже сделано и здесь не повторяется:
     • шапка, бургер, раскрытое меню          — mobile-m1.css;
     • финальный блок (CTA и подвал)          — mobile-m3.css;
     • отбивка крошек, «/» вместо тире и
       тап-цель крошки 24                     — components.css и mobile.css;
     • поля 20 и сжатая шкала кеглей          — tokens.css;
     • одна колонка вместо двух, снятая
       липкость оглавления, ширина плашки
       во всю страницу                        — page-zabolevanie.css.

   Точка перелома одна — 680, теснее не понадобилось: колонка одна,
   самое узкое место (строка цены «2 500 ₽ первичный приём», 235 при
   кегле 16) умещается в поле плашки и на 320. Теней нет ни одной,
   элевация только цветом.

   Расхождения с макетом, сознательно НЕ реализованные (кегли 10, 11, 13,
   14, 24 и 28 между ступенями шкалы; «·» как разделитель в строке цены;
   перенос стрелки «→» на свою строку; другой состав карточек связанной
   услуги), перечислены в notes и missing отчёта — в CSS их нет. */


@media (max-width: 680px) {

/* ══ 1. Шапка страницы · 345:14961 ═══════════════════════════════════════
   Кадр 375×233: поля 20 держит .tk-container, вертикальные — 36 сверху
   (до крошек) и 28 снизу, просветы между крошками, заголовком и лидом
   по 14. Крошки лежат в своей обёртке (.tk-crumbs, отбивка 32 из
   components.css), поэтому верхнее поле блока — ровно просвет 14.
   Сумма сходится: 36 + 13 + 14 + 36 + 14 + 92 + 28 = 233.

   ОТКЛОНЕНИЕ: макетные 36 до крошек против канонических 32 не правим —
   .tk-crumbs это хром ВСЕХ внутренних страниц, ради четырёх пикселей
   на одной из них общий класс не трогаем. Записано в notes. */

.tk-zabol-head {
  padding-top:    var(--s-4);                    /* макет 14 → ближайший шаг 16 */
  padding-bottom: calc(var(--s-6) + var(--s-1)); /* макет 28: шага 28 в ритме нет */
}

/* Просвет «лид → плашка “Что делать”»: в макете это зазор между кадрами
   345:14961 и 345:14965, 28. На сайте плашка лежит внутри .tk-zabol-head__inner
   вторым флекс-элементом, поэтому зазор задаётся просветом колонки. */
.tk-zabol-head__inner { gap: calc(var(--s-6) + var(--s-1)); }   /* макет 28 */

.tk-zabol-head__text { gap: var(--s-4); }        /* макет 14 → шаг 16 */

/* Заголовок: макет 345:14963 — 36 / 1.0 / −1,3px (= −0.0361em).
   Ступени 36 в мобильной шкале нет (display-sm даёт 32), значение
   поставлено пикселями по замеру. Оно ЗАМЕНЯЕТ выведенные ранее 34/1.05:
   те были догадкой до находки макета. */
.tk-zabol-head__title {
  font-size:      36px;
  line-height:    1;
  letter-spacing: -0.0361em;
}

/* Лид: в макете 345:14964 — 15 / 1.55 --c-fog, то есть на мобильном он
   опускается со ступени body-lg на ступень body. Кегль берём токеном:
   --t-body-size на 680 как раз равен 15. */
.tk-zabol-head__text .t-body-lg {
  font-size:   var(--t-body-size);
  line-height: 1.55;                             /* макет 1.55 */
}


/* ══ 2. Плашка «Что делать» · 345:14966 ══════════════════════════════════
   Плитка 335×242 --c-mist: поля 20, просветы 10, скругление 20 (не
   карточные 24). Поле 20 уже даёт --s-card, который на 680 сжимается
   в tokens.css, — здесь макет и токен сошлись ровно.
   Сумма сходится: 20 + 12 + 10 + 92 + 10 + 20 + 10 + 48 + 20 = 242. */

.tk-zabol-todo {
  gap:           var(--s-3);       /* макет 10 → ближайший шаг 12 */
  border-radius: var(--r-image);   /* макет 20; на десктопе карточные 24 */
}

/* Строка цены. В макете 345:14969 это ОДНА строка одного набора:
   16 SemiBold --c-brand-green целиком, включая подпись «первичный приём».
   На десктопе сумма 28 зелёная, подпись 16 приглушённая — на мобильном
   макете этой разницы нет. Разметка не трогается: обоим span-ам просто
   назначается один набор. */
.tk-zabol-todo__price { gap: var(--s-3); }       /* макет: пробелы вокруг «·» ≈ 12 */

.tk-zabol-todo__sum {
  font-size:      var(--t-body-size);            /* макет 16 → ступень body (15) */
  line-height:    1.25;                          /* макет: строка 20 при кегле 16 */
  letter-spacing: var(--t-body-ls);
}

/* Специфичность 0,2,0 нужна, чтобы перебить утилиту .c-muted (0,1,0)
   на том же элементе: цвет подписи в макете не приглушённый, а зелёный. */
.tk-zabol-todo__price .t-body {
  color:       var(--c-brand-green);
  font-weight: var(--w-semibold);
  line-height: 1.25;
}


/* ══ 3. Оглавление · 354:3475 ════════════════════════════════════════════
   ЗДЕСЬ МАКЕТ РАСХОДИТСЯ С ДЕСКТОПОМ ПРИНЦИПИАЛЬНО. На десктопе это
   открытый список: каждый пункт отбит сверху волосяной линией, поля
   пункта 12. В мобильном макете линеек нет ни одной, а сам список лежит
   плиткой --c-mist 335×298 со скруглением 20 и полями 22.
   Сумма сходится: 22 + 14 + 10 + 8×20 + 7×10 + 22 = 298. */

.tk-zabol-toc {
  position:      static;           /* липкость снята: на телефоне колонки нет */
  background:    var(--c-mist);
  border-radius: var(--r-image);   /* макет 20 */
  padding:       22px;             /* макет 22; между шагами 20 и 24, токена нет */
  /* Низ на 5 меньше: ровно столько ссылка ниже добирает себе на тап-цель,
     иначе внутреннее поле снизу читалось бы как 27 вместо 22. */
  padding-bottom: 17px;
  gap: 5px;                        /* макет 10 от «СОДЕРЖАНИЕ» до первого
                                      пункта, 5 из них уже в паддинге ссылки */
}

/* Цвет надстрочника в мобильном макете --c-fog, на десктопе --c-ash. */
.tk-zabol-toc__title { color: var(--c-fog); }

/* Просвет между пунктами (макет 10) целиком отдан паддингу ссылки:
   так шаг пункта остаётся макетными 30 (20 строки + 5 + 5), а тап-цель
   вырастает с 20 до 30 при норме WCAG 2.5.8 в 24. Через gap этого
   не получить — gap тап-цель не увеличивает. */
.tk-zabol-toc__list { gap: 0; }

.tk-zabol-toc__link {
  border-top:    0;                /* линеек в мобильном макете нет */
  padding-block: 5px;              /* половина макетного просвета 10 */
  gap:           var(--s-3);       /* макет 10 → шаг 12 */
}

/* Название пункта в макете --c-ink-green, а не зелёное как на десктопе:
   на плитке --c-mist зелёный по зелёному дал бы слишком слабый контраст,
   зелёным остаётся только ховер. */
.tk-zabol-toc__text { color: var(--c-ink-green); }


/* ══ 4. Текст статьи · 354:3501 и однотипные ═════════════════════════════
   Между разделами 34, внутри раздела всё через 12 — и абзацы, и пункты
   списков, и подзаголовки. На десктопе это 56 и 16 соответственно. */

.tk-zabol-art { gap: var(--s-8); }        /* макет 34 → ближайший шаг 32 */

.tk-zabol-art__sec  { gap: var(--s-3); }  /* макет 12 */
.tk-zabol-art__list { gap: var(--s-3); }  /* макет 12 */

/* Просвет между .tk-zabol-toc и .tk-zabol-art в сетке .tk-zabol-body:
   в макете 34, тот же шаг, что между разделами. */
.tk-zabol-body {
  gap: var(--s-8);                                /* макет 34 → шаг 32 */
  padding-bottom: calc(var(--s-6) + var(--s-1));  /* макет 28 до блока услуг */
}

/* Интерлиньяж заголовков. Кегли в макете (H2 24, H3 17) со ступенями
   мобильной шкалы расходятся на два пункта у H2 и совпадают у H3,
   а вот интерлиньяж расходится у обоих: токены дают 1.0 и 1.29,
   в макете и там и там 1.2. Двухстрочные H2 («Хирургия патологий
   хрусталика», «Какие методы лечения используются») при 1.0 слипаются,
   поэтому интерлиньяж берём макетный. Кегли — в notes. */
.tk-zabol-art__h2 { line-height: 1.2; }
.tk-zabol-art__h3 { line-height: 1.2; }

/* Маркер списка: в макете 354:3604 точка 6×6 против 7×7 на десктопе.
   Отступ сверху не трогаем — он считается от НАШЕГО кегля: при 15/1.55
   оптический центр первой строки приходится на (23,25 − 6) / 2 ≈ 9,
   то есть ровно на десктопное значение. */
.tk-zabol-art__list li::before { width: 6px; height: 6px; }

.tk-zabol-art__list li { gap: var(--s-3); }   /* макет 10 → шаг 12 */

/* Врезка 354:3535: поля 20 по вертикали и 22 по горизонтали (на десктопе
   24 и 32), кегль опускается со ступени body-lg на body — то же, что
   с лидом шапки. Скругление в макете 18, ближайший токен --r-image (20)
   уже стоит на десктопе. */
.tk-zabol-art__callout {
  padding:   var(--s-5) 22px;      /* макет 20 / 22; шага 22 в ритме нет */
  font-size: var(--t-body-size);   /* макет 15 */
}


/* ══ 5. Связанная услуга · 345:14987 ═════════════════════════════════════
   Заголовок, под ним четыре карточки в колонку через 14.
   Поля кадра: 36 сверху до заголовка и 36 снизу до подвала.
   Сумма сходится: 36 + 34 + 14 + 285 + 14 + 309 + 14 + 285 + 14 + 285
   + 36 = 1326. */

.tk-zabol-related {
  padding-top:    calc(var(--s-8) + var(--s-1));  /* макет 36 */
  padding-bottom: calc(var(--s-8) + var(--s-1));  /* макет 36; канонические 56 велики */
}

.tk-zabol-related__title { margin-bottom: var(--s-4); }   /* макет 14 → шаг 16 */

/* ПЕРЕОПРЕДЕЛЕНИЕ КАНОНИЧЕСКОГО .tk-grid (base.css): просвет сетки
   --s-gutter (24) на мобильных нигде не сжимается, а в макете он 14.
   Правило заужено до .tk-zabol-related, за пределами блока сетка
   не меняется. */
.tk-zabol-related .tk-grid--4 { gap: var(--s-4); }        /* макет 14 → шаг 16 */


/* ── 5.1 Карточка услуги · 345:14989 ─────────────────────────────────────
   ПЕРЕОПРЕДЕЛЕНИЕ КАНОНИЧЕСКОГО .tk-card-service И ЕГО ЭЛЕМЕНТОВ.
   Без него никак: канон (components.css) и мобильное состояние
   компонента (mobile.css, снято с главной 345:13730) описывают
   фотокарточку — снимок во всю плитку, затемнение, подпись и пилюля
   ПОВЕРХ фото. В макете этой страницы карточка устроена иначе:
   плитка --c-mist 335 с полями 20, внутри фото 150 со своим скруглением
   14, под фото подпись, кикер и «ПОДРОБНЕЕ →» обычным текстом.
   Это не вариация раскладки, а другой компонент; модификатор завести
   нельзя — он потребовал бы правки разметки. Все правила заужены
   до .tk-zabol-related и живут только ниже 680.
   Сумма сходится: 20 + 150 + 8 + 24 + 8 + 13 + 8 + 13 + 8 + 13 + 20 = 285. */

.tk-zabol-related .tk-card-service {
  display:        flex;
  flex-direction: column;
  align-items:    stretch;
  gap:            var(--s-2);      /* макет 8 */
  aspect-ratio:   auto;            /* снимаем 335/220 из mobile.css */
  padding:        var(--s-card);   /* макет 20; --s-card на 680 равен 20 */
  background:     var(--c-mist);
  border-radius:  var(--r-image);  /* макет 20 */
}

/* Затемнения нет: фото больше не подложка под текст. */
.tk-zabol-related .tk-card-service::after { display: none; }

.tk-zabol-related .tk-card-service img {
  flex:          none;
  height:        150px;            /* макет 355:3475, h=150 */
  border-radius: 14px;             /* макет 14; между --r-input (12) и --r-image (20) */
}

/* Подпись выходит из-под абсолютного позиционирования и встаёт в поток;
   цвет с бумажного возвращается на основной — текст теперь на плитке. */
.tk-zabol-related .tk-card-service__body {
  position: static;
  padding:  0;
  color:    var(--c-ink-green);
}

/* Название: макет 20 SemiBold / 1.2 — ступень subheading на 680 даёт
   ровно 20, совпало дословно. На десктопе здесь body-lg Medium. */
.tk-zabol-related .tk-card-service__title {
  font-size:   var(--t-subheading-size);
  line-height: 1.2;
  font-weight: var(--w-semibold);
}

/* Кикер: на фото он белый с альфой 0.75 (sections.css), на плитке —
   приглушённый. Просвет 8 до названия уже даёт его собственный
   margin-top, он же совпал с просветом карточки. */
.tk-zabol-related .tk-services__kicker { color: var(--c-fog); }

/* «ПОДРОБНЕЕ →». В mobile.css блок скрыт: на мобильной ГЛАВНОЙ пилюли
   поверх фото действительно нет. Здесь она есть — но не пилюлей, а
   строкой текста под кикером, поэтому блок возвращается в поток
   и уезжает в конец колонки (в разметке он стоит до подписи). */
.tk-zabol-related .tk-card-service__action {
  display:  block;
  position: static;
  order:    1;
}

/* ПЕРЕОПРЕДЕЛЕНИЕ КАНОНИЧЕСКОЙ .tk-btn: в макете от кнопки не осталось
   ничего, кроме набора — ни подложки, ни обводки, ни полей. Заводить
   на это модификатор нельзя, он потребовал бы правки разметки; селектор
   заужен до блока связанной услуги и до ширин ниже 680. */
.tk-zabol-related .tk-card-service__action .tk-btn {
  padding:      0;
  background:   none;
  border:       0;
  color:        var(--c-fog);
  font-size:    var(--t-label-12-size);   /* макет 11 → ступень label-12 */
  line-height:  1.2;
}

}

/* ═══ zabolevaniya ═══ */
/* ТОМОКО — мобильная адаптация страницы «Заболевания — каталог»
   /pacientu/zabolevaniya/. Снято 28.08.2026 с артборда Figma
   «М · Заболевания — каталог» 345:16173 (375×4142),
   файл U5M0ihzdUI9upBTwUAHZ42.

   Разметка одна на оба размера: ниже ТОЛЬКО медиазапросы к десктопным
   классам страницы. Новых элементов нет — бургер и мобильное меню,
   единственная разметка, которой на десктопе физически не существует,
   заведены в mobile-m1.css.

   ПОДКЛЮЧАТЬ ПОСЛЕДНИМ: tokens.css → base.css → components.css →
   sections.css → pages.css → mobile.css → этот файл. Часть правил ниже
   спорит с блоком @media (max-width: 680px) в page-zabolevaniya.css при
   равной специфичности и выигрывает только за счёт порядка подключения.

   ОСОБЫЙ СЛУЧАЙ. В page-zabolevaniya.css мобильный блок уже был снят
   с ЭТОГО ЖЕ артборда (в комментариях к нему стоят те же номера узлов),
   и совпало почти всё: отбивки шапки, кегль заголовка 34, просвет сетки
   12, высота карточки 195, скругление 20. Файл добирает четыре места,
   которых там не оказалось:
     • интерлиньяж и трекинг заголовка — 1.02 и −1,2px из макета;
     • кегль лида                      — 15, а не 17 (класс .t-body-lg);
     • вертикальные поля карточки      — 18, а не 20;
     • нижняя граница секции           — 32, а не канонические 56.
   Совпавшее повторено целиком, чтобы блок читался как снятая метрика
   макета, а не как половина метрики плюс половина наследства.

   Что уже сделано и здесь не повторяется:
     • шапка, бургер, раскрытое меню          — mobile-m1.css;
     • финальный блок (CTA и подвал)          — mobile-m3.css;
     • отбивка крошек, «/» вместо тире и
       тап-цель крошки 24                     — components.css и mobile.css;
     • поля 20 и сжатая шкала кеглей          — tokens.css;
     • интерлиньяж описания 1.5, белая
       подложка и обводка 1.5 --c-hairline    — page-zabolevaniya.css.

   Точка перелома одна — 680, теснее не понадобилось: колонка одна,
   самое длинное слово («Гиперметропия», 13 знаков кеглем 15) в поле
   карточки 295 умещается и на 360. Теней нет ни одной, элевация
   только волосяной обводкой.

   Расхождения с макетом, сознательно НЕ реализованные (кегли 11, 14 и 19
   между ступенями шкалы; сокращённые описания карточек; скругление 18),
   перечислены в notes отчёта — в CSS они не заводились. */


@media (max-width: 680px) {

/* ══ 1. Шапка страницы · 345:16217 ═══════════════════════════════════════
   Кадр 375×178: поля 20 держит .tk-container, вертикальные — 32 сверху
   (до крошек) и 24 снизу, просветы между крошками, заголовком и лидом
   по 14. Крошки лежат в своей обёртке (.tk-crumbs, отбивка 32 из
   components.css — здесь макет и канон сошлись ровно), поэтому верхнее
   поле блока — ровно просвет 14. Сумма сходится:
   32 + 13 + 14 + 35 + 14 + 46 + 24 = 178. */

.tk-zabkat__head {
  gap: var(--s-4);              /* макет 14 → ближайший шаг сетки 16 */
  padding-top: var(--s-4);      /* просвет от крошек до заголовка, тот же 14 */
  padding-bottom: var(--s-6);   /* макет 24 */
}

/* Заголовок в макете 34 / 1.02 / −1,2px (345:16219). Мобильная ступень
   --t-display-sm-size даёт 32 — сжатая шкала tokens.css с этим макетом
   расходится на два пункта; кегль берём из макета, токен не трогаем.
   Интерлиньяж и трекинг заданы явно: без них класс тянет
   --t-display-sm-lh (1.05) и токенный трекинг, а «Заболевания глаз»
   на 360 ломается на две строки, где разница уже видна.

   Цвет менять не нужно: в отличие от соседней «М · Пациенту», где
   заголовок на 375 позеленел, здесь он чернильный (#0b1a10) — тот же,
   что на десктопе. */
.tk-zabkat__title {
  font-size:      34px;         /* макет 345:16219; ступени 34 в шкале нет */
  line-height:    1.02;
  letter-spacing: -0.035em;     /* −1,2px при кегле 34 */
}

/* Лид на мобильном опускается на ступень: в макете 15/1.55 (345:16220),
   а класс .t-body-lg в разметке даёт 17/1.29. Кегль 15 — это ровно
   мобильная ступень --t-body-size, подбирать нечего. Мера строки
   снимается — колонка одна. */
.tk-zabkat__lead {
  max-width:   none;
  font-size:   var(--t-body-size);
  line-height: 1.5;             /* макет 1.55; проза, а не подпись */
}


/* ══ 2. Сетка заболеваний · 345:16221 ════════════════════════════════════
   Девять карточек 335×195 в один столбец. Столбец даёт base.css, здесь
   только просвет: ряды идут с шагом 207 при высоте карточки 195,
   то есть 12, а не сеточные 24. */

.tk-zabkat__list { gap: var(--s-3); }           /* макет 12 */

/* Нижняя граница секции: в макете от последней карточки до подвала 32
   (кадр 1883 при низе карточки 1851). Канонические --s-section
   (56 на мобильном) здесь велики. */
.tk-zabkat { padding-bottom: var(--s-8); }      /* макет 32 */


/* ══ 3. Карточка заболевания · 345:16222 и однотипные ════════════════════
   Белая коробка 335×195 с волосяной обводкой: поля 20 по горизонтали
   и 18 по вертикали, скругление 18, три строки разогнаны по высоте.
   Высота 195 в макете задана силой — при коротком описании коробка иначе
   схлопнулась бы, и space-between (стоит на десктопе) потерял бы смысл.

   Разгон проверен: 195 − 18×2 = 159 внутренней высоты, содержимое
   22 + 63 + 13 = 98, свободных 61 на два просвета по 30,5 — ровно
   те координаты, что стоят у текстов в макете (70,5 и 164). Просвет 12
   остаётся нижней границей: у «Глаукомы» и «Дистрофий сетчатки»
   описание на строку длиннее, и разгон сжимается до 20. */

.tk-zabkat__card {
  min-height:    195px;                 /* макет 345:16222, h=195 */
  padding:       18px var(--s-card);    /* макет 18/20; шага 18 в ритме нет, --s-card на 680 равен 20 */
  border-radius: var(--r-image);        /* макет 18 → ближайший токен 20 */
  gap:           var(--s-3);            /* нижняя граница разгона */
}

/* ОТКЛОНЕНИЕ КЕГЛЕЙ, здесь НЕ реализуемое. Название в макете
   19 SemiBold / 1.15 без трекинга — ступень .t-subheading даёт
   на мобильном 20 / 1.13 / −0,03em; расхождение в один пункт, ступени 19
   в шкале нет, класс оставлен как есть. Описание в макете 14 / 1.5,
   ступень body даёт 15, интерлиньяж 1.5 уже стоит на .tk-zabkat__text
   в page-zabolevaniya.css. «ПОДРОБНЕЕ →» в макете 11 SemiBold с трекингом
   1,1px — ступень label-12 даёт 12 / 0,1em, то есть тот же трекинг
   и кегль на пункт крупнее; ниже 11 в системе не опускаемся, поэтому
   класс тоже оставлен. Ни одного правила эти три расхождения
   не требуют — блок оставлен как запись о них. */

}
