/* ============================================================================
   ПУБЛИЧНЫЕ СТРАНИЦЫ — static/css/pages/public.css
   Главная, каталог образцов, страница образца, хабы /dlya/, тарифы, юридические
   страницы, регистрация, вход, восстановление пароля, 404, отписка.
   Компоненты — из ui.css (.ui-*); здесь только раскладка и то, чего в системе нет.
   Ритм секций: 64 px на компьютере, 40 px на телефоне. Токены — только из :root ui.css.
   ========================================================================== */

/* ---------- 1. Секции и ритм ---------- */
.pub-section { padding: var(--ui-s16) 0; }
.pub-section + .pub-section { padding-top: 0; }
.pub-section--band { background: var(--ui-surface-2); border-top: 1px solid var(--ui-line); border-bottom: 1px solid var(--ui-line); padding: var(--ui-s16) 0; }
.pub-section--band + .pub-section, .pub-section--band + .pub-section--band { padding-top: var(--ui-s16); }
.pub-section--tight { padding-top: var(--ui-s10); padding-bottom: var(--ui-s10); }
/* Секции с якорем (#osnovanie, #po-teme на образцах): при переходе по ссылке заголовок не уходит под липкую шапку */
.pub-section[id] { scroll-margin-top: calc(var(--ui-topbar-h) + var(--ui-s4)); }
.pub-head { display: grid; gap: var(--ui-s2); max-width: 64ch; margin-bottom: var(--ui-s8); }
.pub-head__title { font-size: clamp(24px, 3vw, 30px); font-weight: 700; line-height: 1.2; letter-spacing: -.015em; margin: 0; text-wrap: balance; }
.pub-head__text { margin: 0; color: var(--ui-ink-2); font-size: var(--ui-fs-lg); line-height: 1.5; }
.pub-head--center { margin-left: auto; margin-right: auto; text-align: center; }
.pub-prose { max-width: 65ch; font-size: 16px; line-height: 1.6; color: var(--ui-ink); }
.pub-prose p { margin: 0 0 var(--ui-s4); }
.pub-prose p:last-child { margin-bottom: 0; }
.pub-prose h2 { font-size: var(--ui-fs-h2); margin: var(--ui-s8) 0 var(--ui-s3); }
.pub-prose h2:first-child { margin-top: 0; }
.pub-prose--lg { font-size: 17px; }

/* ---------- 2. Герой ---------- */
.pub-hero { padding: var(--ui-s12) 0 var(--ui-s16); }
.pub-hero .ui-hero { padding: 0; }
.pub-hero__copy { display: grid; gap: var(--ui-s5); align-content: center; }
.pub-hero__title { font-size: clamp(30px, 3.6vw, 42px); font-weight: 700; line-height: 1.1; letter-spacing: -.02em; margin: 0; text-wrap: balance; max-width: 18ch; }
.pub-hero__text { font-size: var(--ui-fs-lg); line-height: 1.55; color: var(--ui-ink-2); max-width: 50ch; margin: 0; }
.pub-hero__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--ui-s3) var(--ui-s5); }
.pub-hero__note { margin: 0; font-size: var(--ui-fs-sm); color: var(--ui-muted); display: flex; align-items: center; gap: 6px; }
.pub-hero__note .ui-icon { width: 16px; height: 16px; color: var(--ui-ok); }

/* Снимок продукта в «рамке устройства» (CSS, без картинок) */
.pub-device { margin: 0; border: 1px solid var(--ui-line-strong); border-radius: 14px; background: var(--ui-surface); box-shadow: 0 1px 2px rgba(29,28,25,.06), 0 24px 48px -24px rgba(29,28,25,.25); overflow: hidden; }
.pub-device__bar { display: flex; align-items: center; gap: 6px; height: 34px; padding: 0 14px; background: var(--ui-surface-2); border-bottom: 1px solid var(--ui-line); }
.pub-device__bar i { width: 10px; height: 10px; border-radius: 50%; background: var(--ui-line-strong); display: block; }
.pub-device__bar span { margin-left: 10px; flex: 1; height: 18px; border-radius: 6px; background: var(--ui-surface); border: 1px solid var(--ui-line); font-size: 11px; line-height: 16px; color: var(--ui-muted); padding: 0 10px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.pub-device img { display: block; width: 100%; height: auto; }
.pub-device__caption { padding: 10px 14px 12px; font-size: var(--ui-fs-sm); color: var(--ui-muted); border-top: 1px solid var(--ui-line); line-height: 1.4; }

/* ---------- 3. Поиск журнала и чипы ---------- */
.pub-search { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--ui-s2); max-width: 640px; }
.pub-search .ui-input-group { min-width: 0; }
.pub-search .ui-input::placeholder { text-overflow: ellipsis; }
.pub-chips { display: flex; flex-wrap: wrap; gap: var(--ui-s2); }
.pub-chips .ui-filter-chip { min-height: 44px; padding: 0 16px; font-size: 14px; gap: 8px; }
.pub-chips .ui-filter-chip .ui-icon { width: 18px; height: 18px; color: var(--ui-muted); }
.pub-chips .ui-filter-chip:hover .ui-icon { color: var(--ui-ink); }
.pub-chips--sm .ui-filter-chip { min-height: 40px; font-size: var(--ui-fs-sm); }
.pub-chips__label { align-self: center; font-size: var(--ui-fs-sm); color: var(--ui-muted); margin-right: 4px; }
.pub-toolbar { display: grid; gap: var(--ui-s3); margin-bottom: var(--ui-s6); }

/* ---------- 4. Шаги «как это работает», признаки, «кто делает» ---------- */
.pub-steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--ui-s6); padding: 0; margin: 0; list-style: none; counter-reset: pub-step; }
.pub-steps > li { display: grid; gap: var(--ui-s3); align-content: start; counter-increment: pub-step; }
.pub-steps__icon { position: relative; width: 52px; height: 52px; border-radius: 14px; background: var(--ui-primary-tint); color: var(--ui-primary); display: grid; place-items: center; }
.pub-steps__icon .ui-icon { width: 26px; height: 26px; stroke-width: 1.6; }
.pub-steps__icon::after { content: counter(pub-step); position: absolute; top: -8px; right: -8px; width: 22px; height: 22px; border-radius: 50%; background: var(--ui-ink); color: #fff; font-size: 12px; font-weight: 700; display: grid; place-items: center; box-shadow: 0 0 0 3px var(--ui-surface-2); }
.pub-section:not(.pub-section--band) .pub-steps__icon::after { box-shadow: 0 0 0 3px var(--ui-paper); }
.pub-steps__title { font-size: var(--ui-fs-h3); font-weight: 600; margin: 0; }
.pub-steps__text { margin: 0; color: var(--ui-ink-2); }
.pub-steps--list { grid-template-columns: 1fr; gap: var(--ui-s5); max-width: 70ch; }
.pub-steps--list > li { grid-template-columns: auto minmax(0, 1fr); grid-template-rows: auto auto; column-gap: var(--ui-s4); row-gap: 4px; }
.pub-steps--list .pub-steps__n { grid-row: 1 / 3; width: 36px; height: 36px; border-radius: 50%; background: var(--ui-primary); color: #fff; font-weight: 700; font-size: 15px; display: grid; place-items: center; }
.pub-steps--list .pub-steps__n::before { content: counter(pub-step); }
.pub-steps--list .pub-steps__title { align-self: center; }
.pub-features { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--ui-s8) var(--ui-s6); }
.pub-features .ui-feature__text { color: var(--ui-ink-2); }
.pub-features--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.pub-makers { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--ui-s8); }
.pub-makers > div { display: grid; gap: var(--ui-s2); align-content: start; padding-top: var(--ui-s4); border-top: 2px solid var(--ui-line-strong); }
.pub-makers h3 { font-size: var(--ui-fs-h3); margin: 0; }
.pub-makers p { margin: 0; color: var(--ui-ink-2); }

/* Наборы по типу объекта — строки списка */
.pub-hub-list .ui-row__icon { background: var(--ui-amber-tint); color: var(--ui-amber-text); }
.pub-hub-list .ui-row__aside .ui-icon { color: var(--ui-muted); }

/* ---------- 5. Пакет «Контроль» на главной ---------- */
.pub-control { display: grid; grid-template-columns: minmax(300px, .9fr) minmax(0, 1.1fr); gap: var(--ui-s8); align-items: start; }
.pub-control__card .ui-card__body { display: grid; gap: var(--ui-s4); }
.pub-control__price { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.pub-checks { display: grid; gap: 10px; padding: 0; margin: 0; list-style: none; }
.pub-checks li { display: flex; align-items: flex-start; gap: 10px; line-height: 1.4; }
.pub-checks .ui-icon { flex: none; margin-top: 2px; color: var(--ui-ok); }
.pub-checks--inline { display: flex; flex-wrap: wrap; gap: 8px 20px; }
.pub-checks--inline li { font-size: var(--ui-fs-sm); color: var(--ui-ink-2); align-items: center; }
.pub-checks--inline .ui-icon { width: 16px; height: 16px; margin-top: 0; }

/* ---------- 6. Каталог: журнал — одна ссылка. Карточка на компьютере, строка списка на телефоне ---------- */
.pub-group { display: grid; gap: var(--ui-s4); scroll-margin-top: 80px; }
.pub-group + .pub-group { margin-top: var(--ui-s10); }
.pub-group[hidden] { display: none; }
.pub-group__head { display: flex; align-items: center; gap: var(--ui-s3); list-style: none; cursor: default; }
.pub-group__head::-webkit-details-marker { display: none; }
.pub-group__head:focus-visible { outline: 3px solid var(--ui-focus); outline-offset: 4px; border-radius: 8px; }
.pub-group__icon { width: 40px; height: 40px; border-radius: 10px; background: var(--ui-primary-tint); color: var(--ui-primary); display: grid; place-items: center; flex: none; }
.pub-group__copy { display: grid; gap: 2px; min-width: 0; }
.pub-group__title { font-size: var(--ui-fs-h2); font-weight: 600; line-height: 1.25; margin: 0; display: flex; align-items: center; gap: 10px; }
.pub-group__text { margin: 0; color: var(--ui-muted); font-size: 14px; }
.pub-group__chevron { display: none; flex: none; margin-left: auto; width: 44px; height: 44px; place-items: center; color: var(--ui-muted); transition: transform .15s ease; }
.pub-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--ui-s4); align-items: stretch; }
.pub-journal-card { position: relative; display: flex; flex-direction: column; gap: 12px; padding: var(--ui-s5); min-width: 0; color: var(--ui-ink); text-decoration: none; transition: border-color .15s ease, box-shadow .15s ease; }
.pub-journal-card:hover { color: var(--ui-ink); border-color: var(--ui-primary-line); box-shadow: var(--ui-shadow-sm); }
.pub-journal-card:focus-visible { outline: 3px solid var(--ui-focus); outline-offset: 2px; }
.pub-journal-card[hidden] { display: none; }
.pub-journal-card__icon { width: 40px; height: 40px; border-radius: 10px; background: var(--ui-primary-tint); color: var(--ui-primary); display: grid; place-items: center; flex: none; }
.pub-journal-card__body { flex: 1; display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.pub-journal-card__hint { position: absolute; top: var(--ui-s5); right: var(--ui-s5); max-width: 48%; font-size: var(--ui-fs-xs); font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--ui-muted); text-align: right; line-height: 1.3; }
.pub-journal-card__title { font-size: var(--ui-fs-h3); font-weight: 600; line-height: 1.3; margin: 0; }
.pub-journal-card__freq { color: var(--ui-ink-2); font-size: 14px; line-height: 1.45; }
.pub-journal-card__fields { display: flex; flex-wrap: wrap; gap: 6px; }
.pub-journal-card__fields span { font-size: var(--ui-fs-xs); color: var(--ui-muted); padding: 3px 8px; border-radius: var(--ui-radius-pill); background: var(--ui-surface-2); line-height: 1.35; }
.pub-journal-card__fields .pub-journal-card__count { color: var(--ui-ink-2); font-weight: 600; }
.pub-journal-card__cta { display: inline-flex; align-items: center; gap: 6px; margin-top: auto; padding-top: 6px; font-size: 14px; font-weight: 600; color: var(--ui-link); }
.pub-journal-card__cta .ui-icon { width: 16px; height: 16px; transition: transform .15s ease; }
.pub-journal-card:hover .pub-journal-card__cta .ui-icon { transform: translateX(3px); }
.pub-journal-card__chevron { display: none; flex: none; color: var(--ui-muted); }
/* Карточка — блок; ссылка на образец растянута на всю карточку через ::after, а «бланк PDF»
   лежит поверх (z-index) — так у карточки две ссылки без вложения <a> в <a>. */
.pub-journal-card__link { color: inherit; text-decoration: none; }
.pub-journal-card__link::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.pub-journal-card__link:focus-visible { outline: none; }
.pub-journal-card:focus-within { outline: 3px solid var(--ui-focus); outline-offset: 2px; }
.pub-journal-card__foot { display: flex; align-items: center; justify-content: space-between; gap: var(--ui-s3); margin-top: auto; padding-top: 6px; }
.pub-journal-card__foot .pub-journal-card__cta { margin-top: 0; padding-top: 0; }
.pub-journal-card__blank { position: relative; z-index: 1; display: inline-flex; align-items: center; gap: 4px; min-height: 28px; font-size: var(--ui-fs-sm); color: var(--ui-muted); text-decoration: none; white-space: nowrap; }
.pub-journal-card__blank .ui-icon { width: 14px; height: 14px; }
.pub-journal-card__blank:hover { color: var(--ui-link); text-decoration: underline; }

/* ---------- 7. Страница образца и хаб ---------- */
/* Кнопки бланков рядом с главной кнопкой: вторичная PDF и контурная XLSX */
.pub-blank-links { display: inline-flex; flex-wrap: wrap; align-items: center; gap: var(--ui-s2); }
.pub-blank-links .ui-btn .ui-icon { width: 18px; height: 18px; }
/* Честная подпись под кнопками: бланк — после бесплатной регистрации (только анониму) */
.pub-blank-hint { margin: -6px 0 0; }
/* Регистрация: баннер «бланк откроется сразу после регистрации» над полями формы */
.pub-auth__blank .ui-notice__title { font-size: 15px; line-height: 1.35; }
/* Хаб: ссылка «бланк PDF» после названия журнала */
.pub-hub-table__blank { display: inline-block; margin-left: 6px; font-size: var(--ui-fs-xs); font-weight: 500; color: var(--ui-muted); white-space: nowrap; }
.pub-hub-table__blank:hover { color: var(--ui-link); }
.pub-hub-table td { font-size: 14px; }
/* Ответственность: таблица «кто отвечает — что грозит» и сноска с первоисточником */
.pub-liability__table td.ui-table__primary { width: 34%; }
.pub-liability__note { margin: var(--ui-s3) 0 0; max-width: 72ch; font-size: var(--ui-fs-sm); line-height: 1.5; color: var(--ui-muted); }
.pub-liability__note a { color: var(--ui-link); }
.pub-liability__note .ui-icon { width: 14px; height: 14px; vertical-align: -2px; margin-left: 2px; }
.ui-breadcrumbs { padding: var(--ui-s4) 0 0; font-size: var(--ui-fs-sm); color: var(--ui-muted); }
.ui-breadcrumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; margin: 0; padding: 0; list-style: none; }
.ui-breadcrumbs li { display: inline-flex; align-items: center; gap: 6px; min-height: 28px; }
.ui-breadcrumbs li + li::before { content: ""; width: 14px; height: 14px; flex: none; opacity: .55; background: currentColor; -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat; }
.ui-breadcrumbs a { color: var(--ui-ink-2); text-decoration: none; }
.ui-breadcrumbs a:hover { color: var(--ui-ink); text-decoration: underline; }
.ui-breadcrumbs li:last-child { min-width: 0; max-width: 100%; }
.ui-breadcrumbs [aria-current="page"] { color: var(--ui-ink); font-weight: 500; max-width: min(60ch, 100%); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 700px) {
  /* На телефоне кнопки «Скачать бланк PDF» и «Вести онлайн» — выше полосы фактов (0 ₽ · графы · PDF):
     иначе главная кнопка страницы образца оказывалась за нижним краем первого экрана (26.09.2026). */
  .pub-detail__copy .pub-facts { order: 3; }
}
@media (max-width: 700px) {
  /* Длинное название журнала в крошках не должно расширять экран телефона. */
  .ui-breadcrumbs [aria-current="page"] { white-space: normal; overflow: visible; overflow-wrap: anywhere; }
}

/* Две колонки на всю страницу: слева текст и таблицы, справа липкая колонка (нормативная
   база, наборы, похожие). Секции внутри колонки — без собственных отступов, ритм задаёт gap. */
.pub-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: var(--ui-s10); align-items: start; padding: var(--ui-s5) 0 var(--ui-s16); }
.pub-layout__main { display: grid; gap: var(--ui-s12); min-width: 0; }
.pub-layout .pub-layout__main > .pub-section, .pub-layout .pub-layout__main > .pub-section + .pub-section { padding: 0; }
.pub-layout .pub-layout__main > .pub-section--band { padding: var(--ui-s6); border: 1px solid var(--ui-line); border-radius: var(--ui-radius-lg); background: var(--ui-surface-2); }
.pub-layout .pub-layout__main > .pub-section--band .pub-head { margin-bottom: var(--ui-s5); }
/* Полоса после обычной секции: правило «.pub-section + .pub-section { padding: 0 }» сильнее по весу
   и обнуляло отступы полосы — текст упирался в рамку (17.09.2026). */
.pub-layout .pub-layout__main > .pub-section.pub-section--band { padding: var(--ui-s6); }
.pub-layout__side { position: sticky; top: 80px; display: grid; gap: var(--ui-s5); min-width: 0; }
.pub-side-block { display: grid; gap: var(--ui-s3); }
.pub-side-block__title { font-size: var(--ui-fs-xs); font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--ui-muted); margin: 0; }
.pub-side-list .ui-row { min-height: 52px; padding: 8px 12px; gap: 10px; }
.pub-side-list .ui-row__icon { width: 32px; height: 32px; border-radius: 8px; }
.pub-side-list .ui-row__icon .ui-icon { width: 18px; height: 18px; }
.pub-side-list .ui-row__title { font-size: 14px; }
.pub-side-list .ui-row__meta { font-size: var(--ui-fs-xs); }
.pub-side-list .ui-row__aside .ui-icon { width: 18px; height: 18px; }

.pub-detail__copy { display: grid; gap: var(--ui-s4); }
.pub-detail__title, .pub-detail__copy > h1 { font-size: clamp(26px, 3.2vw, 36px); font-weight: 700; line-height: 1.15; letter-spacing: -.015em; margin: 0; max-width: 22ch; text-wrap: balance; }
.pub-detail__lead { font-size: var(--ui-fs-lg); line-height: 1.55; color: var(--ui-ink-2); margin: 0; max-width: 60ch; }
.pub-facts { display: grid; grid-template-columns: repeat(3, minmax(0, max-content)); gap: var(--ui-s2) var(--ui-s8); margin: 0; padding: var(--ui-s3) 0; border-top: 1px solid var(--ui-line); border-bottom: 1px solid var(--ui-line); }
.pub-facts div { display: grid; gap: 1px; min-width: 0; align-content: start; }
.pub-facts dt { order: 2; font-size: var(--ui-fs-sm); color: var(--ui-muted); line-height: 1.35; }
.pub-facts dd { order: 1; margin: 0; font-size: 22px; font-weight: 700; letter-spacing: -.01em; font-variant-numeric: tabular-nums; line-height: 1.1; }
.pub-aside .ui-card__body { display: grid; gap: var(--ui-s2); }
.pub-aside__label { display: inline-flex; align-items: center; gap: 6px; font-size: var(--ui-fs-xs); font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--ui-primary); }
.pub-aside h2 { font-size: var(--ui-fs-h3); margin: 0; line-height: 1.3; }
.pub-aside p { margin: 0; color: var(--ui-ink-2); font-size: 14px; line-height: 1.5; }
.pub-aside__updated { font-size: var(--ui-fs-xs); color: var(--ui-muted); padding-top: 6px; border-top: 1px solid var(--ui-line); margin-top: 4px; }
.pub-aside ul { margin: 0; padding: 0; list-style: none; display: grid; }
.pub-aside ul li { display: flex; justify-content: space-between; gap: 10px; align-items: center; min-height: 40px; border-top: 1px solid var(--ui-line); font-size: 14.5px; }
.pub-aside ul li:first-child { border-top: 0; }
.pub-aside ul li span { color: var(--ui-muted); font-size: var(--ui-fs-sm); white-space: nowrap; }
.pub-req { display: inline-block; margin-left: 6px; font-size: var(--ui-fs-xs); font-weight: 500; color: var(--ui-muted); }
.pub-table-note { margin: var(--ui-s3) 0 0; font-size: var(--ui-fs-sm); color: var(--ui-muted); }
.pub-table-wrap .ui-table td { vertical-align: top; }
.pub-table-wrap .ui-table th[scope="row"] { position: static; background: var(--ui-surface); color: var(--ui-ink); font-size: 14px; font-weight: 500; text-transform: none; letter-spacing: 0; white-space: normal; padding: 12px 14px; border-bottom: 1px solid var(--ui-line); }
.pub-table-wrap .ui-table--zebra tbody tr:nth-child(even) th[scope="row"] { background: #fbfaf7; }
.pub-table-wrap .ui-table tbody tr:hover th[scope="row"] { background: var(--ui-surface-2); }
.pub-table-wrap .ui-table tbody tr:last-child th[scope="row"] { border-bottom: 0; }
.pub-sample .ui-table td { font-size: 14px; }
.pub-sample .ui-table tr.is-bad td { color: var(--ui-ink); }
.pub-sample .ui-table tr.is-bad td.ui-table__primary { color: var(--ui-bad); }
.pub-sample .ui-table td.pub-sample__status { white-space: nowrap; }
.pub-sample .ui-table td .ui-badge { vertical-align: top; }
.pub-legend { display: inline-flex; align-items: center; gap: 8px; margin-top: var(--ui-s3); font-size: var(--ui-fs-sm); color: var(--ui-muted); }
/* Образец на листе бланка — белая «бумага» в рамке и в тёмной теме. */
.pub-sample-image { margin: var(--ui-s4) 0 0; }
.pub-sample-image a { display: block; }
.pub-sample-image img { display: block; width: 100%; height: auto; background: #fff; border: 1px solid var(--ui-line); border-radius: var(--ui-radius); }
.pub-sample-image figcaption { margin-top: var(--ui-s2); font-size: var(--ui-fs-sm); color: var(--ui-muted); }
.pub-hub-extra { margin-top: var(--ui-s5); display: grid; gap: var(--ui-s2); }
.pub-hub-extra strong { font-size: 14px; }

/* FAQ на <details> */
.pub-faq { display: grid; max-width: 72ch; border-top: 1px solid var(--ui-line); }
.pub-faq details { border-bottom: 1px solid var(--ui-line); }
.pub-faq summary { display: flex; align-items: center; justify-content: space-between; gap: var(--ui-s4); min-height: 56px; padding: 14px 0; list-style: none; cursor: pointer; font-size: 16px; font-weight: 600; line-height: 1.35; color: var(--ui-ink); }
.pub-faq summary::-webkit-details-marker { display: none; }
.pub-faq summary .ui-icon { flex: none; color: var(--ui-muted); transition: transform .15s ease; }
.pub-faq details[open] summary .ui-icon { transform: rotate(180deg); color: var(--ui-primary); }
.pub-faq summary:hover { color: var(--ui-primary-deep); }
.pub-faq summary:focus-visible { outline: 3px solid var(--ui-focus); outline-offset: -3px; border-radius: 6px; }
.pub-faq__body { padding: 0 0 var(--ui-s4); color: var(--ui-ink-2); line-height: 1.55; max-width: 65ch; }
.pub-faq__body p { margin: 0; }

/* Итоговый призыв */
.pub-cta { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--ui-s6); align-items: center; padding: var(--ui-s8); border-radius: var(--ui-radius-lg); background: var(--ui-primary-tint); border: 1px solid var(--ui-primary-line); }
.pub-cta__copy { display: grid; gap: var(--ui-s2); max-width: 60ch; }
.pub-cta__title { font-size: clamp(22px, 2.4vw, 26px); font-weight: 700; margin: 0; line-height: 1.2; letter-spacing: -.012em; }
.pub-cta p { margin: 0; color: var(--ui-ink-2); }
.pub-cta__actions { display: grid; gap: var(--ui-s2); justify-items: center; }

/* ---------- 8. Тарифы ---------- */
.pub-compare th, .pub-compare td { vertical-align: middle; }
.pub-compare thead th { white-space: normal; vertical-align: bottom; padding: var(--ui-s4) 14px; }
.pub-compare thead th:first-child { width: 52%; }
.pub-compare--3 thead th:first-child { width: 40%; }
.pub-compare--3 thead th:not(:first-child) { width: 20%; }
.pub-compare__part { font-size: var(--ui-fs-sm); font-weight: 600; color: var(--ui-ink-2); white-space: nowrap; }
.pub-compare thead th:not(:first-child), .pub-compare tbody td, .pub-compare tfoot td { text-align: center; }
.pub-compare thead th.is-paid { background: var(--ui-amber-tint); }
.pub-compare__plan { display: grid; gap: 2px; justify-items: center; text-transform: none; letter-spacing: 0; color: var(--ui-ink); }
.pub-compare__plan-name { font-size: 15px; font-weight: 600; }
.pub-compare__plan-note { font-size: var(--ui-fs-xs); font-weight: 500; color: var(--ui-muted); }
.pub-compare .ui-price { font-size: 30px; }
.pub-compare tbody th[scope="row"] { font-weight: 500; }
.pub-compare__yes { position: relative; display: inline-grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: var(--ui-ok-bg); color: var(--ui-ok); }
.pub-compare__yes .ui-icon { width: 18px; height: 18px; stroke-width: 2; }
.pub-compare__no { color: var(--ui-placeholder); font-size: 18px; }
.pub-compare__actions { display: flex; justify-content: flex-end; gap: var(--ui-s2); padding: var(--ui-s4) 14px; border-top: 1px solid var(--ui-line); background: #fbfaf7; }
.pub-routes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--ui-s4); }
.pub-route-card { display: grid; gap: var(--ui-s2); padding: var(--ui-s5); align-content: start; }
.pub-route-card__n { width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center; background: var(--ui-surface-2); color: var(--ui-ink-2); font-size: 13px; font-weight: 700; margin-bottom: 4px; }
.pub-route-card.is-primary .pub-route-card__n { background: var(--ui-primary); color: #fff; }
.pub-route-card strong { font-size: var(--ui-fs-h3); font-weight: 600; }
.pub-route-card p { margin: 0; color: var(--ui-ink-2); font-size: 14px; }
.pub-route-card em { font-style: normal; font-weight: 600; color: var(--ui-link); display: inline-flex; align-items: center; gap: 6px; margin-top: 4px; }

/* ---------- 9. Юридические страницы, контакты ---------- */
.pub-legal { padding-bottom: var(--ui-s16); }
.pub-legal .ui-page-head { padding-bottom: var(--ui-s6); }
.pub-legal .ui-kv { gap: 10px 24px; }
.pub-legal .ui-kv dt { font-size: 14px; }
.pub-contact-row { display: flex; align-items: center; gap: 10px; }
.pub-contact-row .ui-icon { color: var(--ui-primary); }

/* ---------- 10. Вход, регистрация, восстановление, отписка ---------- */
.pub-auth { max-width: 520px; margin: 0 auto; padding: var(--ui-s10) var(--ui-page-x) var(--ui-s16); display: grid; gap: var(--ui-s5); }
.pub-auth--wide { max-width: 560px; }
.pub-auth__head { display: grid; gap: var(--ui-s2); text-align: center; }
.pub-auth__title { font-size: clamp(24px, 3vw, 30px); font-weight: 700; line-height: 1.2; letter-spacing: -.015em; margin: 0; text-wrap: balance; }
.pub-auth__lead { margin: 0; color: var(--ui-ink-2); max-width: 46ch; margin-left: auto; margin-right: auto; }
.pub-auth__card .ui-card__body { display: grid; gap: var(--ui-s5); padding: var(--ui-s6); }
.pub-auth__card .ui-steps { justify-content: center; flex-wrap: wrap; }
.pub-auth__form { display: grid; gap: var(--ui-s4); }
.pub-auth__form .ui-btn--primary { margin-top: var(--ui-s1); }
.pub-auth__links { display: grid; gap: 6px; text-align: center; font-size: 14.5px; color: var(--ui-ink-2); }
.pub-auth__links a { font-weight: 500; }
.pub-auth__proof { justify-content: center; }
.pub-auth__proof li { color: var(--ui-muted); }
.pub-auth__picked { display: grid; gap: 2px; padding: 12px 14px; border-radius: var(--ui-radius); background: var(--ui-amber-tint); border: 1px solid var(--ui-amber-line); }
.pub-auth__picked span { font-size: var(--ui-fs-xs); font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--ui-amber-text); }
.pub-auth__picked strong { font-size: 15px; }
.pub-auth__picked small { color: var(--ui-muted); }
/* Реквизиты организации на регистрации свёрнуты (26.09.2026): нужны не всем, раскрываются по клику или при ошибке. */
.pub-auth__details { border: 1px solid var(--ui-line); border-radius: var(--ui-radius); background: var(--ui-surface-2); }
.pub-auth__summary { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 10px; padding: 12px 14px; cursor: pointer; font-weight: 600; list-style: none; }
.pub-auth__summary::-webkit-details-marker { display: none; }
.pub-auth__summary::before { content: "+"; display: inline-grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; border: 1px solid var(--ui-line-input); font-weight: 700; line-height: 1; }
.pub-auth__details[open] .pub-auth__summary::before { content: "−"; }
.pub-auth__summary .ui-label__opt { font-weight: 400; }
.pub-auth__details-body { display: grid; gap: var(--ui-s4); padding: 0 14px 14px; }
.pub-auth .ui-check.is-error .ui-check__text { color: var(--ui-bad); }
.pub-auth__terms { margin: 0; text-align: center; }
.pub-disclosure { border: 1px solid var(--ui-line); border-radius: var(--ui-radius); background: var(--ui-paper); }
.pub-disclosure > summary { display: flex; align-items: center; gap: 8px; min-height: 48px; padding: 0 14px; list-style: none; cursor: pointer; font-size: 15px; font-weight: 600; color: var(--ui-ink); }
.pub-disclosure > summary::-webkit-details-marker { display: none; }
.pub-disclosure > summary .ui-label__opt { font-weight: 400; }
.pub-disclosure > summary .ui-icon { margin-left: auto; color: var(--ui-muted); transition: transform .15s ease; }
.pub-disclosure[open] > summary .ui-icon { transform: rotate(180deg); }
.pub-disclosure__body { display: grid; gap: var(--ui-s3); padding: 4px 14px 14px; }
.pub-inn-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--ui-s2); }
.pub-auth .ui-error { margin-top: -2px; }
.pub-auth__errors { display: grid; gap: 4px; }
.pub-auth__errors ul { margin: 0; padding: 0; list-style: none; }
.pub-auth__form .ui-check { padding: 4px 0; min-height: 40px; }

/* ---------- 11. 404 ---------- */
.pub-404 { max-width: 640px; margin: 0 auto; padding: var(--ui-s10) var(--ui-page-x) var(--ui-s16); display: grid; gap: var(--ui-s6); }
.pub-404 .ui-empty { padding: var(--ui-s4) 0 0; }
.pub-404__search { display: grid; gap: var(--ui-s3); }
.pub-404__links { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--ui-s2); }

/* Уведомление с кнопкой: на телефоне кнопка уходит под текст, чтобы не распирать экран */
.pub-notice { flex-wrap: wrap; }
.pub-notice .ui-notice__body { flex: 1 1 220px; }
.pub-auth__form .ui-check { font-weight: 400; }
.pub-auth__form .ui-check__hint { font-weight: 400; }

/* ---------- 12. Адаптив ---------- */
@media (max-width: 1100px) {
  .pub-hero { padding: var(--ui-s8) 0 var(--ui-s12); }
  .pub-hero__title { max-width: none; }
  .pub-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pub-layout { grid-template-columns: 1fr; gap: var(--ui-s10); padding-bottom: var(--ui-s12); }
  .pub-layout__main { gap: var(--ui-s10); }
  .pub-layout__side { position: static; }
  .pub-control { grid-template-columns: 1fr; }
  .pub-routes { grid-template-columns: 1fr; }
}

/* «Обучение по теме» — блок с тремя бесплатными уроками на образцах, хабах и главной (partials/training_promo.html). */
.pub-training__lessons { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--ui-s4); }
.pub-training__lesson { display: grid; gap: var(--ui-s3); padding: var(--ui-s3); }
.pub-training__poster { display: grid; place-items: center; aspect-ratio: 16 / 9; border-radius: var(--ui-radius); overflow: hidden; background: var(--ui-primary-tint); color: var(--ui-primary); }
.pub-training__poster img { display: block; width: 100%; height: 100%; object-fit: cover; }
.pub-training__body { display: grid; gap: var(--ui-s2); }
.pub-training__title { font-weight: 600; line-height: 1.3; }
.pub-training__meta { display: flex; align-items: center; gap: var(--ui-s2); font-size: var(--ui-fs-sm); color: var(--ui-muted); }
.pub-training__links { display: flex; flex-wrap: wrap; gap: var(--ui-s3) var(--ui-s6); margin: var(--ui-s5) 0 var(--ui-s3); }
.pub-training__links .ui-link { display: inline-flex; align-items: center; gap: 4px; min-height: 44px; }
.pub-training .ui-hint { margin: 0; max-width: 64ch; }

@media (max-width: 900px) {
  .pub-training__lessons { grid-template-columns: 1fr; }
  .pub-training__lesson { grid-template-columns: 120px minmax(0, 1fr); align-items: center; }
  .pub-section, .pub-section--band, .pub-section--band + .pub-section, .pub-section--band + .pub-section--band { padding-top: var(--ui-s10); padding-bottom: var(--ui-s10); }
  .pub-section + .pub-section { padding-top: 0; }
  .pub-section--band + .pub-section, .pub-section--band + .pub-section--band { padding-top: var(--ui-s10); }
  .pub-head { margin-bottom: var(--ui-s6); }
  .pub-head__text { font-size: 16px; }
  .pub-hero { padding: var(--ui-s6) 0 var(--ui-s10); }
  .pub-hero__copy { gap: var(--ui-s4); }
  .pub-hero__actions { gap: var(--ui-s3); }
  .pub-hero__actions .ui-btn--primary { width: 100%; }
  .pub-steps, .pub-features, .pub-makers { grid-template-columns: 1fr; gap: var(--ui-s6); }
  .pub-search { grid-template-columns: 1fr; }
  .pub-cta { grid-template-columns: 1fr; padding: var(--ui-s6) var(--ui-s5); }
  .pub-cta__actions { justify-items: stretch; }
  .pub-cta__actions .ui-btn { width: 100%; }
  .pub-detail__title, .pub-detail__copy > h1 { max-width: none; }
  .pub-detail__copy .ui-btn--primary { width: 100%; }
  .pub-blank-links { width: 100%; }
  .pub-blank-links .ui-btn--secondary { flex: 1 1 auto; }
  .pub-layout { padding-top: var(--ui-s3); }
  .pub-layout__main { gap: var(--ui-s8); }
  .pub-layout .pub-layout__main > .pub-section, .pub-layout .pub-layout__main > .pub-section + .pub-section, .pub-layout .pub-layout__main > .pub-section--band + .pub-section { padding: 0; }
  .pub-layout .pub-layout__main > .pub-section--band, .pub-layout .pub-layout__main > .pub-section.pub-section--band { padding: var(--ui-s5) var(--ui-s4); }
  .pub-compare thead th:first-child { width: auto; }
  .pub-compare .ui-price { font-size: 22px; }
  .pub-compare thead th { padding: 12px 8px; }
  .pub-compare thead th:not(:first-child) { min-width: 84px; }
  .pub-compare tbody th[scope="row"] { font-size: 14px; padding: 10px 12px; }
  .pub-compare tbody td { padding: 10px 8px; }
  .pub-compare__actions { flex-direction: column-reverse; padding: 14px 12px; }
  .pub-compare__actions .ui-btn { width: 100%; }
  .pub-notice .ui-notice__actions { width: 100%; padding-left: 32px; }
  .pub-notice .ui-notice__actions .ui-btn { width: 100%; }
  .pub-legal .ui-page-head__kicker { min-height: 44px; }
  .pub-chips--sm .ui-filter-chip { min-height: 44px; }
  .pub-auth { padding: var(--ui-s6) var(--ui-page-x) var(--ui-s10); }
  .pub-auth__card .ui-card__body { padding: var(--ui-s5) var(--ui-s4); }
  .pub-404 { padding-top: var(--ui-s6); }
}
@media (max-width: 700px) {
  /* Каталог на телефоне: группа — свёрнутый <details>, журнал — строка списка */
  .pub-group { gap: var(--ui-s3); }
  .pub-group + .pub-group { margin-top: var(--ui-s5); }
  .pub-group__head { cursor: pointer; min-height: 56px; }
  .pub-group__title { font-size: var(--ui-fs-h3); }
  .pub-group__text { font-size: var(--ui-fs-sm); }
  .pub-group__chevron { display: grid; }
  .pub-group[open] .pub-group__chevron { transform: rotate(180deg); }
  .pub-cards { grid-template-columns: 1fr; gap: 0; background: var(--ui-surface); border: 1px solid var(--ui-line); border-radius: var(--ui-radius-lg); overflow: hidden; }
  .pub-journal-card { flex-direction: row; align-items: center; gap: 14px; padding: 12px 16px; min-height: 64px; border: 0; border-top: 1px solid var(--ui-line); border-radius: 0; box-shadow: none; }
  .pub-journal-card:first-child { border-top: 0; }
  .pub-journal-card:hover { box-shadow: none; background: #fbfaf7; }
  .pub-journal-card__body { flex-direction: row; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; }
  .pub-journal-card__hint, .pub-journal-card__cta { display: none; }
  .pub-journal-card__title { order: -1; flex: 1 1 100%; font-size: 15px; }
  .pub-journal-card__freq { order: 1; font-size: var(--ui-fs-sm); color: var(--ui-muted); line-height: 1.35; }
  .pub-journal-card__fields { gap: 0; }
  .pub-journal-card__fields span { display: none; }
  .pub-journal-card__fields .pub-journal-card__count { display: inline; padding: 0; background: none; font-size: var(--ui-fs-sm); font-weight: 500; color: var(--ui-muted); line-height: 1.35; }
  .pub-journal-card__foot { display: contents; }
  .pub-journal-card__blank { order: 2; min-height: 0; }
  .pub-journal-card__chevron { display: grid; }
  .pub-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pub-inn-row { grid-template-columns: 1fr; }
  .pub-404__links .ui-btn { flex: 1 1 100%; }
}
@media (max-width: 700px) {
  /* app.css на телефоне превращает любую таблицу в блоки с рамками у строк — возвращаем вид системы */
  .pub-table-wrap .ui-table--cards tr { border: 0; border-bottom: 1px solid var(--ui-line); border-radius: 0; margin: 0; background: transparent; overflow: visible; }
  .pub-table-wrap .ui-table--cards tr:last-child { border-bottom: 0; }
  .pub-sample .ui-table--cards td.pub-sample__status { white-space: normal; }
  .pub-sample .ui-table--cards td { grid-template-columns: 124px minmax(0, 1fr); }
  .pub-sample .ui-table--cards td.ui-table__primary { grid-template-columns: 1fr; }
  .pub-compare { display: table; }
  .pub-compare thead { display: table-header-group; }
  .pub-compare tbody { display: table-row-group; }
  .pub-compare tr { display: table-row; border: 0; margin: 0; border-radius: 0; background: transparent; }
  .pub-compare th, .pub-compare td { display: table-cell; }
  .pub-compare td::before { display: none; content: none; }
}
@media (max-width: 480px) {
  .pub-features--2 { grid-template-columns: 1fr; }
}
@media print {
  .pub-device, .pub-cta, .pub-hero__actions { display: none !important; }
}

/* ---------- 13. Раздел «Школы и детские сады»: хабы, детские страницы /dlya/<хаб>/<тема>/, «Для кого» ---------- */
/* Честная пометка под h1: «форма — рекомендуемый образец» или «в СанПиН формы нет» */
.pub-child__badge { margin: -4px 0 0; }
.pub-child__badge .ui-badge { white-space: normal; line-height: 1.35; text-align: left; }
/* «Коротко» — ответ сразу, 2–3 предложения: его читают первым и берут в быстрые ответы поиска */
.pub-answer { display: grid; gap: var(--ui-s2); max-width: 68ch; padding: var(--ui-s4) var(--ui-s5); border-left: 3px solid var(--ui-primary); border-radius: 0 var(--ui-radius) var(--ui-radius) 0; background: var(--ui-primary-tint); }
.pub-answer p { margin: 0; font-size: 16px; line-height: 1.55; color: var(--ui-ink); }
.pub-answer__label { font-size: var(--ui-fs-xs); font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--ui-primary-deep); }
.pub-answer a, .pub-prose a, .pub-who a, .pub-faq__body a, .pub-steps__text a, .pub-child__checks a, .pub-head__text a, .pub-form-table a { color: var(--ui-link); }
.pub-child__jumps { display: flex; flex-wrap: wrap; gap: var(--ui-s2) var(--ui-s5); margin: 0; }
.pub-child__jumps .ui-link { min-height: 32px; display: inline-flex; align-items: center; }
/* Цитата из документа с пунктом */
.pub-quote { margin: 0 0 var(--ui-s4); padding: var(--ui-s3) var(--ui-s4); border-left: 3px solid var(--ui-line-strong); background: var(--ui-surface-2); border-radius: 0 var(--ui-radius) var(--ui-radius) 0; }
.pub-quote p { margin: 0 0 6px; font-size: 15px; line-height: 1.55; }
.pub-quote footer { font-size: var(--ui-fs-sm); color: var(--ui-muted); }
/* Формы журналов и образцы — настоящие таблицы с прокруткой вбок (app.css на телефоне делает из таблиц карточки — возвращаем таблицу) */
.pub-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; max-width: 100%; }
/* Секции колонки — элементы сетки: без min-width: 0 широкая таблица распирала бы колонку под боковую панель */
.pub-layout__main > .pub-section, .pub-layout__main > .pub-detail__copy { min-width: 0; }
.pub-form-table { min-width: 860px; }
.pub-form-table--text { min-width: 560px; }
.pub-form-table th { position: static; white-space: normal; text-transform: none; letter-spacing: 0; font-size: 13px; line-height: 1.3; color: var(--ui-ink-2); vertical-align: bottom; min-width: 96px; }
.pub-form-table td { font-size: 14px; vertical-align: top; }
.pub-form-table--blank td { height: 46px; }
.pub-form-table--blank tbody tr:hover td { background: transparent; }
.pub-form-table tr.is-bad td { background: var(--ui-bad-bg); }
.pub-form-table__flag { margin-bottom: 4px; }
.pub-scroll-hint { display: none; align-items: center; gap: 6px; margin: 0 0 var(--ui-s2); font-size: var(--ui-fs-sm); color: var(--ui-muted); }
/* Кто ведёт: две колонки «в документе» / «на практике» */
.pub-who { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--ui-s4); }
.pub-who__col { display: grid; gap: var(--ui-s3); align-content: start; padding: var(--ui-s5); border: 1px solid var(--ui-line); border-radius: var(--ui-radius-lg); background: var(--ui-surface); }
.pub-who__col--sanpin { background: var(--ui-surface-2); }
.pub-who__col p { margin: 0; line-height: 1.55; color: var(--ui-ink-2); }
.pub-who__title { display: flex; align-items: center; gap: 8px; margin: 0; font-size: var(--ui-fs-h3); }
.pub-who__title .ui-icon { color: var(--ui-primary); }
/* Ошибки при проверке */
.pub-child__checks { display: grid; gap: 10px; max-width: 70ch; margin: 0; padding: 0; list-style: none; }
.pub-child__checks li { display: flex; align-items: flex-start; gap: 10px; line-height: 1.5; }
.pub-child__checks .ui-icon { flex: none; width: 18px; height: 18px; margin-top: 3px; color: var(--ui-warn); }
/* Образец документа: приказ, положение, акт */
.pub-doc { max-width: 76ch; border: 1px solid var(--ui-line); border-radius: var(--ui-radius-lg); background: var(--ui-surface); overflow: hidden; }
.pub-doc__bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--ui-s2); padding: 8px 12px 8px 16px; border-bottom: 1px solid var(--ui-line); background: var(--ui-surface-2); }
.pub-doc__label { display: inline-flex; align-items: center; gap: 6px; font-size: var(--ui-fs-sm); color: var(--ui-muted); }
.pub-doc__paper { padding: var(--ui-s6) var(--ui-s8); font-size: 15px; line-height: 1.6; color: var(--ui-ink); }
.pub-doc__paper p { margin: 0 0 var(--ui-s3); }
.pub-doc__title { text-align: center; font-weight: 700; letter-spacing: .04em; font-size: 16px; }
.pub-doc__center { text-align: center; }
.pub-doc__date { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px; white-space: pre-wrap; color: var(--ui-ink-2); }
.pub-doc__h { font-weight: 600; margin-top: var(--ui-s5) !important; }
.pub-doc__list { margin: 0 0 var(--ui-s4); padding-left: 1.4em; display: grid; gap: 6px; }
.pub-doc__sign { margin-top: var(--ui-s6) !important; }
.pub-doc__muted { color: var(--ui-muted); font-size: 14px; }
/* Карточки «Разобраться по темам» (детские страницы, хабы, «Для кого») */
.pub-topics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--ui-s3); }
.pub-topic { display: grid; gap: 6px; align-content: start; padding: var(--ui-s4) var(--ui-s5); color: var(--ui-ink); text-decoration: none; }
.pub-topic:hover { color: var(--ui-ink); border-color: var(--ui-primary-line); }
.pub-topic__title { font-weight: 600; line-height: 1.3; color: var(--ui-link); }
.pub-topic__text { font-size: 14px; line-height: 1.45; color: var(--ui-ink-2); }
.pub-child__links { display: grid; gap: 8px; margin: var(--ui-s5) 0 0; padding-left: 1.2em; color: var(--ui-ink-2); }
.pub-child__links a { color: var(--ui-link); font-weight: 500; }
.pub-side-list .ui-row.is-current { background: var(--ui-primary-tint); }
.pub-side-list .ui-row.is-current .ui-row__title { color: var(--ui-primary-deep); }
/* Нормы СанПиН на хабах школ и садов */
.pub-norms { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--ui-s3); margin: 0; }
.pub-norms > div { display: grid; gap: 4px; padding: var(--ui-s4); border: 1px solid var(--ui-line); border-radius: var(--ui-radius); background: var(--ui-surface); }
.pub-norms dt { font-weight: 600; }
.pub-norms dd { margin: 0; font-size: 14px; line-height: 1.5; color: var(--ui-ink-2); }
/* Главная: школы и детские сады под списком наборов */
.pub-schools { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 14px; padding: var(--ui-s4) var(--ui-s5); border: 1px solid var(--ui-line); border-radius: var(--ui-radius-lg); background: var(--ui-surface); }
.pub-schools strong { font-size: 15px; }
.pub-schools a { color: var(--ui-link); font-weight: 500; }
/* Образец журнала: блок «В школе и детском саду» */
.pub-school-block { display: grid; gap: var(--ui-s3); }
.pub-school-block .pub-prose p { color: var(--ui-ink-2); }
@media (max-width: 1100px) {
  .pub-topics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
  .pub-answer { padding: var(--ui-s3) var(--ui-s4); }
  .pub-scroll-hint { display: flex; }
  .pub-form-table { display: table; }
  .pub-form-table thead { display: table-header-group; }
  .pub-form-table tbody { display: table-row-group; }
  .pub-form-table tr { display: table-row; border: 0; margin: 0; border-radius: 0; background: transparent; overflow: visible; }
  .pub-form-table th, .pub-form-table td { display: table-cell; padding: 10px 12px; }
  .pub-form-table td::before { content: none; display: none; }
  .pub-who, .pub-norms, .pub-topics { grid-template-columns: 1fr; }
  .pub-form-table--text th { min-width: 0; }
  .pub-doc__paper { padding: var(--ui-s5) var(--ui-s4); font-size: 14.5px; }
  .pub-child__jumps .ui-link { min-height: 44px; }
  /* Длинные подписи кнопок («Вести бракеражный журнал онлайн бесплатно») переносятся, а не распирают колонку */
  .pub-layout__main > .pub-detail__copy, .pub-layout__main .pub-cta { grid-template-columns: minmax(0, 1fr); }
  .pub-layout__main .pub-hero__actions .ui-btn--lg, .pub-layout__main .pub-cta__actions .ui-btn--lg { white-space: normal; height: auto; min-height: var(--ui-control-h-lg); padding-top: 10px; padding-bottom: 10px; text-align: center; line-height: 1.25; }
}

/* Поле-ловушка для ботов в форме «Написать нам» (/contacts/): людям не видно, боты заполняют. */
.ui-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* Регистрация: два пути — «для себя» (почта → код) и «для организации» (26.09.2026, решение владельца) */
.pub-auth__switch { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 0 0 16px; }
.pub-auth__tab { display: grid; gap: 4px; padding: 14px 16px; border: 1px solid var(--ui-line-strong); border-radius: 14px; background: var(--ui-surface); color: var(--ui-ink-2); text-decoration: none; }
.pub-auth__tab strong { font-size: var(--ui-fs-h3); color: var(--ui-ink); }
.pub-auth__tab span { font-size: var(--ui-fs-sm); line-height: 1.4; }
.pub-auth__tab:hover { border-color: var(--ui-primary-line); text-decoration: none; }
.pub-auth__tab.is-active { border-color: var(--ui-primary); box-shadow: inset 0 0 0 1px var(--ui-primary); background: var(--ui-primary-tint); }
.pub-auth__tab.is-active strong { color: var(--ui-primary-deep); }
.pub-auth__panel[hidden] { display: none; }
.pub-auth__code { font-size: 28px; letter-spacing: 0.3em; text-align: center; font-variant-numeric: tabular-nums; }
.pub-auth__resend { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px 16px; margin: 14px 0 0; }
@media (max-width: 700px) {
  .pub-auth__switch { grid-template-columns: 1fr; }
}

/* Документы «под учреждение» (этап 4, 26.09.2026): карточки в каталоге, промо на образцах и в хабах (documents/templates/documents/partials/*_promo.html). */
.docs-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: var(--ui-s5); }
.docs-grid--compact { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
.docs-card { display: flex; flex-direction: column; }
.docs-card .ui-card__body { display: flex; flex-direction: column; gap: var(--ui-s3); height: 100%; }
.docs-card__title { font-size: 20px; line-height: 1.25; margin: 0; letter-spacing: -.01em; }
.docs-card__title a { color: inherit; text-decoration: none; }
.docs-card__title a:hover { color: var(--ui-primary); }
.docs-card__lead { margin: 0; color: var(--ui-ink-2); font-size: 15px; line-height: 1.5; }
.docs-card__list { margin: 0; padding-left: 18px; font-size: 14px; line-height: 1.45; color: var(--ui-ink-2); display: grid; gap: 4px; }
.docs-card__foot { margin-top: auto; display: flex; align-items: center; justify-content: space-between; gap: var(--ui-s3); flex-wrap: wrap; padding-top: var(--ui-s2); }
.docs-card__price { font-size: 24px; font-weight: 700; letter-spacing: -.01em; }
.docs-card__price small { display: block; font-size: 12px; font-weight: 400; color: var(--ui-muted); }
.docs-card__free { margin: 0; font-size: 13px; color: var(--ui-muted); }
.docs-card--mini .ui-card__body { flex-direction: row; align-items: center; justify-content: space-between; gap: var(--ui-s3); }
.docs-card--mini .docs-card__title { font-size: 16px; }
.docs-card--mini .docs-card__price { font-size: 18px; white-space: nowrap; }
.docs-promo .pub-head { margin-bottom: var(--ui-s4); }

/* Готовый документ рядом с бесплатным бланком и образцом (30.09.2026). */
.pub-offer { display: flex; flex-wrap: wrap; align-items: center; gap: var(--ui-s3) var(--ui-s4); margin-top: var(--ui-s4); padding: var(--ui-s4); border: 1px solid var(--ui-primary-line); border-radius: var(--ui-radius); background: var(--ui-primary-tint); }
.pub-offer__text { flex: 1 1 280px; margin: 0; line-height: 1.5; }
.pub-offer__btn { flex: 0 0 auto; }
.pub-offer-inline { display: flex; gap: var(--ui-s2); align-items: flex-start; margin: var(--ui-s3) 0 0; padding: var(--ui-s3) var(--ui-s4); border-left: 3px solid var(--ui-primary); background: var(--ui-primary-tint); line-height: 1.5; }
.pub-offer-inline .ui-icon { flex: 0 0 auto; margin-top: 3px; }
