/*
 * Shared public layout finishing layer.
 * Loaded last so it can resolve the legacy duplicate/compact rules without
 * changing the component-specific stylesheets they belong to.
 */
:root {
  --site-page-max: 1600px;
  --site-page-pad: clamp(16px, 3vw, 48px);
  --site-copy-size: clamp(15px, calc(14.5px + .16vw), 17px);
  --site-copy-leading: 1.6;
  --site-reading-width: 72ch;
  --site-control-height: 44px;
}

html {
  font-size: 16px;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body.responsive-public-page,
body.about-mobile-ready,
body.public-tour-page,
body.client-dashboard-page,
body.auth-page {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: hidden;
  font-size: var(--site-copy-size);
  line-height: var(--site-copy-leading);
}

body.responsive-public-page *,
body.about-mobile-ready *,
body.public-tour-page *,
body.client-dashboard-page *,
body.auth-page * {
  min-width: 0;
}

body.responsive-public-page img,
body.about-mobile-ready img,
body.public-tour-page img,
body.client-dashboard-page img,
body.auth-page img {
  max-width: 100%;
  height: auto;
}

/* Home, Packages and Popular Packages share index.php. */
.responsive-public-page .hero-carousel-wrap {
  width: 100% !important;
  margin-left: 0 !important;
}

.responsive-public-page .hero-carousel .hero-slide {
  flex-basis: 100% !important;
  min-width: 100% !important;
}

.responsive-public-page .navbar {
  padding-inline: var(--site-page-pad);
}

.responsive-public-page .navbar .brand img {
  width: 42px;
  height: 42px;
  flex: 0 0 42px;
  object-fit: contain;
}

.responsive-public-page .navbar .links a {
  display: inline-flex;
  align-items: center;
  min-height: var(--site-control-height);
  font-size: .95rem;
}

.responsive-public-page .public-trust-inner,
.responsive-public-page .tours-grid-layout,
.responsive-public-page .footer-shell,
.responsive-public-page .site-footer-inner,
.responsive-public-page .footer-inner,
.responsive-public-page .home-footer-shell {
  width: min(100%, var(--site-page-max));
  max-width: var(--site-page-max) !important;
  margin-inline: auto;
  box-sizing: border-box;
}

.responsive-public-page .home-footer-brand span,
.responsive-public-page .home-footer-copy,
.responsive-public-page .home-footer-links a {
  font-size: .875rem;
}

.responsive-public-page .home-footer-shell {
  padding-inline: var(--site-page-pad);
}

.responsive-public-page .tours-grid-layout {
  grid-template-columns: clamp(270px, 19vw, 320px) minmax(0, 1fr) !important;
  gap: clamp(18px, 2vw, 32px) !important;
  padding-inline: var(--site-page-pad) !important;
}

.responsive-public-page .main-panel,
.responsive-public-page .tours-grid {
  min-width: 0;
}

.responsive-public-page .main-panel h1,
.responsive-public-page .main-panel h2 {
  font-size: clamp(1.45rem, 1.1rem + .8vw, 2.15rem);
  line-height: 1.2;
}

.responsive-public-page .sidebar {
  font-size: .9375rem !important;
  line-height: 1.45 !important;
  border-radius: 14px;
}

.responsive-public-page .sidebar-title {
  font-size: 1.05rem !important;
}

.responsive-public-page .filter-label,
.responsive-public-page .filter-list label,
.responsive-public-page .sidebar summary,
.responsive-public-page .chip-lbl {
  font-size: .875rem !important;
  line-height: 1.35 !important;
}

.responsive-public-page #acc-destinations #destinationsList .chip-lbl {
  padding: 6px 7px;
  white-space: normal;
}

.responsive-public-page .apply-btn,
.responsive-public-page .sidebar-toggle-btn,
.responsive-public-page .sidebar-close-btn,
.responsive-public-page .tour-btn {
  min-height: var(--site-control-height) !important;
}

.responsive-public-page .apply-btn {
  background: #2e8b57 !important;
  border-radius: 10px !important;
  font-size: .9375rem !important;
}

.responsive-public-page .sidebar-toggle-btn {
  background: #2e8b57 !important;
  font-size: .9375rem !important;
}

.responsive-public-page .tour-card .tour-title {
  font-size: clamp(1.05rem, .98rem + .18vw, 1.2rem) !important;
  line-height: 1.3 !important;
}

.responsive-public-page .tour-card .tour-meta-inline,
.responsive-public-page .tour-card .tour-block.act .tour-act-value {
  font-size: .875rem !important;
  line-height: 1.35 !important;
}

.responsive-public-page .tour-card .tour-block-label,
.responsive-public-page .tour-card .tour-chips .chip,
.responsive-public-page .tour-card .price-sub .rev,
.responsive-public-page .tour-card .label-from {
  font-size: .8125rem !important;
  line-height: 1.3 !important;
}

.responsive-public-page .tour-card .tour-chips {
  gap: 5px !important;
}

.responsive-public-page .tour-card .tour-chips .chip {
  padding: 4px 8px !important;
}

.responsive-public-page .tour-card .price-new {
  font-size: 1.2rem !important;
}

.responsive-public-page .tour-card .price-old,
.responsive-public-page .tour-card .pp-chip {
  font-size: .8125rem !important;
}

.responsive-public-page .tour-card .tour-btn {
  padding: .6rem .9rem !important;
  min-height: var(--site-control-height) !important;
  border-radius: 10px !important;
  font-size: .9rem !important;
}

/* Undo an old broad a[aria-label^="View"] compact rule on image/title links. */
.responsive-public-page .tour-card .tour-img-link,
.responsive-public-page .tour-card .tour-title a {
  min-height: 0 !important;
  padding: 0 !important;
  border-radius: 0 !important;
  font-size: inherit !important;
  line-height: inherit !important;
}

.responsive-public-page .tour-card .tour-img-link {
  display: block !important;
}

.responsive-public-page .tour-card .tour-title a {
  display: inline !important;
}

.responsive-public-page .hero-caption .hero-title {
  font-size: clamp(1.75rem, 1.2rem + 1.6vw, 3rem) !important;
  line-height: 1.15 !important;
}

.responsive-public-page .hero-caption .hero-excerpt {
  max-width: 68ch;
  font-size: 1rem !important;
  line-height: 1.55 !important;
}

.responsive-public-page .hero-caption .hero-meta,
.responsive-public-page .hero-caption .hero-dest-label,
.responsive-public-page .hero-caption .hero-duration {
  font-size: .875rem !important;
  line-height: 1.3 !important;
}

@media (min-width: 1380px) {
  .responsive-public-page .tours-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: clamp(18px, 1.4vw, 26px) !important;
  }
}

/* About page: wide grids, while prose remains comfortably readable. */
.about-mobile-ready .hero-content,
.about-mobile-ready .section-shell,
.about-mobile-ready .footer-shell {
  width: min(100%, var(--site-page-max));
  max-width: var(--site-page-max) !important;
  margin-inline: auto;
  padding-inline: var(--site-page-pad);
  box-sizing: border-box;
}

.about-mobile-ready .intro-copy p,
.about-mobile-ready .why-heading > p:not(.kicker),
.about-mobile-ready .values-lead p {
  max-width: var(--site-reading-width);
}

.about-mobile-ready h1 {
  font-size: clamp(2.2rem, 1.5rem + 2.1vw, 4.25rem);
  line-height: 1.08;
}

.about-mobile-ready h2 {
  font-size: clamp(1.65rem, 1.3rem + 1vw, 2.7rem);
  line-height: 1.18;
}

.about-mobile-ready .links a {
  min-height: var(--site-control-height);
  display: inline-flex;
  align-items: center;
  font-size: .9375rem;
}

.about-mobile-ready .footer-brand span,
.about-mobile-ready .site-footer p,
.about-mobile-ready .footer-links a {
  font-size: .875rem;
}

/* Single tour: coordinate the wider shell with the fixed desktop quote card. */
.public-tour-page {
  --aside-w: clamp(280px, 20vw, 320px);
  --grid-gap: clamp(18px, 2vw, 30px);
}

.public-tour-page .breadcrumbs,
.public-tour-page .wrap {
  width: min(100%, var(--site-page-max));
  max-width: var(--site-page-max) !important;
  margin-inline: auto;
  padding-inline: var(--site-page-pad) !important;
  box-sizing: border-box;
}

.public-tour-page .tour-footer-shell {
  width: min(100%, var(--site-page-max));
  max-width: var(--site-page-max) !important;
  padding-left: var(--site-page-pad);
  box-sizing: border-box;
}

.public-tour-page .tour-footer-brand span,
.public-tour-page .tour-footer-copy,
.public-tour-page .tour-footer-links a {
  font-size: .875rem;
}

.public-tour-page .layout {
  grid-template-columns: minmax(0, 1fr) var(--aside-w) !important;
  gap: var(--grid-gap) !important;
}

.public-tour-page .sticky-book {
  width: var(--aside-w) !important;
  max-width: var(--aside-w) !important;
  right: max(var(--site-page-pad), calc((100vw - var(--site-page-max)) / 2 + var(--site-page-pad))) !important;
}

.public-tour-page h1 {
  font-size: clamp(1.8rem, 1.35rem + 1.25vw, 3rem);
  line-height: 1.15;
}

.public-tour-page h2,
.public-tour-page .section-title {
  font-size: clamp(1.35rem, 1.15rem + .55vw, 1.9rem);
  line-height: 1.25;
}

.public-tour-page .tab,
.public-tour-page .rel-cta,
.public-tour-page form button,
.public-tour-page input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="file"]),
.public-tour-page select,
.public-tour-page textarea {
  font-size: max(.875rem, 14px);
}

.public-tour-page form button,
.public-tour-page input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="file"]),
.public-tour-page select,
.public-tour-page .rel-cta {
  min-height: var(--site-control-height);
}

/* Client dashboard and booking data. */
.client-dashboard-page .bar {
  min-height: 68px;
  height: auto;
  padding-inline: var(--site-page-pad);
}

.client-dashboard-page .wrap {
  width: min(100%, var(--site-page-max));
  max-width: var(--site-page-max) !important;
  margin-inline: auto;
  padding-inline: var(--site-page-pad);
}

.client-dashboard-page .btn,
.client-dashboard-page .input {
  min-height: var(--site-control-height);
  font-size: .9375rem;
}

.client-dashboard-page .field span,
.client-dashboard-page .tbl.bookings,
.client-dashboard-page .tbl.bookings th {
  font-size: .875rem;
}

.client-dashboard-page .section-sub,
.client-dashboard-page .booking-summary .sum-label,
.client-dashboard-page .pill,
.client-dashboard-page .tour-badges .badge,
.client-dashboard-page .tour-facts .fact,
.client-dashboard-page .tour-price .from,
.client-dashboard-page .tour-price .pp,
.client-dashboard-page .tour-cta {
  font-size: .75rem;
}

.client-dashboard-page .tour-title {
  font-size: 1.05rem;
}

.client-dashboard-page .tour-grid {
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: clamp(14px, 1.5vw, 24px);
}

/* Public account modal and standalone sign-in/register page. */
:is(.responsive-public-page, .about-mobile-ready, .public-tour-page) .auth-dialog input[type="text"],
:is(.responsive-public-page, .about-mobile-ready, .public-tour-page) .auth-dialog input[type="email"],
:is(.responsive-public-page, .about-mobile-ready, .public-tour-page) .auth-dialog input[type="tel"],
:is(.responsive-public-page, .about-mobile-ready, .public-tour-page) .auth-dialog input[type="password"],
:is(.responsive-public-page, .about-mobile-ready, .public-tour-page) .auth-dialog .btn,
:is(.responsive-public-page, .about-mobile-ready, .public-tour-page) .auth-dialog .auth-tab {
  min-height: var(--site-control-height);
  font-size: .9375rem;
}

.auth-page .topbar {
  min-height: 64px;
  height: auto;
  padding-inline: var(--site-page-pad);
}

.auth-page .topbar .brand img {
  width: 34px;
  height: 34px;
  flex: 0 0 34px;
  object-fit: contain;
}

.auth-page .wrap {
  width: min(100%, 1100px);
  max-width: 1100px;
  margin-inline: auto;
  padding-inline: var(--site-page-pad);
}

.auth-page .auth-grid {
  grid-template-columns: minmax(0, 1.1fr) minmax(280px, .9fr);
  gap: clamp(16px, 2vw, 28px);
}

.auth-page label {
  font-size: .9375rem;
}

.auth-page input[type="text"],
.auth-page input[type="email"],
.auth-page input[type="password"],
.auth-page input[type="tel"],
.auth-page select,
.auth-page .btn,
.auth-page .tab-btn {
  min-height: var(--site-control-height);
  font-size: .9375rem;
}

/* Tablet and mobile retain the existing component behaviour. */
@media (max-width: 1100px) {
  .responsive-public-page .tours-grid-layout {
    grid-template-columns: 1fr !important;
  }
}

@media (max-width: 1024px) {
  .public-tour-page .layout {
    grid-template-columns: 1fr !important;
  }

  .public-tour-page .tour-footer-shell {
    padding-inline: var(--site-page-pad);
  }
}

@media (max-width: 900px) {
  :root {
    --site-page-pad: clamp(14px, 4vw, 28px);
  }

  .responsive-public-page .navbar .links a {
    display: flex;
    margin-left: 0;
    padding-block: 11px;
  }

  .responsive-public-page .hero-caption .hero-title {
    font-size: clamp(1.35rem, 1.05rem + 1.5vw, 1.8rem) !important;
  }

  .responsive-public-page .hero-caption .hero-excerpt {
    font-size: .875rem !important;
  }

  .responsive-public-page .hero-caption .hero-meta,
  .responsive-public-page .hero-caption .hero-dest-label,
  .responsive-public-page .hero-caption .hero-duration {
    font-size: .8125rem !important;
  }
}

@media (max-width: 700px) {
  body.responsive-public-page,
  body.about-mobile-ready,
  body.public-tour-page,
  body.client-dashboard-page,
  body.auth-page {
    font-size: 15px;
  }

  .responsive-public-page .tours-grid-layout {
    padding-inline: 14px !important;
  }

  .responsive-public-page .tour-card .tour-title {
    font-size: 1rem !important;
  }

  .responsive-public-page .tour-card .tour-meta-inline,
  .responsive-public-page .tour-card .tour-block.act .tour-act-value {
    font-size: .8125rem !important;
  }

  .responsive-public-page .tour-card .tour-block-label,
  .responsive-public-page .tour-card .tour-chips .chip,
  .responsive-public-page .tour-card .price-sub .rev,
  .responsive-public-page .tour-card .label-from,
  .responsive-public-page .tour-card .price-old,
  .responsive-public-page .tour-card .pp-chip {
    font-size: .75rem !important;
  }

  .responsive-public-page .tour-card .tour-btn {
    font-size: .875rem !important;
  }

  .public-tour-page input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="file"]),
  .public-tour-page select,
  .public-tour-page textarea,
  .client-dashboard-page .input {
    font-size: 16px !important;
  }

  .client-dashboard-page .bar {
    padding-inline: 12px;
  }

  .client-dashboard-page .wrap {
    padding-inline: 12px;
  }

  .client-dashboard-page .tour-grid {
    grid-template-columns: 1fr;
  }

  .auth-page .auth-grid {
    grid-template-columns: 1fr;
  }

  .auth-page input[type="text"],
  .auth-page input[type="email"],
  .auth-page input[type="password"],
  .auth-page input[type="tel"],
  .auth-page select {
    font-size: 16px;
  }
}

@media (max-width: 430px) {
  :root {
    --site-page-pad: 14px;
  }

  .responsive-public-page .tour-card .tour-chips .chip {
    white-space: normal;
  }

  .public-tour-page .mobile-cta.two {
    grid-template-columns: 1fr 1fr;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.responsive-public-page *,
  body.about-mobile-ready *,
  body.public-tour-page *,
  body.client-dashboard-page *,
  body.auth-page * {
    scroll-behavior: auto !important;
  }
}
