/* Public front-end harmony layer.
   Purpose: sync public colors, text, cards, buttons and form states without
   forcing page layouts into a new format. CRM files do not load this file. */

:root {
  --tb-sync-ink: #1b102d;
  --tb-sync-text: #30263d;
  --tb-sync-muted: #746a80;
  --tb-sync-purple: #641aa6;
  --tb-sync-purple-2: #4b137d;
  --tb-sync-plum: #261044;
  --tb-sync-teal: #0f9f9a;
  --tb-sync-teal-2: #08736f;
  --tb-sync-soft: #fbf9fd;
  --tb-sync-soft-2: #f6f1fa;
  --tb-sync-teal-soft: #eefaf9;
  --tb-sync-line: #e6dfec;
  --tb-sync-line-strong: #d5cadf;
  --tb-sync-shadow: 0 10px 28px rgba(27, 16, 45, .075);
  --tb-sync-shadow-hover: 0 16px 38px rgba(27, 16, 45, .11);
  --tb-sync-focus: 0 0 0 4px rgba(15, 159, 154, .18);
}

body {
  color: var(--tb-sync-text);
  background: #fff;
  font-family: Inter, Arial, sans-serif;
  letter-spacing: 0;
}

body p,
body li,
body small {
  letter-spacing: 0;
}

a {
  color: var(--tb-sync-purple);
}

a:hover {
  color: var(--tb-sync-teal-2);
}

.tb-section-title h1,
.tb-section-title h2,
.tb-home-v2-heading h2,
.tb-home-application-head h2,
.tb-home-reviews-head h2,
.tb-detail-section-head h2,
.tb-page-banner-copy h1,
.tb-page-hero h1,
.tb-flight-page-hero h1,
.tb-reservation-hero h1,
.tb-service-form-hero h1,
.tb-client-account-hero h1,
.tb-app-pay-head h1,
.tb-service-card-title h2,
.form-card h2,
.tb-booking-panel-head h2,
.tb-reservation-panel-head h2,
.tb-detail-box h3,
.tb-home-package-body h3,
.tb-list-package-card h3,
.tb-package-card h3 {
  color: var(--tb-sync-ink);
  letter-spacing: 0;
}

.tb-section-title p,
.tb-home-v2-heading p,
.tb-home-application-head p,
.tb-home-reviews-head p,
.tb-page-banner-copy p,
.tb-page-hero p,
.tb-flight-page-hero p,
.tb-reservation-hero p,
.tb-service-form-hero p,
.tb-client-account-hero p,
.tb-service-card-title p,
.form-card p,
.tb-booking-panel-head p,
.tb-reservation-panel-head p,
.tb-home-application-card p,
.tb-home-v2-visa-body span,
.tb-home-package-body,
.tb-detail-html {
  color: var(--tb-sync-muted);
}

.tb-script,
.tb-service-kicker,
.hero-kicker,
.tb-page-banner-kicker,
.tb-home-reviews-kicker,
.tb-home-v2-heading span,
.tb-home-application-head span,
.tb-reservation-panel-head small,
.tb-app-pay-head small,
.eyebrow {
  color: var(--tb-sync-teal);
  font-weight: 900;
  letter-spacing: .13em;
  text-transform: uppercase;
}

/* Public header */
.tb-topbar {
  background: linear-gradient(90deg, var(--tb-sync-plum), #1b102d);
  color: rgba(255, 255, 255, .84);
}

.tb-topbar a {
  color: rgba(255, 255, 255, .88);
}

.tb-topbar a:hover {
  color: #fff;
}

.tb-header {
  background: rgba(255, 255, 255, .96);
  border-bottom: 1px solid rgba(230, 223, 236, .95);
  box-shadow: 0 8px 22px rgba(27, 16, 45, .06);
}

.tb-main-menu .nav-link {
  color: var(--tb-sync-text);
  letter-spacing: 0;
}

.tb-main-menu .nav-link i {
  color: var(--tb-sync-teal);
}

.tb-main-menu .nav-link:hover,
.tb-main-menu .nav-link.active {
  color: var(--tb-sync-purple);
  background: var(--tb-sync-soft-2);
}

.navbar-toggler {
  border-color: var(--tb-sync-line);
}

.navbar-toggler:focus {
  box-shadow: var(--tb-sync-focus);
}

/* Buttons: color sync only, preserve existing sizing/layout. */
.tb-btn,
.btn.tb-btn,
.hero-actions .btn:not(.btn-light),
.tb-page-banner-cta,
.tb-btn-card,
.tb-service-btn.primary,
.tb-booking-pay-btn,
.tb-reservation-primary,
.tb-app-pay-btn:not(.secondary),
.tb-myapp-btn:not(.light),
.tb-status-btn,
.tb-select-slot-btn {
  border-color: transparent;
  background: linear-gradient(135deg, #7b2bc5, var(--tb-sync-purple) 58%, var(--tb-sync-purple-2));
  color: #fff;
  box-shadow: 0 10px 24px rgba(100, 26, 166, .18);
}

.tb-service-btn.teal,
.tb-live-search-btn,
.search button,
.tb-home-banner-search button,
.tb-home-application-head > a,
.tb-home-travel-simplified-cta {
  border-color: transparent;
  background: linear-gradient(135deg, #18bbb3, var(--tb-sync-teal), var(--tb-sync-teal-2));
  color: #fff;
  box-shadow: 0 9px 22px rgba(15, 159, 154, .17);
}

.btn.btn-light,
.tb-outline-card,
.tb-service-btn.secondary,
.tb-reservation-secondary,
.tb-app-pay-btn.secondary,
.tb-myapp-btn.light {
  border-color: var(--tb-sync-line-strong);
  background: #fff;
  color: var(--tb-sync-purple);
  box-shadow: 0 7px 18px rgba(27, 16, 45, .055);
}

.tb-btn:hover,
.btn.tb-btn:hover,
.hero-actions .btn:hover,
.tb-page-banner-cta:hover,
.tb-btn-card:hover,
.tb-service-btn:hover,
.tb-booking-pay-btn:hover,
.tb-reservation-primary:hover,
.tb-reservation-secondary:hover,
.tb-app-pay-btn:hover,
.tb-myapp-btn:hover,
.tb-status-btn:hover,
.tb-select-slot-btn:hover,
.tb-outline-card:hover {
  filter: saturate(1.04);
  box-shadow: var(--tb-sync-shadow-hover);
}

.tb-btn:focus-visible,
.btn:focus-visible,
.tb-page-banner-cta:focus-visible,
.tb-service-btn:focus-visible,
.tb-live-search-btn:focus-visible,
.tb-booking-pay-btn:focus-visible,
.tb-reservation-primary:focus-visible,
.tb-reservation-secondary:focus-visible,
.tb-app-pay-btn:focus-visible,
.tb-myapp-btn:focus-visible,
.tb-status-btn:focus-visible,
.tb-select-slot-btn:focus-visible {
  outline: none;
  box-shadow: var(--tb-sync-focus);
}

/* Cards and panels */
.tb-home-package-card,
.tb-home-application-card,
.tb-home-v2-visa-card,
.tb-home-destination-card,
.tb-testimonial-card,
.tb-blog-card,
.tb-list-blog-card,
.tb-content-card,
.tb-sidebar-card,
.tb-package-filter-panel,
.tb-package-results-panel,
.tb-list-package-card,
.tb-package-card,
.tb-detail-card,
.tb-policy-card,
.tb-price-enquiry-card,
.tb-option-card,
.tb-departure-card,
.tb-service-card,
.form-card,
.tb-reservation-panel,
.tb-booking-panel,
.tb-booking-fare-card,
.tb-app-pay-card,
.tb-app-pay-item,
.tb-detail-box,
.tb-myapp-card,
.tb-profile-card,
.tb-client-account-panel,
.tb-status-card,
.tb-ins-selected-quote,
.tb-ins-traveller-card,
.tb-ins-review-card,
.tb-insurance-plan-section,
.tb-hotel-filter-panel,
.tb-hotel-list-panel {
  background: #fff;
  border-color: var(--tb-sync-line);
  box-shadow: var(--tb-sync-shadow);
}

.tb-home-package-card:hover,
.tb-home-application-card:hover,
.tb-home-v2-visa-card:hover,
.tb-home-destination-card:hover,
.tb-blog-card:hover,
.tb-list-package-card:hover,
.tb-package-card:hover,
.tb-departure-card:hover,
.tb-myapp-card:hover {
  border-color: rgba(15, 159, 154, .28);
  box-shadow: var(--tb-sync-shadow-hover);
}

.tb-home-application-card > i,
.tb-service-card-icon,
.tb-home-travel-simplified-points i,
.tb-reservation-hero-process i {
  background: linear-gradient(135deg, rgba(15, 159, 154, .13), rgba(100, 26, 166, .09));
  color: var(--tb-sync-teal);
}

.tb-home-application-card b,
.tb-home-v2-visa-body strong,
.tb-home-package-body h3 a,
.tb-list-package-card h3,
.tb-package-card h3,
.tb-myapp-ref {
  color: var(--tb-sync-ink);
}

.tb-price,
.tb-app-pay-amount,
.tb-side-amount,
.tb-booking-total-row strong {
  color: var(--tb-sync-teal-2);
}

.tb-service-icons i,
.tb-home-package-meta i,
.tb-card-body i,
.tb-list-package-card i {
  color: var(--tb-sync-teal);
}

/* Forms and upload zones */
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
select,
textarea {
  border-color: var(--tb-sync-line-strong);
  color: var(--tb-sync-text);
  background-color: #fff;
}

input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):focus,
select:focus,
textarea:focus {
  border-color: var(--tb-sync-teal);
  box-shadow: var(--tb-sync-focus);
  outline: none;
}

input[readonly],
textarea[readonly] {
  background-color: #f8fafc;
  color: #64748b;
}

.tb-upload {
  border-color: rgba(100, 26, 166, .28);
  background: linear-gradient(180deg, #fff, var(--tb-sync-soft));
}

.tb-upload:hover {
  border-color: rgba(15, 159, 154, .52);
  box-shadow: var(--tb-sync-shadow);
}

.tb-upload .uicon {
  color: var(--tb-sync-teal);
}

.tb-service-note,
.tb-app-pay-note,
.tb-myapps-alert {
  background: var(--tb-sync-teal-soft);
  color: #17585d;
  border-color: rgba(15, 159, 154, .18);
}

.tb-service-warning,
.tb-app-pay-error,
.tb-myapps-alert.bad {
  background: #fff4f2;
  color: #9f2d20;
  border-color: #f3c7c2;
}

.progress-bar span,
.tb-service-progress-track span {
  background: linear-gradient(90deg, var(--tb-sync-teal), var(--tb-sync-purple));
}

.progress,
.tb-service-progress,
.tb-application-journey {
  border-color: var(--tb-sync-line);
  background: #fff;
}

/* Payment/status/account tone */
.tb-app-pay-head {
  background: linear-gradient(135deg, var(--tb-sync-plum), var(--tb-sync-purple-2) 58%, var(--tb-sync-teal-2));
  color: #fff;
}

.tb-app-pay-head h1,
.tb-app-pay-head small {
  color: #fff;
}

.tb-app-pay-item,
.tb-detail-field,
.tb-booking-total-row {
  background: #f9fbfd;
}

.tb-myapp-badge.good {
  background: #e7f7f3;
  color: #08736f;
}

.tb-myapp-badge.warn {
  background: #fff7ed;
  color: #b45309;
}

.tb-myapp-badge.bad {
  background: #fee2e2;
  color: #b91c1c;
}

.tb-myapp-badge.info,
.tb-app-pay-status,
.tb-booking-status-pill {
  background: #f1f5f9;
  color: #475569;
}

/* Footer */
.tb-footer {
  background: linear-gradient(135deg, #120826 0%, #261044 58%, #075f5b 100%);
  color: rgba(255, 255, 255, .78);
}

.tb-footer h4 {
  color: #fff;
}

.tb-footer a {
  color: rgba(255, 255, 255, .82);
}

.tb-footer a:hover {
  color: #fff;
}

.tb-footer-bottom {
  border-color: rgba(255, 255, 255, .12);
}

.tb-footer-map-frame {
  border-color: rgba(255, 255, 255, .14);
}

/* Homepage tone fixes */
body.tb-home-page .tb-home-v2-heading > a {
  min-height: 0;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
  color: var(--tb-sync-teal-2);
  font-weight: 900;
  text-decoration: none;
}

body.tb-home-page .tb-home-v2-heading > a:hover {
  color: var(--tb-sync-purple);
  text-decoration: underline;
  text-underline-offset: 4px;
}

body.tb-home-page .tb-home-v2-process {
  background: linear-gradient(180deg, #ffffff 0%, #f6fbfb 100%) !important;
  color: var(--tb-sync-text) !important;
  border-top: 1px solid var(--tb-sync-line) !important;
  border-bottom: 1px solid var(--tb-sync-line) !important;
}

body.tb-home-page .tb-home-v2-process-copy > span {
  color: var(--tb-sync-teal-2) !important;
}

body.tb-home-page .tb-home-v2-process-copy h2,
body.tb-home-page .tb-home-v2-steps strong {
  color: var(--tb-sync-ink) !important;
}

body.tb-home-page .tb-home-v2-process-copy p,
body.tb-home-page .tb-home-v2-steps small {
  color: var(--tb-sync-muted) !important;
}

body.tb-home-page .tb-home-v2-steps > div {
  background: #fff !important;
  border-color: var(--tb-sync-line) !important;
  box-shadow: var(--tb-sync-shadow) !important;
}

body.tb-home-page .tb-home-v2-steps b {
  background: linear-gradient(135deg, var(--tb-sync-teal), var(--tb-sync-teal-2)) !important;
  color: #fff !important;
}

body.tb-home-page .tb-home-travel-simplified {
  background: linear-gradient(135deg, #f7fbfb 0%, #effaf9 58%, #f8f4fb 100%) !important;
  border-top: 1px solid var(--tb-sync-line) !important;
  color: var(--tb-sync-text) !important;
}

body.tb-home-page .tb-home-travel-simplified *,
body.tb-home-page .tb-home-travel-simplified-copy h2,
body.tb-home-page .tb-home-travel-simplified-points strong {
  color: var(--tb-sync-ink) !important;
}

body.tb-home-page .tb-home-travel-simplified-copy > span {
  color: var(--tb-sync-teal-2) !important;
}

body.tb-home-page .tb-home-travel-simplified-copy p,
body.tb-home-page .tb-home-travel-simplified-points span {
  color: var(--tb-sync-muted) !important;
}

body.tb-home-page .tb-home-travel-simplified-points article {
  background: #fff !important;
  border-color: var(--tb-sync-line) !important;
  box-shadow: var(--tb-sync-shadow) !important;
}

body.tb-home-page .tb-home-travel-simplified-points article > i {
  background: var(--tb-sync-teal-soft) !important;
  color: var(--tb-sync-teal-2) !important;
}

body.tb-home-page .tb-home-travel-simplified-cta,
body.tb-home-page .tb-home-travel-simplified-cta * {
  color: #fff !important;
}

body.tb-home-page .tb-home-banner-copy .hero-actions {
  display: none !important;
}

/* Flight request page formatting and airport autocomplete alignment. */
.tb-reservation-process-page .tb-reservation-shell {
  max-width: 1180px !important;
}

.tb-reservation-process-page .tb-reservation-panel {
  border-radius: 16px !important;
  overflow: visible !important;
}

.tb-reservation-process-page .tb-reservation-panel-head {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) auto !important;
  gap: 18px !important;
  align-items: start !important;
  padding: 26px 28px 22px !important;
}

.tb-reservation-process-page .tb-reservation-panel-head p {
  max-width: 420px !important;
  text-align: right !important;
}

.tb-reservation-process-page .tb-reservation-choice-row {
  padding: 24px 28px 10px !important;
}

.tb-reservation-process-page .tb-reservation-grid {
  gap: 18px 22px !important;
  padding-left: 28px !important;
  padding-right: 28px !important;
}

.tb-reservation-process-page .tb-reservation-airport-grid {
  align-items: start !important;
}

.tb-reservation-process-page .tb-reservation-grid label {
  position: relative !important;
}

.tb-reservation-process-page .tb-reservation-grid input,
.tb-reservation-process-page .tb-reservation-grid select,
.tb-reservation-process-page .tb-reservation-grid textarea {
  min-height: 52px !important;
  border-radius: 10px !important;
}

.tb-reservation-process-page .tb-reservation-airport-field {
  min-height: 88px !important;
  border: 0 !important;
  box-shadow: none !important;
  outline: 0 !important;
  background: transparent !important;
}

.tb-reservation-process-page .tb-reservation-airport-field:focus,
.tb-reservation-process-page .tb-reservation-airport-field:focus-within,
.tb-reservation-process-page .tb-reservation-airport-field.has-airport-selected {
  border: 0 !important;
  box-shadow: none !important;
  outline: 0 !important;
  background: transparent !important;
}

.tb-reservation-process-page .tb-reservation-airport-field input:focus {
  border-color: #0f8d83 !important;
  box-shadow: 0 0 0 3px rgba(15, 141, 131, .10) !important;
  outline: 0 !important;
}

.tb-reservation-process-page .tb-reservation-airport-field .tb-selected-airport-info {
  display: block !important;
  margin-top: 6px !important;
  min-height: 16px !important;
  color: #667085 !important;
  font-size: 12px !important;
  font-weight: 650 !important;
  line-height: 1.25 !important;
}

.tb-reservation-process-page .tb-reservation-airport-field .tb-selected-airport-info[hidden] {
  display: none !important;
}

.tb-reservation-process-page .tb-reservation-common-title {
  margin: 28px 28px 18px !important;
}

.tb-reservation-process-page .tb-reservation-actions {
  padding: 24px 28px !important;
}

.tb-reservation-process-page .tb-reservation-review {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 12px !important;
  padding: 28px !important;
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  overflow: visible !important;
}

.tb-reservation-process-page .tb-reservation-review > div {
  display: grid !important;
  grid-template-columns: minmax(120px, .75fr) minmax(0, 1fr) !important;
  align-items: center !important;
  gap: 14px !important;
  min-height: 58px !important;
  padding: 14px 16px !important;
  border: 1px solid #dbe5ec !important;
  border-radius: 10px !important;
  background: #fff !important;
}

.tb-reservation-process-page .tb-reservation-review span {
  min-width: 0 !important;
  color: #64748b !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  line-height: 1.35 !important;
}

.tb-reservation-process-page .tb-reservation-review strong {
  min-width: 0 !important;
  color: #1f2d42 !important;
  font-size: 13px !important;
  font-weight: 800 !important;
  line-height: 1.35 !important;
  text-align: right !important;
  overflow-wrap: anywhere !important;
}

.tb-reservation-process-page .tb-reservation-payment-preview,
.tb-reservation-process-page .tb-reservation-future-grid,
.tb-reservation-process-page .tb-reservation-declarations {
  margin-left: 28px !important;
  margin-right: 28px !important;
}

.tb-reservation-process-page .tb-reservation-payment-preview {
  margin-top: 28px !important;
}

@media (max-width: 767px) {
  .tb-reservation-process-page .tb-reservation-panel-head {
    grid-template-columns: 1fr !important;
    padding: 22px 18px 18px !important;
  }

  .tb-reservation-process-page .tb-reservation-panel-head p {
    max-width: none !important;
    text-align: left !important;
  }

  .tb-reservation-process-page .tb-reservation-choice-row,
  .tb-reservation-process-page .tb-reservation-grid,
  .tb-reservation-process-page .tb-reservation-actions {
    padding-left: 18px !important;
    padding-right: 18px !important;
  }

  .tb-reservation-process-page .tb-reservation-common-title {
    margin-left: 18px !important;
    margin-right: 18px !important;
  }

  .tb-reservation-process-page .tb-reservation-review {
    grid-template-columns: 1fr !important;
    padding: 18px !important;
  }

  .tb-reservation-process-page .tb-reservation-review > div {
    grid-template-columns: 1fr !important;
    gap: 6px !important;
    min-height: auto !important;
  }

  .tb-reservation-process-page .tb-reservation-review strong {
    text-align: left !important;
  }

  .tb-reservation-process-page .tb-reservation-payment-preview,
  .tb-reservation-process-page .tb-reservation-future-grid,
  .tb-reservation-process-page .tb-reservation-declarations {
    margin-left: 18px !important;
    margin-right: 18px !important;
  }
}

/* Small responsive safety only: prevent text/buttons from overflowing. */
.tb-btn,
.btn,
.tb-service-btn,
.tb-live-search-btn,
.tb-booking-pay-btn,
.tb-reservation-primary,
.tb-reservation-secondary,
.tb-app-pay-btn,
.tb-myapp-btn,
.tb-status-btn,
.tb-select-slot-btn,
.tb-page-banner-cta {
  white-space: normal;
}

@media (max-width: 767px) {
  .tb-main-menu .nav-link {
    color: var(--tb-sync-text);
  }

  .tb-footer-bottom,
  .tb-footer-policy-links {
    gap: 10px;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
  }
}
