/* softbook-blog-css-patch 2026-09-15 START */
/* ==========================================================================
   Softblog 2.0 · вертикальный ритм контента статьи · v1 · 15.09.2026
   Область: только тело записи (body.single-post .details-body).
   Главная блога, листинги, карточки, оглавление .sb2-toc и FAQ .sb2-faq
   лежат вне .details-body и не затрагиваются.
   Базовый кегль темы 16px / 24px, все значения в rem.
   Шкала: 0.5 · 0.75 · 1 · 1.5 · 2 · 2.5 · 3.5 rem = 8 · 12 · 16 · 24 · 32 · 40 · 56 px
   ========================================================================== */

/* 1. Абзац. Тема даёт одновременно padding-bottom 24px (main.css) и
      margin-bottom 20px (custom.css) — padding не схлопывается, отсюда 44px
      под каждым абзацем и «висящая» вводная строка списка. Оставляем один отступ. */
body.single-post .details-body p {
  padding-bottom: 0;
  margin-top: 0;
  margin-bottom: 1.5rem;
}
body.single-post .details-body > p:last-child { margin-bottom: 0; }

/* 2. Заголовки: сверху заметно больше, чем снизу, — заголовок принадлежит
      следующему тексту. */
body.single-post .details-body h2:not(:first-child) { margin-top: 3.5rem; }
body.single-post .details-body h2 { margin-bottom: 1rem; }
body.single-post .details-body h3:not(:first-child) { margin-top: 2.5rem; }
body.single-post .details-body h3 { margin-bottom: 0.75rem; }
body.single-post .details-body :is(h2, h3) + h3:not(:first-child) { margin-top: 1.5rem; }

/* 3. Списки. Вводная строка («Студентам:», «Пройдите путь по порядку:»)
      отделена от предыдущего текста больше обычного и прижата к своему списку.
      После списка — отступ как после блока. */
body.single-post .details-body :is(ul, ol) {
  margin-top: 0;
  margin-bottom: 2rem;
}
body.single-post .details-body p:has(+ :is(ul, ol)) {
  margin-top: 2rem;
  margin-bottom: 0.75rem;
}
body.single-post .details-body :is(ul, ol) > li + li { margin-top: 0.5rem; }
body.single-post .details-body :where(ul, ol) > li:not(:last-child) { margin-block-end: 0; }
body.single-post .details-body li :is(ul, ol) { margin-top: 0.5rem; margin-bottom: 0; }

/* 4. Блоки: таблицы, изображения, фигуры, цитаты — одинаковое «поле» 2.5rem
      сверху и снизу, текст к ним больше не прилипает. */
body.single-post .details-body :is(
  figure, .wp-block-image, .wp-block-table, .softbook-table-scroll,
  .softbook-app-figure, .wp-caption, blockquote, .wp-block-quote
),
body.single-post .details-body > table {
  margin-top: 2.5rem;
  margin-bottom: 2.5rem;
}
/* картинка внутри фигуры не добавляет свой margin-top 40px из темы */
body.single-post .details-body :is(figure, .wp-caption, .wp-block-image) img { margin-top: 0; }
/* сразу после заголовка блок встаёт ближе */
body.single-post .details-body :is(h2, h3) + :is(
  figure, .wp-block-image, .wp-block-table, .softbook-table-scroll,
  .softbook-app-figure, .wp-caption, blockquote, .wp-block-quote, table
) { margin-top: 1rem; }
/* после заголовка вводная строка списка не получает лишний верх */
body.single-post .details-body :is(h2, h3) + p { margin-top: 0; }

/* старые статьи (классический редактор): картинка внутри абзаца
   ведёт себя как блок — то же поле 2.5rem, без собственного margin-top темы */
body.single-post .details-body p:has(> img:only-child) {
  margin-top: 2.5rem;
  margin-bottom: 2.5rem;
}
body.single-post .details-body p > img:only-child { margin-top: 0; }
body.single-post .details-body :is(h2, h3) + p:has(> img:only-child) { margin-top: 1rem; }

/* блок «Материалы по теме» в конце статьи: заголовок внутри обёртки
   первый ребёнок и не получает верхний отступ H2 — даём его обёртке */
body.single-post .details-body .softbook-related-links {
  margin-top: 3.5rem;
  margin-bottom: 2rem;
}
body.single-post .details-body .softbook-related-links > :last-child { margin-bottom: 0; }

/* цитата: сейчас тема её никак не выделяет — с полем блока она выглядела бы
   как «оторванный» абзац. Тонкая линия бренда слева отличает её от текста. */
body.single-post .details-body blockquote {
  padding-left: 1.25rem;
  border-left: 2px solid #7367f0;
}
body.single-post .details-body blockquote > p:last-child { margin-bottom: 0; }
/* цитату обычно вводит строка текста — сверху обычный шаг абзаца, снизу поле блока */
body.single-post .details-body p + :is(blockquote, .wp-block-quote) { margin-top: 1.5rem; }

/* 5. Подпись к изображению — вариант A (рекомендован):
      обычное начертание, на ступень мельче, приглушённый цвет, отступ от фото. */
body.single-post .details-body :is(figcaption, .wp-caption-text, .wp-element-caption) {
  margin-top: 0.75rem;
  font-size: 0.875rem;
  line-height: 1.5;
  font-weight: 400;
  font-style: normal;
  color: rgb(26 26 28 / 0.62);
  text-align: left;
}

/* 6. Ссылки в тексте статьи (CEO 15.09: «ссылки надо выделить»).
      Текст ссылки — тёмный фиолетовый бренда #392DA8: 9.1:1 к фону страницы
      #F4F5F8 (AA). Основной #7367F0 текстом не берём: 3.9:1, ниже AA,
      поэтому он живёт в подчёркивании. Подчёркивание обязательно: цвет ссылки
      к серому тексту статьи всего 2:1, одним цветом ссылку не отличить.
      Кнопки, ссылки-картинки и всё вне .details-body (оглавление, FAQ,
      карточки, навигация) не затрагиваются. */
body.single-post .details-body :is(p, li, td, th, figcaption, blockquote)
  a:not(.wp-element-button):not(.wp-block-button__link):not(:has(img)) {
  color: #392da8;
  text-decoration-line: underline;
  text-decoration-color: rgb(115 103 240 / 0.55);
  text-decoration-thickness: 1px;
  text-underline-offset: 0.2em;
  transition: text-decoration-color .15s ease, text-decoration-thickness .15s ease;
}
body.single-post .details-body :is(p, li, td, th, figcaption, blockquote)
  a:not(.wp-element-button):not(.wp-block-button__link):not(:has(img)):visited {
  color: #392da8;
}
body.single-post .details-body :is(p, li, td, th, figcaption, blockquote)
  a:not(.wp-element-button):not(.wp-block-button__link):not(:has(img)):hover {
  color: #392da8;
  text-decoration-color: #7367f0;
  text-decoration-thickness: 2px;
}
body.single-post .details-body :is(p, li, td, th, figcaption, blockquote)
  a:not(.wp-element-button):not(.wp-block-button__link):not(:has(img)):focus-visible {
  outline: 2px solid #7367f0;
  outline-offset: 2px;
  border-radius: 2px;
}

/* 7. Мобильная версия: шкала на ступень плотнее. */
@media (max-width: 47.99rem) {
  body.single-post .details-body h2:not(:first-child) { margin-top: 2.5rem; }
  body.single-post .details-body h3:not(:first-child) { margin-top: 2rem; }
  body.single-post .details-body :is(
    figure, .wp-block-image, .wp-block-table, .softbook-table-scroll,
    .softbook-app-figure, .wp-caption, blockquote, .wp-block-quote
  ),
  body.single-post .details-body > table {
    margin-top: 2rem;
    margin-bottom: 2rem;
  }
  body.single-post .details-body p:has(+ :is(ul, ol)) { margin-top: 1.5rem; }
  body.single-post .details-body p:has(> img:only-child) { margin-top: 2rem; margin-bottom: 2rem; }
  body.single-post .details-body .softbook-related-links { margin-top: 2.5rem; }
  body.single-post .details-body :is(h2, h3) + p { margin-top: 0; }
  body.single-post .details-body :is(h2, h3) + p:has(> img:only-child) { margin-top: 1rem; }
}

/* --------------------------------------------------------------------------
   Вариант B подписи (альтернатива, не включён): тонкая линия бренда слева.
   Чтобы включить — заменить блок 5 на этот.

body.single-post .details-body :is(figcaption, .wp-caption-text, .wp-element-caption) {
  margin-top: 0.75rem;
  padding-left: 0.75rem;
  border-left: 2px solid #7367f0;
  font-size: 0.875rem;
  line-height: 1.5;
  font-weight: 400;
  font-style: normal;
  color: rgb(26 26 28 / 0.62);
  text-align: left;
}
-------------------------------------------------------------------------- */

/* ==========================================================================
   8. ЦВЕТ ТЕКСТА — добавлено 15.09.2026 по решению CEO (через CMO)
   8.1 Абзацы: тема даёт #1A1A1C на 60 % = #717274, 4.42:1 к фону #F4F5F8 —
       ниже AA. Ставим 66 % = #646467, 5.41:1. Подпись (блок 5) остаётся
       62 % = 4.73:1 — на ступень тише текста.
   8.2 Пункты списков: тема оставляет у li чёрный #000, рядом с серыми
       абзацами списки выглядят жирнее. Цвет li = цвет абзаца.
       Маркеры (::marker, фиолетовые) и ссылки (блок 6) не меняются.
   ========================================================================== */
body.single-post .details-body :is(p, li, blockquote) {
  color: rgb(26 26 28 / 0.66);
}
/* softbook-blog-css-patch 2026-09-15 END */
