/* «Ветпаспорт»: весь сайт — ветеринарный паспорт питомца.
   Каждая страница сайта открывает книжечку: обложка, развороты, задняя
   обложка. Листают, а не прокручивают вниз. Без JavaScript страницы идут
   друг под другом (запасной вариант).
   Цвета и шрифты — фирменные токены (D-029); рукописный Bad Script
   одобрен владельцем 17.10.2026 только для заполненных граф. */

/* Фирменные шрифты в сжатом виде (WOFF2, кириллица и латиница): 54 КБ вместо
   380 КБ TTF. Объявлены позже tokens.css, поэтому браузер берёт их; страница
   их предзагружает, и меню не «прыгает» с запасного шрифта на фирменный. */
@font-face {
    font-family: "Montserrat Alternates";
    src: url("../fonts/MontserratAlternates-SemiBold.58aca1e273b0.woff2") format("woff2");
    font-style: normal;
    font-weight: 400 600;
    font-display: swap;
}

@font-face {
    font-family: "Manrope";
    src: url("../fonts/Manrope-Variable.16906622179c.woff2") format("woff2");
    font-style: normal;
    font-weight: 200 800;
    font-display: swap;
}

@font-face {
    font-family: "Bad Script";
    src: url("../fonts/BadScript-Regular.0d0a303b22bd.woff2") format("woff2");
    font-style: normal;
    font-weight: 400;
    font-display: swap;
}

:root {
    /* Палитра: обложка, бумага, чернила, печать, наклейка. */
    --pp-cover: var(--ds-color-brand);
    --pp-cover-deep: var(--ds-color-brand-dark);
    --pp-desk: #0d1a2e;
    --pp-page: var(--ds-color-paper);
    --pp-page-blue: var(--ds-color-paper-blue);
    --pp-ink: var(--ds-color-ink);
    --pp-pen: var(--ds-color-brand);
    --pp-pen-2: #23488f;
    --pp-rule: var(--ds-color-line);
    /* Чуть темнее фирменного серого: на состаренной бумаге держит контраст 4.5:1. */
    --pp-muted: #545e72;
    --pp-star: #a8501a;
    --pp-accent: var(--ds-color-accent);
    --pp-white: var(--ds-color-white);
    --pp-silver: #d9e1ea;
    --pp-sticker: #fdfcf7;

    /* Шрифты: заголовки, текст, рукописные записи. */
    --pp-font-hand: "Bad Script", "Segoe Script", "Comic Sans MS", cursive;

    --pp-radius: 6px;
    --pp-header: 76px;
    /* Поле под книжкой и место по бокам под закладки. */
    --pp-foot: 14px;
    --pp-flag-on: 16px;
    --pp-flag-out: 4.6rem;
    --pp-flag-room: 5.6rem;
    --pp-ease: cubic-bezier(0.16, 1, 0.3, 1);
    --pp-page-pad: clamp(1rem, 3vh, 2.4rem) clamp(1.1rem, 2.6vw, 2.4rem) 2.6rem;

    --pp-fibers: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260'%3E%3Cfilter id='f'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.42  0 0 0 0 0.36  0 0 0 0 0.24  0 0 0 0.17 0'/%3E%3C/filter%3E%3Crect width='100%' height='100%' filter='url(%23f)'/%3E%3C/svg%3E");
    --pp-grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.4' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 0.16 0'/%3E%3C/filter%3E%3Crect width='100%' height='100%' filter='url(%23g)'/%3E%3C/svg%3E");
    --pp-ink-a: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='i'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.55' numOctaves='3' seed='7'/%3E%3CfeColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  -3.2 0 0 0 2.55'/%3E%3C/filter%3E%3Crect width='100%' height='100%' filter='url(%23i)'/%3E%3C/svg%3E");
    --pp-ink-b: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='i'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='3' seed='23'/%3E%3CfeColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  -3.6 0 0 0 2.7'/%3E%3C/filter%3E%3Crect width='100%' height='100%' filter='url(%23i)'/%3E%3C/svg%3E");
    --pp-ink-c: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='i'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.45' numOctaves='3' seed='51'/%3E%3CfeColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  -2.8 0 0 0 2.25'/%3E%3C/filter%3E%3Crect width='100%' height='100%' filter='url(%23i)'/%3E%3C/svg%3E");
    --pp-ink-d: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='i'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' seed='88'/%3E%3CfeColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  -4 0 0 0 3.05'/%3E%3C/filter%3E%3Crect width='100%' height='100%' filter='url(%23i)'/%3E%3C/svg%3E");
    /* Защитная сетка бланка паспорта: два набора колец дают муар.
       Едва заметная — под ней текст, а не узор. */
    --pp-guilloche:
        repeating-radial-gradient(circle at 0 0, transparent 0 15px, rgba(0, 75, 145, 0.025) 15px 16px),
        repeating-radial-gradient(circle at 100% 0, transparent 0 15px, rgba(0, 75, 145, 0.025) 15px 16px);
}

/* ---------- Поверхности браузера ---------- */

.redesign-page {
    background-color: var(--pp-page);
    background-image: var(--pp-fibers), var(--pp-guilloche);
    caret-color: var(--pp-accent);
    scrollbar-color: rgba(23, 36, 61, 0.28) transparent;
    font-variant-numeric: lining-nums;
}

.redesign-page ::selection {
    background: rgba(233, 120, 50, 0.28);
    color: var(--pp-ink);
}

.redesign-page :focus-visible {
    outline: 3px solid var(--pp-accent);
    outline-offset: 3px;
}

/* На телефоне браузер не подсвечивает нажатие серым прямоугольником. */
.redesign-page :is(a, button, summary) {
    -webkit-tap-highlight-color: transparent;
}

.redesign-page h1,
.redesign-page h2 {
    text-wrap: balance;
}

.redesign-page .ui-kicker {
    display: none;
}

.redesign-page .ui-button {
    border-radius: var(--pp-radius);
}

.redesign-page .ui-button:hover {
    transform: none;
}

/* ---------- Шапка: тонкая полоса над книжечкой ---------- */

.redesign-page .rd-header,
.redesign-page .rd-header.is-scrolled {
    border-bottom: 1px solid rgba(0, 54, 106, 0.35);
    background: var(--pp-page);
    box-shadow: inset 0 3px 0 var(--pp-cover);
    backdrop-filter: none;
}

.redesign-page .rd-mobile-menu summary,
.redesign-page .rd-mobile-menu nav {
    border-radius: var(--pp-radius);
}

.redesign-page .rd-phone {
    font-variant-numeric: tabular-nums;
}

/* Шапка одинакова на всех страницах: при переходе между разделами
   кнопка и меню не меняют размер (раньше главная была мельче). */
body.redesign-page .rd-header-button {
    min-height: 44px;
    padding-inline: 16px;
    font-size: 0.9rem;
}

/* ---------- Книжечка во весь экран ---------- */

html.pp-js,
html.pp-js body {
    height: 100%;
    overflow: hidden;
}

html.pp-js {
    --pp-header: 66px;
}

/* Пока скрипт собирает книжечку, запасная раскладка не показывается. */
html.pp-js .pp-book:not(.is-ready) {
    visibility: hidden;
}

html.pp-js .redesign-page .rd-header {
    min-height: 66px;
    padding-block: 6px;
}



html.pp-js #rd-main {
    position: fixed;
    inset: var(--pp-header) 0 0;
    display: flex;
    flex-direction: column;
    padding: clamp(10px, 2.2vh, 26px) max(12px, env(safe-area-inset-right, 0px)) calc(var(--pp-foot) + env(safe-area-inset-bottom, 0px)) max(12px, env(safe-area-inset-left, 0px));
    /* Стол темнее обложки: книжечка и закладки не сливаются с фоном. */
    background-color: var(--pp-desk);
    background-image: var(--pp-grain);
}

.pp-book.is-ready {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    align-items: center;
    min-height: 0;
}

.pp-book.is-ready .pp-spread {
    --pp-rim: 12px;
    position: relative;
    display: grid;
    flex: 1 1 auto;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: minmax(0, 1fr);
    width: min(100% - 2 * var(--pp-flag-room), 1560px, calc((100svh - var(--pp-header) - var(--pp-foot) - 40px) * 1.58));
    min-height: 0;
    padding: var(--pp-rim);
    border-radius: 16px 18px 15px 17px;
    background-color: var(--pp-cover);
    background-image:
        radial-gradient(9rem 6rem at 0 0, rgba(255, 255, 255, 0.16), transparent 70%),
        radial-gradient(8rem 7rem at 100% 100%, rgba(255, 255, 255, 0.14), transparent 70%),
        radial-gradient(6rem 5rem at 100% 0, rgba(255, 255, 255, 0.1), transparent 70%),
        var(--pp-grain);
    box-shadow:
        inset 0 0 0 1px rgba(255, 255, 255, 0.14),
        inset 0 0 18px rgba(255, 255, 255, 0.12),
        0 26px 50px rgba(0, 12, 32, 0.5);
    touch-action: pan-y;
}

.pp-book.is-ready [data-book-page] {
    grid-row: 1;
    min-height: 0;
    overflow: hidden;
}

/* Неактивные листы убраны совсем (Safari плохо перерисовывает visibility).
   На время замеров раскладки они на месте, но невидимы. */
.pp-book.is-ready:not(.is-measuring) [data-book-page]:not([data-active]) {
    display: none !important;
}

.pp-book.is-measuring [data-book-page]:not([data-active]) {
    visibility: hidden;
}

/* Во время замеров переходы выключены: иначе (в режиме «уменьшить движение»
   у сайта есть переход 0,01 мс на всё) браузер отдаёт размеры до изменения. */
.pp-book.is-measuring,
.pp-book.is-measuring * {
    transition: none !important;
}

/* Лист — неподвижная рамка; прокручивается только содержимое внутри. */
.pp-book.is-ready [data-book-page]:not([data-book-cover]):not([data-book-back]) {
    display: flex;
    flex-direction: column;
    padding: 0;
}

.pp-page-body > :last-child,
.pp-page-body > :last-child > :last-child {
    margin-bottom: 0;
}

.pp-page-body {
    flex: 1 1 auto;
    min-height: 0;
    padding: var(--pp-page-pad);
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-width: thin;
    -webkit-overflow-scrolling: touch;
}

/* «Ниже есть ещё»: тень и стрелка поверх низа листа, сам текст не трогаем. */
.pp-book.is-ready [data-book-page][data-more]::after {
    content: "";
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    height: 4rem;
    background: linear-gradient(180deg, rgba(248, 247, 242, 0), rgba(248, 247, 242, 0.96) 70%);
    pointer-events: none;
}

.pp-book.is-ready [data-book-page][data-more]::before {
    content: "";
    position: absolute;
    bottom: 1.05rem;
    left: 50%;
    z-index: 1;
    width: 0.6rem;
    height: 0.6rem;
    border-right: 2px solid var(--pp-cover);
    border-bottom: 2px solid var(--pp-cover);
    transform: translateX(-50%) rotate(45deg);
    pointer-events: none;
}



.pp-book.is-ready [data-col="left"] {
    grid-column: 1;
    border-radius: var(--pp-radius) 0 0 var(--pp-radius);
    box-shadow: inset -28px 0 32px -28px rgba(23, 36, 61, 0.3);
}

.pp-book.is-ready [data-col="right"] {
    grid-column: 2;
    border-radius: 0 var(--pp-radius) var(--pp-radius) 0;
    box-shadow: inset 28px 0 32px -28px rgba(23, 36, 61, 0.3);
}

/* Прошивка корешка. */
.pp-book.is-ready:not(.is-single):not(.is-closed):not(.is-back) .pp-spread::after {
    content: "";
    position: absolute;
    top: 12%;
    bottom: 12%;
    left: 50%;
    z-index: 1;
    width: 2px;
    transform: translateX(-50%);
    background: repeating-linear-gradient(180deg, rgba(23, 36, 61, 0.42) 0 9px, transparent 9px 20px);
    pointer-events: none;
}

/* Закрытый паспорт или задняя обложка: видна одна сторона. Закрытая книжечка
   лежит по центру и при открытии съезжает вправо, как настоящая. */
.pp-book.is-closed .pp-spread,
.pp-book.is-back .pp-spread {
    background: transparent;
    box-shadow: none;
}

.pp-book.is-ready:not(.is-single) .pp-spread {
    transition: transform 820ms cubic-bezier(0.45, 0.05, 0.25, 1);
}

.pp-book.is-ready.is-closed:not(.is-single) .pp-spread {
    transform: translateX(-25%);
}

.pp-book.is-ready.is-back:not(.is-single) .pp-spread {
    transform: translateX(25%);
}

/* Телефон: одна страница во весь экран. */
/* Один лист держит пропорции паспорта: на планшете он не растягивается
   во всю ширину, а лежит по центру. */
.pp-book.is-ready.is-single .pp-spread {
    grid-template-columns: minmax(0, 1fr);
    --pp-rim: 7px;
    width: min(100% - var(--pp-flag-room), calc((100svh - var(--pp-header) - var(--pp-foot) - 24px) * 0.8));
    margin-right: var(--pp-flag-room);
    padding: var(--pp-rim);
    border-radius: 12px;
}

.pp-book.is-ready [data-col="single"] {
    grid-column: 1;
    border-radius: var(--pp-radius);
    box-shadow: inset 22px 0 26px -24px rgba(23, 36, 61, 0.32);
}

/* Без JavaScript: страницы друг под другом, обычная прокрутка. */
.pp-book:not(.is-ready) {
    display: grid;
    gap: 18px;
    width: min(760px, 100% - 24px);
    margin: calc(var(--pp-header) + 18px) auto 18px;
}

.pp-book:not(.is-ready) .pp-spread {
    display: grid;
    gap: 18px;
}

.pp-book:not(.is-ready) .pp-page {
    border-radius: var(--pp-radius);
    box-shadow: 0 10px 28px rgba(23, 36, 61, 0.14);
}

.pp-book:not(.is-ready) .pp-cover-page[hidden] {
    display: none;
}

/* ---------- Страница паспорта ---------- */

.pp-page {
    position: relative;
    padding: var(--pp-page-pad);
    background-color: var(--pp-page);
    background-image: var(--pp-aging, none), var(--pp-fibers), var(--pp-guilloche);
    color: var(--pp-ink);
}

/* Каждая страница состарилась по-своему. */
.pp-age-a {
    --pp-aging:
        radial-gradient(120% 92% at 50% 45%, transparent 58%, rgba(150, 118, 60, 0.2) 100%),
        radial-gradient(16rem 11rem at 100% 100%, rgba(160, 125, 60, 0.12), transparent 70%);
}

.pp-age-b {
    --pp-aging:
        radial-gradient(118% 90% at 45% 50%, transparent 60%, rgba(150, 118, 60, 0.18) 100%),
        radial-gradient(12rem 9rem at 0 0, rgba(160, 125, 60, 0.1), transparent 70%),
        linear-gradient(100deg, transparent 40%, rgba(255, 255, 255, 0.3) 46%, transparent 52%);
}

.pp-age-c {
    --pp-aging:
        radial-gradient(120% 92% at 50% 45%, transparent 60%, rgba(150, 118, 60, 0.17) 100%),
        radial-gradient(7rem 5rem at 90% 8%, rgba(160, 125, 60, 0.09), transparent 70%);
}

/* След от кружки — только на одной странице книжечки. */
.pp-ring {
    --pp-aging:
        radial-gradient(circle at 84% 86%, transparent 3.1rem, rgba(140, 100, 50, 0.1) 3.2rem, rgba(140, 100, 50, 0.04) 3.5rem, transparent 3.7rem),
        radial-gradient(120% 92% at 50% 45%, transparent 60%, rgba(150, 118, 60, 0.17) 100%);
}

.pp-age-d {
    --pp-aging:
        radial-gradient(122% 94% at 55% 40%, transparent 56%, rgba(150, 118, 60, 0.22) 100%),
        radial-gradient(5rem 3.5rem at 20% 92%, rgba(140, 110, 60, 0.08), transparent 70%);
}

.pp-folio {
    position: absolute;
    z-index: 2;
    bottom: 0.9rem;
    color: var(--pp-muted);
    font-family: var(--ds-font-display);
    font-size: 0.78rem;
    font-variant-numeric: tabular-nums;
}

.pp-book:not(.is-ready) .pp-folio {
    left: 1.4rem;
}

[data-col="left"] .pp-folio {
    left: 3.4rem;
}

[data-col="right"] .pp-folio,
[data-col="single"] .pp-folio {
    right: 3.4rem;
}

/* Колонтитул: русское название, под ним английское — всегда одинаково. */
.pp-runhead {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.05rem;
    margin: 0 0 clamp(0.75rem, 2.2vh, 1.6rem);
    padding-bottom: 0.5rem;
    border-bottom: 1px solid var(--pp-rule);
    color: var(--pp-ink);
    font-family: var(--ds-font-display);
    font-size: 0.8rem;
    font-weight: 600;
    line-height: 1.3;
}

.pp-runhead [lang="en"] {
    font-size: 0.78rem;
}

.pp-fields dt [lang="en"],
.pp-photo figcaption [lang="en"] {
    display: block;
    font-size: 0.74rem;
}

.pp-runhead [lang="en"],
.pp-fields dt [lang="en"],
.pp-table th [lang="en"],
.pp-sign [lang="en"],
.pp-signature [lang="en"],
.pp-photo figcaption [lang="en"] {
    color: var(--pp-muted);
    font-family: var(--ds-font-body);
    font-weight: 400;
}

.pp-runhead-inner {
    margin-top: 1.4rem;
}

/* Имя графы паспорта — единственный заголовок листа; английский мельче под ним. */
.pp-page :is(h2, h3).pp-runhead {
    max-width: none;
    margin-bottom: clamp(0.75rem, 2vh, 1.25rem);
    font-size: clamp(1.3rem, min(1.9vw, 3.4vh), 1.65rem);
    line-height: 1.15;
}

.pp-page h3.pp-runhead {
    margin-top: 1.4rem;
    font-size: clamp(1.08rem, min(1.4vw, 2.6vh), 1.25rem);
}

.pp-page :is(h2, h3).pp-runhead [lang="en"] {
    margin-top: 0.15rem;
    font-size: 0.78rem;
    line-height: 1.3;
}

.pp-heading-cont {
    margin: 0.2rem 0 0.4rem;
    font-family: var(--ds-font-display);
    font-size: 1.05rem;
    font-weight: 600;
}

.pp-heading-cont::after {
    content: " · продолжение";
    color: var(--pp-muted);
    font-family: var(--ds-font-body);
    font-size: 0.85rem;
    font-weight: 400;
}

/* Лист-продолжение повторяет колонтитул раздела. */
.pp-runhead-cont > span:first-child::after {
    content: " · продолжение";
    color: var(--pp-muted);
    font-family: var(--ds-font-body);
    font-weight: 400;
}

.pp-page h1 {
    max-width: 14ch;
    margin: 0 0 clamp(0.6rem, 1.6vh, 1rem);
    font-size: clamp(1.85rem, min(3.4vw, 5.8vh), 3.5rem);
    line-height: 1.02;
}

.pp-page h2 {
    max-width: 18ch;
    margin: 0 0 clamp(0.5rem, 1.4vh, 0.75rem);
    font-size: clamp(1.45rem, min(2.4vw, 4.1vh), 2.4rem);
    line-height: 1.08;
}

.pp-page h3 {
    margin: 0;
    font-size: clamp(1.05rem, 1.4vw, 1.25rem);
}

.pp-page p {
    margin: 0;
}

.pp-intro,
.pp-lead {
    max-width: 34rem;
    color: var(--pp-ink);
    font-size: var(--pp-intro-size, clamp(0.98rem, min(1.25vw, 2.2vh), 1.15rem));
    line-height: 1.55;
}

.pp-intro {
    margin-bottom: var(--pp-block-gap, 1.25rem);
}

.pp-lead {
    margin-bottom: clamp(1.25rem, 3vh, 2rem);
}

/* ---------- Графы, записанные от руки ---------- */

.pp-fields {
    display: grid;
    gap: 0.85rem;
    margin: 0;
}

.pp-fields-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.85rem 1.5rem;
}

.pp-fields-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.85rem 1.25rem;
}

.pp-fields > div {
    display: grid;
    gap: 0.1rem;
    border-bottom: 1px solid var(--pp-rule);
}

.pp-fields dt {
    display: block;
    color: var(--pp-ink);
    font-size: 0.8rem;
    font-weight: 600;
    line-height: 1.3;
}

/* Факты (адрес, телефоны, график) набраны: их читают, набирают и копируют. */
.pp-fields dd {
    margin: 0;
    padding: 0.15rem 0 0.3rem;
    color: var(--pp-ink);
    font-size: 1.02rem;
    font-weight: 600;
    line-height: 1.4;
    transform-origin: left center;
}

/* Пометки врача — от руки: крупно, тёмными чернилами, почти без наклона. */
.pp-fields-hand dd {
    padding: 0.1rem 0 0.15rem;
    color: var(--pp-pen);
    font-family: var(--pp-font-hand);
    font-size: 1.32rem;
    font-weight: 400;
}

/* Рука врача не повторяется: наклон, нажим и чернила в каждой графе свои. */
.pp-fields-hand > div:nth-child(3n + 1) dd { transform: rotate(-0.6deg); --i: 0; }
.pp-fields-hand > div:nth-child(3n + 2) dd { transform: rotate(0.4deg) translateY(1px); color: var(--pp-pen-2); --i: 1; }
.pp-fields-hand > div:nth-child(3n + 3) dd { transform: rotate(-0.2deg) translateX(2px); font-size: 1.38rem; --i: 2; }

.redesign-page .pp-fields dd a {
    color: inherit;
    text-decoration-thickness: 1px;
    text-underline-offset: 4px;
}

.redesign-page .pp-fields dd a {
    display: inline-block;
    min-height: 40px;
    padding-block: 0.45rem;
}

.redesign-page .pp-fields dd a[href^="tel:"] {
    font-family: var(--ds-font-display);
    font-size: 1.08rem;
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    white-space: nowrap;
}

/* ---------- Таблицы паспорта ---------- */

.pp-table {
    width: 100%;
    margin: 0 0 1rem;
    border-collapse: collapse;
    font-size: 0.92rem;
}

.pp-table th {
    padding: 0 0.5rem 0.4rem 0;
    border-bottom: 2px solid var(--pp-ink);
    color: var(--pp-ink);
    font-size: 0.78rem;
    font-weight: 700;
    line-height: 1.25;
    text-align: left;
    vertical-align: bottom;
}

.pp-table th [lang="en"] {
    display: block;
}

.pp-table td {
    padding: var(--pp-row-pad, 0.5rem) 0.5rem var(--pp-row-pad, 0.5rem) 0;
    border-bottom: 1px solid var(--pp-rule);
    vertical-align: middle;
}

.pp-table .pp-num {
    padding-right: 0;
    text-align: right;
    white-space: nowrap;
}

.pp-table td.pp-num {
    font-family: var(--ds-font-display);
    font-variant-numeric: tabular-nums;
    font-weight: 600;
}

.pp-table td.pp-hand {
    color: var(--pp-pen);
    font-family: var(--pp-font-hand);
    font-size: 1.05rem;
    line-height: 1.2;
}

.pp-table tr:nth-child(odd) td.pp-hand { transform: rotate(-1.2deg); }
.pp-table tr:nth-child(even) td.pp-hand { color: var(--pp-pen-2); transform: rotate(0.8deg); }

/* Наклейки препаратов: каждая наклеена чуть по-своему, одна отклеилась. */
.pp-sticker {
    position: relative;
    display: inline-block;
    max-width: 15rem;
    padding: var(--pp-sticker-pad, 0.4rem) 0.55rem calc(var(--pp-sticker-pad, 0.4rem) - 0.05rem) 1.7rem;
    border: 1px solid #c9d2e0;
    border-top: 3px solid var(--pp-accent);
    background-color: var(--pp-sticker);
    background-image: linear-gradient(160deg, transparent 55%, rgba(150, 120, 60, 0.12)), var(--pp-fibers);
    box-shadow: 0 1px 2px rgba(23, 36, 61, 0.16);
    color: var(--pp-ink);
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    line-height: 1.25;
    text-transform: uppercase;
}

.pp-sticker::before {
    content: "";
    position: absolute;
    top: 0.35rem;
    bottom: 0.3rem;
    left: 0.5rem;
    width: 0.85rem;
    background: repeating-linear-gradient(90deg, var(--pp-ink) 0 1px, transparent 1px 2px, var(--pp-ink) 2px 4px, transparent 4px 5px, var(--pp-ink) 5px 6px, transparent 6px 8px);
}

.pp-table tr:nth-child(5n + 1) .pp-sticker { transform: rotate(-1.4deg); }
.pp-table tr:nth-child(5n + 2) .pp-sticker { transform: rotate(0.9deg) translateX(3px); }
.pp-table tr:nth-child(5n + 3) .pp-sticker { transform: rotate(-0.4deg) translateX(-2px); border-top-color: #ef9a5f; }
.pp-table tr:nth-child(5n + 4) .pp-sticker { transform: rotate(1.7deg); }
.pp-table tr:nth-child(5n + 5) .pp-sticker { transform: rotate(-2deg) translateX(4px); }

/* Отклеившийся уголок. */
.pp-table tr:nth-child(4) .pp-sticker::after {
    content: "";
    position: absolute;
    right: -1px;
    bottom: -1px;
    width: 0.85rem;
    height: 0.85rem;
    background: linear-gradient(135deg, #e9e3d2 0 48%, rgba(23, 36, 61, 0.22) 50%, var(--pp-page) 52%);
}

/* Место печати и подпись. */
.pp-sign {
    display: flex;
    align-items: end;
    gap: 1.5rem;
    margin: 0.25rem 0 var(--pp-block-gap, 1.1rem);
    color: var(--pp-muted);
    font-size: 0.72rem;
    font-weight: 600;
}

.pp-sign-mp {
    position: relative;
    display: grid;
    flex: none;
    width: 4.2rem;
    aspect-ratio: 1;
    place-items: center;
    border: 1px dashed var(--pp-rule);
    border-radius: 50%;
}

.pp-sign-line {
    flex: 1;
    max-width: 14rem;
    border-top: 1px solid var(--pp-rule);
}

.pp-sign-hand {
    display: block;
    margin-bottom: 0.1rem;
    color: var(--pp-pen-2);
    font-family: var(--pp-font-hand);
    font-size: 1.3rem;
    font-weight: 400;
    transform: rotate(-4deg);
}

.pp-sign-line .pp-sign-hand {
    margin-top: -1.9rem;
}

.pp-age-d .pp-sign-hand,
.pp-ring .pp-sign-hand {
    font-size: 1.45rem;
    transform: rotate(-7deg) translateX(0.6rem);
}

/* ---------- Печати: каждая поставлена по-своему ---------- */

.redesign-page .pp-stamp {
    --tilt: -9deg;
    --stamp-ink: var(--pp-cover);
    position: relative;
    display: block;
    flex: none;
    width: 11.5rem;
    aspect-ratio: 1;
    border-radius: 50%;
    color: var(--stamp-ink);
    text-decoration: none;
    transform: rotate(var(--tilt));
    transition: transform 180ms var(--pp-ease), background-color 180ms ease;
}

.pp-stamp-ring {
    display: block;
    width: 100%;
    height: 100%;
    opacity: 0.9;
    -webkit-mask-image: var(--pp-ink-a);
    mask-image: var(--pp-ink-a);
    -webkit-mask-size: 100% 100%;
    mask-size: 100% 100%;
}

.pp-stamp-outer {
    font-family: var(--ds-font-display);
    font-size: 15.5px;
    font-weight: 600;
}

.pp-stamp-inner {
    font-family: var(--ds-font-display);
    font-size: 10.5px;
    font-weight: 600;
}

.pp-tilt-a { --tilt: -9deg; }
.pp-tilt-b { --tilt: 6deg; }
.pp-tilt-c { --tilt: -17deg; }
.pp-tilt-d { --tilt: 11deg; }
.pp-tilt-e { --tilt: -3deg; }
.pp-tilt-f { --tilt: 23deg; }

/* Краска: ровный оттиск, слабый нажим слева, двойной удар, смазанный край. */
.pp-ink-a .pp-stamp-ring {
    opacity: 0.92;
}

.redesign-page .pp-ink-b {
    --stamp-ink: #1d4f97;
}

.pp-ink-b .pp-stamp-ring {
    -webkit-mask-image: var(--pp-ink-b), linear-gradient(115deg, rgba(0, 0, 0, 0.35) 5%, #000 55%);
    mask-image: var(--pp-ink-b), linear-gradient(115deg, rgba(0, 0, 0, 0.35) 5%, #000 55%);
    -webkit-mask-composite: source-in;
    mask-composite: intersect;
}

.redesign-page .pp-ink-c {
    --stamp-ink: #20407e;
}

.pp-ink-c .pp-stamp-ring {
    opacity: 0.8;
    -webkit-mask-image: var(--pp-ink-c);
    mask-image: var(--pp-ink-c);
    filter: drop-shadow(2px -1.5px 0 rgba(32, 64, 126, 0.32));
}

.pp-ink-d .pp-stamp-ring {
    -webkit-mask-image: var(--pp-ink-d), linear-gradient(200deg, #000 45%, rgba(0, 0, 0, 0.45) 95%);
    mask-image: var(--pp-ink-d), linear-gradient(200deg, #000 45%, rgba(0, 0, 0, 0.45) 95%);
    -webkit-mask-composite: source-in;
    mask-composite: intersect;
    filter: blur(0.3px) drop-shadow(0.6px 0.8px 0 rgba(0, 75, 145, 0.35));
}

@media (hover: hover) {
    .redesign-page a.pp-stamp:hover {
        transform: rotate(calc(var(--tilt) + 4deg)) scale(1.03);
    }
}

/* Нажатие — как удар печатью: оттиск чуть оседает, круг остаётся кругом. */
.redesign-page a.pp-stamp:active {
    transform: rotate(var(--tilt)) scale(0.95);
}

.redesign-page .pp-stamp:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px var(--pp-page), 0 0 0 6px var(--pp-accent);
}

.pp-stamp-mark {
    pointer-events: none;
}

/* Оттиск в графе «М.П.» — мельче и бледнее. */

.redesign-page .pp-stamp-mp {
    position: absolute;
    inset: -0.9rem;
    width: auto;
    opacity: 0.72;
}

.redesign-page .pp-stamp-sign {
    width: 7.5rem;
    opacity: 0.75;
}

/* ---------- Ссылки и кнопки ---------- */

.redesign-page .pp-link {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    gap: 0.4rem;
    color: var(--pp-cover);
    font-family: var(--ds-font-display);
    font-size: 0.92rem;
    font-weight: 600;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 5px;
}

.redesign-page .pp-link::after {
    content: "";
    width: 0.5rem;
    height: 0.5rem;
    border-top: 2px solid currentColor;
    border-right: 2px solid currentColor;
    transform: rotate(45deg);
}

.redesign-page .pp-link:hover {
    color: var(--pp-cover-deep);
    text-decoration-thickness: 2px;
}

.pp-links {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem 1.5rem;
}

/* ---------- Обложка ---------- */

.pp-cover-page,
.pp-back-cover {
    display: grid;
    align-content: space-between;
    justify-items: center;
    background-color: var(--pp-cover);
    background-image:
        radial-gradient(10rem 7rem at 100% 0, rgba(255, 255, 255, 0.17), transparent 70%),
        radial-gradient(9rem 8rem at 100% 100%, rgba(255, 255, 255, 0.15), transparent 70%),
        radial-gradient(7rem 6rem at 0 100%, rgba(255, 255, 255, 0.08), transparent 70%),
        linear-gradient(90deg, rgba(0, 0, 0, 0.22), transparent 7%),
        var(--pp-grain);
    color: var(--pp-white);
    text-align: center;
}

.pp-book.is-ready .pp-cover-page,
.pp-book.is-ready .pp-back-cover {
    border-radius: 6px 16px 14px 6px;
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.14), inset 0 0 22px rgba(255, 255, 255, 0.1), 0 24px 48px rgba(0, 12, 32, 0.45);
}

.pp-book.is-ready .pp-back-cover[data-col="left"] {
    border-radius: 16px 6px 6px 14px;
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.14), inset 0 0 22px rgba(255, 255, 255, 0.1), 0 24px 48px rgba(0, 12, 32, 0.45);
}

/* Тиснение серебром: светлая кромка сверху, тень снизу. Логотип — на вклеенной
   этикетке в фирменных цветах, без перекраски. */
.pp-cover-face {
    display: grid;
    justify-items: center;
    gap: clamp(0.6rem, 1.8vh, 1.1rem);
    width: 100%;
    margin-top: clamp(1.25rem, 6vh, 4rem);
}

.pp-cover-label {
    display: block;
    width: min(78%, 22rem);
    margin-bottom: clamp(0.5rem, 2.5vh, 1.5rem);
    padding: 0.9rem 1rem;
    border-radius: 3px;
    background-color: var(--pp-sticker);
    background-image: linear-gradient(170deg, transparent 60%, rgba(150, 120, 60, 0.12)), var(--pp-fibers);
    box-shadow: 0 2px 3px rgba(0, 12, 32, 0.35), inset 0 0 0 1px rgba(23, 36, 61, 0.08);
    transform: rotate(-1.2deg);
}

.pp-cover-label img {
    display: block;
    width: 100%;
    height: auto;
}

.pp-cover-title,
.pp-cover-doc,
.pp-cover-city {
    margin: 0;
    color: var(--pp-silver);
    font-family: var(--ds-font-display);
    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.45), 0 1px 0 rgba(255, 255, 255, 0.22);
}

.pp-cover-title {
    display: grid;
    gap: 0.2rem;
    line-height: 1.05;
}

.pp-cover-kind {
    font-size: clamp(1.05rem, min(1.7vw, 2.8vh), 1.45rem);
    font-weight: 600;
    letter-spacing: 0.08em;
}

.pp-cover-name {
    font-size: clamp(2.2rem, min(4vw, 6.2vh), 3.6rem);
    font-weight: 600;
    letter-spacing: -0.01em;
}

.pp-cover-rule {
    width: 4rem;
    height: 2px;
    margin-block: clamp(0.3rem, 1.5vh, 1rem);
    background: var(--pp-silver);
    box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4);
    opacity: 0.7;
}

.pp-cover-doc {
    display: grid;
    gap: 0.3rem;
    font-size: 0.85rem;
    font-weight: 600;
    letter-spacing: 0.2em;
    text-transform: uppercase;
}

.pp-cover-doc [lang="en"] {
    font-size: 0.7rem;
    opacity: 0.8;
}

.pp-cover-city {
    font-size: 0.85rem;
    font-weight: 600;
    letter-spacing: 0.3em;
    text-transform: uppercase;
}

.pp-cover-open {
    min-height: 48px;
    margin-bottom: clamp(1rem, 4vh, 2.5rem);
    padding: 0 1.4rem;
    border: 1.5px solid rgba(255, 255, 255, 0.7);
    border-radius: var(--pp-radius);
    background: transparent;
    color: var(--pp-white);
    cursor: pointer;
    font-family: var(--ds-font-display);
    font-size: 0.92rem;
    font-weight: 600;
}

.pp-cover-open:hover {
    background: rgba(255, 255, 255, 0.12);
}

.pp-book:not(.is-ready) .pp-cover-open {
    display: none;
}

/* Задняя обложка — подвал сайта. */
.pp-back-cover {
    align-content: center;
}

.pp-back-cover .rp-footer {
    display: grid;
    justify-items: center;
    gap: 1.5rem;
    padding: 0;
    background: none;
    color: var(--pp-white);
}

.pp-back-logo {
    width: min(70%, 18rem);
    filter: brightness(0) invert(0.88) drop-shadow(0 -1px 0 rgba(0, 0, 0, 0.5));
}

.redesign-page .pp-back-cover .rp-footer-layout {
    display: grid;
    grid-template-columns: 1fr;
    justify-items: center;
    gap: 1.1rem;
    color: rgba(255, 255, 255, 0.85);
    text-align: center;
}

.redesign-page .pp-back-cover .rp-footer-layout strong,
.redesign-page .pp-back-cover a {
    color: var(--pp-white);
}

.redesign-page .pp-back-cover a,
.redesign-page .pp-back-cover .rd-consent-settings {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
}

.redesign-page .pp-back-cover nav {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.6rem 1.2rem;
}

.redesign-page .pp-back-cover .rp-footer-contact {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0 1.25rem;
}

.redesign-page .pp-back-cover .rp-footer-contact :is(.rd-footer-note, .rd-consent-settings) {
    flex-basis: 100%;
    justify-content: center;
    text-align: center;
}

.redesign-page .pp-back-cover .rp-footer-layout > div:first-child {
    display: grid;
    gap: 0.15rem;
}

/* Обложки не режем: если не влезли, их можно прокрутить, а тень — синяя. */
.pp-book.is-ready :is([data-book-cover], [data-book-back]) {
    overflow-y: auto;
}

.pp-book.is-ready [data-book-back][data-more]::after {
    background: linear-gradient(180deg, rgba(0, 75, 145, 0), rgba(0, 75, 145, 0.95) 70%);
}

.pp-book.is-ready [data-book-back][data-more]::before {
    border-color: var(--pp-white);
}

.redesign-page .pp-back-cover .rd-footer-note,
.redesign-page .pp-back-cover .rd-consent-settings {
    max-width: 28ch;
    color: rgba(255, 255, 255, 0.82);
}

.redesign-page .pp-back-cover .rd-consent-settings:hover {
    color: var(--pp-white);
}

.pp-back-cover :focus-visible,
.pp-cover-page :focus-visible {
    outline-color: var(--pp-white);
}

/* ---------- Переворот страницы ---------- */

.pp-flipper {
    position: absolute;
    z-index: 3;
    -webkit-transform-style: preserve-3d;
    transform-style: preserve-3d;
    will-change: transform;
    transition: transform 820ms cubic-bezier(0.45, 0.05, 0.25, 1);
    pointer-events: none;
}

.pp-flipper-from-right {
    transform-origin: left center;
    transform: perspective(2400px) rotateY(0deg);
}

.pp-flipper-from-right.is-turned {
    transform: perspective(2400px) rotateY(-180deg);
}

.pp-flipper-from-left {
    transform-origin: right center;
    transform: perspective(2400px) rotateY(0deg);
}

.pp-flipper-from-left.is-turned {
    transform: perspective(2400px) rotateY(180deg);
}

.pp-flip-face {
    position: absolute;
    inset: 0;
    overflow: hidden;
    transform: translateZ(0);
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
}

.pp-flip-face > .pp-page {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: 0;
    overflow: hidden;
    visibility: visible;
}

.pp-flip-face > :is(.pp-cover-page, .pp-back-cover) {
    display: grid;
    padding: var(--pp-page-pad);
}

.pp-flip-back {
    transform: rotateY(180deg) translateZ(0);
}

/* В перевороте Safari «расплющивает» 3D из-за масок, фильтров и смешивания —
   в копии листа эти эффекты на долю секунды выключаем. */
.pp-flip-face :is(.pp-stamp-ring, .pp-photo img) {
    filter: none;
    -webkit-mask-image: none;
    mask-image: none;
}

.pp-flip-face .pp-hologram {
    display: none;
}

.pp-flip-face * {
    animation: none !important;
    transition: none !important;
}

.pp-flip-blank {
    border-radius: var(--pp-radius);
    background-color: var(--pp-page);
    background-image: var(--pp-fibers), var(--pp-guilloche);
}

/* Переход на другую страницу сайта: прежний лист лежит поверх нового
   разворота и переворачивается, открывая новый раздел. */
.pp-enter-layer {
    position: absolute;
    inset: 0;
    z-index: 4;
    pointer-events: none;
}

.pp-enter-still {
    position: absolute;
    overflow: hidden;
}

.pp-enter-still > .pp-page {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: 0;
    overflow: hidden;
}

.pp-enter-still > :is(.pp-cover-page, .pp-back-cover) {
    display: grid;
    padding: var(--pp-page-pad);
}

/* Тень изгиба бумаги во время переворота. */
.pp-flip-face::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(23, 36, 61, 0.3), transparent 35%, transparent 70%, rgba(255, 255, 255, 0.2));
    opacity: 0;
    pointer-events: none;
}

.pp-flipper.is-flipping .pp-flip-face::after {
    animation: pp-curl 820ms ease-in-out;
}

@keyframes pp-curl {
    50% {
        opacity: 1;
    }
}

/* Загнутые уголки листают: правый нижний — вперёд, левый нижний — назад. */
.pp-corner {
    position: absolute;
    right: var(--pp-rim);
    bottom: var(--pp-rim);
    z-index: 2;
    width: 2.8rem;
    height: 2.8rem;
    padding: 0;
    border: 0;
    border-radius: 0 0 var(--pp-radius) 0;
    background: linear-gradient(135deg, transparent 50%, #cfc6b0 50.5%, #e6dfcd 56%, #efe9da 100%);
    box-shadow: -3px -3px 6px rgba(23, 36, 61, 0.16);
    cursor: pointer;
    clip-path: polygon(100% 0, 100% 100%, 0 100%);
    transition: width 220ms var(--pp-ease), height 220ms var(--pp-ease);
}

.pp-corner-prev {
    right: auto;
    left: var(--pp-rim);
    border-radius: 0 0 0 var(--pp-radius);
    background: linear-gradient(225deg, transparent 50%, #cfc6b0 50.5%, #e6dfcd 56%, #efe9da 100%);
    box-shadow: 3px -3px 6px rgba(23, 36, 61, 0.16);
    clip-path: polygon(0 0, 100% 100%, 0 100%);
}

/* На задней обложке загибается сама обложка. */
.pp-book.is-back .pp-corner-prev {
    background: linear-gradient(225deg, transparent 50%, #00305f 50.5%, var(--pp-cover) 62%, #1b5c9c 100%);
}

.pp-corner:hover,
.pp-corner:focus-visible {
    width: 4.4rem;
    height: 4.4rem;
}

.pp-corner:focus-visible {
    outline: 2px solid var(--pp-accent);
    outline-offset: -4px;
}

.pp-sr {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
}

/* ---------- Закладки: канцелярские флажки сбоку ---------- */

/* Прозрачный кончик флажка наклеен на поле листа, цветной хвост торчит
   из-под обложки. На хвосте раздел подписан от руки. Флажки наклеены
   неровно: хвосты разной длины. Флажок открытого раздела вытянут сильнее. */
.pp-flags {
    position: absolute;
    top: clamp(1.5rem, 9%, 5rem);
    left: calc(100% - var(--pp-rim) - var(--pp-flag-on));
    z-index: 5;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    pointer-events: none;
}

.pp-flag-list {
    display: flex;
    flex-direction: column;
    gap: inherit;
    min-height: 0;
    margin: 0;
    padding: 0;
    list-style: none;
}

.redesign-page .pp-flag {
    --flag: #f7dc4a;
    --nudge: 0px;
    --pull: 0px;
    --tilt: 0deg;
    position: relative;
    display: flex;
    width: calc(var(--pp-flag-on) + var(--pp-rim) + var(--pp-flag-out) + var(--nudge) + var(--pull));
    height: 2.5rem;
    padding: 0 0 0 var(--pp-flag-on);
    border: 0;
    border-radius: 0 3px 3px 0;
    background: color-mix(in srgb, var(--flag) 40%, transparent);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--flag) 70%, transparent);
    color: var(--pp-ink);
    cursor: pointer;
    font: inherit;
    pointer-events: auto;
    text-decoration: none;
    transform: rotate(var(--tilt));
    transform-origin: 0 50%;
    transition: width 220ms var(--pp-ease), transform 220ms var(--pp-ease);
}

.pp-flag-tip {
    display: flex;
    flex: 1 1 auto;
    align-items: center;
    min-width: 0;
    padding: 0 0.4rem 0 calc(var(--pp-rim) + 0.45rem);
    border-radius: 0 3px 3px 0;
    background-color: var(--flag);
    background-image: linear-gradient(180deg, rgba(255, 255, 255, 0.28), rgba(255, 255, 255, 0) 45%, rgba(23, 36, 61, 0.06));
    box-shadow: 2px 3px 6px rgba(0, 12, 32, 0.35);
    transition: box-shadow 220ms var(--pp-ease);
}

.pp-flag-label {
    font-family: var(--pp-font-hand);
    font-size: 1.05rem;
    line-height: 1;
    white-space: nowrap;
}

.pp-flag-list li:nth-child(6n + 2) .pp-flag {
    --flag: #f59fc4;
    --nudge: 5px;
    --tilt: 0.7deg;
}

.pp-flag-list li:nth-child(6n + 3) .pp-flag {
    --flag: #8fd8a8;
    --nudge: -3px;
    --tilt: -0.4deg;
}

.pp-flag-list li:nth-child(6n + 4) .pp-flag {
    --flag: #83c6ee;
    --nudge: 3px;
    --tilt: 0.5deg;
}

.pp-flag-list li:nth-child(6n + 5) .pp-flag {
    --flag: #c7aef3;
    --nudge: -1px;
    --tilt: -0.8deg;
}

.pp-flag-list li:nth-child(6n) .pp-flag {
    --flag: #f8a98c;
    --nudge: 4px;
    --tilt: 0.3deg;
}

.pp-flag-list li:nth-child(6n + 1) .pp-flag {
    --tilt: -0.6deg;
}

@media (hover: hover) {
    .redesign-page .pp-flag:hover {
        --pull: 6px;
    }
}

.redesign-page .pp-flag[aria-current] {
    --pull: 14px;
    --tilt: 0deg;
}

.pp-flag[aria-current] .pp-flag-tip {
    box-shadow: 4px 5px 10px rgba(0, 12, 32, 0.45);
}

.redesign-page .pp-flag:focus-visible {
    outline: 2px solid var(--pp-accent);
    outline-offset: 2px;
}

/* Звонок — фирменный оранжевый флажок, только на телефоне. */
.redesign-page .pp-flag-call {
    --flag: var(--pp-accent);
    display: none;
}

.pp-flag-call svg {
    display: block;
}

/* Паспорт закрыт: прозрачные кончики спрятаны под обложкой, видны только хвосты. */
.pp-book.is-closed .pp-flag,
.pp-book.is-back .pp-flag {
    background: none;
    box-shadow: none;
}

/* Задняя обложка: паспорт лежит лицом вниз, флажки торчат слева. */
.pp-book.is-back:not(.is-single) .pp-flags {
    right: calc(100% - var(--pp-rim) - var(--pp-flag-on));
    left: auto;
    align-items: flex-end;
}

.pp-book.is-back:not(.is-single) .pp-flag {
    flex-direction: row-reverse;
    padding: 0 var(--pp-flag-on) 0 0;
    border-radius: 3px 0 0 3px;
    transform: rotate(calc(-1 * var(--tilt)));
    transform-origin: 100% 50%;
}

.pp-book.is-back:not(.is-single) .pp-flag-tip {
    justify-content: flex-end;
    padding: 0 calc(var(--pp-rim) + 0.45rem) 0 0.4rem;
    border-radius: 3px 0 0 3px;
    box-shadow: -2px 3px 6px rgba(0, 12, 32, 0.35);
}

/* Плашка cookie поднята над уголками листания. */
html.pp-js body .rd-consent {
    bottom: calc(var(--pp-foot) + env(safe-area-inset-bottom, 0px) + 10px);
}

/* ---------- Главная: разворот 1 ---------- */

.pp-contact-col {
    display: grid;
    gap: clamp(0.75rem, 2vh, 1.25rem);
}

.pp-write {
    display: grid;
    gap: 0.35rem;
}

.pp-write-links {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

/* Мессенджеры — талончики с перфорацией. */
.redesign-page .pp-ticket {
    position: relative;
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    padding: 0 0.8rem;
    border: 1.5px dashed rgba(0, 75, 145, 0.55);
    border-radius: 4px;
    background: rgba(255, 255, 255, 0.6);
    color: var(--pp-cover);
    font-family: var(--ds-font-display);
    font-size: 0.92rem;
    font-weight: 600;
    text-decoration: none;
}

.redesign-page .pp-ticket:nth-child(2) { transform: rotate(-1deg); }
.redesign-page .pp-ticket:nth-child(3) { transform: rotate(0.8deg); }

.redesign-page .pp-ticket:hover {
    border-style: solid;
    background: var(--pp-white);
}

.pp-hero-actions {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    gap: 1rem 1.5rem;
}

.pp-call {
    display: grid;
    gap: 0.15rem;
}

.pp-call-label {
    color: var(--pp-muted);
    font-size: 0.8rem;
    font-weight: 600;
}

.redesign-page .pp-call-number {
    display: inline-flex;
    min-height: 40px;
    align-items: center;
    color: var(--pp-ink);
    font-family: var(--ds-font-display);
    font-size: clamp(1.1rem, 1.5vw, 1.5rem);
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    text-decoration: none;
    white-space: nowrap;
}

.redesign-page .pp-call-number-alt {
    padding-block: 0.4rem;
    color: var(--pp-ink);
    font-size: 1.02rem;
    font-weight: 500;
}

.redesign-page .pp-call-number:hover {
    color: var(--pp-cover);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 5px;
}

.pp-photo {
    position: relative;
    margin: 0 0 1.25rem;
    padding: 0.55rem 0.55rem 0.45rem;
    border: 1px solid var(--pp-rule);
    background: var(--pp-white) var(--pp-fibers);
    box-shadow: 0 1px 2px rgba(23, 36, 61, 0.14);
    transform: rotate(0.6deg);
}

.pp-photo img {
    width: 100%;
    aspect-ratio: 16 / 10;
    object-fit: cover;
    filter: sepia(0.12) saturate(0.95);
}

.pp-photo figcaption {
    display: block;
    margin-top: 0.4rem;
    font-size: 0.8rem;
    font-weight: 600;
}

/* Голограмма поверх уголка фото, как на вклеенном снимке. */
.pp-hologram {
    position: absolute;
    right: 1.4rem;
    bottom: 2.2rem;
    width: 3.4rem;
    height: 2.4rem;
    border-radius: 50%;
    background: conic-gradient(from 30deg, rgba(255, 170, 200, 0.55), rgba(170, 220, 255, 0.55), rgba(190, 255, 200, 0.55), rgba(255, 240, 170, 0.55), rgba(255, 170, 200, 0.55));
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.6);
    mix-blend-mode: screen;
    opacity: 0.8;
}

/* Портрет врача на уголках. */
.pp-portrait {
    position: relative;
    width: min(100%, 22rem);
    margin: 0.5rem auto 1.5rem;
    padding: 0.6rem 0.6rem 0.55rem;
    background: var(--pp-white);
    box-shadow: 0 12px 26px rgba(23, 36, 61, 0.14);
    transform: rotate(-1.6deg);
}

.pp-portrait::before,
.pp-portrait::after {
    content: "";
    position: absolute;
    width: 2.3rem;
    height: 2.3rem;
    background: var(--pp-cover-deep);
}

.pp-portrait::before {
    top: -0.35rem;
    left: -0.35rem;
    clip-path: polygon(0 0, 100% 0, 0 100%);
}

.pp-portrait::after {
    right: -0.35rem;
    bottom: -0.35rem;
    clip-path: polygon(100% 0, 100% 100%, 0 100%);
}

.pp-portrait img {
    width: 100%;
    max-height: 42vh;
    aspect-ratio: 4 / 5;
    object-fit: cover;
    object-position: center 25%;
}

.pp-specialist {
    display: grid;
    gap: 0.85rem;
}

.pp-specialist-intro {
    font-size: 1.08rem;
    font-weight: 600;
}

.pp-specialist .pp-link {
    margin-top: 0.5rem;
    justify-self: start;
}

/* Порядок записи. */
.pp-steps {
    display: grid;
    gap: 1.25rem;
    margin: 0.5rem 0 0;
    padding: 0;
    counter-reset: pp-step;
    list-style: none;
}

.pp-steps li {
    display: grid;
    grid-template-columns: 3rem 1fr;
    gap: 0.1rem 0.75rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--pp-rule);
    counter-increment: pp-step;
}

.pp-steps li::before {
    content: counter(pp-step) ".";
    grid-row: span 2;
    color: var(--pp-pen);
    font-family: var(--pp-font-hand);
    font-size: 2.4rem;
    line-height: 1;
}

.pp-steps li:nth-child(2)::before { color: var(--pp-pen-2); transform: rotate(-6deg); }
.pp-steps li:nth-child(3)::before { transform: rotate(4deg); }

.pp-steps p {
    color: var(--pp-muted);
}

/* Отзывы: записи владельцев. */
.pp-reviews {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.pp-review-viewport {
    overflow-x: auto;
    margin-inline: -0.25rem;
    padding: 0.35rem 0.25rem 0.75rem;
    overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory;
    scrollbar-width: thin;
}

/* Карточка не выше окна карусели: на низком листе ужимается текст записи,
   а дата, подпись и «Дочитать» остаются видны. */
.pp-review-track {
    height: 100%;
    display: grid;
    grid-auto-columns: 100%;
    grid-auto-flow: column;
    align-items: start;
    gap: 1rem;
}

.pp-reviews .rd-review-card {
    display: flex;
    flex-direction: column;
    width: auto;
    min-height: 0;
    max-height: 100%;
    gap: 0.55rem;
    padding: 0.9rem 1rem 0.8rem;
    border: 1px solid var(--pp-rule);
    border-radius: 2px;
    background-color: var(--pp-white);
    box-shadow: 0 1px 3px rgba(23, 36, 61, 0.1);
    scroll-snap-align: start;
}

.pp-reviews .rd-review-card p {
    display: block;
    font-size: 1rem;
    -webkit-line-clamp: none;
}

.pp-reviews .rd-review-card .pp-review-date {
    display: flex;
    justify-content: space-between;
    color: var(--pp-muted);
    font-family: var(--ds-font-display);
    font-size: 0.78rem;
    font-variant-numeric: tabular-nums;
    font-weight: 600;
}

.pp-review-date span:last-child {
    color: var(--pp-star);
    letter-spacing: 0.1em;
}

.pp-reviews .rd-review-card > * {
    flex: none;
}

.pp-reviews .rd-review-card .pp-review-text {
    flex: 0 1 auto;
    min-height: calc(1.7rem * 2);
    max-height: calc(1.7rem * 7);
    overflow: hidden;
    line-height: 1.7rem;
    overflow-wrap: break-word;
}

.pp-reviews .rd-review-card .pp-review-text.is-clamped {
    -webkit-mask-image: linear-gradient(180deg, #000 70%, transparent);
    mask-image: linear-gradient(180deg, #000 70%, transparent);
}

.pp-reviews .rd-review-card:has(.is-open) {
    max-height: none;
}

.pp-reviews .rd-review-card .pp-review-text.is-open {
    flex: none;
    max-height: none;
    -webkit-mask-image: none;
    mask-image: none;
}

.pp-review-more {
    align-self: flex-start;
    min-height: 32px;
    padding: 0;
    border: 0;
    background: none;
    color: var(--pp-cover);
    cursor: pointer;
    font-family: var(--ds-font-display);
    font-size: 0.85rem;
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: 4px;
}

.pp-reviews .rd-review-card .pp-review-sign {
    justify-self: end;
    color: var(--pp-pen);
    font-family: var(--pp-font-hand);
    font-size: 1.25rem;
    line-height: 1.3;
    transform: rotate(-2deg);
}

.pp-review-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.6rem 1.1rem;
    margin-top: 0.5rem;
}

.pp-arrow {
    display: grid;
    width: 44px;
    height: 44px;
    place-items: center;
    border: 1.5px solid var(--pp-ink);
    border-radius: var(--pp-radius);
    background: transparent;
    color: var(--pp-ink);
    cursor: pointer;
}

.pp-arrow:hover:not(:disabled) {
    background: var(--pp-ink);
    color: var(--pp-white);
}

.pp-arrow:disabled {
    border-color: var(--pp-rule);
    color: var(--pp-rule);
    cursor: default;
}

/* Регистрация и карта. */
.pp-visit h2 {
    margin-bottom: 1rem;
}

.pp-map {
    position: relative;
    /* Свой слой: z-index карты (панели Leaflet 400+) и подписи маршрута (401)
       не выходят наружу — иначе подпись просвечивает сквозь переворачиваемый лист. */
    isolation: isolate;
    margin: 0 0 1.1rem;
    padding: 0.55rem;
    border: 1px solid var(--pp-rule);
    background: var(--pp-white);
    transform: rotate(0.7deg);
}

.pp-map .rd-route-card-map-canvas {
    position: relative;
    inset: auto;
    height: clamp(170px, 42vh, 460px);
    min-height: 0;
    border-radius: 0;
    background-color: var(--pp-page-blue);
}

.pp-map .leaflet-container {
    font-family: var(--ds-font-body);
}

.pp-map-caption {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 0.25rem 1rem;
    margin: 0.5rem 0.15rem 0.1rem;
    font-size: 0.85rem;
}

.pp-map-caption strong {
    font-family: var(--ds-font-display);
    font-weight: 600;
}

.pp-map-caption small {
    color: var(--pp-muted);
    font-size: 0.85rem;
}

.pp-map .rp-map-marker {
    display: block;
    width: 30px;
    height: 30px;
    border: 4px solid var(--pp-white);
    border-radius: 50%;
    background: var(--pp-accent);
    box-shadow: 0 4px 12px rgba(23, 36, 61, 0.35);
}

/* ---------- Внутренние страницы: разделы ложатся на страницы ---------- */

:is(.pp-page, .pp-insert-sheet) .rd-container {
    width: auto;
    margin: 0;
}

:is(.pp-page, .pp-insert-sheet) :is(.svc-hero, .svc-section, .rp-hero, .rp-section, .rp-cta, .rp-contact-hero) {
    min-height: 0;
    padding: 0;
    border: 0;
    background: none;
    color: inherit;
}

:is(.pp-page, .pp-insert-sheet) :is(.svc-hero-layout, .svc-hero-service-layout, .rp-contact-hero-layout, .rp-about-layout, .rp-story-layout, .rp-cabinet-layout, .rp-visit-layout, .rp-route-layout, .rp-cta-layout, .svc-faq-layout, .svc-section-heading-split) {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: start;
    gap: 1rem;
}

:is(.pp-page, .pp-insert-sheet) :is(.svc-entry-grid, .svc-direction-grid, .rp-principles, .svc-contact-grid, .svc-seealso, .svc-price-groups) {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
    border-top: 2px solid var(--pp-ink);
}

:is(.pp-page, .pp-insert-sheet) :is(.svc-section-heading, .rp-section-heading) {
    max-width: none;
    margin: 0 0 1rem;
}

:is(.pp-page, .pp-insert-sheet) :is(.svc-lead, .rp-lead, .rp-heading-aside, .svc-heading-note) {
    max-width: 36rem;
    margin: 0 0 1rem;
    color: var(--pp-muted);
    font-family: var(--ds-font-body);
    font-size: 1rem;
    line-height: 1.55;
}

:is(.pp-page, .pp-insert-sheet) .svc-hero-facts {
    margin: 0 0 1.1rem;
    color: var(--pp-pen);
    font-family: var(--pp-font-hand);
    font-size: 1.15rem;
    transform: rotate(-0.6deg);
}

:is(.pp-page, .pp-insert-sheet) .svc-hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin: 0 0 1.25rem;
}

:is(.pp-page, .pp-insert-sheet) .ui-button {
    min-height: 48px;
}

/* Карточки превращаются в строки реестра. */
:is(.pp-page, .pp-insert-sheet) :is(.svc-entry-card, .svc-direction-card, .svc-seealso-card, .rp-principles article) {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 0.25rem;
    min-height: 0;
    padding: 0.85rem 0.25rem;
    border: 0;
    border-bottom: 1px solid var(--pp-rule);
    border-radius: 0;
    background: none;
    box-shadow: none;
    transform: none;
}

:is(.pp-page, .pp-insert-sheet) :is(.svc-entry-card, .svc-seealso-card):hover {
    background: rgba(0, 75, 145, 0.05);
    box-shadow: none;
    transform: none;
}

:is(.pp-page, .pp-insert-sheet) :is(.svc-entry-index, .svc-direction-index, .svc-entry-arrow, .svc-seealso-arrow),
:is(.pp-page, .pp-insert-sheet) .rp-principles article > span {
    display: none;
}

:is(.pp-page, .pp-insert-sheet) .svc-entry-card > p {
    color: var(--pp-ink);
    font-family: var(--ds-font-display);
    font-size: 1.05rem;
    font-weight: 600;
}

:is(.pp-page, .pp-insert-sheet) :is(.svc-entry-link, .svc-aside-link) {
    color: var(--pp-cover);
    font-size: 0.88rem;
    font-weight: 600;
}

:is(.pp-page, .pp-insert-sheet) :is(.svc-direction-card p, .rp-principles p, .svc-seealso-card) {
    color: var(--pp-muted);
    font-size: 0.95rem;
}

:is(.pp-page, .pp-insert-sheet) .svc-seealso-card > span:first-child {
    color: var(--pp-ink);
    font-family: var(--ds-font-display);
    font-weight: 600;
}

/* Врезки «Перед визитом», «Коротко», «Если нужно быстрее» — графы паспорта. */
:is(.pp-page, .pp-insert-sheet) :is(.svc-hero-aside, .svc-hero-factsheet, .rp-hours-note, .rp-hero-aside) {
    margin: 0 0 1rem;
    padding: 0.6rem 0 0;
    border: 0;
    border-top: 2px solid var(--pp-ink);
    border-radius: 0;
    background: none;
    box-shadow: none;
}

:is(.pp-page, .pp-insert-sheet) :is(.svc-factsheet-kicker, .svc-aside-kicker) {
    color: var(--pp-ink);
    font-family: var(--ds-font-display);
    font-size: 0.8rem;
    font-weight: 600;
    letter-spacing: 0;
    text-transform: none;
}

:is(.pp-page, .pp-insert-sheet) :is(.svc-hero-factsheet dd, .rp-contact-details dd, .svc-aside-text, .rp-facts span) {
    color: var(--pp-pen);
    font-family: var(--pp-font-hand);
    font-size: 1.22rem;
    line-height: 1.35;
}

:is(.pp-page, .pp-insert-sheet) .rp-contact-details dd a {
    color: inherit;
}

/* Прайс. */
:is(.pp-page, .pp-insert-sheet) .svc-price-nav {
    margin-top: 1rem;
}

:is(.pp-page, .pp-insert-sheet) .svc-price-nav-label {
    margin-bottom: 0.5rem;
    color: var(--pp-ink);
    font-family: var(--ds-font-display);
    font-size: 0.8rem;
    font-weight: 600;
    letter-spacing: 0;
    text-transform: none;
}

:is(.pp-page, .pp-insert-sheet) .svc-price-nav-list {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
    margin: 0;
    padding: 0;
    border-top: 2px solid var(--pp-ink);
}

:is(.pp-page, .pp-insert-sheet) .svc-price-chip {
    display: flex;
    width: 100%;
    justify-content: space-between;
    gap: 1rem;
    text-align: left;
    min-height: 48px;
    align-items: center;
    padding: 0 0.25rem;
    border: 0;
    border-bottom: 1px dotted var(--pp-muted);
    border-radius: 0;
    background: none;
    color: var(--pp-ink);
    font-family: var(--ds-font-display);
    font-size: 1.02rem;
    font-weight: 600;
}

:is(.pp-page, .pp-insert-sheet) .svc-price-chip::after {
    content: "";
    width: 0.5rem;
    height: 0.5rem;
    border-top: 2px solid var(--pp-cover);
    border-right: 2px solid var(--pp-cover);
    transform: rotate(45deg);
}

:is(.pp-page, .pp-insert-sheet) .svc-price-chip:hover {
    background: rgba(0, 75, 145, 0.05);
    color: var(--pp-cover);
}

:is(.pp-page, .pp-insert-sheet) .svc-price-card {
    border: 0;
    border-radius: 0;
    background: none;
    box-shadow: none;
}

:is(.pp-page, .pp-insert-sheet) .svc-price-summary {
    padding: 0.6rem 0 0.4rem;
    border: 0;
    background: none;
    cursor: default;
    pointer-events: none;
}

:is(.pp-page, .pp-insert-sheet) .svc-price-marker {
    display: none;
}

:is(.pp-page, .pp-insert-sheet) .svc-price-card dl {
    margin: 0;
    padding: 0;
}

:is(.pp-page, .pp-insert-sheet) .rp-price-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: baseline;
    gap: 1rem;
    padding: 0.5rem 0;
    border-bottom: 1px solid var(--pp-rule);
}

:is(.pp-page, .pp-insert-sheet) .rp-price-row dt {
    font-size: 0.95rem;
}

:is(.pp-page, .pp-insert-sheet) .rp-price-row dd {
    margin: 0;
    color: var(--pp-ink);
    font-family: var(--ds-font-display);
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    white-space: nowrap;
}

:is(.pp-page, .pp-insert-sheet) .svc-price-single {
    padding: 0;
    border-top: 2px solid var(--pp-ink);
    border-radius: 0;
    background: none;
    box-shadow: none;
}

:is(.pp-page, .pp-insert-sheet) :is(.svc-price-note, .rp-note) {
    margin-top: 0.85rem;
    color: var(--pp-muted);
    font-size: 0.9rem;
}

/* Вопросы. */
:is(.pp-page, .pp-insert-sheet) .svc-faq-list details {
    border-bottom: 1px solid var(--pp-rule);
}

:is(.pp-page, .pp-insert-sheet) .svc-faq-list summary {
    display: flex;
    min-height: 48px;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.6rem 0;
    font-size: 1rem;
}

:is(.pp-page, .pp-insert-sheet) .svc-faq-list details p {
    padding-bottom: 0.75rem;
    color: var(--pp-pen);
    font-family: var(--pp-font-hand);
    font-size: 1.18rem;
    line-height: 1.4;
}

/* Связь и контакты. */
:is(.pp-page, .pp-insert-sheet) .svc-contact-card {
    gap: 0.4rem;
}

:is(.pp-page, .pp-insert-sheet) .svc-contact-phone {
    min-height: 40px;
    font-size: clamp(1.2rem, 1.6vw, 1.45rem);
    font-variant-numeric: tabular-nums;
}

:is(.pp-page, .pp-insert-sheet) :is(.svc-contact-messengers, .svc-contact-actions) {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin: 0;
}

:is(.pp-page, .pp-insert-sheet) :is(.svc-messenger-link, .svc-contact-call) {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    padding: 0 0.85rem;
    font-size: 0.88rem;
}

:is(.pp-page, .pp-insert-sheet) .svc-hero-factsheet dl {
    margin: 0.35rem 0 0;
}

:is(.pp-page, .pp-insert-sheet) .svc-hero-factsheet dl > div {
    padding: 0.3rem 0;
    gap: 0.6rem;
}

:is(.pp-page, .pp-insert-sheet) .svc-booking-address {
    margin: 0.75rem 0;
}

:is(.pp-page, .pp-insert-sheet) .svc-contact-card,
:is(.pp-page, .pp-insert-sheet) .rp-contact-action {
    margin: 0;
    padding: 0.85rem 0.25rem;
    border: 0;
    border-bottom: 1px solid var(--pp-rule);
    border-radius: 0;
    background: none;
    box-shadow: none;
}

:is(.pp-page, .pp-insert-sheet) .rp-contact-actions > [data-contact-channel] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.5rem;
}

:is(.pp-page, .pp-insert-sheet) .rp-contact-actions .rp-contact-action:not(.rp-contact-action-main) {
    display: grid;
    gap: 0.1rem;
    min-height: 64px;
    align-content: center;
    padding: 0.55rem 0.5rem;
    border: 1.5px solid var(--pp-cover);
    border-radius: var(--pp-radius);
}

:is(.pp-page, .pp-insert-sheet) .rp-contact-actions .rp-contact-action:not(.rp-contact-action-main) strong {
    overflow-wrap: anywhere;
    font-size: clamp(0.85rem, 3.4vw, 1rem);
}

/* Подписи «Позвонить», «Написать», рубрики «Смотрите также» — строчными, без разрядки. */
:is(.pp-page, .pp-insert-sheet) :is(.rp-contact-action span, .svc-seealso-card > span:first-child, .svc-price-nav-label) {
    font-size: 0.8rem;
    letter-spacing: 0;
    text-transform: none;
}

:is(.pp-page, .pp-insert-sheet) .rp-contact-actions .rp-contact-action:not(.rp-contact-action-main):hover {
    background: rgba(0, 75, 145, 0.07);
}

:is(.pp-page, .pp-insert-sheet) .rp-contact-guidance {
    margin-top: 0.9rem;
    color: var(--pp-muted);
}

:is(.pp-page, .pp-insert-sheet) .rp-contact-action-main {
    grid-column: 1 / -1;
    margin-bottom: 0.25rem;
    padding: 1rem 1.1rem;
    border: 0;
    border-radius: var(--pp-radius);
    background: var(--pp-cover);
}

:is(.pp-page, .pp-insert-sheet) .rp-contact-action-main a,
:is(.pp-page, .pp-insert-sheet) .rp-contact-action-main span {
    color: var(--pp-white);
}

:is(.pp-page, .pp-insert-sheet) .rp-contact-phones a {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
}

:is(.pp-page, .pp-insert-sheet) :is(.svc-price-note, .rp-note) a {
    display: inline-block;
    padding-block: 0.6rem;
}

:is(.pp-page, .pp-insert-sheet) :is(.svc-contact-phone, .rp-contact-phones a) {
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

:is(.pp-page, .pp-insert-sheet) :is(.svc-messenger-link, .svc-contact-call, .svc-price-chip) {
    border-radius: var(--pp-radius);
}

:is(.pp-page, .pp-insert-sheet) .rp-route-card-map {
    padding: 0.55rem;
    border: 1px solid var(--pp-rule);
    border-radius: 0;
    background: var(--pp-white);
    transform: rotate(-0.6deg);
}

:is(.pp-page, .pp-insert-sheet) .rp-route-card-map-canvas {
    position: relative;
    inset: auto;
    height: clamp(220px, 38vh, 380px);
    border-radius: 0;
    background-color: var(--pp-page-blue);
}

:is(.pp-page, .pp-insert-sheet) .svc-breadcrumbs {
    margin-bottom: 1rem;
}

/* О кабинете: фото, графы, подпись. */
:is(.pp-page, .pp-insert-sheet) .rp-about-photo {
    position: relative;
    width: min(100%, 22rem);
    margin: 0.25rem auto 1.5rem;
    padding: 0.6rem 0.6rem 0.55rem;
    overflow: visible;
    border-radius: 0;
    background: var(--pp-white);
    box-shadow: 0 12px 26px rgba(23, 36, 61, 0.14);
    transform: rotate(-1.6deg);
}

:is(.pp-page, .pp-insert-sheet) .rp-about-photo::before,
:is(.pp-page, .pp-insert-sheet) .rp-about-photo::after {
    content: "";
    position: absolute;
    width: 2.3rem;
    height: 2.3rem;
    background: var(--pp-cover-deep);
}

:is(.pp-page, .pp-insert-sheet) .rp-about-photo::before {
    top: -0.35rem;
    left: -0.35rem;
    clip-path: polygon(0 0, 100% 0, 0 100%);
}

:is(.pp-page, .pp-insert-sheet) .rp-about-photo::after {
    right: -0.35rem;
    bottom: -0.35rem;
    clip-path: polygon(100% 0, 100% 100%, 0 100%);
}

:is(.pp-page, .pp-insert-sheet) .rp-about-photo img {
    max-height: 46vh;
    border-radius: 0;
    box-shadow: none;
}

:is(.pp-page, .pp-insert-sheet) .rp-facts {
    display: grid;
    margin: 0;
    border-top: 0;
}

:is(.pp-page, .pp-insert-sheet) .rp-facts span {
    padding: 0.3rem 0;
    border-bottom: 1px solid var(--pp-rule);
}

:is(.pp-page, .pp-insert-sheet) .rp-facts span:nth-child(2) { color: var(--pp-pen-2); transform: rotate(0.6deg); }
:is(.pp-page, .pp-insert-sheet) .rp-facts span:nth-child(3) { transform: rotate(-0.5deg); }

.redesign-inner-page :is(.pp-page, .pp-insert-sheet) h1.rp-about-title {
    max-width: none;
    font-size: clamp(2.1rem, min(5vw, 6.4vh), 3.6rem);
    overflow-wrap: break-word;
}

.pp-signature {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    gap: 0 1rem;
    margin-top: 2rem;
}

.pp-signature-label {
    grid-column: 1;
    padding-top: 0.25rem;
    border-top: 1px solid var(--pp-rule);
    color: var(--pp-muted);
    font-size: 0.72rem;
    font-weight: 600;
}

.pp-signature-name {
    grid-column: 1;
    grid-row: 1;
    margin-bottom: -0.4rem;
    color: var(--pp-pen-2);
    font-family: var(--pp-font-hand);
    font-size: 2.4rem;
    line-height: 1;
    transform: rotate(-5deg);
    transform-origin: left bottom;
}

.pp-signature .pp-stamp {
    grid-column: 2;
    grid-row: 1 / span 2;
    margin-left: -3rem;
}

:is(.pp-page, .pp-insert-sheet) .rp-story p {
    margin-bottom: 0.9rem;
    font-size: 1.02rem;
    line-height: 1.6;
}

:is(.pp-page, .pp-insert-sheet) .rp-cta h2 {
    color: var(--pp-ink);
}

:is(.pp-page, .pp-insert-sheet) .rp-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

/* ---------- Вложения: бумаги, вложенные в паспорт ---------- */

/* Края вложений торчат из-за верхнего края паспорта. */
.pp-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem 0.6rem;
    margin: 0 0 0.75rem;
}

/* Края лежат в отступе над паспортом и прячутся под его верхний край —
   высоту листов они не отнимают. */
.pp-book.is-ready {
    position: relative;
}

.pp-book.is-ready .pp-tabs {
    position: absolute;
    top: -30px;
    left: 50%;
    z-index: 0;
    flex-wrap: nowrap;
    justify-content: flex-end;
    width: min(100% - 2 * var(--pp-flag-room), 1560px, calc((100svh - var(--pp-header) - var(--pp-foot) - 40px) * 1.58));
    margin: 0;
    padding-right: 2.5rem;
    transform: translateX(-50%);
}

.pp-book.is-ready.is-single .pp-tabs {
    left: calc(50% - var(--pp-flag-room) / 2);
    width: calc(100% - var(--pp-flag-room));
    justify-content: flex-end;
    padding: 0 0.6rem;
}

html.pp-js #rd-main {
    padding-top: 36px;
}

.redesign-page .pp-tab {
    display: inline-flex;
    flex: none;
    min-height: 44px;
    align-items: flex-start;
    padding: 0.5rem 0.9rem 1rem;
    border-radius: 3px 3px 0 0;
    background-color: #fffdf8;
    background-image: var(--pp-fibers);
    box-shadow: 0 -1px 0 rgba(23, 36, 61, 0.12), 0 6px 14px rgba(0, 12, 32, 0.28);
    color: var(--pp-ink);
    font-family: var(--ds-font-display);
    font-size: 0.8rem;
    font-weight: 600;
    text-decoration: none;
    transform: rotate(-1.2deg) translateY(4px);
    transition: transform 200ms var(--pp-ease);
}

.redesign-page .pp-tab-memo {
    background-color: #f7eecf;
    transform: rotate(1.4deg) translateY(6px);
}

.redesign-page .pp-tab-ticket {
    background-color: #dfe9f5;
    transform: rotate(-0.4deg) translateY(2px);
}

@media (hover: hover) {
    .redesign-page .pp-tab:hover {
        transform: rotate(0deg) translateY(-3px);
    }
}

.redesign-page .pp-tab[aria-current] {
    box-shadow: inset 0 3px 0 var(--pp-accent), 0 6px 14px rgba(0, 12, 32, 0.28);
    transform: rotate(0deg) translateY(-4px);
}

.pp-book.is-ready .pp-spread {
    z-index: 1;
}

/* Затемнение позади открытого вложения. */
.pp-scrim {
    position: fixed;
    inset: var(--pp-header) 0 0;
    z-index: 25;
    background: rgba(0, 18, 42, 0.66);
    -webkit-backdrop-filter: blur(3px);
    backdrop-filter: blur(3px);
    opacity: 0;
    pointer-events: none;
    transition: opacity 300ms ease;
}

html.pp-insert-open .pp-scrim {
    opacity: 1;
    pointer-events: auto;
    cursor: pointer;
}

/* Само вложение: лист бумаги со своей полоской-заголовком. */
.pp-insert {
    position: relative;
    display: flex;
    flex-direction: column;
    width: min(760px, 100% - 24px);
    margin: calc(var(--pp-header) + 18px) auto 18px;
    border-radius: 3px;
    background-color: #fffdf8;
    background-image: var(--pp-fibers);
    box-shadow: 0 1px 1px rgba(23, 36, 61, 0.1), 0 24px 60px rgba(0, 12, 32, 0.45);
    color: var(--pp-ink);
}

html.pp-js .pp-insert {
    position: fixed;
    top: calc(var(--pp-header) + 16px);
    bottom: calc(var(--pp-foot) + 10px + env(safe-area-inset-bottom, 0px));
    left: 50%;
    z-index: 26;
    width: min(760px, calc(100vw - 24px));
    margin: 0;
    transform: translateX(-50%) rotate(-0.35deg);
    transition: transform 420ms var(--pp-ease), opacity 260ms ease;
}

/* Выезжает снизу, из паспорта, и уезжает обратно. */
html.pp-js .pp-insert.is-entering,
html.pp-js .pp-insert.is-leaving {
    opacity: 0;
    transform: translateX(-50%) translateY(70%) rotate(3deg);
}

html.pp-js .pp-insert:not(.is-open):not(.is-entering):not(.is-leaving) {
    opacity: 0;
}

.pp-insert-bar {
    display: flex;
    flex: none;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.35rem 0.5rem 0.35rem 1.25rem;
    border-bottom: 1px solid var(--pp-rule);
    font-family: var(--ds-font-display);
    font-size: 0.82rem;
    font-weight: 600;
}

.pp-insert-name {
    color: var(--pp-muted);
}

.redesign-page .pp-insert-close {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    gap: 0.4rem;
    padding: 0 0.8rem;
    border-radius: var(--pp-radius);
    color: var(--pp-cover);
    font-weight: 600;
    text-decoration: none;
}

@media (hover: hover) {
    .redesign-page .pp-insert-close:hover {
        background: rgba(0, 75, 145, 0.08);
    }
}

.pp-insert-sheet {
    flex: 1 1 auto;
    min-height: 0;
    padding: clamp(1.25rem, 3.5vw, 2.5rem) clamp(1.1rem, 4vw, 3rem) 2.5rem;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-width: thin;
    -webkit-overflow-scrolling: touch;
}

.pp-insert-sheet > section + section {
    margin-top: clamp(1.75rem, 4vw, 2.75rem);
}

.pp-insert-sheet h1 {
    max-width: 18ch;
    margin: 0 0 0.75rem;
    font-size: clamp(1.9rem, 4.2vw, 3rem);
    line-height: 1.04;
}

.pp-insert-sheet h2 {
    max-width: 24ch;
    margin: 0 0 0.75rem;
    font-size: clamp(1.4rem, 2.6vw, 2rem);
    line-height: 1.1;
}

.pp-insert-sheet .pp-runhead {
    margin-bottom: 0.6rem;
    padding-bottom: 0.3rem;
}

/* Фирменный бланк кабинета вверху вложения. */
.pp-letterhead {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1.5rem;
    padding-bottom: 0.75rem;
    border-bottom: 3px double rgba(0, 75, 145, 0.35);
    color: var(--pp-muted);
    font-size: 0.78rem;
    line-height: 1.35;
}

.pp-letterhead img {
    width: 7.5rem;
    height: auto;
}

/* Бумага по виду вложения. */
.pp-insert-ticket {
    background-color: #e3ecf6;
}

.pp-insert-certificate .pp-insert-sheet {
    background-image: var(--pp-guilloche);
}

.pp-insert-letter .pp-insert-sheet {
    background-image: none;
    background-position: 0 1.2rem;
}

/* Памятка — жёлтый листок, подшитый к прайсу. */
.pp-insert-sheet .pp-memo {
    position: relative;
    margin-inline: -0.4rem;
    padding: 1.4rem 1.25rem 1rem;
    border-radius: 2px;
    background-color: #f7eecf;
    background-image: linear-gradient(90deg, transparent 49.6%, rgba(120, 95, 40, 0.12) 50%, transparent 50.4%), var(--pp-fibers);
    box-shadow: 0 2px 6px rgba(23, 36, 61, 0.16);
    transform: rotate(0.5deg);
}

.pp-insert-sheet .pp-memo::before {
    content: "";
    position: absolute;
    top: -6px;
    left: 2rem;
    width: 2.2rem;
    height: 6px;
    border-radius: 2px;
    background: linear-gradient(180deg, #c9ced6, #8f96a3);
}

/* Отрывной талон записи внизу прайса. */
.pp-insert-sheet .pp-coupon {
    padding-top: 1.5rem;
    border-top: 2px dashed rgba(23, 36, 61, 0.35);
}

.redesign-page .pp-stamp-seal {
    width: 7rem;
    margin: 1rem 0 0 auto;
    opacity: 0.8;
}

/* Без JavaScript вложение — обычный лист в начале страницы. */
html:not(.pp-js) .pp-insert-close,
html:not(.pp-js) .pp-scrim {
    display: none;
}

@media screen and (max-width: 980px) {
    html.pp-js .pp-insert {
        top: calc(var(--pp-header) + 10px);
        width: calc(100vw - 16px);
        transform: translateX(-50%);
    }

    html.pp-js .pp-insert.is-entering,
    html.pp-js .pp-insert.is-leaving {
        transform: translateX(-50%) translateY(85%);
    }

    .pp-insert-sheet {
        padding: 1.1rem 1.05rem 2rem;
    }

    .redesign-page .pp-tab {
        padding: 0.5rem 0.75rem 0.9rem;
        font-size: 0.76rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    html.pp-js .pp-insert,
    .pp-scrim {
        transition: none;
    }
}

/* Лист, где всё поместилось, не прокручивается из-за выступающих оттисков. */
.pp-fits > .pp-page-body {
    overflow-y: hidden;
}

/* Плотная раскладка листа, которому не хватило совсем чуть-чуть места. */
.pp-tight .pp-runhead {
    margin-bottom: 0.5rem;
}

.pp-tight h2 {
    margin-bottom: 0.35rem;
    font-size: clamp(1.35rem, min(2.1vw, 3.6vh), 2rem);
}

.pp-tight :is(.pp-intro, .pp-lead) {
    margin-bottom: 0.6rem;
    font-size: 0.92rem;
    line-height: 1.4;
}

.pp-tight .pp-table td {
    padding-block: 0.28rem;
}

.pp-tight .pp-sticker {
    padding-block: 0.25rem 0.2rem;
}

.pp-tight .pp-sign {
    margin: 0.1rem 0 0.4rem;
}

.pp-tight :is(.pp-fields, .pp-steps) {
    gap: 0.55rem;
}

/* ---------- Живость: страница впервые открывается ---------- */

/* Врач вписывает графы — слева направо, по очереди. */
.pp-page.is-fresh :is(.pp-fields dd, td.pp-hand, .pp-sign-hand, .pp-signature-name, .rp-facts span, .svc-hero-facts) {
    animation: pp-write 560ms var(--pp-ease) both;
    animation-delay: calc(var(--i, 0) * 90ms + var(--pp-fresh-delay, 200ms));
}

.pp-page.is-fresh .pp-table tr:nth-child(2) td.pp-hand { --i: 1; }
.pp-page.is-fresh .pp-table tr:nth-child(3) td.pp-hand { --i: 2; }
.pp-page.is-fresh .rp-facts span:nth-child(2) { --i: 1; }
.pp-page.is-fresh .rp-facts span:nth-child(3) { --i: 2; }

/* Страница, открывшаяся из-под переворачиваемой, ждёт, пока её откроют. */
.pp-page.is-fresh.is-under {
    --pp-fresh-delay: 760ms;
}

@keyframes pp-write {
    from {
        clip-path: inset(-10% 100% -10% 0);
    }

    to {
        clip-path: inset(-10% -2% -10% 0);
    }
}

/* Печать ставят с размаху: оттиск проявляется и чуть оседает. */
.pp-page.is-fresh .pp-stamp .pp-stamp-ring {
    animation: pp-thump 520ms var(--pp-ease) both;
    animation-delay: calc(var(--pp-fresh-delay, 200ms) + 300ms);
}

@keyframes pp-thump {
    from {
        opacity: 0;
        transform: scale(1.35);
    }

    55% {
        opacity: 1;
        transform: scale(0.96);
    }

    to {
        transform: scale(1);
    }
}

/* ---------- Особые отметки, порядок записи, экономный лист ---------- */

/* Особые отметки — короткие пометки врача по линейкам. */
.pp-notes {
    display: grid;
    margin: 0;
    padding: 0;
    list-style: none;
}

.pp-notes li {
    padding: 0.5rem 0 0.35rem;
    border-bottom: 1px solid var(--pp-rule);
    color: var(--pp-pen);
    font-family: var(--pp-font-hand);
    font-size: clamp(1.15rem, min(1.6vw, 2.9vh), 1.4rem);
    line-height: 1.3;
}

.pp-notes li:nth-child(even) {
    color: var(--pp-pen-2);
}

.pp-notes li:nth-child(3) {
    color: #8a2f12;
}

.pp-notes-sign {
    margin-top: 1rem;
    color: var(--pp-pen);
    font-family: var(--pp-font-hand);
    font-size: 1.6rem;
    text-align: right;
    transform: rotate(-4deg);
}

/* Шаг «позвоните или напишите» — сразу действие, а не пересказ. */
.pp-step-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 0.5rem;
}

.redesign-page .pp-step-actions .pp-ticket-call {
    border-style: solid;
    background: var(--pp-cover);
    color: var(--pp-white);
    transform: none;
}

.pp-steps li:has(.pp-step-actions) {
    align-items: start;
}

.pp-steps .pp-link {
    margin-left: 0.25rem;
}

/* Лист как бланк: графы сверху, подпись, печать и действия — внизу листа,
   а не сразу под текстом с пустотой ниже. */
.pp-book.is-ready .pp-page-body {
    display: flex;
    flex-direction: column;
}

.pp-book.is-ready .pp-page-body > section {
    display: flex;
    flex: 1 0 auto;
    flex-direction: column;
}

.pp-book.is-ready .pp-push {
    margin-top: auto;
}

.pp-book.is-ready .pp-page-body > .pp-push,
.pp-book.is-ready .pp-page-body > section > .pp-push {
    padding-top: 1rem;
}

.pp-book.is-ready .pp-notes li {
    padding-block: clamp(0.5rem, 1.6vh, 1.05rem) clamp(0.35rem, 1vh, 0.7rem);
    font-size: clamp(1.15rem, min(1.7vw, 3vh), 1.6rem);
}

.pp-book.is-ready .pp-steps {
    gap: clamp(1.25rem, 4vh, 2.75rem);
}

.pp-link.pp-push {
    align-self: flex-start;
}

.pp-book.is-ready .pp-page-body > .pp-link {
    align-self: flex-start;
}

/* Высокий лист на компьютере: фото, портрет и заголовок крупнее,
   чтобы лист был заполнен содержимым, а не пустотой. */
@media screen and (min-width: 981px) and (min-height: 760px) {
    .pp-book.is-ready .pp-photo img {
        aspect-ratio: 4 / 3;
    }

    .pp-book.is-ready .pp-portrait {
        width: min(100%, clamp(16rem, 46vh, 27rem));
    }

    .pp-book.is-ready .pp-page h1 {
        font-size: clamp(2.4rem, min(4vw, 6.6vh), 4.1rem);
    }

    .pp-book.is-ready .pp-lead {
        font-size: clamp(1.05rem, 2.2vh, 1.3rem);
    }

    .pp-book.is-ready .pp-hero-actions .pp-stamp {
        width: clamp(9rem, 19vh, 12rem);
    }
}

/* Экономный лист: на тесном экране уходит то, без чего смысл не теряется. */
.pp-lean :is(.pp-intro, [data-decor]) {
    display: none !important;
}

.pp-lean .pp-photo img {
    max-height: 30svh;
}

.pp-lean .pp-portrait {
    width: min(100%, 12.5rem);
    margin-block: 0.25rem 1rem;
}

.pp-lean .pp-table {
    font-size: 0.88rem;
}

.pp-lean :is(h2, h3).pp-runhead [lang="en"],
.pp-lean .pp-table thead {
    display: none;
}

.pp-lean h3.pp-runhead {
    margin-top: 0.9rem;
}

.pp-lean h2.pp-runhead {
    margin-bottom: 0.6rem;
    padding-bottom: 0.35rem;
}

.pp-lean.pp-tight .pp-table td {
    padding-top: 0.2rem;
    padding-bottom: 0.2rem;
}

/* ---------- Телефон и планшет ---------- */

@media screen and (max-width: 980px) {
    :root {
        --pp-header: 64px;
        --pp-foot: 10px;
        --pp-flag-on: 12px;
        --pp-flag-out: 24px;
        --pp-flag-room: 20px;
    }

    /* Телефон: флажки идут столбиком вдоль правого края листа, подписи
       вдоль флажка. Последний — оранжевый «позвонить», под большим пальцем. */
    .pp-book.is-single .pp-flags {
        top: 0.9rem;
        bottom: 3.7rem;
        gap: 0.4rem;
    }

    .pp-book.is-single .pp-flag-list li {
        display: flex;
        flex: 0 1 4.4rem;
        flex-direction: column;
        align-items: flex-start;
        min-height: 2.6rem;
    }

    .redesign-page .pp-book.is-single .pp-flag {
        flex: 1 1 auto;
        height: auto;
    }

    .redesign-page .pp-book.is-single .pp-flag[aria-current] {
        --pull: 6px;
    }

    .pp-book.is-single .pp-flag-tip {
        justify-content: center;
        padding: 0.35rem 0 0.35rem var(--pp-rim);
    }

    /* Повёрнутую рукопись читать трудно — на телефоне подпись набрана. */
    .pp-book.is-single .pp-flag-label {
        font-family: var(--ds-font-body);
        font-size: clamp(0.72rem, 1.9svh, 0.82rem);
        font-weight: 700;
        letter-spacing: 0.02em;
        transform: rotate(180deg);
        writing-mode: vertical-rl;
    }

    .redesign-page .pp-book.is-single .pp-flag-call {
        display: flex;
        flex: none;
        height: 2.9rem;
        margin-top: auto;
    }

    :root {
        --pp-page-pad: 1.1rem 1.05rem 2.8rem;
    }

    .pp-page h1 {
        font-size: clamp(2rem, 9.5vw, 2.9rem);
    }

    .pp-page h2 {
        font-size: clamp(1.5rem, 7vw, 2.1rem);
    }

    .pp-fields-3 {
        grid-template-columns: 1fr;
    }

}

@media screen and (max-width: 480px) {
    /* На телефоне место на листе отдано самим отзывам. */
    .pp-reviews .pp-intro {
        display: none;
    }

    .pp-hero-actions {
        display: grid;
        grid-template-columns: auto minmax(0, 1fr);
        gap: 0.75rem;
    }

    .redesign-page a.pp-stamp {
        width: 9rem;
    }

    .redesign-page .pp-call-number {
        font-size: 1.05rem;
    }

    .redesign-page .pp-call-number-alt {
        font-size: 0.92rem;
    }

    .pp-fields-2 {
        grid-template-columns: 1fr;
    }

    .pp-table {
        font-size: 0.85rem;
    }

    /* Вид прививки уходит под наклейку, чтобы наклейка не ломалась на три строки. */
    .pp-table tr:has(td.pp-hand) {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        align-items: center;
        border-bottom: 1px solid var(--pp-rule);
    }

    .pp-table tr:has(td.pp-hand) td {
        border-bottom: 0;
    }

    .pp-table tr:has(td.pp-hand) td:first-child {
        padding-bottom: 0.1rem;
    }

    .pp-table td.pp-hand {
        grid-column: 1;
        grid-row: 2;
        padding-top: 0;
        font-size: 0.98rem;
    }

    .pp-table tr:has(td.pp-hand) td.pp-num {
        grid-column: 2;
        grid-row: 1 / span 2;
    }

    .pp-table thead tr:has(th:nth-child(3)) {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
    }

    .pp-table thead tr:has(th:nth-child(3)) th:nth-child(2) {
        display: none;
    }

    .pp-sticker {
        max-width: 100%;
    }
}

@media screen and (max-width: 380px) {
    .pp-hero-actions .pp-call {
        min-width: 0;
    }

    /* Узкий телефон: печать поменьше, телефоны рядом с ней. */
    .redesign-page .pp-hero-actions a.pp-stamp {
        width: 6.25rem;
    }

    .redesign-page .pp-call-number {
        font-size: 0.9rem;
        letter-spacing: -0.01em;
    }

    .redesign-page .pp-call-number-alt {
        font-size: 0.82rem;
    }

    /* Шапка на 320 px: кнопка «Записаться» не уходит за край. */
    .redesign-page .rd-header {
        gap: 8px;
        padding-inline: 10px;
    }

    .redesign-page .rd-brand {
        width: 104px;
    }

    body.redesign-page .rd-header-button {
        padding-inline: 10px;
        font-size: 0.8rem;
    }

    .redesign-page .rd-mobile-menu summary {
        min-width: 44px;
        padding-inline: 8px;
    }
}

/* Переход между разделами сайта — как перелистывание (где браузер умеет). */
@view-transition {
    navigation: auto;
}

::view-transition-old(root) {
    animation: pp-leave 360ms cubic-bezier(0.45, 0.05, 0.25, 1) both;
}

::view-transition-new(root) {
    animation: pp-enter 420ms var(--pp-ease) both;
}

@keyframes pp-leave {
    to {
        opacity: 0;
        transform: perspective(1600px) rotateY(-12deg) translateX(-4%);
    }
}

@keyframes pp-enter {
    from {
        opacity: 0;
        transform: perspective(1600px) rotateY(10deg) translateX(4%);
    }
}

/* Невысокие экраны: всё плотнее, чтобы лист помещался без прокрутки. */
@media screen and (max-height: 880px) {
    .pp-table td {
        padding-block: 0.32rem;
    }

    .pp-page .rp-price-row {
        padding-block: 0.32rem;
    }

    .pp-page :is(.svc-entry-card, .svc-direction-card, .svc-seealso-card, .rp-principles article) {
        padding-block: 0.55rem;
    }

    .pp-page :is(.svc-direction-card p, .rp-principles p, .svc-seealso-card, .rp-price-row dt) {
        font-size: 0.88rem;
    }

    .pp-page :is(.svc-lead, .rp-lead, .rp-heading-aside, .svc-heading-note, .pp-intro, .pp-lead) {
        font-size: 0.94rem;
        line-height: 1.45;
    }

    .pp-fields dd {
        font-size: 1.18rem;
    }

    .pp-sticker {
        padding-block: 0.28rem 0.22rem;
    }
}

@media screen and (min-width: 981px) and (max-height: 940px) {
    .redesign-page a.pp-stamp {
        width: 8.75rem;
    }

    .pp-photo img {
        aspect-ratio: 16 / 9;
    }

    .pp-portrait img {
        max-height: 36vh;
    }
}

/* Телефон с панелями браузера: видимая высота 550–700 px. */
@media screen and (max-width: 980px) and (max-height: 720px) {
    :root {
        --pp-page-pad: 0.85rem 1rem 2.1rem;
    }

    .pp-folio {
        bottom: 0.6rem;
    }

    .pp-page h1 {
        margin-bottom: 0.5rem;
        line-height: 1;
    }

    .pp-page h1 {
        font-size: clamp(1.75rem, 8vw, 2.2rem);
    }

    .pp-page h2 {
        font-size: clamp(1.35rem, 6vw, 1.7rem);
    }

    .pp-runhead {
        margin-bottom: 0.7rem;
    }

    .pp-lead {
        margin-bottom: 0.75rem;
        font-size: 0.93rem;
        line-height: 1.42;
    }

    /* Печать слева, телефоны справа, мессенджеры строкой ниже. */
    .pp-hero-actions .pp-contact-col {
        display: contents;
    }

    .pp-hero-actions .pp-write {
        grid-column: 1 / -1;
    }

    .redesign-page a.pp-stamp {
        width: 7.25rem;
    }

    .pp-hero-actions {
        gap: 0.5rem 0.75rem;
    }

    .pp-back-cover .rp-footer {
        gap: 0.6rem;
    }

    .pp-back-logo {
        width: min(55%, 12rem);
    }

    .redesign-page .pp-back-cover .rp-footer-layout {
        gap: 0.35rem;
        font-size: 0.85rem;
    }

    .redesign-page .pp-back-cover a,
    .redesign-page .pp-back-cover .rd-consent-settings {
        min-height: 40px;
    }
}

/* Самые маленькие экраны (iPhone SE): карта и задняя обложка компактнее. */
@media screen and (max-height: 600px) {
    .pp-map .rd-route-card-map-canvas {
        height: 150px;
    }

    .pp-back-logo {
        width: min(45%, 9rem);
    }

    .redesign-page .pp-back-cover .rp-footer-layout > div:first-child strong {
        display: none;
    }

    .redesign-page .pp-back-cover .rd-footer-note {
        font-size: 0.8rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .redesign-page .pp-stamp,
    .pp-flipper,
    .pp-corner,
    .redesign-page .pp-flag,
    .pp-book.is-ready .pp-spread {
        transition: none;
    }

    ::view-transition-old(root),
    ::view-transition-new(root) {
        animation: none;
    }

    .pp-page.is-fresh * {
        animation: none !important;
    }
}

/* ---------- Бланк: масштаб, разметка листа, листание краем ---------- */

/* Масштаб. Книжечка и всё на ней меняются вместе с окном, как документ
   в просмотрщике: основа шрифта — ширина разворота (на телефоне — листа),
   поэтому при сужении окна текст уменьшается вместе с листом и раскладка
   не разваливается. Мельче 14 px и крупнее 18 px текст не становится —
   дальше паспорт перекладывает страницы. Границы в rem: если в браузере
   выбран крупный шрифт, они растут вместе с ним. */
html.pp-js {
    --pp-spread-w: min(100vw - 208px, 1560px, (100svh - 120px) * 1.58);
    font-size: clamp(0.875rem, var(--pp-spread-w) / 68, 1.3rem);
}

@media screen and (max-width: 980px) {
    html.pp-js {
        --pp-spread-w: min(100vw - 44px, (100svh - 98px) * 0.8);
        font-size: clamp(0.875rem, var(--pp-spread-w) / 21.6, 1.125rem);
    }
}

:root {
    /* Линии бланка: типографская краска, а не карандаш. */
    --pp-form-line: rgba(0, 75, 145, 0.34);
    --pp-form-fill: rgba(0, 75, 145, 0.055);
}

/* Рамка бланка: тонкая линия по полю каждого листа. */
.pp-book.is-ready [data-book-page]:not([data-book-cover]):not([data-book-back]) {
    outline: 1px solid var(--pp-form-line);
    outline-offset: -0.7rem;
}

/* Заголовок листа набран как раздел бланка: прописные с разрядкой,
   перевод мелко справа, под строкой — двойная линейка. */
.pp-page :is(h2, h3).pp-runhead {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.15rem 1rem;
    padding-bottom: 0.7rem;
    border-bottom: 0;
    background:
        linear-gradient(var(--pp-ink), var(--pp-ink)) left bottom / 100% 2px no-repeat,
        linear-gradient(var(--pp-ink), var(--pp-ink)) left calc(100% - 4px) / 100% 1px no-repeat;
    font-size: clamp(1.1rem, min(1.55vw, 2.9vh), 1.4rem);
    font-weight: 700;
    letter-spacing: 0.06em;
    line-height: 1.15;
    text-transform: uppercase;
}

.pp-page h3.pp-runhead {
    padding-bottom: 0.45rem;
    background: linear-gradient(var(--pp-form-line), var(--pp-form-line)) left bottom / 100% 1px no-repeat;
    font-size: clamp(0.95rem, min(1.2vw, 2.3vh), 1.08rem);
}

.pp-page :is(h2, h3).pp-runhead [lang="en"] {
    margin: 0;
    color: var(--pp-muted);
    font-size: 0.66rem;
    font-weight: 600;
    letter-spacing: 0.14em;
}

/* Графы — клетки бланка: подпись мелкими прописными в углу клетки,
   запись под ней. */
.pp-book .pp-fields {
    gap: 0;
    border-top: 1px solid var(--pp-form-line);
    border-left: 1px solid var(--pp-form-line);
}

.pp-book .pp-fields > div {
    gap: 0.15rem;
    padding: 0.4rem 0.7rem 0.3rem;
    border-right: 1px solid var(--pp-form-line);
    border-bottom: 1px solid var(--pp-form-line);
}

.pp-book .pp-fields dt {
    color: var(--pp-muted);
    font-size: 0.64rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}

.pp-book .pp-fields dd {
    padding-block: 0 0.1rem;
}

/* Таблица цен — разграфлённая: клетки, серая шапка с прописными. */
.pp-book .pp-table {
    border: 1px solid var(--pp-form-line);
}

.pp-book .pp-table th {
    padding: 0.35rem 0.6rem;
    border-bottom: 1px solid var(--pp-form-line);
    background: var(--pp-form-fill);
    color: var(--pp-muted);
    font-size: 0.64rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    vertical-align: middle;
}

.pp-book .pp-table td {
    padding-inline: 0.6rem;
    border-bottom-color: var(--pp-form-line);
}

.pp-book .pp-table :is(td, th) + :is(td, th) {
    border-left: 1px solid var(--pp-form-line);
}

.pp-book .pp-table tr:last-child td {
    border-bottom: 0;
}

/* Подпись врача на листе прививок — росчерк над линией, без сокращений. */
.pp-sign-line svg.pp-sign-hand {
    display: block;
    width: 6.5rem;
    height: auto;
    margin: -1.7rem 0 0.15rem 0.4rem;
    color: var(--pp-pen-2);
    transform: rotate(-4deg);
}

.pp-sign-line {
    color: var(--pp-muted);
    font-size: 0.64rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.pp-notes-sign {
    font-size: 1.3rem;
    line-height: 1.25;
    transform: rotate(-2deg);
}

/* Номер страницы: «3», а на телефоне — «3 из 10». */
.pp-folio-of {
    display: none;
}

.pp-book.is-single .pp-folio {
    right: 50%;
    left: auto;
    transform: translateX(50%);
}

.pp-book.is-single .pp-folio-of {
    display: inline;
}

/* Обложка: кнопкой служит вся обложка. Край её чуть приподнимается —
   видно, что паспорт открывается. */
.pp-cover-open {
    position: absolute;
    inset: 0;
    z-index: 3;
    min-height: 0;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: inherit;
    background: transparent;
    cursor: pointer;
}

.pp-cover-open:hover {
    background: rgba(255, 255, 255, 0.05);
}

.pp-cover-open:focus-visible {
    outline: 3px solid var(--pp-accent);
    outline-offset: -10px;
}

.pp-book.is-ready.is-closed .pp-cover-page {
    transform-origin: left center;
    animation: pp-cover-peek 5.5s 1.4s ease-in-out 3;
}

.pp-book.is-ready.is-closed .pp-cover-page:hover {
    animation-play-state: paused;
}

@keyframes pp-cover-peek {
    0%, 76%, 100% {
        transform: none;
    }

    86% {
        transform: perspective(1600px) rotateY(-10deg);
    }
}

/* Листание краем. На развороте вся внешняя кромка листа — кнопка:
   щёлкнуть или потянуть к корешку. Стрелка видна всегда, при наведении
   кромка приподнимается. Загнутый уголок внизу остаётся. */
.pp-book.is-ready:not(.is-single) .pp-corner {
    top: var(--pp-rim);
    bottom: var(--pp-rim);
    width: 2.3rem;
    height: auto;
    border-radius: 0 var(--pp-radius) var(--pp-radius) 0;
    background: transparent;
    box-shadow: none;
    clip-path: none;
    transition: background-color 200ms ease;
}

.pp-book.is-ready:not(.is-single) .pp-corner-prev {
    border-radius: var(--pp-radius) 0 0 var(--pp-radius);
}

.pp-book.is-ready:not(.is-single) .pp-corner:hover,
.pp-book.is-ready:not(.is-single) .pp-corner:focus-visible {
    width: 2.3rem;
    height: auto;
}

.pp-book.is-ready:not(.is-single) .pp-corner-next:hover,
.pp-book.is-ready[data-drag="next"]:not(.is-single) .pp-corner-next {
    background: linear-gradient(270deg, rgba(23, 36, 61, 0.24), rgba(23, 36, 61, 0) 95%);
}

.pp-book.is-ready:not(.is-single) .pp-corner-prev:hover,
.pp-book.is-ready[data-drag="prev"]:not(.is-single) .pp-corner-prev {
    background: linear-gradient(90deg, rgba(23, 36, 61, 0.24), rgba(23, 36, 61, 0) 95%);
}

/* Стрелка посередине кромки. */
.pp-corner::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 0.7rem;
    height: 0.7rem;
    border-top: 2px solid var(--pp-cover);
    border-right: 2px solid var(--pp-cover);
    opacity: 0.55;
    transform: translate(-70%, -50%) rotate(45deg);
    transition: opacity 200ms ease, transform 200ms var(--pp-ease);
}

.pp-corner-prev::before {
    transform: translate(-30%, -50%) rotate(-135deg);
}

.pp-corner:hover::before,
.pp-corner:focus-visible::before,
.pp-book[data-drag="next"] .pp-corner-next::before,
.pp-book[data-drag="prev"] .pp-corner-prev::before {
    opacity: 1;
}

.pp-corner-next:hover::before {
    transform: translate(-40%, -50%) rotate(45deg);
}

.pp-corner-prev:hover::before {
    transform: translate(-60%, -50%) rotate(-135deg);
}

/* Загнутый уголок внизу кромки. */
.pp-book.is-ready .pp-corner::after {
    content: "";
    position: absolute;
    right: 0;
    bottom: 0;
    width: 2.3rem;
    height: 2.3rem;
    border-radius: 0 0 var(--pp-radius) 0;
    background: linear-gradient(135deg, transparent 50%, #cfc6b0 50.5%, #e6dfcd 56%, #efe9da 100%);
    box-shadow: -3px -3px 6px rgba(23, 36, 61, 0.16);
    clip-path: polygon(100% 0, 100% 100%, 0 100%);
    transition: width 220ms var(--pp-ease), height 220ms var(--pp-ease);
}

.pp-book.is-ready .pp-corner-prev::after {
    right: auto;
    left: 0;
    border-radius: 0 0 0 var(--pp-radius);
    background: linear-gradient(225deg, transparent 50%, #cfc6b0 50.5%, #e6dfcd 56%, #efe9da 100%);
    box-shadow: 3px -3px 6px rgba(23, 36, 61, 0.16);
    clip-path: polygon(0 0, 100% 100%, 0 100%);
}

.pp-book.is-ready.is-back .pp-corner-prev::after {
    background: linear-gradient(225deg, transparent 50%, #00305f 50.5%, var(--pp-cover) 62%, #1b5c9c 100%);
}

.pp-book.is-ready:not(.is-single) .pp-corner:hover::after,
.pp-book.is-ready[data-drag="next"]:not(.is-single) .pp-corner-next::after,
.pp-book.is-ready[data-drag="prev"]:not(.is-single) .pp-corner-prev::after {
    width: 3.6rem;
    height: 3.6rem;
}

.pp-book.is-ready.is-back:not(.is-single) .pp-corner-prev {
    background: transparent;
}

.pp-book.is-back .pp-corner-prev::before {
    border-color: var(--pp-white);
}

/* Телефон: уголки внизу листа, крупнее и со стрелкой. */
.pp-book.is-ready.is-single .pp-corner {
    width: 3.1rem;
    height: 3.1rem;
}

.pp-book.is-ready.is-single .pp-corner::before {
    top: 72%;
    left: 72%;
    width: 0.55rem;
    height: 0.55rem;
    opacity: 0.8;
}

.pp-book.is-ready.is-single .pp-corner-prev::before {
    left: 28%;
}

/* Подсказка при первом открытии: кромка дважды приподнимается. */
.pp-book.is-hint .pp-corner-next {
    animation: pp-edge-hint 1.5s ease-in-out 2;
}

.pp-book.is-hint .pp-corner-next::before {
    opacity: 1;
}

.pp-book.is-ready.is-hint:not(.is-single) .pp-corner-next::after {
    animation: pp-edge-curl 1.5s ease-in-out 2;
}

@keyframes pp-edge-hint {
    50% {
        background-color: rgba(23, 36, 61, 0.1);
    }
}

@keyframes pp-edge-curl {
    50% {
        width: 4rem;
        height: 4rem;
    }
}

.pp-book.is-ready .pp-page img {
    -webkit-user-drag: none;
}

@media (prefers-reduced-motion: reduce) {
    .pp-book.is-ready.is-closed .pp-cover-page,
    .pp-book.is-hint .pp-corner-next,
    .pp-book.is-hint .pp-corner-next::after {
        animation: none;
    }
}

/* Контакты и карта на одном листе: графы сверху, карта занимает
   всё оставшееся место, но не меньше 9 rem. */
.pp-book.is-ready .pp-visit .pp-map {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 9rem;
    margin-top: 1rem;
    transform: none;
}

.pp-book.is-ready .pp-visit .pp-map .rd-route-card-map-canvas {
    flex: 1 1 auto;
    height: auto;
    min-height: 8rem;
}

.pp-book.is-ready .pp-visit .pp-map-caption {
    margin: 0.35rem 0.15rem 0;
}

/* Набранные графы (адрес, график) — обычным размером текста, не крупнее. */
.pp-book .pp-visit .pp-fields dd {
    font-size: 1rem;
}

.pp-book.is-single .pp-visit .pp-map {
    min-height: 7.5rem;
    margin-top: 0.75rem;
}

.pp-book.is-single .pp-visit .pp-map .rd-route-card-map-canvas {
    min-height: 6rem;
}

/* Экономный лист: под заголовком остаётся место для двойной линейки. */
.pp-lean h2.pp-runhead {
    padding-bottom: 0.6rem;
}

/* ---------- Бланк, второй проход (по ревью 18.10) ---------- */

/* Заголовок листа набран Manrope: у Montserrat Alternates прописные «И»
   и «Ц» выглядят строчными («ПРuЁМ»). Двойная линейка — без микротекста. */
.pp-page :is(h2, h3).pp-runhead,
.pp-insert-sheet p.pp-runhead {
    font-family: var(--ds-font-body);
    font-weight: 800;
    letter-spacing: 0.07em;
    text-transform: uppercase;
}

.pp-page h2.pp-runhead {
    padding-bottom: 0.65rem;
    background:
        linear-gradient(var(--pp-ink), var(--pp-ink)) left bottom / 100% 2px no-repeat,
        linear-gradient(var(--pp-ink), var(--pp-ink)) left calc(100% - 4px) / 100% 1px no-repeat;
    font-size: 1.3rem;
}

.pp-page h3.pp-runhead {
    font-size: 1.02rem;
}

/* Мелкие подписи бланка: не мельче 11 px. */
.pp-page :is(h2, h3).pp-runhead [lang="en"],
.pp-book .pp-fields dt,
.pp-book .pp-table th,
.pp-sign-line {
    font-size: max(0.72rem, 11px);
}

/* На телефоне английский не показываем: экран узкий, а смысла он не несёт. */
.pp-book.is-single .pp-page :is(h2, h3).pp-runhead [lang="en"] {
    display: none;
}

/* Вложения: колонтитул тем же языком бланка. */
.pp-insert-sheet p.pp-runhead {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.15rem 1rem;
    padding-bottom: 0.5rem;
    border-bottom: 0;
    background:
        linear-gradient(var(--pp-ink), var(--pp-ink)) left bottom / 100% 2px no-repeat,
        linear-gradient(var(--pp-ink), var(--pp-ink)) left calc(100% - 4px) / 100% 1px no-repeat;
    font-size: 0.9rem;
}

.pp-insert-sheet p.pp-runhead [lang="en"] {
    font-family: var(--ds-font-body);
    font-size: max(0.7rem, 11px);
    font-weight: 600;
    letter-spacing: 0.14em;
}

/* Мессенджеры — сплошная тонкая рамка графы, а не пунктир «отрезать». */
.redesign-page .pp-ticket {
    border: 1px solid var(--pp-form-line);
    background: var(--pp-form-fill);
    transform: none !important;
}

.redesign-page .pp-ticket:hover {
    background: var(--pp-white);
}

/* Вакцинация: «первичная / ежегодная» — пометка врача под наклейкой. */
.pp-vac-kind {
    display: block;
    margin: 0.2rem 0 0 0.3rem;
    color: var(--pp-pen);
    font-family: var(--pp-font-hand);
    font-size: 1.05rem;
    line-height: 1.2;
    transform: rotate(-1deg);
}

.pp-help .pp-intro {
    margin-bottom: 0.9rem;
}

/* Печать заходит на линию подписи, как ставят настоящую. */
.pp-sign {
    gap: 0;
}

.pp-sign .pp-sign-line {
    margin-left: 0.9rem;
}

/* «Как мы работаем»: правила напечатаны, рукой — только подпись. */
.pp-book .pp-notes li,
.pp-book.is-ready .pp-notes li {
    color: var(--pp-ink);
    font-family: var(--ds-font-body);
    font-size: 1.05rem;
    font-weight: 500;
    line-height: 1.45;
}

.pp-book .pp-notes li.pp-note-key {
    padding-left: 0.75rem;
    box-shadow: inset 3px 0 0 var(--pp-accent);
    color: #8a2f12;
    font-weight: 700;
}

.pp-sign.pp-notes-sign {
    justify-content: flex-end;
    margin-top: 1.75rem;
    font-size: inherit;
    text-align: left;
    transform: none;
}

.pp-notes-sign .pp-sign-line {
    flex: 0 1 15rem;
    margin-left: 0;
    padding-left: 0;
}

/* Отзыв — графа бланка, а не веб-карточка. */
.pp-reviews .rd-review-card {
    border: 1px solid var(--pp-form-line);
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.pp-reviews .rd-review-card .pp-review-date {
    font-family: var(--ds-font-body);
    font-size: max(0.72rem, 11px);
    letter-spacing: 0.08em;
}

.pp-reviews .rd-review-card .pp-review-date::before {
    content: "Отзыв владельца";
    text-transform: uppercase;
}

/* Контакты: графы одного вида, номера телефонов без лишнего воздуха. */
.pp-book .pp-visit .pp-fields dd a[href^="tel:"] {
    padding-block: 0.2rem;
}

.pp-book .pp-visit .pp-fields dd br {
    display: block;
    content: "";
    margin-top: 0.15rem;
}

.pp-book.is-ready .pp-visit .pp-map {
    padding: 0;
    border-color: var(--pp-form-line);
    background: transparent;
}

.pp-book.is-ready .pp-visit .pp-map-caption {
    margin: 0.35rem 0.6rem 0.4rem;
}

/* Шаг «Приходите»: ссылка отдельной строкой под текстом шага. */
.pp-steps li > .pp-link {
    grid-column: 2;
    justify-self: start;
    margin: 0.4rem 0 0;
}

/* Телефон: кант книжки уже рамка — вторую не рисуем; низ листа свободен
   под «3 из 9», последняя ссылка не заезжает под номер. */
.pp-book.is-ready.is-single [data-book-page]:not([data-book-cover]):not([data-book-back]) {
    outline: 0;
}

.pp-book.is-single .pp-page-body {
    padding-bottom: 3.4rem;
}

/* Компьютер: номер страницы чуть выше линии рамки. */
.pp-book.is-ready:not(.is-single) .pp-folio {
    bottom: 1.2rem;
}

/* Обложка: постоянный загнутый уголок — знакомый знак «открой». */
.pp-cover-page::after {
    content: "";
    position: absolute;
    right: 0;
    bottom: 0;
    width: 2.6rem;
    height: 2.6rem;
    border-radius: 0 0 14px 0;
    background: linear-gradient(135deg, transparent 50%, #00305f 50.5%, #0b4d8c 60%, #1b5c9c 100%);
    box-shadow: -3px -3px 6px rgba(0, 12, 32, 0.3);
    clip-path: polygon(100% 0, 100% 100%, 0 100%);
    pointer-events: none;
    transition: width 220ms var(--pp-ease), height 220ms var(--pp-ease);
}

.pp-cover-page:has(.pp-cover-open:hover)::after {
    width: 3.6rem;
    height: 3.6rem;
}

/* Шапка сайта не мельчает вместе с книжкой: главная кнопка всегда читаема. */
html.pp-js .rd-header :is(.rd-main-nav a, .rd-phone, .rd-header-button, summary) {
    font-size: max(0.875rem, 14px);
}

/* ---------- Листание: правки по UX-ревью ---------- */

/* Свайп по листу, который прокручивается внутри: браузер отдаёт нам
   горизонтальное движение, а вертикальное и щипок оставляет себе. */
.pp-book.is-ready .pp-spread,
.pp-book.is-ready [data-book-page],
.pp-book.is-ready .pp-page-body {
    touch-action: pan-y pinch-zoom;
}

/* Кромка выше закладок: закладку нажимают за выступающую часть.
   Стрелка — у загнутого уголка, вместе они читаются как «листать». */
.pp-book.is-ready:not(.is-single) .pp-corner {
    z-index: 6;
}

.pp-book.is-ready:not(.is-single) .pp-corner::before {
    top: auto;
    bottom: 4.2rem;
}

/* Уголок идёт за рукой, пока кромку тянут мышью. */
.pp-book.is-ready[data-drag="next"]:not(.is-single) .pp-corner-next::after,
.pp-book.is-ready[data-drag="prev"]:not(.is-single) .pp-corner-prev::after {
    width: calc(2.3rem + var(--pp-drag, 0px) * 0.35);
    height: calc(2.3rem + var(--pp-drag, 0px) * 0.35);
    transition: none;
}

/* Телефон: нажимается весь квадрат уголка, рисуется только треугольник. */
.pp-book.is-ready.is-single .pp-corner {
    background: transparent;
    box-shadow: none;
    clip-path: none;
}

.pp-book.is-ready.is-single .pp-corner::after {
    width: 2.6rem;
    height: 2.6rem;
}

.pp-book.is-ready.is-single .pp-corner::before {
    z-index: 1;
}

/* Низкое окно ноутбука (1366×657 и т. п.): листу можно быть шире,
   тогда и текст крупнее. */
@media screen and (min-width: 981px) and (max-height: 720px) {
    html.pp-js {
        --pp-spread-w: min(100vw - 208px, 1560px, (100svh - 120px) * 1.8);
    }

    .pp-book.is-ready .pp-spread,
    .pp-book.is-ready .pp-tabs {
        width: min(100% - 2 * var(--pp-flag-room), 1560px, calc((100svh - var(--pp-header) - var(--pp-foot) - 40px) * 1.8));
    }
}

/* Планшет: один лист, но текст не прыгает вверх на пороге 980 px. */
@media screen and (min-width: 601px) and (max-width: 980px) {
    html.pp-js {
        font-size: clamp(0.875rem, var(--pp-spread-w) / 21.6, 1rem);
    }
}

/* Контраст мелких надписей — полными чернилами. */
.pp-sign-mp,
.pp-reviews .rd-review-card .pp-review-date {
    color: var(--pp-ink);
}

/* Кромка не шире поля листа: на текст она не заходит, и выделение текста
   у края не превращается в перелистывание. */
.pp-book.is-ready:not(.is-single) .pp-corner,
.pp-book.is-ready:not(.is-single) .pp-corner:hover,
.pp-book.is-ready:not(.is-single) .pp-corner:focus-visible {
    width: calc(clamp(1.1rem, 2.6vw, 2.4rem) - 0.45rem);
}

.pp-review-date span:last-child {
    color: var(--pp-ink);
}

/* Подпись на листе прививок — одной строкой, правее оттиска. */
.pp-help .pp-sign .pp-sign-line {
    max-width: 19rem;
    white-space: nowrap;
}

/* «Как мы работаем»: строки бланка просторнее, запись стоит на линейке. */
.pp-book.is-ready .pp-notes li {
    padding-block: clamp(0.6rem, 2.4vh, 1.15rem) clamp(0.45rem, 1.2vh, 0.7rem);
}

/* Отзыв на развороте виден почти целиком. */
.pp-book.is-ready:not(.is-single) .pp-reviews .rd-review-card .pp-review-text {
    max-height: calc(1.7rem * 12);
}

/* Телефон: «ниже есть ещё» — над номером страницы, а не поверх него. */
.pp-book.is-ready.is-single [data-book-page][data-more]::before {
    bottom: 2.6rem;
}

.pp-book.is-ready.is-single [data-book-page][data-more]::after {
    bottom: 2.2rem;
    height: 3rem;
}

.pp-sign.pp-notes-sign {
    color: var(--pp-muted);
    font-family: var(--ds-font-body);
}

/* ---------- Телефоны: исправления после проверки на iPhone 15 Pro Max ---------- */

/* Шрифт на телефоне не крупнее 16 px: вся раскладка листа рассчитана
   на него. Крупный телефон получает больше воздуха, а не больше буквы. */
@media screen and (max-width: 600px) {
    html.pp-js {
        font-size: clamp(0.875rem, var(--pp-spread-w) / 21.6, 1rem);
    }
}

/* Первая страница на телефоне: печать и телефоны в две колонки, которые
   не могут разъехаться, мессенджеры — строкой под ними во всю ширину. */
.pp-book.is-single .pp-hero-actions {
    display: grid;
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
    align-items: center;
    gap: 0.75rem 0.9rem;
}

.pp-book.is-single .pp-hero-actions .pp-contact-col {
    display: contents;
}

/* На высоком телефоне свободное место первой страницы делится поровну:
   над заголовком и под вводным текстом, а не одной дырой перед печатью. */
.pp-book.is-ready.is-single .pp-welcome > h1 {
    margin-top: auto;
}

.pp-book.is-single .pp-hero-actions .pp-call {
    min-width: 0;
}

.pp-book.is-single .pp-hero-actions .pp-write {
    grid-column: 1 / -1;
}

.redesign-page .pp-book.is-single .pp-hero-actions a.pp-stamp {
    width: min(100%, 8.5rem);
    justify-self: center;
}

.redesign-page .pp-book.is-single .pp-call-number {
    min-height: 40px;
    font-size: clamp(0.92rem, 4.4vw, 1.15rem);
}

.redesign-page .pp-book.is-single .pp-call-number-alt {
    font-size: clamp(0.85rem, 3.9vw, 1rem);
}

.pp-book.is-single .pp-write-links {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
    gap: 0.5rem;
}

.redesign-page .pp-book.is-single .pp-write-links .pp-ticket {
    justify-content: center;
    padding-inline: 0.4rem;
}

/* Заголовок первой страницы на телефоне — крупный, но не на пол-листа. */
.pp-book.is-single .pp-page h1 {
    max-width: none;
    font-size: clamp(1.7rem, 7.4vw, 2.3rem);
    line-height: 1.05;
}

/* Низ листа — полоса под номер страницы и уголки. Текст туда не заходит
   и не просвечивает: лист прокручивается выше неё. */
.pp-book.is-ready [data-book-page]:not([data-book-cover]):not([data-book-back]) > .pp-page-body {
    margin-bottom: 2.6rem;
    padding-bottom: 0.75rem;
}

.pp-book.is-single .pp-page-body {
    padding-bottom: 0.75rem;
}

.pp-book.is-ready [data-book-page][data-more]::after,
.pp-book.is-ready.is-single [data-book-page][data-more]::after {
    bottom: 2.6rem;
    height: 2.75rem;
    background: linear-gradient(180deg, rgba(248, 247, 242, 0), var(--pp-page) 85%);
}

.pp-book.is-ready [data-book-page][data-more]::before,
.pp-book.is-ready.is-single [data-book-page][data-more]::before {
    bottom: 2.85rem;
}

/* Ярлыки вложений никогда не шире книжки: сжимаются, а не уезжают. */
.pp-book.is-ready .pp-tabs {
    gap: 0.35rem;
    overflow: visible;
}

.redesign-page .pp-book.is-single .pp-tab {
    flex: 0 1 auto;
    min-width: 0;
    padding-inline: 0.65rem;
    overflow: hidden;
    font-size: clamp(0.72rem, 3.3vw, 0.82rem);
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Вопросы: «+» — отдельная колонка, на текст не заходит. */
:is(.pp-page, .pp-insert-sheet) .svc-faq-list summary .svc-faq-marker {
    position: static;
    flex: none;
    width: 1.5rem;
    text-align: center;
}

/* Рукопись — только короткие пометки, и она должна читаться:
   плотнее штрих, темнее чернила, не мельче 1.1rem. */
:root {
    --pp-pen: #003a73;
    --pp-pen-2: #1d3f84;
}

:is(.pp-fields-hand dd, .pp-table td.pp-hand, .pp-vac-kind, .pp-steps li, .pp-review-sign, .pp-signature-name, .pp-flag-label, .svc-factsheet-kicker, .svc-aside-kicker) {
    -webkit-text-stroke: 0.03em currentColor;
}

.pp-steps li h3,
.pp-steps li p,
.pp-steps li a {
    -webkit-text-stroke: 0;
}

.pp-vac-kind,
.pp-book .pp-table td.pp-hand {
    font-size: 1.12rem;
}

/* Связный текст во вложениях — набором, рукописью его не читают. */
:is(.pp-page, .pp-insert-sheet) :is(.svc-lead, .rp-lead, .rp-heading-aside, .svc-heading-note, .svc-hero-facts, .svc-hero-factsheet dd, .rp-contact-details dd, .svc-aside-text, .rp-facts span, .svc-faq-list details p) {
    color: var(--pp-ink);
    font-family: var(--ds-font-body);
    font-size: 1rem;
    line-height: 1.55;
    transform: none;
}

/* Телефон: закладки заходят на лист на 12 px — справа поле шире на столько же. */
.pp-book.is-single .pp-page-body {
    padding-right: calc(1.05rem + var(--pp-flag-on));
}

.pp-corner {
    -webkit-appearance: none;
    appearance: none;
}

/* Отзывы: стрелки по краям под отзывом, между ними — «все отзывы»,
   строкой ниже — «оставить отзыв». Ничего не валится в кучу. */
.pp-book .pp-review-bar {
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr) 44px;
    align-items: center;
    gap: 0.5rem 0.6rem;
    margin-top: 0.75rem;
}

.pp-book .pp-review-bar [data-review-previous] {
    grid-column: 1;
    grid-row: 1;
}

.pp-book .pp-review-bar [data-review-next] {
    grid-column: 3;
    grid-row: 1;
}

.pp-book .pp-review-bar .pp-link {
    grid-column: 2;
    justify-self: center;
    font-size: 0.92rem;
    text-align: center;
}

.pp-book .pp-review-bar .pp-link:nth-of-type(1) {
    grid-row: 1;
}

.pp-book .pp-review-bar .pp-link:nth-of-type(2) {
    grid-column: 1 / -1;
    grid-row: 2;
}

/* Раздел, ушедший на свой лист по шву, начинается как обычный лист. */
.pp-continued .pp-page-body > h3.pp-runhead:first-child {
    margin-top: 0;
    padding-bottom: 0.65rem;
    background:
        linear-gradient(var(--pp-ink), var(--pp-ink)) left bottom / 100% 2px no-repeat,
        linear-gradient(var(--pp-ink), var(--pp-ink)) left calc(100% - 4px) / 100% 1px no-repeat;
    font-size: 1.3rem;
}

/* На закрытом паспорте ярлыки стоят над обложкой, а не над пустым столом. */
.pp-book.is-ready .pp-tabs {
    transition: transform 820ms cubic-bezier(0.45, 0.05, 0.25, 1);
}

.pp-book.is-ready.is-closed:not(.is-single) .pp-tabs,
.pp-book.is-ready.is-back:not(.is-single) .pp-tabs {
    /* Задняя обложка тоже стоит по центру стола (разворот сдвинут на +25%),
       поэтому ярлыки встают над ней так же, как над передней. */
    transform: translateX(-75%);
}

.pp-book .pp-review-bar .pp-link:nth-of-type(1) {
    font-size: 0.86rem;
    white-space: nowrap;
}

/* ---------- Компьютер: правки по строгому аудиту ---------- */

/* Разворот держит пропорции паспорта: на высоком мониторе листы не
   вытягиваются в ленты, книжка стоит посередине стола. */
.pp-book.is-ready:not(.is-single) .pp-spread {
    flex: 0 1 auto;
    aspect-ratio: 1.58 / 1;
}

/* Ярлыки вложений видны целиком над кантом книжки. */
.pp-book.is-ready .pp-tabs {
    top: -40px;
}

/* Затемнение под вложением плотнее: паспорт не спорит с документом. */
.pp-scrim {
    background: rgba(0, 18, 42, 0.82);
    -webkit-backdrop-filter: blur(6px);
    backdrop-filter: blur(6px);
}

/* Вложение лежит ровно: наклон делал текст и линейки мутными и ступенчатыми. */
html.pp-js .pp-insert {
    transform: translateX(-50%);
}

:is(.pp-page, .pp-insert-sheet) .rp-route-card-map,
.pp-insert-sheet .pp-memo {
    transform: none;
}

/* Памятка без «сгиба» поперёк текста и без обломка скрепки. */
.pp-insert-sheet .pp-memo {
    background-image: var(--pp-fibers);
}

.pp-insert-sheet .pp-memo::before {
    display: none;
}

/* «Направления»: без пустой колонки слева. */
:is(.pp-page, .pp-insert-sheet) .svc-direction-card {
    grid-template-columns: minmax(0, 1fr);
}

:is(.pp-page, .pp-insert-sheet) .svc-direction-card :is(h3, p) {
    grid-column: 1;
}

/* Названия услуг в прайсе — чернилами, их ищут глазами. */
:is(.pp-page, .pp-insert-sheet) .rp-price-row dt {
    color: var(--pp-ink);
    font-size: 1rem;
    opacity: 1;
}

/* Заголовок вложения — документа, а не рекламного экрана. */
.pp-insert-sheet h1 {
    font-size: clamp(1.7rem, 3.2vw, 2.4rem);
    line-height: 1.1;
}

/* Мессенджеры одной строкой из трёх, телефон — строкой выше. */
.pp-book .pp-write-links {
    display: grid;
    grid-template-columns: repeat(3, max-content);
    gap: 0.5rem;
}

.pp-book .pp-step-actions {
    display: grid;
    grid-template-columns: repeat(3, max-content);
    gap: 0.5rem;
}

.pp-book .pp-step-actions .pp-ticket-call {
    grid-column: 1 / -1;
    justify-self: start;
}

.pp-book.is-single .pp-step-actions {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.redesign-page .pp-book.is-single .pp-step-actions .pp-ticket {
    justify-content: center;
    padding-inline: 0.4rem;
}

/* Наклейка вакцины: строки ровные, без одинокого «РАБИКС». */
.pp-sticker {
    text-wrap: balance;
}

/* Заголовок первой страницы на большом экране — не на полстраницы. */
@media screen and (min-width: 981px) {
    .pp-book.is-ready .pp-page h1 {
        font-size: clamp(2.2rem, min(3.4vw, 6vh), 3.3rem);
    }
}

/* Стрелка у кромки: кружок на бумаге, заметная, но спокойная. */
.pp-book.is-ready:not(.is-single) .pp-corner::before {
    width: 0.55rem;
    height: 0.55rem;
    opacity: 0.75;
}

.pp-book.is-ready:not(.is-single) .pp-corner::before {
    border-width: 2.5px;
    opacity: 0.85;
}

.pp-nowrap {
    white-space: nowrap;
}

/* Контакты на развороте: адрес и сообщения во всю ширину, график
   и телефоны — рядом. Карте остаётся место, лист не прокручивается. */
.pp-book.is-ready:not(.is-single) .pp-fields-contacts {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.pp-book.is-ready:not(.is-single) .pp-fields-contacts .pp-field-wide {
    grid-column: 1 / -1;
}

.pp-book.is-ready:not(.is-single) .pp-visit .pp-map {
    min-height: 7rem;
}

.pp-book.is-ready:not(.is-single) .pp-visit .pp-map .rd-route-card-map-canvas {
    min-height: 5.5rem;
}

/* Плашка о куки на компьютере — справа внизу, не на обложке. */
@media screen and (min-width: 981px) {
    html.pp-js body .rd-consent {
        right: 24px;
        left: auto;
        max-width: 26rem;
    }
}

/* Вложение «О враче»: факты отделены от следующего раздела. */
:is(.pp-page, .pp-insert-sheet) .rp-facts {
    margin-bottom: 2rem;
}

/* Наклейки ровнее: колонка вакцин не «пляшет». */
.pp-book .pp-table tr .pp-sticker {
    transform: rotate(-0.4deg);
}

.pp-book .pp-table tr:nth-child(even) .pp-sticker {
    transform: rotate(0.4deg);
}

/* Цены в двух таблицах одного листа стоят в одной колонке. */
.pp-book .pp-table td.pp-num,
.pp-book .pp-table th.pp-num {
    width: 7.5em;
}

/* Карта во вложении: рамка ровная, карта заполняет её целиком. */
:is(.pp-page, .pp-insert-sheet) .rp-route-card-map {
    overflow: hidden;
}

/* ---------- Телефоны: правки по строгому аудиту ---------- */

/* Ссылка со стрелкой: стрелка идёт за последним словом, а не отрывается
   к правому краю, когда подпись переносится. */
.redesign-page .pp-link {
    display: inline-block;
    padding-block: 0.6rem;
    line-height: 1.35;
}

.redesign-page .pp-link::after {
    display: inline-block;
    margin-left: 0.4rem;
    vertical-align: 0.08em;
}

/* Самые узкие телефоны (iPhone SE, 320 px): текст на ступень мельче,
   печать-дубль кнопки «Записаться» не показываем — телефонам нужна вся ширина. */
@media screen and (max-width: 340px) {
    html.pp-js {
        font-size: 13px;
    }

    .redesign-page .pp-book.is-single .pp-hero-actions a.pp-stamp {
        display: none;
    }

    .pp-book.is-single .pp-hero-actions {
        grid-template-columns: minmax(0, 1fr);
    }

    .redesign-page .pp-book.is-single .pp-call-number {
        font-size: 1.15rem;
    }
}

/* Отзывы на узком экране: стрелки по краям, ссылки — строками под ними. */
@media screen and (max-width: 380px) {
    .pp-book .pp-review-bar .pp-link:nth-of-type(1) {
        grid-row: 2;
        grid-column: 1 / -1;
        white-space: normal;
    }

    .pp-book .pp-review-bar .pp-link:nth-of-type(2) {
        grid-row: 3;
    }

    .pp-book .pp-review-bar::before {
        content: "листать отзывы";
        grid-column: 2;
        grid-row: 1;
        justify-self: center;
        color: var(--pp-muted);
        font-size: 0.8rem;
    }
}

/* Шапка вложения на узком экране: только имя документа и крестик. */
.pp-insert-name {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

@media screen and (max-width: 420px) {
    .pp-insert-close span {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip-path: inset(50%);
        white-space: nowrap;
    }
}

/* «Продолжение» — отдельной мелкой строкой, без висящей точки. */
.pp-runhead-cont > span:first-child::after {
    content: "продолжение";
    display: block;
    margin-top: 0.15rem;
    font-size: 0.7rem;
    letter-spacing: 0.1em;
}

/* Отклеившийся уголок наклейки не срезает последнюю букву. */
.pp-table tr:nth-child(4) .pp-sticker {
    padding-right: 1.1rem;
}

/* Таблицы во вложениях: текст не прилипает к рамке. */
.pp-insert-sheet table :is(td, th):first-child {
    padding-left: 0.75rem;
}

/* Таблицы на телефоне плотнее: раздел цен помещается на свой лист. */
.pp-book.is-single [data-book-page]:not(.pp-tight) .pp-table td {
    padding-block: 0.4rem;
}

/* Контакты на развороте: каждая графа во всю ширину, телефоны в строку. */
.pp-book.is-ready:not(.is-single) .pp-fields-contacts {
    grid-template-columns: minmax(0, 1fr);
}

.pp-book.is-ready:not(.is-single) .pp-fields-contacts dd br {
    display: none;
}

.pp-book.is-ready:not(.is-single) .pp-fields-contacts dd a[href^="tel:"] {
    margin-right: 1.4rem;
}

/* ---------- Правки по аудиту iPhone 13 / Android / iPad ---------- */

/* Отзывы на любом телефоне: стрелки строкой по краям, ссылки — ниже. */
.pp-book.is-single .pp-review-bar .pp-link:nth-of-type(1) {
    grid-row: 2;
    grid-column: 1 / -1;
    white-space: normal;
}

.pp-book.is-single .pp-review-bar .pp-link:nth-of-type(2) {
    grid-row: 3;
}

.pp-book.is-single .pp-review-bar::before {
    content: "листать отзывы";
    grid-column: 2;
    grid-row: 1;
    justify-self: center;
    color: var(--pp-muted);
    font-size: 0.8rem;
}

/* Номер на первой странице с запасом до закладок. */
.redesign-page .pp-book.is-single .pp-call-number {
    font-size: clamp(0.9rem, 4.1vw, 1.1rem);
}

/* Планшет: лист большой — и текст крупнее, чтобы лист был заполнен. */
@media screen and (min-width: 601px) and (max-width: 980px) {
    html.pp-js {
        font-size: clamp(0.875rem, var(--pp-spread-w) / 38, 1.25rem);
    }
}

/* Обложка: содержимое по центру по высоте, а не прижато к верху. */
.pp-book.is-ready .pp-cover-page {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.pp-book.is-ready .pp-cover-face {
    margin-top: 0;
}

/* Задняя обложка на телефоне: меню сеткой 2×2, без одинокого пункта. */
.redesign-page .pp-book.is-single .pp-back-cover nav {
    display: grid;
    grid-template-columns: repeat(2, max-content);
    justify-content: center;
    gap: 0.25rem 1.4rem;
}

/* Вложение на телефоне: часы и «по записи» строками, без висящей точки. */
@media screen and (max-width: 600px) {
    .pp-insert-sheet .svc-hero-facts {
        display: grid;
        gap: 0.2rem;
    }

    .pp-insert-sheet .svc-hero-facts span[aria-hidden] {
        display: none;
    }
}

/* Факты о враче — чернилами, не похоже на ссылку. */
:is(.pp-page, .pp-insert-sheet) .rp-facts span {
    color: var(--pp-ink);
}

/* Первая страница в любом режиме: печать | телефоны, мессенджеры строкой
   во всю ширину под ними — на узком развороте ничего не вылезает. */
.pp-book .pp-hero-actions {
    grid-template-columns: auto minmax(0, 1fr);
}

.pp-book .pp-hero-actions .pp-contact-col {
    display: contents;
}

.pp-book .pp-hero-actions .pp-write {
    grid-column: 1 / -1;
}

.pp-book .pp-hero-actions .pp-write-links {
    grid-template-columns: repeat(3, minmax(0, max-content));
}

.redesign-page .pp-book .pp-hero-actions .pp-call-number {
    white-space: nowrap;
}

/* Таблицы на телефоне: строки как раньше, плотные. */
.pp-book.is-single [data-book-page]:not(.pp-tight) .pp-table td {
    padding-block: 0.32rem;
}

/* Печать «М.П.» не выходит за край листа. */
.pp-help .pp-sign {
    padding-left: 0.9rem;
}

.pp-book.is-single .pp-hero-actions .pp-write-links {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

/* Телефон: «Вакцинация», «Как записаться» и «Контакты» помещаются на лист. */
.pp-book.is-single .pp-vac-kind {
    margin-top: 0.1rem;
    font-size: 1.02rem;
    line-height: 1.1;
}

.pp-book.is-ready.is-single .pp-steps {
    gap: 0.75rem;
}

.pp-book.is-single .pp-steps li {
    padding-top: 0.55rem;
}

.pp-book.is-single .pp-steps li::before {
    font-size: 2rem;
}

.pp-book.is-single .pp-steps li > .pp-link {
    margin-top: 0;
    padding-block: 0.35rem;
}

.pp-book.is-single .pp-fields-contacts > div {
    padding-block: 0.3rem 0.2rem;
}

.redesign-page .pp-book.is-single .pp-fields-contacts dd a {
    min-height: 36px;
    padding-block: 0.3rem;
}

.pp-book.is-single .pp-visit .pp-map {
    min-height: 6.5rem;
    margin-top: 0.6rem;
}

.pp-book.is-single .pp-visit .pp-map .rd-route-card-map-canvas {
    min-height: 5rem;
}

/* Телефон: колонка цены по содержимому — наклейкам вакцин нужна ширина. */
.pp-book.is-single .pp-table td.pp-num,
.pp-book.is-single .pp-table th.pp-num {
    width: auto;
}

/* Телефон, шаг 1: кнопки во всю ширину листа, под номером шага. */
.pp-book.is-single .pp-steps li .pp-step-actions {
    grid-column: 1 / -1;
}

.pp-book.is-single .pp-visit .pp-map {
    min-height: 5.75rem;
}

.pp-book.is-single .pp-visit .pp-map .rd-route-card-map-canvas {
    min-height: 4.25rem;
}

/* Телефон, «Как записаться»: узкая колонка номера, заголовки шагов
   по размеру текста — три шага помещаются на лист. */
.pp-book.is-single .pp-steps li {
    grid-template-columns: 1.9rem minmax(0, 1fr);
    gap: 0.1rem 0.5rem;
}

.pp-book.is-single .pp-steps li:first-child {
    padding-top: 0;
    border-top: 0;
}

.pp-book.is-single .pp-steps li::before {
    font-size: 1.7rem;
}

.pp-book.is-single .pp-page .pp-steps h3 {
    font-size: 1.02rem;
    line-height: 1.3;
}

.pp-book.is-single .pp-steps p {
    font-size: 0.95rem;
    line-height: 1.45;
}

/* Контакты на телефоне: ссылка маршрута не наезжает на кнопки карты. */
.pp-book.is-single .pp-visit .pp-map-caption {
    position: relative;
    z-index: 401;
}

.pp-book.is-single .pp-fields-contacts > div {
    padding-block: 0.25rem 0.15rem;
}

/* iPhone SE: без мини-карты — адрес и так ссылка на 2ГИС, рядом
   «Построить маршрут». Низ листа чуть плотнее. */
@media screen and (max-width: 340px) {
    .pp-book.is-single .pp-visit .pp-map {
        min-height: 0;
        flex: none;
        border: 0;
    }

    .pp-book.is-single .pp-visit .pp-map .rd-route-card-map-canvas {
        display: none;
    }

    .pp-book.is-single .pp-visit .pp-map-caption {
        margin-inline: 0;
    }

    .pp-book.is-ready.is-single [data-book-page]:not([data-book-cover]):not([data-book-back]) > .pp-page-body {
        padding-bottom: 0.3rem;
    }
}

/* Узкий разворот (окно 1024×700): шаги и карта ужимаются раньше прокрутки. */
.pp-book.is-ready:not(.is-single) .pp-steps {
    gap: clamp(0.9rem, 3vh, 2.5rem);
}

.pp-book.is-ready:not(.is-single) .pp-visit .pp-map {
    min-height: 5.5rem;
}

.pp-book.is-ready:not(.is-single) .pp-visit .pp-map .rd-route-card-map-canvas {
    min-height: 4rem;
}

.pp-book .pp-fields-contacts > div {
    padding-block: 0.25rem 0.15rem;
}

.redesign-page .pp-book .pp-fields-contacts dd a {
    min-height: 34px;
    padding-block: 0.25rem;
}

/* ---------- Второй круг аудита ---------- */

/* Мягкая экономия: без вступления, печать и подпись на месте. */
.pp-lean-soft .pp-intro {
    display: none !important;
}

/* Английский и шапка таблицы видны всегда: соседние листы одинаковы. */
.pp-book:not(.is-single) .pp-lean :is(h2, h3).pp-runhead [lang="en"] {
    display: inline;
}

.pp-book:not(.is-single) .pp-lean .pp-table thead {
    display: table-header-group;
}

/* Рукописная графа не вылезает из клетки: строки делятся ровно. */
.pp-fields-hand dd {
    overflow-wrap: anywhere;
    text-wrap: balance;
}

/* Подсказка листания на телефоне: только приподнятый уголок, без серого квадрата. */
.pp-book.is-single.is-hint .pp-corner-next {
    animation: none;
}

.pp-book.is-ready.is-single.is-hint .pp-corner-next::after {
    animation: pp-edge-curl-sm 1.5s ease-in-out 2;
}

@keyframes pp-edge-curl-sm {
    50% {
        width: 3.4rem;
        height: 3.4rem;
    }
}

/* Активная закладка на телефоне не упирается в край экрана. */
.redesign-page .pp-book.is-single .pp-flag[aria-current] {
    --pull: 2px;
}

/* Плашка о куки: не шире свободного стола, на телефоне — левее закладок, непрозрачная. */
@media screen and (min-width: 981px) {
    html.pp-js body .rd-consent {
        max-width: max(15rem, min(24rem, calc(50vw - 17rem)));
    }
}

@media screen and (max-width: 980px) {
    html.pp-js body .rd-consent {
        right: calc(var(--pp-flag-room) + 18px);
        background: var(--pp-page);
    }
}

/* Задняя обложка на широком развороте: всё в одну колонку по центру. */
.redesign-page .pp-back-cover .rp-footer-contact {
    flex-direction: column;
    align-items: center;
}

/* Закладки на ноутбуке не жмутся к краю экрана. */
@media screen and (min-width: 981px) and (max-width: 1300px) {
    :root {
        --pp-flag-out: 4rem;
        --pp-flag-room: 4.9rem;
    }
}

/* Затемнение под вложением ещё плотнее. */
.pp-scrim {
    background: rgba(0, 18, 42, 0.88);
}

/* Вложения: мессенджеры одной строкой из трёх, номера без сдвига. */
.pp-insert-sheet .svc-contact-messengers {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.4rem;
}

.pp-insert-sheet .svc-contact-phone {
    padding-left: 0;
}

.pp-insert-sheet .svc-price-note a {
    display: inline;
    padding: 0;
}

@media screen and (max-width: 420px) {
    .pp-insert-sheet p.pp-runhead [lang="en"] {
        display: none;
    }

    .redesign-page .pp-book.is-single .pp-hero-actions .pp-write-links .pp-ticket {
        font-size: 0.82rem;
        padding-inline: 0.25rem;
    }
}

:is(.pp-page, .pp-insert-sheet) .rp-facts span:nth-child(n) {
    color: var(--pp-ink);
}

/* Планшет: крупнее текст — лист заполнен. */
@media screen and (min-width: 601px) and (max-width: 980px) {
    html.pp-js {
        font-size: clamp(0.875rem, var(--pp-spread-w) / 34, 1.375rem);
    }
}

/* Экономный лист: ссылки под таблицей плотнее — «Приём» и «Хирургия»
   на высоком телефоне помещаются на один лист. */
.pp-lean .pp-links {
    display: flex;
    flex-wrap: wrap;
    gap: 0 1.25rem;
}

.redesign-page .pp-lean .pp-links .pp-link {
    padding-block: 0.3rem;
}

.pp-lean .pp-page-body > .pp-table {
    margin-bottom: 0.6rem;
}

.redesign-page .pp-back-cover .rp-footer-contact :is(.rd-footer-note, .rd-consent-settings) {
    flex-basis: auto;
}

/* Узкое окно компьютера (около 1024 px): разворот маленький, текст на
   ступень мельче, чтобы разделы не разбегались по листам. */
@media screen and (min-width: 981px) and (max-width: 1100px) {
    html.pp-js {
        font-size: clamp(0.8125rem, var(--pp-spread-w) / 68, 1.3rem);
    }
}

/* ---------- Печать не «прыгает» ---------- */

/* Оттиск одинаковый всегда: без маски-текстуры и фильтров. Раньше в копии
   листа на время переворота их приходилось выключать (Safari), и после
   переворота печать менялась на глазах. */
.redesign-page .pp-stamp .pp-stamp-ring,
.pp-flip-face .pp-stamp .pp-stamp-ring {
    opacity: 0.86;
    filter: none;
    -webkit-mask-image: none;
    mask-image: none;
}

/* Без «удара» при первом показе листа и без сжатия при нажатии. */
.pp-page.is-fresh .pp-stamp .pp-stamp-ring {
    animation: none;
}

.redesign-page a.pp-stamp:active {
    transform: rotate(var(--tilt));
}

.redesign-page .pp-stamp {
    -webkit-tap-highlight-color: transparent;
}

/* ---------- Блок записи: один номер-кнопка, мессенджеры строкой, второй номер ссылкой ---------- */

:is(.pp-page, .pp-insert-sheet) .svc-contact-grid {
    display: grid;
    gap: 0.6rem;
    max-width: 30rem;
    margin-top: 0.75rem;
}

:is(.pp-page, .pp-insert-sheet) .svc-contact-card {
    display: grid;
    gap: 0.5rem;
    padding: 0;
    border: 0;
    background: none;
    box-shadow: none;
}

.redesign-page :is(.pp-page, .pp-insert-sheet) [data-contact-channel="federal"] .svc-contact-phone {
    display: flex;
    width: 100%;
    min-height: 52px;
    justify-content: center;
    font-size: 1.2rem;
    font-variant-numeric: tabular-nums;
}

.redesign-page :is(.pp-page, .pp-insert-sheet) .svc-contact-messengers {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.5rem;
}

.redesign-page :is(.pp-page, .pp-insert-sheet) .svc-messenger-link {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    justify-content: center;
    padding: 0 0.4rem;
    border: 1px solid var(--pp-form-line);
    border-radius: var(--pp-radius);
    background: var(--pp-form-fill);
    color: var(--pp-cover);
    font-family: var(--ds-font-display);
    font-size: 0.92rem;
    font-weight: 600;
    text-decoration: none;
}

.redesign-page :is(.pp-page, .pp-insert-sheet) [data-contact-channel="city"] .svc-contact-phone {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    padding: 0;
    border: 0;
    background: none;
    color: var(--pp-ink);
    font-size: 1rem;
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: 4px;
}

.redesign-page :is(.pp-page, .pp-insert-sheet) [data-contact-channel="city"] .svc-contact-phone::before {
    content: "или позвоните";
    display: inline-block;
    margin-right: 0.45rem;
    color: var(--pp-muted);
    font-family: var(--ds-font-body);
    font-weight: 400;
    text-decoration: none;
}

:is(.pp-page, .pp-insert-sheet) :is(.svc-booking-note, .svc-booking-address) {
    margin: 0.5rem 0 0;
    color: var(--pp-ink);
}

:is(.pp-page, .pp-insert-sheet) .svc-booking-address {
    margin-top: 0.9rem;
    color: var(--pp-muted);
    font-size: 0.92rem;
}

/* Дата прайса под таблицами цен в паспорте. */
.pp-price-date {
    margin: 0.4rem 0 0.2rem;
    color: var(--pp-muted);
    font-size: max(0.8rem, 11px);
}

/* Лист «Вакцинация и приём»: раздел вакцинации не растягивается на весь лист. */
.pp-book.is-ready .pp-page-body > section.pp-help {
    flex: 0 0 auto;
}

.pp-book.is-single .pp-help .pp-sign .pp-sign-line {
    white-space: normal;
}

/* Лист «Вакцинация и приём» на развороте: печать компактнее, второй
   раздел ближе — помещается целиком, печать с подписью не прячется. */
.pp-help .pp-sign .pp-sign-mp {
    width: 3.5rem;
}

.pp-book.is-ready .pp-page-body > h3.pp-runhead-inner {
    margin-top: 1rem;
}

.pp-book.is-ready .pp-help .pp-sign {
    margin-bottom: 0.6rem;
}

.redesign-page :is(.pp-page, .pp-insert-sheet) [data-contact-channel="city"] .svc-contact-phone {
    display: inline-block;
    line-height: 44px;
}

/* «Талон на приём»: мессенджеры — короткие кнопки без повторяющегося «Написать». */
.pp-insert-sheet .rp-contact-actions a.rp-contact-action > span {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
}

.pp-insert-sheet .rp-contact-actions a.rp-contact-action {
    position: relative;
    justify-content: center;
    align-items: center;
    min-height: 48px;
    text-align: center;
}

/* Карта во вложении: высота задана сильнее, чем «100 %» из стилей вложений.
   При переходе внутри сайта эти стили подгружаются позже паспорта и иначе
   перебивали высоту — карта схлопывалась в ноль и оставалась пустой. */
:is(.pp-page, .pp-insert-sheet) .rp-route-card-map .rp-route-card-map-canvas {
    position: relative;
    inset: auto;
    height: clamp(220px, 38vh, 380px);
}

/* Рамка карты во вложении по высоте карты: без пустой полосы сверху. */
:is(.pp-page, .pp-insert-sheet) .rp-route-card.rp-route-card-map {
    min-height: 0;
    align-content: start;
}
