/* ==========================================================================
   БиоПокров® Гель — content.css (13.10.2026): статьи (/stati/, /<слаг>/, R-198) и страницы-документы
   (/instrukcziya-po-primeneniyu.html, /politika-konfidenczialnosti.html, /cookies.html; R-200 = R-94 В «с оглавлением»,
   R-150, R-173) поверх styles.css главной. Из styles.css берутся токены ноты, шрифт, шапка, подвал (R-106, R-181),
   cookie-плашка (R-144, R-148), кнопка-пилюля, строки витрин .buy-row (R-98, R-102) и FAQ (.faq, R-116, R-180).
   Здесь — только своё. Имена классов проверены grep по styles.css (R-63): .crumbs*, .art*, .abuy*, .acard*, .arts*,
   .cov*, .doc* там не заняты. Mobile-first: база 360–375, расширения 640 / 768 / 1024 / 1280. Движения нет — только
   :hover / :focus-visible и transition на них (моушн-инженер подключится отдельно).
   Собирается вместе со страницами: python3 runs/gel/build_content.py (шапка, подвал, плашка и строки витрин — из index.html).
   ========================================================================== */

/* ---------- 0. Токены статьи (DESIGN §3: h1 ≥ 1,3 × h2 ≥ 1,4 × текст на каждой ширине) ---------- */
:root {
  --art-h1: 30px;          /* 30 / 40 / 44 — h1 статьи до 60 знаков: 3 строки на 375 */
  --art-h2: 23px;          /* 23 / 26 / 28 — заголовок раздела внутри текста */
  --art-lead: 17px;        /* 17 / 18 / 19 — лид, 500 ink-muted (подзаголовок DESIGN §3) */
  --art-gap: 32px;         /* между разделами текста: 32 / 40 */
  --art-top-gap: 24px;     /* h1 + лид → обложка: 24 / 32 */
}

/* ---------- 1. Верх страницы: размыв ноты под шапкой, как у первого экрана главной (DESIGN §4 «Размывы») ---------- */
.art, .arts { background: linear-gradient(180deg, var(--sage-soft) 0, var(--canvas) 400px); }

/* ---------- 2. Хлебные крошки «Главная → Статьи → …» -------------------------------------------- */
.crumbs { padding-top: calc(var(--header-h) + 4px); }
.crumbs__list { display: flex; align-items: center; min-width: 0; font: 500 14px / 1.3 var(--font); color: var(--ink-muted); }
.crumbs__item { display: flex; flex: none; align-items: center; min-width: 0; }
.crumbs__item:last-child { flex: 0 1 auto; }
.crumbs__link {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  color: var(--accent-deep);
  text-decoration: none;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}
.crumbs__link:hover { color: var(--accent-hover); text-decoration-line: underline; }
.crumbs__sep {
  flex: none;
  width: 16px;
  height: 16px;
  margin: 0 6px;
  fill: none;
  stroke: var(--ink-muted);
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  opacity: 0.6;
  transform: rotate(-90deg);
}
.crumbs__current { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }

/* ---------- 3. Кадр картинки: обложка 16:9 и её временная заливка в ноте ---------------------------
   Пока у фотографа нет файла, сборщик ставит под картинку жёлтую заглушку .cov__ph (видна, если файл не загрузился:
   скрипт внизу страницы ставит .is-missing и прячет битую картинку). Есть файл — заглушки в разметке нет. */
.cov { position: relative; overflow: hidden; aspect-ratio: 16 / 9; border-radius: var(--radius-card); background: var(--sage-soft); }
.cov img { position: relative; z-index: 1; display: block; width: 100%; height: 100%; object-fit: cover; object-position: 50% 50%; }
.cov.is-missing img { visibility: hidden; }
.cov__ph { position: absolute; left: 12px; bottom: 12px; z-index: 0; max-width: calc(100% - 24px); }

/* ---------- 4. Статья: колонка чтения; от 1024 справа липкая карточка «Коротко» ---------------------- */
.art__grid { display: grid; grid-template-columns: minmax(0, 1fr); row-gap: var(--section-gap); padding-top: 8px; }
.art__top { display: grid; gap: var(--art-top-gap); }
.art__head { display: grid; gap: var(--h1-gap); justify-items: start; }
.art__title {
  font: 600 var(--art-h1) / 1.15 var(--font);
  letter-spacing: -0.02em;
  color: var(--ink);
  text-wrap: balance;
}
.art__lead { max-width: 60ch; font: 500 var(--art-lead) / 1.5 var(--font); color: var(--ink-muted); }

.art__body { display: grid; gap: var(--art-gap); align-content: start; }
.art__sec { display: grid; gap: 12px; align-content: start; }   /* h2 → текст 12, абзац → абзац 12 (DESIGN §3) */
.art__h2 {
  font: 600 var(--art-h2) / 1.25 var(--font);
  letter-spacing: -0.01em;
  color: var(--ink);
  text-wrap: balance;
}
.art__sec p { font-size: var(--text-size); line-height: 1.6; color: var(--ink); }
.art__list { display: grid; gap: 8px; max-width: 66ch; font-size: var(--text-size); line-height: 1.6; color: var(--ink); }
.art__list li, .art-short__list li { position: relative; padding-left: 24px; }
/* маркер — круг 8 accent по центру первой строки (линейных маркеров и «точек статуса» нет) */
.art__list li::before, .art-short__list li::before {
  content: "";
  position: absolute;
  left: 4px;
  top: calc(0.8em - 4px);
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--accent);
}

/* отзыв покупателя внутри раздела (G-23, G-25: дословно, подпись «Имя · дата · отзыв на <витрина>») — панель цвета отзывов главной */
.art-quote { display: grid; gap: 8px; max-width: 66ch; padding: 16px 20px 18px; border-radius: var(--radius-faq); background: var(--folder); }
.art-quote__text p { font: 500 17px / 1.5 var(--font); color: var(--ink); }
.art-quote__by { font-size: 14px; line-height: 1.45; color: var(--ink-muted); }

/* «Коротко»: белая карточка; на телефоне — после разделов текста, от 1024 — справа и липнет к верху окна */
.art-short {
  display: grid;
  gap: 16px;
  align-content: start;
  padding: 20px 20px 24px;
  border-radius: var(--radius-card);
  background: var(--surface);
  box-shadow: var(--shadow);
}
.art-short__title { font: 600 20px / 1.3 var(--font); letter-spacing: -0.01em; color: var(--ink); }
.art-short__list { display: grid; gap: 12px; }
.art-short__list li { font-size: 16px; line-height: 1.5; color: var(--ink); }
.art-short__list li::before { top: calc(0.75em - 4px); }

/* Вопросы и ответы — компонент главной (.faq: телефон — карточки, от 1024 — «полоса вопросов» R-180), первый открыт (R-116) */
.art-faq, .art-more { display: grid; gap: var(--head-gap); align-content: start; }
.art-faq .faq-item__a p { max-width: 66ch; }

/* «Ещё статьи» — строки в одной белой панели, как список витрин: миниатюра 16:9 + тема + стрелка; ссылка — вся строка */
.art-more__list { overflow: hidden; border-radius: var(--radius-card); background: var(--surface); box-shadow: var(--shadow); }
.art-more__item + .art-more__item { border-top: 1px solid var(--line); }
.art-more__link {
  display: grid;
  grid-template-columns: 104px minmax(0, 1fr) 18px;
  align-items: center;
  gap: 16px;
  min-height: 88px;
  padding: 12px 16px 12px 12px;
  color: var(--ink);
  text-decoration: none;
  transition: background-color var(--duration-fast) var(--ease-standard);
}
.art-more__link:hover { background: var(--canvas); }
.art-more__link:focus-visible { outline-offset: -4px; border-radius: var(--radius-card); }
.art-more__thumb { border-radius: var(--radius-field); }
/* тема ссылки — дословно из articles.json links[].anchor; заглавная первая буква — только оформлением */
.art-more__text {
  display: block;
  font: 600 17px / 1.35 var(--font);
  text-wrap: pretty;
  transition: color var(--duration-fast) var(--ease-standard);
}
.art-more__text::first-letter { text-transform: uppercase; }
.art-more__link:hover .art-more__text { color: var(--accent-deep); }
.art-more__ind {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: var(--ink-muted);
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  opacity: 0.6;
  transform: rotate(-90deg);
  transition: transform var(--duration-fast) var(--ease-standard), opacity var(--duration-fast) var(--ease-standard);
}
.art-more__link:hover .art-more__ind { opacity: 1; transform: rotate(-90deg) translateY(2px); }

/* ---------- 5. Блок покупки в статье (R-198 п. 4): карточка в ноте с тюбиком, строки витрин главной компактно ----------
   Строки .buy__list/.buy-row — разметка #buy главной (ссылки и метки G-34, порядок G-33), цены ставит скрипт цен главной
   (site_price, «₽*», «дешевле», «Нет в наличии» — G-72, G-29, G-30); сноска G-72 дословно. Кнопка «Где купить» → /#buy.
   Раскладка зависит от ширины колонки текста (контейнерный запрос), а не окна: на 1024 колонка уже из-за «Коротко».
   Узкая (< 560): фото 1:1 слева от текста, ниже строки витрин, сноска, кнопка во всю ширину.
   Широкая (≥ 560): фото слева от текста и кнопки, строки витрин во всю ширину карточки, «дешевле» — слева от цены, как в
   таблице главной (R-174). Фото — hero-gel.jpg (кадр первого экрана целиком, 1182 px: × 3 к 112 и × 2 к 168, G-41). */
.art__body { container: abody / inline-size; }
.abuy {
  display: grid;
  grid-template-columns: 112px minmax(0, 1fr);
  grid-template-areas: "photo text" "shop shop" "cta cta";
  align-items: center;
  gap: 16px;
  padding: 12px 12px 16px;
  border-radius: var(--radius-card);
  background: var(--sage-soft);
}
.abuy__photo { grid-area: photo; display: block; width: 100%; height: auto; border-radius: var(--radius-field); background: var(--folder); }
.abuy__copy { display: contents; }
.abuy__text { grid-area: text; font: 600 17px / 1.4 var(--font); color: var(--ink); text-wrap: pretty; }
.abuy__cta { grid-area: cta; width: 100%; }
.abuy__shop { grid-area: shop; display: grid; gap: 8px; }
.abuy .buy__list { overflow: hidden; border-radius: var(--radius-photo); background: var(--surface); }
/* «Яндекс Маркет» целиком и на 360: поля строки 12 / 10, промежутки 10 (имя 121 px, колонка цены 71) */
.abuy .buy-row { grid-template-columns: 32px minmax(0, 1fr) auto 16px; column-gap: 10px; min-height: 64px; padding: 8px 10px 8px 12px; }
.abuy .buy-row__logo { width: 32px; height: 32px; border-radius: 9px; }
.abuy .buy-row__name { font-size: 16px; }
.abuy .buy-row__sum { font-size: 17px; }
.abuy .buy-row__price { gap: 2px; }
.abuy .buy-row__tag { padding: 3px 7px; }
.abuy .buy-row__ind { width: 16px; height: 16px; }
.abuy .buy__pricenote { max-width: none; padding-inline: 4px; }

@container abody (min-width: 560px) {
  .abuy {
    grid-template-columns: 168px minmax(0, 1fr);
    grid-template-areas: "photo copy" "shop shop";
    column-gap: 28px;
    row-gap: 20px;
    padding: 20px 20px 24px;
    border-radius: var(--radius-panel);
  }
  .abuy__photo { border-radius: var(--radius-photo); }
  .abuy__copy { grid-area: copy; display: grid; gap: 20px; justify-items: start; align-content: center; }
  .abuy__text { grid-area: auto; font-size: 20px; line-height: 1.35; }
  .abuy__cta { grid-area: auto; width: auto; }
  .abuy .buy__list { border-radius: var(--radius-faq); }
  .abuy .buy-row { grid-template-columns: 32px minmax(0, 1fr) auto 18px; column-gap: 12px; padding: 8px 16px; }
  .abuy .buy-row__ind { width: 18px; height: 18px; }
  .abuy .buy-row__price { display: flex; flex-direction: row-reverse; align-items: center; gap: 12px; }
  .abuy .buy__pricenote { padding-inline: 4px; }
}

/* ---------- 6. Список статей /stati/: сетка карточек (обложка 800×450, заголовок, лид); ссылка — вся карточка (R-159) ---------- */
.arts__inner { display: grid; gap: 24px; padding-top: 8px; }
.arts__grid { display: grid; gap: 16px; }
.acard {
  position: relative;
  display: grid;
  grid-template-rows: auto auto 1fr;
  padding: 8px;
  border-radius: var(--radius-card);
  background: var(--surface);
  box-shadow: var(--shadow);
  transition: transform var(--duration-medium) var(--ease-standard), box-shadow var(--duration-medium) var(--ease-standard);
}
.acard__cov { border-radius: var(--radius-photo); }    /* 24 − 8 = 16: кадр концентричен карточке */
.acard__head { display: grid; grid-template-columns: minmax(0, 1fr) 44px; align-items: start; column-gap: 16px; padding: 16px 12px 0; }
.acard__title { font: 600 19px / 1.3 var(--font); letter-spacing: -0.01em; color: var(--ink); text-wrap: balance; transition: color var(--duration-fast) var(--ease-standard); }
.acard__link { color: inherit; text-decoration: none; }
.acard__link::after { content: ""; position: absolute; inset: 0; z-index: 2; border-radius: var(--radius-card); }
.acard__link:focus-visible { outline: none; }
.acard:has(.acard__link:focus-visible) { outline: 2px solid var(--accent-deep); outline-offset: 3px; }
.acard__btn {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: var(--radius-pill);
  background: var(--accent-deep);
  color: #fff;
  transition: background-color var(--duration-fast) var(--ease-standard);
}
.acard__btn svg { width: 20px; height: 20px; transition: transform var(--duration-medium) var(--ease-standard); }
.acard__lead { padding: 8px 12px 12px; font-size: 16px; line-height: 1.5; color: var(--ink-muted); }
@media (hover: hover) {
  .acard:hover { transform: translateY(-2px); box-shadow: var(--shadow-float); }
  .acard:hover .acard__title { color: var(--accent-deep); }
  .acard:hover .acard__btn { background: var(--accent-hover); }
  .acard:hover .acard__btn svg { transform: translateX(3px); }
}
.acard:active { transform: translateY(0) scale(0.99); }

/* ---------- 7. Страница-документ (R-94 В «с оглавлением», R-150, R-173; R-200 — Гель) — шаблон Дермы / Диафута на токенах Геля ---------- */
.doc { padding-top: calc(var(--header-h) + 4px); }   /* низ — отступ подвала (--section-gap), как у статей */
.doc-back { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; margin-bottom: 8px; font: 600 15px / 1 var(--font); color: var(--accent-deep); text-decoration: none; }
.doc-back:hover { color: var(--accent-hover); }
.doc-back svg { width: 18px; height: 18px; transform: rotate(180deg); fill: none; stroke: currentColor; stroke-width: 1.75; }
.doc-title { max-width: 22ch; margin-bottom: 20px; font: 600 28px / 1.18 var(--font); letter-spacing: -0.02em; color: var(--ink); text-wrap: balance; }
.doc-title.is-long { max-width: 34ch; font-size: 24px; line-height: 1.22; }
.doc-nav { position: sticky; top: 0; z-index: 5; margin: 0 calc(var(--gutter) * -1) 8px; padding: 6px var(--gutter); background: var(--canvas); }
.doc-nav[hidden] { display: none; }
.doc-toc { display: flex; gap: 8px; overflow-x: auto; margin: 0; padding: 4px 0; list-style: none; scrollbar-width: none; }
.doc-toc::-webkit-scrollbar { display: none; }
.doc-toc a {
  position: relative;
  display: block;
  white-space: nowrap;
  padding: 11px 14px;
  border-radius: var(--radius-pill);
  background: var(--surface);
  box-shadow: 0 2px 10px rgba(30, 50, 52, 0.08);
  font: 500 14px / 1 var(--font);
  color: var(--ink);
  text-decoration: none;
}
.doc-toc a.is-on { background: var(--accent-deep); color: #fff; }
.doc-toc a::before { content: ""; position: absolute; inset: -4px; }
.doc-body { font-size: 16px; line-height: 1.6; color: var(--ink-muted); overflow-wrap: break-word; }
.doc-body > * + * { margin-top: 12px; }
.doc-body h1, .doc-body h2, .doc-body h3, .doc-body h4, .doc-body .doc-h {
  margin-top: 28px;
  padding-top: 24px;
  border-top: 1px solid var(--line-accent);
  font: 600 20px / 1.3 var(--font);
  letter-spacing: -0.01em;
  color: var(--ink);
  text-wrap: balance;
  scroll-margin-top: 72px;
}
.doc-body h3, .doc-body h4 { font-size: 17px; }
.doc-body > :first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.doc-body .doc-h b, .doc-body .doc-h strong { font-weight: inherit; }
.doc-body b, .doc-body strong { color: var(--ink); font-weight: 600; }
.doc-body a { color: var(--accent-deep); text-decoration: underline; text-underline-offset: 2px; overflow-wrap: anywhere; }
.doc-body a:hover { color: var(--accent-hover); }
.doc-body ul, .doc-body ol { padding-left: 22px; }
.doc-body ul { list-style: disc; }
.doc-body ol { list-style: decimal; }
.doc-body li + li { margin-top: 6px; }
.doc-body li::marker { color: var(--accent); }
.doc-body img { max-width: 100%; height: auto; border-radius: var(--radius-photo); }
.doc-body hr { height: 1px; border: 0; background: var(--line-accent); }
.doc-table { overflow-x: auto; margin-inline: calc(var(--gutter) * -1); padding-inline: var(--gutter); overscroll-behavior-x: contain; }
.doc-body table { width: 100%; min-width: 520px; margin: 0; border-collapse: collapse; font-size: 14px; line-height: 1.45; color: var(--ink-muted); background: none; }
.doc-body th, .doc-body td { padding: 10px 12px; border: 1px solid rgba(30, 120, 131, 0.18); text-align: left; vertical-align: top; background: none; }
.doc-body th, .doc-body thead td { background: var(--sage-soft); color: var(--ink); font-weight: 600; }

/* подвал: текущий документ подсвечен (DESIGN §4 «Подвал», R-181 п. 3) */
.footer__docs [aria-current], .footer__list [aria-current] { color: var(--accent-deep); }

/* ==========================================================================
   Расширения
   ========================================================================== */

@media (min-width: 640px) {
  .arts__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  /* соседние карточки ряда делят строки сетки: заголовки и лиды начинаются на одной линии (DESIGN §5 «Ровные тексты») */
  @supports (grid-template-rows: subgrid) {
    .acard { grid-row: span 3; grid-template-rows: subgrid; row-gap: 0; }
  }
}

@media (min-width: 768px) {
  :root { --art-h1: 40px; --art-h2: 26px; --art-lead: 18px; --art-gap: 40px; --art-top-gap: 32px; }
  .art__title { line-height: 1.12; }
  .art__cover { border-radius: var(--radius-panel); }
  .crumbs { padding-top: calc(var(--header-h) + 8px); }

  .art-short { padding: 24px 24px 28px; }
  .art-more__link { grid-template-columns: 160px minmax(0, 1fr) 18px; gap: 20px; min-height: 114px; padding: 12px 20px 12px 12px; }
  .art-more__text { font-size: 18px; }

  .arts__inner { gap: 32px; }
  .acard__title { font-size: 20px; }

  .doc { padding-top: calc(var(--header-h) + 16px); }
  .doc-title { font-size: 40px; }
  .doc-title.is-long { font-size: 32px; line-height: 1.2; }
  .doc-body { font-size: 17px; }
}

@media (min-width: 1024px) {
  /* колонка чтения + липкая «Коротко» справа (на телефоне она после разделов, порядок разметки тот же) */
  .art__grid {
    grid-template-columns: minmax(0, 1fr) clamp(320px, 26vw, 340px);
    column-gap: clamp(40px, 5vw, 72px);
    padding-top: 12px;
  }
  .art__top, .art__body, .art-faq, .art-more { grid-column: 1; }
  .art-short { grid-column: 2; grid-row: 1 / span 4; align-self: start; position: sticky; top: 24px; }

  .arts__grid { gap: 24px; }
  .acard { padding: 10px; }
  .acard__cov { border-radius: 14px; }   /* 24 − 10 */
  .acard__head { padding: 20px 14px 0; }
  .acard__lead { padding: 8px 14px 14px; }

  .doc-grid { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: 56px; align-items: start; }
  .doc-grid.no-toc { grid-template-columns: minmax(0, 1fr); }
  .doc-grid.no-toc .doc-body { max-width: 880px; }
  .doc-nav { top: 24px; margin: 0; padding: 32px 0 0; background: none; }
  .doc-toc { flex-direction: column; overflow: visible; padding: 0; }
  .doc-toc a::before { content: none; }
  .doc-toc a { padding: 8px 0 8px 14px; border-left: 2px solid transparent; border-radius: 0; box-shadow: none; background: none; font-size: 15px; white-space: normal; line-height: 1.35; color: var(--ink-muted); }
  .doc-toc a:hover { color: var(--accent-deep); }
  .doc-toc a.is-on { background: none; color: var(--accent-deep); border-left-color: var(--accent-deep); }
  .doc-body { padding: 40px 48px; border-radius: var(--radius-panel); background: var(--surface); box-shadow: var(--shadow); }
  .doc-body h1, .doc-body h2, .doc-body h3, .doc-body h4, .doc-body .doc-h { scroll-margin-top: 24px; }
  .doc-table { margin-inline: 0; padding-inline: 0; }
}

@media (min-width: 1280px) {
  :root { --art-h1: 44px; --art-h2: 28px; --art-lead: 19px; }
  .art__title { line-height: 1.1; }
}

@media (prefers-reduced-motion: reduce) {
  .acard, .acard:hover { transform: none; }
}
