/* =====================================================================
   ab-base.css — общие компоненты редизайна 2026 (DESIGN.md).
   Токены (--bg, --ink, --accent, --step-*, --s-*…) объявлены в css/site.css.
   Подключение: ab_styles() из pages/components/ab-assets.php (header.php делает это сам).

   Что здесь:
     1. База (шрифт, цвет, фокус, выделение)
     2. Контейнер и секция: .ab-container, .ab-section
     3. Кнопки: .btn (+ --primary --soft --wa --on-dark --sm --block), старые .home-btn, .btn--ghost, .btn--glass
     4. Ссылки и заголовки: .ab-link, .s-title, .s-link, .s-sub, .kicker (скрыт)
     5. Чипы: .ab-chip, старые .tabs
     6. Поля: .field, .input, .ab-field
     7. Полоса тента: .ab-tent
     8. Талон: .ab-ticket (строки с точками-лидерами, итог, зубчатый край)
     9. Строка-плашка: .ab-badge
    10. Панель брони (страница экскурсии): .ab-bookbar
    11. Промо-баннер (бывший купон): .ab-promo
    12. Подвал: .ab-footer
    13. Старые страницы: .page-head, .prose, .tcard, .glass — плоско и в новой палитре
    14. Появление [data-reveal], reduced-motion
   ===================================================================== */

/* ---------- 1. База ---------- */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body {
    font-family: var(--font);
    color: var(--ink);
    background-color: var(--bg);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    font-feature-settings: normal;
    letter-spacing: 0;
}
body :where(h1, h2, h3, h4, h5, h6, p, a, li, dt, dd, button, input, select, textarea, label, td, th, blockquote, figcaption, small, strong, b) {
    font-family: var(--font);
}
:where(h1, h2, h3) { text-wrap: balance; }
:where(p) { text-wrap: pretty; }
[dir="rtl"] * { letter-spacing: 0 !important; }
::selection { background: var(--surface-2); color: var(--ink); }
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
    outline: 3px solid var(--accent);
    outline-offset: 3px;
}
.ab-num { font-variant-numeric: tabular-nums; }
.visually-hidden, .ab-sr {
    position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0;
    overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* Плавающие кружки WhatsApp больше не показываем: их роль у шапки и нижней панели */
.whatsapp-float, .home-floating, .whatsapp-button-container { display: none !important; }

/* ---------- 2. Контейнер и секция ---------- */
.ab-container {
    width: 100%;
    max-width: calc(var(--container) + 2 * var(--margin));
    margin-inline: auto;
    padding-inline: var(--margin);
}
.ab-section { padding-block: var(--section-y); }
.ab-h2 {
    margin: 0;
    font: 400 var(--step-head)/1.02 var(--font);
    letter-spacing: -.025em;
    color: inherit;
}
.ab-lead { margin: 0; font: 400 var(--step-lead)/1.3 var(--font); letter-spacing: -.01em; }
.ab-text { margin: 0; font: 400 var(--step-body)/1.5 var(--font); max-width: 64ch; }
.ab-small { font-size: var(--step-small); line-height: 1.4; }
.ab-muted { color: var(--muted); }

/* ---------- 3. Кнопки ---------- */
.btn, .home-btn {
    position: relative;
    display: inline-flex; align-items: center; justify-content: center; gap: 10px;
    min-height: 52px; padding: 0 24px;
    border: 0; border-radius: var(--r-press);
    font: 600 var(--step-body)/1.2 var(--font); letter-spacing: 0; text-transform: none;
    text-decoration: none; white-space: nowrap; cursor: pointer;
    box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none;
    background-color: var(--surface); color: var(--ink);
    transition: background-color var(--dur-fast) ease, transform 100ms ease, color var(--dur-fast) ease;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
}
@media (min-width: 1024px) { .btn, .home-btn { padding: 0 28px; } }
.btn svg, .home-btn svg { flex: none; width: 20px; height: 20px; }
.btn:active, .home-btn:active { transform: scale(.98); }
.btn:focus-visible, .home-btn:focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; }

.btn--primary, .home-btn--primary { background-color: var(--accent); color: var(--accent-ink); box-shadow: none; }
.btn--primary:active, .home-btn--primary:active { background-color: var(--accent-active); }
.btn--soft, .btn--ghost, .home-btn--light { background-color: var(--surface); color: var(--ink); border: 0; }
.btn--wa { background-color: var(--wa); color: #fff; box-shadow: none; }
.btn--wa:focus-visible { outline-color: var(--wa); }
.btn--on-dark, .btn--glass { background-color: #fff; color: var(--accent); border: 0; box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none; }
.btn--on-dark:focus-visible, .btn--glass:focus-visible { outline-color: #fff; }

@media (hover: hover) {
    .btn--primary:hover, .home-btn--primary:hover { background-color: var(--accent-hover); color: var(--accent-ink); transform: none; box-shadow: none; }
    .btn--soft:hover, .btn--ghost:hover, .home-btn--light:hover { background-color: var(--surface-2); color: var(--ink); transform: none; }
    .btn--wa:hover { background-color: var(--wa-hover); color: #fff; transform: none; }
    .btn--on-dark:hover, .btn--glass:hover { background-color: var(--surface); color: var(--accent); transform: none; }
}
.btn--sm, .home-btn--sm { min-height: 44px; padding: 0 18px; font-size: 16px; border-radius: var(--r-press); }
.btn--block { width: 100%; }
.btn[disabled], .btn[aria-disabled="true"], .home-btn[disabled] {
    background-color: var(--surface-2); color: var(--muted); cursor: not-allowed; transform: none;
}
.btn[aria-busy="true"] { cursor: progress; }
[dir="rtl"] .btn .i-arrow { transform: scaleX(-1); }

/* Квадратная «пилюля» с иконкой (WhatsApp в шапке, стрелки) */
.ab-icon-btn {
    display: inline-grid; place-items: center; flex: none;
    width: 44px; height: 44px; padding: 0; border: 0; border-radius: var(--r-press);
    background: var(--surface); color: var(--ink); cursor: pointer;
    transition: background-color var(--dur-fast) ease, transform 100ms ease;
    -webkit-tap-highlight-color: transparent;
}
.ab-icon-btn svg { width: 22px; height: 22px; }
.ab-icon-btn:active { transform: scale(.96); }
.ab-icon-btn[disabled] { color: var(--muted); cursor: default; opacity: .55; }
@media (hover: hover) { .ab-icon-btn:not([disabled]):hover { background: var(--surface-2); } }
[dir="rtl"] .ab-icon-btn .ab-flip { transform: scaleX(-1); }

/* ---------- 4. Ссылки и заголовки ---------- */
.ab-link {
    color: var(--ink);
    text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px;
    transition: color var(--dur-fast) ease;
}
@media (hover: hover) { .ab-link:hover { color: var(--accent); } }
.ab-link--on-dark { color: #fff; }
@media (hover: hover) { .ab-link--on-dark:hover { color: var(--on-sea-muted); } }

.s-title {
    font: 400 var(--step-head)/1.02 var(--font);
    letter-spacing: -.025em; color: var(--ink);
}
.s-title em, .display em, .page-head h1 em { font-style: normal; font-weight: inherit; color: inherit; }
.s-sub { font-size: var(--step-body); line-height: 1.5; color: var(--muted); max-width: 64ch; }
.s-link {
    padding: 0; background: none; color: var(--ink); font: 500 var(--step-body)/1.4 var(--font);
    text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px;
    min-height: 44px; display: inline-flex; align-items: center;
}
.s-link::after { content: none !important; }
@media (hover: hover) { .s-link:hover { color: var(--accent); opacity: 1; background: none; } }
/* Надписи над заголовком в новом стиле не используем */
.kicker { display: none !important; }
.on-dark .s-title, .on-dark .s-link { color: #fff; }

/* ---------- 5. Чипы ---------- */
.ab-chips {
    display: flex; gap: var(--s-2); margin: 0; padding: 0; list-style: none;
    overflow-x: auto; overscroll-behavior-x: contain;
    scroll-snap-type: x proximity; scrollbar-width: none;
}
.ab-chips::-webkit-scrollbar { display: none; }
.ab-chip, .tabs a, .tabs button {
    display: inline-flex; align-items: center; gap: 6px; flex: none;
    min-height: 44px; padding: 0 16px; margin: 0;
    border: 0; border-radius: var(--r-press);
    background: var(--surface); color: var(--ink);
    font: 500 var(--step-small)/1 var(--font); letter-spacing: 0;
    text-decoration: none; white-space: nowrap; cursor: pointer; box-shadow: none;
    scroll-snap-align: start;
    transition: background-color var(--dur-fast) ease, color var(--dur-fast) ease, transform 100ms ease;
}
.ab-chip:active, .tabs a:active, .tabs button:active { transform: scale(.98); }
@media (hover: hover) { .ab-chip:hover, .tabs a:hover, .tabs button:hover { background: var(--surface-2); color: var(--ink); } }
.ab-chip[aria-pressed="true"], .ab-chip[aria-current], .ab-chip.is-active,
.tabs .is-active, .tabs [aria-current], .tabs [aria-pressed="true"] {
    background: var(--ink); color: #fff; box-shadow: none;
}
.tabs .is-active::before, .tabs [aria-current]::before, .tabs [aria-pressed="true"]::before { content: none; display: none; }
.tabs {
    display: flex; gap: var(--s-2); padding: 0; border: 0; border-radius: 0; background: none;
    width: auto; max-width: 100%; overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none;
}

/* ---------- 6. Поля ---------- */
.field > label, .ab-field__label {
    display: flex; align-items: baseline; gap: 8px; margin: 0 0 var(--s-2);
    font: 500 var(--step-small)/1.4 var(--font); color: var(--ink); text-transform: none; letter-spacing: 0;
}
.input, .field input, .field select, .field textarea, .ab-input {
    width: 100%; min-height: 52px; padding: 12px 16px;
    border: 1.5px solid transparent; border-bottom-color: var(--line); border-radius: 0;
    background: var(--surface); color: var(--ink);
    font: 400 17px/1.4 var(--font); box-shadow: none;
    transition: border-color var(--dur-fast) ease;
}
.input::placeholder, .field input::placeholder, .field textarea::placeholder, .ab-input::placeholder { color: var(--muted); }
.input:focus, .field input:focus, .field select:focus, .field textarea:focus, .ab-input:focus {
    outline: 3px solid rgb(0 98 224 / .25); outline-offset: 0;
    border-color: var(--accent); background: var(--surface); box-shadow: none;
}
.input[aria-invalid="true"], .field [aria-invalid="true"], .ab-input[aria-invalid="true"] { border-color: var(--danger); }
.ab-field__error { margin: 6px 0 0; font-size: var(--step-small); color: var(--danger); }

/* ---------- 7. Полоса тента ---------- */
/* Сине-белые полосы, как навес над палубой. Только в двух местах: над карточкой героя и над подвалом. */
.ab-tent {
    display: block; height: 20px;
    background: var(--bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='8' preserveAspectRatio='none' viewBox='0 0 56 8'%3E%3Crect width='28' height='8' fill='%230062E0'/%3E%3C/svg%3E") repeat-x left top / 40px 100%;
}
[dir="rtl"] .ab-tent { background-position: right top; }
@media (min-width: 1024px) { .ab-tent { background-size: 56px 100%; } }
.ab-tent--thin { height: 8px; }

/* ---------- 8. Талон поездки ---------- */
/* Разметка:
   <div class="ab-ticket">
     <ol class="ab-ticket__list">
       <li class="ab-ticket__group"><p class="ab-ticket__when">Утром</p>
         <dl class="ab-ticket__rows"><div class="ab-ticket__row"><dt>Что</dt><dd>значение</dd></div></dl></li>
     </ol>
     <p class="ab-ticket__total">Итог</p>      ← полоса --ink; тогда у .ab-ticket добавьте .ab-ticket--ink-edge
   </div>
   Зубчатый край рисуется сам (::after) цветом последнего блока: --ticket-edge. */
.ab-ticket {
    --ticket-bg: var(--bg);
    --ticket-edge: var(--ticket-bg);
    position: relative;
    margin-bottom: 12px;
    background: var(--ticket-bg);
    color: var(--ink);
    border-radius: var(--r-hold);
}
.ab-ticket--ink-edge { --ticket-edge: var(--ink); }
.ab-ticket::after {
    content: ""; position: absolute; inset-inline: 0; top: 100%; height: 12px;
    background: var(--ticket-edge);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='12' viewBox='0 0 24 12'%3E%3Cpolygon points='0,0 24,0 12,12' fill='%23000'/%3E%3C/svg%3E") repeat-x left top / 24px 12px;
            mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='12' viewBox='0 0 24 12'%3E%3Cpolygon points='0,0 24,0 12,12' fill='%23000'/%3E%3C/svg%3E") repeat-x left top / 24px 12px;
}
.ab-ticket__body { padding: var(--s-5) var(--s-5) var(--s-4); }
.ab-ticket__list { margin: 0; padding: 0; list-style: none; display: grid; gap: var(--s-4); }
.ab-ticket__when { margin: 0 0 2px; font: 600 var(--step-small)/1.4 var(--font); color: var(--muted); }
.ab-ticket__rows { margin: 0; display: grid; }
.ab-ticket__row {
    display: flex; align-items: baseline; gap: var(--s-2);
    min-height: 44px; padding-block: 10px;
}
.ab-ticket__row > dt, .ab-ticket__what { flex: 0 1 auto; margin: 0; font: 500 var(--step-body)/1.35 var(--font); }
.ab-ticket__row > dd, .ab-ticket__value {
    flex: 0 1 auto; margin: 0; text-align: end;
    font: 400 var(--step-small)/1.4 var(--font); color: var(--muted); font-variant-numeric: tabular-nums;
    max-width: 52%;
}
/* Точки-лидеры между «что» и «значение» — SVG-узор, не градиент */
.ab-ticket__row::after {
    content: ""; order: 1; flex: 1 1 24px; min-width: 24px; height: 4px; align-self: baseline;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='4'%3E%3Ccircle cx='2' cy='2' r='1.5' fill='%234A5B75'/%3E%3C/svg%3E") repeat-x left center / 8px 4px;
    opacity: .7;
}
.ab-ticket__row > dd, .ab-ticket__value { order: 2; }
.ab-ticket__row--plain::after { content: none; }
.ab-ticket__total {
    display: flex; align-items: center; justify-content: space-between; gap: var(--s-4);
    min-height: 56px; margin: 0; padding: var(--s-3) var(--s-5);
    background: var(--ink); color: #fff;
    font: 500 var(--step-body)/1.35 var(--font);
}
.ab-ticket__total strong { font-weight: 600; font-variant-numeric: tabular-nums; }

/* ---------- 9. Плашка на фото ---------- */
.ab-badge {
    display: inline-flex; align-items: center; min-height: 28px; padding: 4px 12px;
    border-radius: var(--r-press); background: var(--sun); color: var(--ink);
    font: 600 var(--step-small)/1.2 var(--font); font-variant-numeric: tabular-nums;
}
.ab-badge--ink { background: var(--ink); color: #fff; }

/* ---------- 10. Панель брони (страница экскурсии, <1024px) ---------- */
/* Механизм: страница до include header.php ставит $GLOBALS['ab_bottom_bar'] = 'none' —
   header.php не выводит общую нижнюю панель и добавляет на <body> класс ab-no-tabbar (через JS).
   Затем страница выводит свою панель:
   <div class="ab-bookbar"><p class="ab-bookbar__price"><strong>от $25</strong><span>за взрослого</span></p>
     <a class="btn btn--primary ab-bookbar__book">Забронировать</a>
     <a class="ab-bookbar__wa" href="https://wa.me/…" aria-label="WhatsApp">svg</a></div>
   и ставит на <body> класс ab-has-bookbar (нижний отступ под панель). */
.ab-bookbar {
    position: fixed; z-index: 1000; inset-inline: 0; bottom: 0;
    display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: var(--s-2);
    min-height: calc(72px + env(safe-area-inset-bottom));
    padding: var(--s-3) var(--margin) calc(var(--s-3) + env(safe-area-inset-bottom));
    background: var(--bg);
    box-shadow: 0 -8px 24px -18px rgb(11 35 71 / .4);
}
.ab-bookbar__price { margin: 0; display: grid; line-height: 1.15; min-width: 0; }
.ab-bookbar__price strong { font: 600 var(--step-lead)/1.1 var(--font); font-variant-numeric: tabular-nums; color: var(--ink); }
.ab-bookbar__price span { font-size: var(--step-small); color: var(--muted); }
.ab-bookbar .btn { min-height: 48px; }
.ab-bookbar__wa {
    display: grid; place-items: center; width: 48px; height: 48px; border-radius: var(--r-press);
    background: var(--wa); color: #fff;
}
.ab-bookbar__wa svg { width: 24px; height: 24px; }
body.ab-has-bookbar { padding-bottom: calc(72px + env(safe-area-inset-bottom)) !important; }
@media (min-width: 1024px) {
    .ab-bookbar { display: none; }
    body.ab-has-bookbar { padding-bottom: 0 !important; }
}
body.nav-open .ab-bookbar, body.modal-open .ab-bookbar, body.booking-modal-open .ab-bookbar { visibility: hidden; }

/* ---------- 11. Промо-баннер (бывший купон) ---------- */
.ab-promo {
    position: relative;
    display: grid; gap: var(--s-3);
    padding: var(--s-5) var(--s-5) var(--s-5);
    padding-inline-end: calc(var(--s-5) + 44px);
    background: var(--surface-2); color: var(--ink);
}
.ab-promo[hidden] { display: none; }
.ab-promo__top { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2) var(--s-3); }
.ab-promo__title { margin: 0; font: 500 var(--step-lead)/1.2 var(--font); letter-spacing: -.01em; }
.ab-promo__price { margin: 0; font: 400 var(--step-body)/1.4 var(--font); }
.ab-promo__price strong { font-weight: 600; font-variant-numeric: tabular-nums; }
.ab-promo__days { margin: 0; padding: 0; list-style: none; display: grid; gap: 2px; font-size: var(--step-small); color: var(--muted); }
.ab-promo__days b { font-weight: 500; color: var(--ink); }
.ab-promo__actions { display: flex; flex-wrap: wrap; gap: var(--s-2); margin-top: var(--s-1); }
.ab-promo__close {
    position: absolute; top: var(--s-3); inset-inline-end: var(--s-3);
    background: transparent;
}
@media (hover: hover) { .ab-promo__close:hover { background: var(--surface); } }
@media (min-width: 768px) {
    .ab-promo { grid-template-columns: minmax(0, 1fr) auto; align-items: end; column-gap: var(--s-6); }
    .ab-promo__main { display: grid; gap: var(--s-3); }
    .ab-promo__actions { margin: 0; }
}

/* ---------- 12. Подвал ---------- */
.ab-footer { position: relative; color: #fff; background: var(--ink); font-family: var(--font); }
.ab-footer .ab-tent { height: 8px; }
.ab-footer__stage {
    position: relative; isolation: isolate; overflow: hidden;
    min-height: 88svh;
    display: flex; flex-direction: column;
}
@media (min-width: 1024px) { .ab-footer__stage { min-height: max(720px, 100svh); } }
.ab-footer__photo { position: absolute; inset: 0; z-index: -1; margin: 0; }
.ab-footer__photo img {
    display: block; width: 100%; height: 100%; object-fit: cover; object-position: 50% 55%;
    filter: brightness(.62);
}
.ab-footer__top {
    display: grid; gap: var(--s-6);
    padding-top: var(--s-6);
}
@media (min-width: 768px) {
    .ab-footer__top { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--s-6); }
}
@media (min-width: 1024px) {
    .ab-footer__top { grid-template-columns: 3fr 3fr 4fr 5fr; gap: var(--gap); }
}
.ab-footer__col h2 {
    margin: 0 0 var(--s-2); font: 500 var(--step-small)/1.4 var(--font); color: var(--on-sea-muted);
    letter-spacing: 0; text-transform: none;
}
.ab-footer__col ul { margin: 0; padding: 0; list-style: none; display: grid; }
.ab-footer__col a {
    display: inline-flex; align-items: center; gap: 10px; min-height: 44px;
    color: #fff; text-decoration: none; font: 400 var(--step-body)/1.3 var(--font);
    text-decoration-thickness: 1px; text-underline-offset: 4px;
}
.ab-footer__col a svg { width: 20px; height: 20px; flex: none; }
@media (hover: hover) { .ab-footer__col a:hover { text-decoration: underline; } }
.ab-footer__ask p { margin: 0 0 var(--s-3); font-size: var(--step-small); color: var(--on-sea-muted); }
.ab-footer__form { display: flex; gap: var(--s-2); }
.ab-footer__form input {
    flex: 1; min-width: 0; min-height: 52px; padding: 0 16px;
    border: 0; border-radius: 0; background: #fff; color: var(--ink);
    font: 400 17px/1.3 var(--font);
}
.ab-footer__form input::placeholder { color: var(--muted); }
.ab-footer__form input:focus-visible { outline: 3px solid #fff; outline-offset: 2px; }
.ab-footer__end { margin-top: auto; padding-top: var(--s-7); }
.ab-footer__word {
    margin: 0;
    font: 400 clamp(4.5rem, 21vw, 19rem)/.8 var(--font); letter-spacing: -.04em;
    color: #fff; white-space: nowrap; user-select: none;
}
.ab-footer__bottom {
    display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 16px;
    padding-block: var(--s-5) var(--s-5); text-align: center;
    font-size: var(--step-small); line-height: 1.5; color: var(--on-sea-muted);
}
.ab-footer__bottom a { color: #fff; text-underline-offset: 3px; display: inline-flex; align-items: center; min-height: 32px; }
.ab-footer__credits { flex-basis: 100%; max-width: 72ch; margin: 0 auto; }
.ab-footer__credits a { color: var(--on-sea-muted); min-height: 0; display: inline; }

/* ---------- 13. Старые страницы: плоско и в новой палитре ---------- */
.page-head h1 {
    font: 400 var(--step-head)/1.02 var(--font); letter-spacing: -.025em; color: var(--ink);
}
.page-head p { font-size: var(--step-body); color: var(--muted); }
.page-head__crumbs, .page-head__crumbs a { font-size: var(--step-small); color: var(--muted); }
.prose { font-size: var(--step-body); line-height: 1.6; color: var(--ink); }
.prose h2 { font: 500 var(--step-lead)/1.2 var(--font); letter-spacing: -.01em; }
.prose a { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }
@media (hover: hover) { .prose a:hover { color: var(--accent); } }
.prose img { border-radius: 0; }
.prose blockquote { border-inline-start-color: var(--accent); font: 400 var(--step-lead)/1.35 var(--font); }
.glass, .glass--dark {
    -webkit-backdrop-filter: none !important; backdrop-filter: none !important;
    box-shadow: none !important; border-color: transparent !important;
}
.glass { background: var(--bg); }
.glass--dark { background: var(--scrim); }
.tcard { border-radius: 0; box-shadow: none; background: var(--bg); }
.tcard:hover { transform: none; box-shadow: none; }
@media (hover: hover) { .tcard:hover { background: var(--surface); } }
.tcard__media { border-radius: 0; }
.tcard__sale, .tcard__rate, .tcard__dur { -webkit-backdrop-filter: none; backdrop-filter: none; }
.tcard__sale { background: var(--sun); color: var(--ink); }
.tcard__title { font: 500 var(--step-body)/1.3 var(--font); letter-spacing: 0; }
.tcard__price strong { font: 600 var(--step-lead)/1 var(--font); letter-spacing: 0; }
.tcard__go { display: none; }
.rows, .rows > li { border-color: transparent; }

/* ---------- 14. Появление ---------- */
.js [data-reveal] {
    transform: translateY(16px);
    transition: opacity var(--dur-ui-max) var(--ease-out), transform var(--dur-ui-max) var(--ease-out);
    transition-delay: calc(min(var(--d, 0), 4) * 60ms);
}
.js [data-reveal].is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation: none !important; transition-duration: 1ms !important; scroll-behavior: auto !important; }
    [data-reveal], .js [data-reveal] { opacity: 1 !important; transform: none !important; }
}

/* Каталог: промо-баннер на всю ширину над прайс-листом (перекрывает сетку 1fr/180px из tours-ui.css) */
body.tl-page .tl-prices > .home-container:has(> .ab-promo) { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--s-6); }
.tl-prices .ab-promo { order: 0; }

/* Подвал на телефоне: фото уходит под нижнюю панель / панель брони, без полосы снизу */
@media (max-width: 1023px) {
    body:has(.ab-footer):not(.ab-no-tabbar), body.ab-has-bookbar:has(.ab-footer) { padding-bottom: 0 !important; }
    body:not(.ab-no-tabbar) .ab-footer__stage { padding-bottom: calc(var(--bar-h) + env(safe-area-inset-bottom)); }
    body.ab-has-bookbar .ab-footer__stage { padding-bottom: calc(72px + env(safe-area-inset-bottom)); }
}

/* Талон на узком экране: «что» целой строкой, ниже точки-лидеры и значение справа */
@media (max-width: 599px) {
    .ab-ticket__row { flex-wrap: wrap; row-gap: 2px; }
    .ab-ticket__row > dt, .ab-ticket__what { flex-basis: 100%; }
    .ab-ticket__row > dd, .ab-ticket__value { max-width: 85%; }
    .ab-ticket__row--plain { min-height: 0; }
}
/* Телефон: разделы и курорты подвала в две колонки */
@media (max-width: 767px) {
    .ab-footer__top { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--s-4); row-gap: var(--s-5); }
    .ab-footer__top > .ab-footer__col:nth-child(n+3) { grid-column: 1 / -1; }
    .ab-footer__stage { min-height: 0; }
}
.ab-footer__bottom .ab-footer__credits { flex: 0 0 100%; width: 100%; max-width: none; margin: 0; }
