/* style.css — один файл, разбит по секциям комментариями. Править легко: ищешь блок по заголовку.
   Палитра и шрифты сняты с оригинала PortAventura World (Montserrat / Nunito / Anton). */

/* ---------- tokens ---------- */
:root {
  --c-bg: #ffffff;
  --c-text: #333333;
  --c-muted: #707070;
  --c-muted-2: #5e5e5e;
  --c-primary: #323393;          /* фирменный тёмно-синий PortAventura */
  --c-primary-dark: #25266e;
  --c-cta: #f2662b;              /* оранжевый — основные кнопки */
  --c-cta-dark: #d9501c;
  --c-accent-red: #dc494a;
  --c-link: #3f3ee9;
  --c-star: #fcb42c;             /* звёзды рейтинга отелей */
  --c-success: #3bb549;
  --c-surface: #efeff5;
  --c-surface-2: #f7f7f7;
  --c-border: #dad9e8;
  --maxw: 1180px;
  --gap: 24px;
  --radius: 6px;                 /* карточки */
  --radius-btn: 50px;            /* кнопки-капсулы */
  --font-title: "Montserrat", Arial, sans-serif;
  --font-body: "Nunito", Verdana, sans-serif;
  --font-display: "Anton", "Montserrat", sans-serif;
  --font: var(--font-body);
}

/* ---------- reset ---------- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--font);
  color: var(--c-text);
  background: var(--c-bg);
  line-height: 1.6;
}
img, video { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
ul { list-style: none; }

/* ---------- layout ---------- */
.container { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 20px; }
main > section { padding: 72px 0; }
h1, h2, h3, h4 { font-family: var(--font-title); font-weight: 700; }
h1 { font-size: clamp(2rem, 4vw, 3rem); line-height: 1.15; }
h2 { font-size: clamp(1.6rem, 3vw, 2.25rem); margin-bottom: 16px; font-weight: 800; }
h3 { font-size: 1.2rem; }
section > .container > p { color: var(--c-muted); max-width: 60ch; }

/* заголовок секции — по центру, как на оригинале */
.section-head { text-align: center; margin-bottom: 40px; }
.section-head h2 { margin-bottom: 8px; }
.section-head p { color: var(--c-muted); max-width: 60ch; margin: 0 auto; }

/* ---------- buttons ---------- */
.btn {
  display: inline-block;
  padding: 14px 30px;
  border-radius: var(--radius-btn);
  background: var(--c-surface);
  font-family: var(--font-title);
  font-weight: 600;
  font-size: 1rem;
  line-height: 1;
  border: 2px solid var(--c-border);
  cursor: pointer;
  transition: transform .15s ease, background .15s ease, box-shadow .15s ease;
}
.btn:hover { transform: translateY(-2px); }
/* primary — фирменный синий */
.btn--primary {
  background: var(--c-primary);
  color: #fff;
  border-color: var(--c-primary);
}
.btn--primary:hover { background: var(--c-primary-dark); }
/* cta — оранжевая, главное действие (купить билеты) */
.btn--cta {
  background: var(--c-cta);
  color: #fff;
  border-color: var(--c-cta);
}
.btn--cta:hover { background: var(--c-cta-dark); }
/* outline — прозрачная с обводкой */
.btn--outline {
  background: transparent;
  color: var(--c-primary);
  border-color: var(--c-primary);
}
.btn--outline:hover { background: var(--c-primary); color: #fff; }

/* Global: горизонтальный клип переносим на <main>, потому что overflow-x на html/body
   ломает position: sticky у шапки (sticky цепляется за scroll-container, а overflow
   превращает html/body в scroll-container, и шапка перестаёт следовать за окном). */
main { overflow-x: clip; max-width: 100vw; }

/* ---------- header (шапка PortAventura, размеры сняты с оригинала) ---------- */
.site-header {
  position: sticky; top: 0; z-index: 100;
  background: #fff;
  font-family: var(--font-body);
}
.navbar {
  position: relative;
  display: flex; align-items: center; justify-content: space-between;
  height: 60px; padding: 0 24px;
  max-width: 100vw; overflow: visible;
}
.navbar__list {
  width: 100%; display: flex; align-items: center; gap: 0;
  list-style: none; padding: 0; margin: 0;
}
/* логотип — фиксированная ширина 108px (точно из css дампа: .navBar_logo__dyn9_ width:108px) */
.navbar__logo { display: flex; flex: 0 0 auto; padding: 0 16px 0 0; }
.navbar__logo img { width: 108px; display: block; }
/* пункт меню — фиксированной ширины по контенту, выравнивание flex-start.
   Themed (special) прижат к логотипу слева, остальные подряд за ним; tools — справа через margin-left:auto. */
.navbar__item {
  display: flex; justify-content: center; flex: 0 0 auto;
  align-items: stretch; height: 60px; padding: 0;
  color: var(--c-text);
  border-bottom: 4px solid transparent;
}
.navbar__tools { margin-left: auto; }
/* Полноценная клик-зона: ссылка тянется на всю высоту/ширину li, padding на ней.
   Раньше padding был на li, а <a> ловил клик только по тексту — пользователь промахивался. */
.navbar__link {
  display: flex; align-items: center; gap: 4px;
  font-size: .9rem; white-space: nowrap;
  padding: 0 18px; height: 100%; width: 100%;
  color: inherit; text-decoration: none; cursor: pointer;
}
.navbar__item:hover {
  border-bottom-color: var(--c-cta);
  color: var(--c-cta); cursor: pointer;
}
.navbar__caret { margin-left: 3px; font-size: .7rem; transition: transform .2s ease; }
.navbar__item--has-menu.is-open .navbar__caret { transform: rotate(180deg); }
.navbar__item--has-menu.is-open { border-bottom-color: var(--c-cta); color: var(--c-cta); }
/* жёлтый блок Themed events — точно из css дампа (navBar_itemSpecialHighlighted) */
.navbar__item--special {
  background: #ffc512;
  font-family: var(--font-title); font-weight: 600; font-size: .875rem;
  line-height: 1rem;
  color: var(--c-text); flex: 0 0 auto; padding: 0;
}
.navbar__item--special > .navbar__link { padding: 0 16px; }
.navbar__item--special:hover { border-bottom-color: #fff; color: var(--c-text); }
/* размеры иконки точно из css дампа: navBar_specialHighlightedIcon 33×34 + margin-right 6px */
.navbar__woody {
  display: inline-block; width: 33px; height: 34px; margin-right: 6px;
  object-fit: contain; vertical-align: middle;
}
/* правая зона */
.navbar__tools {
  display: flex; align-items: center; justify-content: flex-end;
  gap: 12px; margin-left: auto; flex: 0 0 auto;
}
.navbar__icon {
  display: flex; align-items: center; color: var(--c-primary);
  background: none; border: 0; cursor: pointer; padding: 0;
}
/* кнопка Promotions — точно из css дампа (.navBar_ctaButton__p77CM) */
.navbar__cta {
  background: #3730a3; color: #fff;
  border-radius: 50px; padding: 10px 24px;
  display: inline-flex; align-items: center;
  font-family: var(--font-title); font-size: .875rem; line-height: 1rem; font-weight: 600;
}
.navbar__cta:hover { background: #2d2785; }
/* переключатель языка */
.lang-switch { position: relative; font-weight: 700; font-size: .85rem; }
.lang-switch__current { color: var(--c-primary); cursor: pointer; }
.lang-switch__drop {
  display: none; position: absolute; top: 100%; right: 0;
  background: #fff; border: 1px solid var(--c-border); border-radius: 6px;
  padding: 6px 0; min-width: 56px; box-shadow: 0 8px 20px rgba(0,0,0,.12);
}
.lang-switch:hover .lang-switch__drop { display: block; }
.lang-switch__drop a { display: block; padding: 6px 16px; color: var(--c-muted); }
.lang-switch__drop a:hover { color: var(--c-cta); background: var(--c-surface); }

/* ---------- мега-меню (выпадающая панель пункта) ---------- */
/* Размеры — из css дампа (navBar_container__WFc55, navBar_listBoard__P4nHL,
   navBar_itemBoard__bOHmw, navBar_board__WJMvi). Триггер — клик (см. main.js). */
.mega {
  display: none;
  position: absolute; top: 60px; left: 3%; width: 94%;
  background: #fff;
  border-bottom-left-radius: 6px; border-bottom-right-radius: 6px;
  overflow: hidden;
  max-height: calc(100vh - 100px); overflow-y: auto;
  box-shadow: 0 12px 24px rgba(0,0,0,.12);
  z-index: 90;
}
.navbar__item--has-menu.is-open .mega { display: block; }
.mega__inner {
  display: flex; justify-content: space-between;
  border-top: 1px solid var(--c-border);
  position: relative;
}
.mega__list {
  list-style: none; padding: 0; margin: 0;
  width: 33.3%; border-right: 1px solid var(--c-border);
}
/* mega__item НЕ relative — иначе sublist прикрепляется к каждому li
   и спускается лесенкой. Sublist позиционируется от mega__inner. */
.mega__item { position: static; }
.mega__link {
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 20px; height: 63px; width: 100%; box-sizing: border-box;
  color: var(--c-primary); font-weight: 700;
  border-bottom: 1px solid var(--c-border); cursor: pointer;
}
.mega__link:hover, .mega__item--has-children.is-active > .mega__link { color: var(--c-cta); }
.mega__item:last-child > .mega__link { border-bottom: 0; }
/* пункты Themed events: миниатюра-фото слева от названия (как в выпадашке оригинала) */
.mega__link--thumb { justify-content: flex-start; gap: 12px; }
.mega__thumb {
  flex: 0 0 auto; width: 56px; height: 40px; border-radius: 6px;
  background-size: cover; background-position: center; background-color: var(--c-surface);
}
/* стрелка › у пункта с children — синяя как текст, заметная (по оригиналу) */
.mega__arrow {
  color: var(--c-primary); font-size: 1.4rem;
  font-weight: 400; line-height: 1; margin-left: 12px;
}
.mega__link:hover .mega__arrow,
.mega__item--has-children.is-active > .mega__link .mega__arrow,
.mega__subitem--has-children.is-active > a .mega__arrow,
.mega__subitem a:hover .mega__arrow { color: var(--c-cta); }

/* вторая колонка — список children активного пункта, 33.3% (как на оригинале) */
.mega__sublist {
  display: none; list-style: none; padding: 0; margin: 0;
  position: absolute; top: 0; left: 33.3%; width: 33.3%;
  background: #fff; border-right: 1px solid var(--c-border);
  min-height: 100%;
}
.mega__item--has-children.is-active > .mega__sublist { display: block; }
.mega__subitem { position: static; }
.mega__subitem a {
  display: flex; align-items: center; justify-content: space-between;
  height: 63px; padding: 0 20px; width: 100%; box-sizing: border-box;
  color: var(--c-primary); font-weight: 600;
  border-bottom: 1px solid var(--c-border);
}
/* третий уровень — начинается с 66.6% и растягивается до правого края.
   ВАЖНО: в шаблоне 3-й уровень имеет ОБА класса (.mega__sublist + .mega__sublist--l3),
   поэтому базовые width:33.3%/left:33.3% от .mega__sublist приходят первыми.
   Перебиваем здесь с одинаковой специфичностью — но порядок важен (наше правило ниже).
   width:auto обнуляет 33.3%, right:0 + left:66.6% растягивают до правого края. */
.mega__sublist.mega__sublist--l3 {
  left: 66.6%; right: 0; width: auto;
  border-right: none; border-left: 1px solid var(--c-border);
}
.mega__subitem--has-children.is-active > .mega__sublist--l3 { display: block; }
.mega__subitem--has-children.is-active > a { color: var(--c-cta); }
/* при активном 3-м уровне (JS добавляет .is-l3-open на .mega) — промо скрывается */
.mega.is-l3-open .mega__promos { display: none; }
.mega__subitem:last-child a { border-bottom: 0; }
.mega__subitem a:hover { color: var(--c-cta); }

/* правая зона — промо-карточки, последняя 33.3% (скрывается при 3-м уровне) */
.mega__promos {
  width: 33.3%; display: flex; gap: 16px; padding: 20px;
  align-items: stretch;
}
.mega__promo {
  position: relative; flex: 1; border-radius: 8px; overflow: hidden;
  min-height: 280px; display: flex; flex-direction: column; justify-content: flex-end;
}
/* фон промо — реальная картинка из nav.json (promo.img). Плейсхолдер серым,
   если картинка не указана. */
.mega__promo-media {
  position: absolute; inset: 0;
  background-color: var(--c-surface);
  background-size: cover; background-position: center;
}
/* затемнение снизу для читаемости заголовка поверх картинки — как на оригинале */
.mega__promo-overlay {
  position: relative; padding: 20px;
  background: linear-gradient(180deg, transparent 40%, rgba(0,0,0,.6) 100%);
  display: flex; flex-direction: column; gap: 4px;
}
.mega__promo-title {
  font-family: var(--font-title); font-weight: 800; font-size: 1.4rem;
  color: #fff; text-shadow: 0 1px 6px rgba(0,0,0,.5);
}
.mega__promo-note {
  font-family: var(--font-body); font-size: .85rem; color: #fff;
  text-shadow: 0 1px 4px rgba(0,0,0,.5);
}

/* ---------- hero-слайдер (блок 2, размеры с оригинала) ---------- */
.hero { position: relative; height: 570px; overflow: hidden; padding: 0; }
.hero__track { position: absolute; inset: 0; }
.hero-slide {
  position: absolute; inset: 0;
  opacity: 0; transition: opacity .6s ease;
  display: flex; align-items: center; justify-content: center;
}
.hero-slide.is-active { opacity: 1; }
.hero-slide__video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hero-slide__overlay { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.2), rgba(0,0,0,.45)); }
.hero-slide__content {
  position: relative; z-index: 2;
  display: flex; flex-direction: column; align-items: center; gap: 24px;
  padding: 0 20px;
}
.hero-slide__title {
  font-family: var(--font-title); font-weight: 700;
  font-size: 2.5rem; line-height: 2.75rem;
  color: #fff; text-align: center; text-shadow: 3px 3px 5px #000;
}
/* Hero CTA — крупная кнопка, чтобы попадать пальцем без прицеливания */
.hero-slide__cta {
  padding: 18px 44px; font-size: 1.1rem; font-weight: 700;
  box-shadow: 0 6px 18px rgba(0,0,0,.35);
  min-width: 240px;
}
/* стрелки листания */
.hero__arrow {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 40px; height: 40px; border-radius: 30px;
  background: #fff; border: 0; cursor: pointer; z-index: 3;
  box-shadow: 0 0 10px 3px rgba(0,0,0,.2);
  color: var(--c-primary); font-size: 1.4rem; line-height: 1;
  display: flex; align-items: center; justify-content: center;
}
.hero__arrow:hover { background: var(--c-border); }
.hero__arrow--prev { left: 20px; }
.hero__arrow--next { right: 20px; }
/* точки */
.hero__dots {
  position: absolute; bottom: 24px; left: 0; right: 0; z-index: 3;
  display: flex; justify-content: center; gap: 10px;
}
.hero__dot {
  width: 10px; height: 10px; border-radius: 50%;
  background: rgba(255,255,255,.5); border: 0; cursor: pointer; padding: 0;
}
.hero__dot.is-active { background: #fff; }

/* ---------- booking widget (wrapper + Tickets-tab custom controls + guests popup) ---------- */
/* Wrapper позиционирует плашку оригинала ПОД hero, вылетая поверх на -60px */
.booking-section { padding: 0; }
.booking-section .priceAndAvailability_root__GSRt_ {
  position: relative; z-index: 10;
  width: 1100px; max-width: calc(100% - 40px);
  margin: -60px auto 0; background: #fff; border-radius: 16px;
  box-shadow: 0 6px 24px rgba(0,0,0,.12); padding: 24px 28px;
}
/* Сильнее, чем оригинальные правила оригинального CSS (специфичности ниже специальных тегов) */
.priceAndAvailability_header__1JJlV { display: flex; gap: 8px; margin-bottom: 18px; border-bottom: 1px solid #eee; }
.tab_rootSimple__cwIUO {
  background: none; border: 0; padding: 12px 18px; cursor: pointer;
  font-family: var(--th-titleFontFamily, Montserrat); font-weight: 700; font-size: .95rem;
  color: #777; border-bottom: 3px solid transparent;
}
.tab_rootSimple__cwIUO.tab_isSelected__lPZHF {
  color: var(--th-icon, #323393); border-bottom-color: var(--th-icon, #323393);
}
.ticketsAndRoomsTab_root__Nm7gY[hidden] { display: none; }
.ticketsAndRoomsTab_root__Nm7gY {
  display: flex; gap: 16px; align-items: flex-end; flex-wrap: wrap;
}
.ticketsAndRoomsTab_selectorsBlock__Q_8x3 {
  display: flex; gap: 14px; flex: 1 1 auto; align-items: stretch; flex-wrap: wrap;
}
.ticketsAndRoomsTab_buttons__VxNGG { display: flex; align-items: stretch; }

/* Кнопки даты (оригинал) — расширяем зону клика, нативный datepicker открывается по клику */
.calendarButton_root___iFlR {
  position: relative; display: inline-flex; align-items: center; gap: 10px;
  background: var(--th-buttonTertiaryBg, #dad9e8); padding: 14px 20px; border-radius: 8px;
  cursor: pointer; min-width: 180px; color: var(--th-icon, #323393); font-weight: 600;
  border: 1px solid transparent; transition: border-color .15s;
}
.calendarButton_root___iFlR:hover { border-color: var(--th-icon, #323393); }
.calendarButton_root___iFlR input[data-booking-cal-input] {
  position: absolute; inset: 0; opacity: 0; cursor: pointer; border: 0; padding: 0;
}
.calendarFormSection_root__vskFT { display: flex; }
.calendarFormSection_inputsMobile__GPlL8 { display: none; }
.inputsCalendarFB_selectors__bJhhi { display: flex; gap: 8px; position: relative; }

/* Rooms dropdown trigger (оригинал) */
.roomFormSection_rooms__DTTKz { position: relative; }
.roomDropdown_roomDropdown__f6wTt { position: relative; }
.roomDropdown_dropdownToggle__CqZcq {
  display: flex; align-items: center; gap: 12px;
  background: var(--th-buttonTertiaryBg, #dad9e8); padding: 10px 20px; border-radius: 8px;
  border: 1px solid transparent; cursor: pointer; min-width: 220px;
}
.roomDropdown_dropdownToggle__CqZcq:hover { border-color: var(--th-icon, #323393); }
.roomDropdown_title__iB0HX {
  margin: 0; font-size: .8rem; color: var(--th-icon, #323393); font-weight: 600;
}
.roomDropdown_roomsText__tljvQ { margin: 0; font-size: .95rem; font-weight: 700; color: #333; }
.roomDropdown_arrowIcon__HGpts { width: 14px; height: 7px; color: var(--th-icon, #323393); }

/* Tickets-tab controls (наш кастом) */
.booking-tickets-col { display: flex; flex-direction: column; gap: 8px; flex: 1 1 240px; }
.booking-tickets-label { margin: 0; font-weight: 700; color: #333; font-size: .9rem; }
.booking-tickets-toggle { display: flex; border-radius: 8px; overflow: hidden; }
.booking-tickets-toggle__item {
  flex: 1; padding: 14px 16px; background: #fff; border: 1px solid var(--th-icon, #323393);
  cursor: pointer; text-align: center; font-weight: 600; color: #333;
}
.booking-tickets-toggle__item:first-child { border-radius: 8px 0 0 8px; }
.booking-tickets-toggle__item:last-child  { border-radius: 0 8px 8px 0; border-left: 0; }
.booking-tickets-toggle__item input { display: none; }
.booking-tickets-toggle__item.is-active {
  background: var(--th-buttonTertiaryBg, #dad9e8); color: var(--th-icon, #323393);
}
.booking-tickets-select {
  background: var(--th-buttonTertiaryBg, #dad9e8); border: 1px solid transparent;
  border-radius: 8px; padding: 16px 36px 16px 18px;
  font-weight: 600; color: #333; cursor: pointer;
  appearance: none; -webkit-appearance: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='7'><path d='M1 1l6 5 6-5' stroke='%23323393' stroke-width='2' fill='none'/></svg>");
  background-repeat: no-repeat; background-position: right 14px center;
}
.booking-tickets-select:hover { border-color: var(--th-icon, #323393); }

/* Guests popup */
.guests-popup {
  position: absolute; top: calc(100% + 8px); left: 0; right: auto; min-width: 320px;
  background: #fff; border-radius: 12px;
  box-shadow: 0 12px 32px rgba(0,0,0,.18); padding: 20px; z-index: 50;
}
.guests-popup[hidden] { display: none; }
.guests-popup__rooms { display: flex; flex-direction: column; gap: 14px; }
.guests-room {
  display: flex; flex-direction: column; gap: 10px;
  padding-bottom: 14px; border-bottom: 1px solid #eee;
}
.guests-room:last-child { border-bottom: none; padding-bottom: 0; }
.guests-room__head {
  display: flex; justify-content: space-between; align-items: center;
  font-weight: 800; font-size: .8rem; letter-spacing: .04em; text-transform: uppercase;
}
.guests-room__remove {
  background: none; border: 0; cursor: pointer; color: var(--th-buttonBg, #f2662b);
  font-size: 1.1rem; padding: 4px;
}
.guests-row {
  display: flex; justify-content: space-between; align-items: center;
  font-size: 1rem; font-weight: 500;
}
.guests-counter { display: flex; align-items: center; gap: 14px; }
.guests-counter__btn {
  width: 32px; height: 32px; border-radius: 50%;
  background: var(--th-buttonTertiaryBg, #dad9e8); border: 0; cursor: pointer;
  font-size: 1.1rem; line-height: 1; color: var(--th-icon, #323393); font-weight: 700;
}
.guests-counter__btn:hover { background: #c5c4d6; }
.guests-counter__btn:disabled { opacity: .4; cursor: not-allowed; }
.guests-counter__value { min-width: 18px; text-align: center; font-weight: 700; }
.guests-popup__add {
  background: none; border: 0; padding: 8px 0; margin-top: 8px;
  color: var(--th-icon, #323393); font-weight: 700; cursor: pointer;
  text-decoration: underline; text-align: right; width: 100%; font-size: .9rem;
}
.guests-popup__confirm { width: 100%; margin-top: 14px; padding: 12px; }

@media (max-width: 760px) {
  .calendarFormSection_inputsDesktop__9yogM { width: 100%; }
  .inputsCalendarFB_selectors__bJhhi { flex-direction: column; width: 100%; }
  .calendarButton_root___iFlR { width: 100%; }
  .roomDropdown_dropdownToggle__CqZcq { width: 100%; min-width: 0; }
  .ticketsAndRoomsTab_buttons__VxNGG { width: 100%; }
  .ticketsAndRoomsTab_buttons__VxNGG button { width: 100%; }
}

/* booking-табы общего движка (data-tabs) — используются на promotions и в других местах */
.tabs__panel { display: none; }
.tabs__panel.is-active { display: block; }

/* Newsletter (оригинал) — компактнее, чем 60px padding оригинала */
.newsletter_wrapper__ioiH0 { padding: 28px 20px !important; margin-top: 0 !important; }
.newsletter_title__SyFSt { margin-bottom: 12px !important; }
.newsletter_title__SyFSt * { font-size: 1.05rem !important; line-height: 1.35 !important; }
.newsletter_features__HN_eq { gap: 8px !important; margin-bottom: 14px !important; }
.newsletter_featuresItem__J75_b { font-size: .85rem !important; }
.newsletter_form__9SsLm { gap: 8px !important; }

/* ---------- accordion (оригинал) — Services / Beds блок на странице номера ---------- */
.accordion_item__Eaf9c .accordion_header__TxgAt { cursor: pointer; }
.accordion_item__Eaf9c .accordion_description__bu7LJ { display: none; }
.accordion_item__Eaf9c.is-open .accordion_description__bu7LJ { display: block; }
.accordion_item__Eaf9c .accordion_arrow__wZa7f { transition: transform .2s; }
.accordion_item__Eaf9c.is-open .accordion_arrow__wZa7f { transform: rotate(180deg); }

/* ---------- swiper-stub: оригинал использует Swiper.js, у нас своя простая горизонтальная прокрутка.
   Подменяем поведение .swiper-wrapper на overflow-x:auto с snap. Карточки .swiper-slide встают в ряд.
   Стрелки .prevArrow*/.nextArrow* — мы навешиваем на них клик в main.js (поиск ближайшего .swiper-wrapper). */
.swiper, .swiper-initialized, .swiper-horizontal {
  overflow: hidden !important; position: relative;
  width: 100% !important; max-width: 100% !important;
}
.swiper-wrapper {
  display: flex; gap: 16px; overflow-x: auto; scroll-behavior: smooth;
  scroll-snap-type: x mandatory; padding: 8px 0;
  scrollbar-width: none; transform: none !important;
  width: 100% !important; max-width: 100% !important;
  box-sizing: border-box;
}
.swiper-wrapper::-webkit-scrollbar { display: none; }
/* подстраховка: пустые слайды-фантомы Swiper (без карточки внутри) не занимают место */
.swiper-slide:empty,
.swiper-slide-duplicate { display: none !important; }
.swiper-slide {
  flex: 0 0 auto; scroll-snap-align: start;
  width: auto !important; min-width: 260px; max-width: 340px;
  transform: none !important;
  box-sizing: border-box;
}
/* Центрирование контента внутри полноширинных extracted-блоков.
   Блоки (globalInformation / cardSlider / hero-текст) занимают всю ширину 1440,
   но их внутренний контент прижат к левому краю (left:0/20) — на оригинале он
   отцентрован в ~1320px с боковыми полями. Даём заголовкам и слайдерам внутренние
   поля, чтобы строка карточек/заголовок шли по центру как на оригинале. */
[class*="globalInformation_title"],
[class*="globalInformation_slider"],
[class*="globalInformation_buttonBlock"],
[class*="cardSlider_header"],
[class*="cardSlider_title"],
[class*="cardSlider_slider"] {
  max-width: 1320px; margin-left: auto !important; margin-right: auto !important;
  padding-left: 24px; padding-right: 24px; box-sizing: border-box;
}
@media (max-width: 1100px) {
  [class*="globalInformation_title"],
  [class*="globalInformation_slider"],
  [class*="cardSlider_header"],
  [class*="cardSlider_slider"] { padding-left: 16px; padding-right: 16px; }
}

/* promotions: убираем «Read more»-тоггл (у нас текст показан целиком) и лишний воздух
   между вступительным текстом и каруселью карточек. */
[class*="readMore_readMore"] { display: none !important; }
[class*="readMore_textMore"] { max-height: none !important; -webkit-line-clamp: unset !important; }
[class*="titleAndDescription_root"] { margin-bottom: 8px !important; padding-bottom: 0 !important; }
[class*="readMore_root"] { margin-bottom: 0 !important; }
/* листинг карточек промо не должен иметь большой верхний отступ */
[class*="listCard_root"], [class*="cardSlider_root"] { margin-top: 8px !important; padding-top: 0 !important; }

/* Защита от вылета извлечённых корневых обёрток за viewport (extracted уровень).
   Все обёртки оригинала имеют max-width:1440px;width:100%, но без явного box-sizing
   с padding 80px они в редких случаях вылазят — поэтому жёстко режем по 100vw. */
.cardSlider_root__r9BYk,
.maplauncher_wrapper__p89Lk,
.globalInformation_root__o7HVa,
.newsletter_root__7EwQ1,
.hero_container__vn4jv,
[class*="cardSlider_root"],
[class*="maplauncher_wrapper"],
[class*="globalInformation_root"],
[class*="newsletter_root"],
[class*="hero_container"] {
  max-width: 100% !important; box-sizing: border-box;
}
/* Любые блоки с фиксированной шириной (Swiper-инициализированный inline-style) */
[style*="width:"][class*="swiper"] { width: 100% !important; }
/* Swiper-стрелки: рисуем chevron через ::after поверх пустого div.
   Используем большую specificity (.swiper-button-next.swiper-button-next) чтобы перебить оригинал. */
.swiper-button-prev.swiper-button-prev,
.swiper-button-next.swiper-button-next,
[class*="prevArrow"].is-stub,
[class*="nextArrow"].is-stub {
  display: flex !important; align-items: center; justify-content: center;
  width: 44px !important; height: 44px !important; border-radius: 50% !important;
  background: #fff !important; border: 0;
  box-shadow: 0 4px 14px rgba(0,0,0,.14) !important;
  cursor: pointer; z-index: 5;
}
.swiper-button-prev.swiper-button-prev::after,
.swiper-button-next.swiper-button-next::after {
  content: "" !important;
  width: 10px; height: 10px;
  border-right: 2px solid #333; border-top: 2px solid #333;
  display: inline-block;
}
.swiper-button-prev.swiper-button-prev::after { transform: rotate(-135deg); margin-left: 4px; }
.swiper-button-next.swiper-button-next::after { transform: rotate(45deg);   margin-right: 4px; }
.swiper-button-disabled { opacity: 0 !important; pointer-events: none !important; }
/* .is-stub (ставится из main.js) форсит видимость стрелки даже если оригинал
   зашил ей swiper-button-disabled на момент рендера — карусель у нас зациклена,
   поэтому обе стрелки должны быть кликабельны всегда. */
[class*="prevArrow"].is-stub,
[class*="nextArrow"].is-stub,
[class*="Arrow"].is-stub.swiper-button-disabled {
  opacity: 1 !important; pointer-events: auto !important;
  display: flex !important; align-items: center; justify-content: center;
  width: 44px !important; height: 44px !important; border-radius: 50% !important;
  background: #fff !important; border: 0 !important;
  box-shadow: 0 4px 14px rgba(0,0,0,.14) !important;
  cursor: pointer; z-index: 5;
}
/* chevron внутри stub-стрелки */
[class*="Arrow"].is-stub::after {
  content: "" !important; width: 10px; height: 10px;
  border-right: 2px solid #333 !important; border-top: 2px solid #333 !important;
  border-left: 0 !important; border-bottom: 0 !important;
  display: inline-block; background: none !important;
}
[class*="prevArrow"].is-stub::after { transform: rotate(-135deg); margin-left: 4px; }
[class*="nextArrow"].is-stub::after { transform: rotate(45deg);   margin-right: 4px; }

/* ---------- cards-slider (.cs): горизонтальный скролл карточек со стрелкой ›
   Использует cardSlider_root / slider_root оригинала как референс. Карточки внутри —
   наши существующие .card / .card--cover, обёрнутые в .cs__track. Стрелки over track. */
/* .cs получает боковые поля под стрелки — чтобы стрелки стояли ВНЕ карточек, в этих полях,
   а не наезжали на текст первой/последней карточки. */
.cs { position: relative; padding: 0 56px; }
.cs__track {
  display: flex; gap: 20px; overflow-x: auto; overflow-y: visible;
  scroll-behavior: smooth; scroll-snap-type: x mandatory;
  padding: 12px 4px 24px; scrollbar-width: none;
  align-items: stretch;
}
/* Карточки равной высоты: align-items:stretch на треке растягивает каждый flex-item
   (.card) по cross-оси до высоты самого высокого. ВАЖНО: НЕ задавать .card{height:100%} —
   процентная высота требует фикс-высоты родителя (а у трека она auto), поэтому height:100%
   игнорируется и карточка падает обратно на content-height. align-self:stretch таких
   требований не имеет и растягивает корректно. width убираем — ширину держит flex-basis. */
.cs__track > * { display: flex; align-self: stretch; }
.cs__track .card { width: 100%; height: auto; }
.cs__track .card__body { flex: 1 1 auto; display: flex; flex-direction: column; }
.cs__track .card__cta { margin-top: auto; }
.cs__track::-webkit-scrollbar { display: none; }
.cs__track > * {
  flex: 0 0 calc(33.333% - 12px); scroll-snap-align: start; min-width: 280px;
}
@media (max-width: 1100px) { .cs__track > * { flex: 0 0 calc(50% - 8px); } }
@media (max-width: 720px)  { .cs__track > * { flex: 0 0 85%; min-width: 0; } }

.cs__arrow {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 48px; height: 48px; border-radius: 50%;
  background: #fff; border: 0; cursor: pointer; z-index: 5;
  box-shadow: 0 4px 14px rgba(0,0,0,.14);
  color: #333; font-size: 0;
  display: flex; align-items: center; justify-content: center;
}
.cs__arrow:hover { background: #f7f7f7; }
.cs__arrow:disabled { opacity: 0; pointer-events: none; }
/* всё помещается без скролла → стрелки не нужны, прячем и убираем боковые поля под них */
.cs--fits { padding-left: 0; padding-right: 0; }
.cs--fits .cs__arrow { display: none; }
.cs__arrow--prev { left: 4px; }
.cs__arrow--next { right: 4px; }
.cs__arrow::before {
  content: ""; width: 12px; height: 12px;
  border-right: 2px solid #333; border-top: 2px solid #333;
  display: inline-block;
}
.cs__arrow--prev::before { transform: rotate(-135deg); margin-left: 4px; }
.cs__arrow--next::before { transform: rotate(45deg); margin-right: 4px; }
@media (max-width: 720px) {
  .cs__arrow { width: 40px; height: 40px; }
  .cs__arrow--prev { left: 4px; }
  .cs__arrow--next { right: 4px; }
}

/* Corner-badge (например +POPULAR / SUMMER) — наклейка справа сверху на картинке карточки */
.card__corner {
  position: absolute; top: 0; right: 0;
  background: #3bb549; color: #fff;
  font-family: var(--font-title); font-weight: 800; font-size: .85rem;
  padding: 6px 14px 6px 22px;
  clip-path: polygon(12px 0, 100% 0, 100% 100%, 0 100%);
  letter-spacing: .03em;
}
/* Chip-tag (Hotel + Tickets / Tickets) — маленькая пилюля под title */
.card__chip {
  display: inline-flex; align-items: center; gap: 6px;
  background: #ecedf6; color: var(--c-primary, #323393);
  padding: 4px 10px; border-radius: 999px;
  font-size: .8rem; font-weight: 600;
  margin: 0 0 8px;
}
/* Иконки в features list — рисуем через ::before unicode, простой подход без SVG sprite */
.card__feature-icon {
  display: inline-flex; width: 18px; height: 18px; margin-right: 8px; flex-shrink: 0;
  color: var(--c-cta, #f2662b);
}
.card__feature-icon::before { font-size: 1rem; line-height: 1; }
.card__feature-icon--cal::before  { content: "📅"; }
.card__feature-icon--park::before { content: "🎢"; }

/* Compact карточки и section padding'и — оригинал tighter чем у нас был */
.section { padding: 36px 0; }
.section--promotions, .section--parks, .section--hotels, .section--news { padding: 40px 0 32px; }
.section-head { margin-bottom: 18px; }
.section-head h2 { font-size: 1.7rem; margin: 0 0 6px; }
.section-head p { margin: 0; color: var(--c-muted); font-size: .95rem; }

/* ---------- общая карточка .card (блоки 4-7, компонент с оригинала) ---------- */
.cards-grid {
  display: grid; gap: var(--gap); margin-top: 8px;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  justify-items: center;
}
.card {
  width: 100%; max-width: 360px; height: 100%;
  display: flex; flex-direction: column; overflow: hidden;
  background: #fff; border-radius: var(--radius);
  box-shadow: 0 6px 20px rgba(0,0,0,.12);
  transition: transform .2s ease, box-shadow .2s ease;
}
.card:hover { transform: translateY(-4px); box-shadow: 0 8px 24px 3px rgba(0,0,0,.15); }
.card__media {
  position: relative; height: 180px;
  background: linear-gradient(135deg, var(--c-surface), var(--c-border));
  background-size: cover; background-position: center;
}
.card__badge {
  position: absolute; top: 0; left: 0;
  background: var(--c-cta); color: #fff;
  font-family: var(--font-title); font-weight: 800;
  font-size: .8rem; text-transform: uppercase; letter-spacing: .04em;
  padding: 6px 16px; border-bottom-right-radius: var(--radius);
}
.card__body {
  display: flex; flex-direction: column; gap: 10px;
  padding: 20px 25px; flex: 1 1 auto; min-height: 0;
}
.card__title {
  font-family: var(--font-title); font-weight: 600;
  font-size: 1.3125rem; line-height: 1.5rem; color: var(--c-text);
}
.card__text { color: var(--c-muted); font-size: .95rem; }
.card__features { display: flex; flex-direction: column; gap: 6px; margin-top: 4px; }
.card__feature {
  display: flex; align-items: flex-start; gap: 8px;
  font-size: .85rem; color: var(--c-muted-2);
}
.card__feature-icon { color: var(--c-star); flex-shrink: 0; }
.card__cta { align-self: stretch; text-align: center; margin-top: auto; }
/* рейтинг + цена (отели) */
.card__rating { display: flex; align-items: baseline; justify-content: space-between; }
.stars { color: var(--c-star); font-size: 1rem; letter-spacing: 2px; }
.card__price {
  font-family: var(--font-title); font-weight: 800;
  font-size: 1.5rem; color: var(--c-primary);
}
.card__price small { font-size: .7rem; font-weight: 400; color: var(--c-muted); }
/* карточка-постер (новости): фон-картинка, заголовок поверх */
.cards-grid--news { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.card--cover {
  position: relative; min-height: 410px; max-width: 360px;
  box-shadow: none; justify-content: flex-end;
}
.card__cover-media {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, var(--c-primary), var(--c-accent-red));
  background-size: cover; background-position: center;
}
.card__cover-media::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0), rgba(0,0,0,.5));
}
.card__cover-body {
  position: relative; z-index: 2;
  display: flex; flex-direction: column; gap: 16px;
  padding: 100px 20px 20px;
}
.card__title--cover {
  font-size: 2rem; line-height: 2.2rem; color: #fff;
  text-shadow: 2px 2px 6px rgba(0,0,0,.6);
}

/* ---------- app download (блок 8) ---------- */
.section--app { text-align: center; padding: 36px 0; }
.app__inner { display: flex; flex-direction: column; align-items: center; gap: 12px; max-width: 720px; margin: 0 auto; }
/* По скрину оригинала заголовок DownloadApp умещается в ровно 3 строки */
.app__title { font-size: 1.35rem; line-height: 1.35; max-width: 38ch; margin: 0; }
.app__text { color: var(--c-muted); max-width: 60ch; margin: 0; font-size: .95rem; }
.app__links { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; margin-top: 8px; }
.app__badge {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 150px; height: 48px; padding: 0 20px;
  background: #000; color: #fff; border-radius: 8px;
  font-family: var(--font-title); font-weight: 600; font-size: .9rem;
}
.app__badge:hover { background: #222; }

/* ---------- newsletter (блок 9, фон #323393 с оригинала) ---------- */
.newsletter { background: var(--c-primary); padding: 60px 0; margin-top: 30px; }
.newsletter__inner { color: #fff; }
.newsletter__title {
  font-family: var(--font-title); font-weight: 700;
  font-size: 1.3125rem; line-height: 1.5rem; color: #fff;
  margin-bottom: 24px; max-width: 32ch;
}
.newsletter__features { display: flex; flex-direction: column; gap: 20px; margin-bottom: 40px; }
.newsletter__feature { display: flex; align-items: center; gap: 12px; }
.newsletter__feature-icon {
  display: flex; align-items: center; justify-content: center;
  width: 20px; flex-shrink: 0; color: #fff; font-weight: 700;
}
.newsletter__inputs { display: flex; gap: 12px; flex-wrap: wrap; }
.newsletter__input {
  flex: 1 1 220px; padding: 12px 16px;
  border: 0; border-radius: 8px;
  font-family: var(--font-body); font-size: .9rem; color: var(--c-text);
}
.newsletter__input::placeholder { color: var(--c-muted); }
.newsletter__submit { flex: 0 0 auto; }
.newsletter__consent {
  display: flex; align-items: flex-start; gap: 8px;
  margin-top: 20px; font-size: .85rem; color: rgba(255,255,255,.85);
}

/* ---------- funnel ---------- */
.funnel__steps {
  display: flex; gap: 12px; margin-bottom: 28px;
  font-size: .9rem; color: var(--c-muted); flex-wrap: wrap;
}
.funnel__steps li { display: flex; align-items: center; gap: 12px; }
.funnel__steps li::after { content: "→"; color: var(--c-border); }
.funnel__steps li:last-child::after { content: ""; }
.funnel__steps li.is-active { color: var(--c-primary); font-weight: 700; }
.funnel__lead { margin-bottom: 28px; }

.service-grid {
  display: grid; gap: var(--gap); margin-top: 28px;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}
.service-card {
  border: 1px solid var(--c-border); border-radius: var(--radius);
  padding: 28px; display: flex; flex-direction: column; gap: 10px;
  transition: border-color .15s ease, transform .15s ease;
}
.service-card:hover { border-color: var(--c-primary); transform: translateY(-3px); }
.service-card__price { font-size: 1.8rem; font-weight: 800; color: var(--c-primary); }
.service-card p { color: var(--c-muted); }
.service-card .btn { margin-top: auto; text-align: center; }

.order {
  display: grid; gap: var(--gap); margin-top: 28px;
  grid-template-columns: 1.4fr 1fr; align-items: start;
}
.order__summary, .order__controls {
  border: 1px solid var(--c-border); border-radius: var(--radius); padding: 24px;
}
.order__summary h3 { font-size: 1.4rem; margin-bottom: 8px; }
.order__summary p { color: var(--c-muted); }
.order__unit { font-weight: 700; color: var(--c-text) !important; margin-top: 10px; }
.order__controls label { display: flex; flex-direction: column; gap: 6px; font-weight: 600; }
.order__controls input {
  padding: 10px; border: 1px solid var(--c-border); border-radius: 8px;
  font-size: 1rem; width: 100%;
}
.order__total { margin: 18px 0; font-size: 1.1rem; }
.order__total strong { color: var(--c-primary); font-size: 1.3rem; }

.funnel--done__inner { text-align: center; max-width: 520px; }
.stub-badge {
  display: inline-block; background: var(--c-accent); color: #3a2c00;
  font-weight: 800; text-transform: uppercase; font-size: .75rem;
  padding: 4px 12px; border-radius: 999px; margin-bottom: 16px; letter-spacing: .08em;
}
.funnel--done h1 { margin-bottom: 12px; }
.funnel--done p { margin: 0 auto 28px; }

/* ---------- funnel forms (новая воронка: tickets/buy и hotels/book) ---------- */
.section--funnel { padding: 56px 0 80px; background: #f7f7f7; }
.funnel-wrap { max-width: 720px; margin: 0 auto; }
.funnel-form {
  background: #fff; border-radius: 16px; padding: 32px;
  box-shadow: 0 6px 28px rgba(0,0,0,.06);
  display: flex; flex-direction: column; gap: 20px;
}
.funnel-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.funnel-row:has(> :nth-child(3)) { grid-template-columns: 1fr 1fr 1fr; }
@media (max-width: 640px) { .funnel-row, .funnel-row:has(> :nth-child(3)) { grid-template-columns: 1fr; } }
.funnel-field { display: flex; flex-direction: column; gap: 6px; font-weight: 600; }
.funnel-field__label { font-size: .9rem; color: #333; }
.funnel-field__label em { color: var(--c-cta, #d63b18); font-style: normal; font-weight: 600; margin-left: 4px; }
.funnel-field input, .funnel-field select {
  padding: 12px 14px; border: 1px solid var(--c-border, #ddd); border-radius: 10px;
  font-size: 1rem; background: #fff; font-family: inherit;
}
.funnel-field input:focus, .funnel-field select:focus {
  outline: none; border-color: var(--c-primary, #015b9c);
}
.funnel-contact {
  border: none; padding: 16px 0 0; margin: 8px 0 0; border-top: 1px solid #eee;
  display: flex; flex-direction: column; gap: 14px;
}
.funnel-contact legend {
  font-weight: 700; font-size: 1rem; padding: 0 8px 0 0; margin-bottom: 4px;
}
.funnel-total {
  display: flex; align-items: baseline; justify-content: space-between;
  padding: 16px 0; border-top: 1px solid #eee; border-bottom: 1px solid #eee;
  font-weight: 700;
}
.funnel-total__value { font-size: 1.6rem; color: var(--c-primary, #015b9c); }
.funnel-submit { align-self: stretch; padding: 14px; font-size: 1.05rem; }
.funnel-submit:disabled { opacity: .5; cursor: not-allowed; }

/* /tickets-hotel/ — промо-плашка пакета */
.th-promo { margin: 18px auto 0; }
/* подпись с числом ночей */
.th-nights { margin: 4px 0 0; font-weight: 600; color: var(--c-muted-2); font-size: .9rem; }
/* предупреждение о мин.проживании */
.th-warn {
  margin: 0; padding: 11px 16px; border-radius: var(--radius); font-size: .9rem;
  background: #fdeced; border: 1px solid #f3b6bb; color: #9a2530;
}
/* сводка-эстимейт пакета */
.th-summary {
  border: 2px solid var(--c-border); border-radius: var(--radius); padding: 16px 18px;
  background: var(--c-surface-2, #f6f7fb); box-shadow: 0 4px 16px rgba(50,51,147,.07);
  display: flex; flex-direction: column; gap: 8px;
}
.th-summary__row { display: flex; justify-content: space-between; gap: 12px; font-size: .95rem; }
.th-summary__sub { border-top: 1px solid var(--c-border); padding-top: 8px; font-weight: 600; }
.th-summary__promo { color: #1d6b34; font-weight: 600; }
.th-summary__total { border-top: 2px solid var(--c-border); padding-top: 8px; font-family: var(--font-title); font-weight: 700; font-size: 1.15rem; color: var(--c-primary); }
.th-summary__note { margin: 4px 0 0; font-size: .8rem; color: var(--c-muted-2); }

.page-hero--funnel {
  background: linear-gradient(135deg, #015b9c 0%, #0089c8 100%);
  min-height: 200px;
}
.page-hero--funnel .page-hero__overlay { background: transparent; }
.page-hero--funnel .page-hero__title, .page-hero--funnel .page-hero__subtitle { color: #fff; }

/* ---------- park-pick (визуальный выбор парка на /tickets/) ---------- */
.section--tickets-parks { padding: 36px 0 0; }
.park-pick {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; max-width: 1080px; margin: 0 auto;
}
@media (max-width: 760px) { .park-pick { grid-template-columns: 1fr; } }
.park-pick__card {
  position: relative; aspect-ratio: 4/3; border-radius: 14px; overflow: hidden;
  background-size: cover; background-position: center; border: 3px solid transparent;
  cursor: pointer; padding: 0; transition: transform .15s, border-color .15s;
}
.park-pick__card:hover { transform: translateY(-3px); }
.park-pick__card.is-active { border-color: var(--c-cta, #d63b18); }
.park-pick__overlay {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,.05) 0%, rgba(0,0,0,.65) 100%);
}
.park-pick__name {
  position: absolute; left: 18px; right: 18px; bottom: 16px;
  color: #fff; font-weight: 800; font-size: 1.25rem; text-align: left;
  text-shadow: 0 2px 8px rgba(0,0,0,.55);
}

/* perks block on /tickets-hotel/ */
.section--package-perks { padding: 32px 0; background: #f7f7f7; }
.perks {
  list-style: none; padding: 0; margin: 0;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; max-width: 1080px; margin: 0 auto;
}
.perks__item {
  display: flex; align-items: flex-start; gap: 12px;
  font-size: .95rem; line-height: 1.45; font-weight: 600;
}
.perks__icon {
  width: 40px; height: 40px; border-radius: 50%; background: var(--c-primary, #015b9c);
  color: #fff; display: inline-flex; align-items: center; justify-content: center;
  font-size: 1.2rem; flex-shrink: 0;
}
@media (max-width: 760px) { .perks { grid-template-columns: 1fr; } }

/* ---------- thank-you ---------- */
.section--thanks { padding: 80px 0 100px; }
.thanks { max-width: 560px; margin: 0 auto; text-align: center; }
.thanks__title { margin-bottom: 14px; }
.thanks__text { margin: 0 0 22px; color: #555; }
.thanks__order { margin: 0 0 28px; font-size: 1.05rem; }
.thanks__order code {
  background: #f0f0f0; padding: 4px 10px; border-radius: 6px;
  font-family: ui-monospace, monospace; font-weight: 700;
}
.thanks__actions { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
/* состав заказа на thank-you */
.thanks__summary { text-align: left; max-width: 420px; margin: 0 auto 28px; padding: 16px 20px; background: var(--c-surface-2, #f6f7fb); border: 1px solid var(--c-border); border-radius: var(--radius); }
.thanks__sum-list { list-style: none; margin: 8px 0; padding: 0; }
.thanks__sum-list li { padding: 3px 0; color: var(--c-text); text-transform: capitalize; }
.thanks__sum-date, .thanks__sum-total { margin: 4px 0; color: var(--c-muted-2); }
.thanks__sum-total { font-size: 1.05rem; color: var(--c-text); }
/* спиннер на странице processing */
.pay-spinner {
  width: 44px; height: 44px; margin: 0 auto 22px; border-radius: 50%;
  border: 4px solid var(--c-border); border-top-color: var(--c-primary);
  animation: pay-spin 0.8s linear infinite;
}
@keyframes pay-spin { to { transform: rotate(360deg); } }

/* ---------- promotions bottom image (C5 OutputImageBottom) ---------- */
.section--promo-bottom {
  height: 320px; background-size: cover; background-position: center;
  background-repeat: no-repeat;
}
.section--ponient-grid { padding: 36px 0 64px; }

/* ---------- park overview pages (PA / Caribe / Ferrari Land) ---------- */
.page-hero--park { min-height: 460px; background-size: cover; background-position: center; }

/* feature box — ряд иконок под hero */
.section--park-features { background: #f7f7f7; padding: 28px 0; }
.park-feats {
  display: grid; grid-template-columns: repeat(5, 1fr); gap: 18px;
  list-style: none; padding: 0; margin: 0;
}
.park-feats__item {
  display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px;
}
.park-feats__icon {
  width: 44px; height: 44px; border-radius: 50%; background: var(--c-primary, #015b9c);
  display: inline-flex; align-items: center; justify-content: center; color: #fff;
  font-size: 1.4rem;
}
.park-feats__icon::before { display: block; }
.park-feats__icon--compass::before  { content: "🧭"; }
.park-feats__icon--rocket::before   { content: "🚀"; }
.park-feats__icon--star_raw::before { content: "★"; }
.park-feats__icon--hotel::before    { content: "🏨"; }
.park-feats__icon--fork::before     { content: "🍴"; }
.park-feats__icon--clock::before    { content: "⏰"; }
.park-feats__icon--wheelchair::before { content: "♿"; }
.park-feats__icon--mission::before  { content: "🎯"; }
.park-feats__icon--message::before  { content: "💬"; }
.park-feats__icon--ticket::before   { content: "🎟"; }
.park-feats__icon--gift::before     { content: "🎁"; }
.park-feats__icon--bed::before      { content: "🛏"; }
.park-feats__text { font-size: .9rem; font-weight: 600; max-width: 200px; line-height: 1.3; }
@media (max-width: 800px) {
  .park-feats { grid-template-columns: repeat(2, 1fr); gap: 12px; }
}

/* general info — 4 блока в ряд */
.section--park-info { padding: 48px 0; }
.info-blocks {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin-top: 16px;
}
.info-block {
  display: flex; gap: 14px; background: #fff;
  border: 1px solid #eee; border-radius: 12px; padding: 18px;
}
.info-block__icon {
  width: 40px; height: 40px; flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%; background: var(--c-primary, #015b9c); color: #fff; font-size: 1.2rem;
}
.info-block__icon::before { display: block; }
.info-block__icon--clock::before      { content: "⏰"; }
.info-block__icon--wheelchair::before { content: "♿"; }
.info-block__icon--mission::before    { content: "🎯"; }
.info-block__icon--message::before    { content: "💬"; }
.info-block__icon--compass::before    { content: "🧭"; }
.info-block__icon--rocket::before     { content: "🚀"; }
.info-block__icon--star_raw::before   { content: "★"; }
.info-block__title { font-size: 1rem; margin: 0 0 6px; }
.info-block__text { margin: 0; font-size: .9rem; color: #555; line-height: 1.4; }
@media (max-width: 900px) { .info-blocks { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .info-blocks { grid-template-columns: 1fr; } }

/* park sliders (rides/shows/restaurants/shops/worlds) — карточки без CTA */
.section--park-slider { padding: 48px 0; }
.section--park-slider:nth-of-type(even) { background: #f7f7f7; }
.park-cards {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin-top: 16px;
}
@media (max-width: 1100px) { .park-cards { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 760px)  { .park-cards { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px)  { .park-cards { grid-template-columns: 1fr; } }
.pcard {
  background: #fff; border: 1px solid #eee; border-radius: 12px; overflow: hidden;
  display: flex; flex-direction: column;
}
.pcard__media {
  aspect-ratio: 16/10; background-size: cover; background-position: center; background-color: #ddd;
}
.pcard__body { padding: 14px 16px 18px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.pcard__name { margin: 0; font-size: 1.05rem; line-height: 1.2; }
.pcard__text { margin: 0; font-size: .87rem; color: #555; line-height: 1.45; }

/* text + image block */
.section--park-textimage { padding: 60px 0; background: #fff; }
.textimage {
  display: grid; grid-template-columns: 1fr 1fr; gap: 36px; align-items: center;
}
.textimage__media {
  aspect-ratio: 4/3; border-radius: 16px; background-size: cover; background-position: center; min-height: 320px;
}
.textimage__title { font-size: 2rem; margin: 0 0 14px; line-height: 1.1; }
.textimage__text { margin: 0; font-size: 1.02rem; line-height: 1.6; color: #444; }
@media (max-width: 800px) { .textimage { grid-template-columns: 1fr; } }

/* финальный CTA + bottom image */
.section--park-cta { padding: 48px 0; text-align: center; background: var(--c-primary, #015b9c); }
.park-cta .btn { font-size: 1.1rem; padding: 14px 28px; }
.section--park-bottom {
  height: 360px; background-size: cover; background-position: center;
}

/* OutputImageBottom главной — широкая фоновая полоса под футером.
   На оригинале footer стоит поверх картинки и видны только её края слева/справа. */
.section--home-bottom__disabled {
  position: relative; overflow: hidden;
  width: 100%; height: 500px; margin-bottom: -340px; /* footer наезжает сверху */
  z-index: 0;
}
.home-bottom__gradient { display: none; }
.home-bottom__image {
  display: block; width: 100%; height: 100%; object-fit: cover;
}
/* footer лежит поверх bottom-картинки (max-width центрирован, по краям видна картинка) */
.site-footer { position: relative; z-index: 2; }

/* ---------- hotel deep pages ---------- */
.page-hero--hotel { min-height: 460px; background-size: cover; background-position: center; }
.section--hotel-features { background: #f7f7f7; padding: 28px 0; }
.section--hotel-services { padding: 56px 0; background: #fff; }
.hotel-services { max-width: 760px; margin: 0 auto; text-align: center; }
.hotel-services__title { margin: 0 0 14px; font-size: 1.8rem; }
.hotel-services__desc { margin: 0; color: #555; font-size: 1.05rem; line-height: 1.6; }

.section--hotel-rooms { padding: 48px 0; background: #f7f7f7; }
.section--hotel-access { padding: 56px 0; background: #fff; }
.access { display: grid; grid-template-columns: 1fr 1fr; gap: 36px; align-items: center; }
.access__title { margin: 0 0 12px; font-size: 1.8rem; }
.access__text { margin: 0; color: #555; line-height: 1.6; }
.access__img img { width: 100%; height: auto; border-radius: 12px; }
@media (max-width: 800px) { .access { grid-template-columns: 1fr; } }

.section--hotel-textimage { padding: 60px 0; background: #f7f7f7; }
.section--hotel-gallery { padding: 48px 0; background: #fff; }
.hotel-gallery {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px;
}
.hotel-gallery__item {
  aspect-ratio: 4/3; background-size: cover; background-position: center;
  border-radius: 12px; background-color: #ddd;
}
@media (max-width: 780px) { .hotel-gallery { grid-template-columns: 1fr 1fr; } }
@media (max-width: 480px) { .hotel-gallery { grid-template-columns: 1fr; } }

.section--hotel-faq { padding: 56px 0; background: #f7f7f7; }
.faq { max-width: 860px; margin: 0 auto; }
.faq__title { font-size: 1.8rem; margin: 0 0 24px; text-align: center; }
.faq__list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
.faq__item { border: 1px solid #e3e3e3; border-radius: 10px; background: #fff; overflow: hidden; }
.faq__item summary {
  padding: 16px 20px; cursor: pointer; font-weight: 700; font-size: 1.02rem;
  list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 12px;
}
.faq__item summary::after { content: "+"; font-size: 1.5rem; color: var(--c-primary, #015b9c); }
.faq__item details[open] summary::after { content: "−"; }
.faq__item summary::-webkit-details-marker { display: none; }
.faq__answer { padding: 0 20px 18px; color: #555; line-height: 1.55; font-size: .95rem; }
.faq__answer p { margin: 0 0 10px; }

.section--hotel-cta { padding: 48px 0; text-align: center; background: var(--c-primary, #015b9c); }
.hotel-cta .btn { font-size: 1.1rem; padding: 14px 28px; }

.section--hotel-intro-fallback { padding: 56px 0; }
.section--hotel-intro-fallback p { max-width: 780px; margin: 0 auto; font-size: 1.05rem; line-height: 1.6; }

/* ---------- footer (блок 10, структура с оригинала) ---------- */
/* ---------- футер — размеры точно из css дампа (footer_*) ---------- */
.site-footer {
  position: relative; z-index: 2; font-family: var(--font-body);
  /* боковой фон с горками (как на оригинале) — картинка проглядывает по краям за inner-блоком */
  background: #eef1f4 url('/assets/img/home/bottom.jpg') center bottom / cover no-repeat;
  padding: 28px 16px;
}
.site-footer__inner {
  max-width: 1320px; width: 100%; margin: 0 auto;
  padding: 40px 80px;
  background: rgba(255,255,255,.94); border-radius: 10px;
  box-shadow: 0 6px 24px rgba(0,0,0,.10);
  backdrop-filter: blur(2px);
  display: flex; flex-direction: column; gap: 24px;
}
/* верх футера: «как добраться» слева + соцсети справа */
.site-footer__top {
  display: flex; justify-content: space-between; align-items: center; gap: 24px;
}
.site-footer__how-to {
  display: inline-flex; align-items: center; gap: 12px;
  color: var(--c-text); font-size: .875rem;
}
.site-footer__how-to-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; color: var(--c-primary); font-size: 1.2rem;
}
.site-footer__how-to:hover { color: var(--c-primary); font-weight: 500; }
/* соцсети — footer_socialsList: display flex justify-content space-between flex-grow inherit */
.site-footer__socials {
  display: flex; flex-grow: 1; justify-content: space-between;
  padding: 0; margin: 0 0 0 50px; list-style: none;
}
.site-footer__social {
  display: flex; align-items: center; gap: 8px; padding: 10px;
  color: var(--c-text); font-size: .875rem; line-height: 14px;
}
.site-footer__social:hover { color: var(--c-primary); font-weight: 500; }
.site-footer__social-icon {
  width: 32px; height: 32px; border-radius: 50%;
  background: var(--c-primary); color: #fff;
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.site-footer__social-icon svg { width: 18px; height: 18px; }
/* 4 колонки — footer_main display:flex */
.site-footer__cols {
  display: grid; gap: 10px;
  grid-template-columns: repeat(4, 1fr);
}
/* footer_title: font-size 1rem font-weight 700 line-height 1.2 color #333 padding-bottom 7px */
.site-footer__col-title {
  font-family: var(--font-title); font-weight: 700; font-size: 1rem; line-height: 1.2;
  color: var(--c-text); padding-bottom: 7px;
}
.site-footer__col ul + h3.site-footer__col-title,
.site-footer__col + .site-footer__col-title { margin-top: 18px; }
/* footer_itemText: padding 5px 0, font-size 0.875rem, line-height 1.2, color #333 */
.site-footer__col li a {
  display: block; padding: 5px 0;
  font-size: .875rem; line-height: 1.2; color: var(--c-text);
}
.site-footer__col li a:hover { color: var(--c-primary); }
/* bcorp + legal — footer_bottomContent display:flex */
.site-footer__bottom {
  display: flex; justify-content: space-between; align-items: center;
  gap: 24px; flex-wrap: wrap;
}
/* footer_bcorp: display flex align-items center gap 10px; p: max-width 28ch font-size 1rem 700 line-height 1.3125rem */
.site-footer__bcorp { display: flex; align-items: center; gap: 10px; }
.site-footer__bcorp-badge {
  width: 75px; height: 75px; border-radius: 6px;
  background: var(--c-primary); flex-shrink: 0;
}
.site-footer__bcorp p {
  max-width: 28ch; font-size: 1rem; font-weight: 700;
  line-height: 1.3125rem; color: var(--c-text);
}
/* footer_legalList: gap 10px, направление row-reverse, margin-left 40px */
.site-footer__legal {
  display: flex; flex-direction: row-reverse; gap: 10px;
  margin-left: 40px; padding: 0; flex-wrap: wrap;
}
.site-footer__legal a { font-size: .82rem; color: var(--c-text); padding: 0 4px; }
.site-footer__legal a:hover { color: var(--c-primary); }
.site-footer__copyright {
  display: block; text-align: center;
  font-size: .82rem; color: var(--c-muted);
}

/* ---------- цветовые темы тематических страниц ---------- */
/* Значения --th-* сняты с CSS дампов точно (theme-global-<name> в c5a1d2d010b08de9.css).
   --th-main используется как фон секций listShows/cards (var(--th-main)). */
.theme-summer {
  --th-mainBg: #fdbe1e; --th-modalBg: #fd7c1e;
  --th-titleColor: #fff; --th-bodyColor: #fff;
  --th-buttonBg: #f2662b; --th-buttonText: #fff;
  --th-main: #fdbe1e; --th-title: #fff; --th-body: #fff;
}
.theme-christmas {
  --th-mainBg: #bf9d69; --th-modalBg: #2c5938;
  --th-titleColor: #e2f6e4; --th-bodyColor: #e2f6e4;
  --th-buttonBg: #f2662b; --th-buttonText: #fff;
  --th-main: #2c5938; --th-title: #e2f6e4; --th-body: #e2f6e4;
}
.theme-halloween {
  --th-mainBg: linear-gradient(0deg,#115e99,#17253e 54%,#000);
  --th-modalBg: #000;
  --th-titleColor: #fff; --th-bodyColor: #fff;
  --th-buttonBg: #f2662b; --th-buttonText: #fff;
  --th-main: #17253e; --th-title: #fff; --th-body: #fff;
}
.theme-carnival {
  --th-buttonBg: #f2662b; --th-buttonText: #fff;
  --th-titleColor: #333; --th-bodyColor: #333;
  --th-main: #fbb32c; --th-title: #fff; --th-body: #fff;
}
.theme-easter {
  --th-buttonBg: #f2662b; --th-buttonText: #fff;
  --th-titleColor: #fff; --th-bodyColor: #fff;
  --th-main: #368e99; --th-title: #fff; --th-body: #fff;
}
.themed-page { background: var(--th-main, #323393); min-height: 100vh; }

/* ---------- themed hero (thero) — точные значения из heroCustom_* ---------- */
.thero { padding: 8px; }
.thero__wrapper {
  position: relative; overflow: hidden; border-radius: 8px;
  min-height: 746px; display: flex; align-items: stretch;
  background: rgba(0,0,0,.4);
  background-size: cover; background-position: center top;
}
.thero__overlay {
  position: absolute; inset: 0;
  background: linear-gradient(0deg, rgba(0,0,0,.25), rgba(0,0,0,.2));
}
.thero__inner {
  position: relative; z-index: 2;
  display: flex; flex-direction: column; align-items: center;
  width: 100%; max-width: 1440px; margin: 0 auto;
  padding: 80px 56px;
}
.thero__title {
  font-family: var(--font-title); font-weight: 600;
  font-size: 6.5rem; line-height: 6.5rem;
  color: #fff; text-transform: uppercase; text-align: center;
  animation: thero-in-left 1.2s cubic-bezier(.17,.84,.44,1) both;
}
.thero__bottom {
  margin-top: auto; padding-top: 32px; width: 350px;
  display: flex; flex-direction: column; align-items: center; gap: 16px;
  animation: thero-in-right 1s cubic-bezier(.17,.84,.44,1) .4s both;
}
.thero__subtitle {
  font-family: var(--font-title); font-weight: 700;
  font-size: 1.5rem; line-height: 1.875rem;
  color: #fff; text-align: center; text-transform: uppercase;
  text-shadow: 0 1px 10px rgba(0,0,0,.1);
}
.thero__btns { display: flex; gap: 12px; flex-wrap: wrap; justify-content: center; }
.thero__arrow {
  margin-top: 40px; display: flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; border-radius: 50%;
  color: #fff; font-size: 1.4rem; text-decoration: none;
  animation: thero-bounce 1.6s ease-in-out infinite;
}
@keyframes thero-in-left {
  from { transform: translateX(calc(-960px - 50%)); opacity: 0; }
  to   { transform: translateX(0); opacity: 1; }
}
@keyframes thero-in-right {
  from { transform: translateX(calc(960px - 50%)); opacity: 0; }
  to   { transform: translateX(0); opacity: 1; }
}
@keyframes thero-bounce {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(6px); }
}
@media (max-width: 860px) {
  .thero__title { font-size: 3rem; line-height: 3.5rem; }
  .thero__inner { padding: 56px 20px 28px; }
  .thero__bottom { width: 100%; }
}

/* ---------- themed textField (tfield) — точные значения из textField_* ---------- */
.tfield { padding: 30px 80px; background: #fff; }
.tfield__inner { max-width: 1440px; margin: 0 auto; text-align: center; }
.tfield__title {
  font-family: var(--font-title); font-weight: 700;
  font-size: 1.625rem; line-height: 1.875rem;
  color: var(--c-primary); max-width: 900px; margin: 0 auto 40px;
}
.tfield__text {
  font-family: var(--font-body); color: var(--c-text);
  max-width: 900px; margin: 0 auto; text-align: center;
}
.tfield__cta { margin-top: 20px; }
@media (min-width: 1024px) {
  .tfield__title { font-size: 2.5rem; line-height: 2.75rem; }
}
@media (max-width: 860px) {
  .tfield { padding: 30px 20px; }
}

/* ---------- themed listShows (tshows) — точные значения из listShows_* ---------- */
.tshows {
  overflow: hidden; text-align: center;
  padding: 40px 24px; border-radius: 8px;
  max-width: 1392px; margin: 0 auto;
  background: var(--th-main, #323393);
}
.tshows__title {
  font-family: var(--font-title); font-weight: 600;
  font-size: 2rem; color: var(--th-title, #fff); text-align: center;
}
.tshows__subtitle {
  margin-top: 16px; max-width: 100%; text-align: center;
  font-family: var(--font-body); font-weight: 400;
  line-height: 1.25rem; color: var(--th-body, #fff);
}
.tshows__list {
  margin-top: 32px; display: flex; flex-wrap: wrap;
  justify-content: center; align-items: flex-start;
  column-gap: 24px; padding: 0;
}
.show-card {
  width: 100%; max-width: calc(33.33% - 16px);
  margin-bottom: 40px; cursor: pointer;
}
.show-card__media {
  width: 100%; aspect-ratio: 4/3;
  background: rgba(255,255,255,.15);
  background-size: cover; background-position: center;
  border-radius: 8px; margin-bottom: 16px;
}
.show-card__body { text-align: left; }
.show-card__name {
  font-family: var(--font-title); font-weight: 600;
  font-size: 1.75rem; line-height: 2rem;
  color: var(--th-title, #fff); text-transform: uppercase;
  word-wrap: break-word; margin-bottom: 8px;
}
.show-card__text {
  font-family: var(--font-body); font-weight: 400;
  line-height: 1.25rem; color: var(--th-body, #ccc);
}
.tshows__all { margin: 40px auto 0; color: var(--th-title, #fff); border-color: var(--th-title, #fff); }
@media (min-width: 1024px) {
  .tshows { padding: 100px 116px; }
  .tshows__title { font-size: 2.5rem; }
}
@media (max-width: 860px) {
  .show-card { max-width: 100%; }
}

/* ---------- themed cards (tcards) — cardSlider_* / card_isCover ---------- */
.section--tcards { padding: 30px 20px; background: #fff; text-align: center; }
.section--tcards .section-head h2 {
  font-family: var(--font-title); font-weight: 600;
  font-size: 1.5rem; line-height: 1.75rem;
  color: var(--c-primary); max-width: 1040px; margin: 0 auto 20px;
}
@media (min-width: 1024px) {
  .section--tcards { padding: 40px 80px; }
  .section--tcards .section-head h2 { font-size: 2.5rem; line-height: 3rem; }
}

/* ---------- page-hero — общий баннер внутренних страниц (parks/hotels/blog/...) ---------- */
.page-hero {
  position: relative; min-height: 360px;
  display: flex; align-items: center;
  background: var(--c-primary); background-size: cover; background-position: center;
  color: #fff; overflow: hidden;
}
.page-hero__overlay {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,.25), rgba(0,0,0,.7));
}
.page-hero__content {
  position: relative; display: flex; flex-direction: column; gap: 14px; align-items: flex-start;
  color: #fff;
}
.page-hero__title {
  font-family: var(--font-display, var(--font-title)); font-weight: 800;
  font-size: 3.5rem; line-height: 1.05; text-transform: uppercase;
  color: #fff; text-shadow: 0 2px 12px rgba(0,0,0,.55);
}
.page-hero__subtitle {
  font-size: 1.15rem; max-width: 56ch; color: #fff;
  text-shadow: 0 1px 6px rgba(0,0,0,.55); font-weight: 500;
}
.page-hero .btn { margin-top: 6px; }

/* ---------- plan-cta — блок «Plan your visit» на странице parks ---------- */
.section--plan-cta { background: var(--c-bg-soft, #f4f4fb); }
.plan-cta__inner { text-align: center; display: flex; flex-direction: column; gap: 12px; align-items: center; }
.plan-cta__inner p { color: var(--c-muted); max-width: 56ch; }

/* ---------- plan-grid — 4 информационных блока страницы Plan ---------- */
.plan-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; }
.plan-block {
  display: flex; flex-direction: column; gap: 10px; align-items: flex-start;
  padding: 28px; background: #fff; border: 1px solid var(--c-border); border-radius: 12px;
}
.plan-block__icon { font-size: 2rem; line-height: 1; }
.plan-block__title { font-family: var(--font-title); font-weight: 600; font-size: 1.25rem; }
.plan-block__text { color: var(--c-muted); font-size: .95rem; }
.plan-block .btn { margin-top: auto; }

/* ---------- park-intro — описание парка на детальной странице ---------- */
.section--park-intro { padding-bottom: 0; }
.park-intro__inner { max-width: 70ch; margin: 0 auto; text-align: center; }
.park-intro__inner p { color: var(--c-muted); font-size: 1.05rem; line-height: 1.6; }

/* ---------- opening times — табы, календарь, расписание, список объектов ---------- */
.cal-tabs { display: flex; gap: 8px; justify-content: center; margin-bottom: 24px; }
.cal-tab {
  border: none; background: none; cursor: pointer;
  padding: 10px 18px; font: inherit; font-weight: 600; color: var(--c-muted);
  border-bottom: 3px solid transparent;
}
.cal-tab.is-active { color: var(--c-primary); border-bottom-color: var(--c-primary); }

.cal-nav {
  display: flex; justify-content: space-between; align-items: center;
  max-width: 420px; margin: 0 auto 20px;
}
.cal-nav__label { font-family: var(--font-title); font-weight: 600; font-size: 1.1rem; }
.cal-nav__arrow {
  width: 36px; height: 36px; border-radius: 50%;
  border: 1px solid var(--c-border); background: #fff; cursor: pointer;
  font-size: 1.1rem; color: var(--c-primary);
}
.cal-nav__arrow:hover { background: var(--c-primary); color: #fff; }

.cal-grid {
  display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px;
  max-width: 560px; margin: 0 auto 48px;
}
.cal-weekday {
  text-align: center; font-size: .8rem; font-weight: 600;
  color: var(--c-muted); text-transform: uppercase; padding-bottom: 6px;
}
.cal-day {
  aspect-ratio: 1 / 1; display: flex; align-items: center; justify-content: center;
  font-size: .9rem; border-radius: 8px; color: var(--c-muted-light, #c9c9d6);
}
.cal-day--active { background: var(--c-bg-soft, #f4f4fb); color: var(--c-text); font-weight: 600; }
.cal-day--today { background: var(--c-primary); color: #fff; }

.park-schedule { padding: 30px 20px; background: var(--c-bg-soft, #f4f4fb); border-radius: 12px; margin-bottom: 40px; }
.park-schedule__title { font-family: var(--font-title); font-weight: 600; font-size: 1.5rem; margin-bottom: 16px; text-align: center; }
.schedule-table { width: 100%; border-collapse: collapse; background: #fff; border-radius: 8px; overflow: hidden; }
.schedule-table th {
  font-size: .75rem; text-transform: uppercase; color: var(--c-muted);
  padding: 10px 8px; border-bottom: 1px solid var(--c-border);
}
.schedule-table td { padding: 12px; border-bottom: 1px solid var(--c-border); font-size: .9rem; }
.schedule-table tr:last-child td { border-bottom: none; }
.schedule-table__park-name { font-weight: 600; color: var(--c-primary); }
.schedule-table__hours { color: var(--c-muted); }

.entities-section { margin-bottom: 48px; }
.entities-section__title { font-family: var(--font-title); font-weight: 600; font-size: 1.5rem; margin-bottom: 16px; text-align: center; }
.entities-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px 20px; list-style: none; }
.entities-list__item {
  padding: 10px 14px; background: #fff; border: 1px solid var(--c-border);
  border-radius: 8px; font-size: .9rem; color: var(--c-muted);
}
.opening-promos .section-head__title {
  font-family: var(--font-title); font-weight: 600; font-size: 1.5rem;
  text-align: center; margin-bottom: 24px;
}

/* ---------- responsive ---------- */
@media (max-width: 1023px) {
  /* шапка: на узких экранах пункты в горизонтальный скролл
     ⚠ erafox: полноценное мобильное меню (бургер) — отдельный заход */
  .navbar__list { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .navbar__item { flex-grow: 0; padding: 0 12px; }
  .navbar__tools { margin-left: 16px; }
  .mega { display: none !important; }
}
@media (max-width: 860px) {
  main > section { padding: 52px 0; }
  .section, .section--promotions, .section--parks,
  .section--hotels, .section--news { padding: 40px 0; }
  .section--app { padding: 28px 0; }
  /* карточные секции — в одну колонку */
  .cards-grid, .cards-grid--news { grid-template-columns: 1fr; }
  /* booking widget — поля в столбик */
  .booking__card { padding: 24px; margin-top: -40px; }
  .booking__row { flex-direction: column; align-items: stretch; }
  .booking__dates { flex: 1 1 auto; }
  .booking__submit { align-self: stretch; justify-content: center; }
  /* hero пониже на мобиле */
  .hero { height: 440px; }
  .hero-slide__title { font-size: 1.8rem; line-height: 2rem; }
  /* newsletter — кнопка на всю ширину */
  .newsletter__inputs { flex-direction: column; }
  .newsletter__submit { width: 100%; }
  /* footer — колонки в 2, низ в столбик */
  .site-footer__cols { grid-template-columns: repeat(2, 1fr); }
  .site-footer__bottom { flex-direction: column; align-items: flex-start; }
  .section-head { margin-bottom: 28px; }
  /* внутренние страницы — баннер пониже, сетки в одну колонку */
  .page-hero { min-height: 260px; }
  .page-hero__title { font-size: 2.25rem; }
  .plan-grid { grid-template-columns: 1fr; }
  .entities-list { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 520px) {
  .site-footer__cols { grid-template-columns: 1fr; }
  .navbar__cta { padding: 6px 14px; height: 32px; font-size: .8rem; }
}

/* ---------- ride-detail (Dragon Khan и т.п.) ---------- */
.ride-hero {
  position: relative; min-height: 480px;
  background-size: cover; background-position: center;
  color: #fff;
}
.ride-hero__inner {
  position: relative; height: 100%; min-height: 480px;
  display: flex; align-items: stretch; justify-content: space-between;
  gap: 24px; padding: 40px 20px;
  max-width: var(--maxw); margin: 0 auto;
}
.ride-hero__main { align-self: flex-end; flex: 1 1 auto; max-width: 700px; }
.ride-hero__tag {
  display: inline-block; padding: 4px 10px; border-radius: 4px;
  background: rgba(0,0,0,.35); font-family: var(--font-title);
  font-weight: 600; font-size: .85rem; margin-bottom: 12px;
}
.ride-hero__title {
  font-family: var(--font-display); font-weight: 400;
  font-size: clamp(2.2rem, 5vw, 4rem); line-height: 1.05;
  text-transform: uppercase; letter-spacing: .01em;
  text-shadow: 0 2px 12px rgba(0,0,0,.4);
}
.ride-sidebar {
  align-self: flex-start; background: #fff; color: var(--c-text);
  border-radius: 6px; padding: 16px 20px;
  min-width: 260px; max-width: 320px;
  box-shadow: 0 6px 16px rgba(0,0,0,.15);
}
.ride-sidebar__list { list-style: none; padding: 0; margin: 0; }
.ride-sidebar__item {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 0; border-bottom: 1px solid var(--c-border);
  font-size: .9rem; color: var(--c-primary);
}
.ride-sidebar__item:last-child { border-bottom: 0; }
.ride-sidebar__icon { color: var(--c-primary); font-size: 1rem; }

/* General information */
.section--general-info { background: #f7f7f7; padding: 40px 0; }
.general-info__title {
  font-family: var(--font-title); font-weight: 700; font-size: 1.5rem;
  color: var(--c-text); margin-bottom: 24px;
}
.general-info__grid {
  display: grid; gap: 16px;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}
.general-info__card {
  background: #fff; border-radius: 6px; padding: 18px 20px;
  border: 1px solid var(--c-border);
}
.general-info__label {
  font-family: var(--font-title); font-weight: 700; font-size: .95rem;
  color: var(--c-primary); margin-bottom: 8px;
}
.general-info__value { font-size: .9rem; color: var(--c-text); line-height: 1.4; }

/* длинное описание */
.section--ride-long { padding: 60px 0; }
.ride-long__inner { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: start; }
.ride-long__title {
  font-family: var(--font-title); font-weight: 700; font-size: 1.8rem;
  color: var(--c-text); margin-bottom: 16px;
}
.ride-long__text { font-size: 1rem; line-height: 1.6; color: var(--c-text); }
@media (max-width: 860px) { .ride-long__inner { grid-template-columns: 1fr; } }

/* короткое описание (fallback) */
.section--ride-short { padding: 50px 0; }
.ride-short__text { font-size: 1rem; line-height: 1.6; color: var(--c-text); margin-bottom: 16px; }
.ride-short__facts { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: 16px; }
.ride-short__facts li {
  background: var(--c-surface-2); padding: 8px 14px; border-radius: 20px;
  font-size: .9rem; color: var(--c-primary); font-weight: 600;
}

/* галерея */
.section--gallery { padding: 40px 0; }
.gallery__grid {
  display: grid; gap: 12px;
  grid-template-columns: repeat(3, 1fr);
}
.gallery__item {
  aspect-ratio: 4/3; border-radius: 6px;
  background-size: cover; background-position: center;
}
@media (max-width: 860px) { .gallery__grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .gallery__grid { grid-template-columns: 1fr; } }

/* where is it */
.section--where { padding: 60px 0; text-align: center; }
.where__title {
  font-family: var(--font-title); font-weight: 700; font-size: 1.6rem;
  color: var(--c-text); margin-bottom: 24px;
}
.where__map {
  max-width: 800px; margin: 0 auto 16px; aspect-ratio: 2/1;
  border-radius: 6px; background-size: cover; background-position: center;
}
.where__park { font-family: var(--font-title); font-weight: 700; font-size: 1.1rem; color: var(--c-text); }
.where__address { color: var(--c-muted); font-size: .95rem; margin-top: 4px; }

/* express pass cards */
.section--xpass { padding: 60px 0; text-align: center; }
.xpass__title {
  font-family: var(--font-title); font-weight: 700; font-size: 1.6rem;
  color: var(--c-text); margin-bottom: 8px;
}
.xpass__subtitle { color: var(--c-muted); max-width: 60ch; margin: 0 auto 32px; }
.xpass__card {
  background: var(--c-surface); border-radius: 8px; padding: 24px;
  display: flex; flex-direction: column; gap: 10px; align-items: stretch;
}
.xpass__name { font-family: var(--font-title); font-weight: 800; font-size: 1.4rem; color: var(--c-primary); }
.xpass__sub { font-weight: 600; color: var(--c-text); }
.xpass__text { color: var(--c-muted); font-size: .9rem; line-height: 1.4; }

/* explore other attractions */
.section--explore-other { padding: 60px 0; }
.explore__title {
  font-family: var(--font-title); font-weight: 700; font-size: 1.6rem;
  color: var(--c-text); margin-bottom: 24px; text-align: center;
}
.card__meta { color: var(--c-muted); font-size: .85rem; margin-bottom: 8px; }

/* ---------- tickets-page: hero c 2 CTA + grid карточек + change-of-plans ---------- */
/* Используется на /<lang>/tickets/ и /<lang>/tickets/<park>/. */

/* hero — две CTA рядом (Buy + See related promotion) */
.page-hero__ctas { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 6px; }
.btn--ghost {
  background: rgba(255, 255, 255, .12);
  color: #fff;
  border-color: rgba(255, 255, 255, .8);
  backdrop-filter: blur(2px);
}
.btn--ghost:hover { background: rgba(255, 255, 255, .22); }

/* btn--ghost-dark — вторая кнопка на белой карточке */
.btn--ghost-dark {
  background: #fff; color: var(--c-primary);
  border: 2px solid var(--c-primary);
}
.btn--ghost-dark:hover { background: var(--c-primary); color: #fff; }

/* park-filter — пилюли фильтра парков (имитация dropdown из OutputSearchTickets) */
.park-filter {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  margin-bottom: 36px; padding: 14px 18px;
  background: var(--c-surface-2); border-radius: 50px;
}
.park-filter__label {
  font-family: var(--font-title); font-weight: 700; color: var(--c-primary);
  font-size: .9rem; text-transform: uppercase;
}
.park-filter__list { display: flex; gap: 6px; flex-wrap: wrap; padding: 0; margin: 0; }
.park-filter__btn {
  padding: 8px 18px; border-radius: 50px;
  background: #fff; border: 1px solid var(--c-border);
  font-family: var(--font-title); font-weight: 600; font-size: .85rem;
  color: var(--c-muted-2);
  transition: background .15s, color .15s, border-color .15s;
}
.park-filter__btn:hover { color: var(--c-primary); border-color: var(--c-primary); }
.park-filter__btn.is-active {
  background: var(--c-primary); color: #fff; border-color: var(--c-primary);
}

/* tgroup — секция группы карточек (Multi-day / 1-day / Night) */
.tgroup { margin-bottom: 48px; }
.tgroup:last-child { margin-bottom: 0; }
.tgroup__title {
  font-family: var(--font-title); font-weight: 800; font-size: 1.5rem;
  color: var(--c-primary); margin-bottom: 20px;
  padding-bottom: 10px; border-bottom: 2px solid var(--c-border);
}

/* tcard__ctas — обёртка двух кнопок */
.tcard__ctas { display: flex; flex-direction: column; gap: 8px; margin-top: 4px; }
.tcard__ctas .btn { text-align: center; padding: 12px 20px; }

/* grid карточек билетов */
.section--tickets-grid { background: var(--c-bg); }
.tcards {
  display: grid; gap: 24px;
  grid-template-columns: repeat(3, 1fr);
}
.tcard {
  position: relative;
  display: flex; flex-direction: column; gap: 12px;
  padding: 28px 24px 24px;
  background: #fff; border: 1px solid var(--c-border); border-radius: 10px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, .04);
  transition: box-shadow .2s ease, transform .2s ease;
}
.tcard:hover { box-shadow: 0 8px 20px rgba(0, 0, 0, .08); transform: translateY(-2px); }

/* badge "Most popular" в правом верхнем углу */
.tcard__badge {
  position: absolute; top: -10px; right: 16px;
  background: var(--c-cta); color: #fff;
  font-family: var(--font-title); font-weight: 700; font-size: .75rem;
  text-transform: uppercase; letter-spacing: .03em;
  padding: 6px 12px; border-radius: 4px;
}

.tcard__name {
  font-family: var(--font-title); font-weight: 800;
  font-size: 1.15rem; color: var(--c-primary); line-height: 1.25;
}

/* chip-ы парков, к которым относится билет */
.tcard__parks { display: flex; flex-wrap: wrap; gap: 6px; padding: 0; }
.tcard__park {
  font-size: .72rem; font-weight: 600; color: var(--c-muted-2);
  background: var(--c-surface); border: 1px solid var(--c-border);
  border-radius: 50px; padding: 4px 10px;
  text-transform: uppercase; letter-spacing: .02em;
}

.tcard__text {
  color: var(--c-muted); font-size: .92rem; line-height: 1.5;
  flex: 1 1 auto;
}

.tcard__buy { align-self: flex-start; margin-top: 4px; }

/* блок "Change of plans?" под карточками */
.section--change-plans { background: var(--c-surface-2); padding: 48px 0; }
.change-plans { max-width: 760px; margin: 0 auto; text-align: center; }
.change-plans__title {
  font-family: var(--font-title); font-weight: 700;
  font-size: 1.5rem; color: var(--c-primary); margin-bottom: 12px;
}
.change-plans__text { color: var(--c-muted); font-size: .98rem; line-height: 1.55; }
.change-plans__cta { margin-top: 20px; }

/* tickets-long — SEO-абзац под карточками */
.section--tickets-long { background: #fff; padding: 64px 0; }
.tlong { max-width: 920px; margin: 0 auto; }
.tlong__title {
  font-family: var(--font-title); font-weight: 800;
  font-size: 1.6rem; color: var(--c-primary); margin-bottom: 20px;
}
.tlong__p {
  color: var(--c-text); font-size: .98rem; line-height: 1.7; margin-bottom: 14px;
}
.tlong__p b { color: var(--c-primary); }

/* tickets-bottom — большой имидж-баннер в самом низу */
.section--tickets-bottom {
  height: 376px;
  background-size: cover; background-position: center;
  background-repeat: no-repeat;
}
@media (max-width: 860px) {
  .section--tickets-bottom { height: 220px; }
}

/* ---------- /promotions/ main: intro + ponient ---------- */
.section--promo-intro { background: #fff; padding: 56px 0 32px; }
.promo-intro { max-width: 920px; margin: 0 auto; }
.promo-intro__p {
  color: var(--c-text); font-size: 1rem; line-height: 1.7; margin-bottom: 14px;
}
.promo-intro__p:last-child { margin-bottom: 0; }

.section--ponient { background: var(--c-surface-2); padding: 56px 0; }
.ponient-block {
  max-width: 820px; margin: 0 auto; text-align: center;
  display: flex; flex-direction: column; gap: 14px; align-items: center;
}
.ponient-block__title {
  font-family: var(--font-title); font-weight: 800;
  font-size: 1.6rem; color: var(--c-primary);
}
.ponient-block__short { color: var(--c-text); font-size: 1.02rem; font-weight: 600; }
.ponient-block__long  { color: var(--c-muted); font-size: .95rem; line-height: 1.65; }
.ponient-block .btn { margin-top: 8px; }

@media (max-width: 860px) {
  .tcards { grid-template-columns: repeat(2, 1fr); }
  .page-hero__ctas { flex-direction: column; align-items: stretch; }
  .page-hero__ctas .btn { text-align: center; }
}
@media (max-width: 520px) {
  .tcards { grid-template-columns: 1fr; }
}

/* ---------- promo-detail v2: 1-в-1 с дампом ---------- */
/* /<lang>/promotions/<slug>/. Структура: phero(+featbox внутри) → ptabs(pill) →
   ptextimg → pslider → pgal → newsletter. */

/* HERO: фото на весь, overlay, контент слева + featbox-плашка справа */
.phero {
  position: relative; min-height: 420px;
  background-size: cover; background-position: center;
  background-color: var(--c-primary);
  color: #fff; overflow: hidden;
}
.phero__overlay {
  position: absolute; inset: 0;
  background: linear-gradient(90deg, rgba(0,0,0,.45) 0%, rgba(0,0,0,.2) 60%, rgba(0,0,0,.0) 100%);
}
.phero__inner {
  position: relative; display: grid; gap: 24px;
  grid-template-columns: 1.4fr 1fr; align-items: center;
  padding: 56px 20px;
}
.phero__main { display: flex; flex-direction: column; align-items: flex-start; gap: 18px; }
.phero__badge {
  display: inline-block; padding: 6px 14px; border-radius: 4px;
  background: #fff; color: var(--c-primary);
  font-family: var(--font-title); font-weight: 700; font-size: .82rem;
}
.phero__title {
  font-family: var(--font-title); font-weight: 800;
  font-size: clamp(1.6rem, 3vw, 2.4rem); line-height: 1.15;
  text-shadow: 0 2px 12px rgba(0,0,0,.35);
  max-width: 32ch;
}
.phero__cta { align-self: flex-start; padding: 14px 28px; }

/* белая плашка-featbox справа в hero */
.phero__featbox {
  background: #fff; color: var(--c-text);
  border-radius: 10px; padding: 20px 22px;
  box-shadow: 0 6px 18px rgba(0,0,0,.18);
  max-width: 340px; justify-self: end;
}
.phero__featbox ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 12px; }
.phero__featbox li { display: flex; align-items: flex-start; gap: 12px; font-size: .88rem; line-height: 1.4; }
.phero__featbox-icon {
  width: 28px; height: 28px; flex-shrink: 0; color: var(--c-primary);
  display: inline-flex; align-items: center; justify-content: center;
}
.phero__featbox-icon svg { width: 18px; height: 18px; }
.phero__featbox-text { color: var(--c-text); font-weight: 500; }

/* TABS: pill-style, центрированные */
.section--ptabs { background: #fff; padding: 48px 0; }
.ptabs { max-width: 940px; margin: 0 auto; }
.ptabs__head {
  display: inline-flex; padding: 6px; gap: 4px;
  background: var(--c-surface-2); border-radius: 50px;
  margin: 0 auto 24px; justify-content: center;
  width: 100%; max-width: 460px;
}
.ptabs__btn {
  flex: 1; padding: 10px 20px; border-radius: 50px;
  background: none; border: 0; cursor: pointer;
  font-family: var(--font-title); font-weight: 600; font-size: .9rem;
  color: var(--c-muted); transition: background .2s, color .2s;
}
.ptabs__btn:hover { color: var(--c-primary); }
.ptabs__btn.is-active { background: var(--c-primary); color: #fff; }

.ptabs__panel { display: none; padding: 8px 0; }
.ptabs__panel.is-active { display: block; }
.ptabs__list { list-style: none; padding: 0; margin: 0; }
.ptabs__list li { font-size: .92rem; line-height: 1.6; color: var(--c-text); margin-bottom: 8px; }
.ptabs__list--2col { columns: 2; column-gap: 40px; }
.ptabs__list--2col li { break-inside: avoid; }
.ptabs__list--check li { position: relative; padding-left: 24px; }
.ptabs__list--check li::before {
  content: "✓"; position: absolute; left: 0; color: var(--c-success); font-weight: 800;
}

/* TEXT-IMAGE: 2-col grid (text + photo) */
.section--ptextimg { padding: 56px 0; background: #fff; }
.ptextimg {
  display: grid; gap: 40px; align-items: center;
  grid-template-columns: 1fr 1fr;
}
.ptextimg__title {
  font-family: var(--font-title); font-weight: 800;
  font-size: clamp(1.4rem, 2.5vw, 2rem); color: var(--c-text);
  margin-bottom: 16px; line-height: 1.2;
}
.ptextimg__p { font-size: .98rem; line-height: 1.65; color: var(--c-text); margin-bottom: 12px; }
.ptextimg__p b { color: var(--c-primary); font-weight: 700; }
.ptextimg__more {
  display: inline-block; margin-top: 8px;
  color: var(--c-primary); font-weight: 600;
  border-bottom: 1px solid var(--c-primary);
}
.ptextimg__media {
  min-height: 320px; border-radius: 8px;
  background-color: var(--c-surface-2);
  background-size: cover; background-position: center;
}

/* SLIDER карточек */
.section--pslider { background: var(--c-surface-2); padding: 56px 0; }
.pslider {
  display: flex; gap: 20px; overflow-x: auto; padding: 8px 4px 24px;
  scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch;
}
.pslide {
  flex: 0 0 300px; background: #fff; border-radius: 8px; overflow: hidden;
  scroll-snap-align: start;
  display: flex; flex-direction: column;
  box-shadow: 0 2px 6px rgba(0,0,0,.06);
}
.pslide__img {
  height: 170px; background-color: var(--c-surface);
  background-size: cover; background-position: center;
}
.pslide__body { padding: 14px 16px 18px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.pslide__stars { display: flex; gap: 2px; color: var(--c-star); font-size: .85rem; }
.pslide__name {
  font-family: var(--font-title); font-weight: 800;
  font-size: 1.02rem; color: var(--c-text);
}
.pslide__desc { color: var(--c-muted); font-size: .85rem; line-height: 1.45; flex: 1; }
.pslide__loc { color: var(--c-muted-2); font-size: .8rem; display: flex; align-items: center; gap: 4px; }
.pslide__loc-icon { font-size: .9rem; }
.pslide__cta { align-self: stretch; text-align: center; padding: 10px 16px; }

/* GALLERY: 3-в-ряд (по дампу видно 3 ячейки + слайдер; берём первые 3, остальные скрыты на десктопе) */
.section--pgal { background: #fff; padding: 24px 0 56px; }
.pgal {
  display: grid; gap: 12px;
  grid-template-columns: repeat(3, 1fr);
}
.pgal__cell {
  aspect-ratio: 4 / 3;
  background-size: cover; background-position: center;
  background-color: var(--c-surface-2);
  border-radius: 8px;
}
/* 4-я и 5-я ячейки — скрываем на больших экранах (на оригинале они в слайдере) */
.pgal__cell:nth-child(n+4) { display: none; }

/* NEWSLETTER inline */
.section--nl { background: var(--c-primary); color: #fff; padding: 40px 0; }
.nl { max-width: 760px; margin: 0 auto; text-align: center; }
.nl__title { font-family: var(--font-title); font-weight: 700; font-size: 1.2rem; margin-bottom: 22px; }
.nl__list { list-style: none; padding: 0; display: flex; justify-content: space-around; gap: 16px; margin-bottom: 22px; flex-wrap: wrap; }
.nl__li { position: relative; padding-left: 22px; font-size: .9rem; }
.nl__li::before { content: "✓"; position: absolute; left: 0; color: #fff; font-weight: 800; }
.nl__form { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }
.nl__input { flex: 1 1 200px; padding: 12px 16px; border: 0; border-radius: 6px; font-family: inherit; font-size: .92rem; }
.nl__submit { flex: 0 0 auto; padding: 12px 28px; }
.nl__privacy { display: flex; gap: 8px; align-items: flex-start; font-size: .8rem; text-align: left; }
.nl__privacy input { margin-top: 3px; }
.nl__privacy a { color: #fff; text-decoration: underline; }

/* Responsive */
@media (max-width: 860px) {
  .phero__inner { grid-template-columns: 1fr; padding: 40px 20px; }
  .phero__featbox { justify-self: stretch; max-width: 100%; }
  .ptextimg { grid-template-columns: 1fr; }
  .ptabs__list--2col { columns: 1; }
  .pgal { grid-template-columns: repeat(2, 1fr); }
  .pgal__cell:nth-child(n+4) { display: block; }
  .pgal__cell:nth-child(n+5) { display: none; }
}
@media (max-width: 520px) {
  .pgal { grid-template-columns: 1fr; }
  .pgal__cell:nth-child(n+3) { display: none; }
  .nl__form { flex-direction: column; }
}

/* ---------- OLD promo (featbox/textimg/pslider/pgallery) — оставлено для совместимости, скоро удалить ---------- */
.section--featbox-OLD-ignore { display: none; }

/* FeatureBox — горизонтальная плашка 5 ключевых фактов под hero */
.section--featbox { background: #fff; padding: 36px 0; }
.featbox {
  display: grid; grid-template-columns: repeat(5, 1fr); gap: 16px;
  list-style: none; padding: 0; margin: 0;
  background: var(--c-surface-2); border-radius: 12px; padding: 20px;
}
.featbox__item {
  display: flex; flex-direction: column; align-items: center; gap: 8px;
  text-align: center; padding: 8px;
}
.featbox__icon {
  width: 44px; height: 44px; border-radius: 50%;
  background: var(--c-primary); color: #fff;
  display: inline-flex; align-items: center; justify-content: center;
}
.featbox__icon svg { width: 22px; height: 22px; }
.featbox__text {
  font-size: .88rem; font-weight: 600; color: var(--c-text); line-height: 1.35;
}

/* Tabs: Conditions / Benefits */
.section--tabs { background: var(--c-surface-2); padding: 56px 0; }
.ptabs { background: #fff; border-radius: 12px; overflow: hidden;
         box-shadow: 0 2px 8px rgba(0,0,0,.05); max-width: 920px; margin: 0 auto; }
.ptabs__head {
  display: flex; gap: 0;
  background: var(--c-surface);
  border-bottom: 1px solid var(--c-border);
}
.ptabs__btn {
  flex: 1; padding: 16px 20px;
  background: none; border: 0; cursor: pointer;
  font-family: var(--font-title); font-weight: 600; font-size: .95rem;
  color: var(--c-muted); border-bottom: 3px solid transparent;
  transition: color .15s, border-color .15s, background .15s;
}
.ptabs__btn:hover { background: rgba(0,0,0,.03); }
.ptabs__btn.is-active {
  color: var(--c-primary); border-bottom-color: var(--c-primary);
  background: #fff;
}
.ptabs__panel { padding: 28px 32px; display: none; }
.ptabs__panel.is-active { display: block; }
.ptabs__list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
.ptabs__list li {
  font-size: .94rem; line-height: 1.55; color: var(--c-text);
  padding-left: 0;
}
.ptabs__list--check li { position: relative; padding-left: 26px; }
.ptabs__list--check li::before {
  content: "✓"; position: absolute; left: 0; top: 0;
  color: var(--c-success); font-weight: 800; font-size: 1.05rem;
}

/* TextImage — большой заголовок-слоган + плашка-плейсхолдер */
.section--textimg { background: #fff; padding: 56px 0; }
.textimg { display: grid; grid-template-columns: 1fr 1fr; gap: 32px; align-items: center; }
.textimg__text h2 {
  font-family: var(--font-display, var(--font-title));
  font-size: clamp(1.8rem, 3vw, 2.5rem); line-height: 1.15;
  color: var(--c-primary); text-transform: uppercase;
}
.textimg__media {
  min-height: 280px; border-radius: 12px;
  background: linear-gradient(135deg, var(--c-surface), var(--c-surface-2));
  border: 1px solid var(--c-border);
}

/* Promo slider: горизонтальная карусель карточек (отели/парки) */
.section--pslider { background: var(--c-surface-2); padding: 56px 0; }
.pslider {
  display: flex; gap: 16px; overflow-x: auto;
  padding: 8px 4px 16px; scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
}
.pslide {
  flex: 0 0 260px; background: #fff; border-radius: 10px; overflow: hidden;
  scroll-snap-align: start; border: 1px solid var(--c-border);
}
.pslide__media {
  height: 160px;
  background: linear-gradient(135deg, var(--c-primary), var(--c-primary-dark));
}
.pslide__name {
  padding: 14px 16px; font-family: var(--font-title); font-weight: 700;
  font-size: 1rem; color: var(--c-text);
}

/* Promo gallery: 5 одинаковых плиток */
.section--pgallery { background: #fff; padding: 56px 0; }
.pgallery {
  display: grid; gap: 12px;
  grid-template-columns: 2fr 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  height: 380px;
}
.pgallery__cell {
  background: linear-gradient(135deg, var(--c-surface), var(--c-surface-2));
  border: 1px solid var(--c-border); border-radius: 8px;
}
.pgallery__cell:first-child { grid-row: span 2; }

/* Bottom CTA */
.section--pcta { background: var(--c-surface-2); padding: 40px 0 64px; }
.pcta { text-align: center; }

/* ---------- ticket-deep: intro / features / cards / cta ---------- */
/* /<lang>/<group>/<slug>/ */

/* hero на deep-страницах. Если /assets/img/<group>/<slug>.jpg существует —
   браузер подгрузит. Если нет — будет CSS-цвет (синий градиент) fallback'ом. */
.page-hero--deep {
  min-height: 320px;
  background-color: var(--c-primary);
  background-image: linear-gradient(135deg, var(--c-primary), var(--c-primary-dark));
  background-size: cover;
  background-position: center;
}
/* при наличии inline style background-image он перебивает градиент */

.section--deep-intro { padding: 48px 0 24px; }
.deep-intro { max-width: 800px; margin: 0 auto; text-align: center; }
.deep-intro p { font-size: 1.05rem; line-height: 1.65; color: var(--c-text); }

.section--deep-feats { padding: 24px 0 48px; }
.deep-feats {
  list-style: none; padding: 0; margin: 0 auto; max-width: 800px;
  display: flex; flex-direction: column; gap: 12px;
}
.deep-feats__item {
  display: flex; align-items: flex-start; gap: 12px;
  padding: 14px 18px; background: var(--c-surface-2); border-radius: 8px;
}
.deep-feats__bullet { color: var(--c-success); font-weight: 800; font-size: 1.1rem; line-height: 1.4; }
.deep-feats__text { color: var(--c-text); font-size: .95rem; line-height: 1.5; }

.section--deep-cards { background: var(--c-surface-2); padding: 56px 0; }
.dcards { display: grid; gap: 20px; grid-template-columns: repeat(3, 1fr); }
.dcard {
  background: #fff; border: 1px solid var(--c-border); border-radius: 10px;
  overflow: hidden; display: flex; flex-direction: column;
  transition: box-shadow .2s ease, transform .2s ease;
}
.dcard:hover { box-shadow: 0 8px 20px rgba(0,0,0,.08); transform: translateY(-2px); }
.dcard__media {
  height: 160px;
  background: linear-gradient(135deg, var(--c-primary), var(--c-primary-dark));
}
.dcard__body { padding: 18px 20px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.dcard__name {
  font-family: var(--font-title); font-weight: 800;
  font-size: 1.05rem; color: var(--c-primary); line-height: 1.3;
}
.dcard__text { color: var(--c-muted); font-size: .9rem; line-height: 1.5; }

.section--deep-cta { padding: 40px 0 64px; }
.deep-cta { text-align: center; }

/* deep-textimg: текст слева, фото справа */
.section--deep-textimg { padding: 56px 0; background: #fff; }
.deep-textimg { display: grid; grid-template-columns: 1fr 1fr; gap: 32px; align-items: center; }
.deep-textimg__text h2 {
  font-family: var(--font-title); font-weight: 800;
  font-size: clamp(1.4rem, 2.5vw, 2rem); color: var(--c-primary);
  margin-bottom: 14px;
}
.deep-textimg__text p { color: var(--c-text); font-size: .98rem; line-height: 1.6; }
.deep-textimg__media {
  min-height: 280px; border-radius: 8px;
  background-color: var(--c-surface-2);
  background-size: cover; background-position: center;
}

/* deep-gallery: 5 ячеек, верхняя крупная, нижние 4 в 2×2 */
.section--deep-gallery { background: var(--c-surface-2); padding: 48px 0; }
.deep-gallery {
  display: grid; gap: 12px;
  grid-template-columns: 2fr 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  height: 380px;
}
.deep-gallery__cell {
  background-color: var(--c-surface);
  background-size: cover; background-position: center;
  border-radius: 8px;
}
.deep-gallery__cell:first-child { grid-row: span 2; }

@media (max-width: 860px) {
  .deep-textimg { grid-template-columns: 1fr; }
  .deep-gallery { grid-template-columns: 1fr 1fr; grid-template-rows: repeat(3, 1fr); height: auto; }
  .deep-gallery__cell { aspect-ratio: 4/3; }
  .deep-gallery__cell:first-child { grid-column: span 2; grid-row: auto; }
}

@media (max-width: 860px) {
  .dcards { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 520px) {
  .dcards { grid-template-columns: 1fr; }
}

@media (max-width: 860px) {
  .featbox { grid-template-columns: repeat(2, 1fr); }
  .textimg { grid-template-columns: 1fr; }
  .pgallery { grid-template-columns: 1fr 1fr; grid-template-rows: repeat(3, 1fr); height: auto; }
  .pgallery__cell { aspect-ratio: 4/3; }
  .pgallery__cell:first-child { grid-column: span 2; grid-row: auto; }
}
@media (max-width: 520px) {
  .featbox { grid-template-columns: 1fr; }
  .ptabs__panel { padding: 20px 18px; }
}

/* ============================================================
   themed-евенты: форс видимости reveal-on-scroll контента.
   Оригинал обёртывает каждую секцию в .animatedDiv (opacity:0) и героические
   тексты в heroCustom_*(opacity:0 + animation), а появление включает JS-скриптами
   (IntersectionObserver) + @keyframes. Ни того, ни другого у нас нет (extract их не
   тащит), поэтому контент навсегда невидим — отсюда "на евентах ничего нет".
   Форсируем видимость: opacity:1, сбрасываем стартовый transform и анимации. */
[class*="animatedDiv_animatedDiv"],
[class*="heroCustom_title"],
[class*="heroCustom_subtitleWrapper"],
[class*="heroCustom_buttonsWrapper"],
[class*="heroCustom_arrow"] {
  opacity: 1 !important;
  transform: none !important;
  animation: none !important;
}

/* ---------- stepped funnel (/tickets-funnel/) ---------- */
.section--sf { padding-top: 48px; }
.sf { position: relative; max-width: 960px; margin: 0 auto; }

/* степ-индикатор */
.sf__steps {
  display: flex; justify-content: center; gap: 0;
  margin-bottom: 40px; flex-wrap: wrap;
}
.sf__steps-item {
  display: flex; align-items: center; gap: 10px;
  font-family: var(--font-title); font-weight: 700; color: var(--c-muted);
  padding: 0 28px; position: relative;
}
.sf__steps-item:not(:last-child)::after {
  content: ""; width: 48px; height: 2px; background: var(--c-border);
  margin-left: 28px;
}
.sf__steps-num {
  display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px; border-radius: 50%;
  background: var(--c-surface); color: var(--c-muted);
  border: 2px solid var(--c-border); font-size: .95rem;
}
.sf__steps-item.is-active { color: var(--c-primary); }
.sf__steps-item.is-active .sf__steps-num {
  background: var(--c-primary); color: #fff; border-color: var(--c-primary);
}

/* шаги */
.sf__step[hidden] { display: none; }

/* ШАГ 1 — карточки тарифов */
.sf__services {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--gap);
}
.sf__service {
  display: flex; flex-direction: column;
  background: var(--c-bg); border: 1px solid var(--c-border);
  border-radius: var(--radius); padding: 28px 24px; text-align: center;
  cursor: pointer;
  transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.sf__service:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 28px rgba(50, 51, 147, .14);
  border-color: var(--c-primary);
}
.sf__service-name { color: var(--c-primary); margin-bottom: 8px; }
.sf__service-price {
  font-family: var(--font-display); font-size: 2.4rem; line-height: 1;
  color: var(--c-cta); margin-bottom: 14px;
}
.sf__service-text { color: var(--c-muted); font-size: .95rem; flex: 1 1 auto; margin-bottom: 22px; }
.sf__service-pick { align-self: center; }

/* ШАГ 2 — кол-во + корзина */
.sf__purchase {
  display: grid; grid-template-columns: 1fr 340px; gap: var(--gap); align-items: start;
}
.sf__pick {
  background: var(--c-surface-2); border: 1px solid var(--c-border);
  border-radius: var(--radius); padding: 28px;
}
.sf__back {
  background: none; border: none; cursor: pointer; color: var(--c-link);
  font-family: var(--font-title); font-weight: 600; font-size: .95rem;
  padding: 0; margin-bottom: 18px;
}
.sf__back:hover { text-decoration: underline; }
.sf__pick-name { color: var(--c-primary); margin-bottom: 4px; }
.sf__pick-price { color: var(--c-muted); margin-bottom: 24px; }
.sf__pick-price span { font-family: var(--font-display); font-size: 1.6rem; color: var(--c-text); }
.sf__pick-price em { font-style: normal; }

.sf__qty { display: inline-flex; align-items: center; gap: 0; border: 2px solid var(--c-border); border-radius: var(--radius-btn); overflow: hidden; }
.sf__qty-btn {
  width: 46px; height: 46px; border: none; background: var(--c-surface);
  font-size: 1.4rem; line-height: 1; cursor: pointer; color: var(--c-primary);
  transition: background .15s ease;
}
.sf__qty-btn:hover { background: var(--c-border); }
.sf__qty-val {
  width: 58px; height: 46px; text-align: center; border: none;
  font-family: var(--font-title); font-weight: 700; font-size: 1.1rem;
  -moz-appearance: textfield;
}
.sf__qty-val::-webkit-outer-spin-button,
.sf__qty-val::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* корзина-сайдбар */
.sf__cart {
  background: var(--c-bg); border: 1px solid var(--c-border);
  border-radius: var(--radius); padding: 24px;
  box-shadow: 0 8px 24px rgba(50, 51, 147, .08);
  position: sticky; top: 96px;
}
.sf__cart-title { color: var(--c-primary); margin-bottom: 18px; padding-bottom: 14px; border-bottom: 1px solid var(--c-border); }
.sf__cart-line { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 18px; }
.sf__cart-line-name { font-weight: 600; }
.sf__cart-line-qty { color: var(--c-muted); white-space: nowrap; }
.sf__cart-total {
  display: flex; justify-content: space-between; align-items: baseline;
  padding-top: 16px; border-top: 1px solid var(--c-border); margin-bottom: 20px;
  font-family: var(--font-title); font-weight: 700;
}
.sf__cart-total-val { font-family: var(--font-display); font-size: 1.8rem; color: var(--c-cta); }
.sf__pay { width: 100%; text-align: center; }

/* заглушка оплаты — оверлей поверх воронки */
.sf__stub {
  position: fixed; inset: 0; z-index: 1000;
  display: flex; align-items: center; justify-content: center;
  background: rgba(37, 38, 110, .55); padding: 20px;
}
.sf__stub[hidden] { display: none; }
.sf__stub-box {
  background: var(--c-bg); border-radius: var(--radius);
  max-width: 440px; width: 100%; padding: 40px 32px; text-align: center;
  box-shadow: 0 24px 60px rgba(0, 0, 0, .3);
}
.sf__stub-title { color: var(--c-primary); margin-bottom: 12px; }
.sf__stub-text { color: var(--c-muted); margin-bottom: 28px; }

/* адаптив */
@media (max-width: 768px) {
  .sf__services { grid-template-columns: 1fr; }
  .sf__purchase { grid-template-columns: 1fr; }
  .sf__cart { position: static; }
  .sf__steps-item { padding: 0 14px; }
  .sf__steps-item:not(:last-child)::after { width: 24px; margin-left: 14px; }
}

/* ---------- cookie-баннер (глобальный) ---------- */
.cookie-banner {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 2000;
  background: #fff; border-top: 1px solid var(--c-border); box-shadow: 0 -6px 24px rgba(0,0,0,.1);
  padding: 16px 0;
}
.cookie-banner[hidden] { display: none; }
.cookie-banner__inner { display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
.cookie-banner__text { color: var(--c-muted-2); font-size: .85rem; max-width: 70ch; margin: 0; }
.cookie-banner__text a { color: var(--c-link); text-decoration: underline; }
.cookie-banner__actions { display: flex; gap: 12px; flex-shrink: 0; }
.cookie-banner__reject, .cookie-banner__accept { padding: 10px 22px; font-size: .9rem; }

/* ---------- воронка билетов /tickets/ (экран Selection) ---------- */
.section--tf { padding: 32px 0 40px; min-height: 70vh; }  /* высота в экран — футер не подскакивает на коротких шагах */

/* минимальный футер воронки (как book.* оригинала) */
.tf-foot { border-top: 1px solid var(--c-border); padding: 22px 0 18px; margin-top: 20px; }
.tf-foot__top { display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; margin-bottom: 16px; }
.tf-foot__help { display: flex; align-items: center; gap: 16px; }
.tf-foot__help-q { font-family: var(--font-title); font-weight: 600; color: var(--c-text); }
.tf-foot__tel { display: inline-flex; align-items: center; gap: 8px; color: var(--c-primary); font-family: var(--font-title); font-weight: 700; font-size: 1.1rem; }
.tf-foot__cards { display: flex; align-items: center; gap: 8px; }
.tf-foot__cards img { height: 26px; width: auto; display: block; }

/* подпись-условия билета (правило покупки) */
.tf-ticket__cond { border-top: 1px solid var(--c-border); margin-top: 8px; padding-top: 8px; display: flex; flex-direction: column; gap: 3px; }
.tf-ticket__cond-price { font-size: .8rem; color: var(--c-text); }
.tf-ticket__cond-price b { color: var(--c-primary); }
.tf-ticket__cond-note { font-size: .72rem; color: var(--c-muted); line-height: 1.35; }
.tf-foot__legal { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding-top: 14px; border-top: 1px solid var(--c-border); }
.tf-foot__legal > span { color: var(--c-muted); font-size: .8rem; }
.tf-foot__links { display: flex; gap: 18px; flex-wrap: wrap; }
.tf-foot__links a { color: var(--c-muted); font-size: .8rem; }
.tf-foot__links a:hover { color: var(--c-primary); }
.tf-steps { display: flex; justify-content: center; align-items: center; gap: 0; margin-bottom: 28px; flex-wrap: wrap; }
.tf-steps__item {
  display: flex; align-items: center; gap: 8px;
  font-family: var(--font-title); font-weight: 600; font-size: .82rem; color: var(--c-muted);
  position: relative; padding-right: 56px;
}
.tf-steps__item:not(:last-child)::after {
  content: ""; position: absolute; right: 14px; top: 50%; width: 42px; height: 2px;
  background: var(--c-border); transform: translateY(-50%);
}
.tf-steps__dot { width: 14px; height: 14px; border-radius: 50%; background: var(--c-border); }
.tf-steps__item.is-active { color: var(--c-primary); }
.tf-steps__item.is-active .tf-steps__dot { background: var(--c-primary); }

.tf__title { color: var(--c-text); text-align: center; font-size: clamp(1.3rem, 2.2vw, 1.7rem); margin-bottom: 6px; }
.tf__sub { color: var(--c-muted); text-align: center; font-size: .85rem; margin: 0 auto 26px; max-width: 60ch; }

.tf-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; align-items: stretch; max-width: 920px; margin: 0 auto; }
.tf-card {
  display: flex; flex-direction: column; background: var(--c-bg);
  border: 1px solid var(--c-border); border-radius: 12px; overflow: hidden;
  box-shadow: 0 6px 18px rgba(0,0,0,.05);
}
.tf-card__banner { aspect-ratio: 16 / 8; background-size: cover; background-position: center; }
.tf-card__body { display: flex; flex-direction: column; padding: 16px 18px 18px; flex: 1 1 auto; }
.tf-card__title { color: var(--c-text); font-size: 1.1rem; margin-bottom: 10px; }
.tf-card__list { display: flex; flex-direction: column; gap: 7px; margin-bottom: 16px; flex: 1 1 auto; }
.tf-card__list li {
  position: relative; padding-left: 24px; color: var(--c-text); font-size: .82rem; line-height: 1.35;
}
.tf-card__list li::before {
  content: "✓"; position: absolute; left: 0; top: 0;
  color: var(--c-success); font-weight: 700;
}
.tf-card__btn { text-align: center; margin-top: auto; }

/* шаги, навигация */
.tf-step[hidden] { display: none; }
.tf__h2 { color: var(--c-text); font-size: 1.5rem; margin-bottom: 8px; text-align: center; }
.tf-back { display: inline-flex; align-items: center; gap: 4px; background: var(--c-surface-2, #f6f7fb); border: 2px solid var(--c-border); border-radius: var(--radius-btn, 999px); cursor: pointer; color: var(--c-link); font-family: var(--font-title); font-weight: 700; font-size: 1rem; padding: 9px 20px; margin-bottom: 22px; transition: border-color .15s, background .15s; }
.tf-back:hover { border-color: var(--c-primary); background: #fff; text-decoration: none; }
.tf-step__nav { margin-top: 24px; display: flex; gap: 12px; }
.tf-btn--ghost { background: var(--c-surface-2); color: var(--c-muted-2); border: 2px solid var(--c-border); }
.tf-btn--ghost:hover { border-color: var(--c-primary); color: var(--c-primary); }

/* шаг 2 — тип билета */
.tf-cards--2 { grid-template-columns: repeat(2, 1fr); max-width: 720px; margin: 0 auto; }
.tf-type { display: flex; flex-direction: column; border: 1px solid var(--c-border); border-radius: 12px; overflow: hidden; box-shadow: 0 6px 18px rgba(0,0,0,.05); }
.tf-type__head { background: var(--tf-accent, var(--c-primary)); color: #fff; font-family: var(--font-display); font-size: 1.8rem; padding: 34px 22px; letter-spacing: .5px; }
.tf-type__head span { opacity: .85; }
.tf-type__body { padding: 20px 22px; display: flex; flex-direction: column; gap: 8px; }
.tf-type__body h3 { color: var(--c-text); }
.tf-type__body p { color: var(--c-muted); font-size: .9rem; margin-bottom: 8px; }
.tf-type__body .btn { align-self: stretch; text-align: center; }

/* общий layout шагов 3–5: поток шага + корзина-спутник справа */
.tf-flow { display: grid; grid-template-columns: 1fr 320px; gap: var(--gap); align-items: start; }
.tf-flow[hidden] { display: none; }
.tf-flow__main { min-width: 0; }
/* фильтры парк+дата + тумблер дней — по центру колонки */
.tf-buy__filters { display: flex; gap: 16px; flex-wrap: wrap; margin-bottom: 18px; justify-content: center; }
[data-tf-step="3"] .tf-days { margin-left: auto; margin-right: auto; }
.tf-field { display: flex; flex-direction: column; gap: 6px; }
.tf-field > span { font-family: var(--font-title); font-weight: 600; font-size: .85rem; color: var(--c-muted-2); }
.tf-field input, .tf-field select { font-family: var(--font-body); font-size: 1rem; padding: 11px 14px; border: 2px solid var(--c-border); border-radius: var(--radius); background: var(--c-bg); min-width: 200px; box-shadow: 0 2px 8px rgba(50,51,147,.05); }
.tf-field input:focus, .tf-field select:focus { outline: none; border-color: var(--c-primary); }
/* кастомный календарь (визуально как оригинал, без цен) */
/* ── booking-календарь на главной (кастомный popup; вся кнопка кликабельна) ── */
.calendarButton_root___iFlR { cursor: pointer; }
.bk-cal {
  position: absolute; top: calc(100% + 8px); left: 0; z-index: 80;
  background: #fff; border: 1px solid #dad9e8; border-radius: 12px;
  box-shadow: 0 16px 40px rgba(0,0,0,.18); padding: 18px 20px; min-width: 580px;
}
.bk-cal[hidden] { display: none; }
.bk-cal__months { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.bk-cal__nav { position: absolute; top: 16px; border: none; background: none; cursor: pointer; font-size: 1.4rem; color: #323393; width: 30px; height: 30px; line-height: 1; }
.bk-cal__nav--prev { left: 14px; } .bk-cal__nav--next { right: 14px; }
.bk-cal__title { text-align: center; font-family: var(--font-title, inherit); font-weight: 700; margin-bottom: 10px; color: #333; text-transform: capitalize; }
.bk-cal__dow { display: grid; grid-template-columns: repeat(7,1fr); gap: 2px; margin-bottom: 6px; }
.bk-cal__dow span { text-align: center; font-size: .7rem; color: #8a89a3; font-weight: 600; text-transform: capitalize; }
.bk-cal__grid { display: grid; grid-template-columns: repeat(7,1fr); gap: 4px; }
.bk-cal__cell {
  aspect-ratio: 1; border: 1px solid #e7e6f0; border-radius: 8px; background: #fff;
  cursor: pointer; font-weight: 600; font-size: .85rem; color: #333;
  display: flex; align-items: center; justify-content: center; transition: background .12s, border-color .12s;
}
.bk-cal__cell--empty { border: none; cursor: default; }
.bk-cal__cell:not(.bk-cal__cell--empty):hover { border-color: #323393; }
.bk-cal__cell.is-disabled { color: #cfcede; border-color: transparent; cursor: default; }
.bk-cal__cell.is-sel { background: #323393; color: #fff; border-color: #323393; }
@media (max-width: 680px) {
  .bk-cal { min-width: 0; width: calc(100vw - 32px); padding: 14px; }
  .bk-cal__months { grid-template-columns: 1fr; gap: 14px; }
}

.tf-cal-field { position: relative; }
.tf-cal-input {
  text-align: left; font-family: var(--font-body); font-size: 1rem; color: var(--c-text);
  padding: 11px 14px; border: 2px solid var(--c-border); border-radius: var(--radius); background: var(--c-bg); cursor: pointer; min-width: 200px; box-shadow: 0 2px 8px rgba(50,51,147,.05);
}
.tf-cal-input:hover { border-color: var(--c-primary); }
.tf-cal {
  position: absolute; top: calc(100% + 8px); left: 0; z-index: 50;
  background: var(--c-bg); border: 1px solid var(--c-border); border-radius: 12px;
  box-shadow: 0 16px 40px rgba(0,0,0,.16); padding: 20px 22px; min-width: 620px;
}
.tf-cal[hidden] { display: none; }
.tf-cal__months { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
.tf-cal__nav { position: absolute; top: 18px; border: none; background: none; cursor: pointer; font-size: 1.4rem; color: var(--c-text); width: 30px; height: 30px; }
.tf-cal__nav--prev { left: 16px; } .tf-cal__nav--next { right: 16px; }
.tf-cal__mname { text-align: center; font-family: var(--font-title); font-weight: 700; margin-bottom: 12px; }
.tf-cal__dow { display: grid; grid-template-columns: repeat(7,1fr); gap: 2px; margin-bottom: 6px; }
.tf-cal__dow span { text-align: center; font-size: .72rem; color: var(--c-muted); font-weight: 600; }
.tf-cal__grid { display: grid; grid-template-columns: repeat(7,1fr); gap: 4px; }
.tf-cal__cell {
  aspect-ratio: 1; border: 1px solid var(--c-border); border-radius: 8px; background: var(--c-bg);
  cursor: pointer; font-family: var(--font-title); font-size: .9rem; color: var(--c-text);
  display: flex; align-items: center; justify-content: center; transition: background .12s, border-color .12s;
}
.tf-cal__cell--empty { border: none; cursor: default; }
.tf-cal__cell:not(.tf-cal__cell--empty):hover { border-color: var(--c-primary); }
.tf-cal__cell.is-past { color: var(--c-border); border-color: transparent; cursor: default; }
.tf-cal__cell.is-sel { background: var(--c-primary); color: #fff; border-color: var(--c-primary); }

.tf-days { display: flex; width: fit-content; border: 2px solid var(--c-border); border-radius: var(--radius-btn); overflow: hidden; margin-bottom: 18px; }
.tf-days[hidden] { display: none; }
.tf-days__btn { border: none; background: var(--c-bg); cursor: pointer; font-family: var(--font-title); font-weight: 600; font-size: .85rem; padding: 8px 18px; color: var(--c-muted-2); }
.tf-days__btn.is-active { background: var(--c-primary); color: #fff; }

.tf-tickets { display: flex; flex-direction: column; gap: 18px; }
.tf-ticket { position: relative; border: 1px solid var(--c-border); border-radius: var(--radius); padding: 18px 20px; background: var(--c-bg); box-shadow: 0 4px 16px rgba(50,51,147,.07); }
.tf-ticket.is-popular { border: 2px solid var(--c-star); padding-top: 30px; box-shadow: 0 6px 22px rgba(247,181,0,.18); }
.tf-ticket__badge { position: absolute; top: 0; left: 0; background: var(--c-star); color: #fff; font-family: var(--font-title); font-weight: 700; font-size: .66rem; letter-spacing: .4px; text-transform: uppercase; padding: 4px 12px; border-radius: var(--radius) 0 var(--radius) 0; }
.tf-ticket h3 { color: var(--c-text); font-size: 1.05rem; margin: 0 0 3px; }
.tf-ticket p { color: var(--c-muted); font-size: .76rem; margin-bottom: 6px; }
/* строки категорий — компактно, в одну линию */
.tf-trow { display: flex; align-items: center; justify-content: space-between; gap: 12px; border-top: 1px solid var(--c-border); padding-top: 7px; margin-top: 7px; }
.tf-trow__cat { font-family: var(--font-title); font-weight: 600; font-size: .85rem; }
.tf-trow__cat em { font-style: normal; font-weight: 400; color: var(--c-muted); font-size: .76rem; }
.tf-trow__price s { color: var(--c-muted); font-size: .78rem; }
.tf-trow__price strong { color: var(--c-primary); font-family: var(--font-display); font-weight: 400; font-size: 1.1rem; margin-left: 4px; }
.tf-qty { display: inline-flex; align-items: center; gap: 0; border: 2px solid var(--c-border); border-radius: var(--radius-btn); overflow: hidden; }
.tf-qty button { width: 34px; height: 34px; border: none; background: var(--c-surface); cursor: pointer; font-size: 1.1rem; color: var(--c-primary); }
.tf-qty button:hover { background: var(--c-border); }
.tf-qty b { min-width: 30px; text-align: center; font-family: var(--font-title); }

.tf-cart { background: var(--c-bg); border: 1px solid var(--c-border); border-radius: var(--radius); padding: 0 0 20px; box-shadow: 0 10px 30px rgba(50,51,147,.12); position: sticky; top: 96px; overflow: hidden; }
.tf-cart__title { color: var(--c-text); font-size: 1.3rem; margin: 0; padding: 18px 20px 14px; display: flex; align-items: center; gap: 8px; }
/* total-плашка сверху — как у book.* */
.tf-cart__top { display: flex; justify-content: space-between; align-items: center; background: var(--c-primary); color: #fff; padding: 14px 20px; font-family: var(--font-title); font-weight: 600; font-size: .9rem; }
.tf-cart__top[hidden] { display: none; }
.tf-cart__top strong { font-family: var(--font-display); font-weight: 400; font-size: 1.4rem; }
.tf-cart__lines { display: flex; flex-direction: column; gap: 0; padding: 0 20px; }
.tf-cart__empty { color: var(--c-muted); font-size: .88rem; padding: 0 20px; }
/* карточка позиции */
.tf-cart__card { padding: 16px 0; border-bottom: 1px solid var(--c-border); }
.tf-cart__card:last-child { border-bottom: none; }
.tf-cart__name { font-family: var(--font-title); font-weight: 800; color: var(--c-text); font-size: 1.02rem; margin-bottom: 8px; letter-spacing: .2px; }
.tf-cart__row { display: flex; justify-content: space-between; gap: 10px; font-size: .86rem; color: var(--c-text); margin-bottom: 3px; }
.tf-cart__row span:last-child { font-weight: 700; }
.tf-cart__desc { color: var(--c-muted); font-size: .82rem; margin: 6px 0 8px; line-height: 1.35; }
.tf-cart__date { font-size: .82rem; color: var(--c-text); margin-bottom: 10px; }
.tf-cart__card-foot { display: flex; justify-content: space-between; align-items: center; }
.tf-cart__rm { background: none; border: none; cursor: pointer; color: var(--c-primary); font-family: var(--font-title); font-weight: 600; font-size: .82rem; padding: 0; }
.tf-cart__rm:hover { text-decoration: underline; }
.tf-cart__cond { background: none; border: none; padding: 0; color: var(--c-link); font-family: var(--font-title); font-size: .82rem; font-weight: 600; cursor: pointer; }
.tf-cart__cond:hover { text-decoration: underline; }
.tf-cart__cond.is-open { text-decoration: underline; }
/* раскрытые условия в карточке корзины */
.tf-cart__cond-box { margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--c-border); font-size: .82rem; }
.tf-cart__cond-box .tf-xp__qa { margin-bottom: 8px; }
.tf-cart__cond-box h5 { margin: 0 0 4px; font-size: .85rem; color: var(--c-text); }
.tf-cart__cond-box p, .tf-cart__cond-box li { color: var(--c-muted-2); line-height: 1.4; }
.tf-cart__total { display: flex; justify-content: space-between; align-items: center; padding: 16px 20px 0; margin-bottom: 16px; font-family: var(--font-title); font-weight: 700; color: var(--c-text); }
.tf-cart__total[hidden] { display: none; }
.tf-cart__total span:last-child { font-family: var(--font-display); font-size: 1.5rem; color: var(--c-primary); font-weight: 400; }
.tf-cart__next { width: calc(100% - 40px); margin: 0 20px; text-align: center; }
.tf-cart__next.is-disabled, .tf-cart__next:disabled { opacity: .5; cursor: not-allowed; }
/* на шаге Details кнопку Continue в корзине прячем (оплата идёт кнопкой формы) — иначе display от .btn перебивает hidden */
.tf-cart__next[hidden] { display: none; }

/* /tickets-hotel/ — заголовок покупки вместо синего hero */
.section--th-head { padding: 32px 0 8px; }
.th-head__title { font-family: var(--font-display); font-size: 2.4rem; color: var(--c-text); margin: 0; text-align: center; }
/* степперы Rooms/Adults/Children — выровнены в ряд, как поля формы */
.th-steppers { gap: 16px; }
.th-stepper { display: flex; flex-direction: column; gap: 8px; }
.th-stepper .funnel-field__label small { font-weight: 400; color: var(--c-muted, #777); }
.th-stepper .tf-qty { align-self: flex-start; }
/* поле даты в funnel-form: календарь позиционируется абсолютно под кнопкой */
.funnel-field.tf-cal-field { position: relative; }
.funnel-field .tf-cal-input { width: 100%; text-align: left; }

/* ── /tickets-hotel/ степовая воронка ── */
.th-funnel { max-width: 980px; margin: 0 auto; }
/* на шаге Details (есть корзина) — 2 колонки: слева форма, справа сводка (как /tickets/) */
#hotelFunnel.is-cart .container { display: grid; grid-template-columns: minmax(0,1fr) 360px; gap: 28px; align-items: start; max-width: 1180px; }
#hotelFunnel.is-cart .tf-steps { grid-column: 1 / -1; }
#hotelFunnel.is-cart .th-funnel { max-width: none; margin: 0; }
#hotelFunnel.is-cart .tf-foot { grid-column: 1 / -1; }
.th-cart { margin-top: 0; }
@media (max-width: 860px) { #hotelFunnel.is-cart .container { grid-template-columns: 1fr; } }
.th-head__title { font-family: var(--font-display); font-size: 2.4rem; color: var(--c-text); margin: 0 0 4px; text-align: center; }
.th-head__sub { text-align: center; color: var(--c-muted, #777); margin: 0 0 24px; }
.th-step { animation: thfade .2s ease; }
.th-step[hidden] { display: none; }
@keyframes thfade { from { opacity: 0; } to { opacity: 1; } }
.th-search { background: #fff; border: 1px solid #e7e7ef; border-radius: 14px; padding: 20px; margin-bottom: 24px; }
.th-nights { margin: 4px 0 0; font-weight: 600; color: var(--c-primary); }

/* блоки отелей строками */
.th-hotels__group { font-family: var(--font-display); font-size: 1.5rem; margin: 28px 0 16px; color: var(--c-text); }
.th-hotels__hint { color: var(--c-muted, #777); text-align: center; padding: 32px 0; }
/* строка отеля: фото слева (фикс. высота, НЕ растягивается), текст по центру, цена+кнопка справа */
.th-row { display: grid; grid-template-columns: 240px 1fr auto; gap: 0; background: #fff; border: 1px solid #e7e7ef; border-radius: 14px; overflow: hidden; margin-bottom: 12px; align-items: center; }
/* фото фикс. высоты, по центру — НЕ растягивается при раскрытии What's included */
.th-row__media { background-size: cover; background-position: center; align-self: center; height: 200px; }
.th-row__body { padding: 14px 18px; display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.th-row__name { font-family: var(--font-title); font-size: 1.18rem; margin: 0; }
.th-row__tier { color: var(--c-primary); font-weight: 700; font-size: .76rem; }
.th-row__desc { color: #555; margin: 0; font-size: .86rem; line-height: 1.4; }
.th-row__incl summary { cursor: pointer; color: var(--c-primary); font-weight: 600; font-size: .88rem; }
.th-row__incl ul { margin: 6px 0 0; padding-left: 18px; font-size: .84rem; color: #555; }
.th-row__incl li { margin: 3px 0; }
/* цена + кнопка — отдельная правая колонка, по центру вертикали, не зависит от высоты текста */
.th-row__price { padding: 14px 18px; display: flex; flex-direction: column; align-items: flex-end; gap: 1px; white-space: nowrap; }
.th-row__for { font-size: .78rem; color: #999; text-align: right; line-height: 1.25; }
.th-row__was { text-decoration: line-through; color: #999; font-size: .9rem; }
.th-row__now { font-family: var(--font-display); font-size: 1.5rem; color: var(--c-primary); }
.th-row__tax { font-size: .73rem; color: #999; }
.th-row__btn { margin: 8px 18px 0 0; }
.th-row.is-soon { opacity: .65; }

/* страница отеля */
.th-hotel__head { margin-bottom: 16px; }
.th-hotel__name { font-family: var(--font-title); font-size: 1.7rem; margin: 0 0 12px; }
.th-search-bar { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; background: #fff; border: 1px solid #e7e7ef; border-radius: 12px; padding: 14px 18px; font-size: .9rem; }
.th-edit { margin-left: auto; color: var(--c-primary); font-weight: 600; background: none; border: none; cursor: pointer; }
.th-hotel__hero { background-size: cover; background-position: center; height: 320px; border-radius: 16px; margin: 16px 0; }
/* галерея общих фото отеля: крупное слева + сетка 2×2 справа (как на оригинале) */
.th-hgal { display: grid; grid-template-columns: 1.4fr 1fr; gap: 10px; margin: 16px 0; }
.th-hgal__big { background-size: cover; background-position: center; border-radius: 14px; min-height: 340px; }
.th-hgal__grid { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 10px; }
.th-hgal__cell { background-size: cover; background-position: center; border-radius: 14px; min-height: 165px; }
@media (max-width: 820px) {
  .th-hgal { grid-template-columns: 1fr; }
  .th-hgal__big { min-height: 220px; }
  .th-hgal__cell { min-height: 110px; }
}
.th-hotel__title { font-family: var(--font-display); font-size: 1.8rem; margin: 0; text-align: center; }
.th-hotel__addr { color: #777; margin: 4px 0 14px; text-align: center; font-size: .9rem; }
.th-hotel__cols { display: grid; grid-template-columns: 1fr 280px; gap: 24px; margin-bottom: 18px; align-items: start; }
.th-hotel__desc { line-height: 1.5; color: #444; font-size: .9rem; margin: 0; }
/* описание свёрнуто в 4 строки; «See more» (details) разворачивает полностью */
.th-hotel__desc.is-clamp { display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.th-hotel__seemore { background: none; border: none; padding: 4px 0 0; color: var(--c-primary); font-weight: 600; font-size: .88rem; cursor: pointer; font-family: var(--font-title); }
.th-hotel__seemore:hover { text-decoration: underline; }
.th-hotel__more-info h4 { margin: 10px 0 4px; font-size: .9rem; }
.th-hotel__more-info ul { padding-left: 18px; color: #555; font-size: .85rem; }
.th-hotel__more summary { cursor: pointer; color: var(--c-primary); font-weight: 600; font-size: .88rem; }
.th-hotel__more h4 { margin: 10px 0 4px; font-size: .9rem; }
.th-hotel__more ul { padding-left: 18px; color: #555; font-size: .85rem; }
.th-hotel__h3 { font-family: var(--font-title); font-size: 1rem; margin: 14px 0 8px; }
.th-srv { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 6px 16px; }
.th-srv__i { font-size: .85rem; color: #555; }
.th-srv__i::before { content: "✓ "; color: var(--c-primary); }
.th-hotel__side { background: #f7f7fb; border-radius: 12px; padding: 14px 16px; }
.th-hotel__side .th-hotel__h3 { margin-top: 0; }
.th-hl { list-style: none; padding: 0; margin: 0; }
.th-hl li { padding: 4px 0 4px 22px; position: relative; font-size: .85rem; color: #444; line-height: 1.35; }
.th-hl li::before { content: "✓"; position: absolute; left: 0; color: #2ea44f; font-weight: 700; }

/* комнаты + тарифы */
.th-rooms__title { font-family: var(--font-display); font-size: 1.5rem; margin: 18px 0 12px; }
.th-room { display: grid; grid-template-columns: 280px 1fr; gap: 0; background: #fff; border: 1px solid #e7e7ef; border-radius: 14px; overflow: hidden; margin-bottom: 14px; }
.th-room__body { padding: 14px 18px; }
.th-room__name { font-family: var(--font-title); font-size: 1.15rem; margin: 0 0 4px; }
.th-room__desc { color: #555; margin: 0 0 6px; font-size: .88rem; }
.th-room__incl summary { cursor: pointer; color: var(--c-primary); font-weight: 600; font-size: .86rem; margin-bottom: 6px; }
.th-room__h4 { margin: 12px 0 6px; font-size: .95rem; }
.th-room__list { margin: 0 0 8px; padding-left: 18px; font-size: .86rem; color: #555; }
.th-room__list li { margin: 4px 0; }
.th-room__list--cols { columns: 2; column-gap: 24px; }
/* галерея фото комнаты: главное фото + лента миниатюр */
.th-gal { display: flex; flex-direction: column; gap: 5px; padding: 8px; align-self: start; }
.th-gal__main { background-size: cover; background-position: center; border-radius: 10px; aspect-ratio: 4/3; }
.th-gal__thumbs { display: flex; gap: 5px; overflow-x: auto; }
.th-gal__thumb { flex: 0 0 50px; height: 40px; background-size: cover; background-position: center; border-radius: 6px; border: 2px solid transparent; cursor: pointer; padding: 0; }
.th-gal__thumb.is-active { border-color: var(--c-primary); }
/* тарифы — горизонтальными строками, как на оригинале */
.th-boards { display: flex; flex-direction: column; margin-top: 8px; }
.th-board { display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: 16px; padding: 10px 4px; border-top: 1px solid #eee; }
.th-board__info { display: flex; flex-direction: column; gap: 1px; }
.th-board__head { display: flex; align-items: center; gap: 8px; }
.th-board__tag { font-size: .72rem; font-weight: 700; color: #c0392b; }
.th-board__i { width: 18px; height: 18px; border-radius: 50%; border: 1.5px solid var(--c-primary); color: var(--c-primary); background: #fff; font-style: italic; font-size: .72rem; line-height: 1; cursor: pointer; font-family: Georgia, serif; padding: 0; }
.th-board__i.is-open { background: var(--c-primary); color: #fff; }
.th-board__name { font-weight: 700; font-size: 1.05rem; color: var(--c-primary); }
.th-board__for { font-size: .8rem; color: #999; }
.th-board__bf { grid-column: 1 / -1; margin-top: 10px; padding: 12px 14px; background: #f7f7fb; border-radius: 10px; font-size: .82rem; color: #555; line-height: 1.5; }
.th-board__bf p { margin: 0 0 8px; }
.th-board__bf .th-bf__sum { font-weight: 600; color: #333; }
.th-board__price { display: flex; flex-direction: column; align-items: flex-end; }
.th-board__was { text-decoration: line-through; color: #999; font-size: .9rem; }
.th-board__now { font-family: var(--font-display); font-size: 1.5rem; color: #1a1a4b; }
.th-board__tax { font-size: .72rem; color: #999; }
.th-board__sel { white-space: nowrap; }
/* bf-панель раскрывается на всю ширину строки → грид перестраивается */
.th-board:has(.th-board__bf:not([hidden])) { grid-template-columns: 1fr auto auto; }

/* корзина-сводка пакета (стиль .tf-cart__* общий с /tickets/) */
.th-cart .tf-cart__line { padding: 4px 0; font-size: .9rem; color: #444; }
.th-details { max-width: 480px; }

/* мобилка: строки → карточки (фото сверху) */
@media (max-width: 820px) {
  .th-row, .th-room { grid-template-columns: minmax(0, 1fr); }
  .th-row__media { min-height: 180px; }
  .th-room__list--cols { columns: 1; }
  .th-hotel__cols { grid-template-columns: minmax(0, 1fr); }
  .th-board { grid-template-columns: minmax(0, 1fr); gap: 8px; }
  .th-board__price { align-items: flex-start; }
  .th-row__price { align-items: flex-start; padding-top: 0; }
  .th-row__btn { margin: 8px 18px 14px; }
  /* галерея и тело комнаты не должны вылезать за колонку */
  .th-gal, .th-gal__main, .th-gal__thumbs, .th-room__body { min-width: 0; max-width: 100%; }
  .th-gal__thumbs { flex-wrap: nowrap; }
  .th-room__name, .th-room__desc { overflow-wrap: anywhere; }
  /* search-bar в шапке отеля переносится */
  .th-search-bar { flex-wrap: wrap; gap: 6px; }
}

/* шаг 4 — extras (сгруппированы, компактная сетка карточек) */
/* промо-плашка воронки — над контентом, видна на всех шагах */
.tf-promo {
  background: linear-gradient(90deg, #fff4e6, #ffe9d6); border: 1px solid #ffd2a6;
  color: #8a4b00; border-radius: var(--radius); padding: 11px 18px; font-size: .92rem;
  margin: 0 auto 22px; max-width: 760px; text-align: center;
}
.tf-promo b { color: #b04a00; }
/* промо-режим (free-day и т.п.) — зелёная плашка, отличается от дефолтной −10% */
.tf-promo.is-promo { background: linear-gradient(90deg, #e8f8ec, #d6f5df); border-color: #9fdcae; color: #1d6b34; }
.tf-promo.is-promo b { color: #14592a; }

/* flexible-билеты: скрытое поле календаря */
.tf [data-tf-cal-field][hidden] { display: none; }

/* шаг Extras: панель выбора дней (1–3) и даты для доп.услуг */
.tf-xdate {
  display: flex; gap: 22px; align-items: flex-end; flex-wrap: wrap; justify-content: center;
  max-width: 760px; margin: 0 auto 18px; padding: 16px 18px;
  background: var(--c-surface-2, #f6f7fb); border: 1px solid var(--c-border); border-radius: var(--radius);
  box-shadow: 0 3px 12px rgba(50,51,147,.05);
}
/* hidden-атрибут должен скрывать блок (иначе display:flex его перебивает — был баг: дни/дата висели при наличии билета) */
.tf-xdate[hidden] { display: none; }
.tf-days--x { margin-bottom: 0; }
.tf-xdate__date .tf-cal-input { min-width: 200px; }
/* read-only сводка привязки пассов к билету */
.tf-xdate-ro {
  max-width: 760px; margin: 0 auto 18px; padding: 12px 18px; text-align: center;
  background: var(--c-surface-2, #f6f7fb); border: 1px solid var(--c-border); border-radius: var(--radius);
  color: var(--c-muted-2); font-size: .92rem;
}
.tf-xdate-ro b { color: var(--c-text); }
/* «/day» рядом с ценой per-day позиций */
.tf-extra__per { font-size: .72rem; color: var(--c-muted-2); font-weight: 600; margin-left: 3px; }

.tf-extras { display: flex; flex-direction: column; gap: 12px; max-width: 760px; margin: 0 auto; }
/* группа-аккордеон */
.tf-extra-group { border: 1px solid var(--c-border); border-radius: var(--radius); overflow: hidden; box-shadow: 0 3px 12px rgba(50,51,147,.05); }
.tf-extra-group__t {
  list-style: none; cursor: pointer; display: flex; align-items: center; gap: 10px;
  font-family: var(--font-title); font-weight: 700; color: var(--c-primary); font-size: .98rem;
  padding: 14px 16px; background: var(--c-surface-2); user-select: none;
}
.tf-extra-group__t::-webkit-details-marker { display: none; }
.tf-extra-group__n { background: var(--c-primary); color: #fff; font-size: .72rem; font-weight: 700; min-width: 20px; height: 20px; border-radius: 10px; display: inline-flex; align-items: center; justify-content: center; padding: 0 6px; }
.tf-extra-group__chev { margin-left: auto; font-size: 1.3rem; color: var(--c-muted-2); transition: transform .15s; }
.tf-extra-group[open] .tf-extra-group__chev { transform: rotate(90deg); }
.tf-extra-group__list { display: flex; flex-direction: column; padding: 6px 16px 12px; }
.tf-extra {
  display: flex; align-items: center; gap: 12px; border-bottom: 1px solid var(--c-border);
  padding: 11px 0; cursor: pointer; transition: opacity .12s;
}
.tf-extra:last-child { border-bottom: none; }
.tf-extra:hover .tf-extra__b b { color: var(--c-primary); }
.tf-extra input { position: absolute; opacity: 0; pointer-events: none; }
/* визуальный чекбокс */
.tf-extra__chk { flex: 0 0 auto; width: 20px; height: 20px; border: 2px solid var(--c-border); border-radius: 6px; position: relative; transition: background .12s, border-color .12s; }
.tf-extra.is-on .tf-extra__chk { background: var(--c-primary); border-color: var(--c-primary); }
.tf-extra.is-on .tf-extra__chk::after { content: "✓"; color: #fff; font-size: .8rem; font-weight: 700; position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; }
.tf-extra__b { flex: 1 1 auto; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.tf-extra__b b { font-family: var(--font-title); font-size: .92rem; }
.tf-extra__b em { font-style: normal; color: var(--c-muted); font-size: .78rem; line-height: 1.3; }
.tf-extra__p { flex: 0 0 auto; display: flex; flex-direction: column; align-items: flex-end; text-align: right; }
.tf-extra__p s { color: var(--c-muted); font-size: .76rem; }
.tf-extra__p strong { font-family: var(--font-display); color: var(--c-cta); font-size: 1.1rem; font-weight: 400; }

/* express-пасс — богатая карточка с буллетами, иконкой и раскрывающимися условиями */
.tf-xp { border-bottom: 1px solid var(--c-border); padding: 4px 0; }
.tf-xp:last-child { border-bottom: none; }
.tf-xp.is-on { background: var(--c-surface-2); border-radius: var(--radius); }
.tf-xp__pick { display: flex; align-items: flex-start; gap: 12px; padding: 12px 8px; }
.tf-xp__pick input { position: absolute; opacity: 0; pointer-events: none; }
.tf-xp__qty { margin-top: 8px; }
.tf-xp .tf-extra__chk { margin-top: 2px; }
.tf-xp.is-on .tf-extra__chk { background: var(--c-primary); border-color: var(--c-primary); }
.tf-xp.is-on .tf-extra__chk::after { content: "✓"; color: #fff; font-size: .8rem; font-weight: 700; position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; }
/* иконка-плейсхолдер слева (картинку с оригинала подставим позже) */
.tf-xp__media { flex: 0 0 auto; width: 54px; height: 54px; border-radius: 10px; background: linear-gradient(135deg, var(--c-primary), #5b5cd6); position: relative; }
.tf-xp__media::after { content: "⚡"; position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 1.4rem; }
.tf-xp__body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.tf-xp__title { font-family: var(--font-title); font-weight: 700; font-size: 1rem; color: var(--c-text); }
.tf-xp__lead { color: var(--c-muted-2); font-size: .82rem; font-weight: 600; }
.tf-xp__bullets { list-style: none; display: flex; flex-direction: column; gap: 2px; margin: 2px 0 0; }
.tf-xp__bullets li { position: relative; padding-left: 18px; font-size: .8rem; color: var(--c-muted); line-height: 1.35; }
.tf-xp__bullets li::before { content: "✓"; position: absolute; left: 0; color: var(--c-success); font-weight: 700; }
.tf-xp .tf-extra__p { align-self: center; }
/* кнопка See conditions + раскрытие */
.tf-xp__cond-btn { background: none; border: none; cursor: pointer; color: var(--c-link); font-family: var(--font-title); font-weight: 600; font-size: .82rem; padding: 0 8px 10px 74px; display: inline-flex; align-items: center; gap: 4px; }
.tf-xp__cond-btn:hover { text-decoration: underline; }
.tf-xp__chev { transition: transform .15s; display: inline-block; }
.tf-xp__cond-btn.is-open .tf-xp__chev { transform: rotate(90deg); }
.tf-xp__cond { padding: 4px 8px 14px 74px; }
.tf-xp__qa { margin-bottom: 14px; }
.tf-xp__qa:last-child { margin-bottom: 0; }
.tf-xp__qa h5 { font-family: var(--font-title); font-weight: 700; font-size: .85rem; color: var(--c-text); margin-bottom: 5px; }
.tf-xp__qa p { font-size: .8rem; color: var(--c-muted); line-height: 1.4; margin-bottom: 4px; }
.tf-xp__qa-list { list-style: none; display: grid; grid-template-columns: 1fr 1fr; gap: 2px 16px; margin: 0; }
.tf-xp__qa-list li { font-size: .8rem; color: var(--c-muted); position: relative; padding-left: 14px; line-height: 1.4; }
.tf-xp__qa-list li::before { content: "·"; position: absolute; left: 4px; color: var(--c-primary); font-weight: 700; }

/* шаг 5 — details */
.tf-details { display: flex; flex-direction: column; gap: 16px; max-width: 480px; }

/* шаг 6 — payment */
.tf-pay { max-width: 540px; }
.tf-pay__summary { margin-bottom: 22px; }
.tf-pay__sub { border-top: 1px solid var(--c-border); padding-top: 10px; margin-top: 4px; color: var(--c-muted); }
.tf-pay__promo { color: var(--c-success); font-weight: 600; }
.tf-pay__promo b { color: var(--c-success); }
.tf-pay__stub { background: var(--c-surface-2); border: 1px solid var(--c-border); border-radius: var(--radius); padding: 24px; text-align: center; }
.tf-pay__stub p { color: var(--c-muted); margin-bottom: 18px; }

@media (max-width: 860px) {
  .tf-cards { grid-template-columns: 1fr; }
  .tf-cards--2 { grid-template-columns: 1fr; }
  .tf-flow { grid-template-columns: 1fr; }
  .tf-cart { position: static; }
  .tf-extra-group__list { grid-template-columns: 1fr; }
}

/* ---------- каталог билетов /tickets/ ---------- */
.section--ticket-cat { padding: 32px 0 40px; }
.ticket-cat__title {
  color: var(--c-primary); text-align: center;
  font-size: clamp(1.5rem, 3vw, 2rem); margin-bottom: 20px;
}
.ticket-cat__controls {
  display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 16px; margin-bottom: 24px;
}
.tc-toggle { display: inline-flex; border: 2px solid var(--c-border); border-radius: var(--radius-btn); overflow: hidden; }
.tc-toggle__btn {
  border: none; background: var(--c-bg); cursor: pointer;
  font-family: var(--font-title); font-weight: 600; font-size: .85rem;
  padding: 8px 16px; color: var(--c-muted-2); transition: background .15s ease, color .15s ease;
}
.tc-toggle__btn.is-active { background: var(--c-primary); color: #fff; }
.tc-park { display: inline-flex; align-items: center; gap: 8px; }
.tc-park__label { font-family: var(--font-title); font-weight: 600; font-size: .9rem; color: var(--c-muted-2); }
.tc-park__select {
  font-family: var(--font-body); font-size: .9rem; padding: 8px 12px;
  border: 2px solid var(--c-border); border-radius: var(--radius); background: var(--c-bg); cursor: pointer;
}
.tc-park__select:focus { outline: none; border-color: var(--c-primary); }

.ticket-cat__section { color: var(--c-text); text-align: center; font-size: 1.4rem; margin: 4px 0 14px; }
.ticket-cat__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-bottom: 28px; max-width: 960px; margin-left: auto; margin-right: auto; }
.ticket-cat__empty { color: var(--c-muted); text-align: center; margin-bottom: 28px; }

/* компактная карточка тарифа (без фото парков, ужатая) */
.tcard {
  position: relative; display: flex; flex-direction: column;
  background: var(--c-bg); border: 1px solid var(--c-border); border-radius: var(--radius);
  padding: 16px 16px 14px;
}
.tcard[hidden] { display: none; }
.tcard__badge {
  position: absolute; top: -1px; left: -1px;
  background: var(--c-star); color: #fff; font-family: var(--font-title); font-weight: 700;
  font-size: .68rem; padding: 4px 11px; border-radius: var(--radius) 0 var(--radius) 0;
}
.tcard__title { color: var(--c-text); margin: 8px 0 8px; font-size: 1.02rem; }
.tcard__text { color: var(--c-muted); font-size: .78rem; line-height: 1.4; margin-bottom: 12px; }
.tcard__rows { display: flex; flex-direction: column; gap: 8px; margin-bottom: 14px; flex: 1 1 auto; }
.tcard__row { display: flex; justify-content: space-between; align-items: flex-end; gap: 10px; border-top: 1px solid var(--c-border); padding-top: 9px; }
.tcard__cat { font-family: var(--font-title); font-weight: 600; font-size: .85rem; }
.tcard__cat em { display: block; font-style: normal; font-weight: 400; color: var(--c-muted); font-size: .74rem; }
.tcard__price { text-align: right; line-height: 1.05; }
.tcard__orig { color: var(--c-muted); font-size: .78rem; }
.tcard__our { display: block; color: var(--c-primary); font-family: var(--font-display); font-size: 1.3rem; font-weight: 400; }
.tcard__per { color: var(--c-muted); font-size: .68rem; }
.tcard__buy { text-align: center; padding: 9px 20px; font-size: .9rem; }

@media (max-width: 860px) { .ticket-cat__grid { grid-template-columns: 1fr; } }

/* ---------- отельная воронка (.sf--hotel) ---------- */
/* даты */
.sf__dates {
  display: flex; flex-wrap: wrap; align-items: flex-end; gap: 16px;
  margin-bottom: 32px; padding: 20px 24px;
  background: var(--c-surface-2); border: 1px solid var(--c-border); border-radius: var(--radius);
}
.sf__date { display: flex; flex-direction: column; gap: 6px; }
.sf__date span { font-family: var(--font-title); font-weight: 600; font-size: .9rem; color: var(--c-muted-2); }
.sf__date input {
  font-family: var(--font-body); font-size: 1rem; color: var(--c-text);
  padding: 11px 14px; border: 2px solid var(--c-border); border-radius: var(--radius);
  background: var(--c-bg);
}
.sf__date input:focus { outline: none; border-color: var(--c-primary); }
.sf__nights-note { color: var(--c-primary); font-family: var(--font-title); font-weight: 700; padding-bottom: 12px; }

/* шаг 1 — карточки отелей */
.sf__hotels { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--gap); }
.sf__hotel {
  display: flex; flex-direction: column; text-align: left;
  background: var(--c-bg); border: 1px solid var(--c-border); border-radius: var(--radius);
  overflow: hidden; cursor: pointer; padding: 0;
  transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.sf__hotel:hover { transform: translateY(-4px); box-shadow: 0 12px 28px rgba(50, 51, 147, .14); border-color: var(--c-primary); }
.sf__hotel-media { display: block; width: 100%; aspect-ratio: 16 / 10; background-size: cover; background-position: center; background-color: var(--c-surface); }
.sf__hotel-body { display: flex; flex-direction: column; gap: 8px; padding: 16px 18px; }
.sf__hotel-name { font-family: var(--font-title); font-weight: 700; color: var(--c-primary); }
.sf__hotel-from { color: var(--c-muted); font-size: .95rem; }
.sf__hotel-from strong { font-family: var(--font-display); font-size: 1.4rem; color: var(--c-cta); font-weight: 400; }

/* шаг 2 — список номеров (фото слева) */
.sf__rooms-hotel { color: var(--c-primary); margin-bottom: 20px; }
.sf__rooms { display: flex; flex-direction: column; gap: 16px; }
.sf__rooms[hidden] { display: none; }  /* [hidden] иначе перебивается display:flex выше */
.sf__room {
  display: grid; grid-template-columns: 220px 1fr; gap: 0;
  background: var(--c-bg); border: 1px solid var(--c-border); border-radius: var(--radius);
  overflow: hidden; transition: border-color .15s ease, box-shadow .15s ease;
}
.sf__room.is-selected { border-color: var(--c-primary); box-shadow: 0 0 0 2px var(--c-primary) inset; }
.sf__room-media { background-size: cover; background-position: center; background-color: var(--c-surface); min-height: 150px; }
.sf__room-body { display: flex; flex-direction: column; padding: 18px 20px; }
.sf__room-name { color: var(--c-text); margin-bottom: 6px; }
.sf__room-text { color: var(--c-muted); font-size: .92rem; flex: 1 1 auto; margin-bottom: 14px; }
.sf__room-foot { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.sf__room-price strong { font-family: var(--font-display); font-size: 1.6rem; color: var(--c-cta); font-weight: 400; }
.sf__room-price { color: var(--c-muted); font-size: .9rem; }
.sf__room-pick { padding: 11px 24px; }

.sf__cart-line--muted { color: var(--c-muted); font-size: .9rem; }
.sf__cart-line--muted span { display: flex; }
.sf__cart-line--muted { display: flex; justify-content: space-between; gap: 12px; }

@media (max-width: 768px) {
  .sf__hotels { grid-template-columns: 1fr; }
  .sf__room { grid-template-columns: 1fr; }
  .sf__room-media { aspect-ratio: 16 / 9; min-height: 0; }
}
