/* ==========================================================================
   ALGOMIX NOVA — контент внутренних страниц на языке темы

   Блоки страниц собраны в Gutenberg под прежнюю тему prespa: свои пресеты
   цветов, синий #098bcc, белые подложки, иконки undraw. Содержимое трогать
   нельзя — его правит заказчик в админке. Поэтому переводим НЕ контент,
   а его отображение: старые «фирменные» значения приходят сюда как
   переменные (замену делает inc/content-restyle.php), а пресеты ядра
   переопределяются селектором с большей специфичностью.

   Правило файла: ни одного «зашитого» цвета — только токены темы,
   иначе светлая и тёмная разъедутся.
   ========================================================================== */

.entry-content {
  /* ---- Мост со старой палитрой (см. inc/legacy-palette.json) ------------- */
  --lg-accent:    var(--cyan);
  --lg-accent-2:  var(--violet-soft);
  --lg-ink:       var(--txt);
  --lg-ink-mute:  var(--txt-mute);
  --lg-line:      var(--glass-brd);

  /* ---- Поверхности контента --------------------------------------------- */
  --nv-card:      var(--glass);
  --nv-card-hi:   var(--glass-hi);
  --nv-brd:       var(--glass-brd);
  --nv-brd-hi:    var(--glass-brd-hi);
  --nv-blur:      blur(18px) saturate(140%);

  /* Планшет под иллюстрации: они нарисованы на белом и без него пропадают */
  --nv-plate:     linear-gradient(168deg, #FFFFFF 0%, #F2F5FA 100%);
  --nv-plate-brd: rgba(255, 255, 255, 0.14);

  /* Подсветка «выделенного» блока — та же, что у тарифа на главной */
  --nv-accent-wash: linear-gradient(160deg, rgba(0, 240, 255, 0.09), var(--nv-card) 48%);
  --nv-accent-brd:  rgba(0, 240, 255, 0.34);

  /* ---- Ритм -------------------------------------------------------------- */
  --nv-gap:       clamp(1.15rem, 0.6rem + 2vw, 2.5rem);
  --nv-block:     clamp(3rem, 1.6rem + 4.5vw, 7rem);

  /* ---- Пресеты отступов -------------------------------------------------
     small / medium / large — шкала прежней темы. В новой их никто не
     объявлял, из-за чего все inline-отступы контента (а их 1000+) молча
     схлопывались в ноль: var() с неизвестной переменной делает свойство
     недействительным. Возвращаем шкалу, пересчитав её в ритм темы. */
  --wp--preset--spacing--small:   clamp(1rem, 0.72rem + 1.1vw, 1.7rem);
  --wp--preset--spacing--medium:  clamp(1.5rem, 1rem + 1.7vw, 2.5rem);
  --wp--preset--spacing--large:   clamp(2.25rem, 1.4rem + 2.7vw, 4rem);
  --wp--preset--spacing--x-large: clamp(3rem, 1.8rem + 3.6vw, 5.5rem);

  /* ---- Пресеты кеглей ---------------------------------------------------
     Ядро объявляет их через !important, поэтому переопределяем не правила,
     а сами переменные — тогда наследование работает и внутри колонок. */
  --wp--preset--font-size--small:   0.9rem;
  --wp--preset--font-size--medium:  1.05rem;
  --wp--preset--font-size--large:   clamp(1.35rem, 1rem + 1.4vw, 2.2rem);
  --wp--preset--font-size--x-large: clamp(1.8rem, 1.2rem + 2.2vw, 3rem);

  position: relative;
  color: var(--txt-dim);
  overflow-wrap: break-word;
}

:root[data-theme="light"] .entry-content {
  --nv-plate:     linear-gradient(168deg, #FFFFFF 0%, #F6F8FC 100%);
  --nv-plate-brd: rgba(10, 10, 30, 0.10);
  --nv-accent-wash: linear-gradient(160deg, rgba(0, 118, 159, 0.10), var(--nv-card) 48%);
  --nv-accent-brd:  rgba(0, 118, 159, 0.38);
}

/* ==========================================================================
   0. Шапка страницы
   Если у контента есть собственный герой, шапка сжимается до одного пути:
   два героя подряд читаются как ошибка вёрстки.
   ========================================================================== */

.page-head--slim {
  min-height: 0;
  padding-block: calc(var(--header-h) + 2.5rem) 0;
}
.page-head--slim .crumbs { margin-bottom: 0; }

/* Заголовки страниц бывают из одного длинного слова («конфиденциальности»).
   На максимуме героя такое слово шире колонки, и браузер рвёт его посередине.
   Держим ступень чуть ниже — тогда переносов внутри слова не возникает. */
.page-head h1 { font-size: clamp(1.6rem, 0.9rem + 3vw, 3.9rem); }
/* Заголовок из одного длинного слова («конфиденциальности») шире колонки
   героя даже на широком экране — даём шапке всю ширину полосы. */
.page-head .hero__grid { max-width: min(100%, 68rem); }
.crumbs__here { color: var(--txt-dim); opacity: 1; }
.section--content { padding-top: clamp(1.5rem, 0.8rem + 2vw, 3rem) !important; }
.page-head--slim + .section--content { padding-top: clamp(1rem, 0.5rem + 1.5vw, 2rem) !important; }

/* ==========================================================================
   1. Пресеты ядра WordPress
   Ядро отдаёт их с !important, поэтому перебиваем большей специфичностью,
   а не борьбой стилей: два класса против одного.
   ========================================================================== */

.entry-content .has-white-background-color,
.entry-content .has-black-background-color {
  background-color: var(--nv-card) !important;
}
.entry-content .has-black-color,
.entry-content .has-cyan-bluish-gray-color { color: var(--txt) !important; }

/* Белым в контенте набран текст «выделенного» блока. Сплошной заливки под
   ним больше нет (см. ниже), поэтому цвет — обычный текстовый. */
.entry-content .has-white-color { color: var(--txt) !important; }

/* Подложка cover'а белая по замыслу старой темы: здесь фон даёт сама тема */
.entry-content .wp-block-cover__background { background-color: transparent !important; opacity: 1; }

/* Пресеты prespa (primary / secondary / light-gray / gray-50 …) в новой теме
   не объявлены и потому «мертвы» — используем их как готовые крючки. */
.entry-content .has-text-primary-color,
.entry-content .has-primary-color { color: var(--txt); }
.entry-content .has-text-secondary-color,
.entry-content .has-highlight-color { color: var(--txt-mute); }
.entry-content .has-light-gray-background-color,
.entry-content .has-gray-background-color,
.entry-content .has-surface-background-color,
.entry-content .has-silver-blue-background-color { background-color: var(--nv-card); }
.entry-content .has-gray-50-border-color { border-color: var(--nv-brd); }

/* ==========================================================================
   2. Типографика
   ========================================================================== */

.entry-content :where(h1, h2, h3, h4, h5, h6) {
  font-family: var(--font-display);
  color: var(--txt);
  letter-spacing: -0.022em;
  line-height: 1.08;
  margin: 0 0 0.7em;
  text-wrap: balance;
}
.entry-content h1 { font-size: var(--t-hero); font-weight: 800; letter-spacing: var(--tracking-hero); text-shadow: var(--shadow-display); }

.entry-content h2 { text-shadow: var(--shadow-display-soft); }

/* Смысловое выделение внутри крупных заголовков в контенте задано цветом.
   Чистый акцент на таком кегле слепит — отдаём его градиентом темы,
   тем же, что на главной. */
.entry-content :where(h1, h2) [style*="--lg-accent"] {
  background: var(--grad-text);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent !important;
  text-shadow: none;
}
.entry-content h2 { font-size: clamp(1.7rem, 1.1rem + 2.1vw, 3.1rem); font-weight: 600; }
.entry-content h3 { font-size: clamp(1.2rem, 1.02rem + 0.75vw, 1.7rem); font-weight: 600; letter-spacing: -0.015em; line-height: 1.2; }
.entry-content h4 { font-size: clamp(1.05rem, 0.97rem + 0.35vw, 1.25rem); font-weight: 600; }
.entry-content :where(h5, h6) { font-size: 1rem; font-weight: 600; }

/* Заголовки, набранные абзацем (в контенте так сделаны баннеры и цены) */
.entry-content p.wp-block-heading,
.entry-content p.h2,
.entry-content p.h3 {
  font-family: var(--font-display);
  color: var(--txt);
  line-height: 1.14;
  letter-spacing: -0.02em;
}
.entry-content p.wp-block-heading { font-size: clamp(1.4rem, 1rem + 1.5vw, 2.4rem); font-weight: 600; }
.entry-content p.h3 { font-size: var(--t-h3); font-weight: 600; }

.entry-content p,
.entry-content li {
  font-family: var(--font-body);
  font-size: var(--t-body);
  line-height: 1.66;
  color: var(--txt-dim);
}

/* Длинные русские слова («распространёнными», «Ответственность») в узкой
   колонке иначе рвутся посередине без всякого знака. Переносим по слогам —
   язык страницы ru-RU, словарь переносов у браузера есть. Заголовки-плашки
   (h3…h6) тоже: они живут в карточках, где места меньше всего. */
.entry-content :where(p, li, td, th, dd, dt, blockquote, h1, h2, h3, h4, h5, h6),
.entry-content :where(p, li, td, th, dd, dt, blockquote) :where(strong, b, em, a, span),
.page-head h1 {
  hyphens: auto;
  -webkit-hyphens: auto;
}
/* Имена и адреса переносить по слогам нельзя — их спасает перенос строки
   целиком (см. правило переноса колонок ниже). */
.entry-content :where(.review__who, .gallery-slider-item) :where(p, strong) { hyphens: manual; }
.entry-content p { margin: 0 0 1.1em; }
.entry-content > *:last-child { margin-bottom: 0; }

.entry-content strong,
.entry-content b { color: var(--txt); font-weight: 600; }

/* Второстепенная строка в контактах: номер и подпись помельче и приглушённо */
.entry-content small {
  display: inline-block;
  margin-top: 0.35em;
  font-size: var(--t-small);
  line-height: 1.5;
  color: var(--txt-mute);
}
.entry-content small a { color: var(--txt-dim); }
.entry-content small a:hover { color: var(--cyan); }

/* В колонке заголовок делит ширину на 2–4: крупный кегль там рвёт слова
   («Продвижени / е сайтов»). Понижаем ступень, а не полагаемся на переносы. */
.entry-content .wp-block-column {
  --wp--preset--font-size--large:   clamp(1.15rem, 0.98rem + 0.75vw, 1.65rem);
  --wp--preset--font-size--x-large: clamp(1.4rem, 1.05rem + 1.4vw, 2.1rem);
}
.entry-content .wp-block-column h2,
.entry-content .wp-block-column p.wp-block-heading {
  font-size: clamp(1.15rem, 0.98rem + 0.75vw, 1.65rem);
  line-height: 1.16;
}
.entry-content .wp-block-column h3 { font-size: clamp(1.05rem, 0.95rem + 0.45vw, 1.35rem); }
.entry-content .wp-block-column .has-xx-large-font-size { font-size: clamp(1.6rem, 1.1rem + 1.8vw, 2.6rem); }

/* Кегли, которых нет в ядре (пресеты прежней темы) */
.entry-content .has-normal-font-size { font-size: var(--t-body); }
.entry-content .has-xx-large-font-size { font-size: var(--t-hero); line-height: 1.02; }
.entry-content .has-huge-font-size { font-size: clamp(2rem, 1.3rem + 2.6vw, 3.4rem); line-height: 1.08; }
.entry-content .has-large-font-size { line-height: 1.16; }

.entry-content a:not(.wp-block-button__link) {
  color: var(--cyan);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
  transition: color var(--d-fast) var(--ease-out);
}
.entry-content a:not(.wp-block-button__link):hover { text-decoration-thickness: 2px; }

.entry-content ul,
.entry-content ol { margin: 0 0 1.2em; padding-left: 1.35em; }
.entry-content li { margin-bottom: 0.45em; }
.entry-content ul li::marker { color: var(--cyan); }

.entry-content hr {
  border: 0;
  height: 1px;
  background: var(--grad-line);
  margin: var(--nv-gap) 0;
}

.entry-content blockquote {
  margin: 1.6em 0;
  padding: 0.25rem 0 0.25rem 1.4rem;
  border-left: 2px solid var(--cyan);
  color: var(--txt-dim);
}

/* ==========================================================================
   3. Ритм секций
   Верхний уровень контента — это «секции» страницы: им нужен воздух,
   иначе всё сливается в сплошную ленту.
   ========================================================================== */

.entry-content > .wp-block-group,
.entry-content > .wp-block-columns,
.entry-content > .wp-block-cover { margin-block: var(--nv-block); }
.entry-content > *:first-child { margin-top: 0; }
.entry-content > *:last-child  { margin-bottom: 0; }

/* Внутренние группы дышат мельче */
.entry-content .wp-block-group { margin-bottom: 0; }
.entry-content .wp-block-group + .wp-block-group { margin-top: var(--nv-gap); }

/* ==========================================================================
   4. Колонки
   ========================================================================== */

.entry-content .wp-block-columns {
  display: flex;
  flex-wrap: wrap;
  gap: var(--nv-gap);
  margin-bottom: 0;
  align-items: stretch;
}
.entry-content .wp-block-columns + .wp-block-columns { margin-top: var(--nv-gap); }
/* Колонки одинаковой ширины. Там, где ширина задана в контенте
   (иконка 10% + текст 90%), она приходит инлайновым flex-basis —
   такие колонки не растягиваем, иначе пропорция ломается. */
/* max-width обязателен: в развёрнутом на мобильном столбце поперечный
   размер колонки тянется по минимальной ширине содержимого и вылезает
   за экран — растягивание само по себе его не ограничивает. */
.entry-content .wp-block-column { flex: 1 1 0%; min-width: 0; max-width: 100%; }
.entry-content .wp-block-column[style*="flex-basis"] { flex-grow: 0; }

/* Пара «аватар 33% + подпись 66%» внутри узкого слайда сжимается до 80px,
   и фамилия рвётся посередине. Даём текстовой колонке порог: если она уже
   порога — ряд переносится, и подпись встаёт под аватаром целиком.
   min() не даёт колонке стать шире контейнера, поэтому переполнения нет. */
.entry-content .wp-block-column[style*="flex-basis:66.66"],
.entry-content .wp-block-column[style*="flex-basis:75"],
.entry-content .wp-block-column[style*="flex-basis:90"] {
  min-width: min(100%, 9rem);
}

/* Колонка с карточкой — flex-столбец: карточка тянется на высоту ряда,
   а кнопка прижимается к её низу, чтобы призывы стояли на одной линии.
   Колонки без карточки остаются обычным потоком: делать flex-контейнером
   каждую нельзя — картинки внутри схлопываются в нулевую ширину. */
.entry-content .wp-block-column:has(> .wp-block-group.has-background),
.entry-content .wp-block-column:has(> .wp-block-group.has-border-color) {
  display: flex;
  flex-direction: column;
}
.entry-content .wp-block-column > .wp-block-group.has-background,
.entry-content .wp-block-column > .wp-block-group.has-border-color {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
}
.entry-content .wp-block-column > .wp-block-group > .wp-block-group__inner-container {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
}
.entry-content .wp-block-column .wp-block-buttons { margin-top: auto; }
.entry-content .wp-block-columns.are-vertically-aligned-center,
.entry-content .wp-block-column.is-vertically-aligned-center { align-items: center; align-self: center; }
.entry-content .wp-block-column.is-vertically-aligned-top { align-self: flex-start; }

@media (max-width: 781px) {
  /* В колонку разворачивается направление, а с ним и поперечная ось:
     выравнивание по центру начинает сжимать колонки до ширины содержимого,
     и длинная карточка вылезает за экран. Возвращаем растяжение. */
  .entry-content .wp-block-columns:not(.is-not-stacked-on-mobile) {
    flex-direction: column;
    align-items: stretch;
  }
  .entry-content .wp-block-columns:not(.is-not-stacked-on-mobile) > .wp-block-column {
    flex-basis: auto !important;
    align-self: stretch;
  }
  /* На мобильном картинка должна идти после текста — так задумано в контенте */
  .entry-content .wp-block-columns.is-swap-on-mobile { flex-direction: column-reverse; }
}

/* ==========================================================================
   5. Секции и карточки

   В старой теме «залитый блок» значил и секцию во всю ширину, и карточку
   в колонке. Разводим их: группа с заливкой сама по себе — секция-полоса
   (мягкая подложка без рамки), а группа или колонка внутри `columns` —
   карточка со стеклом. Правила идут от общего к частному: специфичность
   делает разбор, никаких !important.
   ========================================================================== */

/* ---- Секция-полоса ------------------------------------------------------- */
.entry-content .wp-block-group.has-background {
  border-radius: var(--r-xl);
  background: var(--nv-card);
  border: 0;
  box-shadow: none;
  padding: clamp(1.5rem, 0.8rem + 2.6vw, 3.5rem);
}

/* Корневая обёртка страницы залита «поверхностью» ещё в старой теме.
   Полосой она быть не может: это была бы одна панель на всю страницу. */
.entry-content > .wp-block-group.has-background {
  background: none;
  border-radius: 0;
  padding-inline: 0;
  padding-block: 0;
}

/* ---- Карточка ------------------------------------------------------------ */
.entry-content .wp-block-column.has-background,
.entry-content .wp-block-column.has-border-color,
.entry-content .wp-block-columns .wp-block-group.has-background,
.entry-content .wp-block-columns .wp-block-group.has-border-color,
.entry-content .wp-block-group.has-border-color,
.entry-content .wp-block-group.has-custom-border {
  border-radius: var(--r-lg);
  background: var(--nv-card);
  border: 1px solid var(--nv-brd);
  backdrop-filter: var(--nv-blur);
  -webkit-backdrop-filter: var(--nv-blur);
  box-shadow: var(--shadow-card);
  /* В контенте у таких блоков часто нулевой padding — задаём минимум */
  padding: clamp(1.15rem, 0.7rem + 1.6vw, 2.25rem);
  transition: border-color var(--d-normal) var(--ease-out),
              background var(--d-normal) var(--ease-out),
              transform var(--d-normal) var(--ease-out);
}
.entry-content .wp-block-column.has-background:hover,
.entry-content .wp-block-column.has-border-color:hover,
.entry-content .wp-block-columns .wp-block-group.has-background:hover,
.entry-content .wp-block-group.has-border-color:hover {
  border-color: var(--nv-brd-hi);
  background: var(--nv-card-hi);
}

/* ---- Выделенный блок ----------------------------------------------------
   В контенте «главный тариф» залит фирменным цветом целиком. В палитре
   новой темы сплошной акцент слепит и убивает читаемость текста, поэтому
   берём приём с главной (.price--featured): акцентная рамка и лёгкая
   подсветка поверх стекла. */
.entry-content [style*="background-color:var(--lg-accent)"],
.entry-content [style*="background-color: var(--lg-accent)"] {
  background: var(--nv-accent-wash) !important;
  border: 1px solid var(--nv-accent-brd) !important;
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  padding: clamp(1.15rem, 0.7rem + 1.6vw, 2.25rem);
}

/* Штриховая рамка старой темы читается как «черновик» — делаем сплошной */
.entry-content [style*="border-style:dashed"],
.entry-content [style*="border-style: dashed"] { border-style: solid !important; }

/* Третий уровень вложенности стеклом уже не рисуем — получается муть */
.entry-content .wp-block-column.has-background .wp-block-group.has-background,
.entry-content .wp-block-column.has-background .wp-block-column.has-background {
  background: none;
  border: 0;
  box-shadow: none;
  backdrop-filter: none;
  padding: 0;
}

/* Внутри карточки вложенные группы уже не карточки */
.entry-content .has-background .wp-block-group:not(.has-background):not(.has-border-color) {
  background: none;
  border: 0;
  box-shadow: none;
  padding: 0;
  backdrop-filter: none;
}

/* ==========================================================================
   6. Cover
   Первый cover на странице — это герой: он должен выглядеть как герой темы,
   а не как карточка. Остальные (слайды отзывов) — карточки.
   ========================================================================== */

.entry-content .wp-block-cover {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(1.25rem, 0.8rem + 1.6vw, 2.25rem);
  border-radius: var(--r-lg);
  background: var(--nv-card);
  border: 1px solid var(--nv-brd);
  backdrop-filter: var(--nv-blur);
  -webkit-backdrop-filter: var(--nv-blur);
  box-shadow: var(--shadow-card);
  overflow: hidden;
  /* min-height в 400px задан в контенте под прежнюю вёрстку: здесь он даёт
     полупустые слайды. Высоту определяет содержимое. */
  min-height: 0 !important;
}
.entry-content .wp-block-cover__inner-container { width: 100%; }
.entry-content .wp-block-cover.is-light,
.entry-content .wp-block-cover { color: inherit; }

/* Герой страницы */
.entry-content > .wp-block-group:first-child .wp-block-cover:first-of-type,
.entry-content > .wp-block-cover:first-child {
  background: none;
  border: 0;
  box-shadow: none;
  backdrop-filter: none;
  padding: 0 0 var(--nv-gap);
  margin-top: 0 !important;
  text-align: center;
}
.entry-content .wp-block-cover.alignfull { max-width: 100%; margin-inline: 0; }

/* ==========================================================================
   7. Кнопки
   ========================================================================== */

.entry-content .wp-block-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin: 1.5em 0 0;
}
.entry-content .wp-block-buttons.is-content-justification-center { justify-content: center; }
.entry-content .wp-block-buttons.is-content-justification-right { justify-content: flex-end; }
.entry-content .wp-block-button { margin: 0; }

/* Кнопка — обычный inline-block, а НЕ flex.
   У flex-контейнера каждый кусок надписи («Не уверены? <strong>Узнайте
   о нас</strong> больше») становится отдельным элементом, и пробелы между
   ними пропадают, а слово может разорваться посередине. Здесь надпись —
   обычный текст: пробелы на месте, перенос только по пробелу. */
.entry-content .wp-block-button__link {
  display: inline-block;
  text-align: center;
  max-width: 100%;
  white-space: nowrap;
  overflow-wrap: normal;
  word-break: keep-all;
  padding: 0.95rem 1.85rem !important;
  border: 0 !important;
  border-radius: var(--r-pill) !important;
  background: var(--grad-primary) !important;
  color: var(--btn-fg) !important;
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 0.95rem;
  letter-spacing: -0.01em;
  line-height: 1.2;
  text-decoration: none;
  box-shadow: none;
  transition: transform var(--d-normal) var(--ease-spring),
              box-shadow var(--d-normal) var(--ease-out);
}
.entry-content .wp-block-button__link:hover {
  transform: translateY(-2px);
  box-shadow: var(--glow-cyan);
}
.entry-content .is-style-outline .wp-block-button__link,
.entry-content .wp-block-button.is-style-outline > .wp-block-button__link {
  background: var(--glass) !important;
  color: var(--txt) !important;
  border: 1px solid var(--glass-brd) !important;
  backdrop-filter: blur(12px);
}
.entry-content .is-style-outline .wp-block-button__link:hover {
  border-color: var(--glass-brd-hi) !important;
  box-shadow: none;
}

/* Стрелка из старой темы рисовалась псевдоэлементом с фоновой картинкой.
   Рисуем её сами — уголком из границ, а не символом: у «→» нет глифа
   в наших начертаниях, ширина зависела бы от подменного шрифта. */
.entry-content .p-btn-animation-hover-arrow .wp-block-button__link::after {
  content: "";
  display: inline-block;
  width: 0.42em;
  height: 0.42em;
  margin-left: 0.6em;
  vertical-align: 0.04em;
  border-top: 1.5px solid currentColor;
  border-right: 1.5px solid currentColor;
  transform: rotate(45deg);
  transition: transform var(--d-normal) var(--ease-out), margin-left var(--d-normal) var(--ease-out);
}
.entry-content .p-btn-animation-hover-arrow .wp-block-button__link:hover::after {
  margin-left: 0.95em;
}

/* На узком экране длинную надпись переносим — но только по пробелу */
@media (max-width: 560px) {
  .entry-content .wp-block-button__link { white-space: normal; }
}

/* ==========================================================================
   8. Изображения
   ========================================================================== */

.entry-content figure { margin: 0; }
.entry-content .wp-block-image { margin: 0 0 1.25em; }
.entry-content .wp-block-image:last-child { margin-bottom: 0; }
.entry-content .wp-block-image img { border-radius: var(--r-sm); }
.entry-content .wp-block-image.aligncenter { margin-inline: auto; text-align: center; }
.entry-content .wp-block-image.aligncenter img { margin-inline: auto; }

/* Встроенные карты и видео — на стекле темы, со скруглением */
.entry-content iframe {
  display: block;
  width: 100%;
  border: 1px solid var(--nv-brd);
  border-radius: var(--r-lg);
  background: var(--nv-card);
  overflow: hidden;
}

.entry-content figcaption {
  margin-top: 0.65em;
  font-size: var(--t-small);
  color: var(--txt-mute);
  text-align: center;
}

/* ---- Крупные иллюстрации ------------------------------------------------
   Рисунки undraw нарисованы на сплошном БЕЛОМ фоне (не на прозрачном):
   на тёмной теме это был бы белый прямоугольник посреди сцены. Кладём их
   на «планшет» — светлую панель со скруглением темы: приём читается как
   задумка, а не как остаток старого оформления.

   Отличаем от иконок по srcset: WordPress отдаёт его только для загруженной
   растровой картинки крупного размера. У SVG-иконок его нет вовсе, у фото
   авторов отзывов он есть, но им задана инлайновая ширина. */

.entry-content img[srcset]:not([style*="width"]):not([src$=".svg"]) {
  background: var(--nv-plate);
  border: 1px solid var(--nv-plate-brd);
  border-radius: var(--r-lg);
  padding: clamp(0.75rem, 0.4rem + 1.2vw, 1.75rem);
  box-shadow: var(--shadow-card);
}

/* ---- Иконки -------------------------------------------------------------
   Иконки — SVG, залитые прежним фирменным синим. На светлой теме акцент
   почти совпадает с ним, на тёмной сдвигаем к бирюзе темы. */
.entry-content img[src$=".svg"] {
  border-radius: 0;
  background: none;
  padding: 0;
  box-shadow: none;
  border: 0;
}
/* У SVG из медиатеки нет собственных размеров: без ограничения браузер
   растягивает маркер списка на всю ширину колонки. */
.entry-content .wp-block-image img[src$=".svg"]:not([style*="width"]) {
  width: clamp(1.15rem, 0.95rem + 0.7vw, 1.6rem);
  height: auto;
}

:root[data-theme="dark"] .entry-content .wp-block-image img[src$=".svg"],
:root:not([data-theme="light"]) .entry-content .wp-block-image img[src$=".svg"] {
  filter: hue-rotate(-14deg) saturate(1.45) brightness(1.4);
}

/* Стрелки списка заведены двумя файлами — синим и белым — под подложки
   прежней темы. Подложка теперь одна и меняется вместе с темой, поэтому
   в светлой белую иконку приводим к акценту (иначе она исчезает). */
:root[data-theme="light"] .entry-content img[src*="-white-"] {
  filter: brightness(0) saturate(100%) invert(29%) sepia(84%) saturate(1489%)
          hue-rotate(173deg) brightness(93%) contrast(101%);
}
:root[data-theme="dark"] .entry-content img[src*="-white-"],
:root:not([data-theme="light"]) .entry-content img[src*="-white-"] { filter: none; }

/* ---- Логотипы клиентов --------------------------------------------------
   Цветные и тёмные: на тёмной теме приводим к белому монохрому — так же,
   как на главной (см. components.css). */
.entry-content .gallery-slider-image img,
.entry-content .gallery-slider-figure img {
  filter: grayscale(1);
  opacity: 0.62;
  transition: filter var(--d-normal) var(--ease-out), opacity var(--d-normal) var(--ease-out);
  background: none;
  border: 0;
  padding: 0;
  box-shadow: none;
}
.entry-content .gallery-slider-item:hover img { filter: grayscale(0); opacity: 1; }
:root[data-theme="dark"] .entry-content .gallery-slider-image img,
:root:not([data-theme="light"]) .entry-content .gallery-slider-image img {
  filter: brightness(0) invert(1);
  opacity: 0.5;
}
:root[data-theme="dark"] .entry-content .gallery-slider-item:hover img,
:root:not([data-theme="light"]) .entry-content .gallery-slider-item:hover img {
  filter: brightness(0) invert(1);
  opacity: 0.95;
}

/* ==========================================================================
   9. Таблицы
   ========================================================================== */

/* Таблицу на телефоне лучше прокрутить, чем сдавить: в 125-пиксельной
   ячейке слова рвутся посередине. Обёртка уже умеет горизонтальный скролл. */
.entry-content .wp-block-table { overflow-x: auto; margin: var(--nv-gap) 0; }
.entry-content table { width: 100%; min-width: 34rem; border-collapse: collapse; font-size: 0.95rem; }
.entry-content :where(th, td) {
  padding: 0.8rem 1rem;
  border: 1px solid var(--nv-brd);
  text-align: left;
  color: var(--txt-dim);
}
.entry-content th { background: var(--nv-card); color: var(--txt); font-weight: 600; }

/* ==========================================================================
   10. Getwid: лента этапов
   ========================================================================== */

.entry-content .wp-block-getwid-content-timeline__line { background: none; }
.entry-content .wp-block-getwid-content-timeline__bar,
.entry-content .wp-block-getwid-content-timeline__line::before {
  background: var(--grad-primary) !important;
}
.entry-content .wp-block-getwid-content-timeline-item__card {
  background: var(--nv-card);
  border: 1px solid var(--nv-brd);
  border-radius: var(--r-lg);
  backdrop-filter: var(--nv-blur);
  -webkit-backdrop-filter: var(--nv-blur);
  box-shadow: var(--shadow-card);
  transition: border-color var(--d-normal) var(--ease-out), transform var(--d-normal) var(--ease-out);
}
.entry-content .wp-block-getwid-content-timeline-item__card:hover {
  border-color: var(--nv-brd-hi);
  transform: translateY(-3px);
}
.entry-content .wp-block-getwid-content-timeline-item__card-wrapper { background: none; border: 0; }
.entry-content .wp-block-getwid-content-timeline-item__card::before,
.entry-content .wp-block-getwid-content-timeline-item__card::after { display: none; }
.entry-content .wp-block-getwid-content-timeline-item__point-content {
  background: var(--grad-primary) !important;
  border-color: var(--nv-brd-hi) !important;
  box-shadow: var(--glow-cyan);
}
.entry-content .wp-block-getwid-content-timeline-item h3 { margin-bottom: 0.5em; }

/* ==========================================================================
   11. Nasio: слайдеры отзывов и логотипов
   ========================================================================== */

.entry-content .nasio-slide,
.entry-content .nasio-slide-inner { height: auto; }
.entry-content .swiper-slide { height: auto; display: flex; }
.entry-content .swiper-slide > * { width: 100%; }

.entry-content .swiper-pagination-bullet { background: var(--txt-mute); opacity: 0.45; }
.entry-content .swiper-pagination-bullet-active { background: var(--cyan); opacity: 1; }
.entry-content :where(.swiper-button-next, .swiper-button-prev) { color: var(--cyan); }

/* ==========================================================================
   12. Мелочи прежней темы
   ========================================================================== */

/* Анимации prespa опирались на её же скрипты — здесь они только прячут блоки */
.entry-content [class*="p-animation-"] {
  opacity: 1 !important;
  transform: none !important;
  animation: none !important;
}

/* Ширина текста: строка во всю сетку (1320px) не читается — держим меру.
   В колонках ширину задаёт сама колонка, там ограничение лишнее. */
.entry-content :where(p, li):not([class*="has-text-align"]) { max-width: 82ch; }
.entry-content .wp-block-column :where(p, li) { max-width: none; }
.entry-content p.has-text-align-center { margin-inline: auto; max-width: 84ch; }

.entry-content .has-text-align-center { text-align: center; }
.entry-content .has-text-align-left { text-align: left; }
.entry-content .has-text-align-right { text-align: right; }

/* Широкие блоки не должны рвать сетку страницы */
.entry-content .alignwide,
.entry-content .alignfull { max-width: 100%; margin-left: 0; margin-right: 0; }
.entry-content .aligncenter { margin-inline: auto; }

/* ==========================================================================
   13. Самые узкие экраны
   Правила идут последними намеренно: они должны перебивать кегли пресетов,
   объявленные выше, а не бороться с ними специфичностью.
   ========================================================================== */

@media (max-width: 400px) {
  /* «Калининграде» в Unbounded 800 не влезает даже в минимум шкалы
     и рвётся посередине слова — на 320px берём ступень ниже. */
  .entry-content h1,
  .entry-content .has-xx-large-font-size { font-size: 1.5rem; line-height: 1.1; }
  .entry-content h2,
  .entry-content p.wp-block-heading { font-size: 1.35rem; line-height: 1.14; }
}
