/* ============================================================================
   PAGES.CSS — стили специфичные для конкретных страниц/блоков
   ============================================================================ */

/* ---------- Главная: 2 маршрута аудитории ---------- */
.routes { display: grid; gap: var(--space-5); }
@media (min-width: 768px) { .routes { grid-template-columns: 1fr 1fr; } }
.route-card {
  position: relative;
  padding: var(--space-7);
  background: var(--c-bg-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius-xl);
  transition: all var(--t-base) var(--easing);
}
.route-card:hover { border-color: var(--c-primary); transform: translateY(-4px); box-shadow: var(--shadow-lg); }
.route-card__num {
  position: absolute; top: var(--space-5); right: var(--space-5);
  width: 48px; height: 48px;
  background: var(--c-bg-soft);
  border-radius: var(--radius-pill);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--ff-heading);
  font-weight: var(--fw-bold);
  font-size: 1.25rem;
  color: var(--c-primary-dark);
}
.route-card h3 { padding-right: 64px; }

/* ---------- Каталог программ ---------- */
.catalog-filters { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-bottom: var(--space-6); }
.catalog-tabs {
  display: flex; gap: var(--space-2);
  border-bottom: 2px solid var(--c-border);
  margin-bottom: var(--space-6);
  overflow-x: auto;
}
.catalog-tab {
  padding: var(--space-3) var(--space-4);
  font-weight: var(--fw-semibold);
  color: var(--c-text-soft);
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  white-space: nowrap;
}
.catalog-tab.is-active, .catalog-tab:hover { color: var(--c-text); border-bottom-color: var(--c-primary); }

/* ---------- Программа: модули ---------- */
.modules { display: flex; flex-direction: column; gap: var(--space-3); }
.module {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: var(--space-4);
  padding: var(--space-4) var(--space-5);
  background: var(--c-bg-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius-md);
  align-items: baseline;
}
.module__title { font-weight: var(--fw-semibold); }
.module__hours { font-size: 0.875rem; color: var(--c-text-mute); white-space: nowrap; }
.module-group__title {
  font-size: var(--fs-h4);
  font-weight: var(--fw-bold);
  margin-top: var(--space-6);
  margin-bottom: var(--space-3);
  padding-bottom: var(--space-2);
  border-bottom: 1px solid var(--c-border);
}

/* Преимущества (icons + text) */
.features { display: grid; gap: var(--space-5); grid-template-columns: 1fr; }
@media (min-width: 640px) { .features { grid-template-columns: 1fr 1fr; } }
@media (min-width: 960px) { .features { grid-template-columns: repeat(3, 1fr); } }
.feature {
  padding: var(--space-5);
  background: var(--c-bg-card);
  border-radius: var(--radius-lg);
  border: 1px solid var(--c-border);
}
.feature__icon {
  width: 56px; height: 56px;
  display: flex; align-items: center; justify-content: center;
  background: var(--c-primary);
  color: var(--c-cta);
  font-size: 1.5rem; font-weight: var(--fw-bold);
  border-radius: var(--radius-md);
  margin-bottom: var(--space-4);
}
.feature h4 { margin-bottom: var(--space-2); }
.feature p { margin: 0; color: var(--c-text-soft); font-size: 0.9375rem; }

/* Тарифная сетка (Старт / Про / Мастер) */
.tariffs { display: grid; gap: var(--space-5); grid-template-columns: 1fr; }
@media (min-width: 768px) { .tariffs { grid-template-columns: repeat(3, 1fr); } }
.tariff {
  padding: var(--space-6);
  background: var(--c-bg-card);
  border: 2px solid var(--c-border);
  border-radius: var(--radius-xl);
  display: flex; flex-direction: column; gap: var(--space-4);
  transition: all var(--t-base) var(--easing);
}
.tariff:hover { transform: translateY(-2px); }
.tariff--featured { border-color: var(--c-primary); position: relative; }
.tariff--featured::before {
  content: 'Популярный';
  position: absolute;
  top: -12px; left: 50%;
  transform: translateX(-50%);
  background: var(--c-primary);
  color: var(--c-cta);
  padding: 4px 14px;
  border-radius: var(--radius-pill);
  font-size: var(--fs-xsmall);
  font-weight: var(--fw-bold);
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.tariff__name { font-size: var(--fs-h3); font-weight: var(--fw-bold); margin: 0; }
.tariff__price { font-size: 2rem; font-weight: var(--fw-bold); color: var(--c-cta); margin: 0; }
.tariff__price-rassrochka { font-size: var(--fs-small); color: var(--c-text-mute); }
.tariff__features { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: var(--space-2); }
.tariff__features li { padding-left: 24px; position: relative; font-size: 0.9375rem; }
.tariff__features li::before {
  content: '✓';
  position: absolute; left: 0; top: 0;
  color: var(--c-success);
  font-weight: var(--fw-bold);
}

/* Карьерный блок (зарплата) — Тип 3 */
.career {
  display: grid; gap: var(--space-5);
  grid-template-columns: 1fr;
  padding: var(--space-7);
  background: linear-gradient(135deg, var(--c-cta) 0%, #2a2a2a 100%);
  color: var(--c-text-inverse);
  border-radius: var(--radius-xl);
}
@media (min-width: 768px) { .career { grid-template-columns: 1fr 1fr; align-items: center; } }
.career h3 { color: var(--c-text-inverse); margin: 0 0 var(--space-3); }
.career__stat-num { font-size: clamp(2.5rem, 6vw, 4rem); font-weight: var(--fw-bold); color: var(--c-primary); line-height: 1; margin: 0; }
.career__stat-label { color: #b7b7b7; margin: var(--space-2) 0 0; }

/* Доверие — лицензия, ФИС ФРДО */
.trust-grid { display: grid; gap: var(--space-5); grid-template-columns: 1fr; }
@media (min-width: 640px) { .trust-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 960px) { .trust-grid { grid-template-columns: repeat(4, 1fr); } }
.trust-item {
  padding: var(--space-5);
  background: var(--c-bg-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius-lg);
  text-align: center;
}
.trust-item__icon {
  width: 64px; height: 64px;
  margin: 0 auto var(--space-3);
  background: var(--c-primary);
  border-radius: var(--radius-pill);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.5rem;
  color: var(--c-text-inverse);  /* было red — 2.7:1 fail. Теперь white = 12.6:1 ✅ */
  font-weight: var(--fw-bold);
}
.trust-item h4 { font-size: 1rem; margin-bottom: var(--space-2); }
.trust-item p { font-size: 0.875rem; color: var(--c-text-soft); margin: 0; }

/* Кейс/отзыв */
.testimonials { display: grid; gap: var(--space-5); grid-template-columns: 1fr; }
@media (min-width: 768px) { .testimonials { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .testimonials { grid-template-columns: repeat(3, 1fr); } }
.testimonial {
  padding: var(--space-5);
  background: var(--c-bg-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius-lg);
}
.testimonial__quote { font-style: italic; margin: 0 0 var(--space-4); line-height: var(--lh-relax); }
.testimonial__author { display: flex; align-items: center; gap: var(--space-3); }
.testimonial__avatar { width: 48px; height: 48px; border-radius: var(--radius-pill); background: var(--c-bg-soft); display: flex; align-items: center; justify-content: center; font-weight: var(--fw-bold); color: var(--c-primary-dark); }
.testimonial__name { font-weight: var(--fw-semibold); margin: 0; }
.testimonial__program { font-size: var(--fs-small); color: var(--c-text-mute); margin: 0; }

/* Хлебные крошки */
.breadcrumbs { font-size: var(--fs-small); color: var(--c-text-mute); padding: var(--space-4) 0; }
.breadcrumbs a { color: var(--c-text-mute); }
.breadcrumbs a:hover { color: var(--c-text); }
.breadcrumbs > * + *::before { content: ' / '; margin: 0 var(--space-2); color: var(--c-text-mute); }

/* Чекмарк-список (для "что будете уметь") */
.checklist { list-style: none; padding: 0; display: grid; gap: var(--space-4); grid-template-columns: 1fr; }
@media (min-width: 700px) { .checklist { grid-template-columns: 1fr 1fr; } }
.checklist li {
  padding-left: 36px;
  position: relative;
  line-height: var(--lh-snug);
}
.checklist li::before {
  content: '';
  position: absolute; left: 0; top: 2px;
  width: 24px; height: 24px;
  background: var(--c-primary);
  border-radius: var(--radius-pill);
}
.checklist li::after {
  content: '✓';
  position: absolute; left: 0; top: 2px;
  width: 24px; height: 24px;
  display: flex; align-items: center; justify-content: center;
  color: #ffffff;                 /* v0.7.6 #7: было red на navy 2.69:1 → белый 12.6:1 */
  font-weight: var(--fw-bold);
  font-size: 0.8125rem; line-height: 1;  /* #8: тот же бокс что ::before + flex-центр → галочка по центру кружка */
}

/* Hero страницы препода */
.teacher-hero {
  display: grid; gap: var(--space-6);
  grid-template-columns: 1fr;
  padding: var(--section-py) 0;
  background: var(--c-bg-soft);
}
@media (min-width: 768px) { .teacher-hero { grid-template-columns: 240px 1fr; align-items: start; } }
/* Часть 6 (З9, Нина 01.11): ФИО тем же цветом, что заголовки разделов («Преподаваемые дисциплины»); жирность не меняем. */
.teacher-hero h1 { color: var(--c-primary); }
.teacher-hero__photo {
  width: 100%;
  aspect-ratio: 1/1;
  background: var(--c-bg-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius-lg);
  display: flex; align-items: center; justify-content: center;
  color: var(--c-text-mute); font-size: 0.875rem;
}
@media (min-width: 768px) { .teacher-hero__photo { width: 240px; } }
.teacher-hero__photo { overflow: hidden; }
.teacher-hero__photo img { width: 100%; height: 100%; object-fit: cover; object-position: center 20%; display: block; }

/* Фото в карточке преподавателя (сетка) */
.card-teacher__photo { overflow: hidden; }
.card-teacher__photo img { width: 100%; height: 100%; object-fit: cover; object-position: center top; display: block; }

/* ---- Карточка преподавателя: внутренняя перелинковка на программы ----
   Структура: <article.card-teacher> → <a.card-teacher__link> (фото+роль) + <div.card-teacher__programs> (ссылки).
   Причина: nested <a> внутри карточки-ссылки невалидны. Делим карточку
   на «обложка кликабельна» + «список программ — отдельные ссылки». */
.card-teacher__link {
  display: block;
  color: inherit;
  text-decoration: none;
  transition: color var(--t-base) var(--easing);
}
.card-teacher__link:hover .card-teacher__name { color: var(--c-primary); }
.card-teacher__link:focus-visible {
  outline: 2px solid var(--c-primary);
  outline-offset: -2px;
}

.card-teacher__programs {
  padding: var(--space-3) var(--space-4) var(--space-4);
  border-top: 1px solid var(--c-border-soft);
  text-align: left;
  font-size: 0.8125rem; /* 13px по брифу */
  line-height: 1.45;
}
.card-teacher__programs-label {
  display: block;
  font-size: 0.6875rem; /* 11px */
  color: var(--c-text-soft);              /* #444 на белом — 9.74:1 (AA) */
  font-weight: var(--fw-semibold);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-bottom: var(--space-1);
}
.card-teacher__programs a {
  display: block;
  color: var(--c-primary);                /* #003366 на белом — 12.6:1 (AAA) */
  text-decoration: underline;
  margin-top: 4px;
}
.card-teacher__programs a:hover { color: var(--c-cta); }

.regalia-list { list-style: none; padding: 0; display: flex; flex-direction: column; gap: var(--space-2); }
.regalia-list li {
  padding: var(--space-2) var(--space-4);
  background: var(--c-bg-card);
  border-left: 3px solid var(--c-primary);
  border-radius: var(--radius-sm);
  font-size: 0.9375rem;
}

/* Событие — Hero с большой датой */
.event-hero {
  padding: var(--section-py) 0;
  background: linear-gradient(135deg, #fffbf0 0%, #F3EFE9 100%);
}
.event-hero__date-big {
  display: inline-block;
  padding: var(--space-3) var(--space-5);
  background: var(--c-cta);
  color: var(--c-primary);
  border-radius: var(--radius-md);
  font-weight: var(--fw-bold);
  margin-bottom: var(--space-4);
}

/* Бесплатные тесты — карточки тестов */
.tests-grid { display: grid; gap: var(--space-5); grid-template-columns: 1fr; }
@media (min-width: 640px) { .tests-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 960px) { .tests-grid { grid-template-columns: repeat(3, 1fr); } }
.test-card {
  padding: var(--space-5);
  background: var(--c-bg-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius-lg);
  display: flex; flex-direction: column;
  gap: var(--space-3);
}
.test-card__badge { align-self: flex-start; }
.test-card__title { font-size: var(--fs-h4); font-weight: var(--fw-bold); margin: 0; }
.test-card__meta { display: flex; gap: var(--space-4); font-size: var(--fs-small); color: var(--c-text-mute); }
.test-card__cta { margin-top: auto; }

/* Бесплатные программы: «Что получите» — компактный чек-лист внутри test-card.
   Не используем общий .checklist (слишком большой gap/font под карточки). */
.test-card__benefits-label {
  font-size: var(--fs-small);
  font-weight: var(--fw-semibold);
  color: var(--c-text);
  margin: var(--space-1) 0 0;
  letter-spacing: 0.01em;
}
.test-card__benefits {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.test-card__benefits li {
  display: flex;
  align-items: flex-start;
  gap: var(--space-2);
  font-size: var(--fs-small);
  color: var(--c-text);
  line-height: 1.45;
}
.test-card__benefits li::before {
  content: '✓';
  color: var(--c-success);
  font-weight: var(--fw-bold);
  flex-shrink: 0;
  line-height: 1.45;
}

/* Бесплатные программы: inline lead-form (карточка-форма захвата контактов).
   Живёт внутри section--soft, образует белую карточку на грей-фоне. */
.lead-inline {
  max-width: 480px;
  margin: 0 auto;
  background: var(--c-bg-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius-lg);
  padding: var(--space-7);
}
@media (max-width: 639px) {
  .lead-inline { padding: var(--space-5); }
}
.lead-inline__head { margin-bottom: var(--space-5); text-align: center; }
.lead-inline__head .badge { margin-bottom: var(--space-3); }
.lead-inline__title {
  font-size: var(--fs-h3);
  font-weight: var(--fw-bold);
  color: var(--c-text);
  margin: 0 0 var(--space-3);
  line-height: 1.25;
}
.lead-inline__form .form-field { margin-bottom: var(--space-3); }
.lead-inline__req { color: var(--c-cta); font-weight: var(--fw-bold); margin-left: 2px; }
.lead-inline__optional { color: var(--c-text-mute); font-weight: var(--fw-regular); font-size: var(--fs-small); }
.lead-inline__consent {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  font-size: var(--fs-small);
  color: var(--c-text-soft);
  line-height: 1.45;
  margin: var(--space-2) 0 var(--space-5);
  cursor: pointer;
}
.lead-inline__consent input[type="checkbox"] {
  margin-top: 3px;
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  accent-color: var(--c-primary);
  cursor: pointer;
}
.lead-inline__consent a { color: var(--c-primary); text-decoration: underline; }
.lead-inline__consent a:hover { color: var(--c-primary-light); }
.lead-inline__note {
  font-size: var(--fs-xsmall);
  color: var(--c-text-mute);
  text-align: center;
  margin: var(--space-3) 0 0;
  line-height: 1.45;
}

/* Hero-фасет SEO (упрощённый) */
.facet-hero {
  padding: var(--section-py) 0;
  background: var(--c-bg-soft);
}

/* Раздел доверия в footer-стиле */
.legal-bar {
  display: flex; align-items: center; gap: var(--space-3); flex-wrap: wrap;
  padding: var(--space-4); border: 1px solid var(--c-border-soft); border-radius: var(--radius-md);
  background: var(--c-bg-soft);
  font-size: var(--fs-small);
  color: var(--c-text-soft);
}
.legal-bar strong { color: var(--c-text); font-weight: var(--fw-semibold); }

/* Dropdown menu */
.nav-list { list-style:none; display:flex; gap:24px; padding:0; margin:0; }
.nav-item { position:relative; }
.nav-item > a { padding:8px 0; display:block; color:#fff; font-weight:500; font-size:0.9375rem; }
.nav-item--has-dropdown > a::after { content:" \25BE"; font-size:0.7em; opacity:0.7; }
.nav-dropdown { list-style:none; position:absolute; top:100%; left:0; min-width:260px; background:#fff; border:1px solid var(--c-border); box-shadow:0 8px 24px rgba(0,0,0,0.12); padding:8px 0; margin:0; border-radius:8px; opacity:0; visibility:hidden; transform:translateY(8px); transition:all 200ms; z-index:200; }
.nav-item--has-dropdown:hover .nav-dropdown, .nav-item--has-dropdown:focus-within .nav-dropdown { opacity:1; visibility:visible; transform:translateY(0); }
.nav-dropdown li a { display:block; padding:10px 20px; color:var(--c-text); font-weight:500; font-size:0.9375rem; }
.nav-dropdown li a:hover { background:var(--c-bg-soft); color:var(--c-primary); }
@media (max-width: 1023px) { .nav-list { display:none; } .nav-dropdown { display:none; } }
.mobile-nav details summary { padding:14px 0; font-weight:600; cursor:pointer; }
.mobile-nav details ul { list-style:none; padding-left:16px; margin:0; }
.mobile-nav details ul li a { padding:8px 0; display:block; font-weight:400; }

/* ============================================================================
   v0.5.2 — фиксы 11 моих косяков (из РЕВЬЮ-2-страничного)
   ============================================================================ */

/* МОЙ-КОСЯК-#11: hero placeholder image broken. Заменён на trust-card визитку. */
.hero__trust-card { display: flex; align-items: center; justify-content: center; }
.trust-card {
  background: var(--c-bg-card);
  color: var(--c-text);
  border-radius: var(--radius-xl);
  padding: var(--space-6) var(--space-7);
  box-shadow: var(--shadow-lg);
  width: 100%;
  max-width: 460px;
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}
.trust-card__row {
  display: flex;
  align-items: baseline;
  gap: var(--space-4);
  padding-bottom: var(--space-3);
  border-bottom: 1px solid var(--c-border-soft);
}
.trust-card__row:last-of-type { border-bottom: 0; }
.trust-card__num {
  font-family: var(--ff-heading);
  font-size: 2rem;
  font-weight: var(--fw-bold);
  color: var(--c-primary);
  min-width: 96px;
  flex-shrink: 0;
}
.trust-card__lbl { font-size: 0.9375rem; color: var(--c-text-soft); }
.trust-card__footer {
  text-align: center;
  font-size: var(--fs-xsmall);
  color: var(--c-text-mute);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding-top: var(--space-3);
  border-top: 1px solid var(--c-border-soft);
}

/* МОЙ-КОСЯК-#5: hero-direction на napravlenie стал использовать класс hero--cream
   через CSS (через .hero-direction наследует --cream override).
   Перепроверим что бейдж eyebrow на cream имеет нужный текст. */
.hero--cream .hero__eyebrow,
.hero-direction .hero__eyebrow { background: var(--c-cta); color: var(--c-text-inverse); }

/* МОЙ-КОСЯК-#6 (доп. на besplatno-test): большой gap между breadcrumbs и h1. */
.hero-program .breadcrumbs + h1,
.hero-program .breadcrumbs + .container h1,
.page-head .breadcrumbs + h1 { margin-top: var(--space-4); }
.hero-program { padding-top: var(--space-7); padding-bottom: var(--space-7); }

/* МОЙ-КОСЯК-#10 (доп.): H1 hero — никогда > 3 строк за счёт max-width */
.hero__title { max-width: 16ch; }
@media (max-width: 768px) { .hero__title { max-width: none; } }

/* ============================================================================
   FOOTER — полные юр. реквизиты (273-ФЗ ст.29 + 152-ФЗ)
   Блок над site-footer__bottom. Мелкий текст, не CTA-важности.
   bg = #181818 (наследует .site-footer). Контраст #b7b7b7 на #181818 ≈ 8:1 (AA pass).
   ============================================================================ */
.site-footer__legal {
  border-top: 1px solid #2a2a2a;
  padding: var(--space-5) 0;
  margin-bottom: var(--space-4);
  font-size: 0.8125rem;        /* 13px — мелкий текст реквизитов */
  line-height: 1.5;
  color: #b7b7b7;              /* единый footer-серый, без новых hardcoded оттенков */
}
.site-footer__legal-line { margin: 0 0 var(--space-3); }
.site-footer__legal-links {
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  align-items: center;
}
/* Override site-footer a (color:#d4d4d4) на яркий белый — это юр-обязательные ссылки */
.site-footer__legal-links a { color: #ffffff; text-decoration: underline; text-underline-offset: 2px; }
.site-footer__legal-links a:hover { color: var(--c-accent-soft); }
.site-footer__legal-sep { color: #6b6b6b; }

/* Политика в site-footer__bottom — видимая ссылка рядом с копирайтом */
.site-footer__bottom-link { text-decoration: underline; text-underline-offset: 2px; }

/* ============================================================================
   Каталог: SEO-intro + Trust-strip + Quiz (фаза +3 блока)
   ============================================================================ */

/* ---- Блок 1: SEO-вводный текст ---- */
.catalog-intro {
  display: grid;
  gap: var(--space-6);
  grid-template-columns: 1fr;
  margin: var(--space-6) 0 var(--space-7);
  padding-bottom: var(--space-6);
  border-bottom: 1px solid var(--c-border-soft);
}
@media (min-width: 900px) {
  .catalog-intro { grid-template-columns: 2fr 1fr; gap: var(--space-7); }
}
.catalog-intro__title {
  font-size: var(--fs-h3);
  margin: 0 0 var(--space-4);
  color: var(--c-text);
}
.catalog-intro__text p {
  color: var(--c-text);
  max-width: 65ch;
  line-height: var(--lh-relax);
}
.catalog-intro__text p + p { color: var(--c-text-soft); }
.catalog-intro__text p.text-soft { color: var(--c-text-soft); font-size: 0.9375rem; }
.catalog-intro__text strong { color: var(--c-text); font-weight: var(--fw-semibold); }

.catalog-intro__aside {
  background: var(--c-bg-soft);
  padding: var(--space-5);
  border-radius: var(--radius-lg);
  align-self: start;
}
.catalog-intro__facts {
  list-style: none;
  padding: 0; margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.catalog-intro__facts li {
  padding: var(--space-3) var(--space-4);
  background: var(--c-bg);
  border-radius: var(--radius-md);
  border-left: 3px solid var(--c-primary);
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.catalog-intro__facts strong {
  color: var(--c-text);
  font-weight: var(--fw-semibold);
  font-size: 0.9375rem;
  line-height: 1.35;
}
.catalog-intro__facts span {
  color: var(--c-text-soft);
  font-size: var(--fs-small);
  line-height: 1.4;
}

/* ---- Блок 2: Trust-strip ---- */
.section--trust-strip {
  background: var(--c-bg-soft);
  padding: var(--space-7) 0;
}
.trust-strip__title {
  font-size: var(--fs-h3);
  margin: 0 0 var(--space-5);
  color: var(--c-text);
}
.trust-strip {
  display: grid;
  gap: var(--space-4);
  grid-template-columns: 1fr;
}
@media (min-width: 640px) { .trust-strip { grid-template-columns: 1fr 1fr; } }
@media (min-width: 960px) { .trust-strip { grid-template-columns: repeat(4, 1fr); } }

.trust-strip__item {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-4);
  background: var(--c-bg);
  border: 1px solid var(--c-border-soft);
  border-radius: var(--radius-md);
  min-height: 100%;
  transition: border-color var(--t-base) var(--easing), box-shadow var(--t-base) var(--easing);
}
.trust-strip__item:hover { border-color: var(--c-primary); box-shadow: var(--shadow-card); }

.trust-strip__icon {
  width: 40px;
  height: 40px;
  background: var(--c-primary);
  color: var(--c-text-inverse);
  border-radius: var(--radius-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.trust-strip__icon svg { width: 22px; height: 22px; }

.trust-strip__body {
  display: flex;
  flex-direction: column;
  gap: 4px;
  /* min-width:0 чтобы flex-child корректно переносил длинный текст */
  min-width: 0;
}
.trust-strip__body strong {
  color: var(--c-text);
  font-weight: var(--fw-semibold);
  font-size: 0.9375rem;
  line-height: 1.3;
}
.trust-strip__body span {
  color: var(--c-text-soft);
  font-size: var(--fs-small);
  line-height: 1.4;
}

.trust-strip__link {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  margin-top: var(--space-5);
  color: var(--c-primary);
  font-weight: var(--fw-semibold);
  text-decoration: underline;
}
.trust-strip__link:hover { color: var(--c-primary-dark); }

/* ---- Блок 3: Quiz / форма заявки ---- */
/* .section--quiz наследует .section--cta (синий фон, белый текст). */
.catalog-quiz {
  display: grid;
  gap: var(--space-6);
  grid-template-columns: 1fr;
  align-items: start;
}
@media (min-width: 900px) {
  .catalog-quiz { grid-template-columns: 1fr 1fr; gap: var(--space-7); }
}

/* левая колонка — на синем фоне, белый текст */
.catalog-quiz__text h2 {
  margin: 0 0 var(--space-5);
  color: var(--c-text-inverse);
}
.catalog-quiz__benefits {
  list-style: none;
  padding: 0;
  margin: 0 0 var(--space-5);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.catalog-quiz__benefits li {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  font-size: 1rem;
  line-height: var(--lh-snug);
  color: rgba(255, 255, 255, 0.92);
}
.catalog-quiz__benefits li::before {
  content: '';
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #fff;
  margin-top: 9px;
  flex-shrink: 0;
}
.catalog-quiz__small {
  color: rgba(255, 255, 255, 0.85);
  font-size: var(--fs-small);
  margin: 0;
}
.catalog-quiz__small a { color: var(--c-text-inverse); text-decoration: none; }
.catalog-quiz__small a:hover { color: var(--c-accent-soft); }

/* правая колонка — белая плашка-форма поверх синего */
.catalog-quiz__form {
  background: var(--c-bg);
  padding: var(--space-6);
  border-radius: var(--radius-xl);
  color: var(--c-text);
  box-shadow: var(--shadow-lg);
  display: flex;
  flex-direction: column;
  gap: 0;
}
.catalog-quiz__form-title {
  font-family: var(--ff-heading);
  font-weight: var(--fw-bold);
  font-size: var(--fs-h4);
  color: var(--c-text);
  margin: 0 0 var(--space-5);
}
/* form-field внутри quiz — гарантированно читаемое на белом */
.catalog-quiz__form .form-field { margin-bottom: var(--space-4); }
.catalog-quiz__form .form-field label { color: var(--c-text); }
.catalog-quiz__optional { color: var(--c-text-mute); font-weight: var(--fw-regular); font-size: var(--fs-small); }
.catalog-quiz__req { color: var(--c-cta); margin-left: 2px; font-weight: var(--fw-bold); }

.catalog-quiz__consent {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  font-size: var(--fs-small);
  color: var(--c-text-soft);
  line-height: 1.45;
  margin: 0 0 var(--space-5);
  cursor: pointer;
}
.catalog-quiz__consent input[type="checkbox"] {
  margin-top: 3px;
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  accent-color: var(--c-primary);
  cursor: pointer;
}
.catalog-quiz__consent a { color: var(--c-primary); text-decoration: underline; }
.catalog-quiz__consent a:hover { color: var(--c-primary-dark); }

.catalog-quiz__legal {
  font-size: var(--fs-xsmall);
  color: var(--c-text-mute);
  margin: var(--space-3) 0 0;
  line-height: 1.45;
  text-align: center;
}
.catalog-quiz__legal a { color: var(--c-text-soft); text-decoration: underline; }

/* focus-visible на кнопке формы — primary outline (форма на белом фоне).
   Без этого override унаследует правило `.section--cta .btn:focus-visible { outline:#fff }`,
   которое на белой плашке невидимо. */
.catalog-quiz__form .btn:focus-visible {
  outline: 2px solid var(--c-primary);
  outline-offset: 2px;
}

/* Кнопка submit формы — visual parity (КОСЯК #4): full-width внутри формы. */
.catalog-quiz__submit { width: 100%; }

/* ============================================================================
   PROGRAM PAGE — недостающие блоки (program-seksologiya v0.5.3)
   Конкурент-аудит выявил 4 недостающих секции (critical+major).
   Все классы scoped через префикс, без глобальных каскадов.
   Контраст проверен: на белом #fff и на --c-bg-soft #F1F1F1.
   ============================================================================ */

/* ---------- О курсе (развёрнутое описание + плитка фактов) ---------- */
/* Текст #111 на #fff = 17:1, лид-абзац #111 = 17:1, body #444 = 9.7:1.
   Плитка фактов на --c-bg-soft (#F1F1F1): num #003366 = 14.8:1, lbl #444 = 8.5:1. */
.about-course__lead {
  font-size: 1.125rem;
  line-height: var(--lh-relax);
  color: var(--c-text);
  margin-bottom: var(--space-4);
}
.about-course__facts {
  display: grid;
  gap: var(--space-3);
  align-content: start;
  padding: var(--space-5);
  background: var(--c-bg-soft);
  border-radius: var(--radius-lg);
}
.about-course__fact {
  display: flex;
  align-items: baseline;
  gap: var(--space-4);
  padding-bottom: var(--space-3);
  border-bottom: 1px solid var(--c-border-soft);
}
.about-course__fact:last-child { border-bottom: 0; padding-bottom: 0; }
.about-course__fact-num {
  font-family: var(--ff-heading);
  font-weight: var(--fw-bold);
  font-size: 1.5rem;
  color: var(--c-primary);
  min-width: 110px;
  flex-shrink: 0;
  line-height: var(--lh-tight);
}
.about-course__fact-lbl { font-size: 0.9375rem; color: var(--c-text-soft); }

/* ---------- Для кого программа (4 карточки сегментов) ---------- */
/* МОЙ-КОСЯК-#2: фиксирую min-height на заголовок карточки —
   заголовки выравниваются по сетке даже при разной длине. */
.audience { display: grid; gap: var(--space-4); grid-template-columns: 1fr; }
@media (min-width: 600px) { .audience { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 960px) { .audience { grid-template-columns: repeat(4, 1fr); } }
.audience-card {
  background: var(--c-bg);
  border: 1px solid var(--c-border);
  border-top: 3px solid var(--c-cta);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.audience-card__title {
  font-family: var(--ff-heading);
  font-weight: var(--fw-bold);
  font-size: 1.0625rem;
  color: var(--c-text);
  margin: 0;
  line-height: var(--lh-snug);
  min-height: 48px;          /* 2 строки по 24px — выравнивает заголовки в ряду */
}
.audience-card__desc {
  font-size: 0.9375rem;
  color: var(--c-text-soft);
  margin: 0;
  line-height: var(--lh-snug);
}
/* На мобиле min-height не нужен — карточки идут друг под другом */
@media (max-width: 599px) { .audience-card__title { min-height: 0; } }

/* ---------- Условия приёма ---------- */
/* Section без soft (bg=#fff). Галочка #E31E24 на #fff = 4.69:1 — pass AA для normal text.
   Routes-варианты на --c-bg-soft с border-left navy 3px. */
.admission { display: grid; gap: var(--space-6); grid-template-columns: 1fr; }
@media (min-width: 768px) { .admission { grid-template-columns: 1fr 1fr; align-items: start; } }
.admission__group h3 {
  margin-bottom: var(--space-4);
  font-size: var(--fs-h4);
  color: var(--c-text);
}
.admission__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
/* Чек-лист документов — flex для центрования галочки относительно первой строки */
.admission__list > li {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  font-size: 0.9375rem;
  color: var(--c-text);
  line-height: var(--lh-base);
}
.admission__list > li::before {
  content: '✓';
  color: var(--c-cta);
  font-weight: var(--fw-bold);
  flex-shrink: 0;
  font-size: 1.125rem;
  line-height: 1.4;
}
/* Варианты «кому подходит» — карточки с border-left, без галочки */
.admission__list--routes > li {
  flex-direction: column;
  gap: 4px;
  padding: var(--space-3) var(--space-4);
  background: var(--c-bg-soft);
  border-left: 3px solid var(--c-primary);
  border-radius: var(--radius-sm);
}
.admission__list--routes > li::before { display: none; }
.admission__list--routes strong {
  font-size: 1rem;
  color: var(--c-text);
  font-weight: var(--fw-semibold);
}
.admission__list--routes span {
  font-size: 0.9375rem;
  color: var(--c-text-soft);
  line-height: var(--lh-snug);
}

/* ---------- Отзывы выпускников ---------- */
/* На --c-bg-soft (#F1F1F1): фон карточек #fff. quote #111 = 17:1, name #111 = 17:1,
   role #444 = 9.7:1. Декоративная кавычка-графика #E31E24 (4.69:1 на белом). */
.reviews { display: grid; gap: var(--space-4); grid-template-columns: 1fr; }
@media (min-width: 700px) { .reviews { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .reviews { grid-template-columns: repeat(3, 1fr); } }
.review-card {
  position: relative;
  background: var(--c-bg);
  border: 1px solid var(--c-border);
  border-radius: var(--radius-lg);
  padding: var(--space-6) var(--space-5) var(--space-5);
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}
.review-card::before {
  content: '\201C';                 /* типографская левая кавычка */
  position: absolute;
  top: 4px;
  left: 16px;
  font-family: var(--ff-heading);
  font-size: 4rem;
  line-height: 1;
  color: var(--c-cta);
  font-weight: var(--fw-bold);
  pointer-events: none;             /* декорация — не перехватывает клики */
}
.review-card__quote {
  position: relative;               /* выше декоративной кавычки */
  z-index: 1;
  margin: 0;
  padding-top: var(--space-4);
  font-size: 0.9375rem;
  line-height: var(--lh-relax);
  color: var(--c-text);
  flex-grow: 1;
}
.review-card__author {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding-top: var(--space-3);
  border-top: 1px solid var(--c-border-soft);
}
.review-card__name {
  font-weight: var(--fw-semibold);
  color: var(--c-text);
  font-size: 0.9375rem;
}
.review-card__role {
  font-size: var(--fs-small);
  color: var(--c-text-soft);
}

/* ============================================================================
   Направление-хаб: H3-группы программ по типу обучения + кросс-нав на соседние
   (napravlenie-klinicheskaya — добавлены 3 missing-блока v0.5.3)
   ============================================================================ */

/* ---- program-group: H3-разделитель внутри #programs со счётчиком справа ----
   Косяк #2 (overflow-слот для optional бейджа) тут не релевантен — h3-плашка
   всегда отрисовывается одинаково. Контраст #003366 на #F3EFE9 ≈ 13.3:1 AA pass. */
.program-group + .program-group { margin-top: var(--space-7); }
.program-group__title {
  font-size: var(--fs-h4);
  font-weight: var(--fw-bold);
  color: var(--c-primary);
  margin: 0 0 var(--space-4);
  padding: var(--space-3) var(--space-4);
  background: #F3EFE9;
  border-radius: var(--radius-md);
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--space-3);
  line-height: 1.3;
}
.program-group__name { display: inline-block; }
.program-group__count {
  font-size: var(--fs-small);
  font-weight: var(--fw-regular);
  color: var(--c-text-soft);   /* #444 на #F3EFE9 ≈ 9.6:1 AA pass */
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.program-group--coming .program-group__count { color: var(--c-text-mute); } /* #767676 на #F3EFE9 ≈ 4.62:1 AA pass */
.program-group__note {
  margin: 0;
  padding: 0 var(--space-4);
  color: var(--c-text-soft);
  font-size: 0.9375rem;
  line-height: 1.5;
}
.program-group__note a { color: var(--c-primary); text-decoration: underline; text-underline-offset: 2px; }
.program-group__note a:hover { color: var(--c-primary-dark); }

/* ---- directions-grid: 5 карточек на соседние хабы направлений ----
   Цель: внутренняя перелинковка для SEO + кросс-нав UX.
   Палитра: cream #F3EFE9 как тёплый акцент против section--soft #F1F1F1.
   Контрасты: title #003366 на #F3EFE9 ≈ 12.85:1 AA, desc #444 на #F3EFE9 ≈ 10.27:1 AA.
   Косяк #1 (scope): все селекторы scoped через .direction-card, не каскадят на nav-dropdown.
   Косяк #4 (visual parity): cards в grid с равной шириной + flex-column gap для выравнивания. */
.directions-grid {
  display: grid;
  gap: var(--space-4);
  grid-template-columns: 1fr;
}
@media (min-width: 640px) { .directions-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 960px) { .directions-grid { grid-template-columns: repeat(3, 1fr); } }

.direction-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  padding: var(--space-5) calc(var(--space-5) + 24px) var(--space-5) var(--space-5);
  background: #F3EFE9;
  border: 1px solid #F3EFE9;
  border-radius: var(--radius-lg);
  color: var(--c-text);
  text-decoration: none;
  transition: transform var(--t-base) var(--easing),
              box-shadow var(--t-base) var(--easing),
              border-color var(--t-base) var(--easing);
}
.direction-card:hover,
.direction-card:focus-visible {
  transform: translateY(-2px);
  box-shadow: var(--shadow-card-hover);
  border-color: var(--c-primary);
  color: var(--c-text);     /* anti-cascade: текст не перекрашивается, контраст сохранён */
  outline: 0;
}
.direction-card__title {
  font-family: var(--ff-heading);
  font-weight: var(--fw-bold);
  font-size: 1.0625rem;
  color: var(--c-primary);
  line-height: 1.3;
}
.direction-card__desc {
  font-size: var(--fs-small);
  color: var(--c-text-soft);
  line-height: 1.45;
}
.direction-card__arrow {
  position: absolute;
  top: var(--space-5);
  right: var(--space-5);
  color: var(--c-primary);
  font-size: 1.125rem;
  line-height: 1;
  transition: transform var(--t-base) var(--easing);
}
.direction-card:hover .direction-card__arrow,
.direction-card:focus-visible .direction-card__arrow { transform: translateX(4px); }

@media (prefers-reduced-motion: reduce) {
  .direction-card:hover,
  .direction-card:focus-visible { transform: none; }
  .direction-card:hover .direction-card__arrow,
  .direction-card:focus-visible .direction-card__arrow { transform: none; }
}

/* ============================================================================
   PROFESSIYA-PSIHOLOG-KONSULTANT — 5 missing-блоков v0.5.4 (critical+major)
   Все классы scoped через префиксы (usp-, study-, testimonial__hint).
   Контраст: все элементы на --c-bg-soft (#F1F1F1) или --c-bg (#fff).
   Фикс косяков: #2 (min-height на title), #4 (visual parity btn), #6 (rgba не hardcoded).
   ============================================================================ */

/* ---------- USP с цифрами (после Hero) ---------- */
/* На --c-bg-soft #F1F1F1: num #003366 = 13.34:1 AA pass; lbl #444 = 9.6:1 pass. */
.usp-grid {
  display: grid;
  gap: var(--space-4);
  grid-template-columns: 1fr;
}
@media (min-width: 600px) { .usp-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 960px) { .usp-grid { grid-template-columns: repeat(4, 1fr); } }

.usp-item {
  background: var(--c-bg);
  border: 1px solid var(--c-border-soft);
  border-left: 3px solid var(--c-primary);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  min-height: 100%;
  transition: box-shadow var(--t-base) var(--easing), transform var(--t-base) var(--easing);
}
.usp-item:hover { box-shadow: var(--shadow-card-hover); transform: translateY(-2px); }
.usp-item__num {
  font-family: var(--ff-heading);
  font-weight: var(--fw-bold);
  font-size: clamp(1.75rem, 3vw, 2.25rem);
  color: var(--c-primary);
  line-height: var(--lh-tight);
  margin: 0;
  /* min-height — выравниваем «12 лет» и «3 000+» с длинным «Л035-01244» в одном ряду */
  min-height: 2.5rem;
}
.usp-item__lbl {
  font-size: 0.9375rem;
  color: var(--c-text-soft);
  margin: 0;
  line-height: var(--lh-snug);
}
.usp-item__hint {
  display: inline-block;
  margin-left: 4px;
  font-size: 0.625rem;        /* 10px — приглушённый клиентский маркер */
  font-weight: var(--fw-regular);
  color: var(--c-text-mute);  /* #767676 на #fff = 4.54:1 AA pass для small text */
  letter-spacing: 0;
  text-transform: none;
  vertical-align: middle;
  white-space: nowrap;
}
.usp-grid__note {
  margin: var(--space-5) 0 0;
  text-align: center;
  font-size: var(--fs-small);
}
.usp-grid__note a {
  color: var(--c-primary);
  font-weight: var(--fw-semibold);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.usp-grid__note a:hover { color: var(--c-primary-dark); }
@media (max-width: 599px) { .usp-item__num { min-height: 0; } }

/* ---------- Условия приёма — ссылка снизу секции ---------- */
.admission__legal {
  margin: var(--space-5) 0 0;
  text-align: center;
  font-size: var(--fs-small);
}
.admission__legal a {
  color: var(--c-primary);
  font-weight: var(--fw-semibold);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.admission__legal a:hover { color: var(--c-primary-dark); }

/* ---------- Как проходит обучение (4 карточки features) ---------- */
/* На --c-bg-soft #F1F1F1: фон карточек #fff. icon navy #003366 = 14.86:1.
   title #111 = 17:1, desc #444 = 9.7:1 AA pass. */
.study-grid {
  display: grid;
  gap: var(--space-4);
  grid-template-columns: 1fr;
}
@media (min-width: 600px) { .study-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .study-grid { grid-template-columns: repeat(4, 1fr); } }

.study-card {
  background: var(--c-bg);
  border: 1px solid var(--c-border-soft);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  min-height: 100%;
  transition: box-shadow var(--t-base) var(--easing), transform var(--t-base) var(--easing);
}
.study-card:hover { box-shadow: var(--shadow-card-hover); transform: translateY(-2px); }

.study-card__icon {
  width: 48px;
  height: 48px;
  border-radius: var(--radius-md);
  background: var(--c-primary);
  color: var(--c-text-inverse);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--ff-heading);
  font-weight: var(--fw-bold);
  font-size: 0.875rem;       /* «LMS», «★», «⏱» — компактно */
  letter-spacing: 0.02em;
  flex-shrink: 0;
}
.study-card__title {
  font-family: var(--ff-heading);
  font-weight: var(--fw-bold);
  font-size: 1.0625rem;
  color: var(--c-text);
  margin: 0;
  line-height: var(--lh-snug);
  /* КОСЯК #2: min-height чтобы заголовки выровнялись в ряду 4 колонки */
  min-height: 48px;
}
.study-card__desc {
  font-size: 0.9375rem;
  color: var(--c-text-soft);
  margin: 0;
  line-height: var(--lh-snug);
}
@media (max-width: 599px) { .study-card__title { min-height: 0; } }

/* ---------- Истории выпускников — клиентский маркер в имени ---------- */
/* testimonial уже определён выше. Добавляем только маркер [?? уточнить]. */
.testimonial__hint {
  display: inline-block;
  margin-left: 4px;
  font-size: 0.625rem;
  font-weight: var(--fw-regular);
  color: var(--c-text-mute);
  letter-spacing: 0;
  text-transform: none;
  white-space: nowrap;
  vertical-align: middle;
}

/* ============================================================================
   trust-license.html — «Сведения об образовательной организации» (compliance 831)
   Layout: sticky-sidebar (13 разделов по приказу Рособрнадзора № 831) + content
   с definition list для «Основных сведений» (полное/сокр. наименование, дата
   создания, учредители, юр.адрес, адреса мест осуществления образ. деятельности).
   Селекторы scoped через .sveden-* — каскад на .nav/.card исключён.
   ============================================================================ */
.sveden-layout {
  display: grid;
  gap: var(--space-5);
}
@media (min-width: 960px) {
  .sveden-layout {
    grid-template-columns: 280px 1fr;
    gap: var(--space-7);
    align-items: start;
  }
}

.sveden-sidebar {
  background: var(--c-bg-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius-lg);
  padding: var(--space-4);
}
@media (min-width: 960px) {
  .sveden-sidebar {
    position: sticky;
    top: 88px;                           /* высота sticky-header + воздух */
    max-height: calc(100vh - 104px);
    overflow-y: auto;
  }
}
.sveden-sidebar__title {
  margin: 0 0 var(--space-3);
  padding: 0 var(--space-3);
  font-size: var(--fs-xsmall);
  font-weight: var(--fw-bold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--c-text-mute);             /* #767676 на белом — 4.54:1, AA OK */
}
.sveden-nav { list-style: none; padding: 0; margin: 0; }
.sveden-nav li + li { margin-top: 2px; }
.sveden-nav a {
  display: block;
  padding: var(--space-3) var(--space-4);
  font-size: var(--fs-small);
  line-height: var(--lh-snug);
  color: var(--c-text);                  /* #111 на белом — 18.7:1 */
  border-radius: var(--radius-md);
  transition: background var(--t-fast) var(--easing), color var(--t-fast) var(--easing);
}
.sveden-nav a:hover {
  background: var(--c-bg-soft);          /* #F1F1F1 */
  color: var(--c-primary);               /* navy — 13.5:1 на bg-soft */
}
.sveden-nav a.is-active {
  background: #FFF9E0;                   /* warm-cream — compliance-блок (палитра v0.4.1) */
  color: #2A2A2A;                        /* 14.5:1 на cream — AAA */
  font-weight: var(--fw-semibold);
}

.sveden-content { display: flex; flex-direction: column; gap: var(--space-5); }

.sveden-article {
  background: var(--c-bg-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  scroll-margin-top: 96px;               /* anchor-jump учитывает sticky-header */
}
.sveden-article h3 {
  margin: 0 0 var(--space-4);
  font-size: var(--fs-h3);
  color: var(--c-primary);
}
.sveden-article p:last-child { margin-bottom: 0; }

/* Definition list — пары «label / value» для compliance-полей */
.sveden-dl {
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0;
}
.sveden-dl dt {
  margin: 0;
  padding: var(--space-3) 0 var(--space-1);
  font-size: var(--fs-small);
  font-weight: var(--fw-regular);
  color: #6E6E6E;                        /* 5.32:1 на белом — AA */
  line-height: var(--lh-snug);
}
.sveden-dl dd {
  margin: 0;
  padding: 0 0 var(--space-3);
  color: #2A2A2A;                        /* 14.5:1 на белом — AAA */
  font-weight: var(--fw-medium);
  line-height: var(--lh-base);
  border-bottom: 1px solid var(--c-border-soft);
}
.sveden-dl > dt:first-of-type { padding-top: 0; }
.sveden-dl > dd:last-of-type { border-bottom: 0; padding-bottom: 0; }

@media (min-width: 640px) {
  .sveden-dl {
    grid-template-columns: minmax(200px, 260px) 1fr;
    column-gap: var(--space-5);
  }
  .sveden-dl dt {
    padding: var(--space-3) 0;
    border-bottom: 1px solid var(--c-border-soft);
  }
  .sveden-dl dd {
    padding: var(--space-3) 0;
  }
  .sveden-dl > dt:first-of-type,
  .sveden-dl > dt:first-of-type + dd { padding-top: 0; }
  .sveden-dl > dt:last-of-type,
  .sveden-dl > dt:last-of-type + dd { border-bottom: 0; padding-bottom: 0; }
}

.sveden-note-inline {
  display: inline-block;
  margin-left: var(--space-2);
  padding: 2px var(--space-2);
  font-size: var(--fs-xsmall);
  font-weight: var(--fw-regular);
  color: var(--c-text-soft);             /* #444 на белом — 9.74:1 */
  background: var(--c-bg-soft);
  border-radius: var(--radius-sm);
  vertical-align: middle;
}

.sveden-note {
  margin-top: var(--space-5);
  padding: var(--space-3) var(--space-4);
  background: #FFF9E0;                   /* warm-cream — compliance-выноска */
  border-left: 3px solid var(--c-primary);
  border-radius: var(--radius-sm);
  font-size: var(--fs-small);
  color: #2A2A2A;                        /* 14.5:1 на cream */
}
.sveden-note:last-child { margin-bottom: 0; }

/* ============================================================================
   o-institute.html — 4 missing-блока v0.5.5 (critical+major)
   После аудита конкурентов (imaton.ru, mip.institute) — недоставали:
   1) Структурированные принципы вместо текста миссии (major)
   2) Преподавательский состав (визитки + ссылка на полный список) (major)
   3) Развёрнутые документы/лицензия с PDF (critical для ДПО — 273-ФЗ)
   4) Контакты и адрес/проезд (major)
   ============================================================================ */

/* ---------- Наши принципы (4 карточки) ----------
   На белом #fff: num-bg navy 14.86:1, title #111=17:1, desc #444=9.7:1.
   Использует .grid grid--4 из uikit (на десктопе 4 кол, на 600+ 2x2).
   Косяк #2 (min-height): фиксирую слот заголовка под выравнивание. */
.principle-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding: var(--space-5);
  background: var(--c-bg);
  border: 1px solid var(--c-border-soft);
  border-radius: var(--radius-lg);
  transition: box-shadow var(--t-base) var(--easing), transform var(--t-base) var(--easing);
}
.principle-card:hover { box-shadow: var(--shadow-card-hover); transform: translateY(-2px); }
.principle-card__num {
  width: 48px;
  height: 48px;
  border-radius: var(--radius-md);
  background: var(--c-primary);
  color: var(--c-text-inverse);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--ff-heading);
  font-weight: var(--fw-bold);
  font-size: 1.125rem;
  flex-shrink: 0;
}
.principle-card__title {
  font-family: var(--ff-heading);
  font-weight: var(--fw-bold);
  font-size: 1.0625rem;
  color: var(--c-text);
  margin: 0;
  line-height: var(--lh-snug);
  min-height: 48px;            /* выравнивание заголовков в ряду 4 кол */
}
.principle-card__desc {
  font-size: 0.9375rem;
  color: var(--c-text-soft);
  margin: 0;
  line-height: var(--lh-snug);
}
@media (max-width: 599px) { .principle-card__title { min-height: 0; } }

/* ---------- Преподавательский состав — лид + grid + CTA на полный список ----------
   Использует существующий .card-teacher (есть в uikit).
   Косяк #3 (object-position) — наследует фикс центрирования лица из uikit.
   Косяк #4 (visual parity): кнопка «Все преподаватели» с width:auto + max-width
   centered — не растягивается под текст. */
.teachers-intro {
  max-width: 760px;
  margin: 0 auto var(--space-6);
  text-align: center;
  color: var(--c-text-soft);
  font-size: 1.0625rem;
  line-height: var(--lh-relax);
}
.teachers-cta-wrap {
  display: flex;
  justify-content: center;
  margin-top: var(--space-6);
}
.card-teacher__specs {
  list-style: none;
  padding: 0;
  margin: var(--space-2) 0 0;
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  justify-content: center;
}
.card-teacher__specs li {
  padding: 2px 10px;
  background: var(--c-bg-soft);
  color: var(--c-text-soft);
  border-radius: var(--radius-pill);
  font-size: var(--fs-xsmall);
  font-weight: var(--fw-medium);
}

/* ---------- Документы и лицензия (critical: 273-ФЗ ст.29) ----------
   Зелёная плашка «Действующая лицензия» — акцент --c-success (#2e7d32).
   На белом #fff: success #2e7d32 = 5.69:1 — pass AA для normal text.
   Doc-card на #fff: title #111=17:1, meta #444=9.7:1, icon-bg #003366=14.86:1. */
.license-banner {
  display: flex;
  align-items: flex-start;
  gap: var(--space-4);
  padding: var(--space-5);
  background: rgba(46, 125, 50, 0.06);
  border: 1px solid rgba(46, 125, 50, 0.25);
  border-left: 4px solid var(--c-success);
  border-radius: var(--radius-lg);
  margin-bottom: var(--space-6);
}
.license-banner__icon {
  width: 44px;
  height: 44px;
  border-radius: var(--radius-pill);
  background: var(--c-success);
  color: var(--c-text-inverse);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-weight: var(--fw-bold);
  font-size: 1.25rem;
}
.license-banner__body { display: flex; flex-direction: column; gap: 4px; }
.license-banner__status {
  font-size: var(--fs-xsmall);
  font-weight: var(--fw-bold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--c-success);
}
.license-banner__title {
  font-family: var(--ff-heading);
  font-weight: var(--fw-bold);
  font-size: 1.0625rem;
  color: var(--c-text);
  margin: 0;
}
.license-banner__meta { font-size: 0.9375rem; color: var(--c-text-soft); margin: 0; }
.license-banner__links {
  display: flex;
  gap: var(--space-4);
  flex-wrap: wrap;
  margin-top: var(--space-2);
  font-size: var(--fs-small);
}
.license-banner__links a { color: var(--c-primary); text-decoration: underline; text-underline-offset: 2px; font-weight: var(--fw-semibold); }
.license-banner__links a:hover { color: var(--c-primary-dark); }

.docs-grid {
  display: grid;
  gap: var(--space-4);
  grid-template-columns: 1fr;
}
@media (min-width: 640px) { .docs-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 960px) { .docs-grid { grid-template-columns: repeat(3, 1fr); } }

.doc-card {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-4);
  background: var(--c-bg);
  border: 1px solid var(--c-border-soft);
  border-radius: var(--radius-md);
  text-decoration: none;
  color: var(--c-text);
  transition: border-color var(--t-base) var(--easing), box-shadow var(--t-base) var(--easing), transform var(--t-base) var(--easing);
}
.doc-card:hover,
.doc-card:focus-visible {
  border-color: var(--c-primary);
  box-shadow: var(--shadow-card);
  transform: translateY(-2px);
  color: var(--c-text);
  outline: 0;
}
.doc-card__icon {
  width: 40px;
  height: 48px;
  background: var(--c-primary);
  color: var(--c-text-inverse);
  border-radius: var(--radius-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--ff-heading);
  font-weight: var(--fw-bold);
  font-size: 0.6875rem;
  letter-spacing: 0.04em;
  flex-shrink: 0;
}
.doc-card__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.doc-card__title {
  font-weight: var(--fw-semibold);
  font-size: 0.9375rem;
  color: var(--c-text);
  line-height: var(--lh-snug);
}
.doc-card__meta {
  font-size: var(--fs-xsmall);
  color: var(--c-text-mute);
  letter-spacing: 0.02em;
}

/* ---------- Контакты — карточка адреса + карта ----------
   На --c-bg-soft #F1F1F1: фон карточек #fff. title #111=17:1, label #767676=4.54:1 (mute на белом OK).
   Карта-блок — placeholder с указанием реального адреса. iframe можно подключить позже. */
.contact-grid {
  display: grid;
  gap: var(--space-5);
  grid-template-columns: 1fr;
}
@media (min-width: 900px) { .contact-grid { grid-template-columns: 1fr 1fr; align-items: stretch; } }

.contact-card {
  background: var(--c-bg);
  border: 1px solid var(--c-border-soft);
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}
.contact-card__row {
  display: flex;
  gap: var(--space-4);
  align-items: flex-start;
}
.contact-card__icon {
  width: 36px;
  height: 36px;
  border-radius: var(--radius-pill);
  background: var(--c-primary);
  color: var(--c-text-inverse);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.125rem;
  flex-shrink: 0;
}
.contact-card__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.contact-card__lbl {
  font-size: var(--fs-xsmall);
  font-weight: var(--fw-bold);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--c-text-mute);     /* #767676 на #fff = 4.54:1 — AA */
}
.contact-card__val {
  font-size: 1rem;
  color: var(--c-text);
  line-height: var(--lh-snug);
}
.contact-card__val a { color: var(--c-text); text-decoration: none; }
.contact-card__val a:hover { color: var(--c-primary); text-decoration: underline; }
.contact-card__ctas {
  display: flex;
  gap: var(--space-3);
  flex-wrap: wrap;
  margin-top: var(--space-2);
}
.contact-card__ctas .btn { flex: 1 1 auto; min-width: 140px; }

.contact-map {
  position: relative;
  background: var(--c-bg);
  border: 1px solid var(--c-border-soft);
  border-radius: var(--radius-lg);
  overflow: hidden;
  min-height: 320px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  background-image: linear-gradient(135deg, #E8EEF5 0%, #F1F1F1 60%, #E8EEF5 100%);
}
.contact-map iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}
.contact-map__overlay {
  position: relative;
  z-index: 1;
  padding: var(--space-4) var(--space-5);
  background: rgba(255, 255, 255, 0.95);
  backdrop-filter: blur(4px);
  border-top: 1px solid var(--c-border-soft);
  font-size: 0.9375rem;
  color: var(--c-text);
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.contact-map__overlay strong { color: var(--c-primary); font-weight: var(--fw-bold); }
.contact-map__overlay a { color: var(--c-primary); font-weight: var(--fw-semibold); text-decoration: underline; }
.contact-map__overlay a:hover { color: var(--c-primary-dark); }

/* ============================================================================
   KONTAKTY — блок «Документы и лицензии» (v0.5.2)
   Конкурент-аудит (mip.institute, nadpo.ru, eeip.ru — 7/9 источников):
   у служебных страниц есть выделенный блок документов карточками, не строкой.
   Снимает страх «настоящий ли это институт ДПО» перед оплатой.
   ----------------------------------------------------------------------------
   Палитра v0.5.2:
   - Карточки на белом фоне секции, bg = --c-bg-soft (#F1F1F1)
   - Border --c-border (#C7C7C7) — декор разделитель
   - Badge: --c-primary #003366 + white text = 12.6:1 ✓
   - Title #111 на #F1F1F1 = 17.2:1 ✓
   - __num: --c-primary #003366 на #F1F1F1 = 12.6:1 ✓
   - __desc: --c-text-soft #444 на #F1F1F1 = 9.3:1 ✓
   - btn--ghost: --c-border-input #767676 на белом (карточка) - наследует.
   КОСЯКИ-предупреждение: #2 (badge slot min-height), #4 (btn full-width),
   #6 (без hardcoded серых — только токены), #7 (структура: badge → title →
   num → desc → CTA, не простыня), #8 (нет рандомных <li> с галочками).
   ============================================================================ */

.doc-cards {
  margin-bottom: var(--space-6);
  align-items: stretch;
}
.doc-card {
  display: flex;
  flex-direction: column;
  padding: var(--space-6);
  background: var(--c-bg-soft);
  border: 1px solid var(--c-border);
  border-radius: var(--radius-lg);
  transition: border-color var(--t-base) var(--easing), transform var(--t-base) var(--easing), box-shadow var(--t-base) var(--easing);
}
.doc-card:hover {
  border-color: var(--c-primary);
  transform: translateY(-2px);
  box-shadow: var(--shadow-card-hover);
}

/* Badge: фикс. slot высоты — КОСЯК #2 (даже если на будущее у одной карточки бейджа не будет, заголовки не разъедутся) */
.doc-card__badge {
  display: inline-flex;
  align-self: flex-start;
  align-items: center;
  padding: 4px 12px;
  background: var(--c-primary);
  color: var(--c-text-inverse);
  border-radius: var(--radius-pill);
  font-size: var(--fs-small);
  font-weight: var(--fw-semibold);
  line-height: 1.3;
  min-height: 26px;
  margin-bottom: var(--space-3);
}

/* Title: фикс. slot — КОСЯК #2 (одно-двухстрочные заголовки выравниваются по сетке) */
.doc-card__title {
  font-size: 1.125rem;
  line-height: var(--lh-snug);
  margin: 0 0 var(--space-3);
  min-height: 58px;
  color: var(--c-text);
}

.doc-card__num {
  font-family: var(--ff-heading);
  font-weight: var(--fw-semibold);
  color: var(--c-primary);
  font-size: 0.9375rem;
  margin: 0 0 var(--space-3);
  word-break: break-word;
}

/* desc растягивается через flex-grow — КОСЯК #4 (CTA-кнопки выравниваются по низу) */
.doc-card__desc {
  color: var(--c-text-soft);
  font-size: 0.9375rem;
  line-height: var(--lh-relax);
  margin: 0 0 var(--space-5);
  flex-grow: 1;
}

/* Скоупим .btn внутри .doc-card — НЕ глобально (КОСЯК #1) */
.doc-card > .btn {
  margin-top: auto;
}

.doc-cards__footer {
  text-align: center;
  margin-top: var(--space-5);
}
.doc-cards__footer .btn { display: inline-flex; }

/* Mobile: чуть меньше padding, slot min-height снимаем (карточки в столбик — выравнивание не нужно) */
@media (max-width: 639px) {
  .doc-card { padding: var(--space-5); }
  .doc-card__title { min-height: 0; }
  .doc-card__badge { min-height: 0; }
}

/* ============================================================================
   events.html — расширение карточек мероприятий + форма подписки (block #1-4)
   ----------------------------------------------------------------------------
   Контраст v0.5.2:
   - card-event__date (--c-primary navy + white) = 12.61:1 ✓ AA
   - event-tutor (bg=--c-bg-soft #F1F1F1, text=#111) = 17.2:1, role=#444=9.3:1 ✓
   - event-tutor__avatar (--c-primary + white) = 12.61:1 ✓
   - subscribe form input border --c-border-input #767676 на белом = 4.54:1 ✓ SC 1.4.11
   - subscribe-block H2 #111 на #fff = 17.79:1 ✓
   КОСЯКИ-предупреждение:
   - #1: НЕТ глобальных .nav / .card селекторов — всё под .event-tutor / .subscribe-form scope
   - #2: card-event__body — flex-column, badge slot align-self, CTA margin-top:auto
         → ряд карточек не разъезжается между «есть/нет ведущей»
   - #4: subscribe-form кнопка flex:0 0 auto, на mobile fallback - flex-wrap row
   - #6: ТОЛЬКО токены палитры v0.5.2, без hardcoded серых
   - #7: event-tutor — не простыня, а структура (имя ссылкой → курсивная регалия)
   ============================================================================ */

/* card-event: усиливаем родительский класс для flex-column + min-height на бейдж-слот */
.card-event__body {
  display: flex;
  flex-direction: column;
}
.card-event__body > .badge {
  align-self: flex-start;
  min-height: 22px;
}
.card-event__body > .btn--cta {
  margin-top: auto;
}

/* Мини-блок ведущего внутри card-event (block #4 major):
   фото-аватар 48×48 round + имя ссылкой + курсивные регалии.
   Avatar — инициалы fallback до реальных фото (атрибут aria-hidden=true). */
.event-tutor {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-top: var(--space-4);
  padding: var(--space-3);
  background: var(--c-bg-soft);
  border-radius: var(--radius-md);
}
.event-tutor__avatar {
  width: 48px;
  height: 48px;
  border-radius: var(--radius-pill);
  background: var(--c-primary);
  color: var(--c-text-inverse);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-weight: var(--fw-bold);
  font-size: 0.9375rem;
  letter-spacing: 0.02em;
}
.event-tutor__info {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.event-tutor__name {
  font-weight: var(--fw-semibold);
  font-size: var(--fs-small);
  color: var(--c-text);
  text-decoration: none;
  line-height: var(--lh-snug);
}
.event-tutor__name:hover {
  color: var(--c-primary);
  text-decoration: underline;
}
.event-tutor__role {
  font-size: var(--fs-xsmall);
  color: var(--c-text-soft);
  font-style: italic;
  line-height: var(--lh-snug);
}

/* Подписка на анонсы — секция перед footer (block #3 major).
   Mobile-first: лид + форма stack. На ≥760px — 2 колонки. */
.subscribe-block {
  display: grid;
  gap: var(--space-6);
  align-items: start;
}
@media (min-width: 760px) {
  .subscribe-block {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-7);
    align-items: center;
  }
}
.subscribe-block__copy h2 {
  margin-bottom: var(--space-3);
}
.subscribe-block__copy p {
  color: var(--c-text-soft);
  margin: 0;
  line-height: var(--lh-relax);
}

.subscribe-form {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
/* Row: input + кнопка. flex-wrap для mobile (кнопка ниже инпута). */
.subscribe-form__row {
  display: flex;
  gap: var(--space-3);
  flex-wrap: wrap;
}
.subscribe-form__row input[type="email"] {
  flex: 1 1 220px;
  min-width: 0;
  padding: 14px 16px;
  font: inherit;
  background: var(--c-bg);
  border: 1.5px solid var(--c-border-input);
  border-radius: var(--radius-md);
  color: var(--c-text);
  transition: border-color var(--t-base) var(--easing), box-shadow var(--t-base) var(--easing);
}
.subscribe-form__row input[type="email"]:focus {
  outline: 0;
  border-color: var(--c-primary);
  box-shadow: 0 0 0 3px rgba(0, 51, 102, 0.2);
}
.subscribe-form__row input[type="email"]::placeholder {
  color: var(--c-text-mute);
  opacity: 1;
}
.subscribe-form__row .btn--cta {
  flex: 0 0 auto;
}
/* Mobile: кнопка на всю ширину — visual parity с inputом (КОСЯК #4) */
@media (max-width: 519px) {
  .subscribe-form__row .btn--cta { width: 100%; }
}

.subscribe-form__consent {
  display: flex;
  align-items: flex-start;
  gap: var(--space-2);
  font-size: var(--fs-small);
  color: var(--c-text-soft);
  cursor: pointer;
  line-height: var(--lh-snug);
}
.subscribe-form__consent input[type="checkbox"] {
  width: 18px;
  height: 18px;
  margin-top: 2px;
  flex-shrink: 0;
  accent-color: var(--c-primary);
  cursor: pointer;
}
.subscribe-form__consent a {
  color: var(--c-text);
  text-decoration: underline;
}
.subscribe-form__consent a:hover {
  color: var(--c-primary);
}

/* a11y-утилита: скрытый label для screen-reader (visually-hidden паттерн).
   Использован у label[for="subscribe-email"]. */
.visually-hidden {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ============================================================================
   v0.7 — стили для Нининых блоков и новых страниц
   ============================================================================ */

/* Footer-help — СВЕТЛЫЙ CTA-блок (решение оператора: формы в футере НЕТ, форма решается
   каждой страницей + форма/блок захвата НИКОГДА не на тёмном фоне). cream-карточка,
   тёмный текст, телефон + кнопка к каталогу. Якорь #help-form сохранён. */
.footer-help {
  display: grid; gap: var(--space-6);
  grid-template-columns: 1fr; padding: var(--space-7);
  background: #F3EFE9; border-radius: var(--radius-lg);
  margin-bottom: var(--space-7);
}
@media (min-width: 768px) { .footer-help { grid-template-columns: 1.4fr 1fr; align-items: center; } }
.footer-help__title { color: var(--c-primary); font-size: 1.75rem; margin-bottom: var(--space-3); }
.footer-help__text p { color: var(--c-text-soft); }
.footer-help__cta { display: flex; flex-direction: column; gap: var(--space-3); align-items: flex-start; }
@media (min-width: 768px) { .footer-help__cta { align-items: flex-end; } }
/* спец. 0,2,0 > .site-footer a (0,1,1) — иначе телефон наследует серый футера */
.footer-help .footer-help__phone { font-size: 1.625rem; font-weight: var(--fw-bold); color: var(--c-primary); white-space: nowrap; }
.footer-help .footer-help__phone:hover { color: var(--c-cta); }
/* 28.07: федеральный 8 800 главным, мобильный — мелкой строкой под ним.
   Цвета литералами: каскад .site-footer красит текст в светлый #ECE3D6 — на бежевом нечитаем (WCAG) */
.site-footer .footer-help .footer-help__phone-note { font-size: .875rem; color: #555555 !important; margin: 2px 0 10px; }
.site-footer .footer-help .footer-help__phone-note a { color: #1A1A1A !important; font-weight: 600; }
.footer-help__form { background: var(--c-bg-card); padding: var(--space-5); border-radius: var(--radius-lg); color: var(--c-text); }
.footer-help__form .form-field { margin-bottom: var(--space-3); }
/* v0.7.6 #3: было display:flex на <label> → каждый текст-узел и <a> становились отдельными
   flex-элементами и рвались в колонки. Чекбокс — flex-item, ВЕСЬ текст — в одном <span> (flows). */
.footer-help__form .form-field__check { display: flex; align-items: flex-start; gap: 8px; font-size: 0.8125rem; color: var(--c-text-soft); margin: 12px 0; line-height: 1.45; }
.footer-help__form .form-field__check > input[type="checkbox"] { flex-shrink: 0; margin-top: 2px; width: 16px; height: 16px; }
.footer-help__form .form-field__check > span { flex: 1; }
.footer-help__form .form-field__check a { color: var(--c-primary); text-decoration: underline; }
.footer-help__form .form-field__check:last-of-type { margin-bottom: var(--space-5); }  /* п.3: воздух согласие→кнопка */
.footer-help__form .btn { width: 100%; margin-top: var(--space-4); }

/* Footer columns */
.footer-col h4 { color: var(--c-text-inverse); font-size: 1rem; margin-bottom: var(--space-3); }
.footer-col p, .footer-col a { color: #d4d4d4; }
.footer-col a:hover { color: var(--c-text-inverse); }
.footer-col__hours, .footer-col__addr { font-size: 0.8125rem; color: #b7b7b7; margin-top: 8px; }

.footer-social { display: flex; gap: 12px; margin-top: var(--space-4); }
.footer-social a {
  display: inline-flex; align-items: center; justify-content: center;
  width: 36px; height: 36px;
  background: rgba(255,255,255,0.1);
  border-radius: 50%;
  font-size: 0.75rem; font-weight: var(--fw-bold);
  color: var(--c-text-inverse) !important;
}
.footer-social a:hover { background: var(--c-cta); }

.site-footer__bottom-links { display: flex; flex-wrap: wrap; gap: var(--space-4); }
.site-footer__bottom-links a { color: #888; font-size: 0.8125rem; }
.site-footer__bottom-links a:hover { color: var(--c-text-inverse); }

/* Quiz CTA на главной — «Не уверены...» */
.quiz-cta {
  display: grid; gap: var(--space-5);
  grid-template-columns: 1fr;
  padding: var(--space-7); background: var(--c-bg-soft);
  border-radius: var(--radius-xl); align-items: center;
}
@media (min-width: 768px) { .quiz-cta { grid-template-columns: 2fr 1fr; } }
.quiz-cta__actions { display: flex; flex-direction: column; gap: var(--space-3); }
.quiz-cta__actions .btn { width: 100%; }

/* Direction cards (на napravleniya.html и главной) */
.direction-card { position: relative; padding: var(--space-5); }
/* п.2: счётчик «N программ» прибит к низу карточки → в ряду все плашки на одной горизонтали
   (карточки равной высоты по grid stretch, desc разной длины больше не двигает плашку). */
.direction-card__count {
  align-self: flex-start; margin-top: auto;
  padding: 4px 12px; background: var(--c-bg-soft); color: var(--c-primary);
  font-size: 0.8125rem; font-weight: var(--fw-bold); border-radius: var(--radius-pill);
}

/* Testimonial card (на vypuskniki.html) */
/* v0.7.6 #13: формат «истории» (а не мелкие отзывы) — крупнее карточка, аватар, акцентная цитата. */
.testimonial-card { background: var(--c-bg-card); border: 1px solid var(--c-border-soft); border-radius: var(--radius-lg); padding: var(--space-6); }
.testimonial-card__head { display: flex; gap: var(--space-4); align-items: center; margin-bottom: var(--space-5); }
.testimonial-card__photo {
  width: 92px; height: 92px; border-radius: 50%;
  background: var(--c-bg-soft); color: var(--c-primary);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--ff-heading); font-weight: var(--fw-bold); font-size: 1.875rem;
  flex-shrink: 0;
}
.testimonial-card__name { font-size: 1.25rem; margin: 0 0 4px; }
.testimonial-card__meta { font-size: 0.875rem; color: var(--c-text-mute); margin: 0; line-height: 1.45; }
.testimonial-card__history { background: var(--c-bg-soft); padding: var(--space-5); border-radius: var(--radius-md); font-size: 1rem; line-height: 1.6; margin-bottom: var(--space-5); }
.testimonial-card__quote { border-left: 4px solid var(--c-cta); padding: var(--space-2) 0 var(--space-2) var(--space-5); margin: 0; font-style: italic; font-size: 1.0625rem; line-height: 1.6; color: var(--c-text); }

/* Advantage card (Преимущества платформы) на o-institute */
.advantage-card {
  background: var(--c-bg-card); border: 1px solid var(--c-border-soft);
  border-radius: var(--radius-lg); padding: var(--space-5); text-align: center;
}
.advantage-card__icon {
  width: 56px; height: 56px; margin: 0 auto var(--space-3);
  background: var(--c-primary); color: var(--c-text-inverse);
  border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-size: 1.5rem;
}
.advantage-card h4 { font-size: 1rem; margin-bottom: var(--space-2); }

/* Format card (3 формата обучения) на o-institute */
.format-card { background: var(--c-bg-card); border: 2px solid var(--c-border-soft); border-radius: var(--radius-lg); padding: var(--space-5); }
.format-card h3 { color: var(--c-primary); margin-bottom: var(--space-3); }

/* Career item (Вакансии) на program-seksologiya */
.career-item { background: var(--c-bg-card); border: 1px solid var(--c-border-soft); border-radius: var(--radius-lg); padding: var(--space-5); }
.career-item h4 { color: var(--c-primary); margin-bottom: var(--space-2); }

/* Sveden table (Сведения об ОО) */
.sveden-table { width: 100%; border-collapse: collapse; margin-bottom: var(--space-5); }
.sveden-table th, .sveden-table td { padding: 12px 16px; text-align: left; vertical-align: top; border-bottom: 1px solid var(--c-border-soft); }
.sveden-table th { background: var(--c-bg-soft); width: 35%; font-weight: var(--fw-semibold); color: var(--c-text); }
.sveden-table td { color: var(--c-text-soft); }

/* Search tags (search.html) */
.search-tags { display: flex; flex-wrap: wrap; gap: 12px; }
.search-tags .chip { padding: 8px 16px; font-size: 0.9375rem; }

/* USP-item (используется в Сильные стороны курса и в других местах) */
.usp-item { background: var(--c-bg-card); border-left: 4px solid var(--c-cta); padding: var(--space-4) var(--space-5); border-radius: 0 var(--radius-md) var(--radius-md) 0; }
.usp-item__num { font-family: var(--ff-heading); font-size: 1.5rem; font-weight: var(--fw-bold); color: var(--c-primary); margin: 0 0 4px; }
.usp-item__lbl { font-size: 0.875rem; color: var(--c-text-soft); margin: 0; }

/* ============================================================================
   v0.7.3 — ДИЗАЙН-АГЕНТ v2 ПОЛНЫЙ ПРОГОН (run psy-2026-06-27-0008): пакет фиксов.
   Грузится последним → перебивает конфликтующие !important по source-order.
   Каждый фикс — с целевым WCAG-контрастом (AA ≥4.5 body / ≥3 large).
   ============================================================================ */

/* C1 — career-блок «Сколько зарабатывает». Был фон gradient red→#2a2a2a:
   красный конец (#e31e24) физически не даёт 4.5:1 даже белому (3.36). navy stat-num
   и inline #444/#767676 параграфы — невидимы на тёмном (1.14–1.47).
   Фикс: фон navy→тёмный (бренд) + ВЕСЬ текст светлый (перебивает inline color). */
.career { background: linear-gradient(135deg, #003366 0%, #1a1a1a 100%) !important; }
.career, .career h2, .career h3, .career h4,
.career p, .career span, .career li,
.career__stat-num, .career__stat-label, .career__stat-value { color: #ffffff !important; }
.career p:not(.career__stat-num):not(.career__stat-value),
.career__stat-label { color: rgba(255,255,255,0.9) !important; }
/* белый на #003366 = 10.7:1, на #1a1a1a = 16:1; rgba .9 на #003366 ≈ 9:1 — все AA+ */

/* S2 — feature__icon: было red число (var(--c-cta)) на navy (2.69). → белое (10.7:1). */
.feature__icon { color: #ffffff !important; }

/* hero__eyebrow: red текст #e31e24 на СВЕТЛЫХ hero (#f1f1f1/#F3EFE9) = 4.13-4.15 (<4.5).
   Углубляем красный до #c1121f (5.9-6.1 ✓). Тёмные hero (eyebrow белый по :1021) НЕ трогаем. */
.hero--cream .hero__eyebrow,
.hero-direction .hero__eyebrow,
.facet-hero .hero__eyebrow,
.hero-program .hero__eyebrow { color: #c1121f !important; border-left-color: #c1121f !important; }

/* v0.7.6 #9/#10 — ЕДИНЫЙ HERO. Было 5 трактовок светлых hero (cream→yellow градиент napravlenie,
   yellow event-hero, grey facet-hero #F1F1F1, прозрачный hero-program) → «оранжевый/жёлтый/серый» разнобой.
   Все СВЕТЛЫЕ hero → один solid brand-cream + единый вертикальный ритм. Navy .hero (флагман главной) — не трогаем. */
.hero--cream, .hero-direction, .facet-hero, .event-hero, .hero-program {
  background: #F3EFE9 !important;          /* solid, БЕЗ gradient — убирает orange/yellow */
}
.hero, .hero--cream, .hero-direction, .facet-hero, .event-hero, .hero-program {
  padding-top: var(--space-7) !important;
  padding-bottom: var(--space-7) !important;
}
/* единый ритм «крошки → контент» (крошки в своём контейнере перед hero/секцией) */
.breadcrumbs { padding: var(--space-5) 0 var(--space-2) !important; }
.breadcrumbs + .hero, .breadcrumbs + .hero-program, .breadcrumbs + .facet-hero,
.container:has(> .breadcrumbs) + section { padding-top: var(--space-5) !important; }

/* v0.7.6 #1 — десктоп-нав переносился в 2 строки: пункты сжимались, текст «О «ТОЧКЕ»» и
   каретки ▾ падали на 2-ю строку. nowrap пунктов + плотнее + телефон прячем на узком десктопе. */
.nav-list { flex-wrap: nowrap; gap: 18px; }
.nav > ul > .nav-item > a, .nav-item > a { white-space: nowrap; }
.site-header__inner { gap: var(--space-4); }
@media (min-width: 1024px) and (max-width: 1319px) {
  .header-phone { display: none; }   /* телефон забирает ширину → прячем на узком десктопе (есть в футере/контактах) */
}

/* v0.7.6 #11 — .chip-фильтры стали <button> (рабочая фильтрация). Сброс дефолт-вида кнопки + pointer. */
.chip { appearance: none; -webkit-appearance: none; font-family: inherit; cursor: pointer; }

/* G1/G2 — badges: текст рендерился #111 (перебит контекстом карточки) → green 3.68 / red 4.03.
   Гарантируем белый + достаточно тёмный фон. */
.badge--new, .badge--free { background: #2e7d32 !important; color: #ffffff !important; } /* white/#2e7d32 = 4.56 ✓ */
.badge--hit { background: #c1121f !important; color: #ffffff !important; }              /* white/#c1121f ≈ 6.5 ✓ (был #e31e24=3.36) */

/* B — quiz-cta: blanket [class*="cta"] p делал текст белым на светлом #f1f1f1 (1.11 — невидим).
   Возвращаем тёмный (фон quiz-cta светлый). */
.quiz-cta, .quiz-cta__text { color: var(--c-text) !important; }
/* 0,3,1 (двойной класс) > [class*="cta"] p:not()=0,2,1 — quiz-cta содержит "cta" → ловится blanket-белым */
.quiz-cta.quiz-cta p:not([class*="title"]),
.quiz-cta.quiz-cta .quiz-cta__text p:not([class*="title"]) { color: var(--c-text-soft) !important; } /* #444 на #f1f1f1 = 7.6 ✓ */
.quiz-cta.quiz-cta h2, .quiz-cta.quiz-cta h3 { color: var(--c-text) !important; }

/* quiz-legal: consent-микрокопия внутри БЕЛОЙ формы (.catalog-quiz__form) перебивалась
   .section--cta p (0,1,1) → white на white (1.00). Высокоспецифичный тёмный override. */
.catalog-quiz .catalog-quiz__form .catalog-quiz__legal { color: var(--c-text-mute) !important; } /* 0,3,0 > .section--cta p:not()=0,2,1; #666 на белой форме = 5.74 ✓ */
.catalog-quiz .catalog-quiz__form .catalog-quiz__legal a { color: var(--c-text-soft) !important; }

/* event-hero date-big: navy на red (2.69). → navy bg + белый (10.7:1). */
.event-hero__date-big { background: var(--c-primary) !important; color: #ffffff !important; }

/* events ROW-ALIGN@1024: 2-строчная дата (.card-event__date «День открытых дверей» = 61px vs 39px)
   толкала заголовок 3-й карточки на 22px. Резервируем единый слот под 2 строки → заголовки выровнены. */
.card-event__date { min-height: 3.75rem; box-sizing: border-box; }

/* G1 — license-banner: ОТМЕНЕНО. Первичный детектор (без alpha-композитинга) ложно показал
   фон #2e7d32 (зелёный) → 3.68. Реальный фон #e5eae6 (светлый), тёмный текст #111 на нём = ~16:1 OK.
   Белый фикс СЛОМАЛ бы (1.22) — НЕ применяем. (verification-поймано). */

/* S3 — горизонтальный overflow на мобайле/планшете. Корень: off-canvas .mobile-nav
   (position:fixed; transform:translateX(100%)) растит scrollWidth; на ≥1024 он лишний;
   header-cta (phone+Войти+Заявка) шире 360. */
html, body { overflow-x: hidden; }
@media (min-width: 1024px) { .mobile-nav { display: none !important; } }

/* uikit demo-only: .render-box форсит тёмный текст на hero-демо с navy-фоном (hero__sub #444/#003366=1.29).
   .render-box есть ТОЛЬКО на uikit.html → правило безвредно для production. Возвращаем белый. */
.render-box .hero .hero__sub { color: rgba(255,255,255,0.9) !important; }
@media (max-width: 599px) {
  .header-phone, .header-cta .btn--ghost { display: none !important; } /* оставляем «Заявку» (CTA) + бургер */
}

/* ============================================================================
   v0.7.7 — ДОСТРОЙКА СЛОЯ МОЛЕКУЛ (по MD-уроку + ревью Архитектора):
   ОДИН компонент card-teacher (был в 3 битых/разных реализациях), hero-система,
   видимость CTA, фасет-фильтры, ribbon. Грузится последним → канон.
   ============================================================================ */

/* ---------- card-teacher: ЕДИНЫЙ компонент ----------
   Контракт: фото (или placeholder-аватар если пусто) + имя (скрыть если пусто)
   + роль кратко (clamp) + specs = плашки слева. Враппер — <article> (НЕ вложенные <a>). */
.card-teacher { display: flex; flex-direction: column; background: var(--c-bg-card); border: 1px solid var(--c-border-soft); border-radius: var(--radius-lg); overflow: hidden; height: 100%; text-decoration: none; color: inherit; transition: box-shadow var(--t-base), transform var(--t-base); }
a.card-teacher:hover, .card-teacher:has(.card-teacher__link:hover) { box-shadow: var(--shadow-card-hover); transform: translateY(-2px); }
.card-teacher__link { display: block; text-decoration: none; color: inherit; }
.card-teacher__photo { aspect-ratio: 1/1; background: var(--c-bg-soft); overflow: hidden; position: relative; }
.card-teacher__photo img { width: 100%; height: 100%; object-fit: cover; object-position: center top; display: block; }
/* пустое фото (фото не согласовано клиентом) → нейтральный аватар-силуэт, НЕ битый пустой бокс */
/* явный SVG-аватар (фото не согласовано) — узел НЕ пустой (проходит DOM-VALIDITY) */
.card-teacher__avatar { position: absolute; inset: 0; margin: auto; width: 42%; height: 42%; fill: #bfbfbf; display: block; }
.card-teacher__photo:empty::after {
  content: ''; position: absolute; inset: 0;
  background: var(--c-bg-soft) center 60%/42% no-repeat
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23bfbfbf'%3E%3Cpath d='M12 12a5 5 0 1 0 0-10 5 5 0 0 0 0 10Zm0 2c-5 0-9 2.6-9 6v2h18v-2c0-3.4-4-6-9-6Z'/%3E%3C/svg%3E");
}
.card-teacher__body { padding: var(--space-4); text-align: left; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.card-teacher__name { font-size: 1.0625rem; font-weight: var(--fw-bold); color: var(--c-text); margin: 0; }
.card-teacher__name:empty { display: none; }
.card-teacher__role { font-size: 0.875rem; line-height: 1.45; color: var(--c-text-soft); margin: 0;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.card-teacher__specs { list-style: none; padding: 0; margin: 4px 0 0; display: flex; flex-wrap: wrap; gap: 6px; justify-content: flex-start; }
.card-teacher__specs li { padding: 3px 10px; background: rgba(0,51,102,0.08); color: var(--c-primary); border-radius: var(--radius-pill); font-size: var(--fs-xsmall); font-weight: var(--fw-semibold); }
/* анонимный эксперт (фото/имя не согласованы) — роль как заголовок, аватар-силуэт */
.card-teacher--anon .card-teacher__role { color: var(--c-text); font-weight: var(--fw-semibold); font-size: 0.9375rem; -webkit-line-clamp: 4; }
/* программы препода (prepodavateli) — оставляем существующий блок */
.card-teacher__programs { padding: 0 var(--space-4) var(--space-4); display: flex; flex-direction: column; gap: 2px; margin-top: auto; }

/* ---------- HERO-СИСТЕМА (#9/#10): главная — navy, ВСЕ внутренние — cream ----------
   professiya/o-institute переводятся в hero--cream в HTML. Здесь — границы и ритм. */
/* первая секция ПОСЛЕ любого hero → белая, чтобы cream-hero не читался как «второй hero» рядом с grey-секцией */
.hero + .section--soft, .hero-program + .section--soft,
.hero--cream + .section--soft, .facet-hero + .section--soft,
.event-hero + .section--soft { background: var(--c-bg) !important; }
/* hero визуально отделён от контента тонкой нижней границей */
.hero-program, .hero--cream, .facet-hero, .event-hero { border-bottom: 1px solid var(--c-border-soft); }
/* п.1 крошки ПО ЦЕНТРУ своей полосы: симметричный padding (отступ от меню сверху = отступ до hero снизу).
   + единый gap «крошки→контент» на всех страницах (был разброс 24..88px). */
.breadcrumbs { padding: 18px 0 !important; }
.container:has(> .breadcrumbs) + section,
.container:has(> .breadcrumbs) + .hero,
.container:has(> .breadcrumbs) + .hero-program,
.container:has(> .breadcrumbs) + .facet-hero,
.container:has(> .breadcrumbs) + .event-hero { padding-top: 24px !important; }
/* hero__meta был белым (navy hero) → на cream делаем тёмным */
.hero--cream .hero__meta, .hero--cream .hero__meta span { color: var(--c-text-soft) !important; }
.hero--cream .hero__meta strong { color: var(--c-text) !important; }

/* ---------- #2 footer: тёмная секция перед тёмным футером — red-border уже есть;
   доп. убираем удвоение тёмных: section--cta прямо перед футером не нужна повторная тёмная подложка ---------- */

/* ---------- #19 Заявка в хедере: была navy-на-navy (невидима как кнопка) → red, видимая ---------- */
/* ревью-7 (responsive WCAG 1.4.11): красный CTA на navy-хедере по ЯРКОСТИ близок (1.61) —
   светлая граница даёт перцептивную границу кнопки (бренд-красный сохранён). */
.site-header .btn--cta { background: #c1121f !important; color: #ffffff !important;
  border: 1.5px solid rgba(255,255,255,0.6) !important; }
.site-header .btn--cta:hover { background: #a50e1a !important; border-color: rgba(255,255,255,0.85) !important; }

/* ---------- #19 двойной section--soft (o-institute: «3 формата» + «преподаватели» = 200px gap) ---------- */
.section--soft + .section--soft { padding-top: 0 !important; }

/* ---------- #19 карточки программ: бейдж сверху толкал заголовок → диагональная лента-закладка в углу ---------- */
/* п.5 + ревью-6 КАНОН card-program-head: бейдж горизонтальный в ЗАРЕЗЕРВИРОВАННОМ
   верхнем слоте (top-right, out-of-flow, полный текст без rotate/клипа). Заголовок НИЖЕ
   бейджа — padding-top резерв на ВСЕХ карточках (с бейджем и без) → заголовки в ряду
   выровнены (ROW-ALIGN ok) И бейдж не перекрывает текст (SPACE-COLLAPSE ok, верт. зазор). */
.card-program { position: relative; }
.card-program__head { position: relative; padding-top: 48px !important; }
.card-program__head .badge {
  position: absolute; top: 14px; right: 14px; left: auto !important;
  transform: none !important; width: auto; margin: 0 !important;
  padding: 4px 10px !important; font-size: 0.6875rem;
  box-shadow: 0 1px 3px rgba(0,0,0,0.15); z-index: 2; white-space: nowrap;
}
.card-program__head .card-program__title { padding-right: 0; }

/* ---------- #18/#11 catalog-фасеты: подписи рядов + плотный ритм + рабочая фильтрация ---------- */
.catalog-facets { display: flex; flex-direction: column; gap: var(--space-2); margin-bottom: var(--space-5); }
.catalog-facets .catalog-filters { align-items: center; gap: var(--space-2); margin-bottom: 0; flex-wrap: wrap; }
.catalog-filters__label { font-size: 0.8125rem; font-weight: var(--fw-semibold); color: var(--c-text-soft); flex: 0 0 auto; align-self: center; }
.catalog-facets .catalog-filters__label { min-width: 178px; }
@media (max-width: 599px) { .catalog-facets .catalog-filters__label { min-width: 100%; margin-bottom: 2px; } }
/* standalone .catalog-filters (blog/preподаватели/napravlenie) — выравнивание с лейблом */
.catalog-filters { align-items: center; }
/* tabs: убрать вертикальный скролл-артефакт; тонкий горизонт. скролл только если не влезает */
.catalog-tabs { overflow-x: auto; overflow-y: hidden; scrollbar-width: thin; }

/* ---------- CHROME-DRIFT fix: активный пункт nav через body[data-nav] (хедер байт-идентичен) ---------- */
body[data-nav="catalog.html"] .nav a[href="catalog.html"],
body[data-nav="napravleniya.html"] .nav a[href="napravleniya.html"],
body[data-nav="o-institute.html"] .nav a[href="o-institute.html"],
body[data-nav="besplatno-test.html"] .nav a[href="besplatno-test.html"],
body[data-nav="blog.html"] .nav a[href="blog.html"],
body[data-nav="vypuskniki.html"] .nav a[href="vypuskniki.html"],
body[data-nav="search.html"] .nav a[href="search.html"] {
  border-bottom-color: var(--c-accent) !important; color: var(--c-text-inverse) !important;
}
body[data-nav="catalog.html"] .mobile-nav a[href="catalog.html"],
body[data-nav="o-institute.html"] .mobile-nav a[href="o-institute.html"],
body[data-nav="blog.html"] .mobile-nav a[href="blog.html"],
body[data-nav="vypuskniki.html"] .mobile-nav a[href="vypuskniki.html"] { color: var(--c-primary) !important; font-weight: var(--fw-semibold); }

/* #2 / SECTION-BG: тёмная .section--cta отделена от тёмного футера red-border (.site-footer).
   Полный перевод CTA в светлую — ОТЛОЖЕН: FIX-6 форсит white на ВСЕХ потомках .section--cta
   (.form-note/.legal/вложенный quiz) → white-on-cream criticals. Нужен аккуратный редизайн CTA-компонента
   (отдельное дизайн-решение оператора). SECTION-BG-COLLISION/RHYTHM пока остаются (дизайн-долг).
   SECTION-PADDING-COLLAPSE — чиним безопасно: схлопываем двойной вертикальный padding соседних секций. */
.section + .section, .section--soft + .section, .section + .section--soft,
[class*="hero"] + .section, [class*="hero"] + .section--soft { padding-top: var(--space-6) !important; }

/* A closed registration dialog is not a visual section. Its presence, or
   hiding the event list, must not change the canonical benefits spacing. */
body.page-events .section[data-tochka-block="events-benefits"] {
  padding-top: var(--space-6) !important;
}

/* ============================================================================
   v0.9 CONSTRUCTOR KIT — канонические блоки-кирпичи (единый источник).
   Каталог: constructor-kit.html. Страницы собираются ИЗ этих блоков.
   ============================================================================ */

/* БЛОК: page-header (page-shell) — единый верх КОНТЕНТНОЙ страницы:
   крошки + H1 + подзаголовок, cream-полоса. Заменяет разнобой hero/белая-секция. */
.page-header { background: #F3EFE9; padding: 20px 0 40px; border-bottom: 1px solid var(--c-border-soft); }
.page-header .breadcrumbs { padding: 0 0 14px !important; }
.page-header__eyebrow { display: inline-block; color: #c1121f; font-size: 0.8125rem; font-weight: var(--fw-bold);
  letter-spacing: 0.06em; text-transform: uppercase; border-left: 3px solid #c1121f; padding-left: 10px; margin-bottom: 12px; }
.page-header__title { margin: 0 0 10px; color: var(--c-primary); }
.page-header__sub { margin: 0; max-width: 780px; color: var(--c-text-soft); font-size: var(--fs-h4); line-height: var(--lh-snug); }
.page-header__ctas { display: flex; gap: var(--space-3); flex-wrap: wrap; margin-top: var(--space-5); }
/* page-header → следующая секция: header уже даёт 40px + border, убираем двойной отступ */
.page-header + .section,
.page-header + section { padding-top: var(--space-7) !important; }
/* последняя секция main → footer-help (футер): footer-help уже даёт 48px,
   режем padding-bottom последней секции, чтобы не было 2× мёртвого зазора (148px) */
main > section:last-child { padding-bottom: var(--space-7) !important; }

/* БЛОК: cta-light — светлая CTA-секция (редизайн тёмной section--cta у футера).
   ОТДЕЛЬНЫЙ класс — не наследует FIX-6 white-on-section--cta. */
.cta-light { background: #F3EFE9; text-align: center; border-top: 1px solid var(--c-border-soft); }
.cta-light__title { color: var(--c-primary); margin: 0 0 var(--space-3); }
.cta-light__text { max-width: 620px; margin: 0 auto var(--space-5); }
/* перебиваем [class*="cta"] p (uikit:807, 0,2,1 !important) — спец. 0,3,0 > 0,2,1 */
.section.cta-light .cta-light__text { color: var(--c-text-soft) !important; }

/* ============================================================================
   ревью-6 / решение оператора: ФОРМА НИКОГДА НЕ НА ТЁМНОМ ФОНЕ.
   catalog-quiz из синей (--c-primary-light) → СВЕТЛАЯ cream-панель.
   В HTML у секций-обёрток снят class section--cta (иначе blanket [class*="cta"] p
   красит текст белым). Тут — перекрас собственных тёмных правил catalog-quiz.
   ============================================================================ */
.catalog-quiz { background: #F3EFE9 !important; color: var(--c-text) !important;
  padding: var(--space-7); border-radius: var(--radius-xl); }
@media (max-width: 767px) { .catalog-quiz { padding: var(--space-5); } }
.catalog-quiz__text h2 { color: var(--c-primary) !important; }
.catalog-quiz__benefits li { color: var(--c-text-soft) !important; }
.catalog-quiz__benefits li::before { background: var(--c-cta) !important; }
.catalog-quiz__small { color: var(--c-text-soft) !important; }
.catalog-quiz__small a { color: var(--c-primary) !important; }
.catalog-quiz__small a:hover { color: var(--c-cta) !important; }
/* белая форма-карточка на cream — добавляем границу для отделения */
.catalog-quiz__form { border: 1px solid var(--c-border-soft); }

/* БЛОК lead-form — канонический СВЕТЛЫЙ лид-блок (белая карточка на светлой секции).
   Замена инлайн-форм на тёмном фоне (index #contact, program-seksologiya #zayavka). */
.lead-form { max-width: 620px; margin: 0 auto; background: var(--c-bg-card);
  padding: var(--space-7); border-radius: var(--radius-xl);
  border: 1px solid var(--c-border-soft); box-shadow: var(--shadow-md); text-align: center; }
@media (max-width: 767px) { .lead-form { padding: var(--space-5); } }
.lead-form__title { color: var(--c-primary); margin: 0 0 var(--space-3); }
.lead-form__text { color: var(--c-text-soft); margin: 0 0 var(--space-5); }
.lead-form__form { display: grid; gap: var(--space-4); text-align: left; }
.lead-form__form input { padding: 14px 16px; border-radius: 8px;
  border: 1px solid var(--c-border-input); font: inherit; width: 100%; }
.lead-form__form input:focus { outline: 2px solid var(--c-primary); outline-offset: 1px; border-color: var(--c-primary); }
.lead-form__note { color: var(--c-text-mute); font-size: var(--fs-small); margin: 0; text-align: center; }
.lead-form__note a { color: var(--c-primary); text-decoration: underline; }
.cta-light .btn--ghost { color: var(--c-text); border-color: var(--c-border-input); background: transparent; }

/* ============================================================================
   ВАРИАНТ 2 — «ТЁПЛЫЙ РЕДАКТОРСКИЙ» · структурный + hardcode override (грузится последним)
   Структура ≠ v1: светлый serif-hero · card-program с левым акцентом+бейдж-строкой ·
   card-teacher ГОРИЗОНТАЛЬНЫЙ (фото слева) · page-header без полосы (нижний rule).
   ============================================================================ */
body { background: #ffffff; }

/* HERO: тёмный split v1 → СВЕТЛЫЙ редакторский (крем + serif + rule) */
.hero { background: #F3EFE9 !important; color: var(--c-text) !important; border-bottom: 1px solid var(--c-border); }
.hero .hero__sub { color: var(--c-text-soft) !important; }
.hero__eyebrow { color: var(--c-cta) !important; text-transform: uppercase; letter-spacing: .12em; font-family: var(--ff-base); font-weight: 700; }
.hero__title, .hero h1 { color: var(--c-text) !important; font-size: clamp(2.2rem, 5vw, 3.6rem); line-height: 1.08; }
.site-header .btn--cta { background: var(--c-cta) !important; border-color: rgba(255,255,255,.5) !important; }
.site-header .btn--cta:hover { background: var(--c-cta-hover) !important; }
.hero .btn--ghost { color: var(--c-text) !important; border-color: var(--c-border-input) !important; background: transparent !important; }
.hero .btn--ghost:hover { background: rgba(43,36,32,.05) !important; border-color: var(--c-primary) !important; color: var(--c-text) !important; }
.hero .hero__meta, .hero .hero__meta span { color: var(--c-text-soft) !important; }
.hero .hero__meta strong { color: var(--c-text) !important; }
.hero .trust-card { background: #ffffff !important; border: 1px solid var(--c-border); color: var(--c-text) !important; }
.hero .trust-card__num { color: var(--c-cta) !important; }
.hero .trust-card__lbl, .hero .trust-card__footer { color: var(--c-text-soft) !important; }

/* PAGE-HEADER: cream-полоса v1 → айвори + нижний rule + serif */
.page-header { background: transparent !important; border-bottom: 2px solid var(--c-primary) !important; padding: 28px 0 20px !important; }
.page-header__eyebrow { color: var(--c-cta) !important; border-left: none !important; padding-left: 0 !important; font-family: var(--ff-base); }
.page-header__title { font-size: clamp(2rem, 4.5vw, 3rem); }

/* CARD-PROGRAM: вертикаль+угловой бейдж v1 → левый терракотовый акцент + бейдж-строка */
.card-program { border-left: 4px solid var(--c-cta); }
.card-program__head { padding-top: var(--space-5) !important; }
.card-program__head .badge { position: static !important; display: inline-flex; margin: 0 0 8px 0 !important; padding: 4px 12px !important; text-transform: uppercase; letter-spacing: .08em; font-weight: 700; box-shadow: none !important; font-size: .72rem; }  /* правка №1 (22.07): цветные пилюли-бейджи как в драфте-1 — сняты transparent/color/padding-глушители */
.card-program__head .card-program__title { padding-right: 0 !important; font-family: var(--ff-heading); }
.card-program__price-now { color: var(--c-cta); }

/* CARD-TEACHER: вертикаль фото-сверху v1 → ГОРИЗОНТАЛЬ фото-слева (bio-row) */
@media (min-width: 560px) {
  .card-teacher__link { display: grid !important; grid-template-columns: 124px 1fr; align-items: center; }
  .card-teacher__photo { aspect-ratio: 1; min-height: 124px; height: 100%; }
  .card-teacher__body { text-align: left !important; padding: var(--space-4) var(--space-4) var(--space-4) var(--space-5) !important; }
  .card-teacher__specs { justify-content: flex-start !important; }
}
.card-teacher__name { font-family: var(--ff-heading); }
/* горизонтальным card-teacher нужна ширина → сетки преподов в широкие колонки (auto-fill 330px) */
.grid:has(.card-teacher) { grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)) !important; }

/* FOOTER: #181818 v1 → тёплый эспрессо */
.site-footer { background: #1A1A1A !important; }
.site-footer a:hover { color: var(--c-cta) !important; }

/* светлые блоки: крем v1 → тёплый беж */
.cta-light, .catalog-quiz, .footer-help { background: #F3EFE9 !important; }
.career { background: linear-gradient(135deg, #003366 0%, #E31E24 100%) !important;  /* правка №10 (22.07): градиент navy-красный как в драфте-3 (был коричневый новодел) */ }

/* кнопки: резкий редакторский радиус */
.btn { border-radius: var(--radius-sm); }

/* КОНТРАСТ-фиксы v2 (агент r1): footer-текст светлый на эспрессо + eyebrow терракота на светлом */
.hero .hero__eyebrow, .hero__eyebrow { color: var(--c-cta) !important; }
/* перебиваем uikit:1026 (0,4,0 !important «eyebrow белый на тёмном hero») — у нас hero светлый */
.hero:not(.hero--cream):not(.hero-direction) .hero__eyebrow { color: var(--c-cta) !important; }
/* v3.1: футер стал СВЕТЛЫЙ — текст тёмно-серый (было тёплый #D8CFC4 для тёмного футера) */
.site-footer__grid, .site-footer__grid p, .site-footer__grid li, .site-footer__grid span,
.site-footer__legal, .site-footer__legal-line, .site-footer__bottom, .site-footer__bottom span { color: var(--c-text-soft) !important; }
.site-footer__grid a, .site-footer__bottom-links a { color: #ECE3D6 !important; }
.site-footer__grid a:hover, .site-footer__bottom-links a:hover { color: var(--c-accent-soft) !important; }
.site-footer__grid h4 { color: #ffffff !important; }

/* ============================================================================
   v2 — НАБОР B «РЕДАКТОРСКИЙ» · РЕКОМПОЗИЦИЯ БЛОКОВ (структура, не цвет) · CSS-only
   По данным WDR: features→нумерованные ряды, directions→редакт.строки,
   FAQ→2-кол открытый Q&A, programs→каталог-строки, testimonial→quote-led.
   ============================================================================ */

/* (снято 22.07, правки №14/№19: editorial-нумерация 01/02/03 у .features убрана — возврат к карточкам
   с navy-квадратом цифры, как в драфтах v1/v3; база .features/.feature/.feature__icon выше идентична драфтам) */

/* (снято 22.07, правка №30: editorial-строки у .directions-grid убраны — возврат к компактной сетке
   мини-карточек направлений как в драфте-3; база .directions-grid/.direction-card выше идентична драфтам) */

/* FAQ: нативный КЛИКАБЕЛЬНЫЙ аккордеон, редакторский (serif-вопрос + индикатор +/−).
   (было: форс-открытый 2-кол с pointer-events:none → не кликался = FAQ-DEAD) */
/* правка №3 + ут.6 (22.07): FAQ — канон ДРАФТА-3 (кремовые скруглённые плашки) на всех страницах */
.faq .faq-item { background: var(--c-bg-soft) !important; border: none !important; border-radius: var(--radius-lg) !important; margin-bottom: var(--space-3); padding: 0; }
.faq .faq-item summary { font-family: var(--ff-base) !important; font-size: 1rem !important; font-weight: 700; list-style: none; cursor: pointer; padding: var(--space-4) 44px var(--space-4) var(--space-5) !important; position: relative; }
.faq .faq-item summary::-webkit-details-marker { display: none; }
.faq .faq-item summary::after { content: '+'; position: absolute; right: var(--space-5); top: var(--space-4); font-size: 1.4rem; color: var(--c-cta); line-height: 1; }
.faq .faq-item[open] summary::after { content: '−'; }
.faq .faq-item__body { padding: 0 var(--space-5) var(--space-4) !important; }

/* PROGRAMS: вертик.карточки → КАТАЛОГ-СТРОКИ (горизонтальные, плотный список) */
.grid:has(> .card-program) { grid-template-columns: 1fr !important; gap: 0 !important; border-top: 1px solid var(--c-border); }
.grid:has(> .card-program) .card-program { display: grid !important; grid-template-columns: 1.6fr 1fr auto; align-items: center; gap: var(--space-5); height: auto !important; border: none !important; border-bottom: 1px solid var(--c-border) !important; border-radius: 0 !important; padding: var(--space-4) 0; }
.grid:has(> .card-program) .card-program__head { padding: 0 !important; grid-column: 1; }
.grid:has(> .card-program) .card-program__body { display: contents !important; }
.grid:has(> .card-program) .card-program__body > .text-soft { display: none; }
.grid:has(> .card-program) .card-program__price { grid-column: 2; justify-content: flex-start; padding: 0 !important; margin: 0 !important; }
.grid:has(> .card-program) .card-program__cta { grid-column: 3; width: auto !important; margin: 0 !important; white-space: nowrap; }

/* HERO index: сплит (текст|карта) → TEXT-ONLY BIG-TYPE (огромный serif во всю ширину
   + цифры горизонтальной лентой вместо боковой карты) */
.hero .hero__inner { grid-template-columns: 1fr !important; }
.hero .hero__title { font-size: clamp(2.8rem, 7vw, 5rem) !important; max-width: 16ch; }
.hero .hero__media { width: 100% !important; margin-top: var(--space-6); background: transparent !important; border: none !important; box-shadow: none !important; border-radius: 0 !important; padding: 0 !important; }
/* правка №35 (22.07): hero о-институте — возврат сплита из ДРАФТА-1: текст | карточка,
   умеренный H1, карточный вид media. СКОУП .page-o-institute (24.07, ревью Сони):
   глобальный .hero--cream ломал hero Профессии — там канон полноширинный BIG-TYPE */
@media (min-width: 900px) { .page-o-institute .hero--cream .hero__inner { grid-template-columns: 1.2fr 1fr !important; } }
.page-o-institute .hero--cream .hero__title { font-size: clamp(2rem, 3.6vw, 2.75rem) !important; }
.page-o-institute .hero--cream .hero__media { margin-top: 0 !important; background: var(--c-bg-card) !important; border-radius: var(--radius-xl) !important; padding: var(--space-6) !important; box-shadow: var(--shadow-lg) !important; }
.hero .trust-card { display: grid !important; grid-template-columns: repeat(2, 1fr); gap: 0 !important; background: transparent !important; border: none !important; box-shadow: none !important; padding: 0 !important; }  /* убрана верхняя линия — снизу её нет, симметрия */
@media (min-width: 760px){ .hero .trust-card { grid-template-columns: repeat(4, 1fr); } }
.hero .trust-card__row { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; padding: var(--space-4); border: none !important; border-right: 1px solid var(--c-border) !important; }
.hero .trust-card__row:last-of-type { border-right: none !important; }
.hero .trust-card__num { font-size: clamp(1.5rem, 2.4vw, 2rem) !important; white-space: nowrap; }
.hero .trust-card__footer { grid-column: 1 / -1; border-right: none; padding: var(--space-4) 0 0; color: var(--c-text-soft) !important; }

/* (снято 24.07, правка №44 — ревью Сони/сверка: quote-led-грид «1 колонка» и мелкая history
   остались от v2-слоя и глушили формат ДРАФТА-1. Канон v1 (draft-v1/pages.css:2058-2070):
   2 колонки грида, цитата italic 1.0625 с терракотовой полосой, history-плашка bg-soft 1rem) */
.testimonial__quote { font-family: var(--ff-heading); font-size: clamp(1.1rem, 1.7vw, 1.35rem) !important; font-style: italic; line-height: var(--lh-snug); color: var(--c-text) !important; margin: 0 0 var(--space-4); order: -1; }
.testimonial-card__quote { border-left: 4px solid var(--c-cta) !important; padding: var(--space-2) 0 var(--space-2) var(--space-5) !important; margin: 0 !important; font-style: italic !important; font-size: 1.0625rem !important; font-family: var(--ff-base) !important; line-height: 1.6 !important; color: var(--c-text) !important; }
.testimonial-card__history { background: var(--c-bg-soft); padding: var(--space-5); border-radius: var(--radius-md); font-size: 1rem !important; line-height: 1.6; color: var(--c-text) !important; margin-bottom: var(--space-5); }

/* СТАТ-БЛОК «цифры» (.features--stats) — исключён из нумер.рядов; крупные serif-числа */
.features--stats { display: grid !important; grid-template-columns: repeat(2, 1fr) !important; gap: var(--space-5) !important; border-top: 1px solid var(--c-border) !important; padding-top: var(--space-5); }
@media (min-width: 760px){ .features--stats { grid-template-columns: repeat(4, 1fr) !important; } }
.features--stats .feature { position: static !important; padding: 0 !important; border: none !important; }
.features--stats .feature::before { content: none !important; }
.features--stats .feature__icon { display: block !important; background: transparent !important; color: var(--c-cta) !important; font-family: var(--ff-heading); font-size: 3.2rem; line-height: 1; width: auto; height: auto; margin: 0 0 6px; }
.features--stats .feature h4 { font-family: var(--ff-base); font-size: var(--fs-body); margin: 0 0 4px; }

/* ЧЕК-ЛИСТ: вертикальный ✓ → 2 колонки с тире (редакторский) */
.checklist { columns: 2; column-gap: var(--space-7); list-style: none; padding: 0; }
@media (max-width: 640px){ .checklist { columns: 1; } }
.checklist li { break-inside: avoid; position: relative; padding-left: 26px; margin-bottom: var(--space-4); }
.checklist li::before { content: '—'; position: absolute; left: 0; top: 0; color: var(--c-cta); font-weight: 700; }

/* ТАРИФЫ: базовые карточки (грид-строки ломали раскладку) + редакторская полировка.
   Карточки равной высоты, цена/кнопка выровнены по низу, featured читаемо выделена. */
.tariffs .tariff { display: flex !important; flex-direction: column; height: 100%; border-radius: var(--radius-sm); }
.tariffs .tariff__name { font-family: var(--ff-heading); }
.tariffs .tariff__price { font-family: var(--ff-heading); }
.tariffs .tariff__features { flex: 1; }
.tariffs .tariff .btn { margin-top: auto; }
.tariffs .tariff--featured { border: 2px solid var(--c-cta) !important; }
/* «Популярный» бейдж (::before): был terracotta на эспрессо (низкий контраст) → terracotta-фон + белый */
.tariffs .tariff--featured::before { background: var(--c-cta) !important; color: #fff !important; }

/* CTA: центр → лево (редакторский) */
/* (снято 22.07, правка №9: cta-light снова по центру как в драфтах — левое выравнивание было новоделом сборки) */

/* === ОБЩИЕ ФИКСЫ ОС: P3 преподы / P7 форма-центр / P9 контакт-форма === */
.grid:has(.card-teacher) { align-items: stretch; }
.grid .card-teacher { height: 100%; display: flex; flex-direction: column; }
.card-teacher__programs { margin-top: auto; padding-top: var(--space-3); }
.card-teacher__programs-label { display: block; margin-bottom: var(--space-2); }
.section > .container > .catalog-quiz__form { margin-left: auto !important; margin-right: auto !important; }
.catalog-quiz__form .form-field__check { margin-bottom: var(--space-5); }
.form-field input, .lead-form__form input, .catalog-quiz__form input { padding-top: 10px !important; padding-bottom: 10px !important; }
.form-field { margin-bottom: var(--space-3); }
/* P8 · единый кроп фото преподавателей */
.card-teacher__photo img { object-fit: cover !important; object-position: center 22% !important; width: 100%; height: 100%; }
/* ROW-ALIGN: кламп заголовка карточки; min-height снят 24.07 (№34, ревью Сони) — резерв 2-й
   строки давал дыру заголовок→мета в драфт-1 карточках; выравнивание рядов держит subgrid */
.card-program__title { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.trust-card__footer { padding-left: var(--space-3); }
/* «Популярный» — реальный span вместо ::before (детектор читает фон псевдо как предок → FP) */
.tariff--featured::before { content: none !important; }
.tariff--featured { position: relative; }
.tariff__badge { position: absolute; top: -12px; left: 50%; transform: translateX(-50%); background: var(--c-cta) !important; color: #fff !important; padding: 4px 14px; border-radius: var(--radius-pill); font-size: var(--fs-small); font-weight: 700; white-space: nowrap; z-index: 2; }


/* ============================================================================
   АЙДЕНТИКА v1 (2026-07-06): белая шапка + светлый футер + подложки + голубые акценты.
   Компоновку блоков варианта (карточки/фичи/направления/hero-раскладка) НЕ трогаем.
   ============================================================================ */
/* шапка белая */
.site-header { background:#fff !important; color:var(--c-text) !important; border-bottom:1px solid var(--c-border-soft) !important; box-shadow:0 1px 8px rgba(0,0,0,.06) !important; backdrop-filter:none !important; }
.site-logo__brand { color:var(--c-primary) !important; }
.site-logo__sub { color:var(--c-text-mute) !important; }
.nav > ul > .nav-item > a { color:var(--c-navy) !important; text-transform:uppercase; letter-spacing:.02em; font-size:.8125rem; font-weight:600; }
.nav > ul > .nav-item > a:hover, .nav > ul > .nav-item > a.is-active { color:var(--c-primary) !important; border-bottom-color:var(--c-primary) !important; }
.header-phone { color:var(--c-navy) !important; } .header-phone:hover{ color:var(--c-primary) !important; }
.nav-toggle span { background:var(--c-navy) !important; }
.site-header .btn--ghost { color:var(--c-navy) !important; border-color:var(--c-border-input) !important; }
body[data-nav="catalog.html"] .nav a[href="catalog.html"],
body[data-nav="napravleniya.html"] .nav a[href="napravleniya.html"],
body[data-nav="o-institute.html"] .nav a[href="o-institute.html"],
body[data-nav="besplatno-test.html"] .nav a[href="besplatno-test.html"],
body[data-nav="blog.html"] .nav a[href="blog.html"],
body[data-nav="vypuskniki.html"] .nav a[href="vypuskniki.html"],
body[data-nav="search.html"] .nav a[href="search.html"] { color:var(--c-primary) !important; border-bottom-color:var(--c-accent) !important; }
/* section-title голубой */
.section__title { color:var(--c-primary) !important; }
/* светлый футер */
.site-footer { background:#F4F7FB !important; color:var(--c-text-soft) !important; border-top:4px solid var(--c-primary) !important; }
.site-footer h4, .footer-col h4 { color:var(--c-navy) !important; }
.site-footer a, .footer-col p, .footer-col a { color:var(--c-text-soft) !important; }
.site-footer a:hover, .footer-col a:hover { color:var(--c-primary) !important; }
.footer-col__hours, .footer-col__addr { color:var(--c-text-mute) !important; }
.footer-social a { background:var(--c-primary) !important; color:#fff !important; }
.footer-social a:hover { background:var(--c-cta) !important; }
.site-footer__bottom, .site-footer__legal { border-top-color:var(--c-border-soft) !important; color:var(--c-text-mute) !important; }
.site-footer__bottom-links a, .site-footer__legal-links a { color:var(--c-text-mute) !important; }
.site-footer__legal-links a { color:var(--c-primary) !important; }
.site-footer__bottom-links a:hover, .site-footer__legal-links a:hover { color:var(--c-primary) !important; }
.site-footer .btn--cta, .site-footer .btn--primary { color:var(--c-text-inverse) !important; }
.site-footer .btn--ghost { color:var(--c-navy) !important; }
/* коралловый «Старт» бейдж (цвет, не раскладка) */
.badge--new { background:var(--c-accent-soft) !important; color:#111111 !important; }
/* hero главной — фото-подложка + navy-градиент */
.hero--home { background-color:var(--c-navy) !important; background-image:linear-gradient(180deg, rgba(0,45,95,0.66) 0%, rgba(0,20,45,0.82) 100%), url('../img/bg/hero-institute-1920.jpg?v=2') !important; background-size:cover !important; background-position:center !important; background-repeat:no-repeat !important; }
.hero .hero__title { text-transform:uppercase; letter-spacing:.01em; }
/* светлые внутренние hero — лёгкая голубая подложка + голубой H1 */
.hero--cream, .hero-direction, .facet-hero, .event-hero, .hero-program, .page-header {
  background-color:#EEF3FA !important;
  background-image:linear-gradient(rgba(238,243,250,0.90), rgba(226,237,250,0.93)), url('../img/bg/form-institute-1600.jpg?v=2') !important;
  background-size:cover !important; background-position:center !important; background-repeat:no-repeat !important;
}
.hero-program h1, .facet-hero h1, .event-hero h1, .page-header__title { color:var(--c-primary) !important; }
/* форма #contact — подложка */
.lead-section { background-image:linear-gradient(rgba(236,242,250,0.42), rgba(236,242,250,0.42)), url('../img/bg/form-institute-1600.jpg?v=2') !important; background-size:cover !important; background-position:center !important; background-repeat:no-repeat !important; }
.lead-section .lead-form { background:rgba(255,255,255,0.93) !important; }

/* v2-fix (2026-07-06): hero у v2 СВЕТЛЫЙ (тёмный текст) — лёгкая голубая подложка, не тёмная. */
.hero--home { background-color:#EEF3FA !important;
  background-image:linear-gradient(rgba(238,243,250,0.88), rgba(226,237,250,0.92)), url('../img/bg/form-institute-1600.jpg?v=2') !important; }
.hero--home .hero__title { color:var(--c-primary) !important; }
/* footer legal — тёмно-серый на светлом (был тёплый #D8CFC4) */
.site-footer__legal, .site-footer__legal-line, .site-footer__legal span, .site-footer__legal p { color:var(--c-text-mute) !important; }

/* ============================================================================
   v1.5.0 — ПРОГРАММЫ ИЗ ДАННЫХ КЛИЕНТА (2026-07-08): учебный план + цена
   ============================================================================ */
.study-plan { border: 1px solid var(--c-border-soft); border-radius: var(--radius-lg); overflow: hidden; }
.study-plan__row { display: grid; grid-template-columns: 1fr 220px 90px; gap: var(--space-4); align-items: baseline; padding: 12px var(--space-5); border-bottom: 1px solid var(--c-border-soft); background: var(--c-bg-card); }
.study-plan__row:last-child { border-bottom: 0; }
.study-plan__name { font-size: 0.9375rem; }
.study-plan__teacher { font-size: 0.8125rem; color: var(--c-text-mute); }
.study-plan__hours { font-size: 0.9375rem; font-weight: var(--fw-semibold); text-align: right; white-space: nowrap; }
.study-plan__row--att { background: var(--c-bg-soft); }
.study-plan__row--att .study-plan__name { font-weight: var(--fw-semibold); }
.study-plan__row--total { background: var(--c-primary); }
.study-plan__row--total .study-plan__name, .study-plan__row--total .study-plan__hours { color: var(--c-text-inverse); font-weight: var(--fw-bold); }
@media (max-width: 767px) {
  .study-plan__row { grid-template-columns: 1fr 70px; }
  .study-plan__teacher { display: none; }
}
.program-price__num { font-size: 2rem; font-weight: var(--fw-bold); color: var(--c-cta); }

/* fix (гейт 2026-07-08): длинные значения фактов («Очно-заочно / заочно», «ВО/ДПО психологическое»)
   вылезали за вьюпорт на мобиле — переносим и даём тексту сжиматься. */
.about-course__fact { flex-wrap: wrap; }
.about-course__fact-num { min-width: 0; overflow-wrap: anywhere; }
.about-course__fact-num--text { font-size: 1.0625rem; }   /* текстовые значения — компактнее цифр */
.about-course__fact-lbl { min-width: 0; overflow-wrap: anywhere; }
/* теги преподавателей программы — НЕ интерактивные (не .chip: у чипов cursor:pointer и ожидание клика) */
.teacher-tag { display: inline-flex; align-items: center; padding: 6px 14px; border-radius: var(--radius-pill);
  border: 1px solid var(--c-border-soft); font-size: var(--fs-small); background: var(--c-bg-soft); color: var(--c-text-soft); }


/* ============================================================================
   ВЫТАЧИВАНИЕ КОНСТРУКЦИИ-2 по ОС оператора 2026-07-15 (3 скрина):
   (D1) строчные карточки программ прижаты к краю, бейдж клипается;
   (D2) огромный вычурный serif-italic в отзывах; (D3) бокс-рамки FAQ.
   ============================================================================ */
/* D1: строкам-карточкам — боковые отступы, бейджу — место, клип отключён */
.grid:has(> .card-program) .card-program {
  padding: var(--space-4) var(--space-5) !important;
  overflow: visible !important;
}
.card-program__head .badge { margin: 0 0 6px 0 !important; white-space: normal !important; }
.grid:has(> .card-program) { border-top: 1px solid var(--c-border); }
/* D2: цитаты отзывов — спокойный текст, не витринный serif-italic
   (24.07: .testimonial-card__quote исключён — правка №44 требует v1-курсив на vypuskniki) */
.testimonial__quote, .review-card__quote {
  font-family: var(--ff-base) !important;
  font-size: 1.0625rem !important;
  font-style: normal !important;
  line-height: 1.6 !important;
}
/* (снято 22.07, правка №3: плоский D3-стиль FAQ заменён каноном драфта-3 — кремовые плашки, см. блок выше) */

/* мобайл-320 (гейт 2026-07-15): строчная карточка программ не складывалась → столбик */
@media (max-width: 767px) {
  .grid:has(> .card-program) .card-program { display: block !important; }
  .grid:has(> .card-program) .card-program__body { display: block !important; }
}

/* SYNCED-SHARED-2026-07-15 */
/* ============================================================================
   v1.5.0 — ПРОГРАММЫ ИЗ ДАННЫХ КЛИЕНТА (2026-07-08): учебный план + цена
   ============================================================================ */
.study-plan { border: 1px solid var(--c-border-soft); border-radius: var(--radius-lg); overflow: hidden; }
.study-plan__row { display: grid; grid-template-columns: 1fr 220px 90px; gap: var(--space-4); align-items: baseline; padding: 12px var(--space-5); border-bottom: 1px solid var(--c-border-soft); background: var(--c-bg-card); }
.study-plan__row:last-child { border-bottom: 0; }
.study-plan__name { font-size: 0.9375rem; }
.study-plan__teacher { font-size: 0.8125rem; color: var(--c-text-mute); }
.study-plan__hours { font-size: 0.9375rem; font-weight: var(--fw-semibold); text-align: right; white-space: nowrap; }
.study-plan__row--att { background: var(--c-bg-soft); }
.study-plan__row--att .study-plan__name { font-weight: var(--fw-semibold); }
.study-plan__row--total { background: var(--c-primary); }
.study-plan__row--total .study-plan__name, .study-plan__row--total .study-plan__hours { color: var(--c-text-inverse); font-weight: var(--fw-bold); }
@media (max-width: 767px) {
  .study-plan__row { grid-template-columns: 1fr 70px; }
  .study-plan__teacher { display: none; }
}
.program-price__num { font-size: 2rem; font-weight: var(--fw-bold); color: var(--c-cta); }

/* fix (гейт 2026-07-08): длинные значения фактов («Очно-заочно / заочно», «ВО/ДПО психологическое»)
   вылезали за вьюпорт на мобиле — переносим и даём тексту сжиматься. */
.about-course__fact { flex-wrap: wrap; }
.about-course__fact-num { min-width: 0; overflow-wrap: anywhere; }
.about-course__fact-num--text { font-size: 1.0625rem; }   /* текстовые значения — компактнее цифр */
.about-course__fact-lbl { min-width: 0; overflow-wrap: anywhere; }
/* теги преподавателей программы — НЕ интерактивные (не .chip: у чипов cursor:pointer и ожидание клика) */
.teacher-tag { display: inline-flex; align-items: center; padding: 6px 14px; border-radius: var(--radius-pill);
  border: 1px solid var(--c-border-soft); font-size: var(--fs-small); background: var(--c-bg-soft); color: var(--c-text-soft); }

/* мобайл-320 фиксы (гейт 2026-07-15): вылеты + eyebrow-контраст на светлом hero */
@media (max-width: 480px) {
  .about-course__fact { flex-direction: column; align-items: flex-start; gap: 4px; }
  .about-course__fact-num--text { font-size: 0.9375rem; }
  .card-teacher__link { display: block !important; }
  .catalog-quiz { grid-template-columns: minmax(0,1fr) !important; }
  .catalog-quiz__text, .catalog-quiz__form { min-width: 0; max-width: 100%; }
}
/* красный eyebrow на светлых hero: #E31E24=4.01:1 на голубом тинте → #C1121F ≥5:1 */
.hero--home .hero__eyebrow.hero__eyebrow, .page-header__eyebrow { color: #C1121F !important; border-left-color: #C1121F !important; }
/* карточки преподов на главной: полная роль-регалии (клиентки просили больше информации) */
.grid--4 .card-teacher__role { -webkit-line-clamp: 6 !important; }
/* ===== ОС-батч 2026-07-16 (общие для всех конструкций) ===== */
/* (A) табы каталога: ЯВНЫЙ активный статус */
.catalog-tabs { align-items: center; }
.catalog-tab { color: var(--c-text-soft); border-bottom: 3px solid transparent; padding-bottom: 10px; }
.catalog-tab.is-active { color: var(--c-primary) !important; border-bottom-color: var(--c-cta) !important; font-weight: 700; }
.catalog-tab.is-disabled, .chip.is-disabled { opacity: .35; pointer-events: none; }
.catalog-tabs__free { margin-left: auto; white-space: nowrap; }
/* (C) грид-карточки: бейдж в углу, НЕ влияет на вертикальный поток → заголовки в ряду на одной горизонтали */
.grid--3 .card-program__head, .grid--4 .card-program__head, .routes .card-program__head {
  position: relative; padding-top: 52px !important; }
.grid--3 .card-program__head .badge, .grid--4 .card-program__head .badge, .routes .card-program__head .badge {
  position: absolute !important; top: 14px; right: 14px; left: auto !important; margin: 0 !important; }
/* (E) тарифы: СУММА выделена цветом, остальное обычным кеглем */
.tariff__price { font-size: .9375rem !important; color: var(--c-text) !important; font-weight: 400; line-height: 1.55 !important; }
.tariff__price strong { font-size: 1.375rem; color: var(--c-cta); font-weight: 700; white-space: nowrap; }
.tariff__price-note { color: var(--c-text-soft); }
.tariff__price-rassrochka { font-size: .8125rem !important; color: var(--c-text-mute) !important; font-weight: 400; }
/* (F) учебные планы: НЕ коробки-аккордеоны, а строки с разделителями */
.study-plan { border: 0 !important; border-top: 1px solid var(--c-border) !important; border-radius: 0 !important; }
.study-plan__row { background: transparent !important; border-bottom: 1px solid var(--c-border-soft) !important; }
.study-plan__row--total { background: var(--c-primary) !important; }
.modules { border-top: 1px solid var(--c-border); }
.modules .module { border: 0 !important; border-bottom: 1px solid var(--c-border-soft) !important; border-radius: 0 !important; background: transparent !important; }
.modules .module--total { background: var(--c-primary) !important; }
/* (G) двойной отступ вокруг учебного плана — ужать стык */
.section:has(.study-plan), .section:has(.modules) { padding-bottom: 48px !important; }
.section:has(.study-plan) + .section, .section:has(.modules) + .section { padding-top: 48px !important; }
/* (K) карточки направлений: счётчик прибит к низу → горизонталь ряда */
.direction-card { display: flex !important; flex-direction: column !important; height: 100%; }
.direction-card__count { margin-top: auto !important; }
/* (O) hero-мета программ v2: равные колонки с разделителями, числа на единой базовой линии,
   коралловый акцент-подчёркивание. Клиенту не нравился плоский разнобойный вид (2026-07-20). */
.hero-program__meta {
  display: grid !important;
  grid-auto-flow: column;
  grid-auto-columns: 1fr;
  gap: 0 !important;
  align-items: stretch;
  padding: var(--space-5) var(--space-4);
}
.hero-program__meta-item {
  display: flex; flex-direction: column; align-items: center; justify-content: flex-start;
  text-align: center; min-width: 0; gap: 10px;
  padding: 4px var(--space-4);
  border-right: 1px solid var(--c-border-soft);
}
.hero-program__meta-item:last-child { border-right: 0; }
.hero-program__meta-item .label {
  font-size: 0.875rem; line-height: 1.35; color: var(--c-text-soft); max-width: 20ch;
}
/* типографика числа и коралловый акцент — в авторитетном блоке ниже (метка «hero-мета v2») */
/* (N) карточки преподов с «Ведёт»: блок прибит к低у → горизонталь ряда */
.card-teacher { display: flex; flex-direction: column; }
.card-teacher .card-teacher__programs { margin-top: auto; }
/* ===== ОС-батч-11 2026-07-16: ПРАВИЛО ГОРИЗОНТАЛЕЙ — системный канон (гранулярные слоты) ===== */
/* Каждый слот карточки (заголовок/мета/описание/цена/CTA/фото/имя/роль/разделитель) — свой
   subgrid-трек ряда: слоты всех карточек ряда на одной горизонтали при любом контенте.
   grid-row у слота ЯВНЫЙ (не автоплейсмент): карточка без описания/цены не сдвигает нижние слоты. */
@supports (grid-template-rows: subgrid) {
  /* --- программы: 5 слотов (заголовок/мета/описание/цена/CTA) --- */
  .grid.grid--2 > .card-program, .grid.grid--3 > .card-program, .grid.grid--4 > .card-program,
  .grid--2 > .card-program, .grid--3 > .card-program, .grid--4 > .card-program, .routes > .card-program {
    display: grid; grid-template-rows: subgrid !important; grid-row: span 6; row-gap: 0; position: relative;
    padding-top: 52px; align-content: start; height: auto !important; }
  .grid--2 > .card-program > .card-program__head, .grid--3 > .card-program > .card-program__head,
  .grid--4 > .card-program > .card-program__head, .routes > .card-program > .card-program__head,
  .grid--2 > .card-program > .card-program__body, .grid--3 > .card-program > .card-program__body,
  .grid--4 > .card-program > .card-program__body, .routes > .card-program > .card-program__body { display: contents; }
  .grid--2 > .card-program .card-program__title, .grid--3 > .card-program .card-program__title,
  .grid--4 > .card-program .card-program__title, .routes > .card-program .card-program__title { grid-row: 1; }
  .grid--2 > .card-program .card-program__meta, .grid--3 > .card-program .card-program__meta,
  .grid--4 > .card-program .card-program__meta, .routes > .card-program .card-program__meta { grid-row: 2; }
  .grid--2 > .card-program .card-program__body > p, .grid--3 > .card-program .card-program__body > p,
  .grid--4 > .card-program .card-program__body > p, .routes > .card-program .card-program__body > p { grid-row: 3; }
  .grid--2 > .card-program .card-program__price, .grid--3 > .card-program .card-program__price,
  .grid--4 > .card-program .card-program__price, .routes > .card-program .card-program__price { display: contents !important; }
  .grid--2 > .card-program .card-program__price-now, .grid--3 > .card-program .card-program__price-now,
  .grid--4 > .card-program .card-program__price-now, .routes > .card-program .card-program__price-now {
    grid-row: 4 !important; grid-column: 1 !important; margin: 0 0 4px !important; }
  .grid--2 > .card-program .card-program__rassrochka, .grid--3 > .card-program .card-program__rassrochka,
  .grid--4 > .card-program .card-program__rassrochka, .routes > .card-program .card-program__rassrochka {
    grid-row: 5 !important; grid-column: 1 !important; margin: 0 0 12px !important; }
  .grid--2 > .card-program .card-program__cta, .grid--3 > .card-program .card-program__cta,
  .grid--4 > .card-program .card-program__cta, .routes > .card-program .card-program__cta { grid-row: 6; align-self: end; }
  /* гриды БЕЗ ценовой зоны (программы у преподавателя и т.п.): пустые треки цены не нужны */
  .grid--2:not(:has(.card-program__price)) > .card-program, .grid--3:not(:has(.card-program__price)) > .card-program,
  .grid--4:not(:has(.card-program__price)) > .card-program { grid-row: span 4; }
  .grid--2:not(:has(.card-program__price)) > .card-program .card-program__cta,
  .grid--3:not(:has(.card-program__price)) > .card-program .card-program__cta,
  .grid--4:not(:has(.card-program__price)) > .card-program .card-program__cta { grid-row: 4; }
  /* --- преподаватели: 4 слота (фото/имя/роль/«Ведёт») --- */
  .grid--2 > .card-teacher, .grid--3 > .card-teacher, .grid--4 > .card-teacher {
    display: grid; grid-template-rows: subgrid; grid-row: span 4; row-gap: 0; align-content: start; }
  .grid--2 > .card-teacher .card-teacher__link, .grid--3 > .card-teacher .card-teacher__link,
  .grid--4 > .card-teacher .card-teacher__link,
  .grid--2 > .card-teacher .card-teacher__body, .grid--3 > .card-teacher .card-teacher__body,
  .grid--4 > .card-teacher .card-teacher__body { display: contents; }
  .grid--2 .card-teacher__photo, .grid--3 .card-teacher__photo, .grid--4 .card-teacher__photo { grid-row: 1; }
  .grid--2 .card-teacher__name, .grid--3 .card-teacher__name, .grid--4 .card-teacher__name { grid-row: 2; }
  .grid--2 .card-teacher__role, .grid--3 .card-teacher__role, .grid--4 .card-teacher__role { grid-row: 3; }
  .grid--2 .card-teacher__programs, .grid--3 .card-teacher__programs, .grid--4 .card-teacher__programs {
    grid-row: 4; margin-top: 0 !important; align-self: stretch; }
  /* --- мероприятия: 7 слотов --- */
  .grid > .card-event { display: grid; grid-template-rows: subgrid; grid-row: span 7; row-gap: 0; }
  .card-event__body { display: contents; }
  /* --- батч-13 · спейсинг мероприятий (contents убил отступы body; бейдж растягивался на трек) --- */
  /* Часть 6 (З3): плашки обёрнуты в .card-event__badges — один трек subgrid при любом числе плашек (раньше каждая плашка занимала строку и сдвигала карточку). */
  .grid > .card-event .card-event__body > .card-event__badges { display: flex; flex-wrap: wrap; gap: 6px; justify-self: start; align-self: start; margin: 14px 16px 0 !important; }
  .grid > .card-event .card-event__body > .badge { justify-self: start; margin: 14px 16px 0 !important; }
  .grid > .card-event .card-event__body > .card-event__title,
  .grid > .card-event .card-event__body > h3 { margin: 10px 16px 8px !important; }
  .grid > .card-event .card-event__body > .text-soft { margin: 0 16px 12px !important; }
  .grid > .card-event .card-event__body > .event-tutor { margin: 0 16px 12px !important; align-items: flex-start !important; }
  .grid > .card-event .event-tutor__info { align-self: start; }
  .grid > .card-event .event-tutor__name { display: block; min-height: calc(2 * 1.35em); }
  .grid > .card-event .card-event__body > .fs-small { margin: 0 16px 12px !important; }
  .grid > .card-event .card-event__body > .btn { margin: 0 16px 16px !important; width: auto !important; justify-self: stretch; }
  /* --- бесплатные тесты: 7 слотов --- */
  .tests-grid > .test-card { display: grid; grid-template-rows: subgrid; grid-row: span 7; row-gap: 0; align-content: start; }
  .tests-grid .test-card > .badge { grid-row: 1; justify-self: start; }
  .tests-grid .test-card__title { grid-row: 2; }
  .tests-grid .test-card__meta { grid-row: 4; }
  .tests-grid .test-card__benefits-label { grid-row: 5; }
  .tests-grid .test-card__benefits { grid-row: 6; }
  .tests-grid .test-card > .btn { grid-row: 7; align-self: end; }
  .tests-grid .test-card > * { grid-column: 1 !important; }
  .tests-grid .test-card > .text-soft { grid-row: 3; }
  /* --- документы (о-институте): 3 слота --- */
  .docs-grid > .doc-card { display: grid; grid-template-rows: subgrid; grid-row: span 3; row-gap: 0; align-content: start; }
  .docs-grid .doc-card__body { display: contents; }
  .docs-grid .doc-card__icon { grid-row: 1; }
  .docs-grid .doc-card__title { grid-row: 2; }
  .docs-grid .doc-card__meta { grid-row: 3; }
  /* --- отзывы выпускников: 3 слота --- */
  .grid--2 > .testimonial-card, .grid--3 > .testimonial-card { display: grid; grid-template-rows: subgrid; grid-row: span 3; row-gap: 0; align-content: start; }
  .grid--2 .testimonial-card__head, .grid--3 .testimonial-card__head { grid-row: 1; align-items: start !important; }
  .grid--2 .testimonial-card__history, .grid--3 .testimonial-card__history { grid-row: 2; }
  .grid--2 .testimonial-card__quote, .grid--3 .testimonial-card__quote { grid-row: 3; }
  /* --- батч-12 · СПЕЙСИНГ-СЛОЙ: паддинги и вертикальный ритм, умершие вместе с display:contents --- */
  .grid--2 > .card-program, .grid--3 > .card-program, .grid--4 > .card-program, .routes > .card-program {
    padding: 52px var(--space-5) var(--space-5) !important; }
  .grid--2 > .card-program .card-program__title, .grid--3 > .card-program .card-program__title,
  .grid--4 > .card-program .card-program__title, .routes > .card-program .card-program__title {
    min-height: 0 !important; margin: 0 0 12px !important; }
  .grid--2 > .card-program .card-program__meta, .grid--3 > .card-program .card-program__meta,
  .grid--4 > .card-program .card-program__meta, .routes > .card-program .card-program__meta {
    min-height: 0 !important; margin: 0 0 12px !important; }
  .grid--2 > .card-program .card-program__body > p, .grid--3 > .card-program .card-program__body > p,
  .grid--4 > .card-program .card-program__body > p, .routes > .card-program .card-program__body > p {
    margin: 0 0 16px !important; align-self: stretch; height: auto; }
  .grid--2 > .card-program .card-program__cta, .grid--3 > .card-program .card-program__cta,
  .grid--4 > .card-program .card-program__cta, .routes > .card-program .card-program__cta { margin-top: auto !important; }
  .grid--2 > .card-teacher .card-teacher__name, .grid--3 > .card-teacher .card-teacher__name,
  .grid--4 > .card-teacher .card-teacher__name { margin: 14px var(--space-4) 4px !important; }
  .grid--2 > .card-teacher .card-teacher__role, .grid--3 > .card-teacher .card-teacher__role,
  .grid--4 > .card-teacher .card-teacher__role { margin: 0 var(--space-4) 12px !important; }
  .grid--2 > .card-teacher .card-teacher__specs, .grid--3 > .card-teacher .card-teacher__specs,
  .grid--4 > .card-teacher .card-teacher__specs { margin: 4px var(--space-4) var(--space-4) !important; }
}
/* бейдж программ — в углу карточки, вне потока слотов (работает и при display:contents шапки) */
.grid--2 .card-program__head, .grid--3 .card-program__head, .grid--4 .card-program__head,
.routes .card-program__head { position: relative; }
.grid--2 .card-program .badge, .grid--3 .card-program .badge, .grid--4 .card-program .badge,
.routes .card-program .badge { position: absolute !important; top: 14px; right: 14px; left: auto !important; margin: 0 !important; }
/* тарифы: CTA прибита к низу карточки */
.tariff .btn { margin-top: auto; }
/* hero-мета v2 (АВТОРИТЕТНЫЙ блок числа): числовые значения крупные-акцентные, текстовые — компактнее;
   все по единой нижней линии (align-items:flex-end + min-height), коралловое подчёркивание под числом. */
.hero-program__meta-item { text-align: center; align-items: center; }
.hero-program__meta-item .num { position: relative; font-size: 1.875rem !important; line-height: 1.2; min-height: 2.4em;
  color: var(--c-primary); display: flex; align-items: flex-end; justify-content: center; margin: 0 !important; }
.hero-program__meta-item .num--text { font-size: 1.1875rem !important; line-height: 1.3; overflow-wrap: anywhere; }
.hero-program__meta-item .num:not(.num--text)::after { content: ""; position: absolute; left: 50%; bottom: -7px;
  transform: translateX(-50%); width: 30px; height: 3px; border-radius: 2px; background: var(--c-cta); }
/* checklist: канон = navy-кружок + белая галочка по центру; специфичность ul. перебивает драфт-локальные красные варианты */
ul.checklist { display: block !important; }
ul.checklist li { display: block !important; background: transparent !important; border-radius: 0 !important;
  padding: 0 0 0 36px !important; position: relative; margin: 0 0 12px 0 !important; line-height: 1.5; }
ul.checklist li::before { content: '' !important; position: absolute !important; left: 0 !important; top: 2px !important;
  width: 24px !important; height: 24px !important; background: var(--c-primary) !important; border-radius: 999px !important;
  color: transparent !important; transform: none !important; box-shadow: none !important; font-size: 0 !important; }
ul.checklist li::after { content: '✓' !important; position: absolute !important; left: 0 !important; top: 2px !important;
  width: 24px !important; height: 24px !important; display: flex !important; align-items: center !important;
  justify-content: center !important; color: #fff !important; font-size: 13px !important; font-weight: 700 !important;
  background: transparent !important; transform: none !important; }
/* ===== батч-14 · МОБИЛЬНЫЙ КАНОН В SHARED (жил только в v1-локальном блоке — v2/v3 голые) ===== */
@media (max-width: 640px) {
  /* страховка: никакого горизонтального скролла нигде */
  html, body { overflow-x: clip; }
  /* скрытое мобильное меню не должно задавать scrollWidth (UL был 616px) */
  .mobile-nav, .mobile-nav ul, .mobile-nav li, .mobile-nav details, .mobile-nav a {
    max-width: 100vw !important; min-width: 0 !important; }
  /* hero: одна колонка, контент не шире экрана */
  .hero__inner { display: grid !important; grid-template-columns: minmax(0, 1fr) !important; }
  .hero__inner > *, .hero__inner > div > * { min-width: 0 !important; max-width: 100% !important; }
  .hero__title, .hero .hero__title, main .hero .hero__title {
    font-size: clamp(26px, 8.5vw, 32px) !important; overflow-wrap: break-word; max-width: none !important; }
  .hero__sub { font-size: 1.0625rem !important; overflow-wrap: break-word; }
  /* кнопки герой-блока: одинаковые, на всю ширину */
  .hero__ctas { display: flex !important; flex-direction: column !important; align-items: stretch !important; gap: 10px; }
  .hero__ctas .btn { width: 100% !important; max-width: 100% !important; white-space: normal !important; }
  .hero__meta { flex-wrap: wrap; min-width: 0; }
  .hero__media, .hero__trust-card, .trust-card { max-width: 100% !important; min-width: 0 !important; }
  .trust-card { grid-template-columns: minmax(0,1fr) minmax(0,1fr) !important; width: 100% !important; }
  .trust-card__row { min-width: 0 !important; }
  /* «Не уверены, какое обучение подойдёт» — квиз в столбик */
  .catalog-quiz { display: grid !important; grid-template-columns: minmax(0, 1fr) !important; max-width: 100% !important; }
  .catalog-quiz > *, .catalog-quiz__text, .catalog-quiz__form, .catalog-quiz__options { min-width: 0 !important; max-width: 100% !important; }
  .catalog-quiz .btn { width: 100% !important; }
  /* «Выберите свой маршрут» — в столбик */
  .routes { grid-template-columns: minmax(0, 1fr) !important; }
  .routes > *, .route-card { min-width: 0 !important; max-width: 100% !important; }
  /* сетки узких экранов: одна колонка (страховка для v2/v3, у v1 было локально) */
  .grid--2, .grid--3, .grid--4, .features, .reviews, .tests-grid, .docs-grid,
  #catalog-grid, #teachers-grid, #blog-grid { grid-template-columns: minmax(0, 1fr) !important; }
  /* витрина uikit: сайдбар не шире экрана */
  .uikit-sidebar { position: static !important; width: 100% !important; max-width: 100% !important; }
  /* --- добивка перескана 320 --- */
  .catalog-tabs, .catalog-filters, .catalog-facets, .catalog-quiz__options {
    flex-wrap: wrap !important; max-width: 100% !important; min-width: 0 !important; }
  .catalog-tab, .chip { max-width: 100% !important; white-space: normal !important; }
  .catalog-tabs__free { margin-left: 0 !important; }
  .hero .trust-card { grid-template-columns: minmax(0,1fr) minmax(0,1fr) !important;
    width: 100% !important; max-width: 100% !important; column-gap: 12px; }
  .card-teacher__link { display: block !important; grid-template-columns: none !important; }
  .sveden-table { display: block !important; overflow-x: auto !important; max-width: 100% !important; }
  main .btn { max-width: 100% !important; white-space: normal !important; }
  .direction-card, .card-teacher, .card-program { max-width: 100% !important; min-width: 0 !important; }
  .grid:has(> .card-program) article.card-program { grid-template-columns: minmax(0,1fr) !important; }
  main h1, main h2, main h3, main p, main li { overflow-wrap: break-word; }
  main code { white-space: pre-wrap !important; overflow-wrap: anywhere; }
  .page-header, .page-header * { max-width: 100% !important; min-width: 0 !important; }
  /* --- добивка-2: перебитые драфт-слоями правила (специфичность выше) --- */
  .grid--2 > .card-teacher .card-teacher__link, .grid--3 > .card-teacher .card-teacher__link,
  .grid--4 > .card-teacher .card-teacher__link { display: block !important; grid-template-columns: none !important; }
  .grid--2 > .card-teacher .card-teacher__photo, .grid--3 > .card-teacher .card-teacher__photo,
  .grid--4 > .card-teacher .card-teacher__photo { width: 100% !important; height: auto !important; min-height: 0 !important; }
  main .hero .trust-card, .hero .trust-card {
    display: grid !important; grid-template-columns: minmax(0,1fr) minmax(0,1fr) !important;
    width: 100% !important; max-width: 100% !important; }
  .trust-card__num, .trust-card__lbl { white-space: normal !important; overflow-wrap: anywhere !important; min-width: 0 !important; font-size: 1.125rem !important; }
  .trust-card__lbl { font-size: 12px !important; }
  .uikit-main, .page-header { width: auto !important; }
  /* добивка-3: v2-грид тичеров minmax(330px,...) и guard-линк перебивали мобильный канон */
  .grid:has(.card-teacher) { grid-template-columns: minmax(0, 1fr) !important; }
  .grid--2 > article.card-teacher .card-teacher__link, .grid--3 > article.card-teacher .card-teacher__link,
  .grid--4 > article.card-teacher .card-teacher__link { display: block !important; grid-template-columns: none !important; }
  .uikit-layout { display: block !important; }
  body { display: block !important; } /* uikit: инлайн body{grid 240px|1fr} распирал страницу; у остальных body и так block */
  .uikit-sidebar { height: auto !important; position: static !important; }
  main.uikit-main { width: 100% !important; max-width: 100% !important; margin: 0 !important;
    padding: 24px 16px !important; box-sizing: border-box !important; }
  main.uikit-main > header.page-header, main.uikit-main .page-header * { max-width: 100% !important; min-width: 0 !important; }
  .uikit-section { max-width: 100% !important; overflow-x: clip; }
  main.uikit-main h1, main.uikit-main h2, main.uikit-main h3 { overflow-wrap: anywhere !important; }
  .uikit-main .page-header, .page-header { margin-left: 0 !important; margin-right: 0 !important; padding-left: 16px !important; padding-right: 16px !important; }
}
/* ===== батч-13 · мобилка: НИЧТО не упирается в грань экрана (контент-паддинг контейнеров) ===== */
@media (max-width: 640px) {
  .container { padding-left: 16px !important; padding-right: 16px !important; }
}
/* батч-15 · меню: пункты-направления без своих страниц (некликабельные, приглушены) */
.nav-dropdown__soon { display: block; padding: 8px 14px; color: var(--c-text-mute); cursor: default; font-size: 0.9375rem; }
.mobile-nav .nav-dropdown__soon { padding: 10px 0; }
/* END-SHARED-PROGRAMS-BLOCK */

/* ===== ОС-батч 2026-07-16 · v2-слой (специфичность выше shared) ===== */
/* строчные карточки: бейдж остаётся В ПОТОКЕ (в строке нет соседей по горизонтали) */
.grid:has(> .card-program) article.card-program .card-program__head { padding-top: 0 !important; }
.grid:has(> .card-program) article.card-program .badge { position: static !important; top: auto; right: auto; margin: 0 0 6px 0 !important; }
/* (I) строчные карточки: контент по вертикальному центру, без пустого низа; мета ближе к заголовку */
.grid:has(> .card-program) .card-program { align-items: center !important; }
.grid:has(> .card-program) .card-program__meta { margin-top: 4px !important; }
.grid:has(> .card-program) .card-program__title { margin-bottom: 4px !important; }
/* (снято 23.07 по ревизии правок №19/25/36: глушители рамок остались от editorial-списков
   и убивали карточную обвязку .feature из драфтов — рамки возвращены базой) */
.features { border-top: 0 !important; border-bottom: 0 !important; }
/* (11) checklist: канон = navy-кружок + белая галочка; красный плоский ::before-вариант убит */
.checklist li { display: block !important; background: transparent !important; border-radius: 0 !important;
  padding: 0 0 0 36px !important; position: relative; margin: 0 0 12px 0 !important; line-height: 1.5; }
.checklist { display: block !important; }
.checklist li::before { content: '' !important; position: absolute !important; left: 0 !important; top: 2px !important;
  width: 24px !important; height: 24px !important; background: var(--c-primary) !important; border-radius: 999px !important;
  color: transparent !important; transform: none !important; }
.checklist li::after { content: '✓' !important; position: absolute !important; left: 0 !important; top: 2px !important;
  width: 24px !important; height: 24px !important; display: flex !important; align-items: center !important;
  justify-content: center !important; color: #fff !important; font-size: 13px !important; font-weight: 700 !important; }
/* (12) trust-полоса hero: трек не уже контента, текст-значения компактнее */
.hero .trust-card { grid-template-columns: repeat(4, auto) !important; width: fit-content; max-width: 100%;
  column-gap: 8px; }
.hero .trust-card__row { min-width: 0; }
.hero .trust-card__num { overflow-wrap: anywhere; font-size: 1.5rem !important; }
.hero .trust-card__label { font-size: 12px; line-height: 1.35; overflow-wrap: anywhere; }
/* (J) редакторский ритм: секции плотнее (огромные отступы между блоками) */
@media (min-width: 1024px) { :root { --section-py: 72px; } }

/* ===== ОС-батч-11 · v2-слой: строчные карточки — убить пустые row-треки (лишняя половина высоты) ===== */
.grid:has(> .card-program) .card-program { grid-template-rows: auto !important; row-gap: 0 !important; }

/* ===== батч-11 ит.2 · защита v2-СТРОК от гранулярного subgrid-канона (строки — не грид-ряды) ===== */
.grid:has(> .card-program) article.card-program {
  grid-row: auto !important; grid-template-rows: auto !important; row-gap: 0 !important;
  padding-top: 16px !important; }
.grid:has(> .card-program) article.card-program > .card-program__head { display: block !important; position: static !important; }
.grid:has(> .card-program) article.card-program > .card-program__body { display: contents !important; }
.grid:has(> .card-program) article.card-program .card-program__title { grid-row: auto !important; }
.grid:has(> .card-program) article.card-program .card-program__meta { grid-row: auto !important; }
.grid:has(> .card-program) article.card-program .card-program__body > p { grid-row: auto !important; }
.grid:has(> .card-program) article.card-program .card-program__price { grid-row: auto !important; align-self: center !important; }
.grid:has(> .card-program) article.card-program .card-program__cta { grid-row: auto !important; align-self: center !important; }

/* ===== батч-11 ит.2 · защита v2-компоновки card-teacher (фото 124px слева): link — грид, не contents ===== */
.grid--2 > .card-teacher .card-teacher__link, .grid--3 > .card-teacher .card-teacher__link,
.grid--4 > .card-teacher .card-teacher__link {
  display: grid !important; grid-template-columns: 124px 1fr; align-items: start; grid-row: 1; }
.grid--2 > .card-teacher .card-teacher__photo, .grid--3 > .card-teacher .card-teacher__photo,
.grid--4 > .card-teacher .card-teacher__photo { aspect-ratio: 1; min-height: 124px; height: 100%; grid-row: auto; }
.grid--2 > .card-teacher .card-teacher__body, .grid--3 > .card-teacher .card-teacher__body,
.grid--4 > .card-teacher .card-teacher__body { display: flex !important; flex-direction: column; gap: 6px;
  text-align: left; padding: var(--space-4) var(--space-4) var(--space-4) var(--space-5); }
.grid--2 > .card-teacher .card-teacher__name, .grid--3 > .card-teacher .card-teacher__name,
.grid--4 > .card-teacher .card-teacher__name { grid-row: auto; min-height: calc(2 * 1.35em); }
.grid--2 > .card-teacher .card-teacher__role, .grid--3 > .card-teacher .card-teacher__role,
.grid--4 > .card-teacher .card-teacher__role { grid-row: auto; }
.grid--2 > .card-teacher, .grid--3 > .card-teacher, .grid--4 > .card-teacher { grid-row: span 4; }

/* батч-11 ит.5 · v2: анонимный препод — роль-заголовок опускается на общую линию ролей ряда */
.grid--2 > .card-teacher--anon .card-teacher__role, .grid--3 > .card-teacher--anon .card-teacher__role,
.grid--4 > .card-teacher--anon .card-teacher__role { margin-top: calc(2 * 1.35 * 1.0625rem + 6px) !important; }

/* батч-12 · v2: сброс shared-маргинов преподов (у v2 паддинги живы на body) и паддинга строк */
.grid--2 > .card-teacher .card-teacher__name, .grid--3 > .card-teacher .card-teacher__name,
.grid--4 > .card-teacher .card-teacher__name { margin: 0 0 4px !important; }
.grid--2 > .card-teacher .card-teacher__role, .grid--3 > .card-teacher .card-teacher__role,
.grid--4 > .card-teacher .card-teacher__role { margin: 0 !important; }
.grid--2 > .card-teacher .card-teacher__specs, .grid--3 > .card-teacher .card-teacher__specs,
.grid--4 > .card-teacher .card-teacher__specs { margin: 4px 0 0 !important; }
.grid:has(> .card-program) article.card-program { padding: 16px 24px !important; }

/* батч-12 ит.2 · v2: шкала строк (бейдж/заголовок 8px) + anon-роль поверх контр-сброса (каскад) */
.grid:has(> .card-program) article.card-program .badge { margin: 0 0 8px !important; }
.grid:has(> .card-program) article.card-program .card-program__title { margin: 0 0 8px !important; }
.grid--2 > .card-teacher--anon .card-teacher__role, .grid--3 > .card-teacher--anon .card-teacher__role,
.grid--4 > .card-teacher--anon .card-teacher__role { margin: calc(2 * 1.35 * 1.0625rem + 10px) 0 0 !important; }

/* батч-12 ит.3 · v2: мета строк без своего верхнего отступа (зазор задаёт title mb 8) */
.grid:has(> .card-program) article.card-program .card-program__meta { margin-top: 0 !important; }

/* батч-12 ит.4 · v2: в СТРОКАХ цена остаётся боксом (shared contents — только для грид-карточек) */
.grid:has(> .card-program) article.card-program .card-program__price { display: flex !important; }
.grid:has(> .card-program) article.card-program .card-program__price-now,
.grid:has(> .card-program) article.card-program .card-program__rassrochka { grid-row: auto !important; margin: 0 !important; }

/* ############################################################################
   FINAL-СЛОЙ (2026-07-20) — сборка по выбору клиентки из конструктора:
   база v2 (цвет/шрифт/углы/hero/направления/feature) + page-shell и карточка
   программы из v1, преподаватель из v3, отзыв с белой историей, CTA с фото,
   компактная мобильная hero-мета. Источник: СПИСОК-ИЗМЕНЕНИЙ-final.md.
   ############################################################################ */

/* ===== §1 Page-shell — конструкция v1 (гашение v2-блока 2387–2389) ===== */
.page-header { border-bottom: 0 !important; padding: 20px 0 40px !important; }
.page-header__eyebrow { color: #c1121f !important; border-left: 3px solid var(--c-cta) !important;
  padding-left: 10px !important; font-family: var(--ff-base); }
.page-header__title { font-size: clamp(2rem, 4.5vw, 3rem); }  /* №47 (24.07): формула из драфта-2 — прежняя (1.75rem/3.6vw) отставала от v2 на ширинах <1333px */  /* правка №47 (22.07): H1 контентных страниц = 48px как в драфте-2 */

/* ===== §2 Карточка программы — v1-ГРИД вместо v2-строк (все списки программ) ===== */
.grid:has(> .card-program) { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)) !important;
  gap: 24px !important; }
/* правки №26-27 (22.07): сетка уважает разметку как в драфте-1 — grid--2 даёт 2 колонки, а не auto-fill 3 */
@media (min-width: 768px) {
  .grid--2:has(> .card-program) { grid-template-columns: repeat(2, minmax(0,1fr)) !important; }
  .grid--3:has(> .card-program) { grid-template-columns: repeat(3, minmax(0,1fr)) !important; }
}
@supports (grid-template-rows: subgrid) {
  .grid:has(> .card-program) article.card-program {
    display: grid !important; grid-template-columns: none !important;
    grid-template-rows: subgrid !important; grid-row: span 6 !important; row-gap: 0 !important;
    position: relative; padding: 52px var(--space-5) var(--space-5) !important;
    border: 1px solid var(--c-border) !important; border-left: 1px solid var(--c-border) !important;
    border-radius: 8px !important;  /* №26-27 (24.07): v1-канон ровно 8px (--radius-md финала = 4px, не совпадает) */
    align-content: start; align-items: stretch !important; height: auto !important; }
  /* №26-27 (24.07): hover-рамка карточки как в драфте-1 — синяя (глушилась border !important выше) */
  .grid:has(> .card-program) article.card-program:hover,
  .grid:has(> .card-program) article.card-program:focus-within {
    border-color: var(--c-primary) !important; }
  .grid:has(> .card-program) article.card-program > .card-program__head { display: contents !important; position: static !important; }
  .grid:has(> .card-program) article.card-program > .card-program__body { display: contents !important; }
  .grid:has(> .card-program) article.card-program .card-program__title {
    grid-row: 1 !important; grid-column: 1 !important; margin: 0 0 12px !important;
    min-height: 0 !important; align-self: stretch !important; height: auto !important;
    /* v1-механика: title-бокс растянут на общий трек ряда; min-height:0 (24.07, №34) —
       резерв 2.6em дырявил 1-строчные заголовки, ряд выравнивает subgrid-трек */
    display: block !important; -webkit-line-clamp: none !important; overflow: visible !important; }
  .grid:has(> .card-program) article.card-program .card-program__meta {
    grid-row: 2 !important; grid-column: 1 !important; margin: 0 0 12px !important; margin-top: 0 !important; min-height: 0 !important; }
  .grid:has(> .card-program) article.card-program .card-program__body > p {
    grid-row: 3 !important; grid-column: 1 !important; display: block !important; margin: 0 0 16px !important; align-self: stretch; height: auto; }
  .grid:has(> .card-program) article.card-program .card-program__price { display: contents !important; }
  .grid:has(> .card-program) article.card-program .card-program__price-now {
    grid-row: 4; margin: 0 0 4px !important; }
  .grid:has(> .card-program) article.card-program .card-program__rassrochka {
    grid-row: 5; margin: 0 0 12px !important; }
  .grid:has(> .card-program) article.card-program .card-program__cta {
    grid-row: 6 !important; grid-column: 1 !important; align-self: end !important; justify-self: stretch; width: 100% !important; }
  /* гриды без ценовой зоны (страницы преподавателей) — 4 трека */
  .grid:has(> .card-program):not(:has(.card-program__price)) article.card-program {
    grid-template-rows: subgrid !important; grid-row: span 4 !important; }
  .grid:has(> .card-program):not(:has(.card-program__price)) article.card-program .card-program__cta { grid-row: 4 !important; }
}
/* бейдж — в угол карточки (v1-грид-канон, вместо строчного «в потоке») */
.grid:has(> .card-program) article.card-program .badge {
  position: absolute !important; top: 14px; right: 14px; left: auto !important; margin: 0 !important; }
/* v2-строчный акцент «левая терракотовая полоса» — не для грид-карточек */
.grid:has(> .card-program) article.card-program { border-left: 1px solid var(--c-border) !important; }

/* ===== §3 Карточка преподавателя — v3: круглый аватар по центру, оба канона ===== */
.card-teacher { text-align: center !important; }
.card-teacher__photo { width: 128px !important; height: 128px !important; border-radius: 50% !important;
  margin: var(--space-5) auto var(--space-3) !important; overflow: hidden; aspect-ratio: auto !important;
  min-height: 0 !important; }
.card-teacher__photo img { width: 100%; height: 100%; object-fit: cover; }
.card-teacher__body { text-align: center !important; display: block !important; padding: 0 var(--space-4) !important; }
.card-teacher__name { margin: 0 var(--space-4) 4px !important; min-height: 0 !important; }
.card-teacher__role { margin: 0 var(--space-4) 12px !important; }
.card-teacher__specs { justify-content: center !important; margin: 4px var(--space-4) var(--space-4) !important; }
.card-teacher__specs li { background: rgba(0,58,120,0.08) !important; color: var(--c-primary) !important; }
.card-teacher__programs { text-align: left; }
@supports (grid-template-rows: subgrid) {
  .grid--2 > .card-teacher .card-teacher__link, .grid--3 > .card-teacher .card-teacher__link,
  .grid--4 > .card-teacher .card-teacher__link,
  .grid--2 > .card-teacher .card-teacher__body, .grid--3 > .card-teacher .card-teacher__body,
  .grid--4 > .card-teacher .card-teacher__body { display: contents !important; }
  .grid--2 .card-teacher__photo, .grid--3 .card-teacher__photo, .grid--4 .card-teacher__photo { justify-self: center; }
  .grid--2 > .card-teacher .card-teacher__name, .grid--3 > .card-teacher .card-teacher__name,
  .grid--4 > .card-teacher .card-teacher__name { justify-self: center; }
  .grid--2 > .card-teacher .card-teacher__role, .grid--3 > .card-teacher .card-teacher__role,
  .grid--4 > .card-teacher .card-teacher__role { justify-self: center; }
}

/* ===== §4 Отзыв — история на БЕЛОЙ подложке ===== */
.testimonial-card__history { background: var(--c-bg-soft) !important; border: none !important; }  /* возврат к утверждённому v2: кремовая подложка без рамки (белую добавили в сборке 5ef38db — новодел) */

/* (снято 22.07, правки №9/№21/№39: фото-фон у cta-light убран — по драфтам CTA бежевая без фото;
   общий канон CTA — открытый вопрос ут.29, зафиксирован в КОНФЛИКТАХ) */
.cta-light { background-color: #F3EFE9 !important; background-image: none !important; }

/* ===== §6 Мобильная hero-мета-плашка — компактные строки (скрин клиентки 20.07) ===== */
@media (max-width: 640px) {
  .hero-program__meta { display: grid !important; grid-auto-flow: row !important;
    grid-auto-columns: auto !important; grid-template-columns: minmax(0,1fr) !important;
    row-gap: 10px !important; padding: 16px !important; }
  .hero-program__meta-item { display: flex !important; flex-direction: row !important;
    align-items: baseline !important; justify-content: flex-start !important; gap: 8px;
    text-align: left !important; min-width: 0;
    border-right: 0 !important; border-bottom: 1px solid var(--c-border-soft); padding: 0 0 10px !important; }
  /* убрано: старое правило крало нижний отступ у последней плитки (padding-bottom:0) */
  .hero-program__meta-item .num { font-size: 1.25rem !important; min-height: 0 !important;
    display: inline-flex !important; align-items: baseline !important; justify-content: flex-start !important;
    line-height: 1.25 !important; white-space: nowrap; }
  .hero-program__meta-item .num::after { display: none !important; }  /* акцент только на десктопе */
  .hero-program__meta-item .num--text { font-size: 1.0625rem !important; white-space: normal; }
  .hero-program__meta-item .label { font-size: 0.8125rem; }
}

/* FINAL-дожим: (а) v1-кегль заголовка карточки программы (v2-крупный раздувал title-трек — VR);
   (б) anon-препод: v2-формула роли не нужна при v3-треках (роль в своём треке) */
.grid:has(> .card-program) article.card-program .card-program__title { font-size: var(--fs-h4) !important; line-height: 1.3 !important; }
/* явные треки преподов (v2-guard включал автоплейсмент — у анона роль падала в трек имён) */
.grid--2 > .card-teacher .card-teacher__photo, .grid--3 > .card-teacher .card-teacher__photo,
.grid--4 > .card-teacher .card-teacher__photo { grid-row: 1 !important; }
.grid--2 > .card-teacher .card-teacher__name, .grid--3 > .card-teacher .card-teacher__name,
.grid--4 > .card-teacher .card-teacher__name { grid-row: 2 !important; }
.grid--2 > .card-teacher .card-teacher__role, .grid--3 > .card-teacher .card-teacher__role,
.grid--4 > .card-teacher .card-teacher__role { grid-row: 3 !important; margin-top: 0 !important; }
.grid--2 > .card-teacher .card-teacher__specs, .grid--3 > .card-teacher .card-teacher__specs,
.grid--4 > .card-teacher .card-teacher__specs { grid-row: 4 !important; align-self: start;
  margin: 4px var(--space-4) var(--space-4) !important; }
.grid--2 > .card-teacher .card-teacher__programs, .grid--3 > .card-teacher .card-teacher__programs,
.grid--4 > .card-teacher .card-teacher__programs { grid-row: 4 !important; }

/* ===== расширение final: направления + преподаватели ===== */
@media (min-width: 700px) { .checklist--2col { display: grid; grid-template-columns: 1fr 1fr; gap: 0 32px; } }
.card-teacher__prog--plain { color: var(--c-text-soft); text-decoration: none; cursor: default; }
.card-teacher__programs-label { display:block; font-size: var(--fs-xsmall); letter-spacing:.06em; text-transform:uppercase; color: var(--c-text-mute); margin: 0 0 6px; font-weight: var(--fw-semibold); }
.teacher-hero__photo.card-teacher__photo { width: 180px; height: 180px; aspect-ratio: 1 !important; }

/* ===== расширение final · фиксы ревизора ===== */
/* CTA: подзаголовок тёмный на бежевом (был белый .section__sub — невидим) */
.cta-light .section__sub, .cta-light p.section__sub { color: var(--c-text-soft) !important; }
.cta-light .section__title { color: var(--c-primary) !important; }
/* аватар-заглушка виден в круглой фото-плашке preподов без фото */
.card-teacher__photo { position: relative; display: flex; align-items: center; justify-content: center; background: var(--c-bg-soft); }
.card-teacher__avatar { width: 46%; height: 46%; fill: #bfbfbf; display: block; }
.teacher-hero__photo .card-teacher__avatar { width: 50%; height: 50%; }

/* инициалы-аватар преподов без фото */
.card-teacher__initials { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;
  font-family: var(--ff-heading); font-weight: 700; color: #fff !important; background: var(--c-primary);
  font-size: 2rem; letter-spacing: .02em; }  /* navy + white = 12.61:1; !important бьёт .section--soft span{color:inherit} (0,2,1) */
.teacher-hero__photo .card-teacher__initials { font-size: 3.25rem; }

/* ===== «Программы» компактное мега-меню — унифицировано с nav-dropdown (hover-ячейка, типографика).
   короткие имена · 4 колонки · лёгкие разделители · мостик под щель 13px. 2026-07-21 ===== */
.nav-item--mm { position: static; }
.mm { position: absolute; left: 0; right: 0; top: 100%; background: #fff;
  border-top: 1px solid var(--c-border-soft); box-shadow: 0 8px 24px rgba(0,0,0,0.12); z-index: 200;
  opacity: 0; visibility: hidden; transform: translateY(8px); transition: opacity 200ms, transform 200ms, visibility 200ms; }
.nav-item--mm:hover .mm, .nav-item--mm:focus-within .mm { opacity: 1; visibility: visible; transform: translateY(0); }
.mm::before { content: ""; position: absolute; left: 0; right: 0; top: -16px; height: 16px; }  /* мостик через щель */
.mm__inner { display: grid; grid-template-columns: 1fr 1fr; gap: 0; padding: 20px 0 6px; }
.mm__block { padding-right: 40px; }
.mm__block--pk { padding-right: 0; padding-left: 40px; border-left: 1px solid var(--c-border-soft); }
.mm__h { display: block; font-family: var(--ff-heading); font-weight: 700; font-size: .8125rem;
  text-transform: uppercase; letter-spacing: .04em; color: var(--c-text-mute); margin: 0 12px 8px; }
.mm__cols { display: grid; grid-template-columns: 1fr 1fr; column-gap: 16px; }
/* Часть 6.1 (Нина 03.11): подписи меню на компьютере не обрезаются — переносятся на столько строк, сколько нужно; на телефоне (≤1023) своё правило ниже. */
.mm__it { display: block; white-space: normal; overflow: visible; text-overflow: clip; overflow-wrap: anywhere;
  line-height: 1.3; align-self: start;
  font-size: .9375rem; font-weight: 500; color: var(--c-text); padding: 9px 12px; border-radius: 6px;
  border-bottom: 1px solid rgba(0,32,64,.06); }
.mm__it:hover { background: var(--c-bg-soft); color: var(--c-primary); }   /* hover-ячейка как в nav-dropdown */
.mm__star { color: var(--c-cta); margin-right: 5px; }
.mm__foot { display: flex; gap: 24px; flex-wrap: wrap; align-items: baseline; padding: 12px 12px 16px; }
.mm__foot a { font-size: .9375rem; color: var(--c-text-soft); padding: 4px 0; }
.mm__foot a:hover { color: var(--c-primary); }
.mm__foot .mm__all { color: var(--c-primary) !important; font-weight: 700; }
/* .mm на мобиле управляется drawer-аккордеоном (см. ниже) */

/* FIX: кнопка «Войти» (btn--ghost) на белой шапке — hover не белит текст (был белый на белом → пропадала). 2026-07-21 */
.site-header .btn--ghost:hover { color: var(--c-navy) !important; background: var(--c-bg-soft) !important; border-color: var(--c-primary) !important; }

/* ===== Светлые плитки — hero-program__meta: кремовые карточки, тонкая рамка,
   иконка+подпись в строке, число под ними (макет клиента 2026-07-21). ===== */
.hero-program__meta { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(158px, 1fr)) !important;
  grid-auto-flow: row !important; gap: 14px !important; padding: 0 !important; align-items: stretch !important;
  background: transparent !important; }  /* прозрачные зазоры — сквозь них виден фон hero */
.hero-program__meta-item { background: var(--c-bg-soft) !important; border: 1px solid var(--c-border-soft) !important;
  border-radius: 14px !important; padding: 18px 18px 20px !important; display: flex !important; flex-direction: column !important;
  align-items: center !important; justify-content: center !important; gap: 8px !important;
  text-align: center !important; min-height: 0 !important; }
  /* ПРАВИЛО ГОРИЗОНТАЛЕЙ: область подписи фикс. высоты, подпись прижата к её низу → все подписи
     на одной нижней линии; число сразу под ней → все числа на одной верхней линии (незав. от 1/2 строк). */
.hero-program__meta-item .hpm__head { min-height: 2.7em; display: flex !important; align-items: center;
  justify-content: center; gap: 8px; }
.hero-program__meta-item .hpm__num, .hero-program__meta-item .hpm__num--text {
  min-height: 3.4rem; display: flex; align-items: center; justify-content: center; }  /* rem (не em) — область числа одинакова для крупных цифр и текстовых значений */
.hpm__ic { display: inline-flex; color: var(--c-cta); flex-shrink: 0; }
.hpm__ic svg { width: 20px; height: 20px; display: block; }
.hpm__lbl { font-size: .6875rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  color: var(--c-text-mute); line-height: 1.25; text-align: center; }
.hpm__num { font-family: var(--ff-heading); font-weight: 700; font-size: 1.875rem; color: var(--c-primary); line-height: 1.1; }
.hpm__num--text { font-size: 1.125rem; line-height: 1.3; color: var(--c-primary); }
@media (max-width: 600px) {
  .hero-program__meta { grid-template-columns: 1fr !important; }
  /* на мобиле плитки по одной — правило горизонталей не нужно: контент центрируем, без фикс-высоты подписи */
  .hero-program__meta-item { justify-content: center !important; }
  .hero-program__meta-item .hpm__head, .hero-program__meta-item .hpm__num, .hero-program__meta-item .hpm__num--text { min-height: 0 !important; }
}
/* поиск-иконка перенесена в header-cta (Контакты — самый правый пункт nav) */
.header-search { display:inline-flex; align-items:center; font-size:1.05rem; text-decoration:none; color:var(--c-navy); padding:4px; line-height:1; }
.header-search:hover { opacity:.7; }
/* глобальный офсет якорей под sticky-шапку 73px (:where — 0 специфичности, sveden-96px не ломает) */
:where([id]) { scroll-margin-top: 88px; }

/* ===== ЕДИНОЕ адаптивное меню: мобильный drawer + аккордеон (без дубля .mobile-nav). 2026-07-21 ===== */
@media (max-width: 1023px) {
  .nav { display: block !important; position: fixed !important; top: 73px; left: 0; right: 0; bottom: 0; background: #fff;
    transform: translateX(100%); transition: transform .25s ease; overflow-y: auto;
    z-index: 150; padding: 6px 20px 48px; box-shadow: -8px 0 24px rgba(0,0,0,.12); }
  .nav.is-open { transform: none; }
  .nav-list { display: flex !important; flex-direction: column; gap: 0 !important; }
  .nav-item { width: 100%; border-bottom: 1px solid var(--c-border-soft); position: static !important; }
  .nav-item > a { display: block !important; padding: 14px 4px; font-size: 1.0625rem; font-weight: 600; color: var(--c-text); }
  .nav-item--has-dropdown > a::after, .nav-item--mm > a::after { content: "⌄"; float: right; color: var(--c-text-mute); transition: transform .2s; }
  .nav-item.is-open > a::after { transform: rotate(180deg); }
  /* подменю — статичный аккордеон, скрыт пока li не .is-open */
  .nav-dropdown, .mm { position: static !important; display: none !important; opacity: 1 !important;
    visibility: visible !important; transform: none !important; box-shadow: none !important; border: none !important;
    background: transparent !important; min-width: 0 !important; width: auto !important; padding: 0 0 10px !important; }
  .nav-item.is-open > .nav-dropdown, .nav-item.is-open > .mm { display: block !important; }
  .nav-dropdown li a { padding: 9px 0 9px 16px; font-size: .95rem; font-weight: 400; }
  .nav-dropdown li a:hover { background: transparent; color: var(--c-primary); }
  /* мега «Программы» на мобиле — вертикальный список по типам */
  .mm::before { display: none !important; }
  .mm__inner { display: block !important; padding: 0 !important; }
  .mm__block { padding: 0 0 6px 16px !important; border: none !important; }
  .mm__block--pk { border-left: none !important; padding-left: 16px !important; }
  .mm__cols { display: block !important; }
  .mm__it { white-space: normal !important; border-bottom: none !important; padding: 8px 0 !important; text-align: left !important; }
  .mm__h { margin: 10px 0 4px !important; }
  .mm__foot2 { padding: 8px 0 0 16px !important; flex-direction: column; gap: 8px; align-items: flex-start; border: none !important; }
}
/* bio-секции преподавателя (О специалисте / Образование / Опыт работы) — короткий текст,
   стандартные 100px×2 давали огромные зазоры. Ужимаем только на страницах преподов. 2026-07-21 */
body.single-teacher .section:not(.section--soft):not(.cta-light) { padding-top: 26px !important; padding-bottom: 6px !important; }
body.single-teacher .section:not(.section--soft):not(.cta-light) .section__head { margin-bottom: 10px !important; }
/* якорь каталога (#povyshenie/#perepodgotovka) — отступ под sticky-шапку при скролле */
.catalog-tabs { scroll-margin-top: 96px; }

/* checklist: чёткая SVG-галочка вместо юникод-глифа ✓ (глиф давал субпиксельную «грязь» на 1x). 2026-07-22 */
ul.checklist li::before {
  content: "" !important; position: absolute !important; left: 0 !important; top: 2px !important;
  width: 24px !important; height: 24px !important; border-radius: 999px !important;  /* №32 (Прахов 24.07): 24px — канон всех трёх драфтов, был ужат до 18 */
  background-color: var(--c-primary) !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7'/%3E%3C/svg%3E") !important;
  background-repeat: no-repeat !important; background-position: center !important; background-size: 14px 14px !important;
  display: block !important; }
ul.checklist li::after { content: none !important; display: none !important; }

/* убрать лишнюю линию сверху у card-program в многоколоночной сетке (grid--2/3/4) —
   border-top задуман для list-view каталога (.grid), но :has ловил и card-гриды преподов. 2026-07-22 */
.grid--2:has(> .card-program), .grid--3:has(> .card-program), .grid--4:has(> .card-program),
.routes:has(> .card-program) { border-top: 0 !important; }
/* правки №4-5 (22.07): фото-подложка секций «Направления» и «Отзывы» на главной (бежевая вуаль + фото, паттерн cta-light) */
.section--photobg { background-color: #F3EFE9 !important;
  background-image: linear-gradient(rgba(243,239,233,0.90), rgba(243,239,233,0.92)), url('../img/bg/hero-institute-1920.jpg') !important;
  background-size: cover !important; background-position: center !important; }
/* правка №11 (22.07): блок «Стоимость и рассрочка» отделён рамкой (просьба клиента, в драфтах не было) */
.stoimost-frame { border: 1px solid var(--c-border) !important; border-radius: var(--radius-lg); padding: var(--space-6) !important; }

/* ревизия 23.07: фиксы PARTIAL-правок */
/* №36: navy-квадрат подстраивается под «100%»/«ФИС ФРДО» — не обрезает текст */
.feature__icon { min-width: 56px; width: fit-content !important; padding: 0 12px; }
/* №35: H1 hero о-институте — умеренный navy как в драфте-1 (h1 там без класса).
   СКОУП .page-o-institute (24.07): глобальная версия уменьшала/красила H1 Профессии */
.page-o-institute .hero--cream h1 { font-size: clamp(2rem, 3.4vw, 2.75rem) !important; color: var(--c-primary) !important; }
/* №30 (24.07, ревью Сони): «Другие направления» на страницах направлений — драфт-3 канон
   БЕЗ рамки на hover (в v3 hover = только тень+сдвиг). Рамку глушим цветом фона карточки. */
.page-napravlenie .direction-card:hover,
.page-napravlenie .direction-card:focus-visible { border-color: #F3EFE9 !important; }
/* №17 (24.07, ревью Сони): besplatno-test — CTA по ДРАФТУ-2: выравнивание слева (глобальный
   центр — канон №9/драфта-3 для остальных страниц; здесь клиент явно просил драфт 2) */
.page-besplatno .cta-light { text-align: left !important; }
.page-besplatno .cta-light__text { margin-left: 0 !important; margin-right: 0 !important; }
/* №17b (24.07): «Почему мы делаем бесплатные программы» — редакторский список 01/02/03 как в
   ДРАФТЕ-2 (правила из draft-v2/css/pages.css:2438-2443, скоуплены на страницу) */
.page-besplatno .features { display: flex !important; flex-direction: column; gap: 0 !important; counter-reset: feat; border-top: 0 !important; margin-top: var(--space-5); }
.page-besplatno .features .feature { position: relative; counter-increment: feat; display: block !important; padding: var(--space-5) var(--space-5) var(--space-5) 84px !important; border: none !important; text-align: left; background: transparent !important; box-shadow: none !important; border-radius: 0 !important; }  /* сепараторы сняты 24.07 — v2-канон глушит их правилом (H) v2:2955-2956 */
.page-besplatno .features .feature__icon { display: none !important; }
.page-besplatno .features .feature::before { content: counter(feat, decimal-leading-zero); position: absolute; left: 0; top: var(--space-5); font-family: var(--ff-heading); font-size: 2.4rem; line-height: .9; color: var(--c-cta); font-weight: 700; }
.page-besplatno .features .feature h4 { margin: 0 0 6px; font-family: var(--ff-heading); font-size: var(--fs-h3); }
.page-besplatno .features .feature p { margin: 0; max-width: 70ch; color: var(--c-text-soft); }

/* ===== ПРАХОВ-РЕВЬЮ 24.07: правки №28,29,32,37,38,48,50,53 (BLOCKED сняты решением Прахова:
   per-page соответствие своему драфту, унификацию клиент решит поверх) ===== */
/* №32: размер маркера правится в SVG-слое ul.checklist li::before (строка ~3292) — 24px */
/* №28 (страницы направлений): чипы карточек преподавателей — коралл из драфта-3 */
.page-napravlenie .card-teacher__specs li { background: #FF8562 !important; color: #111111 !important; }
/* №29 (страницы направлений): «Кому подходит» — канон драфта-3 ПО РЕНДЕРУ (не по CSS-тексту:
   плашечный слой в v3 сам перебит): компактные строки во всю ширину, шаг 36px (24px строка + 12px) */
.page-napravlenie .checklist { display: block !important; columns: auto !important; grid-template-columns: none !important; }
.page-napravlenie .checklist li { display: block !important; background: transparent !important; border-radius: 0 !important; padding: 0 0 0 36px !important; position: relative; margin: 0 0 12px !important; line-height: 1.5 !important; }  /* lh 1.5 → строка 24px, шаг 36 = v3-замер */
.page-napravlenie .checklist li:last-child { margin-bottom: 0 !important; }
.page-napravlenie ul.checklist li::before { left: 0 !important; top: 2px !important; transform: none !important; }
/* №37/№38 (об институте): УСТАРЕЛО 12.08 (обратка 2 РАУНДА) — карточки переведены на общий контракт №48 (см. :is(...) со скоупом .page-o-institute); прежний канон «квадратное фото сверху» снят */




/* №48 (преподаватели): карточки — канон драфта-2: горизонталь фото-слева (bio-row) + широкие колонки */
:is(.page-prepodavateli,.page-home,.page-napravlenie,.page-program,.page-o-institute) .card-teacher { text-align: left !important; }
:is(.page-prepodavateli,.page-home,.page-napravlenie,.page-program,.page-o-institute) .card-teacher__photo { border-radius: 0 !important; margin: 0 !important; }
:is(.page-prepodavateli,.page-home,.page-napravlenie,.page-program,.page-o-institute) .card-teacher__photo img { border-radius: 0 !important; }
@media (min-width: 560px) {
  /* селекторы с ≥3 классами — перебивают subgrid-слой .grid--N > .card-teacher ... {display:contents} */
  :is(.page-prepodavateli,.page-home,.page-napravlenie,.page-program,.page-o-institute) .grid .card-teacher .card-teacher__link { display: grid !important; grid-template-columns: 124px 1fr !important; align-items: center; }
  :is(.page-prepodavateli,.page-home,.page-napravlenie,.page-program,.page-o-institute) .grid .card-teacher .card-teacher__photo { aspect-ratio: 1 !important; width: 100% !important; min-height: 124px; height: 100% !important; justify-self: stretch !important; }
  :is(.page-prepodavateli,.page-home,.page-napravlenie,.page-program,.page-o-institute) .grid .card-teacher .card-teacher__body { text-align: left !important; padding: var(--space-4) var(--space-4) var(--space-4) var(--space-5) !important; display: block !important; }
  :is(.page-prepodavateli,.page-home,.page-napravlenie,.page-program,.page-o-institute) .grid .card-teacher .card-teacher__specs { justify-content: flex-start !important; margin: 4px 0 0 !important; }
  :is(.page-prepodavateli,.page-home,.page-napravlenie,.page-program,.page-o-institute) .grid .card-teacher .card-teacher__name { min-height: 0 !important; margin: 0 0 4px !important; }
  :is(.page-prepodavateli,.page-home,.page-napravlenie,.page-program,.page-o-institute) .grid .card-teacher .card-teacher__role { margin: 0 !important; -webkit-line-clamp: unset !important; }
}
:is(.page-prepodavateli,.page-home,.page-napravlenie,.page-program,.page-o-institute) .grid:has(.card-teacher) { grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)) !important; }
/* №50 (страницы преподавателя): hero-аватарка — крупный квадрат из драфта-2 (не круг 128) */
.teacher-hero__photo.card-teacher__photo { width: 238px !important; height: 238px !important; border-radius: 8px !important; margin: 0 !important; aspect-ratio: auto !important; }
.teacher-hero__photo.card-teacher__photo img { border-radius: 8px !important; width: 100%; height: 100%; object-fit: cover; }
/* №53 (страницы преподавателя): «Программы с участием преподавателя» — строчный вид из драфта-2
   (переопределяет subgrid-грид карточек поверх, скоуп body.single-teacher) */
/* фон секции — белый как в драфте-2 (замер 24.07: v2 секция прозрачная на белом, у финала было section--soft) */
body.single-teacher .section:has(.grid > .card-program) { background: var(--c-bg) !important; }
body.single-teacher .grid:has(> .card-program) { grid-template-columns: 1fr !important; gap: 0 !important; border-top: 1px solid var(--c-border); }
body.single-teacher .grid:has(> .card-program) article.card-program { display: grid !important; grid-template-columns: 1.6fr 1fr auto !important; grid-template-rows: none !important; grid-row: auto !important; row-gap: normal !important; align-items: center !important; gap: var(--space-5) !important; height: auto !important; border: none !important; border-bottom: 1px solid var(--c-border) !important; border-radius: 0 !important; padding: 16px 24px !important; }
body.single-teacher .grid:has(> .card-program) article.card-program > .card-program__head { display: block !important; position: static !important; padding: 0 !important; }
body.single-teacher .grid:has(> .card-program) article.card-program > .card-program__body { display: contents !important; }
body.single-teacher .grid:has(> .card-program) .card-program__body > .text-soft { display: none !important; }
body.single-teacher .grid:has(> .card-program) .card-program__title { grid-row: auto !important; grid-column: auto !important; min-height: 0 !important; margin: 0 0 8px !important; line-height: 1.15 !important; }  /* v2: title h23 при fs20 → строка 97 */
body.single-teacher .grid:has(> .card-program) .card-program__meta { grid-row: auto !important; grid-column: auto !important; margin: 0 0 12px !important; }  /* v2-замер: mb 12px даёт высоту строки 97 */
body.single-teacher .grid:has(> .card-program) .card-program__price { display: block !important; grid-column: 2 !important; grid-row: auto !important; padding: 0 !important; margin: 0 !important; }
body.single-teacher .grid:has(> .card-program) .card-program__price-now { grid-row: auto !important; margin: 0 !important; display: block; }
body.single-teacher .grid:has(> .card-program) .card-program__rassrochka { grid-row: auto !important; margin: 0 !important; display: block; }
body.single-teacher .grid:has(> .card-program) .card-program__cta { grid-column: 3 !important; grid-row: auto !important; width: auto !important; margin: 0 !important; white-space: nowrap; justify-self: end !important; align-self: center !important; }
body.single-teacher .grid:has(> .card-program) .badge { position: static !important; margin: 0 0 4px !important; display: inline-flex; }
/* Прахов 24.07: финальный блок «Записаться на курс…» — отступ до нижней черты как в драфте-2
   (v2-замер: 32px 0 48px; компакт-правило :3286 давало 26/6 — под кнопкой оставалось 6px).
   id в селекторе — иначе проигрывает специфичности компакт-правила (4 класса) */
body.single-teacher #zayavka.section:last-of-type,
body.single-teacher section:last-of-type { padding-top: 32px !important; padding-bottom: 48px !important; }
@media (max-width: 700px) {
  body.single-teacher .grid:has(> .card-program) article.card-program { grid-template-columns: 1fr !important; }
  body.single-teacher .grid:has(> .card-program) .card-program__price, body.single-teacher .grid:has(> .card-program) .card-program__cta { grid-column: 1 !important; justify-self: start !important; }
}

/* 29.07: hero главной — иллюстрация «карта России с горящими городами» (пожелание Нины, SSOBT:558).
   Вуаль слева в тон фона иллюстрации — под заголовок; карта читается в правых 2/3 */
.page-home .hero--home {
  background-color: #F2EBDF !important;
  background-image:
    linear-gradient(90deg, rgba(244,238,228,.98) 0%, rgba(244,238,228,.94) 34%, rgba(244,238,228,.55) 58%, rgba(244,238,228,.08) 78%),
    url('../img/bg/hero-map-russia-1672.webp?v=1') !important;
  background-size: cover !important;
  background-position: center 38% !important;
  background-repeat: no-repeat !important;
}
/* текст hero не заезжает на тёмную часть карты */
.page-home .hero--home .hero__subtitle, .page-home .hero--home .hero__text,
.page-home .hero--home p { max-width: 34rem; }
.page-home .hero--home .hero__title { max-width: 13ch; }
/* мобила: горизонтальная вуаль не спасает — почти сплошная светлая, карта мягко проступает */
@media (max-width: 900px) {
  .page-home .hero--home {
    background-image:
      linear-gradient(180deg, rgba(244,238,228,.97) 0%, rgba(244,238,228,.93) 55%, rgba(244,238,228,.82) 100%),
      url('../img/bg/hero-map-russia-1672.webp?v=1') !important;
    background-position: center 30% !important;
  }
}

/* 29.07 (Прахов): адаптив hero-метрик — на узких экранах serif-цифры 24px выглядели огромными,
   «ФИС ФРДО» рвался на 2 строки, ряды плясали по высоте. Компактная ровная сетка 2×2 */
@media (max-width: 560px) {
  .hero .trust-card { grid-template-columns: repeat(2, 1fr) !important; align-items: stretch; }
  .hero .trust-card__row { padding: 10px 10px 12px !important; gap: 3px; }
  .hero .trust-card__num { font-size: 1.1875rem !important; line-height: 1.15 !important; white-space: nowrap; }
  .hero .trust-card__lbl { font-size: .6875rem !important; line-height: 1.35 !important; }
  .hero .trust-card__footer { font-size: .6875rem !important; padding: 10px 0 0 !important; }
  .hero .hero__meta { gap: 6px 16px !important; }
  .hero .hero__meta span { font-size: .8125rem !important; }
}

/* 29.07 дизайн-критик 320: career-цифры были 40px (перенос «₽» на свою строку), инициал-плашки
   преподавателей сплющивались в тонкие полосы */
@media (max-width: 560px) {
  .career__stat-num { font-size: 1.75rem !important; white-space: nowrap; }
  .card-teacher .card-teacher__photo:has(.card-teacher__initials) { min-height: 110px !important; height: auto !important; aspect-ratio: auto !important; display: flex; align-items: center; justify-content: center; }
}

/* 29.07 (Прахов): bio-row сетка преподавателей — minmax(330px) не сжимался ниже 330 →
   на 320 карточки шире экрана, текст обрезался справа. Узкие экраны — одна колонка 1fr */
@media (max-width: 559px) {
  :is(.page-prepodavateli,.page-home,.page-napravlenie,.page-program,.page-o-institute) .grid:has(.card-teacher) { grid-template-columns: 1fr !important; }
}

/* 29.07 (Прахов): nowrap-кнопки с pad 36px имеют min-content ~250px — на 320 распирали грид
   footer-help (трек 246px при доступных 192) и вылезали из quiz-формы. Мобила: перенос разрешён */
@media (max-width: 560px) {
  .btn { white-space: normal !important; padding-left: 20px !important; padding-right: 20px !important; text-align: center; }
  .footer-help { padding: 28px 20px !important; }
  .footer-help .footer-help__phone { font-size: 1.375rem !important; }
}

/* ===== РАУНД-2 (11.08, лист «ОБЩИЕ ПРАВКИ»): фирменные подложки (Фирменный стиль 2025)
   вместо бежевых #F3EFE9 — «другая подложка, не та, которая с шапочками».
   4 варианта на разных блоках — клиент сравнивает и выбирает канон ===== */
.bg-brand-pattern-light { background: #EAF2FB url('../img/bg/brand-pattern-light-2560.webp') center/cover no-repeat !important; }
.bg-brand-pattern-dark { background: #2E6FB4 url('../img/bg/brand-pattern-dark-2560.webp') center/cover no-repeat !important; }
.bg-brand-photo-students { background-color: #EAF2FB !important; background-image: linear-gradient(rgba(234,242,251,.84), rgba(234,242,251,.88)), url('../img/bg/brand-photo-students-1024.webp') !important; background-size: cover !important; background-position: center 30% !important; background-repeat: no-repeat !important; }
.bg-brand-photo-online { background-color: #F5F8FC !important; background-image: linear-gradient(rgba(245,248,252,.76), rgba(245,248,252,.8)), url('../img/bg/brand-photo-online-1080.webp') !important; background-size: cover !important; background-position: center !important; background-repeat: no-repeat !important; }
/* тёмный паттерн: заголовки/текст секции — белые (WCAG на синем), белые карточки внутри не трогаем */
.bg-brand-pattern-dark .section__title, .bg-brand-pattern-dark .section__head p, .bg-brand-pattern-dark .section__sub,
.bg-brand-pattern-dark > .container > p { color: #ffffff !important; }
/* внутри БЕЛЫХ карточек (lead-inline, lead-form) текст остаётся тёмным — не перекрашивать */
/* внутренние бежевые обёртки (teacher-hero, catalog-quiz) — прозрачные поверх brand-подложек,
   иначе подложка видна только по краям, а «нелюбимый беж» остаётся плитой в центре */
:is(.bg-brand-pattern-light,.bg-brand-pattern-dark,.bg-brand-photo-students,.bg-brand-photo-online) :is(.teacher-hero,.catalog-quiz) { background: transparent !important; }
/* бежевые мини-плашки (legal-bar) на brand-подложке — белые, беж на голубом чужероден */
:is(.bg-brand-pattern-light,.bg-brand-pattern-dark,.bg-brand-photo-students,.bg-brand-photo-online) .legal-bar { background: #ffffff !important; }

/* Раунд-2: кнопка «Все программы» на светлом паттерне — БЕЛАЯ (лист ОБЩИЕ, блок 3 главной/дистанта) */
.bg-brand-pattern-light .btn--ghost { background: #ffffff !important; border: 1px solid #B9CCE4 !important; color: var(--c-primary) !important; box-shadow: 0 2px 10px rgba(0,58,120,.10); }
.bg-brand-pattern-light .btn--ghost:hover { background: #F0F5FC !important; border-color: #8FB0D6 !important; color: var(--c-primary) !important; }

/* FAQ-заголовки: Playfair на 3 строках с короткими словами выглядел разреженным —
   балансировка строк + кегль 32px + узкий контейнер (плотнее переносы) */
.section__head.text-center:has(+ .faq) .section__title { text-wrap: balance; font-size: 2rem; max-width: 34ch; margin-left: auto; margin-right: auto; }

/* 12.08 (диагноз подтверждён Codex): .section__head имеет max-width 880 БЕЗ margin:auto —
   блок прижимался к левому краю контейнера, а .faq центрировался → центры расходились на 128px.
   Все центрированные хеды — по центру контейнера */
.section__head.text-center { margin-left: auto !important; margin-right: auto !important; }

/* Раунд-2, блок 13 «Поможем в выборе!»: каждый номер со своей подписью — 8 800 бесплатный,
   8 900 мобильный платный; сливать в одну строку запрещено (клиент: «скомпоновать адекватно») */
.footer-help .footer-help__phone-row { margin: 0 0 10px; display: flex; flex-direction: column; gap: 1px; }
.footer-help .footer-help__phone-row--alt { margin-bottom: 14px; }
.footer-help .footer-help__phone--alt { font-size: 1.125rem !important; color: #1A1A1A !important; }
.footer-help .footer-help__phone-tag { font-size: .8125rem; color: #555555 !important; }
.footer-help .footer-help__phone-tag--free { color: #1B7A3D !important; font-weight: 600; }

/* 2 РАУНД: красные чёрточки у «Преподаваемых дисциплин» (лист, Худякова блок 2) */
.regalia-list--accent li { border-left-color: var(--c-cta); }

/* ============================================================
   2 РАУНД: УНИФИКАЦИЯ КАРТОЧЕК ПРЕПОДАВАТЕЛЕЙ (лист, «фото прямоугольными как на Преподавателях»)
   Эталон №48 расширен скоупами .page-napravlenie/.page-program (см. :is(...) выше).
   ============================================================ */
/* свёрнутые карточки (4+) скрыты только при активном JS (progressive enhancement) */
.teachers-grid.is-enhanced > .card-teacher.is-collapsed { display: none !important; }
/* no-JS: скрытая кнопка не должна отображаться (.btn{display:inline-flex} перебивает UA-hidden) */
.teachers-show-all[hidden] { display: none !important; }
/* статические карточки (нет личной страницы — 4 персоны ЭИ): без ложной интерактивности */
.card-teacher--static:hover, .card-teacher--static:has(.card-teacher__link:hover) { box-shadow: none !important; transform: none !important; }
.card-teacher--static .card-teacher__link:hover .card-teacher__name { color: inherit !important; }
.card-teacher--static .card-teacher__link { cursor: default; }

/* ОБРАТКА №2 (12.08): карточка БЕЗ программного футера заканчивается на нижней границе фото.
   Субгрид-режим: link на все ряды article; fallback (нет subgrid, article=flex-column): flex:1 */
@media (min-width: 560px) {
  :is(.page-prepodavateli,.page-home,.page-napravlenie,.page-program,.page-o-institute) .grid article.card-teacher:not(:has(> .card-teacher__programs)) > .card-teacher__link {
    flex: 1 1 auto;
    grid-row: 1 / -1;
  }
}
/* D1 (Codex-приёмка №2): на мобиле subgrid-article без футера держал 3 пустых ряда (хвост 61px) — схлопываем в 1 ряд */
@media (max-width: 559px) {
  :is(.page-prepodavateli,.page-home,.page-napravlenie,.page-program,.page-o-institute) .grid article.card-teacher:not(:has(> .card-teacher__programs)) {
    grid-row: span 1;
  }
}

/* ОБРАТКА №3 (12.08): геометрия desktop bio-row преподавателей.
   П1: с футером link заполняет subgrid-ряды до footer (фото до черты); П2: единый верх ФИО (stretch, паддинг 16);
   П3: сброс justify-self:center v3-слоя — имя/роль всегда от левого края текстовой колонки. */
@media (min-width: 560px) {
  :is(.page-prepodavateli,.page-home,.page-napravlenie,.page-program,.page-o-institute) .grid article.card-teacher > .card-teacher__link {
    align-items: stretch;
  }
  :is(.page-prepodavateli,.page-home,.page-napravlenie,.page-program,.page-o-institute) .grid article.card-teacher:has(> .card-teacher__programs) > .card-teacher__link {
    flex: 1 1 auto;   /* fallback без subgrid */
    grid-row: 1 / 4;  /* subgrid: до верхней линии footer-ряда */
  }
  :is(.page-prepodavateli,.page-home,.page-napravlenie,.page-program,.page-o-institute) .grid article.card-teacher :is(.card-teacher__name,.card-teacher__role) {
    justify-self: stretch !important;
    width: auto;
  }
}

/* МЕЛКИЕ ПРАВКИ 13.08, П1: плашки hero-метрик программ — фон + рамка-акцент + объём (тень); рамка/типографика из блока 3229 сохраняются */
.hero-program__meta-item {
  background: rgba(255,255,255,.88) !important;
  border-color: #B9CCE4 !important;
  box-shadow: 0 2px 10px rgba(0,58,120,.08);
}
/* П6: каталог «Документы и юридический статус» — красная линия сверху 4 блоков (+фикс hover-перекраски строки 622) */
.section--trust-strip .trust-strip__item { border-top: 3px solid var(--c-cta); }
.section--trust-strip .trust-strip__item:hover { border-top-color: var(--c-cta); }

/* ============ 13 ПРАВОК КЛИЕНТА 13.08 ============ */
/* П1: направления — красная линия сверху 7 карточек (hover/focus сохраняют цвет) */
.directions-overview .direction-card { border-top: 3px solid var(--c-cta); }
.directions-overview .direction-card:hover, .directions-overview .direction-card:focus-visible { border-top-color: var(--c-cta); }
/* П3: профессия «Как проходит обучение» — иконки красные (класс используется только там) */
.study-card__icon { background: var(--c-cta); }
/* П4: профессия «Истории выпускников» — красная линия слева от автора */
.testimonials--profession .testimonial__author { border-left: 4px solid var(--c-cta); padding-left: var(--space-4); }
/* П6: об институте «Наши принципы» — красные плашки номеров 01-04 (белая цифра, 4.69:1 AA) */
.page-o-institute .principle-card__num { background: var(--c-cta); }
/* П8/П9: секции с красными feature-иконками (дистанционка + институт-цифры) */
.section--red-feature-icons .feature__icon { background: var(--c-cta); }
/* П12б: каталог — линии фактов слева красные */
.catalog-intro__facts li { border-left-color: var(--c-cta); }
/* П13: превью лицензии с QR + кнопка скачивания */
.license-preview { width: 100%; max-width: 520px; justify-self: center; align-self: start; }
.license-preview__link, .license-preview__image { display: block; width: 100%; }
.license-preview__image { height: auto; border: 1px solid var(--c-border-soft); border-radius: var(--radius-md); }
.license-preview__download { width: 100%; margin-top: var(--space-4); }

/* Hero главной: контраст + адаптивная карта, 2026-08-13 */
.page-home .hero--home {
  position: relative;
  overflow: hidden;
  color: #1A1A1A !important;
  background-color: #F4EEE4 !important;
}

.page-home .hero--home .hero__title {
  color: #003A78 !important;
}

.page-home .hero--home .hero__sub {
  max-width: 32rem !important;
  color: #444444 !important;
}

.page-home .hero--home .hero__meta {
  max-width: 42rem;
  row-gap: 8px;
  color: #444444 !important;
}

.page-home .hero--home .hero__meta span {
  color: #444444 !important;
}

.page-home .hero--home .hero__meta strong {
  color: #1A1A1A !important;
  font-weight: 700;
}

.page-home .hero--home .hero__ctas .btn--ghost {
  color: #1A1A1A !important;
  background: #FFFFFF !important;
  border-color: #5F6368 !important;
  box-shadow: 0 2px 10px rgba(0, 58, 120, 0.10);
}

.page-home .hero--home .hero__ctas .btn--ghost:hover {
  color: #003A78 !important;
  background: #FFFFFF !important;
  border-color: #003A78 !important;
}

.page-home .hero--home .hero__ctas .btn--ghost:focus-visible {
  outline-color: #003A78;
}

.page-home .hero--home .trust-card {
  background: #FFFFFF !important;
  border: 1px solid rgba(0, 58, 120, 0.22) !important;
  border-radius: 14px !important;
  box-shadow: 0 10px 28px rgba(0, 30, 70, 0.14) !important;
  padding: 14px 20px !important;
}

.page-home .hero--home .trust-card__row {
  background: transparent !important;
}

@media (min-width: 901px) {
  .page-home .hero--home {
    background-image:
      linear-gradient(
        90deg,
        rgba(244, 238, 228, 0.995) 0%,
        rgba(244, 238, 228, 0.99) 32%,
        rgba(244, 238, 228, 0.97) 42%,
        rgba(244, 238, 228, 0.92) 50%,
        rgba(244, 238, 228, 0.72) 60%,
        rgba(244, 238, 228, 0.25) 74%,
        rgba(244, 238, 228, 0.04) 86%
      ),
      url('../img/bg/hero-map-russia-1672.webp?v=1') !important;
    background-size: cover !important;
    background-position: center 38% !important;
    background-repeat: no-repeat !important;
  }

  .page-home .hero--home .hero__title {
    max-width: 11ch !important;
    font-size: clamp(3.25rem, 4.5vw, 4.5rem) !important;
  }

  .page-home .hero--home .hero__media {
    margin-top: 32px !important;
  }
}

@media (max-width: 900px) {
  .page-home .hero--home {
    background: #F4EEE4 !important;
  }

  .page-home .hero--home::after {
    content: '';
    display: block;
    width: 100%;
    height: min(56.28vw, 300px);
    margin-top: 32px;
    margin-bottom: calc(-1 * var(--section-py));
    background-color: #F4EEE4;
    background-image: url('../img/bg/hero-map-russia-1672.webp?v=1');
    background-repeat: no-repeat;
    background-size: 100% auto;
    background-position: center 55%;
    border-top: 1px solid rgba(0, 58, 120, 0.14);
  }

  .page-home .hero--home .hero__title {
    max-width: 12ch !important;
    font-size: clamp(2.5rem, 7vw, 3.5rem) !important;
  }

  .page-home .hero--home .hero__sub {
    max-width: 34rem !important;
  }
}

@media (max-width: 640px) {
  .page-home .hero--home::after {
    height: auto;
    aspect-ratio: 1672 / 941;
    background-position: center;
  }

  .page-home .hero--home .hero__title {
    max-width: none !important;
    font-size: clamp(1.7rem, 8.2vw, 2.25rem) !important;
  }

  .page-home .hero--home .trust-card {
    padding: 10px !important;
  }
}

/* Hero главной, v3: карта — фон ВНУТРИ первого экрана, а не у низа высокой hero. */
@media (max-width: 900px) {
  /* Старая отдельная ::after-панорама остаётся выключенной. */
  .page-home .hero--home::after {
    content: none !important;
  }

  /* Усиленная специфичность нужна из-за нескольких старых !important-слоёв eyebrow. */
  .page-home.page-home .hero--home .hero__eyebrow.hero__eyebrow {
    color: #C1121F !important;
    border-left-color: #C1121F !important;
  }

  .page-home .hero--home {
    background-color: #F4EEE4 !important;
    background-image:
      linear-gradient(
        180deg,
        rgba(244, 238, 228, .985) 0,
        rgba(244, 238, 228, .96) clamp(210px, 32svh, 300px),
        rgba(244, 238, 228, .92) clamp(350px, 44svh, 410px),
        rgba(244, 238, 228, .58) clamp(380px, 50svh, 470px),
        rgba(244, 238, 228, .74) clamp(500px, 66svh, 620px),
        rgba(244, 238, 228, .92) clamp(620px, 80svh, 760px),
        rgba(244, 238, 228, .985) 100%
      ),
      url('../img/bg/hero-map-russia-1672.webp?v=1') !important;

    /* Вуаль покрывает hero; карта всегда целиком вписана по ширине. */
    background-size: 100% 100%, 100% auto !important;

    /* Второе значение — top карты = центр в svh − половина высоты картинки. */
    background-position:
      center top,
      center calc(clamp(380px, 50svh, 470px) - 28.14vw) !important;
    background-repeat: no-repeat !important;
  }

  /* Удаляет прежнюю искусственную «бороду», которая уводила карту вниз. */
  .page-home .hero--home .container {
    padding-bottom: 0 !important;
  }

  /* Локальная защита четырёх тёмных span; карта вокруг остаётся видимой. */
  .page-home .hero--home .hero__meta {
    width: fit-content;
    max-width: min(42rem, 100%) !important;
    padding: 10px 12px;
    background: rgba(255, 255, 255, .92);
    border: 1px solid rgba(0, 58, 120, .18);
    border-radius: 10px;
    box-shadow: 0 2px 12px rgba(0, 30, 70, .08);
  }
}

/* v3.1: на ширинах >360 карта в CTA-зоне ярче (кнопки/мета защищены своими поверхностями);
   ≤360 остаются консервативные стопы v3 — там низ описания в переходной зоне вуали */
@media (min-width: 390px) and (max-width: 900px) {
  .page-home .hero--home {
    background-image:
      linear-gradient(
        180deg,
        rgba(244, 238, 228, .985) 0,
        rgba(244, 238, 228, .96) clamp(210px, 32svh, 300px),
        rgba(244, 238, 228, .92) clamp(350px, 44svh, 410px),
        rgba(244, 238, 228, .3) clamp(390px, 47svh, 480px),
        rgba(244, 238, 228, .3) clamp(500px, 62svh, 600px),
        rgba(244, 238, 228, .85) clamp(620px, 78svh, 740px),
        rgba(244, 238, 228, .985) 100%
      ),
      url('../img/bg/hero-map-russia-1672.webp?v=1') !important;
  }
}

/* v3.2: ступень 361-389px — промежуточные стопы (.44) между консервативными ≤360 (.58) и плато ≥390 (.30):
   сглаживает дискретный скачок яркости карты на медиа-границах (приёмка Codex: дельта 46/255 → две малые) */
@media (min-width: 361px) and (max-width: 389px) {
  .page-home .hero--home {
    background-image:
      linear-gradient(
        180deg,
        rgba(244, 238, 228, .985) 0,
        rgba(244, 238, 228, .96) clamp(210px, 32svh, 300px),
        rgba(244, 238, 228, .92) clamp(350px, 44svh, 410px),
        rgba(244, 238, 228, .44) clamp(385px, 48svh, 475px),
        rgba(244, 238, 228, .44) clamp(500px, 64svh, 610px),
        rgba(244, 238, 228, .88) clamp(620px, 79svh, 750px),
        rgba(244, 238, 228, .985) 100%
      ),
      url('../img/bg/hero-map-russia-1672.webp?v=1') !important;
  }
}

/* Hero v4 (обратка: «карта в зоне абзаца, не за кнопками»): на ≤900 карта — бесшовная фон-иллюстрация
   в потоке hero сразу после описания, целиком, без перекрытий; фон секции — чистый крем (вуали не нужны). */
.hero__map { display: none; }
@media (max-width: 900px) {
  .page-home .hero--home,
  .page-home .hero--home::after { background-image: none !important; }
  .page-home .hero--home { background: #F4EEE4 !important; }
  .page-home .hero--home .hero__map {
    display: block;
    width: 100%;
    max-width: 100%;
    aspect-ratio: 1672 / 941;
    background: url('../img/bg/hero-map-russia-1672.webp?v=1') center / 100% auto no-repeat;
    border-radius: 12px;
    box-shadow: 0 8px 24px rgba(0, 30, 70, .10);
    margin-top: 20px;
    margin-bottom: 24px;
  }
  /* мета-подложка больше не обязательна, но безвредна — оставляем; компактнее отступы на самых узких */
}
@media (max-width: 360px) {
  .page-home .hero--home .hero__sub { margin-bottom: 0 !important; }
  .page-home .hero--home .hero__map { margin-top: 12px; margin-bottom: 16px; }
}
/* 641-900 наследует те же правила — отдельный блок не нужен (единый вид иллюстрации на всех ≤900) */

/* Hero v5 (обратка: «карта должна быть ФОНОМ за текстом абзаца, как на ПК»):
   ≤900 — карта в background секции, верх — под заголовком; абзац лежит ПОВЕРХ карты
   на умеренной вуали (карта отчётливо видна), текст утемнён; кнопки/мета/траст — свои поверхности. */
@media (max-width: 900px) {
  .page-home .hero--home .hero__map { display: none !important; }
  .page-home .hero--home {
    background-color: #F4EEE4 !important;
    background-image:
      linear-gradient(
        180deg,
        rgba(244, 238, 228, .95) 0,
        rgba(244, 238, 228, .9) 120px,
        rgba(244, 238, 228, .58) 210px,
        rgba(244, 238, 228, .55) 300px,
        rgba(244, 238, 228, .55) 62%,
        rgba(244, 238, 228, .8) 78%,
        rgba(244, 238, 228, .95) 100%
      ),
      url('../img/bg/hero-map-russia-1672-t.webp?v=2') !important;
    background-size: 100% 100%, 100% auto !important;
    background-position: center top, center 125px !important;
    background-repeat: no-repeat !important;
  }
  .page-home .hero--home .hero__sub {
    color: #1A1A1A !important;
    font-weight: 500;
  }
}
@media (min-width: 641px) and (max-width: 900px) {
  .page-home .hero--home {
    background-position: center top, center 150px !important;
  }
}

/* Реальный логотип клиента в шапке (Фирменный стиль 2025, __.png: знак + ТОЧКА фирменным шрифтом,
   прозрачный PNG — фон шапки просвечивает; высота 42px < строки шапки, высоту шапки не меняет) */
.site-logo { display: flex; flex-direction: row; align-items: center; }
.site-logo__full { display: block; height: 42px; width: auto; background: transparent !important; }  /* глобальный img{background:bg-soft} из uikit:800 давал серую плашку под прозрачным PNG */
@media (max-width: 480px) { .site-logo__full { height: 36px; } }

/* o-institute «Наши преподаватели» (правка 14.08): заголовок+саб чёрным на тёмной подложке недопустимы
   белыми по brand-скоупу — клиент просит чёрный; кнопка «Все преподаватели» — на белом фоне */
#teachers .section__title, #teachers .section__sub { color: #1A1A1A !important; }
#teachers .btn--ghost { background: #ffffff !important; border: 1px solid #B9CCE4 !important; color: var(--c-primary) !important; box-shadow: 0 2px 10px rgba(0,58,120,.10); }
#teachers .btn--ghost:hover { background: #ffffff !important; border-color: var(--c-primary) !important; }

/* События (правка 14.08): без пустой строки между именем ведущего и ролью — карточка ниже на строку */
.grid > .card-event .event-tutor__name { min-height: 0 !important; }


/* === 2026-08-14 · ЗАДАЧА «ПОЛУСКРУГЛЁННЫЕ КНОПКИ»: единый радиус 10px всем кнопкам и button-like контролам.
   Не трогаем: a.chip (теги-пилюли), .badge, .teacher-tag, поля форм, карточки.
   Литерал 10px, НЕ var(--radius-md): активная тема «Вариант 2 — тёплый редакторский» (uikit.css ~1088)
   переопределяет шкалу на резкую (md=4px) — токен дал бы 4px вместо полускругления. === */
.btn,
.sticky-cta,
.catalog-tab,
button,
input[type="submit"],
input[type="button"],
input[type="reset"] {
  border-radius: 10px !important;
}

/* === 2026-08-14 · trust-card главной: убраны горизонтальная линия над лицензией и правая черта
   последней колонки (баг: .trust-card__row:last-of-type ловил footer-div, а не 4-й ряд).
   На 2-колоночной мобиле правая колонка тоже без краевых черт. === */
.hero .trust-card__footer { border-top: none !important; }
.hero .trust-card__row:nth-of-type(4) { border-right: none !important; }
@media (max-width: 759px){ .hero .trust-card__row:nth-of-type(2n) { border-right: none !important; } }

/* Disabled destinations retain their content and geometry, not link affordance. */
a[data-tochka-link-unavailable="true"] { cursor: default; pointer-events: none; }
:is(.hero__ctas,.route-card__cta):not(:has(a:not([hidden]),button:not([hidden]))) { display:none; }

/* Component-owned canonical appearance. Optional preceding sections must not
   erase this background or make the next teachers block taller. */
.page-napravlenie .section[data-tochka-block="direction-programs"] {
  background: #EAF2FB url('../img/bg/brand-pattern-light-2560.webp') center/cover no-repeat !important;
}
body.page-program .section[data-tochka-block="program-teachers"] {
  padding-top: 32px !important;
}

/* A marker must fit in its own row, including a single one-line item.
   Keep the canonical down-the-column reading order for multi-item lists. */
ul.checklist > li { min-height: 26px; overflow-wrap: anywhere; }
ul.checklist:has(> li:only-child) { columns: auto; }

/* Editable copy cannot impose min-content widths or stretch portrait crops.
   Scoped to program components; other page families retain their layouts. */
body.page-program main :is([data-tochka-kind], [data-tochka-block]) { overflow-wrap: anywhere; }
main .btn {
  min-width: 0; max-width: 100%; white-space: normal; overflow-wrap: anywhere; text-align: center;
}
.sticky-cta { white-space: normal; overflow-wrap: anywhere; max-width: calc(100vw - 32px); max-height: 40vh; overflow-y: auto; }
.program-profession-education { white-space: pre-line; }
body.page-program :is(.audience, .career, .program-document-grid, .grid) > * { min-width: 0; }
body.page-program .audience { grid-template-columns: minmax(0, 1fr); align-items: stretch; }
@media (min-width: 600px) {
  body.page-program .audience { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 960px) {
  body.page-program .audience { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
body.page-program :is(.audience-card, .usp-item, .career-item) { min-width: 0; overflow-wrap: anywhere; }
body.page-program .career__stat-num { white-space: normal !important; }
body.page-program .program-document-grid { align-items: stretch; }
body.page-program .program-document-copy { display: flex; flex-direction: column; justify-content: center; }
body.page-program .program-document-copy > :last-child { margin-bottom: 0; }
body.page-program .program-document-facts { flex-wrap: wrap; }
body.page-program .program-document-facts > * { min-width: 0; flex: 1 1 140px; }
body.page-program .program-document-copy .legal-bar > * { min-width: 0; max-width: 100%; }

body.page-program [data-tochka-block="program-teachers"] .program-teachers-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important; align-items: stretch;
}
body.page-program .program-teachers-grid > article.card-teacher {
  display: flex !important; flex-direction: column; grid-row: auto !important; min-width: 0;
}
body.page-program .program-teachers-grid.is-enhanced > article.card-teacher.is-collapsed { display: none !important; }
body.page-program .program-teachers-grid > article.card-teacher > .card-teacher__link {
  display: grid !important; grid-template-columns: 124px minmax(0, 1fr) !important;
  align-items: start !important; flex: 1 1 auto;
}
body.page-program .program-teachers-grid > article.card-teacher .card-teacher__photo {
  width: 124px !important; height: 165.333px !important; min-height: 0 !important;
  aspect-ratio: 3 / 4 !important; align-self: start; justify-self: start !important;
}
body.page-program .program-teachers-grid > article.card-teacher .card-teacher__photo img {
  width: 100%; height: 100%; object-fit: cover; object-position: center 25%;
}
body.page-program .program-teachers-grid > article.card-teacher .card-teacher__body {
  display: block !important; min-width: 0; padding: 16px !important;
}
body.page-program .program-teachers-grid > article.card-teacher .card-teacher__role {
  display: block; overflow-wrap: anywhere; -webkit-line-clamp: unset !important;
}
body.page-program .program-teachers-grid > article.card-teacher .card-teacher__role.program-teacher-role--collapsed {
  display: -webkit-box !important; -webkit-box-orient: vertical; -webkit-line-clamp: 4 !important; overflow: hidden;
}
body.page-program .program-teachers-grid .program-teacher-more {
  color: var(--c-primary); padding: 0; margin: 0 16px 16px 140px; text-align: left;
  text-decoration: underline; align-self: flex-start; font-size: var(--fs-small);
}
.program-teacher-more[hidden] { display: none !important; }
@media (max-width: 1099px) {
  body.page-program [data-tochka-block="program-teachers"] .program-teachers-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}
@media (max-width: 699px) {
  body.page-program [data-tochka-block="program-teachers"] .program-teachers-grid { grid-template-columns: minmax(0, 1fr) !important; }
}
@media (max-width: 399px) {
  body.page-program .program-teachers-grid > article.card-teacher > .card-teacher__link { grid-template-columns: 96px minmax(0, 1fr) !important; }
  body.page-program .program-teachers-grid > article.card-teacher .card-teacher__photo { width: 96px !important; height: 128px !important; }
  body.page-program .program-teachers-grid > article.card-teacher .card-teacher__body { padding: 12px !important; }
  body.page-program .program-teachers-grid .program-teacher-more { margin-left: 108px; margin-right: 12px; }
}

/* Часть 6.1 (Нина 03.11): «Об институте» → «2 формата обучения»: карточка формата с пустым заголовком не выводится,
   сетка ужимается под оставшиеся (у клиентки два формата; третья карточка зашита в шаблон). */
[data-tochka-block="about-formats"] .format-card:has(> h3:empty) { display: none; }
@media (min-width: 768px) { [data-tochka-block="about-formats"] .grid--3:has(.format-card > h3:empty) { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 800px; margin-left: auto; margin-right: auto; } }

/* ============================================================================
   Часть 6 (Нина 01.11) — общая всплывающая форма «Оставить заявку» (#lead-popup).
   Открывается кнопкой «Заявка» в шапке и ссылками href="#zayavka" там, где нет своей формы.
   Адаптив: ширина min(560px, 100% - 32px), поля 100%, кнопка во всю ширину, на телефоне отступы 20/16.
   ========================================================================== */
.lead-dialog-open { overflow: hidden; }
.lead-dialog {
  box-sizing: border-box; width: min(560px, calc(100% - 32px)); max-width: calc(100% - 32px);
  max-height: calc(100dvh - 32px); margin: auto; padding: 32px; overflow-y: auto;
  color: var(--c-text); background: var(--c-bg); border: 0; border-radius: 16px;
  box-shadow: 0 16px 64px rgb(0 0 0 / .3);
}
.lead-dialog::backdrop { background: rgb(0 0 0 / .6); }
.lead-dialog h2 { margin: 0 40px 12px 0; font-size: 28px; line-height: 1.2; overflow-wrap: anywhere; }
.lead-dialog > p { margin: 0 0 16px; color: var(--c-text-soft); line-height: 1.5; }
.lead-dialog__close { position: absolute; top: 12px; right: 12px; width: 44px; height: 44px; border: 0; border-radius: 8px; background: var(--c-bg-soft); color: var(--c-text); cursor: pointer; font-size: 28px; line-height: 1; }
.lead-dialog__close:hover { background: var(--c-accent-soft, #ffd9cc); }
.lead-dialog :focus-visible { outline: 3px solid var(--c-primary); outline-offset: 3px; }
.lead-dialog__form { display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; }
.lead-dialog__form > label { margin-top: 8px; font-weight: 600; }
.lead-dialog__form > input {
  box-sizing: border-box; min-width: 0; width: 100%; min-height: 44px; padding: 10px 12px;
  font: inherit; font-size: 16px; color: var(--c-text); background: var(--c-bg);
  border: 1px solid var(--c-text-soft); border-radius: 8px;
}
.lead-dialog__consent { display: flex; align-items: flex-start; gap: 10px; margin-top: 8px; font-size: 14px; font-weight: 400 !important; line-height: 1.5; }
.lead-dialog__consent input { flex: 0 0 20px; width: 20px; height: 20px; margin-top: 2px; }
.lead-dialog__consent span { min-width: 0; overflow-wrap: anywhere; }
.lead-dialog__consent a { color: var(--c-primary); text-decoration: underline; }
.lead-dialog__form > .btn { width: 100%; white-space: normal; min-height: 44px; margin-top: 8px; }
.lead-dialog__form .form-note { margin: 8px 0 0; overflow-wrap: anywhere; }
@media (max-width: 480px) {
  .lead-dialog { padding: 20px 16px; }
  .lead-dialog h2 { font-size: 24px; }
}
/* 03.11.2026 (обратка Нины): картинки вместо заглушек макета + дополнительная карточка направлений без ссылки */
.direction-card--static, .direction-card--static:hover, .direction-card--static:focus-visible { cursor: default; transform: none; }
.direction-card--static:hover .direction-card__arrow { transform: none; }
.doc-sample { display: block; border-radius: var(--radius-md); overflow: hidden; border: 1px solid var(--c-border-soft); background: var(--c-bg-soft); }
.doc-sample__image { display: block; width: 100%; height: auto; }
.doc-sample:hover .doc-sample__image, .doc-sample:focus-visible .doc-sample__image { opacity: .92; }
.hero__photo { display: block; width: 100%; height: auto; border-radius: var(--radius-lg); object-fit: cover; }
