/* Витрина §8: «цифровой архив», токены поверх themes/*.css и site-layout.css */

:root {
  --hv-accent-line: rgba(96, 165, 250, 0.35);
  --hv-accent-line-strong: rgba(96, 165, 250, 0.55);
  /* Выпадающие подменю шапки: ~88% непрозрачности, чтобы контент под ними (белые заголовки) не мешал читать пункты */
  --hv-nav-submenu-bg: rgba(15, 23, 42, 0.88);
  --hv-rail-red: rgba(128, 0, 32, 0.65);
  /* Hover верхнего меню: бледно-красный в тон правому краю линии под брендом (.siteHeader__rail). */
  --hv-nav-root-hover-bg: color-mix(in oklab, var(--hv-nav-submenu-bg) 62%, var(--hv-rail-red) 38%);
  --hv-shadow-dropdown: 0 14px 40px rgba(0, 0, 0, 0.35);
  --hv-wrap-max: 1280px;
  --hv-wrap-pad-x: clamp(16px, 4vw, 28px);
  /* Обёртка контента в colMain: уже, чем шапка/подвал (см. .wrap) */
  --hv-colMain-wrap-pad-x: clamp(10px, 2.2vw, 14px);
  --hv-side-dot: rgba(148, 163, 184, 0.22);
  --hv-side-dot-size: 9px;
  --hv-side-gutter-pct: 18%;
  --hv-side-gutter-darken: rgba(2, 6, 23, 0.42);
  --hv-side-border-glow: rgba(91, 185, 255, 0.28);
  --hv-footer-border: var(--hv-accent-line);
}

/*
 * Не расширять document по горизонтали (ленты HG, шапка у гостей с переключателем темы, длинное меню).
 * На узком shell дублируется overflow-x: hidden в блоке html.hv-shell--narrow ниже.
 */
html {
  overflow-x: clip;
  max-width: 100%;
}

body {
  overflow-x: clip;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

#vitrine-site-root,
.vitrineSiteRoot {
  overflow-x: clip;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

/* Узкий контейнер читаемости: шапка/подвал с `header .wrap` сохраняют свои отступы (выше специфичность). */
.wrap {
  width: 100%;
  max-width: var(--hv-wrap-max);
  margin-left: auto;
  margin-right: auto;
  box-sizing: border-box;
  padding-left: var(--hv-wrap-pad-x);
  padding-right: var(--hv-wrap-pad-x);
}

.colMain > .wrap {
  padding-left: var(--hv-colMain-wrap-pad-x);
  padding-right: var(--hv-colMain-wrap-pad-x);
  max-width: 100%;
}

/* Нет крайних colSide (глобальные сайдбары выключены и страница не включила их): центр на всю ширину main, без узкого max-width .wrap.
   Исключение: вход/обслуживание (.mainAuthCenter) — там узкая карточка по центру.
   Горизонтальные паддинги не дублируем — уже есть у .colMain > .wrap (--hv-colMain-wrap-pad-x). */
main.siteMain[data-hv-outer-cols="none"]:not(.mainAuthCenter) .colMain > .wrap {
  max-width: none;
  margin-left: 0;
  margin-right: 0;
  /* padding-left: var(--hv-wrap-pad-x); */
  /* padding-right: var(--hv-wrap-pad-x); */
}

.siteMain {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

/* Полосы layout: above_all / below_all — вне <main>; under_header / before_footer — тоже вне <main> (shell). Без собственных верх/низ отступов — только лёгкие боковые; при пустом слоте обёртка не рендерится. */
.siteMain__strip {
  width: 100%;
  box-sizing: border-box;
  margin: 0;
  padding-top: 0;
  padding-bottom: 0;
  padding-left: var(--hv-wrap-pad-x);
  padding-right: var(--hv-wrap-pad-x);
}

/* layoutShell.regions[slot].bleed: true — без боковых отступов полосы; false — контент в .wrap внутри полосы */
.siteMain__strip--edgeBleed {
  padding-left: 0;
  padding-right: 0;
}
.siteMain__strip--containedBleed {
  padding-left: 0;
  padding-right: 0;
}
.siteMain__strip--containedBleed > .wrap {
  width: 100%;
  max-width: var(--hv-wrap-max);
  margin-left: auto;
  margin-right: auto;
  box-sizing: border-box;
}
.siteMain__strip--inColMain {
  min-width: 0;
}
.layoutShellAsideContain {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}
.colSide--bleedEdge {
  padding-left: 0;
  padding-right: 0;
}
.headerWidgets--containedInTopbar {
  min-width: 0;
  max-width: min(100%, 36rem);
}

.siteMain__bound {
  min-width: 0;
}

/* Сетка shell: крайние colSide у краёв вьюпорта; центр — colMain с .wrap внутри (не сужает max-width контента). */
.siteMain__bound--shellGrid {
  width: 100%;
  max-width: none;
  box-sizing: border-box;
}

/* Боковые поля вьюпорта: точки + лёгкое затемнение (реф. §8). Работает и при grid-full без colSide — «пустые» бока не плоские. */
@media (min-width: 981px) {
  main.siteMain {
    position: relative;
    isolation: isolate;
  }

  main.siteMain::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background-image: linear-gradient(
        90deg,
        var(--hv-side-gutter-darken) 0%,
        transparent var(--hv-side-gutter-pct),
        transparent calc(100% - var(--hv-side-gutter-pct)),
        var(--hv-side-gutter-darken) 100%
      ),
      radial-gradient(circle at center, var(--hv-side-dot) 0.45px, transparent 0.5px);
    background-size: auto, var(--hv-side-dot-size) var(--hv-side-dot-size);
    opacity: 0.85;
    mask-image: linear-gradient(
      90deg,
      black 0%,
      black var(--hv-side-gutter-pct),
      transparent var(--hv-side-gutter-pct),
      transparent calc(100% - var(--hv-side-gutter-pct)),
      black calc(100% - var(--hv-side-gutter-pct)),
      black 100%
    );
    -webkit-mask-image: linear-gradient(
      90deg,
      black 0%,
      black var(--hv-side-gutter-pct),
      transparent var(--hv-side-gutter-pct),
      transparent calc(100% - var(--hv-side-gutter-pct)),
      black calc(100% - var(--hv-side-gutter-pct)),
      black 100%
    );
  }

  main.siteMain > * {
    position: relative;
    z-index: 1;
  }
}

/* Глобальные сайдбары слотов layout: на мобильной витрине не показываем.
   Десктоп: колонки по настройкам / виджетам / layout (см. shell.ejs); узкие колонки у текста — colMainAside. */

/* Узкий shell по классу (shell-viewport.js + React): не только @media — иначе при широком layout viewport
   остаётся сетка 320px|1fr|320 и пустая левая дорожка под скрытый colSide. */
html.hv-shell--narrow {
  overflow-x: hidden;
  width: 100%;
  max-width: 100%;
}

html.hv-shell--narrow body {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: hidden;
  box-sizing: border-box;
}

html.hv-shell--narrow #vitrine-site-root,
html.hv-shell--narrow .vitrineSiteRoot {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

html.hv-shell--narrow main.siteMain,
html.hv-shell--narrow main.siteMain .siteMain__bound,
html.hv-shell--narrow main.siteMain .siteMain__bound--shellGrid,
html.hv-shell--narrow main.siteMain .grid {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

html.hv-shell--narrow main.siteMain .grid,
html.hv-shell--narrow main.siteMain .grid.grid-left-side,
html.hv-shell--narrow main.siteMain .grid.grid-right-side,
html.hv-shell--narrow main.siteMain .grid.grid-both-sides {
  grid-template-columns: 1fr !important;
}

html.hv-shell--narrow main.siteMain .colMain,
html.hv-shell--narrow main.siteMain[data-hv-shell-mobile="1"] .colMain,
html.hv-shell--narrow main.siteMain .grid > .colMain {
  grid-column: 1 / -1 !important;
  width: 100%;
  max-width: 100%;
  min-width: 0;
}

html.hv-shell--narrow main.siteMain .colMain > .wrap,
html.hv-shell--narrow main.siteMain[data-hv-shell-mobile="1"] .colMain > .wrap,
html.hv-shell--narrow main.siteMain[data-hv-outer-cols="both"] .colMain > .wrap,
html.hv-shell--narrow main.siteMain[data-hv-outer-cols="left"] .colMain > .wrap,
html.hv-shell--narrow main.siteMain[data-hv-outer-cols="right"] .colMain > .wrap {
  width: 100%;
  max-width: none;
  margin-left: 0;
  margin-right: 0;
}

html.hv-shell--narrow main.siteMain .colSide,
html.hv-shell--narrow main.siteMain[data-hv-shell-mobile="1"] .colSide {
  display: none !important;
  visibility: hidden !important;
  height: 0 !important;
  min-height: 0 !important;
  overflow: hidden !important;
  padding: 0 !important;
  margin: 0 !important;
  pointer-events: none !important;
}

/* Узкий shell: одна колонка на всю ширину вьюпорта (не «десктопная» сетка 320|1fr|320 в обрезанном body). */
@media (max-width: 980px) {
  main.siteMain,
  main.siteMain .siteMain__bound,
  main.siteMain .siteMain__bound--shellGrid,
  main.siteMain .grid {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
  }

  main.siteMain .grid {
    grid-template-columns: 1fr !important;
  }

  html.hv-shell--narrow {
    overflow-x: hidden;
    width: 100%;
    max-width: 100%;
  }

  html.hv-shell--narrow body {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow-x: hidden;
    box-sizing: border-box;
  }

  html.hv-shell--narrow #vitrine-site-root {
    width: 100%;
    max-width: 100%;
    min-width: 0;
  }

  main.siteMain .colMain,
  main.siteMain[data-hv-shell-mobile="1"] .colMain,
  main.siteMain .grid > .colMain {
    grid-column: 1 / -1 !important;
    width: 100%;
    max-width: 100%;
    min-width: 0;
  }

  main.siteMain .colMain > .wrap,
  main.siteMain[data-hv-shell-mobile="1"] .colMain > .wrap,
  main.siteMain[data-hv-outer-cols="both"] .colMain > .wrap,
  main.siteMain[data-hv-outer-cols="left"] .colMain > .wrap,
  main.siteMain[data-hv-outer-cols="right"] .colMain > .wrap {
    width: 100%;
    max-width: none;
    margin-left: 0;
    margin-right: 0;
  }

  main.siteMain .colSide,
  main.siteMain[data-hv-shell-mobile="1"] .colSide,
  html.hv-shell--narrow main.siteMain .colSide {
    display: none !important;
    visibility: hidden !important;
    height: 0 !important;
    min-height: 0 !important;
    overflow: hidden !important;
    padding: 0 !important;
    margin: 0 !important;
    pointer-events: none !important;
  }
}

/* Десктоп: крайние colSide — без тени/фона; декоративные уголки — псевдоэлементы ниже */
@media (min-width: 981px) {
  main.siteMain .colSide {
    position: relative;
    align-self: stretch;
    overflow: hidden;
    border-radius: 12px;
    box-sizing: border-box;
    padding-top: 20px;
  }

  main.siteMain .colSide--left::before,
  main.siteMain .colSide--left::after,
  main.siteMain .colSide--right::before,
  main.siteMain .colSide--right::after {
    content: "";
    position: absolute;
    width: 12px;
    height: 12px;
    border-color: var(--accent, #60a5fa);
    border-style: solid;
    opacity: 0.38;
    pointer-events: none;
    z-index: 0;
  }

  /* Левый сайдбар: уголки у внутреннего (правого) края — к центру страницы */
  main.siteMain .colSide--left::before {
    top: 8px;
    right: 8px;
    border-width: 1px 1px 0 0;
  }

  main.siteMain .colSide--left::after {
    bottom: 8px;
    right: 8px;
    border-width: 0 1px 1px 0;
  }

  /* Правый сайдбар: у внутреннего (левого) края */
  main.siteMain .colSide--right::before {
    top: 8px;
    left: 8px;
    border-width: 1px 0 0 1px;
  }

  main.siteMain .colSide--right::after {
    bottom: 8px;
    left: 8px;
    border-width: 0 0 1px 1px;
  }

  main.siteMain .colSide > * {
    position: relative;
    z-index: 1;
  }

  /* Светлая тема: те же уголки, но выше контраст (на тёмной 0.38 достаточно) */
  html[data-theme="light"] main.siteMain .colSide--left::before,
  html[data-theme="light"] main.siteMain .colSide--left::after,
  html[data-theme="light"] main.siteMain .colSide--right::before,
  html[data-theme="light"] main.siteMain .colSide--right::after {
    border-color: color-mix(in oklab, var(--accent, #2563eb) 88%, #1e3a8a);
    opacity: 0.72;
  }
}

/* --- Шапка: верхняя линия, бренд ---
   Не задавать position: relative на .siteHeader — перебивает `header { position: sticky }` в site-layout.css
   (специфичность класса выше тега), из-за чего контент оказывается под шапкой по z-index/прокрутке.
   Blur только здесь — не на теге header в site-layout.css (иначе затронет hgPlayers__header и др.). */

header.siteHeader {
  background: var(--header-bg, rgba(11, 15, 23, 0.85));
  backdrop-filter: blur(12px) saturate(180%);
}

.siteHeader__rail {
  height: 2px;
  background: linear-gradient(
    90deg,
    transparent 0%,
    var(--hv-rail-red) 35%,
    var(--accent, #60a5fa) 50%,
    var(--hv-rail-red) 65%,
    transparent 100%
  );
  opacity: 0.85;
}

.siteHeader__bar {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 12px 16px;
  justify-content: flex-start;
}

/* Бренд (реф. §8): без рамки/фона у названия; линия на всю ширину lockup; логотип поверх линии (z-index); название и слоган прижаты к линии (row-gap: 0). */
.siteHeader__brandLockup {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  grid-template-rows: auto auto auto;
  column-gap: 14px;
  row-gap: 0;
  align-items: stretch;
  /* Линия .siteHeader__nameRule должна тянуться под меню: растягиваем lockup на доступную ширину. */
  flex: 1 1 auto;
  min-width: 0;
  max-width: 100%;
  text-decoration: none;
  color: inherit;
}

.siteHeader__brandLockup:hover {
  text-decoration: none;
}

.siteHeader__brandLockup:focus-visible {
  outline: 2px solid var(--accent, #60a5fa);
  outline-offset: 3px;
  border-radius: 8px;
}

.siteHeader__brandLockup:not(:has(.siteHeader__logoWrap)) {
  grid-template-columns: minmax(0, 1fr);
}

.siteHeader__logoWrap {
  grid-column: 1;
  grid-row: 1 / -1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  min-width: 52px;
  align-self: center;
  z-index: 2;
  position: relative;
}

.siteHeader__logo {
  width: auto;
  max-width: 100%;
  height: auto;
  max-height: 52px;
  object-fit: contain;
  display: block;
}

.siteHeader__titleWrap {
  grid-column: 2;
  grid-row: 1;
  display: block;
  padding: 0;
  margin: 0;
  border: 0;
  background: none;
  min-width: 0;
}

.siteHeader__brandLockup:not(:has(.siteHeader__logoWrap)) .siteHeader__titleWrap {
  grid-column: 1;
}

.siteHeader__titleText {
  display: block;
  font-size: clamp(1.53rem, 3.525vw, 1.92rem);
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  line-height: 1.2;
  color: var(--text, #e5e7eb);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

@media (max-width: 640px) {
  .siteHeader__titleText {
    font-size: clamp(1.2rem, 4.2vw, 1.55rem);
    letter-spacing: 0.08em;
  }

  .siteHeader__tagline {
    font-size: clamp(10px, 2.2vw, 12px);
  }

  /* site-layout.css на <=640 даёт `.controls { width: 100% }`, из-за чего блок controls съедает строку
     и визуально кажется, что brandLockup «обрубает» растягивание. Для витрины держим controls компактным. */
  .siteHeader__controls {
    width: auto;
    flex: 0 0 auto;
  }
}

.siteHeader__nameRule {
  grid-column: 1 / -1;
  grid-row: 2;
  display: block;
  height: 2px;
  width: 100%;
  min-width: 0;
  margin: 0;
  border: 0;
  border-radius: 1px;
  align-self: center;
  z-index: 0;
  background: linear-gradient(90deg, var(--bordeaux, #800020), color-mix(in oklab, var(--bordeaux, #800020) 70%, var(--accent, #60a5fa)));
  box-shadow: 0 0 10px rgba(128, 0, 32, 0.35);
}

.siteHeader__tagline {
  grid-column: 2;
  grid-row: 3;
  display: block;
  margin: 0;
  padding: 0;
  font-size: clamp(11px, 1.6vw, 12px);
  line-height: 1.35;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-family: var(--mono, ui-monospace, monospace);
  font-weight: 500;
  color: var(--muted, #94a3b8);
}

.siteHeader__brandLockup:not(:has(.siteHeader__logoWrap)) .siteHeader__tagline {
  grid-column: 1;
}

@media (max-width: 480px) {
  .siteHeader__logoWrap {
    width: 44px;
    min-width: 44px;
  }

  .siteHeader__logo {
    max-height: 44px;
  }

  .siteHeader__titleText {
    font-size: clamp(1.05rem, 4.2vw, 1.35rem);
    white-space: nowrap;
    word-break: normal;
  }
}

/* Узкий экран: слоган скрываем только когда реально начинает теснить кнопку меню. */
@media (max-width: 460px) {
  .siteHeader__tagline {
    display: none;
  }
}

/* Очень узкий экран: если всё равно тесно — скрываем текст бренда (оставляем логотип и кнопку меню). */
@media (max-width: 400px) {
  .siteHeader__titleWrap {
    display: none;
  }
}

/* На узком экране раскладка шапки — grid в блоке @media (max-width: 880px) выше. */

html[data-theme="light"] .siteHeader__titleText {
  color: var(--text, #0f172a);
}

html[data-theme="light"] .siteHeader__tagline {
  color: var(--muted, #475569);
}

.siteHeader__controls {
  flex: 0 0 auto;
  margin-left: auto;
  display: inline-flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: flex-start;
  gap: 8px;
  min-width: 0;
}

/* Гамбургер: только узкий экран */
.siteHeader__menuBtn {
  display: none;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  margin: 0;
  border: 1px solid var(--line, #334155);
  border-radius: 10px;
  background: color-mix(in oklab, var(--panel2, #0f172a) 85%, transparent);
  color: var(--text, #e5e7eb);
  cursor: pointer;
  flex-shrink: 0;
  transition: border-color 0.15s ease, background 0.15s ease;
}

.siteHeader__menuBtn:hover {
  border-color: var(--accent, #60a5fa);
  background: color-mix(in oklab, var(--accent, #60a5fa) 10%, var(--panel2, #0f172a));
}

.siteHeader__menuBtn:focus-visible {
  outline: 2px solid var(--accent, #60a5fa);
  outline-offset: 2px;
}

@media (max-width: 880px) {
  html.hv-shell--narrow header .wrap.topbar.siteHeader__bar,
  html.hv-shell--narrow .siteHeader__bar,
  header .wrap.topbar.siteHeader__bar,
  .siteHeader__bar {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      "brand menu"
      "widgets widgets"
      "controls controls";
    align-items: center;
    gap: 8px 12px;
    flex-wrap: unset;
  }

  .siteHeader__brandLockup {
    grid-area: brand;
    flex: none;
    max-width: 100%;
    min-width: 0;
  }

  .siteHeader__menuBtn {
    display: inline-flex;
    grid-area: menu;
    order: unset;
    margin-left: 0;
    justify-self: end;
  }

  .headerWidgets--containedInTopbar,
  .siteHeader__bar > .headerWidgets {
    grid-area: widgets;
    max-width: 100%;
    width: 100%;
    min-width: 0;
  }

  .siteHeaderNav--desktop {
    display: none !important;
  }

  .siteHeader__controls {
    grid-area: controls;
    flex-wrap: wrap;
    justify-content: flex-end;
    margin-left: 0;
    flex: none;
    width: 100%;
    box-sizing: border-box;
  }
}

@media (min-width: 881px) {
  .siteHeader__menuBtn {
    display: none !important;
  }

  .siteHeaderDrawer {
    display: none !important;
  }

  .siteHeader__controls .headerMainNav {
    flex: 0 0 auto;
    min-width: 0;
  }
}

/* --- Публичное меню: списки, выпадение вниз / вправо (десктоп) --- */
.publicNav {
  list-style: none;
  margin: 0;
  padding: 0;
}

.publicNav__item {
  position: relative;
  list-style: none;
}

.publicNav__link,
.publicNav__label {
  display: inline-flex;
  align-items: center;
  min-height: var(--header-ctrl-h, 36px);
  box-sizing: border-box;
  padding: 6px 10px;
  border-radius: 6px;
  font-weight: 700;
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text, #e5e7eb);
  text-decoration: none;
  opacity: 0.88;
  transition: opacity 0.15s ease, color 0.15s ease, background 0.15s ease;
}

/* Корень меню: без смены текста на акцент; в подменю тот же цвет текста, что у корня (--text). */
a.publicNav__link:hover {
  opacity: 1;
}

.publicNav__label {
  color: var(--muted, #94a3b8);
  cursor: default;
  opacity: 1;
}

.publicNav__sep {
  list-style: none;
  display: inline-flex;
  align-items: center;
  padding: 0 2px;
}

.publicNav__sepDot {
  opacity: 0.4;
  font-weight: 700;
  user-select: none;
}

@media (min-width: 881px) {
  .siteHeaderNav--desktop .publicNav--root {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    justify-content: flex-start;
    gap: 2px 4px;
    width: max-content;
    max-width: 100%;
  }

  /* Листья верхнего уровня: явная подложка без рамки (рамка давала «прыжок» по ширине). */
  .siteHeaderNav--desktop .publicNav--root > .publicNav__item--leaf > .publicNav__link:hover,
  .siteHeaderNav--desktop .publicNav--root > .publicNav__item--leaf > .publicNav__link:focus-visible {
    opacity: 1;
    color: var(--text, #e5e7eb);
    background: var(--hv-nav-root-hover-bg);
    backdrop-filter: blur(10px);
    border: none;
    box-shadow: none;
  }

  /* Ветка верхнего уровня: триггер и выпад с общей «карточкой», без зазора */
  .siteHeaderNav--desktop .publicNav--root > .publicNav__item--branch {
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }

  .siteHeaderNav--desktop .publicNav--root > .publicNav__item--branch:hover,
  .siteHeaderNav--desktop .publicNav--root > .publicNav__item--branch:focus-within {
    z-index: 140;
  }

  .siteHeaderNav--desktop .publicNav--root > .publicNav__item--branch > .publicNav__link,
  .siteHeaderNav--desktop .publicNav--root > .publicNav__item--branch > .publicNav__label {
    box-sizing: border-box;
    justify-content: flex-start;
  }

  /* Подпись ветки (в т.ч. «Профиль») — как у ссылок верхнего уровня, не muted из .publicNav__label */
  .siteHeaderNav--desktop .publicNav--root > .publicNav__item--branch > .publicNav__label {
    color: var(--text, #e5e7eb);
    opacity: 0.88;
  }

  .siteHeaderNav--desktop .publicNav--root > .publicNav__item--branch:hover > .publicNav__link,
  .siteHeaderNav--desktop .publicNav--root > .publicNav__item--branch:focus-within > .publicNav__link,
  .siteHeaderNav--desktop .publicNav--root > .publicNav__item--branch:hover > .publicNav__label,
  .siteHeaderNav--desktop .publicNav--root > .publicNav__item--branch:focus-within > .publicNav__label {
    opacity: 1;
    color: var(--text, #e5e7eb);
    background: var(--hv-nav-root-hover-bg);
    backdrop-filter: blur(10px);
    border: none;
    border-radius: 0;
    box-shadow: none;
    position: relative;
    z-index: 131;
  }

  /* Корень: ▼ у пунктов с выпадающим подменю */
  .siteHeaderNav--desktop .publicNav--root > .publicNav__item--branch > .publicNav__link::after,
  .siteHeaderNav--desktop .publicNav--root > .publicNav__item--branch > .publicNav__label::after {
    content: "";
    flex-shrink: 0;
    width: 0;
    height: 0;
    margin-left: 0.4em;
    opacity: 0.72;
    border-style: solid;
    border-color: currentColor transparent transparent transparent;
    border-width: 5px 4px 0 4px;
  }

  /* Вложенная ветка: ▶ (символ — border-треугольник на 0×0 влезает в текст слева) */
  .siteHeaderNav--desktop .publicNav__sub .publicNav__item--branch > .publicNav__link,
  .siteHeaderNav--desktop .publicNav__sub .publicNav__item--branch > .publicNav__label {
    gap: 0.45em;
  }

  .siteHeaderNav--desktop .publicNav__sub .publicNav__item--branch > .publicNav__link::after,
  .siteHeaderNav--desktop .publicNav__sub .publicNav__item--branch > .publicNav__label::after {
    content: "▸";
    display: block;
    flex: 0 0 auto;
    width: auto;
    height: auto;
    margin-left: auto;
    border: none;
    font-size: 0.85em;
    line-height: 1;
    opacity: 0.72;
  }

  .siteHeaderNav--desktop .publicNav__sub {
    position: absolute;
    top: 100%;
    left: 0;
    width: max-content;
    min-width: 0;
    max-width: min(100vw - 24px, 28rem);
    margin: 0;
    padding: 8px 0;
    list-style: none;
    background: var(--hv-nav-root-hover-bg);
    backdrop-filter: blur(10px);
    border: none;
    border-radius: 0;
    box-shadow: var(--hv-shadow-dropdown);
    box-sizing: border-box;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-4px);
    transition: opacity 0.18s ease, visibility 0.18s ease, transform 0.18s ease;
    /* Выше HvCustomSelect portal (120), ниже drawer (200) */
    z-index: 130;
  }

  .siteHeaderNav--desktop .publicNav--root > .publicNav__item--branch > .publicNav__sub {
    margin: 0;
    border-radius: 0;
    box-shadow: var(--hv-shadow-dropdown);
    transform: translateY(-4px);
    min-width: 100%;
    width: max-content;
  }

  /* Вложенные flyout (2-й, 3-й уровень…): ширина по содержимому, без min-width: 220px */
  .siteHeaderNav--desktop .publicNav__sub .publicNav__sub {
    top: 0;
    left: 100%;
    width: max-content;
    min-width: 0;
    max-width: min(100vw - 24px, 28rem);
    margin: 0;
    padding: 8px 0;
    border-radius: 0;
    border: none;
    transform: translateX(-4px);
  }

  .siteHeaderNav--desktop .publicNav__sub > .publicNav__item {
    width: 100%;
  }

  .siteHeaderNav--desktop .publicNav__item--branch:hover > .publicNav__sub,
  .siteHeaderNav--desktop .publicNav__item--branch:focus-within > .publicNav__sub {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
  }

  .siteHeaderNav--desktop .publicNav__sub .publicNav__item--branch:hover > .publicNav__sub,
  .siteHeaderNav--desktop .publicNav__sub .publicNav__item--branch:focus-within > .publicNav__sub {
    transform: translateX(0);
  }

  .siteHeaderNav--desktop .publicNav__sub .publicNav__link,
  .siteHeaderNav--desktop .publicNav__sub .publicNav__label {
    display: flex;
    width: 100%;
    box-sizing: border-box;
    padding: 5px 14px;
    border-radius: 0;
    font-size: 13px;
    text-transform: none;
    letter-spacing: 0.02em;
    font-weight: 600;
    color: var(--text, #e5e7eb);
    opacity: 0.88;
    white-space: nowrap;
  }

  /* Вложенная ветка (вправо): отдельная кнопка, не сливать с корнем */
  .siteHeaderNav--desktop .publicNav__sub .publicNav__item--branch:hover > .publicNav__link,
  .siteHeaderNav--desktop .publicNav__sub .publicNav__item--branch:focus-within > .publicNav__link,
  .siteHeaderNav--desktop .publicNav__sub .publicNav__item--branch:hover > .publicNav__label,
  .siteHeaderNav--desktop .publicNav__sub .publicNav__item--branch:focus-within > .publicNav__label {
    color: var(--text, #e5e7eb);
    opacity: 1;
    background: color-mix(in oklab, var(--accent, #60a5fa) 10%, transparent);
    border-radius: 0;
  }

  .siteHeaderNav--desktop .publicNav__sub .publicNav__link:hover,
  .siteHeaderNav--desktop .publicNav__sub .publicNav__link:focus-visible {
    color: var(--text, #e5e7eb);
    opacity: 1;
    background: color-mix(in oklab, var(--accent, #60a5fa) 12%, transparent);
  }

  /* Вертикальное подменю: разделитель — линия на всю ширину, без «точки» и лишней высоты */
  .siteHeaderNav--desktop .publicNav__sub > .publicNav__sep {
    display: block;
    margin: 6px 0;
    padding: 0;
    height: 0;
    min-height: 0;
    list-style: none;
    border: none;
    border-top: 1px solid color-mix(in oklab, var(--line, #334155) 78%, transparent);
    overflow: hidden;
  }

  .siteHeaderNav--desktop .publicNav__sub > .publicNav__sep .publicNav__sepDot {
    display: none;
  }
}

/* --- Мобильный drawer --- */
.siteHeaderDrawer {
  position: fixed;
  inset: 0;
  z-index: 200;
  pointer-events: none;
}

.siteHeaderDrawer:not([hidden]) {
  pointer-events: auto;
}

.siteHeaderDrawer__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(2, 6, 23, 0.72);
  backdrop-filter: blur(4px);
}

.siteHeaderDrawer__panel {
  position: absolute;
  top: 0;
  right: 0;
  width: min(100%, 380px);
  height: 100%;
  max-height: 100%;
  overflow: auto;
  overflow-x: hidden;
  padding: 12px 12px 20px;
  box-sizing: border-box;
  background: var(--panel, #111827);
  border-left: 1px solid var(--line, #334155);
  box-shadow: -12px 0 40px rgba(0, 0, 0, 0.45);
}

.siteHeaderDrawer__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--line, #334155);
}

.siteHeaderDrawer__title {
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted, #94a3b8);
}

.siteHeaderDrawer__close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  padding: 0;
  border: 1px solid var(--line, #334155);
  border-radius: 10px;
  background: transparent;
  color: var(--text, #e5e7eb);
  cursor: pointer;
}

.siteHeaderDrawer__close:focus-visible {
  outline: 2px solid var(--accent, #60a5fa);
  outline-offset: 2px;
}

body.siteHeaderDrawerOpen {
  overflow: hidden;
}

.siteHeaderNav--mobile .publicNav--mobileRoot {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

/* В шапке для .publicNav--authBar задано align-items: center (account.css) — в колонке drawer это центрирует ветку «Профиль». */
.siteHeaderNav--mobile .publicNav--authBar {
  align-items: stretch;
}

.siteHeaderNav--mobile .publicNav__authProfileRoot.publicNav__item--branch {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  width: 100%;
}

.siteHeaderNav--mobile .publicNav__authProfileRoot.publicNav__item--branch > .publicNav__link,
.siteHeaderNav--mobile .publicNav__authProfileRoot.publicNav__item--branch > .publicNav__label {
  display: flex;
  width: 100%;
  box-sizing: border-box;
  justify-content: flex-start;
  text-align: left;
}

.siteHeaderNav--mobile .publicNav__sub {
  margin: 4px 0 6px;
  padding: 5px 0 6px 12px;
  border-left: 1px solid var(--hv-accent-line);
  background: var(--hv-nav-root-hover-bg);
  border-radius: 8px;
}

.siteHeaderNav--mobile .publicNav__link {
  display: flex;
  width: 100%;
  min-height: 40px;
  padding: 8px 10px;
  border-radius: 8px;
  text-transform: none;
  letter-spacing: 0.02em;
  font-weight: 600;
}

.siteHeaderNav--mobile .publicNav--root > .publicNav__item > .publicNav__link:hover,
.siteHeaderNav--mobile .publicNav--root > .publicNav__item > .publicNav__link:focus-visible {
  color: var(--text, #e5e7eb);
  background: var(--hv-nav-root-hover-bg);
}

.siteHeaderNav--mobile .publicNav__sub .publicNav__link {
  font-size: 14px;
  font-weight: 500;
  padding-top: 4px;
  padding-bottom: 4px;
  color: var(--text, #e5e7eb);
  opacity: 0.88;
}

.siteHeaderNav--mobile .publicNav__sub .publicNav__link:hover,
.siteHeaderNav--mobile .publicNav__sub .publicNav__link:focus-visible {
  color: var(--text, #e5e7eb);
  opacity: 1;
  background: color-mix(in oklab, var(--accent, #60a5fa) 12%, transparent);
}

.siteHeaderNav--authMobile {
  margin-top: 0.5rem;
  padding-top: 0.5rem;
}

.siteHeaderNav--mobile .publicNav__sub > .publicNav__sep {
  display: block;
  margin: 6px 0;
  padding: 0;
  min-height: 0;
  height: 0;
  list-style: none;
  border: none;
  border-top: 1px solid color-mix(in oklab, var(--line, #334155) 78%, transparent);
  overflow: hidden;
}

.siteHeaderNav--mobile .publicNav__sub > .publicNav__sep .publicNav__sepDot {
  display: none;
}

/* --- Подвал --- */
.siteFooter {
  margin-top: auto;
  padding: 14px 0 28px;
  border-top: 1px solid var(--hv-footer-border, var(--hv-accent-line));
  background: linear-gradient(180deg, transparent, color-mix(in oklab, var(--panel2, #020617) 55%, transparent));
}

.siteFooter__inner {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.siteFooter__row {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px 32px;
}

.siteFooter__brand {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text, #e5e7eb);
}

.siteFooter .footerNav {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  align-items: center;
}

.siteFooter .footerNav .headerNavLink {
  font-size: 13px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--muted, #94a3b8);
}

.siteFooter .footerNav .headerNavLink:hover {
  color: var(--accent, #60a5fa);
}

.siteFooter .footerBar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px 20px;
  justify-content: space-between;
  padding-top: 16px;
  border-top: 1px solid var(--hv-accent-line);
  font-size: 12px;
}

/* Без меню в подвале .footerBar — первый ребёнок: граница уже у .siteFooter (стык с main), второй border-top давал «двойную» линию и лишний зазор. */
.siteFooter__inner > .footerBar:first-child {
  padding-top: 0;
  border-top: none;
}

/* Узкий shell (класс с shell-viewport.js в shell.ejs + React): шапка, подвал, полосы слотов. */
html.hv-shell--narrow header .wrap.siteHeader__bar,
html.hv-shell--narrow header .wrap.topbar.siteHeader__bar,
html.hv-shell--narrow .siteFooter .wrap.siteFooter__inner,
html.hv-shell--narrow footer.siteFooter .wrap {
  padding-left: calc(12px + env(safe-area-inset-left, 0px));
  padding-right: calc(12px + env(safe-area-inset-right, 0px));
}

html.hv-shell--narrow footer.siteFooter .footerBar,
html.hv-shell--narrow .siteFooter .footerBar {
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  gap: 14px;
}

html.hv-shell--narrow footer.siteFooter .footerSocial,
html.hv-shell--narrow .siteFooter .footerSocial {
  justify-content: center;
  width: 100%;
}

html.hv-shell--narrow .siteMain__strip,
html.hv-shell--narrow .siteMain__strip--edgeBleed {
  padding-left: calc(12px + env(safe-area-inset-left, 0px));
  padding-right: calc(12px + env(safe-area-inset-right, 0px));
}

html.hv-shell--narrow .siteMain__strip--containedBleed > .wrap {
  padding-left: calc(12px + env(safe-area-inset-left, 0px));
  padding-right: calc(12px + env(safe-area-inset-right, 0px));
  box-sizing: border-box;
}

@media (max-width: 640px) {
  :root {
    --hv-wrap-pad-x: 12px;
    --hv-colMain-wrap-pad-x: 10px;
  }

  header .wrap.siteHeader__bar,
  header .wrap.topbar.siteHeader__bar,
  .siteFooter .wrap.siteFooter__inner,
  footer.siteFooter .wrap {
    padding-left: calc(12px + env(safe-area-inset-left, 0px));
    padding-right: calc(12px + env(safe-area-inset-right, 0px));
  }

  footer.siteFooter .footerBar,
  .siteFooter .footerBar {
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    gap: 14px;
  }

  footer.siteFooter .footerSocial,
  .siteFooter .footerSocial {
    justify-content: center;
    width: 100%;
  }

  .siteMain__strip,
  .siteMain__strip--edgeBleed {
    padding-left: calc(12px + env(safe-area-inset-left, 0px));
    padding-right: calc(12px + env(safe-area-inset-right, 0px));
  }

  .siteMain__strip--containedBleed > .wrap {
    padding-left: calc(12px + env(safe-area-inset-left, 0px));
    padding-right: calc(12px + env(safe-area-inset-right, 0px));
    box-sizing: border-box;
  }
}

/* --- Публикация: базовый шаблон §8 --- */
.hvPublication {
  position: relative;
  border-radius: 12px;
  border: 1px solid var(--hv-accent-line);
  background: color-mix(in oklab, var(--panel, #111827) 92%, transparent);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
}

.hvPublication::before,
.hvPublication::after {
  content: "";
  position: absolute;
  width: 10px;
  height: 10px;
  border-color: var(--accent, #60a5fa);
  border-style: solid;
  opacity: 0.45;
  pointer-events: none;
}

.hvPublication::before {
  top: 10px;
  left: 10px;
  border-width: 1px 0 0 1px;
}

.hvPublication::after {
  bottom: 10px;
  right: 10px;
  border-width: 0 1px 1px 0;
}

.hvPublication__header {
  position: sticky;
  top: 0;
  z-index: 20;
  padding: 18px 20px 14px;
  border-bottom: 1px solid var(--hv-accent-line);
  background: var(--header-bg, rgba(11, 15, 23, 0.92));
  backdrop-filter: blur(12px) saturate(180%);
}

.hvPublication__title {
  margin: 0;
  font-size: clamp(1.25rem, 2.5vw, 1.6rem);
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  line-height: 1.25;
  color: var(--text, #e5e7eb);
}

.hvPublication__meta {
  margin: 8px 0 0;
  font-size: 12px;
  font-family: var(--mono, ui-monospace, monospace);
  color: var(--muted, #94a3b8);
}

.hvPublication__body {
  padding: 16px 18px 20px;
}

.hvPublication .card {
  border: none;
  border-radius: 8px;
  background: color-mix(in oklab, var(--panel2, #0f172a) 85%, transparent);
}

.hvPublication .cardHeader {
  border-bottom: none;
}

@media (max-width: 640px) {
  .hvPublication::before,
  .hvPublication::after {
    display: none;
  }
}

/* Публикация /p/…: материал в hv-panel-block — без второй рамки у .hvPublication */
main.siteMain.siteMain--itemPublication .itemPublication--material .hvPanelBlock .hvPublication {
  border: none;
  box-shadow: none;
  background: transparent;
  border-radius: 0;
}
main.siteMain.siteMain--itemPublication .itemPublication--material .hvPanelBlock .hvPublication::before,
main.siteMain.siteMain--itemPublication .itemPublication--material .hvPanelBlock .hvPublication::after {
  display: none;
}

/* Рубрика «Видео»: плеер в отдельном вложенном hv-panel-block (.itemPostVideoPanel) — уголки у плеера */
.itemPublication .hvPublication__body .itemPostVideoPanel {
  margin: 14px 0;
}
.itemPublication--videoMaterial .hvPanelBlock .itemPostVideoPanel {
  margin-left: 0;
  margin-right: 0;
}
.itemPublication--videoMaterial .hvPanelBlock .hvPublication__body > .itemPostVideoPanel:first-child {
  margin-top: 0;
}

.hvPublication__leadBlock {
  margin: 0 0 16px;
}
.hvPublication__leadBlock--afterCover {
  margin-top: 4px;
}
.hvPublication__leadSep {
  width: 65%;
  max-width: 70%;
  min-width: 12rem;
  margin: 2px auto 20px;
  height: 0;
  border: 0;
  border-top: 1px solid color-mix(in oklab, var(--accent, #60a5fa) 58%, var(--hv-accent-line, rgba(96, 165, 250, 0.35)));
  box-sizing: border-box;
}
.hvPublication__lead {
  margin: 0;
  font-size: 0.95rem;
  line-height: 1.55;
  font-style: italic;
  color: color-mix(in oklab, var(--text, #e5e7eb) 92%, var(--muted, #94a3b8));
}
html[data-theme="light"] .hvPublication__leadSep {
  border-top-color: color-mix(in oklab, var(--accent, #2563eb) 45%, var(--line, #cbd5e1));
}

/* Левый сайдбар: таймлайн рубрики на странице материала */
.postChannelRail {
  position: relative;
  max-width: 300px;
  margin: 0 auto;
  padding: 12px 10px 14px 4px;
  box-sizing: border-box;
}
.postChannelRail__heading {
  margin: 0 0 14px;
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: color-mix(in oklab, var(--text, #e5e7eb) 94%, transparent);
  line-height: 1.3;
}
.postChannelRail__headingRow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  max-width: 100%;
}
.postChannelRail__headingIcon {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  line-height: 0;
  color: color-mix(in oklab, var(--accent, #60a5fa) 88%, var(--text, #e5e7eb));
}
.postChannelRail__headingIcon .adminToolbarIcon {
  width: 18px;
  height: 18px;
}
.postChannelRail__headingIcon--image .postChannelRail__headingImg,
.postFeedChannelHeader__iconSlot--image .postFeedChannelHeader__img {
  display: block;
  width: auto;
  height: auto;
  max-width: min(40vw, 120px);
  object-fit: contain;
  border-radius: 4px;
}
.postChannelRail__headingIcon--image .postChannelRail__headingImg {
  max-height: 28px;
}
.postChannelRail__headingText {
  min-width: 0;
}
.postChannelRail__empty {
  margin: 0;
}
.postChannelRail__list {
  list-style: none;
  margin: 0;
  padding: 0 0 0 14px;
  border-left: 2px solid color-mix(in oklab, var(--accent, #60a5fa) 55%, transparent);
}
.postChannelRail__item {
  position: relative;
  margin: 0 0 14px;
  padding-left: 4px;
}
.postChannelRail__item:last-child {
  margin-bottom: 4px;
}
.postChannelRail__link {
  display: block;
  text-decoration: none;
  color: inherit;
  padding: 2px 0 2px 10px;
  border-radius: 6px;
  transition: background 0.15s ease, color 0.15s ease;
}
.postChannelRail__link:hover {
  background: color-mix(in oklab, var(--accent, #60a5fa) 12%, transparent);
}
/* Таймлайн: одинаковый размер кружков; синие — обводка (не заливка); текущая — красная обводка */
.postChannelRail__marker {
  position: absolute;
  /* Центр линии — середина border-left (2px) у .postChannelRail__list; контент списка сдвинут на 2px + 14px padding */
  left: calc(1px - 2px - 14px - 5px);
  top: 6px;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  border: 2px solid color-mix(in oklab, var(--accent, #60a5fa) 75%, transparent);
  background: color-mix(in oklab, var(--panel, #0f172a) 90%, transparent);
  box-sizing: border-box;
  box-shadow: none;
}
.postChannelRail__link.is-active .postChannelRail__marker {
  border-color: var(--bad, #ef4444);
  background: color-mix(in oklab, var(--panel, #0f172a) 90%, transparent);
  box-shadow: 0 0 0 3px color-mix(in oklab, var(--bad, #ef4444) 22%, transparent);
}
.postChannelRail__link.is-active .postChannelRail__title {
  color: var(--accent, #93c5fd);
}
.postChannelRail__body {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.postChannelRail__title {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  line-height: 1.35;
  color: color-mix(in oklab, var(--text, #e5e7eb) 95%, transparent);
}
.postChannelRail__date {
  font-size: 0.65rem;
  font-family: var(--mono, ui-monospace, monospace);
  color: var(--muted, #94a3b8);
}
.postChannelRail__footer {
  margin-top: 14px;
  padding-top: 6px;
}
.postChannelRail__allFeedChip .hvChip__caption {
  text-transform: uppercase;
  letter-spacing: 0.05em;
}
.postChannelRail__allFeedChip .hvUiChip__caption {
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

/* Теги публикации (/p/:slug) */
.itemPublicationTags {
  margin-top: 20px;
  margin-left: 20px;
  margin-bottom: 5px;
}
.itemPublication--material .hvPanelBlock__inner > .itemPublicationTags {
  margin-top: 3px;
  padding-top: 0;
}
.itemPublicationTags__row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 10px;
}
.itemPublicationTags__chip.hvChip {
  max-width: 100%;
}
.itemPublicationTags__chip.hvUiChip {
  max-width: 100%;
}
.itemPublicationTags__noscriptLink {
  display: inline-block;
  margin: 0 8px 8px 0;
  font-size: 0.85rem;
  color: var(--accent, #60a5fa);
  text-decoration: none;
}
.itemPublicationTags__noscriptLink:hover {
  text-decoration: underline;
}

/* Чипы предыдущая / следующая */
.itemPostNavChips {
  margin-top: 20px;
  padding-top: 16px;
  border-top: 1px solid color-mix(in oklab, var(--hv-accent-line) 65%, transparent);
}
.itemPublication--material .hvPanelBlock + .itemPostNavChips {
  margin-top: 14px;
  padding-top: 0;
  border-top: none;
}
.itemPostNavChips__row {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px 20px;
}
.itemPostNavChips__side {
  flex: 1 1 200px;
  min-width: 0;
}
.itemPostNavChips__side--next {
  text-align: right;
}
.itemPostNavChips__chip.hvChip {
  max-width: 100%;
}
.itemPostNavChips__chip.hvUiChip {
  max-width: 100%;
}
.itemPostNavChips__noscriptLink {
  display: inline-block;
  max-width: 100%;
  font-size: 0.9rem;
  color: var(--accent, #60a5fa);
  text-decoration: none;
}
.itemPostNavChips__noscriptLink:hover {
  text-decoration: underline;
}

html[data-theme="light"] .postChannelRail__list {
  border-left-color: color-mix(in oklab, var(--accent, #2563eb) 45%, var(--line, #e2e8f0));
}
html[data-theme="light"] .postChannelRail__title {
  color: var(--text, #0f172a);
}
html[data-theme="light"] .postChannelRail__link.is-active .postChannelRail__title {
  color: var(--accent, #1d4ed8);
}

/* --- Главная: блок «Городские новости» (homeNews) --- */
main.siteMain .homeNews {
  overflow: hidden;
  border-color: color-mix(in oklab, var(--hv-accent-line) 55%, var(--line, #243041));
  box-shadow: 0 14px 42px rgba(0, 0, 0, 0.22);
}

main.siteMain .homeNews__header {
  align-items: flex-start;
}

main.siteMain .homeNews__titleBlock h2 {
  font-size: clamp(1.05rem, 2.5vw, 1.2rem);
  letter-spacing: 0.06em;
}

main.siteMain .homeNews__lead {
  margin-top: 4px;
  font-size: 12px;
  letter-spacing: 0.04em;
  font-family: var(--mono, ui-monospace, monospace);
  color: var(--muted, #94a3b8);
}

/** Шапка «Лента»: без фона и рамки карточки; L-уголки — .card::before/::after + .cardInner::before/::after (shared-ui). */
main.siteMain .homeNews--feedToolbar {
  background: transparent;
  border: none;
  box-shadow: none;
}

main.siteMain .homeNews--feedToolbar .cardHeader {
  background: transparent;
  border-bottom: none;
  /* было 14px 18px у .cardHeader; сверху/снизу — 6px, по бокам ×1.5 */
  padding: 6px 27px;
}

main.siteMain .homeNews--feedToolbar .cardHeader::before,
main.siteMain .homeNews--feedToolbar .cardHeader::after {
  display: none;
}

/* Лента под шапкой карточки: воздух от разделителя, колонка карточек */
main.siteMain .homeNews .newsFeed {
  display: flex;
  flex-direction: column;
  padding: 16px 18px 22px;
  gap: 14px;
}

main.siteMain .newsFeed__empty {
  margin: 0;
  padding: 28px 16px;
  text-align: center;
  border-radius: 10px;
  border: 1px dashed color-mix(in oklab, var(--hv-accent-line) 65%, transparent);
  background: color-mix(in oklab, var(--panel2, #0f172a) 70%, transparent);
}

/* Шапка карточки новостей: переключатель «КАНОН» справа */
main.siteMain .cardHeader .newsFeed__canonSlot {
  flex-shrink: 0;
  align-self: center;
}

/* vitrine-app: канон — HvToggle внутри #vitrine-canon-root (главная /feed /private-feed и шапка рубрики) */
main.siteMain .newsFeed__canonToggle {
  display: flex;
  justify-content: flex-end;
  min-width: 0;
  max-width: min(100%, 380px);
}
main.siteMain .newsFeed__canonToggle .hvUiToggle {
  max-width: 100%;
}
main.siteMain .adminLabeledPowerRow__toggle #vitrine-canon-root {
  display: flex;
  justify-content: flex-end;
  min-width: 0;
  width: 100%;
}
main.siteMain .adminLabeledPowerRow__toggle .newsFeed__canonToggle {
  max-width: min(100%, 380px);
}

/* Остров герой-слайдера: резерв высоты до монтирования vitrine-app (меньше скачка макета) */
main.siteMain #vitrine-feed-slider-root:empty {
  min-height: clamp(176px, 26vw, 248px);
}

/* Карточки витрины (HvCardNews): резерв до клиентского mount */
main.siteMain #vitrine-feed-cards-react-root:empty {
  min-height: clamp(120px, 18vw, 200px);
}

main.siteMain .newsCard {
  margin: 0;
  border-radius: 10px;
  border: 1px solid var(--hv-accent-line);
  padding: 12px 14px;
  background: color-mix(in oklab, var(--panel2, #0f172a) 86%, transparent);
  box-sizing: border-box;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

main.siteMain .newsCard:hover {
  border-color: var(--hv-accent-line-strong);
  box-shadow: 0 8px 26px rgba(0, 0, 0, 0.22);
}

/* Второй и далее — чуть компактнее заголовок, чем у featured */
main.siteMain .newsCard:not(.newsCard-featured) .newsCardTitle {
  font-size: clamp(1rem, 2.4vw, 1.2rem);
  font-weight: 700;
  line-height: 1.35;
}

main.siteMain .newsCard-featured .newsCardTitle {
  font-size: clamp(1.15rem, 2.8vw, 1.45rem);
  line-height: 1.3;
}

main.siteMain .homeNews .newsCardMeta {
  font-size: 12px;
  font-family: var(--mono, ui-monospace, monospace);
  letter-spacing: 0.02em;
  margin-bottom: 6px;
  color: var(--muted, #94a3b8);
}

main.siteMain .homeNews .newsCardExcerpt {
  font-size: 14px;
  line-height: 1.55;
  color: color-mix(in oklab, var(--muted, #94a3b8) 92%, var(--text, #e5e7eb));
}

main.siteMain .homeNews .newsCardTitle a:focus-visible,
main.siteMain .homeNews .newsCardImage:focus-visible {
  outline: 2px solid color-mix(in oklab, var(--accent, #60a5fa) 75%, transparent);
  outline-offset: 2px;
  border-radius: 4px;
}

main.siteMain .homeNews .newsCardImage:focus-visible {
  border-radius: 10px;
}

main.siteMain .homeNews .homeFeedItem__image:focus-visible {
  border-radius: 0;
}

@media (min-width: 721px) {
  main.siteMain .homeNews .newsCard-featured .newsCardImage {
    flex-basis: min(240px, 38%);
    max-width: min(240px, 38%);
    height: 148px;
  }
}

@media (max-width: 560px) {
  main.siteMain .homeNews__header {
    flex-wrap: wrap;
    gap: 12px 16px;
  }

  main.siteMain .homeNews__header > div:first-child {
    min-width: min(100%, 200px);
  }

  main.siteMain .cardHeader .newsFeed__canonSlot {
    margin-left: auto;
  }
}

/* --- Главная: плейсхолдер слайдера, лента по каналам --- */
/* Закрепы на главной: три колонки (левая/правая — hv-panel-block в partial). */
main.siteMain .homeFeedPinStrip {
  display: grid;
  /* minmax(0,1fr): иначе трек ведёт себя как minmax(auto,1fr) и @container на .hvNewsCard__shell
     в центре может «видеть» не ширину .wrap, а лишние 400+ px от min-content внутри. */
  grid-template-columns: minmax(0, 1fr);
  gap: 16px;
  margin-bottom: 16px;
  min-width: 0;
  box-sizing: border-box;
}
@media (min-width: 900px) {
  main.siteMain .homeFeedPinStrip:has(.homeFeedPinStrip__cell--center):has(.homeFeedPinStrip__cell--left):has(
      .homeFeedPinStrip__cell--right
    ) {
    grid-template-columns: minmax(0, 1fr) minmax(0, 2fr) minmax(0, 1fr);
    align-items: start;
  }
  main.siteMain .homeFeedPinStrip:has(.homeFeedPinStrip__cell--center):not(:has(.homeFeedPinStrip__cell--left)):not(
      :has(.homeFeedPinStrip__cell--right)
    ) {
    grid-template-columns: minmax(0, 1fr);
  }
}
main.siteMain .homeFeedPinStrip__cell--center {
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}
main.siteMain .homeFeedPinStrip__panel {
  min-width: 0;
}

main.siteMain .layoutShellPinSlot {
  margin-bottom: 16px;
  /* В грид-сетке colSide: не даём min-content дочерних flex-карточек «раздвинуть» track;
     иначе @container на .hvNewsCard__shell видит не ширину сайдбара. */
  min-width: 0;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}
main.siteMain .layoutShellPinSlot:last-child {
  margin-bottom: 0;
}

/* Закрепы: режимы из настроек сайта (pinViewDisplay) — базовые модификаторы сетки */
main.siteMain .homeFeedPinStrip--display-stack .homeFeedPinStrip__cell--center,
main.siteMain .homeFeedPinStrip--display-block .homeFeedPinStrip__cell--center {
  max-width: min(100%, 42rem);
  margin-left: auto;
  margin-right: auto;
}
main.siteMain .homeFeedPinStrip--display-block .homeFeedPinStrip__cell--center {
  width: 100%;
}
main.siteMain .layoutShellPinSlot--display-row .layoutShellPinSlot__panel {
  width: 100%;
}
main.siteMain .layoutShellPinSlot--display-stack .layoutShellPinSlot__panel,
main.siteMain .layoutShellPinSlot--display-block .layoutShellPinSlot__panel {
  max-width: 100%;
}

main.siteMain .homePage {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

main.siteMain .homeHeroSlider {
  border-radius: 12px;
  border: 1px solid color-mix(in oklab, var(--hv-accent-line) 55%, var(--line, #243041));
  background: color-mix(in oklab, var(--panel2, #0f172a) 78%, transparent);
  box-sizing: border-box;
  transition: opacity 0.2s ease, filter 0.2s ease;
  overflow: hidden;
  box-shadow: 0 14px 42px rgba(0, 0, 0, 0.18);
}

/* hv-news-slider: те же базовые стили, но с отдельным BEM */
main.siteMain .hvNewsSlider {
  --hvNewsSliderGap: clamp(8px, 1.4vw, 14px);
  --hvNewsSliderMediaBasis: min(52%, 420px);
  border-radius: 12px;
  border: 1px solid color-mix(in oklab, var(--hv-accent-line) 55%, var(--line, #243041));
  background: color-mix(in oklab, var(--panel2, #0f172a) 78%, transparent);
  box-sizing: border-box;
  transition: opacity 0.2s ease, filter 0.2s ease;
  overflow: hidden;
  box-shadow: 0 14px 42px rgba(0, 0, 0, 0.18);
}

main.siteMain .hvNewsSlider__chrome {
  min-width: 0;
}

main.siteMain .hvNewsSlider__layout {
  display: grid;
  grid-template-columns: var(--hvNewsSliderMediaBasis) 1fr;
  gap: var(--hvNewsSliderGap);
  align-items: stretch;
  min-width: 0;
  min-height: 260px;
  box-sizing: border-box;
}

main.siteMain .hvNewsSlider__mediaCol {
  min-width: 0;
  min-height: 0;
  display: flex;
}

main.siteMain .hvNewsSlider__mediaViewport {
  position: relative;
  flex: 1 1 auto;
  min-width: 0;
  min-height: 0;
}

main.siteMain .hvNewsSlider__mediaItem {
  position: absolute;
  inset: 0;
  display: block;
  opacity: 0;
  pointer-events: none;
  transition: opacity 1s ease;
}

main.siteMain .hvNewsSlider__mediaItem.is-active {
  opacity: 1;
  pointer-events: auto;
}

main.siteMain .hvNewsSlider__rightCol {
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  padding-right: 12px;
}

main.siteMain .hvNewsSlider__panelItem {
  position: absolute;
  inset: 0;
  opacity: 0;
  pointer-events: none;
  transition: opacity 1s ease;
}

main.siteMain .hvNewsSlider__panelItem.is-active {
  opacity: 1;
  pointer-events: auto;
}

main.siteMain .hvNewsSlider__controls {
  margin-top: auto;
}

main.siteMain .hvNewsSlider.hvNewsSlider--reduceMotion .hvNewsSlider__mediaItem,
main.siteMain .hvNewsSlider.hvNewsSlider--reduceMotion .hvNewsSlider__panelItem {
  transition: none;
}

main.siteMain .homeHeroSlider--empty {
  padding: 9px 7px;
  text-align: center;
  border: 1px dashed color-mix(in oklab, var(--hv-accent-line) 65%, transparent);
  border-radius: 12px;
  background: color-mix(in oklab, var(--panel2, #0f172a) 55%, transparent);
}

main.siteMain .homeHeroSlider--busy {
  pointer-events: none;
  opacity: 0.55;
  filter: grayscale(0.15);
}

main.siteMain .hvNewsSlider--busy {
  pointer-events: none;
  opacity: 0.55;
  filter: grayscale(0.15);
}

main.siteMain .homeHeroSlider__viewport {
  overflow: hidden;
  width: 100%;
}

main.siteMain .hvNewsSlider__viewport {
  position: relative;
  flex: 1 1 auto;
  overflow: hidden;
  width: 100%;
  min-width: 0;
  min-height: 0;
}

main.siteMain .homeHeroSlider__track {
  display: flex;
  will-change: transform;
}

/* legacy: track больше не используется (переход dissolve) */

main.siteMain .homeHeroSlider__slide {
  display: flex;
  flex-direction: row;
  align-items: stretch;
  gap: clamp(5px, 1vw, 9px);
  min-height: 220px;
  padding: 6px 7px 7px;
  box-sizing: border-box;
}

/* legacy: slide больше не используется (переход dissolve) */

main.siteMain .homeHeroSlider__media {
  flex: 0 0 min(52%, 420px);
  min-width: 0;
  align-self: stretch;
}

/* legacy: media больше не используется (переход dissolve) */

main.siteMain .homeHeroSlider__mediaLink {
  display: block;
  height: 100%;
  min-height: 200px;
  border-radius: 10px;
  overflow: hidden;
  border: 1px solid color-mix(in oklab, var(--hv-accent-line) 50%, transparent);
  box-sizing: border-box;
}

/* legacy: mediaLink больше не используется (переход dissolve) */

/* legacy: imagePreview в mediaLink больше не используется (переход dissolve) */

main.siteMain .homeHeroSlider__img {
  width: 100%;
  height: 100%;
  min-height: 200px;
  object-fit: cover;
  display: block;
}

main.siteMain .hvNewsSlider__panel {
  flex: 1 1 0;
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: stretch;
  padding: 2px 0 4px;
}

/* post-feed-channel: hv-power-row (на витрине, без admin-ui.css) */
main.siteMain .homePage--postChannel .adminLabeledPowerRow{
  --_pr-accent: color-mix(in oklab, var(--hv-accent-line-strong, var(--accent, #60a5fa)) 75%, transparent);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px 16px;
  padding:12px;
  box-sizing:border-box;
}
main.siteMain .homePage--postChannel .adminLabeledPowerRow__text{
  min-width:0;
  display:flex;
  flex-flow:row wrap;
  align-items:center;
  gap:8px 12px;
}
main.siteMain .homePage--postChannel .adminLabeledPowerRow__beforeTitle{
  flex:0 0 auto;
  display:flex;
  align-items:center;
  justify-content:center;
}
main.siteMain .homePage--postChannel .postFeedChannelHeader__iconSlot{
  display:flex;
  width:40px;
  height:40px;
  align-items:center;
  justify-content:center;
}
main.siteMain .homePage--postChannel .postFeedChannelHeader__iconSlot--image{
  width:auto;
  max-width:min(40vw, 160px);
  height:40px;
  max-height:40px;
  flex:0 0 auto;
}
main.siteMain .homePage--postChannel .postFeedChannelHeader__iconSlot .adminToolbarIcon{
  width:32px;
  height:32px;
}
main.siteMain .homePage--postChannel .postFeedChannelHeader__iconSlot svg{
  width:32px;
  height:32px;
  display:block;
}
main.siteMain .homePage--postChannel .postFeedChannelHeader__iconSlot--image .postFeedChannelHeader__img{
  width:auto;
  height:100%;
  max-height:40px;
  max-width:100%;
  object-fit:contain;
}
main.siteMain .homePage--postChannel .adminLabeledPowerRow__title{
  font-weight:700;
  letter-spacing:0.08em;
  text-transform:uppercase;
  font-size:0.95rem;
  margin:0;
  flex:1 1 auto;
  min-width:0;
}
main.siteMain .homePage--postChannel .adminLabeledPowerRow__lead{
  flex:1 0 100%;
  margin:4px 0 0;
  max-width:60ch;
}
main.siteMain .homePage--postChannel .adminLabeledPowerRow__toggle{ flex:0 0 auto; }
main.siteMain .homePage--postChannel .adminLabeledPowerRow--noBg{ background:transparent; }
main.siteMain .homePage--postChannel .adminLabeledPowerRow--corners{ border:none; }

main.siteMain .homeHeroSlider__panel {
  flex: 1 1 0;
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: stretch;
  padding: 1px 0;
}

main.siteMain .hvNewsSlider__title {
  margin: 0;
  font-size: clamp(0.95rem, 1.7vw, 1.05rem);
  font-weight: 700;
  line-height: 1.35;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  min-width: 0;
  overflow-wrap: anywhere;
  -webkit-hyphens: none;
  hyphens: none;
}

main.siteMain .hvNewsSlider__title a {
  color: inherit;
  text-decoration: none;
}

main.siteMain .hvNewsSlider__title a:hover {
  color: color-mix(in oklab, var(--accent, #60a5fa) 75%, var(--text, #e5e7eb));
}

main.siteMain .homeHeroSlider__title {
  margin: 0 0 8px;
  font-size: clamp(1.05rem, 2.4vw, 1.35rem);
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: 0.02em;
  min-width: 0;
  overflow-wrap: anywhere;
  hyphens: auto;
}

main.siteMain .homeHeroSlider__title a {
  color: inherit;
  text-decoration: none;
}

main.siteMain .homeHeroSlider__title a:hover {
  color: color-mix(in oklab, var(--accent, #60a5fa) 75%, var(--text, #e5e7eb));
}

main.siteMain .homeHeroSlider__lead {
  margin: 0;
  font-size: clamp(0.8125rem, 1.4vw, 0.9375rem);
  line-height: 1.55;
  color: var(--muted, #94a3b8);
  min-width: 0;
  overflow-wrap: anywhere;
  hyphens: auto;
}

main.siteMain .hvNewsSlider__lead {
  margin: 0;
  font-size: clamp(0.8125rem, 1.4vw, 0.9375rem);
  line-height: 1.55;
  color: var(--muted, #94a3b8);
  text-align: justify;
  min-width: 0;
  overflow-wrap: anywhere;
  -webkit-hyphens: none;
  hyphens: none;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: var(--hvNewsSliderLeadClamp, 9);
  line-clamp: var(--hvNewsSliderLeadClamp, 9);
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Контейнерная адаптивность (как в HvSlider): типографика и переносы от ширины блока, а не viewport. */
main.siteMain .homeHeroSlider,
main.siteMain .hvUiSlider.hvNewsSlider {
  container-type: inline-size;
}

@supports (font-size: 1cqw) {
  main.siteMain .hvNewsSlider__title {
    font-size: clamp(0.95rem, 2.25cqw, 1.05rem);
  }

  main.siteMain .homeHeroSlider__title {
    font-size: clamp(0.95rem, 3.4cqw, 1.35rem);
  }

  main.siteMain .homeHeroSlider__lead,
  main.siteMain .hvNewsSlider__lead {
    font-size: clamp(0.8rem, 1.85cqw, 0.9rem);
  }
}

/* Фолбэк для браузеров без container queries: в мобильном viewport тоже только картинка. */
@media (max-width: 640px) {
  main.siteMain .hvUiSlider.hvNewsSlider .hvNewsSlider__layout {
    min-height: 0;
  }

  main.siteMain .hvUiSlider.hvNewsSlider .hvNewsSlider__rightCol {
    display: none;
  }

  main.siteMain .hvUiSlider.hvNewsSlider .hvNewsSlider__mediaViewport {
    width: 100%;
    aspect-ratio: 16 / 9;
    min-height: 0;
  }

  main.siteMain .hvUiSlider.hvNewsSlider .hvNewsSlider__mediaItem .hvNewsSlider__imagePreview.hvUiImage {
    height: 100%;
  }
}

/* HvSlider parity: в узком контейнере показываем только картинку (без текста). */
@container (max-width: 520px) {
  main.siteMain .hvUiSlider.hvNewsSlider .hvNewsSlider__layout {
    min-height: 0;
    grid-template-columns: 1fr;
  }

  main.siteMain .hvUiSlider.hvNewsSlider .hvNewsSlider__rightCol {
    display: none;
  }

  main.siteMain .hvUiSlider.hvNewsSlider .hvNewsSlider__mediaViewport {
    width: 100%;
    aspect-ratio: 16 / 9;
    min-height: 0;
  }

  main.siteMain .hvUiSlider.hvNewsSlider .hvNewsSlider__mediaItem .hvNewsSlider__imagePreview.hvUiImage {
    height: 100%;
  }
}

main.siteMain .homeHeroSlider__action {
  margin-top: auto;
  align-self: flex-end;
}

/* hvNewsSlider__action удалён из разметки (чип «Подробнее» больше не нужен) */

main.siteMain .homeHeroSlider__action .hvChip.homeHeroSlider__cta {
  font-weight: 600;
  font-size: 12px;
  letter-spacing: 0.07em;
  text-transform: uppercase;
}

/* hvNewsSlider__cta удалён вместе с action */

main.siteMain .homeHeroSlider__controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  padding: 3px 5px 5px;
  border-top: 1px solid color-mix(in oklab, var(--hv-accent-line) 45%, transparent);
}

main.siteMain .hvNewsSlider__controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  padding: 2px clamp(14px, 3.4vw, 24px) 2px;
  box-sizing: border-box;
  min-width: 0;
}

main.siteMain .homeHeroSlider__arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 10px;
  border: 1px solid transparent;
  background: color-mix(in oklab, var(--panel, #0f172a) 70%, transparent);
  color: var(--text, #e5e7eb);
  font-size: 1.35rem;
  line-height: 1;
  cursor: pointer;
  transition: border-color 0.15s ease, background 0.15s ease;
}

main.siteMain .hvNewsSlider__arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 10px;
  border: 1px solid transparent;
  background: color-mix(in oklab, var(--panel, #0f172a) 70%, transparent);
  color: var(--text, #e5e7eb);
  font-size: 1.35rem;
  line-height: 1;
  cursor: pointer;
  transition: border-color 0.15s ease, background 0.15s ease;
}

main.siteMain .homeHeroSlider__arrow:hover,
main.siteMain .homeHeroSlider__arrow:focus-visible {
  border-color: var(--hv-accent-line-strong);
  background: color-mix(in oklab, var(--panel2, #0f172a) 88%, transparent);
}

main.siteMain .hvNewsSlider__arrow:hover,
main.siteMain .hvNewsSlider__arrow:focus-visible {
  border-color: var(--hv-accent-line-strong);
  background: color-mix(in oklab, var(--panel2, #0f172a) 88%, transparent);
}

main.siteMain .homeHeroSlider__arrowIcon {
  display: block;
  margin-top: -2px;
}

main.siteMain .hvNewsSlider__arrowIcon {
  display: block;
  margin-top: -2px;
}

/* hv-button внутри стрелок — используем как icon-only кнопку */
main.siteMain .hvNewsSlider__arrow.hvIconTextBtn--iconOnly {
  width: 36px;
  height: 36px;
}

main.siteMain .homeHeroSlider__dots {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

main.siteMain .hvNewsSlider__dots {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

main.siteMain .homeHeroSlider__dot {
  width: 9px;
  height: 9px;
  border-radius: 999px;
  border: 1px solid color-mix(in oklab, var(--hv-accent-line) 70%, transparent);
  background: transparent;
  padding: 0;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
}

main.siteMain .hvNewsSlider__dot {
  width: 9px;
  height: 9px;
  border-radius: 999px;
  border: 1px solid color-mix(in oklab, var(--hv-accent-line) 70%, transparent);
  background: transparent;
  padding: 0;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
}

main.siteMain .homeHeroSlider__dot.is-active {
  background: color-mix(in oklab, var(--accent, #60a5fa) 85%, transparent);
  border-color: color-mix(in oklab, var(--accent, #60a5fa) 70%, transparent);
  transform: scale(1.15);
}

main.siteMain .hvNewsSlider__dot.is-active {
  background: color-mix(in oklab, var(--accent, #60a5fa) 85%, transparent);
  border-color: color-mix(in oklab, var(--accent, #60a5fa) 70%, transparent);
  transform: scale(1.15);
}

/* hv-news-slider — модификатор sharp; ниже правила с .hvNewsSlider .hvNewsSlider__* перекрывают базовые */
main.siteMain .hvNewsSlider--sharp {
  border-radius: 0;
}

main.siteMain .hvNewsSlider .hvNewsSlider__mediaLink {
  border-radius: 0;
}

main.siteMain .hvNewsSlider .hvNewsSlider__mediaItem .hvNewsSlider__imagePreview.hvImagePreview {
  width: 100%;
  height: 100%;
  border-radius: 10px;
  overflow: hidden;
  border: 1px solid color-mix(in oklab, var(--hv-accent-line) 50%, transparent);
}

main.siteMain .hvNewsSlider--sharp .hvNewsSlider__mediaItem .hvNewsSlider__imagePreview.hvImagePreview {
  border-radius: 0;
}

@media (max-width: 640px) {
  main.siteMain .homeHeroSlider__slide {
    flex-direction: column;
    min-height: 0;
  }

  main.siteMain .homeHeroSlider__media {
    flex: 0 0 auto;
    width: 100%;
  }

  main.siteMain .homeHeroSlider__mediaLink {
    min-height: 180px;
  }

  main.siteMain .homeHeroSlider__img {
    min-height: 180px;
  }

  main.siteMain .hvNewsSlider__chrome {
    /* legacy */
  }

  main.siteMain .hvNewsSlider__slide {
    /* legacy */
  }

  main.siteMain .hvNewsSlider__media {
    /* legacy */
  }

  main.siteMain .hvNewsSlider__mediaLink {
    /* legacy */
  }

  main.siteMain .hvNewsSlider__layout {
    grid-template-columns: 1fr;
  }

  main.siteMain .hvNewsSlider__mediaViewport {
    min-height: 180px;
  }

  main.siteMain .hvNewsSlider__controls {
    width: 100%;
  }
}

main.siteMain .homeFeedMount {
  display: flex;
  flex-direction: column;
  gap: 22px;
}

/* post-feed-channel: сетка; число колонок — CSS-переменная из extras.listColumns (см. partials списка рубрики), по умолчанию 3 */
main.siteMain .postFeedChannelGrid {
  display: grid;
  gap: 14px;
  grid-template-columns: repeat(var(--postFeedGridCols, 3), minmax(0, 1fr));
}
main.siteMain .postFeedChannelGrid--newspaper {
  grid-template-columns: repeat(var(--postFeedGridCols, 3), minmax(0, 1fr));
}
@media (max-width: 980px){
  main.siteMain .postFeedChannelGrid{ grid-template-columns:repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px){
  main.siteMain .postFeedChannelGrid{ grid-template-columns:1fr; }
}

/* Списки /type/page и др.: сетка stack/block (как колонки у page_body витрины) */
main.siteMain .typeListGrid {
  display: grid;
  gap: 14px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
main.siteMain .typeListGrid--cols2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
main.siteMain .typeListGrid--cols3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
main.siteMain .typeListGrid--cols4 {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
@media (max-width: 980px) {
  main.siteMain .typeListGrid--cols3,
  main.siteMain .typeListGrid--cols4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 640px) {
  main.siteMain .typeListGrid {
    grid-template-columns: 1fr;
  }
}

main.siteMain .typeListLead {
  margin: 0.4em 0 0;
  font-size: 0.95rem;
  line-height: 1.45;
  max-width: 52ch;
}

/* Заголовки каналов: без заливки; сверху внешняя + внутренняя горизонталь (::before); снизу без линий; шрифт — var(--sans) */
main.siteMain .homeFeedChannelTitle {
  --home-feed-channel-accent: #72a0c1;
  --home-feed-channel-inner: color-mix(in oklab, var(--home-feed-channel-accent) 68%, transparent);
  position: relative;
  width: 100%;
  margin: 0 0 12px;
  padding: 0;
  border: none;
  font: inherit;
}

main.siteMain .homeFeedChannelTitle--chapter {
  --home-feed-channel-accent: #7eb8d8;
}

main.siteMain .homeFeedChannelTitle--main {
  --home-feed-channel-accent: #6b9fd4;
}

main.siteMain .homeFeedChannelTitle--newspaper {
  --home-feed-channel-accent: #5eb3c0;
}

main.siteMain .homeFeedChannelTitle--video {
  --home-feed-channel-accent: #c9a227;
}

main.siteMain .homeFeedChannelTitle--devdiary {
  --home-feed-channel-accent: #9d8bc9;
}

main.siteMain .homeFeedChannelTitle__frame {
  --hfc-gap: 3px;
  display: block;
  position: relative;
  box-sizing: border-box;
  padding: 7px 22px;
  background: transparent;
  border-top: 1px solid var(--home-feed-channel-accent);
}

/* Верх / низ: только внутренние горизонтали на всю ширину, без боковых «ушек» */
main.siteMain .homeFeedChannelTitle__frame::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  pointer-events: none;
  z-index: 0;
  background: linear-gradient(var(--home-feed-channel-inner), var(--home-feed-channel-inner)) 0 var(--hfc-gap) / 100% 1px no-repeat;
}

main.siteMain .homeFeedChannelTitle__text {
  display: block;
  position: relative;
  z-index: 1;
  text-align: center;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-family: var(--sans, "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
  font-size: clamp(0.75rem, 1.55vw, 0.9rem);
  font-weight: 600;
  line-height: 1.4;
  color: color-mix(in oklab, var(--text, #e5e7eb) 96%, transparent);
}

html[data-theme="light"] main.siteMain .homeFeedChannelTitle__text {
  color: var(--text, #0f172a);
}

/* Светлая тема: акценты секций — темнее, линии читаются на белом */
html[data-theme="light"] main.siteMain .homeFeedChannelTitle {
  --home-feed-channel-inner: color-mix(in oklab, var(--home-feed-channel-accent) 50%, transparent);
}

html[data-theme="light"] main.siteMain .homeFeedChannelTitle--chapter {
  --home-feed-channel-accent: #0284c7;
}

html[data-theme="light"] main.siteMain .homeFeedChannelTitle--main {
  --home-feed-channel-accent: #1d4ed8;
}

html[data-theme="light"] main.siteMain .homeFeedChannelTitle--newspaper {
  --home-feed-channel-accent: #0d9488;
}

html[data-theme="light"] main.siteMain .homeFeedChannelTitle--video {
  --home-feed-channel-accent: #b45309;
}

html[data-theme="light"] main.siteMain .homeFeedChannelTitle--devdiary {
  --home-feed-channel-accent: #6d28d9;
}

/* Теги на карточке (hv-chip compact + color в partial); под лидом */
main.siteMain .homeFeedItem__tags {
  margin: 8px 0 0;
  padding: 0;
}

main.siteMain .homeFeedItem__tagList {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 9px;
  margin: 0;
  padding: 0;
  list-style: none;
}

main.siteMain .homeFeedItem__tagItem {
  margin: 0;
  padding: 0;
}

main.siteMain .homeFeedItem__tags .hvChip.homeFeedItem__tagChip {
  font-family: var(--sans, "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
}

main.siteMain .itemPublicationTags .homeFeedItem__tags .hvUiChip.homeFeedItem__tagChip {
  font-family: var(--sans, "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
}

/*
  Светлая тема: теги (inline --hv-chip-accent из partial) на белой карточке — более насыщенные тона.
  Перебиваем inline-переменную и итоговые цвета через !important.
*/
html[data-theme="light"] main.siteMain .homeFeedItem__tags--newspaper .hvChip.homeFeedItem__tagChip.hvChip--tone-link {
  --hv-chip-accent: #0f766e !important;
  border-color: color-mix(in oklab, #0f766e 44%, var(--line, #e2e8f0)) !important;
  background: color-mix(in oklab, #0f766e 11%, var(--panel2, #f8fafc)) !important;
  color: #0f766e !important;
}

html[data-theme="light"] main.siteMain .homeFeedItem__tags--newspaper .hvChip.homeFeedItem__tagChip.hvChip--tone-link:hover {
  border-color: #0d9488 !important;
  background: color-mix(in oklab, #0d9488 16%, var(--panel2, #f1f5f9)) !important;
  color: #115e59 !important;
}

html[data-theme="light"] main.siteMain .itemPublicationTags .homeFeedItem__tags--newspaper .hvUiChip.homeFeedItem__tagChip.hvUiChip--tone-link.hvUiChip--noBackground {
  --hv-ui-chip-accent: #0f766e !important;
  border-color: color-mix(in oklab, #0f766e 44%, var(--line, #e2e8f0)) !important;
  background: transparent !important;
  color: #0f766e !important;
}

html[data-theme="light"] main.siteMain .itemPublicationTags .homeFeedItem__tags--newspaper .hvUiChip.homeFeedItem__tagChip.hvUiChip--tone-link.hvUiChip--noBackground:hover {
  border-color: #0d9488 !important;
  background: transparent !important;
  color: #115e59 !important;
}

html[data-theme="light"] main.siteMain .homeFeedItem__tags--chapter .hvChip.homeFeedItem__tagChip.hvChip--tone-link {
  --hv-chip-accent: #0369a1 !important;
  border-color: color-mix(in oklab, #0369a1 44%, var(--line, #e2e8f0)) !important;
  background: color-mix(in oklab, #0369a1 11%, var(--panel2, #f8fafc)) !important;
  color: #0369a1 !important;
}

html[data-theme="light"] main.siteMain .homeFeedItem__tags--chapter .hvChip.homeFeedItem__tagChip.hvChip--tone-link:hover {
  border-color: #0284c7 !important;
  background: color-mix(in oklab, #0284c7 16%, var(--panel2, #f1f5f9)) !important;
  color: #0c4a6e !important;
}

/* /tags/:slug — шапка над hv-news-row */
main.siteMain.siteMain--tagPage .tagPageHeader {
  margin: 0 0 20px;
  padding: 0 2px;
}
main.siteMain.siteMain--tagPage .tagPageTitle {
  margin: 0;
  font-size: 1.35rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  line-height: 1.3;
  color: color-mix(in oklab, var(--text, #e5e7eb) 96%, transparent);
}

/* Плагин core-share-page: кнопка «Поделиться» в слоте layout (внутри siteMain) */
main.siteMain .coreSharePagePlugin {
  margin: 0 0 12px;
  min-width: 0;
}

main.siteMain.siteMain--typesIndex .typesIndexSection {
  min-width: 0;
}
main.siteMain.siteMain--typesIndex .typesIndexCard {
  min-width: 0;
}
main.siteMain.siteMain--typesIndex .typesIndexCard__title {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 600;
}

/* /tags — якоря + быстрый переход (vitrine-app, tagsIndexIsland) */
main.siteMain.siteMain--tagsIndex .tagsIndexAnchor {
  scroll-margin-top: 1.25rem;
}
main.siteMain.siteMain--tagsIndex .tagsIndexVitrineRoot {
  margin: 0 0 14px;
  min-width: 0;
}
main.siteMain.siteMain--tagsIndex .tagsIndexQuickNav {
  margin: 0;
  padding: 0 2px;
}
main.siteMain.siteMain--tagsIndex .tagsIndexQuickNav__list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 14px;
  margin: 0;
  padding: 0;
  list-style: none;
}
main.siteMain.siteMain--tagsIndex .tagsIndexQuickNav__item {
  margin: 0;
}
main.siteMain.siteMain--tagsIndex .tagsIndexQuickNav__link {
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

/* /tags — обёртка без класса .card (только tagsIndexCard) */
main.siteMain.siteMain--tagsIndex .tagsIndexCard {
  min-width: 0;
  box-sizing: border-box;
}

/* /tags — hv-panel-block по группам + hv-info-row */
main.siteMain.siteMain--tagsIndex .tagsIndexStack {
  display: flex;
  flex-direction: column;
  gap: 18px;
  min-width: 0;
}
main.siteMain.siteMain--tagsIndex .tagsIndexPanel.hvPanelBlock {
  min-width: 0;
}
main.siteMain.siteMain--tagsIndex .tagsIndexPanel__heading {
  margin: 0 0 12px;
  padding: 0 2px;
  font-size: 1.05rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  line-height: 1.3;
  color: color-mix(in oklab, var(--muted, #94a3b8) 88%, var(--text, #e5e7eb));
}
main.siteMain.siteMain--tagsIndex .tagsIndexPanel__rows {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
}
main.siteMain.siteMain--tagsIndex .tagsIndexPanel__rows .hvInfoRow {
  min-width: 0;
}
main.siteMain.siteMain--tagsIndex .tagsIndexPanel__rows .hvInfoRow__subtitle {
  font-family: ui-monospace, "Cascadia Code", "Segoe UI Mono", monospace;
  font-size: 0.82em;
}

main.siteMain .homeFeedSection__emptyState {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 72px;
  margin: 0;
  padding: 28px 18px;
  text-align: center;
  border-radius: 10px;
  border: 1px dashed color-mix(in oklab, var(--hv-accent-line) 65%, transparent);
  background: color-mix(in oklab, var(--panel2, #0f172a) 70%, transparent);
  box-sizing: border-box;
}

main.siteMain .homeFeedSection__emptyLabel {
  margin: 0;
  max-width: 28ch;
  font-size: 0.95rem;
  line-height: 1.45;
  font-family: var(--sans, "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
  color: color-mix(in oklab, var(--muted, #94a3b8) 92%, var(--text, #e5e7eb));
}

main.siteMain .homeFeedList {
  display: flex;
  flex-direction: column;
  gap: 0;
}

/* Одиночное превью (hv-news-row / hv-news-stack) без родительского .homeFeedList */
main.siteMain .hvNewsCard__shell {
  display: block;
  min-width: 0;
}

/* hv-news-block.ejs: превью сверху, опционально заголовок по центру (uppercase), subtitle справа .muted */
main.siteMain .hvNewsBlock__shell {
  display: block;
  min-width: 0;
}

main.siteMain .hvNewsBlock {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 10px;
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

main.siteMain .hvNewsBlock--compact {
  gap: 6px;
}

main.siteMain .hvNewsBlock__imageLink {
  display: block;
  min-width: 0;
  text-decoration: none;
  color: inherit;
}

main.siteMain .hvNewsBlock__imageLink .hvNewsBlock__imagePreview {
  width: 100%;
  max-width: 100%;
  min-height: 0;
}

main.siteMain .hvNewsBlock__title {
  margin: 0;
  padding: 0;
  text-align: center;
  -webkit-hyphens: none;
  hyphens: none;
  font-size: clamp(0.75rem, 1.45vw, 0.9rem);
  font-weight: 700;
  line-height: 1.35;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-family: var(--sans, "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
}

main.siteMain .hvNewsBlock__title a {
  color: color-mix(in oklab, var(--text, #e5e7eb) 96%, transparent);
  text-decoration: none;
}

main.siteMain .hvNewsBlock__title a:hover {
  color: color-mix(in oklab, var(--accent, #60a5fa) 78%, var(--text, #e5e7eb));
}

main.siteMain .hvNewsBlock__subtitle {
  margin: 0;
  padding: 0;
  text-align: right;
  font-size: clamp(0.65rem, 1.15vw, 0.75rem);
  line-height: 1.35;
  font-family: var(--sans, "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
}

main.siteMain .hvNewsBlock--compact .hvNewsBlock__title {
  font-size: clamp(0.68rem, 1.25vw, 0.82rem);
}

main.siteMain .hvNewsBlock--compact .hvNewsBlock__subtitle {
  font-size: clamp(0.6rem, 1.05vw, 0.7rem);
}

html[data-theme="light"] main.siteMain .hvNewsBlock__title a {
  color: var(--text, #0f172a);
}

html[data-theme="light"] main.siteMain .hvNewsBlock__title a:hover {
  color: var(--accent, #2563eb);
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem {
  margin: 0;
  border: none;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  padding: 14px 0;
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 10px;
}

/* Гэндвиль СЕГОДНЯ / Истории Гэндвиля: превью слева, текст справа */
main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--legacy {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  gap: 14px;
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem:hover {
  box-shadow: none;
  border-color: transparent;
}

/* Разделитель между карточками: обёртка hvNewsCard__shell (hv-news-*), не соседние article */
main.siteMain .homeFeedList > .hvNewsCard__shell + .hvNewsCard__shell {
  border-top: 1px solid color-mix(in oklab, var(--hv-accent-line) 45%, transparent);
}

/* Три колонки (Новости / Видео / Дневники): компактнее заголовок и лид, чем базовый .newsCard в shared-ui */
main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem .newsCardTitle {
  -webkit-hyphens: none;
  hyphens: none;
  font-size: clamp(0.8125rem, 1.5vw, 0.9375rem);
  font-weight: 600;
  line-height: 1.35;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem .newsCardExcerpt {
  margin: 0;
  -webkit-hyphens: none;
  hyphens: none;
  font-size: 0.8125rem;
  line-height: 1.5;
  text-align: justify;
  color: color-mix(in oklab, var(--muted, #94a3b8) 92%, var(--text, #e5e7eb));
}

/* hv-news-row / hv-news-stack: лид в партиале не режем в CSS (укороченный отрывок только если нет явного лида — home-feed-item-row) */
main.siteMain
  :is(.homeFeedList, .hvNewsCard__shell)
  .newsCard:is(.hvNewsCard--row, .hvNewsCard--stack)
  .newsCardExcerpt {
  display: block;
  overflow: visible;
  -webkit-line-clamp: unset;
  line-clamp: unset;
  max-height: none;
}

/* Под превью (stack): слева дата (табло), справа заголовок + лид */
main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack .homeFeedItem__body {
  width: 100%;
  min-width: 0;
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack .homeFeedItem__textRow {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  gap: 12px;
  width: 100%;
  min-width: 0;
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack .homeFeedItem__dateCol {
  flex: 0 0 auto;
  width: 3.25rem;
  min-width: 3rem;
  max-width: 4.5rem;
  padding-right: 10px;
  border-right: 1px solid color-mix(in oklab, var(--hv-accent-line) 55%, transparent);
  text-align: center;
  box-sizing: border-box;
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack .homeFeedItem__channelTag {
  margin: 0 0 6px;
  font-size: 0.5625rem;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: color-mix(in oklab, var(--muted, #94a3b8) 88%, var(--text, #e5e7eb));
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  word-break: break-word;
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack .homeFeedItem__dateBlock {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  margin: 0;
  padding: 0;
  font-family: var(--sans, "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack .homeFeedItem__dateDay {
  display: block;
  font-size: clamp(1.35rem, 2.8vw, 1.6rem);
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.02em;
  color: color-mix(in oklab, var(--text, #e5e7eb) 96%, transparent);
  font-variant-numeric: tabular-nums;
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack .homeFeedItem__dateSub {
  display: block;
  font-size: clamp(0.6875rem, 1.45vw, 0.8125rem);
  font-weight: 500;
  line-height: 1.25;
  letter-spacing: 0.015em;
  color: color-mix(in oklab, var(--muted, #94a3b8) 95%, var(--text, #e5e7eb));
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack .homeFeedItem__dateTime {
  display: block;
  margin-top: 2px;
  font-size: clamp(0.625rem, 1.25vw, 0.6875rem);
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: 0.04em;
  font-variant-numeric: tabular-nums;
  color: color-mix(in oklab, var(--muted, #94a3b8) 92%, var(--text, #e5e7eb));
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack .homeFeedItem__dateBlock--plain {
  font-size: 0.6875rem;
  line-height: 1.3;
  color: color-mix(in oklab, var(--muted, #94a3b8) 92%, var(--text, #e5e7eb));
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack .homeFeedItem__copyCol {
  flex: 1 1 auto;
  min-width: 0;
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack .homeFeedItem__copyCol .newsCardTitle {
  margin-top: 0;
}

/* Лента: токен отступа визира — внутренний .hvImage (hv-image-preview) */
main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem .homeFeedItem__imagePreview {
  --home-feed-vf-inset: 8px;
}
main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem .homeFeedItem__imagePreview .hvImage.hvImage--viewfinder {
  padding: var(--home-feed-vf-inset);
}

/* shared-ui: .newsCardImage — скругление/overflow режут визир; panel2-фон у превью не нужен */
main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack .newsCardImage.homeFeedItem__image {
  flex: 0 0 auto;
  align-self: stretch;
  width: 100%;
  max-width: 100%;
  height: auto !important;
  min-height: 0;
  border-radius: 0;
  overflow: visible;
  background: transparent;
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack .homeFeedItem__image {
  display: block;
  width: 100%;
  min-width: 0;
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack .homeFeedItem__image .hvImagePreview {
  width: 100%;
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--legacy .newsCardImage.homeFeedItem__image {
  flex: 0 0 200px;
  max-width: 200px;
  width: 200px;
  height: auto;
  min-height: 0;
  border-radius: 0;
  overflow: visible;
  background: transparent;
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--legacy .homeFeedItem__image {
  display: block;
  width: 200px;
  flex: 0 0 200px;
  height: auto;
  min-width: 0;
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--legacy .homeFeedItem__body {
  flex: 1 1 auto;
  min-width: 0;
}

/* HvCardNews parity: row → визуально stack при ширине **контейнера карточки** (колонка ленты, сайдбар закрепа) < 400px.
   container-type на .hvNewsCard__shell, не на article: @container смотрит на **ближайшего** предка-контейнер;
   с article-контейнером в узкой колонке/сайдбаре срабатывание было ненадёжно; плюс закреп вне .homeFeedList. */
main.siteMain .hvNewsCard__shell:has(> .newsCard.hvNewsCard--row) {
  container-type: inline-size;
}

@container (max-width: 399.98px) {
  main.siteMain .hvNewsCard__shell .newsCard.homeFeedItem.homeFeedItem--legacy.hvNewsCard--row {
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
  }

  main.siteMain .hvNewsCard__shell .newsCard.homeFeedItem.homeFeedItem--legacy.hvNewsCard--row .newsCardImage.homeFeedItem__image {
    flex: 0 0 auto;
    width: 100%;
    max-width: 100%;
  }

  main.siteMain .hvNewsCard__shell .newsCard.homeFeedItem.homeFeedItem--legacy.hvNewsCard--row .homeFeedItem__image {
    width: 100%;
    flex: 0 0 auto;
  }
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--legacy .newsCardMeta {
  font-size: 11px;
  font-family: var(--mono, ui-monospace, monospace);
  letter-spacing: 0.02em;
  margin-bottom: 4px;
  color: var(--muted, #94a3b8);
}

/* compact: уже́ превью (hv-news-row / hv-news-stack) */
main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--legacy.homeFeedItem--compact {
  padding: 8px 0;
  gap: 10px;
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--legacy.homeFeedItem--compact .newsCardImage.homeFeedItem__image {
  flex: 0 0 160px;
  max-width: 160px;
  width: 160px;
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--legacy.homeFeedItem--compact .homeFeedItem__image {
  width: 160px;
  flex: 0 0 160px;
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack.homeFeedItem--compact {
  padding: 8px 0;
  gap: 6px;
}

main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack.homeFeedItem--compact .newsCardTitle {
  font-size: clamp(0.75rem, 1.4vw, 0.875rem);
}

/* Визир + скругление дают «рваные» углы у скобок; на главной — острые углы у кадра и фото */
main.siteMain .homeFeedItem__imagePreview .hvImage__frame,
main.siteMain .homeFeedItem__imagePreview .hvImage__img {
  border-radius: 0;
}

/*
 * Заглушки GET /media/svg/placeholder-card*.svg в ленте: shared-ui даёт fitContain + width/height auto !important,
 * из‑за чего <img src="…svg"> в flex-каркасе визира может схлопнуться до ~0×0 (видны только углы визира).
 * Для SVG в карточке ленты задаём ширину кадра; растровые обложки не трогаем ([src$=".svg"]).
 */
main.siteMain
  :is(.homeFeedList, .hvNewsCard__shell)
  .homeFeedItem__imagePreview.hvImagePreview--fitContain
  .hvImagePreview__media
  > .hvImage
  .hvImage__img[src$=".svg"] {
  width: 100% !important;
  height: auto !important;
  max-height: 100% !important;
  object-fit: contain !important;
  align-self: center;
}

main.siteMain .homeFeedSection__more {
  display: flex;
  justify-content: flex-end;
  margin-top: 8px;
  padding-top: 4px;
}

/* «Читать больше» / «Смотреть больше»: hv-chip (tone link, noBorder, noBackground) */
main.siteMain .homeFeedSection__more .homeFeedSection__moreLink.hvChip,
main.siteMain .homeFeedSection__more .homeFeedSection__moreLink.hvChip:visited {
  font-size: 12px;
  font-weight: 600;
  line-height: 1.35;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  text-decoration: none;
  color: color-mix(in oklab, var(--accent, #60a5fa) 78%, var(--text, #e5e7eb));
  padding: 0;
  min-height: 0;
  font-family: var(--sans, "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
}

main.siteMain .homeFeedSection__more .homeFeedSection__moreLink.hvChip:hover,
main.siteMain .homeFeedSection__more .homeFeedSection__moreLink.hvChip:active {
  color: var(--accent, #60a5fa);
  text-decoration: none;
}

main.siteMain .homeFeedSection__more .homeFeedSection__moreLink.hvChip:focus-visible {
  outline: 2px solid color-mix(in oklab, var(--accent, #60a5fa) 65%, transparent);
  outline-offset: 2px;
  border-radius: 2px;
}

html[data-theme="light"] main.siteMain .homeFeedSection__more .homeFeedSection__moreLink.hvChip,
html[data-theme="light"] main.siteMain .homeFeedSection__more .homeFeedSection__moreLink.hvChip:visited {
  text-decoration: none;
  color: color-mix(in oklab, var(--accent, #2563eb) 82%, var(--text, #0f172a));
}

html[data-theme="light"] main.siteMain .homeFeedSection__more .homeFeedSection__moreLink.hvChip:hover,
html[data-theme="light"] main.siteMain .homeFeedSection__more .homeFeedSection__moreLink.hvChip:active {
  color: var(--accent, #2563eb);
  text-decoration: none;
}

/* Пагинатор: /feed/:channel, /private-feed/:channel */
main.siteMain .postFeedPager {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid color-mix(in oklab, var(--hv-accent-line) 55%, transparent);
}

main.siteMain .postFeedPager__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  height: 32px;
  padding: 0 6px;
  box-sizing: border-box;
  border-radius: 6px;
  font-size: 13px;
  font-weight: 600;
  line-height: 1;
  font-family: var(--sans, "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
  border: 1px solid color-mix(in oklab, var(--line, #334155) 85%, transparent);
  background: color-mix(in oklab, var(--panel2, #0f172a) 75%, transparent);
  color: var(--text, #e5e7eb);
  text-decoration: none;
  transition: border-color 0.15s ease, background 0.15s ease, color 0.15s ease;
}

main.siteMain a.postFeedPager__btn:hover {
  border-color: var(--hv-accent-line-strong);
  background: color-mix(in oklab, var(--panel, #111827) 88%, transparent);
}

main.siteMain a.postFeedPager__btn:focus-visible {
  outline: 2px solid color-mix(in oklab, var(--accent, #60a5fa) 65%, transparent);
  outline-offset: 2px;
}

main.siteMain .postFeedPager__btn--current {
  border-color: var(--accent, #60a5fa);
  background: var(--accent, #60a5fa);
  color: #0b1220;
}

main.siteMain .postFeedPager__ellipsis {
  color: var(--muted, #94a3b8);
  font-size: 14px;
  font-weight: 700;
  padding: 0 2px;
  user-select: none;
}

html[data-theme="light"] main.siteMain .postFeedPager {
  border-top-color: color-mix(in oklab, var(--hv-accent-line) 70%, transparent);
}

html[data-theme="light"] main.siteMain .postFeedPager__btn:not(.postFeedPager__btn--current) {
  border-color: color-mix(in oklab, var(--line, #e2e8f0) 90%, transparent);
  background: color-mix(in oklab, var(--panel2, #f1f5f9) 92%, transparent);
  color: var(--text, #0f172a);
}

html[data-theme="light"] main.siteMain a.postFeedPager__btn:hover {
  border-color: var(--hv-accent-line-strong);
  background: color-mix(in oklab, var(--panel, #ffffff) 96%, transparent);
}

html[data-theme="light"] main.siteMain .postFeedPager__btn--current {
  border-color: var(--accent, #2563eb);
  background: var(--accent, #2563eb);
  color: #f8fafc;
}

main.siteMain #postFeedChannelMount[aria-busy="true"] {
  opacity: 0.55;
  pointer-events: none;
  transition: opacity 0.15s ease;
}

main.siteMain .homeFeedDeck {
  display: grid;
  gap: 18px 22px;
  align-items: start;
}

main.siteMain .homeFeedDeck--two {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}

main.siteMain .homeFeedDeck--three {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
}

main.siteMain .homeFeedDeck--solo .homeFeedDeck__col {
  min-width: 0;
}

@media (max-width: 720px) {
  main.siteMain .homeFeedDeck--two,
  main.siteMain .homeFeedDeck--three {
    grid-template-columns: 1fr;
  }
}

html[data-theme="light"] main.siteMain .homeHeroSlider {
  background: color-mix(in oklab, var(--panel2, #f1f5f9) 92%, transparent);
  border-color: color-mix(in oklab, var(--hv-accent-line) 80%, transparent);
  box-shadow: 0 12px 36px rgba(15, 23, 42, 0.08);
}

html[data-theme="light"] main.siteMain .hvNewsSlider {
  background: color-mix(in oklab, var(--panel2, #f1f5f9) 92%, transparent);
  border-color: color-mix(in oklab, var(--hv-accent-line) 80%, transparent);
  box-shadow: 0 12px 36px rgba(15, 23, 42, 0.08);
}

html[data-theme="light"] main.siteMain .homeHeroSlider--empty {
  background: color-mix(in oklab, var(--panel2, #f1f5f9) 88%, transparent);
}

html[data-theme="light"] main.siteMain .homeHeroSlider__arrow {
  background: color-mix(in oklab, var(--panel, #ffffff) 96%, transparent);
  color: var(--text, #0f172a);
}

html[data-theme="light"] main.siteMain .hvNewsSlider__arrow {
  background: color-mix(in oklab, var(--panel, #ffffff) 96%, transparent);
  color: var(--text, #0f172a);
}

/* --- Светлая тема: те же роли, контраст для текста и панелей --- */
html[data-theme="light"] {
  --hv-accent-line: rgba(37, 99, 235, 0.22);
  --hv-accent-line-strong: rgba(37, 99, 235, 0.38);
  --hv-nav-submenu-bg: rgba(255, 255, 255, 0.92);
  --hv-rail-red: rgba(128, 0, 32, 0.42);
  --hv-nav-root-hover-bg: color-mix(in oklab, var(--hv-nav-submenu-bg) 68%, var(--hv-rail-red) 32%);
  --hv-shadow-dropdown: 0 14px 36px rgba(15, 23, 42, 0.12);
  /* Точки по бокам main: на светлом фоне нужна выше контрастность, чем у тёмной темы */
  --hv-side-dot: rgba(51, 65, 85, 0.38);
  --hv-side-gutter-darken: rgba(226, 232, 240, 0.55);
  --hv-side-border-glow: rgba(37, 99, 235, 0.12);
}

html[data-theme="light"] .siteFooter {
  background: linear-gradient(180deg, transparent, color-mix(in oklab, var(--panel2, #f1f5f9) 72%, transparent));
}

html[data-theme="light"] .hvPublication {
  background: color-mix(in oklab, var(--panel, #ffffff) 96%, transparent);
  box-shadow: 0 8px 28px rgba(15, 23, 42, 0.08);
}

html[data-theme="light"] .hvPublication .card {
  background: color-mix(in oklab, var(--panel2, #f1f5f9) 88%, transparent);
}

@media (min-width: 981px) {
  /* Без сильного общего ослабления слоя — иначе точки на светлом почти не видны (тёмная тема: базовый opacity 0.85 у ::before) */
  html[data-theme="light"] main.siteMain::before {
    opacity: 0.9;
  }
}

html[data-theme="light"] main.siteMain .newsCard {
  background: color-mix(in oklab, var(--panel, #ffffff) 96%, transparent);
  box-shadow: 0 4px 18px rgba(15, 23, 42, 0.06);
}

html[data-theme="light"] main.siteMain .newsCard:hover {
  box-shadow: 0 10px 28px rgba(15, 23, 42, 0.1);
}

html[data-theme="light"] main.siteMain .newsFeed__empty {
  border-color: color-mix(in oklab, var(--hv-accent-line) 80%, transparent);
  background: color-mix(in oklab, var(--panel2, #f1f5f9) 88%, transparent);
}

html[data-theme="light"] main.siteMain .homeFeedSection__emptyState {
  border-color: color-mix(in oklab, var(--hv-accent-line) 80%, transparent);
  background: color-mix(in oklab, var(--panel2, #f1f5f9) 88%, transparent);
}

html[data-theme="light"] main.siteMain .homeFeedSection__emptyLabel {
  color: var(--muted, #64748b);
}

html[data-theme="light"] main.siteMain .homeNews {
  box-shadow: 0 12px 36px rgba(15, 23, 42, 0.08);
}

html[data-theme="light"] main.siteMain .homeNews--feedToolbar {
  box-shadow: none;
}

html[data-theme="light"] main.siteMain .homeNews__titleBlock h2 {
  color: var(--text, #0f172a);
}

html[data-theme="light"] main.siteMain .homeNews__lead {
  color: #475569;
}

html[data-theme="light"] main.siteMain .homeNews .newsCardExcerpt {
  color: var(--muted, #64748b);
}

html[data-theme="light"] main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem .newsCardExcerpt {
  color: var(--muted, #64748b);
}

html[data-theme="light"] main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack .homeFeedItem__dateCol {
  border-right-color: color-mix(in oklab, var(--hv-accent-line) 72%, transparent);
}

html[data-theme="light"] main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack .homeFeedItem__dateDay {
  color: var(--text, #0f172a);
}

html[data-theme="light"] main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack .homeFeedItem__dateSub,
html[data-theme="light"] main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack .homeFeedItem__channelTag,
html[data-theme="light"] main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack .homeFeedItem__dateTime,
html[data-theme="light"] main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--stack .homeFeedItem__dateBlock--plain {
  color: var(--muted, #64748b);
}

html[data-theme="light"] main.siteMain :is(.homeFeedList, .hvNewsCard__shell) .newsCard.homeFeedItem.homeFeedItem--legacy .newsCardMeta {
  color: var(--muted, #64748b);
}

/* --- Публичные 403 / 404 (hv-panel-block) --- */
.publicError {
  margin: 0 0 24px;
}

.publicError__panel.hvPanelBlock {
  max-width: 640px;
  margin-left: auto;
  margin-right: auto;
}

.publicError__inner {
  padding: 4px 2px 2px;
}

.publicError__code {
  margin: 0 0 8px;
  font-size: 13px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted, #94a3b8);
}

.publicError__title {
  margin: 0 0 12px;
  font-size: clamp(1.15rem, 2.2vw, 1.45rem);
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  line-height: 1.25;
  color: var(--text, #e5e7eb);
}

.publicError__lead {
  margin: 0 0 18px;
  font-size: 15px;
  line-height: 1.5;
  max-width: 42em;
}

.publicError__actions {
  margin: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
}

.publicError__actions .publicError__homeChip {
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

html[data-theme="light"] .publicError__title {
  color: var(--text, #0f172a);
}

/* /api/public/help — справочник BFF (admin) */
.publicApiHelp {
  padding-block: clamp(1.25rem, 3vw, 2.5rem);
}

.publicApiHelp__panel.hvPanelBlock {
  margin-inline: auto;
}

.publicApiHelp__title {
  font-size: clamp(1.5rem, 2.5vw, 2rem);
  font-weight: 700;
  margin: 0 0 0.5rem;
}

.publicApiHelp__lead,
.publicApiHelp__groupSub {
  margin: 0 0 1.25rem;
}

.publicApiHelp__group {
  margin-top: 2rem;
}

.publicApiHelp__groupTitle {
  font-size: 1.35rem;
  margin: 0 0 0.35rem;
}

.publicApiHelp__groupLink {
  color: inherit;
  text-decoration: none;
}

.publicApiHelp__groupLink:hover {
  text-decoration: underline;
}

.publicApiHelp__table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.95rem;
}

.publicApiHelp__table th,
.publicApiHelp__table td {
  padding: 0.65rem 0.5rem;
  text-align: left;
  vertical-align: top;
  border-bottom: 1px solid color-mix(in srgb, var(--border, #334155) 55%, transparent);
}

.publicApiHelp__table th {
  font-weight: 600;
}

.publicApiHelp__verb {
  color: var(--link, #38bdf8);
  font-weight: 600;
  margin-right: 0.35rem;
}

.publicApiHelp__methodLink {
  color: inherit;
  text-decoration: none;
}

.publicApiHelp__methodLink:hover .publicApiHelp__path {
  text-decoration: underline;
}

.publicApiHelp__subTitle {
  font-size: 1.1rem;
  margin: 1.5rem 0 0.75rem;
}

.publicApiHelp__responseIntro {
  margin: 0 0 0.75rem;
  max-width: 72ch;
}

.publicApiHelp__code {
  overflow-x: auto;
  padding: 0.75rem 1rem;
  border-radius: 0.35rem;
  background: color-mix(in srgb, var(--surface-elevated, #1e293b) 90%, transparent);
  font-size: 0.82rem;
  line-height: 1.45;
  white-space: pre;
  tab-size: 2;
}

.publicApiHelp__subTitle--minor {
  font-size: 1rem;
  margin-top: 1.25rem;
}

.publicApiHelp__errors {
  margin: 0;
  padding-left: 1.25rem;
}

.publicApiHelp__crumb {
  margin: 0 0 0.75rem;
  font-size: 0.9rem;
}

.publicApiHelp__link {
  color: var(--link, #38bdf8);
}
