/*
 * Раздел «Статьи» (/stati/), 25.10.2026: журнальный шаблон статьи и список статей.
 * Подключается только во видах stati/* (после AppAsset); все классы — с префиксом st-.
 * Цвета и шрифт — сайта: тёмно-красный #8f1416, кремовый фон страниц #fefcdd, Roboto из style.css.
 * Разметку текста (st-cover, st-lead, st-facts, st-note, st-figure, st-route, st-cruises, st-faq) пишут авторы статей;
 * обложку, оглавление, таблицы и блок круизов готовит frontend/components/StatiRenderer.php.
 */

.st-page,
.st-order {
    --st-red: #8f1416;
    --st-red-dark: #6f0f11;
    --st-red-soft: #f8e7e2;
    --st-ink: #231f1a;
    --st-text: #2b2722;
    --st-muted: #5c5446;
    --st-line: #e4dcb9;
    --st-line-strong: #cfc398;
    --st-paper: #fff;
    --st-cream: #fefcdd;
    --st-tint: #f8f2d4;
    --st-radius: 8px;
    --st-shadow: 0 12px 28px -16px rgba(74, 32, 18, .45);
    --st-ease: cubic-bezier(.16, 1, .3, 1);
}

/* ---------- Рамка страницы ---------- */

.page.st-page {
    padding-top: 28px;
    padding-bottom: 72px;
    color: var(--st-text);
}

/* .wrap — поля 30px (20px до 991px); ширина раздела — колонка текста и правая колонка */
.st-wrap {
    max-width: 1096px;
}

.st-page ::selection,
.st-order ::selection {
    background: rgba(143, 20, 22, .2);
    color: var(--st-ink);
}

/* в upd/scss/style.css у сайта «body :focus { outline: none !important }» — возвращаем видимый фокус клавиатуры */
.st-page :is(a, button, summary, [tabindex]):focus-visible,
.st-order :is(a, button, [type=checkbox]):focus-visible {
    outline: 2px solid var(--st-red) !important;
    outline-offset: 2px;
}

.st-title {
    margin: 0 0 12px;
    font-size: 26px;
    line-height: 1.22;
    font-weight: 700;
    letter-spacing: -.005em;
    text-transform: none;
    color: var(--st-red);
    text-wrap: balance;
}

.st-title--index {
    margin-bottom: 28px;
}

@media (min-width: 600px) {
    .st-title {
        font-size: 32px;
    }
}

/* ---------- Статья: колонка текста и правая колонка ---------- */

.st-article {
    max-width: 740px;
    margin: 0 auto;
}

.st-head {
    margin: 0 0 22px;
}

.st-meta {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    font-size: 15px;
    line-height: 1.4;
    color: var(--st-muted);
}

.st-meta__icon {
    flex: none;
    color: var(--st-red);
}

.st-aside {
    display: none;
}

.st-end {
    max-width: 560px;
    margin-top: 44px;
}

@media (min-width: 1100px) {
    .st-article {
        display: grid;
        grid-template-columns: minmax(0, 1fr) 300px;
        grid-template-areas:
            "head  aside"
            "cover aside"
            "main  aside";
        column-gap: 56px;
        align-items: start;
        max-width: none;
    }

    .st-head {
        grid-area: head;
    }

    .st-article > .st-cover {
        grid-area: cover;
    }

    .st-main {
        grid-area: main;
    }

    .st-aside {
        display: block;
        grid-area: aside;
        align-self: stretch;
    }

    .st-end,
    .st-toc--inline {
        display: none;
    }

    .st-title {
        font-size: 36px;
    }
}

/* правая колонка: оглавление и «Подберём круиз» едут вместе со страницей */
.st-aside__inner {
    position: sticky;
    top: 24px;
    display: flex;
    flex-direction: column;
    gap: 22px;
    max-height: calc(100vh - 48px);
    overflow-y: auto;
    padding: 4px;
    margin: -4px;
    scrollbar-width: thin;
    scrollbar-color: var(--st-line-strong) transparent;
}

/* ---------- Обложка и фото ---------- */

.st-cover,
.st-figure,
.st-body figure {
    margin: 32px 0;
}

.st-article > .st-cover {
    margin: 0 0 32px;
}

.st-cover img,
.st-body figure img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: var(--st-radius);
    background: #ece3bd;
}

.st-cover img {
    aspect-ratio: 16 / 9;
    object-fit: cover;
}

.st-cover figcaption,
.st-body figcaption {
    margin-top: 10px;
    font-size: 15px;
    line-height: 1.5;
    color: var(--st-muted);
}

.st-credit {
    display: block;
    margin-top: 2px;
    font-size: 13px;
    line-height: 1.45;
    color: var(--st-muted);
}

.st-cover figcaption a,
.st-body figcaption a:not([class]) {
    color: inherit;
    text-decoration: underline;
    text-decoration-color: currentColor;
    text-decoration-thickness: 1px;
    text-underline-offset: 2px;
}

.st-cover figcaption a:hover,
.st-body figcaption a:not([class]):hover {
    color: var(--st-red);
}

/* на телефоне обложка — во всю ширину экрана */
@media (max-width: 599px) {
    .st-article > .st-cover {
        margin-left: -20px;
        margin-right: -20px;
    }

    .st-article > .st-cover img {
        border-radius: 0;
    }

    .st-article > .st-cover figcaption {
        padding: 0 20px;
    }
}

/* ---------- Текст ---------- */

.st-body {
    font-size: 17px;
    line-height: 1.65;
    color: var(--st-text);
    overflow-wrap: break-word;
}

@media (min-width: 600px) {
    .st-body {
        font-size: 18px;
    }
}

.st-body > :first-child {
    margin-top: 0;
}

.st-body p:not([class]) {
    margin: 0 0 1em;
    text-wrap: pretty;
}

.st-body .st-lead {
    margin: 0 0 28px;
    font-size: 20px;
    line-height: 1.55;
    color: var(--st-ink);
    text-wrap: pretty;
}

@media (min-width: 600px) {
    .st-body .st-lead {
        font-size: 21px;
    }
}

.st-body h2:not([class]),
.st-page .st-cruises__title {
    margin: 2em 0 .6em;
    padding-top: .9em;
    border-top: 1px solid var(--st-line);
    font-size: 24px;
    line-height: 1.25;
    font-weight: 700;
    color: var(--st-ink);
    text-wrap: balance;
    scroll-margin-top: 16px;
}

.st-body h3:not([class]) {
    margin: 1.6em 0 .5em;
    font-size: 20px;
    line-height: 1.3;
    font-weight: 700;
    color: var(--st-ink);
    text-wrap: balance;
}

@media (min-width: 600px) {
    .st-body h2:not([class]),
    .st-page .st-cruises__title {
        font-size: 28px;
    }

    .st-body h3:not([class]) {
        font-size: 21px;
    }
}

.st-body a:not([class]) {
    color: var(--st-red);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-decoration-color: rgba(143, 20, 22, .45);
    text-underline-offset: .2em;
    transition: text-decoration-color .2s, color .2s;
}

.st-body a:not([class]):hover {
    color: var(--st-red-dark);
    text-decoration-color: currentColor;
}

/* списки: стили сайта убирают маркеры у ul — в тексте статьи возвращаем */
.st-body ul:not([class]),
.st-body ol:not([class]) {
    margin: 0 0 1.1em;
    padding-left: 1.4em;
}

.st-body ul:not([class]) {
    list-style: disc;
}

.st-body ol:not([class]) {
    list-style: decimal;
}

.st-body ul:not([class]) > li,
.st-body ol:not([class]) > li {
    margin: 0 0 .45em;
    padding-left: .25em;
}

.st-body ul:not([class]) > li::marker,
.st-body ol:not([class]) > li::marker {
    color: var(--st-red);
}

.st-body ol:not([class]) > li::marker {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.st-body img {
    max-width: 100%;
    height: auto;
}

/* ---------- Факты: сезон, длительность, откуда… ---------- */

.st-body .st-facts {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    margin: 0 0 36px;
    padding: 0;
    overflow: hidden;
    background: var(--st-paper);
    border: 1px solid var(--st-line);
    border-radius: var(--st-radius);
}

/* линии между ячейками при любом числе колонок: тень слева и сверху, у края её срезает рамка */
.st-facts > div {
    padding: 14px 18px 16px;
    box-shadow: -1px -1px 0 var(--st-line);
}

.st-facts dt {
    margin: 0 0 4px;
    font-size: 14px;
    line-height: 1.35;
    color: var(--st-muted);
}

.st-facts dd {
    margin: 0;
    font-size: 17px;
    line-height: 1.35;
    font-weight: 700;
    color: var(--st-ink);
}

/* ---------- Врезки «Совет» и «Важно» ---------- */

.st-body .st-note {
    position: relative;
    margin: 28px 0;
    padding: 16px 20px 16px 54px;
    font-size: 17px;
    line-height: 1.6;
    color: var(--st-text);
    background: var(--st-tint);
    border: 1px solid #e9dda3;
    border-radius: var(--st-radius);
}

.st-note::before {
    content: "";
    position: absolute;
    left: 18px;
    top: 17px;
    width: 22px;
    height: 22px;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238f1416' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5'/%3E%3Cpath d='M9 18h6'/%3E%3Cpath d='M10 22h4'/%3E%3C/svg%3E") center / contain no-repeat;
}

.st-body .st-note--warn {
    background: var(--st-red-soft);
    border-color: #eec9c0;
}

.st-note--warn::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238f1416' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3'/%3E%3Cpath d='M12 9v4'/%3E%3Cpath d='M12 17h.01'/%3E%3C/svg%3E");
}

.st-note > b:first-child,
.st-note > strong:first-child {
    color: var(--st-red);
}

.st-note > :last-child {
    margin-bottom: 0;
}

/* ---------- Таблицы (контейнер с прокруткой — StatiRenderer) ---------- */

/* тени у краёв — подсказка, что таблица прокручивается вбок (белые заслонки едут с содержимым и прячут тень у края) */
.st-table-wrap {
    margin: 28px 0;
    overflow-x: auto;
    background:
        linear-gradient(to right, #fff 30%, rgba(255, 255, 255, 0)) left center / 40px 100% no-repeat local,
        linear-gradient(to left, #fff 30%, rgba(255, 255, 255, 0)) right center / 40px 100% no-repeat local,
        radial-gradient(farthest-side at 0 50%, rgba(74, 32, 18, .2), rgba(74, 32, 18, 0)) left center / 14px 100% no-repeat scroll,
        radial-gradient(farthest-side at 100% 50%, rgba(74, 32, 18, .2), rgba(74, 32, 18, 0)) right center / 14px 100% no-repeat scroll,
        var(--st-paper);
    border: 1px solid var(--st-line);
    border-radius: var(--st-radius);
    scrollbar-width: thin;
    scrollbar-color: var(--st-line-strong) transparent;
}

.st-table-wrap table {
    width: 100%;
    border-collapse: collapse;
    font-size: 16px;
    line-height: 1.45;
    font-variant-numeric: tabular-nums;
}

.st-table-wrap caption {
    padding: 12px 16px 4px;
    text-align: left;
    font-weight: 700;
    color: var(--st-ink);
}

/* узкие ячейки не сжимаются до слова в строку: на телефоне таблица прокручивается */
.st-table-wrap th,
.st-table-wrap td {
    min-width: 5.5em;
    padding: 11px 16px;
    text-align: left;
    vertical-align: top;
}

.st-table-wrap :is(th, td):first-child {
    min-width: 9em;
}

.st-table-wrap thead th {
    background: var(--st-tint);
    color: var(--st-ink);
    font-weight: 700;
    border-bottom: 1px solid var(--st-line-strong);
}

.st-table-wrap tbody th {
    font-weight: 700;
    color: var(--st-ink);
}

.st-table-wrap tbody tr + tr > * {
    border-top: 1px solid var(--st-line);
}

/* ---------- Схема маршрута: остановки по порядку ---------- */

.st-body .st-route {
    list-style: none;
    margin: 28px 0 32px;
    padding: 0;
}

.st-route > li {
    position: relative;
    margin: 0;
    padding: 0 0 14px 34px;
    line-height: 1.5;
}

/* линия до следующей остановки */
.st-route > li::before {
    content: "";
    position: absolute;
    left: 9px;
    top: 14px;
    bottom: -12px;
    width: 2px;
    background: #d8b4a9;
}

.st-route > li:last-child {
    padding-bottom: 0;
}

.st-route > li:last-child::before {
    display: none;
}

/* точка остановки; первая и последняя — крупнее и залиты */
.st-route > li::after {
    content: "";
    position: absolute;
    left: 4px;
    top: 8px;
    box-sizing: border-box;
    width: 12px;
    height: 12px;
    border: 2px solid var(--st-red);
    border-radius: 50%;
    background: var(--st-cream);
}

.st-route > li:first-child::after,
.st-route > li:last-child::after {
    left: 2px;
    top: 6px;
    width: 16px;
    height: 16px;
    background: var(--st-red);
    box-shadow: 0 0 0 4px rgba(143, 20, 22, .14);
}

.st-route b,
.st-route strong {
    font-weight: 700;
    color: var(--st-ink);
}

.st-route > li:first-child > b,
.st-route > li:last-child > b {
    color: var(--st-red);
}

.st-route span {
    color: var(--st-muted);
}

.st-route b + span::before {
    content: "— ";
}

/* ---------- Частые вопросы ---------- */

.st-body .st-faq {
    margin: 48px 0 0;
}

.st-faq details {
    border-bottom: 1px solid var(--st-line);
}

.st-faq h2 + details,
.st-faq details:first-of-type {
    border-top: 1px solid var(--st-line);
}

.st-faq summary {
    position: relative;
    display: block;
    padding: 16px 52px 16px 0;
    list-style: none;
    cursor: pointer;
    font-size: 18px;
    line-height: 1.4;
    font-weight: 700;
    color: var(--st-ink);
    transition: color .2s;
}

.st-faq summary::-webkit-details-marker {
    display: none;
}

.st-faq summary::after {
    content: "";
    position: absolute;
    right: 4px;
    top: 50%;
    width: 30px;
    height: 30px;
    margin-top: -15px;
    box-sizing: border-box;
    border: 1px solid var(--st-line-strong);
    border-radius: 50%;
    background: var(--st-paper) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238f1416' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center / 16px no-repeat;
    transition: transform .35s var(--st-ease), border-color .2s;
}

.st-faq summary:hover {
    color: var(--st-red);
}

.st-faq summary:hover::after {
    border-color: var(--st-red);
}

.st-faq details[open] > summary::after {
    transform: rotate(45deg);
}

.st-faq details > :not(summary) {
    margin: 0 0 14px;
}

.st-faq details > :last-child {
    margin-bottom: 20px;
}

/* открытие ответа — плавно (браузеры с ::details-content; остальные просто показывают ответ) */
@media (prefers-reduced-motion: no-preference) {
    .st-faq {
        interpolate-size: allow-keywords;
    }

    .st-faq details::details-content {
        block-size: 0;
        overflow-y: clip;
        transition: block-size .35s var(--st-ease), content-visibility .35s allow-discrete;
    }

    .st-faq details[open]::details-content {
        block-size: auto;
    }
}

/* ---------- Оглавление: разделы как остановки на маршруте ---------- */

.st-toc__title {
    margin: 0 0 10px;
    font-size: 17px;
    line-height: 1.3;
    font-weight: 700;
    color: var(--st-ink);
}

.st-toc__list {
    margin: 0;
    padding: 0;
    list-style: none;
}

.st-toc__item {
    position: relative;
    margin: 0;
    padding: 0 0 0 24px;
}

.st-toc__item::before {
    content: "";
    position: absolute;
    left: 5px;
    top: 0;
    bottom: 0;
    width: 1px;
    background: var(--st-line-strong);
}

.st-toc__item:first-child::before {
    top: 15px;
}

.st-toc__item:last-child::before {
    bottom: auto;
    height: 15px;
}

.st-toc__item:only-child::before {
    display: none;
}

.st-toc__link {
    display: block;
    padding: 5px 0;
    font-size: 15px;
    line-height: 1.4;
    color: var(--st-text);
    text-decoration: none;
    transition: color .2s;
}

.st-toc__link::before {
    content: "";
    position: absolute;
    left: 1px;
    top: 11px;
    box-sizing: border-box;
    width: 9px;
    height: 9px;
    border: 1.5px solid var(--st-line-strong);
    border-radius: 50%;
    background: var(--st-cream);
    transition: background-color .2s, border-color .2s;
}

.st-toc__link:hover {
    color: var(--st-red);
}

.st-toc__link:hover::before {
    border-color: var(--st-red);
}

.st-toc__link[aria-current] {
    color: var(--st-red);
    font-weight: 700;
}

.st-toc__link[aria-current]::before {
    border-color: var(--st-red);
    background: var(--st-red);
}

/* на телефоне — сворачиваемый блок после лида */
.st-toc--inline {
    margin: 0 0 28px;
    background: var(--st-paper);
    border: 1px solid var(--st-line);
    border-radius: var(--st-radius);
}

.st-toc__summary {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 52px;
    box-sizing: border-box;
    padding: 12px 16px;
    list-style: none;
    cursor: pointer;
}

.st-toc__summary::-webkit-details-marker {
    display: none;
}

.st-toc__summary .st-toc__title {
    margin: 0;
}

.st-toc__count {
    margin-left: auto;
    font-size: 15px;
    line-height: 1.3;
    color: var(--st-muted);
    white-space: nowrap;
}

.st-toc__summary::after {
    content: "";
    flex: none;
    width: 20px;
    height: 20px;
    background-color: var(--st-red);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
    transition: transform .3s var(--st-ease);
}

.st-toc--inline[open] > .st-toc__summary::after {
    transform: rotate(180deg);
}

.st-toc--inline nav {
    padding: 0 16px 14px;
}

.st-toc--inline .st-toc__link {
    padding: 7px 0;
    font-size: 16px;
}

.st-toc--inline .st-toc__link::before {
    top: 14px;
}

.st-toc--inline .st-toc__item:first-child::before {
    top: 18px;
}

.st-toc--inline .st-toc__item:last-child::before {
    height: 18px;
}

/* ---------- Кнопки ---------- */

.st-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    box-sizing: border-box;
    padding: 12px 22px;
    border: 0;
    border-radius: 6px;
    background: var(--st-red);
    color: #fff;
    font: inherit;
    font-size: 17px;
    line-height: 1.2;
    font-weight: 700;
    text-align: center;
    text-decoration: none;
    cursor: pointer;
    transition: background-color .2s, box-shadow .2s;
}

.st-btn:hover {
    background: var(--st-red-dark);
    box-shadow: 0 10px 20px -12px rgba(111, 15, 17, .9);
}

.st-btn:disabled {
    cursor: default;
    opacity: .7;
    box-shadow: none;
}

.st-btn--wide {
    width: 100%;
}

/* ---------- «Подберём круиз» ---------- */

.st-cta {
    padding: 22px 22px 20px;
    background: var(--st-paper);
    border: 1px solid var(--st-line);
    border-radius: 10px;
    box-shadow: var(--st-shadow);
}

.st-cta__title {
    margin: 0 0 6px;
    font-size: 21px;
    line-height: 1.25;
    font-weight: 700;
    color: var(--st-ink);
}

.st-cta__text {
    margin: 0 0 14px;
    font-size: 15px;
    line-height: 1.5;
    color: var(--st-muted);
}

.st-cta__phone {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 21px;
    line-height: 1.3;
    font-weight: 700;
    color: var(--st-red);
    text-decoration: none;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.st-cta__phone a {
    color: inherit;
    text-decoration: none;
}

.st-cta__phone a:hover {
    color: var(--st-red-dark);
}

.st-cta__icon {
    flex: none;
}

.st-cta__note {
    margin: 2px 0 16px 28px;
    font-size: 13px;
    line-height: 1.4;
    color: var(--st-muted);
}

.st-cta__button {
    width: 100%;
}

.st-cta__link {
    display: inline-block;
    margin-top: 14px;
    font-size: 15px;
    line-height: 1.45;
    color: var(--st-red);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-decoration-color: rgba(143, 20, 22, .45);
    text-underline-offset: .2em;
}

.st-cta__link:hover {
    text-decoration-color: currentColor;
}

/* ---------- Ближайшие круизы (живой блок вместо div.st-cruises) ---------- */

.st-body .st-cruises {
    margin: 44px 0;
}

.st-page .st-cruises__title {
    margin-top: 0;
}

.st-cruises__list {
    display: grid;
    gap: 10px;
    margin: 0 0 16px;
    padding: 0;
    list-style: none;
}

.st-cruise {
    position: relative;
    display: grid;
    grid-template-columns: 96px minmax(0, 1fr);
    grid-template-areas:
        "media head"
        "route route"
        "buy   buy";
    gap: 10px 14px;
    padding: 12px;
    background: var(--st-paper);
    border: 1px solid var(--st-line);
    border-radius: var(--st-radius);
    line-height: 1.4;
    transition: border-color .2s, box-shadow .25s;
}

.st-cruise:hover {
    border-color: var(--st-line-strong);
    box-shadow: var(--st-shadow);
}

.st-cruise:focus-within {
    outline: 2px solid var(--st-red);
    outline-offset: 2px;
}

.st-cruise__media {
    grid-area: media;
    position: relative;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border-radius: 6px;
    background: #ece3bd;
}

.st-cruise__media img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.st-cruise__sale {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 3px 6px;
    background: rgba(143, 20, 22, .94);
    color: #fff;
    font-size: 12px;
    line-height: 1.3;
    font-weight: 700;
    text-align: center;
}

.st-cruise__head {
    grid-area: head;
    min-width: 0;
}

.st-cruise__dates {
    margin: 0;
    font-size: 15px;
    line-height: 1.4;
    font-weight: 700;
    color: var(--st-ink);
}

.st-cruise__days {
    display: inline-block;
    margin-left: 8px;
    padding: 1px 8px;
    border-radius: 999px;
    background: var(--st-tint);
    color: var(--st-muted);
    font-size: 13px;
    font-weight: 700;
    white-space: nowrap;
    vertical-align: 1px;
}

.st-cruise__ship {
    margin: 4px 0 0;
    font-size: 15px;
    line-height: 1.3;
    font-weight: 700;
    letter-spacing: .02em;
}

.st-cruise__link {
    color: var(--st-red);
    text-decoration: none;
}

/* вся карточка — ссылка на круиз */
.st-cruise__link::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
}

.st-cruise__route {
    grid-area: route;
    display: -webkit-box;
    margin: 0;
    overflow: hidden;
    font-size: 14px;
    line-height: 1.45;
    color: var(--st-muted);
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

.st-cruise__buy {
    grid-area: buy;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.st-cruise__price {
    margin: 0;
    font-size: 19px;
    line-height: 1.25;
    font-weight: 700;
    color: var(--st-ink);
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.st-cruise__per {
    display: block;
    font-size: 13px;
    font-weight: 400;
    color: var(--st-muted);
}

.st-cruise__more {
    display: inline-flex;
    align-items: center;
    min-height: 40px;
    box-sizing: border-box;
    padding: 0 14px;
    border: 1.5px solid var(--st-red);
    border-radius: 6px;
    color: var(--st-red);
    font-size: 15px;
    font-weight: 700;
    transition: background-color .2s, color .2s;
}

.st-cruise:hover .st-cruise__more {
    background: var(--st-red);
    color: #fff;
}

@media (min-width: 640px) {
    .st-cruise {
        grid-template-columns: 136px minmax(0, 1fr) auto;
        grid-template-areas:
            "media head  buy"
            "media route buy";
        grid-template-rows: auto 1fr;
        gap: 6px 18px;
        padding: 14px;
    }

    .st-cruise__media {
        aspect-ratio: 3 / 2;
        align-self: start;
    }

    .st-cruise__buy {
        flex-direction: column;
        align-items: flex-end;
        justify-content: center;
        gap: 10px;
        text-align: right;
    }
}

.st-cruises__all,
.st-cruises-link a {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-height: 48px;
    box-sizing: border-box;
    padding: 12px 20px;
    border: 1.5px solid var(--st-red);
    border-radius: 6px;
    color: var(--st-red);
    font-size: 16px;
    line-height: 1.3;
    font-weight: 700;
    text-align: center;
    text-decoration: none;
    transition: background-color .2s, color .2s;
}

.st-cruises__all::after,
.st-cruises-link a::after,
.st-more__all::after {
    content: "";
    flex: none;
    width: 18px;
    height: 18px;
    background-color: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;
}

.st-cruises__all:hover,
.st-cruises-link a:hover {
    background: var(--st-red);
    color: #fff;
}

.st-body .st-cruises-link {
    margin: 36px 0;
}

/* ---------- Карточки статей: /stati/ и «Читайте также» ---------- */

.st-cards {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 24px;
}

@media (min-width: 640px) {
    .st-cards {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 960px) {
    .st-cards {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

.st-card {
    position: relative;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: var(--st-paper);
    border: 1px solid var(--st-line);
    border-radius: 10px;
    transition: border-color .2s, box-shadow .25s;
}

.st-card:hover {
    border-color: var(--st-line-strong);
    box-shadow: var(--st-shadow);
}

.st-card:focus-within {
    outline: 2px solid var(--st-red);
    outline-offset: 2px;
}

.st-card__media {
    aspect-ratio: 16 / 9;
    overflow: hidden;
    background: #ece3bd;
}

.st-card__media img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.st-card__body {
    display: flex;
    flex: 1;
    flex-direction: column;
    padding: 16px 18px 18px;
}

.st-page .st-card__title {
    margin: 0 0 8px;
    font-size: 19px;
    line-height: 1.3;
    font-weight: 700;
    color: var(--st-ink);
    text-wrap: balance;
}

.st-card__link {
    color: inherit;
    text-decoration: none;
    transition: color .2s;
}

/* вся карточка — ссылка на статью */
.st-card__link::after {
    content: "";
    position: absolute;
    inset: 0;
}

.st-card__link:hover {
    color: var(--st-red);
}

.st-card__text {
    margin: 0 0 14px;
    font-size: 15px;
    line-height: 1.5;
    color: var(--st-muted);
}

.st-card__meta {
    margin: auto 0 0;
    font-size: 14px;
    line-height: 1.4;
    color: var(--st-muted);
}

/* заглушка без обложки: парус и волны в фирменных цветах */
.st-ph {
    display: block;
    width: 100%;
    height: 100%;
    background: var(--st-red, #8f1416) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 180'%3E%3Cg fill='none' stroke='%23fefcdd' stroke-opacity='.28' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M0 140c20-9 40-9 60 0s40 9 60 0 40-9 60 0 40 9 60 0 40-9 60 0 40 9 60 0'/%3E%3Cpath d='M0 158c20-9 40-9 60 0s40 9 60 0 40-9 60 0 40 9 60 0 40-9 60 0 40 9 60 0'/%3E%3C/g%3E%3Cg fill='%23fefcdd'%3E%3Cpath d='M157 40v66h-42z' fill-opacity='.9'/%3E%3Cpath d='M163 56v50h30z' fill-opacity='.55'/%3E%3Cpath d='M108 112h104l-12 14h-80z' fill-opacity='.9'/%3E%3C/g%3E%3C/svg%3E") center / cover no-repeat;
}

/* ещё два варианта, чтобы список без обложек не был одинаковым: кремовый и тёмный крупным планом */
.st-ph--1 {
    background: #efe4bf url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 180'%3E%3Cg fill='none' stroke='%238f1416' stroke-opacity='.3' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M0 140c20-9 40-9 60 0s40 9 60 0 40-9 60 0 40 9 60 0 40-9 60 0 40 9 60 0'/%3E%3Cpath d='M0 158c20-9 40-9 60 0s40 9 60 0 40-9 60 0 40 9 60 0 40-9 60 0 40 9 60 0'/%3E%3C/g%3E%3Cg fill='%238f1416'%3E%3Cpath d='M157 40v66h-42z' fill-opacity='.9'/%3E%3Cpath d='M163 56v50h30z' fill-opacity='.5'/%3E%3Cpath d='M108 112h104l-12 14h-80z' fill-opacity='.9'/%3E%3C/g%3E%3C/svg%3E") center / cover no-repeat;
}

.st-ph--2 {
    background-color: #62100f;
    background-position: 50% 50%;
    background-size: 140%;
}

/* «Читайте также» */
.st-more {
    margin-top: 64px;
    padding-top: 32px;
    border-top: 1px solid var(--st-line);
}

.st-more__head {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: 8px 24px;
    margin: 0 0 20px;
}

.st-page .st-more__title {
    margin: 0;
    font-size: 26px;
    line-height: 1.25;
    font-weight: 700;
    color: var(--st-ink);
}

.st-more__all {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 16px;
    font-weight: 700;
    color: var(--st-red);
    text-decoration: none;
}

.st-more__all:hover {
    color: var(--st-red-dark);
}

@media (max-width: 719px) {
    .st-cards--more {
        grid-template-columns: minmax(0, 1fr);
        gap: 12px;
    }

    .st-cards--more .st-card {
        flex-direction: row;
    }

    .st-cards--more .st-card__media {
        flex: 0 0 112px;
        aspect-ratio: auto;
        min-height: 88px;
    }

    .st-cards--more .st-card__body {
        padding: 12px 14px;
    }

    .st-page .st-cards--more .st-card__title {
        font-size: 16px;
    }
}

@media (min-width: 720px) {
    .st-cards--more {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

/* ---------- Заявка (всплывающее окно; механизм — .form/.overlay сайта) ---------- */

.st-order.form {
    width: min(460px, calc(100vw - 24px));
    max-height: calc(100vh - 24px);
    max-height: calc(100dvh - 24px);
    overflow-y: auto;
    box-sizing: border-box;
    padding: 28px 28px 24px;
    background: var(--st-paper);
    border-radius: 12px;
    box-shadow: 0 30px 80px -24px rgba(35, 8, 8, .6);
    color: var(--st-text);
    font-size: 16px;
    line-height: 1.5;
}

.st-order [hidden] {
    display: none !important;
}

.st-order .st-order__close {
    position: absolute;
    top: 12px;
    right: 12px;
    width: 44px;
    height: 44px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: transparent;
    cursor: pointer;
    transition: background-color .2s;
}

.st-order .st-order__close::before,
.st-order .st-order__close::after {
    top: 50%;
    left: 50%;
    width: 2px;
    height: 20px;
    margin: -10px 0 0 -1px;
    background-color: var(--st-muted);
}

.st-order .st-order__close:hover {
    background: var(--st-tint);
}

.st-order__title {
    margin: 0 48px 6px 0;
    font-size: 22px;
    line-height: 1.25;
    font-weight: 700;
    color: var(--st-ink);
}

.st-order__text {
    margin: 0 0 18px;
    font-size: 15px;
    color: var(--st-muted);
}

.st-field {
    display: block;
    margin: 0 0 14px;
}

.st-field__label {
    display: block;
    margin: 0 0 6px;
    font-size: 15px;
    line-height: 1.3;
    font-weight: 700;
    color: var(--st-ink);
}

.st-field__req {
    margin-left: 4px;
    font-size: 13px;
    font-weight: 400;
    color: var(--st-muted);
}

.st-field__input {
    display: block;
    width: 100%;
    min-height: 48px;
    box-sizing: border-box;
    padding: 11px 14px;
    border: 1px solid #c9bd93;
    border-radius: 6px;
    background: #fff;
    color: var(--st-ink);
    font: inherit;
    font-size: 17px;
    line-height: 1.4;
    transition: border-color .2s, box-shadow .2s;
}

.st-field__input--area {
    min-height: 92px;
    resize: vertical;
}

.st-field__input::placeholder {
    color: #776f5f;
    opacity: 1;
}

.st-field__input:focus {
    border-color: var(--st-red);
    outline: none;
    box-shadow: 0 0 0 3px rgba(143, 20, 22, .18);
}

.st-check {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin: 0 0 10px;
    font-size: 14px;
    line-height: 1.45;
    color: var(--st-text);
    cursor: pointer;
}

.st-check__box {
    flex: none;
    width: 20px;
    height: 20px;
    margin: 0;
    accent-color: var(--st-red);
}

.st-check a {
    color: var(--st-red);
    text-decoration: underline;
    text-underline-offset: 2px;
}

.st-order__error {
    margin: 6px 0 4px;
    padding: 10px 12px;
    border-radius: 6px;
    background: var(--st-red-soft);
    color: #7a1012;
    font-size: 14px;
    line-height: 1.45;
}

.st-order__submit {
    margin-top: 10px;
}

.st-order__hours {
    margin: 12px 0 0;
    font-size: 13px;
    line-height: 1.45;
    color: var(--st-muted);
}

.st-order__done-title {
    margin: 0 0 6px;
    font-size: 20px;
    font-weight: 700;
    color: var(--st-ink);
}

.st-order__done p:not([class]) {
    margin: 0;
}

.st-order__done a {
    color: var(--st-red);
    font-weight: 700;
    white-space: nowrap;
}
