/* 1123 (вход AT, v2 — 1130): блок «Последние публикации» (.r57-video-shelf, template-parts/journal-social.php) на главной, страницах услуг и в журнале.
 * Три правки: размытая копия обложки вместо серых полей бокса; контейнер секции на главной/услугах по сетке соседей (--content-max);
 * ровная кромка ряда — зоны карточки на одних линиях, заголовок и анонс не длиннее 3 строк.
 * Файл отдаётся напрямую: enqueue из journal-social.php при выводе блока (как journal-covers.css, 1084) — печатается после dist-бандлов;
 * селекторы намеренно выше специфичности правил frontend-r56/r57 и editorial-refine (.r56-video-rail … = 0,2,0), чтобы порядок печати не решал.
 * v2 (замечания root по 1123): плашка EN «Original in Russian» (site-language, первый ребёнок карточки) получает свою первую строку сетки —
 * без явного места grid клал её под ссылку «Read article»; на ≤ 700 px слот заголовка auto (в кадре одна карточка, пустые строки заметнее ровных линий);
 * теги — не выше двух рядов (max-height), чтобы самая длинная карточка не тянула ряд и зазор «теги → ссылка» у коротких был меньше. */

/* 2. Контейнер. .r56-width = min(1280px, 100% − 80px); соседи главной и страниц услуг стоят в --content-max (1200): на 1440 — 120…1320,
 *    на 1200 и 390 поля совпадают и так (40/20). Журнал (/zhizn-gtyres/) остаётся на своей сетке .r56-width — там соседи в ней же. */
/* v2: правило `.r56-home-social > .r56-width { max-width: var(--content-max) }` снято — ширины контейнеров ведёт вход AV (1129); при 1200 лента «На связи» обрезалась справа. */

/* 1. Бокс обложки: под кадром (contain) — та же обложка второй <img> (aria-hidden, тот же URL → одна загрузка), растянута cover на 150 %
 *    бокса и размыта; запас 25 % по краям прячет светлую кромку размытия под overflow:hidden. Поверх размытия — лёгкое затемнение
 *    (::after, --gt-black при .16), кадр лежит выше него и остаётся ясным. Без filter (@supports) слой убирается, остаётся ровный --gt-paper. */
.r57-video-shelf .r56-video-rail .gt-journal-card__visual { position: relative; overflow: hidden; isolation: isolate; background: var(--gt-paper, #f4f4f4); }
.r57-video-shelf .r56-video-rail .gt-journal-card__visual.is-video { background: var(--gt-paper, #f4f4f4); }
.r57-video-shelf .r56-video-rail .gt-journal-card__ambient { display: block; position: absolute; inset: -25%; width: 150%; height: 150%; max-width: none; max-height: none; object-fit: cover; object-position: center;
  filter: blur(20px); opacity: 1; z-index: 0; pointer-events: none; }
.r57-video-shelf .r56-video-rail .gt-journal-card__visual::after { content: ""; position: absolute; inset: 0; z-index: 1; background: var(--gt-black, #111); opacity: .16; pointer-events: none; }
.r57-video-shelf .r56-video-rail .gt-journal-card__image { position: relative; z-index: 2; } /* кадр — contain из r56 (:77), у заглушек cover из life-journal — не трогается */
.r57-video-shelf .r56-video-rail .gt-journal-card__play, .r57-video-shelf .r56-video-rail .gt-cover-plaque { z-index: 3; }
/* Пресс-кадры (1084: подложка paper + multiply) и заглушки без фото (cover) — без размытия и затемнения. */
.r57-video-shelf .r56-video-rail .gt-journal-card__visual:is(.is-press, .is-illustration) .gt-journal-card__ambient,
.r57-video-shelf .r56-video-rail .gt-journal-card__visual:is(.is-press, .is-illustration)::after { display: none; }
@supports not (filter: blur(1px)) {
  .r57-video-shelf .r56-video-rail .gt-journal-card__ambient, .r57-video-shelf .r56-video-rail .gt-journal-card__visual::after { display: none; }
}

/* 3. Ровная кромка ряда. Карточка — сетка из четырёх зон: обложка / рубрика+дата / заголовок / теги.
 *    Слот заголовка — ровно 3 строки (min-height по --h3-leading), теги начинаются сразу под ним с 12 px и прижаты
 *    к верху своей зоны. Высота ряда равна и в сетке (r57), и в ручной карусели (flex, stretch).
 *    Строка 1 — плашка EN «Original in Russian» (на RU пустая строка auto = 0).
 *    1136 (решение root 21.09): анонса, метки «ВИДЕО» и строки «Читать материал / Смотреть видео» в полке больше нет —
 *    их не печатает journal-card.php при compact. Поэтому ушли и прежние строки 5 и 7: карточка без тегов просто
 *    заканчивается заголовком, отдельный пустой ряд под кнопку (замеренные 141 px) не резервируется. */
.r57-video-shelf .r56-video-rail { align-items: stretch; }
/* 1137 (замечание root 21.09): слот заголовка и обрезка считались по `--h3-leading` (токен 1.3),
 *    а сам текст набирался с интервалом 1.5 — три настоящие строки требуют 3 × 1.5 × 1em, и третья
 *    обрезалась наполовину (замер на 1280: min-height 58,5, max-height 59,5 при 3 × 22,5 = 67,5).
 *    Ниже интервал слота назван отдельной переменной и используется всеми тремя числами сразу:
 *    строкой текста, высотой слота и потолком обрезки. Запас 1 px есть у обоих, иначе карточка
 *    с тремя строками оказывалась на 1 px выше соседей и ряд тегов ехал. Размер шрифта и сам
 *    интервал 1.5 не меняются. Ту же переменную читает мобильное правило layout-bb.css. */
.r57-video-shelf .r56-video-rail .gt-journal-card { display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: auto auto auto auto minmax(0, 1fr); align-content: stretch; --shelf-title-leading: 1.5; }
.r57-video-shelf .r56-video-rail .gt-journal-card > .gtyres-original-language { grid-row: 1; margin: 0 0 8px; }
.r57-video-shelf .r56-video-rail .gt-journal-card > .gt-journal-card__visual { grid-row: 2; }
.r57-video-shelf .r56-video-rail .gt-journal-card > .gt-journal-card__meta { grid-row: 3; display: flex; flex-wrap: nowrap; align-items: baseline; justify-content: space-between; gap: 8px; min-width: 0; }
.r57-video-shelf .r56-video-rail .gt-journal-card > .gt-journal-card__meta > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.r57-video-shelf .r56-video-rail .gt-journal-card > .gt-journal-card__meta > time { flex: none; }
.r57-video-shelf .r56-video-rail .gt-journal-card > h3 { grid-row: 4; line-height: var(--shelf-title-leading, 1.5); min-height: calc(3 * var(--shelf-title-leading, 1.5) * 1em + 1px); margin-bottom: 0; }
.r57-video-shelf .r56-video-rail .gt-journal-card > h3 a { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; line-height: inherit; max-height: calc(3 * var(--shelf-title-leading, 1.5) * 1em + 1px); }
.r57-video-shelf .r56-video-rail .gt-journal-card > .gt-journal-tags { grid-row: 5; align-self: start; margin: 12px 0 0; max-height: calc(2 * 26px + 6px); overflow: hidden; }
@media (max-width: 700px) { .r57-video-shelf .r56-video-rail .gt-journal-card > h3 { min-height: 0; } .r57-video-shelf .r56-video-rail .gt-journal-card > .gt-journal-tags { max-height: calc(2 * 28px + 6px); } }

/* 4. Расстояние от полки до следующего блока (решение root 21.09: ориентир 96 px на
 *    десктопе и 56–64 на телефоне, распределённые между соседями, а не 96+96+43).
 *    Замер до правки на главной: нижние 64 px секции полки плюс верхние 96 px соседней
 *    = 160 px по содержимому на 1440 и 40+64 = 104 на 390 (W3 мерил 203 и 147 вместе с
 *    собственным отступом заголовка соседа). Ниже — 40+56 = 96 и 24+40 = 64.
 *    Порог 600 px тот же, что у общего правила .gtyres-section, иначе между 601 и 700
 *    складывались бы значения из разных систем. */
.r56-home-social { padding-bottom: 40px; }
.r56-home-social + section { padding-top: 56px; }
@media (max-width: 600px) {
  .r56-home-social { padding-bottom: 24px; }
  .r56-home-social + section { padding-top: 40px; }
}
