@charset "UTF-8";

/*
 * Стили для страниц, которых не было в статичной вёрстке:
 * 404, поиск, лента записей, навигация по записям, пустые состояния.
 * Файлы вёрстки собраны из SCSS (в них есть sourceMappingURL), поэтому
 * всё специфичное для WordPress живёт здесь и грузится последним.
 */

/* --- Общий контейнер секций --- */
.wp-section {
  width: 100%;
  max-width: 1344px;
  margin-inline: auto;
  padding-inline: 16px;
}
@media (min-width: 768px) and (max-width: 1343px) {
  .wp-section {
    padding-inline: 40px;
  }
}
@media (min-width: 1344px) {
  .wp-section {
    padding-inline: 0;
  }
}

/* --- Страница 404 --- */
.error-404 {
  padding-block: 24px 64px;
}
@media (max-width: 767px) {
  .error-404 {
    padding-block: 16px 40px;
  }
}
.error-404__inner {
  width: 100%;
  max-width: 1344px;
  margin-inline: auto;
  padding-inline: 16px;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}
@media (min-width: 768px) and (max-width: 1343px) {
  .error-404__inner {
    padding-inline: 40px;
  }
}
@media (min-width: 1344px) {
  .error-404__inner {
    padding-inline: 0;
  }
}
.error-404__code {
  font-size: 160px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.03em;
  color: #000;
}
@media (max-width: 1343px) {
  .error-404__code {
    font-size: 120px;
  }
}
@media (max-width: 767px) {
  .error-404__code {
    font-size: 72px;
  }
}
.error-404__title {
  font-size: 38px;
  font-weight: 700;
  line-height: 42px;
  letter-spacing: -1.14px;
  margin-top: 16px;
}
@media (max-width: 767px) {
  .error-404__title {
    font-size: 28px;
    line-height: 32px;
    letter-spacing: -0.84px;
    margin-top: 12px;
  }
}
.error-404__desc {
  font-size: 20px;
  font-weight: 400;
  line-height: 28px;
  color: rgba(0, 0, 0, 0.4);
  max-width: 560px;
  margin-top: 12px;
}
@media (max-width: 767px) {
  .error-404__desc {
    font-size: 16px;
    line-height: 24px;
  }
}
.error-404__search {
  width: 100%;
  max-width: 560px;
  margin-top: 32px;
}
.error-404__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  margin-top: 24px;
}
@media (max-width: 767px) {
  .error-404__actions {
    width: 100%;
    flex-direction: column;
  }
}
.error-404__recent {
  padding-bottom: 48px;
}

/* --- Форма поиска --- */
.search-form {
  display: flex;
  align-items: flex-start;
  gap: 8px;
}
@media (max-width: 767px) {
  .search-form {
    flex-direction: column;
  }
}
.search-form__field {
  flex: 1 1 auto;
  min-width: 0;
  width: 100%;
}
.search-form__submit {
  flex: 0 0 auto;
}
@media (max-width: 767px) {
  .search-form__submit {
    width: 100%;
  }
}
.search-panel {
  max-width: 560px;
  margin-bottom: 32px;
}

/* --- Карточка записи с реальной картинкой --- */
.news-card__image {
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
}

/* --- Иллюстрация в статье --- */
img.entry-content__image {
  display: block;
  height: auto;
}

/* --- Навигация между записями --- */
.post-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  width: 100%;
  max-width: 752px;
  padding-bottom: 48px;
}
@media (max-width: 767px) {
  .post-nav {
    flex-direction: column;
    padding-bottom: 32px;
  }
}
.post-nav__link {
  flex: 1 1 240px;
  min-width: 0;
  justify-content: flex-start;
  text-align: left;
}
.post-nav__link--next {
  justify-content: flex-end;
  text-align: right;
}
.post-nav__title {
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* --- Постраничная навигация --- */
.pagination__list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px;
  list-style: none;
  margin: 0;
  padding: 0;
}

/* ------------------------------------------------------------------
 * Contact Form 7
 * Плагин оборачивает каждое поле в свои <span>. Внутри .form-field и
 * .form-checkbox — а это flex-контейнеры — обёртки становятся flex-элементами
 * и ломают ширину. Убираем их из потока, чтобы поля вели себя как в вёрстке.
 * ------------------------------------------------------------------ */

/* Текстовые поля: обёртка растягивается на всю ширину, подсказка об ошибке
   остаётся внутри неё и встаёт под полем. */
.form-field .wpcf7-form-control-wrap {
  display: block;
  width: 100%;
}

/* Чекбокс согласия: три вложенных span убираем из потока целиком,
   тогда сам input становится прямым потомком .form-checkbox и получает
   свои 20x20 и flex-shrink из вёрстки. */
.form-checkbox .wpcf7-form-control-wrap,
.form-checkbox .wpcf7-acceptance,
.form-checkbox .wpcf7-list-item {
  display: contents;
}

/* Кнопка отправки — input, а не button: сбрасываем системный вид. */
.modal__form .wpcf7-submit {
  -webkit-appearance: none;
  appearance: none;
}

/* Подсказка о незаполненном поле. */
.wpcf7-not-valid-tip {
  display: block;
  margin-top: 6px;
  font-size: 12px;
  font-weight: 400;
  line-height: 16px;
  color: #d92d20;
}
.form-field__input.wpcf7-not-valid,
.form-field__textarea.wpcf7-not-valid {
  border-color: #d92d20;
}

/* Общее сообщение под формой: успех, ошибка валидации, сбой отправки.
   Селектор повторяет структуру правила из стилей CF7 — иначе его отступы
   и синяя рамка окажутся сильнее наших. */
.wpcf7 form .wpcf7-response-output {
  margin: 16px 0 0;
  padding: 16px 20px;
  border: 1px solid rgba(0, 0, 0, 0.12);
  border-radius: 12px;
  font-size: 16px;
  font-weight: 400;
  line-height: 24px;
}
.wpcf7 form.sent .wpcf7-response-output {
  border-color: #12b76a;
}
.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output,
.wpcf7 form.failed .wpcf7-response-output,
.wpcf7 form.aborted .wpcf7-response-output {
  border-color: #d92d20;
}

/* Индикатор отправки. */
.wpcf7-spinner {
  margin: 0 auto;
}

/*
 * Подстраховка на случай, если в wp-config.php не задана
 * define('WPCF7_AUTOP', false): WordPress оборачивает поля в <p> и
 * расставляет <br>, из-за чего отступы flex-контейнеров пропадают.
 * С отключённой автовёрсткой эти правила просто ни на что не влияют.
 */
.modal__form br {
  display: none;
}
.modal__form > p,
.modal__fields > p {
  display: contents;
}

/* --- Пустая выдача --- */
.empty-state {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 12px;
  padding: 48px 0;
}
.empty-state__title {
  font-size: 28px;
  font-weight: 700;
  line-height: 32px;
  letter-spacing: -0.84px;
}
.empty-state__desc {
  font-size: 16px;
  font-weight: 400;
  line-height: 24px;
  color: rgba(0, 0, 0, 0.4);
}
.empty-state .btn {
  margin-top: 4px;
}
