/* Du Lịch Con Voi — Tour Booking: khung tour frontend (mobile-first, không phụ thuộc theme). */
.dlcv-tour-box {
  box-sizing: border-box;
  max-width: 100%;
  margin: 2rem 0;
  padding: 1.5rem 1.5rem 1.75rem;
  border: 1px solid #e5e7eb;
  border-top: 4px solid #E4570B;
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 6px 24px rgba(0, 0, 0, .08);
  font-size: 16px;
  line-height: 1.55;
  color: #1f2937;
  /* v1.0.9: container query — bố cục nút/fact theo CHIỀU RỘNG CỦA THẺ, không theo
     viewport (thẻ nằm trong cột nội dung hẹp có sidebar; media query theo viewport
     từng làm 3 nút chen nhau ở cột ~480px). Trình duyệt chưa hỗ trợ @container
     thì giữ bố cục xếp dọc (vẫn gọn, không vỡ). */
  container-type: inline-size;
}
.dlcv-tour-box * { box-sizing: border-box; }
/* v1.0.12 — Diệt dấu vuông "▪" của theme trước các mục danh sách trong thẻ:
   theme đặt list-style trực tiếp trên `li` nên `list-style: none` ở cấp `ul`
   (facts, incsum, checklist) không thắng được. Đặt trực tiếp trên `li` +
   `::marker { content: none; }`.
   KHÔNG reset ::before ở phạm vi rộng: dấu ✓/✗ của bảng đã gồm/chưa gồm và
   các danh sách trong nội dung bài (.dlcv-highlights/.dlcv-timeline/
   .dlcv-includes/.dlcv-excludes) nằm trong ::before của chính plugin.
   Chỉ reset ::before trên facts + checklist (2 chỗ này plugin dùng span inline
   cho icon — .dlcv-fact-icon emoji, .dlcv-check ✓ — không dùng ::before).
   v1.0.13 — SỬA TÊN CLASS: bản 1.0.12 nhắm nhầm `dlcv-tour-trust` (chỉ là quy
   tắc chết ở dòng ~210, không phần tử nào dùng) — class thật của checklist
   trong PHP là `dlcv-tour-checklist` nên dấu vuông ở checklist chưa mất. */
.dlcv-tour-box ul.dlcv-tour-facts li,
.dlcv-tour-box ul.dlcv-tour-checklist li,
.dlcv-tour-box ul.dlcv-incsum-list li { list-style-type: none !important; }
.dlcv-tour-box ul.dlcv-tour-facts li::marker,
.dlcv-tour-box ul.dlcv-tour-checklist li::marker,
.dlcv-tour-box ul.dlcv-incsum-list li::marker { content: none; }
.dlcv-tour-box ul.dlcv-tour-facts li::before,
.dlcv-tour-box ul.dlcv-tour-checklist li::before { content: none !important; }
.dlcv-tour-kicker {
  margin: 0 0 .5rem;
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #6b7280;
}
.dlcv-tour-price {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .35rem .75rem;
  margin: 0 0 .9rem;
  padding-bottom: .9rem;
  border-bottom: 1px dashed #e5e7eb;
}
.dlcv-tour-price-label {
  font-size: .95rem;
  font-weight: 600;
  color: #374151;
}
.dlcv-tour-price-value {
  font-size: 1.85rem;
  line-height: 1.2;
  font-weight: 800;
  color: #E4570B;
}
.dlcv-tour-facts {
  list-style: none;
  margin: 0 0 1.1rem;
  padding: 0;
}
.dlcv-tour-facts li {
  padding: .6rem 0;
  border-bottom: 1px solid #f3f4f6;
}
.dlcv-tour-facts li:last-child { border-bottom: 0; }
/* v1.0.9: nhãn nhỏ xám TRÊN — giá trị đậm DƯỚI (kiểu trang tour chuyên nghiệp):
   giá trị có trọn chiều rộng ô nên "1 ngày" không gãy, "Hàng ngày — đón 08:00–08:30"
   không treo dấu "—" một mình một dòng (kèm nbsp hai bên dấu "—" ở PHP). */
.dlcv-fact-label {
  display: flex;
  align-items: center;
  gap: .4rem;
  margin-bottom: .15rem;
  font-size: .85rem;
  font-weight: 700;
  color: #6b7280;
}
.dlcv-fact-icon { font-size: 1rem; }
.dlcv-fact-value {
  display: block;
  font-size: 1.02rem;
  font-weight: 700;
  color: #111827;
  text-wrap: pretty;
}

.dlcv-tour-actions {
  display: flex;
  flex-direction: column;
  gap: .7rem;
}
.dlcv-btn {
  display: block;
  width: 100%;
  padding: .85rem 1rem;
  border: 0;
  border-radius: 8px;
  font-size: 1rem;
  font-weight: 700;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  line-height: 1.3;
}
.dlcv-btn-book, .dlcv-btn-submit {
  background: #E4570B;
  color: #fff;
}
.dlcv-btn-book:hover, .dlcv-btn-submit:hover { background: #C74308; }
.dlcv-btn-call {
  background: #fff;
  color: #0e7490;
  border: 2px solid #0e7490;
  /* v1.0.9: số điện thoại KHÔNG được gãy dòng ("0932 / 464 111" trên ảnh thật);
     nút chỉ xếp ngang khi thẻ đủ rộng (container query v1.0.9), còn hẹp thì
     xếp dọc full-width thay vì cố nhét ngang. */
  font-size: .95rem;
  white-space: nowrap;
}
.dlcv-btn-call:hover { background: #ecfeff; }

.dlcv-notice {
  margin: 1rem 0 0;
  padding: .8rem 1rem;
  border-radius: 8px;
  font-weight: 600;
}
.dlcv-notice-success { background: #ecfdf5; color: #065f46; border: 1px solid #a7f3d0; }
.dlcv-notice-error { background: #fef2f2; color: #991b1b; border: 1px solid #fecaca; }

.dlcv-booking-form {
  margin-top: 1.1rem;
  padding-top: 1.1rem;
  border-top: 1px solid #e5e7eb;
}
.dlcv-booking-form[hidden] { display: none; }
.dlcv-form-title { margin: 0 0 .8rem; font-size: 1.05rem; }
.dlcv-booking-form p { margin: 0 0 .8rem; }
.dlcv-booking-form label {
  display: block;
  margin-bottom: .3rem;
  font-weight: 600;
  color: #111827;
}
.dlcv-required { color: #dc2626; }
.dlcv-booking-form input[type="text"],
.dlcv-booking-form input[type="tel"],
.dlcv-booking-form input[type="email"],
.dlcv-booking-form input[type="date"],
.dlcv-booking-form input[type="number"],
.dlcv-booking-form textarea {
  width: 100%;
  padding: .65rem .8rem;
  border: 1px solid #d1d5db;
  border-radius: 8px;
  font-size: 1rem;
  font-family: inherit;
  background: #fff;
  color: #111827;
}
.dlcv-booking-form input:focus,
.dlcv-booking-form textarea:focus {
  outline: 2px solid #E4570B;
  outline-offset: 1px;
  border-color: #E4570B;
}
.dlcv-form-note {
  font-size: .9rem;
  color: #6b7280;
  text-align: center;
}
.dlcv-honeypot {
  position: absolute !important;
  left: -9999px !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* v1.0.9: nút Đặt tour + 2 nút gọi chỉ xếp ngang khi THẺ đủ rộng (xem khối
   @container cuối file); bỏ media query theo viewport cũ vì cột nội dung hẹp
   có sidebar làm 3 nút chen nhau và gãy số điện thoại. */

/* ==========================================================================
   v1.0.3 — Thẻ đặt tour đầu bài + thanh sticky mobile + class nội dung tour
   (theo spec MAU-TOUR-CHUYEN-NGHIEP-spec.md; tất cả class đều có tiền tố dlcv-,
   không phụ thuộc theme; mobile-first.)
   ========================================================================== */

/* Thẻ đặt tour đầu bài: giá + "Đã bao gồm VAT" + dòng tin tưởng. */
.dlcv-tour-vat {
  margin: -.55rem 0 .9rem;
  font-size: .88rem;
  font-weight: 600;
  color: #15803d;
}
.dlcv-tour-trust {
  margin: .8rem 0 0;
  font-size: .9rem;
  color: #6b7280;
  text-align: center;
}
/* v1.0.9: fact 2 cột giờ theo chiều rộng THẺ (khối @container cuối file),
   không theo viewport — bỏ media query cũ. */

/* Thanh đặt tour cố định: chỉ hiện trên mobile (< 640px). */
.dlcv-sticky-bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 999;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  padding: .6rem .9rem;
  background: #fff;
  border-top: 1px solid #e5e7eb;
  box-shadow: 0 -4px 16px rgba(0, 0, 0, .1);
}
.dlcv-sticky-price {
  font-size: 1.15rem;
  font-weight: 800;
  color: #E4570B;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dlcv-sticky-book {
  width: auto !important;
  flex: 0 0 auto;
  padding: .65rem 1.4rem !important;
}
@media (min-width: 640px) {
  .dlcv-sticky-bar { display: none; }
}

/* --- Khối nội dung bài tour (bot dùng các class này trong thân bài) --- */

/* Điểm nổi bật: bullet ✓ cam. */
.dlcv-highlights {
  list-style: none;
  margin: 0 0 1.5rem;
  padding: 0;
}
.dlcv-highlights li {
  position: relative;
  padding: .3rem 0 .3rem 1.7rem;
}
.dlcv-highlights li::before {
  content: "✓";
  position: absolute;
  left: 0;
  top: .3rem;
  font-weight: 800;
  color: #E4570B;
}

/* Lịch trình: timeline theo giờ/ngày, mốc giờ cam đậm. */
.dlcv-timeline {
  list-style: none;
  margin: 0 0 1.5rem;
  padding: 0 0 0 1rem;
  border-left: 2px solid #fdba74;
}
.dlcv-timeline li {
  position: relative;
  padding: 0 0 1rem .9rem;
}
.dlcv-timeline li:last-child { padding-bottom: 0; }
.dlcv-timeline li::before {
  content: "";
  position: absolute;
  left: -1.45rem;
  top: .35rem;
  width: .7rem;
  height: .7rem;
  border-radius: 50%;
  background: #E4570B;
  border: 2px solid #fff;
  box-shadow: 0 0 0 2px #fdba74;
}
.dlcv-timeline .dlcv-time {
  display: block;
  font-weight: 800;
  color: #E4570B;
}
.dlcv-timeline .dlcv-stop { font-weight: 700; color: #111827; }
.dlcv-timeline .dlcv-extra {
  display: block;
  font-size: .92rem;
  color: #6b7280;
}

/* Đã bao gồm (✓ xanh) / Chưa bao gồm (✗ đỏ). */
.dlcv-includes, .dlcv-excludes {
  list-style: none;
  margin: 0 0 1.5rem;
  padding: 0;
}
.dlcv-includes li, .dlcv-excludes li {
  position: relative;
  padding: .3rem 0 .3rem 1.7rem;
}
.dlcv-includes li::before {
  content: "✓";
  position: absolute;
  left: 0;
  top: .3rem;
  font-weight: 800;
  color: #15803d;
}
.dlcv-excludes li::before {
  content: "✗";
  position: absolute;
  left: 0;
  top: .3rem;
  font-weight: 800;
  color: #dc2626;
}

/* v1.0.14: diệt dấu vuông "▪" của theme trên 4 danh sách thân bài — cùng mẫu đã
   sửa được incsum ở v1.0.12 (list-style đặt trực tiếp trên `li` + ::marker):
   KHÔNG reset ::before vì dấu ✓/✗/mốc timeline của chính plugin nằm trong đó. */
.dlcv-highlights li,
.dlcv-timeline li,
.dlcv-includes li,
.dlcv-excludes li { list-style-type: none !important; }
.dlcv-highlights li::marker,
.dlcv-timeline li::marker,
.dlcv-includes li::marker,
.dlcv-excludes li::marker { content: none; }

/* Hộp lưu ý (đón khách, chuẩn bị, điều kiện). */
.dlcv-note {
  margin: 0 0 1.5rem;
  padding: .9rem 1.1rem;
  background: #fffbeb;
  border-left: 4px solid #f59e0b;
  border-radius: 0 8px 8px 0;
}
.dlcv-note p { margin: 0 0 .4rem; }
.dlcv-note p:last-child { margin-bottom: 0; }

/* FAQ accordion (thẻ <details> — không cần JS). */
.dlcv-faq { margin: 0 0 1.5rem; }
.dlcv-faq details {
  margin-bottom: .6rem;
  padding: .8rem 1rem;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  background: #fff;
}
.dlcv-faq summary {
  font-weight: 700;
  color: #111827;
  cursor: pointer;
}
.dlcv-faq details p { margin: .6rem 0 0; }

/* Bảng giá: cuộn ngang khi hẹp. */
.dlcv-table-wrap { overflow-x: auto; margin: 0 0 1.5rem; }
table.dlcv-price-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 1rem;
}
.dlcv-price-table th, .dlcv-price-table td {
  padding: .6rem .8rem;
  border: 1px solid #e5e7eb;
  text-align: left;
  white-space: nowrap;
}
.dlcv-price-table thead th { background: #f9fafb; font-weight: 700; }
.dlcv-price-table td:last-child {
  font-weight: 800;
  color: #E4570B;
  text-align: right;
}

/* Ảnh các điểm dừng: lưới 1 cột mobile, 3 cột desktop. */
.dlcv-stop-gallery {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
  margin: 0 0 1.5rem;
}
.dlcv-stop-gallery figure { margin: 0; }
.dlcv-stop-gallery img {
  width: 100%;
  height: auto;
  border-radius: 10px;
  display: block;
}
.dlcv-stop-gallery figcaption {
  margin-top: .4rem;
  font-size: .9rem;
  color: #4b5563;
}
@media (min-width: 640px) {
  .dlcv-stop-gallery { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 900px) {
  .dlcv-stop-gallery { grid-template-columns: 1fr 1fr 1fr; }
}

/* ==========================================================================
   v1.0.4 — Đổi màu cam chính #ea580c -> #c2410c (giữ tông cam của OTA du lịch
   như GetYourGuide/Viator/Klook; chữ trắng trên #ea580c chỉ đạt 3.56:1, KHÔNG
   đạt WCAG AA 4.5:1; trên #c2410c đạt 5.18:1; hover #9a3412 đạt 7.31:1).
   Nút gọi xanh #0e7490 (5.36:1), chữ xanh lá #15803d (5.02:1), đỏ #dc2626
   (4.83:1) đã đạt chuẩn nên giữ nguyên.
   ========================================================================== */

/* Bảng giá khi chèn bằng Table block (pattern): class nằm ở <figure>, không
   phải ở <table> như bài bot viết — cần quy tắc này để bảng đủ rộng. */
.dlcv-price-table table {
  width: 100%;
  border-collapse: collapse;
  font-size: 1rem;
}

/* Timeline trong pattern dùng <strong> cho giờ (trình soạn thảo giữ được
   <strong> khi sửa tay, còn <span class="dlcv-time"> sẽ mất class): strong
   đầu tiên trong mỗi mốc = giờ, tô cam đậm như bài bot viết. */
.dlcv-timeline li strong:first-of-type { color: #E4570B; }

/* ==========================================================================
   v1.0.6 — HỘP "TÌM TOUR KHÁC" (tìm instant, cuối bài tour)
   Khớp bảng màu v1.0.4: cam #c2410c, xanh #0e7490. Mobile-first.
   ========================================================================== */
.dlcv-tour-search {
  margin: 0 0 2rem;
  padding: 1.25rem;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  background: #fff;
}
.dlcv-search-title { margin: 0 0 .25rem; font-size: 1.25rem; }
.dlcv-search-hint { margin: 0 0 .75rem; color: #4b5563; font-size: .95rem; }
.dlcv-search-label { display: block; font-weight: 700; }
.dlcv-search-input {
  width: 100%;
  margin-top: .35rem;
  padding: .7rem .9rem;
  border: 1px solid #d1d5db;
  border-radius: 8px;
  font-size: 1rem;
}
.dlcv-search-input:focus { outline: 2px solid #E4570B; border-color: #E4570B; }
.dlcv-search-status { margin: .5rem 0 0; color: #4b5563; font-size: .9rem; }
.dlcv-search-status:empty { display: none; }
.dlcv-search-results { margin-top: .75rem; display: grid; gap: .6rem; }
.dlcv-search-results:empty { display: none; }
.dlcv-search-item {
  display: flex;
  gap: .75rem;
  align-items: center;
  padding: .6rem;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  text-decoration: none;
  color: inherit;
}
.dlcv-search-item:hover { border-color: #E4570B; }
.dlcv-search-item img {
  width: 64px;
  height: 48px;
  object-fit: cover;
  border-radius: 6px;
  flex: none;
}
.dlcv-search-item-text { min-width: 0; }
.dlcv-search-item-title { display: block; }
.dlcv-search-item-meta { display: block; color: #E4570B; font-size: .9rem; }
.dlcv-search-empty { margin: 0; color: #4b5563; }

/* ==========================================================================
   v1.0.8 — Bảng màu mới + chọn ngày/gói/khách + tổng tiền live.
   CTA chính cam #E4570B là nút đặc DUY NHẤT (Đặt ngay, submit form, nút dính);
   hover cam đậm #C74308. Nút gọi hạ xuống dạng viền teal #0e7490 (nền trắng,
   hover nền teal nhạt #ecfeff — xem .dlcv-btn-call ở trên). Mọi chi tiết cam
   còn lại (viền trên thẻ, giá, timeline, link) đổi đồng bộ sang #E4570B.
   LƯU Ý: chữ trắng trên #E4570B chỉ đạt ~3,7:1 (dưới WCAG AA 4,5:1 cho chữ
   thường) — màu này theo thiết kế đã duyệt; nút vẫn đạt 3:1 cho chữ lớn/UI.
   ========================================================================== */

/* Giá gốc gạch ngang + nhãn giảm giá (chỉ khi có giá gốc thật, lớn hơn giá bán). */
.dlcv-tour-price-orig {
  font-size: 1.1rem;
  font-weight: 600;
  color: #6b7280;
  text-decoration: line-through;
}
.dlcv-tour-price-badge {
  padding: .15rem .5rem;
  border-radius: 999px;
  background: #dc2626;
  color: #fff;
  font-size: .85rem;
  font-weight: 800;
}

/* Chọn ngày: hàng chip 7 ngày + nút "Ngày khác" + lịch tháng + ghi chú ngày ngoài lịch. */
.dlcv-date-picker { margin: 0 0 1.25rem; }
.dlcv-date-label { margin: 0 0 .5rem; }
.dlcv-date-chips {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  margin-bottom: .6rem;
}
.dlcv-date-chip {
  padding: .5rem .7rem;
  border: 1px solid #d1d5db;
  border-radius: 8px;
  background: #fff;
  color: #111827;
  font-size: .95rem;
  font-weight: 700;
  cursor: pointer;
}
.dlcv-date-chip:hover { border-color: #E4570B; }
.dlcv-date-chip.dlcv-selected {
  background: #E4570B;
  border-color: #E4570B;
  color: #fff;
}
/* v1.0.9: "Ngày khác" là NÚT PHỤ đúng nghĩa (viền teal, có icon lịch), không còn
   là link xanh gạch chân lạc lõng; trạng thái mở lịch có nền teal nhạt. */
.dlcv-date-other {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  padding: .55rem .9rem;
  border: 1px solid #0e7490;
  border-radius: 8px;
  background: #fff;
  color: #0e7490;
  font-size: .95rem;
  font-weight: 700;
  text-decoration: none;
  cursor: pointer;
}
.dlcv-date-other:hover { background: #ecfeff; }
.dlcv-date-other.dlcv-date-other-open { background: #ecfeff; border-color: #155e75; }
.dlcv-date-note {
  margin: .6rem 0 0;
  padding: .6rem .8rem;
  border: 1px solid #fde68a;
  border-radius: 8px;
  background: #fffbeb;
  color: #92400e;
  font-size: .9rem;
}
.dlcv-calendar {
  margin-top: .6rem;
  padding: .8rem;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  background: #fff;
}
.dlcv-calendar[hidden] { display: none; }
.dlcv-calendar-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: .6rem;
}
.dlcv-cal-month { font-weight: 800; color: #111827; }
.dlcv-cal-nav {
  width: 2rem;
  height: 2rem;
  padding: 0;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  background: #fff;
  font-size: 1.1rem;
  font-weight: 800;
  line-height: 1;
  cursor: pointer;
}
.dlcv-cal-nav:disabled { opacity: .4; cursor: default; }
.dlcv-cal-weekdays,
.dlcv-cal-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: .25rem;
  text-align: center;
}
.dlcv-cal-weekdays { margin-bottom: .3rem; font-size: .8rem; font-weight: 700; color: #6b7280; }
/* v1.0.14: mỗi ô ngày 2 dòng như demo — số ngày + giá nhỏ bên dưới (giá cập nhật
   theo gói đã chọn); ngày đã chọn chỉ viền cam nền trắng, không nền cam đặc. */
.dlcv-cal-day {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0;
  padding: .4rem 0;
  border: 1px solid transparent;
  border-radius: 6px;
  background: #fff;
  color: #111827;
  font-size: .95rem;
  line-height: 1.25;
  cursor: pointer;
}
.dlcv-cal-num { font-weight: 700; }
.dlcv-cal-price { font-size: .68rem; font-weight: 700; color: #6b7280; }
.dlcv-cal-day:hover { border-color: #E4570B; }
.dlcv-cal-day:disabled { color: #d1d5db; cursor: default; }
.dlcv-cal-day:disabled .dlcv-cal-price { color: #9ca3af; }
.dlcv-cal-day:disabled:hover { border-color: transparent; }
.dlcv-cal-day.dlcv-cal-selected {
  background: #fff7ed;
  border: 2px solid #E4570B;
  color: #111827;
  font-weight: 800;
}
.dlcv-cal-day.dlcv-cal-selected .dlcv-cal-price { color: #9a3412; }
.dlcv-cal-blank { display: block; }

/* v1.0.14: hộp xanh "Đã chọn" + ghi chú cố định trong lịch tháng (như demo). */
.dlcv-cal-chosen {
  margin: .7rem 0 0;
  padding: .6rem .8rem;
  border: 1px solid #bbf7d0;
  border-radius: 8px;
  background: #f0fdf4;
  color: #166534;
  font-size: .9rem;
}
.dlcv-cal-note {
  margin: .6rem 0 0;
  font-size: .88rem;
  color: #4b5563;
}
.dlcv-cal-quick { margin: .7rem 0 0; font-size: .9rem; color: #4b5563; }
.dlcv-cal-quick input[type="date"] {
  padding: .4rem .5rem;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  font-size: .95rem;
  font-family: inherit;
}

/* Chọn gói: radio card (tên + giờ + giá từng gói). */
.dlcv-packages { margin: 0 0 1.1rem; }
.dlcv-packages-label { margin: 0 0 .5rem; }
.dlcv-package-card {
  display: flex;
  align-items: center;
  gap: .6rem;
  margin-bottom: .5rem;
  padding: .7rem .9rem;
  border: 1px solid #d1d5db;
  border-radius: 10px;
  background: #fff;
  cursor: pointer;
}
.dlcv-package-card:last-child { margin-bottom: 0; }
.dlcv-package-card:hover { border-color: #E4570B; }
.dlcv-package-card.dlcv-package-selected {
  border-color: #E4570B;
  background: #fff7ed;
}
.dlcv-package-name { flex: 1; font-weight: 700; color: #111827; }
.dlcv-package-time { color: #4b5563; font-size: .92rem; white-space: nowrap; }
.dlcv-package-price { font-weight: 800; color: #E4570B; white-space: nowrap; }

/* Chọn khách: stepper Người lớn / Trẻ em. */
.dlcv-guests { margin: 0 0 .4rem; }
.dlcv-stepper {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  padding: .7rem 0;
  border-bottom: 1px solid #f3f4f6;
}
.dlcv-stepper:last-child { border-bottom: 0; }
.dlcv-stepper-label { font-weight: 700; color: #111827; }
.dlcv-stepper-price { font-weight: 600; color: #6b7280; font-size: .92rem; }
.dlcv-stepper-controls { display: flex; align-items: center; gap: .6rem; }
/* v1.0.9: nút − / + to ra (40px, chạm thoải mái trên mobile), có hover rõ ràng. */
.dlcv-stepper-controls button {
  width: 2.5rem;
  height: 2.5rem;
  padding: 0;
  border: 1.5px solid #d1d5db;
  border-radius: 50%;
  background: #fff;
  color: #111827;
  font-size: 1.3rem;
  font-weight: 800;
  line-height: 1;
  cursor: pointer;
}
.dlcv-stepper-controls button:hover { border-color: #E4570B; color: #E4570B; background: #fff7ed; }
.dlcv-stepper-count { min-width: 2rem; text-align: center; font-size: 1.1rem; font-weight: 800; }

/* v1.0.9: khối tóm tắt đúng nghĩa — hộp nền xám nhạt, viền, bo góc; từng dòng
   là hàng flex (nhãn trái — số phải); dòng Tổng cộng tách bằng đường kẻ, số to cam. */
.dlcv-total {
  margin-top: .75rem;
  padding: .9rem 1rem;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  background: #f9fafb;
}
.dlcv-total-break { margin: 0 0 .35rem; font-size: .95rem; color: #4b5563; }
.dlcv-total-sum {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1rem;
  margin: .6rem 0 .35rem;
  padding-top: .65rem;
  border-top: 1px solid #e5e7eb;
  font-size: 1.15rem;
  font-weight: 700;
  color: #111827;
}
.dlcv-total-sum strong { font-size: 1.45rem; color: #E4570B; white-space: nowrap; }
.dlcv-total-save { margin: 0 0 .3rem; font-weight: 700; color: #15803d; }
.dlcv-total-save[hidden] { display: none; }

/* Checklist tin cậy (hạn hủy theo ngày + dòng tin cậy cũ). */
.dlcv-tour-checklist {
  list-style: none;
  margin: .8rem 0 0;
  padding: 0;
  font-size: .9rem;
  color: #374151;
}
.dlcv-tour-checklist li { padding: .25rem 0; }
.dlcv-check { font-weight: 800; color: #15803d; }

/* ==========================================================================
   v1.0.9 — Làm gọn thẻ theo ảnh thật #898 (bản demo đẹp gọn, bản thật còn thô).
   (a) Fact: nhãn trên — giá trị dưới, 2 cột chỉ khi thẻ đủ rộng.
   (b) "Ngày khác" thành nút phụ viền teal có icon (xem .dlcv-date-other ở trên).
   (c) Stepper: nút − / + 40px (xem .dlcv-stepper-controls ở trên).
   (d) Tổng tiền thành hộp tóm tắt có viền/nền, hàng flex nhãn trái — số phải
       (xem .dlcv-total ở trên).
   (e) Nút gọi: số điện thoại nowrap; nút chính full-width 1 hàng, 2 nút gọi
       chia nhau hàng dưới khi thẻ ≥560px (v1.0.11 — trước đó ép 3 nút thành
       3 cột bằng nhau làm bể nút cam); xếp dọc full-width khi hẹp
       (xem .dlcv-btn-call ở trên).
   (f) Nhịp chung: padding thẻ 1.5rem/1.75rem, bo góc 14px, bóng 0 6px 24px.
   (g) Lịch tháng tự ẩn sau khi chọn ngày (JS: hideCalendar trong setSelectedDate;
       đóng khi bấm ra ngoài / bấm Esc).
   LƯU Ý: bố cục hàng nút + fact 2 cột dùng @container theo CHIỀU RỘNG CỦA THẺ
   (container-type: inline-size trên .dlcv-tour-box) vì cột nội dung có sidebar
   chỉ ~480px dù viewport desktop rộng — media query theo viewport từng làm 3 nút
   chen nhau và gãy số điện thoại. Trình duyệt chưa hỗ trợ @container thì giữ
   bố cục xếp dọc (vẫn gọn, không vỡ).
   ========================================================================== */
@container (min-width: 560px) {
  .dlcv-tour-box { padding: 1.75rem 2rem 2rem; }
  .dlcv-tour-card .dlcv-tour-facts {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 1.5rem;
  }
  /* v1.0.12: fact thành 2 hộp cân bằng (nền xám nhạt + viền đầy đủ) thay cho
     đường kẻ chia dòng: ở lưới 2 cột, quy tắc `li:last-child { border-bottom: 0 }`
     chỉ bỏ kẻ dưới ô cuối nên ô đầu còn 1 đường kẻ lẻ loi, 2 ô trông lệch nhau
     (càng lộ vì nội dung lệch: trái "1 ngày" ngắn, phải "Hàng ngày — đón
     08:00–08:30" dài). `border` đầy đủ ghi đè border-bottom của cả 2 ô;
     grid stretch mặc định khiến 2 hộp cao bằng nhau. */
  .dlcv-tour-card .dlcv-tour-facts li {
    padding: .7rem .9rem;
    background: #f9fafb;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
  }
  .dlcv-tour-card .dlcv-tour-facts li:last-child { border: 1px solid #e5e7eb; }
  /* v1.0.11: nút chính LUÔN full-width 1 hàng riêng (như demo), 2 nút gọi chia
     nhau hàng dưới — KHÔNG ép 3 nút thành 3 cột bằng nhau như v1.0.9/v1.0.10
     (nút cam bị bóp hẹp, dòng phụ "Không thu tiền ngay — giữ chỗ trước" gãy
     2 dòng, cao hơn 2 nút gọi — ảnh thật anh gửi 13/11). */
  .dlcv-tour-actions { flex-direction: row; flex-wrap: wrap; }
  .dlcv-tour-actions .dlcv-btn-book { flex: 1 1 100%; width: 100%; }
  .dlcv-tour-actions .dlcv-btn-call { flex: 1 1 0; width: auto; min-width: 0; }
  .dlcv-btn-book-sub { white-space: nowrap; }
  /* v1.0.11: chip ngày thành lưới 5 cột (5+2) thay vì flex-wrap (6+1 ở thẻ
     ~690px: 6 chip vừa hàng 1, chip thứ 7 lẻ loi 1 mình hàng 2). Gap .5rem
     và margin-bottom giữ nguyên từ quy tắc gốc .dlcv-date-chips. */
  .dlcv-date-chips { display: grid; grid-template-columns: repeat(5, 1fr); }
}

/* ==========================================================================
   v1.0.10 — Thẻ đặt tour theo đúng 3 ảnh demo anh gửi (13/11/2026) + luồng
   tour riêng (gói "Liên hệ" = yêu cầu báo giá, không có giá số).
   (1) Kicker + ★★★★★ (chỉ khi có review thật). (2) Ô giá gạch ngang (hộp nét
   đứt, chỉ khi có giá gốc thật). (3) "✓ Đã bao gồm VAT". (4) Chip ngày 3 dòng (thứ+ngày / SỐ NGÀY LỚN / giá, từ v1.0.14), giờ đón căn
   phải, hộp "Đã chọn theo lịch" khi ngoài 7 chip.
   (5) Gói radio card: tên đậm + giá phải, dòng phụ = chi tiết; giá "Liên hệ"
   cho gói báo giá; hiện khi ≥1 gói. (6) Số khách: tên + dòng phụ + giá + stepper.
   (7) Hộp tổng: "Tổng tạm tính" (đổi tên từ "Tổng cộng"), số căn phải.
   (8) Thông báo giá -> hộp cảnh báo vàng (nội dung trong Settings).
   (9) Nút "Đặt tour ngay" + dòng phụ "Không thu tiền ngay — giữ chỗ trước".
   (10) Checklist 3 mục (hủy miễn phí theo token {han_huy}/{gio_huy}/{gio_don}).
   (11) "Đã gồm / chưa gồm (tóm tắt trong thẻ)" 2 cột từ nội dung bài.
   (12) Form chỉ 4 trường + dòng tóm tắt lựa chọn. + Luồng tour riêng: chip
   "Liên hệ", stepper ẩn giá, hộp tổng ẩn -> hộp ghi chú báo giá, nút
   "Gửi yêu cầu báo giá", form nhãn "Yêu cầu thêm", subject "[Yêu cầu báo giá]".
   ========================================================================== */

/* (1) Sao đánh giá (chỉ khi có review thật — PHP quyết định có render hay không). */
.dlcv-tour-stars {
  color: #f59e0b;
  letter-spacing: .12em;
  font-size: .95rem;
  margin-left: .35rem;
  white-space: nowrap;
}
/* (1) Hậu tố đơn vị giá "/ người lớn" (nhỏ, xám, sau giá to). */
.dlcv-tour-price-per {
  font-size: 1rem;
  font-weight: 600;
  color: #6b7280;
}
/* (2) Hộp giá gốc (nét đứt): giá gốc gạch ngang -> giá hiện tại + badge -X%. */
.dlcv-tour-orig-box {
  margin: 0 0 .9rem;
  padding: .6rem .9rem;
  border: 1.5px dashed #d1d5db;
  border-radius: 10px;
  background: #fff;
  font-size: 1rem;
}
.dlcv-tour-orig-box[hidden] { display: none; }
.dlcv-tour-orig-arrow { color: #6b7280; font-weight: 700; }
.dlcv-tour-orig-now { font-size: 1.15rem; color: #E4570B; }

/* (4) Tiêu đề chọn ngày: "Chọn ngày khởi hành" + giờ đón căn phải. */
.dlcv-date-label {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1rem;
}
/* (4) Chip ngày 3 dòng như demo (v1.0.14): thứ+ngày (nhỏ, xám) / SỐ NGÀY LỚN /
   giá (nhỏ, xám; "Liên hệ" khi gói báo giá). Chip đang chọn: cả 3 dòng trắng. */
.dlcv-date-chip {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: .1rem;
  line-height: 1.3;
  min-width: 4.4rem;
}
.dlcv-chip-day { font-size: .82rem; font-weight: 700; color: #6b7280; }
.dlcv-chip-num { font-size: 1.35rem; font-weight: 800; line-height: 1.1; }
.dlcv-chip-price { font-size: .8rem; font-weight: 700; color: #6b7280; }
.dlcv-date-chip.dlcv-selected .dlcv-chip-day { color: #fff; }
.dlcv-date-chip.dlcv-selected .dlcv-chip-num { color: #fff; }
.dlcv-date-chip.dlcv-selected .dlcv-chip-price { color: #fff; opacity: .92; }
/* (4) Hộp "Đã chọn theo lịch" (nét đứt, bấm để mở lại lịch). */
.dlcv-date-chosen {
  display: block;
  width: 100%;
  margin-top: .6rem;
  padding: .65rem .9rem;
  border: 1.5px dashed #d1d5db;
  border-radius: 10px;
  background: #fff;
  color: #374151;
  font-size: .95rem;
  text-align: left;
  cursor: pointer;
}
.dlcv-date-chosen[hidden] { display: none; }
.dlcv-date-chosen:hover { border-color: #E4570B; }

/* (5) Gói radio card: radio trái + thân (tên + giá / chi tiết). */
.dlcv-package-card { align-items: flex-start; }
.dlcv-package-card input[type="radio"] { margin-top: .3rem; flex: none; }
.dlcv-package-body { flex: 1; min-width: 0; }
.dlcv-package-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: .75rem;
}
.dlcv-package-name { flex: 1; font-weight: 700; color: #111827; }
.dlcv-package-time {
  display: block;
  margin-top: .15rem;
  color: #4b5563;
  font-size: .92rem;
  white-space: normal;
}
.dlcv-package-price { font-weight: 800; color: #E4570B; white-space: nowrap; }

/* (6) Số khách: tiêu đề mục + tên (dòng phụ nhỏ) + giá + stepper. */
.dlcv-guests-label { margin: 0 0 .2rem; }
.dlcv-stepper-text { display: flex; flex-direction: column; min-width: 0; }
.dlcv-stepper-name { font-weight: 700; color: #111827; }
.dlcv-stepper-sub { font-size: .85rem; font-weight: 400; color: #6b7280; white-space: nowrap; }
.dlcv-stepper-right { display: flex; align-items: center; gap: .6rem; flex: none; }

/* (7) Hộp tổng: dòng "N người lớn × giá" có số căn phải (như demo). */
.dlcv-total-break {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1rem;
}
.dlcv-total-break-sum { font-weight: 700; color: #111827; white-space: nowrap; }
.dlcv-total[hidden] { display: none; }

/* (8) Thông báo giá: hộp cảnh báo vàng có icon ⚠ (nội dung trong Settings). */
.dlcv-price-warning {
  display: flex;
  gap: .6rem;
  margin-top: .75rem;
  padding: .8rem 1rem;
  border: 1px solid #fcd34d;
  border-radius: 10px;
  background: #fffbeb;
  color: #92400e;
  font-size: .92rem;
  line-height: 1.5;
}
.dlcv-price-warning[hidden] { display: none; }
.dlcv-price-warning-icon { flex: none; font-weight: 800; }
.dlcv-price-warning p { margin: 0; }

/* Luồng tour riêng: hộp ghi chú báo giá (thay cho hộp tổng khi chọn gói "Liên hệ"). */
.dlcv-quote-note {
  margin-top: .75rem;
  padding: .8rem 1rem;
  border: 1px solid #bae6fd;
  border-radius: 10px;
  background: #f0f9ff;
  color: #0c4a6e;
  font-size: .95rem;
  line-height: 1.5;
}
.dlcv-quote-note[hidden] { display: none; }

/* (9) Nút chính 2 dòng: tên nút to + dòng phụ nhỏ (nút dính mobile chỉ 1 dòng). */
.dlcv-btn-book {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .1rem;
}
.dlcv-btn-book-main { font-size: 1.1rem; font-weight: 800; line-height: 1.3; }
.dlcv-btn-book-sub { font-size: .85rem; font-weight: 600; opacity: .92; }

/* (11) Đã gồm / chưa gồm (tóm tắt trong thẻ): 2 cột, ✓ xanh / ✗ đỏ. */
.dlcv-incsum { margin: .9rem 0 0; }
.dlcv-incsum-title { margin: 0 0 .4rem; font-size: .98rem; }
.dlcv-incsum-list {
  list-style: none;
  margin: 0;
  padding: 0;
  columns: 1;
  column-gap: 1.5rem;
  font-size: .95rem;
  color: #374151;
}
.dlcv-incsum-list li {
  position: relative;
  padding: .25rem 0 .25rem 1.6rem;
  break-inside: avoid;
}
.dlcv-incsum-inc::before {
  content: "✓";
  position: absolute;
  left: 0;
  top: .25rem;
  font-weight: 800;
  color: #15803d;
}
.dlcv-incsum-exc::before {
  content: "✗";
  position: absolute;
  left: 0;
  top: .25rem;
  font-weight: 800;
  color: #dc2626;
}

/* (12) Dòng tóm tắt lựa chọn trên form + nút "đổi". */
.dlcv-form-summary {
  padding: .7rem .9rem;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  background: #f9fafb;
  font-size: .95rem;
  color: #374151;
}
.dlcv-form-summary-change {
  padding: 0;
  border: 0;
  background: none;
  color: #0e7490;
  font: inherit;
  text-decoration: underline;
  cursor: pointer;
}

@container (min-width: 560px) {
  .dlcv-incsum-list { columns: 2; }
}

/* ==========================================================================
   v1.0.16 — Tour dài ngày: ô chọn hạng khách sạn, ghi chú trẻ em, phòng đơn,
   dòng đặt cọc + CSS cho các class bài mẫu v3 (mẫu bài tour mới).
   (1) Ô chọn hạng: radio card giống hệt gói tour (viền xám, bo 10px, nền
   trắng; đang chọn viền cam + nền #fff7ed); thẻ đủ rộng (>=560px) thì 3 ô
   xếp thành 1 hàng 3 cột như chip ngày 5 cột (v1.0.11).
   (2) Ghi chú trẻ em: chữ nhỏ xám dưới 2 stepper trẻ em.
   (3) Phòng đơn: hàng checkbox 1 dòng (tên trái, giá phải, cam).
   (4) Đặt cọc: 1 dòng trong ô tổng (nhãn trái, số tiền cam phải).
   (5) Class mẫu v3: diệt dấu vuông "▪" của theme ở mọi danh sách dùng class
   mới (như v1.0.12–v1.0.14: list-style none + ::marker rỗng, KHÔNG động
   ::before vì dấu ✓/✗/mốc timeline của plugin nằm trong đó); 3 bảng mới
   (phụ thu / khởi hành theo ngày / chính sách hủy) dùng cùng kiểu bảng giá
   (full-width, viền nhạt, đầu bảng xám nhạt, cột giá cam đậm căn phải).
   ========================================================================== */

/* (1) Chọn hạng khách sạn (chỉ tour dài ngày có giá hạng). */
.dlcv-tiers { margin: 0 0 1.1rem; }
.dlcv-tiers-label { margin: 0 0 .5rem; }
.dlcv-tier-card {
  display: flex;
  align-items: center;
  gap: .6rem;
  margin-bottom: .5rem;
  padding: .7rem .9rem;
  border: 1px solid #d1d5db;
  border-radius: 10px;
  background: #fff;
  cursor: pointer;
}
.dlcv-tier-card:last-child { margin-bottom: 0; }
.dlcv-tier-card:hover { border-color: #E4570B; }
.dlcv-tier-card.dlcv-tier-selected {
  border-color: #E4570B;
  background: #fff7ed;
}
.dlcv-tier-card input[type="radio"] { flex: none; }
.dlcv-tier-body { flex: 1; min-width: 0; }
.dlcv-tier-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: .75rem;
}
.dlcv-tier-name { flex: 1; font-weight: 700; color: #111827; }
.dlcv-tier-price { font-weight: 800; color: #E4570B; white-space: nowrap; }

/* (2) Ghi chú trẻ em dưới 2 stepper nhóm tuổi. */
.dlcv-child-note {
  margin: .5rem 0 0;
  font-size: .88rem;
  color: #4b5563;
}

/* (3) Phụ thu phòng đơn: hàng checkbox (chỉ hiện khi đã nhập giá). */
.dlcv-single-room {
  display: flex;
  align-items: center;
  gap: .6rem;
  margin: 0 0 .4rem;
  padding: .7rem .9rem;
  border: 1px solid #d1d5db;
  border-radius: 10px;
  background: #fff;
  cursor: pointer;
}
.dlcv-single-room:hover { border-color: #E4570B; }
.dlcv-single-room input[type="checkbox"] { flex: none; width: 1.1rem; height: 1.1rem; }
.dlcv-single-room-text { flex: 1; font-weight: 700; color: #111827; }
.dlcv-single-room-price { font-weight: 800; color: #E4570B; white-space: nowrap; }

/* (4) Dòng đặt cọc trong ô tổng tiền (chỉ khi Settings đã nhập %). */
.dlcv-total-deposit {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1rem;
  margin: .35rem 0 0;
  font-size: .95rem;
  color: #4b5563;
}
.dlcv-total-deposit strong { color: #E4570B; white-space: nowrap; }
.dlcv-total-deposit[hidden] { display: none; }

/* (5) Class mẫu v3 — diệt dấu vuông của theme ở các danh sách mới. */
.dlcv-journey-summary,
.dlcv-highlight-cards,
.dlcv-reviews,
.dlcv-pickup,
.dlcv-policy,
.dlcv-day {
  list-style-type: none;
}
.dlcv-journey-summary li,
.dlcv-highlight-cards li,
.dlcv-reviews li,
.dlcv-pickup li,
.dlcv-policy li,
.dlcv-day li {
  list-style-type: none !important;
}
.dlcv-journey-summary li::marker,
.dlcv-highlight-cards li::marker,
.dlcv-reviews li::marker,
.dlcv-pickup li::marker,
.dlcv-policy li::marker,
.dlcv-day li::marker {
  content: none;
}
/* (5) Dòng "Nghỉ đêm tại..." cuối mỗi ngày: ghi chú nghiêng, xám. */
.dlcv-overnight {
  font-style: italic;
  color: #374151;
}
/* (5) v1.0.18: thẻ nổi bật của mẫu v3 — trước đây KHÔNG có rule nào cho
   .dlcv-highlight-card (chỉ có reset list-style) nên 5 "thẻ" chỉ là các div
   chữ xếp chồng, không giống thẻ. Giờ là lưới thẻ thật: 1 cột trên màn hẹp,
   3 cột từ 720px; tiêu đề H3 cam như màu nhấn của plugin. */
.dlcv-highlight-cards {
  display: grid;
  grid-template-columns: 1fr;
  gap: .75rem;
  margin: 0 0 1.2rem;
}
.dlcv-highlight-card {
  border: 1px solid #e5e7eb;
  background: #f9fafb;
  padding: .9rem 1rem;
  border-radius: .5rem;
}
.dlcv-highlight-card h3 {
  margin: 0 0 .35rem;
  font-size: 1.05rem;
  color: #E4570B;
}
.dlcv-highlight-card p { margin: 0; }
@media (min-width: 720px) {
  .dlcv-highlight-cards { grid-template-columns: repeat(3, 1fr); }
}
/* (5) 3 bảng mới của mẫu v3: cùng kiểu bảng giá (khi class nằm ở <table>
   hoặc ở <figure> bọc bảng như Table block). */
table.dlcv-surcharge-table,
table.dlcv-departure-table,
table.dlcv-cancel-table,
table.dlcv-price-table,
.dlcv-surcharge-table table,
.dlcv-departure-table table,
.dlcv-cancel-table table,
.dlcv-price-table table {
  width: 100%;
  border-collapse: collapse;
  font-size: 1rem;
}
.dlcv-surcharge-table th, .dlcv-surcharge-table td,
.dlcv-departure-table th, .dlcv-departure-table td,
.dlcv-cancel-table th, .dlcv-cancel-table td,
.dlcv-price-table th, .dlcv-price-table td {
  padding: .6rem .8rem;
  border: 1px solid #e5e7eb;
  text-align: left;
}
.dlcv-surcharge-table thead th,
.dlcv-departure-table thead th,
.dlcv-cancel-table thead th,
.dlcv-price-table thead th {
  background: #f9fafb;
  font-weight: 700;
}
.dlcv-surcharge-table td:last-child,
.dlcv-departure-table td:last-child,
.dlcv-cancel-table td:last-child,
.dlcv-price-table td:last-child {
  font-weight: 800;
  color: #E4570B;
  text-align: right;
}
/* v1.0.18: hàng xen kẽ cho bảng giá động [dlcv_bang_gia] (cùng tông xám #f9fafb
   với header bảng đã có; các bảng v3 khác giữ nguyên không thêm zebra). */
.dlcv-price-table tbody tr:nth-child(even) { background: #f9fafb; }

@container (min-width: 560px) {
  /* v1.0.16: 3 ô hạng xếp 1 hàng 3 cột khi thẻ đủ rộng (như chip ngày 5 cột). */
  .dlcv-tiers { display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem; }
  .dlcv-tiers-label { grid-column: 1 / -1; }
  .dlcv-tier-card { margin-bottom: 0; }
}
