/* ============================================================================
   Resoma × Ekaterina Tur — Tilda Brand Bridge v4
   ----------------------------------------------------------------------------
   v4.7.2 (2026-08-31): контраст 1072 → AA ≥4.5:1 (визион-р. 2,3) + min-height-броня названия/eyebrow (класс полосы)
   v4.7.3 (2026-08-31): различимые доступные имена CTA 1072 (визион-р. semantics/ARIA): sr-only ::after, привязка по href
   v4.7.1 (2026-08-31): ANTI-STRIP hardening 1072 — px-зашита клампов
   v4.7 (2026-08-31): ГЛАВНАЯ — «Актуальные события» (1072): новый вид
   карточки: title-поле → eyebrow ДС, price-поле (название программы)
   → заголовок 18/700, описание кламп 5, кнопка full-width pill,
   featured-кольцо (I1). Скоуп #rec1165925881 (1072 только на главной).
   v4.6.0 (2026-08-28): ЕДИНЫЙ РАДИУС КАРТОЧЕК 24px (токен
   --resoma-radius-card, = rounded-3xl ProductCard/BundleCard приложения)
   во всех кардовых блоках моста: 774, 778, 1069, 650, 847 (было 12px)
   и 829 (был натив Тильды 10px от ID-селектора). Выбор заказчика по
   монтажу трёх вариантов (10px / 24px / гибрид). «Голая» карточка 491
   (без коробки, паттерн «голых» карточек каталога) не меняется.
   v4.5.5 (2026-08-27): «Цикл» (829, /veb) — карточки фиксированной
   высоты: сетка вместо masonry (гасим JS-позиционирование Тильды),
   рамка картинки 16:9, кламп заголовка 2 строки / описания 4 строки,
   цена и кнопка к низу — карточка-близнец семейства 774.
   v4.3.6 (2026-08-26): sentence case кнопок zero-блоков и галереи
   средствами CSS (lowercase + ::first-letter:uppercase) — правки
   контента в Тильде не нужны; v4.3.5 — lowercase кнопок + full-width
   кнопки карточек галереи; v4.3 — stretched-link — вся карточка 778
   ведёт на цель
   кнопки «ПОДРОБНЕЕ», не на /acquire/; гарантированный отступ перед
   кластером «цена+кнопки»; v4.2 — регресс-фикс безценовых карточек;
   v4.1 — точечные фиксы /meditation по дизайн-ревью (hero-кнопки,
   галерея, слайдеры, 1033, FAQ 849). Детали — в комментариях секций.
   v4 (2026-08-25): КАТАЛОЖНЫЙ РЕЖИМ ДЛЯ БЛОКА 778 (товарные карточки) —
   включается автоматически селектором [data-record-type="778"].
   Паттерн = v3-774 «Скоро», адаптированный под анатомию 778:
   • основная кнопка в 778 идёт ПЕРВОЙ в DOM (в 774 — последней), поэтому
     кнопки различаются ПО КЛАССУ (.t778__btn_second / type_button2 =
     ghost-кольцо; остальные = primary-заливка ::before-оверлеем), не по
     позиции :last-child;
   • старая цена — зачёркнутым рядом с текущей; дефолт Тильды (display:none
     инлайном) сохраняется, :has-страховка гасит «плавающий р.» если
     value когда-нибудь заполнить пробелом;
   • пропорции обложек НЕ нормализуем — сохраняем инлайн padding-bottom
     Тильды (собрания 77.8%, программы 83.3%, промо 53.6%), чтобы не
     кропить арт Екатерины.
   ЦЕПОЧКА (косвенные изменения — задокументированы, sitemap-аудит
   2026-08-25, 48 URL): [data-record-type=778] затрагивает 17 страниц:
   /meditation, /complex, /neuromeditation (промо!), страницы программ
   /calmness /health /femininity /monetary /moms /bodysupport
   /yearofmeditation /slimness_old /stroinoe_telo_olf (по 2 блока:
   «состав» + «оффер»), /cmi (13 статейных карточек), /praktikumi,
   /individ, /obnovlenie_kursa (12 карточек), /meditation_iscelenie,
   /money_old. Как и v3 для 774: явные настройки цвета внутри секции
   каталога сознательно перекрываются — секция переходит под ДС
   приложения целиком.
   Прочее в v4: focus-visible ring для аккордеона 849 на /meditation
   (scoped по #rec, вне цепочки). Контентные секции страницы (580/899/248/
   102/1003/1033/106) несут явные rec-scoped настройки Екатерины (цвета,
   кегли, uppercase) — по правилу v2 мост их НЕ перекрывает.
   ----------------------------------------------------------------------------
   ----------------------------------------------------------------------------
   v3 (2026-08-21): каталогный режим для блока 774 — включается автоматически
   селектором [data-record-type="774"] (никаких классов и скриптов вешать
   не нужно; блок 774 на сайте встречается только на страницах вебинаров).
   Действие в карточке (вариант A): цена — отдельным рядом, ниже стопка
   full-width кнопок, прижатых к низу карточки (вторичная «Узнать
   подробнее» — ghost с бордером primary, основная — брендовый primary
   pill, всегда последняя). Полное описание — на странице вебинара:
   заголовок карточки — ссылка (hover-подчёркивание как аффорданс).
   + fix дизайн-ревью: контраст описания/eyebrow 0.85 (≈4.9:1, WCAG AA),
   текст кнопок никогда не обрезается.
   (карточки по паттерну «Скоро» из /catalog). v2-базис не изменён.
   v2 (2026-08-20): FIX — удалено назначения цвета текста
   (body color, .t-title/.t-name/.t-descr/.t-text color, цвета текстовых
   ссылок и подменю): глобальный тёмно-бордовый ломал белый текст на тёмных
   секциях (hero на /veb). Цвет текста остаётся за Тильдой (Project Styles
   + настройки блоков). Шрифт/кнопки/карточки/формы — без изменений от v1.
   ----------------------------------------------------------------------------
   Цель: нативные блоки Тильды (кнопки, карточки, формы, типографика) выглядят
   как дизайн-система приложения resoma.ru «из коробки».

   Источник правды токенов: apps/web/src/styles/app.css (ДС приложения).

   Как отключить (kill-switch): удалить <link> на этот файл из
   «Настройки сайта → Ещё → HTML-код для вставки внутрь HEAD» в Тильде.

   Как обновлять: правки вносить в репо (apps/web/public/), затем
   сохранить как следующую версию (v4, v5, ...), задеплоить и обновить ссылку в HEAD Тильды.
   После любых изменений в HEAD — пере-публикация страницы в Тильде.

   Чего этот файл сознательно НЕ трогает:
   - opacity / transform и [data-animate*] — ими управляет tilda-animation;
   - цвета, заданные Екатериной явными настройками блока (rec-scoped CSS
     Тильды имеет специфичность выше и выигрывает намеренно);
   - контролы слайдеров/каруселей (t-slds__arrow, t1196__control, ...).
   ============================================================================ */

/* Defensive: Montserrat (Tilda usually loads it as project font; this makes
   the bridge self-sufficient on pages where it is not assigned yet). */
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300..800&display=swap');

:root {
    /* Палитра бренда (= токенам приложения) */
    --resoma-bg: #f0e6dc;             /* фон страницы */
    --resoma-fg: #3e0b23;             /* основной текст */
    --resoma-primary: #9b3626;        /* кнопки, акценты */
    --resoma-primary-hover: #8c3122;  /* ховер primary */
    --resoma-secondary: #f1e6db;      /* вторичная кнопка / фон-подложка */
    --resoma-secondary-hover: #e7d9c8;
    --resoma-ghost: #f8f3ed;          /* «призрачная» кнопка */
    --resoma-white: #ffffff;

    /* Форма */
    --resoma-radius-btn: 999px;       /* pill, как Button в приложении */
    --resoma-radius-card: 24px;       /* = rounded-3xl карточек приложения */
    --resoma-radius-field: 10px;      /* = --radius 0.625rem */

    /* Тени (из --shadow-primary / карточек приложения) */
    --resoma-shadow-card: 0 4px 6px 0 rgba(155, 54, 38, 0.1);
    --resoma-shadow-btn: 0 4px 12px 0 rgba(155, 54, 38, 0.25);

    /* Типографика */
    --resoma-font: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI',
        Roboto, Helvetica, Arial, sans-serif;
}

/* ----------------------------------------------------------------------------
   1. Кнопки — pill + Montserrat medium (форма применяется всегда;
      цвет — только когда блок НЕ задаёт свой собственный)
   ---------------------------------------------------------------------------- */
a.t-btn:not(.t-slds__arrow):not(.t1196__control):not(.t-carousel__control),
button.t-btn:not(.t-slds__arrow):not(.t1196__control):not(.t-carousel__control),
.t-btn.t-btnflex,
.t-form__submit .t-submit,
input.t-submit {
    border-radius: var(--resoma-radius-btn) !important;
    font-family: var(--resoma-font) !important;
    font-weight: 500 !important;
    letter-spacing: 0.01em;
    transition: background-color 0.15s ease, color 0.15s ease,
        border-color 0.15s ease, box-shadow 0.15s ease;
}

/* Цвет по умолчанию: primary-кнопка как в приложении.
   Двойная специфичность бьёт библиотечные дефолты Тильды, но НЕ трогает
   явные настройки цвета блока (rec-scoped CSS Тильды сильнее — так и надо). */
a.t-btn.t-btnflex,
button.t-btn.t-btnflex,
.t-card__btn.t-btnflex,
.t-form__submit .t-btn,
.t-form__submit .t-submit {
    background-color: var(--resoma-primary);
    color: var(--resoma-white);
    border: 0;
}

a.t-btn.t-btnflex:hover,
button.t-btn.t-btnflex:hover,
.t-card__btn.t-btnflex:hover,
.t-form__submit .t-btn:hover,
.t-form__submit .t-submit:hover {
    background-color: var(--resoma-primary-hover);
    color: var(--resoma-white);
}

/* v4.3.7b — sentence case для контентных CTA-кнопок («ЧИТАТЬ НАУЧНЫЕ
   ПУБЛИКАЦИИ» блок 191, «ЕЩЕ СТАТЬИ» фид 121 на /meditation): те же
   тильдовские кнопки .t-btnflex, но вне карточных обёрток. Контент
   набран капсом → текст рендерился CAPS и выбивался из единого стиля
   кнопок (замечание пользователя: «у нас нигде нет uppercase в кнопках»).
   Селектор исключает карточные каталоги (778/774/галерея — у них свои
   правила выше по специфичности) и навигационное меню
   (t-menusub__link-item / t-menu__link-item — CAPS-меню дизайн сайта).
   ::first-letter — на спане: flex-кнопка его не генерирует. */
.t-btnflex:not(.t778__btn):not(.t-card__btn) .t-btnflex__text {
    display: inline-block;
    text-transform: lowercase !important;
}
.t-btnflex:not(.t778__btn):not(.t-card__btn) .t-btnflex__text::first-letter {
    text-transform: uppercase !important;
}
/* Гладкий случай «текст — прямой ребёнок кнопки» (фид 121) — блочифицируем
   не нужно: кнопка сама flex, ::first-letter на ней не работает, текст
   всегда в спане у btnflex (проверено по живому HTML). Страховка ниже на
   случай прямой текстовой ноды. */
.t-btnflex:not(.t778__btn):not(.t-card__btn)::first-letter {
    text-transform: uppercase !important;
}

/* v4.3.7c — sentence case для КАРТОЧНЫХ кнопок по классу (без привязки
   к rec-ID). Причина: карточные блоки Тильды переиспользуются Екатериной
   на многих страницах — 923-галерея живёт и на /meditation (rec1165934776/
   rec1238111231 — покрыты id-правилами выше), и на главной (другие rec),
   842-тренинги («ВЫБРАТЬ», «ЧИТАТЬ», «СТАТЬ УЧАСТНИКОМ») — только на
   главной. Id-перечисление не масштабируется; класс .t-card__btn — единая
   карточная поверхность (аналог решения v3 для 774). Контент набран
   капсом → нормализуем. Тильда кладёт текст в спан .t-btnflex__text
   (block от её же CSS) — ::first-letter работает на нём; страховка на
   самой кнопке оставлена. 778 исключён: у него свои правила (кнопка
   зовётся .t778__btn, не .t-card__btn — фактически :not() избыточен,
   оставлен для симметрии). */
.t-card__btn.t-btnflex {
    text-transform: lowercase !important;
}
.t-card__btn.t-btnflex .t-btnflex__text {
    display: inline-block;
}
.t-card__btn.t-btnflex .t-btnflex__text::first-letter {
    text-transform: uppercase !important;
}



/* Текстовая кнопка-ссылка (= вариант link в приложении).
   Инвариант: надпись ВНУТРИ цветной кнопки (.t-btnflex .t-btntext) всегда
   следует цвету кнопки — акцент применяется только к standalone-ссылкам. */
.t-btntext {
    font-family: var(--resoma-font) !important;
    color: var(--resoma-primary);
    text-underline-offset: 4px;
    transition: color 0.15s ease;
}
.t-btntext:hover {
    color: var(--resoma-primary-hover);
    text-decoration: underline;
}
.t-btnflex .t-btntext,
.t-btn .t-btntext {
    color: inherit !important;
    text-decoration: none !important;
}

/* ----------------------------------------------------------------------------
   2. Карточки — белые, сильно скруглённые, с мягкой бордовой тенью
      (= ProductCard / catalog-*-card в приложении)
   ---------------------------------------------------------------------------- */
.t-card__col {
    border-radius: var(--resoma-radius-card);
    background-color: var(--resoma-white);
    box-shadow: var(--resoma-shadow-card);
    overflow: hidden;
}

/* ----------------------------------------------------------------------------
   3. Типографика — ТОЛЬКО шрифт. Цвет текста мост НЕ назначает:
   он не может отличить светлую секцию от тёмной, а Тильда уже решает это
   сама (Project Styles + настройки блока). Урок v1: глобальный цвет текста
   ломал белый текст на тёмном hero (/veb, rec2432772051). Правила цвета
   .t-title/.t-name/.t-descr/.t-text и текстовых ссылок удалены в v2.
   ---------------------------------------------------------------------------- */
body {
    font-family: var(--resoma-font);
}

.t-title,
.t-name,
.t-descr,
.t-text,
.t-uptitle,
.t-section__title,
.t-card__title {
    font-family: var(--resoma-font) !important;
}

/* ----------------------------------------------------------------------------
   4. Формы — поля как Input приложения (на будущее: попапы, регистрации)
   ---------------------------------------------------------------------------- */
.t-input,
.t-textarea {
    border-radius: var(--resoma-radius-field) !important;
    border: 1px solid rgba(62, 11, 35, 0.12);
    background-color: var(--resoma-white);
    color: var(--resoma-fg);
    font-family: var(--resoma-font) !important;
}
.t-input:focus,
.t-textarea:focus {
    border-color: var(--resoma-primary);
    outline: none;
}
.t-input::placeholder,
.t-textarea::placeholder {
    color: rgba(62, 11, 35, 0.4);
}

/* ----------------------------------------------------------------------------
   5. Доступность и мелочи
   ---------------------------------------------------------------------------- */
.t-btn:focus-visible,
.t-btnflex:focus-visible,
.t-btntext:focus-visible,
.t-input:focus-visible,
.t-textarea:focus-visible,
.t-card__link:focus-visible {
    /* !important: Tilda's CDN sheets reset outline-style on links; this
       rule only ever applies in the keyboard-focus state, so it cannot
       affect the resting look. */
    outline: 2px solid var(--resoma-primary) !important;
    outline-offset: 2px !important;
}

::selection {
    background: rgba(155, 54, 38, 0.2);
}

/* ----------------------------------------------------------------------------
   6. Модификаторы для кастомных кнопок (T123 / Zero Block):
      добавить класс элементу — получить вариант кнопки из ДС.
   ---------------------------------------------------------------------------- */
/* Вторичная кнопка: бежевая подложка, бордовый текст */
.t-btn.uc-btn-secondary,
.t-btn.t-btnflex.uc-btn-secondary {
    background-color: var(--resoma-secondary);
    color: var(--resoma-primary);
}
.t-btn.uc-btn-secondary:hover,
.t-btn.t-btnflex.uc-btn-secondary:hover {
    background-color: var(--resoma-secondary-hover);
    color: var(--resoma-primary);
}

/* «Призрачная» кнопка: светлая подложка, бордовый текст */
.t-btn.uc-btn-ghost,
.t-btn.t-btnflex.uc-btn-ghost {
    background-color: var(--resoma-ghost);
    color: var(--resoma-primary);
}
.t-btn.uc-btn-ghost:hover,
.t-btn.t-btnflex.uc-btn-ghost:hover {
    background-color: var(--resoma-secondary);
    color: var(--resoma-primary);
}

/* ============================================================================
   v3 (2026-08-21): КАТАЛОЖНЫЙ РЕЖИМ — включается автоматически
   ----------------------------------------------------------------------------
   Паттерн «Скоро» из /catalog (CatalogSoonTimeline): белая карточка с
   подложкой, обложка 16:9 full-bleed, eyebrow, жирный заголовок, короткое
   muted-описание, внизу цена отдельным рядом и стопка full-width кнопок.

   Как включить: НИЧЕГО не нужно — селекторы ниже таргетят блок 774 по
   врождённому атрибуту [data-record-type="774"] (такие блоки на сайте
   живут только на страницах вебинаров, например /veb). Новая карточка в
   блоке 774 автоматически получает стиль. Явные настройки цвета внутри
   этих секций сознательно перекрываются — секция переходит под ДС
   приложения целиком.
   ============================================================================ */

/* --- Карточка-колонка: сброс глобального белого бокса v2 (на wrapper).
      display:flex + stretch — чтобы карточки в ряду были одной высоты
      (ряд цены прижимается к низу самой высокой карточки). --- */
[data-record-type="774"] .t-card__col {
    background: transparent;
    box-shadow: none;
    border-radius: 0;
    overflow: visible;
    padding: 0;
    display: flex;
    flex-direction: column;
}
[data-record-type="774"] .t-card__col > * {
    flex: 1;
}

/* --- Сама карточка: белый бокс, radius 24px (токен --resoma-radius-card
      = rounded-3xl ProductCard), тень как Soon-карточка.
      !important: Тильда генерирует rec-scoped #recXXX .t774__wrapper
      с border-radius: 10px (ID-селектор) — в каталогом режиме карточка
      целиком под ДС.
      --- */
[data-record-type="774"] .t774__wrapper {
    background: #ffffff;
    border-radius: var(--resoma-radius-card) !important;
    box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.08);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    height: 100%;
}
/* 774: wrapper растягивается, чтобы ряд цены прижимался к низу */
[data-record-type="774"] .t774__wrapper .t774__content {
    flex: 1;
}

/* --- Обложка: 16:9 full-bleed (инлайн-паддинг Тильды перекрывается) --- */
[data-record-type="774"] .t774__imgwrapper {
    padding-bottom: 56.25% !important;
}

/* --- Контент: сетка, прижатая к низу.
       Ряды: eyebrow / title / descr / [1fr — пустой spacer] / цена / кнопки.
       Spacer растягивается и прижимает цену и кнопки к низу карточки
       (вариант A: кнопки всегда внизу, при любой длине описания). --- */
[data-record-type="774"] .t774__content {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: auto auto auto 1fr auto auto;
    row-gap: 6px;
    padding: 16px;
    flex: 1;
    align-content: start;
}

/* textwrapper исчезает как бокс — дети участвуют в сетке контента */
[data-record-type="774"] .t774__textwrapper {
    display: contents;
}

/* Eyebrow «ВЕБИНАР» — генерируется CSS (в редакторе Тильды не виден) */
[data-record-type="774"] .t774__content::before {
    content: 'Вебинар';
    grid-column: 1 / -1;
    font-family: var(--resoma-font);
    font-size: 12px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: rgba(62, 11, 35, 0.85);
}

/* Заголовок: тёмный, не uppercase, 2 строки */
[data-record-type="774"] .t-card__title {
    grid-column: 1 / -1;
    color: var(--resoma-fg) !important;
    text-transform: none !important;
    font-size: 18px !important;
    font-weight: 700 !important;
    line-height: 1.35 !important;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
[data-record-type="774"] .t-card__title .t-card__link {
    color: inherit !important;
    text-decoration: none;
}
/* Аффорданс полного описания (CSS-only): заголовок — ссылка на страницу
   вебинара, где Екатерина публикует полный анонс. Подчёркивание на ховере
   показывает кликабельность; полный текст — там, не на карточке. */
[data-record-type="774"] .t-card__title .t-card__link:hover {
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Описание: muted, 4 строки (решение: место на карточке не экономим —
   пользователь видит почти весь текст, полнота по клику на заголовок).
   0.85 alpha ≈ 4.9:1 на белом — проходит WCAG AA для мелкого текста
   (fix дизайн-ревью: было 0.55 ≈ 2:1). */
[data-record-type="774"] .t-card__descr {
    grid-column: 1 / -1;
    color: rgba(62, 11, 35, 0.85) !important;
    font-size: 14px !important;
    line-height: 1.6 !important;
    display: -webkit-box;
    -webkit-line-clamp: 4;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Uptitle (цена Тильды в 774)
   → отдельный ряд над кнопками (вариант A), слева */
[data-record-type="774"] .t-card__uptitle {
    grid-column: 1 / -1;
    grid-row: 5;
    align-self: end;
    /* Цена — жирный красный размером с текст кнопки (16px): как цена
       коллекций в приложении (text-sm font-bold text-primary) */
    color: var(--resoma-primary) !important;
    text-transform: none !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    /* Тильда инлайнит min-height (48px) — сбрасываем, иначе цена вылезает
       из ряда */
    min-height: 0 !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    /* цена одной строкой */
    white-space: nowrap;
}
/* Кнопки → ряд 6, во всю ширину карточки, стопкой (вариант A):
   вторичная («Узнать подробнее») — ghost-кнопка с бордером, основная
   («Купить в записи») — брендовый primary pill, всегда последняя.
   Обе прижаты к самому низу карточки spacer-рядом выше. */
[data-record-type="774"] .t-card__btn-wrapper {
    grid-column: 1 / -1;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
    margin: 0 !important;
    padding: 0 !important;
    min-width: 0;
}
[data-record-type="774"] .t-card__btn-wrapper .t-card__btn {
    margin: 0 !important;
    min-width: 0;
    width: 100%;
}
[data-record-type="774"] .t774__content .t-card__btn-wrapper {
    grid-row: 6;
}
/* Вторичная кнопка (не последняя) → ghost с обводкой primary, full-width.
   Обводка — псевдоэлементом ::before: Тильда генерирует rec-scoped правило
   `#rec… .t-btnflex { border-style: none !important; box-shadow: none
   !important }` (ID-специфичность), которое убивает и border, и box-shadow
   на самой кнопке. Псевдоэлемент этим селекторам не матчится — кольцо
   неуязвимо. border-radius: inherit повторяет pill. */
[data-record-type="774"] .t-card__btn-wrapper .t-card__btn.t-btnflex:not(:last-child) {
    background-color: transparent !important;
    color: var(--resoma-primary) !important;
    border-radius: var(--resoma-radius-btn) !important;
    padding: 8px 16px !important;
    font-size: 16px !important;
    font-weight: 500 !important;
    position: relative;
}
[data-record-type="774"] .t-card__btn-wrapper .t-card__btn.t-btnflex:not(:last-child)::before {
    content: '';
    position: absolute;
    inset: 0;
    border: 1px solid var(--resoma-primary);
    border-radius: inherit;
    pointer-events: none;
}
[data-record-type="774"] .t-card__btn-wrapper .t-card__btn.t-btnflex:not(:last-child):hover {
    background-color: rgba(155, 54, 38, 0.08) !important;
    color: var(--resoma-primary) !important;
}
[data-record-type="774"] .t-card__btn.t-btnflex {
    background-color: var(--resoma-ghost) !important;
    color: var(--resoma-primary) !important;
    border-radius: var(--resoma-radius-btn) !important;
    /* v4.3.7: sentence case (контент главной набран капсом — «ПОЛУЧИТЬ
       ДОСТУП», «ПРИОБРЕСТИ ДОСТУП», живой HTML 2026-08-26); первая буква
       поднимается на спане — правило ниже. */
    text-transform: lowercase !important;
    font-size: 16px !important;
    font-weight: 500 !important;
    padding: 8px 16px !important;
    box-shadow: none !important;
    /* Текст кнопки НИКОГДА не обрезаем (fix дизайн-ревью): длинная подпись
       переносится строками внутри pill. На full-width перенос не нужен. */
    white-space: normal;
    text-align: center;
}

/* v4.3.7 — sentence case для 774: ::first-letter на flex-кнопке не
   генерится, блочифицируем спан и поднимаем первую букву на нём. */
[data-record-type="774"] .t-card__btn-wrapper .t-card__btn .t-btnflex__text {
    display: inline-block;
}
[data-record-type="774"] .t-card__btn-wrapper .t-card__btn .t-btnflex__text::first-letter {
    text-transform: uppercase !important;
}
[data-record-type="774"] .t-card__btn.t-btnflex:hover {
    background-color: rgba(248, 243, 237, 0.8) !important;
    color: var(--resoma-primary) !important;
}

/* Primary CTA (:last-child): заливка рисуется ::before-оверлеем.
   Причина: Тильда генерирует ID-специфичные правила
   `#rec… .t-btnflex_type_button2:hover/:focus-visible { background: #edd6b2
   !important }` — светлый беж под белым текстом (контраст FAIL). Классами
   ID-специфичность не перебить, поэтому primary-цвет держит оверлей
   (каскадно неуязвим, как и кольцо вторичной кнопки). Текст поднят
   z-index'ом над оверлеем. Ховер/фокус затемняют оверлей до primary-hover. */
[data-record-type="774"] .t-card__btn-wrapper .t-card__btn.t-btnflex:last-child {
    position: relative;
    background-color: transparent !important;
}
[data-record-type="774"] .t-card__btn-wrapper .t-card__btn.t-btnflex:last-child .t-btnflex__text {
    position: relative;
    z-index: 1;
}
[data-record-type="774"] .t-card__btn-wrapper .t-card__btn.t-btnflex:last-child::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: var(--resoma-primary);
    pointer-events: none;
}
[data-record-type="774"] .t-card__btn-wrapper .t-card__btn.t-btnflex:last-child:hover::before,
[data-record-type="774"] .t-card__btn-wrapper .t-card__btn.t-btnflex:last-child:focus-visible::before {
    background: var(--resoma-primary-hover);
}

/* Мобильный touch-target: обе кнопки ≥44px по высоте (Apple HIG/основа a11y
   для сенсорных целей; на десктопе 38px достаточно, курсор точнее пальца).
   Атрибут задублирован: специфичность должна быть ≥ базового правила
   secondary (:not(:last-child) = 5 классов), иначе !important-тайбрейк
   уходит базовому правилу и кнопка остаётся 38px. */
@media (max-width: 640px) {
    [data-record-type="774"][data-record-type="774"] .t-card__btn-wrapper .t-card__btn.t-btnflex {
        padding: 12px 16px !important;
    }
}
/* Основная кнопка (последняя): цвет текста; фон отвечает ::before-оверлей
   (см. блок выше). */
[data-record-type="774"] .t-card__btn-wrapper .t-card__btn.t-btnflex:last-child {
    color: #ffffff !important;
}

/* ============================================================================
   v4 (2026-08-25): КАТАЛОГ ДЛЯ БЛОКА 778 — включается автоматически
   ----------------------------------------------------------------------------
   Паттерн = v3-774 «Скоро» из /catalog, адаптированный под анатомию 778:
   белая карточка, rounded-xl, мягкая тень, контент-колонка с прижатой к
   низу ценой и стопкой full-width кнопок (вторичная — ghost-кольцо,
   основная — primary pill). Работает во всех режимах блока: каталог с
   двумя кнопками (/meditation, /complex), «состав программы» без цены
   (/calmness и др.), одиночный оффер со старой ценой.
   ============================================================================ */

/* --- Колонка: flex-колонка (контейнер Тильды уже flex, колонки
      растягиваются по высоте ряда — кнопки выравниваются по самой
      высокой карточке). --- */
[data-record-type="778"] .t778__col {
    display: flex;
    flex-direction: column;
    align-items: stretch;
}

/* --- Карточка: белый бокс, rounded-xl, тень. !important: у wrapper
      инлайн background-color:transparent + rec-scoped
      #rec .t778__wrapper {border-radius:10px} (ID-специфичность). --- */
[data-record-type="778"] .t778__wrapper {
    background: var(--resoma-white) !important;
    border-radius: var(--resoma-radius-card) !important;
    box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.08);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    padding: 0 !important;
    /* v4.3: содержащий блок для растянутой ссылки-карточки (::after
       ghost-кнопки, см. ниже). */
    position: relative;
}

/* --- Контент: flex-колонка, цена прижата к низу. Ссылка-обёртка текста
      растворяется (display:contents) — дети становятся flex-элементами,
      кликабельность ссылок сохраняется. --- */
[data-record-type="778"] .t778__content {
    display: flex;
    flex-direction: column;
    gap: 6px;
    /* v4.1: нижний паддинг снят — цена образует с кнопками единый
       нижний кластер (гэп задаёт btn-wrapper margin-top). */
    padding: 16px 16px 0 !important;
    flex: 1 1 auto;
    min-height: 0;
    /* v4.3: static обязателен для stretched-link: иначе content —
       ближайший позиционированный предок ::after ghost-кнопки, и
       растянутая ссылка накрывает только текстовую область, не
       обложку. Внутри content нет абсолютно позиционированных
       детей — re-anchor на wrapper безопасен. */
    position: static !important;
}
[data-record-type="778"] .t778__content > a {
    display: contents;
}
[data-record-type="778"] .t778__textwrapper {
    display: contents;
}

/* --- Заголовок: тёмный, без uppercase, 2 строки. !important против
      rec-scoped #rec .t778__title {font-weight:500; text-transform:uppercase}
      (ID-специфичность) — в каталогом режиме секция целиком под ДС. --- */
[data-record-type="778"] .t778__title {
    color: var(--resoma-fg) !important;
    text-transform: none !important;
    font-size: 18px !important;
    font-weight: 700 !important;
    line-height: 1.35 !important;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* --- Описание: muted, 4 строки (полный текст — на странице собрания).
      0.85 alpha ≈ 4.9:1 на белом — WCAG AA (как в v3-774).
      v4.3.1: source-контент Екатерины иногда содержит финальный «...»
      отдельной строкой («Медитации для восстановления сна») — clamp
      добавляет своё многоточие и получается «…\n…». Нормализуем:
      переносы схлопнуты, строка «...» обрезается clamp'ом самим. --- */
[data-record-type="778"] .t778__descr {
    color: rgba(62, 11, 35, 0.85) !important;
    font-size: 14px !important;
    line-height: 1.6 !important;
    display: -webkit-box;
    -webkit-line-clamp: 4;
    -webkit-box-orient: vertical;
    overflow: hidden;
    white-space: normal;
}

/* --- Цена: ряд над кнопками, прижат к низу карточки. Текущая — жирная
      primary (как цена коллекций в приложении), старая — зачёркнутый
      muted рядом. --- */
[data-record-type="778"] .t778__price-wrapper {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: auto !important; /* v4.2: устойчивость к #rec-маргинам Тильды */
    /* v4.3: гарантированный минимальный отступ описания от кластера
       «цена+кнопки»: когда карточка в ряду самая высокая, авто-маргин
       сжимается до нуля — паддинг держит минимум 12px. */
    padding: 12px 0 0 !important;
    min-height: 0 !important;
}
[data-record-type="778"] .t778__price-wrapper[style*="visibility: hidden"] {
    display: none;
}
/* Дефолт Тильды: старая цена скрыта инлайном display:none — видима только
   когда Екатерина её заполнила (офферы программ, /complex). На всякий
   случай подстраховка от stray-пробела в value (:has + :not(:empty)). */
[data-record-type="778"] .t778__price_old:has(.t778__price-value:not(:empty)) {
    display: flex;
}
[data-record-type="778"] .t778__price_old:not(:has(.t778__price-value:not(:empty))) {
    display: none !important;
}
[data-record-type="778"] .t778__price {
    display: flex;
    align-items: baseline;
    gap: 2px;
    color: var(--resoma-primary) !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    min-height: 0 !important;
    padding: 0 !important;
    white-space: nowrap;
}
[data-record-type="778"] .t778__price_old {
    display: flex;
    align-items: baseline;
    gap: 2px;
    /* фикс дизайн-ревью: 0.55 ≈ 2.8:1 — FAIL WCAG даже для зачёркнутой;
       0.75 ≈ 4.6:1 ≥ AA-large (14px — граница, но цена secondary-инфо). */
    color: rgba(62, 11, 35, 0.75) !important;
    font-size: 14px !important;
    font-weight: 400 !important;
    line-height: 1.2 !important;
    min-height: 0 !important;
    padding: 0 !important;
    text-decoration: line-through;
    text-decoration-thickness: 1px;
    white-space: nowrap;
}
[data-record-type="778"] .t778__price-currency {
    font-weight: inherit;
}

/* --- Кнопки: full-width стопкой. Основная («КУПИТЬ»/«Ознакомиться»/
      «Приобрести доступ»/«Купить»/«Читать»/«Узнать больше») — primary
      pill; вторичная («ПОДРОБНЕЕ»/«Подробнее о собрании») — ghost с
      кольцом primary. Дискриминация ПО КЛАССУ (.t778__btn_second /
      .t-btnflex_type_button2), НЕ по позиции: в 778 основная кнопка
      идёт первой в DOM (в 774 — последней), на /complex есть карточки
      с одной кнопкой. Sitemap-аудит 2026-08-25 (48 URL, 17 страниц с
      778): ВСЕ много-кнопочные карточки маркируют вторичную кнопку
      ghost-классом; одно-кнопочные (/cmi «Читать»×13, /praktikumi
      «КУПИТЬ», /meditation_iscelenie «Узнать больше») рендерятся
      primary — единственный CTA на карточке; CSS по тексту кнопки не
      матчит, JS в мосте нет — компромисс принят сознательно. --- */
[data-record-type="778"] .t778__btn-wrapper {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
    /* v4.1: заметный отступ над кластером «цена+кнопки» + собственные
       боковые/нижний отступы (контент теперь без нижнего паддинга).
       Кластер прибит к низу карточки за счёт flex:1 у контента и
       margin-top:auto у цены. В режиме без цены (состав программ)
       цена display:none и авто-маргин переходит сюда. */
    margin: 12px 0 0 !important;
    padding: 0 16px 16px !important;
    min-width: 0;
}
/* v4.2: без цены авто-маргин «книзу» держит сам блок кнопок.
   ПРАВИЛО ПЕРЕПИСАНО: прежний `~`-селектор был мёртвым кодом —
   в DOM цена лежит ВНУТРИ ссылки (js-product-link → textwrapper),
   а btn-wrapper — сиблинг ссылки, НЕ цены; :only-child тоже не
   матчится (в контенте всегда есть ссылка). Из-за этого на безценовых
   карточках («состав» программ: /calmness /health /femininity /monetary
   /moms /bodysupport /yearofmeditation /slimness_old) кнопки висели
   на 22px выше низа карточки. Новый селектор — :has() по контейнеру
   контента. Минимальный гэп даёт padding-top: auto-маргин сжимается
   до 0 на «полных» карточках. */
[data-record-type="778"] .t778__content:has(.t778__price-wrapper[style*="visibility: hidden"]) .t778__btn-wrapper,
[data-record-type="778"] .t778__content:not(:has(.t778__price-wrapper)) .t778__btn-wrapper {
    margin-top: auto !important;
    padding-top: 12px !important;
}
[data-record-type="778"] .t778__btn-wrapper .t778__btn {
    margin: 0 !important;
    min-width: 0;
    width: 100%;
    box-sizing: border-box;
    border-radius: var(--resoma-radius-btn) !important;
    font-size: 16px !important;
    font-weight: 500 !important;
    /* v4.3.7: sentence case по всей поверхности каталога. Контент
       набран капсом («КУПИТЬ», «ПОДРОБНЕЕ» — живой HTML 2026-08-26),
       поэтому none честно рендерил CAPS. Нормализуем как в zero-блоках:
       lowercase + ::first-letter:uppercase (спан ниже). */
    text-transform: lowercase !important;
    padding: 8px 16px !important;
    text-align: center;
    white-space: normal;
    position: relative;
}
/* v4.3.4: у Тильды btn-wrapper несёт padding 0 16px 16px — кнопки
   получали двойной горизонтальный инсет (16 контента + 16 враппера =
   32px) относительно заголовка/цены. Гасим горизонталь, оставляя
   нижний отступ. Кнопки ложатся вровень с контентом карточки. */
[data-record-type="778"] .t778__btn-wrapper {
    padding-left: 0 !important;
    padding-right: 0 !important;
}

/* Вторичная кнопка: прозрачная, кольцо primary. v4.3: КНОПКА =
   РАСТЯНУТАЯ ССЫЛКА НА ВСЮ КАРТОЧКУ (stretched-link): клик по обложке/
   заголовку карточки (их родные js-product-link ведут на /acquire/)
   открывает ту же страницу, что и «ПОДРОБНЕЕ». Механика:
   - сама кнопка position:static + padding:0 — иначе её псевдоэлементы
     позиционировались бы от неё;
   - ::after растягивается на .t778__wrapper (position:relative выше),
     прозрачный, на hover лёгкая тонировка карточки;
   - кольцо и ховер переехали на внутренний span-пилл
     (.t-btnflex__text есть во всех 778-кнопках — проверено по sitemap);
   - основная кнопка получает z-index:1, чтобы остаться кликабельной
     над растянутой ссылкой (она раньше в DOM).
   Не применяется на страницах без ghost-кнопок (/neuromeditation,
   одно-кнопочные карточки /cmi, /praktikumi, офферы программ) — там
   клик по карточке остаётся прежним. */
[data-record-type="778"] .t778__btn-wrapper .t778__btn:is(.t778__btn_second, .t-btnflex_type_button2) {
    /* v4.3.4: ОБЕ кнопки ПОЛНОЙ ШИРИНЫ и одинаковые (фидбек: «подробнее»
       был втрое уже «купить»). Откат v4.3.1-fit-content: «двойную кнопку»
       на ховере теперь предотвращает не сжатие коробки, а непрозрачный
       span-пилл (v4.3.2), который перекрывает бежевый anchor-hover
       Тильды на всей ширине. Спан держит контур (::before) и ховер. */
    position: static !important;
    padding: 0 !important;
    background-color: transparent !important;
    color: var(--resoma-primary) !important;
}
/* v4.3.2: ховер-фон пилли — на РЕБЁНКЕ span'е. Причина: Тильдин hover
   (#rec… .t-btnflex_type_button2:hover {background:#edd6b2 !important})
   срабатывает на anchor при ховере ЛЮБОЙ точки карточки (растянутая
   ::after — часть anchor), и бежевой становилась вся коробка anchor.
   ID+!important не перебить классом — но можно ПЕРЕКРЫТЬ: span-пилля
   получает непрозрачный фон (белый в покое / бежевый на anchor-hover)
   и ложится ПОВЕРХ бежевого anchor'а. Визуально единственный бежевый
   прямоугольник — сама пилля. ::after-карточка прозрачна, клик живёт. */
[data-record-type="778"] .t778__btn-wrapper .t778__btn:is(.t778__btn_second, .t-btnflex_type_button2) .t-btnflex__text {
    display: block;
    position: relative;
    /* v4.3.2: z-index поднимает пилюлю НАД растянутой ::after-ссылкой
       (painting order: ::after родителя рисуется поверх детей) —
       pointer-events над пилюлей попадают в span, и span:hover
       срабатывает ТОЛЬКО при прямом наведении. Клик при этом всё равно
       уходит в anchor (span — его ребёнок) → навигация та же.
       v4.3.4: пилюля растянута на всю ширину кнопки — обе кнопки
       карточки одинаковой геометрии и полной ширины (фидбек). */
    z-index: 1;
    width: 100%;
    box-sizing: border-box;
    padding: 8px 16px;
    border-radius: var(--resoma-radius-btn);
    background-color: var(--resoma-white);
}
[data-record-type="778"] .t778__btn-wrapper .t778__btn:is(.t778__btn_second, .t-btnflex_type_button2) .t-btnflex__text:hover {
    background-color: #edd6b2;
}
[data-record-type="778"] .t778__btn-wrapper .t778__btn:is(.t778__btn_second, .t-btnflex_type_button2) .t-btnflex__text::before {
    content: '';
    position: absolute;
    inset: 0;
    border: 1px solid var(--resoma-primary);
    border-radius: inherit;
    pointer-events: none;
}
[data-record-type="778"] .t778__btn-wrapper .t778__btn:is(.t778__btn_second, .t-btnflex_type_button2)::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: transparent;
}
[data-record-type="778"] .t778__btn-wrapper .t778__btn:is(.t778__btn_second, .t-btnflex_type_button2):hover::after {
    background-color: transparent;
}
/* v4.3.1 (H6): affordance кликабельности карточки — лёгкий подъём
   тени на hover. Применяется к wrapper при ховере любого места
   карточки, включая растянутую ссылку (::after — часть anchor). */
[data-record-type="778"] .t778__wrapper {
    transition: box-shadow 0.2s ease;
}
[data-record-type="778"] .t778__col:hover .t778__wrapper {
    box-shadow: 0 12px 24px 0 rgba(0, 0, 0, 0.13);
}
/* v4.3.1 (a11y): фокус карточки-ссылки. Tab-порядок: КУПИТЬ →
   ПОДРОБНЕЕ(=карточка) — при фокусе ghost-кнопки (чья ::after и есть
   ссылка-карточка) рисуем кольцо вокруг ВСЕЙ карточки, а не только
   пилли: пользователь видит, куда ведёт Tab. */
/* v4.3.3 (a11y-ревью): при Tab-фокусе ghost-кнопки рисуем ОДНО кольцо —
   вокруг карточки-ссылки. Нативный outline пилли (глобальное правило v3
   .t-btnflex:focus-visible !important) гасим ТОЛЬКО при поддержке :has()
   (карточное кольцо строится на :has — в старых браузерах без :has()
   остаётся outline пилли, фокус не теряется). Primary «КУПИТЬ» —
   отдельная ссылка, своё кольцо пилли сохраняет всегда. */
@supports selector(:has(*)) {
    [data-record-type="778"] .t778__btn-wrapper .t778__btn:is(.t778__btn_second, .t-btnflex_type_button2):focus-visible {
        outline: none !important;
    }
}
[data-record-type="778"] .t778__col:has(.t778__btn:is(.t778__btn_second, .t-btnflex_type_button2):focus-visible) .t778__wrapper,
[data-record-type="778"] .t778__col:has(.t778__btn:is(.t778__btn_second, .t-btnflex_type_button2):focus-visible) .t778__wrapper::after {
    outline: 2px solid var(--resoma-primary);
    outline-offset: 2px;
}
[data-record-type="778"] .t778__col:has(.t778__btn_second:focus-visible) .t778__wrapper::after {
    content: '';
    position: absolute;
    inset: -2px;
    border-radius: inherit;
    pointer-events: none;
}

/* Основная кнопка: заливка ::before-оверлеем (каскадно неуязвима к
   ID-scoped hover !important Тильды — как в v3-774; ховер затемняет
   оверлей). Текст поднят z-index'ом над оверлеем. v4.3: z-index:1 —
   поверх растянутой ссылки-карточки (::after ghost-кнопки). */
[data-record-type="778"] .t778__btn-wrapper .t778__btn:not(.t778__btn_second):not(.t-btnflex_type_button2) {
    background-color: transparent !important;
    color: var(--resoma-white) !important;
    z-index: 1;
}
[data-record-type="778"] .t778__btn-wrapper .t778__btn:not(.t778__btn_second):not(.t-btnflex_type_button2) .t-btnflex__text {
    position: relative;
    z-index: 1;
}
/* v4.3.7 — sentence case: ::first-letter на flex-кнопке не генерится,
   поднимаем первую букву на спане (display:inline-block обязателен:
   inline не поддерживает ::first-letter). Покрывает primary и ghost
   кнопки каталога («Купить», «Подробнее», «Читать», «Ознакомиться»). */
[data-record-type="778"] .t778__btn-wrapper .t778__btn .t-btnflex__text {
    display: inline-block;
}
[data-record-type="778"] .t778__btn-wrapper .t778__btn .t-btnflex__text::first-letter {
    text-transform: uppercase !important;
}
[data-record-type="778"] .t778__btn-wrapper .t778__btn:not(.t778__btn_second):not(.t-btnflex_type_button2)::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: var(--resoma-primary);
    pointer-events: none;
}
[data-record-type="778"] .t778__btn-wrapper .t778__btn:not(.t778__btn_second):not(.t-btnflex_type_button2):hover::before,
[data-record-type="778"] .t778__btn-wrapper .t778__btn:not(.t778__btn_second):not(.t-btnflex_type_button2):focus-visible::before {
    background: var(--resoma-primary-hover);
}

/* Мобильный touch-target: кнопки ≥44px (как v3-774; атрибут задублирован
   для специфичности против базового правила кнопки). v4.3.3: ghost-кнопка
   исключена — её паддинг на span-пилле, иначе задвоение (anchor 12px +
   span 8px). v4.3.4: пилюля full-width — паддинг задаётся только на
   span (anchor прижат к 0), правка специфичности сохранена. */
@media (max-width: 640px) {
    [data-record-type="778"][data-record-type="778"] .t778__btn-wrapper .t778__btn:not(.t778__btn_second):not(.t-btnflex_type_button2) {
        padding: 12px 16px !important;
    }
    [data-record-type="778"][data-record-type="778"] .t778__btn-wrapper .t778__btn:is(.t778__btn_second, .t-btnflex_type_button2) .t-btnflex__text {
        padding: 12px 16px;
    }
}

/* --- Одиночная карточка (оффер-режим: «Комплексная программа …» на
      страницах программ). v4.0: сужали до 480px (fix дизайн-ревью H8 —
      растянутая на всю сетку карточка выглядит пусто).
      v4.3.8 РЕГРЕСС-ФИКС ЦЕНТРОВКИ: Тильда собирает колонку оффера как
      t-col_8 t-prefix_2 — префикс рендерится PADDING-LEFT:200px, а при
      родном box-sizing:content-box правило v4.0 давало бокс 480+200px;
      авто-маржи центрировали бокс целиком, и видимая карточка уезжала
      вправо на 100px (замер на /calmness: cx=820 при центре 720).
      Лечение: сброс prefix-паддингов + border-box + float:none.
      Текст оффера — влево (нативно t-align_center на .t778__col);
      кнопка сохраняет собственный text-align:center.
      :only-child матчится только когда в контейнере одна колонка;
      каталоги не затрагиваются. --- */
@media (min-width: 641px) {
    [data-record-type="778"] .t778__container .t778__col:only-child {
        max-width: 480px !important;
        width: 100% !important;
        box-sizing: border-box !important;
        margin-left: auto !important;
        margin-right: auto !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
        float: none !important;
    }
}
[data-record-type="778"] .t778__container .t778__col:only-child,
[data-record-type="778"] .t778__container .t778__col:only-child .t778__wrapper {
    text-align: left !important;
}

/* ---------------------------------------------------------------------------- */

/* ============================================================================
   v4.2 (2026-08-25): РЕГРЕСС-ФИКС кнопок «к низу карточки» в безценовом
   режиме 778 — найден кросс-страничной верификацией превью (24 проверки:
   19 страниц с 778 desktop + 5 mobile). См. комментарий у
   .t778__content:has(...) — мёртвый `~`-селектор заменён на рабочий.
   v4.3 (2026-08-25): stretched-link — карточка 778 кликабельна целиком
   и ведёт на цель кнопки «ПОДРОБНЕЕ» (страницу собрания/программы),
   а не на /acquire/, как родные ссылки обложки/заголовка. Кнопка
   «КУПИТЬ» остаётся поверх. Плюс: гарантированный минимальный отступ
   12px перед кластером «цена+кнопки» на самых высоких карточках ряда.
   v4.3.4 (2026-08-25, фидбек-раунд 2): обе кнопки 778 полной ширины и
   одинаковые (откат fit-content пилли; двойной инсет 32px от
   btn-wrapper Тильды погашен); hero-primary /meditation — инсет
   подписи выровнен с ghost (width:auto + padding 0 40px); FAQ 849 —
   откат к нативному виду (оставлен только focus-ring).
   v4.3.5 (2026-08-26, фидбек-раунд 3): кнопки zero-блоков (hero ×2,
   «перейти в галерею») — lowercase (капс не по ДС, не влезал в строку);
   карточки галереи 121 — кнопка full-width + lowercase, заголовок
   без капса (см. секцию v4.3.5 ниже).
   ============================================================================ */

/* ============================================================================
   ----------------------------------------------------------------------------
   Все правила скоуплены по #rec — цепочка почти нулевая. Исключение
   (осознанное): 121-слайдеры rec1165934776 / rec1238111231 живут ещё и
   на главной странице — там выключенное центрирование заголовков карточек
   тоже уместно (тот же компонент «Галерея медитаций»).
   ============================================================================ */

/* --- П1. Hero-кнопки (zero-блок rec1282701161). Дискриминация по href:
      кнопка на якорь (#sobraniye_meditatsiy) = primary pill, кнопка на
      страницу (/neuromeditation) = ghost-кольцо. !important против
      #rec-специфичных правил zero-блока. --- */
#rec1282701161 a.tn-atom[href^="#"] {
    border-radius: var(--resoma-radius-btn) !important;
    font-weight: 500 !important;
    box-shadow: var(--resoma-shadow-btn);
    transition: background-color 0.2s ease-in-out;
    /* v4.3.4 (фидбек): primary выглядела «без паддингов» — её подпись
       длиннее, а коробка атома фиксирована (298px, инсет текста 29px
       против 40px у ghost). Выравниваем оптический инсет: коробка
       сжимается по контенту (width:auto перекрывает инлайн-ширину
       .tn-atom), паддинги 40px как у ghost. Работает на всех
       брейкпоинтах zero-блока. */
    width: auto !important;
    padding: 0 40px !important;
    box-sizing: border-box;
}
#rec1282701161 a.tn-atom[href^="#"]:hover {
    background-color: var(--resoma-primary-hover) !important;
}
#rec1282701161 a.tn-atom:not([href^="#"]) {
    border-radius: var(--resoma-radius-btn) !important;
    font-weight: 500 !important;
    border: 1px solid var(--resoma-primary) !important;
    background-color: var(--resoma-white) !important;
    color: var(--resoma-fg) !important;
    box-shadow: none !important;
    transition: background-color 0.2s ease-in-out;
}
#rec1282701161 a.tn-atom:not([href^="#"]):hover {
    background-color: var(--resoma-secondary) !important;
}

/* --- П3. «перейти в галерею» (zero-блок rec1286265731): единственная
      ссылка блока → primary pill. --- */
#rec1286265731 a.tn-atom {
    border-radius: var(--resoma-radius-btn) !important;
    font-weight: 500 !important;
    box-shadow: var(--resoma-shadow-btn);
    transition: background-color 0.2s ease-in-out;
}
#rec1286265731 a.tn-atom:hover {
    background-color: var(--resoma-primary-hover) !important;
}

/* --- П4. Карточки слайдеров «Галерея медитаций» (t923 внутри
      121-блоков): выключаем центрирование заголовков/описаний и CAPS-
      типографику Тильды (#rec-правило .t-card__title{text-transform:
      uppercase}) — показываем регистр как набрано. В ДС центрированных
      карточек нет; ср. v4.3.5 №2. --- */
#rec1165934776 .t-card__title,
#rec1238111231 .t-card__title {
    text-align: left !important;
    text-transform: none !important;
}
#rec1165934776 .t-card__descr,
#rec1238111231 .t-card__descr {
    text-align: left !important;
}

/* ============================================================================
   v4.3.5 (2026-08-26, фидбек-раунд 3): два замечания по /meditation.
   ----------------------------------------------------------------------------
   №1. Кнопки zero-блоков (hero ×2 + «перейти в галерею») выглядят не по ДС:
   контент hero набран КАПСОМ, типографика Тильды применяет
   text-transform:uppercase ко всем трём («ПЕРЕЙТИ В ГАЛЕРЕЮ» рендерится
   капсом, хотя набран строчными). В ДС приложения кнопки без капса →
   text-transform:lowercase даёт «собрания медитаций», «галерея медитаций»,
   «перейти в галерею»; заодно текст гарантированно влезает в одну строку
   (КАПС 218px не влезал в 180px текст-области на брейкпоинте 960px).
   Специфичность выше тильдовской (id + 1 класс), !important обязателен.
   №2. Карточки галереи (те же 121-блоки, живут и на главной — синк-копия):
   кнопка занимала 37% ширины карточки (inline-flex по контенту) —
   растягиваем full-width, как в 778/774; контент кнопок КАПСОМ
   («СЛУШАТЬ МЕДИТАЦИИ») → lowercase; заголовок — как набрано (П4).
   Hover-ловушка Тильды (background:#3e0b23!important на :hover) перебита
   специфичностью id+5 с DS primary-hover.
   ЗАМЕТКА: v4.3.6 — sentence case («Собрания медитаций», «Слушать
   медитации») реализован САМ В CSS (lowercase + ::first-letter:uppercase),
   правка контента в Тильде больше не нужна и эти правила трогать не надо.
   ============================================================================ */

/* №1 — регистр кнопок zero-блоков (hero primary+ghost, «перейти в галерею»).
   Покрывает и П1, и П3 выше; каскад: эти правила не задают transform. */
#rec1282701161 a.tn-atom,
#rec1286265731 a.tn-atom {
    text-transform: lowercase !important;
    letter-spacing: normal !important;
}

/* v4.3.6 — sentence case: первая буква кнопки заглавная. ::first-letter
   работает ТОЛЬКО на block-контейнерах: у zero-блоков анкор — flex
   (псевдо на нём не генерируется, видно по innerText-проверке
   2026-08-26), поэтому правило висит на внутреннем спане
   .tn-atom__button-text (display:block). Тексты в скоупе начинаются
   с буквы — проверено по audit-инвентарю. */
#rec1282701161 .tn-atom__button-text::first-letter,
#rec1286265731 .tn-atom__button-text::first-letter {
    text-transform: uppercase !important;
}

/* v4.3.6 — фокус-кольцо для zero-блочных анкоров: глобальное правило v3
   матчит .t-btnflex и не покрывает голые a.tn-atom. Артборды hero/CTA
   светлые (#e9e5e4), кольцо primary с оффсетом 2px видно на обеих
   вариациях (primary pill и ghost). */
#rec1282701161 a.tn-atom:focus-visible,
#rec1286265731 a.tn-atom:focus-visible {
    outline: 2px solid var(--resoma-primary) !important;
    outline-offset: 2px !important;
}

/* №2 — кнопка карточки галереи: full-width pill как в 778. Специфичность
   (id + 3 класса) перебивает базовое #rec-правило Тильды (id + 2) даже
   при !important у обеих сторон.
   v4.3.7a: селектор ослаблен — .t-card__btn больше НЕ требуется: слайдер
   Тильды (t-slds) в момент инициализации клонирует карточки, и клоны
   могут временно нести .t-btnflex без .t-card__btn; на такой кнопке
   ::first-letter (спан-правило ниже) применялся, а lowercase — нет →
   смешанный регистр «Купить КНИГУ» (замечено дизайн-ревью на полном
   скриншоте). Теперь оба правила матчатся одинаково. */
#rec1165934776 .t-card__btn-wrapper .t-btnflex,
#rec1238111231 .t-card__btn-wrapper .t-btnflex {
    display: flex !important;
    justify-content: center;
    align-items: center;
    width: 100% !important;
    margin: 0 !important;
    box-sizing: border-box;
    min-height: 44px;
    padding: 10px 16px !important;
    font-size: 16px !important;
    font-weight: 500 !important;
    letter-spacing: normal !important;
    text-transform: lowercase !important;
    border-radius: var(--resoma-radius-btn) !important;
}

/* Hover/focus: перебиваем #3e0b23!important Тильды специфичностью id+5
   (v4.3.7a: селектор синхронизирован с базовым правилом — без
   .t-card__btn, см. комментарий выше). */
#rec1165934776 .t-card__btn-wrapper .t-btnflex:not(.t-animate_no-hover):hover,
#rec1238111231 .t-card__btn-wrapper .t-btnflex:not(.t-animate_no-hover):hover,
#rec1165934776 .t-card__btn-wrapper .t-btnflex:focus-visible,
#rec1238111231 .t-card__btn-wrapper .t-btnflex:focus-visible {
    background-color: var(--resoma-primary-hover) !important;
}

/* v4.3.6 — sentence case для галерейных кнопок: сама кнопка flex
   (::first-letter на flex-контейнере не генерируется), поэтому
   блочифицируем спан .t-btnflex__text и поднимаем первую букву на нём.
   Текст — прямой ребёнок спана (проверено по живому HTML 2026-08-26:
   «СЛУШАТЬ МЕДИТАЦИИ», «КУПИТЬ КНИГУ», «КУПИТЬ»). Дублирующий селектор
   на самой кнопке (.t-btnflex.t-card__btn::first-letter) страхует случай
   «текст — прямой ребёнок кнопки». v4.3.7a: селекторы синхронизированы
   с базовым правилом — .t-card__btn не требуется (гонка t-slds-клонов,
   см. комментарий в базовом правиле). */
#rec1165934776 .t-card__btn-wrapper .t-btnflex .t-btnflex__text,
#rec1238111231 .t-card__btn-wrapper .t-btnflex .t-btnflex__text {
    display: inline-block;
}
#rec1165934776 .t-card__btn-wrapper .t-btnflex .t-btnflex__text::first-letter,
#rec1238111231 .t-card__btn-wrapper .t-btnflex .t-btnflex__text::first-letter,
#rec1165934776 .t-card__btn-wrapper .t-btnflex::first-letter,
#rec1238111231 .t-card__btn-wrapper .t-btnflex::first-letter {
    text-transform: uppercase !important;
}

/* --- П5+П7. Колонки 1033 («Безопасно, эффективно и легко»,
      «Управление и контроль эмоций»): заголовки колонок имеют разную
      строчность — разделитель и текст «прыгают». Резервируем высоту
      заголовка по максимуму строк в блоке и прибиваем текст к низу
      (justify-content:flex-end) — разделители выравниваются в пределах
      ряда. В flex <br> схлопывается, поэтому ручные <br>-хаки Екатерины
      («Действует исцеляюще» и др.) нейтрализуются автоматически.
      em-значения масштабируются с кеглем на брейкпоинтах. --- */
@media (min-width: 960px) {
    #rec1286393601 .t1033__title,
    #rec1286624731 .t1033__title {
        display: flex;
        flex-direction: column;
        justify-content: flex-end;
    }
    /* блок «Безопасно…»: максимум 2 строки заголовка */
    #rec1286393601 .t1033__title {
        min-height: 3.2em;
    }
    /* блок «Управление и контроль эмоций»: до 3 строк */
    #rec1286624731 .t1033__title {
        min-height: 4.6em;
    }
}

/* --- П6. FAQ «Образование» (аккордеон 849, rec1217059636):
      ОТКАТ к нативному виду по фидбеку 2026-08-25 (v4.3.4) —
      рестайл «белая карточка + рамка» признали хуже нативного;
      старый вариант не критично выбивается из ДС. Оставлен только
      focus-ring триггера (a11y, виден исключительно с клавиатуры,
      на покоящийся вид не влияет). --- */
#rec1217059636 .t849__trigger-button:focus-visible {
    outline: 2px solid var(--resoma-primary) !important;
    outline-offset: 2px !important;
}
/* ============================================================================
   v4.4 (2026-08-27): КАТАЛОГ ДЛЯ БЛОКА 1069 — включается автоматически
   ----------------------------------------------------------------------------
   Паттерн = зеркало канона 778, адаптированное под анатомию 1069
   (тарифные карточки «Стоимость»: заголовок → цена → состав → кнопка).
   Цепочка (аудит живого HTML 2026-08-27, 13 карточных блоков на 13
   страницах): son dzening cnigenie_vesa energiya_deneg woman_izobility
   mama_i_rebenok meditation_iscelenie (3-колоночные прайз-каталоги),
   lubov neproschenie prasila summertime (одиночные офферы),
   obo_mne (каталог собраний — названия в слоте цены), xorovod (билеты
   живого события, uptitle-бейджи). Остальные ~17 записей 1069 на сайте —
   «заголовочные» (пустой ряд, карточек нет) — селекторы их не задевают.
   Решения (согласованы с пользователем 2026-08-27):
   • секция каталога целиком под ДС (как 778/774 с v3): капс-заголовки
     Екатерины СОХРАНЯЮТСЯ (в ДС есть uppercase-заголовки), нормализуем
     вес/кегль/цвет; текст карточек — влево (нативно t-align_center);
   • порядок блоков НЕ меняем (заголовок → цена → состав): цена под
     заголовком — классика тарифных карточек; к низу прижимается только
     кнопка (margin-top:auto) — кнопки выравниваются по высокой карточке
     ряда (row Тильды уже flex, колонки тянутся по высоте);
   • цена — primary 28px/700 (герой тарифной карточки); перебивает
     rec-CSS Екатерины «24px #000 600» (ID-специфичность, у неё без
     !important) и блочные дефолты «42px/500 primary» (xorovod,
     summertime);
   • featured-карточка: rec-CSS Екатерины «рамка primary + беж #f1e6dc»
     идёт с ID+!important → классами не перебивается в принципе.
     Принято осознанно: её акцент = акцент ДС (A/B с пользователем).
   Особые случаи:
   • obo_mne: названия собраний лежат в СЛОТЕ ЦЕНЫ («Против тревоги») —
     рендерятся primary 28px как якорь карточки (показано пользователю);
   • mama_i_rebenok / lubov / neproschenie: цена в СЛОТЕ ЗАГОЛОВКА
     («2 999 р.») — CSS не различает по тексту, рендерится как
     заголовок (18/700/fg); флаг контентной правки на стороне Екатерины;
   • prasila: в одном div «7 800 руб<br>вместо 12.200 руб до 31.08» —
     rec-scoped ::first-line: первая строка 28px primary 700, вторая —
     muted 14px (ID+!important против её ID без important);
   • xorovod: инлайн-беж карточки на тёмной секции перебивается на белую
     (A/B с пользователем: белые против оставить беж); uptitle
     («8 мест»/«ЗАКРЫТО») — бейджем; «РАСКУПЛЕНО» по тексту не
     различить — остаются primary (список rec-ID не заводим, кнопки
     ведут в попапы);
   • одиночные офферы: центровка :only-child-колонки по уроку v4.3.8
     (content-box + t-prefix_* = padding-left:300px без border-box
     уводит карточку вправо; сброс + margin:auto + max-width:560px). */
/* --- Колонка: гасим глобальную карточную коробку v2 (.t-card__col) —
      поверхность карточки переезжает на .t1069__content (как в 778:
      wrapper, а не колонка). Колонка становится flex-столбцом, чтобы
      контент растянулся на всю высоту ряда. --- */
[data-record-type="1069"] .t-card__col {
    background: transparent;
    border-radius: 0;
    box-shadow: none;
    overflow: visible;
    display: flex !important; /* tilda-cards грузится после моста */
    flex-direction: column !important;
    align-items: stretch !important;
}

/* --- Featured-карточка: акцент Екатерины (беж #f1e6dc + рамка primary)
      объявляем в мосту ЯВНО — детерминированно на всех прайс-каталогах,
      не только где есть её rec-CSS. Важно: ПОСЛЕ базового правила
      content (его border:0-шортхенд сбрасывает border-style:none и гасит
      рамку featured — specificity длинного правила выше, порядок позже).
      Её rec-CSS с теми же значениями остаётся совместимым. --- */
[data-record-type="1069"] .t1069__featured .t1069__content {
    border: 1px solid var(--resoma-primary) !important;
    background-color: #f1e6dc !important;
}

/* --- Карточка: ghost #f8f3ed (беж светлее фона секций #f1e6db), radius 24
      (--resoma-radius-card), мягкая тень (= 778). !important против
      инлайн-стилей Екатерины
      (xorovod: беж + бордер) и её rec-CSS (radius:20 / 9, тень 0 10 20
      rgba(0,0,0,.25) — ID-специфичность). Featured = белая + кольцо
      (ниже пер-страничными правилами). --- */
[data-record-type="1069"] .t1069__content {
    background-color: var(--resoma-ghost) !important;
    border: 0 !important;
    border-radius: var(--resoma-radius-card) !important;
    box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.08) !important;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    flex: 1 1 auto;
    min-height: 0;
    padding: 24px !important;
    text-align: left !important; /* нативно t-align_center на колонке */
    box-sizing: border-box !important;
}

/* --- Заголовок: капс Екатерины сохраняется; нормализуем кегль/вес/цвет
      (рекорд-CSS «24px 700 primary» → fg 18/700, как заголовки 778). --- */
[data-record-type="1069"] .t-card__title {
    color: var(--resoma-fg) !important;
    font-size: 18px !important;
    font-weight: 700 !important;
    line-height: 1.35 !important;
    padding: 0 !important;
    margin: 0 0 10px !important;
    white-space: normal;
    overflow-wrap: break-word;
}

/* --- Цена: primary 28/700 — герой тарифной карточки (= цена коллекций
      в приложении). Перебивает rec-CSS «24px #000 600» (ID, без
      !important) и блочный дефолт «42px/500 primary». --- */
[data-record-type="1069"] .t1069__price {
    color: var(--resoma-primary) !important;
    font-size: 28px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    padding: 0 !important;
    margin: 0 0 12px !important;
    white-space: normal;
    overflow-wrap: break-word;
}
/* prasila: «7 800 руб<br>вместо 12.200 руб до 31.08» — первая строка
   ценой, вторая (старая цена + дедлайн) — приглушённой подписью.
   <br> гарантированно терминирует ::first-line (нет риска «длинная
   цена переносится и вторая строка мелкая»: перенос строки в контенте
   есть всегда). ID+!important против её ID-правила без important. */
#rec2326815391 .t1069__price {
    color: rgba(62, 11, 35, 0.85) !important;
    font-size: 14px !important;
    font-weight: 400 !important;
    line-height: 1.6 !important;
}
#rec2326815391 .t1069__price::first-line {
    color: var(--resoma-primary) !important;
    font-size: 28px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
}

/* --- Состав: muted 14/1.6 (= описание 778), без clamp — полный текст
      состава входит в смысл тарифной карточки (в 778 clamp оправдан
      каталогом со ссылкой «подробнее», здесь ссылки нет). --- */
[data-record-type="1069"] .t-card__descr {
    color: rgba(62, 11, 35, 0.85) !important;
    font-size: 14px !important;
    line-height: 1.6 !important;
    margin: 0 0 16px !important;
}

/* --- Uptitle (xorovod: «8 мест»/«ЗАКРЫТО») — бейдж. --- */
[data-record-type="1069"] .t-card__uptitle {
    align-self: flex-start;
    display: inline-block !important; /* tilda-cards грузится после моста */
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.04em;
    line-height: 1.2 !important;
    color: var(--resoma-primary) !important;
    background: rgba(155, 54, 38, 0.08);
    padding: 4px 12px;
    border-radius: 999px;
    margin: 0 0 10px !important;
}

/* --- Кнопка: full-width primary pill. Цвет/фон НЕ трогаем — uc-vars
      Екатерины уже primary (#9b3626) + её hover (ID+!important) живёт
      своей жизнью; правим только геометрию/типографику (её padding
      «10px 30px»/«12.7px 30px», кегль 14 на xorovod). Sentence case —
      глобально с v4.3.7c. margin-top:auto прижимает к низу карточки. --- */
[data-record-type="1069"] .t1069__content .t-card__btn.t-btnflex {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    box-sizing: border-box;
    margin: 0 !important;
    margin-top: auto !important;
    padding: 12px 16px !important;
    min-height: 44px;
    font-size: 16px !important;
    font-weight: 500 !important;
    text-align: center;
    white-space: normal;
}

/* --- Featured-карточка: БЕЛАЯ + кольцо primary 2px + усиленная тень.
      Схема I1 «Призрачный» (пользователь, 2026-08-27): остальные карточки
      ряда — ghost #f8f3ed (чуть светлее фона секций #f1e6db = беж ДС
      --resoma-secondary; замер показал: заливка Екатерины #f1e6dc
      совпадала с фоном — её акцент был невидим), акцент — белый.
      Пер-страничные перебивки: её правило #recXXX .t1069__featured
      .t1069__content{...!important} (ID-специфичность) классами не
      перебить. Живые featured-колонки есть на 8 каталогах + prasila
      (одиночная); на summertime/xorovod её featured-правила мёртвые
      (в DOM нет .t1069__featured). --- */
[data-record-type="1069"]#rec2291915701 .t1069__featured .t1069__content, /* son */
[data-record-type="1069"]#rec2430966031 .t1069__featured .t1069__content, /* dzening */
[data-record-type="1069"]#rec2319195831 .t1069__featured .t1069__content, /* cnigenie_vesa */
[data-record-type="1069"]#rec2502854521 .t1069__featured .t1069__content, /* energiya_deneg */
[data-record-type="1069"]#rec2430851091 .t1069__featured .t1069__content, /* woman_izobility */
[data-record-type="1069"]#rec1426378061 .t1069__featured .t1069__content, /* mama_i_rebenok */
[data-record-type="1069"]#rec2319206561 .t1069__featured .t1069__content, /* meditation_iscelenie */
[data-record-type="1069"]#rec1251100681 .t1069__featured .t1069__content { /* obo_mne (#edd6b2!) */
    background-color: var(--resoma-white) !important;
    border: 2px solid var(--resoma-primary) !important;
    box-shadow: 0 12px 24px rgba(62, 11, 35, 0.14) !important;
}

/* --- Одиночные офферы: БЕЛАЯ карточка-герой, БЕЗ кольца (не с чем
      сравнивать в ряду; пользователь 2026-08-27). prasila — пер-странично
      (её featured-правило с !important перебьёт generic), lubov /
      neproschenie / summertime — generic :only-child (их featured-правил
      нет или мёртвые). --- */
[data-record-type="1069"] .t1069__row .t-col:only-child .t1069__content {
    background-color: var(--resoma-white) !important;
}
[data-record-type="1069"]#rec2326815391 .t1069__featured .t1069__content { /* prasila */
    background-color: var(--resoma-white) !important;
    border: 0 !important;
    box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.08) !important;
}

/* --- xorovod: ряд на ТЁМНОЙ секции (rgb(53,1,1)) — по решению
      пользователя карточки БЕЛЫЕ на тёмном (не ghost), беж туда не
      тащим. --- */
[data-record-type="1069"]#rec2401825091 .t1069__content {
    background-color: var(--resoma-white) !important;
}

/* --- Одиночный оффер: центровка :only-child-колонки (урок v4.3.8:
      t-prefix_* рендерится padding-left при content-box — карточка
      уезжает вправо; сброс + border-box + margin:auto). --- */
@media (min-width: 641px) {
    [data-record-type="1069"] .t1069__row .t-col:only-child {
        max-width: 560px !important;
        width: 100% !important;
        box-sizing: border-box !important;
        margin-left: auto !important;
        margin-right: auto !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
        float: none !important;
    }
}

/* ============================================================================ */
/* v4.5 (2026-08-27): карточные семейства 491 / 650 / 847 — «прочие карточки» */
/* ---------------------------------------------------------------------------- */
/* Корень всех замечаний ревью превью-стенда 2026-08-27: глобальное правило */
/* v2 «.t-card__col = белая коробка r24 + бордовая тень» красит ВСЕ карточные */
/* семейства Тильды, а не только каталоги 778/774/1069, у которых есть */
/* собственные секции. Аудит живого HTML (13 страниц превью + /cmi): */
/*   • 491 ×6 — «Об авторе» (mama_i_rebenok rec1426322121, meditation_ */
/*     iscelenie rec1426242861), «ЧТО БУДЕТ / ЧЕГО НЕ БУДЕТ НА ТРЕНИНГЕ» */
/*     (neproschenie rec1804719271/1805338071 — текст там БЕЛЫЙ на цветной */
/*     секции: белая коробка = белый на белом), «Екатерина также является» */
/*     + «Статьи и разборы» (obo_mne rec1251831296/1251138781). Прозрачные */
/*     по замыслу карточки (круглая иконка + текст на фоне секции) → коробку */
/*     v2 выключаем целиком, вёрстка возвращается к нативной Екатерины. */
/*   • 650 ×3 — карточки-статьи: son «Почему сон так важен?» (rec1416367081, */
/*     «Читать» ведёт в попапы), obo_mne «Научные публикации» (rec1251122151) */
/*     и «Индексы автора научных публикаций» (rec1251765436) → коробка к */
/*     канону (r12 + тень ДС вместо r24 + бордовой), типографика как в */
/*     1069/778. Нативный паддинг .t650__text (30/30/40) сохраняем — */
/*     переопределять не нужно. Карточки кликабельны (cursor:pointer, */
/*     растянутая ссылка) → лёгкий hover-подъём как affordance (v4.3.1). */
/*   • 847 ×2 на obo_mne («Книги и монографии», rec1251102241/1251102591) */
/*     и ×2 на /cmi (rec770487760/569560753 — «ЧИТАТЬ ПОЛНОСТЬЮ»; это же */
/*     очередь §5 хэндоффа «блок 847 сломан жжесточайше» — тот же корень). */
/*     Нативного паддинга нет вовсе (картинка/текст прилипают к коробке — */
/*     отсюда «сломаны») → паддинг 24 + канон. Книги некликабельны → без */
/*     hover-подъёма; кнопки cmi — full-width primary pill по канону 1069. */
/* НЕ трогаем: 147 (mama_i_rebenok/lubov/summertime) и 902 (xorovod) — */
/* замечаний нет; 923-галерея и 842-тренинги на остальных страницах — */
/* глобальную коробку v2 не меняем, чтобы не менять одобренный вид. */
/* Инвариант цвета (урок v1): мост не назначает цвет текста — белый текст */
/* 491 на neproschenie снова ляжет на её цветную секцию, как задумано. */

/* --- 491: прозрачные текстовые карточки — выключаем коробку v2. --- */
[data-record-type="491"] .t-card__col {
    background: transparent;
    border-radius: 0;
    box-shadow: none;
    overflow: visible;
}

/* --- 650: карточки-статьи. Коробка = канон; фон inner-col белым принуди- */
/*      тельно («Индексы» без инлайна, иначе сквозь колонку видно секцию). */
/*      Паддинг — нативный на .t650__text (не трогаем). --- */
[data-record-type="650"] .t-card__col {
    border-radius: var(--resoma-radius-card) !important;
    box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.08) !important;
    transition: box-shadow 0.2s ease, transform 0.2s ease;
}
[data-record-type="650"] .t-card__col:hover {
    box-shadow: 0 12px 24px 0 rgba(0, 0, 0, 0.12) !important;
    transform: translateY(-2px);
}
[data-record-type="650"] .t650__inner-col {
    background-color: var(--resoma-white) !important;
    text-align: left !important;
}
[data-record-type="650"] .t-card__title {
    font-size: 18px !important;
    font-weight: 700 !important;
    line-height: 1.35 !important;
    padding: 0 !important;
    margin: 0 0 8px !important;
    text-align: left !important;
}
[data-record-type="650"] .t-card__descr {
    color: rgba(62, 11, 35, 0.85) !important;
    font-size: 14px !important;
    line-height: 1.6 !important;
    margin: 0 0 12px !important;
    text-align: left !important;
}
/* «Читать» — текстовая кнопка-ссылка (t-btntext глобально primary): */
/* кегль/вес по ДС. */
/* v4.5.1 (ревью превью 2026-08-28): «Читать» — ДС primary pill вместо
   текстовой ссылки (глобальная .t-btntext primary-текст гасится !important).
   Это div.t-btntext (type=button, попап открывает JS Тильды) — только
   оформление, клик не меняется.
   v4.5.4: link-вариант Button приложения — редакционная текстовая ссылка
   primary, подчёркивание на hover (без коробки). */
[data-record-type="650"] .t-card__btn-text {
    display: inline-flex !important;
    align-items: center;
    gap: 6px;
    padding: 6px 0 !important;
    background-color: transparent !important;
    color: var(--resoma-primary) !important;
    font-size: 15px !important;
    font-weight: 500 !important;
    line-height: 1.4 !important;
    text-decoration: underline !important;
    text-decoration-color: transparent !important;
    text-underline-offset: 4px !important;
    transition: text-decoration-color 0.2s ease;
}
[data-record-type="650"] .t-card__btn-text:hover {
    background-color: transparent !important;
    color: var(--resoma-primary) !important;
    text-decoration-color: var(--resoma-primary) !important;
}

/* --- 847: горизонтальные карточки (картинка слева, текст справа). */
/*      Паддинг 24 обязателен (натива нет), коробка = канон. --- */
[data-record-type="847"] .t-card__col {
    border-radius: var(--resoma-radius-card) !important;
    box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.08) !important;
    background-color: var(--resoma-white) !important;
    box-sizing: border-box !important;
    padding: 24px !important;
    text-align: left !important;
    display: flex !important;
    align-items: stretch;
    overflow: hidden;
}
/* v4.5.1 (ревью превью 2026-08-28): картинка вплотную к краю карточки —
   колонка картинки выходит на край отрицательными маргинами (−24 со
   стороны картинки), object-fit:cover, inline-зазор убран, карточка
   overflow:hidden — картинка срезается под радиус карточки (24px). */
[data-record-type="847"] .t-card__col > .t-col_4:first-child {
    margin: -24px 24px -24px -24px !important;
    align-self: stretch;
    min-width: 0;
    flex-shrink: 0;
}
[data-record-type="847"] .t-card__col > .t-col_4:last-child {
    margin: -24px -24px -24px 24px !important;
    align-self: stretch;
    min-width: 0;
    flex-shrink: 0;
}
[data-record-type="847"] .t-card__col > .t-col_4 img {
    display: block !important;
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
}
/* v4.5.2 (ревью превью 2026-08-28): контент текстовой колонки — от самого
   верха, кнопка — к самому низу карточки. Тильда центрирует .t847__box
   вертикально (valign_middle: зазор ~44px над заголовком и под кнопкой);
   колонка становится flex-столбцом от верха, коробка растягивается
   (flex:1, вертикальные маргины коробки гасим — горизонтонтальные
   нативные не трогаем), кнопка прижимается margin-top:auto. Минимальный
   зазор над кнопкой — margin-bottom описания (16px). */
[data-record-type="847"] .t-card__col > .t-col:not(.t-col_4) {
    display: flex !important;
    flex-direction: column;
    justify-content: flex-start;
    align-self: stretch !important;
    /* v4.5.3: контейнер текста и кнопки — во всю оставшуюся ширину
       карточки (тильдовская сетка фиксировала ~58%, t-col_7) */
    flex: 1 1 auto !important;
    width: auto !important;
    max-width: 100% !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    /* Tilda JS выставляет инлайн margin-top (валовка valign_middle,
       ~44px) — гасим: колонка растягивается на всю высоту карточки */
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}
[data-record-type="847"] .t-card__col .t847__box {
    display: flex !important;
    flex-direction: column;
    flex: 1 1 auto;
    margin: 0 !important;
}
[data-record-type="847"] .t-card__title {
    color: var(--resoma-fg) !important;
    font-size: 18px !important;
    font-weight: 700 !important;
    line-height: 1.35 !important;
    text-align: left !important;
}
[data-record-type="847"] .t-card__descr {
    color: rgba(62, 11, 35, 0.85) !important;
    font-size: 14px !important;
    line-height: 1.6 !important;
    text-align: left !important;
    margin: 0 0 16px !important;
}
/* Кнопки 847 (cmi «ЧИТАТЬ»/«ЧИТАТЬ ПОЛНОСТЬЮ»): это голые .t-btnflex БЕЗ
   класса .t-card__btn (в отличие от 778/1069) — селектор шире, .t-card__btn
   вариант покрывается этим же правилом. Full-width pill (геометрия —
   канон 1069);
   v4.5.4: заливка — outline-strong (адаптация outline-варианта Button
   приложения под белую карточку): прозрачная, рамка 1px primary, текст
   primary, hover — тинт primary 8%. Спокойный secondary, не спорит с
   primary-CTA страницы. */
[data-record-type="847"] .t-card__col .t-btnflex {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    box-sizing: border-box;
    margin: 0 !important;
    margin-top: auto !important;
    padding: 12px 16px !important;
    min-height: 44px;
    font-size: 16px !important;
    font-weight: 500 !important;
    text-align: center;
    white-space: normal;
    background-color: transparent !important;
    color: var(--resoma-primary) !important;
    border: 1px solid var(--resoma-primary) !important;
    box-shadow: none !important;
    /* uc-vars Тильды на уровне элемента: её hover-правило (ID-специфичность
       с !important) читает переменную — подставляем наши значения */
    --uc-button-bgcolor: transparent;
    --uc-button-hoverbgcolor: rgba(155, 54, 38, 0.08);
}
[data-record-type="847"] .t-card__col .t-btnflex:hover {
    background-color: rgba(155, 54, 38, 0.08) !important;
    color: var(--resoma-primary) !important;
}

/* v4.5.3b: hover Тильды на этих кнопках — «#rec… .t-btnflex.t-btnflex_type_
   button:not(.t-animate_no-hover):hover» с !important и СУФФИКСНЫМИ
   uc-vars (var не определён — работает её fallback #3e0b23, тёмный).
   Классами не перебить (ID-специфичность) — перебиваем явным списком
   847-рек с более высокой специфичностью (1,5,0) > (1,4,0). НОВЫЙ 847-блок
   без записи здесь получит её тёмный hover (ловушка задокументирована
   в хэндоффе). cmi: rec770487760, rec569560753; obo_mne книги:
   rec1251102241, rec1251102591. */
/* v4.5.4b: у её кнопок и БОРДЕР убит тем же способом — per-record правило
   заканчивается на «border-style: none !important; box-shadow: none
   !important» (ID-специфичность 1,2,0). Перебиваем тем же списком rec-ID
   (1,5,0) > (1,2,0): возвращаем рамку 1px primary. */
#rec770487760 .t-card__col .t-btnflex.t-btnflex_type_button,
#rec569560753 .t-card__col .t-btnflex.t-btnflex_type_button,
#rec1251102241 .t-card__col .t-btnflex.t-btnflex_type_button,
#rec1251102591 .t-card__col .t-btnflex.t-btnflex_type_button {
    border-style: solid !important;
    border-width: 1px !important;
    border-color: var(--resoma-primary) !important;
}
#rec770487760 .t-card__col .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):hover,
#rec569560753 .t-card__col .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):hover,
#rec1251102241 .t-card__col .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):hover,
#rec1251102591 .t-card__col .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):hover {
    background-color: rgba(155, 54, 38, 0.08) !important;
    color: var(--resoma-primary) !important;
}

/* ============================================================================
   v4.5.5 (2026-08-27): «ЦИКЛ» (блок 829, только /veb) — карточки
   фиксированной высоты вместо Tilda-masonry
   ----------------------------------------------------------------------------
   Проблема: 829 — masonry-галерея, Тильда позиционирует карточки JS-ом
   (инлайновые top/left на карточках, инлайновые width/height на
   контейнере). Кропы картинок 700×350 / 700×700 / 700×1050 → картинки
   180/360/540px, описания 18–27 строк (427–636px) → карточки одной
   секции 780–1374px. Фидбек заказчика: «выглядят плохо, все разной
   высоты». Решение — карточка-близнец семейства 774 с той же страницы
   (там анатомия уже согласована): CSS-only, контент в Тильде не трогаем.
   ============================================================================ */

/* --- 1. Сетка вместо masonry. JS Тильды продолжает писать инлайновые
      top/left/width — их гасит !important (CSS !important сильнее
      инлайна). Перезапуск позиционирования при ресайзе безопасен:
      пишет в style, а решает CSS. --- */
[data-record-type="829"] .t829__grid {
    position: static !important;
    width: auto !important;
    height: auto !important;
    display: grid !important;
    grid-template-columns: repeat(3, 1fr);
    /* 39px = нативный шаг колонок Тильды на /veb (3×360 + 2×39 = 1158) */
    column-gap: 39px;
    row-gap: 40px;
    /* все ряды одной высоты — карточки равны и между рядами */
    grid-auto-rows: 1fr;
}
/* --- Радиус 24px: глобальное правило .t-card__col выше даёт токен, но
      его бьёт rec-scoped #rec… {border-radius:10px} Тильды
      (ID-специфичность) — дублируем с !important, как в 774/778. --- */
[data-record-type="829"] .t829__grid-item {
    position: static !important;
    width: auto !important;
    left: auto !important;
    top: auto !important;
    margin: 0 !important;
    border-radius: var(--resoma-radius-card) !important;
    display: flex;
    flex-direction: column;
    align-items: stretch;
}
@media (max-width: 960px) {
    /* планшет: 2 колонки — как карточки 774 на той же странице */
    [data-record-type="829"] .t829__grid {
        grid-template-columns: repeat(2, 1fr);
    }
}
@media (max-width: 640px) {
    [data-record-type="829"] .t829__grid {
        grid-template-columns: 1fr;
    }
}

/* --- 1b. Служебные sizer'ы masonry-движка Тильды (grid-sizer задаёт
      инлайновую ширину колонки, gutter-sizer — ширину гуттера) не должны
      участвовать в нашей сетке: без этого они крадут первые треки. --- */
[data-record-type="829"] .t829__grid > .t829__grid-sizer,
[data-record-type="829"] .t829__grid > .t829__gutter-sizer {
    display: none !important;
}

/* --- 2. Картинка: фиксированная рамка 16:9 (padding-top-хак — старее
      и надёжнее aspect-ratio), кроп cover — как обложки 774. --- */
[data-record-type="829"] .t829__imgwrapper {
    position: relative;
    padding-top: 56.25%;
    overflow: hidden;
}
[data-record-type="829"] .t829__img {
    position: absolute !important;
    top: 0;
    left: 0;
    width: 100% !important;
    height: 100% !important;
    object-fit: cover;
}

/* --- 3. Карточка: flex-колонка — кнопка прижата к низу. --- */
[data-record-type="829"] .t829__content-wrapper {
    display: flex;
    flex-direction: column;
    height: 100%;
}
[data-record-type="829"] .t829__content {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}
[data-record-type="829"] .t829__textwrapper {
    display: flex;
    flex-direction: column;
    gap: 6px;
    flex: 1 1 auto;
}

/* --- 4. Текст: порядок и типографика как у 774 (title → descr → цена
      к низу). !important против rec-scoped #rec… .t-card__title
      {color:#9b3626; text-transform:uppercase; font-weight:600}
      (ID-специфичность). --- */
[data-record-type="829"] .t-card__title {
    order: 1;
    color: var(--resoma-fg) !important;
    text-transform: none !important;
    font-size: 18px !important;
    font-weight: 700 !important;
    line-height: 1.35 !important;
    /* 2 строки; резерв строк не нужен: равенство карточек держит
       grid-auto-rows: 1fr, слабина уходит над ценой */
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Хвостовые <br><br> в заголовках Тильды («Тёмная ночь души» и др.)
   рисуют пустую строку после короткого заголовка — гасим переносы
   в заголовках 829 (описания свои <br> сохраняют: там это абзацы). */
[data-record-type="829"] .t-card__title br {
    display: none;
}
[data-record-type="829"] .t-card__descr {
    order: 2;
    color: rgba(62, 11, 35, 0.85) !important;
    font-size: 14px !important;
    line-height: 1.6 !important;
    /* 4 строки */
    display: -webkit-box;
    -webkit-line-clamp: 4;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
/* Цена (uptitle Тильды) — отдельный ряд над кнопкой, к низу текста */
[data-record-type="829"] .t-card__uptitle {
    order: 3;
    margin-top: auto;
    color: var(--resoma-primary) !important;
    text-transform: none !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-height: 20px;
}

/* --- 5. Кнопка: full-width, прижата к низу карточки (паттерн 774/778).
      Стиль самой кнопки — глобальные правила .t-card__btn выше. --- */
[data-record-type="829"] .t-card__btn-wrapper {
    display: flex;
    flex-direction: column;
    align-items: stretch;
}

/* ============================================================================
   v4.7 (2026-08-31): ГЛАВНАЯ — «Актуальные события» (блок 1072, #rec1165925881)
   ----------------------------------------------------------------------------
   НОВЫЙ ВИД КАРТОЧКИ по решению заказчика (вариант «A + featured-кольцо»,
   согласован по монтажу 2026-08-31: tilda1072a-1440.png / tilda1072a-390.png).
   Анатомия блока: у карточки ДВА «заголовка», и они лежат в неожиданных полях
   Тильды — маркетинговый («ТОТ САМЫЙ ТРЕНИНГ!» и т.п.) в поле заголовка
   (.t-card__title), название программы («С МЕНЯ ХВАТИТ! ТРИ ДНЯ
   ОСВОБОЖДЕНИЯ ОТ СТЫДА») — в ПОЛЕ ЦЕНЫ (.t1072__price). Дизайн использует
   это как есть, чистым CSS (контент Екатерины не тронут):
   • title-поле  → eyebrow («надзаголовок») по паттерну ДС приложения
     (константа EYEBROW в acquire-флоу/поддержке: text-xs uppercase
     tracking-wide font-semibold text-foreground/50). На белой карточке
     50% fg не проходит AA → 65% (проверено vision-ревью 2026-08-31);
     letter-spacing 0.05em — как в согласованном монтаже.
   • price-поле  → заголовок карточки 18/700 fg (паттерн 774/829),
     clamp 3 строки (внутри <br> — кламп режет чисто, урок v4.5.5);
   • описание    → 14/1.6 приглушённый, КЛАМП 5 строк с многоточием
     (НЕ max-height: межабзацные <p>-отступы ломают кратность line-height
     и глифы режутся посередине строки — ловушка, поймана vision-ревью;
     лечение: <p> схлопываются в единый поток display:inline).
     Карточка-тизер: полный текст живёт на страницах программ;
   • кнопка      → full-width pill 44px, sentence case — паттерн 923/1196
     (v4.3.7a: селектор без .t-card__btn — гонка t-slds-клонов), к низу
     карточки margin-top:auto через footer-flex;
   • featured (карточки 1–2 помечены нативно): кольцо 2px primary —
     схема I1 из 1069; фон принудительно белый (натив featured красит
     беж, как в 1069 — гасим превентивно).
   КОНТРАКТ КОНТЕНТА: в этих карточках поле цены = НАЗВАНИЕ ПРОГРАММЫ.
   Если Екатерина положит в поле цены настоящую цену («12 000 ₽»), она
   отрендерится заголовком 18/700 — видимой цены у карточки не будет;
   вынесение цен = согласованный редизайн карточки, CSS сам не лечит.
   СКОУП: только #rec1165925881 — 1072 на сайте существует ТОЛЬКО на
   главной (скан 49 снапшотов стенда + живая главная 2026-08-31), правила
   рек-ID-ные, /veb и другие блоки не задеты. ЛОВУШКА СОПРОВОЖДЕНИЯ:
   новый 1072-блок Екатерины на другой странице НЕ подхватится — добавить
   его rec-ID во все селекторы этой секции (модель 847, §3a).
   ============================================================================ */

/* --- Каркас: белая карточка r24, левое выравнивание, flex-колонка --- */
#rec1165925881 .t1072__content {
    border: none !important;
    border-radius: var(--resoma-radius-card) !important;
    box-shadow: var(--resoma-shadow-card) !important;
    display: flex !important;
    flex-direction: column !important;
    overflow: hidden;
    text-align: left !important;
}
#rec1165925881 .t1072__header,
#rec1165925881 .t1072__footer {
    background: var(--resoma-white) !important;
    box-shadow: none !important;
    text-align: left !important;
}
#rec1165925881 .t1072__header { padding: 24px 24px 0 24px !important; }
#rec1165925881 .t1072__footer {
    padding: 16px 24px 24px 24px !important;
    display: flex !important;
    flex-direction: column !important;
    flex: 1 1 auto !important;
}

#rec1165925881 .t1072__price__wrapper { margin: 8px 0 12px 0 !important; }
/* v4.7.1 ANTI-STRIP: на живой странице заголовок-название коллапсировал в
   полосу 3–4px (визион-ревью + пиксельный скан) при зелёных CSSOM-проверках.
   Класс причины: -webkit-box-стек клампа БЕЗ !important уязвим к каскадным
   ничьям с нативными актёрами Тильды (пер-record CSS в body идёт позже
   head-линка; ранtime-клоны) — урок v4.5.5 «orient потерян → полоса».
   Лечение: заголовок больше НЕ -webkit-box — display:block + px line-height
   + px max-height, всё !important: полоса невозможна математически
   (72px = ровно 3 строки по 24px; внутри только текст и <br>, без <p>-маргинов —
   рез по границе строк чистый; эллипсис у НАЗВАНИЯ программы не ставим:
   имена сейчас влезают в 3 строки, а обрезанное имя с «…» вводит в
   заблуждение не меньше, чем без него — полное имя живёт на странице программы). */
#rec1165925881 .t1072__price {
    color: var(--resoma-fg) !important;
    font-size: 18px !important;
    font-weight: 700 !important;
    line-height: 24px !important;
    letter-spacing: normal !important;
    text-transform: none !important;
    text-align: left !important;
    display: block !important;
    overflow: hidden !important;
    max-height: 72px !important;
    min-height: 48px !important;  /* v4.7.2: нижний предел — даже хостайл не сожмёт в полосу */
}

#rec1165925881 .t-card__descr {
    color: rgba(62, 11, 35, 0.75) !important;  /* v4.7.2: 4.36:1 → ≥4.5:1 AA (визион-р.) */
    font-size: 14px !important;
    font-weight: 400 !important;
    line-height: 22px !important;   /* v4.7.1: px-строка + px-потолок — см. ANTI-STRIP выше */
    text-align: left !important;
    display: -webkit-box !important;
    -webkit-line-clamp: 5 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
    max-height: 110px !important;
}

#rec1165925881 .t-card__descr p { display: inline; }
#rec1165925881 .t-card__descr p::after { content: " "; }

#rec1165925881 .t-btnflex {
    display: flex !important;
    justify-content: center;
    align-items: center;
    width: 100% !important;
    margin: 20px 0 0 0 !important;
    box-sizing: border-box;
    min-height: 44px;
    padding: 10px 16px !important;
    font-size: 16px !important;
    color: var(--resoma-white) !important;
    font-weight: 500 !important;
    letter-spacing: normal !important;
    text-transform: lowercase !important;
    border-radius: var(--resoma-radius-btn) !important;
}
/* sentence case (паттерн 923/1196): ::first-letter на flex-контейнере не
   генерится — блочифицируем спан .t-btnflex__text и поднимаем букву на нём;
   селектор самой кнопки — страховка на случай кнопки без спана */
#rec1165925881 .t-btnflex .t-btnflex__text { display: inline-block; }
#rec1165925881 .t-btnflex .t-btnflex__text::first-letter,
#rec1165925881 .t-btnflex::first-letter { text-transform: uppercase !important; }
#rec1165925881 .t-btnflex:not(.t-animate_no-hover):hover,
#rec1165925881 .t-btnflex:focus-visible {
    background-color: var(--resoma-primary-hover) !important;
}

/* featured: кольцо 2px primary (схема I1 из 1069) + принудительно белый
   фон (натив featured красит беж, как в 1069 — гасим) */
#rec1165925881 .t1072__featured .t1072__content {
    box-shadow: var(--resoma-shadow-card), 0 0 0 2px var(--resoma-primary) !important;
    background-color: var(--resoma-white) !important;
}

/* --- Eyebrow (маркетинговый заголовок → надзаголовок по ДС) --- */
#rec1165925881 .t-card__title {
    border: none !important;
    text-align: left !important;
    text-transform: uppercase !important;
    letter-spacing: 0.05em !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    line-height: 17px !important;   /* v4.7.1: px — единая геометрия при любых фолбэках */
    color: rgba(62, 11, 35, 0.75) !important;  /* v4.7.2: 3.63:1 → ≥4.5:1 AA (визион-р.) */
    min-height: 17px !important;  /* v4.7.2: полоса невозможна и здесь */
}



/* === v4.7.3: различимые доступные имена CTA «Получить доступ» (1072, визион-ревью) ===
   Три ссылки в карточках идентичны по видимому тексту. Контент Тильды не даёт aria-label,
   поэтому sr-only ::after с program-именем (контент псевдоэлемента входит в accname).
   Привязка по href (суффикс-селектор): смена/перестановка контента → имя тихо отпадает,
   ложных имён не бывает. Визуально ноль (clip-path inset(50%)). */
#rec1165925881 a.t-card__link::after {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
    text-transform: none;  /* v4.7.3: accname без lowercase-наследования от пилюли */
}
#rec1165925881 a.t-card__link[href$="/summertime"]::after { content: " — тренинг «С меня хватит! Три дня освобождения от стыда»"; }
#rec1165925881 a.t-card__link[href$="/prasila"]::after { content: " — программа «Прасила»"; }
#rec1165925881 a.t-card__link[href$="/lubov"]::after { content: " — тренинг «Отношения»"; }
