/* Публичный вход: витрина, форма бесплатной проверки, вход и добавление сайта.
   Вариант Б («редакционный», решение 19.09.2026): тёплый молочный фон, тёмно-зелёное
   действие, заголовки с засечками (Lora) и светлый образец отчёта рядом с предложением.
   Тёмная плита #202d49 снята: она осталась только в самом отчёте (check-report.css),
   где тёмная сводка — часть его композиции, а не подача витрины.
   Токены ниже — ЛОКАЛЬНЫЕ для публичной поверхности: глобальные --accent/--success
   кабинетов не перекрашиваются. Светлое оформление фиксированное, переключателя темы нет. */

.pub-hero,
.pub-auth,
.pub-body,
.check-progress-page {
  /* Молочный фон страницы и белая поверхность документа/полей. */
  --pub-bg: #F6F2E9;
  --pub-surface: #FFFFFF;
  --pub-ink: #283F34;          /* основной текст, 14.8:1 к молочному */
  --pub-ink-2: #526050;        /* вторичный текст, 5.9:1 к молочному */
  --pub-action: #284E3D;       /* единственное основное действие, белый текст 9.2:1 */
  --pub-action-hover: #1E3D30;
  --pub-rule: #C9CBBD;         /* структурные разделители */
  --pub-field-edge: #778575;   /* граница поля: 3.5:1 к молочному, 3.9:1 к белому */
  --pub-data: #17263D;         /* текст данных в отчёте */
  --pub-data-2: #566478;       /* вторичный в отчёте, 6.0:1 к белому */
  --pub-ring: #284E3D;         /* кольцо фокуса, 8.3:1 к молочному */
  --pub-serif: "Lora", Georgia, "Times New Roman", serif;
  /* Пять направлений — те же цвета, что в настоящем отчёте (check-report.css, светлая тема).
     Соответствие «название → цвет» обязано совпадать с отчётом, иначе образец учит неверному. */
  --pub-crawl: #278774;
  --pub-content: #6678c6;
  --pub-onpage: #6678c6;
  --pub-speed: #b66a25;
  --pub-ux: #aa5685;
  --pub-trust: #8a7a2a;
}

/* Публичная страница целиком молочная: кабинетный холодный --bg здесь не участвует. */
body:has(.pub-hero), body:has(.pub-auth), body:has(.check-progress-page) , body:has(.check-report) { background: #F6F2E9; }
body:has(.pub-hero) ::selection, body:has(.pub-auth) ::selection, body:has(.check-progress-page) ::selection , body:has(.check-report) ::selection { background: #DCE6DC; color: #1E3D30; }

/* Шапка совпадает с фоном hero: молочная полоса без границы, бренд на колонке контента. */
body:has(.pub-hero) header, body:has(.pub-auth) header, body:has(.check-progress-page) header , body:has(.check-report) header {
  background: #F6F2E9; color: var(--pub-ink);
  padding: 16px max(24px, calc((100vw - 1072px) / 2));
  justify-content: flex-start; gap: 12px 20px;
}
body:has(.pub-hero) header .brand, body:has(.pub-auth) header .brand, body:has(.check-progress-page) header .brand , body:has(.check-report) header .brand { color: #1E3D30; font-family: "Lora", Georgia, serif; font-weight: 600; letter-spacing: -.01em; }
/* В шапке остаются логотип и действия аккаунта. */
body:has(.pub-hero) .brand span, body:has(.pub-auth) .brand span, body:has(.check-progress-page) .brand span , body:has(.check-report) .brand span { display: none; }
body:has(.pub-hero) header .quiet, body:has(.pub-auth) header .quiet, body:has(.check-progress-page) header .quiet , body:has(.check-report) header .quiet { color: #1E3D30; border-color: #778575; }
body:has(.pub-hero) header a:not(.brand), body:has(.pub-auth) header a:not(.brand), body:has(.check-progress-page) header a:not(.brand) , body:has(.check-report) header a:not(.brand) { color: #1E3D30; }
body:has(.pub-hero) header :focus-visible, body:has(.pub-auth) header :focus-visible, body:has(.check-progress-page) header :focus-visible , body:has(.check-report) header :focus-visible { outline: 3px solid #284E3D; outline-offset: 3px; }
/* Одиночная кнопка шапки (вход, «Проверить сайт») — справа, как правый блок витрины. */
body:has(.pub-auth) header > .button, body:has(.check-progress-page) header > .button, body:has(.check-report) header > .button { margin-left: auto; }
.pub-head-side { margin-left: auto; display: flex; align-items: center; flex-wrap: wrap; gap: 8px 20px; font-size: 14px; }
.pub-head-side a { min-height: 44px; display: inline-flex; align-items: center; }

main:has(.pub-hero) { max-width: none; padding: 0; }
.pub-hero-in { max-width: 1120px; margin: 0 auto; padding: 40px 24px 48px; }
.pub-body { max-width: 1120px; margin: 0 auto; padding: 0 24px; }
.pub-hero :focus-visible, .pub-body :focus-visible, .pub-auth :focus-visible { outline: 3px solid var(--pub-ring); outline-offset: 3px; }
/* Якорные переходы из hero: плавность гасится общим prefers-reduced-motion в portal.css. */
html:has(.pub-hero) { scroll-behavior: smooth; }
#check-form { scroll-margin-top: 20px; }

/* ── Первый экран: предложение и форма слева, образец отчёта справа ─────────────────── */
.pub-hero { background: #F6F2E9; color: var(--pub-ink); }
.pub-hero-in { display: grid; grid-template-columns: minmax(0, 45fr) minmax(0, 55fr); gap: 48px; align-items: start; }
.pub-offer { min-width: 0; }

.pub-hero h1 {
  font-family: var(--pub-serif); font-weight: 500;
  font-size: clamp(32px, 4.7vw, 52px); line-height: 1.1; letter-spacing: -.015em;
  text-wrap: balance; margin: 0 0 18px; max-width: 20ch; color: var(--pub-ink);
}
.pub-hero .pub-lead { font-size: 17px; line-height: 1.55; color: var(--pub-ink-2); margin: 0; max-width: 46ch; }

/* Главное действие первого экрана — сама форма проверки, а не кнопка-якорь к секции ниже:
   на 1440×900 та секция начиналась на 720px, то есть за сгибом. */
.pub-hero-form { margin: 24px 0 0; max-width: 460px; }
.pub-hero-form form { margin: 0; }
.pub-hero-form .field { margin: 0; max-width: none; }
.pub-hero-form .notice { margin: 0; }
/* Условия бесплатной проверки — только под её формой. */
.pub-hero-foot { margin: 14px 0 0; max-width: 460px; }
.pub-terms { font-size: 14px; color: var(--pub-ink-2); margin: 0; max-width: none; }

.pub-crawl { --pub-series: var(--pub-crawl); }
.pub-content { --pub-series: var(--pub-content); }
.pub-onpage { --pub-series: var(--pub-onpage); }
.pub-speed { --pub-series: var(--pub-speed); }
.pub-ux { --pub-series: var(--pub-ux); }
.pub-trust { --pub-series: var(--pub-trust); }

/* ── Образец отчёта: белый документ, а не картинка ─────────────────────────────── */
.pub-doc {
  background: var(--pub-surface); color: var(--pub-data);
  border: 1px solid var(--pub-rule); border-radius: 6px; padding: 26px 28px;
  box-shadow: 0 12px 30px -16px rgba(40, 63, 52, .38);
  min-width: 0;
}
/* Три типографические роли документа и только они: заголовок 20, данные 16, подпись 13. */
.pub-doc h2 { font-weight: 600; font-size: 20px; line-height: 1.3; letter-spacing: -.01em; color: var(--pub-data); margin: 0 0 8px; }
.pub-hero .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
/* Направления — радиогруппа без JS: выбор показывает находку направления (`:has(:checked)`
   ниже). Радиокнопка скрыта, её роль видна строкой: подложка и жирное название у выбранной,
   кольцо фокуса у строки при навигации с клавиатуры (стрелки переключают направление). */
.pub-doc-scores { position: relative; border: 0; padding: 0; margin: 0 -10px; min-width: 0; display: grid; gap: 2px; }
.pub-doc-radio { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; pointer-events: none; }
.pub-doc-row { display: grid; grid-template-columns: minmax(0, 1fr) 96px 34px; align-items: center; gap: 4px 14px; min-height: 44px; padding: 6px 10px; border-radius: 6px; cursor: pointer; transition: background-color .18s ease-out; }
.pub-doc-row:hover { background: #FAF8F3; }
.pub-doc-radio:checked + .pub-doc-row { background: #F3F0E7; }
.pub-doc-radio:checked + .pub-doc-row .pub-doc-name { font-weight: 600; }
.pub-doc-radio:focus-visible + .pub-doc-row { outline: 3px solid var(--pub-ring); outline-offset: 0; }
.pub-doc-name { font-size: 16px; color: var(--pub-data); min-width: 0; }
.pub-doc-bar { display: block; height: 8px; border-radius: 999px; background: #ECE9DF; overflow: hidden; }
.pub-doc-bar i { display: block; height: 100%; border-radius: inherit; background: var(--pub-series); }
.pub-doc-value { font-size: 16px; font-weight: 600; text-align: right; font-variant-numeric: tabular-nums; color: var(--pub-data); }
.pub-doc-scale { font-size: 13px; color: var(--pub-data-2); margin: 12px 0 0; max-width: none; }

/* Все пять находок в одной ячейке сетки: высота блока — самая длинная находка, поэтому
   выбор направления не меняет высоту документа и страница не прыгает под курсором.
   Скрытые — visibility: hidden, экранный чтец их не читает. Смена — короткий подъём с
   затуханием; prefers-reduced-motion гасит переход общим правилом portal.css. */
.pub-doc-findings { display: grid; margin-top: 14px; }
.pub-doc-finding {
  grid-area: 1 / 1; padding: 14px 16px; background: #F8F6F0; border-radius: 6px;
  visibility: hidden; opacity: 0; transform: translateY(6px);
  transition: opacity .24s cubic-bezier(.16, 1, .3, 1), transform .24s cubic-bezier(.16, 1, .3, 1), visibility 0s linear .24s;
}
.pub-doc:has(#sample-crawl:checked) .pub-doc-finding.pub-crawl,
.pub-doc:has(#sample-content:checked) .pub-doc-finding.pub-content,
.pub-doc:has(#sample-speed:checked) .pub-doc-finding.pub-speed,
.pub-doc:has(#sample-ux:checked) .pub-doc-finding.pub-ux,
.pub-doc:has(#sample-trust:checked) .pub-doc-finding.pub-trust { visibility: visible; opacity: 1; transform: none; transition-delay: 0s; }
/* Чип направления связывает находку со строкой выше тем же цветом, что в легенде отчёта. */
.pub-doc-priority { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; color: var(--pub-data-2); margin: 0 0 6px; max-width: none; }
.pub-doc-priority::before { content: ""; flex: none; width: 22px; height: 8px; border-radius: 999px; background: var(--pub-series); }
.pub-doc-finding h3 { font-size: 18px; font-weight: 600; line-height: 1.3; color: var(--pub-data); margin: 0 0 4px; }
.pub-doc-fact { font-size: 16px; color: var(--pub-data); margin: 0; max-width: none; }
.pub-doc-url { font-size: 13px; color: var(--pub-data-2); margin: 4px 0 0; overflow-wrap: anywhere; max-width: none; }
.pub-doc-why { font-size: 13px; line-height: 1.55; color: var(--pub-data-2); margin: 8px 0 0; max-width: 60ch; }
.pub-doc-next { display: inline-flex; align-items: center; min-height: 44px; margin: 2px 0 -12px; font-size: 15px; color: #1E3D30; text-underline-offset: 4px; }


/* ── Светлые секции ─────────────────────────────────────────────────────────────── */
.pub-section { padding: 38px 0; border-top: 1px solid var(--pub-rule); }
.pub-section:first-child { border-top: 0; }
/* Засечки оставлены ровно одному элементу страницы — её H1. Заголовки секций и весь
   отчёт набраны Golos: два шрифта на каждом уровне читались как лишняя иерархия. */
.pub-section > h2 { font-weight: 600; font-size: clamp(24px, 2.2vw, 28px); line-height: 1.25; letter-spacing: -.01em; margin: 0 0 12px; color: var(--pub-ink); text-wrap: balance; }
.pub-section > p { color: var(--pub-ink-2); margin: 0 0 4px; max-width: 68ch; font-size: 17px; }
.pub-panel { background: var(--pub-surface); border: 1px solid var(--pub-rule); border-radius: 8px; padding: 26px; }
.pub-body a { color: #1E3D30; }

.pub-steps { list-style: none; counter-reset: pub-step; padding: 0; margin: 22px 0 0; display: grid; gap: 2px; }
.pub-section > .pub-panel { margin-top: 22px; }
.pub-steps-panel { margin: 0; }
.pub-steps-panel li:first-child { border-top: 0; padding-top: 0; }
.pub-steps-panel li:last-child { padding-bottom: 0; }
.pub-steps li { counter-increment: pub-step; display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: 16px; align-items: baseline; padding: 16px 0; border-top: 1px solid #ECE9DF; }
.pub-steps li::before { content: counter(pub-step); display: grid; place-items: center; width: 27px; height: 27px; border-radius: 50%; background: #E4EBE3; color: #1E3D30; font-size: 13px; font-weight: 600; font-variant-numeric: tabular-nums; }
.pub-steps strong, .pub-steps span { grid-column: 2; }
.pub-steps strong { font-weight: 600; margin-bottom: 4px; color: var(--pub-ink); }
.pub-steps span { color: var(--pub-ink-2); font-size: 15px; }

.pub-steps-flow { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 32px; margin: 18px 0 0; }
/* Заголовок шага и его пояснение — одна группа: общий gap 16px у li разрывал их по вертикали. */
.pub-steps.pub-steps-flow li { row-gap: 0; }
.pub-auth .pub-steps-flow { grid-template-columns: minmax(0, 1fr); }

.pub-limits { margin: 20px 0 0; padding-left: 20px; color: var(--pub-ink-2); }
.pub-limits li { margin: 8px 0; max-width: 68ch; }

.pub-section > p + p { margin-top: 10px; }
.pub-body .button { margin: 20px 0 0; }
.pub-body .button + .muted { margin-top: 12px; }
.pub-body .muted + .muted { margin-top: 8px; }
/* .pub-auth — ссылка-кнопка на страницах «отчёт не найден / проверка не завершена / сайт не найден»:
   без неё фон брался из глобального --accent (синий), а текст из .pub-auth a — 2.4:1. */
.pub-body .button.primary, .pub-auth .button.primary { background: var(--pub-action); border-color: var(--pub-action); color: #FFFFFF; }
.pub-body .button.primary:hover, .pub-auth .button.primary:hover { background: var(--pub-action-hover); border-color: var(--pub-action-hover); }

.pub-faq { margin-top: 18px; }
.pub-faq.pub-panel { padding: 4px 26px; }
.pub-faq details { border-top: 1px solid #ECE9DF; border-bottom: 0; padding: 0; }
.pub-faq details:first-of-type { border-top: 0; }
.pub-faq details:last-of-type { border-bottom: 0; }
.pub-faq summary { font-size: 16px; font-weight: 500; padding: 13px 0; min-height: 44px; color: var(--pub-ink); }
.pub-faq details p { color: var(--pub-ink-2); margin: 0 0 16px; max-width: 68ch; }

/* ── Поля и кнопки публичных форм ───────────────────────────────────────────────── */
/* Цепочка из двух классов обязательна: `input:not([type=checkbox]):not([type=hidden])`
   из portal.css имеет специфичность (0,2,1), и более короткий селектор проигрывает
   ему по каскаду (см. docs/LESSONS.md, 18.09.2026). */
.pub-hero .field input, .pub-auth .field input, .pub-hero .pub-start input {
  width: 100%; min-height: 52px; padding: 12px 16px; font: inherit; font-size: 17px;
  color: var(--pub-ink); background: var(--pub-surface);
  border: 1px solid var(--pub-field-edge); border-radius: 6px;
}
.pub-hero .field input:hover, .pub-auth .field input:hover, .pub-hero .pub-start input:hover { border-color: #5C6B5A; }
.pub-hero .field input:focus, .pub-auth .field input:focus, .pub-hero .pub-start input:focus { border-color: var(--pub-action); }
.pub-hero .field input::placeholder { color: #6E7A6C; opacity: 1; }
.pub-hero label, .pub-auth label { font-size: 14px; font-weight: 500; color: var(--pub-ink); margin-bottom: 8px; }
.pub-hero form button, .pub-auth form button, .pub-start button {
  min-height: 52px; padding: 12px 26px; font-size: 17px; font-weight: 600;
  border: 1px solid var(--pub-action); border-radius: 6px; background: var(--pub-action); color: #FFFFFF;
  transition: background .18s ease-out;
}
.pub-hero form button:hover, .pub-auth form button:hover, .pub-start button:hover { background: var(--pub-action-hover); border-color: var(--pub-action-hover); }
/* SmartCaptcha своим же стилем ставит контейнеру `min-width: 300px` (проверено
   getComputedStyle на живом виджете), и min-width по спецификации сильнее любого нашего
   max-width — ужать виджет нельзя, а обрезать его нам и не разрешено. Поэтому место под
   него освобождает страница: на 360px и уже поля колонки уходят до 10px, а панель формы
   разворачивается во всю ширину экрана, и на 320px виджету достаётся ровно 300px.
   min-height держит место до загрузки виджета, чтобы кнопка не прыгала. */
.smart-captcha { margin: 18px 0 20px; min-height: 100px; }
/* Запасной GET-путь витрины, когда модуль проверки не подключён. */
.pub-start { margin: 0; display: flex; flex-wrap: wrap; gap: 12px; max-width: 640px; }
.pub-start .pub-field { flex: 1 1 260px; min-width: 0; margin: 0; }
.pub-start label { display: block; font-size: 14px; color: var(--pub-ink); margin-bottom: 8px; font-weight: 500; }
.pub-start button { align-self: end; }

.pub-hero .notice, .pub-body .notice { background: var(--pub-surface); border: 1px solid var(--pub-rule); color: var(--pub-ink); border-radius: 8px; }
.pub-hero .notice h2, .pub-body .notice h2 { color: inherit; margin-top: 0; font-size: 20px; }
.pub-hero .muted, .pub-body .muted, .pub-auth .muted { color: var(--pub-ink-2); }
main:has(.pub-hero) > .notice, main:has(.pub-hero) > .error { max-width: 1072px; margin: 24px auto; }
@media (max-width: 700px) { main:has(.pub-hero) > .notice, main:has(.pub-hero) > .error { margin: 16px; } }

/* Поля футора витрины — как у .pub-body (порог 700px, а не 720px как у main). */
body:has(.pub-hero) footer { --foot-gutter: 24px; }
body:has(.pub-hero) footer, body:has(.pub-auth) footer, body:has(.check-progress-page) footer , body:has(.check-report) footer { border-top-color: #C9CBBD; color: #526050; }
/* Футер публичных страниц — ряд ссылок, а не связный абзац: даём им полноценную цель касания. */
body:has(.pub-hero) footer a, body:has(.pub-auth) footer a, body:has(.check-progress-page) footer a , body:has(.check-report) footer a { color: #1E3D30; min-height: 44px; display: inline-flex; align-items: center; }

/* ── Страница проверки: форма слева, пять направлений справа ────────────────────── */
.pub-check-split { display: grid; grid-template-columns: minmax(0, 520px) minmax(0, 1fr); gap: 48px; align-items: start; }
.pub-check-form { max-width: 560px; min-width: 0; }
.pub-check-form .pub-start { flex-direction: column; align-items: stretch; max-width: none; }
.pub-check-form .pub-start button { align-self: start; }

/* Пять направлений — ЛЕГЕНДА цветов отчёта, а не шкала: чип фиксированного размера,
   без полосы, трека, оси и колонки значения. Вернуть их нельзя (docs/DECISIONS.md). */
.pub-lanes { --pub-lane-label: 210px; margin: 28px 0 0; padding-top: 22px; border-top: 1px solid var(--pub-rule); }
.pub-lanes h2 { font-size: 15px; font-weight: 600; color: var(--pub-ink); margin: 0; letter-spacing: 0; }
.pub-lanes-note { font-size: 15px; font-weight: 400; color: var(--pub-ink-2); margin: 2px 0 0; max-width: 70ch; }
.pub-lane { display: grid; grid-template-columns: var(--pub-lane-label) minmax(0, 1fr); align-items: baseline; gap: 6px 18px; margin: 0; padding: 11px 0; }
.pub-lane + .pub-lane { border-top: 1px solid #ECE9DF; }
.pub-lane dt { font-size: 15px; font-weight: 500; color: var(--pub-ink); }
.pub-chip { display: inline-block; width: 22px; height: 8px; border-radius: 999px; background: var(--pub-series); margin-right: 10px; vertical-align: middle; }
.pub-lane dd { margin: 0; min-width: 0; font-size: 14px; color: var(--pub-ink-2); line-height: 1.45; }
.pub-lanes-side { --pub-lane-label: minmax(0, 1fr); margin: 0; padding-top: 0; border-top: 0; }
.pub-lanes-side .pub-lane { grid-template-columns: minmax(0, 1fr); gap: 4px; padding: 12px 0; }

/* ── Вход и добавление сайта: одна узкая панель ─────────────────────────────────── */
.pub-auth { max-width: 520px; margin: 8px auto 40px; color: var(--pub-ink); }
.pub-auth h1 { font-family: var(--pub-serif); font-weight: 500; font-size: 32px; line-height: 1.2; letter-spacing: -.015em; margin: 0 0 10px; color: var(--pub-ink); }
.pub-auth > p { color: var(--pub-ink-2); margin: 0 0 4px; }
.pub-auth .pub-panel { margin-top: 24px; }
.pub-auth .pub-panel + p { margin-top: 16px; }
.pub-auth .pub-panel > form { margin: 0; }
.pub-auth .field { margin: 0 0 20px; max-width: none; }
.pub-auth button { width: 100%; }
.pub-auth a { color: #1E3D30; }
.pub-auth details { border-bottom: 0; border-top: 1px solid var(--pub-rule); margin-top: 20px; }
.pub-auth summary { color: var(--pub-ink); }
.pub-auth details p { color: var(--pub-ink-2); font-size: 14px; }
/* Страница заявки: те же поля, что у входа, плюс комментарий и «что будет дальше». */
.pub-auth h2 { font-size: 20px; font-weight: 600; line-height: 1.3; color: var(--pub-ink); margin: 32px 0 0; }
.pub-auth .field textarea { width: 100%; padding: 12px 16px; font: inherit; font-size: 17px; color: var(--pub-ink); background: var(--pub-surface); border: 1px solid var(--pub-field-edge); border-radius: 6px; resize: vertical; }
.pub-auth .field textarea:focus { border-color: var(--pub-action); }
.pub-auth .field .muted { font-size: 14px; margin: 6px 0 0; }
.pub-auth .pub-panel[role="status"] p + p { margin-top: 10px; }
/* Оферта и политика: длинный документ шире формы входа; плашка черновика — тем же предупреждением, что и в отчёте. */
.pub-auth.pub-legal { max-width: 720px; }
.pub-legal h2 { font-size: 18px; margin-top: 28px; }
.pub-legal ol { margin: 10px 0 0; padding-left: 22px; }
.pub-legal li { margin: 6px 0; }
.pub-legal-draft { margin: 16px 0 20px; padding: 14px 18px; background: #FBF1DA; border: 1px solid #E3CC93; border-radius: 8px; color: var(--pub-ink); }
.pub-help > p:last-child, .pub-help .pub-panel + p { margin-top: 16px; }
/* Ловушка для ботов: вне экрана и вне порядка Tab, а не display:none — его боты пропускают. */
.pub-trap { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }

/* ── Адаптивность ───────────────────────────────────────────────────────────────── */
/* Ежемесячное ведение: одна иллюстрация и короткий цикл вместо сетки инструкций. */
.pub-service.pub-section { padding: 48px 0 52px; }
.pub-service-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.06fr); gap: 56px; align-items: center; }
.pub-service-copy h2 { font: 600 clamp(26px, 2.6vw, 34px)/1.2 "Golos Text", sans-serif; letter-spacing: -.025em; color: var(--pub-ink); max-width: 21ch; margin: 0 0 20px; text-wrap: balance; }
.pub-service-copy > p { font-size: 17px; line-height: 1.6; color: var(--pub-ink-2); margin: 0; max-width: 45ch; }
.pub-service-copy .pub-service-price { margin: 28px 0 0; font-size: clamp(30px, 3vw, 38px); font-weight: 600; line-height: 1.2; color: var(--pub-ink); letter-spacing: -.025em; }
.pub-service-price span { display: inline-block; margin-left: .2em; font-size: 16px; font-weight: 400; letter-spacing: 0; color: var(--pub-ink-2); }
.pub-service-copy .button { margin-top: 20px; min-height: 48px; }
.pub-service-art { display: block; width: 100%; height: auto; border-radius: 6px; }
/* Фрагмент текущего кабинета: sectionCard + demoSections, но без неработающих переходов. */
.pub-cabinet.pub-section { padding: 48px 0 52px; }
.pub-cabinet-grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 48px; align-items: center; margin-top: 28px; }
.pub-cabinet-preview { background: #F1EDE2; border: 1px solid var(--pub-rule); border-radius: 8px; padding: 24px; min-width: 0; }
.pub-cabinet-label { font-size: 13px; line-height: 1.5; color: var(--pub-ink-2); margin: 0 0 14px; }
.pub-cabinet-preview h3 { margin: 0 0 20px; font-size: 20px; font-weight: 600; letter-spacing: -.015em; color: var(--pub-ink); }
.pub-cabinet-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.pub-cabinet-preview .section-card { display: flex; flex-direction: column; gap: 8px; padding: 16px; border: 1px solid var(--pub-rule); border-radius: 6px; background: #fff; color: var(--pub-ink); }
.pub-cabinet-preview .section-card-head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.pub-cabinet-preview .section-card-title { font-size: 15px; font-weight: 600; }
.pub-cabinet-preview .section-value { font-size: 32px; font-weight: 600; line-height: 1.2; font-variant-numeric: tabular-nums; }
.pub-cabinet-preview .section-value small { display: block; font-size: 14px; font-weight: 400; color: var(--pub-ink-2); }
.pub-cabinet-preview .section-delta { color: #2A6B41; font-size: 14px; font-weight: 500; }
.pub-cabinet-preview .spark { display: block; width: 100%; height: 36px; overflow: visible; }
.pub-cabinet-preview .spark path { fill: none; stroke: #2A6B41; stroke-width: 2.5; stroke-linejoin: round; stroke-linecap: round; }
.pub-cabinet-preview .section-context { color: var(--pub-ink-2); font-size: 13px; line-height: 1.5; }
.pub-cabinet-work { padding-top: 18px; margin: 18px 0 0; border-top: 1px solid var(--pub-rule); font-size: 15px; color: var(--pub-ink); }
.pub-cabinet-work span { display: block; margin-bottom: 4px; font-size: 13px; color: #1E4F30; }
.pub-cabinet-benefits { margin: 0; }
.pub-cabinet-benefits > div { border-color: var(--pub-rule); }
.pub-cabinet-benefits > div + div { margin-top: 24px; }
.pub-cabinet-benefits dt { margin: 0 0 6px; font-size: 17px; font-weight: 600; color: var(--pub-ink); }
.pub-cabinet-benefits dd { margin: 0; font-size: 16px; line-height: 1.6; color: var(--pub-ink-2); }
@media (max-width: 1000px) {
  .pub-service-grid { gap: 32px; }
  .pub-cabinet-grid { gap: 28px; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); }
  .pub-cabinet-preview { padding: 18px; }
}
@media (max-width: 900px) {
  .pub-cabinet-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 760px) {
  .pub-service.pub-section, .pub-cabinet.pub-section { padding: 32px 0; }
  .pub-service-grid, .pub-cabinet-grid { grid-template-columns: minmax(0, 1fr); gap: 28px; }
  .pub-service-copy h2 { max-width: 24ch; }
  .pub-service-copy > p { max-width: none; }
}
@media (max-width: 480px) {
  .pub-cabinet-cards { grid-template-columns: minmax(0, 1fr); }
  .pub-cabinet-cards > :nth-child(n+2) { display: none; }
  .pub-cabinet-preview .section-card-head { justify-content: space-between; }
  .pub-cabinet-preview .section-value small { display: inline; margin-left: 6px; }
}

@media (max-width: 1000px) {
  .pub-hero-in { gap: 36px; }
  .pub-hero h1 { max-width: 22ch; }
}
@media (max-width: 900px) {
  /* На узком экране описание стоит перед формой. */
  .pub-hero-in { grid-template-columns: minmax(0, 1fr); gap: 32px; align-items: start; }
  .pub-hero .pub-lead { max-width: 60ch; }
  .pub-check-split { grid-template-columns: 1fr; gap: 30px; }
  .pub-lanes { --pub-lane-label: 168px; }
  .pub-lane { gap: 14px; }
}
@media (max-width: 700px) {
  body:has(.pub-hero) header, body:has(.pub-auth) header, body:has(.check-progress-page) header , body:has(.check-report) header { padding: 12px 16px; }
  .pub-hero-in { padding: 26px 16px 32px; }
  .pub-body { padding: 0 16px; }
  body:has(.pub-hero) footer { --foot-gutter: 16px; }
  .pub-hero h1 { max-width: none; }
  /* Короткий заголовок и компактный отступ до формы на телефоне. */
  .pub-hero h1 { margin-bottom: 12px; }
  .pub-hero-form { margin-top: 18px; }
  .smart-captcha { margin: 14px 0 16px; }
  .pub-steps-flow { grid-template-columns: minmax(0, 1fr); }
  /* На телефоне форма и её подписи занимают всю ширину колонки. */
  .pub-hero-form, .pub-hero-foot { max-width: none; }

  .pub-section { padding: 24px 0; }
  .pub-panel { padding: 20px; }
  .pub-faq.pub-panel { padding: 2px 20px; }
  .pub-steps li { grid-template-columns: 27px minmax(0, 1fr); gap: 12px; }
  .pub-lane { grid-template-columns: minmax(0, 1fr); gap: 4px; padding: 14px 0; }
  .pub-start button, .pub-hero form button { width: 100%; }
}
/* 320px: ширины колонки ровно хватает на 300px виджета капчи, если поля сведены к 10px,
   а панель формы разворачивается во всю ширину экрана. Горизонтальной прокрутки нет. */
@media (max-width: 360px) {
  .pub-hero-in { padding: 22px 10px 28px; }
  .pub-body { padding: 0 10px; }
  body:has(.pub-hero) footer { --foot-gutter: 10px; }
}

/* Адаптивность восстановленного образца: верхней строки с доменом больше нет. */
@media (max-width: 700px) {
  .pub-doc { padding: 20px 18px; }
  .pub-doc-row { grid-template-columns: minmax(0, 1fr) 48px 30px; gap: 4px 10px; }
}
@media (max-width: 380px) { .pub-doc { padding: 18px 14px; } }
@media (max-width: 360px) {
  .pub-doc { padding: 18px 12px; }
  .pub-doc-row { grid-template-columns: minmax(0, 1fr) 30px; }
  .pub-doc-bar { grid-column: 1 / -1; grid-row: 2; }
}

/* Ссылки без подчёркивания (решение владельца 16.10.2026): ссылку в тексте выделяет начертание 600,
   наведение — мягкая подложка, как в кабинете. */
a, a:hover, a:focus-visible { text-decoration: none; }
:where(.pub-body, .pub-auth, .check-progress-page, .check-report) :where(p, li, td, dd) a:not([class]), .pub-doc-next { font-weight: 600; border-radius: 3px; transition: background-color .15s ease, box-shadow .15s ease; }
:where(.pub-body, .pub-auth, .check-progress-page, .check-report) :where(p, li, td, dd) a:not([class]):hover, .pub-doc-next:hover { background: #E2EBE3; box-shadow: 0 0 0 3px #E2EBE3; }

/* Страница проверки: форма и «Что мы измеряем» делят общий контейнер, а не одну колонку hero */
.pub-hero-in:has(> .pub-check-split) { display: block; }
/* Плашка тестовой среды выровнена по тому же контейнеру, что шапка и содержимое */
:is(body:has(.pub-hero), body:has(.pub-auth), body:has(.check-progress-page), body:has(.check-report)) .environment { padding: 8px max(24px, calc((100vw - 1072px) / 2)); background: #FBF1DC; }
@media (max-width: 600px) { :is(body:has(.pub-hero), body:has(.pub-auth), body:has(.check-progress-page), body:has(.check-report)) .environment { padding: 8px 16px; } }
/* Ссылки в карточках hero — цвета бренда, а не синие браузерные */
.pub-hero .notice a { color: #1E3D30; font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
.pub-hero .notice a:hover { background: #E2EBE3; }

/* ── Движение при прокрутке: только transform и opacity. Без поддержки таймлайнов блоки просто стоят.
   Общий prefers-reduced-motion в portal.css гасит всё это через !important. ───────────────── */
@keyframes pub-in { from { opacity: 0; transform: translateY(16px); } }
@keyframes pub-up { from { opacity: .01; transform: translateY(8px); } }
@keyframes pub-fill { from { transform: scaleX(0); } }
.pub-offer > *, .pub-doc { animation: pub-up .5s cubic-bezier(.2,.7,.2,1) both; }
.pub-offer > :nth-child(2) { animation-delay: .06s; }
.pub-offer > :nth-child(3) { animation-delay: .12s; }
.pub-doc { animation-delay: .18s; }
.pub-doc-bar i { transform-origin: left; animation: pub-fill .8s ease-out .3s both; }
@supports (animation-timeline: view()) {
  .pub-body .pub-section:not(.pub-cabinet) { animation: pub-in linear both; animation-timeline: view(); animation-range: entry 0% entry 35%; }
  .pub-steps li, .pub-cabinet-cards > * { animation: pub-in linear both; animation-timeline: view(); animation-range: entry 0% entry 50%; }
}
.pub-final { text-align: center; padding: 40px 24px; margin: 24px 0 8px; background: #fff; border: 1px solid #E3DFD0; border-radius: 20px; }
.pub-final p { margin: 8px 0 20px; color: #526050; }
@media print { .pub-body .pub-section, .pub-steps li, .pub-cabinet-cards > * { animation: none !important; } }
.pub-steps-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.pub-steps-3 li { background: #fff; border: 1px solid #E3DFD0; border-radius: 20px; padding: 18px; border-top: 1px solid #E3DFD0; }
@media (max-width: 760px) { .pub-steps-3 { grid-template-columns: 1fr; } }
.pub-final p { margin: 8px auto 20px; }

/* ── Редизайн главной: крупнее заголовок, окна мягче, услуга — тёмное окно ─────────────── */
.pub-hero h1 { font-size: clamp(40px, 5.2vw, 72px); line-height: 1.04; letter-spacing: -.02em; }
.pub-hero .pub-lead { font-size: 19px; }
.pub-doc, .pub-hero .notice { border-radius: 28px; }
.pub-doc { padding: 32px 34px; box-shadow: 0 1px 2px rgba(30,61,48,.06), 0 14px 36px rgba(30,61,48,.10); }
.pub-doc-finding { border-radius: 20px; }
.pub-panel, .pub-faq.pub-panel, .pub-cabinet-preview { border-radius: 28px; }
.pub-step, .pub-steps-3 li, .pub-final { border-radius: 28px; }
/* Услуга под ключ: тёмно-зелёное окно с картинкой внутри */
.pub-service.pub-section { background: #1E3D30; border-radius: 40px; padding: 56px; margin: 24px 0; }
.pub-service-copy h2 { color: #F6F2E9; font-family: "Lora", Georgia, serif; font-weight: 500; font-size: clamp(30px, 3.4vw, 52px); line-height: 1.08; max-width: 14ch; }
.pub-service-copy > p, .pub-service-price span { color: #D6E0D6; }
.pub-service-copy .pub-service-price { color: #fff; }
.pub-service-copy .button.primary { background: #F6F2E9; color: #1E3D30; border-color: #F6F2E9; }
.pub-service-copy .button.primary:hover { background: #E2EBE3; }
.pub-service-art { border-radius: 28px; }
/* Финал: большое мягкое окно */
.pub-final { background: #E2EBE3; border: 0; border-radius: 40px; padding: 64px 24px; }
.pub-final h2 { font-family: "Lora", Georgia, serif; font-weight: 500; font-size: clamp(30px, 3.4vw, 52px); }
@media (max-width: 760px) {
  .pub-service.pub-section { padding: 28px 22px; border-radius: 28px; }
  .pub-final { padding: 40px 20px; border-radius: 28px; }
  .pub-doc { padding: 22px 20px; border-radius: 22px; }
}
.pub-hero h1 { font-size: clamp(36px, 3.9vw, 56px); max-width: none; }
.pub-doc-findings { min-height: 0; }
body:has(.pub-hero) header, body:has(.pub-auth) header, body:has(.check-progress-page) header, body:has(.check-report) header { padding-block: 24px; min-height: 92px; align-items: center; }
body:has(.pub-hero) header .button, body:has(.pub-auth) header .button, body:has(.check-progress-page) header .button, body:has(.check-report) header .button { min-height: 48px; padding-inline: 22px; font-size: 15px; }
@media (max-width: 720px) { body:has(.pub-hero) header, body:has(.pub-auth) header, body:has(.check-progress-page) header, body:has(.check-report) header { padding-block: 16px; min-height: 72px; } }
