/**
 * /hanoi-tours/ landing page — styles for the [hanoi_tours] shortcode
 * (inc/hanoi-tours-shortcode.php). Self-contained kt-ht-* classes; no
 * dependency on Bricks .brxe-* markup. Light page, colored ("loang màu")
 * tour cards matching the Saigon / Da Nang listings.
 */

.kt-ht {
  --kt-pink: #e4367e;
  --kt-ink: #1f2430;
  --kt-muted: #6b7280;
  /* 1240 matches the Saigon / Da Nang content width so the two-column layout
     (cards + 400px widget) gives ~390px cards like those pages. */
  max-width: 1240px;
  margin: 0 auto;
  padding: 0 0 48px;
  font-family: inherit;
  color: var(--kt-ink);
}
.kt-ht * { box-sizing: border-box; }

/* Hide the Bricks post-banner title on this page. It renders the page title
   ("Hanoi Tours") in WHITE for a coloured banner, but this page's banner area is
   white, so the title is invisible EXCEPT where it overlaps the breadcrumb just
   below it -- which garbled the breadcrumb into a doubled/smeared "Home > Hanoi
   Tours" (owner report 2026-10-17). The hero below already carries the real page
   title, so the banner title is redundant here. Page-scoped: this stylesheet is
   enqueued only on /hanoi-tours/. */
.post-banner-title { display: none !important; }

/* Full-width content column.
   This page's body sits inside a Bricks "Post Content" column that the single-
   page template fixes to width:800px (a reading-width column). On a wide desktop
   that leaves the landing page narrow and left-shifted with a large empty gap on
   the right (owner report 2026-10-17: "nó bị kì... view desktop"). Unlike a blog
   post, this is a full-width landing page, so let its content column fill the
   container; .kt-ht then re-centres itself at its own max-width (1120px).
   - Targets the Bricks Post Content element by its stable `.brxe-post-content`
     class (not a random brxe- auto-id), via :has() on its wrapper div.
   - This stylesheet is enqueued ONLY on the /hanoi-tours/ page (shortcode-gated
     in functions.php), so the rule can never affect blog posts or other pages.
   - Fail-safe: if Bricks restructures or :has() is unsupported, the selector
     stops matching and the column simply falls back to its 800px default. */
.brxe-div:has(> .brxe-post-content) {
  width: 100% !important;
  max-width: 100% !important;
}

/* ---- Hero ---- */
/* Light panel with dark text, matching the Saigon / Da Nang heroes: a very
   light pink/near-white background, a subtle pink border and a soft shadow. */
.kt-ht__hero {
  background: #fdf2f7;
  color: var(--kt-ink);
  border: 1px solid #f3d9e6;
  border-radius: 20px;
  padding: 28px 22px;
  text-align: center;
  margin-bottom: 30px;
  box-shadow: 0 16px 40px rgba(110, 10, 62, .10);
}
.kt-ht__eyebrow {
  display: inline-block;
  /* !important: the page's global text rules force ~17px here otherwise, making
     the eyebrow far bigger than the Saigon / Da Nang heroes (~0.79rem). */
  font-size: 0.79rem !important;
  font-weight: 800;
  letter-spacing: 1.4px;
  text-transform: uppercase;
  color: #b8235f;
  margin: 0 0 14px;
}
.kt-ht__title {
  /* Match the Saigon / Da Nang hero (region-intro.css) so the three region
     pages read as one family -- the old 42px max made this heading wrap to
     three big lines and the hero felt too tall on desktop (owner, 2026-10-17).
     !important for the same reason as the color below: the theme sets an h1
     font-size with higher specificity that otherwise wins (measured 38px). */
  font-size: clamp(1.4rem, 1.1rem + 1.2vw, 1.9rem) !important;
  line-height: 1.18;
  /* 700 !important to match the Saigon / Da Nang hero title weight (the theme
     otherwise renders it at 600). */
  font-weight: 700 !important;
  margin: 0 0 14px;
  text-wrap: balance;
  /* !important: the theme colours every h1/h2/h3 brand-pink, which would make
     this heading pink-on-light (low contrast); force the dark ink instead. */
  color: #1f2430 !important;
}
/* Clean heading, no highlight on "Hanoi", matching the Da Nang hero. */
.kt-ht__title span {
  background: none;
  padding: 0;
  border-radius: 0;
}
.kt-ht__intro {
  max-width: 640px;
  margin: 0 auto;
  /* !important: match the Saigon / Da Nang intro size (16px); the global text
     rule otherwise forces ~17px. */
  font-size: 16px !important;
  line-height: 1.65;
  color: #404040;
}

/* Checklist: on mobile it sits below the hero text (single column); on desktop
   it becomes the hero's right column (see the >=768px media query below). */
.kt-ht__checklist {
  list-style: none;
  margin: 22px 0 0;
  padding: 0;
  text-align: left;
  display: grid;
  gap: 10px;
  align-content: center;
}
.kt-ht__checklist li {
  position: relative;
  padding-left: 30px;
  /* Match the Saigon / Da Nang checklist: ~0.93rem, normal weight (the global
     text rule otherwise forces ~17px / bold-looking). */
  font-size: 0.93rem !important;
  line-height: 1.45;
  font-weight: 400;
  color: #262626;
}
.kt-ht__checklist li::before {
  content: "✓";
  position: absolute;
  left: 0;
  top: 0;
  width: 22px;
  height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--kt-pink);
  color: #fff;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 900;
  line-height: 1;
}

/* Desktop hero: two columns (text left, checklist right), left-aligned. */
@media (min-width: 768px) {
  .kt-ht__hero {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    align-items: center;
    gap: 36px;
    text-align: left;
    padding: 28px 28px;
  }
  .kt-ht__hero-text { min-width: 0; }
  .kt-ht__intro { margin-left: 0; margin-right: 0; }
  /* Single-column checklist, matching the Saigon / Da Nang heroes. */
  .kt-ht__checklist { margin-top: 0; grid-template-columns: 1fr; }
}

/* ---- Layout: tour cards + sticky booking widget ---- */
/* Mobile first: single column, the booking widget sits below the cards. */
.kt-ht__layout { display: block; }
.kt-ht__main { min-width: 0; }
.kt-ht__aside { margin-top: 22px; min-width: 0; }
.kt-ht__aside-inner { min-width: 0; }
/* The embedded [vt_booking_form_v2] widget brings its own styles; just keep it
   inside the column. */
.kt-ht__aside-inner .vt-booking-form-wrapper { max-width: 100%; }

/* Reassurance box under the widget (parity with the Saigon / Da Nang pages). */
.kt-ht__assure {
  list-style: none;
  margin: 14px 0 0;
  padding: 16px 18px;
  display: grid;
  gap: 10px;
  background: #fdf2f7;
  border: 1px solid #f3d9e6;
  border-radius: 14px;
}
.kt-ht__assure li {
  position: relative;
  padding-left: 26px;
  font-size: 13.5px;
  line-height: 1.4;
  font-weight: 600;
  color: var(--kt-ink);
}
.kt-ht__assure li::before {
  content: "✓";
  position: absolute;
  left: 0;
  top: 0;
  width: 18px;
  height: 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--kt-pink);
  color: #fff;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 900;
}

@media (min-width: 980px) {
  .kt-ht__layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 400px;
    gap: 26px;
    align-items: start;
  }
  .kt-ht__aside { margin-top: 0; }
  /* Follows the guest down the card list; 96px clears the fixed site header. */
  .kt-ht__aside-inner { position: sticky; top: 96px; }
}

/* ---- Grid ---- */
.kt-ht__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 22px;
}
/* Two columns inside the (now narrower) cards column at desktop. */
@media (min-width: 980px) {
  .kt-ht__grid { grid-template-columns: repeat(2, 1fr); }
}

/* ---- Card: solid tint, image fades (loang) into it, white text ---- */
.kt-ht__card {
  --tint: #034ea2;
  display: flex;
  flex-direction: column;
  background: var(--tint);
  border-radius: 16px;
  overflow: hidden;
  text-decoration: none;
  color: #fff;
  box-shadow: 0 6px 22px rgba(20, 20, 40, .12);
  transition: transform .18s ease, box-shadow .18s ease;
  min-width: 0;
}
.kt-ht__card:hover,
.kt-ht__card:focus-visible {
  transform: translateY(-4px);
  box-shadow: 0 18px 40px rgba(20, 20, 40, .22);
}

.kt-ht__media {
  position: relative;
  /* 4:3 matches the Saigon / Da Nang card image proportion (~390x287). */
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--tint);
}
.kt-ht__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .4s ease;
}
.kt-ht__card:hover .kt-ht__img { transform: scale(1.05); }
/* the fade that blends the photo into the card colour */
.kt-ht__media::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 45%, var(--tint) 99%);
  pointer-events: none;
}

.kt-ht__dur {
  position: absolute;
  top: 12px;
  left: 12px;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: rgba(15, 18, 28, .72);
  color: #fff;
  font-size: 12.5px;
  font-weight: 600;
  padding: 5px 11px;
  border-radius: 999px;
  backdrop-filter: blur(2px);
}
.kt-ht__dur svg { display: block; }

.kt-ht__body {
  display: flex;
  flex-direction: column;
  gap: 7px;
  padding: 4px 16px 16px;
  flex: 1 1 auto;
  min-width: 0;
  background: var(--tint);
}
/* Category pill: overlaid on the image (bottom-left), like the Saigon / Da Nang
   cards, so it does not add height to the card body. */
.kt-ht__kind {
  position: absolute;
  left: 12px;
  bottom: 12px;
  z-index: 1;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .4px;
  text-transform: uppercase;
  color: #fff;
  background: rgba(15, 18, 28, .66);
  padding: 4px 10px;
  border-radius: 999px;
  backdrop-filter: blur(2px);
}
.kt-ht__name {
  font-size: 18px;
  line-height: 1.25 !important;
  font-weight: 800;
  margin: 0 !important;
  /* !important: the theme colours card titles brand-pink; force white on the
     coloured card. margin:0 !important also neutralises any stray heading margin. */
  color: #fff !important;
  text-wrap: balance;
  /* Clamp to 2 lines so a long tour name cannot make one card taller than the
     rest. !important on display so nothing overrides the line-clamp. */
  display: -webkit-box !important;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  /* Reserve two lines so 1-line and 2-line names take the same space and every
     card in a row is the same height. */
  min-height: 2.5em;
}
.kt-ht__excerpt {
  /* !important on size + line-height: the page's global p rules otherwise force
     ~17px / ~30px-line here, making the blurb bigger and looser than the Saigon
     cards (~13.5px / 20px line). */
  font-size: 13.5px !important;
  line-height: 1.5 !important;
  color: rgba(255, 255, 255, .88);
  margin: 0;
  /* Clamp the blurb to 3 lines, matching the Saigon / Da Nang cards. */
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.kt-ht__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-top: auto;
  padding-top: 10px;
  flex-wrap: wrap;
}
.kt-ht__price {
  font-size: 19px;
  font-weight: 800;
  color: #fff;
  white-space: nowrap;
}
.kt-ht__from {
  font-size: 11px;
  font-weight: 600;
  color: rgba(255, 255, 255, .8);
  text-transform: uppercase;
  letter-spacing: .4px;
}
.kt-ht__pp {
  font-size: 12px;
  font-weight: 500;
  color: rgba(255, 255, 255, .8);
}
.kt-ht__cta {
  font-size: 13.5px;
  font-weight: 800;
  color: #fff;
  background: rgba(255, 255, 255, .16);
  padding: 7px 13px;
  border-radius: 999px;
  white-space: nowrap;
}

/* Per-card tint, in display order: blue, orange, purple, teal, rose. Chosen so
   the two Ninh Binh day trips (teal + rose) are bright rather than dark navy,
   and no two cards share a colour. All keep white text readable. */
.kt-ht--c0 { --tint: #0f5fb0; } /* blue  — Hanoi City */
.kt-ht--c1 { --tint: #c0400f; } /* orange — Hanoi Food */
.kt-ht--c2 { --tint: #6a1b9a; } /* purple — Craft Villages */
.kt-ht--c3 { --tint: #2e7d32; } /* green — Ninh Binh (Trang An), moved off teal so it does not clash with Fast Track */
.kt-ht--c4 { --tint: #b0185f; } /* rose  — Ninh Binh (Tam Coc) */
.kt-ht--ft { --tint: #0d6e66; } /* teal  — Fast Track (site canonical Fast Track colour) */

/* ---- Help / WhatsApp ---- */
.kt-ht__help {
  text-align: center;
  margin-top: 36px;
  padding: 26px 20px;
  background: #fdf2f7;
  border-radius: 16px;
}
.kt-ht__help p {
  margin: 0 0 14px;
  font-size: 15.5px;
  color: var(--kt-ink);
}
.kt-ht__wa {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  background: #25d366;
  color: #fff;
  font-weight: 700;
  font-size: 15px;
  text-decoration: none;
  padding: 13px 26px;
  border-radius: 999px;
  transition: filter .15s ease, transform .15s ease;
}
.kt-ht__wa:hover { filter: brightness(1.05); transform: translateY(-1px); }
.kt-ht__wa svg { display: block; }

@media (max-width: 480px) {
  .kt-ht__hero { padding: 32px 20px 28px; border-radius: 16px; }
  .kt-ht__grid { gap: 18px; }
}
