:root {
    --bg: #F5F1E8;
    --bg-card: #FFFFFF;
    --bg-soft: #FAF8F3;
    --bg-footer: #E8DCC8;
    --text: #3E2723;
    --text-soft: #6D4C41;
    --border: #E8DCC8;
    --border-strong: #D8C8AC;
    --accent: #D4AF37;
    --accent-deep: #8C721E;
    --action: #B75C1A;
    --action-hover: #93490F;
    --radius: 10px;
    --serif: Georgia, 'Times New Roman', serif;
    --sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
    --wrap: 720px;
    --wrap-pad: 20px;
}

* { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
    margin: 0;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    background: var(--bg);
    color: var(--text);
    font-family: var(--serif);
    font-size: 18px;
    line-height: 1.65;

    /*
     * Всё содержимое по центру страницы — решение владельца (04.09.2026).
     * Раньше блоки стояли по левому краю колонки: на широком экране текст
     * жался влево, а справа оставалась пустота, и это читалось как перекос.
     *
     * Исключение только для маркированных списков на юридических страницах:
     * центрировать пункты списка нельзя, они рассыпаются. Сам список при этом
     * остаётся по центру как блок.
     */
    text-align: center;
}

main { flex: 1 0 auto; }

.wrap { width: 100%; max-width: var(--wrap); margin: 0 auto; padding: 0 var(--wrap-pad); }

/*
 * Длинная строка по центру читается тяжело: рваные оба края. Поэтому у
 * абзацев ограничена ширина, а сами они центрируются как блок.
 */
main p, .card-hint, .lead, .empty p { max-width: 58ch; margin-left: auto; margin-right: auto; }

/*
 * Одна вертикальная ось для всего текста.
 *
 * Было четыре: контейнер 280, шапка и подвал 300, текст внутри карточек 323,
 * название сайта 356. Карточка добавляла свой внутренний отступ поверх
 * отступа контейнера, и её содержимое уезжало вправо относительно шапки,
 * заголовка страницы и подвала.
 *
 * Решение: карточка растягивается на всю ширину контейнера отрицательным
 * полем, а её внутренний отступ равен отступу контейнера. Тогда рамка
 * карточки идёт по внешнему краю, а текст внутри встаёт ровно туда же, где
 * стоит логотип, заголовок и подвал.
 *
 * Из отступа вычитается толщина рамки: она тоже сдвигает содержимое, и без
 * этого текст вставал на пиксель правее остального.
 */
.card,
.article-card,
.offer {
    margin-left: calc(var(--wrap-pad) * -1);
    margin-right: calc(var(--wrap-pad) * -1);
}

a { color: var(--action); }
a:hover { color: var(--action-hover); }

:focus-visible { outline: 3px solid var(--action); outline-offset: 3px; }

.skip-link {
    position: absolute;
    left: -9999px;
    background: var(--bg-card);
    color: var(--text);
    padding: 14px 18px;
    border-radius: var(--radius);
    z-index: 50;
    font-family: var(--sans);
}
.skip-link:focus { left: 12px; top: 12px; }

.site-header {
    background: var(--bg-card);
    border-bottom: 3px solid var(--accent);
}
.header-inner { display: flex; align-items: center; justify-content: center; min-height: 72px; }

.logo { display: flex; align-items: center; gap: 12px; text-decoration: none; color: var(--text); }
.logo:hover { color: var(--text); }
.logo-mark {
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    border-radius: 8px;
    background: var(--accent-deep);
    color: #FFFFFF;
    font-family: var(--sans);
    font-weight: 700;
    font-size: 17px;
    letter-spacing: .02em;
}
.logo-text { font-size: 22px; font-weight: 700; letter-spacing: .01em; }

main { display: block; padding: 28px 0 56px; }

[tabindex="-1"]:focus { outline: none; }

h1 { font-size: 32px; line-height: 1.25; margin: 0 0 16px; }
h2 { font-size: 24px; line-height: 1.3; margin: 0 0 14px; }
h3 { font-size: 20px; line-height: 1.35; margin: 0 0 10px; }

p { margin: 0 0 18px; }
p:last-child { margin-bottom: 0; }

.lead { font-size: 20px; color: var(--text); }

.card {
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 24px calc(var(--wrap-pad) - 1px);
    margin-bottom: 22px;
}
.card > :last-child { margin-bottom: 0; }

.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-height: 56px;
    padding: 14px 30px;
    border: 0;
    border-radius: var(--radius);
    background: var(--action);
    color: #FFFFFF;
    font-family: var(--sans);
    font-size: 19px;
    font-weight: 600;
    line-height: 1.2;
    text-decoration: none;
    cursor: pointer;
    transition: background .15s ease;
}
.btn:hover { background: var(--action-hover); color: #FFFFFF; }
.btn-block { width: 100%; }

.btn-quiet {
    background: var(--bg-card);
    color: var(--text);
    border: 2px solid var(--border-strong);
    min-height: 48px;
    font-size: 17px;
    padding: 10px 20px;
}
.btn-quiet:hover { background: var(--bg-soft); color: var(--text); }

.cover, .step-image {
    display: block;
    width: 100%;
    height: auto;
    border-radius: var(--radius);
    border: 1px solid var(--border);
    background: var(--bg-soft);
    margin-bottom: 20px;
}

.article-list { display: grid; gap: 20px; list-style: none; margin: 0; padding: 0; }

.article-card {
    display: block;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    overflow: hidden;
    text-decoration: none;
    color: var(--text);
}
.article-card:hover { color: var(--text); border-color: var(--border-strong); }
.article-card-body { padding: 22px calc(var(--wrap-pad) - 1px) 24px; }
.article-card h2 { margin: 0 0 8px; }
.article-card p { color: var(--text-soft); margin: 0 auto 16px; }
.article-card .fake-btn {
    display: inline-flex;
    align-items: center;
    min-height: 48px;
    padding: 10px 24px;
    border-radius: var(--radius);
    background: var(--action);
    color: #FFFFFF;
    font-family: var(--sans);
    font-size: 17px;
    font-weight: 600;
}

/*
 * text-indent компенсирует межбуквенный интервал.
 *
 * letter-spacing добавляет пробел ПОСЛЕ последней буквы, поэтому строка
 * шире видимых знаков, и при центрировании «1 / 5» смотрелся смещённым
 * влево. Отступ на ту же величину возвращает знаки на середину.
 */
.step-counter {
    font-family: var(--sans);
    font-size: 15px;
    font-weight: 600;
    letter-spacing: .06em;
    text-indent: .06em;
    text-transform: uppercase;
    color: var(--text-soft);

    /*
     * margin-left обязан быть auto: без него собственное правило счётчика
     * перебивало центрирование из общего правила для абзацев, бокс прижимался
     * к левому краю карточки, и «2 / 5» уезжал почти на сто пикселей.
     */
    margin: 0 auto 12px;
}

.js .step:not(.is-active) { display: none; }

.step-actions { margin-top: 22px; }

.survey label,
.survey .label-like { display: block; font-family: var(--sans); font-size: 17px; font-weight: 600; margin-bottom: 8px; }
.survey .choice { font-weight: 600; margin-bottom: 0; }
.survey .field { margin-bottom: 20px; }
.survey input[type="email"],
.survey select {
    width: 100%;
    min-height: 56px;
    padding: 14px 16px;
    border: 2px solid var(--border-strong);
    border-radius: var(--radius);
    background: var(--bg-card);
    color: var(--text);
    font-family: var(--sans);
    font-size: 17px;
}
.survey input:focus, .survey select:focus { border-color: var(--action); }

.choice-row { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; }
.choice {
    flex: 1 1 140px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-height: 56px;
    padding: 10px 16px;
    border: 2px solid var(--border-strong);
    border-radius: var(--radius);
    background: var(--bg-card);
    font-family: var(--sans);
    font-size: 17px;
    font-weight: 600;
    cursor: pointer;
}
.choice input { width: 22px; height: 22px; margin: 0; accent-color: var(--action); }
.choice:has(input:checked) { border-color: var(--action); background: #FDF6EF; }

.form-note { font-family: var(--sans); font-size: 16px; margin: 14px 0 0; }
.form-note-ok { color: #2E6B45; }
.form-note-bad { color: #A3231F; }

.share { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }

.offer {
    background: var(--bg-soft);
    border: 2px solid var(--accent);
    border-radius: var(--radius);
    padding: 24px calc(var(--wrap-pad) - 2px);
    margin-bottom: 22px;
}
.offer h2 { margin-bottom: 8px; }
.offer p { color: var(--text-soft); }

.site-footer {
    background: var(--bg-footer);
    border-top: 1px solid var(--border-strong);
    padding: 26px 0;
    font-family: var(--sans);
    font-size: 16px;
}
.site-footer p { margin: 0 0 10px; }
.footer-links { display: flex; flex-wrap: wrap; gap: 8px 22px; justify-content: center; }
.footer-links a {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    color: var(--text-soft);
    font-weight: 600;
    text-decoration: none;
    transition: color .2s ease;
}
.footer-links a:hover { color: var(--action-hover); text-decoration: none; }

.footer-langs { margin-top: 14px; }

.lang-select {
    min-height: 44px;
    padding: 8px 14px;
    border: 2px solid var(--border-strong);
    border-radius: var(--radius);
    background: var(--bg-card);
    color: var(--text);
    font-family: var(--sans);
    font-size: 16px;
    font-weight: 600;
    cursor: pointer;
}
.lang-select:hover { border-color: var(--action); color: var(--action-hover); }

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.imprint {
    margin-top: 32px;
    padding-top: 24px;
    border-top: 2px solid var(--border-strong);
}
.imprint h2 { font-size: 22px; }
.imprint h3 { font-size: 18px; margin-top: 20px; }

/*
 * Отдельно стоящая ссылка — такая же цель нажатия, как кнопка. В потоке
 * текста высоту строки трогать нельзя, поэтому правило только для неё.
 */
.back-link { margin-top: 4px; }
.back-link a {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    padding: 0 14px;
    font-family: var(--sans);
    font-size: 17px;
    font-weight: 600;
    color: var(--text-soft);
    text-decoration: none;
    transition: color .2s ease;
}
.back-link a:hover { color: var(--action-hover); text-decoration: none; }

.empty { text-align: center; padding: 40px 10px; }
.empty p { color: var(--text-soft); max-width: 44ch; margin: 0 auto; }

.legal h1 { margin-bottom: 20px; }
.legal h2 { margin-top: 28px; }
/*
 * Списки блоком с общей шириной, а не inline-block по содержимому: при
 * подгонке по содержимому каждый список центрировался по своей ширине, и
 * соседние начинались с разных позиций — как раз то, что выбивается из
 * общего ряда. С одинаковой шириной левый край у всех совпадает.
 */
.legal ul, .legal ol {
    display: block;
    width: 100%;
    max-width: 58ch;
    text-align: left;
    padding-left: 24px;
    margin-left: auto;
    margin-right: auto;
}
.legal li { margin-bottom: 10px; }

@media (max-width: 600px) {
    :root { --wrap-pad: 16px; }

    body { font-size: 17px; }
    h1 { font-size: 27px; }
    h2 { font-size: 22px; }
    .lead { font-size: 19px; }
    .logo-text { font-size: 19px; }
    .wrap { padding: 0 var(--wrap-pad); }
}

@media (prefers-reduced-motion: reduce) {
    * { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}

.PF-arrow { display: none !important; }

.PF-win-chrome-align {
    left: 50% !important;
    right: auto !important;
    top: 50% !important;
    transform: translate(-50%, -50%) !important;
}
