/* ============================================================
   Логопрофистор — финальный слой стилей.
   Подключается ПОСЛЕ components.css и mixins.css (из Footer макета),
   поэтому здесь живут правки, которые иначе перебивает шаблон.
   ============================================================ */

/* ------------------------------------------------------------
   1. Палитра проекта.
   Шаблон объявляет свои цвета непосредственно на body, поэтому
   переменные, заданные на :root/html, до элементов не доходили:
   сайт отрисовывался в цветах демо-магазина (белый фон, серый
   текст, лососевые ссылки). Объявляем там же, где шаблон.
   ------------------------------------------------------------ */
body.tpl-body-site-1 {
  --tpl-color-brand:                    #155E54;
  --tpl-color-brand-darkest:            #08231F;
  --tpl-color-brand-darker:             #0B2F2A;
  --tpl-color-brand-dark:               #0F4A42;
  --tpl-color-brand-light:              #2E8272;
  --tpl-color-brand-lighter:            #A3BEB9;
  --tpl-color-brand-lightest:           #E2EFE9;

  --tpl-color-foreground-main:          #2E2A23;
  --tpl-color-foreground-main-light:    #5C5449;
  --tpl-color-foreground-main-lighter:  #7A7063;
  --tpl-color-foreground-main-lightest: #8B7F6E;

  --tpl-color-foreground-accent:        #A9522C;
  --tpl-color-foreground-accent-dark:   #8C4222;

  --tpl-color-background-main:          #FBF7F0;
  --tpl-color-background-main-dark:     #F0E9DD;
  --tpl-color-background-accent:        #F3EBDD;

  --tpl-color-fm: #2E2A23;
  --tpl-color-fa: #A9522C;
  --tpl-color-bm: #FBF7F0;
  --tpl-color-ba: #F3EBDD;
  --tpl-link-color: #155E54;
  --tpl-link-hover-color: #A9522C;

  /* терракота как текст не проходит по контрасту ни на одном фоне сайта,
     поэтому текстовый вариант затемнён, исходный остаётся для заливок */
  --lp-terra: #A9522C;
  --lp-terra-fill: #C4643A;
  --lp-muted: #6B6154;
  --lp-line: #DFD4C2;
}

/* ------------------------------------------------------------
   2. Обложки материалов: 18 из 27 картинок квадратные, ещё 7 —
   панорамные. Рамка 16:9 оставляла у квадратов по 64px пустой
   подложки с каждой стороны. Приводим к 1:1, как на главной.
   ------------------------------------------------------------ */
.tpl-component-netcat-module-netshop-goods-universal .tpl-block-list-objects,
.tpl-component-netcat-module-netshop-goods-universal [style*="--item-image-padding-top"] {
  --item-image-padding-top: 100% !important;
  --item-image-fit: contain !important;
}
.tpl-component-netcat-module-netshop-goods-universal.tpl-block-list .item-card__image {
  background: #FBF7F0;
  border-radius: 0;
}
.tpl-component-netcat-module-netshop-aggregator.tpl-block-list .goods-image {
  border-radius: 0;
}

/* ------------------------------------------------------------
   3. Карточка материала: название печаталось дважды — крупным
   заголовком страницы и повтором рядом с ценой.
   ------------------------------------------------------------ */
/* Заголовок страницы (H1) остаётся один — над карточкой. Повтор рядом
   с ценой убираем: он занимал ~190px первого экрана. */
.tpl-component-netcat-module-netshop-goods-universal.tpl-block-full .item-full__title { display: none; }

/* раскрытый вопрос в FAQ показывал «2» вместо минуса */
/* Та же строка есть в components.css (собирается NetCat из настроек дизайна),
   и там минус превратился в «2»: файл грузится позже и побеждал при равной
   специфичности. Поэтому здесь — тяжелее селектор и !important
   (второй заход, Андрей 16.09.2026). */
html body.tpl-body-site-1 .tpl-component-netcat-module-netshop-goods-universal .lp-faq-item[open] .lp-faq-q:after,
html body.tpl-body-site-1 .lp-faq-item[open] .lp-faq-q:after {
  content: '−' !important;  /* минус символом: escape через скрипт давал «2» */
}

/* характеристики: метка и значение были разного кегля */
.tpl-component-netcat-module-netshop-goods-universal.tpl-block-full .item-full__spec-name {
  font-size: 16px;
  line-height: 1.5;
}

/* ------------------------------------------------------------
   4. Единая сетка для всех лент товаров: подборки главной и
   каталог считались по разным правилам и не совпадали колонками.
   ------------------------------------------------------------ */
.tpl-component-netcat-module-netshop-aggregator .tpl-block-list-objects,
.tpl-block-54 .tpl-block-54-list[data-object-count],
.tpl-block-171 .tpl-block-171-list[data-object-count],
.tpl-block-168 .tpl-block-168-list[data-object-count],
.tpl-block-170 .tpl-block-170-list[data-object-count] {
  display: grid !important;
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  gap: 24px !important;
  align-items: stretch;
}
@media (max-width: 1199.98px) {
  .tpl-component-netcat-module-netshop-aggregator .tpl-block-list-objects {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  }
}
@media (max-width: 1023.98px) {
  .tpl-block-151 .tpl-block-151-list[data-object-count],
  .tpl-block-161 .tpl-block-161-list[data-object-count],
  .tpl-block-163 .tpl-block-163-list[data-object-count] {
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)) !important;
    gap: 20px !important;
  }
}

/* заголовок карточки: селектор шаблона промахивался мимо разметки,
   из-за чего название шло обычным текстом вместо акцентного */
.tpl-body-site-1 .tpl-component-netcat-module-netshop-goods-universal .item-card .item-card__title,
.tpl-body-site-1 .item-card__title.tpl-text-default-paragraph {
  font-family: 'Lora', Georgia, serif !important;
  font-weight: 600 !important;
  font-size: 18px !important;
  line-height: 1.3 !important;
  color: #2E2A23 !important;
}
/* бейджи получали двойной отступ и не совпадали с заголовком */
.tpl-component-netcat-module-netshop-goods-universal .lp-card-badges { padding: 0 !important; }
.lp-card-badge { font-size: 13px; color: #6B6154; border-color: #DFD4C2; }

/* цена в подборках главной прижималась влево, в каталоге — вправо */
.tpl-component-netcat-module-netshop-aggregator .goods-item .prices { justify-content: flex-end; }
/* шаблон печатает пустой span между названием и ценой */
.tpl-component-netcat-module-netshop-aggregator .goods-info > span:empty { display: none; }

/* ------------------------------------------------------------
   5. Вертикальный ритм: между меню и контентом уходило больше
   120px пустоты, подвал занимал 240px на коротких страницах.
   ------------------------------------------------------------ */
@media (min-width: 600px) {
  .tpl-block-111 { margin-top: 24px !important; margin-bottom: 14px !important; }
  .tpl-body-site-1 h1,
  .tpl-body-site-1 .tpl-text-header1 { margin-bottom: 24px; line-height: 1.15; }
}
@media (min-width: 1280px) {
  .tpl-container-130 > .tpl-block-list:not(.tpl-mixin-padding-pass-down),
  .tpl-container-130 > .tpl-block-list.tpl-mixin-padding-pass-down > .tpl-mixin-padding-target {
    padding: 64px 0 40px;
  }
}
@media (max-width: 1279.98px) {
  .tpl-container-130 > .tpl-block-list:not(.tpl-mixin-padding-pass-down),
  .tpl-container-130 > .tpl-block-list.tpl-mixin-padding-pass-down > .tpl-mixin-padding-target {
    padding: 44px 0 32px;
  }
}

/* плитки разделов: иконка была втрое крупнее подписи, плитка 198px
   ради 78px содержимого */
@media (min-width: 768px) {
  .tpl-block-148 .tpl-block-148-list > *:not(.tpl-mixin-padding-pass-down),
  .tpl-block-148 .tpl-block-148-list > *.tpl-mixin-padding-pass-down > .tpl-mixin-padding-target {
    padding: 26px 22px;
  }
}
.tpl-block-148 .menu-item-icon.tpl-text-header1 { font-size: 20px; line-height: 1; }
.tpl-block-148 .menu-item-link { font-size: 17px; }

/* ------------------------------------------------------------
   6. Блог и новости на главной
   ------------------------------------------------------------ */
/* поверх реальных фотографий статей печаталось слово «Логопрофистор» */
.tpl-block-6 .object-item [class*="image"]::after { content: none; }
.tpl-block-6 .object-item [class*="image"] { background: none; border-radius: 20px 20px 0 0; }
/* заголовки новостей были мельче заголовков статей в соседней ленте */
.tpl-block-62 .item-title.tpl-text-header5 { font-size: 20px; line-height: 26px; }

/* ------------------------------------------------------------
   7. Читаемость текста: межстрочный интервал 1.33 для русского
   текста в 18px слишком плотный.
   ------------------------------------------------------------ */
.tpl-body-site-1,
.tpl-body-site-1 .tpl-text-default,
.tpl-body-site-1 .tpl-text-default-paragraph { line-height: 1.55; }
.tpl-body-site-1 .tpl-text-alt,
.tpl-body-site-1 .tpl-text-alt-paragraph { line-height: 1.45; }

/* ------------------------------------------------------------
   8. Слайдер: на светлом конце градиента белый текст переставал
   читаться (контраст 2.1–2.7 при норме 4.5).
   ------------------------------------------------------------ */
.lp-sl-item::before {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(20, 16, 12, .26);
  pointer-events: none;
  border-radius: inherit;
}
.lp-sl-item > * { position: relative; z-index: 1; }
.lp-sl-tag { color: #FFE7C2 !important; }

/* ------------------------------------------------------------
   9. Одинокая карточка преподавателя растягивалась на всю ширину
   ------------------------------------------------------------ */
.tpl-block-150 .tpl-block-150-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
  gap: 16px;
}

/* ------------------------------------------------------------
   1б. Шаблон дублирует палитру ещё и «списком цветов», а кнопки
   красит захардкоженным демо-цветом мимо всех переменных.
   ------------------------------------------------------------ */
body.tpl-body-site-1 {
  --tpl-color-list-htza: #2E2A23;   /* был #3D3D3D — основной текст */
  --tpl-color-list-trcw: #A9522C;   /* был #80412F — акцент */
  --tpl-color-list-eh3l: #155E54;   /* был #E07A5F — бренд */
  --tpl-color-list-qsz0: #FFFFFF;
  --tpl-color-list-6fly: #F3EBDD;   /* был #F5F5F5 — фон-акцент */
}

/* кнопки: демо-шаблон заливал их лососевым и делал текст серым */
.tpl-body-site-1 .tpl-button,
.tpl-body-site-1 .tpl-button-primary,
.tpl-body-site-1 button.tpl-block-button,
.tpl-body-site-1 input[type='submit']:not(.tpl-button-secondary) {
  background-color: #155E54;
  color: #FFFFFF;
  font-family: 'Manrope', system-ui, sans-serif;
}
.tpl-body-site-1 .tpl-button:hover,
.tpl-body-site-1 .tpl-button-primary:hover,
.tpl-body-site-1 button.tpl-block-button:hover,
.tpl-body-site-1 input[type='submit']:not(.tpl-button-secondary):hover {
  background-color: #0F4A42;
  color: #FFFFFF;
}
.tpl-body-site-1 .tpl-button-secondary {
  background-color: transparent;
  color: #155E54;
  border: 1.5px solid #155E54;
}
.tpl-body-site-1 .tpl-button-secondary:hover {
  background-color: #E2EFE9;
  color: #0F4A42;
}

/* ссылки меню и навигации наследовали демо-бренд */
.tpl-body-site-1 a.menu-item-link,
.tpl-body-site-1 .tpl-block-119 a,
.tpl-body-site-1 .breadcrumbs a,
.tpl-body-site-1 .tpl-block-111 a { color: #155E54; }
.tpl-body-site-1 a.menu-item-link:hover,
.tpl-body-site-1 .tpl-block-119 a:hover,
.tpl-body-site-1 .breadcrumbs a:hover,
.tpl-body-site-1 .tpl-block-111 a:hover { color: #A9522C; }

/* ------------------------------------------------------------
   10. Плотность каталога: при колонке 340px карточка вырастала
   до 594px — на экран помещался один ряд. Сужаем колонку,
   чтобы в ряд входило четыре материала.
   ------------------------------------------------------------ */
@media (min-width: 1024px) {
  .lp-catalog-col .tpl-block-list-objects {
    grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)) !important;
    gap: 20px !important;
  }
}

/* мобильный: подборки главной шли по одной карточке в ряд */
@media (max-width: 640px) {
  .tpl-component-netcat-module-netshop-aggregator .tpl-block-list-objects,
  .tpl-block-54 .tpl-block-54-list[data-object-count],
  .tpl-block-171 .tpl-block-171-list[data-object-count],
  .tpl-block-168 .tpl-block-168-list[data-object-count] {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 14px !important;
  }
}

/* ------------------------------------------------------------
   11. Виджеты шапки и служебные элементы шаблон красит напрямую
   демо-цветами (#E07A5F лососевый, #3D3D3D серый) — переменные
   их не задевают.
   ------------------------------------------------------------ */
.tpl-body-site-1 .nc-auth-widget,
.tpl-body-site-1 .nc-auth-widget-text,
.tpl-body-site-1 .cart-link,
.tpl-body-site-1 .compare-link,
.tpl-body-site-1 .favorite-link,
.tpl-body-site-1 .tpl-icon,
.tpl-body-site-1 [class*="-widget"] a,
.tpl-body-site-1 [class*="snippet"] a { color: #155E54 !important; }

.tpl-body-site-1 .nc-auth-widget:hover,
.tpl-body-site-1 .cart-link:hover,
.tpl-body-site-1 .compare-link:hover,
.tpl-body-site-1 .favorite-link:hover { color: #A9522C !important; }

/* счётчики над иконками — заливка терракотой, текст белый */
.tpl-body-site-1 [class*="counter"],
.tpl-body-site-1 [class*="-count"]:not([class*="prefix"]) { background-color: #C4643A !important; color: #fff !important; }

/* демо-серый в тексте */
.tpl-body-site-1 .tpl-text-default,
.tpl-body-site-1 .tpl-text-default-paragraph,
.tpl-body-site-1 .tpl-text-alt,
.tpl-body-site-1 p,
.tpl-body-site-1 li,
.tpl-body-site-1 td { color: #2E2A23 !important; }
.tpl-body-site-1 .tpl-text-alt,
.tpl-body-site-1 .tpl-text-alt-paragraph { color: #6B6154 !important; }

/* ------------------------------------------------------------
   12. Последние демо-цвета: стрелки слайдера, кнопка подписки,
   подложка подвала и поле поиска.
   ------------------------------------------------------------ */
.lp-sl-arrow { color: #2E2A23 !important; background: rgba(255,255,255,.92) !important; }
.lp-sl-arrow:hover { background: #fff !important; color: #155E54 !important; }

.tpl-body-site-1 button:not(.tpl-button-secondary):not(.lp-sl-arrow):not(.lp-filter-x):not(.lp-share-close):not(.item-card__cart-btn):not(.item-full__cart-btn):not(.lp-sticky-buy__btn):not(.lp-pass-toggle):not(.lp-agg-card__btn) {
  background-color: #155E54 !important;
  color: #fff !important;
}
.tpl-body-site-1 .lp-filter-x,
.tpl-body-site-1 .lp-share-close { background: none !important; color: #7A7063 !important; }

.tpl-container-130 { background-color: #4A3F3A; }
.tpl-body-site-1 input[type="text"],
.tpl-body-site-1 input[type="search"],
.tpl-body-site-1 input[type="email"],
.tpl-body-site-1 textarea { color: #2E2A23; }

/* карточки подборок и контактные строки — шаблон красит их демо-цветами */
.tpl-body-site-1 .goods-item,
.tpl-body-site-1 .goods-item *,
.tpl-body-site-1 .goods-info,
.tpl-body-site-1 .goods-info * { color: #2E2A23 !important; }
.tpl-body-site-1 .goods-item .prices,
.tpl-body-site-1 .goods-item .prices * { color: #155E54 !important; }

.tpl-body-site-1 .contact-value-text,
.tpl-body-site-1 .contact-value-text *,
.tpl-body-site-1 [class*="contact-value"] a { color: #155E54 !important; }
.tpl-container-130 .contact-value-text,
.tpl-container-130 .contact-value-text *,
.tpl-container-130 [class*="contact-value"] a { color: #FBF7F0 !important; }

/* ------------------------------------------------------------
   13. Шапка и подвал: шаблон красит эти элементы правилами
   с высокой специфичностью, поэтому повышаем свою.
   ------------------------------------------------------------ */
html body.tpl-body-site-1 .contact-value-wrapper .contact-value-text,
html body.tpl-body-site-1 .contact-value-wrapper .contact-value-text a,
html body.tpl-body-site-1 .tpl-block-list .cart-link,
html body.tpl-body-site-1 .tpl-block-list .nc-auth-widget,
html body.tpl-body-site-1 .tpl-block-list .nc-auth-widget-text,
html body.tpl-body-site-1 .tpl-block-list .menu-item-link,
html body.tpl-body-site-1 .tpl-block-list .menu-item-text { color: #155E54 !important; }

html body.tpl-body-site-1 .tpl-container-130 .contact-value-wrapper .contact-value-text,
html body.tpl-body-site-1 .tpl-container-130 .contact-value-wrapper .contact-value-text a,
html body.tpl-body-site-1 .tpl-container-130 .menu-item-link,
html body.tpl-body-site-1 .tpl-container-130 .menu-item-text { color: #FBF7F0 !important; }

html body.tpl-body-site-1 .tpl-block-list .item-title,
html body.tpl-body-site-1 .tpl-block-list .item-title a { color: #2E2A23 !important; }
html body.tpl-body-site-1 .tpl-block-list .item-title a:hover { color: #155E54 !important; }

/* ------------------------------------------------------------
   12. Мобильные карточки каталога (по скринам с iPhone 27.07):
   iOS Safari раздувал шрифт названия в узкой колонке, длинные
   слова («нейроподходом», «Нейрокарточки») уезжали за границу
   карточки и обрезались, из-за разной длины названий карточки
   вырастали в башни на 8 строк.
   ------------------------------------------------------------ */
html, body { -webkit-text-size-adjust: 100% !important; text-size-adjust: 100% !important; }

/* grid-ребёнок без min-width:0 не даёт тексту переноситься и распирает колонку */
.tpl-body-site-1 .item-card,
.tpl-body-site-1 .goods-item { min-width: 0; }
.tpl-body-site-1 .item-card *,
.tpl-body-site-1 .goods-item * { min-width: 0; }

.tpl-body-site-1 .item-card__title,
.tpl-body-site-1 .item-card__title a,
.tpl-body-site-1 .goods-info .goods-name,
.tpl-body-site-1 .goods-info .goods-name a {
  overflow-wrap: anywhere;
  word-break: break-word;
  hyphens: auto;
  -webkit-hyphens: auto;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 4;
  overflow: hidden;
}

@media (max-width: 767.98px) {
  .tpl-body-site-1 .tpl-component-netcat-module-netshop-goods-universal .item-card .item-card__title,
  .tpl-body-site-1 .item-card__title.tpl-text-default-paragraph,
  .tpl-body-site-1 .item-card__title a {
    font-size: 15px !important;
    line-height: 1.28 !important;
    -webkit-line-clamp: 3;
  }
  .tpl-body-site-1 .goods-info .goods-name,
  .tpl-body-site-1 .goods-info .goods-name a { font-size: 15px !important; -webkit-line-clamp: 3; }
  /* поля внутри карточки: текст упирался в край */
  .tpl-body-site-1 .item-card__content,
  .tpl-body-site-1 .item-card__footer { padding-left: 12px !important; padding-right: 12px !important; }
  .tpl-body-site-1 .item-card__price,
  .tpl-body-site-1 .item-card .prices { font-size: 17px !important; }
  .tpl-body-site-1 .item-card__cart-btn { width: 100%; justify-content: center; }
  /* описание под названием на 160px колонке нечитаемо — прячем, оно есть в карточке товара */
  .tpl-body-site-1 .item-card__description { display: none !important; }
}

/* очень узкие экраны: одна колонка вместо двух по 150px */
@media (max-width: 359.98px) {
  .tpl-body-site-1 .tpl-block-list-objects[data-object-count] {
    grid-template-columns: 1fr !important;
  }
}

/* ------------------------------------------------------------
   13. Материалы без обложки: у 210 позиций на исходном сайте
   картинки нет вовсе, и карточка показывала пустой прямоугольник.
   Рисуем фирменную заглушку прямо на пустом контейнере.
   ------------------------------------------------------------ */
.tpl-body-site-1 .item-card__image[data-gallery-count="0"],
.tpl-body-site-1 .goods-item .goods-image:empty {
  position: relative;
  background: linear-gradient(135deg, #F3EDE1 0%, #E9E0CF 100%);
  border-radius: 12px;
  min-height: 150px;
}
.tpl-body-site-1 .item-card__image[data-gallery-count="0"]::after,
.tpl-body-site-1 .goods-item .goods-image:empty::after {
  content: "Логопрофистор";
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: 'Lora', Georgia, serif;
  font-size: 15px;
  letter-spacing: .02em;
  color: #B3A68F;
}
.tpl-body-site-1 .item-card__image[data-gallery-count="0"]::before {
  content: "";
  position: absolute;
  left: 50%; top: 50%;
  width: 46px; height: 46px;
  margin: -46px 0 0 -23px;
  border: 2px solid #CFC2A8;
  border-radius: 10px;
  background:
    linear-gradient(#CFC2A8, #CFC2A8) no-repeat 10px 14px / 24px 2px,
    linear-gradient(#CFC2A8, #CFC2A8) no-repeat 10px 22px / 24px 2px,
    linear-gradient(#CFC2A8, #CFC2A8) no-repeat 10px 30px / 14px 2px;
}

/* Остаток на складе для цифровых материалов смысла не имеет:
   в корзине показывалось «В наличии 9999». */
.tpl-body-site-1 .product-quantity-available { display: none !important; }

/* ============================================================
   14. НАЗВАНИЯ В ТОВАРНЫХ КАРТОЧКАХ — единое правило.
   Раньше правила цеплялись за классы текста (.item-card__title,
   .goods-name), а тема выводит название то span.tpl-text-header4,
   то ссылку без класса — и в подборках на главной размер оставался
   22px при карточке 170px: слова уезжали за край, карточки росли
   в башни на восемь строк.
   Теперь целимся в КОНТЕЙНЕР карточки и накрываем любой текст внутри,
   какой бы класс тема ему ни выдала.
   ============================================================ */

/* товарная карточка в любом из шаблонов */
.tpl-body-site-1 .goods-item,
.tpl-body-site-1 .item-card,
.tpl-body-site-1 .item,
.tpl-body-site-1 .cart-page-row { min-width: 0; }

.tpl-body-site-1 .goods-item *,
.tpl-body-site-1 .item-card *,
.tpl-body-site-1 .item *,
.tpl-body-site-1 .cart-page-row * { min-width: 0; }

/* название: перенос длинных слов и ограничение по строкам */
.tpl-body-site-1 .goods-item .goods-info,
.tpl-body-site-1 .goods-item .goods-info > span,
.tpl-body-site-1 .goods-item [class*="tpl-text-header"],
.tpl-body-site-1 .item-card__title,
.tpl-body-site-1 .item-card__title a,
.tpl-body-site-1 .item .item-name,
.tpl-body-site-1 .item .item-name a,
.tpl-body-site-1 .cart-page-name,
.tpl-body-site-1 .cart-page-name a {
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
  hyphens: auto;
  -webkit-hyphens: auto;
}

/* название карточки в подборках: тема ставит header4 = 22px */
.tpl-body-site-1 .goods-item .goods-info [class*="tpl-text-header"],
.tpl-body-site-1 .goods-item .goods-info > span {
  display: -webkit-box !important;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  overflow: hidden;
  font-family: 'Lora', Georgia, serif !important;
  font-size: 16px !important;
  line-height: 1.3 !important;
  font-weight: 600 !important;
}

@media (max-width: 767.98px) {
  .tpl-body-site-1 .goods-item .goods-info [class*="tpl-text-header"],
  .tpl-body-site-1 .goods-item .goods-info > span,
  .tpl-body-site-1 .item-card__title,
  .tpl-body-site-1 .item-card__title a,
  .tpl-body-site-1 .item .item-name,
  .tpl-body-site-1 .item .item-name a {
    font-size: 14px !important;
    line-height: 1.28 !important;
    -webkit-line-clamp: 3;
  }
  /* цена не должна спорить с названием по весу */
  .tpl-body-site-1 .goods-item .prices,
  .tpl-body-site-1 .goods-item .price,
  .tpl-body-site-1 .item-card__price { font-size: 16px !important; }

  /* поля внутри карточки */
  .tpl-body-site-1 .goods-item .goods-info,
  .tpl-body-site-1 .goods-item .goods-descr { padding-left: 10px !important; padding-right: 10px !important; }
}

/* карточки одной высоты, цена и кнопка прижаты вниз */
.tpl-body-site-1 .goods-item { display: flex !important; flex-direction: column; }
.tpl-body-site-1 .goods-item .goods-info { flex: 1 1 auto; }
.tpl-body-site-1 .goods-item .prices,
.tpl-body-site-1 .goods-item .goods-buttons { margin-top: auto; }

/* материал без обложки: пустой блок картинки в подборках
   оставлял в карточке белую дыру на пол-экрана */
.tpl-body-site-1 .goods-item .goods-image:empty,
.tpl-body-site-1 .goods-item .goods-image:not(:has(img)) {
  position: relative;
  min-height: 150px;
  background: linear-gradient(135deg, #F3EDE1 0%, #E9E0CF 100%);
  border-radius: 12px;
}
.tpl-body-site-1 .goods-item .goods-image:empty::after,
.tpl-body-site-1 .goods-item .goods-image:not(:has(img))::after {
  content: "Логопрофистор";
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: 'Lora', Georgia, serif;
  font-size: 14px;
  color: #B3A68F;
}

/* Страховка для Safari без :has() — фон под картинкой рисуем всегда,
   реальная обложка просто перекрывает его сверху. */
.tpl-body-site-1 .goods-item .goods-image,
.tpl-body-site-1 .item-card__image {
  background-color: #F3EDE1;
  background-image: linear-gradient(135deg, #F3EDE1 0%, #E9E0CF 100%);
  border-radius: 12px;
  min-height: 140px;
}
.tpl-body-site-1 .goods-item .goods-image img,
.tpl-body-site-1 .item-card__image img { border-radius: 12px; }

/* ============================================================
   15. ШАПКА: была 132px из двух полос по 60px с зазором 12px.
   Андрей: «шапка слишком вытянута по вертикали», «убрать
   преподавателей из шапки».
   ============================================================ */

/* верхняя полоса (телефон + вход) и нижняя (меню) — плотнее */
.tpl-body-site-1 .tpl-container-127 { min-height: 0 !important; }
.tpl-body-site-1 .tpl-container-127 > .tpl-block-list { min-height: 44px !important; }
.tpl-body-site-1 .tpl-container-128 { margin-top: 0 !important; min-height: 0 !important; }
.tpl-body-site-1 .tpl-container-128 > .tpl-block-list { min-height: 52px !important; }

/* внутренние отступы блоков шапки съедали ещё по 8-10px сверху и снизу */
.tpl-body-site-1 .tpl-container-127 .tpl-block-list > *,
.tpl-body-site-1 .tpl-container-128 .tpl-block-list > * { padding-top: 0 !important; padding-bottom: 0 !important; }

/* «Преподаватели» остаётся в подвале и по прямой ссылке */
.tpl-body-site-1 .tpl-container-128 .menu-item:has(> a[href="/teachers/"]),
.tpl-body-site-1 .tpl-container-128 a[href="/teachers/"] { display: none !important; }

/* пункты меню не должны ломаться на две строки */
.tpl-body-site-1 .tpl-container-128 .menu-item-link {
  white-space: nowrap;
  font-size: 15px;
}

/* высота полос шапки задана темой как height:60px — min-height её не перебивает */
.tpl-body-site-1 .tpl-container-127,
.tpl-body-site-1 .tpl-container-127 > .tpl-block-list,
.tpl-body-site-1 .tpl-container-127 .tpl-block-list-objects { height: 46px !important; }

.tpl-body-site-1 .tpl-container-128,
.tpl-body-site-1 .tpl-container-128 > .tpl-block-list,
.tpl-body-site-1 .tpl-container-128 .tpl-block-list-objects { height: 54px !important; }

@media (max-width: 767.98px) {
  .tpl-body-site-1 .tpl-container-127,
  .tpl-body-site-1 .tpl-container-127 > .tpl-block-list,
  .tpl-body-site-1 .tpl-container-127 .tpl-block-list-objects { height: 44px !important; }
  .tpl-body-site-1 .tpl-container-128,
  .tpl-body-site-1 .tpl-container-128 > .tpl-block-list,
  .tpl-body-site-1 .tpl-container-128 .tpl-block-list-objects { height: 50px !important; }
}

/* ============================================================
   16. МОБИЛЬНОЕ МЕНЮ: Андрей просил вернуть закреплённую шапку
   и подсветку раздела, в котором находишься.
   ============================================================ */
@media (max-width: 1023.98px) {
  .tpl-body-site-1 .tpl-container-128 {
    position: sticky;
    top: 0;
    z-index: 90;
    background: #F3EDE1;
    box-shadow: 0 2px 10px rgba(46, 42, 35, .06);
  }
}

/* текущий раздел в меню и в бургере */
.tpl-body-site-1 .menu-item-link.lp-menu-current {
  color: #155E54 !important;
  font-weight: 700 !important;
}
.tpl-body-site-1 .tpl-component-netcat-navigation-menu .menu-item-link.lp-menu-current {
  position: relative;
  background: rgba(21, 94, 84, .07);
  border-radius: 10px;
}
.tpl-body-site-1 .tpl-component-netcat-navigation-menu .menu-item-link.lp-menu-current::before {
  content: "";
  position: absolute;
  left: 0; top: 50%;
  width: 3px; height: 22px;
  margin-top: -11px;
  background: #155E54;
  border-radius: 2px;
}

/* кнопка после добавления в корзину: подпись сохраняем скриптом,
   здесь только вид «уже в корзине» */
.tpl-body-site-1 .lp-in-cart {
  background: #0F4A42 !important;
  color: #fff !important;
}



/* ------------------------------------------------------------
   19. Обложка в карточке — строгий квадрат одного размера.
   Было object-fit: contain: узкие картинки висели с полями,
   высота блока прыгала от карточки к карточке.
   ------------------------------------------------------------ */
.tpl-body-site-1 .goods-item .goods-image,
.tpl-body-site-1 .item-card__image {
  aspect-ratio: 1 / 1;
  height: auto !important;
  overflow: hidden;
  display: block;
}
.tpl-body-site-1 .goods-item .goods-image img,
.tpl-body-site-1 .item-card__image img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  object-position: center;
  display: block;
}

/* заголовок подборки — ссылка в свой раздел каталога */
.tpl-body-site-1 a.lp-section-link {
  color: inherit;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.tpl-body-site-1 a.lp-section-link::after {
  content: "→";
  font-size: .7em;
  color: #155E54;
  opacity: 0;
  transform: translateX(-6px);
  transition: opacity .18s, transform .18s;
}
.tpl-body-site-1 a.lp-section-link:hover { color: #155E54; }
.tpl-body-site-1 a.lp-section-link:hover::after { opacity: 1; transform: translateX(0); }

/* ============================================================
   20. Блок «Доступ сразу / Документ / Безопасная оплата»:
   занимал пол-экрана при трёх строчках текста. Андрей просил
   сделать ниже. Заодно убираем иконку грузовика — она осталась
   от демо-магазина с доставкой.
   ============================================================ */
.tpl-body-site-1 .tpl-block-57 .tpl-block-list-objects,
.tpl-body-site-1 .tpl-block-56 .tpl-block-list-objects,
.tpl-body-site-1 .tpl-block-60 .tpl-block-list-objects {
  gap: 20px !important;
}
.tpl-body-site-1 .tpl-block-57 .tpl-block-list-objects > *,
.tpl-body-site-1 .tpl-block-56 .tpl-block-list-objects > *,
.tpl-body-site-1 .tpl-block-60 .tpl-block-list-objects > * {
  padding-top: 18px !important;
  padding-bottom: 18px !important;
}
/* ВНИМАНИЕ: селектор по подстроке "icon" ловил контейнер
   .advantages.icon-top и схлопывал весь блок до 30px.
   Целимся строго в саму иконку (svg или img внутри блока). */
.tpl-body-site-1 .tpl-block-57 .tpl-block-list-objects > * > svg,
.tpl-body-site-1 .tpl-block-57 .tpl-block-list-objects > * > img,
.tpl-body-site-1 .tpl-block-56 .tpl-block-list-objects > * > svg,
.tpl-body-site-1 .tpl-block-60 .tpl-block-list-objects > * > svg {
  width: 30px !important;
  height: 30px !important;
  margin-bottom: 8px !important;
}
.tpl-body-site-1 .tpl-block-57 .fact-title,
.tpl-body-site-1 .tpl-block-57 [class*="title"] { margin-bottom: 4px !important; font-size: 15px !important; }
.tpl-body-site-1 .tpl-block-57 [class*="text"],
.tpl-body-site-1 .tpl-block-57 p { font-size: 14px !important; line-height: 1.45 !important; margin: 0 !important; }

/* ============================================================
   21. СТАТЬЯ БЛОГА.
   Обложка выводилась в натуральную величину: портрет 1240×930
   занимал весь экран, до текста нужно было прокручивать.
   Строка текста была 89 символов — читается тяжело,
   комфортный диапазон 60–75.
   ============================================================ */
.tpl-body-site-1 .item-image-wrapper,
.tpl-body-site-1 article .item-image,
.tpl-body-site-1 .tpl-component-netcat-block-article .item-image-wrapper {
  max-height: 420px;
  overflow: hidden;
  border-radius: 16px;
}
.tpl-body-site-1 .item-image-wrapper img,
.tpl-body-site-1 article .item-image img {
  width: 100% !important;
  height: 420px !important;
  object-fit: cover !important;
  object-position: center 25%;
  display: block;
}

/* колонка текста статьи */
.tpl-body-site-1 .item-text,
.tpl-body-site-1 .item-full__text,
.tpl-body-site-1 article .tpl-text-default-paragraph {
  max-width: 720px !important;
  width: auto !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
.tpl-body-site-1 .item-text p { margin-bottom: 1.1em; }

@media (max-width: 767.98px) {
  .tpl-body-site-1 .item-image-wrapper,
  .tpl-body-site-1 article .item-image { max-height: 240px; }
  .tpl-body-site-1 .item-image-wrapper img,
  .tpl-body-site-1 article .item-image img { height: 240px !important; }
  .tpl-body-site-1 .item-text { font-size: 16px !important; }
}

/* ============================================================
   22. Кнопка после добавления в корзину.
   Тема оставляла её прозрачной, а на мобильном ещё и без подписи —
   покупатель не понимал, добавился товар или нет.
   ============================================================ */
.tpl-body-site-1 .item-card__cart-btn.is-in-cart,
.tpl-body-site-1 .item-full__cart-btn.is-in-cart,
.tpl-body-site-1 .lp-in-cart {
  background: #0F4A42 !important;
  border-color: #0F4A42 !important;
  color: #fff !important;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 40px;
}
.tpl-body-site-1 .item-card__cart-btn.is-in-cart::before,
.tpl-body-site-1 .item-full__cart-btn.is-in-cart::before {
  content: "✓";
  font-weight: 700;
}
.tpl-body-site-1 .item-card__cart-btn.is-in-cart:hover,
.tpl-body-site-1 .item-full__cart-btn.is-in-cart:hover {
  background: #155E54 !important;
}
/* на узком экране кнопка должна занимать всю ширину карточки */
@media (max-width: 767.98px) {
  .tpl-body-site-1 .item-card__cart-btn { width: 100%; }
}

/* ============================================================
   23. Похожие материалы на карточке товара.
   ============================================================ */
.tpl-body-site-1 .lp-related { margin: 44px 0 8px; }
.tpl-body-site-1 .lp-related__title { margin: 0 0 18px; }
.tpl-body-site-1 .lp-related__grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 20px;
}
.tpl-body-site-1 .lp-related__card {
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid #E5DCC9;
  border-radius: 16px;
  overflow: hidden;
  text-decoration: none;
  color: #2E2A23;
  transition: box-shadow .18s, transform .18s;
}
.tpl-body-site-1 .lp-related__card:hover {
  box-shadow: 0 10px 26px rgba(46, 42, 35, .10);
  transform: translateY(-3px);
}
.tpl-body-site-1 .lp-related__media {
  display: block;
  aspect-ratio: 1 / 1;
  background: linear-gradient(135deg, #F3EDE1 0%, #E9E0CF 100%);
  overflow: hidden;
}
.tpl-body-site-1 .lp-related__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.tpl-body-site-1 .lp-related__name {
  font-family: 'Lora', Georgia, serif;
  font-weight: 600;
  font-size: 15px;
  line-height: 1.3;
  padding: 12px 14px 6px;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  overflow: hidden;
  overflow-wrap: anywhere;
  flex: 1 1 auto;
}
.tpl-body-site-1 .lp-related__price {
  padding: 0 14px 14px;
  color: #155E54;
  font-weight: 800;
  font-size: 16px;
}
.tpl-body-site-1 .lp-related__price--free { color: #A9522C; }

@media (max-width: 1023.98px) {
  .tpl-body-site-1 .lp-related__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
}
@media (max-width: 767.98px) {
  .tpl-body-site-1 .lp-related__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
  .tpl-body-site-1 .lp-related__name { font-size: 14px; }
}

/* ============================================================
   24. ПОДВАЛ: висели служебные страницы кабинета — «Сменить
   пароль», «Восстановление пароля», «Выход». Внутри кабинета
   они нужны, в подвале сайта — нет.
   ============================================================ */
.tpl-body-site-1 .tpl-block-106 .menu-item:has(> a[href="/my/modify/"]),
.tpl-body-site-1 .tpl-block-106 .menu-item:has(> a[href="/my/password-change/"]),
.tpl-body-site-1 .tpl-block-106 .menu-item:has(> a[href="/my/password-recovery/"]),
.tpl-body-site-1 .tpl-block-106 .menu-item:has(> a[href="/my/registration/"]),
.tpl-body-site-1 .tpl-block-106 .menu-item:has(> a[href="/my/vyhod/"]),
.tpl-body-site-1 .tpl-block-106 .menu-item:has(> a[href="/my/my-purchases/"]),
.tpl-body-site-1 .tpl-block-106 .menu-item:has(> a[href="/my/orders/"]) { display: none !important; }

/* запасной вариант для браузеров без :has() */
.tpl-body-site-1 .tpl-block-106 a[href="/my/modify/"],
.tpl-body-site-1 .tpl-block-106 a[href="/my/password-change/"],
.tpl-body-site-1 .tpl-block-106 a[href="/my/password-recovery/"],
.tpl-body-site-1 .tpl-block-106 a[href="/my/registration/"],
.tpl-body-site-1 .tpl-block-106 a[href="/my/vyhod/"],
.tpl-body-site-1 .tpl-block-106 a[href="/my/my-purchases/"],
.tpl-body-site-1 .tpl-block-106 a[href="/my/orders/"] { display: none !important; }

/* ============================================================
   25. Раздел преподавателей: карточки стояли впритык,
   Андрей просил увеличить отступы.
   ============================================================ */
.tpl-body-site-1 .tpl-block-list-objects:has(.teacher-card),
.tpl-body-site-1 .tpl-component-teacher .tpl-block-list-objects { gap: 28px !important; }

.tpl-body-site-1 .teacher-card,
.tpl-body-site-1 [class*="teacher"] .item-card { padding: 18px !important; }

.tpl-body-site-1 .teacher-card__name,
.tpl-body-site-1 [class*="teacher"] .item-card__title { margin-bottom: 8px !important; }

.tpl-body-site-1 [class*="teacher"] .item-card__content { padding: 16px 18px 18px !important; }

/* ============================================================
   26. ЧИТАЕМОСТЬ (проверено по WCAG AA, порог 4.5:1).
   Демо-цвет темы #E07A5F на светлом фоне давал контраст 2.76 —
   телефон в шапке, заголовки статей, ссылки «Читать блог»
   читались плохо. Заменяем на терракотовый той же гаммы,
   но проходящий по контрасту (около 5.4:1).
   ============================================================ */
/* тема красит эти ссылки через -webkit-text-fill-color, поэтому
   одного color недостаточно — он перебивается */
html body.tpl-body-site-1 a.contact-value-text,
html body.tpl-body-site-1 .contact-value-text,
html body.tpl-body-site-1 .sec-link {
  color: #A9522C !important;
  -webkit-text-fill-color: #A9522C !important;
}

/* заголовок статьи в блоге — основной тёмный, а не акцентный */
html body.tpl-body-site-1 a.item-title,
html body.tpl-body-site-1 .item-title {
  color: #2E2A23 !important;
  -webkit-text-fill-color: #2E2A23 !important;
}
html body.tpl-body-site-1 a.item-title:hover {
  color: #155E54 !important;
  -webkit-text-fill-color: #155E54 !important;
}

/* зона нажатия у пунктов меню была 20px — на телефоне в неё
   трудно попасть; рекомендуемый минимум 40px */
.tpl-body-site-1 .menu-item-link {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
}
@media (max-width: 1023.98px) {
  .tpl-body-site-1 .tpl-component-netcat-navigation-menu .menu-item-link { min-height: 46px; }
}

/* надпись над заголовком первого экрана была 12px */
.tpl-body-site-1 .lp-hero-kicker { font-size: 13px !important; letter-spacing: .08em; }

/* ============================================================
   27. КАРТОЧКА ПО ЭТАЛОННОМУ МАКЕТУ.
   Обложка-подложка с подписью текстом (не картинкой — подпись
   должна индексироваться), категория над названием, компактная
   цена со старой ценой, кнопка-иконка вместо широкой.
   ============================================================ */
.tpl-body-site-1 .lp-card-cover {
  position: relative;
  display: flex !important;
  align-items: flex-end;
  aspect-ratio: 4 / 3 !important;
  padding: 0 !important;
  overflow: hidden;
  color: #fff;
}
.tpl-body-site-1 .lp-card-cover--1 { background: linear-gradient(140deg, #0D453D, #2E8272); }
.tpl-body-site-1 .lp-card-cover--2 { background: linear-gradient(140deg, #8A4520, #DE8A5C); }
.tpl-body-site-1 .lp-card-cover--3 { background: linear-gradient(140deg, #3D3D20, #8A8A50); }
.tpl-body-site-1 .lp-card-cover--4 { background: linear-gradient(140deg, #1F4E5E, #5C97A8); }
.tpl-body-site-1 .lp-card-cover--5 { background: linear-gradient(140deg, #5E2E42, #A85C7C); }

.tpl-body-site-1 .lp-card-cover img {
  position: absolute;
  inset: 0;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
}

/* подпись поверх обложки: читаемая на любой картинке за счёт затемнения снизу */
.tpl-body-site-1 .lp-card-cover__word {
  position: relative;
  z-index: 2;
  width: 100%;
  padding: 26px 14px 12px;
  font-family: 'Caveat', 'Manrope', cursive;
  font-size: clamp(19px, 2.2vw, 26px);
  line-height: 1.1;
  color: #fff;
  text-shadow: 0 1px 8px rgba(0, 0, 0, .45);
}
.tpl-body-site-1 .lp-card-cover:has(img) .lp-card-cover__word {
  background: linear-gradient(to top, rgba(20, 18, 14, .78), rgba(20, 18, 14, 0));
}

/* категория над названием */
.tpl-body-site-1 .lp-card-cat {
  font-size: 11.5px;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: #6B6154;
  margin-bottom: 4px;
}

/* цена: основная + перечёркнутая старая */
.tpl-body-site-1 .item-card__price-old,
.tpl-body-site-1 .item-card__price small {
  font-size: 14px;
  color: #6B6154;
  text-decoration: line-through;
  font-weight: 500;
  margin-left: 6px;
}

/* карточка целиком */
.tpl-body-site-1 .item-card {
  border-radius: 18px;
  overflow: hidden;
  transition: transform .25s, box-shadow .25s;
}
.tpl-body-site-1 .item-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 30px rgba(46, 42, 35, .12);
}
.tpl-body-site-1 .item-card__content { padding: 14px !important; gap: 6px; }

/* заголовок секции с подзаголовком и ссылкой «Все →» */
.tpl-body-site-1 .lp-sec-head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 18px;
}
.tpl-body-site-1 .lp-sec-sub {
  color: #6B6154;
  max-width: 560px;
  margin: 6px 0 0;
  font-size: 15px;
  line-height: 1.5;
}
.tpl-body-site-1 .lp-sec-link {
  color: #155E54;
  font-weight: 700;
  text-decoration: none;
  white-space: nowrap;
  padding-top: 6px;
}
.tpl-body-site-1 .lp-sec-link:hover { color: #A9522C; }


/* ============================================================
   28. ДОВОДКА КАРТОЧКИ ПОД ЭТАЛОН.
   Правила идут последними, потому что заглушку-подложку из
   предыдущих секций надо перебить цветом раздела.
   ============================================================ */

/* цветная обложка раздела вместо бежевой заглушки */
html body.tpl-body-site-1 .lp-card-cover--1 { background-image: linear-gradient(140deg, #0D453D, #2E8272) !important; }
html body.tpl-body-site-1 .lp-card-cover--2 { background-image: linear-gradient(140deg, #8A4520, #DE8A5C) !important; }
html body.tpl-body-site-1 .lp-card-cover--3 { background-image: linear-gradient(140deg, #3D3D20, #8A8A50) !important; }
html body.tpl-body-site-1 .lp-card-cover--4 { background-image: linear-gradient(140deg, #1F4E5E, #5C97A8) !important; }
html body.tpl-body-site-1 .lp-card-cover--5 { background-image: linear-gradient(140deg, #5E2E42, #A85C7C) !important; }
html body.tpl-body-site-1 .lp-card-cover { background-color: transparent !important; }

/* фирменная заглушка больше не нужна: у обложки есть цвет раздела */
html body.tpl-body-site-1 .item-card__image[data-gallery-count="0"]::after,
html body.tpl-body-site-1 .item-card__image[data-gallery-count="0"]::before { content: none !important; }

/* переносы по слогам рвали слова: «нейропсихологиче-ские» */
html body.tpl-body-site-1 .item-card__title,
html body.tpl-body-site-1 .item-card__title a,
html body.tpl-body-site-1 .goods-info,
html body.tpl-body-site-1 .lp-related__name {
  hyphens: none !important;
  -webkit-hyphens: none !important;
  overflow-wrap: break-word !important;
  word-break: normal !important;
}

/* каталог: четыре карточки в ряд на широком экране */
@media (min-width: 1200px) {
  html body.tpl-body-site-1 .lp-catalog-col .tpl-block-list-objects,
  html body.tpl-body-site-1 .tpl-block-151-list[data-object-count],
  html body.tpl-body-site-1 .tpl-block-161-list[data-object-count],
  html body.tpl-body-site-1 .tpl-block-162-list[data-object-count],
  html body.tpl-body-site-1 .tpl-block-163-list[data-object-count],
  html body.tpl-body-site-1 .tpl-block-164-list[data-object-count],
  html body.tpl-body-site-1 .tpl-block-165-list[data-object-count] {
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    gap: 22px !important;
  }
}

/* кнопка корзины: в макете компактная, а не во всю карточку */
html body.tpl-body-site-1 .item-card__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 0 14px 14px !important;
}
html body.tpl-body-site-1 .item-card__cart-form { display: contents; }
html body.tpl-body-site-1 .item-card__cart-btn {
  width: auto !important;
  min-width: 44px;
  padding: 9px 14px !important;
  font-size: 14px !important;
  border-radius: 12px;
}

/* ============================================================
   29. Преподаватель в карточке — как в эталоне: кружок
   с инициалами, фамилия и регалии.
   ============================================================ */
html body.tpl-body-site-1 .lp-card-teacher {
  display: flex;
  align-items: center;
  gap: 9px;
  margin: 2px 0 4px;
  min-width: 0;
}
html body.tpl-body-site-1 .lp-card-teacher__ava {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  color: #fff;
  font-weight: 800;
  font-size: 12px;
  letter-spacing: .02em;
  flex-shrink: 0;
}
html body.tpl-body-site-1 .lp-card-teacher__ava--1 { background: linear-gradient(135deg, #155E54, #3E8A76); }
html body.tpl-body-site-1 .lp-card-teacher__ava--2 { background: linear-gradient(135deg, #A9522C, #DE8A5C); }
html body.tpl-body-site-1 .lp-card-teacher__ava--3 { background: linear-gradient(135deg, #54542E, #8A8A50); }

html body.tpl-body-site-1 .lp-card-teacher__info { min-width: 0; display: block; }
html body.tpl-body-site-1 .lp-card-teacher__name {
  display: block;
  font-weight: 700;
  font-size: 13.5px;
  line-height: 1.25;
  color: #2E2A23;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
html body.tpl-body-site-1 .lp-card-teacher__role {
  display: block;
  font-size: 12px;
  line-height: 1.3;
  color: #6B6154;
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

/* плашка с датой вебинара */
html body.tpl-body-site-1 .lp-card-date {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  align-self: flex-start;
  font-weight: 800;
  font-size: 12.5px;
  color: #A9522C;
  background: rgba(196, 100, 58, .12);
  border-radius: 999px;
  padding: 5px 12px;
  margin: 2px 0;
}
html body.tpl-body-site-1 .lp-card-date::before { content: "🗓"; font-size: 12px; }


/* цена и кнопка в одной строке, как в макете: цена слева, кнопка справа */
html body.tpl-body-site-1 .item-card__footer {
  display: flex !important;
  flex-direction: row !important;
  align-items: center;
  justify-content: space-between;
  flex-wrap: nowrap;
  gap: 10px;
  padding: 12px 14px 14px !important;
  border-top: 1px dashed #E5DCC9;
  margin-top: auto;
}
html body.tpl-body-site-1 .item-card__price,
html body.tpl-body-site-1 .item-card__prices {
  text-align: left !important;
  font-weight: 800;
  font-size: 19px;
  white-space: nowrap;
  margin: 0 !important;
}
html body.tpl-body-site-1 .item-card__cart-btn {
  flex-shrink: 0;
  white-space: nowrap;
}

/* ============================================================
   30. ШАПКА ПО ЭТАЛОНУ — одна строка вместо двух этажей темы.
   Штатную шапку прячем: на её блоках висят счётчики и всплывающие
   окна магазина, поэтому удалять их из разметки нельзя.
   ============================================================ */
.tpl-body-site-1 .tpl-container-127,
.tpl-body-site-1 .tpl-container-128 { display: none !important; }

.lp-hd {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(251, 247, 240, .94);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid #E5DCC9;
}
.lp-hd__in {
  max-width: 1560px;
  margin: 0 auto;
  padding: 0 20px;
  height: 66px;
  display: flex;
  align-items: center;
  gap: 18px;
}

/* логотип */
.lp-hd__logo { flex-shrink: 0; text-decoration: none; line-height: 1.05; }
.lp-hd__logo-name {
  display: block;
  font-family: 'Lora', Georgia, serif;
  font-weight: 700;
  font-size: 23px;
  color: #155E54;
}
.lp-hd__logo-name em { font-style: normal; color: #C4643A; }
.lp-hd__logo-sub {
  display: block;
  font-size: 9.5px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: #6B6154;
  margin-top: 2px;
}

/* меню */
.lp-hd__nav { display: flex; align-items: center; gap: 2px; flex-shrink: 0; }
.lp-hd__item {
  position: relative;
  display: inline-flex;
  align-items: center;
  height: 40px;
  padding: 0 12px;
  border-radius: 10px;
  font-size: 15px;
  font-weight: 600;
  color: #2E2A23;
  text-decoration: none;
  white-space: nowrap;
  transition: background .15s, color .15s;
}
.lp-hd__item:hover,
.lp-hd__item > a:hover { background: rgba(21, 94, 84, .07); color: #155E54; }
.lp-hd__item.is-current,
.lp-hd__item > a.is-current { color: #155E54; background: rgba(21, 94, 84, .1); }
.lp-hd__item--drop > a {
  display: inline-flex;
  align-items: center;
  height: 40px;
  padding: 0 12px;
  border-radius: 10px;
  color: inherit;
  text-decoration: none;
}

/* выпадающий каталог */
.lp-hd__drop {
  position: absolute;
  top: 100%;
  left: 0;
  min-width: 240px;
  background: #fff;
  border: 1px solid #E5DCC9;
  border-radius: 14px;
  box-shadow: 0 14px 34px rgba(46, 42, 35, .14);
  padding: 8px;
  display: none;
  flex-direction: column;
  gap: 2px;
  z-index: 20;
}
.lp-hd__item--drop:hover .lp-hd__drop { display: flex; }
.lp-hd__drop a {
  padding: 9px 12px;
  border-radius: 9px;
  font-size: 14.5px;
  color: #2E2A23;
  text-decoration: none;
  white-space: nowrap;
}
.lp-hd__drop a:hover { background: #F3EDE1; color: #155E54; }

/* поиск */
.lp-hd__search {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 9px;
  height: 40px;
  padding: 0 14px;
  background: #fff;
  border: 1px solid #E5DCC9;
  border-radius: 999px;
  color: #6B6154;
}
.lp-hd__search:focus-within { border-color: #155E54; box-shadow: 0 0 0 3px rgba(21, 94, 84, .1); }
.lp-hd__search input {
  flex: 1;
  min-width: 0;
  border: 0;
  outline: 0;
  background: transparent;
  font: inherit;
  font-size: 14.5px;
  color: #2E2A23;
}

/* иконки и вход */
.lp-hd__icons { display: flex; align-items: center; gap: 4px; flex-shrink: 0; }
.lp-hd__icon {
  position: relative;
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  border-radius: 10px;
  color: #2E2A23;
  text-decoration: none;
  transition: background .15s, color .15s;
}
.lp-hd__icon:hover { background: rgba(21, 94, 84, .07); color: #155E54; }
.lp-hd__bubble {
  position: absolute;
  top: 3px; right: 3px;
  min-width: 16px; height: 16px;
  padding: 0 4px;
  border-radius: 8px;
  background: #C4643A;
  color: #fff;
  font-size: 10px;
  font-weight: 800;
  display: grid;
  place-items: center;
  /* центр цифры: строка в 20 px внутри значка 16 px опускала глиф
     на два пикселя ниже середины */
  line-height: 1;
  text-align: center;
  box-sizing: border-box;
}
.lp-hd__login {
  margin-left: 6px;
  padding: 9px 18px;
  border: 1.5px solid #E5DCC9;
  border-radius: 12px;
  background: #fff;
  color: #2E2A23;
  font-size: 14.5px;
  font-weight: 700;
  text-decoration: none;
  white-space: nowrap;
}
.lp-hd__login:hover { border-color: #155E54; color: #155E54; }

.lp-hd__burger {
  display: none;
  width: 40px; height: 40px;
  place-items: center;
  border: 0;
  background: transparent;
  border-radius: 10px;
  color: #2E2A23;
  cursor: pointer;
}

/* мобильное меню */
.lp-hd__mobile {
  display: none;
  position: fixed;
  inset: 66px 0 0 0;
  background: #FBF7F0;
  z-index: 99;
  padding: 18px 20px 40px;
  overflow: auto;
  flex-direction: column;
}
.lp-hd__mobile.is-open { display: flex; }
.lp-hd__mobile a {
  padding: 14px 4px;
  border-bottom: 1px solid #E5DCC9;
  font-size: 17px;
  font-weight: 600;
  color: #2E2A23;
  text-decoration: none;
}
.lp-hd__mobile a.is-current { color: #155E54; }
.lp-hd__mobile-sub { padding-left: 20px !important; font-size: 15px !important; font-weight: 500 !important; color: #6B6154 !important; }

.lp-visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  margin: -1px; padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

@media (max-width: 1100px) {
  .lp-hd__nav { display: none; }
  .lp-hd__burger { display: grid; }
}
@media (max-width: 720px) {
  .lp-hd__in { height: 58px; gap: 10px; padding: 0 14px; }
  .lp-hd__search { display: none; }
  .lp-hd__login { display: none; }
  .lp-hd__logo-name { font-size: 20px; }
  .lp-hd__logo-sub { font-size: 8.5px; }
  .lp-hd__mobile { inset: 58px 0 0 0; }
}

/* ============================================================
   31. ПЕРВЫЙ ЭКРАН ПО ЭТАЛОНУ.
   ============================================================ */
.lp-usp { padding: 44px 0 26px; }
.lp-usp__in { max-width: 900px; margin: 0 auto; padding: 0 20px; text-align: center; }
.lp-usp__kicker {
  font-size: 13px;
  letter-spacing: .1em;
  text-transform: uppercase;
  font-weight: 700;
  color: #6B6154;
  margin: 0 0 10px;
}
.lp-usp__title {
  font-family: 'Lora', Georgia, serif;
  font-weight: 700;
  font-size: clamp(28px, 4.6vw, 46px);
  line-height: 1.14;
  color: #2E2A23;
  margin: 0 0 14px;
}
.lp-usp__title em { font-style: normal; color: #155E54; display: block; }
.lp-usp__sub {
  font-size: 16px;
  line-height: 1.55;
  color: #6B6154;
  max-width: 640px;
  margin: 0 auto 24px;
}
.lp-usp__search {
  display: flex;
  align-items: center;
  gap: 10px;
  max-width: 640px;
  margin: 0 auto;
  padding: 6px 6px 6px 18px;
  background: #fff;
  border: 1px solid #E5DCC9;
  border-radius: 999px;
  box-shadow: 0 6px 20px rgba(46, 42, 35, .06);
  color: #6B6154;
}
.lp-usp__search:focus-within { border-color: #155E54; box-shadow: 0 0 0 4px rgba(21, 94, 84, .1); }
.lp-usp__search input {
  flex: 1;
  min-width: 0;
  border: 0;
  outline: 0;
  background: transparent;
  font: inherit;
  font-size: 15px;
  color: #2E2A23;
  padding: 10px 0;
}
.lp-usp__btn {
  flex-shrink: 0;
  border: 0;
  background: #155E54;
  color: #fff;
  font: inherit;
  font-weight: 700;
  font-size: 15px;
  padding: 11px 24px;
  border-radius: 999px;
  cursor: pointer;
  transition: background .15s, transform .15s;
}
.lp-usp__btn:hover { background: #0F4A42; transform: translateY(-1px); }

@media (max-width: 640px) {
  .lp-usp { padding: 26px 0 18px; }
  .lp-usp__sub { font-size: 15px; }
  .lp-usp__search { padding-left: 14px; gap: 6px; }
  .lp-usp__btn { padding: 11px 18px; font-size: 14px; }
}

/* ============================================================
   32. КАРТОЧКА ПОДБОРКИ НА ГЛАВНОЙ — по эталонному макету.
   Раньше подборки показывали картинку, название и цену, из-за чего
   главная выглядела беднее каталога.
   ============================================================ */
html body.tpl-body-site-1 .lp-agg-card {
  display: flex !important;
  flex-direction: column;
  background: #fff;
  border: 1px solid #E5DCC9;
  border-radius: 18px;
  overflow: hidden;
  transition: transform .25s, box-shadow .25s;
  min-width: 0;
}
html body.tpl-body-site-1 .lp-agg-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 30px rgba(46, 42, 35, .12);
}

/* обложка с подписью поверх */
html body.tpl-body-site-1 .lp-agg-card__cover {
  position: relative;
  display: flex !important;
  align-items: flex-end;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  text-decoration: none;
}
html body.tpl-body-site-1 .lp-agg-card__cover--1 { background: linear-gradient(140deg, #0D453D, #2E8272); }
html body.tpl-body-site-1 .lp-agg-card__cover--2 { background: linear-gradient(140deg, #8A4520, #DE8A5C); }
html body.tpl-body-site-1 .lp-agg-card__cover--3 { background: linear-gradient(140deg, #3D3D20, #8A8A50); }
html body.tpl-body-site-1 .lp-agg-card__cover--4 { background: linear-gradient(140deg, #1F4E5E, #5C97A8); }
html body.tpl-body-site-1 .lp-agg-card__cover--5 { background: linear-gradient(140deg, #5E2E42, #A85C7C); }
html body.tpl-body-site-1 .lp-agg-card__cover img {
  position: absolute;
  inset: 0;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover;
}
html body.tpl-body-site-1 .lp-agg-card__word {
  position: relative;
  z-index: 2;
  width: 100%;
  padding: 26px 14px 12px;
  font-family: 'Caveat', 'Manrope', cursive;
  font-size: clamp(18px, 2vw, 24px);
  line-height: 1.1;
  color: #fff;
  text-shadow: 0 1px 8px rgba(0, 0, 0, .45);
  background: linear-gradient(to top, rgba(20, 18, 14, .7), rgba(20, 18, 14, 0));
}

/* тело карточки */
html body.tpl-body-site-1 .lp-agg-card__body {
  display: flex !important;
  flex-direction: column;
  gap: 7px;
  padding: 14px;
  flex: 1 1 auto;
  min-width: 0;
}
html body.tpl-body-site-1 .lp-agg-card__cat {
  font-size: 11.5px;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: #6B6154;
}
html body.tpl-body-site-1 .lp-agg-card__title {
  font-family: 'Lora', Georgia, serif;
  font-weight: 700;
  font-size: 16px;
  line-height: 1.3;
  color: #2E2A23;
  text-decoration: none;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  overflow: hidden;
  overflow-wrap: break-word;
  hyphens: none;
}
html body.tpl-body-site-1 .lp-agg-card__title:hover { color: #155E54; }

/* преподаватель */
html body.tpl-body-site-1 .lp-agg-card__teacher { display: flex; align-items: center; gap: 9px; min-width: 0; }
html body.tpl-body-site-1 .lp-agg-card__ava {
  width: 34px; height: 34px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  color: #fff;
  font-weight: 800;
  font-size: 12px;
  flex-shrink: 0;
}
html body.tpl-body-site-1 .lp-agg-card__ava--1 { background: linear-gradient(135deg, #155E54, #3E8A76); }
html body.tpl-body-site-1 .lp-agg-card__ava--2 { background: linear-gradient(135deg, #A9522C, #DE8A5C); }
html body.tpl-body-site-1 .lp-agg-card__ava--3 { background: linear-gradient(135deg, #54542E, #8A8A50); }
html body.tpl-body-site-1 .lp-agg-card__tinfo { min-width: 0; }
html body.tpl-body-site-1 .lp-agg-card__tname {
  display: block;
  font-weight: 700;
  font-size: 13.5px;
  line-height: 1.25;
  color: #2E2A23;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
html body.tpl-body-site-1 .lp-agg-card__trole {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
  font-size: 12px;
  line-height: 1.3;
  color: #6B6154;
}

/* метки */
html body.tpl-body-site-1 .lp-agg-card__meta { display: flex; flex-wrap: wrap; gap: 6px; }
html body.tpl-body-site-1 .lp-agg-card__meta span {
  font-size: 12px;
  color: #6B6154;
  border: 1px solid #DFD4C2;
  border-radius: 999px;
  padding: 3px 10px;
}

/* цена и кнопка */
html body.tpl-body-site-1 .lp-agg-card__foot {
  margin-top: auto;
  padding-top: 12px;
  border-top: 1px dashed #E5DCC9;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
html body.tpl-body-site-1 .lp-agg-card__price {
  font-weight: 800;
  font-size: 19px;
  color: #2E2A23;
  white-space: nowrap;
}
html body.tpl-body-site-1 .lp-agg-card__price small {
  font-size: 13px;
  color: #6B6154;
  text-decoration: line-through;
  font-weight: 500;
  margin-left: 5px;
}
html body.tpl-body-site-1 .lp-agg-card__btn {
  flex-shrink: 0;
  background: #155E54;
  color: #fff;
  font-size: 13.5px;
  font-weight: 700;
  text-decoration: none;
  padding: 9px 16px;
  border-radius: 12px;
  white-space: nowrap;
  transition: background .15s;
}
html body.tpl-body-site-1 .lp-agg-card__btn:hover { background: #0F4A42; }

@media (max-width: 767.98px) {
  html body.tpl-body-site-1 .lp-agg-card__title { font-size: 14px; }
  html body.tpl-body-site-1 .lp-agg-card__body { padding: 12px; gap: 6px; }
  html body.tpl-body-site-1 .lp-agg-card__price { font-size: 17px; }
  html body.tpl-body-site-1 .lp-agg-card__btn { padding: 8px 12px; font-size: 12.5px; }
}

/* Старая заглушка (бежевый фон + надпись «Логопрофистор») накладывалась
   на цветную обложку карточки: получались две подложки в одной плашке. */
html body.tpl-body-site-1 .lp-agg-card__cover::after,
html body.tpl-body-site-1 .lp-agg-card__cover::before { content: none !important; }
html body.tpl-body-site-1 .lp-agg-card__cover {
  background-color: transparent !important;
  border-radius: 0 !important;
  min-height: 0 !important;
}
html body.tpl-body-site-1 .lp-agg-card__cover--1 { background-image: linear-gradient(140deg, #0D453D, #2E8272) !important; }
html body.tpl-body-site-1 .lp-agg-card__cover--2 { background-image: linear-gradient(140deg, #8A4520, #DE8A5C) !important; }
html body.tpl-body-site-1 .lp-agg-card__cover--3 { background-image: linear-gradient(140deg, #3D3D20, #8A8A50) !important; }
html body.tpl-body-site-1 .lp-agg-card__cover--4 { background-image: linear-gradient(140deg, #1F4E5E, #5C97A8) !important; }
html body.tpl-body-site-1 .lp-agg-card__cover--5 { background-image: linear-gradient(140deg, #5E2E42, #A85C7C) !important; }

/* подпись без фото занимает всю плашку и центрируется */
html body.tpl-body-site-1 .lp-agg-card__cover .lp-agg-card__word {
  background: none;
  padding: 16px;
  align-self: center;
  text-align: center;
  font-size: clamp(20px, 2.4vw, 27px);
}

/* подпись на цветной обложке должна быть белой: наследуемый цвет
   темы делал её тёмной на тёмном фоне */
html body.tpl-body-site-1 .lp-agg-card__word,
html body.tpl-body-site-1 .lp-card-cover__word {
  color: #FFFFFF !important;
  -webkit-text-fill-color: #FFFFFF !important;
  text-shadow: 0 1px 10px rgba(0, 0, 0, .35);
  font-weight: 400;
}

/* Форма поиска на первом экране прижималась влево: тема сбрасывает
   margin у form, и «margin: 0 auto» не доживало до отрисовки. */
html body.tpl-body-site-1 .lp-usp__search {
  margin-left: auto !important;
  margin-right: auto !important;
}
html body.tpl-body-site-1 .lp-usp__in { text-align: center; }

/* ============================================================
   33. БЛОК ПОДПИСКИ — по эталонному макету.
   ============================================================ */
.lp-subscribe { padding: 10px 0 48px; }
.lp-subscribe__in {
  max-width: 1240px;
  margin: 0 auto;
  padding: 34px 36px;
  background: linear-gradient(120deg, #F3EDE1 0%, #EDE3D2 100%);
  border: 1px solid #E5DCC9;
  border-radius: 22px;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 28px;
  align-items: center;
}
.lp-subscribe__hand {
  font-family: 'Caveat', 'Manrope', cursive;
  font-size: 21px;
  color: #A9522C;
  margin-bottom: 4px;
}
.lp-subscribe__title {
  font-family: 'Lora', Georgia, serif;
  font-weight: 700;
  font-size: clamp(22px, 2.6vw, 30px);
  line-height: 1.2;
  color: #2E2A23;
  margin: 0;
}
.lp-subscribe__sub { color: #6B6154; margin: 8px 0 0; line-height: 1.55; }

.lp-subscribe__row { display: flex; gap: 10px; }
.lp-subscribe__row input {
  flex: 1;
  min-width: 0;
  height: 46px;
  padding: 0 16px;
  border: 1px solid #E5DCC9;
  border-radius: 12px;
  background: #fff;
  font: inherit;
  font-size: 15px;
  color: #2E2A23;
}
.lp-subscribe__row input:focus { outline: 0; border-color: #155E54; box-shadow: 0 0 0 3px rgba(21,94,84,.1); }
.lp-subscribe__row button {
  flex-shrink: 0;
  height: 46px;
  padding: 0 22px;
  border: 0;
  border-radius: 12px;
  background: #C4643A;
  color: #fff;
  font: inherit;
  font-weight: 700;
  font-size: 15px;
  cursor: pointer;
  transition: background .15s;
}
.lp-subscribe__row button:hover { background: #A9522C; }

.lp-subscribe__check {
  display: flex;
  gap: 9px;
  margin-top: 12px;
  font-size: 12.5px;
  line-height: 1.45;
  color: #6B6154;
}
.lp-subscribe__check input { margin-top: 2px; flex-shrink: 0; }
.lp-subscribe__check a { color: #155E54; }
.lp-subscribe__error { color: #A9522C; font-size: 13.5px; margin: 8px 0 0; font-weight: 600; }

.lp-subscribe__done {
  background: #fff;
  border: 1px solid #E5DCC9;
  border-radius: 14px;
  padding: 20px 22px;
}
.lp-subscribe__done strong { display: block; color: #155E54; font-size: 17px; margin-bottom: 4px; }
.lp-subscribe__done span { color: #6B6154; font-size: 14.5px; }

@media (max-width: 900px) {
  .lp-subscribe__in { grid-template-columns: 1fr; padding: 26px 22px; gap: 20px; }
}
@media (max-width: 560px) {
  .lp-subscribe__row { flex-direction: column; }
  .lp-subscribe__row button { width: 100%; }
}

/* Поле внутри поисковой пилюли рисовало собственную рамку и было выше
   контейнера — получалась вторая рамка, торчащая за пределы. */
html body.tpl-body-site-1 .lp-hd__search input,
html body.tpl-body-site-1 .lp-usp__search input {
  border: 0 !important;
  outline: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  height: auto !important;
  min-height: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  line-height: 1.3 !important;
  -webkit-appearance: none;
  appearance: none;
}
html body.tpl-body-site-1 .lp-usp__search input { padding: 10px 0 !important; }
html body.tpl-body-site-1 .lp-hd__search input:focus,
html body.tpl-body-site-1 .lp-usp__search input:focus { box-shadow: none !important; border: 0 !important; }

/* крестик очистки в Chrome ломал выравнивание */
html body.tpl-body-site-1 .lp-hd__search input::-webkit-search-cancel-button,
html body.tpl-body-site-1 .lp-usp__search input::-webkit-search-cancel-button { -webkit-appearance: none; }

/* ============================================================
   34. СТАТЬЯ БЛОГА: обложка была во всю ширину, а текст 720px —
   колонка казалась обрезанной. Сводим их к одной ширине.
   ============================================================ */
html body.tpl-body-site-1 .item-text,
html body.tpl-body-site-1 .item-full__text,
html body.tpl-body-site-1 article .tpl-text-default-paragraph {
  max-width: 820px !important;
}
html body.tpl-body-site-1 .item-image-wrapper,
html body.tpl-body-site-1 article .item-image {
  max-width: 820px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  max-height: 380px;
}
html body.tpl-body-site-1 .item-image-wrapper img,
html body.tpl-body-site-1 article .item-image img { height: 380px !important; }

/* заголовок статьи — по той же колонке */
html body.tpl-body-site-1 .object-item-full > h1,
html body.tpl-body-site-1 article > h1 {
  max-width: 820px;
  margin-left: auto;
  margin-right: auto;
}

@media (max-width: 900px) {
  html body.tpl-body-site-1 .item-image-wrapper,
  html body.tpl-body-site-1 article .item-image { max-height: 240px; }
  html body.tpl-body-site-1 .item-image-wrapper img,
  html body.tpl-body-site-1 article .item-image img { height: 240px !important; }
}

/* Подпись на плашке — полное название материала: обрезка давала
   обрубки вроде «Дисфункция сенсорной». Уменьшаем кегль и даём
   несколько строк, чтобы название читалось целиком. */
html body.tpl-body-site-1 .lp-agg-card__word,
html body.tpl-body-site-1 .lp-card-cover__word {
  font-family: 'Lora', Georgia, serif !important;
  font-size: 17px !important;
  line-height: 1.28 !important;
  font-weight: 600 !important;
  padding: 18px !important;
  text-align: left !important;
  align-self: flex-end !important;
  display: -webkit-box !important;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 5;
  overflow: hidden;
  text-shadow: 0 1px 12px rgba(0, 0, 0, .3);
}
@media (max-width: 767.98px) {
  html body.tpl-body-site-1 .lp-agg-card__word,
  html body.tpl-body-site-1 .lp-card-cover__word { font-size: 15px !important; padding: 14px !important; }
}

/* ============================================================
   35. КАЛИБРОВКА ОБЛОЖЕК.
   Широкие баннеры (692×288 и подобные) в квадратной карточке
   обрезались по краям — от надписи оставалась середина вроде
   «гопедическ массаж». Такие вписываем целиком на фирменном фоне.
   ============================================================ */
html body.tpl-body-site-1 .lp-agg-card__cover.is-wide img,
html body.tpl-body-site-1 .item-card__image.is-wide img {
  object-fit: contain !important;
  padding: 10px;
  background: transparent;
}
html body.tpl-body-site-1 .lp-agg-card__cover.is-wide,
html body.tpl-body-site-1 .item-card__image.is-wide {
  background-image: linear-gradient(140deg, #F3EDE1, #E4D9C5) !important;
}
/* на вписанной картинке подпись не рисуем — она бы легла на баннер */
html body.tpl-body-site-1 .lp-agg-card__cover.is-wide .lp-agg-card__word { display: none; }

/* ============================================================
   36. Карточка товара по эталону: плашка типа, факты,
       блок покупки, состав покупки, липкая панель на телефоне
   ============================================================ */
.lp-p-type {
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--lp-terra, #C4633A);
  margin-bottom: 6px;
}

.lp-facts {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 16px 0 20px;
}
.lp-fact {
  background: var(--lp-teal-soft, #E4F0EC);
  color: var(--lp-teal-dark, #0D453D);
  font-size: 13px;
  font-weight: 700;
  border-radius: 999px;
  padding: 7px 14px;
  white-space: nowrap;
}
.lp-fact--start,
.lp-fact--date {
  background: #FBEDE6;
  color: #8E3F1C;
}

.lp-buy-box {
  background: #fff;
  border: 1px solid var(--lp-line, #E7E1D6);
  border-radius: 18px;
  padding: 22px;
  box-shadow: 0 2px 10px rgba(46, 42, 35, .05);
  margin-top: 4px;
}
.lp-buy-box .item-full__price-block {
  display: flex;
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
  margin: 0 0 6px;
  padding: 0;
  border: 0;
}
.lp-buy-box .item-full__price {
  font-size: 34px;
  font-weight: 800;
  line-height: 1.05;
  color: var(--lp-ink, #2E2A23);
}
.lp-buy-box .item-full__price-old {
  font-size: 18px;
  color: var(--lp-muted, #6E6558);
  text-decoration: line-through;
}
.lp-price-disc {
  background: var(--lp-terra, #C4633A);
  color: #fff;
  font-size: 12.5px;
  font-weight: 800;
  border-radius: 8px;
  padding: 3px 9px;
  white-space: nowrap;
}
.lp-buy-note {
  font-size: 13px;
  line-height: 1.5;
  color: var(--lp-muted, #6E6558);
  margin: 0 0 16px;
}
.lp-buy-box .item-full__actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  align-items: center;
  margin: 0;
}
.lp-buy-box .item-full__cart-btn {
  flex: 1 1 180px;
  min-width: 180px;
  font-size: 16px;
}

.lp-includes-sec .item-full__section-content {
  background: var(--lp-sand, #F6F1E7);
  border-radius: 18px;
  padding: 22px 24px;
}
.lp-includes {
  list-style: none;
  margin: 0;
  padding: 0;
}
.lp-includes li {
  display: flex;
  gap: 11px;
  padding: 7px 0;
  font-size: 15px;
  line-height: 1.45;
  font-weight: 600;
  color: var(--lp-ink, #2E2A23);
}
.lp-includes li::before {
  content: '▸';
  color: var(--lp-terra, #C4633A);
  font-weight: 800;
  flex-shrink: 0;
}

.lp-sticky-buy {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 90;
  background: #fff;
  border-top: 1px solid var(--lp-line, #E7E1D6);
  box-shadow: 0 -6px 24px rgba(46, 42, 35, .12);
  padding: 10px 16px calc(10px + env(safe-area-inset-bottom));
  display: none;
  align-items: center;
  gap: 12px;
  transform: translateY(110%);
  transition: transform .28s ease;
}
.lp-sticky-buy__price {
  font-weight: 800;
  font-size: 19px;
  line-height: 1.1;
  white-space: nowrap;
}
.lp-sticky-buy__price small {
  display: block;
  font-size: 11.5px;
  color: var(--lp-muted, #6E6558);
  font-weight: 600;
  text-decoration: line-through;
}
.lp-sticky-buy__btn {
  flex: 1;
  padding: 12px 10px;
  font-size: 15px;
}

@media (max-width: 900px) {
  .lp-sticky-buy { display: flex; }
  .lp-sticky-buy.is-shown { transform: none; }
  .lp-buy-box { padding: 18px; }
  .lp-buy-box .item-full__price { font-size: 28px; }
  .lp-includes-sec .item-full__section-content { padding: 18px; }
}

/* ------------------------------------------------------------
   36.1 Обложка товара без фотографии.
   Половина первого экрана пустовала у 210 материалов без картинки.
   Подпись — обычный текст в разметке, а не картинка: он нужен поиску.
   ------------------------------------------------------------ */
.lp-p-cover {
  position: relative;
  aspect-ratio: 1 / 1;
  border-radius: 20px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: 14px;
  padding: 34px;
  overflow: hidden;
  box-shadow: 0 18px 40px rgba(13, 69, 61, .18);
  background: linear-gradient(135deg, #0D453D 0%, #155E54 55%, #2E8272 100%);
}
.lp-p-cover--2 { background: linear-gradient(135deg, #7A3418 0%, #A9522C 55%, #C4643A 100%); }
.lp-p-cover--3 { background: linear-gradient(135deg, #1F3D63 0%, #2E5A8C 55%, #4A7FB5 100%); }
.lp-p-cover--4 { background: linear-gradient(135deg, #4A2B57 0%, #6B3F7C 55%, #8D5A9F 100%); }
.lp-p-cover--5 { background: linear-gradient(135deg, #5B4A12 0%, #86701F 55%, #A98C2C 100%); }

/* мягкое пятно, чтобы плашка не выглядела плоской заливкой */
.lp-p-cover::after {
  content: '';
  position: absolute;
  right: -20%;
  top: -25%;
  width: 70%;
  height: 70%;
  border-radius: 50%;
  background: rgba(255, 255, 255, .10);
  pointer-events: none;
}
.lp-p-cover__word {
  position: relative;
  z-index: 1;
  color: #fff;
  font-family: 'PT Serif', Georgia, serif;
  font-size: clamp(22px, 2.4vw, 32px);
  font-weight: 700;
  line-height: 1.22;
  letter-spacing: -.01em;
  hyphens: none;
  text-wrap: balance;
}
.lp-p-cover__badge {
  position: absolute;
  top: 26px;
  left: 26px;
  z-index: 1;
  background: rgba(255, 255, 255, .16);
  border: 1px solid rgba(255, 255, 255, .3);
  color: #fff;
  font-size: 11.5px;
  font-weight: 800;
  letter-spacing: .07em;
  text-transform: uppercase;
  border-radius: 999px;
  padding: 6px 13px;
  backdrop-filter: blur(3px);
}

@media (max-width: 900px) {
  .lp-p-cover { padding: 24px; border-radius: 16px; }
  .lp-p-cover__badge { top: 18px; left: 18px; }
}

/* ------------------------------------------------------------
   36.2 Длинное описание материала: читаемая мера строки.
   Тексты пришли из каталога и доходят до 12 000 знаков —
   при ширине в 1240px строка нечитаема.
   ------------------------------------------------------------ */
.item-full__details {
  max-width: 780px;
  font-size: 16.5px;
  line-height: 1.62;
}
.item-full__details p { margin: 0 0 14px; }
.item-full__details p:last-child { margin-bottom: 0; }
.item-full__details h3 {
  font-family: 'PT Serif', Georgia, serif;
  font-size: 21px;
  line-height: 1.28;
  margin: 26px 0 10px;
  color: var(--lp-ink, #2E2A23);
}
.item-full__details ul,
.item-full__details ol { margin: 0 0 16px; padding-left: 0; list-style: none; }
.item-full__details ol { counter-reset: lp-num; }
.item-full__details li {
  position: relative;
  padding-left: 26px;
  margin-bottom: 7px;
  line-height: 1.55;
}
.item-full__details ul > li::before {
  content: '';
  position: absolute;
  left: 6px;
  top: 11px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--lp-terra, #A9522C);
}
.item-full__details ol > li::before {
  counter-increment: lp-num;
  content: counter(lp-num) '.';
  position: absolute;
  left: 0;
  top: 0;
  font-weight: 800;
  color: var(--lp-terra, #A9522C);
}
.item-full__details strong,
.item-full__details b { font-weight: 700; color: var(--lp-ink, #2E2A23); }
.item-full__details br + br { display: none; }

@media (max-width: 900px) {
  .item-full__details { font-size: 15.5px; }
  .item-full__details h3 { font-size: 19px; margin-top: 20px; }
}

/* мера строки: тема задаёт кегль более специфичным селектором,
   поэтому повторяем правило с двойным классом */
.item-full__section-content.item-full__details,
.item-full .item-full__details {
  max-width: 780px;
  font-size: 16.5px;
  line-height: 1.62;
}

/* тема сбрасывает max-width у блоков контента — держим меру строки принудительно */
.item-full__section-content.item-full__details,
.item-full .item-full__details { max-width: 780px !important; }

/* ------------------------------------------------------------
   36.3 Зоны нажатия на телефоне.
   Кнопки покупки были 34–38px, вторичные действия — 25px;
   палец требует минимум 44px, иначе промахи.
   ------------------------------------------------------------ */
@media (max-width: 900px) {
  .lp-buy-box .item-full__cart-btn,
  .lp-buy-box .item-full__quick-buy,
  .lp-sticky-buy__btn,
  .item-full__cart-btn {
    min-height: 46px !important;
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }
  .item-full__qty-btn {
    min-width: 44px !important;
    min-height: 44px !important;
  }
  .item-full__qty-input { min-height: 44px; }
  .item-full__secondary-actions { gap: 6px; }
  .item-full__action {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    padding: 0 4px;
  }
  /* липкая панель перекрывает низ страницы — добавляем воздух */
  .item-full { padding-bottom: 74px; }
}

/* ------------------------------------------------------------
   37. Каталог: название материала целиком и ровные карточки.
   Тема резала заголовок до двух строк — «Дисфункция сенсорной…»
   вместо полного названия. Специалисту нужно понять, что внутри.
   ------------------------------------------------------------ */
.tpl-body-site-1 .tpl-component-netcat-module-netshop-goods-universal.tpl-block-list .item-card__title,
.tpl-component-netcat-module-netshop-goods-universal.tpl-block-list .item-card__title {
  -webkit-line-clamp: 5 !important;
  font-size: 17px !important;
  line-height: 1.32 !important;
  hyphens: none !important;
  overflow-wrap: break-word;
}

/* карточки в ряду одинаковой высоты, кнопка прижата к низу */
.tpl-component-netcat-module-netshop-goods-universal.tpl-block-list .tpl-block-list-objects > * {
  display: flex;
  align-items: stretch;
}
.tpl-component-netcat-module-netshop-goods-universal.tpl-block-list .item-card {
  width: 100%;
}

/* строка «Найдено N материалов» и сортировка */
.prefix {
  align-items: center;
  gap: 16px;
  padding-bottom: 6px;
}
.prefix-count {
  font-size: 15px;
  color: var(--lp-muted, #6B6154);
}
.prefix-count b {
  color: var(--lp-ink, #2E2A23);
  font-weight: 800;
}

@media (max-width: 720px) {
  .prefix { flex-wrap: wrap; }
}

/* ------------------------------------------------------------
   38. Обложки из каталога поставщика.
   Часть картинок — баннеры с набранным чужим текстом. В сетке
   они нечитаемы и спорят с нашей подписью: прячем баннер и
   оставляем фирменную плашку. Название — обычный текст, он нужен
   поиску. Оригинал остаётся в галерее на странице товара.
   ------------------------------------------------------------ */
.lp-agg-card__cover.is-banner img,
.item-card__image.is-banner img,
.lp-related__media.is-banner img { display: none !important; }

.lp-agg-card__cover.is-banner .lp-agg-card__word,
.item-card__image.is-banner .lp-card-cover__word {
  position: static;
  display: flex;
  align-items: flex-end;
  height: 100%;
  padding: 20px;
  background: none;
}

/* фотография человека или разворота: подпись читается только на подложке */
.item-card__image.has-photo .lp-card-cover__word,
.lp-agg-card__cover.has-photo .lp-agg-card__word {
  background: linear-gradient(180deg, rgba(13, 69, 61, 0) 0%, rgba(13, 69, 61, .55) 45%, rgba(13, 69, 61, .92) 100%);
  text-shadow: 0 1px 12px rgba(0, 0, 0, .45);
  padding-top: 42px;
}

/* вертикальная картинка вписывается целиком, без обрезки по краям */
.item-card__image.is-wide img,
.lp-agg-card__cover.is-wide img,
.lp-related__media.is-wide img {
  object-fit: contain !important;
  background: transparent;
}

/* подпись на фотографии прижата к низу — там лежит затемнение,
   вверху текст читался поверх светлого снимка */
.item-card__image.has-photo .lp-card-cover__word,
.lp-agg-card__cover.has-photo .lp-agg-card__word {
  top: auto !important;
  bottom: 0 !important;
  left: 0 !important;
  right: 0 !important;
  display: flex !important;
  align-items: flex-end !important;
  min-height: 62% !important;
}

/* ------------------------------------------------------------
   38.1 Единая обложка в сетках карточек.
   Импортированные картинки — рекламные баннеры поставщика с чужим
   набранным текстом; в сетке они спорят с нашей подписью и дают
   разнобой. В эталонном макете все карточки — фирменные плашки с
   названием (текстом, а не картинкой). Оригинал изображения
   остаётся в галерее на странице товара.
   ------------------------------------------------------------ */
.item-card__image img,
.lp-agg-card__cover img,
.lp-related__media img { display: none !important; }

.item-card__image .lp-card-cover__word,
.lp-agg-card__cover .lp-agg-card__word,
.lp-related__media .lp-related__name {
  position: static !important;
  display: flex !important;
  align-items: flex-start !important;
  height: 100% !important;
  min-height: 0 !important;
  background: none !important;
  text-shadow: none !important;
  padding: 18px !important;
}

/* точки галереи и стрелки без картинок не нужны */
.item-card__gallery-dots,
.item-card__gallery { display: none !important; }

/* подпись на плашке всегда у нижнего края — иначе в ряду разнобой */
.item-card__image .lp-card-cover__word,
.lp-agg-card__cover .lp-agg-card__word,
.item-card__image.has-photo .lp-card-cover__word,
.lp-agg-card__cover.has-photo .lp-agg-card__word {
  align-items: flex-end !important;
}

/* название материала на главной — целиком: обрезка «первые два слова»
   не даёт понять, что внутри, и выглядит недоделкой */
.lp-agg-card__title {
  -webkit-line-clamp: 5 !important;
  font-size: 16.5px !important;
  line-height: 1.33 !important;
  hyphens: none !important;
}

/* ============================================================
   39. Страница преподавателя по эталону
   ============================================================ */
.lp-t-hero {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 32px;
  align-items: start;
  background: var(--lp-sand, #F6F1E7);
  border-radius: 22px;
  padding: 30px;
  margin-bottom: 34px;
}
.lp-t-photo {
  position: relative;
  aspect-ratio: 1 / 1;
  border-radius: 18px;
  overflow: hidden;
  background: linear-gradient(135deg, #0D453D 0%, #155E54 55%, #2E8272 100%);
  display: grid;
  place-items: center;
  box-shadow: 0 12px 28px rgba(13, 69, 61, .18);
}
.lp-t-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lp-t-ini {
  color: #fff;
  font-family: 'PT Serif', Georgia, serif;
  font-size: 58px;
  font-weight: 700;
  letter-spacing: .04em;
}
.lp-t-kicker {
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .09em;
  text-transform: uppercase;
  color: var(--lp-terra, #A9522C);
  margin: 0 0 10px;
}
.lp-t-regalia {
  font-size: 16.5px;
  line-height: 1.55;
  color: var(--lp-ink, #2E2A23);
  margin: 0 0 16px;
  max-width: 720px;
}
.lp-t-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; }
.lp-t-tag {
  background: #fff;
  border: 1px solid var(--lp-line, #DFD4C2);
  border-radius: 999px;
  padding: 6px 13px;
  font-size: 13px;
  font-weight: 700;
  color: var(--lp-teal-dark, #0F4A42);
}
.lp-t-stats { display: flex; flex-wrap: wrap; gap: 26px; }
.lp-t-stat b {
  display: block;
  font-family: 'PT Serif', Georgia, serif;
  font-size: 27px;
  line-height: 1.1;
  color: var(--lp-teal-dark, #0F4A42);
}
.lp-t-stat span { font-size: 13px; color: var(--lp-muted, #6B6154); }

.lp-t-bio { margin-bottom: 34px; max-width: 820px; }
.lp-t-bio h2,
.lp-t-works-head h2 {
  font-family: 'PT Serif', Georgia, serif;
  font-size: 26px;
  margin: 0 0 12px;
}
.lp-t-bio-text { font-size: 16.5px; line-height: 1.62; }
.lp-t-bio-text p { margin: 0 0 12px; }

.lp-t-works-head { margin-bottom: 18px; }
.lp-t-works-sub { font-size: 14px; color: var(--lp-muted, #6B6154); margin: 0; }
.lp-t-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
  gap: 20px;
}
.lp-t-card {
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid var(--lp-line, #DFD4C2);
  border-radius: 18px;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  transition: box-shadow .2s, transform .2s, border-color .2s;
}
.lp-t-card:hover {
  border-color: var(--lp-teal, #155E54);
  box-shadow: 0 10px 26px rgba(46, 42, 35, .10);
  transform: translateY(-2px);
}
.lp-t-card__cover {
  aspect-ratio: 4 / 3;
  display: flex;
  align-items: flex-end;
  padding: 16px;
  background: linear-gradient(140deg, #0D453D, #2E8272);
}
.lp-t-card__cover--2 { background: linear-gradient(140deg, #7A3418, #C4643A); }
.lp-t-card__cover--3 { background: linear-gradient(140deg, #1F3D63, #4A7FB5); }
.lp-t-card__cover--4 { background: linear-gradient(140deg, #4A2B57, #8D5A9F); }
.lp-t-card__cover--5 { background: linear-gradient(140deg, #5B4A12, #A98C2C); }
.lp-t-card__word {
  color: #fff;
  font-family: 'PT Serif', Georgia, serif;
  font-size: 18px;
  font-weight: 700;
  line-height: 1.25;
  hyphens: none;
}
.lp-t-card__body {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 14px 16px 16px;
  flex: 1 1 auto;
}
.lp-t-card__cat {
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--lp-terra, #A9522C);
}
.lp-t-card__name {
  font-family: 'PT Serif', Georgia, serif;
  font-size: 16px;
  line-height: 1.32;
  font-weight: 600;
  color: var(--lp-ink, #2E2A23);
}
.lp-t-card__meta { display: flex; flex-wrap: wrap; gap: 6px; }
.lp-t-card__meta span {
  background: var(--lp-sand, #F6F1E7);
  border-radius: 999px;
  padding: 4px 10px;
  font-size: 11.5px;
  font-weight: 700;
  color: var(--lp-muted, #6B6154);
}
.lp-t-card__foot {
  margin-top: auto;
  padding-top: 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  border-top: 1px solid var(--lp-line, #DFD4C2);
}
.lp-t-card__price { font-size: 17px; font-weight: 800; white-space: nowrap; }
.lp-t-card__price small {
  display: block;
  font-size: 11.5px;
  font-weight: 600;
  color: var(--lp-muted, #6B6154);
  text-decoration: line-through;
}
.lp-t-card__btn {
  background: var(--lp-teal, #155E54);
  color: #fff;
  border-radius: 10px;
  padding: 8px 13px;
  font-size: 13px;
  font-weight: 700;
  white-space: nowrap;
}

@media (max-width: 860px) {
  .lp-t-hero { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
  .lp-t-photo { max-width: 180px; }
  .lp-t-stats { gap: 18px; }
  .lp-t-grid { grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 14px; }
  .lp-t-card__btn { min-height: 40px; display: inline-flex; align-items: center; }
}

/* регалии абзацами: одним куском они читались как стена текста */
.lp-t-regalia p { margin: 0 0 8px; }
.lp-t-regalia p:last-child { margin-bottom: 0; }

/* ------------------------------------------------------------
   40. Короткая регистрация (правка Андрея).
   ------------------------------------------------------------ */
.lp-pass-toggle {
  display: inline-block;
  margin-top: 8px;
  background: none;
  border: 0;
  padding: 0;
  font-size: 13px;
  font-weight: 700;
  color: var(--lp-teal, #155E54);
  cursor: pointer;
  text-decoration: underline;
}
.lp-pass-toggle:hover { color: var(--lp-terra, #A9522C); }
.lp-reg-short { max-width: 520px; }
.lp-reg-short .tpl-field-input,
.lp-reg-short input[type="text"],
.lp-reg-short input[type="password"],
.lp-reg-short input[type="email"] { width: 100%; max-width: 100%; }

@media (max-width: 720px) {
  .lp-reg-short input { min-height: 46px; }
  .lp-reg-short button[type="submit"] { min-height: 48px; width: 100%; }
}

/* тема красит любые button как основную кнопку — переключатель должен
   выглядеть ссылкой, иначе спорит с «Зарегистрироваться» */
.lp-pass-toggle {
  background: none !important;
  border: 0 !important;
  padding: 0 !important;
  width: auto !important;
  min-height: 0 !important;
  box-shadow: none !important;
  color: var(--lp-teal, #155E54) !important;
  font-size: 13px !important;
  font-weight: 700 !important;
  text-align: left !important;
  text-decoration: underline;
}

/* ------------------------------------------------------------
   41. Кнопка входа и меню кабинета в шапке (правки Андрея).
   ------------------------------------------------------------ */
.lp-hd__login-btn,
.lp-hd__account-btn {
  cursor: pointer;
  font: inherit;
}
.lp-hd__account { position: relative; }
.lp-hd__account-btn::after {
  content: '';
  display: inline-block;
  width: 6px;
  height: 6px;
  margin-left: 7px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
  transition: transform .18s;
}
.lp-hd__account-btn.is-open::after { transform: translateY(1px) rotate(-135deg); }
.lp-hd__account-menu {
  position: absolute;
  right: 0;
  top: calc(100% + 10px);
  z-index: 60;
  min-width: 210px;
  background: #fff;
  border: 1px solid var(--lp-line, #DFD4C2);
  border-radius: 14px;
  box-shadow: 0 14px 34px rgba(46, 42, 35, .16);
  padding: 8px;
  display: flex;
  flex-direction: column;
}
.lp-hd__account-menu[hidden] { display: none; }
.lp-hd__account-menu a {
  padding: 10px 12px;
  border-radius: 9px;
  font-size: 14.5px;
  font-weight: 600;
  color: var(--lp-ink, #2E2A23);
  text-decoration: none;
}
.lp-hd__account-menu a:hover { background: var(--lp-sand, #F6F1E7); color: var(--lp-teal, #155E54); }

@media (max-width: 900px) {
  .lp-hd__account-menu { position: fixed; right: 12px; left: auto; top: 64px; min-width: 200px; }
  .lp-hd__login-btn, .lp-hd__account-btn { min-height: 42px; }
}

/* ------------------------------------------------------------
   42. Окно входа на телефоне (правка Андрея): по центру экрана,
   с плотной подложкой — шторка снизу читалась как часть страницы.
   ------------------------------------------------------------ */
@media (max-width: 900px) {
  .nc-auth-popup {
    align-items: center !important;
    background: rgba(20, 18, 14, .72) !important;
    padding: 16px !important;
  }
  .nc-auth-popup__container {
    border-radius: 18px !important;
    max-height: calc(100vh - 32px);
    overflow-y: auto;
  }
  .nc-auth-popup input[type="text"],
  .nc-auth-popup input[type="email"],
  .nc-auth-popup input[type="password"],
  .nc-auth-popup button { min-height: 46px; }
}

/* ------------------------------------------------------------
   43. Кнопка «назад» на телефоне (правка Андрея).
   На десктопе не нужна — там видна вся цепочка крошек.
   ------------------------------------------------------------ */
.lp-back { display: none; }

@media (max-width: 900px) {
  .lp-back {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    min-height: 40px;
    margin: 4px 0 6px;
    font-size: 14.5px;
    font-weight: 700;
    color: var(--lp-teal, #155E54);
    text-decoration: none;
  }
  .lp-back::before {
    content: '';
    width: 8px;
    height: 8px;
    border-left: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(45deg);
  }
  /* полную цепочку на узком экране прячем — она переносилась в три строки */
  .tpl-component-netcat-navigation-breadcrumbs { display: none; }
}

/* ------------------------------------------------------------
   44. Сетка карточек на телефоне.
   Две колонки по 160px резали название до пары слов —
   на узком экране показываем по одной карточке в ряд.
   ------------------------------------------------------------ */
@media (max-width: 520px) {
  .tpl-container-146-list,
  .tpl-block-list-objects,
  .lp-agg-grid,
  .tpl-component-netcat-module-netshop-aggregator .tpl-block-list-objects,
  .tpl-component-netcat-module-netshop-goods-universal .tpl-block-list-objects {
    grid-template-columns: 1fr !important;
  }
  .lp-agg-card__cover,
  .item-card__image { aspect-ratio: 16 / 9; }
  .lp-agg-card__title,
  .item-card__title { -webkit-line-clamp: 6 !important; }
}

/* моё правило проигрывало по специфичности более раннему блоку темы —
   повторяем его же селекторами */
@media (max-width: 520px) {
  .tpl-body-site-1 .tpl-component-netcat-module-netshop-aggregator .tpl-block-list-objects,
  .tpl-body-site-1 .tpl-component-netcat-module-netshop-goods-universal .tpl-block-list-objects,
  .tpl-body-site-1 .tpl-block-list-objects[data-object-count] {
    grid-template-columns: 1fr !important;
    gap: 16px !important;
  }
}

/* обложка в одноколоночной сетке занимала почти весь экран —
   задаём невысокую полосу, карточка должна помещаться целиком */
@media (max-width: 520px) {
  .tpl-body-site-1 .lp-agg-card__cover,
  .tpl-body-site-1 .item-card__image {
    aspect-ratio: auto !important;
    height: 150px !important;
    min-height: 0 !important;
  }
  .tpl-body-site-1 .lp-agg-card__word,
  .tpl-body-site-1 .lp-card-cover__word {
    font-size: 19px !important;
    padding: 14px !important;
  }
}

/* height перебивался темой — держим полосу через min-height */
@media (max-width: 520px) {
  .tpl-body-site-1 .lp-agg-card__cover,
  .tpl-body-site-1 .item-card__image {
    min-height: 148px !important;
    height: auto !important;
    display: flex !important;
    align-items: flex-end !important;
  }
}

/* более раннее правило `html body.tpl-body-site-1 …` било по специфичности —
   повторяем тот же уровень селектора */
@media (max-width: 520px) {
  html body.tpl-body-site-1 .lp-agg-card__cover,
  html body.tpl-body-site-1 .item-card__image {
    min-height: 148px !important;
    height: auto !important;
    aspect-ratio: auto !important;
    display: flex !important;
    align-items: flex-end !important;
  }
}

/* ============================================================
   45. Обложка карточки: из пустой заливки — в обложку материала.
   Заказчику плашки нравятся больше фотографий, но пустой квадрат
   с одним словом выглядел незаконченным. Добавляем фирменный знак —
   расходящиеся дуги (речевая волна, тема портала), внутреннюю рамку
   и подпись формата. Всё на CSS: лишних картинок не грузим.
   ============================================================ */
html body.tpl-body-site-1 .lp-agg-card__cover,
html body.tpl-body-site-1 .item-card__image {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

/* дуги речевой волны из левого нижнего угла */
html body.tpl-body-site-1 .lp-agg-card__cover::before,
html body.tpl-body-site-1 .item-card__image::before {
  content: '' !important;
  position: absolute;
  left: -38%;
  bottom: -46%;
  width: 150%;
  height: 150%;
  border-radius: 50%;
  background:
    repeating-radial-gradient(circle at 0% 100%,
      rgba(255, 255, 255, .10) 0 2px,
      rgba(255, 255, 255, 0) 2px 26px);
  pointer-events: none;
  z-index: 0;
}

/* мягкое пятно света в верхнем правом углу — объём */
html body.tpl-body-site-1 .lp-agg-card__cover::after,
html body.tpl-body-site-1 .item-card__image::after {
  content: '' !important;
  position: absolute;
  right: -18%;
  top: -24%;
  width: 62%;
  height: 62%;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255, 255, 255, .14) 0%, rgba(255, 255, 255, 0) 70%);
  pointer-events: none;
  z-index: 0;
}

/* подпись поверх декора */
html body.tpl-body-site-1 .lp-agg-card__word,
html body.tpl-body-site-1 .lp-card-cover__word {
  position: relative;
  z-index: 1;
}

/* внутренняя рамка — обложка читается как отдельный объект */
html body.tpl-body-site-1 .lp-agg-card__cover,
html body.tpl-body-site-1 .item-card__image {
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .14);
}

/* обложка была почти квадратной и растягивала карточку */
html body.tpl-body-site-1 .lp-agg-card__cover {
  aspect-ratio: 4 / 3 !important;
}

/* часть подписей рендерилась как flow-root, и выравнивание по низу не работало —
   у карточек в одном ряду текст стоял то сверху, то снизу */
html body.tpl-body-site-1 .item-card__image .lp-card-cover__word,
html body.tpl-body-site-1 .lp-agg-card__cover .lp-agg-card__word,
html body.tpl-body-site-1 .lp-related__media .lp-related__name {
  display: flex !important;
  align-items: flex-end !important;
  height: 100% !important;
}

/* ------------------------------------------------------------
   46. Профиль: подсказки и поле «только для чтения».
   ------------------------------------------------------------ */
.lp-field-hint {
  margin: 6px 0 0;
  font-size: 13px;
  line-height: 1.45;
  color: var(--lp-muted, #6B6154);
}
.lp-field-readonly { margin-top: 18px; }
.lp-field-value {
  padding: 12px 16px;
  border: 1px dashed var(--lp-line, #DFD4C2);
  border-radius: 12px;
  background: var(--lp-sand, #F6F1E7);
  font-size: 15px;
  color: var(--lp-ink, #2E2A23);
  word-break: break-all;
}

/* ============================================================
   47. Правки по аудиту: пункты 12, 24, 14.
   ============================================================ */

/* ------------------------------------------------------------
   47.1 (п.12) Cookie-баннер накрывал кнопку покупки.
   Баннер .nc-consent прибит к низу с z-index 10000 и высотой ~134px,
   липкая панель .lp-sticky-buy — тоже к низу, но с z-index 90 и высотой 67px.
   На телефоне тап в «В корзину» попадал в «Отклонить» и молча фиксировал
   отказ от cookie на 30 дней. Пока согласие не дано — поднимаем панель
   ровно на высоту баннера. Высоту меряет lp-ui.js и кладёт в
   --lp-consent-h; 178px — запас на случай, если скрипт не отработал (замер: 158px).
   ------------------------------------------------------------ */
body:has(> .nc-consent) .lp-sticky-buy,
.lp-consent-open .lp-sticky-buy {
  bottom: var(--lp-consent-h, 178px);
}

/* спрятанное состояние панели: уезжать нужно дальше, иначе из-за
   поднятого bottom панель выглядывала бы над баннером */
body:has(> .nc-consent) .lp-sticky-buy:not(.is-shown),
.lp-consent-open .lp-sticky-buy:not(.is-shown) {
  transform: translateY(calc(110% + var(--lp-consent-h, 178px)));
}

/* ------------------------------------------------------------
   47.2 (п.24) Область нажатия меньше 44px.
   На телефоне заголовки FAQ были 20px, ссылки подвала — 22px,
   ссылка на преподавателя — 40px. Высоту добираем внутренними
   отступами: разметка и порядок элементов не меняются.
   ------------------------------------------------------------ */
@media (max-width: 900px) {
  /* FAQ на карточке товара */
  .lp-faq .lp-faq-item { padding: 0; }
  .lp-faq .lp-faq-q {
    box-sizing: border-box;
    min-height: 44px;
    padding: 12px 0;
  }

  /* ссылки подвала: строчные <a> внутри списков колонок */
  .lp-ft__col ul li a,
  .lp-ft__logo {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }
  /* иконки соцсетей — квадрат 44x44 вокруг svg */
  .lp-ft__socials a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
  }
  /* строки подвала без ссылок не должны разъезжаться из-за 44px у соседей */
  .lp-ft__col ul li { line-height: 1.45; }

  /* логотип в шапке: 31.9px. Высота самой шапки (59px) не меняется —
     логотип просто центрируется по вертикали в отведённом месте */
  .lp-hd__logo {
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 44px;
  }

  /* ссылка на преподавателя в карточке товара */
  .lp-teacher-line a {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }

  /* ссылка «Подробнее» в самом cookie-баннере — тоже 19px */
  .nc-consent .nc-consent__more {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }
}

/* ------------------------------------------------------------
   47.3 (п.14) Пустые инфоблоки съедали ~290px на /o-magazine/.
   Сами блоки убрать нельзя — это чужая зона. Прячем те контейнеры
   компонентов «текст» и «заголовок», в которых нет ни одного объекта:
   у пустого компонента внутри остаётся один только якорь .tpl-anchor,
   у заполненного рядом с якорем лежит .tpl-block-list-objects.
   Обёртки-контейнеры гасим отдельно — иначе остаются их поля и
   отступы flex-раскладки (у /o-magazine/ это 40px padding + 40px margin).
   Проверено: на 11 других страницах правило не находит ничего.
   ------------------------------------------------------------ */
.tpl-styled:has(> .tpl-component-netcat-base-text > .tpl-anchor:only-child),
.tpl-styled:has(> .tpl-component-netcat-base-title > .tpl-anchor:only-child) {
  display: none;
}

/* контейнер с одним-единственным объектом, и тот пустой */
.tpl-container:has(> .tpl-block-list > [data-object-count="1"] > .tpl-styled > .tpl-component-netcat-base-text > .tpl-anchor:only-child),
.tpl-container:has(> .tpl-block-list > [data-object-count="1"] > .tpl-styled > .tpl-component-netcat-base-title > .tpl-anchor:only-child) {
  display: none;
}

/* то же на уровень выше: контейнер вокруг такого же одинокого контейнера */
.tpl-container:has(> .tpl-block-list > [data-object-count="1"] > .tpl-container > .tpl-block-list > [data-object-count="1"] > .tpl-styled > .tpl-component-netcat-base-text > .tpl-anchor:only-child),
.tpl-container:has(> .tpl-block-list > [data-object-count="1"] > .tpl-container > .tpl-block-list > [data-object-count="1"] > .tpl-styled > .tpl-component-netcat-base-title > .tpl-anchor:only-child) {
  display: none;
}

/* ------------------------------------------------------------
   48. Двойная подсветка пункта «Каталог».
   Правило подсвечивало и обёртку пункта, и вложенную ссылку —
   при наведении фон накладывался сам на себя и давал ореол.
   У пункта с выпадающим списком фон рисует только ссылка.
   ------------------------------------------------------------ */
html body.tpl-body-site-1 .lp-hd__item--drop:hover {
  background: transparent !important;
}
html body.tpl-body-site-1 .lp-hd__item--drop > a {
  border-radius: 10px;
}

/* ============================================================
   49. ПОДВАЛ. Разметка по эталону была, а стилей к ней не было
   вовсе — подвал показывался голым HTML со списками-точками.
   Переносим оформление из макета design/index.html.
   ============================================================ */
html body.tpl-body-site-1 .lp-ft {
  background: #26221B;
  color: #CFC6B8;
  margin-top: 48px;
  padding: 48px 0 24px;
  font-size: 14px;
}
html body.tpl-body-site-1 .lp-ft__in {
  max-width: 1240px;
  margin: 0 auto;
  padding: 0 20px;
}
html body.tpl-body-site-1 .lp-ft__grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1.2fr;
  gap: 32px;
}

/* колонка бренда */
html body.tpl-body-site-1 .lp-ft__logo {
  display: inline-block;
  font-family: 'PT Serif', Georgia, serif;
  font-size: 24px;
  font-weight: 700;
  color: #fff !important;
  text-decoration: none;
  margin-bottom: 12px;
}
html body.tpl-body-site-1 .lp-ft__logo em {
  font-style: normal;
  color: #E0925F !important;
}
html body.tpl-body-site-1 .lp-ft__about {
  max-width: 300px;
  line-height: 1.55;
  color: #CFC6B8;
  margin: 0 0 14px;
}

/* заголовки колонок и списки */
html body.tpl-body-site-1 .lp-ft__col h4 {
  color: #fff;
  font-size: 15px;
  font-weight: 800;
  margin: 0 0 14px;
  font-family: 'Manrope', system-ui, sans-serif;
}
html body.tpl-body-site-1 .lp-ft__docs-title { margin-top: 20px; }
html body.tpl-body-site-1 .lp-ft__col ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
html body.tpl-body-site-1 .lp-ft__col ul li {
  margin-bottom: 9px;
  line-height: 1.45;
}
html body.tpl-body-site-1 .lp-ft__col ul li a,
html body.tpl-body-site-1 .lp-ft a {
  color: #CFC6B8;
  text-decoration: none;
  transition: color .15s;
}
html body.tpl-body-site-1 .lp-ft__col ul li a:hover,
html body.tpl-body-site-1 .lp-ft a:hover {
  color: #fff;
  text-decoration: underline;
}

/* соцсети кружками */
html body.tpl-body-site-1 .lp-ft__socials {
  display: flex;
  gap: 10px;
  margin-top: 14px;
}
html body.tpl-body-site-1 .lp-ft__socials a {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .09);
  display: grid;
  place-items: center;
  color: #CFC6B8;
  transition: background .2s, color .2s;
}
html body.tpl-body-site-1 .lp-ft__socials a:hover {
  background: #A9522C;
  color: #fff;
}

/* нижняя строка: копирайт и способы оплаты */
html body.tpl-body-site-1 .lp-ft__bottom {
  border-top: 1px solid rgba(255, 255, 255, .12);
  margin-top: 36px;
  padding-top: 20px;
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  justify-content: space-between;
  align-items: center;
  font-size: 12.5px;
  color: #8F8778;
}
html body.tpl-body-site-1 .lp-ft__pay {
  display: flex;
  align-items: center;
  gap: 10px;
}
html body.tpl-body-site-1 .lp-ft__pay img {
  height: 24px;
  width: auto;
  background: #fff;
  border-radius: 5px;
  padding: 3px 6px;
  opacity: .92;
}

@media (max-width: 900px) {
  html body.tpl-body-site-1 .lp-ft__grid { grid-template-columns: 1fr 1fr; gap: 26px; }
  html body.tpl-body-site-1 .lp-ft { padding: 36px 0 20px; margin-top: 32px; }
}
@media (max-width: 560px) {
  html body.tpl-body-site-1 .lp-ft__grid { grid-template-columns: 1fr; gap: 22px; }
  html body.tpl-body-site-1 .lp-ft__about { max-width: none; }
  html body.tpl-body-site-1 .lp-ft__bottom { flex-direction: column; align-items: flex-start; }
}

/* ============================================================
   50. Мобильное меню открывалось высотой в полтора пункта.
   У шапки стоит backdrop-filter: blur — это свойство делает
   шапку системой координат для вложенного position: fixed,
   поэтому меню растягивалось не на экран, а на высоту шапки
   (59px). На телефоне блюр не нужен: делаем фон непрозрачным
   и снимаем фильтр, меню снова считает высоту от экрана.
   ============================================================ */
@media (max-width: 900px) {
  html body.tpl-body-site-1 .lp-hd {
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    background: #FBF7F0 !important;
  }
  html body.tpl-body-site-1 .lp-hd__mobile {
    /* dvh учитывает съезжающую адресную строку в мобильных браузерах */
    height: calc(100dvh - 58px);
    max-height: calc(100dvh - 58px);
    overscroll-behavior: contain;
    padding-bottom: 32px;
  }
}

/* описание портала унаследовало тёмный цвет темы и на тёмном подвале
   почти не читалось (контраст 1.11); копирайт был на грани нормы */
html body.tpl-body-site-1 .lp-ft__about,
html body.tpl-body-site-1 .lp-ft p {
  color: #CFC6B8 !important;
  -webkit-text-fill-color: #CFC6B8;
}
html body.tpl-body-site-1 .lp-ft__bottom,
html body.tpl-body-site-1 .lp-ft__bottom span {
  color: #A79E90 !important;
  -webkit-text-fill-color: #A79E90;
}

/* ============================================================
   51. Шапка на телефоне: иконки висели посреди строки, бургер
   стоял в 65px от края. На узком экране меню и поиск скрыты,
   и блок иконок оставался прижат влево вслед за логотипом.
   Прижимаем его к правому краю. Заодно бургер был 40×40 с
   горизонтальным padding 15px — иконке оставалось 10px, и она
   выглядела сплющенной.
   ============================================================ */
@media (max-width: 900px) {
  html body.tpl-body-site-1 .lp-hd__icons {
    margin-left: auto;
    gap: 6px;
  }
  html body.tpl-body-site-1 .lp-hd__burger {
    width: 44px;
    height: 44px;
    padding: 0 !important;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 44px;
    border-radius: 10px;
  }
  html body.tpl-body-site-1 .lp-hd__burger svg {
    width: 22px;
    height: 22px;
    display: block;
  }
  /* иконки избранного и корзины — такая же зона нажатия */
  html body.tpl-body-site-1 .lp-hd__icon {
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }
  html body.tpl-body-site-1 .lp-hd__in {
    padding-left: 14px;
    padding-right: 14px;
  }
}

/* ============================================================
   52. Страница входа модуля авторизации.
   Ядро отдаёт голую форму: без заголовка, без ссылки на
   регистрацию, кнопка чужого лососевого цвета.
   ============================================================ */
.lp-auth__title {
  font-family: 'PT Serif', Georgia, serif;
  font-size: clamp(24px, 4vw, 32px);
  margin: 0 0 18px;
  color: var(--lp-ink, #2E2A23);
}
.lp-auth {
  max-width: 460px;
  background: #fff;
  border: 1px solid var(--lp-line, #DFD4C2);
  border-radius: 18px;
  padding: 24px;
  box-shadow: 0 2px 12px rgba(46, 42, 35, .05);
}
.lp-auth input[type="text"],
.lp-auth input[type="email"],
.lp-auth input[type="password"] {
  width: 100%;
  box-sizing: border-box;
  min-height: 46px;
  padding: 10px 14px;
  border: 1px solid var(--lp-line, #DFD4C2);
  border-radius: 12px;
  font-size: 15px;
  background: #fff;
}
.lp-auth input:focus {
  outline: none;
  border-color: var(--lp-teal, #155E54);
  box-shadow: 0 0 0 3px rgba(21, 94, 84, .12);
}
.lp-auth [type="submit"] {
  background: var(--lp-teal, #155E54) !important;
  border-color: var(--lp-teal, #155E54) !important;
  color: #fff !important;
  min-height: 46px;
  padding: 0 22px;
  border-radius: 12px;
  font-weight: 700;
  font-size: 15px;
  cursor: pointer;
}
.lp-auth [type="submit"]:hover { background: var(--lp-teal-dark, #0F4A42) !important; }
.lp-auth a { color: var(--lp-teal, #155E54); }
.lp-auth__reg {
  margin: 18px 0 0;
  padding-top: 16px;
  border-top: 1px solid var(--lp-line, #DFD4C2);
  font-size: 14.5px;
  color: var(--lp-muted, #6B6154);
}
.lp-auth__reg a { font-weight: 700; }

@media (max-width: 560px) {
  .lp-auth { padding: 18px; border-radius: 14px; }
  .lp-auth [type="submit"] { width: 100%; }
}

/* ============================================================
   53. Ссылка «Регистрация» в шапке. Гость видел только «Войти»,
   а до регистрации можно было добраться лишь прямым адресом.
   ============================================================ */
html body.tpl-body-site-1 .lp-hd__reg {
  font-size: 14.5px;
  font-weight: 700;
  color: var(--lp-teal, #155E54);
  text-decoration: none;
  padding: 8px 12px;
  border-radius: 10px;
  white-space: nowrap;
  transition: background .15s, color .15s;
}
html body.tpl-body-site-1 .lp-hd__reg:hover {
  background: rgba(21, 94, 84, .07);
  color: var(--lp-teal-dark, #0F4A42);
}

/* в бургере регистрация — заметный первый пункт блока входа */
html body.tpl-body-site-1 .lp-hd__mobile-accent {
  color: var(--lp-terra, #A9522C) !important;
  font-weight: 800 !important;
}

@media (max-width: 1100px) {
  /* на узком десктопе прячем: вход и регистрация есть в бургере */
  html body.tpl-body-site-1 .lp-hd__reg { display: none; }
}

/* ============================================================
   54. Форма регистрации и профиля.
   Тема красила любой button внутри формы как основную кнопку —
   переключатель «показать пароль» превращался в зелёную полосу
   во всю ширину. Чекбоксы растягивались до 13×55.
   Селекторы с id формы, иначе тема перебивает.
   ============================================================ */
html body.tpl-body-site-1 form#adminForm {
  max-width: 460px;
  background: #fff;
  border: 1px solid var(--lp-line, #DFD4C2);
  border-radius: 18px;
  padding: 22px;
  box-shadow: 0 2px 12px rgba(46, 42, 35, .05);
}
html body.tpl-body-site-1 form#adminForm .tpl-field { margin-bottom: 16px; }

html body.tpl-body-site-1 form#adminForm label {
  display: block;
  margin-bottom: 6px;
  font-size: 14px;
  font-weight: 600;
  color: var(--lp-ink, #2E2A23);
}

html body.tpl-body-site-1 form#adminForm input[type="text"],
html body.tpl-body-site-1 form#adminForm input[type="email"],
html body.tpl-body-site-1 form#adminForm input[type="password"] {
  width: 100%;
  box-sizing: border-box;
  min-height: 48px;
  padding: 12px 14px;
  border: 1px solid var(--lp-line, #DFD4C2);
  border-radius: 12px;
  font-size: 16px;             /* меньше 16px — iOS зумит страницу при фокусе */
  background: #fff;
}
html body.tpl-body-site-1 form#adminForm input:focus {
  outline: none;
  border-color: var(--lp-teal, #155E54);
  box-shadow: 0 0 0 3px rgba(21, 94, 84, .12);
}

/* переключатель показа пароля — текстовая ссылка, а не кнопка */
html body.tpl-body-site-1 form#adminForm button.lp-pass-toggle {
  display: inline-block;
  width: auto !important;
  min-width: 0 !important;
  height: auto !important;
  min-height: 0 !important;
  margin: 8px 0 0;
  padding: 0 !important;
  background: none !important;
  background-color: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  color: var(--lp-teal, #155E54) !important;
  -webkit-text-fill-color: var(--lp-teal, #155E54);
  font-size: 13.5px !important;
  font-weight: 700 !important;
  line-height: 1.4 !important;
  text-align: left !important;
  text-decoration: underline;
  text-transform: none !important;
}

/* согласия: аккуратный чекбокс и читаемая строка рядом */
html body.tpl-body-site-1 form#adminForm label:has(input[type="checkbox"]),
html body.tpl-body-site-1 form#adminForm .tpl-field:has(input[type="checkbox"]) {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-weight: 400;
  font-size: 14px;
  line-height: 1.45;
  color: var(--lp-muted, #6B6154);
  margin-bottom: 12px;
}
html body.tpl-body-site-1 form#adminForm input[type="checkbox"] {
  width: 20px !important;
  height: 20px !important;
  min-width: 20px;
  min-height: 20px;
  margin: 1px 0 0 !important;
  flex: 0 0 20px;
  accent-color: var(--lp-teal, #155E54);
  border-radius: 5px;
}
html body.tpl-body-site-1 form#adminForm a { color: var(--lp-teal, #155E54); }

/* основная кнопка */
html body.tpl-body-site-1 form#adminForm button[type="submit"] {
  width: 100%;
  min-height: 50px;
  margin-top: 6px;
  border-radius: 12px;
  font-size: 16px;
  font-weight: 700;
}

@media (max-width: 560px) {
  html body.tpl-body-site-1 form#adminForm { padding: 18px; border-radius: 14px; }
}

/* ============================================================
   55. Правки Андрея по мобильной версии (30.07).
   ============================================================ */

/* ------------------------------------------------------------
   55.1 «Похожие материалы»: плашки стояли пустыми (п.4).
   Раздел 38.1 прячет импортированные обложки поставщика и
   рассчитывает, что вместо картинки в плашке появится подпись.
   Но правило написано как «.lp-related__media .lp-related__name»,
   то есть подпись ищется ВНУТРИ плашки, а в разметке
   .lp-related__name лежит РЯДОМ с .lp-related__media, соседним
   элементом. Селектор не совпадал ни с чем: картинка скрыта,
   подписи в плашке нет — оставалась пустая бежевая плита 159x159,
   из-за неё блок читался как дыра в странице.
   Разметку не трогаем: кладём плашку и подпись в одну клетку
   грида, тогда подпись рисуется поверх плашки — как подпись на
   обложке в каталоге. Цена уходит во вторую строку.
   ------------------------------------------------------------ */
html body.tpl-body-site-1 .lp-related__card {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: auto auto;
}
html body.tpl-body-site-1 .lp-related__card > .lp-related__media {
  grid-area: 1 / 1;
  align-self: stretch;
}
html body.tpl-body-site-1 .lp-related__card > .lp-related__name {
  grid-area: 1 / 1;
  align-self: end;
  z-index: 1;
  padding: 34px 14px 13px;
  color: #fff;
  font-size: 14px;
  line-height: 1.28;
  -webkit-line-clamp: 4;
  text-shadow: 0 1px 10px rgba(0, 0, 0, .45);
  /* Шторка под подписью. Стартовая плотность .45 выбрана по худшему
     случаю: самый светлый конец плашки — #DE8A5C, на нём белый текст
     без шторки даёт 2.2. Со шторкой замерено 7.3 на верхней строке
     и 9.5 на нижней. Прозрачный старт (0) не годился. */
  background: linear-gradient(180deg, rgba(13, 69, 61, .45) 0%, rgba(13, 69, 61, .75) 45%, rgba(13, 69, 61, .95) 100%);
}
html body.tpl-body-site-1 .lp-related__card > .lp-related__price {
  grid-area: 2 / 1;
  padding: 12px 14px 14px;
}

/* Плашки — те же пять фирменных градиентов, что у обложек каталога,
   иначе «Похожие» выпадают из общей гаммы. */
html body.tpl-body-site-1 .lp-related__card:nth-child(5n+1) > .lp-related__media { background-image: linear-gradient(140deg, #0D453D, #2E8272); }
html body.tpl-body-site-1 .lp-related__card:nth-child(5n+2) > .lp-related__media { background-image: linear-gradient(140deg, #8A4520, #DE8A5C); }
html body.tpl-body-site-1 .lp-related__card:nth-child(5n+3) > .lp-related__media { background-image: linear-gradient(140deg, #3D3D20, #8A8A50); }
html body.tpl-body-site-1 .lp-related__card:nth-child(5n+4) > .lp-related__media { background-image: linear-gradient(140deg, #1F4E5E, #5C97A8); }
html body.tpl-body-site-1 .lp-related__card:nth-child(5n+5) > .lp-related__media { background-image: linear-gradient(140deg, #5E2E42, #A85C7C); }

/* ------------------------------------------------------------
   55.2 Карточка материала на главной: левый край гулял (п.6).
   Подпись на обложке начиналась в 35px от края карточки, а метка
   «ЖИВОЙ ВЕБИНАР», заголовок и плашки «6 ак. ч.» — в 51px: тело
   карточки имело margin 20px по бокам плюс padding 10px. В эталоне
   (design/index.html, .prod-body) тело карточки — padding:14px без
   боковых отступов, всё стоит на одном левом крае.
   Возвращаем эталон: заодно текстовая колонка на телефоне
   становится шире на 32px и заголовок меньше рвётся.
   Кегль метки (11.5px/800/.06em) — как в эталоне, не уменьшаем:
   проблема была в отступе, а не в размере. Вертикальные отступы
   не трогаем, чтобы не растянуть страницу.

   Почему !important и три класса в селекторе:
   боковой margin ставит миксин блока —
   «.tpl-block-54 .goods-info {margin-left:20px !important}» в
   netcat_template/css/1/mixins.css, а тот файл подключается ПОСЛЕ
   lp-final.css и генерируется из настроек блока в админке;
   боковой padding ставит правило
   «.tpl-body-site-1 .goods-item .goods-info» (три класса
   + !important), и двух классов не хватало, чтобы его перебить.
   Долгоиграющее решение — снять боковые margin в настройках
   миксина блока 54, тогда этот кусок можно убрать.
   ------------------------------------------------------------ */
@media (max-width: 767.98px) {
  html body.tpl-body-site-1 .lp-agg-card .lp-agg-card__body {
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding-left: 14px !important;
    padding-right: 14px !important;
  }
}

/* ------------------------------------------------------------
   55.3 Окно входа на телефоне: подложка была прозрачной (п.1).
   В разделе 42 стояло rgba(20, 18, 14, .72) — сквозь подложку
   читался текст страницы под окном и мешал. Делаем её плотной,
   под окном не должно читаться ничего. Само окно белое.
   Такое же значение задаёт lp-manual.css (подключается позже) —
   держим одинаково, чтобы правка не пропала, если тот файл уберут.
   ------------------------------------------------------------ */
@media (max-width: 900px) {
  html body.tpl-body-site-1 .nc-auth-popup { background: #1B1813 !important; }
}

/* ============================================================
   53. Подсказка у выключенной кнопки оформления заказа.
   Кнопка включается только когда отмечены оба согласия;
   без подписи это выглядело как поломка.
   ============================================================ */
.lp-consent-hint {
  display: none;
  margin: 10px 0 0;
  font-size: 14px;
  line-height: 1.45;
  color: var(--lp-muted, #6B6154);
}
.js-cart-submit:disabled + .lp-consent-hint { display: block; }

/* ============================================================
   54. Отзывы: предупреждение о проверке и пустое состояние.
   Отзыв публикуется только после одобрения — говорим об этом
   до отправки, а не после, иначе выглядит как поломка.
   ============================================================ */
.comments-premod-note {
  margin: 10px 0 14px;
  font-size: 14px;
  line-height: 1.5;
  color: var(--lp-muted, #6B6154);
}
.lp-reviews-empty {
  margin: 0 0 18px;
  padding: 16px 18px;
  border: 1px dashed var(--lp-line, #DFD4C2);
  border-radius: 14px;
  background: var(--lp-cream, #FBF7F0);
  font-size: 15px;
  line-height: 1.5;
  color: var(--lp-ink, #2E2A23);
}


/* ============================================================
   55. Правки Андрея от 27.08: сердечко на карточке подборки,
   обрезка названий в «похожих», плотность подвала на телефоне,
   перенос сортировки вместо прокрутки вбок.
   ============================================================ */

/* № 1, 7 — «в избранное» на карточке подборки */
.tpl-body-site-1 .lp-agg-card { position: relative; }
.tpl-body-site-1 .lp-agg-card__fav {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 2;
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: rgba(255, 255, 255, .92);
  box-shadow: 0 1px 6px rgba(46, 42, 35, .16);
  transition: background .15s ease, transform .15s ease;
}
.tpl-body-site-1 .lp-agg-card__fav:hover { background: #fff; transform: scale(1.06); }

/* № 10 — многоточие в названии «похожих». Клампится вложенный span:
   сам .lp-related__name — flex-элемент, а он блокифицируется и
   -webkit-box на нём не работает. */
.tpl-body-site-1 .lp-related__name > .lp-clamp {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 4;
  line-clamp: 4;
  overflow: hidden;
}

@media (max-width: 720px) {
  /* № 5 — сортировка переносится по строкам, а не едет вбок */
  .tpl-body-site-1 .lp-sort__list {
    flex-wrap: wrap !important;
    overflow-x: visible !important;
  }
}

@media (max-width: 560px) {
  /* № 9 — подвал: два столбца и не такие рослые строки.
     Было 44 px на ссылку при тексте в 20 px — читалось как
     разреженный список с пустотами между строками. */
  .tpl-body-site-1 .lp-ft__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 18px 16px !important;
  }
  .tpl-body-site-1 .lp-ft__col--brand { grid-column: 1 / -1; }
  .tpl-body-site-1 .lp-ft__col a {
    min-height: 34px !important;
    padding-top: 6px !important;
    padding-bottom: 6px !important;
  }
  /* «Логопрофистор» в подвале ломался переносом на «стор» */
  .tpl-body-site-1 .lp-ft__col--brand .lp-ft__logo,
  .tpl-body-site-1 .lp-ft__brandname { white-space: nowrap; }
}

/* Кнопка раскрытия сокращённой подборки на телефоне (правка №5). */
.lp-more-btn {
  display: block;
  width: 100%;
  margin: 14px 0 0;
  padding: 12px 16px;
  border: 1px solid var(--lp-line, #DFD4C2);
  border-radius: 12px;
  background: #fff;
  color: var(--lp-teal, #155E54);
  font-family: inherit;
  font-size: 15px;
  font-weight: 700;
  cursor: pointer;
}
.lp-more-btn:hover { background: var(--lp-cream, #FBF7F0); }

/* Правка №13: форма обратной связи стояла по центру колонки, а
   заголовки и текст страницы — слева. Прижимаем к общей левой
   границе содержимого, ширину оставляем прежней. */
.tpl-body-site-1 .lp-feedback {
  margin-left: 0 !important;
  margin-right: auto !important;
}

/* Правка №6: список файлов товара на странице материала. Тип файла
   и размер показываем сразу — человек должен понимать, что качает. */
.lp-files { margin: 28px 0 8px; }
.lp-files__title { font-family: 'Lora', Georgia, serif; font-size: 20px; margin: 0 0 12px; }
.lp-files__item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  margin-bottom: 8px;
  border: 1px solid var(--lp-line, #DFD4C2);
  border-radius: 12px;
  background: #fff;
  text-decoration: none;
  color: var(--lp-ink, #2E2A23);
}
.lp-files__item:hover { border-color: var(--lp-teal, #155E54); background: var(--lp-cream, #FBF7F0); }
.lp-files__ext {
  flex: 0 0 auto;
  min-width: 46px;
  padding: 4px 8px;
  border-radius: 6px;
  background: var(--lp-teal, #155E54);
  color: #fff;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .5px;
  text-align: center;
}
.lp-files__name { flex: 1 1 auto; font-size: 15px; overflow-wrap: anywhere; }
.lp-files__size { flex: 0 0 auto; font-size: 13px; color: var(--lp-muted, #6B6154); }

/* ============================================================
   56. Обратная связь в углу экрана (правка Андрея №3).
   На старом сайте logoprofy.ru была круглая кнопка внизу справа,
   разворачивавшая панель с формой. Повторяем приём и добавляем
   прямые каналы: писать в мессенджер быстрее, чем заполнять поля.
   Подъём над нижними плашками (согласие о кукис, липкая панель
   покупки) задаётся переменной --lp-ask-lift из lp-ui.js.
   ============================================================ */
.lp-ask {
  position: fixed;
  right: 24px;
  bottom: 24px;
  /* сдвиг над нижними плашками ставит lp-ui.js: переменная
     в calc() здесь не подставлялась */
  z-index: 500;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 10px;
  transition: margin-bottom .2s ease;
}
.lp-ask__fab {
  width: 56px;
  height: 56px;
  border: 0;
  border-radius: 50%;
  background: var(--lp-teal, #155E54);
  color: #fff;
  cursor: pointer;
  display: grid;
  place-items: center;
  box-shadow: 0 6px 18px rgba(46, 42, 35, .22);
  transition: background .15s ease, transform .15s ease;
}
.lp-ask__fab:hover { background: var(--lp-teal-dark, #0F4A42); transform: scale(1.05); }
.lp-ask__fab-close { display: none; }
.lp-ask.is-open .lp-ask__fab-chat { display: none; }
.lp-ask.is-open .lp-ask__fab-close { display: block; }

.lp-ask__menu {
  width: 290px;
  padding: 14px;
  border-radius: 16px;
  background: #fff;
  border: 1px solid var(--lp-line, #DFD4C2);
  box-shadow: 0 12px 32px rgba(46, 42, 35, .18);
}
.lp-ask__menu[hidden] { display: none; }
.lp-ask__head {
  font-family: 'Lora', Georgia, serif;
  font-size: 16px;
  margin: 0 0 10px;
  color: var(--lp-ink, #2E2A23);
}
.lp-ask__item {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 9px 10px;
  border-radius: 11px;
  text-decoration: none;
  color: var(--lp-ink, #2E2A23);
  font-size: 15px;
  line-height: 1.25;
}
.lp-ask__item:hover { background: var(--lp-cream, #FBF7F0); }
.lp-ask__ico {
  flex: 0 0 auto;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--lp-cream, #FBF7F0);
  color: var(--lp-teal, #155E54);
}
.lp-ask__item--tg .lp-ask__ico { background: #E7F1F8; color: #2AABEE; }
.lp-ask__txt { display: flex; flex-direction: column; }
.lp-ask__txt small { font-size: 12.5px; color: var(--lp-muted, #6B6154); margin-top: 2px; }

/* Кнопку штатной всплывашки прячем: строку целиком делает кликабельной
   скрипт, иначе внутри пункта появлялась вторая кнопка. */
.lp-ask__item--form { cursor: pointer; }
.lp-ask__item--form .tpl-component-netcat-module-requests-request { display: contents; }
.lp-ask__formbtn {
  all: unset;
  font: inherit;
  color: var(--lp-muted, #6B6154);
  font-size: 12.5px;
  margin-top: 2px;
  cursor: pointer;
}

@media (max-width: 480px) {
  .lp-ask { right: 14px; bottom: 14px; }
  .lp-ask__menu { width: min(290px, calc(100vw - 28px)); }
}

@media print { .lp-ask { display: none; } }
/* Радиус кнопки перебивался темой (8px вместо круга) — повторяем
   её якорь, чтобы сравняться по весу. */
.tpl-body-site-1 .lp-ask__fab { border-radius: 50%; padding: 0; }
.tpl-body-site-1 .lp-ask__ico { border-radius: 50%; }

/* Значка у MAX нет — ставим буквы в том же кружке, что и соседние
   иконки (так же сделано в подвале). */
.tpl-body-site-1 .lp-ask__ico--max {
  font-family: 'Manrope', system-ui, sans-serif;
  font-size: 15px;
  font-weight: 800;
  letter-spacing: 0;
  line-height: 1;
  background: #EEF0FF;
  color: #2B3AC0;
}

/* Сердечко на карточке подборки: контур по умолчанию, заливка —
   когда материал уже в избранном. Свой SVG вместо значка каталога:
   тот рисуется маской, привязанной к другому компоненту. */
.tpl-body-site-1 .lp-agg-card__heart {
  fill: none;
  stroke: var(--lp-ink, #2E2A23);
  stroke-width: 1.6;
  display: block;
  transition: fill .15s ease, stroke .15s ease;
}
.tpl-body-site-1 .lp-agg-card__fav:hover .lp-agg-card__heart { stroke: var(--lp-terracotta, #A9522C); }
.tpl-body-site-1 .lp-agg-card__fav.is-active .lp-agg-card__heart {
  fill: var(--lp-terracotta, #A9522C);
  stroke: var(--lp-terracotta, #A9522C);
}

/* ============================================================
   57. Юридические документы: оферта, политика, согласие.
   Перечни целей обработки данных приходят таблицами — без
   рамок они читались сплошным текстом.
   ============================================================ */
.tpl-body-site-1 .lp-doc__place {
  margin: 0 0 22px;
  padding: 10px 14px;
  border-left: 3px solid #C6975E;
  background: var(--lp-cream, #FBF7F0);
  font-size: 14px;
  color: var(--lp-muted, #6B6154);
  overflow-wrap: anywhere;
}
.tpl-body-site-1 .lp-doc__table {
  width: 100%;
  border-collapse: collapse;
  margin: 18px 0 24px;
  font-size: 14.5px;
  line-height: 1.5;
}
.tpl-body-site-1 .lp-doc__table th,
.tpl-body-site-1 .lp-doc__table td {
  border: 1px solid var(--lp-line, #DFD4C2);
  padding: 9px 12px;
  text-align: left;
  vertical-align: top;
}
.tpl-body-site-1 .lp-doc__table th {
  background: var(--lp-cream, #FBF7F0);
  font-weight: 700;
}
/* на телефоне широкую таблицу прокручиваем внутри себя,
   а не растягиваем страницу */
@media (max-width: 720px) {
  .tpl-body-site-1 .lp-doc__table { display: block; overflow-x: auto; white-space: nowrap; }
  .tpl-body-site-1 .lp-doc__table td,
  .tpl-body-site-1 .lp-doc__table th { white-space: normal; min-width: 180px; }
}

/* ============================================================
   58. Быстрая регистрация на кассе
   Сообщение под полем почты. Кабинет заводится сам, поэтому человеку
   обязательно нужно сказать, что произошло и куда ушло письмо.
   ============================================================ */
.lp-signup-note {
    margin: 8px 0 0;
    padding: 10px 12px;
    border-radius: 8px;
    background: #F1EFE7;
    border-left: 3px solid #0D453D;
    color: #2E2A23;
    font-size: 14px;
    line-height: 1.45;
}
.lp-signup-note--error {
    background: #FBEEE8;
    border-left-color: #A9522C;
    color: #7A3A1C;
}

/* ============================================================
   59. Живые подсказки в строке поиска.
   Список висит под полем и не двигает вёрстку: форма становится
   точкой отсчёта, список — поверх страницы.
   ============================================================ */
.lp-sg-host { position: relative; }

.lp-sg {
    display: none;
    position: absolute;
    z-index: 400;
    left: 0;
    right: 0;
    top: calc(100% + 6px);
    max-height: 62vh;
    overflow-y: auto;
    padding: 6px;
    background: #FFF;
    border: 1px solid #E7E1D6;
    border-radius: 12px;
    box-shadow: 0 14px 36px rgba(46, 42, 35, .14);
}
.lp-sg.is-open { display: block; }

.lp-sg__item {
    display: flex;
    align-items: baseline;
    gap: 12px;
    padding: 9px 12px;
    border-radius: 8px;
    color: #2E2A23;
    text-decoration: none;
    line-height: 1.35;
}
.lp-sg__item:hover,
.lp-sg__item.is-active { background: #F1EFE7; }

.lp-sg__name {
    flex: 1 1 auto;
    /* длинные названия обрезаем строкой, а не переносим на пять строк */
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.lp-sg__kind,
.lp-sg__price {
    flex: 0 0 auto;
    color: #7A6A58;
    font-size: 13px;
    white-space: nowrap;
}
.lp-sg__price { color: #0D453D; font-weight: 600; }

/* Заголовок смысловой группы: человеку важно понимать, почему эти карточки
   в списке, если искомых слов в названии нет. */
.lp-sg__label {
    margin: 8px 12px 4px;
    color: #7A6A58;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.lp-sg__group + .lp-sg__label { border-top: 1px solid #EFEAE0; padding-top: 10px; }

.lp-sg__empty {
    padding: 12px;
    color: #7A6A58;
    font-size: 14px;
    line-height: 1.4;
}

@media (max-width: 640px) {
    .lp-sg { max-height: 52vh; }
    .lp-sg__kind { display: none; }
    /* палец мельче 44 px не попадает: на телефоне строку делаем выше */
    .lp-sg__item { padding: 13px 12px; }
}

/* ============================================================
   60. Обязательные поля на кассе.
   Кнопки шагов не запускают браузерную проверку формы, поэтому
   отмечаем поля сами: звёздочка у подписи, красная рамка и одна
   внятная строка вместо молчания.
   ============================================================ */
.lp-req {
    margin-left: 3px;
    color: #A9522C;
    font-weight: 700;
}
.lp-field-bad {
    border-color: #A9522C !important;
    box-shadow: 0 0 0 3px rgba(169, 82, 44, .12);
}
.lp-req-note {
    margin: 0 0 12px;
    padding: 10px 12px;
    border-radius: 8px;
    background: #FBEEE8;
    border-left: 3px solid #A9522C;
    color: #7A3A1C;
    font-size: 14px;
    line-height: 1.4;
}

/* Подпись на странице заказа, пока идёт переход к оплате. */
.lp-autopay-note {
    margin: 0 0 12px;
    color: #7A6A58;
    font-size: 15px;
}

/* ============================================================
   61. «В избранном» — состояние, которое видно (правка Андрея №1).
   Отличие было только в цвете сердца: заказчик писал, что клиент
   не понимает, добавлен товар или нет. Активное состояние делаем
   заливкой с белым текстом — разницу до и после видно издалека.
   ============================================================ */
.tpl-body-site-1 .item-full__action {
  border: 1px solid transparent;
  border-radius: 999px;
  padding: 7px 14px;
  transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}
.tpl-body-site-1 .item-full__action:hover {
  border-color: #E5DCC9;
  background: #FBF7F0;
}
.tpl-body-site-1 .item-full__action.is-active {
  background: var(--lp-terracotta, #A9522C);
  border-color: var(--lp-terracotta, #A9522C);
  color: #fff !important;
}
.tpl-body-site-1 .item-full__action.is-active .item-full__action-icon {
  background-color: #fff;
}
.tpl-body-site-1 .item-full__action.is-active .item-full__action-text::after {
  content: " ✓";
  font-weight: 700;
}

/* то же самое в карточках каталога: сердце не только красим, но и
   ставим на заливку, иначе на пёстрой обложке его не видно */
.tpl-body-site-1 .lp-agg-card__fav.is-active,
.tpl-body-site-1 .item-card__fav.is-active {
  background: var(--lp-terracotta, #A9522C);
  box-shadow: 0 2px 10px rgba(169, 82, 44, .35);
}
.tpl-body-site-1 .lp-agg-card__fav.is-active .lp-agg-card__heart,
.tpl-body-site-1 .item-card__fav.is-active svg {
  fill: #fff;
  stroke: #fff;
}

/* Выдача гаснет, пока страница перезагружается после смены фильтра —
   иначе непонятно, среагировал сайт или нет. */
.tpl-body-site-1 .tpl-block-list-objects.is-refiltering {
  opacity: .45;
  pointer-events: none;
}

/* Плашка на карточке заказа, когда человек вернулся с оплаты ни с чем. */
.tpl-body-site-1 .lp-order-note {
  margin: 0 0 18px;
  padding: 13px 16px;
  background: #FBEDE6;
  border-left: 3px solid #A9522C;
  border-radius: 9px;
  font-size: 15px;
}
.tpl-body-site-1 .lp-order-cartback {
  display: inline-block;
  margin: 10px 0 0;
  color: #0D453D;
  font-size: 14px;
}

/* Подводка над смысловой подборкой, когда по словам не нашлось. */
.tpl-body-site-1 .lp-ai-lead {
  margin: 0 0 12px;
  color: #7A6A58;
  font-size: 15px;
}

/* Поле-приманка для ботов в форме обратной связи: человек его не видит. */
.tpl-body-site-1 .lp-hp {
  position: absolute;
  left: -9999px;
  top: 0;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

/* Обёртка смыслового подбора, когда он вынесен из пустого блока результатов:
   ведёт себя как обычный блок страницы, а не как голый элемент во flex. */
.tpl-body-site-1 .lp-ai-wrap { width: calc(100% - 40px); }  /* соседние блоки: margin 0 20px */

/* Кнопка «Предложить вебинар» в карточке-приглашении: сама кнопка белая по
   зелёному, но вложенный span брал общий цвет текста и делал надпись чёрной
   (Андрей, 16.09.2026). */
html body.tpl-body-site-1 .lp-agg-invite__btn button,
html body.tpl-body-site-1 .lp-agg-invite__btn button .tpl-block-button-content,
html body.tpl-body-site-1 .lp-agg-invite__btn button .tpl-block-button-title { color: #fff !important; }

/* Пояснение вместо формы отзыва для тех, кто материал не покупал. */
.tpl-body-site-1 .lp-reviews__gate {
  margin: 14px 0 0;
  padding: 12px 14px;
  background: #F1EFE7;
  border-radius: 9px;
  color: #7A6A58;
  font-size: 14px;
}

/* В результатах поиска под преподавателем/статьёй печатался служебный путь
   вроде /teachers/ivanova.html — Андрей принял его за html-артефакт (17.09.2026). */
.tpl-body-site-1 .search-item cite { display: none; }

/* Бесплатный материал за регистрацию: цена «Бесплатно» и форма с почтой
   вместо корзины (Андрей, 17.09.2026). */
.tpl-body-site-1 .lp-price-free { color: #0D453D; }
.tpl-body-site-1 .lp-free { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.tpl-body-site-1 .lp-free__email {
  flex: 1 1 220px;
  min-height: 48px;
  padding: 10px 14px;
  border: 1px solid #DCD5C8;
  border-radius: 11px;
  font: inherit;
  background: #fff;
}
.tpl-body-site-1 .lp-free .item-full__cart-btn { flex: 0 0 auto; }
.tpl-body-site-1 .lp-free__consent {
  flex: 1 1 100%;
  display: flex;
  gap: 8px;
  align-items: flex-start;
  font-size: 13px;
  color: #7A6A58;
  cursor: pointer;
}
.tpl-body-site-1 .lp-free__consent input { margin-top: 3px; }
.tpl-body-site-1 .lp-free__consent a { color: #0D453D; }

/* Архив блога: оглавление всех статей по годам под списком карточек (21.09.2026) */
.lp-blog-archive { margin-top: 48px; padding-top: 28px; border-top: 1px solid rgba(46, 42, 35, .12); }
.lp-blog-archive h3 { margin: 22px 0 8px; }
.lp-blog-archive ul { columns: 2; column-gap: 36px; padding-left: 20px; margin: 0 0 12px; }
.lp-blog-archive li { break-inside: avoid; margin: 0 0 7px; font-size: 15px; line-height: 1.4; }
.lp-blog-archive a { color: #0D453D; }
@media (max-width: 700px) { .lp-blog-archive ul { columns: 1; } }

/* Бесплатный товар в карточке: «Бесплатно» и «Получить бесплатно» в одну строку не
   помещаются — надпись сверху, кнопка вторым рядом во всю ширину (21.09.2026). */
html body.tpl-body-site-1 .item-card__footer--free,
html body.tpl-body-site-1 .item-card__footer:has(.lp-price-free) {
  flex-wrap: wrap !important;
  row-gap: 10px;
}
html body.tpl-body-site-1 .item-card__footer--free .item-card__price,
html body.tpl-body-site-1 .item-card__footer:has(.lp-price-free) .item-card__price {
  flex: 1 1 100%;
  font-size: 17px;
}
html body.tpl-body-site-1 .item-card__footer--free .item-card__cart-btn,
html body.tpl-body-site-1 .item-card__footer:has(.lp-price-free) .item-card__cart-btn {
  flex: 1 1 100%;
  width: 100% !important;
  justify-content: center;
  text-align: center;
}
