/* BestDPO — мост между разметкой блочного редактора и вёрсткой прототипа.
   Здесь только то, что нужно, чтобы блоки ядра давали ту же коробочную модель,
   что и рукописный HTML. Никаких новых цветов, радиусов и теней — см. brand/STYLE.md. */

/* --- Кнопки -----------------------------------------------------------------
   Ядро оборачивает ссылку в <div class="wp-block-button">. В прототипе кнопка —
   сама ссылка, прямой потомок .btn-row. display:contents убирает обёртку из
   раскладки, и flex-контейнер снова видит ссылку напрямую. */
.wp-block-buttons > .wp-block-button{display:contents}

/* Здесь раньше стоял защитный «.wp-block-buttons{margin:0}». Он оказался вреден:
   специфичность (0,1,0) совпадает с «.section__cta{margin-top:48px}», а этот файл грузится
   позже — и вертикальный отступ перед CTA секции пропадал (−48px на каждой такой секции).
   Отступы обёртки задают компонентные классы .btn-row / .section__cta, сброс не нужен. */

/* Сброс собственных отступов ядра у ссылки-кнопки: значения приходят из .btn. */
.wp-block-button__link{text-decoration:none}

/* --- Группы ------------------------------------------------------------------
   Здесь стоял «страховочный» сброс «.container > .wp-block-group{margin-block-start:0}».
   Он оказался вреден: специфичность (0,2,0) перебивала возврат отступов из margin-fix.css,
   и компоненты вроде .case теряли свои 64px. Отступы между блоками задаёт blockGap:0
   в theme.json — дополнительный сброс не нужен. Это уже третий случай, когда защитное
   правило «на всякий случай» ломало вёрстку; в этот файл попадает только то,
   что чинит воспроизведённую проблему. */

/* --- Списки ------------------------------------------------------------------
   Ядро вешает .wp-block-list; базовое ul{margin:0;padding:0;list-style:none} из
   bestdpo.css уже применяется, но core-стили списка приходят позже — уравниваем. */
.footer .wp-block-list{margin:0;padding:0;list-style:none}

/* --- Стрелка в кнопке ---------------------------------------------------------
   В прототипе стрелка — инлайновый <svg> внутри <a>. Ядро не даёт вложить SVG
   в core/button, поэтому тот же path подключается маской в ::after: начертание
   идентично, а кнопка остаётся обычным редактируемым блоком.
   Включается стилем блока «Ghost»/«Primary» через класс .is-style-arrow. */
.is-style-arrow .wp-block-button__link::after,
a.wp-block-read-more.is-style-arrow::after,
.btn--arrow::after{
  content:"";
  width:18px;height:18px;flex:none;
  background:currentColor;
  -webkit-mask:url("../icons/arrow-right.svg") no-repeat center/contain;
          mask:url("../icons/arrow-right.svg") no-repeat center/contain;
  transition:transform .2s var(--ease);
}
.is-style-arrow .wp-block-button__link:hover::after,
a.wp-block-read-more.is-style-arrow:hover::after,
.btn--arrow:hover::after{transform:translateX(3px)}

/* Ядро растягивает ссылку-кнопку по обеим осям:
     .wp-block-buttons .wp-block-button__link{width:100%}
     .wp-block-button__link{height:100%}
   Ширина ломала выравнивание ряда по правому краю (.btn-row justify-content:flex-end),
   а высота проявлялась только на узких экранах: при переносе ряда в две строки
   height:100% давал кнопке высоту всего ряда (108px вместо 48px).
   В прототипе кнопка всегда по размеру содержимого при min-height:48px. */
.wp-block-buttons.btn-row .wp-block-button__link{width:auto}
.wp-block-buttons .wp-block-button__link{height:auto}

/* --- Видимость шапки на узких экранах ------------------------------------------
   Ядро печатает «body .is-layout-flex{display:flex}» со специфичностью (0,1,1),
   и она перебивает «.header__cta{display:none}» (0,1,0) — кнопка не скрывалась
   на мобильном и выдавливала бургер за правый край (scrollWidth 412 при 390).
   Повторяем правила прототипа с той же специфичностью, что у ядра.
   Брейкпоинт 1140px — как в bestdpo.css. */
body .header__cta{display:none}
@media(min-width:1140px){
  body .header__cta{display:inline-flex}
}

/* --- Навигация ----------------------------------------------------------------
   core/navigation отдаёт ссылку как <a class="wp-block-navigation-item__content">
   с display:block, из-за чего подпись прижимается к верху 44-пиксельной строки
   вместо вертикального центра (в прототипе .nav a — inline-flex с align-items:center).
   Возвращаем поведение прототипа; ядро ставит своё правило с (0,1,0), наш файл идёт позже. */
.nav .wp-block-navigation-item__content{
  display:inline-flex;align-items:center;
}
/* «gap:inherit» здесь стоял ошибочно: селектор (0,2,0) перебивал «.nav ul{gap:4px}» (0,1,1),
   и меню теряло 20px (5 промежутков по 4px). Отступ задаёт .nav ul — не мешаем ему. */
.nav .wp-block-navigation-item{display:list-item}

/* --- Eyebrow как абзац ---------------------------------------------------------
   В прототипе eyebrow — <span>, блок core/paragraph даёт <p>. Из-за этого он
   попадает под контейнерные правила вида «.cta-final p» (специфичность 0,1,1),
   которые перебивают «.eyebrow» (0,1,0): размер становился 20px вместо 12.48px.
   Возвращаем свойства eyebrow селектором той же специфичности, значения — из токенов.
   Отклонение span -> p зафиксировано в wp/docs/allowed-dom-deltas.md. */
p:is(.eyebrow,.is-style-eyebrow){
  font-size:var(--fs-eyebrow);
  line-height:1.6;
  max-width:none;
  margin-top:0;
}

/* --- Одиночная ссылка внутри карточки ------------------------------------------
   В прототипе ghost-ссылка в карточке (.facts__group, .path, .founder) — прямой потомок
   карточки и участвует в её grid-раскладке. Ядро оборачивает кнопку в .wp-block-buttons,
   и обёртка не только становится лишним элементом сетки, но и ловит правила вида
   «.hero .btn-row{margin-top:8px}», добавляя по 8px на карточку.
   display:contents убирает обёртку из раскладки, оставляя её редактируемым блоком. */
.wp-block-buttons.btn-bare{display:contents}

/* --- Списки с блочным содержимым ------------------------------------------------
   <li>, внутри которых есть заголовки или абзацы, невозможно выразить через
   core/list-item, поэтому конвертер делает из них группы (см. html2blocks.py, block_list).
   Собственные классы <li> сохраняются, но правила, написанные на «X li», нужно расширить. */


/* Страховка: в этом дизайне кнопка никогда не занимает всю ширину строки.
   Правило ядра «.wp-block-buttons .wp-block-button__link{width:100%}» подхватывалось
   и там, где обёртка получила класс .btn-bare, а не .btn-row. */
.wp-block-buttons .wp-block-button__link{width:auto}

/* Здесь стояло ручное правило для «.section-head:last-child». Его заменил генератор
   wp/tools/gen-margin-fix.py: он переносит все вертикальные отступы с префиксом body,
   сохраняя исходный порядок правил. Ручное правило ломало секции с «.section-head--solo»,
   где отступ намеренно обнулён. */

/* core/navigation задаёт своему списку flex-wrap:wrap. В прототипе шапка не переносится:
   всё в ней nowrap. Дефект проявлялся только от 1400px, где появляется подпись
   «Privacy & AI Governance School» рядом с логотипом и отбирает место у меню, —
   пункты «About» и «Insights» уходили на вторую строку, шапка росла с 65 до 89px. */
.nav .wp-block-navigation__container,
.nav .wp-block-navigation{flex-wrap:nowrap}

/* В прототипе сброшен только <ul> (bestdpo.css: ul{margin:0;padding:0}), а <ol> сохраняет
   браузерные отступы 1em. Списки с блочным содержимым конвертер превращает в <div>,
   и этот отступ пропадает — на странице буткемпа это давало −17px. Возвращаем явно,
   чтобы вёрстка совпадала с утверждённым макетом. */
.journey,
.stages,
.weeks{margin-block:1em}

/* --- Метаданные статьи в архиве ------------------------------------------------
   В прототипе это один абзац «AI Governance · 17 February 2026». В шаблоне архива
   рубрика и дата — отдельные блоки ядра (иначе они не были бы динамическими),
   поэтому разделителю нужны отступы: иначе текст слипается в «GOVERNANCE·17».
   Значение 0.4em повторяет ширину пробела в моноширинном начертании. */
.insight__meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 .4em}
.insight__meta > *{margin:0}

/* ===== Список записей на /insights/ (core/query + core/post-template) =====
   Пока запись была одна, различия не проявлялись. С тремя стали видны:
   ядро отдаёт <ul> с маркерами и без вертикального ритма, а заголовок и
   рубрику оборачивает в <a> с подчёркиванием. Приводим к виду .programmes. */
.latest .wp-block-post-template{display:grid;gap:24px}
.wp-block-post-template{list-style:none;margin:0;padding:0}
.wp-block-post-template>li{margin:0;display:grid}
.insight .wp-block-post-title{font-size:var(--fs-700);font-weight:600;line-height:1.25;text-wrap:pretty}
.insight .wp-block-post-title a,
.insight__meta a{color:inherit;text-decoration:none}
.insight .wp-block-post-title a:hover,
.insight__meta a:hover{text-decoration:underline}

/* ===== Блок «Recent Posts» под статьёй =====
   Карточка .path — сетка, и её правила (.path p{flex:1}, отступы) рассчитаны на
   прямых детей. core/post-excerpt оборачивает текст в лишний <div>, поэтому
   обёртка растворяется, как это уже сделано для .btn-bare. */
.path .wp-block-post-excerpt{display:contents}
/* Заголовок карточки — ссылка; в прототипе это был обычный h3. */
.path .wp-block-post-title a{color:inherit;text-decoration:none}
.path .wp-block-post-title a:hover{text-decoration:underline}
