/* Layer 3: page-family layout and visual overrides. */

/* Home */
.tb-home-page { background: #fff; }

.tb-reference-home { overflow: clip; background: #fff; }

body.tb-home-page .tb-reference-home .tb-reference-hero {
  position: relative;
  display: flex;
  min-height: max(610px, calc(100svh - 126px)) !important;
  align-items: center;
  margin: 0 !important;
  padding: clamp(34px, 5vw, 72px) 0 !important;
  color: #fff;
  background: var(--tb-gradient) !important;
}

.tb-reference-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 12% 76%, rgba(255,255,255,.16), transparent 15%), radial-gradient(circle at 91% 18%, rgba(19,167,161,.18), transparent 18%);
  pointer-events: none;
}

body.tb-home-page .tb-reference-hero .hero-copy,
body.tb-home-page .tb-reference-hero .search-wrap { position: relative; z-index: 2; }

body.tb-home-page .tb-reference-hero h1,
body.tb-home-page .tb-reference-hero h2,
body.tb-home-page .tb-reference-hero p { color: #fff !important; }

body.tb-home-page .tb-reference-hero .hero-copy h1 { font-size: clamp(42px, 5.4vw, 76px) !important; }

body.tb-home-page .tb-reference-hero .hero-kicker {
  color: var(--tb-teal-100) !important;
  background: rgba(255,255,255,.12) !important;
  border: 1px solid rgba(255,255,255,.22) !important;
  border-radius: var(--tb-radius-pill) !important;
}

body.tb-home-page .tb-reference-hero .search {
  min-height: 60px;
  background: #fff !important;
  border: 1px solid rgba(255,255,255,.65) !important;
  border-radius: var(--tb-radius-pill) !important;
  box-shadow: 0 18px 50px rgba(18,8,38,.2) !important;
}

body.tb-home-page .tb-reference-hero .search input { border: 0 !important; box-shadow: none !important; }
body.tb-home-page .tb-reference-hero .search button {
  color: #fff !important;
  background: var(--tb-teal-500) !important;
  border: 0 !important;
  border-radius: 50% !important;
}

body.tb-home-page .tb-reference-hero .explore-btn { color: #fff !important; border: 1px solid rgba(255,255,255,.6) !important; border-radius: var(--tb-radius-pill) !important; text-decoration: none; }
body.tb-home-page .tb-reference-hero .explore-btn:hover { background: rgba(255,255,255,.12) !important; transform: translateY(-2px); }

body.tb-home-page .tb-footer > .container {
  padding: 36px !important;
  background: rgba(255,255,255,.035) !important;
  border: 1px solid rgba(255,255,255,.1) !important;
  border-radius: 22px !important;
  box-shadow: 0 22px 52px rgba(5,2,9,.2) !important;
}

body.tb-home-page .tb-header .tb-client-login-btn {
  min-height: 44px !important;
  padding: 8px 10px 8px 18px !important;
  box-shadow: 0 12px 26px rgba(13,141,136,.22) !important;
}

.tb-reference-home > .container.section,
.tb-reference-home .trust { background: #fff !important; }

.tb-reference-home .fast { color: #fff; background: var(--tb-gradient) !important; }
.tb-reference-home .fast h2,
.tb-reference-home .fast h3,
.tb-reference-home .fast p { color: #fff !important; }
.tb-reference-home .feature span { color: var(--tb-teal-700) !important; background: #fff !important; }

.country-card {
  overflow: hidden;
  color: var(--tb-text) !important;
  background: #fff !important;
  border: 1px solid var(--tb-border) !important;
  border-radius: var(--tb-radius-lg) !important;
  box-shadow: var(--tb-shadow-sm) !important;
  text-decoration: none;
}
.country-card .card-meta i { color: var(--tb-teal-600) !important; }

/* Shared inner-page hero */
.tb-page-hero,
.tb-client-account-hero,
.booking-hero,
.tb-flight-page-topband {
  position: relative;
  overflow: hidden;
  color: #fff;
  background: var(--tb-gradient) !important;
  border: 0 !important;
}

.tb-page-hero::after,
.tb-client-account-hero::after,
.booking-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 86% 12%, rgba(255,255,255,.11), transparent 22%);
  pointer-events: none;
}

.tb-page-hero h1,
.tb-page-hero p,
.tb-client-account-hero h1,
.tb-client-account-hero p,
.booking-hero h1,
.booking-hero p { color: #fff !important; }

/* Visa listing, details and application */
.tb-visa-page main.container { padding-block: clamp(48px, 6vw, 84px); }
.tb-visa-page .page-intro { max-width: 760px; margin: 0 auto 36px; }
.tb-visa-page .page-intro h1,
.tb-visa-page .center-head h1 { font-size: clamp(34px, 4vw, 58px); }
.tb-visa-page .tb-visa-listing {
  display: grid !important;
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  gap: 22px !important;
  width: 100%;
  margin-inline: 0 !important;
  padding-inline: 0 !important;
  overflow: visible !important;
}
.tb-visa-page .tb-visa-listing .country-card,
.tb-visa-page .tb-visa-listing .country-card:nth-child(n) {
  display: flex !important;
  width: 100% !important;
  min-width: 0 !important;
}

/* Visa destination cards: render the real image element at its natural ratio so no side is cropped. */
.tb-visa-page .tb-visa-listing { align-items: start !important; }
.tb-visa-page .tb-visa-listing .country-card,
.tb-visa-page .tb-visa-listing .country-card:nth-child(n) {
  height: auto !important;
  min-height: 0 !important;
  align-self: start !important;
}
.tb-visa-page .tb-visa-listing .country-card .card-img {
  height: auto !important;
  aspect-ratio: auto !important;
  background-image: none !important;
  background-color: #f3f6fa !important;
  flex: 0 0 auto;
}
.tb-visa-page .tb-visa-listing .country-card .card-img > img {
  display: block !important;
  width: 100% !important;
  height: auto !important;
  max-width: 100% !important;
  object-fit: contain !important;
  object-position: center center !important;
}
.tb-visa-page .tb-visa-listing .country-card .card-img b {
  padding: 4px 8px;
  border-radius: 7px;
  background: rgba(10, 12, 18, .55);
  line-height: 1.1;
}
.tb-visa-page .tb-visa-listing .country-card .card-copy {
  flex: 0 0 auto !important;
  padding-bottom: 16px !important;
}

.tb-visa-page .breadcrumb { margin-bottom: 24px; color: var(--tb-text-muted); }
.tb-visa-page .breadcrumb a { color: var(--tb-teal-700); font-weight: 800; text-decoration: none; }

.tb-visa-page .apply-banner {
  padding: clamp(22px, 3vw, 34px) !important;
  color: #fff !important;
  background: var(--tb-gradient) !important;
  border: 0 !important;
  border-radius: var(--tb-radius-lg) !important;
  box-shadow: var(--tb-shadow-md) !important;
}
.tb-visa-page .apply-banner b,
.tb-visa-page .apply-banner small { color: #fff !important; }

.tb-visa-page .dest-hero { overflow: hidden; border-radius: var(--tb-radius-lg) !important; box-shadow: var(--tb-shadow-md); }
.tb-visa-page .details { align-items: start; gap: 24px; }
.tb-visa-page .article,
.tb-visa-page .plan { padding: clamp(24px, 3vw, 38px) !important; }
.tb-visa-page .article h2 { margin-top: 30px; }
.tb-visa-page .steps > div span { color: #fff !important; background: var(--tb-teal-600) !important; }
.tb-visa-page .docs span { color: var(--tb-text) !important; background: var(--tb-teal-50) !important; border: 1px solid var(--tb-teal-100) !important; border-radius: 12px !important; }
.tb-visa-page .plan { position: sticky; top: 22px; }
.tb-visa-page .price { color: var(--tb-violet-700) !important; }

.tb-visa-progress [data-visa-step],
.tb-visa-step-indicator { border-color: var(--tb-border) !important; }
.tb-visa-progress .active,
.tb-visa-step-indicator.active { color: #fff !important; background: var(--tb-teal-600) !important; border-color: var(--tb-teal-600) !important; }

/* Booking landing and sample documents */
.booking-page { background: var(--tb-canvas); }
.booking-hero { min-height: 390px; display: grid; align-items: center; }
.booking-hero-inner { position: relative; z-index: 2; padding-block: 64px; }
.booking-hero h1 { font-size: clamp(42px, 5vw, 72px); }
.booking-hero h1 em { color: #e4bfff !important; }
.booking-float-card { background: rgba(255,255,255,.1) !important; border: 1px solid rgba(255,255,255,.2) !important; border-radius: var(--tb-radius-lg) !important; backdrop-filter: blur(12px); }
.booking-float-card span { color: var(--tb-teal-600) !important; background: #fff !important; }
.booking-float-card b,
.booking-float-card small { color: #fff !important; }

.booking-shell,
.tb-demo-docs { margin-block: 42px; padding: clamp(22px, 3vw, 38px) !important; }
.booking-panel { padding: 28px !important; }
.tb-demo-docs-head > span { color: var(--tb-teal-700) !important; background: var(--tb-teal-50) !important; border-radius: var(--tb-radius-pill) !important; }
.tb-demo-panel { padding-top: 24px; }
.tb-demo-form { gap: 16px; }
.tb-demo-stage { min-height: 360px; background: var(--tb-surface-soft) !important; border: 1px dashed var(--tb-border-strong) !important; border-radius: var(--tb-radius-md) !important; }
.tb-demo-swap { color: #fff !important; background: var(--tb-teal-600) !important; border: 0 !important; border-radius: 50% !important; }
.booking-benefits { gap: 18px; padding-bottom: var(--tb-section-space); }
.booking-benefits > div { background: #fff !important; border: 1px solid var(--tb-border) !important; border-radius: var(--tb-radius-md) !important; box-shadow: var(--tb-shadow-xs); }

/* Package listings */
.tb-package-listing-page { background: var(--tb-canvas); }
.tb-page-hero { min-height: 330px; display: grid; align-items: end; padding: 72px 0 56px; }
.tb-page-hero > .container { position: relative; z-index: 2; }
.tb-package-layout { gap: 28px; align-items: start; }
.tb-package-filter-panel {
  position: sticky;
  top: 20px;
  padding: 22px !important;
  background: #fff !important;
  border: 1px solid var(--tb-border) !important;
  border-radius: var(--tb-radius-lg) !important;
  box-shadow: var(--tb-shadow-sm) !important;
}
.tb-filter-head { border-color: var(--tb-border) !important; }
.tb-filter-clear { color: var(--tb-teal-700) !important; background: var(--tb-teal-50) !important; border: 1px solid var(--tb-teal-100) !important; border-radius: var(--tb-radius-pill) !important; }
.tb-filter-block { border-color: var(--tb-border) !important; }
.tb-list-package-card { overflow: hidden; }
.tb-list-price { color: var(--tb-violet-700) !important; }
.tb-list-meta-row span { color: var(--tb-text-muted) !important; background: var(--tb-violet-50) !important; border-color: var(--tb-border) !important; }
.tb-list-meta-row i { color: var(--tb-teal-600) !important; }

/* Package detail */
.tb-package-detail-page { background: var(--tb-canvas); }
.tb-package-detail-hero { background: #fff !important; border-bottom: 1px solid var(--tb-border) !important; }
.tb-detail-breadcrumb a { color: var(--tb-teal-700) !important; }
.tb-detail-mosaic,
.tb-detail-image { overflow: hidden; border-radius: var(--tb-radius-lg) !important; }
.tb-detail-route-summary { background: var(--tb-violet-50) !important; border: 1px solid var(--tb-border) !important; border-radius: var(--tb-radius-md) !important; }
.tb-route-duration-pill { color: #fff !important; background: var(--tb-teal-600) !important; }
.tb-detail-layout { gap: 28px; align-items: start; }
.tb-detail-main > section,
.tb-detail-sidebar > section,
.tb-git-booking-widget,
.tb-git-enquiry-card { background: #fff !important; border: 1px solid var(--tb-border) !important; border-radius: var(--tb-radius-lg) !important; box-shadow: var(--tb-shadow-sm) !important; }
.tb-detail-section-head { border-color: var(--tb-border) !important; }
.tb-day-panel,
.tb-departure-card { background: #fff !important; border: 1px solid var(--tb-border) !important; border-radius: var(--tb-radius-md) !important; }
.tb-day-panel-head,
.tb-departure-card-top { background: var(--tb-violet-50) !important; border-color: var(--tb-border) !important; }
.tb-day-panel-head i,
.tb-departure-card-top i { color: var(--tb-teal-600) !important; }
.tb-detail-sidebar { position: sticky; top: 20px; }

/* Service, blog and general CMS pages */
.tb-service-page,
.tb-blog-page,
.tb-content-page,
.tb-page-content { background: var(--tb-canvas); }
.tb-blog-card,
.tb-list-blog-card { overflow: hidden; }
.tb-blog-body { padding: 22px !important; }
.tb-blog-body a { font-weight: 800; }
.tb-content-card,
.tb-detail-card { padding: clamp(24px, 3vw, 42px) !important; }
.tb-content-card h2,
.tb-detail-card h2 { margin-top: 30px; }

.tb-contact-page-grid { gap: 24px; align-items: stretch; }
.tb-contact-info-panel,
.tb-contact-form-panel,
.tb-contact-map-card { padding: clamp(24px, 3vw, 34px) !important; }
.tb-contact-info-list i { color: #fff !important; background: var(--tb-teal-600) !important; border-radius: 50% !important; }
.tb-map-iframe { overflow: hidden; border-radius: var(--tb-radius-md) !important; }

.tb-faq-item { overflow: hidden; background: #fff !important; border: 1px solid var(--tb-border) !important; border-radius: var(--tb-radius-md) !important; }
.tb-faq-question { color: var(--tb-ink-950) !important; background: #fff !important; }
.tb-faq-question:hover { background: var(--tb-teal-50) !important; }
.tb-faq-question i { color: var(--tb-teal-600) !important; }

/* Flight and hotel search/results */
.tb-flight-results-page,
.tb-hotel-results-page,
.tb-flight-booking-page,
.tb-hotel-booking-page { min-height: 70vh; background: var(--tb-canvas); }
.tb-flight-page-topband { min-height: 190px; }
.tb-flight-result-search-section { margin-top: -94px !important; position: relative; z-index: 3; }
.tb-booking-search-card {
  padding: 20px !important;
  background: #fff !important;
  border: 1px solid var(--tb-border) !important;
  border-radius: var(--tb-radius-lg) !important;
  box-shadow: var(--tb-shadow-md) !important;
}
.tb-unified-row { gap: 10px; }
.tb-live-field { min-height: 74px; padding: 10px 12px !important; }
.tb-live-field input,
.tb-live-field select { min-height: 30px; padding: 2px 0 !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important; }
.tb-swap-airport { color: #fff !important; background: var(--tb-teal-600) !important; border: 0 !important; border-radius: 50% !important; }
.tb-flight-results-layout,
.tb-hotel-results-layout { gap: 24px; align-items: start; }
.tb-flight-filter-panel,
.tb-hotel-filter-panel { position: sticky; top: 18px; background: #fff !important; border: 1px solid var(--tb-border) !important; border-radius: var(--tb-radius-lg) !important; box-shadow: var(--tb-shadow-sm) !important; }
.tb-flight-results-topbar,
.tb-hotel-results-topbar { background: #fff !important; border: 1px solid var(--tb-border) !important; border-radius: var(--tb-radius-md) !important; }
.tb-flight-card,
.tb-hotel-card,
.tb-flight-list > article,
.tb-hotel-list > article { background: #fff !important; border: 1px solid var(--tb-border) !important; border-radius: var(--tb-radius-lg) !important; box-shadow: var(--tb-shadow-xs) !important; }

/* Checkout */
.tb-flight-booking-section,
.tb-hotel-booking-section { padding-top: clamp(36px, 5vw, 72px) !important; }
.tb-flight-booking-layout,
.tb-hotel-booking-layout { gap: 24px; align-items: start; }
.tb-booking-panel,
.tb-booking-fare-card { padding: clamp(20px, 2.5vw, 30px) !important; }
.tb-booking-panel-head,
.tb-booking-fare-head { border-color: var(--tb-border) !important; }
.tb-booking-status-pill i { color: var(--tb-teal-700) !important; }
.tb-traveller-note { color: var(--tb-teal-700) !important; background: var(--tb-teal-50) !important; border: 1px solid var(--tb-teal-100) !important; border-radius: 12px !important; }
.tb-flight-booking-sidebar,
.tb-hotel-booking-sidebar { position: sticky; top: 20px; }
.tb-booking-total-row { color: var(--tb-ink-950) !important; background: var(--tb-violet-50) !important; border-radius: 12px !important; }

/* Account */
.tb-client-account-hero { min-height: 240px; padding: 58px 0; }
.tb-client-account-hero > .container { position: relative; z-index: 2; }
.tb-client-account-shell { overflow: hidden; background: #fff !important; border: 1px solid var(--tb-border) !important; border-radius: var(--tb-radius-lg) !important; box-shadow: var(--tb-shadow-md) !important; }
.tb-client-account-sidebar { background: var(--tb-ink-950) !important; }
.tb-client-account-sidebar h3,
.tb-client-account-sidebar p { color: #fff !important; }
.tb-client-account-avatar { color: var(--tb-teal-700) !important; background: #fff !important; }
.tb-client-account-nav a,
.tb-client-account-nav button { color: rgba(255,255,255,.8) !important; border-radius: 11px !important; }
.tb-client-account-nav a:hover,
.tb-client-account-nav button:hover,
.tb-client-account-nav a.active { color: #fff !important; background: rgba(19,167,161,.2) !important; }
.tb-client-account-content { background: var(--tb-surface-soft) !important; }
.tb-profile-card { padding: 24px !important; }

/* Empty and state layouts */
.tb-empty-box,
.tb-flight-booking-empty,
.tb-hotel-booking-empty,
.tb-account-login-required {
  padding: clamp(32px, 5vw, 64px) !important;
  text-align: center;
  background: #fff !important;
  border: 1px solid var(--tb-border) !important;
  border-radius: var(--tb-radius-lg) !important;
  box-shadow: var(--tb-shadow-sm) !important;
}
.tb-empty-icon,
.tb-account-empty-icon { color: #fff !important; background: var(--tb-teal-600) !important; border-radius: 50% !important; }
.tb-reference-booking-request{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:-38px;margin-bottom:34px;padding:25px 28px;border:1px solid rgba(75,25,127,.14);border-radius:20px;background:#fff;box-shadow:0 18px 45px rgba(38,17,66,.12);position:relative;z-index:3}
.tb-reference-booking-request small{color:#0f9f9a;font-weight:900;letter-spacing:.08em}.tb-reference-booking-request h2{margin:5px 0 6px;font-size:24px}.tb-reference-booking-request p{margin:0;color:#6d6879}.tb-reference-booking-request .btn{flex:0 0 auto;border-radius:999px}.tb-reference-booking-request .btn i{transition:transform .18s}.tb-reference-booking-request .btn:hover i{transform:translateX(4px)}
@media(max-width:767px){.tb-reference-booking-request{align-items:flex-start;flex-direction:column;margin-top:-24px;padding:21px}.tb-reference-booking-request .btn{width:100%}}
