/* ═══════════════════════════════════════════════════════════
   Tour detail v2 - Vietravel-inspired layout, brand pink #d6248c
   ═══════════════════════════════════════════════════════════ */
.ct2-page { background: #f7f8fa; padding-bottom: 60px; }
.ct2-wrap { max-width: 1200px; margin: 0 auto; padding: 0 16px; }

/* Breadcrumb */
.ct2-bc { padding: 14px 0 10px; font-size: 13px; color: #666; }
.ct2-bc a { color: #666; text-decoration: none; }
.ct2-bc a:hover { color: #d6248c; }
.ct2-bc .sep { margin: 0 6px; color: #ccc; }
.ct2-bc .cur { color: #d6248c; font-weight: 500; }

/* Hero gallery - adaptive layout theo số ảnh */
.ct2-hero { background: #fff; border-radius: 14px; overflow: hidden; box-shadow: 0 2px 12px rgba(0,0,0,.04); margin-bottom: 18px; }
.ct2-hero.ct2-hero-top-title .ct2-hero-head { padding: 22px 24px 12px; }
.ct2-hero.ct2-hero-top-title .ct2-hero-gallery { padding: 0 24px 14px; }
.ct2-hero-gallery { display: grid; gap: 6px; border-radius: 10px; overflow: hidden; }
.ct2-hero-gallery > div { overflow: hidden; position: relative; border-radius: 8px; }
.ct2-hero-gallery > div > a.ct2-gal-link { display: block; width: 100%; height: 100%; }
.ct2-hero-gallery img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .5s ease; will-change: transform; }
.ct2-hero-gallery > div { cursor: pointer; }
.ct2-hero-gallery > div:hover img { transform: scale(1.08); }
.ct2-hero-gallery .ct2-more-overlay { position: absolute; inset: 0; background: rgba(0,0,0,.5); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 16px; font-weight: 600; }
/* Image count badge - bottom-right của ảnh BIG (chỉ ảnh đầu) */
.ct2-img-count { position: absolute; right: 12px; bottom: 12px; background: rgba(0,0,0,.65); color: #fff; padding: 6px 12px; border-radius: 16px; font-size: 13px; font-weight: 500; display: inline-flex; align-items: center; gap: 6px; pointer-events: none; backdrop-filter: blur(2px); }
.ct2-img-count svg { flex-shrink: 0; }
/* Discount ribbon - top-left của ảnh BIG */
.ct2-img-disc { position: absolute; left: 0; top: 14px; background: #e63946; color: #fff; padding: 6px 14px 6px 12px; font-size: 13px; font-weight: 600; border-radius: 0 4px 4px 0; box-shadow: 0 2px 6px rgba(0,0,0,.18); pointer-events: none; }
.ct2-img-disc::after { content: ''; position: absolute; right: -8px; top: 0; bottom: 0; width: 8px; background: linear-gradient(135deg, #e63946 50%, transparent 50%) bottom, linear-gradient(45deg, #e63946 50%, transparent 50%) top; background-size: 100% 50%; background-repeat: no-repeat; }

/* 1 ảnh: full-width banner */
.ct2-hero-gallery.count-1 { grid-template-columns: 1fr; grid-template-rows: 380px; }
/* 2 ảnh: chia đôi */
.ct2-hero-gallery.count-2 { grid-template-columns: 1fr 1fr; grid-template-rows: 360px; }
/* 3 ảnh: 1 lớn trái + 2 stack phải */
.ct2-hero-gallery.count-3 { grid-template-columns: 2fr 1fr; grid-template-rows: 198px 198px; }
.ct2-hero-gallery.count-3 > div:first-child { grid-row: 1 / 3; }
/* 4 ảnh: 1 lớn trái + 3 stack phải */
.ct2-hero-gallery.count-4 { grid-template-columns: 2fr 1fr; grid-template-rows: 132px 132px 132px; }
.ct2-hero-gallery.count-4 > div:first-child { grid-row: 1 / 4; }
/* 5+ ảnh: 1 lớn trái + grid 2x2 phải */
.ct2-hero-gallery.count-5plus { grid-template-columns: 2fr 1fr 1fr; grid-template-rows: 198px 198px; }
.ct2-hero-gallery.count-5plus > div:first-child { grid-row: 1 / 3; }

/* Hero header strip */
.ct2-hero-head { padding: 20px 24px; }
.ct2-hero-title { font-size: 22px; font-weight: 700; color: #d6248c; line-height: 1.35; margin: 0 0 12px; }
/* "Tour hot" (CMS checkbox mdahot): tiêu đề VÀNG + NHẤP NHÁY (đồng bộ card gt) */
/* "Tour hot" (client 2026-07-11, chỉnh lần 2): chữ ĐEN, chỉ NHẤP NHÁY sang vàng — KHÔNG để vàng cố định.
   Blink = đổi màu đen ⇄ vàng #fef011 (trước: fade opacity trên chữ vàng #e6a700, rồi #fcd015). */
/* h1 vốn hồng; tour hot → chữ ĐEN nhấp nháy vàng. KHÔNG !important (sẽ đè chết @keyframes). */
.ct2-page-title.gt-title-hot { animation: dlvHotBlink 1.1s ease-in-out infinite; }
/* Vàng nhấp nháy tour hot = #fef011 (client chốt 2026-07-11). Dùng ĐỒNG BỘ mọi nơi: card tour
   (box/gt_tour_card.php), landing, flash sale, carousel, kết quả tìm kiếm, h1 trang chi tiết này. */
@keyframes dlvHotBlink { 0%, 100% { color: #000; } 50% { color: #fef011; } }
@media (prefers-reduced-motion: reduce) { .ct2-page-title.gt-title-hot { animation: none; color: #000; } }
.ct2-hero-meta-wrap { padding: 6px 24px 20px; }
.ct2-hero.ct2-hero-top-title .ct2-hero-meta-wrap { padding-top: 14px; }
/* Redesign 2026-07: title full-width TRÊN grid; gallery + meta nằm CỘT TRÁI (.ct2-main), box giá pin cột phải.
   → gallery 1 ảnh không còn full-width, thu hẹp bằng bề rộng cột trái. */
.ct2-page-title { font-size: 22px; font-weight: 700; color: #d6248c; line-height: 1.35; margin: 0 0 16px; }
/* ═══ KHUNG ẢNH DÙNG CHUNG (.tour-media-frame): ảnh HERO + ảnh trong LỊCH TRÌNH đồng bộ khung ═══
   width 100% · max-width 760 · aspect-ratio 16/9 · bo 12 · object-fit cover center · căn giữa (margin auto). */
.tour-media-frame { width: 100%; max-width: 760px; aspect-ratio: 16 / 9; margin: 0 auto; border-radius: 12px; overflow: hidden; }
.tour-media-frame img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; }
/* ═══ GALLERY HERO REDESIGN (.ct2-gallery2): 1 ảnh chính + arrows + nút phóng to + dải thumbnail ═══
   Card TRẮNG full bề rộng cột (căn đều mép tab/section); ảnh chính 684×385 (16/9) = cùng cỡ ảnh lịch trình. */
.ct2-main > .ct2-gallery2 { display: block; width: 100%; margin: 0 0 12px; background: #fff; padding: 18px; border-radius: 12px; box-shadow: 0 2px 8px rgba(0,0,0,.04); }
.ct2-g2-stage { position: relative; max-width: 684px; margin: 0 auto; aspect-ratio: 16 / 9; border-radius: 12px; overflow: hidden; }
.ct2-g2-main { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; cursor: zoom-in; }
/* Nút chuyển ảnh prev/next 2 bên, canh giữa dọc */
.ct2-g2-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 42px; height: 42px; border-radius: 50%; background: rgba(255,255,255,.92); border: none; box-shadow: 0 3px 12px rgba(0,0,0,.22); color: #d6248c; font-size: 26px; line-height: 1; font-weight: 600; display: flex; align-items: center; justify-content: center; cursor: pointer; z-index: 4; padding: 0 0 3px; transition: background .15s, color .15s; }
.ct2-g2-nav:hover { background: #d6248c; color: #fff; }
.ct2-g2-prev { left: 12px; }
.ct2-g2-next { right: 12px; }
/* Nút phóng to ảnh (mở fslightbox) - góc dưới phải */
.ct2-g2-zoom { position: absolute; right: 12px; bottom: 12px; width: 40px; height: 40px; border-radius: 10px; background: rgba(255,255,255,.92); border: none; box-shadow: 0 3px 12px rgba(0,0,0,.22); color: #333; display: flex; align-items: center; justify-content: center; cursor: pointer; z-index: 4; transition: background .15s, color .15s; }
.ct2-g2-zoom:hover { background: #d6248c; color: #fff; }
/* Dải thumbnail dưới ảnh chính */
.ct2-g2-thumbs { display: flex; gap: 10px; justify-content: center; flex-wrap: nowrap; overflow-x: auto; max-width: 684px; margin: 12px auto 2px; padding: 4px 2px; scrollbar-width: thin; scrollbar-color: #e5c9da transparent; }
.ct2-g2-thumbs::-webkit-scrollbar { height: 6px; }
.ct2-g2-thumbs::-webkit-scrollbar-thumb { background: #e5c9da; border-radius: 3px; }
.ct2-g2-thumb { flex: 0 0 auto; width: 74px; height: 54px; border-radius: 10px; overflow: hidden; border: 2px solid transparent; background: none; padding: 0; cursor: pointer; opacity: .65; transition: border-color .15s, opacity .15s; }
.ct2-g2-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ct2-g2-thumb:hover { opacity: 1; }
.ct2-g2-thumb.is-active { border-color: #d6248c; opacity: 1; }
/* Card "thông tin ngắn" dưới ảnh: ẨN theo yêu cầu (thông tin đã có ở box giá phải). */
.ct2-main > .ct2-hero-meta-wrap { display: none; }
@media (max-width: 767px) {
    .ct2-main > .ct2-gallery2 { padding: 10px; }
    .ct2-g2-nav { width: 36px; height: 36px; font-size: 22px; }
    .ct2-g2-prev { left: 6px; } .ct2-g2-next { right: 6px; }
    .ct2-g2-thumb { width: 60px; height: 44px; }

    .ct2-bc, .ct2-page-title, .ct2-title-meta { padding-left: 10px; padding-right: 10px; }

    .ct2-page { 
        padding-bottom: 20px;
    }
}
/* Ảnh trong "Lịch trình chi tiết" (CKEditor) DÙNG khung chung: 760/16:9/bo 12/cover/căn giữa
   (đè rule .ct2-rich img cũ max-width:100%!important;height:auto!important;radius:8px). */
#sec-itinerary .ct2-day-content img, #sec-itinerary .ct2-day-slot-content img, #sec-itinerary .ct2-rich img {
    display: block; width: 100% !important; max-width: 760px !important; aspect-ratio: 16 / 9; height: auto !important;
    object-fit: cover; object-position: center; border-radius: 12px !important; margin: 12px auto;
}
.ct2-hero-meta { display: flex; flex-wrap: wrap; gap: 14px 28px; font-size: 15px; color: #444; }
.ct2-hero-meta-item { display: flex; align-items: center; gap: 6px; }
.ct2-hero-meta-item svg { color: #d6248c; flex-shrink: 0; }
.ct2-hero-meta-item > i.ct2-meta-ico { color: #d6248c; font-size: 15px; flex-shrink: 0; }
.ct2-hero-meta-item b { color: #222; font-weight: 600; }
/* Toolbar dưới tiêu đề tour: rating + lượt đánh giá + lượt xem + nút Tải PDF (hiện cả desktop & mobile) */
.ct2-title-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; margin: -4px 0 16px; font-size: 14px; color: #555; }
/* Toolbar chuyển xuống cuối (sau "Để lại số điện thoại"): bỏ margin âm kéo lên, thêm khoảng cách trên. */
.ct2-title-meta--bottom { margin: 4px 0 8px; }
.ct2-tm-item { display: inline-flex; align-items: center; gap: 6px; }
.ct2-tm-item svg { flex-shrink: 0; }
.ct2-tm-rating b { color: #f5a623; font-size: 15px; font-weight: 700; }
.ct2-tm-rating .ct2-tm-sub { color: #9a9a9a; }
.ct2-tm-rating svg { color: #f5a623; }
.ct2-pdf-btn { display: inline-flex; align-items: center; gap: 7px; margin-left: auto; padding: 7px 15px; border: 1.5px solid #d6248c; color: #d6248c; background: #fff; border-radius: 8px; font-size: 13px; font-weight: 700; text-decoration: none; transition: background .15s, color .15s; }
.ct2-pdf-btn:hover { background: #d6248c; color: #fff; }
.ct2-pdf-btn svg { flex-shrink: 0; }
@media (max-width: 767px) { .ct2-pdf-btn { margin-left: 0; } }
.ct2-hero-meta .ct2-trans-icon { font-size: 16px; }
.ct2-hero-meta .ct2-trans-icon i { color: #d6248c; }

/* 2-column layout. minmax(0,..) cho cột content co được - nếu để 1fr thuần, min-width:auto
   = min-content khiến bảng CMS (rộng) nong cột vượt viewport → bị clip cắt chữ. */
/* Tỉ lệ 7:3 (trái:phải): cột trái (ảnh + tab + nội dung) rộng 70%, box giá cột phải thu hẹp 30%.
   gallery lấp đầy cột trái → không còn khoảng trống bên phải ảnh. */
.ct2-grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 3fr); gap: 22px; align-items: start; }
.ct2-main { min-width: 0; }
/* Sidebar pin: dùng JS toggle .is-stuck (sticky native bị body overflow-x:hidden break) */
.ct2-aside.is-stuck .ct2-book-card { position: fixed !important; top: 116px; z-index: 50; }
@media (max-width: 767px) { .ct2-aside.is-stuck .ct2-book-card { top: 158px; } }
/* Mobile: box giá "Đặt tour" được JS dời lên hero (ngay sau ảnh) - canh lề 16px như hero */
@media (max-width: 767px) { .ct2-hero .ct2-book-card { margin: 8px 16px 4px; } }
@media (max-width: 992px) {
    .ct2-grid { grid-template-columns: minmax(0, 1fr); }
    .ct2-aside { position: static; }
    /* Tablet: tất cả layout đều thành 2 cột (1 lớn trái + 1 cột thumbnails phải) */
    .ct2-hero-gallery.count-3,
    .ct2-hero-gallery.count-4,
    .ct2-hero-gallery.count-5plus { grid-template-columns: 1fr 1fr; grid-template-rows: 180px 180px; }
    .ct2-hero-gallery.count-3 > div:first-child,
    .ct2-hero-gallery.count-4 > div:first-child,
    .ct2-hero-gallery.count-5plus > div:first-child { grid-row: auto; grid-column: 1 / 3; }
    .ct2-hero-gallery.count-1 { grid-template-rows: 280px; }
    .ct2-hero-gallery.count-2 { grid-template-rows: 240px; }
}
@media (max-width: 600px) {
    /* Mobile: chỉ hiện ảnh đầu, full width */
    .ct2-hero-gallery { grid-template-columns: 1fr !important; grid-template-rows: 220px !important; }
    .ct2-hero-gallery > div { display: none; }
    .ct2-hero-gallery > div:first-child { display: block; grid-column: auto !important; grid-row: auto !important; }
}

/* Anchor nav - JS pin via position:fixed (sticky không hoạt động vì body có overflow-x:hidden) */
.ct2-tabs { background: #fff; border-radius: 10px; box-shadow: 0 2px 8px rgba(0,0,0,.04); margin-bottom: 18px; padding: 0 8px; transition: box-shadow .2s, border-radius .2s; }
/* z-index PHẢI < 9990 (#vnt-header-top): header là stacking context nên menu/search
   bên trong nó bị kẹp ở mức 9990 so với bên ngoài - tabs cao hơn sẽ đè lên menu đang mở. */
.ct2-tabs.is-stuck { position: fixed !important; top: 100px; z-index: 9980; border-radius: 0 0 10px 10px; box-shadow: 0 6px 18px rgba(0,0,0,.12); margin: 0; }
/* Khe giữ chỗ BỌC NGOÀI thanh tab (2026-07-28): cao cố định bằng chiều cao thật của tab
   (kể cả margin) và KHÔNG đổi khi tab chuyển sang fixed → không còn cú nhảy ~116px của
   nội dung bên dưới, tức hết giật/nhấp nháy khi cuộn qua mốc dính. JS chỉ set height 1 lần
   (và khi resize), không đụng gì lúc toggle. */
.ct2-tabs-slot { position: relative; }
.ct2-tabs ul { display: flex; gap: 0; list-style: none; padding: 0; margin: 0; overflow-x: auto; scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; }
.ct2-tabs ul::-webkit-scrollbar { display: none; }
.ct2-tabs a { display: block; padding: 14px 20px; font-size: 14px; font-weight: 500; color: #555; text-decoration: none; border-bottom: 3px solid transparent; white-space: nowrap; transition: all .2s; }
.ct2-tabs a:hover, .ct2-tabs a.active { color: #d6248c; border-bottom-color: #d6248c; }
@media (max-width: 767px) {
    /* Sticky bám SÁT dưới header mobile (50px) - bỏ top:90px gây hở 40px lòi nội dung.
       Full-bleed + bỏ bo góc để thành thanh tab gọn, hết kiểu card lơ lửng. */
    .ct2-tabs { padding: 0; position: relative; }
    .ct2-tabs.is-stuck {
        top: 50px; left: 0; right: 0;
        border-radius: 0; padding: 0;
        box-shadow: 0 3px 10px rgba(0,0,0,.1);
        border-bottom: 1px solid #f0e6ee;
    }
    .ct2-tabs a { padding: 12px 16px; font-size: 13.5px; }
    /* Fade mép phải gợi ý còn tab cuộn ngang */
    .ct2-tabs::after {
        content: ''; position: absolute; top: 0; right: 0; bottom: 0; width: 26px;
        background: linear-gradient(90deg, rgba(255,255,255,0), #fff 75%);
        pointer-events: none; z-index: 2;
    }
}

/* Section card */
/* scroll-margin-top: header 100px + tabs sticky (~52px) + gap → card section không lọt dưới thanh tab dính.
   Đặt 186px (bù thêm so với 168 vì lúc smooth-scroll thanh tab chuyển is-stuck làm lệch ~18px). */
.ct2-section { background: #fff; border-radius: 12px; padding: 22px 24px; margin-bottom: 18px; box-shadow: 0 2px 8px rgba(0,0,0,.04); scroll-margin-top: 186px; }
/* Nội dung CMS dán vào (bảng/ảnh) phải co theo khung - bảng rộng cho cuộn ngang trong khung
   thay vì nong cả layout; ảnh không vượt khung. min-width:0 để section co được trong grid. */
.ct2-section, .ct2-main { min-width: 0; }
.ct2-section img, .ct2-day-slot-content img { max-width: 100%; height: auto; }
.ct2-section table, .ct2-day-slot-content table { display: block; width: 100%; max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.ct2-section table td, .ct2-section table th { word-break: break-word; }
.ct2-section h2 { font-family: var(--dlv-font-sans); font-size: 20px; font-weight: 700; line-height: 1.35; color: #d6248c; margin: 0 0 16px; padding-bottom: 12px; border-bottom: 2px solid #fdf0f7; display: flex; align-items: center; gap: 10px; }
.ct2-section h2 svg { color: #d6248c; }
/* Body description: force Arial, override inline font-family from CMS-pasted content */
.ct2-section .ct2-rich { font-family: var(--dlv-font-sans); font-size: 16px; color: #333; line-height: 1.8; }
.ct2-section .ct2-rich *:not(h3):not(h4) { font-family: var(--dlv-font-sans)!important; }
.ct2-section .ct2-rich h3, .ct2-section .ct2-rich h4 { font-family: var(--dlv-font-sans)!important; font-size: 17px; color: #d6248c; margin: 18px 0 8px; font-weight: 600; }
.ct2-section .ct2-rich p { margin: 0 0 12px; }
.ct2-section .ct2-rich ul, .ct2-section .ct2-rich ol { padding-left: 24px; margin: 10px 0 14px; }
/* Khôi phục bullet/số cho list nội dung CKEditor: reset global (style/reset.css, global.css)
   đặt `ol,ul{list-style:none}` → list trong .ct2-rich mất chấm đầu dòng. Ép lại list-style. */
.ct2-section .ct2-rich ul { list-style: disc; }
.ct2-section .ct2-rich ol { list-style: decimal; }
.ct2-section .ct2-rich ul ul { list-style: circle; }
.ct2-section .ct2-rich li { margin-bottom: 6px; display: list-item; }
/* ── Chuẩn hoá typography nội dung sapo/CKEditor (Điểm nhấn hành trình) ──
   Nội dung CMS dính inline gây "phông & khoảng cách không đồng đều":
   (1) text-align:justify → giãn chữ không đều; ép về left.
   (2) <table cellpadding/cellspacing="15"> → khe hở lớn, cột lệch; bỏ spacing,
       padding đều, cột nhãn (Hành trình/Lịch trình/Khởi hành/Chuyến bay) cố định
       để các dòng thẳng hàng.
   (3) cả đoạn intro bọc <em> → nghiêng, trông như khác phông; ép normal (giữ <strong> đậm),
       chỉ trong khối #sec-highlights để không đụng lịch trình từng ngày. */
.ct2-section .ct2-rich [style*="justify"] { text-align: left !important; }
.ct2-section .ct2-rich table { width: 100% !important; border-collapse: collapse !important; margin: 0 0 14px; }
.ct2-section .ct2-rich table td, .ct2-section .ct2-rich table th { padding: 4px 12px 4px 0 !important; vertical-align: top; line-height: 1.55; }
.ct2-section .ct2-rich table td:first-child { width: 120px; white-space: nowrap; }
#sec-highlights .ct2-rich, #sec-highlights .ct2-rich em, #sec-highlights .ct2-rich i { font-style: normal !important; }
/* Ảnh trong nội dung CKEditor (.ct2-rich): CKEditor hay chèn width/height CỐ ĐỊNH (inline
   style/attr) → mobile co bề ngang nhưng height giữ nguyên = ảnh bị bóp dọc. !important để
   thắng inline, ép cao tự động theo tỉ lệ. KHÔNG đụng thumbnail template (.ct2-related-img,
   .ct2-hero-gallery — ảnh ngoài .ct2-rich). */
.ct2-rich img, .ct2-day-content img, .ct2-day-slot-content img { max-width: 100% !important; height: auto !important; border-radius: 8px; }

/* Itinerary accordion (collapsible per day) */
.ct2-day-acc { background: #fafafa; border: 1px solid #f0f0f0; border-radius: 10px; margin-bottom: 12px; overflow: hidden; transition: background .2s, border-color .2s, box-shadow .2s; }
.ct2-day-acc:last-child { margin-bottom: 0; }
.ct2-day-acc:hover { border-color: #f0c8dc; }
.ct2-day-acc[open] { background: #fff; border-color: #d6248c; box-shadow: 0 4px 14px rgba(214,36,140,.1); }
.ct2-day-acc summary { display: flex; align-items: center; gap: 14px; padding: 14px 18px; cursor: pointer; list-style: none; user-select: none; }
.ct2-day-acc summary::-webkit-details-marker { display: none; }
.ct2-day-acc summary::marker { display: none; content: ''; }
.ct2-day-acc-title { flex: 1; min-width: 0; }
.ct2-day-acc-title h3 { margin: 0; font-size: 16.5px; font-weight: 500; color: #222; line-height: 1.5; }
.ct2-day-acc[open] .ct2-day-acc-title h3 { color: #d6248c; }
.ct2-day-acc-meal { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: #666; }
.ct2-day-acc-meal svg { color: #d6248c; flex-shrink: 0; }
.ct2-day-acc-chevron { color: #999; flex-shrink: 0; transition: transform .25s, color .2s; }
.ct2-day-acc[open] .ct2-day-acc-chevron { transform: rotate(180deg); color: #d6248c; }
.ct2-day-acc-body { padding: 4px 18px 18px; }
/* Nội dung lịch trình 1 ngày: 1 khối ckeditor trên nền xám nhẹ cho nổi chữ đen */
.ct2-day-content { background: #f5f6f7; border-radius: 8px; padding: 14px 16px; color: #222; }
.ct2-day-content > *:last-child { margin-bottom: 0; }
.ct2-day-content img { margin: 8px 0; }

/* Smooth scroll cho mọi anchor-link (tab nav, CTA) - tôn trọng scroll-margin-top của section.
   Đặt CẢ html lẫn body vì body là scroll-container ở trang này (body{overflow-x:hidden} ở
   style-checkout.css → overflow-y computed=scroll) — chỉ để trên html thì scroll của body không mượt. */
html, body { scroll-behavior: smooth; }

/* Điểm nhấn hành trình (sapo): clamp nội dung + nút Xem thêm để khách thấy ngay chỗ đặt tour */
.ct2-clamp { position: relative; overflow: hidden; }
.ct2-clamp-section.is-clamped .ct2-clamp { max-height: 180px; }
.ct2-clamp-section.is-clamped .ct2-clamp::after {
    content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 72px;
    background: linear-gradient(to bottom, rgba(255,255,255,0), #fff); pointer-events: none;
}
.ct2-morebtn {
    display: inline-flex; align-items: center; gap: 6px; margin-top: 12px;
    background: none; border: 1px solid #d6248c; color: #d6248c; font: 700 14.5px/1 'Muli','Mulish',sans-serif;
    padding: 8px 16px; border-radius: 20px; cursor: pointer; transition: background .18s, color .18s;
}
.ct2-morebtn:hover { background: #d6248c; color: #fff; }
/* `display:inline-flex` của author đè `[hidden]{display:none}` của UA stylesheet →
   nút vẫn hiện với nội dung ngắn (bấm vào lại THU nội dung, tưởng nút hỏng). Ép ẩn lại. */
.ct2-morebtn[hidden] { display: none; }
.ct2-morebtn svg { transition: transform .25s; }
.ct2-clamp-section:not(.is-clamped) .ct2-morebtn svg { transform: rotate(180deg); }

/* ── Tab con trong "Điểm nhấn hành trình": Đặc điểm nổi bật / Tổng quan hành trình ──
   Kiểu pill: máng nền xám bo tròn, tab đang chọn là viên thuốc hồng nổi lên.
   KHÔNG dùng .ct2-clamp-section cho panel (tránh JS sticky-tab cũ bắt trúng);
   clamp của panel dùng bộ selector riêng bên dưới. */
.ct2-subtabs {
    display: flex; gap: 4px; padding: 4px; margin: 0 0 18px;
    background: #f4f5f7; border-radius: 999px; max-width: 520px;
}
.ct2-subtab {
    flex: 1 1 0; min-width: 0; border: 0; background: none; cursor: pointer;
    padding: 11px 16px; border-radius: 999px;
    font: 600 14.5px/1.2 var(--dlv-font-sans); color: #5a5a5a;
    transition: background .2s, color .2s, box-shadow .2s;
}
.ct2-subtab:hover { color: #d6248c; }
.ct2-subtab.is-active {
    background: linear-gradient(90deg, #e8348f, #d6248c);
    color: #fff; box-shadow: 0 3px 10px rgba(214,36,140,.28);
}
/* Tour chỉ có 1 trong 2 nội dung → PHP không render thanh tab, và panel duy nhất
   luôn được gắn .is-active nên vẫn hiện bình thường. */
.ct2-subpanel { display: none; }
.ct2-subpanel.is-active { display: block; }
/* 240px ≈ 180px cũ + 2 dòng (line-height 1.8 × 16px). Đổi số này PHẢI đổi luôn
   hằng COLLAPSED trong static-assets/js/tour-detail-highlight-tabs.js. */
.ct2-subpanel.is-clamped .ct2-clamp { max-height: 240px; }
.ct2-subpanel.is-clamped .ct2-clamp::after {
    content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 72px;
    background: linear-gradient(to bottom, rgba(255,255,255,0), #fff); pointer-events: none;
}
.ct2-subpanel:not(.is-clamped) .ct2-morebtn svg { transform: rotate(180deg); }
@media (max-width: 767px) {
    /* Toggle CĂN ĐÚNG BỀ NGANG khối nội dung (client 2026-07-27): trước đó để inline-flex
       co theo chữ nên mép phải hụt ~33px so với tiêu đề/nội dung ngay trên (đo iPhone 13:
       toggle 14→343 trong khi h2 và text 14→376) → nhìn như bị lệch/thụt vào.
       Nay kéo full bề ngang khối, 2 nút chia đôi đều như bản desktop.
       Vẫn giữ phần "nhỏ gọn": padding track 3px + nút 8px/13px cho bớt cao. */
    .ct2-subtabs { display: flex; width: 100%; max-width: 100%; padding: 3px; margin-bottom: 14px; }
    .ct2-subtab { flex: 1 1 0; padding: 8px 10px; font-size: 13px; }
}

/* Section thu gọn (Dịch vụ bao gồm, Lưu ý): collapse mặc định, click heading để mở */
.ct2-collapse-head { cursor: pointer; user-select: none; }
/* Ẩn hẳn nhãn "(Xem thêm)"/"(Thu gọn)" ở heading 2 mục thu gọn (Dịch vụ bao gồm, Lưu ý)
   — desktop + mobile. Vẫn bấm heading để mở/đóng + chevron xoay bình thường. */
.ct2-collapse-hint { display: none !important; }
.ct2-collapse-chevron { margin-left: auto; color: #999; flex-shrink: 0; transition: transform .25s, color .2s; }
.ct2-collapse-section:not(.is-collapsed) .ct2-collapse-chevron { transform: rotate(180deg); color: #d6248c; }
.ct2-collapse-section.is-collapsed .ct2-collapse-head { margin-bottom: 0; padding-bottom: 0; border-bottom: none; }
.ct2-collapse-section.is-collapsed .ct2-collapse-body { display: none; }
.ct2-collapse-body { padding-top: 4px; }

/* Mobile: NÉN padding bề ngang — TỔNG các tầng từ mép màn hình tới chữ ≤ 14px/bên
   (trước: wrap16+section16+body14+content14 = 60px/bên, mất ~31% bề ngang).
   Công thức: wrap 4 + section 10 = 14 cho text thường; khối lồng sâu hơn
   (accordion lịch trình, calendar) BLEED ra bằng margin âm -8px rồi padding 8px
   → tổng vẫn 14. Panel xám .ct2-day-content bỏ nền (transparent, padding ngang 0)
   vì không còn quỹ cho 1 tầng nền riêng; accordion mở đã có nền trắng + viền hồng. */
@media (max-width: 767px) {
    .ct2-wrap { padding: 0 4px; }
    .ct2-section { padding: 16px 10px; }
    .ct2-hero-head,
    .ct2-hero.ct2-hero-top-title .ct2-hero-head { padding: 14px 10px 8px; }
    .ct2-hero.ct2-hero-top-title .ct2-hero-gallery { padding: 0 10px 12px; }
    .ct2-hero-meta-wrap { padding: 4px 10px 14px; }
    .ct2-day-acc { margin-left: -8px; margin-right: -8px; }
    .ct2-day-acc summary { padding: 12px 8px; gap: 10px; }
    .ct2-day-acc-body { padding: 2px 8px 12px; }
    .ct2-day-content { padding: 8px 0 0; background: transparent; border-radius: 0; }
    /* rule gốc .ct2-cal-grid-wrapper nằm SAU media block này → cần specificity cao hơn */
    .ct2-section .ct2-cal-grid-wrapper, .ct2-cal-grid-wrapper { margin-left: -8px; margin-right: -8px; padding: 18px 8px 14px; }
    .ct2-section h2 { font-size: 18px; }
    .ct2-hero-title { font-size: 19px; }
}

/* Calendar lịch khởi hành */
/* Desktop: căn TRÁI (kế thừa justify-content flex-start của .ct2-section h2 như các mục khác),
   chữ thường (text HTML đã đổi từ "LỊCH KHỞI HÀNH" → "Lịch khởi hành"). Giữ bỏ underline. */
.ct2-cal-section h2 { border-bottom: none; padding-bottom: 0; margin-bottom: 20px; }
/* Mobile: tiêu đề "Lịch khởi hành" căn TRÁI như các section khác (client 2026-07-11 — trước căn giữa) */
/* UI list-style (2026-07-10): tab tháng pill NGANG trên cùng + danh sách hàng lịch
   [ngày] [tên/mã lịch] [còn chỗ] [giá] [Chọn] thay calendar grid cũ. */
.ct2-cal-layout { display: block; }
.ct2-cal-months { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 16px; }
.ct2-cal-month-btn { padding: 9px 20px; background: #fff; border: 1.5px solid #e5e5e5; border-radius: 12px; cursor: pointer; transition: all .15s; font-family: inherit; text-align: center; line-height: 1.25; color: #999; }
.ct2-cal-month-btn-l1 { display: block; font-size: 14.5px; font-weight: 700; }
.ct2-cal-month-btn-l2 { display: block; font-size: 12.5px; font-weight: 500; }
.ct2-cal-month-btn:hover { border-color: #f0c8dc; color: #d6248c; background: #fdf0f7; }
.ct2-cal-month-btn.active { background: #d6248c; color: #fff; border-color: #d6248c; box-shadow: 0 4px 14px rgba(214,36,140,.3); }
.ct2-cal-grid-wrapper { background: #fff; border: 1px solid #f0f0f0; border-radius: 12px; padding: 16px 16px 14px; box-shadow: 0 1px 4px rgba(0,0,0,.03); }
/* 2026-07-22 (v3): Danh sách = hiện HẾT các tháng (có nhãn ngăn), Lịch tháng = mỗi lần 1 tháng. */
.ct2-cal-month-display { display: block; }
.ct2-cal-layout.is-calview .ct2-cal-month-display { display: none; }
.ct2-cal-layout.is-calview .ct2-cal-month-display.active { display: block; }
.ct2-cal-heading { font-size: 15px; font-weight: 700; color: #222; padding: 8px 0; }
/* Nhãn ngăn theo tháng trong kiểu danh sách; kiểu lịch đã có tiêu đề tháng riêng nên ẩn. */
.ct2-cal-month-sep { font-size: 13.5px; font-weight: 700; color: #d6248c; margin: 4px 0 10px; }
.ct2-cal-month-display:first-child .ct2-cal-month-sep { margin-top: 0; }
.ct2-cal-month-display + .ct2-cal-month-display .ct2-cal-month-sep { margin-top: 18px; padding-top: 16px; border-top: 1px solid #f2f2f2; }
.ct2-cal-layout.is-calview .ct2-cal-month-sep { display: none; }
/* Nút ‹ › đổi tháng trong lưới lịch */
.ct2-cmg-nav { display: flex; align-items: center; justify-content: center; gap: 16px; margin-bottom: 10px; }
.ct2-cmg-title { font-size: 15px; font-weight: 700; color: #222; min-width: 130px; text-align: center; }
.ct2-cmg-nav-btn { width: 32px; height: 32px; border: 0; border-radius: 50%; background: #f5f5f5; color: #666;
    display: inline-flex; align-items: center; justify-content: center; cursor: pointer; transition: background .15s, color .15s; }
.ct2-cmg-nav-btn:hover:not(:disabled) { background: #d6248c; color: #fff; }
.ct2-cmg-nav-btn:disabled { opacity: .35; cursor: not-allowed; }
/* Toggle "Xem N ngày đã hết chỗ" — nhóm lịch sold-out ẩn xuống cuối, bấm mới xổ (2026-07-11) */
.ct2-sched-soldout-toggle { display: flex; align-items: center; justify-content: center; gap: 7px; width: 100%;
    margin-top: 10px; padding: 9px 0; background: #fafafa; border: 1px dashed #ddd; border-radius: 10px;
    font-family: inherit; font-size: 13px; font-weight: 600; color: #888; cursor: pointer;
    transition: background .15s, color .15s, border-color .15s; }
.ct2-sched-soldout-toggle:hover { background: #fdf0f7; color: #d6248c; border-color: #f0c8dc; }
.ct2-sched-soldout-toggle .ct2-sst-chev { transition: transform .2s; }
.ct2-sched-soldout-toggle[aria-expanded="true"] .ct2-sst-chev { transform: rotate(180deg); }
.ct2-sched-soldout-group { margin-top: 8px; }
.ct2-sched-list { display: flex; flex-direction: column; gap: 12px; }
/* ── Hàng lịch = LƯỚI 5 cột: Khởi hành · Ngày về · Tình trạng · Giá tour · nút Chọn (2026-07-22).
   Hàng tiêu đề .ct2-sched-head-row dùng CHUNG grid-template để các cột thẳng hàng. ── */
/* 2026-07-22 (v9): cột giữa đổi từ "Ngày về" sang "Đặc điểm" (tên lịch) — chừa rộng hơn cho text dài. */
.ct2-sched-head-row,
.ct2-sched-row { display: grid; grid-template-columns: minmax(0,1.05fr) minmax(0,1.75fr) minmax(0,.85fr) minmax(0,1fr) 34px; align-items: center; gap: 14px; }
.ct2-sched-head-row { padding: 2px 18px 8px; font-size: 12px; font-weight: 600; color: #999; }
/* 2026-07-22: bo góc 10px cho đồng bộ hệ thống (trước là pill 999px). */
.ct2-sched-row { padding: 12px 18px; background: #fff; border: 1px solid #ececec; border-radius: 10px; text-decoration: none; color: #222; transition: border-color .15s, box-shadow .15s; -webkit-tap-highlight-color: transparent; }
.ct2-sr-c { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.ct2-sr-lbl { display: none; font-size: 11.5px; font-weight: 600; color: #999; }
/* 2026-07-22 (v13): bỏ dòng thứ trong tuần → ô chỉ còn pill ngày, căn giữa cho cân hàng. */
.ct2-sr-c { justify-content: center; }
.ct2-sr-date { align-self: flex-start; background: #fdf0f7; color: #d6248c; font-weight: 700; font-size: 14.5px; padding: 5px 12px; border-radius: 10px; font-variant-numeric: tabular-nums; }
.ct2-sr-date2 { font-size: 14.5px; font-weight: 700; color: #333; font-variant-numeric: tabular-nums; padding: 5px 0; }
/* [KHÔNG CÒN DÙNG TỪ 2026-07-22] Cột "tên lịch" (.ct2-sr-codewrap/.ct2-sr-code/.ct2-sr-full) đã bị
   bỏ khỏi hàng lịch khi đổi sang bố cục Khởi hành · Ngày về · Tình trạng · Giá tour — tên lịch giờ
   nằm ở thuộc tính title của hàng. Giữ lại rule phòng khi cần bật lại cột này. */
/* Cột tên lịch: wrapper giữ flex + relative để tooltip neo theo CỘT TÊN (v5). */
.ct2-sr-codewrap { flex: 1 1 auto; min-width: 0; position: relative; }
.ct2-sr-code { display: flex; align-items: center; gap: 7px; font-size: 13.5px; font-weight: 600; color: #555; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ct2-sr-code svg { flex: 0 0 auto; color: #b98da6; }
/* Lớp phủ hover hiện ĐẦY ĐỦ tên lịch (nội dung dài bị ellipsis) — pattern giống .gt-fulltip tiêu đề tour.
   Là SIBLING của .ct2-sr-code trong .ct2-sr-codewrap (sr-code overflow:hidden sẽ cắt nếu lồng trong). */
.ct2-sched-row { position: relative; }
/* v3: hiện PHÍA TRÊN hàng (scaleY origin bottom = mở gập LÊN). v4: nền co theo text (max-content,
   trần 560px). v5 (client 2026-07-11 "căn chỉnh luôn"): CĂN THẲNG MÉP TRÁI với chữ tên lịch —
   left:0 theo wrapper cột tên, origin bottom LEFT; bottom nâng qua padding hàng để nổi trên viền. */
.ct2-sr-full { position: absolute; left: 0; bottom: calc(100% + 16px); z-index: 7;
    width: max-content; max-width: min(100%, 560px); box-sizing: border-box;
    background: rgba(253,240,247,.97); color: #d6248c; font-size: 11.5px; font-weight: 600; line-height: 1.6;
    text-align: left; padding: 8px 14px; border-radius: 10px; border: 1px solid #f5d3e6;
    opacity: 0; visibility: hidden; transform: scaleY(.4); transform-origin: bottom left;
    transition: opacity .16s ease, transform .2s ease; pointer-events: none; }
@media (hover: hover) and (pointer: fine) {
    .ct2-sr-code:hover ~ .ct2-sr-full { opacity: 1; visibility: visible; transform: scaleY(1); }
}
.ct2-sr-seats { align-self: flex-start; font-size: 12.5px; font-weight: 600; color: #e6a700; } /* vàng (2026-07-11, client — trước xanh lá #1a9c4b) */
.ct2-sr-seats.is-contact { color: #888; }
.ct2-sr-seats.is-sold { color: #d32f2f; }
.ct2-sr-price { font-size: 17px; font-weight: 800; color: #d6248c; font-variant-numeric: tabular-nums; } /* hồng brand (2026-07-11, client — trước đen #1a1a1a) */
.ct2-sr-btn { flex: 0 0 auto; background: #fdf0f7; color: #d6248c; font-size: 13.5px; font-weight: 700; padding: 9px 22px; border-radius: 999px; transition: background .15s, color .15s; }
/* Hiệu ứng hover CHỈ trên thiết bị có chuột thật — mobile tap bật/tắt :hover giả làm nút
   "Chọn" nhấp nháy hồng-trắng (client báo 2026-07-10). Touch: phản hồi qua .is-selected. */
@media (hover: hover) and (pointer: fine) {
    .ct2-sched-row:hover { border-color: #d6248c; box-shadow: 0 4px 14px rgba(214,36,140,.14); color: #222; }
    .ct2-sched-row:hover .ct2-sr-btn { background: #d6248c; color: #fff; }
    .ct2-sched-row.ct2-cal-day-link:hover { background: #fff; transform: none; }
}
/* Hàng đã chọn: viền hồng + nút đậm (thắng rule .ct2-cal-day-link.is-selected cũ nhờ đứng SAU) */
.ct2-sched-row.ct2-cal-day-link { background: #fff; }
.ct2-sched-row.ct2-cal-day-link.is-selected { background: #fdf0f7 !important; color: #222 !important; border-color: #d6248c; box-shadow: 0 4px 14px rgba(214,36,140,.2); transform: none; }
.ct2-sched-row.is-selected .ct2-sr-btn { background: #d6248c; color: #fff; }
/* Hàng đã chọn: pill ngày đổi hồng nhạt → TRẮNG — nền hàng selected cũng hồng nhạt (#fdf0f7)
   nên pill cùng màu bị "chìm", trên mobile nhìn như lệch hàng (client 2026-07-11). */
.ct2-sched-row.is-selected .ct2-sr-date { background: #fff; }
/* D11: Sold-out - hiện rõ hàng đã hết chỗ thay vì ẩn im lặng */
.ct2-sched-row.is-soldout { background: #fafafa; color: #999; cursor: not-allowed; }
.ct2-sched-row.is-soldout .ct2-sr-date { background: #f0f0f0; color: #999; }
.ct2-sched-row.is-soldout .ct2-sr-price { color: #aaa; text-decoration: line-through; }
.ct2-sched-row.is-soldout .ct2-sr-btn.is-soldout { background: #f0f0f0; color: #d32f2f; }
.ct2-sched-empty { padding: 26px 14px; text-align: center; font-size: 14px; color: #777; }
.ct2-sched-empty b { color: #d6248c; }
.ct2-cal-footer { margin-top: 18px; text-align: center; font-size: 13px; color: #d6248c; font-style: italic; }
@media (max-width: 700px) {
    .ct2-cal-months { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 2px; scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; }
    .ct2-cal-months::-webkit-scrollbar { display: none; }
    .ct2-cal-month-btn { min-width: 86px; padding: 8px 14px; flex: 0 0 auto; }
    .ct2-cal-month-btn.active { box-shadow: 0 2px 6px rgba(214,36,140,.22); }
    /* Row mobile (2026-07-22 v14): 2 cột - [Khởi hành | ✓] / [Thông tin] / [Tình trạng | Giá tour].
       Nhãn cột hiện ngay trong ô vì hàng tiêu đề bị ẩn. */
    .ct2-sched-head-row { display: none; }
    .ct2-sched-row { grid-template-columns: 1fr 1fr; gap: 12px; border-radius: 10px; padding: 13px 14px; }
    .ct2-sr-lbl { display: block; }
    .ct2-sr-price { font-size: 16px; }
    .ct2-sr-feature { grid-column: 1 / -1; }   /* tên lịch dài → cho trải hết hàng (2026-07-22 v9) */
}

/* Sidebar booking card */
.ct2-book-card { background: #fff; border-radius: 14px; box-shadow: 0 6px 24px rgba(0,0,0,.08); overflow: hidden; }
.ct2-book-head { background: #fff; color: #222; padding: 14px 18px; border-bottom: 1px solid #f0e0e8; }
.ct2-book-head-label { font-size: 11px; color: #888; font-weight: 500; letter-spacing: .3px; text-transform: uppercase; }
.ct2-book-head-price { font-size: 22px; font-weight: 600; margin-top: 2px; color: #d6248c; }
.ct2-book-head-price small { font-size: 12px; opacity: .85; font-weight: 400; margin-left: 4px; color: #888; }
.ct2-book-head-old { font-size: 12px; color: #aaa; text-decoration: line-through; }
.ct2-book-body { padding: 18px 20px; }
.ct2-book-row { display: flex; justify-content: space-between; align-items: center; padding: 8px 0; font-size: 13px; border-bottom: 1px dashed #f0f0f0; }
.ct2-book-row:last-of-type { border-bottom: none; }
.ct2-book-row-label { color: #666; }
.ct2-book-row-value { color: #222; font-weight: 500; text-align: right; }
.ct2-book-cta { display: block; width: 100%; padding: 13px; margin-top: 14px; background: #d6248c; color: #fff; text-align: center; font-size: 14px; font-weight: 500; border-radius: 10px; text-decoration: none; transition: background .15s, transform .1s; border: none; cursor: pointer; line-height: 1.2; }
.ct2-book-cta:hover { background: #b81e76; color: #fff; }
.ct2-book-cta:active { transform: scale(.98); }
.ct2-book-cta-disabled { background: #ccc; cursor: not-allowed; }
.ct2-book-cta-disabled:hover { background: #ccc; }
.ct2-book-cta-pick { display: flex; align-items: center; justify-content: center; }
/* Khi BẤM / đang focus nút "Chọn ngày khởi hành" → ĐỔI MÀU CHỮ sang VÀNG logo DLV (#ffed00, lấy mẫu
   từ logo) để phản hồi rõ; giữ nền hồng đậm. Icon dùng currentColor nên đổi màu theo chữ. */
#ct2BookCtaPick:active,
#ct2BookCtaPick:focus,
#ct2BookCtaPick:focus-visible { background: #b81e76; color: #ffed00 !important; outline: none; }
.ct2-book-cta-secondary { margin-top: 8px; background: transparent; color: #d6248c; border: 1.5px solid #d6248c; font-size: 13px; padding: 10px; font-weight: 500; }
.ct2-book-cta-secondary:hover { background: #fdf0f7; color: #d6248c; }

/* Selected day in calendar - strong pink fill so user thấy ngày đã chọn */
.ct2-cal-day-link.is-selected { background: #d6248c !important; color: #fff !important; box-shadow: 0 4px 14px rgba(214,36,140,.45); transform: translateY(-2px); }
.ct2-cal-day-link.is-selected .ct2-cal-day-num,
.ct2-cal-day-link.is-selected .ct2-cal-day-price { color: #fff !important; }

/* Schedule notice flash - hint khách scroll lên xem booking sidebar */
.ct2-schedule-flash { margin-top: 14px; padding: 12px 16px; background: linear-gradient(135deg, #fdf0f7, #fce0eb); border-left: 4px solid #d6248c; border-radius: 10px; font-size: 13.5px; color: #4a1a35; display: none; align-items: center; gap: 10px; }
.ct2-schedule-flash.is-show { display: flex; animation: ct2FlashIn .25s ease; }
.ct2-schedule-flash svg { color: #d6248c; flex-shrink: 0; }
.ct2-schedule-flash b { color: #d6248c; }
@keyframes ct2FlashIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: translateY(0); } }
.ct2-book-consult { margin-top: 14px; width: 100%; padding: 11px; background: #fdf0f7; border: 1.5px solid #f0c8dc; border-radius: 10px; color: #d6248c; font-size: 13px; font-weight: 500; cursor: pointer; transition: all .15s; display: flex; align-items: center; justify-content: center; }
.ct2-book-consult:hover { background: #d6248c; color: #fff; border-color: #d6248c; }

/* ── Schedule details panel - hiện khi user click 1 ngày trong calendar ── */
.ct2-cal-grid-wrapper { position: relative; }
.ct2-sched-details { display: none; padding: 4px 4px 0; }
.ct2-sched-details.is-show { display: block; animation: ct2DetailIn .25s ease; }
@keyframes ct2DetailIn { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: translateY(0); } }
.ct2-cal-grid-wrapper.is-detail-mode .ct2-cal-month-display { display: none; }
.ct2-cal-grid-wrapper.is-detail-mode .ct2-cal-footer { display: none; }
.ct2-cal-grid-wrapper.is-detail-mode .ct2-schedule-flash { display: none; }

.ct2-sched-head { display: flex; justify-content: space-between; align-items: center; padding: 14px 0 12px; border-bottom: 1px solid #f0e0e8; margin-bottom: 16px; }
.ct2-sched-back { background: none; border: none; font-size: 14px; font-weight: 400; color: #555; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; padding: 4px 0; }
.ct2-sched-back:hover { color: #d6248c; }
.ct2-sched-date { font-size: 18px; font-weight: 600; color: #d6248c; }

.ct2-sched-section-title { text-align: center; font-size: 14px; font-weight: 600; color: #d6248c; margin: 16px 0 12px; letter-spacing: .3px; }
/* Table-grid look - 2026-05-24: outer border + 1px gap as cell dividers (bg shows through) */
/* Viền ngoài dùng BORDER THẬT (ôm bo góc liền mạch) — trước đây giả viền bằng nền + padding:1px,
   ô trắng vuông góc đè lên vành bo → 4 GÓC ĐỨT ĐOẠN (client báo 2026-07-11). Kẻ trong vẫn = gap 1px. */
.ct2-sched-trans { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; padding: 0; margin: 0 12px 12px; background: #e8d5e0; border: 1px solid #e8d5e0; border-radius: 8px; overflow: hidden; }
/* Leg = flex column căn GIỮA DỌC: time bar bên dưới thường display:none → bỏ margin-bottom cứng
   của head (chừa chỗ cho bar làm chữ dính mép trên), thay bằng gap (chỉ tính giữa item ĐANG hiện). */
.ct2-sched-trans-leg { background: #fff; padding: 12px 14px; display: flex; flex-direction: column; justify-content: center; gap: 8px; }
.ct2-sched-trans-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; font-size: 13px; color: #333; }
.ct2-sched-trans-head b { color: #222; font-weight: 500; }

/* Leg trans icon + optional code (vd icon + 9G1955 hoặc chỉ icon) */
.ct2-sched-leg-trans { display: inline-flex; align-items: center; gap: 5px; color: #d6248c; font-size: 13px; }
.ct2-sched-leg-trans svg { width: 18px; height: 18px; }
.ct2-sched-leg-trans i { font-size: 15px; line-height: 1; }
.ct2-sched-leg-trans b { color: #d6248c; font-weight: 500; }
/* Chiều VỀ: lật ngang icon phương tiện cho quay về bên trái (client 2026-07-28).
   Icon FontAwesome (máy bay/xe/tàu) luôn hướng phải nên hàng "Ngày về" nhìn như vẫn đang đi.
   Chỉ lật ICON, KHÔNG lật mã chuyến (<b>) — lật cả span thì chữ bị soi gương. */
.ct2-sched-leg-trans.ct2-leg-back i {
    display: inline-block;
    transform: scaleX(-1);
}

.ct2-sched-trans-times { display: flex; justify-content: space-between; font-size: 14px; font-weight: 500; color: #333; padding: 4px 0 2px; }
.ct2-sched-trans-bar { height: 2px; background: #ddd; border-radius: 2px; position: relative; margin: 4px 0 6px; }
.ct2-sched-trans-bar::before, .ct2-sched-trans-bar::after { content: ''; position: absolute; top: 50%; transform: translateY(-50%); width: 6px; height: 6px; background: #bbb; border-radius: 50%; }
.ct2-sched-trans-bar::before { left: 0; }
.ct2-sched-trans-bar::after { right: 0; }

/* Note dưới phương tiện - thông báo info chi tiết sẽ gửi sau */
.ct2-sched-trans-note { display: flex; align-items: flex-start; padding: 10px 14px; margin: 12px 12px 0; background: #fff8e1; border-left: 3px solid #f9a825; border-radius: 6px; font-size: 12px; color: #5d4037; line-height: 1.55; }
.ct2-sched-trans-note svg { color: #f9a825; flex-shrink: 0; }
.ct2-sched-trans-note b { color: #5d4037; font-weight: 600; }
@media (max-width: 600px) { .ct2-sched-trans { grid-template-columns: 1fr; } }
.ct2-sched-trans-bar::before { left: 0; }
.ct2-sched-trans-bar::after { right: 0; }

/* 2026-07-22 (v2): bảng giá theo lứa tuổi ĐANG ẨN — đơn giá đã hiện ngay trên từng hàng ở bước
   "Chọn số lượng khách". `display:grid` của author đè `[hidden]` của UA stylesheet nên phải khai
   báo rõ; bỏ thuộc tính hidden trong PHP là bảng hiện lại như cũ. */
.ct2-sched-prices[hidden] { display: none; }
.ct2-sched-prices { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; padding: 0; margin: 0 12px 18px; background: #e8d5e0; border: 1px solid #e8d5e0; border-radius: 8px; overflow: hidden; }
.ct2-sched-price-row { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 10px 14px; background: #fff; }
/* Khi số price item lẻ → cell cuối span full width để không có ô trống màu border */
.ct2-sched-price-row:last-child:nth-child(odd) { grid-column: 1 / -1; }
.ct2-sched-price-label { font-size: 13px; }
.ct2-sched-price-label b { display: block; color: #222; font-weight: 500; font-size: 13px; }
.ct2-sched-price-label small { display: block; color: #888; font-size: 11px; margin-top: 2px; font-weight: 400; }
.ct2-sched-price-value { font-size: 14px; font-weight: 500; color: #d6248c; white-space: nowrap; }
@media (max-width: 600px) {
    .ct2-sched-prices { grid-template-columns: 1fr; }
    .ct2-sched-price-row:last-child:nth-child(odd) { grid-column: auto; }
}

.ct2-sched-footnote { margin: 6px 12px 0; padding: 10px 14px; background: #fff3cf; border-radius: 8px; text-align: center; font-size: 13px; color: #5d4037; }

/* Hàng nút Đặt tour + Liên hệ ngay trong panel chi tiết ngày — khách chọn ngày xong
   đặt luôn tại chỗ, không phải cuộn ngược lên card đặt tour. */
.ct2-sched-actions { display: flex; gap: 10px; margin: 16px 12px 0; }
.ct2-sched-actions > * { flex: 1; padding: 13px 10px; border-radius: 10px; font-size: 15px; font-weight: 600; text-align: center; cursor: pointer; transition: all .15s; font-family: inherit; line-height: 1.2; }
.ct2-sched-btn-book { background: #d6248c; color: #fff !important; border: 1.5px solid #d6248c; text-decoration: none !important; display: block; }
.ct2-sched-btn-book:hover { background: #b81e76; border-color: #b81e76; }
.ct2-sched-btn-consult { background: #fdf0f7; color: #d6248c; border: 1.5px solid #f0c8dc; }
.ct2-sched-btn-consult:hover { background: #d6248c; color: #fff; border-color: #d6248c; }
@media (max-width: 767px) { .ct2-sched-actions { margin-left: 8px; margin-right: 8px; } }

/* ── Modal "Gửi thông tin tư vấn" ── */
.ct2-consult-mask { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; background: rgba(0,0,0,.55); z-index: 100000; display: none !important; align-items: center; justify-content: center; padding: 20px; }
.ct2-consult-mask.is-open { display: flex !important; }
.ct2-consult-modal { background: #fff; border-radius: 14px; max-width: 540px; width: 100%; max-height: 92vh; overflow-y: auto; box-shadow: 0 18px 50px rgba(0,0,0,.25); animation: ct2ModalIn .22s ease; margin: auto; }
@keyframes ct2ModalIn { from { opacity: 0; transform: scale(.96) translateY(-8px); } to { opacity: 1; transform: scale(1) translateY(0); } }
.ct2-consult-head { padding: 22px 26px 14px; border-bottom: 1px solid #eee; display: flex; align-items: center; justify-content: space-between; }
.ct2-consult-head h3 { margin: 0; font-size: 22px; font-weight: 700; color: #222; }
.ct2-consult-close { background: none; border: none; font-size: 28px; line-height: 1; color: #555; cursor: pointer; padding: 0; width: 32px; height: 32px; }
.ct2-consult-close:hover { color: #d6248c; }
.ct2-consult-body { padding: 18px 26px 8px; }
.ct2-consult-intro { font-size: 14px; color: #555; font-style: italic; margin-bottom: 20px; line-height: 1.55; }
.ct2-consult-field { margin-bottom: 16px; }
.ct2-consult-field label { display: block; font-size: 14.5px; font-weight: 600; color: #222; margin-bottom: 6px; }
.ct2-consult-field label .req { color: #d32f2f; margin-left: 2px; }
.ct2-consult-field input, .ct2-consult-field textarea { width: 100%; padding: 10px 0; border: none; border-bottom: 1px solid #ddd; font-size: 14px; font-family: inherit; background: transparent; outline: none; transition: border-color .15s; }
.ct2-consult-field input:focus, .ct2-consult-field textarea:focus { border-bottom-color: #d6248c; }
.ct2-consult-field textarea { resize: vertical; min-height: 38px; }
.ct2-consult-field input::placeholder, .ct2-consult-field textarea::placeholder { color: #aaa; }
.ct2-consult-foot { padding: 14px 26px 22px; display: flex; justify-content: flex-end; }
.ct2-consult-submit { padding: 12px 32px; background: #d6248c; color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 600; cursor: pointer; transition: background .15s; }
.ct2-consult-submit:hover { background: #b81e76; }
.ct2-consult-submit:disabled { background: #ccc; cursor: not-allowed; }
.ct2-consult-msg { padding: 10px 14px; border-radius: 8px; font-size: 13.5px; margin: 0 26px 16px; display: none; }
.ct2-consult-msg.error { background: #ffebee; color: #c62828; display: block; }
.ct2-consult-msg.success { background: #e8f5e9; color: #2e7d32; display: block; }
/* Success popup state - hiện sau khi submit thành công */
.ct2-consult-success { display: none; padding: 36px 30px 28px; text-align: center; animation: ct2ModalIn .22s ease; }
.ct2-consult-success.is-on { display: block; }
.ct2-consult-success-icon { width: 84px; height: 84px; margin: 0 auto 18px; border-radius: 50%; background: linear-gradient(135deg, #4caf50, #2e7d32); display: flex; align-items: center; justify-content: center; color: #fff; font-size: 46px; font-weight: 600; box-shadow: 0 10px 24px rgba(46,125,50,.32); animation: ct2SuccessPop .42s cubic-bezier(.4,1.4,.5,1); }
@keyframes ct2SuccessPop { 0% { transform: scale(.2); opacity: 0; } 60% { transform: scale(1.08); opacity: 1; } 100% { transform: scale(1); opacity: 1; } }
.ct2-consult-success h4 { font-size: 22px; font-weight: 700; color: #222; margin: 0 0 10px; }
.ct2-consult-success p { font-size: 14.5px; color: #555; line-height: 1.6; margin: 0 0 20px; }
.ct2-consult-success p strong { color: #d6248c; }
.ct2-consult-success .ct2-consult-success-actions { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
.ct2-consult-success .btn-primary { padding: 11px 28px; background: #d6248c; color: #fff; border: none; border-radius: 8px; font-size: 14.5px; font-weight: 600; cursor: pointer; transition: background .15s; }
.ct2-consult-success .btn-primary:hover { background: #b81e76; }
.ct2-consult-success .btn-secondary { padding: 11px 22px; background: #fff; color: #d6248c; border: 1.5px solid #d6248c; border-radius: 8px; font-size: 14px; font-weight: 500; cursor: pointer; text-decoration: none; display: inline-flex; align-items: center; gap: 6px; }
.ct2-consult-success .btn-secondary:hover { background: #fdf2f8; }
@media (max-width: 600px) { .ct2-consult-modal { margin: 0; } }

/* Bao gồm / Không bao gồm 2-column */
.ct2-incl { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.ct2-incl-col h3 { font-size: 14px; font-weight: 600; color: #222; margin: 0 0 10px; display: flex; align-items: center; gap: 6px; }
.ct2-incl-col.yes h3 { color: #2e7d32; }
.ct2-incl-col.no h3 { color: #c62828; }
.ct2-incl-col ul { list-style: none; padding: 0; margin: 0; font-size: 13.5px; color: #444; }
.ct2-incl-col li { padding: 6px 0 6px 22px; position: relative; line-height: 1.55; }
.ct2-incl-col.yes li::before { content: '✓'; position: absolute; left: 0; color: #2e7d32; font-weight: 700; }
.ct2-incl-col.no li::before { content: '✗'; position: absolute; left: 0; color: #c62828; font-weight: 700; }
@media (max-width: 600px) { .ct2-incl { grid-template-columns: 1fr; } }

/* Visa block */
.ct2-visa-callout { padding: 14px 18px; background: linear-gradient(135deg, #fff8e1, #fff3cf); border-left: 4px solid #f9a825; border-radius: 8px; font-size: 13.5px; color: #5d4037; line-height: 1.6; margin-bottom: 14px; }
.ct2-visa-callout b { color: #d84315; }

/* Related tours */
/* Hàng ngang kéo-cuộn (10 tour): flex + overflow-x, card cố định bề ngang */
.ct2-related-grid { display: flex; gap: 16px; overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch; scroll-snap-type: x proximity; padding: 6px 2px 14px; scrollbar-width: thin; scrollbar-color: #e5c9da transparent; cursor: grab; }
.ct2-related-grid::-webkit-scrollbar { height: 8px; }
.ct2-related-grid::-webkit-scrollbar-track { background: #f6f6f6; border-radius: 4px; }
.ct2-related-grid::-webkit-scrollbar-thumb { background: #e5c9da; border-radius: 4px; }
.ct2-related-grid::-webkit-scrollbar-thumb:hover { background: #d6248c; }
.ct2-related-grid.is-dragging { cursor: grabbing; scroll-snap-type: none; }
.ct2-related-grid.is-dragging a { pointer-events: none; }
/* Nút chuyển tiếp prev/next canh GIỮA KHUNG slider (top:50% của .ct2-related-wrap) — trước
   canh theo tâm ảnh (top:85px) tính cho card cũ 250px, nhưng card đã đổi sang gt-card cao hơn
   → nút rơi xuống vùng tiêu đề. Canh giữa khung cho cân + đỡ đè tiêu đề (client 2026-07-11). */
.ct2-related-wrap { position: relative; }
.ct2-rel-nav {
    position: absolute; top: 50%; transform: translateY(-50%);
    width: 42px; height: 42px; border-radius: 50%;
    background: #fff; border: 1px solid #eee; box-shadow: 0 4px 14px rgba(0,0,0,.16);
    display: flex; align-items: center; justify-content: center;
    color: #d6248c; font-size: 26px; line-height: 1; font-weight: 600;
    cursor: pointer; z-index: 6; padding: 0 0 3px;
    transition: background .15s, color .15s, opacity .15s, box-shadow .15s;
}
.ct2-rel-nav:hover { background: #d6248c; color: #fff; box-shadow: 0 6px 18px rgba(214,36,140,.32); }
/* Xích nút ra 2 bên (-8px → -22px) để đỡ đè lên tiêu đề card — vẫn nằm trong padding 24px
   của .ct2-section nên không bị cắt. */
.ct2-rel-prev { left: -22px; }
.ct2-rel-next { right: -22px; }
.ct2-rel-nav[disabled] { opacity: 0; pointer-events: none; }
@media (max-width: 767px) { .ct2-rel-nav { width: 36px; height: 36px; font-size: 22px; } .ct2-rel-prev { left: 2px; } .ct2-rel-next { right: 2px; } }
/* (bỏ override top:94px mobile — nút đã canh top:50% giữa khung ở mọi breakpoint) */
.ct2-related-card { flex: 0 0 250px; width: 250px; scroll-snap-align: start; background: #fff; border: 1px solid #ececec; border-radius: 12px; overflow: hidden; transition: box-shadow .2s, transform .2s; }
.ct2-related-card:hover { box-shadow: 0 8px 22px rgba(214,36,140,.18); transform: translateY(-3px); }
@media (max-width: 600px) { .ct2-related-card { flex: 0 0 72vw; width: 72vw; max-width: 280px; } }
.ct2-related-img { aspect-ratio: 16/10; overflow: hidden; }
.ct2-related-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s; }
.ct2-related-card:hover .ct2-related-img img { transform: scale(1.05); }
.ct2-related-body { padding: 14px; }
.ct2-related-name { font-size: 14px; font-weight: 600; color: #222; line-height: 1.4; min-height: 39px; margin: 0 0 8px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ct2-related-name a { color: inherit; text-decoration: none; }
.ct2-related-name a:hover { color: #d6248c; }
.ct2-related-meta { font-size: 12px; color: #888; margin-bottom: 6px; }
.ct2-related-price { font-size: 15px; font-weight: 700; color: #d6248c; }
.ct2-related-price small { font-size: 11px; color: #888; font-weight: 400; margin-right: 4px; }

/* Cross-sell hotel + flight (2026-05-24) */
.ct2-cs-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.ct2-cs-card { background: linear-gradient(135deg, #fff 0%, #ffeaf2 100%); border: 1px solid #f5d0e3; border-radius: 12px; padding: 16px; transition: all .2s; }
.ct2-cs-card:hover { border-color: #d6248c; box-shadow: 0 6px 18px rgba(214, 36, 140, .12); transform: translateY(-2px); }
.ct2-cs-card-head { display: flex; align-items: center; gap: 8px; margin-bottom: 14px; }
.ct2-cs-card-head svg { color: #d6248c; flex-shrink: 0; }
.ct2-cs-card-title { font-size: 15px; font-weight: 600; color: #222; line-height: 1.3; }
.ct2-cs-card-actions { display: flex; flex-direction: column; gap: 8px; }
.ct2-cs-btn { display: inline-flex; align-items: center; gap: 8px; padding: 9px 14px; border-radius: 8px; font-size: 13px; font-weight: 500; text-decoration: none; transition: all .15s; border: 1px solid transparent; }
.ct2-cs-btn svg { flex-shrink: 0; }
.ct2-cs-btn-hotel { background: #fff; color: #d6248c; border-color: #d6248c; }
.ct2-cs-btn-hotel:hover { background: #d6248c; color: #fff; }
.ct2-cs-btn-flight { background: #fff; color: #1976d2; border-color: #1976d2; }
.ct2-cs-btn-flight:hover { background: #1976d2; color: #fff; }
.ct2-cs-btn-arrow { margin-left: auto; opacity: .65; }
.ct2-cs-btn:hover .ct2-cs-btn-arrow { opacity: 1; transform: translateX(2px); }
.ct2-cs-intro { font-size: 15px; color: #555; margin: -6px 0 16px; line-height: 1.6; }

/* Để lại SĐT tư vấn nhanh (lead → CMS qua ajax_tour_consult.php) */
.ct2-phone-lead { border: 1px solid #f4d6e7 !important; background: linear-gradient(135deg,#fff7fb,#fff) !important; }
.ct2-phone-lead h2 { border-bottom-color: #fbdcec; }
.ct2-phone-lead-intro { font-size: 15px; color: #555; line-height: 1.6; margin: -4px 0 16px; }
.ct2-phone-lead-form { display: flex; gap: 10px; flex-wrap: wrap; }
.ct2-phone-lead-form input[type=tel] { flex: 1 1 240px; min-width: 0; height: 50px; padding: 0 16px; font-size: 15px; font-family: inherit; color: #222; background: #fff; border: 1.5px solid #e5c9da; border-radius: 10px; outline: none; transition: border-color .15s, box-shadow .15s; }
.ct2-phone-lead-form input[type=tel]:focus { border-color: #d6248c; box-shadow: 0 0 0 3px rgba(214,36,140,.1); }
.ct2-phone-lead-btn { flex: 0 0 auto; height: 50px; padding: 0 28px; background: #d6248c; color: #fff; border: 0; border-radius: 10px; font-size: 15px; font-weight: 600; font-family: inherit; cursor: pointer; white-space: nowrap; transition: background .15s; }
.ct2-phone-lead-btn:hover { background: #b81e76; }
.ct2-phone-lead-btn:disabled { background: #ccc; cursor: not-allowed; }
.ct2-phone-lead-msg { margin-top: 12px; font-size: 14px; display: none; padding: 10px 14px; border-radius: 8px; }
.ct2-phone-lead-msg.error { display: block; background: #ffebee; color: #c62828; }
.ct2-phone-lead-msg.success { display: block; background: #e8f5e9; color: #2e7d32; }
@media (max-width: 600px) {
    .ct2-phone-lead-form input[type=tel], .ct2-phone-lead-btn { flex: 1 1 100%; }
}
/* ── Đánh giá tour (đọc từ tour_rating) ─────────────────────────────────────── */
.ct2-review-summary { display: flex; align-items: center; gap: 32px; padding: 6px 0 18px; border-bottom: 1px solid #f0e0ea; flex-wrap: wrap; }
.ct2-rv-score { text-align: center; flex: 0 0 auto; min-width: 96px; }
.ct2-rv-score b { font-size: 46px; font-weight: 800; color: #f7941d; line-height: 1; }
.ct2-rv-score span { display: block; font-size: 14px; color: #999; margin-top: 4px; }
.ct2-rv-bars { flex: 1 1 320px; min-width: 240px; display: flex; flex-direction: column; gap: 9px; }
.ct2-rv-bar-row { display: flex; align-items: center; gap: 10px; font-size: 13px; color: #555; }
.ct2-rv-bar-row .ct2-rv-star { flex: 0 0 auto; width: 30px; color: #333; font-weight: 600; }
.ct2-rv-bar-row .ct2-rv-star i { color: #f7941d; }
.ct2-rv-track { flex: 1 1 auto; height: 8px; background: #eee; border-radius: 5px; overflow: hidden; }
.ct2-rv-fill { height: 100%; background: #f7941d; border-radius: 5px; width: 0; transition: width .4s ease; }
.ct2-rv-pct { flex: 0 0 auto; width: 38px; text-align: right; color: #888; }
.ct2-rv-empty { text-align: center; color: #9aa0a6; font-size: 14px; padding: 26px 0; }
.ct2-rv-list { margin: 6px 0 0; display: flex; flex-direction: column; gap: 14px; }
.ct2-rv-item { padding: 14px 0; border-bottom: 1px solid #f2f2f2; }
.ct2-rv-item:last-child { border-bottom: 0; }
.ct2-rv-item-head { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.ct2-rv-item-name { font-weight: 700; color: #222; font-size: 14px; }
.ct2-rv-item-stars { color: #f7941d; font-size: 13px; letter-spacing: 1px; }
.ct2-rv-item-date { color: #aaa; font-size: 12px; margin-left: auto; }
.ct2-rv-item-text { font-size: 14px; color: #444; line-height: 1.6; }
.ct2-rv-actions { text-align: center; margin-top: 20px; }
.ct2-rv-write-btn { display: inline-flex; align-items: center; gap: 8px; background: #d6248c; color: #fff; border: 0; border-radius: 10px; padding: 12px 30px; font-size: 15px; font-weight: 600; font-family: inherit; cursor: pointer; transition: background .15s; text-decoration: none; }
.ct2-rv-write-btn:hover { background: #b81e76; color: #fff; }
@media (max-width: 600px) { .ct2-review-summary { gap: 18px; } .ct2-rv-score b { font-size: 38px; } }

.ct2-mcta { display: none; }
@media (max-width: 767px) {
    .ct2-mcta { position: fixed; left: 0; right: 0; bottom: 0; z-index: 9970;
        display: flex; align-items: center; gap: 10px;
        background: #fff; border-top: 1px solid #f0e0ea; box-shadow: 0 -4px 18px rgba(0,0,0,.09);
        padding: 10px 14px calc(10px + env(safe-area-inset-bottom)); }
    .ct2-mcta-price { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; line-height: 1.2; }
    .ct2-mcta-lbl { font-size: 11.5px; color: #888; }
    .ct2-mcta-val { font-size: 18px; font-weight: 800; color: #d6248c; white-space: nowrap; }
    .ct2-mcta-phone { flex: 0 0 auto; width: 44px; height: 44px; border-radius: 50%; background: #fdf0f7; color: #d6248c; display: flex; align-items: center; justify-content: center; }
    .ct2-mcta-pick { flex: 0 0 auto; padding: 12px 22px; background: #d6248c; color: #fff; font-weight: 700;
        font-size: 14.5px; border-radius: 999px; text-decoration: none; border: 0; font-family: inherit; cursor: pointer;
        -webkit-tap-highlight-color: transparent; }
    /* Lúc BẤM chữ phải GIỮ TRẮNG (client 2026-07-11) — rule a:active/:focus toàn cục của theme
       đổi màu chữ link khi tap → đè lại; nền đậm hơn 1 nấc làm phản hồi nhấn. */
    .ct2-mcta-pick:hover, .ct2-mcta-pick:focus, .ct2-mcta-pick:active, .ct2-mcta-pick:visited {
        color: #fff !important; background: #b81e76; text-decoration: none; outline: none; }
    /* Chừa chỗ cho bar ở cuối trang + nâng các FAB (Zalo/Chat AI) lên trên bar */
    body { padding-bottom: 76px; }
    #vnt-zalo-fab, .zalo-chat-widget, .dlv-bot-fab { transform: translateY(-68px); }
}


/* Phóng ảnh lightbox vừa màn hình. Ảnh gốc nhỏ (400px) → dùng khung lớn + object-fit:contain
   (giữ tỉ lệ, không méo, không bị global img{max-width} bó lại). */
.fslightbox-source {
    width: auto !important;
    height: 75vh !important;
    max-width: 75vw !important;
    max-height: 75vh !important;
    object-fit: contain !important;
}
@media (max-width: 768px) {
    .fslightbox-source { height: auto !important; width: 90vw !important; max-width: 90vw !important; max-height: 78vh !important; }
}
/* Nút ⛶ TOÀN MÀN HÌNH: khi container vào fullscreen, BỎ giới hạn 75vh/75vw để ảnh LẤP ĐẦY màn hình.
   Trước đây ảnh vẫn bị bó 75% trong fullscreen → bấm ⛶ ảnh không to thêm, viền tối quanh → tưởng "lỗi". */
.fslightbox-container:fullscreen .fslightbox-source,
.fslightbox-container:-webkit-full-screen .fslightbox-source,
:fullscreen .fslightbox-source {
    width: auto !important; height: auto !important;
    max-width: 98vw !important; max-height: 98vh !important;
}
/* ── Nút điều khiển lightbox ảnh → BO TRÒN, đồng bộ UI. 2 NHÓM KHÁC NHAU (2026-07-10, yêu cầu client):
   - prev ‹ / next › (.fslightbox-slide-btn): nền TRẮNG + mũi tên HỒNG, đặt BÁM MÉP ẢNH (giữa hình,
     JS đo ảnh hiện tại bên dưới — fslightbox mặc định neo 2 mép MÀN HÌNH).
   - toolbar ⛶ / ✕ (.fslightbox-toolbar-button): giữ nền hồng + icon trắng như cũ. ── */
.fslightbox-slide-btn,
.fslightbox-toolbar-button {
    width: 44px !important; height: 44px !important; box-sizing: border-box !important; padding: 11px !important;
    border-radius: 50% !important;
    display: flex !important; align-items: center !important; justify-content: center !important;
    transition: background .15s ease, transform .12s ease !important;
}
.fslightbox-toolbar-button { background: #d6248c !important; box-shadow: 0 4px 14px rgba(214,36,140,.45) !important; }
.fslightbox-toolbar-button:hover { background: #b81e76 !important; transform: scale(1.07) !important; }
.fslightbox-toolbar-button svg, .fslightbox-toolbar-button svg path { fill: #fff !important; }
.fslightbox-slide-btn { background: #fff !important; box-shadow: 0 4px 16px rgba(0,0,0,.28) !important; }
.fslightbox-slide-btn:hover { background: #fdf0f7 !important; transform: scale(1.07) !important; }
.fslightbox-slide-btn svg, .fslightbox-slide-btn svg path { fill: #d6248c !important; }
/* Toolbar (góc trên phải): bỏ dải nền tối gốc, 2 nút tách nhau cho gọn. Mặc định fslightbox đặt
   top:0/right:0 (dính sát mép trên) → dời XUỐNG + VÀO trong cho thoáng, không đụng mép màn hình. */
.fslightbox-toolbar { background: transparent !important; gap: 8px !important; top: 14px !important; right: 14px !important; }
@media (max-width: 768px) { .fslightbox-toolbar { top: 10px !important; right: 10px !important; } }

/* Interactive Rating Stars Widget */
.ct2-rating-stars-widget {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-left: 14px;
    padding-left: 14px;
    border-left: 1px solid #e2e8f0;
}
.ct2-rating-stars-label {
    font-size: 13.5px;
    font-weight: 600;
    color: #475569;
}
.ct2-stars-interactive {
    display: inline-flex;
    gap: 3px;
}
.ct2-stars-interactive i.fa {
    font-size: 17px;
    color: #cbd5e1;
    cursor: pointer;
    transition: color 0.15s, transform 0.1s;
}
.ct2-stars-interactive i.fa.hover,
.ct2-stars-interactive i.fa.active {
    color: #f5a623;
    transform: scale(1.15);
}
.ct2-rating-stars-msg {
    font-size: 12.5px;
    color: #059669;
    font-weight: 600;
    transition: opacity 0.2s;
}
.ct2-rating-stars-widget.disabled .ct2-stars-interactive i.fa {
    cursor: default;
    transform: none;
}
@media (max-width: 900px) {
    .ct2-rating-stars-widget {
        display: flex;
        margin-left: 0;
        padding-left: 0;
        border-left: none;
        margin-top: 10px;
        width: 100%;
    }
}

/* Star Selector in Review Modal */
.ct2-stars-selector {
    display: inline-flex;
    gap: 8px;
    margin-top: 4px;
}
.ct2-stars-selector i.fa {
    font-size: 26px;
    color: #cbd5e1;
    cursor: pointer;
    transition: color 0.15s, transform 0.1s;
}
.ct2-stars-selector i.fa.hover,
.ct2-stars-selector i.fa.active {
    color: #f5a623;
    transform: scale(1.1);
}
.ct2-stars-selector-label {
    display: block;
    font-size: 13px;
    color: #64748b;
    margin-top: 6px;
    font-weight: 600;
}
.ct2-rv-item-stars {
    color: #f5a623;
    letter-spacing: 2px;
    font-size: 13px;
}

/* ── Review Section ── */
.ct2-review-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 20px;
}
.ct2-review-head h2 {
    margin: 0;
}
.ct2-rv-write-btn {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    background: #d6248c;
    color: #fff;
    border: none;
    border-radius: 8px;
    padding: 9px 18px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    text-decoration: none;
    transition: background 0.18s, transform 0.12s;
    white-space: nowrap;
}
.ct2-rv-write-btn:hover { background: #b81e76; transform: translateY(-1px); }
.ct2-rv-write-btn--empty {
    margin-top: 12px;
}

/* Review summary */
.ct2-review-summary {
    display: flex;
    gap: 28px;
    align-items: flex-start;
    margin-bottom: 24px;
    flex-wrap: wrap;
}
.ct2-rv-score {
    display: flex;
    flex-direction: column;
    align-items: center;
    min-width: 80px;
}
.ct2-rv-score b {
    font-size: 42px;
    font-weight: 800;
    color: #1e293b;
    line-height: 1;
}
.ct2-rv-score-stars {
    display: flex;
    gap: 2px;
    margin: 6px 0 4px;
}
.ct2-rv-score-stars .fa { color: #f5a623; font-size: 15px; }
.ct2-rv-score > span {
    font-size: 12.5px;
    color: #64748b;
}
.ct2-rv-bars { flex: 1; min-width: 180px; }
.ct2-rv-bar-row {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 5px;
}
.ct2-rv-star {
    font-size: 12.5px;
    color: #475569;
    min-width: 30px;
    display: flex;
    align-items: center;
    gap: 3px;
}
.ct2-rv-star .fa { color: #f5a623; font-size: 11px; }
.ct2-rv-track {
    flex: 1;
    height: 8px;
    background: #f1f5f9;
    border-radius: 99px;
    overflow: hidden;
}
.ct2-rv-fill {
    display: block;
    height: 100%;
    background: linear-gradient(90deg, #f5a623 0%, #f59e0b 100%);
    border-radius: 99px;
    transition: width 0.6s ease;
}
.ct2-rv-pct {
    font-size: 11.5px;
    color: #64748b;
    min-width: 28px;
    text-align: right;
}

/* Review list items */
.ct2-rv-list { display: flex; flex-direction: column; gap: 14px; }
.ct2-rv-item {
    padding: 14px 2px;
}
.ct2-rv-item-head {
    display: flex;
    align-items: flex-start;
    gap: 10px;
}
.ct2-rv-item-avatar {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: linear-gradient(135deg, #d6248c, #9333ea);
    color: #fff;
    font-size: 16px;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.ct2-rv-item-meta {
    flex: 1;
    min-width: 0;
}
.ct2-rv-item-name {
    font-weight: 700;
    font-size: 14px;
    color: #1e293b;
    display: block;
}
.ct2-rv-item-stars-wrap {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 2px;
}
.ct2-rv-item-label {
    font-size: 11.5px;
    color: #f59e0b;
    font-weight: 600;
    background: #fef3c7;
    border-radius: 4px;
    padding: 1px 6px;
}
.ct2-rv-item-date {
    font-size: 12px;
    color: #94a3b8;
    margin-left: auto;
    flex-shrink: 0;
}
.ct2-rv-item-text {
    font-size: 13.5px;
    color: #334155;
    line-height: 1.6;
    margin-top: 10px;
}

/* Empty state */
.ct2-rv-empty {
    text-align: center;
    padding: 32px 16px;
    color: #94a3b8;
}
.ct2-rv-empty p {
    margin: 10px 0 0;
    font-size: 14px;
    line-height: 1.6;
}

@media (max-width: 600px) {
    .ct2-rv-score b { font-size: 32px; }
    .ct2-review-summary { gap: 16px; }
    .ct2-rv-write-btn { padding: 8px 14px; font-size: 13px; }
}

/* Full width layout for sections below the main grid */
.ct2-grid-full {
    display: block;
    width: 100%;
    margin-top: 18px;
    clear: both;
}
/* ══════════════════════════════════════════════════════════════════════════
   LỊCH KHỞI HÀNH (2026-07-22)
   - Bỏ nút "Chọn": bấm cả hàng → mở bước "Chọn số lượng khách". Cột cuối chỉ
     còn chỉ báo › (đổi thành ✓ khi hàng đang chọn).
   - 2 cách xem: Danh sách (mặc định) ↔ Lịch tháng, đổi bằng #ct2CalViewMode.
   Màu giữ nguyên bảng màu hồng brand hiện có (#d6248c / #fdf0f7).
   ══════════════════════════════════════════════════════════════════════════ */
/* 2026-07-22: từ khi bỏ dãy tab tháng (.ct2-cal-months mang sẵn margin-bottom) thì thanh này
   hết khoảng cách dưới → viền nút Danh sách/Lịch dính vào viền khung lịch bên dưới. Thêm margin. */
.ct2-cal-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.ct2-cal-toolbar .ct2-cal-months { flex: 1 1 auto; min-width: 0; }
.ct2-cal-viewmode { flex: 0 0 auto; display: inline-flex; border: 1px solid #f0dbe8; border-radius: 10px; overflow: hidden; background: #fff; margin-top: 2px; }
.ct2-cvm-btn { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border: 0; background: transparent; color: #b98da6; cursor: pointer; padding: 0; transition: background .15s, color .15s; }
.ct2-cvm-btn + .ct2-cvm-btn { border-left: 1px solid #f5e6ef; }
.ct2-cvm-btn:hover { color: #d6248c; background: #fdf0f7; }
.ct2-cvm-btn.is-active { color: #fff; background: #d6248c; }
.ct2-cvm-btn svg { width: 18px; height: 18px; }

/* Chỉ báo cuối hàng thay nút "Chọn" */
.ct2-sr-go { display: flex; align-items: center; justify-content: flex-end; color: #d6248c; }
.ct2-sr-go-check { display: none; }
.ct2-sched-row.is-selected .ct2-sr-go-chev { display: none; }
.ct2-sched-row.is-selected .ct2-sr-go-check { display: block; }
.ct2-sched-row.is-soldout .ct2-sr-go { color: #ccc; }

/* ── Cách xem 2: LỊCH THÁNG ── */
.ct2-cal-monthgrid { display: none; }
.ct2-cal-layout.is-calview .ct2-sched-list,
.ct2-cal-layout.is-calview .ct2-sched-head-row,
.ct2-cal-layout.is-calview .ct2-sched-soldout-toggle,
.ct2-cal-layout.is-calview .ct2-sched-soldout-group { display: none; }
.ct2-cal-layout.is-calview .ct2-cal-monthgrid { display: block; }
.ct2-cmg-weekdays { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; margin-bottom: 6px; }
.ct2-cmg-weekdays > div { text-align: center; font-size: 12.5px; font-weight: 600; color: #888; padding: 4px 0; }
.ct2-cmg-weekdays > div:last-child { color: #d6248c; }
.ct2-cmg-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; }
.ct2-cmg-day { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
    min-height: 54px; border-radius: 10px; text-decoration: none; font-variant-numeric: tabular-nums; }
.ct2-cmg-num { font-size: 15px; font-weight: 600; line-height: 1.1; }
/* Giá rút gọn đơn vị nghìn (vd 17.499k) — ngắn hơn bản đầy đủ 3 ký tự nên nâng lại cỡ chữ
   cho dễ đọc, vẫn nowrap để không tràn ô ngày (2026-07-26). */
.ct2-cmg-price { font-size: 11.5px; font-weight: 600; line-height: 1; white-space: nowrap; letter-spacing: -.2px; }
.ct2-cmg-day.is-blank { visibility: hidden; }
.ct2-cmg-day.is-none { color: #ccc; }
.ct2-cmg-day.is-none .ct2-cmg-num { font-weight: 400; }
.ct2-cmg-day.has-sched { background: #fdf0f7; color: #d6248c; border: 1px solid #f7dcea; }
.ct2-cmg-day.has-sched .ct2-cmg-price { color: #d6248c; }
.ct2-cmg-day.is-soldout { background: #fafafa; color: #bbb; border: 1px solid #f0f0f0; cursor: not-allowed; }
.ct2-cmg-day.is-soldout .ct2-cmg-price { color: #c9c9c9; }
.ct2-cmg-day.has-sched.is-selected { background: #d6248c; color: #fff; border-color: #d6248c; box-shadow: 0 4px 14px rgba(214,36,140,.28); }
.ct2-cmg-day.has-sched.is-selected .ct2-cmg-price { color: #fff; }
.ct2-cmg-note { margin-top: 12px; font-size: 12px; color: #999; font-style: italic; }
@media (hover: hover) and (pointer: fine) {
    .ct2-cmg-day.has-sched:hover { background: #d6248c; color: #fff; border-color: #d6248c; }
    .ct2-cmg-day.has-sched:hover .ct2-cmg-price { color: #fff; }
}

/* ── Bước 2: CHỌN SỐ LƯỢNG KHÁCH ── */
/* 2026-07-23: badge số bước dùng chung cho "1 Thời gian" và "2 Chọn số lượng khách". */
.ct2-step-title .ct2-step-num,
.ct2-pax-title .ct2-step-num { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px;
    border-radius: 50%; background: #d6248c; color: #fff; font-size: 12.5px; font-weight: 700; margin-right: 7px; }
.ct2-pax { border: 1px solid #f2e3ec; border-radius: 12px; padding: 6px 14px 14px; }
.ct2-pax-row { display: grid; grid-template-columns: minmax(0,1fr) auto auto; align-items: center; gap: 12px; padding: 11px 0; border-bottom: 1px solid #f7f7f7; }
.ct2-pax-row:last-child { border-bottom: 0; }
.ct2-pax-l b { font-size: 14px; font-weight: 600; color: #222; }
.ct2-pax-l small { font-size: 12.5px; color: #999; }
.ct2-pax-price { font-size: 13px; color: #666; white-space: nowrap; }
.ct2-pax-ctrl { display: inline-flex; align-items: center; gap: 6px; }
.ct2-pax-btn { width: 32px; height: 32px; border: 1px solid #f0dbe8; border-radius: 8px; background: #fff; color: #d6248c;
    font-family: inherit; font-size: 17px; font-weight: 700; line-height: 1; cursor: pointer; transition: background .15s, color .15s; }
.ct2-pax-btn:hover { background: #d6248c; color: #fff; border-color: #d6248c; }
.ct2-pax-qty { min-width: 26px; text-align: center; font-size: 15px; font-weight: 700; color: #222; font-variant-numeric: tabular-nums; }
.ct2-pax-total { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 12px; padding-top: 12px; border-top: 1px dashed #f0dbe8; }
.ct2-pax-total-l b { display: block; font-size: 14.5px; font-weight: 700; color: #222; }
.ct2-pax-total-l small { font-size: 12.5px; color: #999; }
.ct2-pax-total-v { font-size: 20px; font-weight: 800; color: #d6248c; font-variant-numeric: tabular-nums; }
.ct2-sched-btn-book.is-disabled { opacity: .5; pointer-events: none; }

@media (max-width: 700px) {
    .ct2-cal-toolbar { flex-wrap: wrap; }
    /* 2026-07-28: đã bỏ .ct2-cal-heading → toolbar chỉ còn toggle; bỏ margin-left:auto để toggle
       nằm bên TRÁI (flex-start) thay vì bị auto đẩy sang phải. */
    .ct2-cal-viewmode { order: -1; }
    .ct2-cal-toolbar .ct2-cal-months { flex-basis: 100%; }
    /* Mobile: hàng 2 cột nên chỉ báo › thừa chỗ → chỉ hiện dấu ✓ ở hàng đang chọn.
       2026-07-22 (v14): ✓ nằm ở GÓC PHẢI HÀNG ĐẦU (thẳng hàng nhãn "Khởi hành") thay vì chiếm
       nguyên 1 dòng dưới cùng → card thấp bớt ~34px. */
    .ct2-sr-go { display: none; }
    .ct2-sched-row.is-selected .ct2-sr-go {
        display: flex; grid-row: 1; grid-column: 2;
        justify-content: flex-end; align-self: start;
    }
    .ct2-cmg-day { min-height: 48px; }
    /* 2026-07-26: giá rút gọn "17.499k" (7 ký tự) vừa ô ~44px ở iPhone 390px → bỏ được
       mức 8.5px gần như không đọc nổi của bản giá đầy đủ. */
    .ct2-cmg-price { font-size: 10px; letter-spacing: -.3px; }
    .ct2-pax-row { grid-template-columns: minmax(0,1fr) auto; row-gap: 6px; }
    .ct2-pax-price { grid-column: 1; font-size: 12.5px; }
    .ct2-pax-ctrl { grid-row: 1 / span 2; grid-column: 2; }
}

/* ══════════════════════════════════════════════════════════════════════════
   THẺ GIÁ (sidebar): chọn NGÀY KHỞI HÀNH + SỐ KHÁCH ngay trong thẻ (2026-07-22)
   Markup: user_2019/chitiet_tour_v2.php (#ct2BkForm) · JS: partials/_chitiet_tour_v2_script.php
   Dùng lại .ct2-pax-row/.ct2-pax-btn của bước 2 nên số khách 2 nơi hiển thị giống nhau.
   ══════════════════════════════════════════════════════════════════════════ */
.ct2-bk-form { margin: 2px 0 10px; }
.ct2-bk-label { font-size: 12.5px; font-weight: 600; color: #888; margin-bottom: 6px; }
.ct2-bk-dates { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; margin-bottom: 10px; }
.ct2-bk-date { display: inline-flex; align-items: center; justify-content: center; gap: 5px; min-height: 38px; padding: 5px 8px;
    border: 1px solid #f0dbe8; border-radius: 10px; background: #fff; color: #444; font-size: 13px; font-weight: 600;
    text-decoration: none; text-align: center; transition: border-color .15s, background .15s, color .15s; }
.ct2-bk-date:hover { border-color: #d6248c; background: #fdf0f7; color: #d6248c; }
.ct2-bk-date.is-active { border-color: #d6248c; background: #fdf0f7; color: #d6248c; }
.ct2-bk-date-all { color: #d6248c; }
.ct2-bk-date-all svg { flex: 0 0 auto; }
/* 2026-07-22 (v10): nén chiều cao — mỗi lứa tuổi 1 hàng gọn (nhãn + tuổi cùng dòng, đơn giá
   dòng nhỏ bên dưới), để cả thẻ vừa 1 màn hình laptop 13". */
.ct2-bk-pax { border: 1px solid #f2e3ec; border-radius: 10px; padding: 2px 12px; max-height: 40vh; overflow-y: auto; }
.ct2-bk-pax .ct2-pax-row { grid-template-columns: minmax(0, 1fr) auto; row-gap: 1px; padding: 7px 0; }
.ct2-bk-pax .ct2-pax-price { grid-column: 1; font-size: 11.5px; color: #999; }
.ct2-bk-pax .ct2-pax-ctrl { grid-row: 1 / span 2; grid-column: 2; }
.ct2-bk-pax .ct2-pax-l b { font-size: 13px; }
.ct2-bk-pax .ct2-pax-l small { font-size: 11px; }   /* cùng dòng với tên lứa tuổi cho đỡ cao */
.ct2-bk-pax .ct2-pax-btn { width: 26px; height: 26px; font-size: 14px; }
.ct2-bk-pax .ct2-pax-qty { min-width: 22px; font-size: 14px; }
.ct2-bk-total { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 0 0 4px; }
.ct2-bk-total-l { font-size: 13.5px; color: #555; }
.ct2-bk-total-v { font-size: 18px; font-weight: 800; color: #d6248c; font-variant-numeric: tabular-nums; }

/* Danh sách nối nhiều tháng: hàng tiêu đề cột chỉ hiện 1 lần ở tháng đầu. Đặt CUỐI FILE để chắc
   chắn đứng sau rule `.ct2-sched-head-row{display:grid}` (2026-07-22 v3). */
.ct2-cal-month-display + .ct2-cal-month-display .ct2-sched-head-row { display: none; }

/* ── Danh sách lịch: chỉ 5 ngày còn chỗ, phần còn lại sau nút "Xem thêm N ngày khởi hành"
   (2026-07-22 v5). Chỉ áp cho kiểu Danh sách — kiểu Lịch tháng hiện đủ ngày trong tháng. ── */
.ct2-cal-layout:not(.is-calview):not(.is-sched-expanded) .ct2-sched-row.is-extra { display: none; }
.ct2-cal-layout:not(.is-calview):not(.is-sched-expanded) .ct2-cal-month-display.is-extra-month { display: none; }
.ct2-sched-more { display: flex; align-items: center; justify-content: center; gap: 7px; width: 100%;
    margin-top: 14px; padding: 11px 0; background: #fff; border: 1px solid #f0dbe8; border-radius: 10px;
    font-family: inherit; font-size: 13.5px; font-weight: 700; color: #d6248c; cursor: pointer;
    transition: background .15s, border-color .15s; }
.ct2-sched-more:hover { background: #fdf0f7; border-color: #d6248c; }
.ct2-sched-more-chev { transition: transform .2s; }
.ct2-sched-more[aria-expanded="true"] .ct2-sched-more-chev { transform: rotate(180deg); }
/* Đặt SAU rule .ct2-sched-more{display:flex} để chắc chắn thắng cascade: kiểu Lịch tháng
   không cần nút "Xem thêm ... ngày khởi hành". */
.ct2-cal-layout.is-calview .ct2-sched-more { display: none; }
/* Khối "GIÁ TỪ …/khách" đang ẩn (2026-07-22 v6) — khai báo rõ vì .ct2-book-head có style riêng. */
.ct2-book-head[hidden] { display: none; }
/* Nút "Chọn ngày khác" đang ẩn (2026-07-22 v7) — .ct2-book-cta có display:block nên [hidden] phải
   khai báo rõ mới thắng. */
.ct2-book-cta[hidden] { display: none; }

/* Nút "Xem tất cả" ở tiêu đề Lịch trình chi tiết (2026-07-22) — nằm cuối hàng tiêu đề (h2 là flex). */
.ct2-itin-all { margin-left: auto; display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto;
    padding: 7px 14px; background: #fff; border: 1px solid #f0dbe8; border-radius: 999px;
    font-family: inherit; font-size: 13px; font-weight: 600; line-height: 1; color: #d6248c; cursor: pointer;
    transition: background .15s, border-color .15s; }
.ct2-itin-all:hover { background: #fdf0f7; border-color: #d6248c; }
.ct2-itin-all[hidden] { display: none; }
.ct2-itin-all-chev { transition: transform .2s; }
.ct2-itin-all[aria-expanded="true"] .ct2-itin-all-chev { transform: rotate(180deg); }
@media (max-width: 600px) { .ct2-itin-all { padding: 6px 11px; font-size: 12px; } }

/* Cột "Đặc điểm" trong hàng lịch khởi hành (2026-07-22 v9): 1 dòng, dài thì cắt và hover xem đủ. */
.ct2-sr-feature { min-width: 0; }
.ct2-sr-feature .ct2-sr-codewrap { width: 100%; }
.ct2-sr-feature .ct2-sr-code { font-size: 13.5px; font-weight: 600; color: #555; }
.ct2-sched-row.is-soldout .ct2-sr-feature .ct2-sr-code { color: #aaa; }

/* ── Thẻ đặt tour luôn GỌN TRONG 1 MÀN HÌNH (2026-07-22 v10) ─────────────────────────
   Khi thẻ được pin (.is-stuck), giới hạn chiều cao theo viewport: phần chọn ngày / số khách
   cuộn bên trong, còn khối .ct2-book-foot (Tổng giá tour + nút đặt + tư vấn) dính đáy nên
   khách không phải cuộn mới thấy giá và nút bấm. */
.ct2-book-card { display: flex; flex-direction: column; }
.ct2-book-body { display: flex; flex-direction: column; min-height: 0; padding-bottom: 0; }
.ct2-book-foot { position: sticky; bottom: 0; background: #fff; padding-bottom: 14px; margin-top: auto; }
.ct2-book-foot .ct2-book-cta { margin-top: 10px; }
.ct2-aside.is-stuck .ct2-book-card { max-height: calc(100vh - 132px); }
.ct2-aside.is-stuck .ct2-book-body { overflow-y: auto; }
@media (max-width: 992px) {
    /* Tablet/mobile: thẻ nằm trong luồng trang → không giới hạn chiều cao, không cần dính đáy. */
    .ct2-book-foot { position: static; }
    .ct2-bk-pax { max-height: none; }
}

/* Thanh cuộn trong thẻ đặt tour (vùng body khi bị pin + danh sách số khách): mảnh và XÁM NHẠT
   cho đỡ chói — mặc định của trình duyệt đậm, nổi hơn cả nội dung (2026-07-22 v11). */
.ct2-book-body,
.ct2-bk-pax { scrollbar-width: thin; scrollbar-color: #e3e3e3 transparent; }
.ct2-book-body::-webkit-scrollbar,
.ct2-bk-pax::-webkit-scrollbar { width: 6px; }
.ct2-book-body::-webkit-scrollbar-track,
.ct2-bk-pax::-webkit-scrollbar-track { background: transparent; }
.ct2-book-body::-webkit-scrollbar-thumb,
.ct2-bk-pax::-webkit-scrollbar-thumb { background: #e3e3e3; border-radius: 999px; }
.ct2-book-body::-webkit-scrollbar-thumb:hover,
.ct2-bk-pax::-webkit-scrollbar-thumb:hover { background: #d2d2d2; }
