/* ==========================================================================
   Блог: лента статей и страница статьи
   ========================================================================== */

/* --- Лента ---------------------------------------------------------------- */

.blog-archive__list {
  display: grid;
  gap: var(--space-6);
  margin: 0;
  padding: 0;
  list-style: none;
}

@media (min-width: 600px) {
  .blog-archive__list {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 1024px) {
  .blog-archive__list {
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-7) var(--space-6);
  }
}

.blog-archive__item {
  min-width: 0;
}

/* --- Карточка статьи ------------------------------------------------------ */

.post-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-width: 0;
}

.post-card__media {
  display: block;
  margin-bottom: var(--space-4);
  overflow: hidden;
  border-radius: var(--radius-logo);
}

.post-card__media img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  transition: transform var(--transition-slow);
}

.post-card:hover .post-card__media img {
  transform: scale(1.03);
}

.post-card__body {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.post-card__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
  color: var(--color-text-muted);
  font-size: var(--fs-caption);
}

/* Рубрика — плашкой, чтобы отделялась от даты. */
.post-card__cat {
  padding: var(--space-1) var(--space-3);
  background-color: var(--color-bg-light);
  border-radius: var(--radius-sm);
  color: var(--color-navy);
  font-weight: var(--fw-medium);
}

.post-card__title {
  margin-bottom: var(--space-3);
  font-size: var(--fs-h4);
  font-weight: var(--fw-semibold);
  text-transform: none;
  letter-spacing: normal;
}

.post-card__title a {
  color: var(--color-navy);
  text-decoration: none;
}

.post-card__title a:hover {
  color: var(--color-accent);
}

.post-card__text {
  margin-bottom: 0;
  color: var(--color-text);
  font-size: var(--fs-small);
  line-height: var(--lh-base);
}

/* --- Страница статьи ------------------------------------------------------ */

.post-single__head {
  margin-bottom: var(--space-5);
}

.post-single__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-4);
  color: var(--color-text-muted);
  font-size: var(--fs-caption);
}

.post-single__title {
  margin-bottom: 0;
  text-align: left;
  text-transform: uppercase;
  letter-spacing: var(--ls-title);
}

.post-single__media {
  margin: 0 0 var(--space-6);
  overflow: hidden;
  border-radius: var(--radius-lg);
}

.post-single__media img {
  display: block;
  width: 100%;
  height: auto;
}

/* Ширину строки задаёт сама колонка — отдельное ограничение не нужно. */
.post-single__body {
  min-width: 0;
}

/* Заголовки разделов статьи набираются так же, как заголовки секций на
   остальных страницах: заглавными, с тем же трекингом. Подзаголовки h3
   внутри раздела остаются строчными — капслок на каждом уровне в длинном
   тексте читать тяжело. */
.post-single__body h2 {
  margin-top: var(--space-7);
  margin-bottom: var(--space-3);
  font-size: var(--fs-h3);
  text-transform: uppercase;
  letter-spacing: var(--ls-title);
}

.post-single__body h3 {
  margin-top: var(--space-6);
  margin-bottom: var(--space-2);
  font-size: var(--fs-h4);
}

.post-single__body h2:first-child,
.post-single__body h3:first-child {
  margin-top: 0;
}

.post-single__body img {
  height: auto;
  border-radius: var(--radius-md);
}

.post-single__body figure {
  margin-block: var(--space-5);
}

.post-single__body figcaption {
  margin-top: var(--space-3);
  color: var(--color-text-muted);
  font-size: var(--fs-caption);
}

/* Таблицы в статьях бывают широкими — уводим их в прокрутку, а не ломаем
   страницу горизонтальным скроллом целиком. */
.post-single__body table {
  display: block;
  max-width: 100%;
  overflow-x: auto;
  border-collapse: collapse;
}

.post-single__body th,
.post-single__body td {
  padding: var(--space-3) var(--space-4);
  border: var(--border);
  text-align: left;
  vertical-align: top;
}

.post-single__body th {
  background-color: var(--color-bg-light);
  font-weight: var(--fw-semibold);
}

.post-single__nav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-4);
  margin-top: var(--space-7);
  padding-top: var(--space-5);
  border-top: var(--border);
}

/* --- Форма под статьёй ----------------------------------------------------- */

.post-single__cta {
  background-color: var(--color-bg-light);
}

.post-single__cta-inner {
  display: grid;
  gap: var(--space-6);
}

@media (min-width: 1024px) {
  .post-single__cta-inner {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-8);
    align-items: start;
  }
}

.post-single__cta-text,
.post-single__cta-form {
  min-width: 0;
}

.post-single__cta-note {
  margin-top: var(--space-4);
  margin-bottom: 0;
  font-size: var(--fs-lead);
}

/* --- Страница статьи: две колонки ------------------------------------------ */

.post-single__layout {
  display: grid;
  gap: var(--space-7);
}

@media (min-width: 1024px) {
  /* Текст слева, боковая колонка справа. Колонка начинается от самого верха,
     поэтому обложка сужается до ширины текста и не лезет под панель. */
  .post-single__layout {
    grid-template-columns: minmax(0, 1fr) 300px;
    gap: var(--space-8);
    align-items: start;
  }
}

.post-single__main {
  min-width: 0;
}

/* Статья начинается выше обычной секции: сверху уже есть крошки. */
.post-single {
  padding-top: var(--space-4);
}

@media (min-width: 768px) {
  .post-single {
    padding-top: var(--space-5);
  }
}

.post-aside {
  display: grid;
  gap: var(--space-5);
  min-width: 0;
}

@media (min-width: 1024px) {
  /* Колонка едет вместе с текстом: оглавление нужно под рукой на всей статье.
     Выше шапки не уезжает — она перекрывала бы первые пункты. */
  .post-aside {
    position: sticky;
    top: calc(var(--header-height-lg) + var(--space-4));
    max-height: calc(100vh - var(--header-height-lg) - var(--space-6));
    overflow-y: auto;
    scrollbar-width: thin;
  }
}

.post-aside__box {
  padding: var(--space-5) var(--card-px);
  background-color: var(--color-bg-grey);
  border-radius: var(--radius-logo);
}

.post-aside__title {
  margin-bottom: var(--space-3);
  font-size: var(--fs-base);
  text-transform: uppercase;
  letter-spacing: var(--ls-title);
}

.post-aside__note {
  margin-bottom: var(--space-4);
  color: var(--color-text-muted);
  font-size: var(--fs-caption);
}

/* В блоке с формой заголовок работает призывом, поэтому крупнее остальных
   заголовков боковой колонки. */
.post-aside__form .post-aside__title {
  font-size: var(--fs-h4);
  text-transform: none;
  letter-spacing: normal;
}

/* --- Оглавление ----------------------------------------------------------- */

.post-toc__list {
  display: grid;
  gap: var(--space-3);
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: toc;
}

.post-toc__item {
  display: flex;
  gap: var(--space-2);
  font-size: var(--fs-small);
  line-height: var(--lh-base);
}

.post-toc__item::before {
  counter-increment: toc;
  content: counter(toc) '.';
  flex: none;
  color: var(--color-accent);
  font-weight: var(--fw-semibold);
}

.post-toc__item a {
  color: var(--color-text);
  text-decoration: none;
}

.post-toc__item a:hover {
  color: var(--color-accent);
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

/* Заголовок не должен прятаться под шапкой при переходе по якорю. */
.post-single__body h2 {
  scroll-margin-top: calc(var(--header-height-lg) + var(--space-5));
}

/* --- Читайте также -------------------------------------------------------- */

.post-recent__list {
  display: grid;
  gap: var(--space-4);
  margin: 0;
  padding: 0;
  list-style: none;
}

.post-recent__link {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr);
  gap: var(--space-3);
  align-items: start;
  text-decoration: none;
}

.post-recent__media {
  overflow: hidden;
  border-radius: var(--radius-sm);
}

.post-recent__media img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1 / 1;
  object-fit: cover;
}

.post-recent__body {
  min-width: 0;
}

.post-recent__title {
  display: block;
  color: var(--color-navy);
  font-size: var(--fs-small);
  font-weight: var(--fw-medium);
  line-height: var(--lh-heading);
}

.post-recent__link:hover .post-recent__title {
  color: var(--color-accent);
}

.post-recent__date {
  display: block;
  margin-top: var(--space-1);
  color: var(--color-text-muted);
  font-size: var(--fs-caption);
}

/* --- Формы в статье -------------------------------------------------------- */

/* Врезка внутри текста: светло-голубая плашка, чтобы читалась как пауза,
   а не как продолжение статьи. */
.post-inline-form {
  margin-block: var(--space-7);
  padding: var(--space-6) var(--card-px);
  background-color: var(--color-bg-light);
  border-radius: var(--radius-lg);
}

/* Заголовок врезки — это призыв, а не подпись к полям: крупнее и жирнее
   обычного подзаголовка, иначе форма в потоке текста не считывается. */
.post-inline-form__title {
  margin-bottom: var(--space-2);
  color: var(--color-navy);
  font-family: var(--font-heading);
  font-size: var(--fs-h3);
  font-weight: var(--fw-heading);
  line-height: var(--lh-heading);
}

.post-inline-form__note {
  margin-bottom: var(--space-5);
  color: var(--color-text);
}

/* В узкой колонке поля идут в один столбец. */
.post-aside__form .kk-form__row {
  grid-template-columns: minmax(0, 1fr);
}

.post-aside__form .field__label,
.post-inline-form .field--check .field__label {
  font-size: var(--fs-caption);
}

/* --- Видео в статье -------------------------------------------------------- */

.post-video__player {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--radius-md);
}

/* Встраиваемый проигрыватель приходит с жёсткими width и height —
   держим его в рамке 16:9, иначе на узких экранах он вылезает. */
.post-video__frame {
  position: relative;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  border-radius: var(--radius-md);
}

.post-video__frame iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
