/* ═══ МОБИЛЬНЫЕ СТИЛИ ВИТРИНЫ (телефон ≤480px) ═══════════════════════════════════════════════
   P1.7 (круг 3) + R4 (круг 4, 08.09): ВСЕ правила для телефона живут здесь и только здесь. Файл лежит в public/
   и в проде отдаётся ОТДЕЛЬНЫМ файлом /css/catalog-mobile.css — подключён в index.html через
   <link media="(max-width: 480px)">, в общий CSS-бандл не попадает (проверка на живом: в /assets/index-*.css
   нет блоков ≤480px, а этот файл виден отдельной строкой в сети). Десктопные стили — src/styles/catalog.css.
   Правишь телефон — правишь этот файл; десктоп не трогается (страж tests/desktop-guard.test.cjs). */

@media (max-width: 480px) { .wt-cards { grid-template-columns: minmax(0, 1fr); } }

@media (max-width: 480px) {
  .wt-badge-guar-t { display: none; }
  .wt-badge-guar { padding: 0 6px; }
}

@media (max-width: 480px) {
  /* На узком телефоне подпись кнопки («Пришлите информацию») не влезала в строку.
     Освобождаем место: сердечко избранного живёт в шапке и в меню — из панели убираем,
     кружки и зазоры чуть уже. Кнопка получает ~150px и чаще остаётся в одной строке. */
  .wt-bbar:not(.wt-bbar-cart) .wt-bbar-fav { display: none; }
  .wt-bbar:not(.wt-bbar-cart) { gap: 6px; }
  /* R1: круглые кнопки и выбор города — цель пальца 44px (кнопка при нехватке места уходит на вторую строку) */
  .wt-bbar:not(.wt-bbar-cart) .wt-bbar-round { width: 44px; height: 44px; }
  .wt-bbar-city { min-height: 44px; }
  .wt-bbar:not(.wt-bbar-cart) .wt-bbar-round-group { gap: 6px; }
  .wt-bbar:not(.wt-bbar-cart) .wt-bbar-cityname { max-width: 70px; }
  .wt-bbar:not(.wt-bbar-cart) .wt-bbar-book { font-size: 13px; padding: 9px 10px; }
}

@media (max-width: 480px) {
  .wt-charter-dates { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .wt-charter-dates .wt-chip { width: 100%; }
}

@media (max-width: 480px) {
  .wt-bbar:not(.wt-bbar-cart) .wt-bbar-city { padding: 6px 8px; gap: 4px; }
  .wt-bbar:not(.wt-bbar-cart) .wt-bbar-cityname { max-width: 56px; }
}

@media (max-width: 480px) {
  .wt-scrollhint { position: relative; }
  .wt-scrollhint::after {
    content: ""; position: absolute; right: 0; top: 0; bottom: 0; width: 26px; pointer-events: none;
    background: linear-gradient(90deg, rgba(246, 244, 248, 0), var(--bg, #F6F4F8));
  }
}

@media (max-width: 480px) {
  .wt-fx-bar-best { display: none; }
  .wt-fx-barcol .wt-fx-bar-best-star { display: block; font-size: 13px; line-height: 1; margin-top: 2px; }
}

@media (max-width: 480px) {
  .wt-tp-heroprice { gap: 6px; }
  .wt-tp-heroprice-main b { font-size: 23px; }
}

@media (max-width: 480px) {
  .wt-ucard-from { min-height: 0; }
  .wt-from-cities { max-height: 49px; }          /* строка чипов + строка счётчика */
  .wt-from-countries { margin-top: 12px; }
}

@media (max-width: 480px) {
  /* на телефоне место дороже: сердечко живёт в шапке, в панели остаются четыре элемента */
  .wt-bbar:not(.wt-bbar-cart) .wt-bbar-fav { display: none; }
  .wt-bbar:not(.wt-bbar-cart) .wt-bbar-cityname { max-width: 64px; }
}

/* D11 и D15 (08.09, решение владельца): на телефоне «<Страна> в цифрах» и «Советы бывалых»
   занимают по экрану, а на решение «еду или нет» не влияют. Прячем только на телефоне —
   на десктопе оба блока остаются как были. Разбираться с тем, про что цифры (страна или тур),
   владелец решил отдельно. */
@media (max-width: 480px) {
  #s-numbers, #s-tips, .wt-tp-nums-inprog { display: none !important; }
}

@media (max-width: 480px) {
  .wt-day-rest:not(.on) { display: none; }
  .wt-day-teaser { display: block; margin: 6px 0 10px; font-size: 15px; line-height: 1.5; color: var(--ink); }
  .wt-tnday-more { display: none; }        /* дублирующая кнопка «Ещё о дне» */
  .wt-day-more {
    display: inline-flex; align-items: center; gap: 8px; margin-top: 10px;
    min-height: 44px; padding: 0 18px; border: 0; border-radius: 999px; cursor: pointer;
    background: var(--grad-magnet, linear-gradient(90deg, #7A1F4B, #F03048)); color: #fff;
    font-family: inherit; font-size: 14.5px; font-weight: 700; letter-spacing: .1px;
    box-shadow: 0 6px 18px rgba(240, 48, 72, .28);
  }
  .wt-day-more.on { background: var(--surface, #fff); color: var(--plum); box-shadow: none; border: 1px solid var(--line, #E7E2EE); }
}

@media (max-width: 480px) {
  .wt-sp-daylbl { display: block; font-size: 19px; font-weight: 700; color: var(--plum); margin: 18px 0 2px; }
  .wt-sp-daygroup + .wt-sp-daygroup { border-top: 1px solid var(--line, #E7E2EE); padding-top: 6px; }
}

@media (max-width: 480px) {
  .wt-tp-gal { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
  .wt-tp-gal-it { aspect-ratio: 1 / 1; border-radius: 12px; }
  .wt-tp-gal-it:first-child { grid-column: span 2; grid-row: span 2; aspect-ratio: auto; }
  .wt-tp-gal-it:nth-child(n + 7) { display: none; }
  .wt-tp-gal-more { display: none; }
  .wt-tp-gal-more-m { display: flex; flex-direction: column; gap: 3px; font-size: 13px; }
  .wt-tp-gal-more-m b { font-size: 13px; font-weight: 700; }
}

@media (max-width: 480px) { .wt-prog-facts { gap: 6px 12px; } .wt-prog-fact { font-size: 13px; } }

/* D21: пальцевые цели на страницах туров. Замер на 390px нашёл четыре вида мелких целей:
   чипы мест в программе (34px), стрелки слайдера (34px), столбики цен (31–40px) и текстовые
   ссылки внутри абзацев (19px). Правим высоту, не трогая вид на десктопе. */
@media (max-width: 480px) {
  .wt-sp-chip { min-height: 44px; padding-top: 0; padding-bottom: 0; display: inline-flex; align-items: center; }
  .wt-progslider-btn { width: 44px !important; height: 44px !important; }
  .wt-fx-bar { min-height: 44px; }
  .wt-fx-link { display: inline-flex; align-items: center; min-height: 44px; font-size: 13px !important; }
}

/* D21, добор мелких целей: чипы городов выезда, кнопка города и ссылка «посмотреть». */
@media (max-width: 480px) {
  .wt-from-chip { min-height: 44px; }
  .wt-fx-citybtn { min-height: 44px; }
  .wt-crumbs a, .wt-crumbs b { min-height: 44px; display: inline-flex; align-items: center; }
}

@media (max-width: 480px) {
  .wt-tl::before { left: 68px; }
  .wt-tl-head { grid-template-columns: 46px 30px 1fr 18px; gap: 6px; padding: 9px 2px; }
  .wt-tl-time { font-size: 13px; }
  .wt-tl-name { font-size: 16px; }
  .wt-tl-sub { font-size: 14px; }
  /* на телефоне раскрытый пункт занимает всю ширину — иначе фото ужимается до 250px */
  .wt-tl-body { padding: 0 2px 14px 14px; }
  .wt-tl-photo img { max-width: 100%; }
}

/* ══ M1 (круг 2, 08.09): нижняя панель на телефоне — ДВА РЯДА ═══════════════════════════════════
   Решение владельца изменено: одна строка отменяется. Сверху компактный контекст
   (город · поделиться · кабинет), снизу — кнопка заявки во всю ширину: она главная,
   и до нижнего края экрана палец дотягивается легче всего.
   Только телефон (≤480px): на планшете и десктопе панель остаётся строкой. */
@media (max-width: 480px) {
  .wt-bbar:not(.wt-bbar-cart) {
    flex-wrap: wrap; gap: 8px; padding: 8px 10px; min-height: 0;
  }
  /* верхний ряд */
  .wt-bbar:not(.wt-bbar-cart) .wt-bbar-city {
    order: 0; flex: 0 1 auto; min-width: 44px; min-height: 40px; overflow: hidden;
    padding: 6px 12px; font-size: 13.5px;
  }
  .wt-bbar:not(.wt-bbar-cart) .wt-bbar-cityname { max-width: 150px; }
  .wt-bbar:not(.wt-bbar-cart) .wt-bbar-round-group { order: 1; flex: none; margin-left: auto; gap: 8px; }
  .wt-bbar:not(.wt-bbar-cart) .wt-bbar-round { width: 40px; height: 40px; }
  /* нижний ряд — кнопка заявки во всю ширину */
  .wt-bbar:not(.wt-bbar-cart) .wt-bbar-book,
  .wt-bbar:not(.wt-bbar-cart) .wt-bbar-book.wt-bbar-book-wide {
    order: 2; flex: 1 0 100%; width: 100%; min-width: 0; max-width: none;
    min-height: 46px; padding: 11px 14px; font-size: 15px; white-space: nowrap;
    overflow: hidden; text-overflow: ellipsis;
  }
  /* высота панели с двумя рядами: 8 + 40 + 8 + 46 + 8 = 110px */
  .wt-bbar:not(.wt-bbar-cart) { max-height: 110px; }
  .wt-has-bbar { padding-bottom: calc(126px + env(safe-area-inset-bottom, 0px)); }
}

@media (max-width: 480px) { .wt-tnday-photo-dup { display: none; } }

/* M3: свёрнутый день — суть дня (2–3 строки), строка маркеров, лёгкая ссылка-раскрытие */
@media (max-width: 480px) {
  .wt-day-teaser { font-size: 15px; line-height: 1.5; margin: 6px 0 8px; color: var(--ink); }
  .wt-day-marks { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 4px; }
  .wt-day-mark {
    display: inline-flex; align-items: center; gap: 5px; padding: 4px 9px; border-radius: 999px;
    background: var(--bg-tint, #F5F1F8); color: var(--plum); font-size: 13px; font-weight: 600; line-height: 1.25;
  }
  .wt-day-mark svg { flex: none; }
  .wt-day-more, .wt-day-more.on {
    display: inline-flex; align-items: center; justify-content: flex-start; gap: 6px;
    margin-top: 2px; min-height: 44px; padding: 0; border: 0; border-radius: 0;
    background: none; box-shadow: none; color: var(--plum);
    font-family: inherit; font-size: 15px; font-weight: 700; letter-spacing: 0; cursor: pointer;
  }
}

/* R1/R2 (круг 4, 08.09): мобильный модуль цен — компонент MobilePriceShelf (классы wt-msh-*).
   Заливка снизу вверх ОТМЕНЕНА владельцем. Месяцы — чипы 4 в ряд с переносом (все видны сразу, без свайпа),
   даты — столбики 7 в ряд с переносом на общей базовой линии: высота = цена (дешевле ниже), цена и
   длительность внутри, подпись даты под столбиком, минимум — рамка и ★ без слов, легенда одной строкой.
   Десктопные столбики (.wt-tnb-*, .wt-tng-*) на телефоне не рендерятся и здесь не упоминаются. */
@media (max-width: 480px) {
  .wt-msh-chips { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
  /* T4 (круг 5): два уровня — месяц 13px серым сверху, цена 17px/700 снизу; цвет только фоном,
     текст одного цвета; дешёвые без рамок; активный — фирменная заливка, белый текст, тень */
  .wt-msh-chip {
    box-sizing: border-box; min-height: 50px; padding: 5px 3px 4px; border-radius: 10px;
    border: 1px solid var(--line, #E7E2EE); background: var(--surface, #fff); color: var(--ink);
    font: inherit; cursor: pointer; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0;
    font-variant-numeric: tabular-nums; line-height: 1.15;
  }
  .wt-msh-chip-m { font-size: 13px; font-weight: 600; color: var(--muted); white-space: nowrap; }
  .wt-msh-chip-p { font-size: 17px; font-weight: 700; white-space: nowrap; letter-spacing: -0.2px; }
  .wt-msh-chip-n { font-size: 11px; opacity: .7; line-height: 1.1; white-space: nowrap; }
  .wt-msh-chip.on { background: var(--grad-magnet, linear-gradient(90deg, #7A1F4B, #F03048)); border-color: transparent; color: #fff; box-shadow: 0 6px 14px rgba(240, 48, 72, .28); }
  .wt-msh-chip.on .wt-msh-chip-m, .wt-msh-chip.on .wt-msh-chip-p, .wt-msh-chip.on .wt-msh-chip-n { color: #fff; }
  /* даты */
  .wt-msh-bars { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 0 4px; align-items: end; margin-top: 10px; }
  .wt-msh-barcol { display: flex; flex-direction: column; align-items: stretch; min-width: 0; }
  .wt-msh-bar {
    position: relative; box-sizing: border-box; width: 100%; border: 0; border-radius: 7px 7px 3px 3px; cursor: pointer;
    display: flex; flex-direction: column; align-items: center; justify-content: flex-start; padding: 4px 1px 0; gap: 1px;
    font: inherit; font-variant-numeric: tabular-nums;
  }
  .wt-msh-bar-p { font-size: 12px; font-weight: 800; line-height: 1.1; letter-spacing: -0.4px; white-space: nowrap; }
  .wt-msh-bar-eur { font-size: 10px; font-weight: 600; opacity: .8; margin-left: 1px; }
  .wt-msh-bar-d { font-size: 11px; font-weight: 600; opacity: .95; line-height: 1.1; white-space: nowrap; }
  /* C (дополнение 09.09): цена старше суток — столбик с датой «оновлено» */
  .wt-msh-bar-upd { font-size: 8.5px; line-height: 1.1; opacity: .9; white-space: nowrap; }
  .wt-msh-bar.old { outline: 1px dashed rgba(255,255,255,.55); outline-offset: -3px; }
  .wt-msh-bar-star { position: absolute; right: 2px; top: -2px; font-size: 10px; line-height: 1; color: #601860; }
  .wt-msh-bar.min { box-shadow: 0 0 0 2px #fff, 0 0 0 3.5px #601860; }
  .wt-msh-bar.sel { outline: 2px solid var(--plum); outline-offset: 2px; }
  .wt-msh-cap { font-size: 11px; font-weight: 600; color: var(--ink); text-align: center; margin: 5px 0 10px; line-height: 1.2; white-space: nowrap; }
  .wt-msh-legend { margin-top: 2px; font-size: 12.5px; color: var(--muted); }
  /* варианты длительности выбранной даты — строкой под столбиками */
  .wt-msh-durs { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 8px; font-size: 13px; }
  .wt-msh-durs-lbl { color: var(--muted); font-weight: 600; margin-right: 2px; }
  .wt-msh-dur { border: 1px solid var(--line); background: var(--surface); border-radius: 999px; padding: 7px 11px; font: inherit; font-size: 13px; cursor: pointer; color: var(--ink); min-height: 36px; }
  .wt-msh-dur.on { border-color: var(--plum); color: var(--plum); background: var(--bg-tint); }
}

/* M5: «в другом городе дешевле» — на телефоне заметный блок-предложение вместо серой строки */
@media (max-width: 480px) {
  .wt-cheaper-line { display: none; }
  .wt-cheaper {
    display: flex; flex-wrap: wrap; align-items: center; gap: 10px 12px; margin-top: 14px;
    padding: 14px; border-radius: 16px; background: #EAF7EE;
  }
  .wt-cheaper-ic {
    width: 36px; height: 36px; border-radius: 50%; background: #1B7A3D; color: #fff; flex: none;
    display: inline-flex; align-items: center; justify-content: center; font-size: 20px; font-weight: 800;
  }
  .wt-cheaper-body { flex: 1 1 180px; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
  .wt-cheaper-title { font-size: 16px; line-height: 1.25; color: var(--heading); }
  .wt-cheaper-sub { font-size: 13px; color: var(--muted); line-height: 1.35; }
  .wt-cheaper-btn {
    flex: 1 1 100%; min-height: 44px; border: 1.5px solid #1B7A3D; color: #1B7A3D; background: none;
    border-radius: 999px; padding: 9px 14px; font-family: inherit; font-size: 14px; font-weight: 700; cursor: pointer;
  }
}

/* T6 (круг 5, 08.09): вкладки над ценами («Календар міста / Мінімальні ціни / Інші міста») на телефоне
   переносятся во второй ряд — третья вкладка больше не режется краем экрана, свайпа нет. */
@media (max-width: 480px) {
  .wt-tabs-row { flex-wrap: wrap; overflow: visible; gap: 6px; padding-right: 0; }
  .wt-tabs-row::after { display: none; }
}

/* T4: на самых узких телефонах число дат в чипе не показываем — остаются месяц и цена */
@media (max-width: 360px) {
  .wt-msh-chip-n { display: none; }
  .wt-msh-chip { min-height: 44px; }
}

/* ══ Круг 6 (08.09): U1–U4, только телефон ═══════════════════════════════════════════════════════ */
/* U2: рукописный шрифт для подсказок — свой файл, не с серверов Google (GDPR) */
@font-face { font-family: "Caveat"; font-style: normal; font-weight: 500 600; font-display: swap; src: url("/fonts/caveat-cyr.woff2") format("woff2"); unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Caveat"; font-style: normal; font-weight: 500 600; font-display: swap; src: url("/fonts/caveat-lat.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+2000-206F, U+20AC, U+2122; }
@media (max-width: 480px) {
  /* U2: подсказки-закорючки — линия и надпись, без подложки; рисуются один раз при появлении */
  .wt-sq { display: inline-flex; align-items: center; gap: 4px; color: #601860; font-family: "Caveat", "Segoe Print", cursive; font-size: 15px; font-weight: 600; line-height: 1.1; pointer-events: none; }
  .wt-sq-t { white-space: nowrap; }
  .wt-sq-p { stroke-dasharray: 160; stroke-dashoffset: 160; }
  .wt-sq.on .wt-sq-p { animation: wt-sq-draw .6s ease-out forwards; }
  @keyframes wt-sq-draw { to { stroke-dashoffset: 0; } }
  .wt-sq-up, .wt-sq-down { flex-direction: column; align-items: flex-start; gap: 0; }
  .wt-msh-hintcell { display: flex; align-items: center; justify-content: flex-start; min-width: 0; padding-left: 2px; overflow: hidden; }
  .wt-msh-hintcell-bars { align-self: end; padding-bottom: 30px; }
  .wt-msh-hintcell .wt-sq-t { font-size: 14px; }
  .wt-msh-hintrow { display: flex; justify-content: flex-end; padding: 2px 8px 0 0; }
  .wt-cheaper-hint { display: flex; justify-content: flex-end; padding: 6px 12px 0 0; margin-bottom: -6px; }
  /* U1: минимум по всем городам — строкой под датами, ссылкой на вкладку «Інші міста» */
  .wt-msh-other { margin-top: 8px; font-size: 13px; font-weight: 500; color: var(--muted); }
  .wt-msh-other button { background: none; border: 0; padding: 0; font: inherit; font-weight: 700; color: var(--plum); text-decoration: underline; cursor: pointer; }
  /* U4.1: выбор города вылета — ключевой переключатель, не серый селект */
  .wt-tn-cityrow { display: grid !important; gap: 2px !important; margin-bottom: 12px !important; }
  .wt-tn-cityrow > span:first-child { font-size: 13px; font-weight: 500; color: var(--muted); }
  .wt-tn-cityselect {
    -webkit-appearance: none; appearance: none; width: 100%; box-sizing: border-box; min-height: 48px;
    padding: 8px 40px 8px 36px !important; border: 1.5px solid #C9BFD6 !important; border-radius: 12px !important;
    background: var(--surface, #fff) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23601860' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E") no-repeat 10px center / 18px 18px;
    font-size: 17px !important; font-weight: 700; color: var(--heading); position: relative;
  }
  .wt-tn-cityrow { position: relative; }
  .wt-tn-cityrow::after { content: "▾"; position: absolute; right: 14px; bottom: 12px; font-size: 20px; color: var(--plum); pointer-events: none; }
  .wt-tn-cityselect:active, .wt-tn-cityselect:focus { box-shadow: 0 6px 16px rgba(96, 24, 96, .18); outline: none; }
  .wt-tn-cityrow .wt-cityhint { grid-column: 1 / -1; }
  /* U4.2: шкала весов модуля цен — подписи 13/500, названия 15/600, цены 17/700, заголовки 20/700 */
  .wt-msh-cap { font-size: 12px; font-weight: 500; letter-spacing: -0.2px; }
  .wt-msh-legend, .wt-msh-chip-n { font-weight: 500; }
  .wt-tn-subtitle { font-size: 15px !important; font-weight: 600 !important; }
  .wt-tn-subtitle .wt-tn-min { font-weight: 700; }
  .wt-msh-bar-p { font-size: 13px; font-weight: 700; }
  .wt-msh-chip-m { font-weight: 500; }
  #s-dates h2 { font-size: 20px !important; font-weight: 700 !important; }
  .wt-tabs-row .wt-chip { font-weight: 600 !important; font-size: 13px !important; }
  /* U3: попап — карточка тура */
  .wt-mtc-ovl { position: fixed; inset: 0; z-index: 95; background: rgba(20, 10, 25, .55); display: flex; align-items: flex-end; justify-content: center; }
  .wt-mtc {
    position: relative; width: 100%; max-height: 92vh; overflow: auto; -webkit-overflow-scrolling: touch;
    background: #fff; border-radius: 20px 20px 0 0; padding: 20px 20px calc(20px + env(safe-area-inset-bottom, 0px));
    box-sizing: border-box; color: var(--ink);
  }
  .wt-mtc-x { position: absolute; top: 8px; right: 8px; width: 44px; height: 44px; border: 0; background: none; font-size: 28px; line-height: 1; color: var(--muted); cursor: pointer; }
  .wt-mtc-h { font-size: 20px; font-weight: 700; color: var(--plum); padding-right: 44px; }
  .wt-mtc-title { font-size: 18px; font-weight: 700; color: var(--heading); margin-top: 4px; }
  .wt-mtc-facts { display: flex; flex-wrap: wrap; gap: 4px 12px; margin-top: 8px; font-size: 13px; font-weight: 500; color: var(--ink); }
  .wt-mtc-sec { border-top: 1px solid #EAEAF0; margin-top: 12px; padding-top: 12px; }
  .wt-mtc-lbl { font-size: 13px; font-weight: 500; color: var(--muted); margin-bottom: 6px; }
  .wt-mtc-toggle { width: 100%; text-align: left; background: none; border: 0; padding: 0; font: inherit; font-size: 15px; font-weight: 600; color: var(--plum); display: flex; align-items: center; gap: 6px; min-height: 32px; cursor: pointer; }
  .wt-mtc-toggle span { margin-left: auto; }
  .wt-mtc-legs { display: grid; gap: 10px; margin-top: 8px; }
  .wt-mtc-leg { display: grid; grid-template-columns: 64px 1fr; gap: 8px; }
  .wt-mtc-leg-k { font-size: 13px; font-weight: 500; color: var(--muted); padding-top: 2px; }
  .wt-mtc-leg-t { font-size: 15px; font-weight: 600; color: var(--heading); font-variant-numeric: tabular-nums; }
  .wt-mtc-leg-d { font-size: 13px; font-weight: 500; color: var(--ink); margin-top: 2px; }
  .wt-mtc-leg-n { font-size: 12px; font-weight: 500; color: var(--muted); margin-top: 2px; }
  .wt-mtc-leg-w { font-size: 12.5px; font-weight: 600; color: #B4690E; margin-top: 2px; }
  .wt-mtc-more { background: none; border: 0; padding: 0; font: inherit; font-size: 13px; font-weight: 600; color: var(--plum); text-align: left; cursor: pointer; min-height: 32px; }
  .wt-mtc-incl { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
  .wt-mtc-incl li { font-size: 13px; font-weight: 500; color: var(--ink); display: flex; gap: 6px; line-height: 1.35; }
  .wt-mtc-incl li span { color: #1B7A3D; font-weight: 700; flex: none; }
  .wt-mtc-price-v { font-size: 15px; font-weight: 600; color: var(--ink); }
  .wt-mtc-price-v b { font-size: 24px; font-weight: 700; color: var(--crimson, #F03048); }
  .wt-mtc-price-2 { font-size: 12.5px; font-weight: 500; color: var(--muted); margin-top: 2px; }
  .wt-mtc-btn { display: flex; width: 100%; box-sizing: border-box; justify-content: center; min-height: 48px; font-size: 16px; text-decoration: none; }
  .wt-mtc-note { margin-top: 12px; font-size: 12px; font-weight: 500; color: var(--muted); line-height: 1.45; }
  /* на телефоне прежний попап-справка о рейсе не показывается — карточка тура вместо него */
  .wt-tnair-pop.wt-tnair-pop-legacy { display: none !important; }
  /* автобусные туры: карточка выбранной даты внутри страницы прячется — вместо неё попап-карточка */
  .wt-fx-card-mode .wt-fx-detailcol { display: none !important; }
}

/* ══ Круг 7 (08.09): V1, V3, V4, V6 — только телефон ══════════════════════════════════════════════ */
@media (max-width: 480px) {
  /* V1: сотрудник — подпись роли рядом с иконкой в нижней панели */
  .wt-bbar:not(.wt-bbar-cart) .wt-bbar-staff { height: 40px; padding: 0 12px 0 10px; border-color: var(--plum); color: var(--plum); font-size: 13px; font-weight: 700; }
  .wt-bbar:not(.wt-bbar-cart) .wt-bbar-staff .wt-bbar-username { max-width: 96px; }
  /* V4: объединённая подсказка справа от подзаголовка месяца — не отодвигает контент */
  .wt-tn-subrow { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 30px; }
  .wt-tn-subhint { position: absolute; right: 0; top: -18px; flex-direction: row; align-items: center; gap: 2px; }
  .wt-tn-subhint .wt-sq-t { font-size: 14px; }
  .wt-sq-updown { display: inline-flex; align-items: center; gap: 2px; }
  /* V6: подсказка к выбору города — в свободном месте справа от вкладок */
  .wt-tabs-hint { margin-left: auto; align-self: flex-end; flex-direction: row-reverse; align-items: flex-end; gap: 4px; max-width: 200px; }
  .wt-tabs-hint .wt-sq-t { white-space: normal; text-align: right; line-height: 1.05; font-size: 14px; }
  .wt-tabs-hint svg { flex: none; }
  /* V3: разбивка цены для сотрудника */
  .wt-mtc-qt { width: 100%; border-collapse: collapse; font-size: 13px; font-weight: 500; color: var(--ink); }
  .wt-mtc-qt td { padding: 3px 0; vertical-align: top; }
  .wt-mtc-qt td:last-child { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; font-weight: 600; padding-left: 10px; }
  .wt-mtc-qt-sum td { border-top: 1px solid #EAEAF0; padding-top: 6px; font-weight: 600; }
  .wt-mtc-qt-total td { border-top: 1px solid #EAEAF0; padding-top: 6px; font-weight: 700; color: var(--plum); font-size: 14px; }
  .wt-mtc-qt-muted { color: var(--muted); font-weight: 500; white-space: normal; }
  .wt-mtc-more span { margin-right: 2px; }
}

/* ===== Ночь 08→09.09, блок A (регресс) ===== */
/* A1: даты Тенерифе — группа столбиков по длительностям (5д/6д/8д…), группы переносятся строками */
@media (max-width: 480px) {
  .wt-msh-groups { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 0 10px; margin-top: 10px; }
  .wt-msh-group { display: flex; flex-direction: column; align-items: stretch; position: relative; }
  .wt-msh-group-row { display: flex; align-items: flex-end; gap: 3px; }
  .wt-msh-group .wt-msh-bar { width: 40px; padding: 4px 0 0; }
  .wt-msh-group .wt-msh-bar-p { font-size: 11.5px; letter-spacing: -0.5px; }
  .wt-msh-group .wt-msh-bar-d { font-size: 10.5px; }
  .wt-msh-group .wt-msh-cap { margin: 5px 0 12px; }
  .wt-msh-group.sel .wt-msh-cap { color: var(--plum); font-weight: 700; }
}
/* A2: автобусные столбики — та же ширина, что в авиа: 7 в ряд, перенос строками, без прокрутки */
@media (max-width: 480px) {
  .wt-fx-bars { display: grid !important; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 0 4px; align-items: end; overflow: visible !important; flex-wrap: wrap; padding-bottom: 0; }
  .wt-fx-bars-few .wt-fx-barcol, .wt-fx-barcol { flex: none; min-width: 0; max-width: none; position: relative; }
  .wt-fx-bar { width: 100%; padding: 5px 1px 0; font-size: 12px; letter-spacing: -0.4px; border-radius: 7px 7px 3px 3px; }
  .wt-fx-bar b { white-space: nowrap; }
  .wt-fx-bar-date { font-size: 11px; margin: 5px 0 10px; font-weight: 600; letter-spacing: -0.2px; }
  /* A3: звёздочка минимума — НА столбике (внутри), подписи под столбиком нет */
  .wt-fx-barcol .wt-fx-bar-best, .wt-fx-barcol .wt-fx-bar-best-star { display: none; }
  .wt-fx-bar-star { display: block; position: absolute; right: 2px; top: 1px; font-size: 12px; line-height: 1; color: #fff; text-shadow: 0 0 2px #601860, 0 0 3px #601860; }
  .wt-fx-bar-on .wt-fx-bar-star { display: none; }
  .wt-fx-bar-min { box-shadow: 0 0 0 2px #fff, 0 0 0 3.5px #601860; }
  /* A3: легенда одной строкой, без градиента и второй половины */
  .wt-fx-scale { margin-top: 2px; font-size: 12.5px; }
  .wt-fx-scale-grad, .wt-fx-scale span:nth-child(3) { display: none; }
}
/* A5: карточка тура — города вылета: две строки чипов (36px) + строка «ещё N городов», без км;
   заголовок «Вылетаем из … — ближайший к вам» переносится, а не режется */
@media (max-width: 480px) {
  .wt-from-chip { min-height: 36px; }
  .wt-fc-km { display: none; }
  .wt-from-cities { max-height: 104px; }
  .wt-from-you { white-space: normal; height: auto; min-height: 24px; line-height: 1.25; padding-top: 3px; padding-bottom: 3px; }
}
/* A7/A8: строка «Найдешевше з усіх міст» + подпись над блоком «Найближче вигідне до вас» */
@media (max-width: 480px) {
  .wt-cheaper-all { display: block; margin-top: 12px; font-size: 13.5px; line-height: 1.35; color: var(--ink); }
  .wt-cheaper-all-lbl { color: var(--muted); font-weight: 600; }
  .wt-cheaper-all-btn { background: none; border: 0; padding: 0; font: inherit; font-size: 13.5px; font-weight: 800; color: var(--plum); cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }
  .wt-cheaper-lbl { font-size: 11.5px; font-weight: 700; letter-spacing: .3px; text-transform: uppercase; color: #1B7A3D; }
}
/* C1: разбивка агента — разделитель и строка рейса под билетом */
@media (max-width: 480px) {
  .wt-mtc-qt-sep td { padding: 4px 0 0; border-top: 1px solid #EAEAF0; }
  .wt-mtc-qt-sub { font-size: 11.5px; font-weight: 500; color: var(--muted); line-height: 1.3; margin-top: 1px; }
  .wt-rest { padding: 16px; }
  .wt-rest-h { font-size: 18px; }
}
/* D1: хлебные крошки на телефоне — одна строка, только два последних уровня («Іспанія → WOW Тенеріфе»), без пустой полосы */
@media (max-width: 480px) {
  .wt-crumbs { flex-wrap: nowrap !important; overflow: hidden; white-space: nowrap; gap: 6px !important; }
  .wt-crumbs .wt-crumb:not(.wt-crumb-tail), .wt-crumbs .wt-crumb-arrow:not(.wt-crumb-tail) { display: none; }
  .wt-crumbs a, .wt-crumbs b { min-height: 32px; }
  .wt-crumbs .wt-crumb-tail b { overflow: hidden; text-overflow: ellipsis; display: block; max-width: 70vw; }
  .wt-crumbs-wrap { margin-bottom: 12px !important; }
  .wt-tp-hero { margin-top: 0 !important; }
}
/* D2: вкладки навигации по туру — в два ряда, ничего не режется краем */
@media (max-width: 480px) {
  .wt-tp-anchors { flex-wrap: wrap !important; overflow: visible !important; gap: 6px !important; padding: 8px 0 10px !important; }
  .wt-tp-anchors .wt-chip { padding: 7px 12px !important; font-size: 12.5px !important; }
}

/* D3: выбор города сеткой (авиа — CityGridModal, автобусы — DeparturePicker плитками) */
@media (max-width: 480px) {
  .wt-tn-citybtn { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 8px 14px; border-radius: 12px; border: 1.5px solid var(--line); background: #fff; font: inherit; font-size: 15px; color: var(--ink); cursor: pointer; }
  .wt-tn-citybtn b { font-weight: 700; }
  .wt-cg-ovl { position: fixed; inset: 0; z-index: 130; background: rgba(42,34,51,.55); display: flex; align-items: flex-end; }
  .wt-cg { position: relative; width: 100%; max-height: 88vh; overflow: auto; background: #fff; border-radius: 20px 20px 0 0; padding: 18px 16px 24px; }
  .wt-cg-x { position: absolute; top: 8px; right: 8px; width: 44px; height: 44px; border: 0; background: none; font-size: 26px; color: var(--muted); cursor: pointer; }
  .wt-cg-h { font-size: 20px; font-weight: 800; color: var(--heading); margin: 0 44px 8px 0; }
  .wt-cg-near { font-size: 13.5px; color: var(--ink); margin-bottom: 12px; }
  .wt-cg-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .wt-cg-tile { min-height: 64px; border: 0; border-radius: 14px; padding: 9px 11px; text-align: left; display: flex; flex-direction: column; gap: 2px; font: inherit; cursor: pointer; background: #F3EFF6; color: var(--ink); }
  .wt-cg-name { font-size: 14px; font-weight: 700; line-height: 1.2; }
  .wt-cg-code { font-size: 11.5px; font-weight: 600; opacity: .7; }
  .wt-cg-price { font-size: 14.5px; font-weight: 800; }
  .wt-cg-meta { font-size: 11.5px; opacity: .85; }
  .wt-cg-tile.best { box-shadow: 0 0 0 2px #fff, 0 0 0 4px #601860; }
  .wt-cg-tile.sel { background: var(--grad-magnet, linear-gradient(90deg, #7A1F4B, #F03048)); color: #fff; }
  .wt-cg-tile.none { background: #EDEBEF; color: var(--muted); }
  .wt-cg-tile.none .wt-cg-price { font-weight: 600; }
  .wt-dp-list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .wt-dp-row { flex-direction: column; align-items: flex-start; gap: 3px; min-height: 64px; background: var(--dp-bg, #F7F4F9); color: var(--dp-fg, #2A2233); border-radius: 14px; }
  .wt-dp-row .wt-dp-price, .wt-dp-row .wt-dp-price b, .wt-dp-row .wt-dp-orig, .wt-dp-row .wt-dp-tt { color: inherit; }
  .wt-dp-row .wt-dp-price { white-space: normal; font-size: 13.5px; }
  .wt-dp-row.best { box-shadow: 0 0 0 2px #fff, 0 0 0 4px #601860; }
  .wt-dp-row.none { background: #EDEBEF; color: var(--muted); }
  .wt-dp-best { font-weight: 800; }
}
/* D3: на телефоне нативный select спрятан (его заменяет кнопка-сетка); кнопка во всю ширину как поле */
@media (max-width: 480px) {
  .wt-tn-cityrow .wt-tn-cityselect-native { display: none !important; }
  .wt-tn-cityrow:has(.wt-tn-citybtn)::after { display: none; }
  .wt-tn-citybtn { width: 100%; min-height: 48px; justify-content: space-between; border: 1.5px solid #C9BFD6; font-size: 17px; font-weight: 700; color: var(--heading); }
}

/* 1.1 (09.09): подсказка у автобусных столбиков — под датами, с отступом */
@media (max-width: 480px) {
  .wt-fx-hintrow { display: flex; justify-content: flex-end; padding: 8px 8px 0 0; }
  .wt-fx-cityhint { flex-basis: 100%; margin-left: 0; }
  .wt-fx-tabhint { margin-left: auto; align-self: flex-end; max-width: 170px; }
  .wt-fx-tabhint .wt-sq-t, .wt-fx-cityhint .wt-sq-t { white-space: normal; line-height: 1.05; font-size: 14px; }
  .wt-tng-hintrow { display: none; }
}

/* 4.1 (09.09): hero на телефоне — без «поделиться» и «сердца» (они в нижней панели), бейдж транспорта одной строкой */
@media (max-width: 480px) {
  .wt-tp-hero-top > span:last-child { display: none !important; }
  .wt-uchip-type { white-space: nowrap; font-size: 11.5px; height: 24px; }
  .wt-uchip-type span:last-child { white-space: nowrap; }
  .wt-cheap3 { font-size: 13.5px; padding: 12px; }
  .wt-cheap3-row { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; }
  .wt-cheap3-btn { min-height: 36px; margin-left: 6px; } /* 8.3 (круг 3): кнопка «Дивитись» не слипается с датой */
  .wt-cheaper, .wt-cheaper-all, .wt-cheaper-line { display: none !important; }
}

/* 0.1 п.6 (09.09): серый столбик «нет рейса» в мобильной полке */
@media (max-width: 480px) {
  .wt-msh-bar-none { height: 44px; background: #EDEBEF !important; color: var(--muted) !important; border: 1px dashed #D5D0DB; display: flex; align-items: center; justify-content: center; padding: 2px; box-sizing: border-box; }
  .wt-msh-bar-nonet { font-size: 9.5px; line-height: 1.1; text-align: center; font-weight: 600; }
  .wt-msh-chip.none .wt-msh-chip-p { visibility: hidden; }
}
@media (max-width: 480px) {
  /* СРОЧНОЕ 09.09: «уточнюємо» (источник не ответил) — тёплый тон, «немає рейсу» остаётся серым */
  .wt-msh-bar-none.wt-msh-bar-pend { background: #FFF6E5 !important; border-color: #F0C36D; color: #8A5A00 !important; }
}

/* Льорет (09.09): тарифы в панели столбиком, лид таблицы мельче */
@media (max-width: 480px) {
  .wt-mtc-tariffs { grid-template-columns: 1fr; }
  .wt-charter-lead { font-size: 15.5px; }
  .wt-charter-table td { padding: 6px 6px; font-size: 13.5px; }
}
/* Стамбул + Каппадокия (10.09): слайдер отелей 1,15 карточки с peek (единственный свайп вместе с табами T6), допки в столбик,
   попап отеля столбиком, группа туров списком, бейдж «+1» на столбике */
@media (max-width: 480px) {
  .wt-hs-card { flex-basis: 84%; }
  .wt-hs-arw { display: none; }
  .wt-hs-pop { grid-template-columns: 1fr; }
  .wt-hs-pop-gal { aspect-ratio: 4 / 3; }
  .wt-addons-grid { grid-template-columns: 1fr; }
  .wt-addon { flex-direction: column; align-items: stretch; }
  .wt-addon-btn { justify-content: center; }
  .wt-group-cards { grid-template-columns: 1fr; }
  .wt-choice-tabs { overflow-x: auto; flex-wrap: nowrap; }
  .wt-msh-bar-plus1 { position: absolute; left: 2px; top: -8px; background: #601860; color: #fff; font-size: 9px; font-weight: 800; line-height: 1; padding: 2px 4px; border-radius: 999px; }
  .wt-ist-rows { max-width: 100%; }
}
