/* Раздел /tours: карточка тура (T6), листинги T2-T5 и хаб T1.
   Mobile-first, токены из board/css/tokens.css, свои токены раздела ниже.
   Карточка идет поверх product-page.css (общие компоненты экскурсий
   переопределяются только в скоупе .tt-card-page), листинги без него. */

/* ==========================================================================
   Токены раздела
   ========================================================================== */

.tt-listing-page, .tt-card-page {
    --tt-ink-2: #3d4b53;                        /* второй план: 9.01 на #fff, 8.39 на #f5f7f9 */
    --tt-line: var(--tp-border);                /* разделители */
    --tt-band: var(--tp-surface-tint);
    --tt-pill-dark: rgba(22, 35, 43, .78);      /* плашка на фото: белый текст от 7.87 */
    --tt-pill-light: rgba(255, 255, 255, .94);  /* светлая плашка на фото: ink от 14.0 */
    --tt-scrim: linear-gradient(180deg, rgba(10, 20, 26, 0) 40%, rgba(10, 20, 26, .72) 100%);
                                                /* низ плитки направления: белый текст от 7.47 */
    --tt-save-bg: #e6f4ee;                      /* плашка скидки */
    --tt-save-ink: #0b5c45;                     /* 7.05 на --tt-save-bg */
    --tt-sel-bg: #e6ebf0;                       /* нажатая кнопка даты: ink 13.37 */
    --tt-sec-gap: var(--tp-6);                  /* 32 мобильный, 48 с 992px */
    --tt-ring: 0 0 0 2px var(--tp-surface), 0 0 0 4px var(--tp-link); /* фокус поверх фото */
}
@media (min-width: 992px) { .tt-card-page, .tt-listing-page { --tt-sec-gap: var(--tp-7); } }

/* ==========================================================================
   Общие компоненты
   ========================================================================== */

/* --- Секции: плоские, отделяются линией и отступом; зазором владеет padding-top --- */
.tt-sec { margin: 0; scroll-margin-top: 64px; }
.tt-sec__head {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--tp-2) var(--tp-4);
    margin-bottom: var(--tp-4);
}
.tt-sec__title { margin: 0; font-size: var(--tp-fs-xl); font-weight: 700; line-height: 1.3; color: var(--tp-ink); }
.tt-sec > .tt-sec__title { margin-bottom: var(--tp-4); }
.tt-sec__action {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    padding: 0;
    border: 0;
    background: none;
    color: var(--tp-link);
    font-size: var(--tp-fs-sm);
    font-weight: 500;
}
.tt-sec__action:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; border-radius: 4px; }
@media (hover: hover) { .tt-sec__action:hover { text-decoration: underline; text-underline-offset: 3px; } }
.tt-sub { margin: var(--tp-6) 0 var(--tp-3); font-size: var(--tp-fs-lg); font-weight: 600; line-height: 1.4; }
.tt-sec-lead { max-width: 72ch; margin: 0 0 var(--tp-4); font-size: var(--tp-fs-lg); line-height: 1.6; color: var(--tp-ink); }
.tt-prose { max-width: 72ch; font-size: var(--tp-fs-md); line-height: 1.6; color: var(--tp-ink); }
.tt-prose p { margin: 0 0 var(--tp-3); }
.tt-prose > :last-child, .tt-prose .block-text > :last-child { margin-bottom: 0; }
/* Свернутый длинный текст (скрипт карточки, data-tt-clamp): без скрипта виден целиком. */
.is-clamped {
    max-height: var(--tt-clamp, 358px);
    overflow: hidden;
    -webkit-mask-image: linear-gradient(#000 70%, transparent);
    mask-image: linear-gradient(#000 70%, transparent);
}
@media (min-width: 992px) {
    .tt-sec__head { margin-bottom: var(--tp-5); }
    .tt-sec__title { font-size: var(--tp-fs-xl2); }
    .tt-sec > .tt-sec__title { margin-bottom: var(--tp-5); }
}

/* --- Карточка тура в списке --- */
.tt-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--tp-6) var(--tp-4); margin: 0; }
@media (min-width: 640px) { .tt-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* 40 = --tp-6 + --tp-2: зазор рядов в 5 раз больше внутреннего ритма карточки, иначе ряды слипаются */
@media (min-width: 768px) { .tt-grid { gap: calc(var(--tp-6) + var(--tp-2)) var(--tp-5); } }
@media (min-width: 1200px) { .tt-results .tt-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .tt-grid--wide { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1280px) { .tt-grid--wide { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

.tt-tcard { position: relative; display: grid; grid-template-rows: subgrid; grid-row: span 6; row-gap: var(--tp-2); min-width: 0; }
@supports not (grid-template-rows: subgrid) {
    .tt-tcard { display: flex; flex-direction: column; }
    .tt-tcard__price { margin-top: auto; }
}
.tt-tcard__media { position: relative; margin: 0 0 var(--tp-1); aspect-ratio: 3 / 2; border-radius: var(--tp-r-md); overflow: hidden; background: var(--tt-band); }
.tt-tcard__media img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .3s ease-out; }
.tt-tcard__len {
    position: absolute;
    left: var(--tp-2);
    display: inline-flex;
    align-items: center;
    height: 28px;
    padding: 0 10px;
    border-radius: var(--tp-r-pill);
    font-size: var(--tp-fs-xs);
    font-weight: 600;
    line-height: 1;
    white-space: nowrap;
}
.tt-tcard__len { bottom: var(--tp-2); background: var(--tt-pill-dark); color: #fff; }
.tt-tcard__off {
    position: absolute;
    inset: 50% auto auto 50%;
    transform: translate(-50%, -50%);
    padding: var(--tp-2) var(--tp-3);
    border-radius: var(--tp-r-pill);
    background: var(--tt-pill-light);
    color: var(--tp-ink);
    font-size: var(--tp-fs-sm);
    font-weight: 600;
    white-space: nowrap;
}
.tt-tcard.is-off .tt-tcard__media img { filter: grayscale(1); opacity: .55; }
.tt-tcard__meta, .tt-tcard__facts {
    display: flex;
    flex-wrap: wrap;
    margin: 0;
    font-size: var(--tp-fs-sm);
    line-height: 1.5;
    color: var(--tt-ink-2);
}
/* Строки через точку: точка стоит перед каждым пунктом, а строка сдвинута влево на ширину точки
   и обрезана clip-path, поэтому у пункта в начале строки (и после переноса) точки не видно. */
.tt-dots { margin-left: calc(-1 * var(--tt-dot, 24px)) !important; clip-path: inset(-8px -8px -8px var(--tt-dot, 24px)); }
.tt-dots > * { display: inline-block; }
.tt-dots > *::before { content: "·"; display: inline-block; width: var(--tt-dot, 24px); color: var(--tp-ink-faint); font-weight: 400; text-align: center; }
.tt-tcard__rate { color: var(--tp-ink); font-weight: 600; font-variant-numeric: tabular-nums; }
.tt-tcard__rate .bi { color: var(--tp-star); }
.tt-tcard__cnt { color: var(--tp-ink-muted); font-weight: 400; }
/* 17px и три строки: длинное название партнера обрезается, полное на странице тура */
.tt-tcard__title {
    display: -webkit-box;
    margin: 0;
    overflow: hidden;
    font-size: 1.0625rem;
    font-weight: 600;
    line-height: 1.35;
    overflow-wrap: break-word;
    hyphens: manual;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    -webkit-box-orient: vertical;
}
.tt-tcard a.tt-tcard__link { display: inline; min-height: 0; color: var(--tp-ink); text-decoration: none; }
.tt-tcard__link::after { content: ""; position: absolute; inset: 0; z-index: 1; border-radius: var(--tp-r-md); }
.tt-tcard__when { display: flex; align-items: center; gap: 6px; margin: 0; font-size: var(--tp-fs-sm); line-height: 1.4; color: var(--tt-ink-2); }
.tt-tcard__when .bi { flex: none; color: var(--tp-link); }
/* Хаб и похожие туры: заездов по месяцам у этих карточек нет, строки под них нет */
.tt-hub .tt-tcard, .tt-card-page .tt-tcard { grid-row: span 5; }
.tt-hub .tt-tcard__when, .tt-card-page .tt-tcard__when { display: none; }
.tt-tcard__price {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0 var(--tp-1);
    margin: 0;
    padding-top: var(--tp-1);
    font-size: var(--tp-fs-sm);
    color: var(--tp-ink-muted);
}
.tt-tcard__amount { font-size: var(--tp-fs-xl); font-weight: 700; line-height: 1.2; color: var(--tp-ink); font-variant-numeric: tabular-nums; white-space: nowrap; }
@media (hover: hover) {
    .tt-tcard:hover .tt-tcard__media img { transform: scale(1.03); }
    .tt-tcard:hover a.tt-tcard__link { color: var(--tp-link); }
}
.tt-tcard__link:focus-visible { outline: none; }
.tt-tcard:has(.tt-tcard__link:focus-visible) { outline: 2px solid var(--tp-link); outline-offset: 4px; border-radius: var(--tp-r-md); }

/* --- FAQ --- */
.tt-faq.tp-faq { display: block; border-top: 1px solid var(--tt-line); }
.tt-faq .tp-faq__item { margin: 0; border: 0; border-bottom: 1px solid var(--tt-line); border-radius: 0; background: none; box-shadow: none; }
.tt-faq .tp-faq__q {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--tp-4);
    min-height: 56px;
    padding: var(--tp-4) 0;
    background: none;
    color: var(--tp-ink);
    font-size: 1.0625rem;
    font-weight: 600;
    line-height: 1.4;
    list-style: none;
    cursor: pointer;
}
.tt-faq .tp-faq__q::-webkit-details-marker { display: none; }
.tt-faq .tp-faq__q::marker { content: ""; }
.tt-faq .tp-faq__h { margin: 0; font: inherit; }
.tt-faq .tp-faq__q .bi {
    display: inline-flex;
    flex: none;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    margin: 0;
    border-radius: 50%;
    background: var(--tt-band);
    color: var(--tp-ink);
    font-size: 14px;
    transition: transform .2s;
}
.tt-faq .tp-faq__item[open] .tp-faq__q .bi { transform: rotate(180deg); }
.tt-faq .tp-faq__a { max-width: 72ch; padding: 0 48px var(--tp-4) 0; font-size: var(--tp-fs-md); line-height: 1.6; color: var(--tt-ink-2); }
@media (hover: hover) { .tt-faq .tp-faq__q:hover { background: none; color: var(--tp-link); } }
.tt-faq .tp-faq__q:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; border-radius: var(--tp-r-sm); }

/* --- Чипы тем и мест: на мобильном одна строка с прокруткой --- */
.tt-themes { margin: 0 0 var(--tp-5); }
.tt-themes__title { margin: 0 0 var(--tp-3); font-size: var(--tp-fs-md); font-weight: 600; color: var(--tp-ink); }
.tt-themes__list { display: flex; flex-wrap: wrap; gap: var(--tp-2); margin: 0; padding: 0; list-style: none; }
.tt-themes__chip {
    display: inline-flex;
    align-items: center;
    gap: var(--tp-2);
    height: 40px;
    padding: 0 var(--tp-4);
    border: 1px solid var(--tp-border-strong);
    border-radius: var(--tp-r-pill);
    background: var(--tp-surface);
    color: var(--tp-ink);
    font-size: var(--tp-fs-sm);
    font-weight: 500;
    white-space: nowrap;
    text-decoration: none;
}
.tt-themes__chip:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }
@media (hover: hover) { .tt-themes__chip:hover { border-color: var(--tp-ink); background: var(--tt-band); color: var(--tp-ink); } }
.tt-themes__count { color: var(--tp-ink-muted); font-size: var(--tp-fs-xs); font-variant-numeric: tabular-nums; }
@media (max-width: 767.98px) {
    .tt-themes__list--strip {
        flex-wrap: nowrap;
        margin-inline: -12px;
        padding: 2px 12px;
        overflow-x: auto;
        scroll-snap-type: x proximity;
        scroll-padding-inline: 12px;
        scrollbar-width: none;
    }
    .tt-themes__list--strip::-webkit-scrollbar { display: none; }
    .tt-themes__list--strip > li { flex: none; scroll-snap-align: start; }
}

/* --- Списки ссылок колонками: страны, места, города старта, соседи --- */
.tt-links { columns: 2; column-gap: var(--tp-6); margin: 0; padding: 0; list-style: none; }
@media (min-width: 768px) { .tt-links { columns: 3; } }
@media (min-width: 1024px) { .tt-links { columns: 4; } }
.tt-links li { break-inside: avoid; }
/* padding 10 + строка 24 = 44, минимальная цель касания */
.tt-links__item {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--tp-3);
    min-height: 44px;
    padding: 10px 0;
    border-bottom: 1px solid var(--tt-line);
    color: var(--tp-ink);
    text-decoration: none;
}
.tt-links__name { min-width: 0; font-size: var(--tp-fs-md); font-weight: 500; line-height: 1.5; }
.tt-links__count { flex: none; color: var(--tp-ink-muted); font-size: var(--tp-fs-sm); font-variant-numeric: tabular-nums; }
@media (hover: hover) { .tt-links__item:hover .tt-links__name { color: var(--tp-link); text-decoration: underline; text-underline-offset: 3px; } }
.tt-links__item:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }

/* --- Плитки направлений с фото: лента на мобильном, сетка с 768px, мозаика с 1024px --- */
.tt-tiles {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: 78%;
    gap: var(--tp-3);
    margin: 0 -12px;
    padding: 0 12px;
    list-style: none;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-padding-inline: 12px;
    scrollbar-width: none;
}
.tt-tiles::-webkit-scrollbar { display: none; }
.tt-tile { min-width: 0; scroll-snap-align: start; }
.tt-tile__link {
    position: relative;
    display: block;
    aspect-ratio: 4 / 3;
    border-radius: var(--tp-r-md);
    overflow: hidden;
    background: var(--tt-band);
    color: #fff;
    text-decoration: none;
}
.tt-tile__link img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .3s ease-out; }
.tt-tile__link::after { content: ""; position: absolute; inset: 0; background: var(--tt-scrim); }
.tt-tile__text { position: absolute; z-index: 1; left: var(--tp-4); right: var(--tp-4); bottom: var(--tp-4); display: flex; flex-direction: column; gap: 2px; }
.tt-tile__name { font-size: var(--tp-fs-lg); font-weight: 700; line-height: 1.25; overflow-wrap: break-word; }
.tt-tile__count { font-size: var(--tp-fs-sm); font-weight: 500; font-variant-numeric: tabular-nums; }
.tt-tile__link:focus-visible { outline: none; box-shadow: var(--tt-ring); }
@media (hover: hover) { .tt-tile__link:hover img { transform: scale(1.03); } }
@media (min-width: 768px) {
    .tt-tiles { grid-auto-flow: row; grid-auto-columns: auto; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0; padding: 0; overflow: visible; }
}
@media (min-width: 1024px) {
    .tt-tiles { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .tt-tiles--mosaic { grid-auto-rows: 220px; }
    .tt-tiles--mosaic .tt-tile__link { aspect-ratio: auto; height: 100%; }
    .tt-tiles--mosaic .tt-tile:first-child { grid-column: span 2; grid-row: span 2; }
    .tt-tiles--mosaic .tt-tile:first-child .tt-tile__name { font-size: var(--tp-fs-2xl); }
}
/* Плитки над листингом страны: ровный ряд, не больше 4, в колонке результатов */
.tt-places-top { margin: 0 0 var(--tp-5); }
@media (min-width: 768px) { .tt-places-top .tt-tiles { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.tt-places-top .tt-tile__link { aspect-ratio: 4 / 3; }
.tt-places-top .tt-tile__text { left: var(--tp-3); right: var(--tp-3); bottom: var(--tp-3); }
.tt-places-top .tt-tile__name { font-size: var(--tp-fs-md); }

/* --- Кнопка-рамка (сброс фильтров) --- */
.tt-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 0 var(--tp-5);
    border: 1px solid var(--tp-border-strong);
    border-radius: var(--tp-r-pill);
    background: var(--tp-surface);
    color: var(--tp-ink);
    font-weight: 600;
    text-decoration: none;
}
.tt-btn:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }
.tt-btn:active { background: var(--tt-sel-bg); }
@media (hover: hover) { .tt-btn:hover { border-color: var(--tp-ink); background: var(--tt-band); color: var(--tp-ink); } }

/* --- Перелинковка --- */
.tt-crosslinks { margin-top: var(--tp-6); }
.tt-crosslinks .tt-sec__title { margin-bottom: var(--tp-4); }
.tt-crosslinks ul { display: flex; flex-wrap: wrap; gap: var(--tp-2); margin: 0; padding: 0; list-style: none; }
.tt-crosslinks a, .tp-product .tt-crosslinks a:not(.btn) {
    display: inline-flex;
    align-items: center;
    height: 40px;
    padding: 0 var(--tp-4);
    border: 1px solid var(--tp-border-strong);
    border-radius: var(--tp-r-pill);
    background: var(--tp-surface);
    color: var(--tp-ink);
    font-size: var(--tp-fs-sm);
    font-weight: 500;
    text-decoration: none;
}
.tt-crosslinks a:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }
@media (hover: hover) { .tt-crosslinks a:hover, .tp-product .tt-crosslinks a:not(.btn):hover { border-color: var(--tp-ink); background: var(--tt-band); } }

/* ==========================================================================
   Карточка тура (T6)
   ========================================================================== */

.tt-card { padding: 0 0 var(--tp-7); }
.tt-card > .container { padding-top: var(--tp-2); }
/* На мобильном первый экран короче: текущая крошка повторяет H1, город и дни есть в фактах
   сразу под панелью брони (в шапке остается оценка). */
@media (max-width: 767.98px) {
    .tt-card > .container { padding-top: 0; }
    .tt-card-page .breadcrumb-item.active { display: none; }
    .tt-card-page .tt-hero__meta .tt-hero__geo, .tt-card-page .tt-hero__meta .tt-hero__len { display: none; }
    .tt-card-page .tt-hero__title { line-height: 1.2; }
    .tt-card-page .tt-hero__tagline { margin-top: var(--tp-1); font-size: var(--tp-fs-md); }
    .tt-card-page .tt-hero__meta { margin-top: var(--tp-2); }
}

/* Нижняя полоса брони на мобильном закреплена: место под нее держит body,
   иначе она закрывает подвал. Отступ под вырез экрана - safe-area. */
.tt-card-page .tp-sticky { min-height: 72px; padding: var(--tp-3) var(--tp-4) calc(var(--tp-3) + env(safe-area-inset-bottom)); }
.tt-card-page .tp-sticky__amount { color: var(--tp-ink); font-variant-numeric: tabular-nums; }
.tt-card-page .tp-sticky .tp-cta { min-height: 48px; min-width: 160px; }
@media (max-width: 991.98px) {
    body.tt-card-page { padding-bottom: calc(80px + env(safe-area-inset-bottom)); }
}

/* --- Сетка: порядок DOM = мобильный порядок --- */
.tt-page {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: "gallery" "head" "book" "facts" "main";
    row-gap: var(--tp-3);
}
.tt-hero { grid-area: head; min-width: 0; }
.tt-gallery-wrap { grid-area: gallery; min-width: 0; }
.tt-aside { grid-area: book; min-width: 0; }
.tt-facts { grid-area: facts; }
.tt-main { grid-area: main; min-width: 0; }
@media (min-width: 992px) {
    .tt-page {
        grid-template-columns: minmax(0, 1fr) 340px;
        grid-template-rows: auto auto auto 1fr;
        grid-template-areas: "head head" "gallery book" "facts book" "main book";
        column-gap: var(--tp-6);
        row-gap: var(--tp-5);
    }
    .tt-aside { align-self: start; position: sticky; top: var(--tp-4); }
}
@media (min-width: 1200px) { .tt-page { grid-template-columns: minmax(0, 1fr) 384px; column-gap: var(--tp-7); } }

/* --- Заголовок --- */
.tt-hero__title { margin: 0; padding: 0; font-size: var(--tp-fs-xl2); font-weight: 700; line-height: 1.25; color: var(--tp-ink); overflow-wrap: break-word; }
.tt-hero__tagline { max-width: 72ch; margin: var(--tp-2) 0 0; font-size: var(--tp-fs-lg); line-height: 1.5; color: var(--tt-ink-2); }
.tt-hero__meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    row-gap: var(--tp-1);
    margin: var(--tp-3) 0 0;
    padding: 0;
    list-style: none;
    font-size: 15px;
    line-height: 1.6;
    color: var(--tt-ink-2);
}
.tt-hero__meta { --tt-dot: 32px; }
.tp-product a.tt-hero__rate { display: inline-flex; align-items: center; gap: var(--tp-1); min-height: 28px; color: var(--tp-link); text-decoration: none; }
.tt-hero__rate .bi { color: var(--tp-star); }
.tt-hero__score { color: var(--tp-ink); font-weight: 600; font-variant-numeric: tabular-nums; }
@media (hover: hover) { .tp-product a.tt-hero__rate:hover .tt-hero__count { text-decoration: underline; text-underline-offset: 3px; } }
.tt-pill {
    display: inline-flex;
    align-items: center;
    height: 28px;
    padding: 0 10px;
    border-radius: var(--tp-r-pill);
    background: var(--tp-surface-accent);
    color: var(--tp-ink);
    font-size: var(--tp-fs-xs);
    font-weight: 600;
}
@media (min-width: 992px) { .tt-hero__title { font-size: var(--tp-fs-3xl); line-height: 1.2; } }

/* --- Галерея --- */
.tt-gallery { gap: var(--tp-2); border-radius: var(--tp-r-lg); }
.tt-gallery .tp-gallery__item:focus-visible { outline: none; box-shadow: inset 0 0 0 3px var(--tp-link); }
.tt-gallery__count {
    position: absolute;
    right: var(--tp-3);
    bottom: var(--tp-3);
    display: none;
    align-items: center;
    gap: var(--tp-2);
    height: 36px;
    padding: 0 var(--tp-3);
    border-radius: var(--tp-r-pill);
    background: var(--tt-pill-light);
    color: var(--tp-ink);
    font-size: var(--tp-fs-sm);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    box-shadow: var(--tp-shadow-md);
}
.tt-gallery-wrap .tp-gallery__credit {
    margin-top: var(--tp-2);
    padding: 0;
    border: 0;
    background: none;
    color: var(--tp-ink-muted);
    font-size: var(--tp-fs-xs);
    line-height: 1.5;
    text-align: left;
}
@media (max-width: 767.98px) {
    .tt-gallery { margin-inline: -12px; border-radius: 0; }
    .tt-gallery .tp-gallery__item { aspect-ratio: 4 / 3; }
    .tt-gallery .tp-gallery__item:not(:first-child) { display: none; }
    .tt-gallery__count--sm { display: inline-flex; }
}
@media (min-width: 768px) {
    .tt-gallery { grid-template-columns: 2fr 1fr; grid-template-rows: 1fr 1fr; aspect-ratio: 3 / 2; }
    .tt-gallery .tp-gallery__item { aspect-ratio: auto; min-width: 0; min-height: 0; }
    .tt-gallery .tp-gallery__item:first-child { grid-row: span 2; }
    .tt-gallery .tp-gallery__item:nth-child(n+4) { display: none; }
    .tt-gallery--n1 { grid-template-columns: 1fr; grid-template-rows: 1fr; }
    .tt-gallery--n1 .tp-gallery__item:first-child { grid-row: auto; }
    .tt-gallery--n2 .tp-gallery__item:nth-child(2) { grid-row: span 2; }
    .tt-gallery__count--md, .tt-gallery__count--up { display: inline-flex; }
}
@media (min-width: 1200px) {
    .tt-gallery { aspect-ratio: 2 / 1; }
    .tt-gallery--n5 { grid-template-columns: 2fr 1fr 1fr; }
    .tt-gallery--n5 .tp-gallery__item:nth-child(n+4) { display: block; }
    .tt-gallery--n5 .tt-gallery__count--md { display: none; }
    .tt-gallery__count--xl { display: inline-flex; }
}

/* --- Панель брони --- */
.tt-book.tp-booking { padding: var(--tp-4) var(--tp-5) var(--tp-5); border-radius: var(--tp-r-lg); background: var(--tp-surface); box-shadow: var(--tp-ring); }
@media (min-width: 992px) { .tt-book.tp-booking { padding: var(--tp-5); box-shadow: var(--tp-ring), var(--tp-shadow-card); } }
.tt-book__price { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 var(--tp-2); margin: 0; }
.tt-book__from { color: var(--tp-ink-muted); font-size: 15px; }
.tt-book__amount { color: var(--tp-ink); font-size: var(--tp-fs-3xl); font-weight: 700; line-height: 1.1; font-variant-numeric: tabular-nums; }
.tt-book__unit { margin: var(--tp-1) 0 0; color: var(--tt-ink-2); font-size: 15px; line-height: 1.5; }
.tt-book__each { margin: 2px 0 0; color: var(--tp-ink-muted); font-size: var(--tp-fs-sm); line-height: 1.5; font-variant-numeric: tabular-nums; }
.tt-book__old { display: flex; flex-wrap: wrap; align-items: center; gap: var(--tp-2); margin: var(--tp-2) 0 0; color: var(--tp-ink-muted); font-size: var(--tp-fs-sm); font-variant-numeric: tabular-nums; }
.tt-save {
    display: inline-flex;
    align-items: center;
    height: 24px;
    padding: 0 var(--tp-2);
    border-radius: var(--tp-r-pill);
    background: var(--tt-save-bg);
    color: var(--tt-save-ink);
    font-size: var(--tp-fs-xs);
    font-weight: 600;
}
.tt-book__terms {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: var(--tp-2) var(--tp-4);
    margin: var(--tp-4) 0 0;
    padding-top: var(--tp-4);
    border-top: 1px solid var(--tt-line);
    font-size: var(--tp-fs-sm);
    line-height: 1.5;
}
.tt-book__terms dt { color: var(--tp-ink-muted); font-weight: 400; }
.tt-book__terms dd { margin: 0; color: var(--tp-ink); font-weight: 500; }
.tt-book__sub { margin: 20px 0 var(--tp-2); color: var(--tp-ink); font-size: var(--tp-fs-sm); font-weight: 600; line-height: 1.5; }
.tt-book__note { margin: var(--tp-4) 0 0; color: var(--tt-ink-2); font-size: var(--tp-fs-sm); line-height: 1.5; }
.tt-dates { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--tp-2); margin: 0; padding: 0; list-style: none; }
.tt-date {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    width: 100%;
    height: 56px;
    padding: 0 var(--tp-1);
    border: 1px solid var(--tp-border-strong);
    border-radius: var(--tp-r-md);
    background: var(--tp-surface);
    color: var(--tp-ink);
    line-height: 1.2;
}
.tt-date__day { font-size: 15px; font-weight: 600; white-space: nowrap; font-variant-numeric: tabular-nums; }
.tt-date__dow { color: var(--tp-ink-muted); font-size: var(--tp-fs-xs); }
.tt-date:active { background: var(--tt-sel-bg); }
.tt-date:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }
@media (hover: hover) { .tt-date:hover { border-color: var(--tp-ink); background: var(--tt-band); } }
.tt-book .tp-cta { min-height: 52px; margin-top: var(--tp-4); }
.tt-book .tp-cta:active { background: var(--tp-cta-hover); }
.tp-product a.tt-book__all { display: flex; justify-content: center; align-items: center; min-height: 44px; margin-top: var(--tp-1); font-size: var(--tp-fs-sm); }
.tt-book__partner { margin: var(--tp-2) 0 0; color: var(--tp-ink-muted); font-size: var(--tp-fs-xs); line-height: 1.4; text-align: center; }
.tp-product a.tt-booking__guide {
    display: flex;
    align-items: center;
    gap: var(--tp-3);
    margin-top: var(--tp-4);
    padding-top: var(--tp-4);
    border-top: 1px solid var(--tt-line);
    color: var(--tp-ink);
    text-decoration: none;
}
.tt-booking__guide img, .tt-booking__ava {
    display: inline-flex;
    flex: none;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    object-fit: cover;
    background: var(--tp-surface-accent);
    font-weight: 600;
}
.tt-booking__guide-name { display: block; font-size: 15px; font-weight: 600; line-height: 1.4; }
.tt-booking__guide-role { display: block; color: var(--tp-ink-muted); font-size: var(--tp-fs-xs); line-height: 1.4; }
.tt-booking__guide-role .bi { color: var(--tp-star); }
@media (hover: hover) { .tp-product a.tt-booking__guide:hover .tt-booking__guide-name { color: var(--tp-link); } }
.tp-product a.tt-booking__guide:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; border-radius: var(--tp-r-sm); }

/* --- Факты --- */
.tt-facts {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--tp-4) var(--tp-5);
    margin: 0;
    padding: var(--tp-4) 0;
    border-block: 1px solid var(--tt-line);
}
@media (min-width: 768px) { .tt-facts { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.tt-fact { min-width: 0; }
.tt-fact dt { color: var(--tp-ink-muted); font-size: var(--tp-fs-xs); font-weight: 400; line-height: 1.4; }
.tt-fact dd { margin: 2px 0 0; color: var(--tp-ink); font-size: var(--tp-fs-md); font-weight: 600; line-height: 1.4; }

/* --- Вкладки-якоря: липкие внутри основной колонки. Линия панели одна (inset-тень),
   подчеркивание текущего пункта рисует сама ссылка на той же нижней границе (R6).
   Полоса не шире колонки: лишние вкладки прокручиваются внутри нее. --- */
.tt-tabs {
    position: sticky;
    top: 0;
    z-index: 5;
    max-width: 100%;
    margin: 0;
    padding: 0;
    background: var(--tp-surface);
    box-shadow: inset 0 -1px 0 var(--tt-line);
    overflow-x: auto;
    scrollbar-width: none;
}
.tt-tabs::-webkit-scrollbar { display: none; }
.tt-tabs ul { display: flex; margin: 0; padding: 0; list-style: none; }
.tp-product .tt-tabs a {
    display: inline-flex;
    align-items: center;
    min-height: 48px;
    padding: 0 var(--tp-3);
    color: var(--tt-ink-2);
    font-size: 15px;
    font-weight: 500;
    white-space: nowrap;
    text-decoration: none;
}
.tt-tabs li:first-child a { padding-left: 0; }
.tp-product .tt-tabs a[aria-current="true"] { color: var(--tp-ink); box-shadow: inset 0 -2px 0 var(--tp-ink); }
@media (hover: hover) { .tp-product .tt-tabs a:hover { color: var(--tp-ink); } }
.tt-tabs a:focus-visible { outline: 2px solid var(--tp-link); outline-offset: -2px; }

/* --- Секции основной колонки --- */
.tt-main > .tt-sec { margin-top: var(--tp-6); padding-top: var(--tt-sec-gap); border-top: 1px solid var(--tt-line); }
.tt-main > .tt-tabs + .tt-sec { margin-top: var(--tp-5); padding-top: 0; border-top: 0; }
.tt-main > .tt-sec:first-child { margin-top: 0; padding-top: 0; border-top: 0; }

/* «Коротко о главном» */
.tt-pros { max-width: 72ch; margin: var(--tp-3) 0 0; color: var(--tt-ink-2); font-size: var(--tp-fs-sm); line-height: 1.6; }
.tt-pros__cap { color: var(--tp-ink); font-weight: 600; }

/* Описание: блоки партнера (общий шаблон description_blocks) в ритме раздела */
.tt-card-page .tt-prose .block-item.p-2 { padding: 0 !important; }
.tt-card-page .tt-prose .block-item h3 { margin: var(--tp-5) 0 var(--tp-2) !important; font-size: var(--tp-fs-lg); font-weight: 600; line-height: 1.4; }
.tt-card-page .tt-prose > .description-blocks:first-child .block-item:first-child h3 { margin-top: 0 !important; }
.tt-more { margin-top: var(--tp-2); }

/* Программа по дням: лента с маркерами */
.tt-program { margin: 0; padding: 0; list-style: none; }
.tt-day { position: relative; display: grid; grid-template-columns: 32px minmax(0, 1fr); column-gap: var(--tp-4); padding-bottom: var(--tp-2); }
.tt-day::before { content: ""; position: absolute; left: 15px; top: 48px; bottom: 0; width: 2px; background: var(--tt-line); }
.tt-day:last-child::before { display: none; }
.tt-day__mark {
    grid-row: 1;
    grid-column: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    margin-top: 8px;
    border-radius: 50%;
    background: var(--tp-surface-accent);
    color: var(--tp-ink);
    font-size: var(--tp-fs-sm);
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}
.tt-day__head { grid-row: 1; grid-column: 2; margin: 0; }
.tt-day__toggle {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 20px;
    grid-template-areas: "num chev" "title chev";
    align-items: center;
    column-gap: var(--tp-3);
    width: 100%;
    min-height: 48px;
    padding: var(--tp-2) 0;
    border: 0;
    background: none;
    color: var(--tp-ink);
    text-align: left;
}
.tt-day__num { grid-area: num; color: var(--tp-ink-muted); font-size: var(--tp-fs-xs); font-weight: 600; line-height: 1.4; }
/* Название дня: перенос только по границе слова, без слогов (было «лед-ник») */
.tt-day__title { grid-area: title; font-size: var(--tp-fs-lg); font-weight: 600; line-height: 1.4; overflow-wrap: break-word; hyphens: manual; }
.tt-day__toggle .bi { grid-area: chev; color: var(--tp-ink-muted); transition: transform .2s; }
.tt-day__toggle[aria-expanded="true"] .bi { transform: rotate(180deg); }
@media (hover: hover) { .tt-day__toggle:hover .tt-day__title { color: var(--tp-link); } }
.tt-day__toggle:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; border-radius: var(--tp-r-sm); }
.tt-day__body { grid-column: 2; padding: var(--tp-1) 0 var(--tp-5); }
.tt-day__body p { max-width: 72ch; margin: 0 0 var(--tp-3); color: var(--tt-ink-2); line-height: 1.6; }
.tt-day__photos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--tp-2); margin: 0; padding: 0; list-style: none; }
.tt-day__photos li { position: relative; min-width: 0; }
.tt-day__photos a { position: relative; display: block; border-radius: var(--tp-r-sm); }
.tt-day__photos a:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }
.tt-day__photos img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--tp-r-sm); background: var(--tt-band); }
.tt-day__ph4 { display: none; }
.tt-day__more {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--tp-r-sm);
    background: var(--tt-pill-dark);
    color: #fff;
    font-size: var(--tp-fs-md);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}
.tt-day__more--md { display: none; }
@media (min-width: 768px) {
    .tt-day__photos { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .tt-day__ph4 { display: block; }
    .tt-day__more--sm { display: none; }
    .tt-day__more--md { display: flex; }
}

/* Что включено */
.tt-incl { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--tp-5); }
@media (min-width: 768px) { .tt-incl { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--tp-6); } }
.tt-incl h3 { margin: 0 0 var(--tp-3); font-size: var(--tp-fs-lg); font-weight: 600; line-height: 1.4; }
.tt-incl ul { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.tt-incl li { display: grid; grid-template-columns: 20px minmax(0, 1fr); gap: var(--tp-3); font-size: var(--tp-fs-md); line-height: 1.5; }
.tt-incl .bi { font-size: 18px; line-height: 24px; }
.tt-incl--yes .bi { color: var(--tp-price); }
.tt-incl--no .bi { color: var(--tp-ink-muted); }

/* Даты и цены: сетка по месяцам */
.tt-cal__price { margin: 0; color: var(--tp-ink-muted); font-size: var(--tp-fs-sm); }
.tt-cal__len { color: var(--tt-ink-2); }
.tt-cal__amount { color: var(--tp-ink); font-size: var(--tp-fs-lg); font-weight: 700; font-variant-numeric: tabular-nums; }
.tt-cal__month { margin: var(--tp-4) 0 var(--tp-2); font-size: var(--tp-fs-md); font-weight: 600; line-height: 1.5; }
.tt-cal__month:first-of-type { margin-top: 0; }
.tt-cal { display: grid; grid-template-columns: repeat(auto-fill, minmax(52px, 1fr)); gap: var(--tp-2); margin: 0; padding: 0; list-style: none; }
@media (min-width: 768px) { .tt-cal { grid-template-columns: repeat(auto-fill, minmax(64px, 1fr)); } }
.tt-cal__day {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    width: 100%;
    height: 56px;
    padding: 0;
    border: 1px solid var(--tp-border-strong);
    border-radius: var(--tp-r-md);
    background: var(--tp-surface);
    color: var(--tp-ink);
}
.tt-cal__num { font-size: var(--tp-fs-xl); font-weight: 700; line-height: 1; font-variant-numeric: tabular-nums; }
.tt-cal__dow { color: var(--tp-ink-muted); font-size: var(--tp-fs-xs); line-height: 1.2; }
.tt-cal__day:active { background: var(--tt-sel-bg); }
.tt-cal__day:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }
@media (hover: hover) { .tt-cal__day:hover { border-color: var(--tp-ink); background: var(--tt-band); } }

/* Начало и финиш, карта по нажатию: место под карту зарезервировано */
.tt-route { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: var(--tp-2) var(--tp-5); margin: 0; }
.tt-route dt { color: var(--tp-ink-muted); font-size: var(--tp-fs-sm); font-weight: 400; line-height: 1.6; }
.tt-route dd { margin: 0; color: var(--tp-ink); font-size: var(--tp-fs-md); line-height: 1.5; }
.tt-map { margin-top: var(--tp-4); }
.tt-map #block-map { position: relative; }
.tt-map #yMap { width: 100%; aspect-ratio: 16 / 9; border-radius: var(--tp-r-md); background: var(--tp-surface-accent); overflow: hidden; }
.tt-map__load {
    position: absolute;
    inset: 50% auto auto 50%;
    transform: translate(-50%, -50%);
    min-height: 44px;
    padding: var(--tp-2) var(--tp-4);
    border: 1px solid var(--tp-border-strong);
    border-radius: var(--tp-r-pill);
    background: var(--tp-surface);
    color: var(--tp-ink);
    font-weight: 600;
}
.tt-map__load:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }

/* Гид */
.tt-host { display: grid; grid-template-columns: 80px minmax(0, 1fr); gap: var(--tp-4); align-items: center; }
.tt-host__ava {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 80px;
    height: 80px;
    border-radius: 50%;
    object-fit: cover;
    background: var(--tp-surface-accent);
    color: var(--tp-ink);
    font-size: 28px;
    font-weight: 600;
}
.tt-host__body { min-width: 0; }
.tt-host__name { margin: 0; font-size: 20px; font-weight: 600; line-height: 1.3; }
.tp-product .tt-host__name a { color: var(--tp-ink); text-decoration: none; }
@media (hover: hover) { .tp-product .tt-host__name a:hover { color: var(--tp-link); text-decoration: underline; } }
.tt-host__role { margin: 2px 0 0; color: var(--tp-ink-muted); font-size: var(--tp-fs-sm); line-height: 1.5; }
.tt-host__stats { display: flex; flex-wrap: wrap; margin: var(--tp-1) 0 0; color: var(--tt-ink-2); font-size: var(--tp-fs-sm); line-height: 1.5; font-variant-numeric: tabular-nums; }
.tt-host__stats .bi { color: var(--tp-star); }
.tt-host__bio { margin-top: var(--tp-4); color: var(--tt-ink-2); }
.tt-host__more { margin: var(--tp-6) 0 var(--tp-4); font-size: var(--tp-fs-lg); font-weight: 600; line-height: 1.4; }
.tt-host__tours { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--tt-line); }
.tt-host__tour { position: relative; display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: var(--tp-3); align-items: center; padding: var(--tp-3) 0; border-bottom: 1px solid var(--tt-line); }
.tt-host__thumb { display: block; width: 96px; height: 72px; border-radius: var(--tp-r-sm); overflow: hidden; background: var(--tt-band); }
.tt-host__thumb img { display: block; width: 100%; height: 100%; object-fit: cover; }
.tt-host__tour-text { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.tp-product a.tt-host__tour-link {
    display: -webkit-box;
    min-height: 0;
    overflow: hidden;
    color: var(--tp-ink);
    font-size: 15px;
    font-weight: 600;
    line-height: 1.4;
    text-decoration: none;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    -webkit-box-orient: vertical;
}
.tt-host__tour-link::after { content: ""; position: absolute; inset: 0; }
.tt-host__tour-link:focus-visible { outline: none; }
.tt-host__tour:has(.tt-host__tour-link:focus-visible) { outline: 2px solid var(--tp-link); outline-offset: 2px; border-radius: var(--tp-r-sm); }
@media (hover: hover) { .tt-host__tour:hover .tt-host__tour-link { color: var(--tp-link); } }
.tt-host__tour-len { color: var(--tp-ink-muted); font-size: var(--tp-fs-sm); }

/* Отзывы: итог партнера одной строкой, ниже последние выгруженные отзывы.
   !important - против mb-4, shadow-sm и text-success Bootstrap в общем шаблоне
   review_items.html, который в разделе не правится. */
.tt-rv-sum { display: flex; flex-wrap: wrap; align-items: center; gap: var(--tp-3); margin: 0 0 var(--tp-4); }
.tt-rv-sum__score { color: var(--tp-ink); font-size: var(--tp-fs-4xl); font-weight: 700; line-height: 1; font-variant-numeric: tabular-nums; }
.tt-rv-sum__stars { color: var(--tp-star); font-size: 18px; letter-spacing: 2px; }
.tt-rv-sum__count { color: var(--tp-ink-muted); font-size: 15px; }
.tt-reviews__title { margin: var(--tp-5) 0 var(--tp-3); font-size: var(--tp-fs-lg); font-weight: 600; line-height: 1.4; }
.tt-card-page .rv-controls__filters { gap: var(--tp-2); }
.tt-card-page .rv-chip {
    display: inline-flex;
    align-items: center;
    height: 36px;
    padding: 0 14px;
    border: 1px solid var(--tp-border-strong);
    border-radius: var(--tp-r-pill);
    background: var(--tp-surface);
    color: var(--tp-ink);
    font-size: var(--tp-fs-sm);
    font-weight: 500;
}
.tt-card-page .rv-chip.is-on { border-color: var(--tp-ink); background: var(--tp-ink); color: #fff; }
.tt-card-page .rv-chip:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }
@media (hover: hover) { .tt-card-page .rv-chip:hover { border-color: var(--tp-ink); } }
.tt-card-page #product-reviews .product-review { margin-bottom: var(--tp-3) !important; border-radius: var(--tp-r-md); background: var(--tt-band); box-shadow: none !important; }
.tt-card-page #product-reviews .card-body { padding: var(--tp-5); }
.tt-card-page #product-reviews .text-success { color: var(--tp-ink) !important; }
.tt-card-page #product-reviews .card-body > .fw-500 { gap: var(--tp-1) var(--tp-3); font-size: var(--tp-fs-sm); color: var(--tp-ink-muted); }
.tt-card-page #product-reviews .card-body > .fw-500 .fs-6 { color: var(--tp-ink); font-size: var(--tp-fs-md) !important; font-weight: 600; }
.tt-card-page #product-reviews .card-body > .fw-500 .bi { color: var(--tp-star); }
.tt-card-page #product-reviews .card-body > div:last-child { max-width: 72ch; color: var(--tp-ink); line-height: 1.6; }
.tt-rv-more { margin-top: var(--tp-4); }
.tt-card-page #btnMoreReviews {
    width: 100%;
    min-height: 48px;
    padding: 0 var(--tp-6);
    border: 1px solid var(--tp-ink);
    border-radius: var(--tp-r-md);
    background: var(--tp-surface);
    color: var(--tp-ink);
    font-size: var(--tp-fs-md);
    font-weight: 600;
}
.tt-card-page #btnMoreReviews:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }
@media (hover: hover) { .tt-card-page #btnMoreReviews:hover { background: var(--tt-band); color: var(--tp-ink); } }
@media (min-width: 768px) { .tt-card-page #btnMoreReviews { width: auto; } }

/* Важно знать: открытый список */
.tt-facts-list { margin: 0; }
.tt-facts-list > div { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--tp-1); padding: var(--tp-4) 0; }
.tt-facts-list > div + div { border-top: 1px solid var(--tt-line); }
@media (min-width: 768px) { .tt-facts-list > div { grid-template-columns: 200px minmax(0, 1fr); gap: var(--tp-5); } }
.tt-facts-list dt { font-size: var(--tp-fs-md); font-weight: 600; line-height: 1.5; }
.tt-facts-list dd { max-width: 72ch; margin: 0; color: var(--tt-ink-2); line-height: 1.6; }

/* --- После сетки: похожие туры и перелинковка на всю ширину --- */
.tt-after { margin-top: var(--tp-8); padding-top: var(--tt-sec-gap); border-top: 1px solid var(--tt-line); }
.tt-similar__nav { display: flex; gap: var(--tp-2); }
.tt-card-page .tt-similar .nb {
    width: 40px;
    height: 40px;
    border: 1px solid var(--tp-border-strong);
    background: var(--tp-surface);
    color: var(--tp-ink);
}
.tt-card-page .tt-similar .nb:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }
@media (hover: hover) { .tt-card-page .tt-similar .nb:hover { border-color: var(--tp-ink); } }
.tt-similar .swiper-slide { height: auto; }
.tt-similar .tt-tcard { height: 100%; grid-template-rows: auto auto 1fr auto auto; }
.tt-similar .tt-tcard__title { align-self: start; }

@media (prefers-reduced-motion: reduce) {
    .tt-tcard__media img, .tt-tile__link img, .tt-day__toggle .bi, .tt-faq .tp-faq__q .bi { transition: none; }
    .tt-tcard:hover .tt-tcard__media img, .tt-tile__link:hover img { transform: none; }
}

/* ==========================================================================
   Листинги T1-T5. Компоненты фильтров (tp-check, tp-toggle, tp-range,
   tp-chip--removable, tp-pager, tp-listing__more) берутся из tokens.css,
   здесь раскладка, шторка и блоки раздела. Mobile-first: до 992px панель -
   шторка (только со скриптом, метка tt-js ставится в head до отрисовки, без
   сдвига), без скрипта панель стоит над списком.
   ========================================================================== */

/* Фон страницы белый, как у карточки (product-page.css): серый bg-light базового шаблона
   под фото и плитками читался как подложка. */
body.tt-listing-page { background: var(--tp-surface) !important; }
.tt-listing { padding-bottom: var(--tp-7); }
.tt-h1 { margin: var(--tp-4) 0 var(--tp-2); font-size: var(--tp-fs-2xl); font-weight: 700; line-height: 1.2; }
.tt-lead { margin: 0 0 var(--tp-4); color: var(--tp-ink-muted); font-size: var(--tp-fs-md); }
/* Лид в синей полосе шапки: цвет текста шапки, как .tp-sh__lead (белый на #0a58ca). */
.tp-sh__head .tt-lead { color: var(--tp-sh-ink, #fff); }
.tt-listing > .tt-sec, .tt-listing > .tt-crosslinks { margin-top: var(--tt-sec-gap); }
.tt-listing > .tt-hub__first { margin-top: var(--tp-2); }
.tt-fallback__title { margin: var(--tp-6) 0 var(--tp-4); }

/* --- Раскладка панели и списка --- */
.tt-board { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--tp-4); padding-top: var(--tp-2); }
.tt-results { min-width: 0; }

.tt-filters {
    display: flex;
    flex-direction: column;
    border: 1px solid var(--tp-border);
    border-radius: var(--tp-r-md);
    background: var(--tp-surface);
}
.tt-filters__head {
    display: flex;
    align-items: center;
    gap: var(--tp-3);
    padding: var(--tp-3) var(--tp-4);
    border-bottom: 1px solid var(--tp-border);
}
.tt-filters__title { display: flex; align-items: center; gap: var(--tp-2); margin: 0 auto 0 0; font-size: var(--tp-fs-md); font-weight: 700; }
.tt-filters__badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 22px;
    height: 22px;
    padding: 0 6px;
    border-radius: var(--tp-r-pill);
    background: var(--tp-link);
    color: #fff;
    font-size: var(--tp-fs-xs);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}
.tt-filters__reset { display: inline-flex; align-items: center; min-height: 32px; color: var(--tp-link); font-size: var(--tp-fs-sm); text-decoration: none; }
.tt-filters__reset:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; border-radius: 4px; }
@media (hover: hover) { .tt-filters__reset:hover { text-decoration: underline; text-underline-offset: 3px; } }
.tt-filters__close {
    display: none;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border: 0;
    border-radius: var(--tp-r-sm);
    background: var(--tp-surface-tint);
    color: var(--tp-ink);
}
.tt-filters__body { display: flex; flex-direction: column; gap: var(--tp-4); padding: var(--tp-4); }
.tt-filters__foot {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--tp-3);
    padding: var(--tp-3) var(--tp-4);
    border-top: 1px solid var(--tp-border);
}
.tt-filters__foot .tp-filters__submit { min-height: 44px; }
.tt-filters__foot .tp-filters__submit[disabled] { opacity: .6; }
.tt-filters .tp-filters__chips { gap: var(--tp-2); }
.tt-filters .tp-toggle { border-radius: var(--tp-r-sm); }
.tt-filters .tp-toggle { min-height: 44px; padding: 0 12px; font-size: var(--tp-fs-sm); }

.tt-group { position: relative; min-width: 0; margin: 0; padding: 0; border: 0; }
/* Линия снизу: у fieldset legend лежит на верхней рамке и перекрыла бы ее */
.tt-group:not(:last-child) { padding-bottom: var(--tp-4); border-bottom: 1px solid var(--tt-line); }
.tt-group:has(+ .tt-more) { padding-bottom: 0; border-bottom: 0; }
.tt-group__legend {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--tp-2);
    float: left;   /* legend в потоке: сброс группы встает на его строку, а не на первую строку значений */
    width: 100%;
    margin-bottom: var(--tp-2);
    color: var(--tp-ink);
    font-size: var(--tp-fs-sm);
    font-weight: 700;
}
.tt-group > :not(.tt-group__legend) { clear: left; }
/* Сброс группы стоит вне legend (в legend ссылка попадала в имя группы), справа от заголовка */
.tt-group__legend:has(+ .tt-group__reset) { padding-right: 88px; }
.tt-group__reset { position: absolute; top: 0; right: 0; display: inline-flex; align-items: center; min-height: 24px; font-size: var(--tp-fs-sm); font-weight: 400; color: var(--tp-link); }
.tt-group__more {
    margin-top: var(--tp-2);
    padding: var(--tp-2) 0;
    border: 0;
    background: none;
    color: var(--tp-link);
    font-size: var(--tp-fs-sm);
}
.tt-group .tp-filters__list { gap: var(--tp-2); }
.tt-group .tp-check { min-height: 40px; align-items: center; }
.tt-group .tp-check__title { font-size: var(--tp-fs-sm); font-weight: 500; }
.tt-group .tp-toggle.is-empty input { cursor: not-allowed; }
.tt-check-link { color: inherit; text-decoration: none; }
.tt-check-link:hover .tp-check__title { text-decoration: underline; }
.tt-check-link:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; border-radius: 4px; }
/* Месяцы и дни сеткой: значения разной длины не рвут ритм, счетчик всегда под значением */
.tt-cells { display: grid; gap: var(--tp-2); margin: 0; padding: 0; list-style: none; }
.tt-cells--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.tt-cells--5 { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--tp-1); }
.tt-filters .tt-cell {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0;
    width: 100%;
    min-height: 48px;
    padding: var(--tp-1) 2px;
    line-height: 1.25;
    text-align: center;
}
.tt-cell__name { font-weight: 500; white-space: nowrap; }
.tt-cell__year { color: var(--tp-ink-muted); font-size: var(--tp-fs-xs); font-weight: 400; }
.tt-cell:has(input:checked) .tt-cell__year { color: rgba(255, 255, 255, .85); }
/* Распределение цен над ползунком; поля по 11px равны половине ручки: столбики совпадают с ходом ручек */
.tt-range__viz[hidden] { display: none; }
.tt-hist { display: flex; align-items: flex-end; gap: 2px; height: 40px; padding-inline: 11px; }
.tt-hist__bar { flex: 1 1 0; min-width: 0; border-radius: 2px 2px 0 0; background: var(--tp-link); opacity: .45; }
.tt-hist__bar.is-off { background: var(--tp-border-strong); opacity: 1; }
.tt-range__cap { display: block; margin-bottom: var(--tp-1); color: var(--tp-ink-muted); font-size: var(--tp-fs-xs); }

.tt-search { position: relative; margin-bottom: var(--tp-3); }
.tt-search__icon { position: absolute; inset-block: 0; inset-inline-start: 12px; display: flex; align-items: center; color: var(--tp-ink-muted); }
.tt-search__input {
    width: 100%;
    min-height: 44px;
    padding: 0 var(--tp-3) 0 36px;
    border: 1px solid var(--tp-border-strong);
    border-radius: var(--tp-r-sm);
}
.tt-search__input:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 1px; }

/* Переключатель: вся строка активна, фокус на дорожке */
.tt-switch {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--tp-3);
    min-height: 44px;
    cursor: pointer;
}
.tt-switch__text { font-size: var(--tp-fs-sm); font-weight: 500; }
.tt-switch__input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.tt-switch__track {
    position: relative;
    flex: none;
    width: 40px;
    height: 24px;
    border-radius: var(--tp-r-pill);
    background: var(--tp-border-strong);
    transition: background .15s;
}
.tt-switch__track::after {
    content: "";
    position: absolute;
    top: 3px;
    left: 3px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: var(--tp-surface);
    box-shadow: var(--tp-shadow-sm);
    transition: transform .15s;
}
.tt-switch__input:checked + .tt-switch__track { background: var(--tp-link); }
.tt-switch__input:checked + .tt-switch__track::after { transform: translateX(16px); }
.tt-switch__input:focus-visible + .tt-switch__track { outline: 2px solid var(--tp-link); outline-offset: 2px; }
.tt-switch.is-empty { color: var(--tp-ink-muted); cursor: not-allowed; }

/* --- Панель инструментов над списком: на мобильном липкая, две кнопки пополам --- */
.tt-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: var(--tp-2) var(--tp-3); margin-bottom: var(--tp-4); }
.tt-total { margin: 0; color: var(--tp-ink); font-size: var(--tp-fs-md); font-weight: 600; font-variant-numeric: tabular-nums; }
.tt-filters-open { display: none; }
.tt-active { margin-bottom: var(--tp-4); min-height: 32px; }

.tt-sort { position: relative; margin-left: auto; }
.tt-sort__button {
    display: inline-flex;
    align-items: center;
    gap: var(--tp-1);
    min-height: 44px;
    padding: 0 var(--tp-3);
    border: 1px solid var(--tp-border-strong);
    border-radius: var(--tp-r-sm);
    background: var(--tp-surface);
    font-size: var(--tp-fs-sm);
    font-weight: 500;
    list-style: none;
    cursor: pointer;
    white-space: nowrap;
}
.tt-sort__button::-webkit-details-marker { display: none; }
.tt-sort__button:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }
@media (hover: hover) { .tt-sort__button:hover { border-color: var(--tp-ink); } }
.tt-sort__cap { color: var(--tp-ink-muted); }
.tt-sort[open] .tt-sort__button .bi { transform: rotate(180deg); }
.tt-sort__menu {
    display: flex;
    flex-direction: column;
    gap: var(--tp-1);   /* строки меню не слипаются заливкой (R1) */
    position: absolute;
    right: 0;
    z-index: 20;
    min-width: 220px;
    margin: var(--tp-1) 0 0;
    padding: var(--tp-1);
    border: 1px solid var(--tp-border);
    border-radius: var(--tp-r-sm);
    background: var(--tp-surface);
    box-shadow: var(--tp-shadow-md);
    list-style: none;
}
.tt-sort__item {
    display: flex;
    align-items: center;
    gap: var(--tp-2);
    min-height: 44px;
    padding: 0 var(--tp-3);
    border-radius: 6px;
    color: var(--tp-ink);
    font-size: var(--tp-fs-sm);
    text-decoration: none;
}
/* Пункты сортировки - кнопки формы (ссылок на закрытые ?sort= нет): сброс вида кнопки. */
button.tt-sort__item { width: 100%; border: 0; background: none; font: inherit; font-size: var(--tp-fs-sm); text-align: left; cursor: pointer; }
button.tt-sort__item:hover { background: var(--tp-surface-tint); }
button.tt-sort__item:focus-visible { outline: 2px solid var(--tp-link); outline-offset: -2px; }
.tt-sort__item.is-active { font-weight: 600; }

/* --- «Показать еще» и пагинатор --- */
.tt-listing .tp-listing__more { margin: calc(var(--tp-6) + var(--tp-2)) 0 0; }
.tt-listing .tp-listing__more-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    border: 1px solid var(--tp-border-strong);
    color: var(--tp-ink);
    font-size: var(--tp-fs-md);
    font-weight: 600;
    text-decoration: none;
}
.tt-listing .tp-listing__more-btn:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }
@media (hover: hover) { .tt-listing .tp-listing__more-btn:hover { border-color: var(--tp-ink); background: var(--tt-band); } }
@media (max-width: 767.98px) { .tt-listing .tp-listing__more-btn { width: 100%; } }
.tt-listing .tp-pager { margin: var(--tp-5) 0 0; }
.tt-listing .tp-pager__item, .tt-listing .tp-pager__arrow { width: 40px; min-width: 40px; padding: 0; }
.tt-listing .tp-pager__item.is-current { background: var(--tp-ink); color: #fff; }
.tt-listing .tp-pager__item:focus-visible, .tt-listing .tp-pager__arrow:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }

/* --- Города старта: плитки со счетчиком --- */
.tt-cities-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--tp-2); margin: 0; padding: 0; list-style: none; }
@media (min-width: 640px) { .tt-cities-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--tp-3); } }
@media (min-width: 1024px) { .tt-cities-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.tt-city {
    display: flex;
    align-items: center;
    gap: var(--tp-3);
    min-height: 64px;
    padding: var(--tp-3) var(--tp-4);
    border: 1px solid var(--tt-line);
    border-radius: var(--tp-r-md);
    color: var(--tp-ink);
    text-decoration: none;
}
.tt-city:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }
.tt-city__icon { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: var(--tp-r-sm); background: var(--tt-band); color: var(--tp-link); font-size: 18px; }
.tt-city__text { display: flex; flex: 1 1 auto; flex-direction: column; min-width: 0; }
.tt-city__name { font-size: var(--tp-fs-md); font-weight: 600; line-height: 1.3; overflow-wrap: anywhere; }
.tt-city__count { color: var(--tp-ink-muted); font-size: var(--tp-fs-sm); }
.tt-city__go { flex: none; color: var(--tp-ink-faint); transition: transform .15s ease-out, color .15s; }
@media (hover: hover) {
    .tt-city:hover { border-color: var(--tp-ink); }
    .tt-city:hover .tt-city__go { color: var(--tp-link); transform: translateX(3px); }
}

/* --- Что включено: числа по туру страницы --- */
.tt-stats { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--tp-3); margin: 0; padding: 0; list-style: none; }
@media (min-width: 640px) { .tt-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--tp-4); } }
.tt-stat { display: flex; flex-direction: column; gap: var(--tp-1); padding: var(--tp-4); border-radius: var(--tp-r-md); background: var(--tt-band); }
.tt-stat__num { color: var(--tp-ink); font-size: var(--tp-fs-2xl); font-weight: 700; line-height: 1.15; font-variant-numeric: tabular-nums; }
.tt-stat__of { color: var(--tp-ink-muted); font-size: var(--tp-fs-md); font-weight: 400; }
.tt-stat__cap { color: var(--tt-ink-2); font-size: var(--tp-fs-sm); line-height: 1.4; }

/* --- Когда ехать: столбик декоративный (число над ним текстом), месяц с заездами - кнопка --- */
.tt-when__list { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: var(--tp-2); margin: 0; padding: 0; list-style: none; }
.tt-when__cell {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--tp-1);
    padding: var(--tp-2) var(--tp-1);
    border-radius: var(--tp-r-sm);
    color: var(--tp-ink);
    text-decoration: none;
}
/* Месяц с заездами - кнопка формы фильтров (months), а не ссылка на закрытый адрес. */
button.tt-when__cell { width: 100%; border: 0; background: none; font: inherit; cursor: pointer; }
button.tt-when__cell:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }
@media (hover: hover) {
    button.tt-when__cell:hover { background: var(--tt-band); }
    button.tt-when__cell:hover .tt-when__bar { background: var(--tp-link); }
}
.tt-when__cell.is-empty { color: var(--tp-ink-muted); }
span.tt-when__cell .tt-when__bar { background: var(--tp-link); }
.tt-when__track { display: flex; align-items: flex-end; width: 100%; max-width: 40px; height: 80px; }
.tt-when__bar { display: block; width: 100%; min-height: 2px; border-radius: 4px 4px 0 0; background: #9fb9e0; }
.tt-when__count { font-size: var(--tp-fs-xs); font-variant-numeric: tabular-nums; }
.tt-when__label { font-size: var(--tp-fs-sm); }
.tt-when__note { margin: var(--tp-4) 0 0; color: var(--tt-ink-2); font-size: var(--tp-fs-sm); }

/* --- Текстовые блоки: заголовок слева, текст справа, первый абзац - лид --- */
.tt-text { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--tp-4); }
.tt-text > .tt-sec__title { margin: 0; }
.tt-text__body { max-width: 68ch; color: var(--tt-ink-2); font-size: var(--tp-fs-md); line-height: 1.65; }
.tt-text__body p { margin: 0 0 var(--tp-3); }
.tt-text__body p:first-child { color: var(--tp-ink); font-size: var(--tp-fs-lg); }
@media (min-width: 1024px) {
    .tt-text { grid-template-columns: 4fr 8fr; column-gap: var(--tp-7); }
    .tt-text > .tt-sec__title { position: sticky; top: var(--tp-4); align-self: start; }
}
/* Строка цифр хаба */
.tt-numbers { display: flex; flex-wrap: wrap; gap: var(--tp-4) var(--tp-7); margin: var(--tp-5) 0 0; padding: var(--tp-5) 0 0; border-top: 1px solid var(--tt-line); list-style: none; }
.tt-numbers li { display: flex; flex-direction: column; }
.tt-numbers__value { color: var(--tp-ink); font-size: var(--tp-fs-3xl); font-weight: 700; line-height: 1.1; font-variant-numeric: tabular-nums; }
.tt-numbers__cap { color: var(--tp-ink-muted); font-size: var(--tp-fs-sm); }

/* --- Хаб: «Туры по странам» до открытия шлюза --- */
.tt-rail + .tt-rail { margin-top: calc(var(--tp-6) + var(--tp-2)); }
.tt-rail__head { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--tp-1) var(--tp-3); margin-bottom: var(--tp-3); }
.tt-rail__title { margin: 0; font-size: var(--tp-fs-lg); font-weight: 600; line-height: 1.4; }
.tt-rail__count { color: var(--tp-ink-muted); font-size: var(--tp-fs-sm); font-variant-numeric: tabular-nums; }
.tt-grid--rail { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: 78%; margin: 0 -12px; padding: 0 12px 4px; overflow-x: auto; scroll-snap-type: x proximity; scroll-padding-inline: 12px; scrollbar-width: none; }
.tt-grid--rail::-webkit-scrollbar { display: none; }
.tt-grid--rail > .tt-tcard { scroll-snap-align: start; }
@media (min-width: 640px) { .tt-grid--rail { grid-auto-columns: 45%; } }
@media (min-width: 1024px) { .tt-grid--rail { grid-auto-flow: row; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0; padding: 0; overflow: visible; } }
.tt-hub .tt-themes--hub { margin-bottom: 0; }

/* Условия применяются без перезагрузки: старая выдача приглушается с задержкой, быстрый ответ не мигает */
[data-tt-dynamic] { transition: opacity .15s; }
.tt-form.is-loading [data-tt-dynamic] { opacity: .5; transition-delay: .12s; }
.tt-relax { display: flex; flex-direction: column; align-items: center; gap: var(--tp-2); margin: 0 0 var(--tp-4); padding: 0; list-style: none; }
.tt-relax__link {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0 var(--tp-2);
    min-height: 44px;
    padding: var(--tp-1) var(--tp-4);
    border: 1px solid var(--tp-border-strong);
    border-radius: var(--tp-r-sm);
    background: var(--tp-surface);
    color: var(--tp-link);
    font-size: var(--tp-fs-sm);
    text-decoration: none;
}
.tt-relax__link:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }
@media (hover: hover) { .tt-relax__link:hover { background: var(--tp-surface-tint); } }
.tt-relax__count { color: var(--tp-ink-muted); font-variant-numeric: tabular-nums; }

/* --- Мобильная шторка (только со скриптом) --- */
.tt-backdrop { position: fixed; inset: 0; z-index: 1055; background: rgba(22, 35, 43, .5); }
.tt-backdrop[hidden] { display: none; }

@media (max-width: 991.98px) {
    .tt-js .tt-filters-open { display: inline-flex; }
    .tt-js .tt-filters {
        position: fixed;
        inset: 8vh 0 0 0;
        z-index: 1060;
        border-radius: var(--tp-r-lg) var(--tp-r-lg) 0 0;
        transform: translateY(100%);
        visibility: hidden;
        transition: transform .2s ease, visibility 0s linear .2s;
    }
    .tt-js .tt-filters.is-open { transform: none; visibility: visible; transition: transform .2s ease; }
    .tt-js .tt-filters__close { display: inline-flex; }
    .tt-js .tt-filters__body { flex: 1 1 auto; overflow-y: auto; overscroll-behavior: contain; }
    .tt-js .tt-filters__foot { padding-bottom: calc(var(--tp-3) + env(safe-area-inset-bottom)); }
    .tt-js .tt-filters__foot .tp-filters__submit { flex: 1 1 100%; order: -1; }
    .tt-toolbar {
        position: sticky;
        top: 0;
        z-index: 6;
        margin-inline: -12px;
        padding: var(--tp-2) 12px;
        background: var(--tp-surface);
        box-shadow: inset 0 -1px 0 var(--tt-line);
    }
    .tt-js .tt-filters-open, .tt-sort { flex: 1 1 0; min-width: 0; }
    .tt-js .tt-filters-open, .tt-sort__button { justify-content: center; width: 100%; min-height: 44px; }
    .tt-sort__button { overflow: hidden; }
    .tt-total { order: 3; flex-basis: 100%; color: var(--tt-ink-2); font-size: var(--tp-fs-sm); font-weight: 500; }
    .tt-sort { margin-left: 0; }
    .tt-sort__menu { right: 0; left: auto; }
}
@media (max-width: 479.98px) { .tt-sort__cap { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; } }

@media (min-width: 992px) {
    .tt-board { grid-template-columns: 288px minmax(0, 1fr); column-gap: var(--tp-6); align-items: start; }
    .tt-filters__foot .tp-filters__submit { flex: 1 1 auto; }
    .tt-js .tt-filters__foot { display: none; }   /* применяется сразу, кнопка только без скрипта */
    .tt-filters .tp-toggle { min-height: 36px; }
    .tt-h1 { font-size: var(--tp-fs-3xl); }
}

/* Панель без прокрутки внутри: липкая, пока свернута и помещается в окно; раскрытое «Все фильтры»
   выше окна, поэтому панель тогда обычная и уходит вместе со страницей. */
@media (min-width: 992px) and (min-height: 820px) {
    .tt-filters { position: sticky; top: var(--tp-3); }
    .tt-filters:has(.tt-more[open]) { position: static; }
}

/* --- «Все фильтры»: основные поля сверху, остальное раскрывается --- */
.tt-more__btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--tp-2);
    min-height: 48px;
    padding: 0 var(--tp-4);
    border-radius: var(--tp-r-md);
    background: #eef4fd;
    color: var(--tp-link);
    font-size: var(--tp-fs-md);
    font-weight: 600;
    list-style: none;
    cursor: pointer;
}
.tt-more__btn::-webkit-details-marker { display: none; }
.tt-more__btn:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }
@media (hover: hover) { .tt-more__btn:hover { background: #e2ecfb; } }
.tt-more__btn .bi { transition: transform .15s ease-out; }
.tt-more[open] > .tt-more__btn .bi { transform: rotate(180deg); }
.tt-more__label--close, .tt-more[open] .tt-more__label--open { display: none; }
.tt-more[open] .tt-more__label--close { display: inline; }
.tt-more__badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 22px;
    height: 22px;
    margin-left: var(--tp-1);
    padding: 0 6px;
    border-radius: var(--tp-r-pill);
    background: var(--tp-link);
    color: #fff;
    font-size: var(--tp-fs-xs);
    font-variant-numeric: tabular-nums;
}
.tt-more__body { display: flex; flex-direction: column; gap: var(--tp-4); padding-top: var(--tp-4); }

@media (prefers-reduced-motion: reduce) {
    .tt-more__btn .bi { transition: none; }
    .tt-js .tt-filters, .tt-switch__track, .tt-switch__track::after, [data-tt-dynamic] { transition: none; }
}


/* --- Форма подбора на /tours и /tours/podbor: в синей полосе, размеры как у поиска главной --- */
.tt-find { display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; margin-top: 24px; }
.tt-find__field { position: relative; min-width: 0; }
.tt-find__label { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.tt-find__input { display: block; width: 100%; height: 56px; padding: 0 16px; border: 0; border-radius: 8px; background-color: #fff; color: var(--tp-ink); font: inherit; font-size: 18px; }
.tt-find__input::placeholder { color: var(--tp-ink-muted); }
.tt-find__input:focus-visible { outline: 2px solid var(--tp-sh-ink); outline-offset: 2px; }
.tt-find__select {
    padding-right: 40px; overflow: hidden; text-align: left; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%23667085' stroke-width='2' d='m1 1.5 5 5 5-5'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 16px center;
}
.tt-find__select.is-empty { color: var(--tp-ink-muted); }
.tt-find__submit { height: 56px; padding: 0 32px; border: 0; border-radius: 8px; background: var(--tp-sh-accent); color: var(--tp-sh-accent-ink); font: inherit; font-size: 18px; font-weight: 600; cursor: pointer; }
.tt-find__submit:hover { text-decoration: underline; }
.tt-find__submit:focus-visible { outline: 2px solid var(--tp-sh-ink); outline-offset: 2px; }
.tt-find__list { position: absolute; top: 100%; inset-inline: 0; z-index: 20; margin: var(--tp-1) 0 0; padding: var(--tp-1); max-height: 17rem; overflow-y: auto; list-style: none; border: 1px solid var(--tp-border); border-radius: var(--tp-r-md); background: var(--tp-surface); box-shadow: var(--tp-shadow-md); }
.tt-find__list li { display: flex; align-items: baseline; justify-content: space-between; gap: var(--tp-3); min-height: 40px; padding: var(--tp-2) var(--tp-3); border-radius: var(--tp-r-sm); color: var(--tp-ink); font-size: var(--tp-fs-sm); cursor: pointer; }
.tt-find__list li[aria-selected="true"], .tt-find__list li:hover { background: var(--tp-surface-accent); }
.tt-find__muted { flex: none; color: var(--tp-ink-muted); }
.tt-find-results { padding-top: var(--tp-6); }
.tt-find-foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 24px; margin-top: 16px; }
.tt-find-quick { align-items: center; min-width: 0; margin-top: 0; }
.tt-find-quick__label { color: var(--tp-sh-muted); font-size: var(--tp-fs-xs); font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
.tt-find-stats { margin: 0; color: var(--tp-sh-muted); font-size: var(--tp-fs-sm); line-height: 1.5; font-variant-numeric: tabular-nums; }
@media (min-width: 768px) {
    .tt-find { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .tt-find__field:first-child, .tt-find__submit { grid-column: 1 / -1; }
}
@media (min-width: 992px) {
    .tt-find { grid-template-columns: minmax(0, 1.5fr) repeat(3, minmax(0, 1fr)) auto; }
    .tt-find__field:first-child, .tt-find__submit { grid-column: auto; }
}
