    :root {
      --bg: #f2f2f2;
      --bg-soft: #f8f8f8;
      --panel: #ffffff;
      --panel-2: #f4f4f4;
      --field: #f2f2f2;
      --text: #15161b;
      --muted: #68707f;
      --accent: #ffe057;
      --accent-strong: #ffd83d;
      --accent-soft: #fff6ca;
      --brand: #6ea2ff;
      --ok: #2b8a5a;
      --warn: #bb8b1a;
      --border: rgba(21,22,27,.08);
      --shadow: 0 24px 64px rgba(20, 25, 35, .08);
      --header-height: 73px;
      --chat-gap: 24px;
    }
    * { box-sizing: border-box; }
    *:not(input, textarea) {
        -webkit-tap-highlight-color: transparent;
    }
    html, body {
      touch-action: manipulation;
    }
    body {
      margin: 0;
      font-family: "SF Pro Display", "Segoe UI", "Helvetica Neue", Arial, sans-serif;
      background:
        radial-gradient(circle at top center, rgba(110,162,255,.08), transparent 22%),
        linear-gradient(180deg, #f7f7f7 0%, var(--bg) 100%);
      color: var(--text);
    }
    .page-header {
      position: sticky;
      top: 0;
      z-index: 10;
      height: var(--header-height);
      background: rgba(255,255,255,.9);
      backdrop-filter: blur(14px);
      border-bottom: 1px solid rgba(21,22,27,.05);
    }
    .topbar {
      max-width: 1360px;
      margin: 0 auto;
      padding: 12px 28px;
      min-height: var(--header-height);
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 24px;
    }
    .header-left {
      display: flex;
      align-items: center;
      gap: 24px;
      min-width: 0;
      flex: 1 1 auto;
    }
    .brand {
      display: inline-flex;
      align-items: center;
      gap: 14px;
      text-decoration: none;
      color: var(--text);
      font-weight: 800;
      font-size: 22px;
      letter-spacing: -.03em;
    }
    .brand-mark {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      height: 36px;
    }
    .brand-mark img {
      display: block;
      height: 36px;
      width: auto;
      max-width: 160px;
      object-fit: contain;
    }
    .brand-mark svg {
      display: block;
    }
    .brand-text {
      color: #15161b;
      font-size: 24px;
      font-weight: 800;
      letter-spacing: -.03em;
    }
    .brand-subtext {
      color: var(--brand);
    }
    .header-actions {
      display: flex;
      align-items: center;
      gap: 12px;
      flex: 0 0 auto;
      white-space: nowrap;
    }
    .header-close-button {
      display: none;
    }
    .header-cta-row {
      display: flex;
      align-items: center;
      gap: 8px;
      min-width: 0;
    }
    .header-search-reply-button {
      min-height: 40px;
      padding: 0 14px;
      border-radius: 14px;
      font-size: 14px;
      font-weight: 800;
      flex: 0 0 auto;
      transform: none !important;
      box-shadow: none;
    }
    .header-search-reply-button:hover {
      transform: none !important;
    }
    .burger-button {
      display: none;
      align-items: center;
      justify-content: center;
      width: 48px;
      height: 48px;
      padding: 0;
      border-radius: 16px;
      background: #f3f4f6;
      color: #2f3640;
      border: 1px solid rgba(112, 122, 138, .16);
      box-shadow: 0 10px 24px rgba(20, 25, 35, .08);
    }
    .burger-button svg {
      width: 22px;
      height: 22px;
      display: block;
    }
    .mobile-menu {
      display: none;
      position: absolute;
      top: calc(100% + 10px);
      right: 0;
      min-width: 220px;
      padding: 12px;
      border-radius: 20px;
      background: rgba(255,255,255,.98);
      border: 1px solid var(--border);
      box-shadow: 0 24px 40px rgba(20, 25, 35, .14);
    }
    .mobile-menu.is-open {
      display: grid;
      gap: 8px;
    }
    .mobile-menu a,
    .mobile-menu button,
    .mobile-menu .mobile-locale {
      display: flex;
      align-items: center;
      justify-content: space-between;
      width: 100%;
      min-height: 44px;
      padding: 0 14px;
      border-radius: 14px;
      text-decoration: none;
      color: var(--text);
      background: #f6f7f9;
      border: 1px solid rgba(112, 122, 138, .10);
      font-size: 14px;
      font-weight: 600;
    }
    .mobile-menu button {
      cursor: pointer;
    }
    .mobile-menu .mobile-locale {
      color: #667085;
    }
    .locale-pill {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 48px;
      min-width: 48px;
      height: 48px;
      padding: 0;
      border-radius: 16px;
      background: #f3f4f6;
      font-size: 16px;
      font-weight: 700;
      color: #3d4450;
      border: 1px solid rgba(21,22,27,.05);
      white-space: nowrap;
    }
    .header-chip:hover,
    .locale-pill:hover {
      background: linear-gradient(180deg, #f5f7fa 0%, #e8edf3 100%);
      color: #2b3440;
      border-color: rgba(112, 122, 138, .2);
      box-shadow: 0 16px 30px rgba(20, 25, 35, .12);
    }
    .locale-pill-icon {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 20px;
      height: 20px;
      flex: 0 0 auto;
    }
    .locale-pill-icon svg {
      width: 20px;
      height: 20px;
      display: block;
    }
    .language-modal {
      position: fixed;
      inset: 0;
      z-index: 98;
      display: none;
      align-items: center;
      justify-content: center;
      padding: 24px;
      background: rgba(15, 20, 28, .34);
      backdrop-filter: blur(8px);
    }
    .language-modal.is-open {
      display: flex;
    }
    .language-modal-card {
      width: min(420px, calc(100vw - 32px));
      border-radius: 28px;
      background: #fff;
      border: 1px solid var(--border);
      box-shadow: var(--shadow);
      overflow: hidden;
    }
    .language-modal-head {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 16px;
      padding: 18px 18px 12px;
    }
    .language-modal-title {
      margin: 0;
      font-size: 22px;
      font-weight: 800;
      letter-spacing: -.02em;
    }
    .language-modal-close {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 42px;
      min-width: 42px;
      height: 42px;
      padding: 0;
      border: 1px solid rgba(21,22,27,.08);
      border-radius: 14px;
      background: #f3f4f6;
      color: #2f3640;
      font-size: 18px;
      cursor: pointer;
    }
    .language-modal-body {
      display: grid;
      gap: 10px;
      padding: 0 18px 18px;
    }
    .language-option-button {
      display: flex;
      align-items: center;
      gap: 14px;
      width: 100%;
      min-height: 58px;
      padding: 0 18px;
      border: 1px solid rgba(21,22,27,.08);
      border-radius: 18px;
      background: #f7f8fa;
      color: var(--text);
      font-size: 17px;
      font-weight: 700;
      text-align: left;
      cursor: pointer;
      transition: background .18s ease, border-color .18s ease, transform .18s ease, box-shadow .18s ease;
    }
    .language-option-button:hover {
      background: #fff9dc;
      border-color: rgba(255, 216, 61, .5);
      transform: translateY(-1px);
      box-shadow: 0 14px 28px rgba(20, 25, 35, .08);
    }
    .language-option-button.is-active {
      background: #fff7d0;
      border-color: rgba(255, 216, 61, .7);
      box-shadow: 0 14px 28px rgba(255, 216, 61, .18);
    }
    .language-option-flag {
      font-size: 24px;
      line-height: 1;
      flex: 0 0 auto;
    }
    .language-option-label {
      min-width: 0;
    }
    .wrap {
      max-width: 1360px;
      margin: 0 auto;
      padding: 44px 28px 60px;
      min-height: calc(100vh - var(--header-height));
    }
    .hero {
      display: none;
    }
    .app-shell {
      max-width: 980px;
      margin: 0 auto;
    }
    .card {
      background: var(--panel);
      border: 1px solid var(--border);
      border-radius: 32px;
      box-shadow: var(--shadow);
      overflow: hidden;
    }
    .header {
      padding: 24px 28px;
      border-bottom: 1px solid var(--border);
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
    }
    .title {
      font-size: 20px;
      font-weight: 800;
      letter-spacing: -.02em;
    }
    .subtitle {
      color: var(--muted);
      font-size: 15px;
      margin-top: 6px;
    }
    .chat {
      display: flex;
      flex-direction: column;
      min-height: 720px;
    }
    .messages {
      flex: 1;
      min-height: 0;
      padding: 28px;
      overflow: auto;
      display: flex;
      flex-direction: column;
      gap: 18px;
      background:
        linear-gradient(180deg, rgba(255,255,255,.9) 0%, rgba(247,247,247,.84) 100%);
    }
    .messages.bottom-aligned {
      justify-content: flex-end;
    }
    .msg {
      padding: 16px 18px;
      border-radius: 24px;
      white-space: pre-wrap;
      line-height: 1.5;
      font-size: 15px;
    }
    .msg.assistant {
      background: #ffffff;
      align-self: flex-start;
      border: 1px solid rgba(21,22,27,.06);
      box-shadow: 0 12px 24px rgba(27, 31, 40, .04);
    }
    .msg.user {
      background: #fff8d0;
      align-self: flex-end;
      border: 1px solid rgba(255,216,61,.45);
    }
    .message-block {
      display: flex;
      flex-direction: column;
      align-items: flex-start;
      gap: 10px;
      max-width: 86%;
      animation: message-in .28s ease-out;
      transform-origin: left bottom;
    }
    .messages.bottom-aligned .message-block {
      flex: 0 0 auto;
    }
    .message-block.user {
      align-self: flex-end;
      align-items: flex-end;
      transform-origin: right bottom;
      max-width: 80%;
    }
    .message-block.assistant {
      align-self: flex-start;
    }
    .message-actions {
      display: flex;
      align-items: center;
      gap: 10px;
      justify-content: flex-end;
      width: 100%;
      margin-top: -2px;
    }
    .message-results-button {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-height: 38px;
      padding: 0 16px;
      border-radius: 14px;
      background: linear-gradient(135deg, #ffe88b 0%, #f7d86a 100%);
      color: #1c2026;
      border: 1px solid rgba(255, 216, 61, .34);
      box-shadow: 0 10px 20px rgba(255, 216, 61, .18);
      font-size: 16px;
      font-weight: 800;
      white-space: nowrap;
    }
    .message-results-button:hover {
      background: linear-gradient(135deg, #ffea97 0%, #f9dc73 100%);
    }
    .message-icon-button {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 38px;
      min-width: 38px;
      height: 38px;
      padding: 0;
      border-radius: 14px;
      background: linear-gradient(180deg, #f0f2f5 0%, #e3e8ee 100%);
      border: 1px solid rgba(112, 122, 138, .16);
      box-shadow: 0 10px 20px rgba(20, 25, 35, .08);
      color: #2b3440;
      cursor: pointer;
      transition: transform .16s ease, box-shadow .16s ease, background .16s ease, opacity .16s ease;
    }
    .message-icon-button:hover {
      transform: translateY(-1px);
      background: linear-gradient(180deg, #f4f6f9 0%, #e7ecf2 100%);
      box-shadow: 0 14px 24px rgba(20, 25, 35, .12);
    }
    .message-icon-button:disabled {
      opacity: .7;
      cursor: wait;
      transform: none;
    }
    .message-icon-button svg {
      width: 18px;
      height: 18px;
      display: block;
    }
    .message-actions .tour-favorite-button,
    .message-actions .tour-favorite-button.is-active {
      width: 38px;
      min-width: 38px;
      height: 38px;
      min-height: 38px;
      padding: 0;
      border-radius: 14px;
    }
    .message-actions .tour-favorite-button svg {
      width: 18px;
      height: 18px;
    }
    .msg.typing {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      min-width: 74px;
    }
    .typing-label {
      color: var(--muted);
      font-size: 15px;
    }
    .tour-list {
      display: grid;
      gap: 12px;
      width: 100%;
    }
    .tour-card {
      display: grid;
      grid-template-columns: 88px minmax(0, 1fr) minmax(0, max-content);
      grid-template-areas:
        "title title title"
        "image body price"
        "summary summary summary"
        "variants variants variants";
      gap: 10px;
      align-items: start;
      background: #ffffff;
      border: 1px solid var(--border);
      border-radius: 24px;
      overflow: hidden;
      padding: 14px 10px;
      cursor: pointer;
      transition: box-shadow .18s ease, transform .18s ease, border-color .18s ease;
      animation: card-in .32s ease-out;
    }
    .tour-card:hover {
      transform: translateY(-1px);
      box-shadow: 0 16px 32px rgba(20, 25, 35, .08);
      border-color: rgba(110,162,255,.24);
    }
    .tour-card img {
      grid-area: image;
      width: 88px;
      height: 72px;
      object-fit: cover;
      display: block;
      border-radius: 14px;
    }
    .tour-card-body {
      grid-area: body;
      min-width: 0;
      width: 100%;
    }
    .tour-title {
      grid-area: title;
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto;
      align-items: center;
      gap: 8px;
      width: 100%;
      font-size: 13px;
      font-weight: 700;
      margin-bottom: 0;
      line-height: 1.3;
      align-self: center;
    }
    .tour-title-text {
      display: grid;
      gap: 2px;
      min-width: 0;
      flex: 1 1 auto;
    }
    .tour-title-main {
      display: block;
      min-width: 0;
    }
    .tour-title-legacy {
      display: block;
      color: var(--muted);
      font-size: 11px;
      font-weight: 500;
      line-height: 1.3;
    }
    .tour-location {
      color: var(--muted);
      font-size: 13px;
      line-height: 1.4;
      margin-bottom: 6px;
    }
    .tour-route {
      color: #7a6351;
      font-size: 13px;
      line-height: 1.4;
      margin-bottom: 6px;
    }
    .tour-inline-icon {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 14px;
      height: 14px;
      margin-right: 6px;
      vertical-align: -2px;
      flex: 0 0 auto;
    }
    .tour-inline-icon svg {
      width: 14px;
      height: 14px;
      display: block;
    }
    .tour-summary {
      grid-area: summary;
      display: flex;
      align-items: center;
      gap: 8px;
      flex-wrap: nowrap;
      width: 100%;
      padding-top: 2px;
      overflow-x: auto;
      overflow-y: hidden;
      scrollbar-width: none;
      -webkit-overflow-scrolling: touch;
    }
    .tour-summary::-webkit-scrollbar {
      display: none;
    }
    .tour-badge {
      display: inline-flex;
      align-items: center;
      min-height: 28px;
      padding: 4px 8px;
      border-radius: 999px;
      background: #f3f4f6;
      color: #4f5562;
      font-size: 12px;
      font-weight: 700;
      flex: 0 0 auto;
    }
    .tour-badge-hot {
      gap: 6px;
    }
    .tour-badge-category {
      background: #eef4ff;
      color: #365b8c;
    }
    .tour-badge-discount {
      color: #d92d20;
      font-weight: 800;
    }
    .tour-badge-stars {
      flex: 0 0 auto;
      justify-self: end;
      white-space: nowrap;
      letter-spacing: 0.06em;
      color: #f4b400;
      background: #f3f4f6;
      border-color: rgba(15, 23, 42, 0.08);
    }
    .tour-badge-stars.low {
      background: #f3f4f6;
    }
    .tour-badge-stars.mid {
      background: #f3f4f6;
    }
    .tour-badge-stars.high {
      background: #f3f4f6;
    }
    .tour-badge-rating.low {
      background: #e9eef5;
      color: #52606f;
    }
    .tour-badge-rating.mid {
      background: #dfeeff;
      color: #2f69b3;
    }
    .tour-badge-rating.high {
      background: linear-gradient(135deg, #f7d86a 0%, #ffeaa6 100%);
      color: #7d5a00;
    }
    .tour-badge-rating {
      display: inline-flex;
      align-items: center;
      gap: 4px;
    }
    .tour-badge-rating-label {
      font-weight: 700;
    }
    .tour-badge-rating-value {
      font-weight: 800;
    }
    .tour-badge-rating .tour-badge-info {
      margin-left: 0;
    }
    .tour-badge-variants {
      background: #eef2ff;
      color: #4c57b5;
    }
    .tour-price {
      grid-area: price;
      justify-self: end;
      text-align: right;
      align-self: center;
      min-width: 0;
      max-width: 100%;
      padding-left: 8px;
      padding-right: 2px;
    }
    .tour-price-from {
      color: var(--muted);
      font-size: 12px;
      margin-bottom: 2px;
    }
    .tour-price-value {
      font-size: clamp(20px, 1.55vw, 24px);
      line-height: 1.05;
      font-weight: 800;
      color: #15161b;
      white-space: nowrap;
    }
    .tour-price-note {
      color: var(--muted);
      font-size: 12px;
      margin-top: 6px;
    }
    .tour-price-local {
      color: var(--muted);
      font-size: 11px;
      margin-top: 4px;
      line-height: 1.35;
      white-space: nowrap;
    }
    .tour-variants {
      display: none;
      grid-area: variants;
      border-top: 1px solid rgba(150,126,110,.18);
      margin-top: 10px;
      padding-top: 10px;
      gap: 8px;
    }
    .tour-card.is-open .tour-variants {
      display: grid;
    }
    .tour-variant {
      background: linear-gradient(180deg, rgba(255,255,255,.98) 0%, #f7f9fc 100%);
      border: 1px solid rgba(21,22,27,.06);
      border-radius: 18px;
      padding: 11px 12px;
      box-shadow: 0 8px 18px rgba(20, 25, 35, .035);
    }
    .tour-variant-head {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 10px;
      margin-bottom: 8px;
    }
    .tour-variant-head-main {
      min-width: 0;
      flex: 1 1 auto;
    }
    .tour-variant-label {
      color: #8a93a2;
      font-size: 10px;
      line-height: 1.2;
      text-transform: uppercase;
      letter-spacing: .05em;
      margin-bottom: 3px;
    }
    .tour-variant-date {
      font-weight: 800;
      color: #202733;
      font-size: 14px;
      line-height: 1.25;
    }
    .tour-variant-head-side {
      flex: 0 0 auto;
      text-align: right;
    }
    .tour-variant-price {
      font-weight: 900;
      color: #222a36;
      white-space: nowrap;
      font-size: 16px;
      line-height: 1.05;
    }
    .tour-variant-price-local {
      color: var(--muted);
      font-size: 10px;
      line-height: 1.35;
      text-align: right;
      margin-top: 3px;
      white-space: nowrap;
    }
    .tour-variant-badges {
      display: flex;
      flex-wrap: wrap;
      gap: 6px;
      margin-bottom: 8px;
    }
    .tour-variant-badge {
      display: inline-flex;
      align-items: center;
      min-height: 24px;
      padding: 4px 9px;
      border-radius: 999px;
      font-size: 10px;
      line-height: 1.2;
      font-weight: 800;
      letter-spacing: .01em;
      border: 1px solid transparent;
    }
    .tour-variant-badge-wrap {
      display: inline-flex;
      align-items: center;
      flex: 0 0 auto;
    }
    .tour-badge-info {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 16px;
      height: 16px;
      min-width: 16px;
      min-height: 16px;
      margin-left: 6px;
      padding: 0;
      border: 0;
      border-radius: 999px;
      background: rgba(255,255,255,.92);
      color: rgba(28, 36, 48, .92);
      font-size: 11px;
      line-height: 1;
      font-weight: 800;
      flex: 0 0 auto;
      cursor: pointer;
      vertical-align: middle;
      box-shadow:
        inset 0 0 0 1px rgba(28, 36, 48, .18),
        0 1px 2px rgba(20, 25, 35, .16);
    }
    .tour-badge-info:hover {
      background: #ffffff;
      color: rgba(16, 24, 36, .96);
      box-shadow:
        inset 0 0 0 1px rgba(16, 24, 36, .24),
        0 2px 4px rgba(20, 25, 35, .18);
    }
    .tour-variant-badge.promo {
      color: #8a4b00;
      background: linear-gradient(180deg, #fff1b8 0%, #ffe082 100%);
      border-color: rgba(199, 139, 0, .18);
    }
    .tour-variant-badge.attention {
      color: #8a4b00;
      background: #fff4db;
      border-color: rgba(199, 139, 0, .18);
    }
    .tour-variant-badge.request {
      color: #9a5b00;
      background: #fff3e5;
      border-color: rgba(215, 131, 34, .2);
    }
    .tour-variant-badge.limited {
      color: #8f5a00;
      background: #fff5d9;
      border-color: rgba(212, 165, 28, .2);
    }
    .tour-variant-badge.positive {
      color: #1f7a39;
      background: #e8f8ee;
      border-color: rgba(38, 143, 74, .16);
    }
    .badge-info-popover {
      position: fixed;
      z-index: 96;
      inset: 0;
      pointer-events: none;
      opacity: 0;
      transition: opacity .16s ease;
    }
    .badge-info-popover.is-open {
      opacity: 1;
      pointer-events: auto;
    }
    .badge-info-popover-card {
      position: absolute;
      width: min(320px, calc(100vw - 24px));
      padding: 12px 14px;
      border-radius: 16px;
      background: rgba(255,255,255,.98);
      border: 1px solid rgba(21,22,27,.08);
      box-shadow: 0 20px 40px rgba(20, 25, 35, .18);
    }
    .badge-info-popover-title {
      color: #1f2732;
      font-size: 13px;
      line-height: 1.3;
      font-weight: 800;
      margin-bottom: 6px;
    }
    .badge-info-popover-text {
      color: #5f6b7a;
      font-size: 12px;
      line-height: 1.45;
    }
    .tour-variant-groups {
      display: grid;
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap: 8px;
      margin-bottom: 8px;
    }
    .tour-variant-group {
      padding: 8px 9px;
      border-radius: 16px;
      background: rgba(255,255,255,.78);
      border: 1px solid rgba(21,22,27,.05);
    }
    .tour-variant-group-title {
      color: #8a93a2;
      font-size: 10px;
      line-height: 1.2;
      text-transform: uppercase;
      letter-spacing: .05em;
      margin-bottom: 6px;
      font-weight: 800;
    }
    .tour-variant-group-items {
      display: grid;
      gap: 6px;
    }
    .tour-variant-group-action {
      margin-top: 8px;
      display: flex;
      justify-content: flex-start;
    }
    .tour-variant-group-item {
      display: grid;
      grid-template-columns: 18px minmax(0, 1fr);
      gap: 6px;
      align-items: start;
    }
    .tour-variant-group-icon {
      font-size: 12px;
      line-height: 1.2;
      text-align: center;
      opacity: .9;
    }
    .tour-variant-group-label {
      color: #8a93a2;
      font-size: 10px;
      line-height: 1.15;
      margin-bottom: 1px;
    }
    .tour-variant-group-value-row {
      display: flex;
      align-items: center;
      gap: 8px;
      flex-wrap: wrap;
    }
    .tour-variant-group-separator {
      color: #98a1b2;
      font-size: 12px;
      line-height: 1;
      flex: 0 0 auto;
    }
    .tour-variant-group-value {
      color: #27303c;
      font-size: 12px;
      line-height: 1.25;
      word-break: break-word;
      font-weight: 700;
    }
    .tour-variant-link-button {
      display: inline-flex;
      align-items: center;
      gap: 4px;
      padding: 0;
      border: 0;
      background: transparent;
      color: #2f69b3;
      font-size: 12px;
      line-height: 1.3;
      font-weight: 700;
      text-decoration: none;
      cursor: pointer;
    }
    .tour-variant-link-button svg {
      width: 13px;
      height: 13px;
      display: block;
      flex: 0 0 auto;
    }
    .tour-variant-link-button span {
      display: inline-block;
      line-height: 1.2;
    }
    .tour-variant-link-button:hover {
      color: #2f69b3;
      text-decoration: underline;
    }
    .tour-variant-route {
      margin-top: 0;
      color: #667085;
      font-size: 11px;
      line-height: 1.35;
      padding-top: 8px;
      border-top: 1px dashed rgba(128, 139, 158, .22);
      display: -webkit-box;
      -webkit-line-clamp: 2;
      -webkit-box-orient: vertical;
      overflow: hidden;
    }
    .tour-variant-actions {
      display: flex;
      justify-content: flex-end;
      align-items: center;
      gap: 8px;
      margin-top: 8px;
    }
    .tour-favorite-button {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 38px;
      min-width: 38px;
      height: 38px;
      padding: 0;
      border-radius: 14px;
      background: linear-gradient(180deg, #f0f2f5 0%, #e3e8ee 100%);
      border: 1px solid rgba(112, 122, 138, .16);
      box-shadow: 0 10px 20px rgba(20, 25, 35, .08);
      color: #68707f;
      transition: transform .16s ease, box-shadow .16s ease, background .16s ease;
    }
    .tour-share-button {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 38px;
      min-width: 38px;
      height: 38px;
      padding: 0;
      border-radius: 14px;
      background: linear-gradient(180deg, #f0f2f5 0%, #e3e8ee 100%);
      border: 1px solid rgba(112, 122, 138, .16);
      box-shadow: 0 10px 20px rgba(20, 25, 35, .08);
      color: #68707f;
      transition: transform .16s ease, box-shadow .16s ease, background .16s ease;
    }
    .tour-favorite-button:hover {
      transform: translateY(-1px);
      background: linear-gradient(180deg, #f4f6f9 0%, #e7ecf2 100%);
      box-shadow: 0 14px 24px rgba(20, 25, 35, .12);
    }
    .tour-share-button:hover {
      transform: translateY(-1px);
      background: linear-gradient(180deg, #f4f6f9 0%, #e7ecf2 100%);
      box-shadow: 0 14px 24px rgba(20, 25, 35, .12);
    }
    .tour-favorite-button.is-active {
      background: linear-gradient(180deg, #fff3f5 0%, #ffe6ea 100%);
      border-color: rgba(232, 93, 121, .18);
      box-shadow: 0 10px 20px rgba(232, 93, 121, .12);
      color: #d14f72;
    }
    .tour-favorite-button.is-active:hover {
      background: linear-gradient(180deg, #fff5f7 0%, #ffecef 100%);
      box-shadow: 0 14px 24px rgba(232, 93, 121, .16);
    }
    .tour-favorite-button svg {
      width: 18px;
      height: 18px;
      display: block;
      border-radius: 0;
      object-fit: contain;
      flex: 0 0 auto;
    }
    .tour-card .tour-share-button img,
    .tour-card .tour-share-button span {
      width: 18px;
      height: 18px;
      display: block;
      line-height: 18px;
      text-align: center;
      max-width: 18px;
      max-height: 18px;
      min-width: 18px;
      min-height: 18px;
      border-radius: 0;
      object-fit: contain;
      flex: 0 0 auto;
    }
    .tour-select-button {
      min-height: 34px;
      padding: 0 14px;
      border-radius: 12px;
      font-size: 12px;
    }
    .tour-select-button {
      min-height: 42px;
      padding: 0 18px;
      border-radius: 14px;
      font-size: 14px;
      font-weight: 800;
      background: linear-gradient(180deg, #7cb4ff 0%, #5a93f0 100%);
      color: #ffffff;
      box-shadow: 0 12px 24px rgba(90, 147, 240, .24);
    }
    .tour-select-button:disabled {
      opacity: .72;
      cursor: progress;
      transform: none;
      box-shadow: none;
    }
    .tour-flights-button {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      gap: 8px;
      width: auto;
      min-width: 38px;
      min-height: 38px;
      height: 38px;
      padding: 0 14px;
      border-radius: 14px;
      border: 1px solid rgba(112, 122, 138, .16);
      background: linear-gradient(180deg, #f0f2f5 0%, #e3e8ee 100%);
      box-shadow: 0 10px 20px rgba(20, 25, 35, .08);
      color: #68707f;
      font-size: 13px;
      font-weight: 700;
      line-height: 1;
      white-space: nowrap;
      transition: transform .16s ease, box-shadow .16s ease, background .16s ease;
    }
    .tour-flights-button:hover {
      transform: translateY(-1px);
      background: linear-gradient(180deg, #f4f6f9 0%, #e7ecf2 100%);
      box-shadow: 0 14px 24px rgba(20, 25, 35, .12);
    }
    .tour-flights-button:disabled {
      opacity: .72;
      cursor: progress;
      transform: none;
      box-shadow: none;
    }
    .tour-flights-button svg {
      width: 18px;
      height: 18px;
      display: block;
      flex: 0 0 auto;
    }
    .tour-flights-button span {
      display: inline-block;
      flex: 0 0 auto;
    }
    .tour-description {
      background: #f7f7f7;
      border: 1px solid rgba(21,22,27,.05);
      border-radius: 18px;
      padding: 10px 12px;
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto;
      gap: 10px;
      align-items: start;
      color: #4d5563;
      font-size: 12px;
      line-height: 1.3;
    }
    .tour-description-text {
      min-width: 0;
    }
    .tour-description-content {
      display: flex;
      flex-direction: column;
      gap: 8px;
      min-width: 0;
    }
    .tour-description-meta {
      display: flex;
      flex-direction: column;
      align-items: flex-end;
      gap: 8px;
      min-width: 0;
    }
    .tour-category-badges {
      display: flex;
      flex-wrap: wrap;
      justify-content: flex-start;
      gap: 6px;
    }
    .tour-description.is-meta-only {
      grid-template-columns: 1fr;
    }
    .tour-description.is-meta-only .tour-description-meta {
      align-items: flex-start;
    }
    .tour-description.is-meta-only .tour-category-badges {
      justify-content: flex-start;
    }
    .tour-description-action {
      min-height: 0;
      padding: 0;
      border: 0;
      border-radius: 0;
      background: transparent;
      box-shadow: none;
      color: #2f69b3;
      white-space: nowrap;
      font-size: 12px;
      font-weight: 700;
      line-height: 1.1;
      align-self: flex-start;
      text-decoration: none;
      cursor: pointer;
    }
    .tour-description-action:hover {
      background: transparent;
      box-shadow: none;
      color: #2f69b3;
      text-decoration: none;
    }
    .results-filter-button {
      position: relative;
      min-height: 42px;
      padding: 0 16px;
      border-radius: 14px;
      white-space: nowrap;
      flex: 0 0 auto;
      background: linear-gradient(135deg, #ffe88b 0%, #f7d86a 100%);
      color: #1c2026;
      border: 1px solid rgba(255, 216, 61, .34);
      box-shadow: 0 12px 24px rgba(255, 216, 61, .24);
    }
    .results-filter-button:hover {
      background: linear-gradient(135deg, #ffea97 0%, #f9dc73 100%);
    }
    .results-filter-button.has-active-filters::after {
      content: attr(data-filter-count);
      position: absolute;
      top: -6px;
      right: -6px;
      min-width: 20px;
      height: 20px;
      padding: 0px;
      border-radius: 999px;
      background: #ff3b30;
      color: #ffffff;
      font-size: 11px;
      line-height: 20px;
      font-weight: 800;
      text-align: center;
      box-shadow: 0 0 0 2px rgba(255, 255, 255, .92);
    }
    .results-filter-button[hidden] {
      display: none;
    }
    .filter-modal {
      position: fixed;
      inset: 0;
      z-index: 82;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 24px;
      background: rgba(18, 24, 35, .34);
      opacity: 0;
      pointer-events: none;
      transition: opacity .2s ease;
    }
    .filter-modal.is-open {
      opacity: 1;
      pointer-events: auto;
    }
    .filter-modal-card {
      width: min(1100px, 100%);
      max-height: min(86vh, 920px);
      overflow: hidden;
      display: flex;
      flex-direction: column;
      padding: 18px;
      border-radius: 26px;
      background: linear-gradient(180deg, #fbfbfc 0%, #f3f5f8 100%);
      border: 1px solid rgba(21,22,27,.06);
      box-shadow: 0 28px 70px rgba(20, 25, 35, .18);
    }
    .filter-modal-head {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 12px;
      margin-bottom: 12px;
      flex: 0 0 auto;
    }
    .filter-modal-title {
      margin: 0;
      font-size: 24px;
      line-height: 1.08;
      font-weight: 900;
      letter-spacing: -.03em;
      color: #1f2937;
    }
    .filter-modal-subtitle {
      margin-top: 6px;
      color: #667085;
      font-size: 13px;
      line-height: 1.4;
    }
    .filter-modal-close {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 42px;
      min-width: 42px;
      height: 42px;
      padding: 0;
      border-radius: 14px;
      border: 1px solid rgba(112, 122, 138, .16);
      background: linear-gradient(180deg, #f0f2f5 0%, #e3e8ee 100%);
      box-shadow: 0 10px 22px rgba(20, 25, 35, .08);
      color: #2b3440;
      font-size: 18px;
      line-height: 1;
    }
    .filter-modal-body {
      flex: 1 1 auto;
      min-height: 0;
      overflow: auto;
      touch-action: pan-y;
      display: grid;
      grid-template-columns: repeat(4, minmax(0, 1fr));
      gap: 9px;
      padding-right: 4px;
    }
    .filter-group {
      padding: 12px 13px;
      border-radius: 18px;
      background: rgba(255,255,255,.88);
      border: 1px solid rgba(21,22,27,.06);
      box-shadow: 0 14px 30px rgba(20, 25, 35, .04);
    }
    .filter-group-title {
      margin: 0 0 7px;
      color: #7b8494;
      font-size: 10px;
      line-height: 1.2;
      text-transform: uppercase;
      letter-spacing: .08em;
      font-weight: 800;
    }
    .filter-options {
      display: grid;
      gap: 7px;
    }
    .filter-group-toggle {
      margin-top: 8px;
      padding: 0;
      border: 0;
      background: transparent;
      color: #5a93f0;
      font-size: 12px;
      font-weight: 600;
      line-height: 1.2;
      text-decoration: none;
      cursor: pointer;
      justify-self: start;
    }
    .filter-options-locations {
      gap: 10px;
    }
    .filter-location-country {
      display: grid;
      gap: 7px;
    }
    .filter-location-country-row {
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto auto auto;
      align-items: center;
      gap: 8px;
      min-width: 0;
    }
    .filter-location-country-option {
      min-width: 0;
    }
    .filter-location-country-option .filter-option-text {
      min-width: 0;
    }
    .filter-location-count {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-width: 22px;
      height: 18px;
      padding: 0 6px;
      border-radius: 999px;
      background: rgba(90, 147, 240, .12);
      color: #4d77b8;
      font-size: 10px;
      font-weight: 700;
      line-height: 1;
    }
    .filter-location-toggle {
      padding: 0;
      border: 0;
      background: transparent;
      color: inherit;
      font-size: 11px;
      font-weight: 600;
      line-height: 1.2;
      text-decoration: none;
      cursor: pointer;
      white-space: nowrap;
    }
    .filter-location-toggle-placeholder,
    .filter-location-price-placeholder {
      display: block;
      min-width: 1px;
      min-height: 1px;
    }
    .filter-location-country-price {
      width: auto;
      min-width: 60px;
      justify-self: end;
    }
    .filter-location-children {
      display: none;
      gap: 6px;
      padding-left: 22px;
    }
    .filter-location-children.is-open {
      display: grid;
    }
    .filter-location-child {
      font-size: 11px;
    }
    .filter-option {
      display: flex;
      align-items: center;
      gap: 8px;
      color: #27303c;
      font-size: 12px;
      line-height: 1.3;
      cursor: pointer;
      touch-action: pan-y;
      transition: opacity .2s ease, color .2s ease, transform .2s ease;
    }
    .filter-option input {
      margin-top: 0;
      accent-color: #5a93f0;
      cursor: pointer;
      transition: opacity .2s ease, filter .2s ease;
    }
    .filter-option-text {
      flex: 1 1 auto;
      word-break: break-word;
      transition: opacity .2s ease, color .2s ease;
    }
    .filter-option-content {
      min-width: 0;
      flex: 1 1 auto;
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto;
      align-items: baseline;
      gap: 8px;
    }
    .filter-option-price {
      flex: 0 0 auto;
      width: 60px;
      justify-self: end;
      color: #7b8494;
      font-size: 11px;
      line-height: 1.2;
      text-align: left;
      white-space: nowrap;
    }
    .filter-option-price.is-lowest {
      color: #2f9e44;
      font-weight: 700;
    }
    .filter-option.is-disabled {
      opacity: .42;
      pointer-events: none;
    }
    .filter-option.is-disabled input,
    .filter-option.is-disabled .filter-option-text {
      cursor: not-allowed;
    }
    .filter-location-country.is-disabled,
    .filter-location-country.is-disabled .filter-location-meta {
      pointer-events: none;
    }
    .filter-modal-hot-only {
      flex: 0 0 auto;
      margin-bottom: 6px;
    }
    .filter-empty {
      color: #8a93a2;
      font-size: 12px;
      line-height: 1.4;
    }
    .filter-modal-footer {
      flex: 0 0 auto;
      display: flex;
      justify-content: center;
      gap: 10px;
      margin-top: 14px;
    }
    .filter-secondary-button,
    .filter-apply-button {
      min-height: 46px;
      padding: 0 18px;
      border-radius: 16px;
    }
    .filter-reset-icon-button {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 46px;
      min-width: 46px;
      padding: 0;
    }
    .filter-reset-icon-button[hidden] {
      display: none !important;
    }
    .filter-reset-icon-button img {
      width: 20px;
      height: 20px;
      display: block;
    }
    .quick-replies {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
      max-width: 100%;
    }
    .quick-reply {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      gap: 6px;
      padding: 7px 7px;
      border-radius: 999px;
      border: 1px solid rgba(21,22,27,.06);
      background: #ffffff;
      color: var(--text);
      font-size: 12px;
      font-weight: 600;
      box-shadow: 0 10px 20px rgba(20, 25, 35, .04);
    }
    .quick-reply-icon {
      width: 14px;
      height: 14px;
      display: block;
      flex: 0 0 auto;
      background-color: #40474F;
      transform: scaleX(-1);
      -webkit-mask-image: url("../images/enter.svg");
      mask-image: url("../images/enter.svg");
      -webkit-mask-repeat: no-repeat;
      mask-repeat: no-repeat;
      -webkit-mask-position: center;
      mask-position: center;
      -webkit-mask-size: contain;
      mask-size: contain;
    }
    .quick-reply-text {
      min-width: 0;
    }
    .quick-reply:hover {
      background: #fffef6;
      box-shadow: 0 12px 24px rgba(20, 25, 35, .08);
    }
    .quick-reply.quick-reply-action {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-height: 38px;
      padding: 0 16px;
      border-radius: 14px;
      background: linear-gradient(135deg, #ffe88b 0%, #f7d86a 100%);
      color: #1c2026;
      border: 1px solid rgba(255, 216, 61, .34);
      box-shadow: 0 10px 20px rgba(255, 216, 61, .18);
      font-size: 16px;
      font-weight: 800;
    }
    .quick-reply.quick-reply-action:hover {
      background: linear-gradient(135deg, #ffea97 0%, #f9dc73 100%);
      box-shadow: 0 12px 24px rgba(255, 216, 61, .24);
    }
    .quick-reply:disabled {
      opacity: .6;
      cursor: default;
      transform: none;
    }
    .typing-dots {
      display: inline-flex;
      align-items: center;
      gap: 5px;
    }
    .typing-dots span {
      width: 8px;
      height: 8px;
      border-radius: 50%;
      background: rgba(110,162,255,.92);
      animation: typing-bounce 1s infinite ease-in-out;
    }
    .typing-dots span:nth-child(2) {
      animation-delay: .15s;
    }
    .typing-dots span:nth-child(3) {
      animation-delay: .3s;
    }
    @keyframes typing-bounce {
      0%, 80%, 100% {
        opacity: .35;
        transform: translateY(0);
      }
      40% {
        opacity: 1;
        transform: translateY(-4px);
      }
    }
    @keyframes message-in {
      0% {
        opacity: 0;
        transform: translateY(10px) scale(.985);
      }
      100% {
        opacity: 1;
        transform: translateY(0) scale(1);
      }
    }
    @keyframes card-in {
      0% {
        opacity: 0;
        transform: translateY(12px);
      }
      100% {
        opacity: 1;
        transform: translateY(0);
      }
    }
    @keyframes placeholder-pulse {
      0%, 100% {
        opacity: .55;
      }
      50% {
        opacity: 1;
      }
    }
    .composer {
      /*border-top: 1px solid var(--border);*/
      padding: 22px 28px 15px;
      display: grid;
      grid-template-columns: 1fr auto;
      gap: 16px;
      background: #ffffff;
    }
    .chat-progress {
      height: 14px;
      opacity: 0;
      visibility: hidden;
      padding: 0 28px;
      background: #ffffff;
      flex: 0 0 auto;
      transition: opacity .28s ease, visibility 0s linear .28s;
    }
    .chat-progress.is-visible {
      opacity: 1;
      visibility: visible;
      transition: opacity .28s ease;
    }
    .chat-progress .progress-track {
      opacity: 0;
      transition: opacity .28s ease;
    }
    .chat-progress.is-visible .progress-track {
      opacity: 1;
    }
    textarea {
      width: 100%;
      min-height: 64px;
      height: 64px;
      max-height: 180px;
      resize: vertical;
      border-radius: 24px;
      border: 1px solid var(--border);
      background: var(--field);
      color: var(--text);
      padding: 18px 20px;
      font: inherit;
      outline: none;
      box-shadow: inset 0 1px 2px rgba(20, 25, 35, .02);
      overflow: hidden;
      font-size: 15px;
    }
    textarea::placeholder {
      color: #98a2b3;
      transition: opacity .2s ease;
    }
    textarea.placeholder-animating::placeholder {
      animation: placeholder-pulse 2.4s ease-in-out infinite;
    }
    textarea:focus {
      border-color: rgba(110,162,255,.35);
      box-shadow: 0 0 0 4px rgba(110,162,255,.10);
    }
    button {
      border: 0;
      border-radius: 22px;
      padding: 0 24px;
      font: inherit;
      font-weight: 700;
      cursor: pointer;
      transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
    }
    button:hover {
      transform: translateY(-1px);
    }
    .primary {
      background: var(--accent);
      color: #1c2026;
      box-shadow: 0 14px 28px rgba(255, 216, 61, .28);
    }
    #btnSend {
      height: 64px;
      min-height: 64px;
      align-self: stretch;
    }
    .ghost {
      background: linear-gradient(180deg, #f0f2f5 0%, #e3e8ee 100%);
      color: #2b3440;
      border: 1px solid rgba(112, 122, 138, .16);
      box-shadow: 0 14px 28px rgba(20, 25, 35, .10);
    }
    .header-chip {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-width: 48px;
      height: 48px;
      padding: 0 18px;
      border-radius: 16px;
      font-size: 16px;
      font-weight: 700;
      white-space: nowrap;
    }
    .side {
      display: grid;
      gap: 16px;
      align-content: start;
    }
    .side .body {
      padding: 20px 24px 24px;
    }
    .pill {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      padding: 10px 14px;
      border-radius: 999px;
      font-size: 12px;
      font-weight: 700;
      border: 1px solid var(--border);
      background: #f7f7f7;
    }
    .pill.ok { color: var(--ok); }
    .pill.warn { color: var(--warn); }
    .progress-track {
      position: relative;
      width: 100%;
      height: 5px;
      border-radius: 999px;
      overflow: hidden;
      background: #e8edf2;
      border: 1px solid rgba(43, 138, 90, .10);
    }
    .progress-bar {
      height: 100%;
      width: 100%;
      border-radius: inherit;
      background: linear-gradient(90deg, #49b96f 0%, #7adf98 100%);
      box-shadow: inset 0 -1px 0 rgba(255,255,255,.18);
      transform: scaleX(0);
      transform-origin: left center;
      transition: transform .35s ease;
      will-change: transform;
    }
    .field {
      background: #f7f7f7;
      border: 1px solid var(--border);
      border-radius: 18px;
      padding: 14px 16px;
    }
    .field .k {
      color: var(--muted);
      font-size: 12px;
      margin-bottom: 6px;
      text-transform: uppercase;
      letter-spacing: .04em;
    }
    .field .v {
      font-size: 14px;
      word-break: break-word;
    }
    pre {
      margin: 0;
      white-space: pre-wrap;
      word-break: break-word;
      font-size: 12px;
      line-height: 1.5;
      color: #5a4738;
    }
    .tour-modal {
      position: fixed;
      inset: 0;
      z-index: 90;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 20px;
      background: rgba(18, 24, 35, .42);
      opacity: 0;
      pointer-events: none;
      transition: opacity .22s ease;
    }
    .tour-modal.is-open {
      opacity: 1;
      pointer-events: auto;
    }
    .tour-modal-panel {
      width: min(1040px, 100%);
      max-height: min(88vh, 920px);
      position: relative;
      isolation: isolate;
      overflow: auto;
      background:
        radial-gradient(circle at top right, rgba(110,162,255,.08), transparent 24%),
        linear-gradient(180deg, #fcfcfd 0%, #f4f5f7 100%);
      border-radius: 28px;
      box-shadow: 0 30px 80px rgba(20, 25, 35, .26);
      transform: translateY(18px) scale(.985);
      transition: transform .24s ease;
      will-change: transform;
    }
    .tour-modal.is-open .tour-modal-panel {
      transform: translateY(0) scale(1);
    }
    .tour-modal-header {
      position: sticky;
      top: 0;
      z-index: 1002;
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto;
      grid-template-areas:
        "info close"
        "badges badges";
      align-items: flex-start;
      column-gap: 18px;
      row-gap: 12px;
      padding: 18px 18px 12px;
      background: rgba(255,255,255,.94);
      backdrop-filter: blur(12px);
    }
    .tour-modal-header-info {
      grid-area: info;
      display: grid;
      min-width: 0;
      align-content: start;
      gap: 8px;
    }
    .tour-modal-title {
      margin: 0;
      display: flex;
      align-items: center;
      gap: 10px;
      flex-wrap: wrap;
      font-size: 16px;
      line-height: 1.1;
      font-weight: 900;
      letter-spacing: -.03em;
      margin-top: 0;
    }
    .tour-modal-title-text {
      display: grid;
      gap: 2px;
      min-width: 0;
      line-height: 1.1;
    }
    .tour-modal-title-mainline {
      display: inline-flex;
      align-items: flex-start;
      gap: 6px;
      min-width: 0;
    }
    .tour-modal-title-icon {
      flex: 0 0 auto;
      line-height: 1;
      margin-top: 1px;
    }
    .tour-modal-title-copy {
      min-width: 0;
    }
    .tour-modal-subtitle {
      margin-top: 0;
      color: var(--muted);
      font-size: 12px;
      line-height: 1.45;
    }
    .tour-modal-meta {
      display: flex;
      align-items: center;
      gap: 12px;
      flex-wrap: wrap;
      margin-top: 0;
    }
    .tour-modal-operator-link {
      display: none;
      align-items: center;
      justify-content: center;
      min-height: 42px;
      padding: 0 16px;
      border-radius: 14px;
      text-decoration: none;
      font-size: 14px;
      font-weight: 700;
      white-space: nowrap;
    }
    .tour-modal-operator-link.is-visible {
      display: inline-flex;
    }
    .tour-modal-price-badge {
      display: none;
      grid-template-columns: 1fr;
      gap: 2px;
      min-height: 0;
      padding: 7px 12px;
      border-radius: 14px;
      background: linear-gradient(135deg, #fff7cf 0%, #ffe88b 100%);
      border: 1px solid rgba(255, 216, 61, .34);
      box-shadow: 0 10px 20px rgba(255, 216, 61, .14);
      white-space: nowrap;
    }
    .tour-modal-price-badge.is-visible {
      display: grid;
    }
    .tour-modal-price-badge-value {
      font-size: 16px;
      line-height: 1;
      font-weight: 900;
      letter-spacing: -.03em;
      color: #15161b;
    }
    .tour-modal-price-badge-local {
      color: rgba(28, 32, 38, .68);
      font-size: 10px;
      line-height: 1.2;
      font-weight: 700;
    }
    .tour-modal-close {
      grid-area: close;
      width: 42px;
      min-width: 42px;
      height: 42px;
      padding: 0;
      border-radius: 14px;
      border: 1px solid rgba(112, 122, 138, .16);
      background: linear-gradient(180deg, #f0f2f5 0%, #e3e8ee 100%);
      box-shadow: 0 10px 22px rgba(20, 25, 35, .08);
      color: #2b3440;
      font-size: 18px;
      line-height: 1;
    }
    .tour-modal-header-actions {
      grid-area: close;
      display: inline-flex;
      align-items: center;
      gap: 8px;
    }
    .tour-modal-body {
      padding: 0 24px 108px;
      display: grid;
      gap: 22px;
    }
    .tour-modal-hero {
      display: grid;
      grid-template-columns: 1fr;
      gap: 16px;
      align-items: start;
    }
    .tour-modal-gallery {
      display: grid;
      gap: 10px;
    }
    .tour-modal-gallery-empty {
      min-height: 172px;
      padding: 24px;
      display: flex;
      align-items: center;
      justify-content: center;
      text-align: center;
      border-radius: 24px;
      background: linear-gradient(135deg, #dfe8f8 0%, #edf1f8 100%);
      border: 1px solid rgba(21,22,27,.06);
    }
    .tour-modal-thumbs {
      display: grid;
      grid-template-columns: repeat(5, minmax(0, 1fr));
      gap: 12px;
      align-items: start;
    }
    .tour-modal-thumb {
      display: block;
      aspect-ratio: 1;
      width: 100%;
      min-width: 0;
      min-height: 0;
      padding: 0;
      border-radius: 16px;
      overflow: hidden;
      border: 1px solid rgba(21,22,27,.06);
      background: #eff3f7;
      box-shadow: none;
    }
    .tour-modal-thumb.featured {
      grid-column: span 1;
      aspect-ratio: 1;
      border-radius: 16px;
    }
    .tour-modal-thumb.is-active {
      border-color: rgba(90, 147, 240, .55);
      box-shadow: 0 0 0 3px rgba(90, 147, 240, .12);
    }
    .tour-modal-thumb:hover {
      transform: none;
      border-color: rgba(255, 216, 61, .58);
      box-shadow: 0 0 0 3px rgba(255, 216, 61, .16);
    }
    .tour-modal-thumb img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      display: block;
    }
    .tour-modal-thumb.is-more {
      position: relative;
      isolation: isolate;
    }
    .tour-modal-thumb.is-more::after {
      content: "";
      position: absolute;
      inset: 0;
      background: linear-gradient(180deg, rgba(11, 18, 32, .18) 0%, rgba(11, 18, 32, .62) 100%);
      z-index: 1;
    }
    .tour-modal-thumb-more {
      position: absolute;
      inset: 0;
      z-index: 2;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      gap: 4px;
      color: #ffffff;
      text-align: center;
      padding: 10px;
    }
    .tour-modal-thumb-more-label {
      font-size: 24px;
      line-height: 1;
      font-weight: 900;
      letter-spacing: -.03em;
    }
    .tour-modal-thumb-more-text {
      font-size: 11px;
      line-height: 1.2;
      font-weight: 700;
      opacity: .92;
    }
    .tour-modal-details {
      display: grid;
      gap: 14px;
    }
    .tour-modal-card {
      background: rgba(255,255,255,.84);
      border: 1px solid rgba(21,22,27,.06);
      border-radius: 24px;
      padding: 18px;
      box-shadow: 0 18px 36px rgba(20, 25, 35, .05);
      min-width: 0;
    }
    .tour-modal-card-title {
      font-size: 15px;
      font-weight: 800;
      margin-bottom: 12px;
      letter-spacing: -.02em;
    }
    .tour-modal-badges {
      grid-area: badges;
      display: flex;
      flex-wrap: nowrap;
      gap: 8px;
      margin-top: 0;
      width: 100%;
      overflow-x: auto;
      overflow-y: hidden;
      -webkit-overflow-scrolling: touch;
      overscroll-behavior-x: contain;
      scrollbar-width: none;
    }
    .tour-modal-badges::-webkit-scrollbar {
      display: none;
    }
    .tour-modal-badges .tour-variant-badge {
      flex: 0 0 auto;
      min-height: 26px;
      padding: 5px 10px;
      font-size: 11px;
      white-space: nowrap;
    }
    .tour-modal-groups {
      display: grid;
      grid-template-columns: repeat(4, minmax(0, 1fr));
      gap: 12px;
    }
    .tour-modal-group {
      padding: 14px 14px 15px;
      border-radius: 20px;
      background: rgba(255,255,255,.82);
      border: 1px solid rgba(21,22,27,.06);
      min-width: 0;
    }
    .tour-modal-group-title {
      margin: 0 0 10px;
      color: #7b8494;
      font-size: 11px;
      line-height: 1.2;
      text-transform: uppercase;
      letter-spacing: .08em;
      font-weight: 800;
    }
    .tour-modal-group-items {
      display: grid;
      gap: 10px;
    }
    .tour-modal-group-wide {
      grid-column: 1 / -1;
    }
    .tour-modal-group-wide .tour-modal-group-items {
      grid-template-columns: repeat(4, minmax(0, 1fr));
      gap: 12px;
    }
    .tour-modal-group-item {
      display: grid;
      grid-template-columns: 32px minmax(0, 1fr);
      gap: 8px;
      align-items: start;
    }
    .tour-modal-group-icon {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 32px;
      height: 32px;
      border-radius: 10px;
      background: #f5f7fa;
      border: 1px solid rgba(21,22,27,.05);
      font-size: 14px;
      line-height: 1;
    }
    .tour-modal-group-label {
      color: #8a93a2;
      font-size: 11px;
      line-height: 1.25;
      margin-bottom: 2px;
    }
    .tour-modal-group-value-row {
      display: flex;
      align-items: center;
      gap: 8px;
      flex-wrap: wrap;
    }
    .tour-modal-group-separator {
      color: #98a1b2;
      font-size: 13px;
      line-height: 1;
      flex: 0 0 auto;
    }
    .tour-modal-group-value {
      color: #1f2732;
      font-size: 14px;
      line-height: 1.3;
      font-weight: 700;
      word-break: break-word;
    }
    .tour-modal-inline-link-button {
      font-size: 13px;
      line-height: 1.2;
    }
    .tour-modal-group-price-value {
      font-size: 20px;
      line-height: 1.05;
      font-weight: 900;
      letter-spacing: -.03em;
      color: #15161b;
    }
    .tour-modal-group-price-head {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
      margin-bottom: 2px;
    }
    .tour-modal-group-price-local {
      margin-top: 4px;
      color: rgba(28, 32, 38, .68);
      font-size: 11px;
      line-height: 1.25;
      font-weight: 700;
    }
    .tour-modal-group-price-note {
      margin-top: 8px;
      color: #7d8795;
      font-size: 10px;
      line-height: 1.4;
    }
    .tour-modal-flights-button {
      flex: 0 0 auto;
      min-height: 34px;
      height: 34px;
      padding: 0 12px;
      border-radius: 12px;
      gap: 6px;
      font-size: 12px;
    }
    .tour-modal-flights-button svg {
      width: 16px;
      height: 16px;
    }
    .tour-modal-group-value a {
      color: #2f69b3;
      text-decoration: none;
    }
    .tour-modal-group-value a:hover {
      text-decoration: underline;
    }
    .tour-reviews {
      display: grid;
      gap: 12px;
    }
    .tour-review-card {
      padding: 14px 16px;
      border-radius: 18px;
      background: rgba(255,255,255,.88);
      border: 1px solid rgba(21,22,27,.06);
      box-shadow: 0 14px 30px rgba(20, 25, 35, .04);
    }
    .tour-review-card.is-hidden {
      display: none;
    }
    .tour-review-head {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 12px;
      margin-bottom: 10px;
    }
    .tour-review-meta {
      min-width: 0;
    }
    .tour-review-author {
      color: #1f2732;
      font-size: 14px;
      line-height: 1.3;
      font-weight: 800;
    }
    .tour-review-date {
      margin-top: 3px;
      color: #8a93a2;
      font-size: 11px;
      line-height: 1.35;
    }
    .tour-review-text {
      color: #24303d;
      font-size: 13px;
      line-height: 1.55;
      white-space: pre-line;
    }
    .tour-review-toggle,
    .tour-reviews-more {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: fit-content;
      margin-top: 10px;
      padding: 0;
      border: 0;
      background: transparent;
      color: #2f69b3;
      font-size: 12px;
      line-height: 1.3;
      font-weight: 700;
      text-decoration: underline;
      text-underline-offset: 2px;
    }
    .tour-modal-sections {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 16px;
    }
    .tour-modal-section {
      background: rgba(255,255,255,.88);
      border: 1px solid rgba(21,22,27,.06);
      border-radius: 24px;
      padding: 18px;
      box-shadow: 0 14px 30px rgba(20, 25, 35, .04);
    }
    .tour-modal-section.full {
      grid-column: 1 / -1;
    }
    .tour-modal-section-content {
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto;
      gap: 12px;
      align-items: start;
      margin-bottom: 12px;
    }
    .tour-modal-description-content {
      display: flex;
      flex-direction: column;
      gap: 8px;
      min-width: 0;
    }
    .tour-modal-section-actions {
      display: flex;
      justify-content: flex-end;
      align-self: start;
    }
    .tour-modal-section-actions .tour-description-action {
      flex: 0 0 auto;
      align-self: flex-start;
    }
    .tour-modal-section-title {
      margin: 0 0 12px;
      font-size: 16px;
      font-weight: 800;
      letter-spacing: -.02em;
    }
    .tour-modal-section-text {
      color: #48505d;
      font-size: 14px;
      line-height: 1.6;
    }
    .tour-modal-map {
      width: 100%;
      height: 280px;
      border-radius: 0;
      overflow: hidden;
      background: linear-gradient(180deg, #eef2f7 0%, #e5ebf3 100%);
      border: 0;
      box-shadow: none;
    }
    .tour-modal-map-wrap {
      position: relative;
      z-index: 0;
      margin-top: 14px;
      margin-left: -18px;
      margin-right: -18px;
      margin-bottom: -18px;
      overflow: hidden;
      border-radius: 0 0 24px 24px;
    }
    .tour-modal-map,
    .tour-modal-map .leaflet-pane,
    .tour-modal-map .leaflet-top,
    .tour-modal-map .leaflet-bottom,
    .tour-modal-map .leaflet-control-container {
      z-index: 0;
    }
    .tour-modal-map:focus-visible {
      outline: 2px solid rgba(76, 111, 255, .34);
      outline-offset: 2px;
    }
    .tour-modal-map .leaflet-control-attribution {
      padding: 1px 4px;
      font-size: 8px;
      line-height: 1.15;
      color: rgba(73, 82, 95, .72);
      background: rgba(255, 255, 255, .72);
    }
    .tour-modal-map .leaflet-control-attribution a {
      color: inherit;
    }
    .tour-modal-list {
      margin: 0;
      padding: 0;
      list-style: none;
      color: #48505d;
      font-size: 14px;
      line-height: 1.6;
    }
    .tour-modal-list li {
      position: relative;
      padding-left: 28px;
    }
    .tour-modal-list li::before {
      content: '✓';
      position: absolute;
      left: 0;
      top: 3px;
      color: #34c759;
      font-size: 15px;
      line-height: 1;
      font-weight: 900;
    }
    .tour-modal-list li + li {
      margin-top: 6px;
    }
    .tour-modal-footer {
      position: sticky;
      bottom: 0;
      z-index: 2;
      display: grid;
      grid-template-columns: minmax(0, 1fr);
      gap: 10px;
      align-items: center;
      padding: 16px 24px 5px;
      background: linear-gradient(180deg, rgba(244,245,247,0) 0%, rgba(244,245,247,.94) 26%, rgba(244,245,247,1) 100%);
      backdrop-filter: blur(10px);
    }
    .tour-modal-book-button {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 100%;
      min-height: 58px;
      border-radius: 20px;
      padding: 0 24px;
      text-decoration: none;
      background: var(--accent);
      color: #1c2026;
      box-shadow: 0 14px 28px rgba(255, 216, 61, .28);
      font-size: 16px;
      font-weight: 800;
      letter-spacing: -.01em;
    }
    .tour-modal-book-button:hover {
      transform: translateY(-1px);
      background: var(--accent-strong);
    }
    .tour-modal-share {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 42px;
      min-width: 42px;
      height: 42px;
      border-radius: 14px;
      background: linear-gradient(180deg, #f0f2f5 0%, #e3e8ee 100%);
      border: 1px solid rgba(112, 122, 138, .16);
      box-shadow: none;
      color: #2b3440;
      font-size: 18px;
      line-height: 1;
      text-decoration: none;
    }
    .tour-modal-share img {
      display: block;
      width: 22px;
      height: 22px;
      object-fit: contain;
    }
    .tour-modal-share:hover {
      transform: translateY(-1px);
    }
    .photo-viewer {
      position: fixed;
      inset: 0;
      z-index: 95;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 24px;
      background: rgba(10, 15, 24, .76);
      opacity: 0;
      pointer-events: none;
      transition: opacity .22s ease;
    }
    .photo-viewer.is-open {
      opacity: 1;
      pointer-events: auto;
    }
    .photo-viewer-panel {
      position: relative;
      width: min(1120px, calc(100vw - 48px));
      max-height: calc(100vh - 48px);
      display: grid;
      gap: 12px;
      justify-items: stretch;
      align-items: start;
      margin: 0 auto;
      min-width: 0;
      will-change: transform;
    }
    .photo-viewer-main {
      position: relative;
      width: 100%;
      max-width: 100%;
      min-height: 0;
      min-width: 0;
      justify-self: stretch;
      margin: 0 auto;
    }
    .photo-viewer-main .splide__track {
      border-radius: 28px;
      overflow: hidden;
      background: linear-gradient(180deg, rgba(34, 43, 56, .92) 0%, rgba(17, 24, 35, .96) 100%);
      box-shadow: 0 30px 90px rgba(0, 0, 0, .4);
    }
    .photo-viewer-main .splide__slide {
      min-height: 320px;
      max-height: calc(100vh - 188px);
      display: flex;
      align-items: center;
      justify-content: center;
    }
    .photo-viewer-zoom-surface {
      position: relative;
      width: 100%;
      height: auto;
      min-height: 0;
      display: flex;
      align-items: center;
      justify-content: center;
      overflow: hidden;
      touch-action: manipulation;
      cursor: zoom-in;
    }
    .photo-viewer-zoom-surface.is-zoomed {
      cursor: zoom-out;
      touch-action: none;
    }
    .photo-viewer-main .splide__slide img,
    .photo-viewer-zoom-image {
      display: block;
      max-width: 100%;
      max-height: calc(100vh - 196px);
      width: auto;
      height: auto;
      object-fit: contain;
      transform-origin: center center;
      transition: transform .2s ease;
      will-change: transform;
    }
    .photo-viewer-main .splide__arrow {
      position: absolute;
      top: 50%;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 46px;
      height: 46px;
      min-width: 46px;
      min-height: 46px;
      padding: 0;
      border-radius: 16px;
      background: linear-gradient(180deg, #f0f2f5 0%, #e3e8ee 100%);
      color: #000000;
      border: 1px solid rgba(112, 122, 138, .16);
      box-shadow: 0 14px 28px rgba(20, 25, 35, .16);
      opacity: 1;
      line-height: 1;
      transform: translateY(-50%);
      transition: background .2s ease, box-shadow .2s ease, border-color .2s ease, color .2s ease;
      z-index: 2;
    }
    .photo-viewer-main .splide__arrow:hover {
      background: linear-gradient(180deg, #f4f6f9 0%, #e7ecf2 100%);
      color: #000000;
      transform: translateY(-50%);
    }
    .photo-viewer-main .splide__arrow svg {
      fill: #2b3440;
      width: 15px;
      height: 15px;
      display: block;
      color: #2b3440;
    }
    .photo-viewer-main .splide__arrow svg path {
      stroke: currentColor;
      stroke-width: 2;
    }
    .photo-viewer-main .splide__arrow--prev {
      left: 16px;
    }
    .photo-viewer-main .splide__arrow--next {
      right: 16px;
    }
    .photo-viewer-main .splide__pagination {
      display: none;
    }
    .photo-viewer-thumbs {
      width: 100%;
      max-width: 100%;
      min-width: 0;
      justify-self: stretch;
      margin: 0 auto;
    }
    .photo-viewer-thumbs .splide__track {
      padding: 2px 0;
    }
    .photo-viewer-thumbs .splide__slide {
      border-radius: 18px;
      overflow: hidden;
      opacity: .58;
      transition: opacity .2s ease, transform .2s ease, box-shadow .2s ease;
    }
    .photo-viewer-thumbs .splide__slide.is-active {
      opacity: 1;
      box-shadow: 0 0 0 2px rgba(255,255,255,.75);
      transform: translateY(-1px);
    }
    .photo-viewer-thumbs .splide__slide img {
      display: block;
      width: 100%;
      height: 100%;
      object-fit: cover;
    }
    .photo-viewer-close {
      position: absolute;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 42px;
      height: 42px;
      min-width: 42px;
      min-height: 42px;
      padding: 0;
      border-radius: 14px;
      background: linear-gradient(180deg, #f0f2f5 0%, #e3e8ee 100%);
      color: #2b3440;
      border: 1px solid rgba(112, 122, 138, .16);
      box-shadow: 0 14px 28px rgba(20, 25, 35, .16);
      font-size: 18px;
      line-height: 1;
      z-index: 1;
    }
    .photo-viewer-close:hover {
      background: linear-gradient(180deg, #f4f6f9 0%, #e7ecf2 100%);
    }
    .photo-viewer-close {
      top: 18px;
      right: 18px;
      font-size: 18px;
    }
    .tour-loader {
      position: fixed;
      inset: 0;
      z-index: 98;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 24px;
      background: rgba(18, 24, 35, .26);
      opacity: 0;
      pointer-events: none;
      transition: opacity .2s ease;
    }
    .tour-loader.is-open {
      opacity: 1;
      pointer-events: auto;
    }
    .tour-loader-card {
      width: min(320px, calc(100vw - 48px));
      padding: 22px 24px;
      border-radius: 24px;
      background: rgba(255,255,255,.96);
      border: 1px solid rgba(21,22,27,.06);
      box-shadow: 0 24px 60px rgba(20, 25, 35, .16);
      text-align: center;
    }
    .tour-loader-spinner {
      width: 44px;
      height: 44px;
      margin: 0 auto 14px;
      border-radius: 50%;
      border: 3px solid rgba(110,162,255,.22);
      border-top-color: #6ea2ff;
      animation: tour-spin .8s linear infinite;
    }
    .tour-loader-text {
      color: #344054;
      font-size: 14px;
      font-weight: 700;
      line-height: 1.4;
    }
    .tour-loader-hint {
      display: none;
      margin-top: 6px;
      color: #8a93a2;
      font-size: 12px;
      line-height: 1.45;
    }
    .tour-loader-hint:not(:empty) {
      display: block;
    }
    .tour-loader-cancel {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: fit-content;
      margin: 12px auto 0;
      padding: 0 14px;
      min-height: 34px;
      border-radius: 12px;
      border: 1px solid rgba(112, 122, 138, .16);
      background: linear-gradient(180deg, #f7f8fa 0%, #eef1f5 100%);
      color: #2b3440;
      font-size: 12px;
      font-weight: 700;
      box-shadow: 0 8px 18px rgba(20, 25, 35, .06);
    }
    .tour-loader-cancel[hidden] {
      display: none !important;
    }
    .welcome-modal {
      position: fixed;
      inset: 0;
      z-index: 78;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 24px;
      /*background: rgba(251, 251, 251, 0.97);*/
      background: rgba(18, 24, 35, .67);
      opacity: 0;
      pointer-events: none;
      transition: opacity .22s ease;
    }
    .welcome-modal.is-open {
      opacity: 1;
      pointer-events: auto;
    }
    .welcome-modal-card {
      width: min(680px, 100%);
      display: grid;
      border-radius: 30px;
      background:
        radial-gradient(circle at top right, rgba(110,162,255,.08), transparent 28%),
        linear-gradient(180deg, #fcfcfd 0%, #f4f5f7 100%);
      border: 1px solid rgba(21,22,27,.06);
      box-shadow: 0 28px 70px rgba(20, 25, 35, .18);
      overflow: hidden;
    }
    .welcome-modal-step {
      display: none;
      min-width: 0;
    }
    .welcome-modal-step.is-active {
      display: grid;
    }
    .welcome-modal-step:not(.is-active) {
      display: none !important;
    }
    .welcome-modal-step.is-active {
      display: grid !important;
    }
    .welcome-modal-step-cover {
      align-items: start;
      padding: 0;
      overflow: hidden;
    }
    .welcome-modal-step-cover::after {
      display: none;
    }
    .welcome-modal-cover-image {
      display: block;
      width: 100%;
      height: auto;
      max-height: min(640px, calc(100vh - 120px));
      object-fit: contain;
      object-position: center;
    }
    .welcome-modal-cover-actions {
      display: flex;
      justify-content: center;
      align-items: center;
      gap: 12px;
      width: 100%;
      padding: 16px 26px 22px;
    }
    .welcome-modal-locale {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 56px;
      min-width: 56px;
      min-height: 56px;
      padding: 0;
      border-radius: 20px;
      background: rgba(255,255,255,.96);
      color: #2f3640;
      border: 1px solid rgba(21,22,27,.08);
      box-shadow: 0 12px 28px rgba(20, 25, 35, .12);
      font-size: 16px;
      font-weight: 800;
      flex: 0 0 auto;
    }
    .welcome-modal-locale .locale-pill-icon {
      width: 25px;
      height: 25px;
    }
    .welcome-modal-locale .locale-pill-icon svg {
      width: 25px;
      height: 25px;
    }
    .welcome-modal-continue {
      min-width: min(320px, calc(100% - 80px));
      min-height: 56px;
      padding: 0 28px;
      border-radius: 20px;
    }
    .welcome-modal-content {
      display: grid;
      gap: 14px;
      align-content: start;
      min-width: 0;
      padding: 24px 24px 22px;
    }
    .welcome-modal-hero {
      display: grid;
      gap: 18px;
      align-items: center;
    }
    .welcome-modal-copy {
      display: grid;
      gap: 14px;
      min-width: 0;
    }
    .welcome-modal-title {
      margin: 0;
      font-size: clamp(30px, 4vw, 44px);
      line-height: 1.02;
      letter-spacing: -.05em;
      font-weight: 900;
      color: #141922;
    }
    .welcome-modal-subtitle {
      color: #667085;
      font-size: 15px;
      line-height: 1.6;
    }
    .welcome-modal-caption {
      color: #141922;
      font-size: 14px;
      line-height: 1.45;
      font-weight: 800;
      letter-spacing: -.01em;
    }
    .welcome-modal-points {
      display: grid;
      gap: 8px;
      margin: 2px 0 4px;
    }
    .welcome-modal-point {
      display: flex;
      align-items: center;
      gap: 10px;
      color: #344054;
      font-size: 14px;
      line-height: 1.45;
      font-weight: 600;
    }
    .welcome-modal-point-badge {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 28px;
      height: 28px;
      border-radius: 10px;
      background: #fff7cf;
      border: 1px solid rgba(255, 216, 61, .28);
      flex: 0 0 auto;
    }
    .welcome-modal-button {
      min-height: 52px;
      padding: 0 22px;
      border-radius: 18px;
      justify-self: center;
    }
    .welcome-modal-note {
      color: #344054;
      font-size: 15px;
      line-height: 1.55;
      font-weight: 600;
    }
    .error-modal {
      position: fixed;
      inset: 0;
      z-index: 99;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 24px;
      background: rgba(18, 24, 35, .34);
      opacity: 0;
      pointer-events: none;
      transition: opacity .2s ease;
    }
    .error-modal.is-open {
      opacity: 1;
      pointer-events: auto;
    }
    .error-modal-card {
      width: min(420px, 100%);
      padding: 24px;
      border-radius: 28px;
      background: rgba(255,255,255,.98);
      border: 1px solid rgba(21,22,27,.06);
      box-shadow: 0 28px 70px rgba(20, 25, 35, .18);
      text-align: center;
    }
    .error-modal-icon {
      font-size: 36px;
      line-height: 1;
      margin-bottom: 12px;
    }
    .error-modal-title {
      font-size: 22px;
      line-height: 1.1;
      font-weight: 900;
      letter-spacing: -.03em;
      margin: 0 0 10px;
      color: #1f2937;
    }
    .error-modal-text {
      color: #5f6b7a;
      font-size: 14px;
      line-height: 1.5;
      margin: 0 0 18px;
    }
    .error-modal-button {
      min-height: 48px;
      min-width: 140px;
    }
    .profile-modal {
      position: fixed;
      inset: 0;
      z-index: 75;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 24px;
      background: rgba(18, 24, 35, .34);
      opacity: 0;
      pointer-events: none;
      transition: opacity .2s ease;
    }
    .profile-modal.is-open {
      opacity: 1;
      pointer-events: auto;
    }
    .profile-modal#hotelInfoModal {
      z-index: 91;
    }
    .profile-modal#flightDetailsModal {
      z-index: 91;
    }
    .profile-modal-card {
      width: min(1100px, 100%);
      max-height: min(86vh, 920px);
      overflow: hidden;
      display: flex;
      flex-direction: column;
      padding: 18px;
      border-radius: 26px;
      background: linear-gradient(180deg, #fbfbfc 0%, #f3f5f8 100%);
      border: 1px solid rgba(21,22,27,.06);
      box-shadow: 0 28px 70px rgba(20, 25, 35, .18);
    }
    .profile-modal-head {
      flex: 0 0 auto;
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 10px;
      margin-bottom: 12px;
    }
    .profile-modal-title {
      margin: 0;
      font-size: 22px;
      line-height: 1.08;
      font-weight: 900;
      letter-spacing: -.03em;
      color: #1f2937;
    }
    .profile-modal-subtitle {
      margin-top: 6px;
      color: #667085;
      font-size: 13px;
      line-height: 1.4;
    }
    .profile-modal-close {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 42px;
      min-width: 42px;
      height: 42px;
      padding: 0;
      border-radius: 14px;
      border: 1px solid rgba(112, 122, 138, .16);
      background: linear-gradient(180deg, #f0f2f5 0%, #e3e8ee 100%);
      box-shadow: 0 10px 22px rgba(20, 25, 35, .08);
      color: #2b3440;
      font-size: 18px;
      line-height: 1;
    }
    .profile-modal.tour-request-modal {
      z-index: 96;
      align-items: center;
      justify-content: center;
    }
    .tour-request-modal-card {
      width: min(520px, 100%);
      height: auto;
      min-height: 0;
      align-self: flex-end;
      max-height: min(84vh, 680px);
      padding: 0;
      border-radius: 28px;
      overflow: hidden;
      background: linear-gradient(180deg, #f7f9fc 0%, #eef2f7 100%);
    }
    .tour-request-modal-head {
      padding: 20px 20px 12px;
      margin-bottom: 0;
      background: rgba(255,255,255,.96);
      border-bottom: 1px solid rgba(21,22,27,.06);
    }
    .tour-request-modal-body {
      display: grid;
      gap: 14px;
      padding: 14px;
      overflow: auto;
    }
    .tour-request-section {
      padding: 16px;
      border-radius: 22px;
      background: rgba(255,255,255,.95);
      border: 1px solid rgba(21,22,27,.06);
      box-shadow: 0 12px 26px rgba(20, 25, 35, .05);
    }
    .tour-request-section-title {
      margin: 0 0 12px;
      font-size: 14px;
      line-height: 1.25;
      font-weight: 800;
      color: #1f2732;
    }
    .tour-request-fields {
      display: grid;
      gap: 12px;
    }
    .tour-request-field {
      display: grid;
      gap: 6px;
    }
    .tour-request-field-label {
      color: #8a93a2;
      font-size: 12px;
      line-height: 1.25;
      font-weight: 700;
    }
    .tour-request-input {
      width: 100%;
      min-height: 52px;
      padding: 0 16px;
      border-radius: 16px;
      border: 1px solid rgba(21,22,27,.08);
      background: #f4f7fb;
      color: #1f2732;
      font-size: 16px;
      line-height: 1.3;
      box-sizing: border-box;
    }
    .tour-request-input:focus {
      outline: none;
      border-color: rgba(90, 147, 240, .45);
      box-shadow: 0 0 0 4px rgba(90, 147, 240, .10);
      background: #ffffff;
    }
    .tour-request-input.is-invalid {
      border-color: rgba(220, 38, 38, .34);
      box-shadow: 0 0 0 4px rgba(220, 38, 38, .08);
      background: #fffafa;
    }
    .tour-request-modal-footer {
      padding: 6px 14px 16px;
    }
    .tour-request-submit-button {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 100%;
      min-height: 56px;
      padding: 0 20px;
      border: 0;
      border-radius: 18px;
      background: linear-gradient(180deg, #ffe57c 0%, #ffd63d 100%);
      color: #1c2026;
      box-shadow: 0 14px 28px rgba(255, 216, 61, .24);
      font-size: 16px;
      line-height: 1.2;
      font-weight: 800;
    }
    .tour-request-submit-button:disabled {
      background: linear-gradient(180deg, #e5e7eb 0%, #d1d5db 100%);
      color: #6b7280;
      box-shadow: none;
      cursor: not-allowed;
      opacity: 1;
    }
    .tour-modal-footer-actions {
      display: grid;
      gap: 8px;
      min-width: 0;
      width: 100%;
    }
    .tour-modal-consult-link {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-height: 34px;
      color: #2f69b3;
      font-size: 13px;
      line-height: 1.35;
      font-weight: 700;
      text-decoration: underline;
      text-underline-offset: 2px;
      text-align: center;
    }
    .tour-modal-consult-link:hover {
      text-decoration: underline;
    }
    .results-modal {
      position: fixed;
      inset: 0;
      z-index: 76;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 24px;
      background: rgba(18, 24, 35, .34);
      opacity: 0;
      pointer-events: none;
      transition: opacity .2s ease;
    }
    .results-modal.is-open {
      opacity: 1;
      pointer-events: auto;
    }
    .results-modal-card {
      width: min(1100px, 100%);
      height: min(86vh, 920px);
      max-height: min(86vh, 920px);
      overflow: hidden;
      position: relative;
      display: flex;
      flex-direction: column;
      padding: 18px 12px;
      border-radius: 26px;
      background: linear-gradient(180deg, #fbfbfc 0%, #f3f5f8 100%);
      border: 1px solid rgba(21,22,27,.06);
      box-shadow: 0 28px 70px rgba(20, 25, 35, .18);
    }
    .results-modal-head {
      flex: 0 0 auto;
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 10px;
      margin-bottom: 12px;
    }
    .results-modal-title {
      margin: 0;
      font-size: 22px;
      line-height: 1.08;
      font-weight: 900;
      letter-spacing: -.03em;
      color: #1f2937;
    }
    .results-modal-subtitle {
      margin-top: 6px;
      color: #667085;
      font-size: 13px;
      line-height: 1.4;
    }
    .results-modal-controls {
      display: flex;
      align-items: center;
      gap: 10px;
      flex: 0 0 auto;
      margin-right: 6px;
    }
    .results-modal-sorts {
      flex: 0 0 auto;
      display: flex;
      align-items: center;
      gap: 8px;
      flex-wrap: wrap;
      margin-bottom: 12px;
    }
    .results-sort-button {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      min-height: 34px;
      padding: 0 12px;
      border-radius: 999px;
      border: 1px solid rgba(21,22,27,.08);
      background: #ffffff;
      color: #475467;
      font-size: 13px;
      font-weight: 700;
      cursor: pointer;
      transition: background .18s ease, border-color .18s ease, color .18s ease, box-shadow .18s ease;
    }
    .results-sort-button:hover {
      background: #f8fafc;
      border-color: rgba(47, 105, 179, .2);
      color: #1f2937;
    }
    .results-sort-button.is-active {
      background: #eef4ff;
      border-color: rgba(47, 105, 179, .28);
      color: #2f69b3;
      box-shadow: 0 10px 20px rgba(47, 105, 179, .08);
    }
    .results-sort-arrow {
      font-size: 12px;
      line-height: 1;
    }
    .results-modal-body {
      flex: 1 1 auto;
      min-height: 0;
      overflow: auto;
      padding-right: 4px;
      padding-bottom: 92px;
    }
    .results-modal-floating-actions {
      position: absolute;
      left: 12px;
      right: 12px;
      bottom: calc(28px + env(safe-area-inset-bottom, 0px));
      display: flex;
      justify-content: center;
      pointer-events: none;
      z-index: 2;
      opacity: 1;
      transform: translateY(0);
      transition: opacity .22s ease, transform .22s ease;
      will-change: opacity, transform;
    }
    .results-modal-floating-actions[aria-hidden="true"] {
      opacity: 0;
      transform: translateY(14px);
      pointer-events: none !important;
    }
    .results-modal-floating-actions.is-scrolling {
      opacity: 0;
      transform: translateY(14px);
    }
    .results-modal-floating-actions .results-filter-button {
      pointer-events: auto;
      min-height: 50px;
      padding: 0 24px;
      font-size: 16px;
      font-weight: 800;
      border-radius: 999px;
      border-color: rgba(255, 216, 61, .58);
      box-shadow:
        0 20px 44px rgba(20, 25, 35, .22),
        0 8px 18px rgba(255, 216, 61, .2);
    }
    .favorites-toast {
      position: fixed;
      inset: 0;
      z-index: 92;
      opacity: 0;
      pointer-events: none;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 24px;
      background: rgba(18, 24, 35, .26);
      transition: opacity .2s ease;
    }
    .favorites-toast.is-open {
      opacity: 1;
      pointer-events: auto;
    }
    .favorites-toast-card {
      width: min(320px, calc(100vw - 48px));
      padding: 22px 24px;
      border-radius: 24px;
      background: rgba(255,255,255,.96);
      border: 1px solid rgba(21,22,27,.06);
      box-shadow: 0 24px 60px rgba(20, 25, 35, .16);
      text-align: center;
      color: #344054;
      font-size: 14px;
      font-weight: 700;
    }
    .favorites-toast-card svg {
      width: 44px;
      height: 44px;
      display: block;
      margin: 0 auto 14px;
      color: #bcc4cf;
      animation: favorite-heart-pulse 1.2s ease-in-out infinite;
    }
    .favorites-toast.is-open .favorites-toast-card svg {
      animation: favorite-heart-pulse 1.2s ease-in-out infinite, favorite-heart-fill 1.2s ease forwards;
    }
    .favorites-toast-card span {
      display: block;
      line-height: 1.4;
    }
    .request-success-toast-card svg {
      color: #8fb3a2;
      animation: request-check-pulse 1.1s ease-in-out infinite;
    }
    .request-success-toast.is-open .request-success-toast-card svg {
      animation: request-check-pulse 1.1s ease-in-out infinite, request-check-fill 1.1s ease forwards;
    }
    @keyframes favorite-heart-fill {
      0% {
        color: #bcc4cf;
      }
      100% {
        color: #d14f72;
      }
    }
    @keyframes favorite-heart-pulse {
      0%, 100% {
        transform: scale(1);
      }
      50% {
        transform: scale(1.12);
      }
    }
    @keyframes request-check-fill {
      0% {
        color: #b9c1cb;
      }
      100% {
        color: #33a05a;
      }
    }
    @keyframes request-check-pulse {
      0%, 100% {
        transform: scale(1);
      }
      50% {
        transform: scale(1.08);
      }
    }
    .profile-groups {
      flex: 1 1 auto;
      min-height: 0;
      overflow: auto;
      display: grid;
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap: 9px;
      padding-right: 4px;
    }
    .profile-group {
      padding: 12px 13px;
      border-radius: 18px;
      background: rgba(255,255,255,.88);
      border: 1px solid rgba(21,22,27,.06);
      box-shadow: 0 14px 30px rgba(20, 25, 35, .04);
    }
    .profile-group.full {
      grid-column: 1 / -1;
    }
    .profile-group-title {
      margin: 0 0 7px;
      color: #7b8494;
      font-size: 10px;
      line-height: 1.2;
      text-transform: uppercase;
      letter-spacing: .08em;
      font-weight: 800;
    }
    .profile-group-items {
      display: grid;
      gap: 7px;
    }
    .profile-group-item {
      display: grid;
      grid-template-columns: 26px minmax(0, 1fr);
      gap: 7px;
      align-items: center;
    }
    .profile-group-icon {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 26px;
      height: 26px;
      border-radius: 9px;
      background: #f5f7fa;
      border: 1px solid rgba(21,22,27,.05);
      font-size: 13px;
      line-height: 1;
    }
    .profile-group-label {
      color: #8a93a2;
      font-size: 10px;
      line-height: 1.2;
      margin-bottom: 1px;
    }
    .profile-group-value {
      color: #1f2732;
      font-size: 13px;
      line-height: 1.25;
      font-weight: 700;
      word-break: break-word;
    }
    .hotel-info-modal-card {
      width: min(1040px, 100%);
    }
    .hotel-info-modal-body {
      flex: 1 1 auto;
      min-height: 0;
      overflow: auto;
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 10px;
      padding-right: 4px;
    }
    .hotel-info-section {
      padding: 14px;
      border-radius: 18px;
      background: rgba(255,255,255,.9);
      border: 1px solid rgba(21,22,27,.06);
      box-shadow: 0 14px 30px rgba(20, 25, 35, .04);
    }
    .hotel-info-section--highlight {
      background: linear-gradient(135deg, #fff8d9 0%, #fff1b3 100%);
      border-color: rgba(230, 179, 32, .2);
      box-shadow: 0 18px 34px rgba(194, 152, 28, .12);
    }
    .hotel-info-section--positive {
      background: linear-gradient(180deg, #f4fff8 0%, #ecfbf2 100%);
      border-color: rgba(30, 147, 89, .14);
    }
    .hotel-info-section--negative {
      background: linear-gradient(180deg, #fff8f6 0%, #fff1ee 100%);
      border-color: rgba(210, 76, 53, .14);
    }
    .hotel-info-section--positive-soft {
      background: linear-gradient(180deg, #fbfffc 0%, #f3fbf6 100%);
      border-color: rgba(30, 147, 89, .1);
    }
    .hotel-info-section--negative-soft {
      background: linear-gradient(180deg, #fffdfc 0%, #fff6f3 100%);
      border-color: rgba(210, 76, 53, .1);
    }
    .hotel-info-section--nuances {
      background: linear-gradient(180deg, #f9fbff 0%, #f2f6fc 100%);
      border-color: rgba(77, 112, 180, .12);
    }
    .hotel-info-section.full {
      grid-column: 1 / -1;
    }
    .hotel-info-section-title {
      margin: 0 0 8px;
      color: #7b8494;
      font-size: 10px;
      line-height: 1.2;
      text-transform: uppercase;
      letter-spacing: .08em;
      font-weight: 800;
    }
    .hotel-info-section-text {
      color: #1f2732;
      font-size: 13px;
      line-height: 1.5;
    }
    .hotel-info-list {
      margin: 0;
      padding-left: 18px;
      color: #1f2732;
      font-size: 13px;
      line-height: 1.5;
      display: grid;
      gap: 6px;
    }
    .hotel-info-meta {
      display: grid;
      gap: 8px;
      margin-bottom: 8px;
    }
    .hotel-info-meta-item {
      display: grid;
      grid-template-columns: minmax(0, 1fr);
      gap: 2px;
    }
    .hotel-info-meta-label {
      color: #8a93a2;
      font-size: 10px;
      line-height: 1.2;
    }
    .hotel-info-meta-value {
      color: #1f2732;
      font-size: 13px;
      line-height: 1.25;
      font-weight: 700;
      word-break: break-word;
    }
    .hotel-info-meta-value--positive,
    .hotel-info-meta-value--neutral,
    .hotel-info-meta-value--negative {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: fit-content;
      min-height: 26px;
      padding: 4px 10px;
      border-radius: 999px;
      border: 1px solid transparent;
    }
    .hotel-info-meta-value--positive {
      background: #eaf8ef;
      border-color: rgba(30, 147, 89, .14);
      color: #1d7f4b;
    }
    .hotel-info-meta-value--neutral {
      background: #fff6dc;
      border-color: rgba(217, 160, 34, .16);
      color: #8a5a00;
    }
    .hotel-info-meta-value--negative {
      background: #fff0eb;
      border-color: rgba(210, 76, 53, .16);
      color: #ba3a1f;
    }
    .flight-details-modal-card {
      width: min(1040px, 100%);
    }
    .flight-details-modal-body {
      flex: 1 1 auto;
      min-height: 0;
      overflow: auto;
      display: grid;
      grid-template-columns: 1fr;
      gap: 12px;
      padding-right: 4px;
    }
    .flight-option {
      padding: 14px;
      border-radius: 18px;
      background: rgba(255,255,255,.9);
      border: 1px solid rgba(21,22,27,.06);
      box-shadow: 0 14px 30px rgba(20, 25, 35, .04);
    }
    .flight-option-head {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
      margin-bottom: 12px;
    }
    .flight-option-title {
      margin: 0;
      font-size: 16px;
      line-height: 1.2;
      font-weight: 900;
      color: #1f2937;
    }
    .flight-option-badge {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-height: 28px;
      padding: 0 10px;
      border-radius: 999px;
      background: linear-gradient(180deg, #fff8d9 0%, #fff1b3 100%);
      border: 1px solid rgba(230, 179, 32, .18);
      color: #8a5a00;
      font-size: 12px;
      font-weight: 800;
      white-space: nowrap;
    }
    .flight-option-price {
      margin-bottom: 12px;
      padding: 12px 14px;
      border-radius: 16px;
      background: linear-gradient(180deg, #f7f9fc 0%, #eff3f8 100%);
      border: 1px solid rgba(21,22,27,.05);
    }
    .flight-option-price-main {
      color: #1f2937;
      font-size: 20px;
      line-height: 1.1;
      font-weight: 900;
      letter-spacing: -.02em;
    }
    .flight-option-price-local {
      margin-top: 4px;
      color: #5f6b7c;
      font-size: 14px;
      line-height: 1.3;
      font-weight: 700;
    }
    .flight-option-price-note {
      margin-top: 6px;
      color: #7d8795;
      font-size: 12px;
      line-height: 1.4;
    }
    .flight-direction + .flight-direction {
      margin-top: 14px;
    }
    .flight-direction-head {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
      margin-bottom: 8px;
    }
    .flight-direction-title {
      margin: 0;
      font-size: 13px;
      line-height: 1.2;
      font-weight: 900;
      letter-spacing: .04em;
      text-transform: uppercase;
      color: #596273;
    }
    .flight-direction-date {
      color: #8a93a2;
      font-size: 12px;
      line-height: 1.3;
      font-weight: 700;
    }
    .flight-direction-list {
      display: grid;
      gap: 10px;
    }
    .flight-segment {
      padding: 12px;
      border-radius: 16px;
      background: linear-gradient(180deg, #fafbfd 0%, #f2f5f9 100%);
      border: 1px solid rgba(21,22,27,.05);
    }
    .flight-segment-route {
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
      gap: 10px;
      align-items: center;
    }
    .flight-segment-point {
      min-width: 0;
    }
    .flight-segment-time {
      color: #1f2937;
      font-size: 14px;
      line-height: 1.3;
      font-weight: 900;
    }
    .flight-segment-airport {
      margin-top: 4px;
      color: #667085;
      font-size: 12px;
      line-height: 1.35;
    }
    .flight-segment-arrow {
      color: #93a0b3;
      font-size: 20px;
      line-height: 1;
      font-weight: 700;
    }
    .flight-segment-meta {
      display: grid;
      grid-template-columns: repeat(4, minmax(0, 1fr));
      gap: 8px;
      margin-top: 12px;
    }
    .flight-segment-meta-item {
      padding: 9px 10px;
      border-radius: 12px;
      background: rgba(255,255,255,.84);
      border: 1px solid rgba(21,22,27,.05);
    }
    .flight-segment-meta-label {
      color: #8a93a2;
      font-size: 10px;
      line-height: 1.2;
      text-transform: uppercase;
      letter-spacing: .05em;
      font-weight: 800;
    }
    .flight-segment-meta-value {
      margin-top: 4px;
      color: #1f2732;
      font-size: 12px;
      line-height: 1.35;
      font-weight: 700;
      word-break: break-word;
    }
    .flight-empty-state {
      padding: 22px 16px;
      border-radius: 18px;
      background: rgba(255,255,255,.88);
      border: 1px solid rgba(21,22,27,.06);
      color: #667085;
      font-size: 14px;
      line-height: 1.45;
      text-align: center;
      box-shadow: 0 14px 30px rgba(20, 25, 35, .04);
    }
    @media (max-width: 1180px) {
      .profile-groups {
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }
      .hotel-info-modal-body {
        grid-template-columns: 1fr;
      }
      .flight-segment-meta {
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }
    }
    @keyframes tour-spin {
      to {
        transform: rotate(360deg);
      }
    }
    body.modal-open {
      overflow: hidden;
    }
    @media (max-width: 980px) {
      .profile-modal.tour-request-modal {
        align-items: flex-end;
        justify-content: center;
      }
      .tour-request-modal-card {
        width: min(520px, 100%);
        height: auto !important;
        min-height: 0;
        max-height: min(calc(88vh - 8px), 640px);
        max-height: min(calc(88dvh - 8px), 640px);
      }
      .topbar {
        padding: 12px 18px;
        gap: 12px;
        position: relative;
      }
      .locale-pill {
        width: 44px;
        min-width: 44px;
        height: 44px;
        padding: 0;
        border-radius: 14px;
        font-size: 14px;
      }
      .language-modal {
        align-items: flex-end;
        padding: 12px;
      }
      .language-modal-card {
        width: min(560px, 100%);
        border-radius: 28px 28px 24px 24px;
      }
      .language-modal-head {
        padding: 16px 16px 12px;
      }
      .language-modal-title {
        font-size: 20px;
      }
      .language-modal-body {
        padding: 0 16px 16px;
      }
      .language-option-button {
        min-height: 54px;
        padding: 0 16px;
        font-size: 16px;
      }
      .header-actions {
        gap: 8px;
        flex-wrap: nowrap;
        justify-content: flex-end;
        min-width: 0;
      }
      .header-search-reply-button {
        min-height: 36px;
        padding: 0 10px;
        font-size: 13px;
        flex: 0 0 auto;
      }
      .header-actions .locale-pill {
        display: none;
      }
      .burger-button {
        display: inline-flex;
      }
      .header-chip {
        height: 44px;
        min-width: 44px;
        padding: 0 12px;
        border-radius: 14px;
        font-size: 14px;
      }
      .brand {
        gap: 10px;
        min-width: 0;
      }
      .wrap { padding: 28px 4px 42px; }
      .hero {
        display: none;
      }
      .chat {
        min-height: 560px;
      }
      .header {
        padding: 20px 20px;
      }
      .messages {
        padding: 18px;
        overflow-x: hidden;
      }
      .quick-replies {
        width: 100%;
        max-width: 100%;
        flex-wrap: nowrap;
        overflow-x: auto;
        overflow-y: hidden;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
        -ms-overflow-style: none;
        padding-bottom: 2px;
        overscroll-behavior-x: contain;
      }
      .quick-replies::-webkit-scrollbar {
        display: none;
      }
      .quick-reply {
        flex: 0 0 auto;
        white-space: nowrap;
      }
      .chat-progress {
        padding: 0 18px;
      }
      .composer {
        grid-template-columns: minmax(0, 1fr) auto;
        padding: 0px 16px 14px;
        align-items: center;
      }
      .tour-card {
        grid-template-columns: 72px minmax(0, 1fr) minmax(0, max-content);
        grid-template-areas:
          "title title title"
          "image body price"
          "summary summary summary"
          "variants variants variants";
      }
      .tour-card img { width: 72px; height: 72px; }
      .tour-price {
        text-align: right;
        min-width: 0;
        max-width: 100%;
        padding-left: 6px;
        padding-right: 2px;
      }
      .tour-modal-sections {
        grid-template-columns: 1fr;
      }
      .tour-modal-section-content {
        grid-template-columns: 1fr;
      }
      .tour-modal-map {
        height: 220px;
      }
      .tour-modal-section-actions {
        justify-content: flex-start;
      }
      .tour-modal-groups {
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }
      .tour-modal-group-wide {
        grid-column: auto;
      }
      .tour-modal-group-wide .tour-modal-group-items {
        grid-template-columns: 1fr;
        gap: 10px;
      }
      .tour-modal-sections {
        grid-template-columns: 1fr;
      }
      #btnSend {
        height: 52px;
        min-height: 52px;
        white-space: nowrap;
      }
      .message-block {
        max-width: 100%;
      }
      .msg {
        padding: 4px 18px;
        font-size: 15px;
      }
      .tour-modal,
      .filter-modal,
      .profile-modal,
      .results-modal,
      .welcome-modal,
      .error-modal,
      .photo-viewer {
        padding:
          max(4px, env(safe-area-inset-top))
          max(4px, env(safe-area-inset-right))
          max(4px, env(safe-area-inset-bottom))
          max(4px, env(safe-area-inset-left));
      }
      .tour-modal-panel,
      .filter-modal-card,
      .profile-modal-card,
      .results-modal-card,
      .photo-viewer-panel {
        width: 100%;
        max-width: 100%;
        height: 100%;
        max-height: 100%;
        box-sizing: border-box;
      }
      .photo-viewer-panel {
        display: flex;
        flex-direction: column;
        justify-content: center;
      }
      .photo-viewer-main {
        flex: 0 1 auto;
        min-height: 0;
      }
      .filter-modal-body {
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }
      .results-modal-sorts {
        gap: 6px;
        margin-bottom: 10px;
      }
      .results-modal-controls {
        margin-right: 4px;
        margin-top: -2px;
      }
      .results-sort-button {
        min-height: 32px;
        padding: 0 10px;
        font-size: 12px;
      }
      .results-modal-body {
        padding-bottom: 88px;
      }
      .results-modal-floating-actions {
        left: 10px;
        right: 10px;
        bottom: calc(24px + env(safe-area-inset-bottom, 0px));
      }
      .welcome-modal-card {
        width: min(680px, 100%);
      }
      .welcome-modal-content {
        padding: 20px 18px;
      }
      .welcome-modal-cover-image {
        max-height: calc(100vh - 8px);
      }
      .welcome-modal-cover-actions {
        padding: 16px 18px 18px;
      }
    }
    @media (max-width: 560px) {
      .profile-modal.tour-request-modal {
        padding: 8px;
      }
      .tour-request-modal-card {
        width: 100%;
        height: auto !important;
        min-height: 0;
        max-height: min(calc(88vh - 8px), 620px);
        max-height: min(calc(88dvh - 8px), 620px);
        border-radius: 24px;
      }
      .tour-request-modal-head {
        padding: 16px 16px 10px;
      }
      .tour-request-modal-body {
        padding: 12px;
      }
      .tour-request-section {
        padding: 14px;
        border-radius: 18px;
      }
      .tour-request-modal-footer {
        padding: 4px 12px 14px;
      }
      .tour-card {
        grid-template-columns: 64px minmax(0, 1fr) minmax(0, max-content);
        gap: 8px;
        padding: 12px 8px;
      }
      .tour-card img {
        width: 64px;
        height: 64px;
        border-radius: 12px;
      }
      .tour-price {
        min-width: 0;
        max-width: 100%;
        padding-left: 6px;
        padding-right: 2px;
      }
      .tour-price-from {
        font-size: 10px;
      }
      .tour-price-value {
        font-size: 22px;
      }
      .tour-price-local,
      .tour-price-note {
        font-size: 11px;
      }
      .tour-location,
      .tour-route {
        font-size: 13px;
        margin-bottom: 4px;
      }
      .tour-summary {
        gap: 6px;
      }
      .tour-badge {
        min-height: 26px;
        padding: 3px 7px;
        font-size: 11px;
      }
      .tour-variant-groups {
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }
      .tour-variant-group.tourists {
        grid-column: 1 / -1;
      }
      .tour-variant-group.tourists .tour-variant-group-items {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 8px;
      }
      .tour-variant-group.tourists .tour-variant-group-item {
        grid-template-columns: 16px minmax(0, 1fr);
        gap: 5px;
      }
      .tour-variant-group.tourists .tour-variant-group-value {
        font-size: 11px;
      }
      .tour-share-button,
      .tour-favorite-button {
        width: 34px;
        min-width: 34px;
        height: 34px;
        border-radius: 12px;
      }
      .tour-flights-button {
        min-height: 34px;
        height: 34px;
        padding: 0 12px;
        border-radius: 12px;
        gap: 6px;
        font-size: 12px;
      }
      .tour-card .tour-share-button img,
      .tour-card .tour-share-button span,
      .tour-card .tour-flights-button svg,
      .tour-card .tour-favorite-button svg {
        width: 16px;
        height: 16px;
        border-radius: 0;
        object-fit: contain;
      }
      #btnSend {
        min-width: 48px;
        height: 48px;
        min-height: 48px;
        padding: 0 12px;
        font-size: 0;
      }
      #btnSend::before {
        content: '➤';
        font-size: 18px;
        line-height: 1;
      }
      #messageInput {
        min-height: 48px;
        max-height: 48px;
        padding: 5px 16px;
        font-size: 15px;
        line-height: 1.25;
      }
      .brand-mark {
        height: 24px;
      }
      .brand-mark img {
        height: 24px;
        max-width: 118px;
      }
      .brand-text {
        font-size: 16px;
      }
      .welcome-modal-card {
        padding: 0px;
      }
      .welcome-modal-subtitle {
        font-size: 14px;
      }
      .welcome-modal-point {
        font-size: 13px;
      }
      .welcome-modal-button {
        width: 100%;
      }
      .tour-modal {
        padding: 4px;
      }
      .tour-modal-header,
      .tour-modal-body {
        padding: 16px;
      }
      .tour-modal-body {
        padding-bottom: 104px;
      }
      .tour-modal-footer {
        padding: 12px 16px 5px;
      }
      .tour-modal-group {
        padding: 14px;
      }
      .tour-modal-group-price-head {
        flex-wrap: wrap;
        align-items: flex-start;
      }
      .tour-modal-flights-button {
        min-height: 32px;
        height: 32px;
      }
      .tour-modal-body {
        padding: 0 16px 104px;
      }
      .tour-modal-thumbs {
        grid-template-columns: repeat(3, minmax(0, 1fr));
      }
      .tour-review-head {
        flex-direction: column;
        align-items: flex-start;
      }
      .tour-modal-thumb {
        aspect-ratio: 1;
      }
      .tour-modal-thumb.featured {
        grid-column: span 1;
        aspect-ratio: 1;
        border-radius: 16px;
      }
      .tour-modal-groups {
        grid-template-columns: 1fr;
        gap: 10px;
      }
      .tour-modal-group-wide {
        grid-column: auto;
      }
      .tour-modal-group-wide .tour-modal-group-items {
        grid-template-columns: 1fr;
        gap: 10px;
      }
      .tour-modal-card {
        padding: 16px;
      }
      .tour-modal-gallery {
        gap: 8px;
      }
      .photo-viewer {
        padding: 12px;
      }
      .photo-viewer-panel {
        max-width: calc(100vw - 24px);
        max-height: calc(100vh - 24px);
      }
      .photo-viewer-main {
        flex: 0 1 auto;
      }
      .photo-viewer-main .splide__track,
      .photo-viewer-main .splide__list,
      .photo-viewer-main .splide__slide {
        height: auto;
      }
      .photo-viewer-main .splide__track {
        border-radius: 22px;
      }
      .photo-viewer-main .splide__slide {
        min-height: 0;
        max-height: calc(100vh - 220px);
      }
      .photo-viewer-main .splide__slide img {
        max-height: calc(100vh - 228px);
      }
      .photo-viewer-close,
      .photo-viewer-main .splide__arrow {
        width: 42px;
        height: 42px;
        min-width: 42px;
        min-height: 42px;
        border-radius: 14px;
      }
      .photo-viewer-close {
        top: 16px;
        right: 8px;
      }
      .photo-viewer-main .splide__arrow--prev {
        left: 12px;
      }
      .photo-viewer-main .splide__arrow--next {
        right: 12px;
      }
      .filter-modal {
        padding: 4px;
      }
      .filter-modal-card {
        padding: 16px;
        max-height: calc(100vh - 24px);
      }
      .filter-modal-body {
        grid-template-columns: repeat(1, minmax(0, 1fr));
      }
      .profile-modal {
        padding: 4px;
      }
      .profile-modal-card {
        padding: 16px;
        max-height: calc(100vh - 24px);
      }
      .tour-request-modal {
        padding: 8px;
      }
      .tour-request-modal-card {
        padding: 0;
        height: auto !important;
        min-height: 0;
        max-height: min(calc(88vh - 8px), 620px);
        max-height: min(calc(88dvh - 8px), 620px);
      }
      .tour-request-modal-head {
        padding: 16px 16px 12px;
      }
      .profile-groups {
        grid-template-columns: 1fr;
      }
      .hotel-info-modal-body {
        grid-template-columns: 1fr;
      }
      .flight-option {
        padding: 12px;
      }
      .flight-segment-route {
        grid-template-columns: 1fr;
      }
      .flight-segment-arrow {
        display: none;
      }
      .flight-segment-meta {
        grid-template-columns: 1fr;
      }
      .tour-description {
        grid-template-columns: 1fr;
      }
      .tour-description-meta {
        align-items: flex-start;
      }
      .tour-category-badges {
        justify-content: flex-start;
      }
      .tour-description-action {
        width: 100%;
      }
    }
    @media (max-width: 430px) {
      .tour-variant-groups {
        grid-template-columns: 1fr;
      }
      .tour-variant-group.tourists .tour-variant-group-items {
        grid-template-columns: 1fr;
      }
      .filter-modal-body {
        grid-template-columns: repeat(1, minmax(0, 1fr));
      }
    }
