/* ─────────────────────────────────────────────────────────────────────
   Базовое оформление страницы статьи. Ставится как есть: страница сразу
   выглядит опрятно, даже если дизайном никто не занимался.

   Свой цвет — одна строка: --accent ниже. Больше ничего менять не нужно.

   Что здесь сделано намеренно, а не «как получилось»:
   · два семейства с ролями — Literata читает длинный текст, IBM Plex Sans
     держит служебное (мета, таблица, оглавление, форма);
   · два цвета — зелёный означает действие, глина метит рубрику и источники.
     Акцент не размазан по всей странице, поэтому кнопка заметна;
   · волосяные линии вместо рамок и теней. Заливка одна — у формы: она
     единственная врезка другого назначения посреди чтения;
   · оглавление на телефоне оказывается НАД текстом (см. .grid) — в разметке
     оно стоит перед статьёй;
   · разделитель — один токен --rule (плюс --rule-strong чуть плотнее для
     мест «конец блока»), не больше трёх мест на странице статьи; акцентная
     линия (--accent) — только у ОДНОГО блока, ниже это .toc. У h2/h3
     border-top/border-bottom нет нигде — разделы разводит отступ (margin),
     не рамка (см. комментарий у article h2 ниже);
   · сетка «Читайте также» красит рамку у каждой карточки (.rel-card), а не
     фон контейнера с узким gap: залитый gap красит и пустые ячейки, если
     карточек меньше, чем колонок в сетке (см. .related ниже) — это разбор
     `docs/Аудит-статьи-ironex_2026-09-08.md` §2 п.2/4, правила B1/D1/D2
     будущего `article-check`.
   ───────────────────────────────────────────────────────────────────── */

:root{
  --accent:#1d5b49;          /* ← ВАШ ЦВЕТ: ссылки, кнопка, активный пункт */
  --accent-soft:#eef3f0;     /*   подложка формы, светлый оттенок акцента  */
  --clay:#96521f;            /* только рубрика статьи и маркер источников  */
  --ink:#1a1b18;
  --ink-2:#3d423c;
  --muted:#6a706a;
  --paper:#fcfbf8;
  --rule:#e5e3dc;
  --rule-strong:#cfccc3;
  --maxw:1140px;
  --measure:68ch;            /* длина строки: длиннее — читать тяжелее */
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font:400 19px/1.72 Literata,Georgia,"Times New Roman",serif;
  text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
.ui{font-family:"IBM Plex Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
a{color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px}
a:hover{text-decoration-thickness:2px}
/* Видимый фокус обязателен: без него интерфейс недоступен с клавиатуры. */
a:focus-visible,button:focus-visible,summary:focus-visible,
input:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}

/* ── Шапка статьи ──────────────────────────────────────────────────── */
.crumbs{font-size:14px;color:var(--muted);padding:26px 0 0}
.crumbs a{color:var(--muted);text-decoration:none}
.crumbs a:hover{color:var(--accent);text-decoration:underline}
.crumbs span[aria-current]{color:var(--ink-2)}

/* Рубрика — не «pill», а типографика: капитель с разрядкой. */
.kind{display:block;margin:30px 0 12px;color:var(--clay);
      font-size:13px;font-weight:600;letter-spacing:.09em;text-transform:uppercase}
h1{font-size:clamp(32px,4.6vw,52px);line-height:1.08;letter-spacing:-.02em;
   font-weight:700;margin:0 0 18px;max-width:23ch}
.standfirst{font-size:clamp(20px,2.2vw,23px);line-height:1.5;color:var(--ink-2);
            margin:0 0 34px;max-width:56ch}

/* ── Байлайн ───────────────────────────────────────────────────────── */
.byline{display:flex;gap:16px;align-items:center;
        padding:18px 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.ava{width:52px;height:52px;border-radius:50%;flex:0 0 52px;display:grid;place-items:center;
     background:var(--accent-soft);color:var(--accent);font-weight:600;font-size:17px;
     letter-spacing:.02em;overflow:hidden}
.ava img{width:100%;height:100%;object-fit:cover;display:block}
.byline__name{font-weight:600;font-size:17px;line-height:1.3}
.byline__meta{font-size:14.5px;color:var(--muted);margin-top:3px}
.byline__meta a{color:var(--muted)}
.creds{display:flex;flex-wrap:wrap;gap:14px;margin:6px 0 0;padding:0;list-style:none;
       font-size:13.5px;color:var(--muted)}
.creds li{position:relative;padding-left:15px}
.creds li::before{content:"";position:absolute;left:0;top:.62em;width:6px;height:6px;
                  border-radius:50%;background:var(--rule-strong)}

/* ── Сетка. Оглавление стоит в разметке ПЕРЕД текстом: на узком экране оно
      должно быть сверху, а не в подвале, куда никто не долистает.
      На широком — раскладывается в правую колонку. ─────────────────── */
.grid{display:grid;grid-template-columns:minmax(0,1fr) 244px;gap:0 64px;
      padding:38px 0 72px;align-items:start}
.col-main{grid-column:1;grid-row:1;min-width:0}
.col-side{grid-column:2;grid-row:1;position:sticky;top:28px}
@media (max-width:920px){
  .grid{grid-template-columns:1fr;gap:0;padding-top:26px}
  .col-main{grid-column:1;grid-row:2}
  .col-side{grid-column:1;grid-row:1;position:static;margin:0 0 30px}
}

/* Оглавление без рамки: слева линия в цвет акцента и капитель-заголовок.
   Коробка тут не нужна — это навигация, а не карточка товара. Линия
   именно в --accent, а не в серое --rule: сайдбар должен читаться как
   часть бренда, а не как техническая деталь браузера по умолчанию. */
.toc{border-left:3px solid var(--accent);padding:2px 0 2px 18px}
.toc>summary{list-style:none;cursor:pointer;font-size:12px;font-weight:700;
             letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}
.toc>summary::-webkit-details-marker{display:none}
.toc ol{margin:14px 0 0;padding:0;list-style:none;font-size:15px;line-height:1.45}
.toc li{margin:0 0 11px}
.toc a{color:var(--ink-2);text-decoration:none;display:block}
.toc a:hover{color:var(--accent)}
.toc a.is-active{color:var(--accent);font-weight:500}

/* ── Фото-заявка в начале статьи. Стоит ВНЕ <article>, поэтому не
      зажата мерой чтения --measure и занимает всю ширину .col-main —
      так же, как заголовок и standfirst выше. Это единственное место,
      где ширина фото не совпадает с шириной текста: там, где страница
      «начинается», взгляду нужен воздух шире колонки чтения.
      ОПЦИОНАЛЬНО: только под настоящее фото объекта/процесса/результата.
      Нет такого фото — не ставьте заглушку, уберите блок целиком (см. README). */
.hero-figure{margin:8px 0 40px}
.hero-figure img,.hero-figure svg{width:100%;height:auto;display:block;
     border-radius:10px;aspect-ratio:16/9;object-fit:cover;background:var(--accent-soft)}
.hero-figure figcaption{margin-top:12px}

/* ── Тело статьи ───────────────────────────────────────────────────── */
article{max-width:var(--measure)}
article > p{margin:0 0 22px}
.lead{font-size:21px;line-height:1.62;color:var(--ink);margin-bottom:28px}
/* ПРАВИЛО (не менять по привычке): у h2/h3 НЕТ border-top/border-bottom и НЕТ
   декоративного номера через ::before (никаких "01"/"02" капителью, никакого
   uppercase-eyebrow над заголовком). Отбивку даёт margin выше — отступ, а не
   линия и не метка. Ровно это сломано у ironex.tech: чёрная линия над каждым
   h2 из border-top + отдельный counter "0N" из h2::before — три системы
   нумерации на одной странице разом с TOC. Нумерация нужна — она живёт РОВНО
   в одном месте: в .toc ниже (список без счётчика в разметке; если нужны
   цифры — ставит их сам шаблонизатор строкой "N.", без ведущего нуля). */
article h2{font-size:clamp(25px,3vw,31px);line-height:1.2;letter-spacing:-.01em;
           font-weight:700;margin:52px 0 16px;scroll-margin-top:26px}
article h3{font-size:21px;line-height:1.3;font-weight:600;margin:34px 0 10px}
article ul,article ol{margin:0 0 22px;padding-left:22px}
article li{margin:9px 0}
/* Маркер в цвет акцента — единственное место, где список отличим от
   стандартного браузерного списка. Дешёвая деталь, которая метит
   бренд там, где взгляд и так уже смотрит (на начало строки). */
article ul>li::marker{color:var(--accent)}
article strong{font-weight:600}

/* ── Врезка «Коротко»: сухой вывод статьи одним взглядом, для тех, кто
      скроллит быстро. Бейдж НАЛЕЗАЕТ на верхний край блока — это и есть
      «форма» страницы: не абстрактная декорация, а функциональная деталь
      (метка типа контента), которая при этом даёт вёрстке фактуру.
      Не дублирует .lead: lead — прямой ответ на запрос (для сниппета и
      ИИ-цитаты), tldr — вывод по всей статье целиком (для читателя). */
.tldr{position:relative;margin:8px 0 44px;padding:30px 28px 26px;
      background:var(--accent-soft);border-radius:10px}
.tldr__tag{position:absolute;top:-14px;left:26px;background:var(--accent);color:#fff;
           font-family:"IBM Plex Sans",sans-serif;font-size:12px;font-weight:600;
           letter-spacing:.08em;text-transform:uppercase;padding:7px 15px;
           border-radius:5px}
.tldr p{margin:10px 0 0;font-size:17.5px;line-height:1.6;color:var(--ink-2)}
.tldr p:first-of-type{margin-top:8px}

/* Настоящая таблица, а не div-карточки: список, свёрстанный див-ами,
   красив и невидим — ни ИИ-движки, ни скор цитируемости не находят в нём
   структуры. Линуем только по горизонтали: сетка из рамок утяжеляет. */
.tbl{margin:0 0 26px;overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:16px;line-height:1.45}
th,td{text-align:left;vertical-align:top;padding:12px 16px 12px 0;
      border-bottom:1px solid var(--rule)}
th{font-family:"IBM Plex Sans",sans-serif;font-size:13px;font-weight:600;color:var(--muted);
   letter-spacing:.05em;text-transform:uppercase;border-bottom:1px solid var(--rule-strong);
   padding-bottom:9px}
td:first-child{font-weight:600;white-space:nowrap}
td.num{font-variant-numeric:tabular-nums;color:var(--accent);font-weight:600;white-space:nowrap}

/* Врезка: самый цитируемый тезис раздела. Обычная цитата, не картинка
   и не div — иначе текст перестаёт быть текстом для машины. */
blockquote{margin:32px 0;padding:0;border:0}
blockquote::before{content:"";display:block;width:44px;height:2px;background:var(--clay);
                   margin-bottom:16px}
blockquote p{margin:0;font-size:23px;line-height:1.42;letter-spacing:-.01em;color:var(--ink)}

figure{margin:32px 0}
figure svg,figure img{width:100%;height:auto;display:block}
figure img{border-radius:6px}
figcaption{font-family:"IBM Plex Sans",sans-serif;font-size:14px;color:var(--muted);
           margin-top:12px;line-height:1.5}

/* ── Форма внутри статьи ───────────────────────────────────────────── */
.cta{margin:42px 0;padding:26px 28px;background:var(--accent-soft);border-radius:10px}
.cta__title{font-size:21px;font-weight:700;line-height:1.3;margin-bottom:6px}
.cta__sub{color:var(--ink-2);font-size:17px;margin-bottom:18px;max-width:46ch}
.cta form{display:flex;flex-wrap:wrap;gap:10px;font-family:"IBM Plex Sans",sans-serif}
.cta label.f{flex:1 1 190px;display:block}
.cta label.f span{display:block;font-size:13px;color:var(--muted);margin-bottom:5px}
.cta input[type=text],.cta input[type=tel]{width:100%;padding:12px 13px;background:#fff;
     border:1px solid var(--rule-strong);border-radius:6px;font:inherit;font-size:16px;
     color:var(--ink)}
.cta input::placeholder{color:#9aa09a}
.cta button{align-self:flex-end;padding:13px 26px;border:0;border-radius:6px;
            background:var(--accent);color:#fff;font:inherit;font-size:16px;font-weight:600;
            cursor:pointer}
.cta button:hover{filter:brightness(.92)}
.consent{flex:1 1 100%;font-family:"IBM Plex Sans",sans-serif;font-size:13.5px;
         color:var(--muted);display:flex;gap:9px;align-items:flex-start;line-height:1.45;
         margin-top:2px}
.consent input{margin-top:3px;flex:0 0 auto}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* ── FAQ ───────────────────────────────────────────────────────────── */
/* ПРАВИЛО: атрибут open стоит только у ПЕРВОГО <details> в разметке — так
   читатель видит сразу, что блок сворачивается, а не листает пять открытых
   ответов подряд. Остальные — без open (см. article.template.html: там это
   написано кодом, двумя итерациями цикла, а не только этим комментарием). */
.faq details{border-bottom:1px solid var(--rule);padding:16px 0}
.faq details:first-of-type{border-top:1px solid var(--rule)}
.faq summary{cursor:pointer;font-size:18px;font-weight:600;line-height:1.4;
             list-style:none;display:flex;gap:12px;align-items:baseline}
.faq summary::-webkit-details-marker{display:none}
.faq summary::before{content:"+";color:var(--accent);font-weight:600;flex:0 0 auto}
.faq details[open] summary::before{content:"–"}
.faq p{margin:12px 0 2px 24px;color:var(--ink-2);font-size:17.5px}

/* ── Источники ─────────────────────────────────────────────────────── */
.sources{list-style:none;padding:0;margin:0;font-size:16.5px}
.sources li{padding-left:18px;position:relative;margin:0 0 12px;line-height:1.5}
.sources li::before{content:"";position:absolute;left:0;top:.66em;width:8px;height:2px;
                    background:var(--clay)}
.sources .who{color:var(--muted);font-size:15px}

/* ── Об авторе: не карточка, а раздел, отбитый линией. ─────────────── */
.authorbox{display:flex;gap:22px;margin:56px 0 0;padding:26px 0 0;
           border-top:1px solid var(--rule-strong)}
.authorbox .ava{width:76px;height:76px;flex:0 0 76px;font-size:23px;border-radius:8px}
.authorbox p{margin:8px 0 12px;font-size:17px;color:var(--ink-2)}

/* ── Похожие статьи ────────────────────────────────────────────────
   Карточки с обложками, а не список ссылок: текстовый перечень в конце
   статьи взглядом пролистывают, и перелинковка остаётся в разметке, но не
   в поведении читателя.

   Колонки заданы ЧИСЛОМ, а не auto-fit: при двух карточках auto-fit
   растягивает их на всю ширину, и блок выглядит поломанным.

   ПРАВИЛО: число колонок завязано на класс-модификатор .related--N (N —
   related.length, 1/2/3), который ставит шаблонизатор рядом с .related, —
   не на голый брейкпоинт «до 640 — одна, дальше — две, дальше — три». Без
   этого фиксированная сетка «2 колонки на планшете» при N=3 карточках даёт
   сиротку в отдельном ряду — ровно баг ironex.tech (грид 2×2 на 3 карточки
   с закрашенной подложкой; `docs/Аудит-статьи-ironex_2026-09-08.md` §2 п.2,
   правило B1 будущего article-check). На < 640px всегда 1 колонка (B5) —
   это правило от N не зависит и стоит первой строкой ниже. */
.related{display:grid;grid-template-columns:1fr;gap:18px;margin:0}
/* 1 карточка — широкая, во всю ширину колонки текста, а не сетка из одного
   элемента (там нечего выравнивать по столбцам). */
.related--1{grid-template-columns:1fr}
@media (min-width:640px){
  .related--2,.related--3{grid-template-columns:repeat(2,1fr)}
}
@media (min-width:1000px){
  .related--3{grid-template-columns:repeat(3,1fr)}
}
/* Хвост на планшете: 3 карточки в 2 колонках = последняя одна в третьем ряду.
   Тянем её на всю ширину ряда — приём fillLastRow с Петровки
   (~/Projects/petrovka-beauty/src/components/ui/Cards.tsx: fillLastRow(n, cols)),
   а не оставляем рядом с ней пустую/закрашенную ячейку. */
@media (min-width:640px) and (max-width:999px){
  .related--3 .rel-card:last-child{grid-column:1 / -1}
}

/* Карточка — тоже <article>, поэтому снимаем с неё меру чтения: правило
   article{max-width:--measure} выше писано для текста статьи, а не для карточки
   в сетке. Без этой строки правка --measure тихо ломает ряд. */
.rel-card{display:flex;flex-direction:column;max-width:none;background:#fff;
          border:1px solid var(--rule);border-radius:8px;overflow:hidden}
.rel-card:hover{border-color:var(--rule-strong)}
/* Место под картинку зарезервировано пропорцией: без неё карточка
   подпрыгивает на загрузке обложки — это CLS ровно там, где читатель
   решает, идти ли дальше. */
.rel-card__thumb{display:block;aspect-ratio:16/9;background:var(--accent-soft)}
.rel-card__thumb img{width:100%;height:100%;object-fit:cover;display:block}
.rel-card__body{display:flex;flex-direction:column;gap:6px;padding:13px 14px 15px;flex:1}
/* Глина метит рубрику — то же правило, что у .kind в шапке статьи. */
.rel-card__cat{color:var(--clay);font-size:11.5px;font-weight:600;
               letter-spacing:.08em;text-transform:uppercase}
/* Обрезка в три строки: без неё карточки в ряду разной высоты и ряд рвётся. */
.rel-card__title{color:var(--ink);text-decoration:none;font-size:16.5px;
                 line-height:1.34;font-weight:600;
                 display:-webkit-box;-webkit-box-orient:vertical;
                 -webkit-line-clamp:3;line-clamp:3;overflow:hidden}
.rel-card__title:hover{color:var(--accent)}

/* ── Закрывающий баннер. Статья заканчивается не только «Читайте также» —
   у читателя, который дошёл до конца, ещё раз спрашиваем прямо. Тёмная
   заливка на всю ширину экрана отделяет его от чтения — явно закрывающий
   блок страницы, а не ещё один абзац.
   ОПЦИОНАЛЬНО, но по умолчанию — да: без него длинная статья кончается
   тупиком именно там, где интерес читателя ещё высокий.
   ⚠️ Разметка стоит ВНЕ .wrap, прямым потомком body — не переносите внутрь
   <article>/.col-main. Внутри них «100vw» отсчитывается от их узкой
   ширины (мера чтения 68ch), а не от экрана, и баннер обрезает и уводит
   влево. Полная ширина здесь получается без вычислений именно потому,
   что родитель уже сам во всю ширину body. */
.cta-band{margin:64px 0 0;width:100%;
          background:var(--ink);padding:52px 24px}
.cta-band__inner{max-width:var(--maxw);margin:0 auto;display:flex;flex-wrap:wrap;
                  gap:22px 32px;align-items:center;justify-content:space-between}
.cta-band__title{color:#fff;font-size:clamp(22px,2.6vw,27px);font-weight:700;
                  line-height:1.3;max-width:32ch}
.cta-band__sub{color:#b7bcb2;font-size:16px;line-height:1.5;margin-top:6px;max-width:44ch}
.cta-band__btn{flex:0 0 auto;display:inline-block;background:var(--accent);color:#fff;
               font-family:"IBM Plex Sans",sans-serif;font-size:16px;font-weight:600;
               text-decoration:none;padding:15px 28px;border-radius:6px;white-space:nowrap}
.cta-band__btn:hover{filter:brightness(1.12)}

@media (max-width:560px){
  body{font-size:18px}
  .wrap{padding:0 18px}
  .cta{padding:22px 20px}
  .cta button{width:100%}
  .authorbox{gap:16px}
  .authorbox .ava{width:56px;height:56px;flex:0 0 56px;font-size:18px}
  .cta-band{padding:38px 20px}
  .cta-band__btn{width:100%;text-align:center}
}

/* Движение только там, где оно что-то сообщает, и с уважением к настройке ОС. */
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}

/* Чек-лист из фабрики (`- [ ]` в markdown). md_to_html / static_html и стартер
   рендерят его как ul.checklist БЕЗ <input>: ни один шаблон чекбокс не рисует, а
   голые «[ ]» в тексте — брак (аудит ironex 2026-09-08, правила F1/F2). Маркер —
   галочка цветом акцента, вид как у обычного списка. */
article .checklist { list-style: none; padding-left: 0; }
article .checklist li { position: relative; padding-left: 1.6em; }
article .checklist li::before { content: "✓"; position: absolute; left: 0; color: var(--accent); font-weight: 600; }
article .checklist li.is-done { opacity: .7; }

/* ── Фирменный слой Sokolov Laser ────────────────────────────────────────
   Дефолт завода — тёмно-зелёный #1d5b49, к бренду отношения не имеет.
   Палитра блога (из :root боевой страницы): лазерный циан #0b95c8 на
   почти чёрном #05161c. Переопределяем токены здесь, а не правим эталон
   пакета, — так обновление завода правку не затрёт.

   ВАЖНО: шапка и подвал сайта тоже написаны через var(--accent), поэтому
   один этот блок красит и статью, и обвязку в один цвет.                  */
:root{
  --accent:#0b95c8;
  --accent-2:#1cafe3;
  --accent-soft:#eff8fc;
  --clay:#0b95c8;              /* рубрика и маркер источников — тем же цианом */
  --ink:#05161c;
  --ink-2:#33454b;
  --muted:#66757a;
  --faint:#9ba2a4;
  --paper:#ffffff;
  --rule:#e4eaec;
  --rule-strong:#cfd8db;
  --soft:#f4f7f8;
}

/* Обложка статьи: широкий кадр без рамки и тени — фотография сама держит
   первый экран. Пропорция зашита, чтобы страница не прыгала при загрузке. */
.hero-figure{margin:26px 0 34px}
.hero-figure img{
  display:block; width:100%; height:auto; aspect-ratio:16/9;
  object-fit:cover; border-radius:2px; background:var(--soft);
}
.hero-figure figcaption{
  margin-top:9px; font-family:"IBM Plex Sans",system-ui,sans-serif;
  font-size:13px; color:var(--faint);
}

/* Коммерческий блок: белая карточка с цианoвой левой гранью вместо сплошной
   заливки — на светлой странице это заметно, но не кричит. Кнопка чёрная,
   как на главной сайта: там она проверена и узнаётся.                     */
.cta.ui{
  background:var(--paper); border:1px solid var(--rule);
  border-left:3px solid var(--accent); border-radius:2px;
  padding:22px 24px;
}
.cta__title{font-size:19px; line-height:1.3; letter-spacing:-.01em}
.cta__sub{color:var(--muted); margin-top:6px; max-width:52ch}
.cta__btn{
  margin-top:16px; background:var(--ink); color:#fff; border-radius:8px;
  padding:13px 26px; font-size:15px; font-weight:600;
}
.cta__btn:hover{background:var(--accent)}
/* кнопка — не ссылка в тексте: подчёркивание тут лишнее */
.cta__btn,.cta-band__btn{text-decoration:none}
.cta__btn:hover,.cta-band__btn:hover{text-decoration:none}

/* Финальная полоса — та же логика: чёрный фон бренда, циановая кнопка.    */
.cta-band{background:var(--ink); border-radius:2px}
.cta-band__btn{background:var(--accent); color:#fff; border-radius:8px}
.cta-band__btn:hover{background:var(--accent-2)}

/* Источники: у пустого поля rel оставался висячий знак «—».               */
.sources .sho:empty,.sho:empty{display:none}

/* Карточки «Читайте также»: ровная сетка, картинка не растягивается.      */
.related img,.related-block img{aspect-ratio:16/9; object-fit:cover; width:100%; height:auto}

/* Все разделители одним тоном: карточка автора выбивалась более тёмной
   линией (article-check D2 — «разделители одного стиля»). */
.authorbox{border-top-color:var(--rule)}

/* ── Якоря под липкую шапку ──────────────────────────────────────────────
   .shapka висит сверху (position:sticky, высота 78px, на узких 66px).
   Браузер прокручивает заголовок ровно под неё, и первая строка раздела
   уезжает под шапку — по оглавлению попадаешь на середину абзаца.
   scroll-margin-top отодвигает точку остановки. Замечание владельца
   09.09.2026: «нажимаю „Как лазер удаляет пигмент“ — вижу текст ниже». */
h2[id],h3[id],#cta,#author,#smezhnye,.hero-figure{scroll-margin-top:94px}
@media(max-width:980px){
  h2[id],h3[id],#cta,#author,#smezhnye,.hero-figure{scroll-margin-top:82px}
}
html{scroll-behavior:smooth}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* ── Финальный блок перед подвалом ──────────────────────────────────────
   Было: полоса во всю ширину, залитая тем же цианом, что и подвал. Две
   одинаковые плашки подряд с белой щелью между ними читались как одно
   пятно с дыркой (замечание владельца 09.09.2026, скриншот).

   Стало: светлая карточка в ширину контента — как на остальных 367 статьях
   (там серая с чёрной кнопкой). Синим остаётся ТОЛЬКО подвал, и он один
   закрывает страницу. Ритм: белый текст → светлая карточка → синий подвал.
   Телефон виден сразу: часть людей звонит, а не заполняет форму.            */
.cta-band{margin:40px 0 0; width:100%; background:none; padding:0 24px}
.cta-band__inner{
  max-width:var(--maxw); margin:0 auto; padding:30px 34px;
  background:var(--accent-soft); border:1px solid #cfe6f2;
  border-left:3px solid var(--accent); border-radius:2px;
  display:flex; flex-wrap:wrap; gap:20px 32px;
  align-items:center; justify-content:space-between;
}
.cta-band__title{
  color:var(--ink); font-family:Literata,Georgia,serif;
  font-size:clamp(20px,2.2vw,25px); font-weight:600; line-height:1.28; max-width:30ch;
}
.cta-band__sub{color:var(--muted); font-size:16px; line-height:1.55; margin-top:7px; max-width:46ch}
.cta-band__sub a[href^="tel:"]{color:var(--ink); font-weight:600; text-decoration:none;
  border-bottom:1px solid var(--rule-strong)}
.cta-band__sub a[href^="tel:"]:hover{color:var(--accent); border-bottom-color:var(--accent)}
.cta-band__btn{
  flex:0 0 auto; background:var(--accent); color:#fff; border-radius:8px;
  padding:15px 28px; font-size:16px; font-weight:600; text-decoration:none;
}
.cta-band__btn:hover{background:var(--accent-2); color:#fff}

/* Медицинский дисклеймер: на остальных статьях он есть, в шаблоне завода —
   нет. Для клиники это не украшение, а обязательная оговорка. */
.discl{
  max-width:var(--maxw); margin:14px auto 0; padding:0 24px;
  font-family:"IBM Plex Sans",system-ui,sans-serif;
  font-size:13.5px; line-height:1.5; color:var(--faint);
}

/* Подвал вплотную к карточке — белая щель между двумя блоками была
   половиной проблемы. */
.podval{margin-top:56px}

/* Имя автора в подписи — ссылка на его страницу, но без синевы и
   подчёркивания: это подпись, а не ссылка в тексте. */
.byline__name a{color:inherit; text-decoration:none}
.byline__name a:hover{color:var(--accent)}

/* ══ Телефон ═════════════════════════════════════════════════════════════
   Замер 09.09.2026 на 390px: до первого абзаца текста 1828px — три с
   половиной экрана прокрутки, и вся страница шире вьюпорта на 233px.
   Большинство читателей приходит с телефона, поэтому это не косметика.   */

/* 1. Таблица — главный виновник горизонтальной прокрутки. Была 715px
      шириной внутри <article> без обёртки, и «гуляла» вся страница.
      Прокручиваем ЕЁ, а не документ. Обёртку ставит dorabotka.py. */
.tabl{overflow-x:auto; -webkit-overflow-scrolling:touch; margin:22px 0;
      border:1px solid var(--rule); border-radius:2px}
.tabl table{margin:0; border:0; min-width:520px}
.tabl::-webkit-scrollbar{height:6px}
.tabl::-webkit-scrollbar-thumb{background:var(--rule-strong); border-radius:3px}
.tabl-hint{display:none}

@media(max-width:980px){
  /* 2. Хлебные крошки: полное название статьи занимало две строки и
        повторяло H1, который идёт следом. Оставляем путь. */
  .crumbs__cur{display:none}
  .crumbs{white-space:nowrap; overflow:hidden; text-overflow:ellipsis; padding-bottom:2px}

  /* 3. Заголовок: 32px при 390px ширины — четыре строки в пол-экрана. */
  h1{font-size:clamp(25px,7.2vw,31px); line-height:1.16; letter-spacing:-.015em}

  /* 4. Подпись автора занимала 240px: три строки регалий в столбик.
        На телефоне оставляем имя, фото и дату — регалии видны на десктопе
        и в микроразметке, читателю с телефона важнее добраться до текста. */
  .creds{display:none}
  .byline{gap:12px; align-items:center}
  .byline .ava img{width:44px; height:44px}
  .byline__meta{font-size:13.5px; line-height:1.45}

  /* 5. Содержание было раскрыто и занимало 420px до обложки.
        Сворачиваем (атрибут open снимает скрипт), оформляем как кнопку. */
  .toc{border:1px solid var(--rule); border-left:3px solid var(--accent);
       border-radius:2px; padding:0; margin:18px 0}
  .toc summary{padding:13px 16px; font-weight:600; cursor:pointer; list-style:none}
  .toc summary::-webkit-details-marker{display:none}
  .toc summary::after{content:"+"; float:right; color:var(--accent); font-weight:700}
  .toc[open] summary::after{content:"–"}
  .toc[open] summary{border-bottom:1px solid var(--rule)}
  .toc ol{padding:12px 16px 14px 32px; margin:0}

  /* 6. Финальная карточка: кнопка на всю ширину — большая цель для пальца. */
  .cta-band{padding:0 16px}
  .cta-band__inner{padding:22px 18px}
  .cta-band__btn,.cta__btn{display:block; width:100%; text-align:center}
  .cta.ui{padding:18px 16px}
}

@media(max-width:560px){
  /* Подвал: три колонки на телефоне превращались в мелкую кашу. */
  .podval .in{grid-template-columns:1fr; gap:22px}
  .podval{padding:34px 0 30px}
}

/* ── Телефон: шапка и заголовок ──────────────────────────────────────────
   Замер 09.09.2026 на 390px с эмуляцией: «Задать вопрос» переносился на две
   строки и растягивал шапку почти на треть экрана, а H1 в 31px занимал семь
   строк. Владелец: «шапка слишком огромная», «заголовок огромный».         */
@media(max-width:640px){
  /* Ссылка дублируется пунктом в бургер-меню, в шапке она лишняя. */
  .shapka .szap{display:none}
  .shapka .in{height:58px; gap:10px; padding:0 16px}
  .logo b{font-size:15px; letter-spacing:.07em}

  h1{font-size:clamp(23px,6.3vw,27px); line-height:1.18; margin-bottom:14px}

  /* Хвостовая стрелка после «Блог» вела в никуда — текущая страница скрыта. */
  .crumbs{font-size:13px}
  .crumbs__cur{display:none}

  .wrap{padding:0 16px}
  .hero-figure{margin:18px 0 22px}
  article{font-size:17px}
}


/* ── Таблица на телефоне: карточки вместо сетки ──────────────────────────
   Прокрутка вбок перелив убрала, но читать не помогла: в окно влезала одна
   колонка, строки вырастали на пол-экрана, и было непонятно, что это таблица.
   Разбираем строку в карточку: «Подпись колонки» мелким сверху, значение под
   ней. Подписи проставляет dorabotka.py в data-th. На десктопе — без изменений. */
@media(max-width:700px){
  .tabl{overflow:visible; border:0; border-radius:0}
  .tabl table,.tabl tbody,.tabl tr,.tabl td{display:block; width:auto}
  .tabl table{min-width:0}
  .tabl thead{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0)}
  .tabl tr{
    border:1px solid var(--rule); border-left:3px solid var(--accent);
    border-radius:2px; padding:14px 16px; margin-bottom:12px; background:var(--paper);
  }
  .tabl td{border:0; padding:0 0 11px}
  .tabl td:last-child{padding-bottom:0}
  .tabl td::before{
    content:attr(data-th); display:block; margin-bottom:3px;
    font-family:"IBM Plex Sans",system-ui,sans-serif;
    font-size:11.5px; letter-spacing:.08em; text-transform:uppercase;
    color:var(--faint); font-weight:600;
  }
  /* Первая ячейка — название реакции, она и есть заголовок карточки. */
  .tabl td:first-child{font-weight:600; font-size:17px; padding-bottom:12px}
  .tabl td:first-child::before{display:none}
}

/* Длинные слова через слэш («Размытие контура/неравномерное осветление»)
   не переносятся и распирают карточку: min-content ячейки был 415px при
   экране 390. Разрешаем перенос внутри слова — в таблицах и вообще в тексте. */
.tabl td,.tabl th{overflow-wrap:anywhere; word-break:normal}
article,h1,h2,h3,.cta-band__title,.rel-card__title{overflow-wrap:break-word}

/* Эталон пакета держит ячейки в одну строку (white-space:nowrap) — разумно
   для узких числовых таблиц на десктопе, но в карточках на телефоне именно
   это распирало страницу на 60px, а не длинные слова, как показалось сперва. */
@media(max-width:700px){
  .tabl td,.tabl th{white-space:normal}
}

/* ══ Форма заявки в статье ═══════════════════════════════════════════════
   Повторяет всплывающую форму с главной: белая карточка со скруглением,
   серые поля-пилюли, синяя кнопка #1cafe3 во всю ширину, согласие снизу.
   Заявка уходит в тот же приёмник Tilda — человек со статьи не уходит.    */
.zayavka{margin:48px 0 0; padding:0 24px}
.zayavka__card,.zayavka__gotovo{
  max-width:640px; margin:0 auto; background:var(--paper);
  border:1px solid var(--rule); border-radius:24px;
  padding:40px 44px 30px; text-align:center;
  box-shadow:0 1px 2px rgba(5,22,28,.04), 0 12px 34px rgba(5,22,28,.06);
}
.zayavka__title{
  font-family:Literata,Georgia,serif; font-weight:700;
  font-size:clamp(25px,3vw,33px); line-height:1.18; letter-spacing:-.02em;
  color:var(--ink); margin:0 0 10px;
}
.zayavka__sub{
  font-family:"IBM Plex Sans",system-ui,sans-serif; font-size:16.5px;
  line-height:1.45; color:var(--muted); margin:0 auto 24px; max-width:36ch;
}
.zayavka__pole{display:block; position:relative; margin-bottom:12px}
.zayavka__pole input{
  width:100%; border:1px solid transparent; background:var(--soft);
  border-radius:999px; padding:17px 24px; font:inherit; font-size:17px;
  color:var(--ink); appearance:none;
}
.zayavka__pole input::placeholder{color:#9aa5a9}
.zayavka__pole input:focus{outline:none; border-color:var(--accent-2); background:#fff}
.zayavka__pole--tel .zayavka__kod{
  position:absolute; left:24px; top:50%; transform:translateY(-50%);
  font-size:17px; color:var(--ink); pointer-events:none;
}
.zayavka__pole--tel input{padding-left:56px}
.zayavka__skrytoe{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0)}
.zayavka__hp{position:absolute; left:-9999px; width:1px; height:1px; opacity:0}
.zayavka__knopka{
  width:100%; margin-top:8px; border:0; border-radius:999px;
  background:var(--accent-2); color:#fff; font-family:inherit;
  font-size:18px; font-weight:600; padding:18px 24px; cursor:pointer;
}
.zayavka__knopka:hover{background:var(--accent)}
.zayavka__knopka:disabled{opacity:.65; cursor:default}
.zayavka__soglasie{
  display:flex; gap:10px; align-items:flex-start; text-align:left;
  margin-top:16px; font-family:"IBM Plex Sans",system-ui,sans-serif;
  font-size:13.5px; line-height:1.4; color:var(--muted);
}
.zayavka__soglasie input{flex:0 0 auto; width:18px; height:18px; margin-top:1px; accent-color:var(--accent)}
.zayavka__soglasie a{color:var(--muted); text-decoration:underline}
.zayavka__oshibka{
  margin:14px 0 0; font-family:"IBM Plex Sans",system-ui,sans-serif;
  font-size:14px; color:#a8321f;
}
.zayavka__gotovo .zayavka__sub{margin-bottom:0}
.zayavka__gotovo a{color:var(--accent); font-weight:600}

@media(max-width:640px){
  .zayavka{margin:36px 0 0; padding:0 16px}
  .zayavka__card,.zayavka__gotovo{padding:28px 20px 22px; border-radius:20px}
  .zayavka__pole input{padding:16px 20px; font-size:16px}
  .zayavka__pole--tel input{padding-left:52px}
  .zayavka__pole--tel .zayavka__kod{left:20px}
}
