/* ─────────────────────────────────────────────────────────────────────────────
   Trang /search-combo (kết quả tìm combo). Gộp 3 khối <style> inline của
   search_combo.php theo ĐÚNG thứ tự DOM cũ (block 0 → 1 → 2) để cascade không đổi.
   Tách 2026-08-03. Selector prefix .cmb-* / .cbx-*.
   ───────────────────────────────────────────────────────────────────────────── */

.wrapCont { background: #f7f8fa; padding: 20px 0 60px; }

/* ── Thanh search tóm tắt trên đầu - khớp .hsr-editpanel ── */
.cmb-searchbar {
    display: flex; align-items: center; gap: 18px; flex-wrap: wrap;
    background: #fff; border: 1px solid #ececec; border-radius: 10px;
    box-shadow: 0 2px 8px rgba(0,0,0,.04);
    padding: 14px 18px; margin-bottom: 18px;
}
.cmb-sb-route { display: flex; align-items: center; gap: 12px; min-width: 0; }
.cmb-sb-route-main { min-width: 0; }
.cmb-sb-codes { display: flex; align-items: center; gap: 10px; font-size: 18px; font-weight: 800; color: #0f172a; line-height: 1.2; }
.cmb-sb-codes i { color: #ed007f; font-size: 15px; }
/* Tuyến chưa đủ điểm đi/đến: hàng mã IATA nhường chỗ cho một dòng chữ "Chưa chọn…" → cỡ nhỏ
   hơn mã và cho bọc dòng (display:block để chữ wrap bình thường, không phải flex item). */
.cmb-sb-codes--todo { display: block; font-size: 15px; font-weight: 700; line-height: 1.3; }
.cmb-sb-cities { font-size: 12.5px; color: #64748b; margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cmb-sb-chips { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; flex: 1; padding-left: 18px; border-left: 1px solid #f0f0f0; }
.cmb-sb-chip {
    display: inline-flex; align-items: center; gap: 6px;
    background: #f7f8fa; border: 1px solid #eef0f3; border-radius: 8px;
    padding: 7px 12px; font-size: 13px; font-weight: 600; color: #334155;
}
.cmb-sb-chip i { color: #ed007f; font-size: 13px; }
.cmb-sb-edit {
    display: inline-flex; align-items: center; gap: 7px; flex-shrink: 0;
    /* Ở "combo giá tốt" .cmb-sb-chips (flex:1) không render → không còn gì đẩy nút sang phải,
       nút sẽ dính ngay sau tên tuyến. margin-left:auto lo cả 2 trường hợp: có chips thì chips
       đã ăn hết khoảng trống nên auto = 0. */
    margin-left: auto;
    height: 42px; padding: 0 20px; border: 0; border-radius: 10px; cursor: pointer;
    background: #ed007f; color: #fff; font-size: 14px; font-weight: 700;
    font-family: inherit; text-decoration: none; transition: background .15s;
}
.cmb-sb-edit:hover { background: #b81e7a; color: #fff; text-decoration: none; }
.cmb-sb-caret { font-size: 13px; transition: transform .2s; }
.cmb-sb-edit.open .cmb-sb-caret { transform: rotate(180deg); }

/* ── Form sửa tìm kiếm (collapsible) ── */
.cmb-editwrap { display: none; margin-bottom: 18px; }
.cmb-editwrap.open { display: block; animation: cmbDrop .18s ease; }
@keyframes cmbDrop { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: translateY(0); } }
.cmb-editwrap .local-search-box { border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,.04); border: 1px solid #ececec; }
.cmb-editwrap .ls-fields { flex-wrap: wrap; }
/* Combo tự chọn: ép xuống hàng mới cho khối khách sạn (địa điểm + nhận/trả phòng) */
.cmb-editwrap .cmb-row-break { flex-basis: 100%; width: 0; height: 0; margin: 0; padding: 0; }
.cmb-editwrap #cmbHotelLoc { width: 100%; height: 40px; border: 1px solid #e2e8f0; border-radius: 10px; padding: 0 12px; font-size: 14px; font-family: inherit; }
.cmb-editwrap #cmbHotelLoc:focus { outline: none; border-color: #ed007f; }

/* ── Khách & phòng popover ── */
.cmb-pax { position: relative; width: 100%; }
.cmb-pax-trigger {
    display: flex; align-items: center; justify-content: space-between; gap: 8px;
    width: 100%; height: 40px; padding: 0 12px;
    border: 1.5px solid #ddd; border-radius: 8px; background: #fff;
    font-size: 14px; font-weight: 600; color: #333; font-family: inherit; cursor: pointer;
    transition: border-color .15s; white-space: nowrap; overflow: hidden;
}
.cmb-pax-trigger:hover, .cmb-pax.open .cmb-pax-trigger { border-color: #ed007f; }
.cmb-pax-trigger i { color: #888; flex-shrink: 0; transition: transform .2s; }
.cmb-pax.open .cmb-pax-trigger i { transform: rotate(180deg); color: #ed007f; }
.cmb-pax-pop {
    display: none; position: absolute; top: calc(100% + 6px); right: 0;
    width: 280px; background: #fff; border: 1px solid #e2e8f0; border-radius: 10px;
    box-shadow: 0 10px 28px rgba(0,0,0,.14); padding: 8px 14px 14px; z-index: 120;
}
.cmb-pax.open .cmb-pax-pop { display: block; }
.cmb-pax-row { display: flex; align-items: center; justify-content: space-between; padding: 11px 0; border-bottom: 1px solid #f1f5f9; }
.cmb-pax-row:last-of-type { border-bottom: none; }
.cmb-pax-lbl { font-size: 14px; font-weight: 600; color: #1f2937; display: flex; flex-direction: column; }
.cmb-pax-lbl small { font-size: 11px; font-weight: 400; color: #94a3b8; margin-top: 1px; }
.cmb-step { display: inline-flex; align-items: center; gap: 12px; }
.cmb-step button {
    width: 30px; height: 30px; border-radius: 50%; border: 1.5px solid #ed007f;
    background: #fff; color: #ed007f; font-size: 18px; line-height: 1; cursor: pointer;
    display: inline-flex; align-items: center; justify-content: center; transition: all .12s;
}
.cmb-step button:hover { background: #ed007f; color: #fff; }
.cmb-step button:disabled { border-color: #e2e8f0; color: #cbd5e1; cursor: not-allowed; background: #fff; }
.cmb-step span { min-width: 18px; text-align: center; font-weight: 700; font-size: 15px; color: #0f172a; }
.cmb-pax-done {
    width: 100%; margin-top: 12px; height: 40px; border: 0; border-radius: 8px;
    background: #ed007f; color: #fff; font-size: 14px; font-weight: 700; cursor: pointer; font-family: inherit;
}
.cmb-pax-done:hover { background: #b81e7a; }

@media (max-width: 767px) {
    /* 2026-07-23: THU GỌN thanh tóm tắt trên mobile — trước đây mỗi thông tin 1 hàng đầy chiều
       rộng (route + 4 hàng chip + nút) chiếm gần nửa màn, đẩy danh sách vé xuống dưới. Nay: route
       1 dòng gọn + các chip xếp INLINE bọc dòng (không còn hàng riêng có gạch chia), nút "Đổi
       tìm kiếm" cùng hàng route để tiết kiệm chiều cao.
       2026-10-04: đổi flex-wrap → GRID 2 cột. Với flex-wrap, vị trí từng khối phụ thuộc BỀ RỘNG
       CHỮ của tuyến: tên dài (vd "Hồ Chí Minh → Kuala Lumpur") là nút rớt xuống hàng 2 rồi dính
       ngang với cụm chip (chip có flex:1 → flex-basis 0 nên chen vừa cạnh nút), chip ngày bị bóp
       gãy 2 dòng. Grid ghim cứng: hàng 1 = tuyến | nút, hàng 2 = chip trọn bề ngang; tên tuyến
       dài thì cắt "…" chứ không xô lệch bố cục. */
    .cmb-searchbar {
        display: grid; grid-template-columns: minmax(0, 1fr) auto;
        align-items: center; gap: 8px 10px; padding: 10px 14px; margin-bottom: 12px;
    }
    .cmb-sb-route { grid-column: 1; grid-row: 1; padding: 0; border: 0; }
    .cmb-sb-codes { font-size: 16px; }
    .cmb-sb-codes--todo { font-size: 14px; }
    .cmb-sb-cities { font-size: 11.5px; margin-top: 1px; }
    .cmb-sb-chips {
        grid-column: 1 / -1; grid-row: 2; min-width: 0;
        flex-direction: row; flex-wrap: wrap; align-items: center;
        padding-left: 0; border-left: 0; gap: 6px;
    }
    .cmb-sb-chip {
        width: auto; background: #f7f8fa; border: 1px solid #eef0f3; border-radius: 999px;
        padding: 5px 10px; font-size: 12px; white-space: nowrap;
    }
    .cmb-sb-chip i { width: auto; font-size: 11.5px; }
    /* Nút "Đổi tìm kiếm" thu nhỏ, nằm góc phải cùng hàng route (không chiếm nguyên 1 hàng). */
    .cmb-sb-edit { grid-column: 2; grid-row: 1; width: auto; height: 34px; padding: 0 14px; font-size: 12.5px; margin: 0; border-radius: 8px; white-space: nowrap; }
    .cmb-editwrap .ls-fields { flex-direction: column; align-items: stretch; }
    .cmb-pax-pop { left: 0; right: auto; width: 100%; }
}

/* Breadcrumb - khớp .hsr-breadcrumb */
.vnt-main-top { background: transparent; margin-bottom: 8px !important; }
.vnt-main-top .breadcrumb { background: transparent; padding: 0; border: none; }
.vnt-main-top .navation ul { padding: 10px 0; margin: 0; list-style: none; display: flex; flex-wrap: wrap; align-items: center; }
.vnt-main-top .navation li { font-size: 13px; color: #64748b; display: inline-flex; align-items: center; }
.vnt-main-top .navation li + li::before { content: '›'; margin: 0 6px; color: #cbd5e1; font-size: 14px; }
.vnt-main-top .navation a { color: #64748b; text-decoration: none; transition: color .15s; }
.vnt-main-top .navation a:hover { color: #ed007f; text-decoration: underline; }
.vnt-main-top .navation li:last-child a { color: #1f2937; font-weight: 600; }
.vnt-main-top .navation li:last-child a:hover { text-decoration: none; }

/* 2-col layout - khớp .hsr-body (sidebar 280px + content) */
.flights-result-value { display: grid; grid-template-columns: 280px 1fr; gap: 18px; align-items: start; }
@media (max-width: 991px) { .flights-result-value { grid-template-columns: 1fr; } }

/* ── Sidebar filter - khớp .hsr-filter-card ── */
.hotel-filters {
    background: #fff;
    border: 1px solid #ececec;
    border-radius: 10px;
    box-shadow: 0 2px 8px rgba(0,0,0,.04);
    padding: 0;
    position: sticky;
    top: 90px;
    width: auto !important;
    overflow: hidden;
}
.hotel-filters .sidebar-filter { padding: 0; }
/* Header "Bộ lọc" - chữ thường trên nền trắng + viền dưới, khớp .hsr-filter-header-row trang KS */
.hotel-filters .sidebar-filter::before {
    content: 'Bộ lọc';
    display: block;
    font-size: 15px; font-weight: 700; color: #1a1a1a;
    letter-spacing: .3px;
    padding: 14px 18px 12px;
    border-bottom: 1px solid #f0f0f0;
    background: #fff;
}
.hotel-filters .sidebar-item { padding: 16px 18px; margin: 0; border-bottom: 1px solid #f0f0f0; }
.hotel-filters .sidebar-item:last-child { border-bottom: none; }
/* Tiêu đề mục ("Hạng sao", "Đánh giá của khách hàng") - khớp .hsr-filter-section .head h4 */
.hotel-filters .title-sidebar { font-size: 15px; font-weight: 700; color: #000; margin-bottom: 14px; display: block; }

/* Hotel name search - khớp .hsr-field input */
.search-box-hotel { position: relative; }
.search-box-hotel input[type="text"] {
    width: 100%; height: 44px;
    border: 1px solid #e2e8f0; border-radius: 10px;
    padding: 0 44px 0 12px;
    font-size: 14px; font-family: inherit; color: #0f172a;
    background: #fff; transition: border-color .15s, box-shadow .15s;
}
.search-box-hotel input[type="text"]::placeholder { color: #94a3b8; }
.search-box-hotel input[type="text"]:focus { outline: none; border-color: #ed007f; box-shadow: 0 0 0 3px rgba(214,36,140,.12); }
.search-box-hotel a {
    position: absolute; right: 5px; top: 50%; transform: translateY(-50%);
    width: 34px; height: 34px;
    display: flex; align-items: center; justify-content: center;
    color: #94a3b8; border-radius: 8px;
    transition: all .15s;
}
.search-box-hotel a:hover { color: #fff; background: #ed007f; }

/* Filter rows (star + score) - khớp .hsr-check / .hsr-stars-row */
.hotel-filters .item-filter-hotel { margin: 0; }
.hotel-filters .item-filter-hotel > label {
    display: flex !important; align-items: center; gap: 8px;
    cursor: pointer; padding: 6px 0; margin: 0;
    font-weight: 400; color: #374151; font-size: 14px; transition: color .12s;
}
.hotel-filters .item-filter-hotel > label > label { margin: 0; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; flex: 1; }
.hotel-filters .item-filter-hotel > label:hover { color: #ed007f; }
.hotel-filters .item-filter-hotel input[type="checkbox"],
.hotel-filters .item-filter-hotel input[type="radio"] {
    accent-color: #ed007f;
    width: 16px; height: 16px; cursor: pointer; flex-shrink: 0; margin: 0;
}
.hotel-filters .item-filter-hotel .star { color: #ff9800; font-size: 14px; letter-spacing: 1px; }
.hotel-filters .item-filter-hotel.filter-radio b {
    color: #ed007f; font-weight: 700; min-width: 28px;
    display: inline-block; font-size: 14px;
}

/* ── Result panels (flight + hotel) - khớp card token hệ thống ── */
.flights-list-content { min-width: 0; }
.loading-flight, .loading-hotel {
    background: #fff;
    border: 1px solid #ececec;
    border-radius: 10px;
    box-shadow: 0 2px 8px rgba(0,0,0,.04);
    padding: 0;
    margin-bottom: 18px;
    overflow: hidden;
}

/* Section header - "Vé máy bay đã chọn", "Khách sạn (X đêm)" */
.label-box-combo {
    display: flex !important; align-items: center; gap: 12px;
    padding: 16px 20px;
    margin: 0;
    border-bottom: 1px solid #f0f0f0;
    font-size: 16px; font-weight: 700; color: #0f172a;
    flex-wrap: wrap; line-height: 1.4;
}
.icon-box-combo {
    width: 38px; height: 38px;
    border-radius: 10px;
    background: #fdf0f7; color: #ed007f;
    display: inline-flex; align-items: center; justify-content: center;
    flex-shrink: 0; margin: 0;
}
.icon-box-combo svg { width: 18px; height: 18px; fill: currentColor; }
.label-box-combo .fa-calendar-days { color: #cbd5e1; margin-left: auto; font-size: 14px; font-weight: 400; }
.label-box-combo > span:last-child { font-weight: 600; color: #64748b; font-size: 13.5px; }

/* Vùng nội dung (loading + kết quả render bởi JS) */
.flight-selected, .list-hotel { padding: 18px 20px; margin: 0; }

/* ── Skeleton loader on-brand (thay 2 gif cũ flight-process/loading-hotel) ── */
/* Empty div .loading-*-combo tự vẽ 1 card skeleton: thumb + 3 dòng + shimmer sweep */
.loading-flight-combo, .loading-hotel-combo {
    width: 100%; height: 100px; float: none; margin: 0;
    border: 1px solid #f0f0f0; border-radius: 10px;
    background-color: #fff; position: relative; overflow: hidden;
    background-image:
        linear-gradient(#eef1f5 100%, transparent 0),
        linear-gradient(#eef1f5 13px, transparent 0),
        linear-gradient(#eef1f5 13px, transparent 0),
        linear-gradient(#eef1f5 13px, transparent 0);
    background-repeat: no-repeat;
    background-size: 76px 68px, 200px 13px, 130px 13px, 90px 13px;
    background-position: 16px 16px, 108px 20px, 108px 47px, 108px 74px;
}
.loading-hotel-combo + .loading-hotel-combo,
.loading-flight-combo + .loading-flight-combo { margin-top: 12px; }
.loading-flight-combo::after, .loading-hotel-combo::after {
    content: ''; position: absolute; inset: 0;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,.65), transparent);
    transform: translateX(-100%); animation: cmbShimmer 1.25s infinite;
}
@keyframes cmbShimmer { 100% { transform: translateX(100%); } }

/* ── Empty / error state (ajax kết quả fail hoặc rỗng) - khớp tông hệ thống ── */
.cmb-empty { text-align: center; padding: 40px 22px; color: #64748b; }
.cmb-empty > i { font-size: 34px; color: #cbd5e1; margin-bottom: 12px; display: block; }
.cmb-empty b { display: block; color: #334155; font-size: 15.5px; margin-bottom: 6px; }
.cmb-empty span { font-size: 13.5px; line-height: 1.55; display: block; max-width: 440px; margin: 0 auto; }
.cmb-empty-actions { margin-top: 16px; display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
.cmb-empty .cmb-btn {
    display: inline-flex; align-items: center; gap: 7px;
    padding: 9px 18px; border-radius: 10px; border: 0; cursor: pointer;
    font-family: inherit; font-size: 13.5px; font-weight: 700; text-decoration: none; transition: background .15s, color .15s;
}
.cmb-empty .cmb-btn-primary { background: #ed007f; color: #fff; }
.cmb-empty .cmb-btn-primary:hover { background: #b81e7a; color: #fff; }
.cmb-empty .cmb-btn-ghost { background: #f7f8fa; color: #334155; border: 1px solid #e2e8f0; }
.cmb-empty .cmb-btn-ghost:hover { border-color: #ed007f; color: #ed007f; }

/* Mobile filter toggle (filter-header chỉ dùng cho mobile, ẩn desktop) */
.hotel-filters .filter-header { display: none; }
@media (max-width: 991px) {
    .hotel-filters { position: static; }
}

/* ══ Combo tự chọn - card vé (Phase 2), khớp tông trang khách sạn ══ */
.cmb-inline-empty { padding: 28px 20px; text-align: center; color: #64748b; font-size: 14px; }
.cmb-inline-empty i { color: #cbd5e1; margin-right: 6px; }
.cmb-inline-empty a { color: #ed007f; font-weight: 700; text-decoration: none; }
.cmb-inline-empty a:hover { text-decoration: underline; }

.cmb-fl-card { display: flex; flex-direction: column; gap: 2px; }
.cmb-fl-leg {
    display: grid; grid-template-columns: 1.4fr .8fr 1.2fr .8fr 1fr; gap: 14px; align-items: center;
    padding: 14px 4px; border-bottom: 1px dashed #eef0f3;
}
.cmb-fl-leg:last-child { border-bottom: 0; }
.cmb-fl-air { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.cmb-fl-iata { display: inline-flex; align-items: center; justify-content: center; align-self: flex-start; min-width: 34px; height: 22px; padding: 0 8px; background: #fdf0f7; color: #ed007f; font-weight: 800; font-size: 12px; border-radius: 6px; }
.cmb-fl-airnm { font-size: 13px; font-weight: 600; color: #0f172a; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cmb-fl-time { text-align: center; }
.cmb-fl-time b { display: block; font-size: 20px; font-weight: 800; color: #0f172a; line-height: 1.1; }
.cmb-fl-time span { font-size: 12px; color: #64748b; }
.cmb-fl-mid { text-align: center; color: #94a3b8; }
.cmb-fl-mid small { display: block; font-size: 11.5px; }
.cmb-fl-line { display: block; height: 1px; background: #d6d9df; margin: 6px 8px; position: relative; }
.cmb-fl-line::after { content: ''; position: absolute; right: -1px; top: -2px; width: 5px; height: 5px; border-radius: 50%; background: #ed007f; }
.cmb-fl-cabin { text-align: right; }
.cmb-fl-cabin small { display: block; font-size: 11px; color: #94a3b8; }
.cmb-fl-cabin span { font-size: 13px; font-weight: 700; color: #0f172a; }
@media (max-width: 767px){ .cmb-fl-leg { grid-template-columns: 1fr 1fr 1fr; row-gap: 8px; } .cmb-fl-cabin, .cmb-fl-air { text-align: left; } }

/* ── Grid card combo khách sạn (mỗi KS = 1 combo, giá tổng vé+KS) - khớp .hsr-card ── */
.cmb-h-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
.cmb-h-card {
    background: #fff; border: 1px solid #e8e8e8; border-radius: 14px; overflow: hidden;
    display: flex; flex-direction: column; transition: box-shadow .22s, transform .22s, border-color .22s;
}
.cmb-h-card:hover { box-shadow: 0 12px 30px rgba(0,0,0,.12); transform: translateY(-3px); border-color: #d0d4d9; }
.cmb-h-img { position: relative; aspect-ratio: 16/10; background: #e2e8f0 center/cover no-repeat; }
.cmb-h-score { position: absolute; top: 10px; right: 10px; background: rgba(255,255,255,.95); border-radius: 20px; padding: 4px 9px; box-shadow: 0 2px 8px rgba(0,0,0,.18); }
.cmb-h-score b { color: #1a7adb; font-weight: 900; font-size: 14px; }
.cmb-h-body { padding: 13px 14px 14px; display: flex; flex-direction: column; flex: 1; }
.cmb-h-name { font-size: 14.5px; font-weight: 700; color: #0f172a; line-height: 1.35; margin-bottom: 5px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; min-height: 39px; }
.cmb-h-stars { color: #ff9800; font-size: 13px; letter-spacing: 1px; margin-bottom: 8px; }
.cmb-h-foot { margin-top: auto; display: flex; align-items: flex-end; justify-content: space-between; gap: 8px; border-top: 1px dashed #eee; padding-top: 10px; }
.cmb-h-price .lbl { font-size: 11px; color: #94a3b8; display: block; }
.cmb-h-price .now { font-size: 19px; font-weight: 900; color: #e11d48; line-height: 1.1; }
.cmb-h-price .now span { font-size: 13px; font-weight: 700; margin-left: 1px; }
.cmb-h-choose {
    flex-shrink: 0; height: 38px; padding: 0 18px; border: 0; border-radius: 10px; cursor: pointer;
    background: #ed007f; color: #fff; font-size: 13.5px; font-weight: 700; font-family: inherit;
    box-shadow: 0 4px 14px rgba(214,36,140,.28); transition: background .15s, transform .12s;
}
.cmb-h-choose:hover { background: #b81e7a; transform: translateY(-1px); }
.cmb-h-card.cmb-h-selected { border-color: #ed007f; box-shadow: 0 0 0 2px rgba(214,36,140,.25); }

.cmb-h-note { padding: 0 20px 8px; margin: -4px 0 0; color: #e11d48; font-size: 12.5px; font-weight: 600; }
/* Tóm tắt đơn combo đã chọn */
.cmb-sum { list-style: none; margin: 0; padding: 0; }
.cmb-sum li { display: flex; justify-content: space-between; gap: 10px; padding: 8px 0; border-bottom: 1px solid #f1f5f9; font-size: 13.5px; color: #475569; }
.cmb-sum li.cmb-sum-h { font-weight: 700; color: #0f172a; }
.cmb-sum li.cmb-sum-h i { color: #ed007f; margin-right: 6px; }
.cmb-sum .cmb-sum-r { white-space: nowrap; font-weight: 600; }
.cmb-sum li.cmb-sum-total { border-bottom: 0; font-size: 16px; font-weight: 800; color: #e11d48; padding-top: 12px; }
/* Sort control ở header section KS */
.cmb-h-sort { margin-left: auto; display: inline-flex; align-items: center; gap: 8px; font-weight: 500; font-size: 13px; color: #64748b; }
.cmb-h-sort select { height: 36px; border: 1px solid #e2e8f0; border-radius: 9px; padding: 0 10px; font-size: 13.5px; font-weight: 600; color: #0f172a; background: #fff; font-family: inherit; cursor: pointer; }
.cmb-h-sort select:focus { outline: none; border-color: #ed007f; }

        .cfx-wrap { display:grid; grid-template-columns:1fr 360px; gap:20px; align-items:start; }
        /* minmax(0,1fr) chứ KHÔNG phải 1fr: 1fr = minmax(auto,1fr) nên cột nở theo min-content của
           nội dung (card vé, hàng xe…) → trên màn 390px cột ra 478px, cả khối tràn mép phải và bị
           overflow-x:hidden của trang cắt mất (nút "Xem", viền card). */
        @media (max-width:991px){ .cfx-wrap { grid-template-columns:minmax(0,1fr); } }
        .cfx-sec { background:#fff; border:1px solid #ececec; border-radius:10px; padding:16px 18px; margin-bottom:18px; }
        .cfx-sec-head { display:flex; align-items:center; gap:10px; margin-bottom:14px; }
        .cfx-sec-head .ic { width:34px; height:34px; border-radius:10px; background:linear-gradient(135deg,#ed007f,#b81e7a); color:#fff; display:inline-flex; align-items:center; justify-content:center; font-size:15px; }
        .cfx-sec-head h3 { margin:0; font-size:16px; font-weight:800; color:#0f172a; }
        .cfx-sec-head .sub { font-size:12.5px; color:#94a3b8; }
        /* ── Khối "Combo trọn gói đã có sẵn" (client 2026-08-08) ──
           .cfx-wrap chừa sẵn cột phải 360px cho .cfx-side, nhưng khối combo KHÔNG có sidebar
           (markup chỉ có .cfx-main) → 360px đó bỏ không, card bị bóp còn ~249px nên "Xem chi tiết"
           rớt xuống dòng dưới giá. Trả về 1 cột để lưới ăn trọn bề ngang.
           minmax 260px: card .gt-card ở đây phải RỘNG BẰNG card tour các trang khác (trang chủ và
           /combo đều ra 278px) — 260px cho đúng 4 cột ở desktop nên khớp số đó. 260 cũng là sàn để
           khối giá (120px) + gap 10px + nút "Xem chi tiết" (99px) = 229px vừa 1 hàng: card W có
           229px nội dung khi W ≥ 259 (trừ 28px padding + 2px viền của .gt-card-body). */
        .cbs-wrap { grid-template-columns: minmax(0, 1fr); }
        .cbs-wrap .cbf-grid { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }

        /* Tiêu đề rổ combo GỢI Ý (không khớp điểm đến khách tìm). Nhạt và nhỏ hơn tiêu đề section
           để đọc lướt vẫn thấy ngay đây là đề xuất, không phải kết quả tìm kiếm. */
        .cbs-alt-title { margin:6px 0 12px; font-size:14px; font-weight:800; color:#475569;
            padding-top:14px; border-top:1px dashed #e2e8f0; }
        .cbs-alt-title:first-child { padding-top:0; border-top:none; }
        .cfx-tag-suggest,.cfx-tag-opt { font-size:10.5px; font-weight:700; padding:2px 8px; border-radius:8px; vertical-align:middle; margin-left:4px; }
        .cfx-tag-suggest { background:#eef6ff; color:#2563eb; } .cfx-tag-opt { background:#f1f5f9; color:#64748b; }
        .cfx-list { display:flex; flex-direction:column; gap:10px; }
        .cfx-card { display:flex; align-items:center; gap:14px; border:1.5px solid #eef0f3; border-radius:10px; padding:11px 13px; cursor:pointer; transition:border-color .15s,box-shadow .15s,background .15s; }
        .cfx-card:hover { border-color:#f3d4e7; box-shadow:0 4px 14px rgba(20,20,40,.07); }
        .cfx-card.sel { border-color:#ed007f; background:#fdf4f9; box-shadow:0 4px 14px rgba(214,36,140,.12); }
        .cfx-card .pick { width:20px; height:20px; border-radius:50%; border:2px solid #cbd5e1; flex-shrink:0; position:relative; }
        .cfx-card.sel .pick { border-color:#ed007f; } .cfx-card.sel .pick::after { content:''; position:absolute; inset:3px; border-radius:50%; background:#ed007f; }
        .cfx-fl-logo { width:38px; height:38px; object-fit:contain; flex-shrink:0; }
        .cfx-fl-mid { flex:1; min-width:0; }
        .cfx-fl-route { font-size:14.5px; font-weight:700; color:#0f172a; }
        .cfx-fl-sub { font-size:12px; color:#64748b; margin-top:2px; }
        /* Card vé kiểu trang flight: hãng + số hiệu / giờ bay / thời lượng */
        .cfx-fl-air { font-size:13.5px; font-weight:700; color:#0f172a; }
        .cfx-fl-no { font-size:11.5px; font-weight:600; color:#64748b; background:#f1f5f9; border-radius:6px; padding:1px 6px; margin-left:4px; }
        .cfx-fl-time { font-size:14px; color:#0f172a; margin-top:3px; }
        .cfx-fl-time b { font-weight:800; }
        .cfx-fl-ap { font-size:12px; color:#94a3b8; font-weight:600; }
        .cfx-fl-arrow { color:#ed007f; margin:0 4px; }
        .cfx-fl-meta { font-size:11.5px; color:#94a3b8; margin-top:3px; }
        /* Nhóm Chuyến đi / Chuyến về */
        .cfx-fl-group + .cfx-fl-group { margin-top:16px; }
        .cfx-fl-ghead { font-size:13px; font-weight:700; color:#334155; margin:0 0 10px; display:flex; align-items:center; gap:7px; }
        .cfx-fl-ghead i { color:#ed007f; }
        /* Nút Đổi vé khác (góc phải header section) */
        .cfx-change-btn { margin-left:auto; align-self:center; border:1px solid #f7d3e8; background:#fdf0f7; color:#ed007f; font-weight:700; font-size:13px; font-family:inherit; border-radius:10px; padding:8px 14px; cursor:pointer; display:inline-flex; align-items:center; gap:6px; white-space:nowrap; }
        .cfx-change-btn:hover { background:#fbe0ef; }
        /* Card vé - UI giống trang vé máy bay ngoài */
        .cfx-flcard { border:1px solid #eef0f3; border-radius:14px; overflow:visible; background:#fff; }
        .cfx-flc-row { display:flex; align-items:center; gap:16px; padding:16px 20px; }
        .cfx-flc-row + .cfx-flc-row { border-top:1px solid #f4f6f8; }
        .cfx-flc-air { display:flex; align-items:center; gap:12px; width:200px; flex-shrink:0; }
        .cfx-flc-logo { width:34px; height:34px; object-fit:contain; flex-shrink:0; }
        .cfx-flc-airname { font-size:15px; font-weight:700; color:#0f172a; line-height:1.25; }
        .cfx-flc-leg { display:flex; align-items:center; gap:18px; flex:1; min-width:0; justify-content:center; position:relative; cursor:pointer; }
        .cfx-flc-path { display:flex; flex-direction:column; align-items:center; min-width:120px; flex:1; max-width:210px; }
        .cfx-flc-stop { font-size:12px; color:#64748b; margin-bottom:4px; }
        .cfx-flc-track { display:flex; align-items:center; width:100%; min-width:80px; }
        .cfx-flc-track .d { width:7px; height:7px; border-radius:50%; background:#cbd5e1; flex-shrink:0; }
        .cfx-flc-track .b { flex:1; height:1px; background:#cbd5e1; }
        .cfx-flc-dur { font-size:12px; color:#94a3b8; margin-top:4px; }
        /* Popover hover timeline chặng bay */
        .cfx-flc-pop { display:none; position:absolute; top:calc(100% - 4px); left:50%; transform:translateX(-50%); z-index:60; background:#fff; border:1px solid #eef0f3; border-radius:12px; box-shadow:0 14px 36px rgba(15,23,42,.18); padding:14px 18px; min-width:248px; }
        .cfx-flc-leg:hover .cfx-flc-pop { display:block; }
        .cfx-pop-r { display:grid; grid-template-columns:48px 16px 1fr; align-items:center; column-gap:10px; }
        .cfx-pop-time { font-size:14px; font-weight:800; color:#0f172a; text-align:right; }
        .cfx-pop-dur { font-size:12px; color:#94a3b8; text-align:right; }
        .cfx-pop-dot { width:11px; height:11px; border-radius:50%; border:3px solid #ed007f; background:#fff; justify-self:center; box-sizing:border-box; }
        .cfx-pop-bar { width:0; height:26px; border-left:2px dotted #cbd5e1; justify-self:center; }
        .cfx-pop-ap { font-size:14px; font-weight:800; color:#0f172a; }
        .cfx-pop-mid { padding:3px 0; }
        .cfx-pop-air { font-size:13px; color:#0f172a; display:flex; align-items:center; gap:6px; white-space:nowrap; } .cfx-pop-air img{ width:18px; height:18px; object-fit:contain; } .cfx-pop-air b{ color:#e11d48; font-weight:700; margin-left:2px; }
        .cfx-flc-t { text-align:center; } .cfx-flc-t b { font-size:20px; font-weight:800; color:#0f172a; display:block; line-height:1.05; } .cfx-flc-t small { font-size:12.5px; color:#94a3b8; font-weight:600; }
        .cfx-flc-x { width:130px; flex-shrink:0; } .cfx-flc-lbl { font-size:12.5px; color:#64748b; margin-bottom:7px; }
        .cfx-flc-bag { display:inline-flex; align-items:center; gap:6px; font-size:13px; color:#334155; font-weight:600; background:#f1f5f9; border-radius:20px; padding:5px 13px; } .cfx-flc-bag i { color:#64748b; }
        .cfx-flc-cabin { font-size:14px; color:#0f172a; font-weight:700; }
        /* Footer links Giá vé / Lịch trình bay / Hành lý - màu đen, gạch chân, 1 hàng cuối card */
        .cfx-flc-links { display:flex; align-items:center; justify-content:center; padding:13px 20px; border-top:1px solid #eef0f3; }
        .cfx-flc-links a { font-size:13.5px; font-weight:600; color:#1f2937; text-decoration:underline !important; text-underline-offset:3px; cursor:pointer; padding:0 18px; position:relative; }
        .cfx-flc-links a + a::before { content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); width:1px; height:13px; background:#dbe1e8; }
        .cfx-flc-links a:hover { color:#000; text-decoration:underline !important; }
        @media (max-width:991px){ .cfx-flc-row{ flex-wrap:wrap; gap:10px 14px; } .cfx-flc-air{ width:100%; } .cfx-flc-leg{ order:3; width:100%; justify-content:space-between; } .cfx-flc-x{ width:auto; } }
        /* ── Mobile (≤767): fix layout combo bị tràn/xuống dòng xấu. CHỈ mobile - không đụng desktop/tablet. ── */
        @media (max-width:767px){
            /* Header "Vé máy bay": nút Đổi vé khác xuống hàng riêng để route + ngày có đủ chỗ, không bị bóp */
            .cfx-sec-head{ flex-wrap:wrap; row-gap:10px; }
            /* flex-basis 0 (không phải auto): basis auto = bề rộng max-content của dòng phụ
               ("Hồ Chí Minh ⇄ Hà Nội · 17/10/2026 – 18/10/2026" dài hơn chỗ trống) → cả khối tiêu
               đề rớt xuống DƯỚI icon. Basis 0 thì nó luôn đứng cạnh icon rồi mới giãn, chữ tự bọc dòng. */
            .cfx-sec-head > div{ flex:1 1 0; min-width:0; }
            .cfx-sec-head .sub{ line-height:1.45; }
            .cfx-change-btn{ order:3; flex:0 0 100%; width:100%; margin-left:0; justify-content:center; }
            /* Card vé: hãng 1 hàng, hành trình 1 hàng full-width, tiện ích/hạng ghế 1 hàng → không clip */
            .cfx-flc-row{ flex-wrap:wrap; gap:8px 12px; padding:14px 16px; }
            .cfx-flc-air{ width:100%; order:1; }
            .cfx-flc-leg{ order:2; flex:0 0 100%; width:100%; justify-content:space-between; gap:8px; }
            .cfx-flc-path{ min-width:80px; max-width:none; flex:1; }
            .cfx-flc-t b{ font-size:18px; }
            .cfx-flc-x{ order:3; width:auto; flex:1 1 42%; }
            /* Link Giá vé / Lịch trình bay / Hành lý: gọn padding + nowrap để nằm 1 hàng, không wrap 2 dòng */
            .cfx-flc-links{ padding:12px 6px; }
            .cfx-flc-links a{ padding:0 9px; font-size:12.5px; white-space:nowrap; }
            /* Hàng xe đưa đón: 5 khối (chọn · ảnh · tên · giá · "Xem chi tiết") không vừa 1 hàng ở
               ~330px — tên xe bị bóp về 0, nút tràn khỏi thẻ. Tách 2 hàng: trên = chọn + ảnh + tên,
               dưới = giá (trái) + nút (phải). 122px = ô chọn 20 + ảnh 74 + 2 khoảng cách 14. */
            .cfx-car-card{ flex-wrap:wrap; row-gap:10px; }
            .cfx-car-card .cfx-h-mid{ flex:1 0 calc(100% - 122px); }
            .cfx-car-card .cfx-h-name{ -webkit-line-clamp:2; }
            .cfx-car-card .cfx-price{ flex:1 1 auto; text-align:left; display:flex; align-items:baseline; gap:6px; }
            .cfx-car-card .cfx-car-info{ margin-left:auto; }
        }
        /* Popup Đổi vé */
        .cfx-modal { display:none; position:fixed; inset:0; z-index:10000; background:rgba(15,23,42,.5); align-items:center; justify-content:center; padding:20px; }
        .cfx-modal-box { background:#fff; border-radius:16px; width:min(700px,100%); max-height:90vh; display:flex; flex-direction:column; overflow:hidden; box-shadow:0 24px 60px rgba(0,0,0,.28); }
        .cfx-modal-head { display:flex; align-items:center; justify-content:space-between; padding:20px 24px 16px; }
        .cfx-modal-head h3 { margin:0; font-size:21px; font-weight:800; color:#0f172a; }
        .cfx-modal-close { border:0; background:#f1f5f9; width:36px; height:36px; border-radius:50%; font-size:22px; line-height:1; color:#64748b; cursor:pointer; }
        .cfx-modal-close:hover { background:#e2e8f0; }
        .cfx-modal-route { padding:12px 24px; font-size:13.5px; color:#334155; background:#f8fafc; } .cfx-modal-route b{ color:#0f172a; }
        /* Lọc hãng bay trong popup "Đổi vé khác" */
        .cfx-airfilter { display:flex; gap:8px; flex-wrap:wrap; padding:4px 24px 10px; }
        .cfx-airpill { display:inline-flex; align-items:center; gap:6px; height:34px; padding:0 12px; border:1.5px solid #e5e9f0; border-radius:999px; background:#fff; font-size:13px; font-weight:600; color:#475569; font-family:inherit; cursor:pointer; white-space:nowrap; }
        .cfx-airpill img { width:18px; height:18px; object-fit:contain; }
        .cfx-airpill .n { color:#94a3b8; font-weight:600; }
        .cfx-airpill:hover { border-color:#f3c6e0; }
        .cfx-airpill.on { border-color:#ed007f; background:#fdf4f9; color:#ed007f; }
        .cfx-airpill.on .n { color:#ed007f; }
        /* Ô tìm khách sạn theo tên trong popup "Chọn khách sạn khác" */
        .cfx-hsearch { position:relative; padding:14px 24px 0; }
        .cfx-hsearch > i { position:absolute; left:38px; top:50%; transform:translateY(-3px); color:#94a3b8; font-size:14px; pointer-events:none; }
        .cfx-hsearch input { width:100%; height:44px; border:1.5px solid #e5e9f0; border-radius:10px; padding:0 38px 0 40px; font-size:14px; font-family:inherit; color:#0f172a; background:#fff; box-sizing:border-box; }
        .cfx-hsearch input:focus { outline:none; border-color:#ed007f; }
        .cfx-hsearch-clear { position:absolute; right:34px; top:50%; transform:translateY(-3px); width:22px; height:22px; border:0; border-radius:50%; background:#e2e8f0; color:#475569; font-size:15px; line-height:1; cursor:pointer; }
        .cfx-hsearch-clear:hover { background:#cbd5e1; }
        .cfx-modal-tabbar { display:flex; align-items:center; justify-content:space-between; padding:16px 24px 8px; }
        .cfx-modal-leglabel { font-size:15px; font-weight:800; color:#0f172a; }
        .cfx-modal-note { font-size:12px; color:#e11d48; }
        .cfx-modal-list { overflow:auto; padding:8px 24px 16px; flex:1; }
        .cfx-mrow { display:flex; flex-direction:column; align-items:stretch; border:1px solid #e5e9f0; border-radius:12px; padding:13px 16px; margin-top:10px; transition:border-color .15s, background .15s, box-shadow .15s; }
        .cfx-mrow-main { display:flex; align-items:center; gap:14px; }
        .cfx-mrow.cur { border-color:#f3c6e0; background:#fdf4f9; box-shadow:0 4px 14px rgba(214,36,140,.08); }
        /* Link xem chi tiết trong mỗi dòng vé (giống footer card) */
        .cfx-mrow-links { display:flex; align-items:center; margin-top:11px; padding-top:10px; border-top:1px dashed #eef0f3; }
        .cfx-mrow-links a { font-size:12.5px; font-weight:600; color:#1f2937; text-decoration:underline !important; text-underline-offset:3px; cursor:pointer; padding:0 14px; position:relative; }
        .cfx-mrow-links a:first-child { padding-left:0; }
        .cfx-mrow-links a + a::before { content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); width:1px; height:12px; background:#dbe1e8; }
        .cfx-mrow-links a:hover { color:#000; text-decoration:underline !important; }
        .cfx-mrow-air { display:flex; align-items:center; gap:11px; width:165px; flex-shrink:0; } .cfx-mrow-air img{ width:32px; height:32px; object-fit:contain; }
        .cfx-mrow-name { font-size:13.5px; font-weight:700; color:#0f172a; margin-bottom:6px; }
        .cfx-mrow-act { width:134px; flex-shrink:0; text-align:right; }
        .cfx-mrow-diff { font-size:15px; font-weight:800; color:#e11d48; } .cfx-mrow-diff.down { color:#16a34a; } .cfx-mrow-diff.up{ color:#e11d48; }
        .cfx-mrow-per { font-size:11px; color:#94a3b8; margin-bottom:8px; }
        .cfx-mrow-cur { display:inline-block; background:#fdf0f7; color:#ed007f; border:1px solid #f7d3e8; font-weight:700; font-size:12.5px; padding:7px 14px; border-radius:8px; }
        .cfx-mrow-btn { background:#ed007f; color:#fff; border:0; font-weight:700; font-size:13px; font-family:inherit; padding:9px 20px; border-radius:8px; cursor:pointer; transition:background .15s; }
        .cfx-mrow-btn:hover { background:#b81e7a; }
        .cfx-modal-foot { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:14px 22px; border-top:1px solid #f0f2f4; }
        .cfx-modal-difftxt { font-size:14px; color:#334155; } .cfx-modal-difftxt b { font-size:18px; color:#e11d48; } .cfx-modal-difftxt b.down{ color:#16a34a; }
        .cfx-modal-next { background:#ed007f; color:#fff; border:0; font-weight:700; font-size:15px; font-family:inherit; padding:13px 26px; border-radius:10px; cursor:pointer; }
        .cfx-modal-next:hover { background:#b81e7a; }

        /* ═══ MOBILE: popup "Đổi vé khác" / "Chọn khách sạn khác" = BOTTOM-SHEET đẩy từ dưới lên,
           filter hãng thu gọn 1 hàng cuộn ngang, danh sách vé cuộn được (2026-07-23). ═══ */
        @media (max-width: 767px) {
            .cfx-modal { align-items:flex-end; padding:0; }
            .cfx-modal-box { width:100%; max-width:100%; max-height:92vh; border-radius:18px 18px 0 0; animation:cfxSheetUp .22s ease; }
            @keyframes cfxSheetUp { from { transform:translateY(100%); } to { transform:translateY(0); } }
            .cfx-modal-head { padding:16px 18px 10px; }
            .cfx-modal-head h3 { font-size:18px; }
            .cfx-modal-route { padding:10px 18px; font-size:12.5px; }
            .cfx-modal-tabbar { flex-direction:column; align-items:flex-start; gap:2px; padding:12px 18px 6px; }
            .cfx-modal-leglabel { font-size:14px; }
            .cfx-modal-note { font-size:11px; }
            /* Filter hãng: 1 HÀNG cuộn ngang thay vì wrap nhiều hàng chiếm nửa màn. */
            .cfx-airfilter { flex-wrap:nowrap; overflow-x:auto; padding:2px 18px 8px; gap:6px;
                scrollbar-width:none; -ms-overflow-style:none; -webkit-overflow-scrolling:touch; }
            .cfx-airfilter::-webkit-scrollbar { display:none; }
            .cfx-airpill { height:30px; padding:0 10px; font-size:12px; flex:0 0 auto; }
            .cfx-airpill img { width:15px; height:15px; }
            /* Danh sách vé: chiếm phần còn lại + cuộn được (min-height:0 để flex-child cuộn trong cột). */
            .cfx-modal-list { padding:6px 16px 12px; min-height:0; -webkit-overflow-scrolling:touch; }
            .cfx-modal-foot { padding:12px 16px; gap:10px; }
            .cfx-modal-next { font-size:14px; padding:12px 18px; flex-shrink:0; }
            .cfx-hsearch { padding:12px 16px 0; }
        }
        @media (max-width:560px){ .cfx-mrow-main{ flex-wrap:wrap; } .cfx-mrow-air,.cfx-mrow-act{ width:auto; } .cfx-flc-leg{ width:100%; } }
        /* Popup thành công - đồng bộ tông site (hồng, bo 10/14px, font brand) */
        .cfx-okbox { background:#fff; border-radius:14px; width:min(420px,100%); padding:32px 28px 26px; text-align:center; box-shadow:0 24px 60px rgba(0,0,0,.28); }
        .cfx-ok-ic { width:74px; height:74px; border-radius:50%; background:#fdf0f6; color:#ed007f; display:flex; align-items:center; justify-content:center; font-size:34px; margin:0 auto 18px; border:3px solid #f3c6e0; }
        .cfx-okbox h3 { margin:0 0 12px; font-size:21px; font-weight:800; color:#0f172a; }
        .cfx-okbox p { margin:0 0 4px; font-size:14px; color:#475569; } .cfx-okbox p b { color:#ed007f; font-weight:800; }
        .cfx-ok-sub { color:#94a3b8 !important; font-size:13px !important; margin-top:6px !important; line-height:1.5; }
        .cfx-ok-btn { margin-top:22px; background:#ed007f; color:#fff; border:0; font-weight:700; font-size:15px; font-family:inherit; padding:12px 44px; border-radius:10px; cursor:pointer; transition:background .15s; }
        .cfx-ok-btn:hover { background:#b81e7a; }
        .cfx-h-img { width:74px; height:60px; border-radius:8px; object-fit:cover; background:#e2e8f0; flex-shrink:0; }
        /* Khách sạn dạng card lưới (giá combo = vé + KS) */
        .cfx-hgrid { display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:14px; }
        @media (max-width:520px){
            .cfx-hgrid { grid-template-columns:repeat(2,1fr); gap:10px; }
            /* Card 2 cột hẹp: giá dễ bị nút "Chọn" cắt/đè → xếp giá TRÊN, nút full-width DƯỚI (chỉ mobile) */
            .cfx-hcard-foot { flex-direction:column; align-items:stretch; gap:8px; }
            .cfx-hcard-price { width:100%; }
            .cfx-hcard-price .v { white-space:normal; font-size:14.5px; line-height:1.25; }
            .cfx-hcard-btn { width:100%; padding:9px 10px; text-align:center; }
        }
        .cfx-hcard { border:1px solid #eef0f3; border-radius:10px; overflow:hidden; background:#fff; display:flex; flex-direction:column; cursor:pointer; transition:border-color .15s, box-shadow .15s, transform .15s; }
        .cfx-hcard:hover { border-color:#f3d4e7; box-shadow:0 8px 22px rgba(20,20,40,.10); transform:translateY(-2px); }
        .cfx-hcard.sel { border-color:#ed007f; box-shadow:0 6px 18px rgba(214,36,140,.16); }
        .cfx-hcard-img { aspect-ratio:16/11; background-size:cover; background-position:center; background-color:#e2e8f0; }
        .cfx-hcard-img.ph { display:flex; align-items:center; justify-content:center; color:#cbd5e1; font-size:24px; }
        .cfx-hcard-body { padding:10px 11px 11px; display:flex; flex-direction:column; flex:1; }
        .cfx-hcard-name { font-size:13px; font-weight:700; color:#0f172a; line-height:1.35; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:35px; }
        .cfx-hcard-star { color:#f59e0b; font-size:12px; margin:4px 0 8px; letter-spacing:1px; }
        .cfx-hcard-foot { margin-top:auto; display:flex; align-items:flex-end; justify-content:space-between; gap:8px; border-top:1px dashed #eee; padding-top:9px; }
        .cfx-hcard-price { min-width:0; } .cfx-hcard-price .lbl { font-size:10.5px; color:#94a3b8; display:block; } .cfx-hcard-price .v { font-size:15px; font-weight:800; color:#ed007f; white-space:nowrap; }
        .cfx-hcard-btn { flex-shrink:0; background:#facc15; color:#7c5e00; border:0; font-weight:800; font-size:12.5px; font-family:inherit; padding:8px 14px; border-radius:8px; cursor:pointer; }
        .cfx-hcard-btn:hover { background:#eab308; }
        .cfx-hcard.sel .cfx-hcard-btn { background:#ed007f; color:#fff; }
        .cfx-h-mid { flex:1; min-width:0; }
        .cfx-h-name { font-size:14px; font-weight:700; color:#0f172a; display:-webkit-box; -webkit-line-clamp:1; -webkit-box-orient:vertical; overflow:hidden; }
        .cfx-h-star { color:#f59e0b; font-size:11px; } .cfx-h-sub { font-size:12px; color:#94a3b8; margin-top:2px; }
        .cfx-price { text-align:right; flex-shrink:0; } .cfx-price .v { font-size:15px; font-weight:800; color:#ed007f; white-space:nowrap; } .cfx-price .u { font-size:11px; color:#94a3b8; }
        .cfx-loading,.cfx-empty { padding:26px; text-align:center; color:#94a3b8; font-size:13.5px; }
        .cfx-loading .spin { display:inline-block; width:18px; height:18px; border:2px solid #eee; border-top-color:#ed007f; border-radius:50%; animation:cfxspin .7s linear infinite; vertical-align:middle; margin-right:8px; }
        @keyframes cfxspin { to { transform:rotate(360deg); } }
        .cfx-side { position:sticky; top:16px; }
        .cfx-sum { background:#fff; border:1px solid #ececec; border-radius:10px; padding:16px 18px; }
        .cfx-sum h3 { margin:0 0 12px; font-size:16px; font-weight:800; color:#0f172a; }
        .cfx-sum-row { display:flex; justify-content:space-between; gap:10px; font-size:13.5px; color:#475569; padding:7px 0; border-bottom:1px dashed #eee; }
        .cfx-sum-row .lbl { color:#64748b; } .cfx-sum-row .val { font-weight:700; color:#0f172a; text-align:right; }
        .cfx-sum-row.disc .val { color:#16a34a; }
        .cfx-sum-total { display:flex; justify-content:space-between; align-items:baseline; padding-top:12px; }
        .cfx-sum-total .lbl { font-size:14px; font-weight:700; color:#0f172a; } .cfx-sum-total .val { font-size:22px; font-weight:800; color:#e11d48; }
        .cfx-note { font-size:11.5px; color:#94a3b8; margin-top:8px; line-height:1.5; }
        .cfx-book { margin-top:14px; width:100%; height:50px; border:0; border-radius:12px; background:linear-gradient(135deg,#ed007f,#b81e7a); color:#fff; font-size:16px; font-weight:800; font-family:inherit; cursor:pointer; display:flex; align-items:center; justify-content:center; gap:9px; box-shadow:0 8px 20px rgba(214,36,140,.28); transition:transform .12s, box-shadow .15s, opacity .15s; }
        .cfx-book:hover { transform:translateY(-1px); box-shadow:0 10px 26px rgba(214,36,140,.34); }
        .cfx-book:active { transform:translateY(0); }
        .cfx-book:disabled { background:#e9b9d4; box-shadow:none; cursor:not-allowed; transform:none; }
        .cfx-book i { transition:transform .15s; } .cfx-book:hover i { transform:translateX(3px); }
        .cfx-book-trust { display:flex; align-items:flex-start; gap:7px; margin-top:11px; font-size:11.5px; color:#64748b; line-height:1.5; }
        .cfx-book-trust i { color:#16a34a; margin-top:2px; flex-shrink:0; }
        /* ── Modal "Chi tiết chuyến bay" ── */
        .cfxd-modal { display:none; position:fixed; inset:0; z-index:10001; background:rgba(15,23,42,.5); align-items:center; justify-content:center; padding:20px; }
        /* !important để thắng rule global .show{display:block!important} (style_minimize.css) —
           nếu không modal bị display:block → hộp lệch góc trái trên thay vì canh giữa. */
        .cfxd-modal.show { display:flex !important; }
        .cfxd-box { background:#f4f6f9; border-radius:16px; width:min(720px,100%); max-height:90vh; display:flex; flex-direction:column; overflow:hidden; box-shadow:0 24px 60px rgba(0,0,0,.28); }
        .cfxd-head { display:flex; align-items:center; justify-content:space-between; padding:20px 24px 16px; background:#fff; }
        .cfxd-head h3 { margin:0; font-size:21px; font-weight:800; color:#0f172a; }
        .cfxd-close { border:0; background:#f1f5f9; width:36px; height:36px; border-radius:50%; font-size:22px; line-height:1; color:#64748b; cursor:pointer; }
        .cfxd-close:hover { background:#e2e8f0; }
        .cfxd-legs { display:flex; gap:12px; padding:0 24px 16px; background:#fff; }
        .cfxd-legtab { flex:1; display:flex; align-items:center; gap:9px; padding:13px 16px; border:1px solid #e5e9f0; border-radius:12px; background:#fff; cursor:pointer; font-size:15px; font-weight:700; color:#64748b; transition:background .15s,border-color .15s,color .15s; }
        .cfxd-legtab.active { background:#fdf0f7; border-color:#f7d3e8; color:#ed007f; }
        .cfxd-legtab i { font-size:16px; }
        .cfxd-legtab .sub { display:block; font-size:11.5px; font-weight:500; color:#94a3b8; margin-top:1px; }
        .cfxd-tabs { display:flex; gap:0; padding:0 24px; background:#fff; border-bottom:1px solid #eef0f3; }
        .cfxd-tab { flex:1; text-align:center; padding:14px 8px; font-size:14.5px; font-weight:600; color:#94a3b8; cursor:pointer; border-bottom:2px solid transparent; margin-bottom:-1px; transition:color .15s,border-color .15s; }
        .cfxd-tab.active { color:#ed007f; border-bottom-color:#ed007f; font-weight:700; }
        .cfxd-tabsep { width:1px; align-self:center; height:16px; background:#e2e8f0; }
        .cfxd-body { overflow:auto; padding:20px 24px 24px; background:#fff; flex:1; }
        /* Giá vé */
        .cfxd-fares { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:12px; }
        .cfxd-fare { border:1px solid #e5e9f0; border-radius:12px; padding:14px; display:flex; flex-direction:column; }
        .cfxd-fare.active { border-color:#f3c6e0; background:#fdf4f9; }
        .cfxd-fare-name { display:flex; align-items:center; gap:8px; font-size:14px; font-weight:700; color:#0f172a; }
        .cfxd-fare-name i { color:#64748b; }
        .cfxd-fare-name .act { color:#ed007f; }
        .cfxd-fare-row { display:flex; align-items:center; justify-content:space-between; font-size:13px; color:#334155; margin:12px 0 6px; }
        .cfxd-fare-row b { color:#0f172a; font-weight:800; }
        .cfxd-fare-row b.zero { color:#e11d48; }
        /* Dòng chênh lệch so với hạng ĐANG CHỌN: đắt hơn = đỏ, rẻ hơn = xanh, bằng giá = xám */
        .cfxd-fare-diff { font-size:12px; font-weight:600; color:#94a3b8; margin-bottom:12px; min-height:16px; }
        .cfxd-fare-diff.up { color:#e11d48; }
        .cfxd-fare-diff.down { color:#16a34a; }
        .cfxd-fare-btn { margin-top:auto; height:38px; border:0; border-radius:9px; background:#ed007f; color:#fff; font-size:13.5px; font-weight:700; font-family:inherit; cursor:pointer; }
        .cfxd-fare-btn:hover { background:#b81e7a; }
        /* Hạng ĐANG CHỌN: viền hồng đậm + nút "Đang chọn" dạng outline (disabled) */
        .cfxd-fare.sel { border-color:#ed007f; }
        .cfxd-fare.sel .cfxd-fare-btn,
        .cfxd-fare-btn[disabled] { background:#fff; color:#ed007f; border:1px solid #f3c6e0; cursor:default; }
        /* Card không phải hạng đang chọn → bấm vào thân card để XEM hành lý hạng đó */
        .cfxd-fare[data-cfxfam] { cursor:pointer; }
        /* ════ Popup "Chi tiết Combo" - chọn phòng trong khách sạn ════ */
        .cfxr-modal { display:none; position:fixed; inset:0; background:rgba(15,23,42,.55); z-index:10050; align-items:center; justify-content:center; padding:28px 16px; overflow-y:auto; }
        /* !important: CSS global có .show{display:block!important} → đè mất display:flex → hộp bị
           dạt trái thay vì canh giữa. Phải thắng lại bằng !important cục bộ. */
        .cfxr-modal.show { display:flex !important; }
        .cfxr-box { background:#f5f7fa; border-radius:16px; width:100%; max-width:1060px; overflow:hidden; box-shadow:0 24px 60px rgba(0,0,0,.28); }
        .cfxr-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; background:#fff; padding:18px 22px; border-bottom:1px solid #eef1f5; }
        .cfxr-head h3 { margin:0; font-size:20px; font-weight:800; color:#0f172a; }
        .cfxr-sub { font-size:13px; color:#64748b; margin-top:4px; }
        .cfxr-sub .star { color:#f59e0b; }
        .cfxr-close { width:34px; height:34px; flex-shrink:0; border:0; border-radius:50%; background:#f1f5f9; color:#475569; font-size:20px; line-height:1; cursor:pointer; }
        .cfxr-close:hover { background:#e2e8f0; }
        .cfxr-body { padding:18px 22px 24px; max-height:calc(100vh - 160px); overflow-y:auto; }
        /* ── Nút "Xem chi tiết" trên card xe đưa đón ── */
        .cfx-car-info { flex-shrink:0; margin-left:14px; height:34px; padding:0 14px; border:1.5px solid #f3c6e0; border-radius:8px; background:#fff; color:#ed007f; font-size:13px; font-weight:700; font-family:inherit; cursor:pointer; white-space:nowrap; }
        .cfx-car-info:hover { background:#fdf4f9; border-color:#ed007f; }
        /* ── Nội dung popup chi tiết xe ── */
        .cfxc-top { background:#fff; border:1px solid #eef1f5; border-radius:12px; padding:16px 18px; margin-bottom:14px; display:flex; align-items:center; justify-content:space-between; gap:18px; flex-wrap:wrap; }
        .cfxc-name { font-size:19px; font-weight:800; color:#0f172a; margin:0 0 6px; }
        .cfxc-meta { display:flex; gap:8px; flex-wrap:wrap; }
        .cfxc-chip { font-size:12.5px; font-weight:600; color:#475569; background:#f1f5f9; border-radius:999px; padding:4px 11px; }
        .cfxc-chip i { color:#ed007f; margin-right:5px; }
        .cfxc-right { display:flex; align-items:center; gap:14px; }
        .cfxc-price .lbl { font-size:12px; color:#64748b; display:block; }
        .cfxc-price .v { font-size:20px; font-weight:800; color:#ed007f; }
        .cfxc-cta { height:42px; padding:0 22px; border:0; border-radius:10px; background:#ed007f; color:#fff; font-size:14px; font-weight:700; font-family:inherit; cursor:pointer; white-space:nowrap; }
        .cfxc-cta:hover { background:#b81e7a; }
        .cfxc-cta.off { background:#fff; color:#ed007f; border:1.5px solid #f3c6e0; }
        .cfxc-link { display:inline-block; margin-top:12px; font-size:13.5px; font-weight:700; color:#ed007f; text-decoration:none; }
        .cfxc-link:hover { text-decoration:underline; }
        /* Nội dung HTML từ CMS (car.detail / car.policies): ép ảnh co giãn, không tràn popup */
        .cfxc-html { font-size:14px; line-height:1.65; color:#475569; }
        .cfxc-html img { max-width:100% !important; height:auto !important; border-radius:8px; }
        .cfxc-html table { max-width:100%; }
        .cfxc-html h1, .cfxc-html h2, .cfxc-html h3 { font-size:16px; color:#0f172a; }
        /* ── Thẻ tóm tắt KS (tên + sao + địa chỉ + giá combo + nút xuống danh sách phòng) ── */
        .cfxr-top { background:#fff; border:1px solid #eef1f5; border-radius:12px; padding:16px 18px; margin-bottom:14px; display:flex; align-items:center; justify-content:space-between; gap:18px; flex-wrap:wrap; }
        .cfxr-top-name { font-size:19px; font-weight:800; color:#0f172a; margin:0 0 6px; }
        .cfxr-top-meta { display:flex; align-items:center; gap:10px; flex-wrap:wrap; font-size:13px; color:#64748b; }
        .cfxr-top-meta .star { color:#f59e0b; letter-spacing:1px; }
        .cfxr-top-meta i { color:#ed007f; margin-right:4px; }
        .cfxr-top-right { text-align:right; display:flex; align-items:center; gap:16px; }
        .cfxr-top-price .lbl { font-size:12.5px; color:#64748b; display:block; }
        .cfxr-top-price .v { font-size:22px; font-weight:800; color:#ed007f; }
        .cfxr-top-cta { height:44px; padding:0 26px; border:0; border-radius:10px; background:#ed007f; color:#fff; font-size:14.5px; font-weight:700; font-family:inherit; cursor:pointer; white-space:nowrap; }
        .cfxr-top-cta:hover { background:#b81e7a; }
        /* ── Gallery ảnh khách sạn: cột thumbnail + ảnh lớn ── */
        .cfxr-gal { display:grid; grid-template-columns:96px 1fr; gap:10px; margin-bottom:14px; }
        .cfxr-gal-thumbs { display:flex; flex-direction:column; gap:8px; max-height:420px; overflow-y:auto; }
        .cfxr-gal-thumbs img { width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:8px; cursor:pointer; border:2px solid transparent; }
        .cfxr-gal-thumbs img.on { border-color:#ed007f; }
        .cfxr-gal-main { width:100%; height:420px; object-fit:cover; border-radius:12px; background:#e2e8f0; }
        /* ── 3 cột: Giới thiệu / Vị trí / Tiện nghi ── */
        .cfxr-info { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-bottom:14px; }
        .cfxr-panel { background:#fff; border:1px solid #eef1f5; border-radius:12px; padding:16px; }
        .cfxr-panel h4 { margin:0 0 12px; font-size:16px; font-weight:800; color:#0f172a; display:flex; align-items:center; justify-content:space-between; gap:10px; }
        .cfxr-desc { font-size:13.5px; line-height:1.6; color:#475569; max-height:230px; overflow-y:auto; text-align:justify; white-space:pre-line; }
        .cfxr-map { width:100%; height:230px; border:0; border-radius:10px; }
        .cfxr-map-addr { font-size:12.5px; color:#64748b; margin-top:8px; }
        .cfxr-facs { list-style:none; margin:0; padding:0; max-height:230px; overflow-y:auto; }
        .cfxr-facs li { display:flex; align-items:flex-start; gap:8px; font-size:13.5px; color:#334155; padding:4px 0; }
        .cfxr-facs li i { color:#16a34a; font-size:12px; margin-top:4px; flex-shrink:0; }
        .cfxr-more { font-size:13px; font-weight:700; color:#ed007f; background:none; border:0; cursor:pointer; font-family:inherit; padding:0; }
        .cfxr-secttl { font-size:17px; font-weight:800; color:#0f172a; margin:18px 0 12px; }
        @media (max-width:860px){
            .cfxr-info { grid-template-columns:1fr; }
            .cfxr-gal { grid-template-columns:1fr; }
            .cfxr-gal-thumbs { flex-direction:row; max-height:none; overflow-x:auto; }
            .cfxr-gal-thumbs img { width:88px; flex-shrink:0; }
            .cfxr-gal-main { height:220px; }
            .cfxr-top { flex-direction:column; align-items:flex-start; }
            .cfxr-top-right { width:100%; justify-content:space-between; text-align:left; }
        }
        /* 1 loại phòng = 1 khối: ảnh + thông tin bên trái, các gói giá bên phải */
        .cfxr-room { background:#fff; border:1px solid #eef1f5; border-radius:12px; padding:16px; margin-bottom:14px; }
        .cfxr-room-name { font-size:17px; font-weight:800; color:#0f172a; margin:0 0 14px; }
        .cfxr-room-grid { display:grid; grid-template-columns:260px 1fr; gap:16px; }
        .cfxr-rimg { width:100%; aspect-ratio:4/3; border-radius:10px; object-fit:cover; background:#e2e8f0 center/cover no-repeat; display:block; }
        .cfxr-rimg.ph { display:flex; align-items:center; justify-content:center; color:#cbd5e1; font-size:26px; }
        .cfxr-rmeta { display:flex; flex-wrap:wrap; gap:6px 14px; font-size:13px; color:#475569; margin-top:10px; padding-top:10px; border-top:1px dashed #e5e9f0; }
        .cfxr-rmeta i { color:#64748b; margin-right:5px; }
        /* Bảng gói giá */
        .cfxr-rates { border:1px solid #eef1f5; border-radius:10px; overflow:hidden; }
        .cfxr-rhead, .cfxr-rate { display:grid; grid-template-columns:1fr 90px 150px 150px; align-items:center; gap:10px; }
        .cfxr-rhead { background:#f8fafc; font-size:12.5px; font-weight:700; color:#64748b; padding:11px 14px; }
        .cfxr-rate { padding:14px; border-top:1px solid #f1f5f9; }
        .cfxr-rate:first-of-type { border-top:0; }
        .cfxr-rate.sel { background:#fdf4f9; }
        .cfxr-incl { display:flex; flex-direction:column; gap:5px; font-size:13px; color:#334155; }
        .cfxr-incl span { display:flex; align-items:center; gap:7px; }
        .cfxr-incl i { color:#16a34a; font-size:12px; }
        .cfxr-incl .warn { color:#b45309; } .cfxr-incl .warn i { color:#f59e0b; }
        .cfxr-pax { font-size:13px; color:#334155; text-align:center; }
        .cfxr-price { text-align:center; }
        .cfxr-price .v { font-size:17px; font-weight:800; color:#0f172a; display:block; }
        .cfxr-price .stay { font-size:11.5px; color:#94a3b8; }
        .cfxr-price .diff { font-size:12px; font-weight:700; margin-top:3px; }
        .cfxr-price .diff.up { color:#e11d48; } .cfxr-price .diff.down { color:#16a34a; } .cfxr-price .diff.same { color:#94a3b8; }
        .cfxr-act { text-align:center; }
        .cfxr-btn { width:100%; height:38px; border:0; border-radius:9px; background:#ed007f; color:#fff; font-size:13.5px; font-weight:700; font-family:inherit; cursor:pointer; }
        .cfxr-btn:hover { background:#b81e7a; }
        .cfxr-btn[disabled] { background:#fff; color:#ed007f; border:1px solid #f3c6e0; cursor:default; }
        .cfxr-left { font-size:11.5px; color:#16a34a; font-weight:600; margin-top:5px; }
        .cfxr-loading, .cfxr-empty { text-align:center; color:#94a3b8; font-size:14px; padding:44px 10px; }
        .cfxr-loading i { font-size:26px; color:#ed007f; margin-bottom:10px; display:block; }
        @media (max-width:860px){
            .cfxr-room-grid { grid-template-columns:1fr; }
            .cfxr-rhead { display:none; }
            .cfxr-rate { grid-template-columns:1fr; gap:8px; text-align:left; }
            .cfxr-pax, .cfxr-price, .cfxr-act { text-align:left; }
        }
        .cfxd-sub { border-top:1px solid #f0f2f4; margin-top:18px; padding-top:16px; }
        .cfxd-sub h4 { margin:0 0 10px; font-size:15px; font-weight:800; color:#0f172a; }
        .cfxd-bagline { display:flex; align-items:center; gap:9px; font-size:14px; color:#334155; padding:4px 0; }
        .cfxd-bagline i { color:#64748b; width:16px; text-align:center; }
        .cfxd-empty { text-align:center; color:#94a3b8; font-size:14px; padding:34px 10px; }
        .cfxd-empty i { display:block; font-size:38px; color:#dbe2ea; margin-bottom:12px; }
        /* Lịch trình bay */
        .cfxd-sched-head { font-size:13.5px; color:#334155; margin-bottom:16px; }
        .cfxd-sched-head .air { display:inline-flex; align-items:center; gap:8px; font-weight:700; color:#0f172a; }
        .cfxd-sched-head .air img { width:22px; height:22px; object-fit:contain; }
        .cfxd-sched-head .meta { color:#64748b; margin-top:6px; }
        .cfxd-tl { position:relative; }
        .cfxd-tl-row { display:grid; grid-template-columns:60px 22px 1fr; align-items:center; column-gap:12px; }
        .cfxd-tl-time { font-size:15px; font-weight:800; color:#0f172a; }
        .cfxd-tl-dot { width:13px; height:13px; border-radius:50%; border:3px solid #ed007f; background:#fff; justify-self:center; box-sizing:border-box; }
        .cfxd-tl-ap { font-size:15px; font-weight:800; color:#0f172a; }
        .cfxd-tl-mid { display:grid; grid-template-columns:60px 22px 1fr; column-gap:12px; padding:6px 0; }
        .cfxd-tl-dur { font-size:12px; color:#94a3b8; text-align:left; }
        .cfxd-tl-bar { border-left:2px dotted #cbd5e1; justify-self:center; width:0; height:30px; }
        .cfxd-tl-flight { font-size:13px; color:#334155; display:flex; align-items:center; gap:7px; } .cfxd-tl-flight img{ width:18px;height:18px;object-fit:contain } .cfxd-tl-flight b{ color:#e2711d; font-weight:700 }
        .cfxd-tl-transit { grid-column:1/-1; margin:6px 0; padding:8px 12px; background:#fff7ed; border-radius:8px; font-size:12.5px; color:#9a5b1e; }
        

        .cbf-resultbar { font-size:14px; color:#475569; margin:4px 2px 16px; }
        .cbf-resultbar b { font-size:20px; font-weight:800; color:#ed007f; }
        .cbf-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(248px,1fr)); gap:18px; }
        .cbf-card { background:#fff; border:1px solid #eef0f3; border-radius:10px; overflow:hidden; text-decoration:none; color:inherit; display:flex; flex-direction:column; transition:transform .18s,box-shadow .18s,border-color .18s; }
        .cbf-card:hover { transform:translateY(-4px); box-shadow:0 14px 30px rgba(20,20,40,.12); border-color:#f3d4e7; }
        .cbf-imgwrap { position:relative; aspect-ratio:16/10; background:#e2e8f0; overflow:hidden; }
        .cbf-imgwrap img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .35s; }
        .cbf-card:hover .cbf-imgwrap img { transform:scale(1.06); }
        .cbf-imgwrap .ph { width:100%; height:100%; display:flex; align-items:center; justify-content:center; color:#cbd5e1; font-size:30px; }
        .cbf-badges { position:absolute; top:9px; left:9px; z-index:1; display:flex; gap:5px; flex-wrap:wrap; }
        .cbf-badge { font-size:10.5px; font-weight:700; padding:4px 9px; border-radius:8px; color:#fff; box-shadow:0 2px 8px rgba(0,0,0,.18); }
        .cbf-badge.feat { background:#ed007f; } .cbf-badge.promo { background:#f97316; } .cbf-badge.save { background:#16a34a; }
        .cbf-nd { position:absolute; bottom:9px; right:9px; z-index:1; background:rgba(0,0,0,.55); color:#fff; font-size:11px; font-weight:700; padding:4px 9px; border-radius:8px; }
        .cbf-body { padding:14px 15px 16px; display:flex; flex-direction:column; flex:1; }
        .cbf-type { font-size:11px; color:#ed007f; font-weight:700; text-transform:uppercase; letter-spacing:.03em; }
        .cbf-name { font-size:15px; font-weight:700; color:#0f172a; margin:5px 0 7px; line-height:1.35; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:40px; }
        .cbf-route { font-size:12.5px; color:#64748b; margin-bottom:9px; } .cbf-route i { color:#ed007f; }
        .cbf-meta { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:12px; }
        .cbf-tag { font-size:10.5px; background:#f6f3f8; color:#6b5563; border-radius:8px; padding:3px 8px; } .cbf-tag i { color:#ed007f; }
        .cbf-price { margin-top:auto; border-top:1px dashed #eee; padding-top:11px; }
        .cbf-price .lbl { font-size:11px; color:#94a3b8; } .cbf-price .orig { font-size:12px; color:#94a3b8; text-decoration:line-through; margin-left:6px; }
        .cbf-price .now { font-size:20px; font-weight:800; color:#ed007f; } .cbf-price .per { font-size:12px; color:#64748b; }
        .cbf-price .contact { font-size:16px; font-weight:700; color:#0369a1; }
