/* ==========================================================================
   MASTER TRAVEL — design system (navbar + footer)
   --------------------------------------------------------------------------
   Values transcribed VERBATIM from the approved design (master/home.html).
   Only two things were changed on purpose:

   1) Tokens are namespaced --mt-* so they cannot clash with the tokens still
      used by the legacy theme CSS while the site is converted page by page.
   2) The generic design selectors (header, footer, nav, .container, .btn)
      are scoped under .mt-header / .mt-footer. Bootstrap and the legacy
      style.home.purged.min.css are still loaded globally and define those
      same names, so an unscoped copy would be overridden. The INNER class
      names (.desktop-nav, .dropdown, .footer-grid, .newsletter-box, ...)
      are untouched, so the rendered result is identical to the design.

   The standalone mobile pieces (.mobile-tab-bar, .mobile-menu-overlay,
   .mobile-menu-trigger, .menu-close, .mobile-nav-links) keep their exact
   design names — those class names appear nowhere in the legacy CSS.
   ========================================================================== */

:root {
    /* Official brand palette */
    --mt-primary: #41abdd;          /* bright cyan highlight */
    --mt-primary-hover: #298bb9;
    --mt-secondary: #0c5987;        /* deep cerulean */
    --mt-accent-orange: #f39c12;
    --mt-gradient-accent: linear-gradient(135deg, #41abdd 0%, #0c5987 100%);

    --mt-bg-body: #ffffff;
    --mt-bg-mute: #f7f8fa;

    --mt-text-dark: #111827;
    --mt-text-mute: #4b5563;
    --mt-text-light: #9ca3af;

    --mt-border-soft: rgba(0, 0, 0, 0.06);
    --mt-shadow-elegant: 0 10px 30px rgba(0, 0, 0, 0.03);
    --mt-shadow-hover: 0 20px 40px rgba(0, 0, 0, 0.08);
    --mt-shadow-small: 0 2px 8px rgba(0, 0, 0, 0.06);

    --mt-transition: all 0.5s cubic-bezier(0.25, 1, 0.3, 1);
}

/* ==========================================================================
   1. HEADER  (floating / transparent, sits over the page cover)
   ========================================================================== */

.mt-header {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    padding: 35px 0;
    z-index: 1000;
    background: transparent;
    font-family: 'Poppins', sans-serif;
    /* The design's <body> is 16px / 1.7. The legacy critical CSS in the layout
       sets html,body { font-size:18px; line-height:30px }, which would otherwise
       be inherited here — so both are restated to the design's values. */
    font-size: 16px;
    line-height: 1.7;
}

/* Design reset (`* { margin:0; padding:0; box-sizing:border-box }`), scoped.
   Every rule below that needs padding is a class selector, so it still wins. */
.mt-header *,
.mt-header *::before,
.mt-header *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* ---------------------------------------------------------------------------
   INHERITANCE GUARD — restores the design's cascade.

   In the design, font-family and line-height are set once on <body> and every
   heading, link and button simply inherits them. Here they do not, because the
   legacy stylesheets set those same properties on BARE ELEMENT selectors that
   the design never touches, and inheritance always loses to a matching rule:

     h4       { line-height: 130% }   style.home.purged.min.css
     h1..h6   { line-height: 1.2 }    bootstrap.home.purged.min.css
     h1..h5   { font-family: "Plus Jakarta Sans"; ... }  inner-critical.min.css
     .btn     { line-height: 1.5 }    bootstrap

   So the footer's EXPLORE/HERITAGE headings and "Join The Elite" were rendering
   at 1.2-1.3 line-height instead of 1.7 (and in the wrong face on inner pages),
   which shifted every row beneath them. Forcing `inherit` re-establishes the
   design's chain and neutralises any similar leak we have not found.

   Form controls are excluded on purpose — see the newsletter input/button rule,
   where the design keeps the browser's own metrics.
   --------------------------------------------------------------------------- */
.mt-header *:not(input):not(button):not(select):not(textarea),
.mt-footer *:not(input):not(button):not(select):not(textarea),
.mobile-menu-overlay *,
.mobile-tab-bar * {
    font-family: inherit;
    line-height: inherit;
}

.mt-header .container {
    max-width: 1320px;
    width: 100%;
    margin: 0 auto;
    padding: 0 40px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.mt-header a {
    text-decoration: none;
    color: inherit;
    transition: var(--mt-transition);
}

/* Design markup keeps a flex wrapper inside .container */
.mt-header .header-inner {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
}

/* NOT part of the design — an escape hatch only. The design header is always
   the transparent one above, floating over a dark cover. A page that has no
   cover at all can fall back to a solid bar with
   $this->set('headerSolid', true) so its nav stays legible. */
.mt-header.is-solid {
    position: relative;
    background: var(--mt-secondary);
    padding: 22px 0;
}

/* --- logo --- */
.mt-header .logo img {
    max-height: 58px;
    /* The design's <img> carries no width/height attributes, so max-height
       alone scales it. Ours does carry them (for CLS), and those attributes map
       to CSS width/height — so without these two the logo is drawn at the
       attribute ratio instead of its own and comes out squashed. */
    width: auto;
    height: auto;
    /* the CMS logo is a dark PNG; the design shows it knocked out to white
       over the cover image */
    filter: brightness(0) invert(1);
    transition: transform 0.3s ease;
}

.mt-header .logo:hover img {
    transform: scale(1.05);
}

/* --- desktop nav --- */
.mt-header nav.desktop-nav {
    display: flex;
    gap: 45px;
    align-items: center;
}

.mt-header nav a {
    font-size: 12.8px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: #fff;
    font-weight: 500;
    opacity: 0.9;
    position: relative;
    white-space: nowrap;
}

.mt-header nav a::after {
    content: '';
    position: absolute;
    bottom: -8px;
    left: 50%;
    transform: translateX(-50%);
    width: 0;
    height: 2px;
    background-color: var(--mt-primary);
    transition: var(--mt-transition);
}

.mt-header nav a:hover {
    opacity: 1;
}

/* Current page marker. The design has no active state; this reuses its own
   hover underline so the current section is identifiable, nothing new added. */
.mt-header nav a:hover::after,
.mt-header nav a.is-current::after,
.mt-header nav .dropdown.is-current > a::after {
    width: 80%;
}

.mt-header nav a.is-current,
.mt-header nav .dropdown.is-current > a {
    opacity: 1;
}

/* --- dropdown --- */
.mt-header .dropdown {
    position: relative;
    display: inline-block;
}

/* invisible bridge so the pointer can travel into the panel */
.mt-header .dropdown::after {
    content: '';
    position: absolute;
    top: 100%;
    left: 0;
    width: 100%;
    height: 25px;
    z-index: 999;
}

.mt-header .dropbtn {
    display: flex !important;
    align-items: center;
}

.mt-header .dropdown-content {
    position: absolute;
    top: calc(100% + 20px);
    left: 50%;
    transform: translateX(-50%) translateY(15px);
    background: rgba(12, 89, 135, 0.95);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    min-width: 180px;
    box-shadow: 0 40px 80px rgba(0, 0, 0, 0.5);
    border-radius: 8px;
    border: 1px solid rgba(255, 255, 255, 0.1);
    padding: 8px 0;
    opacity: 0;
    visibility: hidden;
    transition: var(--mt-transition);
    display: flex;
    flex-direction: column;
    pointer-events: none;
    z-index: 1000;
}

.mt-header .dropdown:hover .dropdown-content {
    opacity: 1;
    visibility: visible;
    transform: translateX(-50%) translateY(0);
    pointer-events: auto;
}

.mt-header .dropdown-content a {
    padding: 14px 24px;
    font-size: 12px;
    margin: 0;
    text-align: center;
}

.mt-header .dropdown-content a::after {
    display: none !important;
}

.mt-header .dropdown-content a:hover {
    background: rgba(65, 171, 221, 0.15);
    color: var(--mt-primary) !important;
}

/* --- CTA button (scoped hard: bootstrap also owns .btn / .btn-primary) --- */
.mt-header .btn,
.mt-footer .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 18px 46px;
    font-size: 12.8px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    border-radius: 4px;
    border: none;
    transition: var(--mt-transition);
    cursor: pointer;
    position: relative;
    overflow: hidden;
    text-decoration: none;
}

.mt-header .btn::after,
.mt-footer .btn::after {
    content: '\2192';
    font-size: 1.2em;
    font-weight: 400;
    transition: transform 0.4s ease;
    position: static;
    background: none;
    width: auto;
    height: auto;
    transform: none;
}

.mt-header .btn:hover::after,
.mt-footer .btn:hover::after {
    transform: translateX(6px);
    width: auto;
}

.mt-header .btn-primary,
.mt-footer .btn-primary {
    background-color: var(--mt-primary);
    color: #fff;
    box-shadow: 0 10px 20px rgba(65, 171, 221, 0.15);
}

.mt-header .btn-primary:hover,
.mt-footer .btn-primary:hover {
    background-color: var(--mt-primary-hover);
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 15px 25px rgba(65, 171, 221, 0.25);
}

.mt-header .btn-outline {
    background-color: transparent;
    color: #fff;
    border: 1px solid rgba(255, 255, 255, 0.4);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}

.mt-header .btn-outline:hover {
    background-color: #fff;
    color: var(--mt-text-dark);
    transform: translateY(-2px);
}

/* the CTA is a nav element too — it must hide with the desktop nav */
.mt-header a.desktop-nav {
    padding: 12px 28px;
    font-size: 12px;
}

/* --- burger --- */
.mt-header .mobile-menu-trigger {
    display: none;
    color: #fff;
    cursor: pointer;
    width: 48px;
    height: 48px;
    align-items: center;
    justify-content: center;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.12);
    transition: background 0.2s ease, transform 0.15s ease;
}

.mt-header .mobile-menu-trigger:active {
    transform: scale(0.96);
    background: rgba(255, 255, 255, 0.15);
}

/* ==========================================================================
   2. FULL-SCREEN MOBILE MENU OVERLAY
   ========================================================================== */

.mobile-menu-overlay {
    position: fixed;
    inset: 0;
    background: rgba(10, 52, 82, 0.97);
    backdrop-filter: blur(32px) saturate(160%);
    -webkit-backdrop-filter: blur(32px) saturate(160%);
    z-index: 3000;
    display: flex;
    flex-direction: column;
    padding: calc(88px + env(safe-area-inset-top, 0px)) max(24px, env(safe-area-inset-right, 0px)) calc(24px + env(safe-area-inset-bottom, 0px)) max(24px, env(safe-area-inset-left, 0px));
    transform: translateY(-100%);
    transition: transform 0.45s cubic-bezier(0.32, 0.72, 0, 1);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    font-family: 'Poppins', sans-serif;
    font-size: 16px;
    line-height: 1.7;
}

.mobile-menu-overlay.active {
    transform: translateY(0);
}

.mobile-menu-overlay a {
    text-decoration: none;
}

.menu-close {
    position: fixed;
    top: calc(14px + env(safe-area-inset-top, 0px));
    right: max(16px, env(safe-area-inset-right, 0px));
    color: #fff;
    cursor: pointer;
    width: 48px;
    height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.15);
    z-index: 3001;
    transition: background 0.2s ease, transform 0.15s ease;
}

.menu-close:active {
    transform: scale(0.94);
    background: rgba(255, 255, 255, 0.18);
}

.mobile-nav-links {
    display: flex;
    flex-direction: column;
    gap: 22px;
}

.mobile-nav-links a {
    color: #fff;
    font-size: 26.4px;
    font-weight: 600;
    letter-spacing: -0.02em;
}

.mobile-nav-links a span {
    display: block;
    font-size: 12.8px;
    color: var(--mt-primary);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    margin-bottom: 5px;
}

.mobile-nav-group {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.mobile-nav-sub {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding-left: 12px;
    margin-top: -6px;
    margin-left: 6px;
    border-left: 2px solid rgba(65, 171, 221, 0.4);
}

.mobile-nav-sub a {
    font-size: 16.8px !important;
    font-weight: 500;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.mobile-nav-sub a::after {
    display: none;
}

/* ==========================================================================
   3. MOBILE BOTTOM TAB BAR
   ========================================================================== */

.mobile-tab-bar {
    position: fixed;
    bottom: calc(12px + env(safe-area-inset-bottom, 0px));
    left: max(12px, env(safe-area-inset-left, 0px));
    right: max(12px, env(safe-area-inset-right, 0px));
    height: 64px;
    background: rgba(255, 255, 255, 0.94);
    backdrop-filter: blur(28px) saturate(180%);
    -webkit-backdrop-filter: blur(28px) saturate(180%);
    border: 1px solid rgba(255, 255, 255, 0.45);
    border-radius: 22px;
    display: none;
    justify-content: center;
    gap: 8px;
    align-items: center;
    z-index: 2000;
    box-shadow:
        0 4px 24px rgba(12, 89, 135, 0.12),
        0 12px 40px rgba(0, 0, 0, 0.1);
    padding: 0 12px;
    font-family: 'Poppins', sans-serif;
    font-size: 16px;
    line-height: 1.7;
}

.mobile-tab-bar .tab-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3px;
    flex: 1;
    max-width: 160px;
    min-height: 48px;
    color: var(--mt-secondary);
    font-size: 9.92px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    opacity: 0.55;
    transition: color 0.25s ease, opacity 0.25s ease, background 0.25s ease, transform 0.15s ease;
    border-radius: 16px;
    padding: 6px 10px;
    text-decoration: none;
    text-align: center;
}

.mobile-tab-bar .tab-item.active {
    opacity: 1;
    color: var(--mt-secondary);
    background: rgba(65, 171, 221, 0.14);
}

.mobile-tab-bar .tab-item.active svg {
    color: var(--mt-primary);
}

.mobile-tab-bar .tab-item svg {
    width: 24px;
    height: 24px;
}

/* ==========================================================================
   4. FOOTER
   ========================================================================== */

.mt-footer {
    background: #ffffff;
    color: var(--mt-text-mute);
    padding: 120px 0 50px;
    font-size: 15.2px;
    position: relative;
    border-top: 1px solid #edf2f7;
    font-family: 'Poppins', sans-serif;
    line-height: 1.7;
}

.mt-footer *,
.mt-footer *::before,
.mt-footer *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

.mt-footer .container {
    max-width: 1320px;
    width: 100%;
    margin: 0 auto;
    padding: 0 40px;
}

.mt-footer a {
    text-decoration: none;
    color: inherit;
    transition: var(--mt-transition);
}

.mt-footer .footer-grid {
    display: grid;
    grid-template-columns: 2fr minmax(0, 1fr) minmax(0, 1fr) 2fr;
    gap: 80px;
    margin-bottom: 100px;
}

/* NOTE: deliberately no `min-width: 0` here. The design has no .footer-col rule
   at all, so the columns keep grid's default `min-width: auto` — which lets the
   newsletter column push past its 2fr share (its box padding + the input/button
   row are wider than 2fr) and squeeze the brand column. That is what makes the
   brand paragraph wrap where the design wraps it. Adding min-width:0 clamps the
   newsletter column and widens the brand column, changing every wrap point. */

.mt-footer .footer-logo img {
    max-height: 75px;
    /* see the header logo: our <img> has width/height attributes, so both must
       be reset to auto or the attribute ratio wins and the logo is squashed */
    width: auto;
    height: auto;
    margin-bottom: 30px;
}

.mt-footer .footer-col p {
    line-height: 1.8;
    max-width: 350px;
    font-weight: 300;
    margin-bottom: 35px;
    color: var(--mt-text-mute);
}

.mt-footer .footer-col h4 {
    font-size: 13.6px;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    color: var(--mt-secondary);
    margin: 0 0 30px;
    font-weight: 700;
}

.mt-footer .footer-col ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

.mt-footer .footer-col ul li {
    margin-bottom: 15px;
}

.mt-footer .footer-col ul li a {
    color: var(--mt-text-mute);
    font-weight: 400;
    transition: var(--mt-transition);
    text-decoration: none;
    position: relative;
}

.mt-footer .footer-col ul li a::after {
    content: '';
    position: absolute;
    bottom: -4px;
    left: 0;
    width: 0;
    height: 2px;
    background: var(--mt-primary);
    transition: width 0.3s ease;
}

.mt-footer .footer-col ul li a:hover {
    color: var(--mt-secondary);
}

.mt-footer .footer-col ul li a:hover::after {
    width: 100%;
}

/* --- socials --- */
.mt-footer .social-icons-row {
    display: flex;
    gap: 15px;
}

.mt-footer .social-icon {
    width: 44px;
    height: 44px;
    background: #fff;
    border: 1px solid #edf2f7;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--mt-secondary);
    transition: var(--mt-transition);
    box-shadow: var(--mt-shadow-small);
}

.mt-footer .social-icon:hover {
    background: var(--mt-primary);
    border-color: var(--mt-primary);
    color: #fff;
    transform: translateY(-5px);
    box-shadow: 0 10px 20px rgba(65, 171, 221, 0.3);
}

/* --- newsletter --- */
.mt-footer .newsletter-box {
    background: rgba(65, 171, 221, 0.05);
    border-radius: 20px;
    padding: 35px;
    margin-top: -10px;
    border: 1px solid rgba(65, 171, 221, 0.1);
}

.mt-footer .newsletter-box h5 {
    color: var(--mt-secondary);
    margin: 0 0 10px;
    font-size: 19.2px;
    font-weight: 700;
}

.mt-footer .newsletter-box p {
    font-size: 14.4px;
    margin-bottom: 25px;
    color: var(--mt-text-mute);
}

.mt-footer .newsletter-form {
    display: flex;
    gap: 10px;
}

.mt-footer .newsletter-form input {
    flex: 1;
    background: #fff;
    border: 1px solid #edf2f7;
    color: var(--mt-secondary);
    padding: 14px 20px;
    border-radius: 12px;
    font-size: 15.2px;
    outline: none;
    transition: var(--mt-transition);
    box-shadow: var(--mt-shadow-small);
}

.mt-footer .newsletter-form input:focus {
    border-color: var(--mt-primary);
    box-shadow: 0 0 0 4px rgba(65, 171, 221, 0.1);
}

.mt-footer .newsletter-form button {
    background: var(--mt-secondary);
    color: #fff;
    border: none;
    padding: 14px 28px;
    border-radius: 12px;
    font-weight: 700;
    cursor: pointer;
    transition: var(--mt-transition);
}

.mt-footer .newsletter-form button:hover {
    background: var(--mt-primary);
    transform: scale(1.05);
    box-shadow: 0 5px 15px rgba(65, 171, 221, 0.4);
}

/* ---------------------------------------------------------------------------
   The design page ships no Bootstrap, so its newsletter input and button keep
   the BROWSER's own font metrics — the design sets no font-family or
   line-height on either, and no font-size on the button.

   Bootstrap's reboot is loaded here and overrides all three:
       button,input,select,textarea { font-family:inherit; font-size:inherit; line-height:inherit }
   which pulled Poppins and line-height 1.7 into them. That is why the
   placeholder rendered wider than the design's and the field sat ~8px taller.

   `revert` rolls each property back to the browser stylesheet — exactly what
   the design renders. font-size is reverted on the BUTTON only; the design sets
   the input's font-size explicitly (0.95rem), which we already match.
   --------------------------------------------------------------------------- */
.mt-footer .newsletter-form input {
    font-family: revert;
    line-height: revert;
}

.mt-footer .newsletter-form button {
    font-family: revert;
    font-size: revert;
    line-height: revert;
}

/* --- bottom bar --- */
.mt-footer .footer-bottom {
    border-top: 1px solid #edf2f7;
    padding-top: 40px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    color: var(--mt-text-light);
    font-size: 14.4px;
    font-weight: 400;
    gap: 20px;
}

/* ==========================================================================
   5. RESPONSIVE  (breakpoints exactly as the design)
   ========================================================================== */

@media (pointer: coarse) {
    .mt-header .btn,
    .mt-footer .social-icon,
    .mobile-tab-bar .tab-item,
    .mt-header .mobile-menu-trigger,
    .menu-close {
        transition: transform 0.1s cubic-bezier(0, 0, 0.2, 1);
    }

    .mt-header .btn:active,
    .mt-footer .social-icon:active,
    .mobile-tab-bar .tab-item:active {
        transform: scale(0.96) !important;
        opacity: 0.85;
    }
}

@media (max-width: 1200px) {
    .mt-footer .footer-grid {
        gap: 40px;
    }
}

@media (max-width: 1024px) {
    .mobile-tab-bar {
        display: flex;
    }

    .mt-header .mobile-menu-trigger {
        display: flex;
    }

    .mt-header .desktop-nav {
        display: none !important;
    }

    /* clear the floating tab bar */
    body {
        padding-bottom: calc(100px + env(safe-area-inset-bottom, 0px));
    }

    .mt-header,
    .mt-header.is-solid {
        position: fixed !important;
        top: 0;
        left: 0;
        right: 0;
        width: 100%;
        padding-top: calc(10px + env(safe-area-inset-top, 0px));
        padding-bottom: 10px;
        background: rgba(12, 89, 135, 0.92) !important;
        backdrop-filter: blur(20px) saturate(180%);
        -webkit-backdrop-filter: blur(20px) saturate(180%);
        border-bottom: 1px solid rgba(255, 255, 255, 0.1);
        box-shadow: 0 4px 24px rgba(0, 0, 0, 0.12);
    }

    .mt-header .container {
        padding-left: max(16px, env(safe-area-inset-left, 0px));
        padding-right: max(16px, env(safe-area-inset-right, 0px));
    }

    .mt-header .logo img {
        max-height: 44px;
    }

    .mt-footer .container {
        padding-left: max(18px, env(safe-area-inset-left, 0px));
        padding-right: max(18px, env(safe-area-inset-right, 0px));
    }
}

@media (max-width: 900px) {
    .mt-footer .footer-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 768px) {
    .mt-footer {
        padding: 70px 0 40px;
    }

    .mt-footer .footer-grid {
        grid-template-columns: minmax(0, 1fr) !important;
        gap: 50px;
        text-align: center;
        margin-bottom: 60px;
    }

    .mt-footer .footer-col p {
        margin: 0 auto 30px;
        max-width: 300px;
        text-align: center;
    }

    .mt-footer .footer-col h4 {
        margin-bottom: 20px;
    }

    .mt-footer .footer-col ul li {
        text-align: center;
    }

    .mt-footer .footer-col ul li a::after {
        left: 50%;
        transform: translateX(-50%);
    }

    .mt-footer .footer-logo img {
        max-height: 60px;
    }

    .mt-footer .social-icons-row {
        justify-content: center;
    }

    .mt-footer .newsletter-box {
        padding: 28px 20px;
    }

    .mt-footer .newsletter-form {
        flex-direction: column;
        gap: 12px;
    }

    .mt-footer .newsletter-form input {
        width: 100%;
    }

    .mt-footer .newsletter-form button {
        width: 100%;
        padding: 14px;
    }

    .mt-footer .footer-bottom {
        flex-direction: column;
        gap: 15px;
        text-align: center;
        padding-top: 28px;
    }
}

@media (max-width: 600px) {
    .mt-footer .footer-grid {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* ==========================================================================
   6. HOME HERO  (cinematic video cover + search pill)
   --------------------------------------------------------------------------
   Transcribed from the design's .hero / .search-pill block. Scoped under
   .mt-hero for the same reason as the header and footer: the design styles a
   bare `section { padding: 140px 0 }` and generic names (.hero, .search-group)
   that the legacy theme also owns. Inner class names are the design's.
   The header sits transparently ON TOP of this section, as designed.
   ========================================================================== */

.mt-hero {
    position: relative;
    height: 100vh;
    min-height: 750px;
    /* the design's bare `section { padding: 140px 0 }` applies to .hero too */
    padding: 140px 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    font-family: 'Poppins', sans-serif;
    font-size: 16px;
    line-height: 1.7;
    color: var(--mt-text-dark);
}

.mt-hero *,
.mt-hero *::before,
.mt-hero *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* same inheritance guard as the header/footer — see section 1 */
.mt-hero *:not(input):not(button):not(select):not(textarea) {
    font-family: inherit;
    line-height: inherit;
}

.mt-hero .hero-video {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 0;
}

.mt-hero::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    /* dark gradient for text legibility without washing out the video */
    background: linear-gradient(180deg, rgba(14, 16, 23, 0.4) 0%, rgba(14, 16, 23, 0.1) 40%, rgba(14, 16, 23, 0.85) 100%);
    z-index: 1;
}

.mt-hero .container {
    max-width: 1320px;
    width: 100%;
    margin: 0 auto;
    padding: 0 40px;
    position: relative;
    z-index: 2;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.mt-hero .hero-content {
    max-width: 900px;
    margin-bottom: 70px;
    padding-top: 40px;
}

.mt-hero .overline {
    display: inline-block;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.25em;
    color: var(--mt-primary);
    font-weight: 600;
    margin-bottom: 16px;
}

.mt-hero h1 {
    font-size: 57.6px;
    line-height: 1.2;
    color: #fff;
    margin-bottom: 20px;
    font-weight: 600;
    letter-spacing: -0.01em;
}

.mt-hero p {
    font-size: 20px;
    color: rgba(255, 255, 255, 0.85);
    font-weight: 300;
    max-width: 650px;
    margin: 0 auto;
}

/* --- search pill --- */
.mt-hero .search-pill {
    background: rgba(26, 32, 44, 0.65);
    backdrop-filter: blur(30px);
    -webkit-backdrop-filter: blur(30px);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 100px;
    padding: 10px;
    display: flex;
    align-items: center;
    max-width: 1000px;
    width: 100%;
    box-shadow: 0 40px 80px rgba(0, 0, 0, 0.4);
    position: relative;
    z-index: 10;
}

.mt-hero .search-group {
    flex: 1;
    display: flex;
    flex-direction: column;
    padding: 10px 32px;
    border-right: 1px solid rgba(255, 255, 255, 0.15);
    text-align: left;
}

.mt-hero .search-group:last-of-type {
    border-right: none;
}

.mt-hero .search-group label {
    font-size: 10.4px;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    color: rgba(255, 255, 255, 0.5);
    margin-bottom: 6px;
    font-weight: 500;
}

.mt-hero .search-group select {
    background: transparent;
    border: none;
    color: #fff;
    font-size: 16.8px;
    font-family: 'Poppins', sans-serif;
    font-weight: 600;
    outline: none;
    cursor: pointer;
    appearance: none;
    -webkit-appearance: none;
}

.mt-hero .search-group select option {
    background: #ffffff;
    color: var(--mt-text-dark);
    font-weight: 500;
}

.mt-hero .btn-search {
    background: var(--mt-primary);
    color: #fff;
    border: none;
    width: 64px;
    height: 64px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: var(--mt-transition);
    margin-left: 10px;
    flex-shrink: 0;
    box-shadow: 0 10px 20px rgba(65, 171, 221, 0.2);
}

.mt-hero .btn-search:hover {
    background: #fff;
    color: var(--mt-text-dark);
    transform: scale(1.05);
    box-shadow: 0 15px 30px rgba(255, 255, 255, 0.2);
}

/* --- hero responsive (breakpoints exactly as the design) --- */
@media (max-width: 1200px) {
    .mt-hero h1 { font-size: 48px; }
}

@media (max-width: 1024px) {
    .mt-hero {
        padding-top: calc(100px + env(safe-area-inset-top, 0px));
    }

    .mt-hero .container {
        padding-left: max(18px, env(safe-area-inset-left, 0px));
        padding-right: max(18px, env(safe-area-inset-right, 0px));
    }
}

@media (max-width: 900px) {
    .mt-hero .search-pill {
        flex-direction: column;
        border-radius: 12px;
    }

    .mt-hero .search-group {
        border-right: none;
        border-bottom: 1px solid rgba(255, 255, 255, 0.1);
        width: 100%;
        padding: 15px;
    }

    .mt-hero .btn-search {
        width: 100%;
        border-radius: 8px;
        margin: 15px 0 0 0;
    }
}

@media (max-width: 768px) {
    .mt-hero {
        height: auto;
        padding: calc(110px + env(safe-area-inset-top, 0px)) 0 100px;
        min-height: unset;
    }

    .mt-hero h1 {
        font-size: 41.6px;
        margin-bottom: 25px;
        line-height: 1.1;
    }

    .mt-hero p {
        font-size: 16px;
        margin-bottom: 40px;
    }

    .mt-hero .search-pill {
        flex-direction: column;
        gap: 12px;
        background: transparent;
        box-shadow: none;
        border: none;
        padding: 0;
    }

    .mt-hero .search-pill .search-group {
        background: rgba(255, 255, 255, 0.95);
        width: 100%;
        border-radius: 12px;
        border: 1px solid rgba(0, 0, 0, 0.05);
        padding: 12px 20px;
        margin-bottom: 0;
        box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
    }

    .mt-hero .search-pill .search-group label { color: var(--mt-text-mute); }
    .mt-hero .search-pill .search-group select { color: var(--mt-text-dark); background: transparent; }
    .mt-hero .search-pill .search-group select option { background: #fff; }

    .mt-hero .search-pill .btn-search {
        width: 100%;
        height: 56px;
        border-radius: 16px;
        margin-left: 0;
        margin-top: 5px;
    }
}

@media (max-width: 600px) {
    .mt-hero h1 { font-size: 38.4px; }
}

/* ==========================================================================
   7. EXQUISITE JOURNEYS  (the design's "deals" grid)
   --------------------------------------------------------------------------
   Cards come from the CMS: packages flagged "view in home". Scoped under
   .mt-journeys for the same reason as every other section — .deals, .deal-card,
   .section-header and the bare `section { padding: 140px 0 }` are all names the
   legacy theme also owns. Inner class names are the design's.
   ========================================================================== */

.mt-journeys {
    /* the design's bare `section { padding: 140px 0 }` */
    padding: 140px 0;
    background-color: var(--mt-bg-body);
    font-family: 'Poppins', sans-serif;
    font-size: 16px;
    line-height: 1.7;
    color: var(--mt-text-dark);
}

.mt-journeys *,
.mt-journeys *::before,
.mt-journeys *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* same inheritance guard as the header/footer — see section 1 */
.mt-journeys *:not(input):not(button):not(select):not(textarea) {
    font-family: inherit;
    line-height: inherit;
}

.mt-journeys a {
    text-decoration: none;
    color: inherit;
    transition: var(--mt-transition);
}

.mt-journeys .container {
    max-width: 1320px;
    width: 100%;
    margin: 0 auto;
    padding: 0 40px;
}

/* --- section header --- */
.mt-journeys .section-header {
    text-align: center;
    margin-bottom: 70px;
}

.mt-journeys .overline {
    display: inline-block;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.25em;
    color: var(--mt-primary);
    font-weight: 600;
    margin-bottom: 16px;
}

.mt-journeys .section-header h2 {
    font-size: 48px;
    color: var(--mt-text-dark);
    margin-bottom: 18px;
    letter-spacing: -0.02em;
    font-weight: 600;
}

.mt-journeys .section-header p {
    color: var(--mt-text-mute);
    font-size: 17.6px;
    font-weight: 300;
    max-width: 600px;
    margin: 0 auto;
}

/* --- grid --- */
.mt-journeys .deals-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 40px;
}

.mt-journeys .deal-card {
    background: transparent;
    display: flex;
    flex-direction: column;
    position: relative;
    cursor: pointer;
}

.mt-journeys .deal-img {
    height: 480px;
    position: relative;
    overflow: hidden;
    margin-bottom: 30px;
    border-radius: 8px;
    box-shadow: var(--mt-shadow-elegant);
    transition: var(--mt-transition);
}

.mt-journeys .deal-card:hover .deal-img {
    box-shadow: var(--mt-shadow-hover);
}

.mt-journeys .deal-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 1.2s cubic-bezier(0.16, 1, 0.3, 1);
}

.mt-journeys .deal-card:hover .deal-img img {
    transform: scale(1.05);
}

.mt-journeys .deal-badge {
    position: absolute;
    top: 24px;
    left: 24px;
    background: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
    padding: 8px 16px;
    border-radius: 50px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.1em;
    color: var(--mt-text-dark);
    text-transform: uppercase;
    z-index: 2;
}

/* partner lockup, bottom-right of the image (inline styles in the design) */
.mt-journeys .deal-partner {
    position: absolute;
    bottom: 24px;
    right: 24px;
    background: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
    padding: 6px 12px;
    border-radius: 50px;
    display: flex;
    align-items: center;
    gap: 8px;
    z-index: 2;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
    border: 1px solid rgba(0, 0, 0, 0.05);
}

.mt-journeys .deal-partner span {
    font-size: 10.4px;
    font-weight: 700;
    color: #111827;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    white-space: nowrap;
}

.mt-journeys .deal-partner img {
    height: 14px;
    width: auto;
    object-fit: contain;
}

/* --- card content --- */
.mt-journeys .deal-content {
    flex-grow: 1;
    display: flex;
    flex-direction: column;
}

.mt-journeys .deal-location {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    color: var(--mt-text-light);
    margin-bottom: 10px;
    font-weight: 500;
}

.mt-journeys .deal-content h3 {
    font-size: 24px;
    line-height: 1.3;
    margin-bottom: 12px;
    transition: color 0.3s ease;
    color: var(--mt-text-dark);
    font-weight: 600;
}

.mt-journeys .deal-card:hover .deal-content h3 {
    color: var(--mt-primary);
}

.mt-journeys .deal-footer {
    margin-top: 15px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.mt-journeys .price-block {
    display: flex;
    flex-direction: column;
}

.mt-journeys .price-label {
    font-size: 10.4px;
    text-transform: uppercase;
    color: var(--mt-text-light);
    letter-spacing: 0.1em;
    margin-bottom: 2px;
    font-weight: 600;
}

.mt-journeys .price-value {
    font-size: 20.8px;
    font-weight: 600;
    color: var(--mt-text-dark);
}

.mt-journeys .arrow-link {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    border: 1px solid var(--mt-border-soft);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--mt-text-dark);
    transition: var(--mt-transition);
    flex-shrink: 0;
}

.mt-journeys .deal-card:hover .arrow-link {
    background-color: var(--mt-primary);
    border-color: var(--mt-primary);
    color: #fff;
    transform: rotate(-45deg);
}

/* --- footer CTA --- */
.mt-journeys .journeys-cta {
    text-align: center;
    margin-top: 80px;
}

.mt-journeys .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 18px 46px;
    font-size: 12.8px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    border-radius: 4px;
    border: none;
    transition: var(--mt-transition);
    cursor: pointer;
    position: relative;
    overflow: hidden;
    text-decoration: none;
}

.mt-journeys .btn::after {
    content: '\2192';
    font-size: 1.2em;
    font-weight: 400;
    transition: transform 0.4s ease;
    position: static;
    background: none;
    width: auto;
    height: auto;
    transform: none;
}

.mt-journeys .btn:hover::after {
    transform: translateX(6px);
    width: auto;
}

/* the design sets the dark colour inline on this button */
.mt-journeys .btn-outline {
    background-color: transparent;
    color: var(--mt-text-dark);
    border: 1px solid var(--mt-text-dark);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}

.mt-journeys .btn-outline:hover {
    background-color: #fff;
    color: var(--mt-text-dark);
    transform: translateY(-2px);
}

/* --- responsive (breakpoints exactly as the design) --- */
@media (max-width: 900px) {
    .mt-journeys .deals-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 768px) {
    .mt-journeys {
        padding: 80px 0;
    }

    .mt-journeys .section-header h2 {
        font-size: 35.2px;
    }

    .mt-journeys .deals-grid {
        grid-template-columns: minmax(0, 1fr);
        gap: 30px;
    }

    .mt-journeys .deal-img {
        height: 300px;
    }

    .mt-journeys .container {
        padding-left: max(18px, env(safe-area-inset-left, 0px));
        padding-right: max(18px, env(safe-area-inset-right, 0px));
    }
}

@media (max-width: 600px) {
    .mt-journeys .deals-grid {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* Whole card is clickable, as in the design (which used an inline onclick).
   A stretched overlay on the title link keeps it a real link for keyboard and
   screen-reader users instead of a JS-only click target. */
.mt-journeys .deal-content h3 a::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 1;
}

.mt-journeys .arrow-link {
    position: relative;
    z-index: 2;
}

/* ==========================================================================
   8. WHY CHOOSE US  (split layout, deep cerulean, floating organic images)
   --------------------------------------------------------------------------
   Scoped under .mt-why for the same reason as every other section. The four
   design images were JPEGs shipped with a .png extension at 1024x1024 (3.7MB
   total); they are re-encoded as WebP at the size they actually render (324KB).
   ========================================================================== */

.mt-why {
    background: linear-gradient(rgba(12, 89, 135, 0.94), rgba(12, 89, 135, 0.94)), url('/mastertravelegy/img/travel-pattern.webp');
    background-size: 800px;
    background-repeat: repeat;
    background-attachment: fixed;
    padding: 130px 0;
    overflow: hidden;
    position: relative;
    font-family: 'Poppins', sans-serif;
    font-size: 16px;
    line-height: 1.7;
}

.mt-why *,
.mt-why *::before,
.mt-why *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* same inheritance guard as the header/footer — see section 1 */
.mt-why *:not(input):not(button):not(select):not(textarea) {
    font-family: inherit;
    line-height: inherit;
}

.mt-why a {
    text-decoration: none;
    color: inherit;
    transition: var(--mt-transition);
}

.mt-why .container {
    max-width: 1320px;
    width: 100%;
    margin: 0 auto;
    padding: 0 40px;
    position: relative;
    z-index: 2;
}

/* ambient cyan glow */
.mt-why::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 100%;
    height: 100%;
    background: radial-gradient(circle at center, rgba(65, 171, 221, 0.12) 0%, transparent 75%);
    transform: translate(-50%, -50%);
    pointer-events: none;
}

.mt-why .choose-layout {
    display: flex;
    align-items: center;
    gap: 80px;
}

.mt-why .choose-content {
    flex: 1;
    max-width: 500px;
}

/* --- left: title + benefits --- */
.mt-why .section-title-left {
    margin-bottom: 50px;
}

.mt-why .section-title-left .sub-title {
    font-family: 'Great Vibes', 'Dancing Script', cursive;
    font-size: 38.4px;
    color: var(--mt-primary);
    display: inline-block;
    margin-bottom: 2px;
    font-weight: 400;
}

.mt-why .section-title-left h2 {
    font-size: 44.8px;
    line-height: 1.15;
    color: #ffffff;
    letter-spacing: -0.02em;
    position: relative;
    padding-bottom: 24px;
    font-weight: 600;
}

.mt-why .section-title-left h2::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 160px;
    height: 4px;
    background: var(--mt-primary);
    border-radius: 4px;
}

.mt-why .benefits-list {
    display: flex;
    flex-direction: column;
    gap: 40px;
    margin-bottom: 50px;
}

.mt-why .benefit-item {
    display: flex;
    align-items: flex-start;
    gap: 24px;
}

.mt-why .benefit-icon {
    width: 75px;
    height: 75px;
    background: rgba(255, 255, 255, 0.05);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    box-shadow: 0 15px 40px rgba(0, 0, 0, 0.2);
    transition: transform 0.4s ease;
    position: relative;
    z-index: 2;
}

.mt-why .benefit-icon:hover {
    background: rgba(255, 255, 255, 0.1);
    border-color: var(--mt-primary);
}

.mt-why .benefit-icon svg {
    width: 28px;
    height: 28px;
    stroke: var(--mt-primary);
    fill: none;
    stroke-width: 1.5;
    stroke-linecap: round;
}

.mt-why .benefit-text h4 {
    font-size: 18.4px;
    color: #ffffff;
    margin-bottom: 6px;
    font-weight: 600;
}

.mt-why .benefit-text p {
    font-size: 15.2px;
    color: rgba(255, 255, 255, 0.6);
    line-height: 1.6;
}

/* --- CTA (bootstrap owns .btn/.btn-primary, so scope hard) --- */
.mt-why .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 18px 46px;
    font-size: 12.8px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    border-radius: 4px;
    border: none;
    transition: var(--mt-transition);
    cursor: pointer;
    position: relative;
    overflow: hidden;
    text-decoration: none;
    margin-top: 10px;
}

.mt-why .btn::after {
    content: '\2192';
    font-size: 1.2em;
    font-weight: 400;
    transition: transform 0.4s ease;
    position: static;
    background: none;
    width: auto;
    height: auto;
    transform: none;
}

.mt-why .btn:hover::after {
    transform: translateX(6px);
    width: auto;
}

.mt-why .btn-primary {
    background-color: var(--mt-primary);
    color: #fff;
    box-shadow: 0 10px 20px rgba(65, 171, 221, 0.15);
}

.mt-why .btn-primary:hover {
    background-color: var(--mt-primary-hover);
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 15px 25px rgba(65, 171, 221, 0.25);
}

/* --- right: floating imagery --- */
.mt-why .choose-graphics {
    flex: 1;
    position: relative;
    height: 600px;
    z-index: 5;
}

/* glassmorphic aura behind the images */
.mt-why .choose-graphics::after {
    content: '';
    position: absolute;
    top: 15%;
    right: -10%;
    width: 120%;
    height: 70%;
    background: radial-gradient(circle at center, rgba(65, 171, 221, 0.1) 0%, transparent 70%);
    filter: blur(40px);
    z-index: -1;
    pointer-events: none;
}

.mt-why .circle-img {
    position: absolute;
    background-size: cover;
    background-position: center;
    border: 2px solid rgba(255, 255, 255, 0.3);
    box-shadow: 0 40px 100px rgba(0, 0, 0, 0.3), 0 0 40px rgba(65, 171, 221, 0.2);
    transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    animation: mt-float-shape 6s ease-in-out infinite;
    filter: brightness(1.2) contrast(1.1);
    z-index: 2;
}

.mt-why .img-large {
    width: 320px;
    height: 320px;
    top: 20px;
    right: 0;
    border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%;
    animation-delay: 0s;
}

.mt-why .img-medium {
    width: 240px;
    height: 240px;
    bottom: 40px;
    left: 20px;
    border-radius: 30% 60% 70% 40% / 50% 60% 30% 60%;
    animation-delay: -2s;
    z-index: 3;
}

.mt-why .img-small {
    width: 160px;
    height: 160px;
    bottom: -20px;
    right: 80px;
    border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%;
    animation-delay: -4s;
    z-index: 4;
}

@keyframes mt-float-shape {
    0%, 100% { transform: translateY(0) rotate(0deg); }
    50% { transform: translateY(-20px) rotate(3deg); }
}

.mt-why .circle-img:hover {
    transform: scale(1.08) rotate(-3deg);
    border-color: var(--mt-primary);
    filter: brightness(1.3) contrast(1.1);
    z-index: 10;
    border-radius: 50%;
}

.mt-why .flight-path {
    position: absolute;
    top: 150px;
    left: -40px;
    width: 450px;
    height: 350px;
    z-index: -1;
}

/* the float is purely decorative — respect a reduced-motion preference */
@media (prefers-reduced-motion: reduce) {
    .mt-why .circle-img {
        animation: none;
    }
}

/* --- responsive (breakpoints exactly as the design) --- */
@media (max-width: 1024px) {
    .mt-why .choose-layout {
        flex-direction: column;
    }

    .mt-why .choose-graphics {
        width: 100%;
        height: 500px;
        margin-top: 40px;
    }

    .mt-why .section-title-left {
        text-align: center;
    }

    .mt-why .section-title-left h2::after {
        left: 50%;
        transform: translateX(-50%);
    }

    .mt-why .benefit-item {
        text-align: left;
    }

    .mt-why .img-large { right: 20px; width: 250px; height: 250px; }
    .mt-why .img-medium { left: 0; width: 180px; height: 180px; }
    .mt-why .img-small { right: 40px; width: 120px; height: 120px; }

    .mt-why .container {
        padding-left: max(18px, env(safe-area-inset-left, 0px));
        padding-right: max(18px, env(safe-area-inset-right, 0px));
    }

    /* fixed attachment is janky and expensive on touch devices */
    .mt-why {
        background-attachment: scroll;
    }
}

@media (max-width: 768px) {
    .mt-why {
        padding: 80px 0;
    }

    .mt-why .choose-layout {
        gap: 60px;
    }

    .mt-why .choose-graphics {
        display: none;
    }

    .mt-why .section-title-left h2 {
        font-size: 35.2px;
    }
}

/* ==========================================================================
   9. ICONIC DESTINATIONS
   --------------------------------------------------------------------------
   Cards are the CMS destinations flagged "view in home". Scoped under
   .mt-destinations for the same reason as every other section.
   ========================================================================== */

.mt-destinations {
    /* the design's bare `section { padding: 140px 0 }` */
    padding: 140px 0;
    background: var(--mt-bg-mute);
    font-family: 'Poppins', sans-serif;
    font-size: 16px;
    line-height: 1.7;
    color: var(--mt-text-dark);
}

.mt-destinations *,
.mt-destinations *::before,
.mt-destinations *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* same inheritance guard as the header/footer — see section 1 */
.mt-destinations *:not(input):not(button):not(select):not(textarea) {
    font-family: inherit;
    line-height: inherit;
}

.mt-destinations a {
    text-decoration: none;
    color: inherit;
    transition: var(--mt-transition);
}

.mt-destinations .container {
    max-width: 1320px;
    width: 100%;
    margin: 0 auto;
    padding: 0 40px;
}

/* --- section header --- */
.mt-destinations .section-header {
    text-align: center;
    margin-bottom: 70px;
}

.mt-destinations .overline {
    display: inline-block;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.25em;
    color: var(--mt-primary);
    font-weight: 600;
    margin-bottom: 16px;
}

.mt-destinations .section-header h2 {
    font-size: 48px;
    color: var(--mt-text-dark);
    margin-bottom: 18px;
    letter-spacing: -0.02em;
    font-weight: 600;
}

/* --- grid --- */
.mt-destinations .dest-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 30px;
}

.mt-destinations .dest-box {
    position: relative;
    height: 400px;
    border-radius: 8px;
    overflow: hidden;
    display: block;
    /* shows through when a destination has no image in the CMS yet */
    background: var(--mt-secondary);
}

.mt-destinations .dest-box img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 1.2s cubic-bezier(0.16, 1, 0.3, 1);
}

.mt-destinations .dest-box::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(0deg, rgba(0, 0, 0, 0.7) 0%, rgba(0, 0, 0, 0) 50%);
    transition: var(--mt-transition);
}

.mt-destinations .dest-box:hover img {
    transform: scale(1.05);
}

.mt-destinations .dest-title-wrapper {
    position: absolute;
    bottom: 40px;
    left: 40px;
    z-index: 2;
    transition: transform 0.4s ease;
}


.mt-destinations .dest-title {
    color: #fff;
    font-size: 44.8px;
    font-weight: 600;
    letter-spacing: -0.02em;
    margin-bottom: 5px;
}



/* the hover-only CTA must still be reachable by keyboard */

/* --- responsive (breakpoints exactly as the design) --- */
@media (max-width: 1200px) {
    .mt-destinations .dest-box {
        height: 340px;
    }
}

@media (max-width: 900px) {
    .mt-destinations .dest-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 768px) {
    .mt-destinations {
        padding: 80px 0;
    }

    .mt-destinations .section-header h2 {
        font-size: 35.2px;
    }

    .mt-destinations .container {
        padding-left: max(18px, env(safe-area-inset-left, 0px));
        padding-right: max(18px, env(safe-area-inset-right, 0px));
    }
}

@media (max-width: 600px) {
    .mt-destinations .dest-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .mt-destinations .dest-title-wrapper {
        bottom: 28px;
        left: 28px;
    }

    .mt-destinations .dest-title {
        font-size: 35.2px;
    }
}

/* ==========================================================================
   10. VIP AIRPORT EXPERIENCE
   --------------------------------------------------------------------------
   Editorial block — heading, copy and imagery are the design's, with no CMS
   fields behind them. Scoped under .mt-vip like every other section.
   ========================================================================== */

.mt-vip {
    background: linear-gradient(135deg, #051622 0%, #0c5987 100%);
    padding: 160px 0;
    color: #fff;
    position: relative;
    overflow: hidden;
    z-index: 10;
    font-family: 'Poppins', sans-serif;
    font-size: 16px;
    line-height: 1.7;
}

.mt-vip *,
.mt-vip *::before,
.mt-vip *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* same inheritance guard as the header/footer — see section 1 */
.mt-vip *:not(input):not(button):not(select):not(textarea) {
    font-family: inherit;
    line-height: inherit;
}

.mt-vip a {
    text-decoration: none;
    color: inherit;
    transition: var(--mt-transition);
}

.mt-vip::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: url('/mastertravelegy/img/travel-pattern.webp');
    background-size: 800px;
    opacity: 0.04;
    pointer-events: none;
}

.mt-vip .container {
    max-width: 1320px;
    width: 100%;
    margin: 0 auto;
    padding: 0 40px;
    position: relative;
    z-index: 2;
}

/* --- heading --- */
.mt-vip .vip-heading {
    text-align: center;
    margin-bottom: 70px;
}

.mt-vip .vip-signature {
    font-family: 'Great Vibes', cursive;
    font-size: 56px;
    color: var(--mt-primary);
    display: block;
    margin-bottom: -15px;
    font-weight: 400;
    text-shadow: 0 0 20px rgba(65, 171, 221, 0.3);
}

.mt-vip .vip-heading h2 {
    font-size: 51.2px;
    color: #fff;
    letter-spacing: -0.01em;
    font-weight: 600;
}

/* --- split layout --- */
.mt-vip .vip-airport-layout {
    display: flex;
    align-items: center;
    gap: 80px;
    max-width: 1200px;
    margin: 0 auto;
}

.mt-vip .vip-visual-side {
    flex: 1;
    position: relative;
}

.mt-vip .vip-visual-side img {
    width: 100%;
    height: auto;
    border-radius: 40px;
    box-shadow: 0 50px 100px rgba(0, 0, 0, 0.5);
    border: 1px solid rgba(255, 255, 255, 0.1);
    transition: var(--mt-transition);
    display: block;
}

.mt-vip .vip-visual-side::after {
    content: '';
    position: absolute;
    inset: -20px;
    border: 2px solid rgba(65, 171, 221, 0.2);
    border-radius: 60px;
    z-index: -1;
    transition: var(--mt-transition);
}

.mt-vip .vip-visual-side:hover img {
    transform: scale(1.02);
    border-color: var(--mt-primary);
}

.mt-vip .vip-visual-side:hover::after {
    inset: -10px;
    border-color: var(--mt-primary);
}

.mt-vip .vip-content-side {
    flex: 1;
    text-align: left;
}

.mt-vip .vip-description-block {
    background: rgba(255, 255, 255, 0.03);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 30px;
    padding: 60px;
    position: relative;
}

.mt-vip .vip-text-en {
    font-size: 17.6px;
    line-height: 1.7;
    color: rgba(255, 255, 255, 0.7);
    font-weight: 300;
    margin-bottom: 40px;
}

/* --- CTA (bootstrap owns .btn/.btn-primary, so scope hard) --- */
.mt-vip .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 18px 46px;
    font-size: 12.8px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    border-radius: 4px;
    border: none;
    transition: var(--mt-transition);
    cursor: pointer;
    position: relative;
    overflow: hidden;
    text-decoration: none;
}

.mt-vip .btn::after {
    content: '\2192';
    font-size: 1.2em;
    font-weight: 400;
    transition: transform 0.4s ease;
    position: static;
    background: none;
    width: auto;
    height: auto;
    transform: none;
}

.mt-vip .btn:hover::after {
    transform: translateX(6px);
    width: auto;
}

.mt-vip .btn-vip {
    background: transparent;
    color: #fff;
    border: 1px solid var(--mt-primary);
    box-shadow: 0 0 20px rgba(65, 171, 221, 0.2);
    width: fit-content;
}

.mt-vip .btn-vip:hover {
    background: var(--mt-primary);
    color: #fff;
    box-shadow: 0 0 40px rgba(65, 171, 221, 0.4);
}

/* --- responsive (breakpoints exactly as the design) --- */
@media (max-width: 1024px) {
    .mt-vip .vip-airport-layout {
        flex-direction: column;
        gap: 60px;
    }

    .mt-vip .vip-visual-side {
        width: 100%;
        max-width: 600px;
    }

    .mt-vip .vip-content-side {
        width: 100%;
    }

    .mt-vip .vip-description-block {
        padding: 40px;
    }

    .mt-vip .container {
        padding-left: max(18px, env(safe-area-inset-left, 0px));
        padding-right: max(18px, env(safe-area-inset-right, 0px));
    }
}

@media (max-width: 768px) {
    .mt-vip {
        padding: 100px 0;
    }

    .mt-vip .vip-signature {
        font-size: 40px;
    }

    .mt-vip .vip-heading h2 {
        font-size: 35.2px;
    }

    .mt-vip .vip-text-en {
        font-size: 16px;
    }
}

/* ==========================================================================
   11. TRAVELERS TESTIMONIALS
   --------------------------------------------------------------------------
   Slides come from the CMS reviews. Scoped under .mt-reviews like every other
   section. The blob image reuses the float keyframe defined in section 8.
   ========================================================================== */

.mt-reviews {
    background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%);
    padding: 120px 0;
    text-align: center;
    overflow: hidden;
    position: relative;
    font-family: 'Poppins', sans-serif;
    font-size: 16px;
    line-height: 1.7;
    color: var(--mt-text-dark);
}

.mt-reviews *,
.mt-reviews *::before,
.mt-reviews *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* same inheritance guard as the header/footer — see section 1 */
.mt-reviews *:not(input):not(button):not(select):not(textarea) {
    font-family: inherit;
    line-height: inherit;
}

.mt-reviews .container {
    max-width: 1320px;
    width: 100%;
    margin: 0 auto;
    padding: 0 40px;
    position: relative;
    z-index: 1;
}

/* subtle background decoration */
.mt-reviews::before {
    content: '';
    position: absolute;
    top: -10%;
    right: -5%;
    width: 400px;
    height: 400px;
    background: radial-gradient(circle, rgba(65, 171, 221, 0.05) 0%, transparent 70%);
    z-index: 0;
}

.mt-reviews .section-header h2 {
    font-size: 44.8px;
    color: var(--mt-secondary);
    margin-bottom: 20px;
    letter-spacing: -0.02em;
    font-weight: 600;
}

.mt-reviews .section-header p {
    color: var(--mt-text-mute);
    font-size: 17.6px;
    max-width: 600px;
    margin: 0 auto 80px;
    font-weight: 300;
}

/* --- split layout --- */
.mt-reviews .reviews-split-wrapper {
    display: flex;
    align-items: center;
    gap: 60px;
    max-width: 1200px;
    margin: 0 auto;
    text-align: left;
    position: relative;
    z-index: 1;
}

.mt-reviews .reviews-visual-side {
    flex: 1;
    height: 550px;
    position: relative;
}

.mt-reviews .reviews-visual-side img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%;
    box-shadow: 0 30px 60px rgba(12, 89, 135, 0.15);
    animation: mt-float-shape 8s ease-in-out infinite;
}

.mt-reviews .reviews-content-side {
    flex: 1.4;
    /* The slider track is `slides x 100%` wide (22 reviews = 2200%). Without this,
       the flex item is sized by that overflowing content instead of its 1.4
       share: the card blows past the container and squeezes the blob image to
       zero width. min-width:0 lets the item take its share, which gives the
       card a definite width so .slider-container can actually clip the track. */
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.mt-reviews .reviews-meta-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 25px;
    font-size: 14.4px;
    color: var(--mt-secondary);
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

.mt-reviews .meta-stars {
    color: var(--mt-primary);
    display: flex;
    align-items: center;
    gap: 8px;
}

/* --- card --- */
.mt-reviews .testimonial-card {
    background: rgba(255, 255, 255, 0.6);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border: 1px solid rgba(255, 255, 255, 0.4);
    border-radius: 24px;
    padding: 60px;
    position: relative;
    min-height: 400px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    box-shadow: 0 40px 100px rgba(12, 89, 135, 0.05);
}

.mt-reviews .quote-icon-large {
    color: var(--mt-primary);
    font-size: 80px;
    line-height: 1;
    margin-bottom: 10px;
    opacity: 0.3;
    font-family: serif;
}

.mt-reviews .slider-container {
    overflow: hidden;
    width: 100%;
}

.mt-reviews .slider-track {
    display: flex;
    /* slides must not stretch to the tallest one */
    align-items: flex-start;
    transition: transform 0.7s cubic-bezier(0.25, 1, 0.5, 1);
}

.mt-reviews .slide {
    min-width: 100%;
}

.mt-reviews .testimonial-body {
    font-size: 22.4px;
    /* CMS reviews run 33-1187 characters, while the design was drawn around
       ~200-character quotes. Unclamped, the single longest review sets the height
       of the flex row and the card grows to ~3x the designed size, leaving a huge
       void on every short slide. Clamping to five lines keeps each slide the
       designed height and adds its own ellipsis. */
    display: -webkit-box;
    -webkit-line-clamp: 5;
    -webkit-box-orient: vertical;
    overflow: hidden;
    color: var(--mt-secondary);
    margin-bottom: 50px;
    line-height: 1.6;
    font-weight: 300;
    font-style: italic;
}

.mt-reviews .reviewer-info-box h4 {
    color: var(--mt-secondary);
    margin-bottom: 4px;
    font-size: 17.6px;
    font-weight: 600;
}

.mt-reviews .reviewer-info-box p {
    color: var(--mt-primary);
    font-size: 13.6px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* --- controls --- */
.mt-reviews .slider-controls {
    position: absolute;
    bottom: 60px;
    right: 60px;
    display: flex;
    gap: 12px;
}

.mt-reviews .control-btn {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: var(--mt-transition);
    padding: 0;
}

.mt-reviews .btn-prev {
    border: 1px solid rgba(12, 89, 135, 0.1);
    color: var(--mt-secondary);
    background: rgba(255, 255, 255, 0.5);
}

.mt-reviews .btn-next {
    background: var(--mt-secondary);
    color: #fff;
    border: none;
    box-shadow: 0 10px 20px rgba(12, 89, 135, 0.2);
}

.mt-reviews .control-btn:hover {
    transform: translateY(-3px);
    box-shadow: 0 15px 30px rgba(12, 89, 135, 0.1);
}

/* a single review has nothing to page through */
.mt-reviews .slider-controls[hidden] {
    display: none;
}

/* --- responsive (breakpoints exactly as the design) --- */
@media (max-width: 1024px) {
    .mt-reviews .reviews-split-wrapper {
        flex-direction: column;
    }

    .mt-reviews .reviews-visual-side {
        width: 100%;
        height: 400px;
    }

    .mt-reviews .testimonial-card {
        padding: 40px;
    }

    .mt-reviews .slider-controls {
        right: 40px;
        bottom: 40px;
    }

    .mt-reviews .container {
        padding-left: max(18px, env(safe-area-inset-left, 0px));
        padding-right: max(18px, env(safe-area-inset-right, 0px));
    }
}

@media (max-width: 768px) {
    .mt-reviews {
        padding: 80px 0;
    }

    .mt-reviews .section-header h2 {
        font-size: 35.2px;
    }

    .mt-reviews .reviews-split-wrapper {
        flex-direction: column;
        gap: 50px;
        text-align: center;
    }

    .mt-reviews .reviews-visual-side {
        width: 100%;
        height: 320px;
        max-width: 320px;
        margin: 0 auto;
        order: -1;
    }

    .mt-reviews .reviews-visual-side img {
        border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%;
    }

    .mt-reviews .testimonial-card {
        padding: 40px 20px 90px;
        min-height: auto;
        text-align: center;
    }

    .mt-reviews .testimonial-body {
        font-size: 18.4px;
        margin-bottom: 40px;
        line-height: 1.5;
    }

    .mt-reviews .slider-controls {
        right: 50%;
        transform: translateX(50%);
        bottom: 30px;
        gap: 20px;
    }

    .mt-reviews .control-btn {
        width: 48px;
        height: 48px;
    }

    .mt-reviews .reviews-meta-row {
        flex-direction: column;
        gap: 12px;
        margin-bottom: 30px;
        align-items: center;
    }

    .mt-reviews .quote-icon-large {
        font-size: 64px;
        margin-bottom: 0;
    }
}

/* ==========================================================================
   12. EXQUISITE CLARIFICATIONS  (FAQ accordion)
   --------------------------------------------------------------------------
   Items come from the CMS FAQs. Scoped under .mt-faq like every other section.
   The blob image reuses the float keyframe defined in section 8.
   ========================================================================== */

.mt-faq {
    padding: 120px 0;
    background: #ffffff;
    position: relative;
    font-family: 'Poppins', sans-serif;
    font-size: 16px;
    line-height: 1.7;
    color: var(--mt-text-dark);
}

.mt-faq *,
.mt-faq *::before,
.mt-faq *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* same inheritance guard as the header/footer — see section 1 */
.mt-faq *:not(input):not(button):not(select):not(textarea) {
    font-family: inherit;
    line-height: inherit;
}

.mt-faq .container {
    max-width: 1320px;
    width: 100%;
    margin: 0 auto;
    padding: 0 40px;
}

/* --- section header --- */
.mt-faq .section-header {
    text-align: center;
    margin-bottom: 70px;
}

.mt-faq .overline {
    display: inline-block;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.25em;
    color: var(--mt-primary);
    font-weight: 600;
    margin-bottom: 16px;
}

.mt-faq .section-header h2 {
    font-size: 48px;
    color: var(--mt-text-dark);
    margin-bottom: 18px;
    letter-spacing: -0.02em;
    font-weight: 600;
}

.mt-faq .section-header p {
    color: var(--mt-text-mute);
    font-size: 17.6px;
    font-weight: 300;
    max-width: 600px;
    margin: 0 auto;
}

/* --- split layout --- */
.mt-faq .faq-split-wrapper {
    display: flex;
    align-items: flex-start;
    gap: 80px;
    max-width: 1200px;
    margin: 0 auto;
}

.mt-faq .faq-content-side {
    flex: 1.2;
    /* the accordion is the only thing that may size this column */
    min-width: 0;
}

.mt-faq .faq-visual-side {
    flex: 0.8;
    position: sticky;
    top: 120px;
}

.mt-faq .faq-visual-side img {
    width: 100%;
    height: auto;
    border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%;
    box-shadow: 0 40px 80px rgba(12, 89, 135, 0.1);
    animation: mt-float-shape 10s ease-in-out infinite alternate;
    display: block;
}

/* --- accordion --- */
.mt-faq .faq-accordion {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.mt-faq .faq-item {
    background: var(--mt-bg-mute);
    border: 1px solid var(--mt-border-soft);
    border-radius: 12px;
    overflow: hidden;
    transition: var(--mt-transition);
}

.mt-faq .faq-item.active {
    background: #ffffff;
    border-color: var(--mt-primary);
    box-shadow: 0 20px 40px rgba(65, 171, 221, 0.08);
}

.mt-faq .faq-header {
    padding: 24px 30px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    user-select: none;
    gap: 20px;
    /* it is a <button> in the markup so it works by keyboard */
    width: 100%;
    background: none;
    border: none;
    text-align: left;
    font: inherit;
    color: inherit;
}

.mt-faq .faq-header h4 {
    font-size: 16.8px;
    font-weight: 500;
    color: var(--mt-secondary);
    margin: 0;
}

.mt-faq .faq-icon {
    width: 20px;
    height: 20px;
    position: relative;
    transition: transform 0.4s ease;
    flex-shrink: 0;
    /* The legacy theme draws a completely different icon under this same
       class — a 37/46/52px beige circle holding a text "+" — and it sets
       properties the design never does, which leaked through and produced
       an oval pill behind a displaced bar. Neutralise each one. */
    min-width: 20px;
    border-radius: 0;
    background: none;
    display: block;
}

.mt-faq .faq-icon::before,
.mt-faq .faq-icon::after {
    content: '';
    position: absolute;
    background: var(--mt-primary);
    transition: transform 0.4s ease;
    /* the legacy ::before is a centred text glyph — its translate(-50%,-50%)
       and font metrics would otherwise shift and inflate these two bars */
    transform: none;
    font-size: 0;
    line-height: 0;
    border-radius: 0;
}

.mt-faq .faq-icon::before {
    width: 100%;
    height: 2px;
    top: 50%;
    left: 0;
    margin-top: -1px;
}

.mt-faq .faq-icon::after {
    width: 2px;
    height: 100%;
    left: 50%;
    top: 0;
    margin-left: -1px;
}

.mt-faq .faq-item.active .faq-icon {
    transform: rotate(45deg);
}

.mt-faq .faq-body {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.5s cubic-bezier(0, 1, 0, 1);
}

.mt-faq .faq-item.active .faq-body {
    max-height: 1000px;
    transition: max-height 1s ease-in-out;
}

.mt-faq .faq-content {
    padding: 0 30px 30px;
    color: var(--mt-text-mute);
    font-size: 15.2px;
    line-height: 1.8;
    font-weight: 300;
}

/* CMS answers are rich text, so keep their inner markup readable */
.mt-faq .faq-content p {
    margin: 0 0 12px;
}

.mt-faq .faq-content p:last-child {
    margin-bottom: 0;
}

.mt-faq .faq-content ul,
.mt-faq .faq-content ol {
    margin: 0 0 12px;
    padding-left: 20px;
    list-style: revert;
}

.mt-faq .faq-content li {
    margin-bottom: 6px;
}

.mt-faq .faq-content a {
    color: var(--mt-primary);
    text-decoration: underline;
}

.mt-faq .faq-content strong,
.mt-faq .faq-content b {
    font-weight: 600;
    color: var(--mt-secondary);
}

/* --- responsive (breakpoints exactly as the design) --- */
@media (max-width: 1024px) {
    .mt-faq .faq-split-wrapper {
        flex-direction: column;
        gap: 60px;
    }

    .mt-faq .faq-visual-side {
        position: relative;
        top: 0;
        width: 100%;
        max-width: 500px;
        margin: 0 auto;
    }

    .mt-faq .container {
        padding-left: max(18px, env(safe-area-inset-left, 0px));
        padding-right: max(18px, env(safe-area-inset-right, 0px));
    }
}

@media (max-width: 768px) {
    .mt-faq {
        padding: 80px 0;
    }

    .mt-faq .section-header h2 {
        font-size: 35.2px;
    }

    .mt-faq .faq-header {
        padding: 14px 16px;
    }

    .mt-faq .faq-content {
        padding: 0 16px 20px;
    }
}

/* --------------------------------------------------------------------------
   FAQ open-state guard.

   The accordion needs aria-expanded for keyboard/screen-reader users, but the
   legacy theme hooks its OWN icon design off that exact attribute:

     .faq-header[aria-expanded="true"] .faq-icon         { background:#3E3E3E }
     .faq-header[aria-expanded="true"] .faq-icon::before { content:"−"; color:#fff; font-size:24px; top:43% }

   At (0,3,0) those outrank the base rules above (0,2,0), so an open item got a
   dark block behind the rotated cross and a text glyph injected into it.
   Restate the design's two bars for the open state at (0,4,0).
   -------------------------------------------------------------------------- */
.mt-faq .faq-header[aria-expanded="true"] .faq-icon {
    background: none;
    border-radius: 0;
}

.mt-faq .faq-header[aria-expanded="true"] .faq-icon::before {
    content: '';
    width: 100%;
    height: 2px;
    top: 50%;
    left: 0;
    margin-top: -1px;
    background: var(--mt-primary);
    color: transparent;
    font-size: 0;
    line-height: 0;
    transform: none;
}

.mt-faq .faq-header[aria-expanded="true"] .faq-icon::after {
    content: '';
    width: 2px;
    height: 100%;
    top: 0;
    left: 50%;
    margin-left: -1px;
    margin-top: 0;
    background: var(--mt-primary);
    color: transparent;
    font-size: 0;
    line-height: 0;
    transform: none;
}

/* The legacy .faq-body carries padding (28px 28px 30px, plus breakpoint
   variants). The design puts all padding on .faq-content instead, and the body
   must collapse to exactly zero height — any inherited padding leaves a visible
   sliver on closed items. Stated explicitly so it cannot depend on file order. */
.mt-faq .faq-body {
    padding: 0;
}

/* ==========================================================================
   13. VISA SERVICES  (call-to-action banner)
   --------------------------------------------------------------------------
   Static editorial banner. Scoped under .mt-visa like every other section.
   ========================================================================== */

.mt-visa {
    background: linear-gradient(rgba(12, 89, 135, 0.85), rgba(12, 89, 135, 0.85)), url('/mastertravelegy/img/visa-services.webp');
    background-size: cover;
    background-position: center;
    background-attachment: fixed;
    color: #fff;
    padding: 160px 0;
    text-align: center;
    position: relative;
    overflow: hidden;
    font-family: 'Poppins', sans-serif;
    font-size: 16px;
    line-height: 1.7;
}

.mt-visa *,
.mt-visa *::before,
.mt-visa *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* same inheritance guard as the header/footer — see section 1 */
.mt-visa *:not(input):not(button):not(select):not(textarea) {
    font-family: inherit;
    line-height: inherit;
}

.mt-visa a {
    text-decoration: none;
    color: inherit;
    transition: var(--mt-transition);
}

.mt-visa .container {
    max-width: 1320px;
    width: 100%;
    margin: 0 auto;
    padding: 0 40px;
    position: relative;
    z-index: 2;
}

/* the design sets this colour inline on the overline */
.mt-visa .overline {
    display: inline-block;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.25em;
    color: rgba(255, 255, 255, 0.5);
    font-weight: 600;
    margin-bottom: 16px;
}

.mt-visa h2 {
    color: #fff;
    font-size: 56px;
    margin-bottom: 20px;
    letter-spacing: -0.02em;
    font-weight: 600;
}

.mt-visa p {
    color: rgba(255, 255, 255, 0.7);
    font-size: 17.6px;
    font-weight: 300;
    margin-bottom: 40px;
    max-width: 600px;
    margin-left: auto;
    margin-right: auto;
}

/* --- CTA (bootstrap owns .btn/.btn-primary, so scope hard) --- */
.mt-visa .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 18px 46px;
    font-size: 12.8px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    border-radius: 4px;
    border: none;
    transition: var(--mt-transition);
    cursor: pointer;
    position: relative;
    overflow: hidden;
    text-decoration: none;
}

.mt-visa .btn::after {
    content: '\2192';
    font-size: 1.2em;
    font-weight: 400;
    transition: transform 0.4s ease;
    position: static;
    background: none;
    width: auto;
    height: auto;
    transform: none;
}

.mt-visa .btn:hover::after {
    transform: translateX(6px);
    width: auto;
}

.mt-visa .btn-primary {
    background-color: var(--mt-primary);
    color: #fff;
    box-shadow: 0 10px 20px rgba(65, 171, 221, 0.15);
}

.mt-visa .btn-primary:hover {
    background-color: var(--mt-primary-hover);
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 15px 25px rgba(65, 171, 221, 0.25);
}

@media (max-width: 1024px) {
    /* fixed attachment is janky and expensive on touch devices */
    .mt-visa {
        background-attachment: scroll;
    }

    .mt-visa .container {
        padding-left: max(18px, env(safe-area-inset-left, 0px));
        padding-right: max(18px, env(safe-area-inset-right, 0px));
    }
}

@media (max-width: 768px) {
    .mt-visa {
        padding: 100px 0;
    }

    .mt-visa h2 {
        font-size: 32px;
    }

    .mt-visa p {
        font-size: 16px;
    }
}

/* ==========================================================================
   14. SIGNATURE BRANDS  (partner logo row)
   --------------------------------------------------------------------------
   The design styles this section entirely with inline styles; they are lifted
   into real rules here so the markup stays clean and responsive.
   ========================================================================== */

.mt-brands {
    padding: 100px 0;
    background: #ffffff;
    border-top: 1px solid #edf2f7;
    font-family: 'Poppins', sans-serif;
    font-size: 16px;
    line-height: 1.7;
}

.mt-brands *,
.mt-brands *::before,
.mt-brands *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* same inheritance guard as the header/footer — see section 1 */
.mt-brands *:not(input):not(button):not(select):not(textarea) {
    font-family: inherit;
    line-height: inherit;
}

.mt-brands .container {
    max-width: 1320px;
    width: 100%;
    margin: 0 auto;
    padding: 0 40px;
}

.mt-brands .brands-heading {
    text-align: center;
    margin-bottom: 60px;
}

.mt-brands .brands-heading h2 {
    font-size: 40px;
    color: #0c5987;
    margin-bottom: 20px;
    letter-spacing: -0.02em;
    font-weight: 600;
}

.mt-brands .brands-rule {
    width: 80px;
    height: 3px;
    background: #41abdd;
    margin: 0 auto;
    border-radius: 2px;
}

.mt-brands .brands-row {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 60px;
    opacity: 0.8;
}

.mt-brands .brands-row img {
    height: 50px;
    width: auto;
    object-fit: contain;
}

@media (max-width: 1024px) {
    .mt-brands .container {
        padding-left: max(18px, env(safe-area-inset-left, 0px));
        padding-right: max(18px, env(safe-area-inset-right, 0px));
    }
}

@media (max-width: 768px) {
    .mt-brands {
        padding: 70px 0;
    }

    .mt-brands .brands-heading h2 {
        font-size: 30px;
    }

    .mt-brands .brands-row {
        gap: 36px;
    }

    .mt-brands .brands-row img {
        height: 38px;
    }
}

/* ==========================================================================
   15. PLAN MY TRIP WIZARD  (master/plan-trip.html)
   --------------------------------------------------------------------------
   Three-step enquiry wizard over a full-bleed video cover. Scoped under
   .mt-plan like every other section.
   ========================================================================== */

.mt-plan {
    position: relative;
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 120px 20px 40px;
    overflow: hidden;
    font-family: 'Poppins', sans-serif;
    font-size: 16px;
    line-height: 1.7;
    color: var(--mt-text-dark);
}

.mt-plan *,
.mt-plan *::before,
.mt-plan *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* same inheritance guard as the header/footer — see section 1 */
.mt-plan *:not(input):not(button):not(select):not(textarea) {
    font-family: inherit;
    line-height: inherit;
}

.mt-plan .cover-video {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 0;
}

.mt-plan .cover-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(135deg, rgba(12, 89, 135, 0.7) 0%, rgba(17, 24, 39, 0.85) 100%);
    z-index: 1;
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}

/* --- card --- */
.mt-plan .wizard-card {
    position: relative;
    z-index: 2;
    background: rgba(255, 255, 255, 0.98);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border-radius: 12px;
    padding: 60px;
    width: 100%;
    max-width: 800px;
    box-shadow: 0 40px 100px rgba(0, 0, 0, 0.5);
    border: 1px solid rgba(255, 255, 255, 0.2);
}

/* --- progress --- */
.mt-plan .progress-bar {
    display: flex;
    justify-content: space-between;
    margin-bottom: 50px;
    position: relative;
    max-width: 80%;
    margin-left: auto;
    margin-right: auto;
}

.mt-plan .progress-bar::before {
    content: '';
    position: absolute;
    top: 12px;
    left: 0;
    right: 0;
    height: 2px;
    background: var(--mt-bg-mute);
    z-index: 1;
}

.mt-plan .progress-fill {
    position: absolute;
    top: 12px;
    left: 0;
    height: 2px;
    background: var(--mt-primary);
    z-index: 2;
    transition: width 0.5s ease;
}

.mt-plan .step-dot {
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: #fff;
    border: 2px solid var(--mt-border-soft);
    z-index: 3;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--mt-text-light);
    font-size: 11.2px;
    font-weight: 600;
    transition: var(--mt-transition);
    flex-shrink: 0;
}

.mt-plan .step-dot.active {
    border-color: var(--mt-primary);
    color: var(--mt-primary);
    box-shadow: 0 0 0 4px rgba(65, 171, 221, 0.1);
}

.mt-plan .step-dot.completed {
    background: var(--mt-primary);
    border-color: var(--mt-primary);
    color: #fff;
}

.mt-plan .step-dot span {
    position: absolute;
    top: 35px;
    white-space: nowrap;
    font-size: 10.4px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--mt-text-mute);
}

/* --- steps --- */
.mt-plan .step-content {
    display: none;
    animation: mt-plan-fade 0.4s ease;
}

.mt-plan .step-content.active {
    display: block;
}

@keyframes mt-plan-fade {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
    .mt-plan .step-content { animation: none; }
}

.mt-plan .step-header {
    text-align: center;
    margin-bottom: 40px;
}

.mt-plan .step-header h2 {
    font-size: 35.2px;
    letter-spacing: -0.02rem;
    margin-bottom: 8px;
    color: var(--mt-secondary);
    font-weight: 600;
}

.mt-plan .step-header p {
    color: var(--mt-text-mute);
    font-size: 15.2px;
    font-weight: 300;
}

/* --- destination cards --- */
.mt-plan .options-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 20px;
    margin-bottom: 30px;
}

.mt-plan .option-box {
    border: 1px solid var(--mt-border-soft);
    padding: 24px 20px;
    border-radius: 8px;
    cursor: pointer;
    text-align: center;
    transition: var(--mt-transition);
    background: var(--mt-bg-mute);
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.mt-plan .option-box h4 {
    font-size: 16.8px;
    margin-bottom: 6px;
    pointer-events: none;
    color: var(--mt-text-dark);
    font-weight: 600;
}

.mt-plan .option-box p {
    font-size: 12px;
    color: var(--mt-text-light);
    pointer-events: none;
}

.mt-plan .option-box:hover {
    border-color: var(--mt-primary);
    transform: translateY(-3px);
    box-shadow: var(--mt-shadow-elegant);
}

.mt-plan .option-box.selected {
    border-color: var(--mt-primary);
    background: rgba(65, 171, 221, 0.05);
    box-shadow: 0 4px 12px rgba(65, 171, 221, 0.1);
}

/* keyboard users must see the same affordance as a hover */
.mt-plan .option-box:focus-visible {
    border-color: var(--mt-primary);
    outline: 2px solid var(--mt-primary);
    outline-offset: 2px;
}

/* --- inputs --- */
.mt-plan .input-group {
    display: flex;
    flex-direction: column;
    margin-bottom: 20px;
}

.mt-plan .input-group label {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--mt-text-dark);
    font-weight: 600;
    margin-bottom: 10px;
}

.mt-plan .input-group input,
.mt-plan .input-group select,
.mt-plan .input-group textarea {
    font-family: 'Poppins', sans-serif;
    padding: 18px 20px;
    border: 1px solid var(--mt-border-soft);
    background: var(--mt-bg-mute);
    border-radius: 4px;
    font-size: 15.2px;
    color: var(--mt-text-dark);
    transition: var(--mt-transition);
    outline: none;
    width: 100%;
    line-height: normal;
}

.mt-plan .input-group input:focus,
.mt-plan .input-group select:focus,
.mt-plan .input-group textarea:focus {
    background: #fff;
    border-color: var(--mt-primary);
    box-shadow: 0 0 0 4px rgba(65, 171, 221, 0.1);
}

.mt-plan .input-group textarea {
    resize: vertical;
    min-height: 120px;
}

/* minmax(0, ...) rather than 1fr: a grid item defaults to min-width:auto, and an
   <input type="date"> carries a UA-defined intrinsic width — so a 1fr track
   cannot shrink below it and the whole grid runs past the card's edge. That is
   what pushed the arrival and departure fields off the side of the wizard on a
   phone. minmax(0, 1fr) lets the track shrink, and the min-width:0 on
   .mt-plan .input-group lets the item shrink with it. */.mt-plan .form-grid-2 {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 24px;
}

.mt-plan .input-group {
    /* lets the item shrink inside a minmax(0, 1fr) track */
    min-width: 0;
}

.mt-plan .input-group input,
.mt-plan .input-group select,
.mt-plan .input-group textarea {
    max-width: 100%;
}

/* iOS ignores width on a date input until its default appearance is off */
.mt-plan .input-group input[type="date"] {
    -webkit-appearance: none;
    appearance: none;
}

.mt-plan .form-full {
    grid-column: 1 / -1;
}

/* a field the visitor must fix, flagged before the step advances */
.mt-plan .input-group.has-error input,
.mt-plan .input-group.has-error select,
.mt-plan .input-group.has-error textarea {
    border-color: #dc3545;
    background: #fff;
}

.mt-plan .field-error {
    color: #dc3545;
    font-size: 12.8px;
    margin-top: 8px;
}

/* --- footer actions --- */
.mt-plan .wizard-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 40px;
    border-top: 1px solid var(--mt-border-soft);
    padding-top: 30px;
}

.mt-plan .wizard-footer.align-end {
    justify-content: flex-end;
}

/* --- CTA buttons (bootstrap owns .btn/.btn-primary, so scope hard) --- */
.mt-plan .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 18px 46px;
    font-size: 12.8px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    border-radius: 4px;
    border: none;
    transition: var(--mt-transition);
    cursor: pointer;
    position: relative;
    overflow: hidden;
    text-decoration: none;
    font-family: 'Poppins', sans-serif;
}

.mt-plan .btn::after {
    content: '\2192';
    font-size: 1.2em;
    font-weight: 400;
    transition: transform 0.4s ease;
    position: static;
    background: none;
    width: auto;
    height: auto;
    transform: none;
}

.mt-plan .btn:hover::after {
    transform: translateX(6px);
    width: auto;
}

.mt-plan .btn-primary {
    background-color: var(--mt-primary);
    color: #fff;
    box-shadow: 0 10px 20px rgba(65, 171, 221, 0.15);
}

.mt-plan .btn-primary:hover {
    background-color: var(--mt-primary-hover);
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 15px 25px rgba(65, 171, 221, 0.25);
}

.mt-plan .btn-primary[disabled] {
    opacity: 0.65;
    cursor: default;
    transform: none;
}

.mt-plan .btn-outline {
    background-color: transparent;
    color: var(--mt-text-dark);
    border: 1px solid var(--mt-border-soft);
}

.mt-plan .btn-outline:hover {
    background-color: var(--mt-bg-mute);
    color: var(--mt-text-dark);
    transform: translateY(-2px);
}

/* the "Back" button points backwards */
.mt-plan .btn-outline.btn-back::after {
    content: '\2190';
}

.mt-plan .btn-outline.btn-back:hover::after {
    transform: translateX(-6px);
}

/* server-side flash (captcha failure etc.) */
.mt-plan .wizard-flash {
    margin-bottom: 30px;
}

.mt-plan .wizard-flash .alert {
    padding: 14px 18px;
    border-radius: 8px;
    font-size: 14.4px;
    background: #fdecea;
    color: #b3261e;
    border: 1px solid #f5c2be;
}

/* --- responsive (breakpoints exactly as the design) --- */
@media (max-width: 1024px) {
    .mt-plan {
        background-attachment: scroll;
    }
}

@media (max-width: 768px) {
    .mt-plan .options-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .mt-plan .form-grid-2 {
        grid-template-columns: minmax(0, 1fr);
    }

    .mt-plan .wizard-card {
        padding: 40px 30px;
    }

    .mt-plan .step-header h2 {
        font-size: 28.8px;
    }

    .mt-plan .progress-bar {
        max-width: 95%;
        margin-bottom: 40px;
    }

    .mt-plan .step-dot span {
        font-size: 8.8px;
    }

    .mt-plan .wizard-footer {
        gap: 12px;
    }

    .mt-plan .btn {
        padding: 16px 24px;
    }
}

/* ==========================================================================
   16. TOURS LISTING  (master/tours.html)
   --------------------------------------------------------------------------
   Shared by the destination pages (/egypt, /jordan) and /search. Scoped under
   .mt-tours. The card here is the design's LISTING card — a white panel with a
   260px image — which is deliberately different from the homepage's tall
   editorial card, so those rules live under this scope only.
   ========================================================================== */

.mt-tours {
    font-family: 'Poppins', sans-serif;
    font-size: 16px;
    line-height: 1.7;
    color: var(--mt-text-dark);
    background: var(--mt-bg-mute);
}

.mt-tours *,
.mt-tours *::before,
.mt-tours *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* same inheritance guard as the header/footer — see section 1 */
.mt-tours *:not(input):not(button):not(select):not(textarea) {
    font-family: inherit;
    line-height: inherit;
}

.mt-tours a {
    text-decoration: none;
    color: inherit;
    transition: var(--mt-transition);
}

.mt-tours .container {
    max-width: 1320px;
    width: 100%;
    margin: 0 auto;
    padding: 0 40px;
}

/* --- hero --- */
.mt-tours .listing-hero {
    height: 500px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    position: relative;
    background-repeat: no-repeat;
    background-position: center center;
    background-size: cover;
    background-color: var(--mt-secondary);
    color: #fff;
}

.mt-tours .listing-hero::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(135deg, rgba(12, 89, 135, 0.7) 0%, rgba(14, 16, 23, 0.8) 100%);
    z-index: 1;
}

.mt-tours .listing-hero .hero-content {
    position: relative;
    z-index: 2;
}

.mt-tours .listing-hero h1 {
    font-size: 56px;
    margin-bottom: 15px;
    color: #fff;
    letter-spacing: -0.02em;
    font-weight: 600;
}

.mt-tours .listing-hero p {
    font-size: 17.6px;
    color: rgba(255, 255, 255, 0.8);
    max-width: 600px;
    margin: 0 auto;
    font-weight: 300;
}

/* --- layout --- */
.mt-tours .page-layout {
    display: flex;
    gap: 40px;
    padding: 80px 0;
    align-items: flex-start;
}

.mt-tours .sidebar {
    width: 300px;
    flex-shrink: 0;
    position: sticky;
    top: 30px;
    background: #fff;
    border-radius: 12px;
    padding: 30px;
    box-shadow: var(--mt-shadow-elegant);
    border: 1px solid #edf2f7;
}

.mt-tours .sidebar h3 {
    font-size: 19.2px;
    border-bottom: 1px solid #edf2f7;
    padding-bottom: 15px;
    margin-bottom: 25px;
    color: var(--mt-secondary);
    font-weight: 600;
}

.mt-tours .filter-group {
    margin-bottom: 30px;
}

/* --- main column --- */
.mt-tours .main-content {
    flex: 1;
    /* the grid must not be sized by its widest card */
    min-width: 0;
}

.mt-tours .sort-bar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 30px;
    background: #fff;
    padding: 15px 30px;
    border-radius: 12px;
    border: 1px solid #edf2f7;
    box-shadow: var(--mt-shadow-elegant);
    gap: 15px;
}

.mt-tours .sort-bar p {
    font-size: 15.2px;
    color: var(--mt-text-mute);
}

.mt-tours .sort-bar select {
    border: none;
    background: transparent;
    font-family: 'Poppins', sans-serif;
    font-size: 15.2px;
    font-weight: 500;
    color: var(--mt-secondary);
    outline: none;
    cursor: pointer;
}

.mt-tours .sort-label {
    font-size: 13.6px;
    color: var(--mt-text-light);
    text-transform: uppercase;
}

/* --- listing cards --- */
.mt-tours .deals-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 30px;
}

.mt-tours .deal-card {
    background: #fff;
    display: flex;
    flex-direction: column;
    position: relative;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: var(--mt-shadow-elegant);
    transition: var(--mt-transition);
    border: 1px solid transparent;
}

.mt-tours .deal-card:hover {
    transform: translateY(-5px);
    box-shadow: var(--mt-shadow-hover);
    border-color: rgba(65, 171, 221, 0.2);
}

.mt-tours .deal-img {
    height: 260px;
    position: relative;
    overflow: hidden;
}

.mt-tours .deal-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 1.2s cubic-bezier(0.16, 1, 0.3, 1);
}

.mt-tours .deal-card:hover .deal-img img {
    transform: scale(1.05);
}

.mt-tours .deal-badge {
    position: absolute;
    top: 15px;
    left: 15px;
    background: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
    padding: 6px 12px;
    border-radius: 50px;
    font-size: 11.2px;
    font-weight: 600;
    letter-spacing: 0.1em;
    color: var(--mt-text-dark);
    text-transform: uppercase;
    z-index: 2;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}

/* partner lockup — the design sets these inline, at a smaller size than home */
.mt-tours .deal-partner {
    position: absolute;
    bottom: 15px;
    right: 15px;
    background: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
    padding: 5px 10px;
    border-radius: 50px;
    display: flex;
    align-items: center;
    gap: 6px;
    z-index: 2;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
    border: 1px solid rgba(0, 0, 0, 0.05);
}

.mt-tours .deal-partner span {
    font-size: 9.6px;
    font-weight: 700;
    color: #111827;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    white-space: nowrap;
}

.mt-tours .deal-partner img {
    height: 12px;
    width: auto;
    object-fit: contain;
}

.mt-tours .deal-content {
    padding: 25px;
    flex-grow: 1;
    display: flex;
    flex-direction: column;
}

.mt-tours .deal-location {
    font-size: 11.2px;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    color: var(--mt-primary);
    margin-bottom: 8px;
    font-weight: 600;
}

.mt-tours .deal-content h3 {
    font-size: 20.8px;
    line-height: 1.3;
    margin-bottom: 15px;
    color: var(--mt-text-dark);
    transition: color 0.3s ease;
    font-weight: 600;
}

.mt-tours .deal-card:hover .deal-content h3 {
    color: var(--mt-primary);
}

.mt-tours .deal-desc {
    font-size: 14.4px;
    color: var(--mt-text-mute);
    margin-bottom: 25px;
    line-height: 1.6;
}

.mt-tours .deal-footer {
    margin-top: auto;
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-top: 1px solid #edf2f7;
    padding-top: 15px;
}

.mt-tours .price-block {
    display: flex;
    flex-direction: column;
}

.mt-tours .price-label {
    font-size: 10.4px;
    text-transform: uppercase;
    color: var(--mt-text-light);
    letter-spacing: 0.1em;
    margin-bottom: 2px;
    font-weight: 600;
}

.mt-tours .price-value {
    font-size: 19.2px;
    font-weight: 700;
    color: var(--mt-secondary);
}

.mt-tours .arrow-link {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--mt-bg-mute);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--mt-secondary);
    transition: var(--mt-transition);
    flex-shrink: 0;
}

.mt-tours .deal-card:hover .arrow-link {
    background-color: var(--mt-primary);
    color: #fff;
    transform: rotate(-45deg);
}

/* --- nothing matched --- */
.mt-tours .no-results {
    background: #fff;
    border: 1px solid #edf2f7;
    border-radius: 12px;
    padding: 60px 30px;
    text-align: center;
    box-shadow: var(--mt-shadow-elegant);
}

.mt-tours .no-results h3 {
    font-size: 22.4px;
    color: var(--mt-secondary);
    margin-bottom: 10px;
    font-weight: 600;
}

.mt-tours .no-results p {
    color: var(--mt-text-mute);
    font-size: 15.2px;
    font-weight: 300;
}

/* --- CTA button (bootstrap owns .btn/.btn-primary, so scope hard) --- */
.mt-tours .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 18px 46px;
    font-size: 12.8px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    border-radius: 4px;
    border: none;
    transition: var(--mt-transition);
    cursor: pointer;
    position: relative;
    overflow: hidden;
    text-decoration: none;
    font-family: 'Poppins', sans-serif;
}

.mt-tours .btn::after {
    content: '\2192';
    font-size: 1.2em;
    font-weight: 400;
    transition: transform 0.4s ease;
    position: static;
    background: none;
    width: auto;
    height: auto;
    transform: none;
}

.mt-tours .btn:hover::after {
    transform: translateX(6px);
    width: auto;
}

.mt-tours .btn-primary {
    background-color: var(--mt-primary);
    color: #fff;
    box-shadow: 0 10px 20px rgba(65, 171, 221, 0.15);
    width: 100%;
}

.mt-tours .btn-primary:hover {
    background-color: var(--mt-primary-hover);
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 15px 25px rgba(65, 171, 221, 0.25);
}

/* --- pagination --- */
.mt-tours .pagination {
    display: flex;
    justify-content: center;
    gap: 10px;
    margin-top: 60px;
    flex-wrap: wrap;
}

.mt-tours .page-item {
    width: 44px;
    height: 44px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #fff;
    font-weight: 600;
    border: 1px solid #edf2f7;
    color: var(--mt-text-mute);
    transition: var(--mt-transition);
    cursor: pointer;
    font-size: 15.2px;
}

.mt-tours .page-item:hover {
    border-color: var(--mt-primary);
    color: var(--mt-primary);
    transform: translateY(-2px);
}

.mt-tours .page-item.active {
    background: var(--mt-primary);
    border-color: var(--mt-primary);
    color: #fff;
}

/* --- responsive (breakpoints exactly as the design) --- */
@media (max-width: 1024px) {
    .mt-tours .page-layout {
        flex-direction: column;
    }

    .mt-tours .sidebar {
        width: 100%;
        position: static;
    }

    .mt-tours .deals-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .mt-tours .container {
        padding-left: max(18px, env(safe-area-inset-left, 0px));
        padding-right: max(18px, env(safe-area-inset-right, 0px));
    }
}

@media (max-width: 768px) {
    .mt-tours .listing-hero {
        height: 380px;
    }

    .mt-tours .listing-hero h1 {
        font-size: 35.2px;
    }

    .mt-tours .deals-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .mt-tours .sort-bar {
        flex-direction: column;
        gap: 15px;
        align-items: flex-start;
    }

    .mt-tours .page-layout {
        padding: 50px 0;
    }
}

/* --------------------------------------------------------------------------
   TOURS SIDEBAR — filter row corrections.

   Two separate problems produced the stacked, navy-boxed rows:

   1. THE GROUP LABEL WAS EATING THE CHECKBOX ROWS.
      Both the "DESTINATION" caption and each option are <label> children of
      .filter-group, so `.filter-group > label` (0,3,1) also matched the
      options and beat `.custom-checkbox` (0,2,0) — forcing display:block and
      the caption's uppercase/600/muted type onto them. That killed the flex
      row, so the input sat on its own line with the text underneath.
      The design has the same clash in its own CSS, but its .custom-checkbox
      rule (0.95rem, text-dark, flex) makes the intent unambiguous, so the
      caption rule is narrowed to exclude the options.

   2. THE CHECKBOX ITSELF WAS THE LEGACY THEME'S.
      style.home.purged.min.css styles every input[type=checkbox] with
      !important, and paints its own control in ::before — a #001D3D navy box
      with a white SVG tick that scales in on :checked. That is the dark square
      in place of the design's cyan one. Those !important declarations can only
      be answered in kind.
   -------------------------------------------------------------------------- */

/* 1 — the caption only, never the options */
.mt-tours .filter-group > label {
    display: block;
    font-size: 12.8px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--mt-text-mute);
    margin-bottom: 15px;
    font-weight: 600;
}

/* the option rows, restated so they cannot be out-specified */
.mt-tours .filter-group > label.custom-checkbox {
    /* The design deliberately lets the caption rule above style these rows
       too — uppercase, letter-spaced, muted — and only lays them out as a
       row. Confirmed against the published design. */
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 12px;
    cursor: pointer;
}

.mt-tours .filter-group > label.custom-checkbox:hover {
    color: var(--mt-primary);
}

/* 2 — the design's own control, over the legacy !important set */
.mt-tours .custom-checkbox input[type="checkbox"] {
    appearance: none !important;
    -webkit-appearance: none !important;
    width: 18px !important;
    height: 18px !important;
    min-width: 18px !important;
    border: 2px solid #cbd5e1 !important;
    border-radius: 4px !important;
    background-color: #fff !important;
    background-image: none !important;
    /* legacy sets display:flex here; as a flex item that is harmless, but it
       also makes the control a block if the row ever loses its own flex */
    display: inline-block !important;
    margin: 0 !important;
    padding: 0 !important;
    position: relative !important;
    cursor: pointer;
    flex-shrink: 0;
    box-shadow: none !important;
    transform: none !important;
    transition: var(--mt-transition);
}

.mt-tours .custom-checkbox input[type="checkbox"]:checked {
    background-color: var(--mt-primary) !important;
    border-color: var(--mt-primary) !important;
}

/* legacy draws its navy control in ::before — remove it entirely */
.mt-tours .custom-checkbox input[type="checkbox"]::before {
    content: none !important;
    display: none !important;
    background: none !important;
}

/* the design's tick */
.mt-tours .custom-checkbox input[type="checkbox"]::after {
    content: '' !important;
    display: none;
    position: absolute;
    left: 4px;
    top: 0;
    width: 5px;
    height: 9px;
    border: solid #fff;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
    background: none;
}

.mt-tours .custom-checkbox input[type="checkbox"]:checked::after {
    display: block;
}

.mt-tours .custom-checkbox input[type="checkbox"]:focus-visible {
    outline: 2px solid var(--mt-primary);
    outline-offset: 2px;
}


/* --------------------------------------------------------------------------
   CARD HEIGHT.

   The design's tour titles are one or two lines and its blurbs are short, so
   every card in a row comes out the same height. CMS titles run to four lines
   and the blurbs vary, and because grid rows size to the tallest card the short
   ones were left with a large void above the price — the cards read as too tall
   and unevenly padded.

   Clamping the two variable-length fields restores the design's even rhythm.
   The full title is on the tour page; this only affects the listing card.
   -------------------------------------------------------------------------- */
.mt-tours .deal-content h3 {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    /* reserve both lines so a one-line title does not shorten its card */
    min-height: calc(20.8px * 1.3 * 2);
}

.mt-tours .deal-desc {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    min-height: calc(14.4px * 1.6 * 3);
    /* the footer is pinned with margin-top:auto, so the blurb no longer needs
       to push it down with a 25px gap of its own */
    margin-bottom: 20px;
}

/* ==========================================================================
   17. TOUR DETAIL  (master/tour-details.html)
   --------------------------------------------------------------------------
   Scoped under .mt-detail. The sticky sub-nav, itinerary accordion and booking
   widget all live here.
   ========================================================================== */

.mt-detail {
    font-family: 'Poppins', sans-serif;
    font-size: 16px;
    line-height: 1.7;
    color: var(--mt-text-dark);
    background: #fff;
}

.mt-detail *,
.mt-detail *::before,
.mt-detail *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* same inheritance guard as the header/footer — see section 1 */
.mt-detail *:not(input):not(button):not(select):not(textarea) {
    font-family: inherit;
    line-height: inherit;
}

.mt-detail a {
    text-decoration: none;
    color: inherit;
    transition: var(--mt-transition);
}

.mt-detail .container {
    max-width: 1320px;
    width: 100%;
    margin: 0 auto;
    padding: 0 40px;
}

/* --- cover --- */
.mt-detail .detail-cover {
    height: 85vh;
    min-height: 480px;
    position: relative;
    display: flex;
    align-items: flex-end;
    background-repeat: no-repeat;
    background-position: center center;
    background-size: cover;
    background-color: var(--mt-secondary);
    padding-bottom: 60px;
    overflow: hidden;
}

.mt-detail .detail-cover::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(180deg, rgba(14, 16, 23, 0.4) 0%, rgba(14, 16, 23, 0.2) 40%, rgba(14, 16, 23, 0.9) 100%);
    z-index: 1;
}

.mt-detail .cover-content {
    position: relative;
    z-index: 2;
    width: 100%;
    min-width: 0;
}

.mt-detail .tags {
    display: flex;
    gap: 10px;
    margin-bottom: 20px;
}

.mt-detail .tag {
    background: rgba(255, 255, 255, 0.2);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    padding: 6px 16px;
    border-radius: 50px;
    color: #fff;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-weight: 600;
    border: 1px solid rgba(255, 255, 255, 0.3);
}

.mt-detail .detail-cover h1 {
    font-size: 64px;
    color: #fff;
    line-height: 1.1;
    margin-bottom: 20px;
    max-width: 800px;
    letter-spacing: -0.02em;
    font-weight: 600;
}

.mt-detail .meta-strip {
    display: flex;
    gap: 40px;
    border-top: 1px solid rgba(255, 255, 255, 0.2);
    padding-top: 25px;
    margin-top: 30px;
}

.mt-detail .meta-item {
    color: #fff;
}

.mt-detail .meta-item h5 {
    font-size: 11.2px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: rgba(255, 255, 255, 0.6);
    margin-bottom: 5px;
    font-weight: 600;
}

.mt-detail .meta-item p {
    font-size: 17.6px;
    font-weight: 500;
}

/* the brand lockup the design sets inline in the first meta cell */
.mt-detail .meta-item.meta-brand {
    display: flex;
    align-items: center;
    gap: 12px;
    padding-right: 40px;
    border-right: 1px solid rgba(255, 255, 255, 0.2);
}

.mt-detail .meta-item.meta-brand img {
    height: 20px;
    width: auto;
    object-fit: contain;
    display: block;
}

/* --- sticky sub-nav --- */
.mt-detail .sticky-nav {
    position: sticky;
    top: 0;
    background: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border-bottom: 1px solid var(--mt-border-soft);
    z-index: 100;
    padding: 20px 0;
}

.mt-detail .sticky-nav-inner {
    display: flex;
    gap: 40px;
}

.mt-detail .sticky-nav a {
    font-size: 13.6px;
    font-weight: 600;
    color: var(--mt-text-mute);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding-bottom: 18px;
    border-bottom: 2px solid transparent;
    white-space: nowrap;
}

.mt-detail .sticky-nav a:hover,
.mt-detail .sticky-nav a.active {
    color: var(--mt-primary);
    border-bottom-color: var(--mt-primary);
}

/* --- two-column layout --- */
.mt-detail .layout {
    display: flex;
    gap: 60px;
    padding: 80px 0;
    align-items: flex-start;
}

.mt-detail .content-col {
    flex: 1;
    /* the accordion must not be sized by its widest word */
    min-width: 0;
}

/* scroll-margin-top, NOT padding-top with a negative margin-top.
   The old pair kept the heading clear of the sticky nav when a #anchor was
   followed, but it did it by pulling each section's box up 80px over the
   section before it — and that invisible overlapping strip sits ON TOP of
   the previous section's last elements and swallows their clicks. On a
   phone, where the offset is 140px, the strip covered the whole last
   itinerary day: tapping it did nothing at all.
   scroll-margin-top only tells the browser where to stop when scrolling to
   the element, so nothing overlaps and nothing is blocked. */
.mt-detail .content-section {
    margin-bottom: 80px;
    scroll-margin-top: 80px;
}

.mt-detail .content-section:last-child {
    margin-bottom: 0;
}

.mt-detail .content-section h2 {
    font-size: 32px;
    color: var(--mt-secondary);
    margin-bottom: 25px;
    letter-spacing: -0.02em;
    font-weight: 600;
}

.mt-detail .content-section p {
    font-size: 16.8px;
    color: var(--mt-text-mute);
    margin-bottom: 20px;
    line-height: 1.8;
}

/* CMS body copy is rich text — keep its lists and emphasis readable */
.mt-detail .content-section ul,
.mt-detail .content-section ol {
    margin: 0 0 20px;
    padding-left: 20px;
    list-style: revert;
    color: var(--mt-text-mute);
    font-size: 16.8px;
    line-height: 1.8;
}

.mt-detail .content-section li {
    margin-bottom: 8px;
}

.mt-detail .content-section strong,
.mt-detail .content-section b {
    color: var(--mt-text-dark);
    font-weight: 600;
}

/* --- itinerary accordion --- */
.mt-detail .accordion-item {
    border: 1px solid var(--mt-border-soft);
    border-radius: 12px;
    margin-bottom: 16px;
    overflow: hidden;
    background: #fff;
}

.mt-detail .accordion-header {
    padding: 24px 30px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    background: var(--mt-bg-mute);
    transition: var(--mt-transition);
    gap: 20px;
    /* it is a <button> in the markup so it works by keyboard */
    width: 100%;
    border: none;
    text-align: left;
    font: inherit;
    color: inherit;
}

.mt-detail .accordion-header:hover {
    background: #fff;
}

.mt-detail .accordion-header h3 {
    font-size: 18.4px;
    color: var(--mt-text-dark);
    margin: 0;
    font-weight: 600;
}

.mt-detail .accordion-icon {
    transition: transform 0.3s;
    flex-shrink: 0;
}

.mt-detail .accordion-item.active .accordion-icon {
    transform: rotate(180deg);
}

.mt-detail .accordion-body {
    padding: 0 30px;
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.5s ease-out, padding 0.5s ease-out;
}

.mt-detail .accordion-item.active .accordion-body {
    padding: 30px;
    max-height: 2000px;
    border-top: 1px solid var(--mt-border-soft);
}

.mt-detail .accordion-body p {
    font-size: 15.2px;
    margin-bottom: 15px;
}

.mt-detail .accordion-body p:last-child {
    margin-bottom: 0;
}

.mt-detail .itinerary-img {
    width: 100%;
    height: 220px;
    object-fit: cover;
    border-radius: 12px;
    margin-top: 15px;
    display: block;
    max-width: 100%;
}

/* meals / accommodation, when the CMS fills them */
.mt-detail .day-facts {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 24px;
    margin-top: 15px;
    padding-top: 15px;
    border-top: 1px solid var(--mt-border-soft);
}

.mt-detail .day-facts span {
    font-size: 13.6px;
    color: var(--mt-text-mute);
}

.mt-detail .day-facts strong {
    color: var(--mt-text-dark);
    font-weight: 600;
}

/* --- inclusions --- */
.mt-detail .check-list {
    list-style: none;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 15px;
    padding: 0;
    margin: 0;
}

.mt-detail .check-list li {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    font-size: 15.2px;
    color: var(--mt-text-dark);
    line-height: 1.6;
    margin: 0;
}

.mt-detail .check-list li svg {
    color: var(--mt-primary);
    flex-shrink: 0;
    margin-top: 4px;
}

/* the CMS also stores what is NOT included; the design has no slot for it, so
   it follows the included list in the same section with a cross mark */
.mt-detail .check-list.exclude-list li svg {
    color: #c0392b;
}

.mt-detail .exclusions-title {
    font-size: 18.4px;
    color: var(--mt-secondary);
    margin: 40px 0 20px;
    font-weight: 600;
}

/* --- gallery --- */
.mt-detail .gallery-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
}

.mt-detail .gallery-grid img {
    width: 100%;
    height: 200px;
    object-fit: cover;
    border-radius: 12px;
    display: block;
}

/* --- booking widget --- */
.mt-detail .booking-col {
    width: 380px;
    position: sticky;
    top: 100px;
    flex-shrink: 0;
}

.mt-detail .widget-card {
    background: #fff;
    border-radius: 16px;
    /* 40px all round left the form taller than the viewport */
    padding: 26px 24px;
    box-shadow: var(--mt-shadow-elegant);
    border: 1px solid #edf2f7;
}

.mt-detail .price-huge {
    font-size: 34px;
    font-weight: 700;
    color: var(--mt-secondary);
    margin-bottom: 14px;
    line-height: 1;
}

.mt-detail .price-huge span {
    font-size: 13.6px;
    color: var(--mt-text-mute);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    display: block;
    margin-bottom: 5px;
}

.mt-detail .price-huge .per-person {
    display: inline;
    font-size: 16px;
    font-weight: 500;
    text-transform: none;
    letter-spacing: normal;
    margin-bottom: 0;
}





.mt-detail .guarantees {
    margin-top: 16px;
    display: flex;
    flex-direction: column;
    gap: 7px;
    border-top: 1px solid #edf2f7;
    padding-top: 16px;
}

.mt-detail .guarantees div {
    display: flex;
    align-items: center;
    gap: 9px;
    font-size: 12px;
    color: var(--mt-text-mute);
}

.mt-detail .guarantees svg {
    color: var(--mt-text-light);
    flex-shrink: 0;
}

/* --- CTA (bootstrap owns .btn/.btn-primary, so scope hard) --- */
.mt-detail .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 18px 46px;
    font-size: 12.8px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    border-radius: 4px;
    border: none;
    transition: var(--mt-transition);
    cursor: pointer;
    position: relative;
    overflow: hidden;
    text-decoration: none;
    font-family: 'Poppins', sans-serif;
}

.mt-detail .btn::after {
    content: '\2192';
    font-size: 1.2em;
    font-weight: 400;
    transition: transform 0.4s ease;
    position: static;
    background: none;
    width: auto;
    height: auto;
    transform: none;
}

.mt-detail .btn:hover::after {
    transform: translateX(6px);
    width: auto;
}

.mt-detail .btn-primary {
    background-color: var(--mt-primary);
    color: #fff;
    box-shadow: 0 10px 20px rgba(65, 171, 221, 0.15);
}

.mt-detail .btn-primary:hover {
    background-color: var(--mt-primary-hover);
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 15px 25px rgba(65, 171, 221, 0.25);
}


/* --- responsive (breakpoints exactly as the design) --- */
@media (max-width: 1024px) {
    .mt-detail .layout {
        flex-direction: column;
        gap: 28px;
        padding: 48px 0 64px;
    }

    .mt-detail .booking-col {
        width: 100%;
        position: static;
    }

    .mt-detail .content-col {
        order: 1;
    }

    .mt-detail .detail-cover {
        height: auto;
        min-height: 52vh;
        padding-bottom: 36px;
    }

    .mt-detail .detail-cover h1 {
        font-size: clamp(28px, 5.5vw, 44px);
    }

    .mt-detail .meta-strip {
        flex-wrap: wrap;
        gap: 16px 24px;
    }

    .mt-detail .widget-card {
        padding: 28px 22px;
    }

    .mt-detail .price-huge {
        font-size: 32px;
    }

    .mt-detail .container {
        padding-left: max(18px, env(safe-area-inset-left, 0px));
        padding-right: max(18px, env(safe-area-inset-right, 0px));
    }
}

@media (max-width: 768px) {
    .mt-detail .detail-cover h1 {
        font-size: 26.4px;
        line-height: 1.2;
        word-wrap: break-word;
    }

    .mt-detail .tags {
        flex-wrap: wrap;
        gap: 8px;
    }

    .mt-detail .meta-strip {
        flex-direction: column;
        align-items: stretch;
        gap: 14px;
        padding-top: 18px;
        margin-top: 20px;
    }

    .mt-detail .meta-item.meta-brand {
        padding-right: 0;
        border-right: none;
        border-bottom: 1px solid rgba(255, 255, 255, 0.2);
        padding-bottom: 14px;
    }

    .mt-detail .meta-item p {
        font-size: 16px;
    }

    .mt-detail .check-list,
    .mt-detail .gallery-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .mt-detail .sticky-nav {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
        padding: 10px 0 12px;
    }

    .mt-detail .sticky-nav::-webkit-scrollbar {
        display: none;
    }

    .mt-detail .sticky-nav-inner {
        gap: 18px;
        padding: 0 2px 4px;
        min-height: 44px;
        align-items: center;
    }

    .mt-detail .sticky-nav a {
        font-size: 12.5px;
        padding-bottom: 10px;
    }

    .mt-detail .layout {
        padding-top: 16px;
        padding-bottom: 40px;
    }

    .mt-detail .content-section {
        margin-bottom: 48px;
    }

    .mt-detail .content-section h2 {
        font-size: 25.6px;
    }

    .mt-detail .accordion-header {
        padding: 16px 18px;
    }

    .mt-detail .accordion-item.active .accordion-body {
        padding: 18px;
    }
}



/* --------------------------------------------------------------------------
   Extra breathing room INSIDE the CTA banner and the brands band, rather than
   around them — the space belongs to the section, so its background carries it.
   -------------------------------------------------------------------------- */
.mt-visa {
    padding: 200px 0;
}

.mt-brands {
    padding: 130px 0;
}

@media (max-width: 1024px) {
    .mt-visa  { padding: 140px 0; }
    .mt-brands { padding: 100px 0; }
}

@media (max-width: 768px) {
    .mt-visa  { padding: 110px 0; }
    .mt-brands { padding: 80px 0; }
}

/* --------------------------------------------------------------------------
   MOBILE TOUR COVER.

   Below 1024px the header is position:fixed, and the cover is the first thing
   on the page. Its content is bottom-aligned, so a long title plus the stacked
   meta rows grow the block upward until the heading slides under the fixed
   header and is clipped — which is what happens with real CMS titles, longer
   than the design's sample.

   Reserving the header's height as top padding lets the cover grow downward
   instead, so the title always clears it.
   -------------------------------------------------------------------------- */
@media (max-width: 1024px) {
    .mt-detail .detail-cover {
        height: auto;
        min-height: 52vh;
        padding-top: 36px;
    }
}

/* --------------------------------------------------------------------------
   MOBILE STICKY SUB-NAV.

   Below 1024px the site header is position:fixed, so a sub-nav sticking at
   top:0 parks UNDERNEATH it and disappears on scroll. It has to stick at the
   header's height instead: 10px + 44px logo + 10px = 64px, plus the notch inset.

   The anchor offset grows to match, so tapping a sub-nav link does not leave the
   heading hidden behind the two stacked bars.
   -------------------------------------------------------------------------- */
@media (max-width: 1024px) {
    .mt-detail .sticky-nav {
        top: calc(64px + env(safe-area-inset-top, 0px));
    }

    .mt-detail .content-section {
        scroll-margin-top: 140px;
    }
}

/* --------------------------------------------------------------------------
   FOOTER CLEARANCE FOR THE FLOATING TAB BAR.

   Below 1024px the Journeys / Tailor Made bar is position:fixed near the bottom
   of the viewport, so it floats over whatever is scrolled beneath it. The body
   already reserves space after the footer, but the copyright line is the LAST
   thing INSIDE the footer, so the bar still covered it.

   Reserving the bar's height inside the footer keeps that line above it, on the
   footer's own background rather than in the gap below.
   -------------------------------------------------------------------------- */
@media (max-width: 1024px) {
    .mt-footer {
        padding-bottom: calc(110px + env(safe-area-inset-bottom, 0px));
    }
}

/* ==========================================================================
   18. ERROR PAGE  (404)
   --------------------------------------------------------------------------
   Rendered between the site's real header and footer by layout/error.php, in
   the design's own type and colours.
   ========================================================================== */

.mt-error {
    padding: 140px 0 160px;
    text-align: center;
    background: var(--mt-bg-mute);
    font-family: 'Poppins', sans-serif;
    font-size: 16px;
    line-height: 1.7;
    color: var(--mt-text-dark);
}

.mt-error *,
.mt-error *::before,
.mt-error *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

.mt-error *:not(input):not(button):not(select):not(textarea) {
    font-family: inherit;
    line-height: inherit;
}

.mt-error a {
    text-decoration: none;
    color: inherit;
    transition: var(--mt-transition);
}

.mt-error .container {
    max-width: 1320px;
    width: 100%;
    margin: 0 auto;
    padding: 0 40px;
}

.mt-error .err-code {
    font-size: 140px;
    font-weight: 700;
    line-height: 1;
    color: var(--mt-primary);
    letter-spacing: -0.04em;
    margin-bottom: 10px;
}

.mt-error .err-title {
    font-size: 44.8px;
    color: var(--mt-secondary);
    letter-spacing: -0.02em;
    margin-bottom: 18px;
    font-weight: 600;
}

.mt-error .err-text {
    font-size: 17.6px;
    color: var(--mt-text-mute);
    font-weight: 300;
    max-width: 560px;
    margin: 0 auto 40px;
}

.mt-error .err-actions {
    display: flex;
    justify-content: center;
    gap: 16px;
    flex-wrap: wrap;
}

/* --- buttons (bootstrap is not loaded here, but scope anyway for consistency) --- */
.mt-error .btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 18px 46px;
    font-size: 12.8px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    border-radius: 4px;
    border: none;
    transition: var(--mt-transition);
    cursor: pointer;
    position: relative;
    overflow: hidden;
    text-decoration: none;
    font-family: 'Poppins', sans-serif;
}

.mt-error .btn::after {
    content: '\2192';
    font-size: 1.2em;
    font-weight: 400;
    transition: transform 0.4s ease;
}

.mt-error .btn:hover::after {
    transform: translateX(6px);
}

.mt-error .btn-primary {
    background-color: var(--mt-primary);
    color: #fff;
    box-shadow: 0 10px 20px rgba(65, 171, 221, 0.15);
}

.mt-error .btn-primary:hover {
    background-color: var(--mt-primary-hover);
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 15px 25px rgba(65, 171, 221, 0.25);
}

.mt-error .btn-outline {
    background-color: #fff;
    color: var(--mt-secondary);
    border: 1px solid var(--mt-border-soft);
}

.mt-error .btn-outline:hover {
    background-color: var(--mt-secondary);
    color: #fff;
    transform: translateY(-2px);
}

@media (max-width: 1024px) {
    .mt-error .container {
        padding-left: max(18px, env(safe-area-inset-left, 0px));
        padding-right: max(18px, env(safe-area-inset-right, 0px));
    }
}

@media (max-width: 768px) {
    .mt-error {
        padding: 90px 0 100px;
    }

    .mt-error .err-code {
        font-size: 90px;
    }

    .mt-error .err-title {
        font-size: 28.8px;
    }

    .mt-error .err-text {
        font-size: 16px;
    }

    .mt-error .err-actions {
        flex-direction: column;
    }
}

/* --------------------------------------------------------------------------
   COVERS START BELOW THE MOBILE HEADER.

   Under 1024px the site header is position:fixed, so it takes no space in the
   flow and page content runs underneath it. On the homepage that is the point —
   the transparent header floats over the hero video. But on the tour and listing
   pages the header is solid, and having it sit on top of the cover photo just
   crops the image and crowds the title.

   Reserving its height as a margin drops these two covers below it. The height
   is the header's own: 10px + 44px logo + 10px = 64px, plus the notch inset.
   -------------------------------------------------------------------------- */
@media (max-width: 1024px) {
    .mt-detail .detail-cover,
    .mt-tours .listing-hero {
        margin-top: calc(64px + env(safe-area-inset-top, 0px));
    }

    /* the sub-nav sticks directly under the header, so it keeps its own offset */
    .mt-detail .sticky-nav {
        top: calc(64px + env(safe-area-inset-top, 0px));
    }
}

/* ============================================================
   19. ABOUT — "How We Work" (element/about-approach.php)
   ============================================================
   Built out of the existing design language rather than a new visual
   idea: the .mt-journeys section-header treatment (12px uppercase
   overline in --mt-primary, 48px semibold h2, 17.6px 300-weight lead)
   and the same 40px grid gutter. On the muted background so it
   alternates against the two deep-blue bands it sits between
   (.mt-why above, .mt-visa below).

   Every rule is scoped under .mt-approach. Bootstrap and the legacy
   theme CSS are still loaded globally on this page and own the generic
   names, so nothing here may be left unscoped.
   ------------------------------------------------------------ */
.mt-approach {
    padding: 130px 0;
    background: var(--mt-bg-mute);
}

/* The legacy theme sets font-family and line-height on bare element
   selectors, and inheritance always loses to a rule that matches. So the
   subtree is pinned back to the section's own values, exactly as the
   other .mt-* sections do. */
.mt-approach *:not(input):not(button):not(select):not(textarea) {
    font-family: inherit;
    line-height: inherit;
}

.mt-approach {
    font-family: 'Poppins', sans-serif;
    line-height: 1.7;
    color: var(--mt-text-dark);
}

.mt-approach .container {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 40px;
}

/* --- section header --- */
.mt-approach .section-header {
    text-align: center;
    margin-bottom: 70px;
}

.mt-approach .overline {
    display: inline-block;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.25em;
    color: var(--mt-primary);
    font-weight: 600;
    margin-bottom: 16px;
}

.mt-approach .section-header h2 {
    font-size: 48px;
    color: var(--mt-text-dark);
    margin: 0 0 18px;
    letter-spacing: -0.02em;
    font-weight: 600;
}

.mt-approach .section-header p {
    color: var(--mt-text-mute);
    font-size: 17.6px;
    font-weight: 300;
    max-width: 600px;
    margin: 0 auto;
}

/* --- the four steps --- */
.mt-approach .approach-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 40px;
}

.mt-approach .approach-step {
    position: relative;
    background: #ffffff;
    border: 1px solid var(--mt-border-soft);
    border-radius: 4px;
    padding: 48px 30px 34px;
    box-shadow: var(--mt-shadow-elegant);
    transition: var(--mt-transition);
}

.mt-approach .approach-step:hover {
    transform: translateY(-6px);
    box-shadow: var(--mt-shadow-hover);
}

/* The step number is the connective tissue between the four cards — it
   is what makes them read as a sequence rather than four features. */
.mt-approach .step-num {
    position: absolute;
    top: 26px;
    right: 30px;
    font-size: 42px;
    font-weight: 700;
    line-height: 1;
    color: var(--mt-primary);
    opacity: 0.16;
    letter-spacing: -0.03em;
}

.mt-approach .step-icon {
    width: 54px;
    height: 54px;
    border-radius: 50%;
    background: rgba(65, 171, 221, 0.1);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 26px;
}

.mt-approach .step-icon svg {
    width: 24px;
    height: 24px;
    fill: none;
    stroke: var(--mt-primary);
    stroke-width: 1.6;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.mt-approach .approach-step h4 {
    font-size: 18px;
    font-weight: 600;
    color: var(--mt-text-dark);
    margin: 0 0 12px;
    letter-spacing: -0.01em;
}

.mt-approach .approach-step p {
    font-size: 15px;
    font-weight: 300;
    color: var(--mt-text-mute);
    margin: 0;
}

/* --- responsive --- */
@media (max-width: 1024px) {
    .mt-approach {
        padding: 90px 0;
    }

    .mt-approach .container {
        padding: 0 24px;
    }

    .mt-approach .approach-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 24px;
    }

    .mt-approach .section-header {
        margin-bottom: 50px;
    }

    .mt-approach .section-header h2 {
        font-size: 34px;
    }

    .mt-approach .section-header p {
        font-size: 16px;
    }
}

@media (max-width: 600px) {
    .mt-approach {
        padding: 70px 0;
    }

    .mt-approach .approach-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .mt-approach .section-header h2 {
        font-size: 28px;
    }
}

/* --------------------------------------------------------------------------
   LEGACY PAGE COVER CLEARS THE MOBILE HEADER.

   .page-breadcrumb-area is the old theme's page cover (About Us, Contact,
   FAQs, Wikis, Articles, thank-you, generic Pages). Under 1024px the site
   header is position:fixed, so it is out of the flow and this band starts at
   y=0 — its top 64px, and with it the top of the title, sit underneath the
   navbar.

   Clearance is added as PADDING, not margin. The band is a solid colour that
   runs right up against the header; a margin would expose the white body
   background between the two and leave exactly the seam we removed elsewhere.
   Padding grows the band instead, so it still meets the header while its
   content drops below it.

   The values are the legacy padding at each of its own breakpoints
   (style.min.css: 100px at <=991, 80px at <=767) plus the header's height —
   10px + 44px logo + 10px = 64px — and the notch inset. Between 992 and
   1024px the legacy padding is already 200px, which clears the header on its
   own, so that range is left alone.
   -------------------------------------------------------------------------- */
@media (max-width: 991px) {
    .page-breadcrumb-area {
        padding-top: calc(100px + 64px + env(safe-area-inset-top, 0px));
    }
}

@media (max-width: 767px) {
    .page-breadcrumb-area {
        padding-top: calc(80px + 64px + env(safe-area-inset-top, 0px));
    }
}

/* ============================================================
   20. CONTACT US — the enquiry form (templates/Pages/contact.php)
   ============================================================
   The page keeps the network-standard side-form markup and JS
   untouched (field names, ids, the flag pickers, the counters, the
   invisible reCAPTCHA); only its presentation moved here, out of the
   600-line inline <style> it used to carry.

   Every value is taken from the wizard on /tailormake (.mt-plan) so the
   site's two forms are the same control: 18px/20px padding, 1px
   --mt-border-soft, --mt-bg-mute fill, 4px radius, 15.2px text, and the
   --mt-primary focus ring. The old block was the previous theme's gold
   (#D99F42) and green (#0d5b45), which is why it read as a different
   site.

   Scoped under .mt-contact throughout — bootstrap and the legacy theme
   CSS are still loaded globally here and own .form-control, .row,
   .col-*, .theme-btn and .widget.
   ------------------------------------------------------------ */
.mt-contact {
    padding: 110px 0 130px;
    background: var(--mt-bg-body);
    font-family: 'Poppins', sans-serif;
    font-size: 16px;
    line-height: 1.7;
    color: var(--mt-text-dark);
}

/* The legacy theme sets font-family/line-height on bare element selectors;
   inheritance always loses to a rule that matches, so the subtree is pinned
   back. Form controls are excluded — they get `revert` below instead, which
   also has to undo bootstrap's reboot. */
.mt-contact *:not(input):not(button):not(select):not(textarea) {
    font-family: inherit;
    line-height: inherit;
}

.mt-contact .container {
    max-width: 900px;
    margin: 0 auto;
    padding: 0 40px;
    width: 100%;
}

/* --- section header --- */
.mt-contact .section-header {
    text-align: center;
    margin-bottom: 46px;
}

.mt-contact .overline {
    display: inline-block;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.25em;
    color: var(--mt-primary);
    font-weight: 600;
    margin-bottom: 16px;
}

.mt-contact .section-header h2 {
    font-size: 44px;
    color: var(--mt-text-dark);
    margin: 0 0 18px;
    letter-spacing: -0.02em;
    font-weight: 600;
}

.mt-contact .section-header p {
    color: var(--mt-text-mute);
    font-size: 17.6px;
    font-weight: 300;
    max-width: 620px;
    margin: 0 auto;
}

/* --- the CMS intro copy + its See More toggle --- */
.mt-contact .contact-intro {
    text-align: center;
    color: var(--mt-text-mute);
    font-size: 16px;
    font-weight: 300;
    margin-bottom: 46px;
}

.mt-contact .contact-intro p {
    margin: 0 0 14px;
}

.mt-contact .contact-intro a:not(.see-more-btn) {
    color: var(--mt-primary);
    text-decoration: underline;
}

.mt-contact .see-more-btn {
    display: inline-block;
    margin-top: 6px;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    color: var(--mt-primary);
    text-decoration: none;
    cursor: pointer;
}

.mt-contact .see-more-btn:hover {
    color: var(--mt-primary-hover);
}

/* --- the form card --- */
.mt-contact .itinerary-booking-form {
    background: #ffffff;
    border: 1px solid var(--mt-border-soft);
    border-radius: 6px;
    box-shadow: var(--mt-shadow-elegant);
    padding: 46px 44px;
}

/* Bootstrap's reboot sets font-family/size/line-height on form controls, and
   the legacy theme sets more on .form-control. `revert` rolls each control
   back past both, to the browser default, before the rules below restate it —
   the same approach the wizard uses. */
.mt-contact input,
.mt-contact select,
.mt-contact textarea,
.mt-contact button {
    font-family: revert;
    font-size: revert;
    line-height: revert;
}

.mt-contact .input-wrapper {
    position: relative;
}

/* field labels — 12px uppercase, exactly as on /tailormake */
.mt-contact .itinerary-notes-label,
.mt-contact .itinerary-counter-label {
    display: block;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--mt-text-dark);
    font-weight: 600;
    margin-bottom: 10px;
}

.mt-contact .itinerary-input,
.mt-contact .itinerary-textarea,
.mt-contact .child-age-field,
.mt-contact .flag-select-trigger {
    font-family: 'Poppins', sans-serif;
    padding: 18px 20px;
    border: 1px solid var(--mt-border-soft);
    background: var(--mt-bg-mute);
    border-radius: 4px;
    font-size: 15.2px;
    color: var(--mt-text-dark);
    transition: var(--mt-transition);
    outline: none;
    width: 100%;
    line-height: normal;
    height: auto;
    box-shadow: none;
}

.mt-contact .itinerary-input::placeholder,
.mt-contact .itinerary-textarea::placeholder,
.mt-contact .child-age-field::placeholder {
    color: var(--mt-text-light);
    opacity: 1;
}

.mt-contact .itinerary-input:focus,
.mt-contact .itinerary-textarea:focus,
.mt-contact .child-age-field:focus,
.mt-contact .flag-select-trigger:focus {
    background: #fff;
    border-color: var(--mt-primary);
    box-shadow: 0 0 0 4px rgba(65, 171, 221, 0.1);
}

.mt-contact .itinerary-textarea {
    resize: vertical;
    min-height: 130px;
}

/* --- date fields --- */
.mt-contact .itinerary-date-wrap {
    position: relative;
}

.mt-contact .itinerary-date-wrap .itinerary-input {
    padding-right: 48px;
    cursor: pointer;
}

.mt-contact .itinerary-input-icon {
    position: absolute;
    top: 50%;
    right: 18px;
    transform: translateY(-50%);
    color: var(--mt-primary);
    pointer-events: none;
    font-size: 15px;
}

/* --- the two passenger counters --- */
.mt-contact .itinerary-counter-box {
    border: 1px solid var(--mt-border-soft);
    background: var(--mt-bg-mute);
    border-radius: 4px;
    padding: 10px 16px;
    transition: var(--mt-transition);
}

.mt-contact .itinerary-counter-input {
    background: transparent;
    border: 0;
    box-shadow: none;
    text-align: center;
    font-size: 15.2px;
    font-weight: 600;
    color: var(--mt-text-dark);
    width: 100%;
    padding: 8px 0;
    outline: none;
}

/* The +/- controls are inline SVG (they used to be <img> to a green feather
   icon, which CSS cannot recolour), so they take the brand colour through
   currentColor instead of shipping a second copy of each file. */
.mt-contact .itinerary-counter-btn {
    width: 26px;
    height: 26px;
    flex: 0 0 26px;
    cursor: pointer;
    opacity: 0.75;
    transition: var(--mt-transition);
    color: var(--mt-primary);
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.mt-contact .itinerary-counter-btn:hover {
    opacity: 1;
    transform: scale(1.08);
    color: var(--mt-primary-hover);
}

/* --- the child-age inputs the counter reveals --- */
.mt-contact .children-ages-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
}

.mt-contact .children-ages-grid:empty {
    display: none;
}

.mt-contact .child-age-field {
    padding: 14px 16px;
    text-align: center;
}

.mt-contact .error-message {
    display: block;
    color: #dc3545;
    font-size: 12.8px;
    margin-top: 8px;
}

/* --- nationality + dial-code pickers --- */
.mt-contact .flag-select-wrap {
    position: relative;
}

.mt-contact .flag-select-native {
    position: absolute;
    opacity: 0;
    pointer-events: none;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
}

.mt-contact .flag-select-trigger {
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    padding-right: 42px;
    min-height: 58px;
}

.mt-contact .flag-select-trigger .fi {
    flex: 0 0 auto;
    width: 22px;
    height: 16px;
    border-radius: 2px;
}

.mt-contact .flag-select-trigger::after {
    content: '';
    position: absolute;
    top: 50%;
    right: 18px;
    width: 8px;
    height: 8px;
    margin-top: -6px;
    border-right: 2px solid var(--mt-text-light);
    border-bottom: 2px solid var(--mt-text-light);
    transform: rotate(45deg);
    pointer-events: none;
}

.mt-contact .flag-select-list {
    display: none;
    position: absolute;
    z-index: 60;
    top: calc(100% + 6px);
    left: 0;
    min-width: 260px;
    width: max-content;
    max-width: 320px;
    max-height: 280px;
    overflow-y: auto;
    background: #fff;
    border: 1px solid var(--mt-border-soft);
    border-radius: 4px;
    box-shadow: var(--mt-shadow-hover);
    padding: 6px;
}

.mt-contact .flag-select-list.open {
    display: block;
}

.mt-contact .flag-select-option {
    display: flex;
    align-items: center;
    gap: 8px;
    white-space: nowrap;
    flex-wrap: nowrap;
    padding: 10px 12px;
    border-radius: 3px;
    font-size: 14.4px;
    color: var(--mt-text-dark);
    cursor: pointer;
}

.mt-contact .flag-select-option:hover {
    background: var(--mt-bg-mute);
    color: var(--mt-primary);
}

.mt-contact .flag-select-option .fi {
    flex: 0 0 auto;
    width: 22px;
    height: 16px;
    border-radius: 2px;
}

/* --- dial code + phone number as one control --- */
.mt-contact .phone-input-merged {
    display: flex;
    align-items: stretch;
    border: 1px solid var(--mt-border-soft);
    background: var(--mt-bg-mute);
    border-radius: 4px;
    transition: var(--mt-transition);
}

.mt-contact .phone-input-merged:focus-within {
    background: #fff;
    border-color: var(--mt-primary);
    box-shadow: 0 0 0 4px rgba(65, 171, 221, 0.1);
}

.mt-contact .phone-input-merged .flag-select-wrap {
    flex: 0 0 130px;
    border-right: 1px solid var(--mt-border-soft);
}

/* inside the merged control the two halves share one outline, so the
   picker drops its own border, fill and focus ring */
.mt-contact .phone-input-merged .flag-select-trigger,
.mt-contact .phone-input-merged .flag-select-trigger:focus {
    border: 0;
    background: transparent;
    border-radius: 4px 0 0 4px;
    box-shadow: none;
    padding-left: 18px;
    padding-right: 34px;
}

.mt-contact .phone-input-merged .flag-select-trigger::after {
    right: 14px;
}

/* min-width:0 is what stops this from widening the page. A flex item will not
   shrink below its automatic minimum size, and a text input carries an
   intrinsic width of about 234px (the default size=20). Beside the 108px dial
   code that comes to more than a 360px phone can hold, so the row pushed the
   document 30px wider than the screen — which is what makes Android Chrome
   shrink the whole page to fit. */
.mt-contact .phone-number-input,
.mt-contact .phone-number-input:focus {
    flex: 1 1 auto;
    min-width: 0;
    border: 0;
    background: transparent;
    border-radius: 0 4px 4px 0;
    box-shadow: none;
    width: auto;
}

/* --- submit --- */
.mt-contact .itinerary-submit-btn,
.mt-contact .theme-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    padding: 20px 40px;
    border: 0;
    border-radius: 4px;
    background-color: var(--mt-primary);
    color: #fff;
    font-family: 'Poppins', sans-serif;
    font-size: 13px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    cursor: pointer;
    transition: var(--mt-transition);
    box-shadow: 0 10px 20px rgba(65, 171, 221, 0.15);
}

.mt-contact .itinerary-submit-btn:hover {
    background-color: var(--mt-primary-hover);
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 15px 25px rgba(65, 171, 221, 0.25);
}

.mt-contact .itinerary-submit-btn:focus {
    outline: none;
    box-shadow: 0 0 0 4px rgba(65, 171, 221, 0.25);
}

/* the legacy button ships a decorative swipe overlay; it has no place in
   this design and would sit on top of the label */
.mt-contact .itinerary-submit-btn .swip::after {
    display: none;
}

.mt-contact .itinerary-submit-btn .title-1 {
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0.15em;
}












/* --- responsive --- */
@media (max-width: 991px) {
    .mt-contact {
        padding: 70px 0 90px;
    }

    .mt-contact .container {
        padding: 0 24px;
    }

    .mt-contact .itinerary-booking-form {
        padding: 30px 22px;
    }

    .mt-contact .section-header h2 {
        font-size: 32px;
    }

    .mt-contact .section-header p {
        font-size: 16px;
    }

    .mt-contact .children-ages-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }


}

@media (max-width: 575.98px) {
    .mt-contact .section-header h2 {
        font-size: 26px;
    }

    .mt-contact .itinerary-input,
    .mt-contact .itinerary-textarea,
    .mt-contact .flag-select-trigger {
        padding: 15px 16px;
        /* 16px keeps iOS from zooming the viewport on focus */
        font-size: 16px;
    }

    .mt-contact .flag-select-trigger {
        min-height: 52px;
    }

    .mt-contact .phone-input-merged .flag-select-wrap {
        flex: 0 0 108px;
    }

    .mt-contact .children-ages-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .mt-contact .flag-select-list {
        min-width: 220px;
        max-width: calc(100vw - 60px);
    }
}

/* The jQuery UI datepicker is appended to <body>, outside .mt-contact, so
   these two cannot be scoped with the rest. */
.ui-datepicker {
    z-index: 999999 !important;
}

.ui-datepicker-trigger {
    display: none !important;
}

/* --------------------------------------------------------------------------
   CTA BANNER — pyramids variant.

   The design pairs each copy with its own photo: home.html shows
   visa-services.png behind "Visa Services" (the .mt-visa default above), and
   tours.html / tour-details.html / plan-trip.html show pyramids-hero.png
   behind "Exclusive Pyramids Photography". A passport photo behind a
   photography commission was the mismatch this fixes.

   Only the image layer is restated; the gradient, size, position and
   attachment all come from .mt-visa. At (0,2,0) this outranks the base rule
   wherever it sits in the file, so the responsive .mt-visa padding overrides
   further down are unaffected.
   -------------------------------------------------------------------------- */
.mt-visa.is-pyramids {
    background-image:
        linear-gradient(rgba(12, 89, 135, 0.85), rgba(12, 89, 135, 0.85)),
        url('/mastertravelegy/img/pyramids-hero.webp');
}

/* A destination card with no target page renders as a <div>, not an <a>. The
   default cursor is restated because the legacy theme sets pointer on cards. */
.mt-destinations .dest-box.is-static {
    cursor: default;
}

/* ============================================================
   21. LEGACY PAGE COVER — brought onto the design's type and colour
   ============================================================
   .page-breadcrumb-area is the old theme's page cover, still used by
   About Us, Contact, FAQs, Travel Guide, Blog, thank-you and the
   generic Pages template. It shipped with the previous theme's own
   identity — "Plus Jakarta Sans" at weight 700 on #001D3D — which is
   why its heading read as a different site next to the new sections
   below it.

   Only type and colour are restated here; the layout, the background
   image from the CMS and the responsive padding all stay as they are.
   Because the selector is shared, this lands on every one of those
   pages at once, which is the point — they should all look like the
   same site.
   ------------------------------------------------------------ */
.page-breadcrumb-area {
    background-color: var(--mt-secondary);
}

.page-breadcrumb-area .page-heading .page-title,
.page-breadcrumb-area .page-heading h3 {
    font-family: 'Poppins', sans-serif;
    font-size: 56px;
    font-weight: 600;
    line-height: 1.15;
    letter-spacing: -0.02em;
    color: #fff;
}

.page-breadcrumb-area .breadcrumb-list,
.page-breadcrumb-area .breadcrumb-list a,
.page-breadcrumb-area .breadcrumb-list li {
    font-family: 'Poppins', sans-serif;
    font-size: 13px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: rgba(255, 255, 255, 0.7);
}

.page-breadcrumb-area .breadcrumb-list a {
    text-decoration: none;
    transition: var(--mt-transition);
}

.page-breadcrumb-area .breadcrumb-list a:hover {
    color: var(--mt-primary);
}

.page-breadcrumb-area .breadcrumb-list li.active a {
    color: #fff;
}

@media (max-width: 991px) {
    .page-breadcrumb-area .page-heading .page-title,
    .page-breadcrumb-area .page-heading h3 {
        font-size: 38px;
    }
}

@media (max-width: 575.98px) {
    .page-breadcrumb-area .page-heading .page-title,
    .page-breadcrumb-area .page-heading h3 {
        font-size: 30px;
    }

    .page-breadcrumb-area .breadcrumb-list,
    .page-breadcrumb-area .breadcrumb-list a,
    .page-breadcrumb-area .breadcrumb-list li {
        font-size: 11px;
        letter-spacing: 0.1em;
    }
}

/* ============================================================
   22. CMS LONG-FORM COPY — About Us, Privacy Policy, Terms
   ============================================================
   Shared by Pages/aboutus.php and Pages/view.php (which serves
   /privacy-policy, /terms-and-conditions and every other CMS page). The
   body is rich text written in the admin, so this styles the tags it can
   contain rather than a fixed structure. It replaced the previous theme's
   palette: 18px #000000 with gold (#D99F42) links, on bare white — and, on
   Pages/view.php, a bare `body { color:#000000; font-size:20px }` that
   repainted the whole document.

   Values come from the design's own reading styles: Poppins, the
   --mt-text-mute body colour, --mt-text-dark for anything emphasised
   and --mt-primary for links. White ground, because the deep-blue
   "Why Choose Us" band follows it.
   ------------------------------------------------------------ */
.mt-page-copy {
    padding: 100px 0;
    background: var(--mt-bg-body);
    font-family: 'Poppins', sans-serif;
    font-size: 17px;
    line-height: 1.85;
    color: var(--mt-text-mute);
}

/* The legacy theme sets font-family and line-height on bare element
   selectors, and inheritance always loses to a rule that matches, so the
   subtree is pinned back to this section's own values. */
.mt-page-copy * {
    font-family: inherit;
    line-height: inherit;
}

.mt-page-copy .container {
    /* a reading measure, not the full grid width — long lines of body copy
       are what made the old block hard to read */
    max-width: 860px;
    margin: 0 auto;
    padding: 0 40px;
    width: 100%;
}

.mt-page-copy .intro-copy p {
    margin: 0 0 22px;
    font-weight: 300;
}

.mt-page-copy .intro-copy p:last-child {
    margin-bottom: 0;
}

/* The admin writes the opening line as <p><strong>…</strong></p>, which is
   the page's lead-in. It is treated as one: larger, darker, and spaced away
   from the paragraphs under it. */
.mt-page-copy .intro-copy > p:first-child {
    font-size: 28px;
    font-weight: 600;
    line-height: 1.3;
    letter-spacing: -0.02em;
    color: var(--mt-text-dark);
    margin-bottom: 30px;
}

.mt-page-copy .intro-copy > p:first-child strong {
    font-weight: inherit;
    color: inherit;
}

/* Real headings, if the admin ever adds them */
.mt-page-copy .intro-copy h1,
.mt-page-copy .intro-copy h2,
.mt-page-copy .intro-copy h3,
.mt-page-copy .intro-copy h4,
.mt-page-copy .intro-copy h5 {
    color: var(--mt-text-dark);
    font-weight: 600;
    letter-spacing: -0.02em;
    margin: 44px 0 16px;
}

.mt-page-copy .intro-copy h1 { font-size: 40px; }
.mt-page-copy .intro-copy h2 { font-size: 32px; }
.mt-page-copy .intro-copy h3 { font-size: 25px; }
.mt-page-copy .intro-copy h4,
.mt-page-copy .intro-copy h5 { font-size: 19px; }

.mt-page-copy .intro-copy strong,
.mt-page-copy .intro-copy b {
    color: var(--mt-text-dark);
    font-weight: 600;
}

.mt-page-copy .intro-copy a {
    color: var(--mt-primary);
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: var(--mt-transition);
}

.mt-page-copy .intro-copy a:hover {
    color: var(--mt-primary-hover);
}

.mt-page-copy .intro-copy ul,
.mt-page-copy .intro-copy ol {
    margin: 0 0 22px;
    padding-left: 22px;
    font-weight: 300;
}

.mt-page-copy .intro-copy li {
    margin-bottom: 10px;
}

.mt-page-copy .intro-copy img {
    max-width: 100%;
    height: auto;
    border-radius: 6px;
    margin: 12px 0;
}

.mt-page-copy .intro-copy blockquote {
    margin: 30px 0;
    padding: 4px 0 4px 22px;
    border-left: 2px solid var(--mt-primary);
    color: var(--mt-text-dark);
    font-weight: 300;
}

@media (max-width: 991px) {
    .mt-page-copy {
        padding: 64px 0;
        font-size: 16px;
    }

    .mt-page-copy .container {
        padding: 0 24px;
    }

    .mt-page-copy .intro-copy > p:first-child {
        font-size: 23px;
        margin-bottom: 24px;
    }
}

@media (max-width: 575.98px) {
    .mt-page-copy {
        padding: 50px 0;
    }

    .mt-page-copy .intro-copy > p:first-child {
        font-size: 20px;
    }
}

/* ============================================================
   23. TOUR PAGE — the booking enquiry form
   ============================================================
   element/tour-inquiry-form.php sits inside the sticky .widget-card,
   which already had styles for a two-field GET form. It is now a full
   enquiry form (name, email, nationality, dial code + phone, arrival,
   departure, comment), so the controls are restated here.

   Values are the same ones the wizard on /tailormake and the contact
   form use — 18px/20px padding, 1px --mt-border-soft, --mt-bg-mute
   fill, 4px radius, 15.2px text, the --mt-primary focus ring — so all
   three forms on the site are one control.

   Scoped under .mt-detail: bootstrap and the legacy theme own
   .input-group, .form-control and .widget-form globally.
   ------------------------------------------------------------ */

/* Bootstrap's reboot and the legacy .form-control rules both reach these,
   so each control is rolled back before the rules below restate it. */
.mt-detail .widget-form input,
.mt-detail .widget-form select,
.mt-detail .widget-form textarea,
.mt-detail .widget-form button {
    font-family: revert;
    font-size: revert;
    line-height: revert;
}

/* bootstrap's .input-group is a flex row; here it is a stacked field */
/* The whole form has to be readable inside the sticky card without the
   visitor scrolling it, so the rhythm here is tighter than the contact
   page's: 10px between fields instead of 18, 6px under a label instead of
   8, and 12px/14px control padding instead of 15/16. */
.mt-detail .widget-form .input-group {
    display: flex;
    flex-direction: column;
    flex-wrap: nowrap;
    width: 100%;
    margin-bottom: 10px;
    position: relative;
}

.mt-detail .widget-form .input-group > label {
    font-size: 10.5px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--mt-text-dark);
    font-weight: 600;
    margin-bottom: 6px;
}

.mt-detail .widget-form .itinerary-input,
.mt-detail .widget-form .itinerary-textarea,
.mt-detail .widget-form .flag-select-trigger {
    font-family: 'Poppins', sans-serif;
    width: 100%;
    padding: 12px 14px;
    border: 1px solid var(--mt-border-soft);
    background: var(--mt-bg-mute);
    border-radius: 4px;
    font-size: 14.4px;
    line-height: normal;
    height: auto;
    color: var(--mt-text-dark);
    box-shadow: none;
    outline: none;
    transition: var(--mt-transition);
}

.mt-detail .widget-form .itinerary-input::placeholder,
.mt-detail .widget-form .itinerary-textarea::placeholder {
    color: var(--mt-text-light);
    opacity: 1;
}

.mt-detail .widget-form .itinerary-input:focus,
.mt-detail .widget-form .itinerary-textarea:focus,
.mt-detail .widget-form .flag-select-trigger:focus {
    background: #fff;
    border-color: var(--mt-primary);
    box-shadow: 0 0 0 4px rgba(65, 171, 221, 0.1);
}

.mt-detail .widget-form .itinerary-textarea {
    resize: vertical;
    min-height: 62px;
}

/* the two date fields sit side by side while the card is wide enough */
.mt-detail .widget-form .form-grid-2 {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 10px;
}

.mt-detail .widget-form .itinerary-date-wrap .itinerary-input {
    cursor: pointer;
}

/* --- nationality / dial-code pickers --- */
.mt-detail .widget-form .flag-select-wrap {
    position: relative;
}

.mt-detail .widget-form .flag-select-native {
    position: absolute;
    opacity: 0;
    pointer-events: none;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
}

.mt-detail .widget-form .flag-select-trigger {
    display: flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    padding-right: 30px;
    min-height: 44px;
}

.mt-detail .widget-form .flag-select-trigger .fi {
    flex: 0 0 auto;
    width: 21px;
    height: 15px;
    border-radius: 2px;
}

.mt-detail .widget-form .flag-select-trigger::after {
    content: '';
    position: absolute;
    top: 50%;
    right: 15px;
    width: 7px;
    height: 7px;
    margin-top: -5px;
    border-right: 2px solid var(--mt-text-light);
    border-bottom: 2px solid var(--mt-text-light);
    transform: rotate(45deg);
    pointer-events: none;
}

.mt-detail .widget-form .flag-select-list {
    display: none;
    position: absolute;
    z-index: 60;
    top: calc(100% + 6px);
    left: 0;
    min-width: 240px;
    width: max-content;
    max-width: 300px;
    max-height: 260px;
    overflow-y: auto;
    background: #fff;
    border: 1px solid var(--mt-border-soft);
    border-radius: 4px;
    box-shadow: var(--mt-shadow-hover);
    padding: 6px;
}

.mt-detail .widget-form .flag-select-list.open {
    display: block;
}

.mt-detail .widget-form .flag-select-option {
    display: flex;
    align-items: center;
    gap: 8px;
    white-space: nowrap;
    flex-wrap: nowrap;
    padding: 9px 11px;
    border-radius: 3px;
    font-size: 14px;
    color: var(--mt-text-dark);
    cursor: pointer;
}

.mt-detail .widget-form .flag-select-option:hover {
    background: var(--mt-bg-mute);
    color: var(--mt-primary);
}

.mt-detail .widget-form .flag-select-option .fi {
    flex: 0 0 auto;
    width: 21px;
    height: 15px;
    border-radius: 2px;
}

/* --- dial code + number as one control --- */
.mt-detail .widget-form .phone-input-merged {
    display: flex;
    align-items: stretch;
    border: 1px solid var(--mt-border-soft);
    background: var(--mt-bg-mute);
    border-radius: 4px;
    transition: var(--mt-transition);
}

.mt-detail .widget-form .phone-input-merged:focus-within {
    background: #fff;
    border-color: var(--mt-primary);
    box-shadow: 0 0 0 4px rgba(65, 171, 221, 0.1);
}

.mt-detail .widget-form .phone-input-merged .flag-select-wrap {
    flex: 0 0 104px;
    border-right: 1px solid var(--mt-border-soft);
}

/* the two halves share one outline, so the picker drops its own */
.mt-detail .widget-form .phone-input-merged .flag-select-trigger,
.mt-detail .widget-form .phone-input-merged .flag-select-trigger:focus {
    border: 0;
    background: transparent;
    border-radius: 4px 0 0 4px;
    box-shadow: none;
    padding-left: 14px;
    padding-right: 28px;
}

.mt-detail .widget-form .phone-input-merged .flag-select-trigger::after {
    right: 11px;
}

.mt-detail .widget-form .phone-number-input,
.mt-detail .widget-form .phone-number-input:focus {
    flex: 1 1 auto;
    min-width: 0;
    width: auto;
    border: 0;
    background: transparent;
    border-radius: 0 4px 4px 0;
    box-shadow: none;
}

/* --- submit --- */
.mt-detail .widget-form .btn-primary {
    width: 100%;
    margin-top: 2px;
    padding: 15px 30px;
}

/* the invisible reCAPTCHA badge must not hold layout open */
.mt-detail .widget-form .g-recaptcha {
    height: 0;
    overflow: hidden;
}

.mt-detail .widget-form .error-message {
    display: block;
    color: #dc3545;
    font-size: 12.4px;
    margin-top: 6px;
}

@media (max-width: 1024px) {
    /* the card is full width on mobile, but the dates stay paired — they read
       as a range and splitting them makes the form look twice as long */
    .mt-detail .widget-form .form-grid-2 {
        gap: 12px;
    }
}

@media (max-width: 420px) {
    .mt-detail .widget-form .form-grid-2 {
        grid-template-columns: minmax(0, 1fr);
    }

    .mt-detail .widget-form .flag-select-list {
        min-width: 200px;
        max-width: calc(100vw - 72px);
    }
}








/* --- a genuine price note, when the field is not a brand name --- */
.mt-detail .price-note {
    margin: -4px 0 20px;
    font-size: 12.8px;
    line-height: 1.6;
    font-weight: 300;
    color: var(--mt-text-mute);
}

@media (max-width: 575.98px) {

}

/* Name + email stack once the card is narrow enough that two inputs would
   be too tight to type in; the dates stay paired because they read as a
   range (the existing 420px rule handles those). */
@media (max-width: 420px) {
    .mt-detail .widget-form .form-grid-2 {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* ============================================================
   25. LISTING FILTERS — column on desktop, bottom sheet on phones
   ============================================================
   The filters are a 300px sticky column beside the tours. On a phone
   that column stacks ABOVE the grid, so nine checkboxes and a submit
   push the tours roughly a screen and a half down the page — the
   visitor lands on a form instead of on the trips.

   So below 1024px the column collapses to a "Filter & Sort" button and
   the same form opens as a bottom sheet. The markup is one set of
   inputs either way; only where it sits changes.

   Desktop is deliberately untouched: the trigger is display:none, the
   veil is display:none, and .sheet-panel / .sheet-head add no box of
   their own, so the sidebar renders exactly as before.
   ------------------------------------------------------------ */
.mt-tours .filters-trigger {
    display: none;
}

.mt-tours .sheet-veil,
.mt-tours .sheet-head {
    display: none;
}

@media (max-width: 1024px) {
    .mt-tours .filters-trigger {
        display: flex;
        align-items: center;
        gap: 10px;
        width: 100%;
        margin-bottom: 22px;
        padding: 15px 18px;
        background: #fff;
        border: 1px solid #edf2f7;
        border-radius: 10px;
        box-shadow: var(--mt-shadow-elegant);
        font-family: 'Poppins', sans-serif;
        font-size: 12.8px;
        font-weight: 600;
        text-transform: uppercase;
        letter-spacing: 0.1em;
        color: var(--mt-secondary);
        cursor: pointer;
    }

    .mt-tours .filters-trigger svg {
        color: var(--mt-primary);
        flex: 0 0 auto;
    }

    .mt-tours .filters-trigger .ft-label {
        flex: 1;
        text-align: left;
    }

    /* how many filters are already on */
    .mt-tours .filters-trigger .ft-count {
        flex: 0 0 auto;
        min-width: 20px;
        height: 20px;
        padding: 0 6px;
        border-radius: 10px;
        background: var(--mt-primary);
        color: #fff;
        font-size: 11px;
        line-height: 20px;
        text-align: center;
        letter-spacing: 0;
    }

    /* The sidebar stops being a box; the panel inside becomes the sheet.

       display:none while it is closed, not just an empty box: .page-layout is a
       flex column with row-gap:40px, so a zero-height item still collects a gap
       on BOTH sides — 40 + 40 plus the trigger's own 22px margin left a 102px
       band of nothing between the button and the results. Out of the flow, one
       gap remains. */
    .mt-tours .sidebar {
        display: none;
        width: auto;
        position: static;
        background: none;
        border: 0;
        border-radius: 0;
        padding: 0;
        box-shadow: none;
    }

    /* open, it is back in the flow — its veil and panel are position:fixed, so
       it still adds no height of its own */
    .mt-tours .sidebar.is-open {
        display: block;
    }

    /* the flex gap below now provides the separation */
    .mt-tours .filters-trigger {
        margin-bottom: 0;
    }

    .mt-tours .sidebar .sheet-panel {
        display: none;
    }

    .mt-tours .sidebar.is-open .sheet-veil {
        display: block;
        position: fixed;
        inset: 0;
        z-index: 4000;
        background: rgba(14, 16, 23, 0.5);
        -webkit-backdrop-filter: blur(2px);
        backdrop-filter: blur(2px);
    }

    .mt-tours .sidebar.is-open .sheet-panel {
        display: block;
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 4001;
        width: min(520px, 100vw);
        margin: 0 auto;
        max-height: 88vh;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        background: #fff;
        border-radius: 18px 18px 0 0;
        padding: 6px 20px calc(24px + env(safe-area-inset-bottom, 0px));
        box-shadow: 0 -14px 44px rgba(14, 16, 23, 0.28);
        animation: mtSheetUp 0.28s cubic-bezier(0.4, 0, 0.2, 1);
    }

    .mt-tours .sidebar.is-open .sheet-head {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 16px;
        padding: 14px 0 12px;
        font-size: 12.8px;
        font-weight: 600;
        text-transform: uppercase;
        letter-spacing: 0.1em;
        color: var(--mt-text-mute);
        border-bottom: 1px solid #edf2f7;
    }

    .mt-tours .sheet-close {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 34px;
        height: 34px;
        flex: 0 0 34px;
        padding: 0;
        border: 0;
        border-radius: 50%;
        background: var(--mt-bg-mute);
        color: var(--mt-text-dark);
        cursor: pointer;
    }

    /* inside the sheet the section heading is redundant — the sheet is titled */
    .mt-tours .sidebar.is-open h3 {
        display: none;
    }

    .mt-tours .sidebar.is-open .filter-group {
        margin-bottom: 22px;
        padding-top: 18px;
    }

    /* the submit sticks to the bottom of the sheet, always reachable */
    .mt-tours .sidebar.is-open form .btn-primary {
        position: sticky;
        bottom: 0;
        width: 100%;
        margin-top: 6px;
        background-color: var(--mt-primary);
    }
}

@keyframes mtSheetUp {
    from {
        transform: translateY(100%);
    }

    to {
        transform: translateY(0);
    }
}






/* --------------------------------------------------------------------------
   TOUR PAGE, PHONES: WHERE THE ENQUIRY FORM SITS.

   .layout holds two columns — .content-col (overview, itinerary, inclusions,
   gallery) and .booking-col. Stacked on a phone, the card used to be pulled to
   the very top with order:-1, which put a seven-field form in front of the tour
   the visitor came to read.

   It belongs after the inclusions, where someone has finished reading and is
   ready to ask. But the sections live INSIDE .content-col, so an `order` on
   .booking-col alone can only move it before or after the whole column, never
   between two sections.

   `display: contents` on .content-col drops just its box and promotes the
   sections to direct children of .layout, so all five items order together.
   The column carries no background, border or padding of its own, so nothing is
   lost with the box. Order is stated on every item, because a single unset one
   would fall to order:0 and jump ahead of the rest.
   -------------------------------------------------------------------------- */
@media (max-width: 1024px) {
    .mt-detail .layout > .content-col {
        display: contents;
    }

    .mt-detail .layout #overview {
        order: 1;
    }

    .mt-detail .layout #itinerary {
        order: 2;
    }

    .mt-detail .layout #inclusions {
        order: 3;
    }

    .mt-detail .layout > .booking-col {
        order: 4;
    }

    .mt-detail .layout #gallery {
        order: 5;
    }

    /* The negative margin that offsets anchored headings under the sticky nav
       collapses the gap between stacked items once they are all siblings, so the
       card gets its own breathing room instead. */
    .mt-detail .layout > .booking-col {
        margin-top: 8px;
    }
}

/* --------------------------------------------------------------------------
   TOUR COVER ON PHONES.

   Desktop keeps the design exactly: a tall photo with the tag, the title AND
   the meta row over its darkened bottom. Everything here is scoped to <=1024px.

   On a phone the photo keeps its full height — it is the first thing the
   visitor sees and it should fill the screen the way it does now — but the
   stack over it does not all survive. So:

     the tag and the title STAY on the photo, at its bottom edge
     the meta rows move below the photo, onto the brand colour

   One custom property, --mt-cover-h, is the photo's height. padding-top
   reserves exactly that much, so the photo is never squeezed by whatever sits
   under it, and everything in normal flow after it — the meta rows — starts
   below the photo. The scrim and the headline read the same property, so all
   three can never drift apart.

   The photo is still background-size: cover, so it fills its area and is
   cropped rather than letterboxed, as it is on desktop. It also paints behind
   the meta rows, which is why those get an opaque background of their own,
   full-bleed across the container's gutters.

   .cover-headline is taken out of the flow and pinned to the photo's bottom
   edge: top:var(--mt-cover-h) puts its top there, and translateY(-100%) lifts
   it back up by its own height — so it sits on the photo whether the title
   runs to one line or three, with no measurement to keep in step. Being
   absolute it leaves no gap behind it, so the meta rows still begin right at
   the photo's edge.
   -------------------------------------------------------------------------- */
@media (max-width: 1024px) {
    .mt-detail .detail-cover {
        display: block;
        height: auto;
        min-height: 0;
        padding-top: 0;
        padding-bottom: 0;
        background-color: var(--mt-secondary);
    }

    .mt-detail .detail-cover.has-cover {
        /* the photo's height — the one value the three rules below share */
        --mt-cover-h: 56vh;
        position: relative;
        padding-top: var(--mt-cover-h);
        background-size: cover;
        background-position: center center;
        background-repeat: no-repeat;
    }

    /* the scrim only covers the photo, where text still sits on it */
    .mt-detail .detail-cover.has-cover::before {
        bottom: auto;
        height: var(--mt-cover-h);
        background: linear-gradient(180deg, rgba(14, 16, 23, 0.15) 0%, rgba(14, 16, 23, 0) 40%, rgba(14, 16, 23, 0.85) 100%);
    }

    .mt-detail .cover-content {
        padding-bottom: 0;
    }

    /* the tag + title, lifted onto the bottom of the photo */
    .mt-detail .detail-cover.has-cover .cover-headline {
        /* .cover-content is position:relative and begins where the padding-top
           ends — that is, at the photo's bottom edge. So top:0 is already the
           bottom of the photo, and the lift below puts the block on it.
           Measuring from --mt-cover-h instead would offset it a second time and
           drop it into the middle of the meta rows. */
        position: absolute;
        left: 0;
        right: 0;
        top: 0;
        transform: translateY(-100%);
        z-index: 2;
        padding: 0 max(18px, env(safe-area-inset-right, 0px)) 18px
                   max(18px, env(safe-area-inset-left, 0px));
    }

    .mt-detail .detail-cover h1 {
        margin-bottom: 0;
    }

    /* The meta rows read as page content on white, not as part of the photo —
       small grey labels over dark values, the way the rest of the page is set.
       They still live inside .detail-cover (they cannot be moved out with CSS
       alone), so the band needs an opaque background of its own to cover the
       photo behind it, and negative margins to cancel the container's gutters.
       The margins mirror the gutters exactly, so a notch or a rounded corner
       is still respected. */
    .mt-detail .meta-strip {
        margin: 0 calc(-1 * max(18px, env(safe-area-inset-right, 0px)))
                0 calc(-1 * max(18px, env(safe-area-inset-left, 0px)));
        padding: 24px max(18px, env(safe-area-inset-right, 0px)) 24px
                 max(18px, env(safe-area-inset-left, 0px));
        background: #fff;
        gap: 0;
        border-top: 0;
    }

    /* the rows are separated by space, not by rules */
    .mt-detail .meta-strip .meta-item {
        color: var(--mt-text-dark);
        padding: 0;
    }

    .mt-detail .meta-strip .meta-item + .meta-item {
        margin-top: 20px;
    }

    .mt-detail .meta-item h5 {
        color: var(--mt-text-mute);
        margin-bottom: 6px;
    }

    .mt-detail .meta-item p {
        color: var(--mt-text-dark);
        font-weight: 600;
    }

    /* the brand row's divider and right-hand rule belong to the dark strip */
    .mt-detail .meta-item.meta-brand {
        display: block;
        border-bottom: 0;
        border-right: 0;
        padding: 0;
    }
}

/* --------------------------------------------------------------------------
   SECTION NAV ON PHONES: THE CURRENT TAB IS A PILL.

   Desktop keeps the design's underline. On a phone the bar scrolls sideways and
   a 2px underline under one of four small uppercase words is easy to miss, so
   the current section is filled instead — the same treatment the mock-up shows.

   The underline is removed rather than overpainted, otherwise it would sit
   under the pill as a stray line.
   -------------------------------------------------------------------------- */
@media (max-width: 1024px) {
    .mt-detail .sticky-nav a {
        padding: 9px 13px;
        border-radius: 4px;
        border-bottom: 0;
        transition: var(--mt-transition);
    }

    .mt-detail .sticky-nav a.active {
        background: var(--mt-secondary);
        color: #fff;
    }

    /* hover is meaningless on touch, and it repainted the pill grey */
    .mt-detail .sticky-nav a:hover {
        color: var(--mt-text-mute);
        border-bottom-color: transparent;
    }

    .mt-detail .sticky-nav a.active:hover {
        color: #fff;
    }
}

/* --------------------------------------------------------------------------
   TOUR PAGE, BELOW THE PHOTO — the supplied mobile design.

   Values are lifted from the design file's own inline styles, so this is the
   design's type and colour, not an approximation:

     label       11px / 500 / 0.14em / uppercase / #7b8794
     duration
     + tour type 17px / 500 / #17395c
     destinations 16px / 400 / 1.45 / #17395c
     brand        15px / 600 / #c8902f, as text rather than the logo
     band         #ffffff, padding 22px 22px 24px, 18px between rows

   The section nav is the design's four equal pills: flex:1 each so all four
   fit the width instead of scrolling off, 11.5px uppercase, the current one
   filled #1a6faf.

   Scoped to <=1024px. The photo above and the whole desktop layout are
   untouched.
   -------------------------------------------------------------------------- */
.mt-detail .meta-brand .brand-name {
    /* desktop shows the logo; the name is the phone treatment */
    display: none;
}

@media (max-width: 1024px) {
    /* ---- the meta band ---- */
    .mt-detail .meta-strip {
        margin: 0 calc(-1 * max(18px, env(safe-area-inset-right, 0px)))
                0 calc(-1 * max(18px, env(safe-area-inset-left, 0px)));
        padding: 22px max(22px, env(safe-area-inset-right, 0px)) 24px
                 max(22px, env(safe-area-inset-left, 0px));
        background: #ffffff;
        gap: 18px;
        border-top: 0;
    }

    .mt-detail .meta-strip .meta-item {
        display: flex;
        flex-direction: column;
        gap: 2px;
        padding: 0;
        margin: 0;
        color: #17395c;
    }

    .mt-detail .meta-strip .meta-item + .meta-item {
        margin-top: 0;
        border-top: 0;
    }

    .mt-detail .meta-item h5 {
        font-size: 11px;
        font-weight: 500;
        letter-spacing: 0.14em;
        text-transform: uppercase;
        color: #7b8794;
        margin-bottom: 0;
    }

    .mt-detail .meta-item p {
        font-size: 17px;
        font-weight: 500;
        color: #17395c;
        line-height: 1.35;
    }

    /* the destinations line is the one that wraps, so it is set a size down
       and given the design's looser leading */
    .mt-detail .meta-item.meta-destinations p {
        font-size: 16px;
        font-weight: 400;
        line-height: 1.45;
    }

    /* ---- the brand row: the name in gold, not the logo ---- */
    .mt-detail .meta-item.meta-brand {
        display: flex;
        flex-direction: column;
 /* the desktop rule sets align-items:center, which in a column centres the
           label and the name horizontally. Reset, or the row does not line up
           with the three below it. */
        align-items: flex-start;
        text-align: left;
        gap: 2px;
        border: 0;
        padding: 0;
    }

    /* The logo is the brand mark on a phone too. The size is set here rather
       than inherited from the desktop rule (20px), which is drawn to sit in a
       row of white type over the photo — on white, on its own line, it reads
       too small. Selector specificity is matched to the desktop rule
       (0,3,1) so this one actually wins. */
    .mt-detail .meta-item.meta-brand img {
        display: block;
        height: 28px;
        width: auto;
        margin-top: 6px;
        object-fit: contain;
    }

    /* the design set the brand as gold text; the logo is used instead */
    .mt-detail .meta-item.meta-brand .brand-name {
        display: none;
    }

    .mt-detail .meta-brand a {
        text-decoration: none;
    }

    /* ---- the section nav: four equal pills, all visible ---- */
    .mt-detail .sticky-nav {
        padding: 0;
        overflow-x: visible;
        background: rgba(255, 255, 255, 0.92);
        -webkit-backdrop-filter: blur(12px);
        backdrop-filter: blur(12px);
        border-bottom: 1px solid #e3e8ed;
    }

    .mt-detail .sticky-nav-inner {
        display: flex;
        justify-content: space-between;
        gap: 4px;
        padding: 8px 10px;
        min-height: 0;
    }

    .mt-detail .sticky-nav a {
        flex: 1;
        min-width: 0;
        text-align: center;
        padding: 11px 4px;
        font-size: 11.5px;
        font-weight: 500;
        letter-spacing: 0.06em;
        text-transform: uppercase;
        color: #7b8794;
        border-radius: 6px;
        border-bottom: 0;
        white-space: nowrap;
    }

    .mt-detail .sticky-nav a.active,
    .mt-detail .sticky-nav a.active:hover {
        font-weight: 600;
        color: #ffffff;
        background: #1a6faf;
    }

    .mt-detail .sticky-nav a:hover {
        color: #7b8794;
        border-bottom-color: transparent;
    }
}

/* --------------------------------------------------------------------------
   NOTHING MAY MAKE THE PAGE WIDER THAN THE SCREEN.

   A grid item defaults to min-width:auto: the track cannot shrink below the
   item's own minimum content width. So one long word, one wide image, one
   nowrap row is enough to push a grid past the viewport — and once the document
   is wider than the screen, Android Chrome shrinks the whole page to fit while
   iOS Safari lets it scroll sideways instead. That is the difference between
   the same page on the two phones: on Android the cover stops short of the
   right edge, on iPhone it does not.

   Every `1fr` track above is now minmax(0, 1fr) so the track can shrink; these
   rules let the items shrink with it, and let CMS copy break a word that has no
   space in it rather than carry the whole layout out of the viewport.

   This is a guard, not a layout change: on content that already fits, nothing
   here has any visible effect.
   -------------------------------------------------------------------------- */
.mt-detail .check-list > *,
.mt-detail .gallery-grid > *,
.mt-detail .form-grid-2 > *,
.mt-detail .widget-form .form-grid-2 > *,
.mt-tours .deals-grid > *,
.mt-journeys .deals-grid > *,
.mt-destinations .dest-grid > *,
.mt-plan .options-grid > *,
.mt-plan .form-grid-2 > *,
.mt-approach .approach-grid > *,
.mt-contact .children-ages-grid > *,
.mt-footer .footer-grid > * {
    min-width: 0;
}

/* CMS copy can contain a URL or a compound word with no break opportunity */
.mt-detail .content-section,
.mt-detail .accordion-body,
.mt-page-copy .intro-copy,
.mt-detail .meta-item p {
    overflow-wrap: anywhere;
    word-break: break-word;
}

/* an image is never allowed to be wider than the box it sits in */
.mt-detail img,
.mt-tours img,
.mt-journeys img,
.mt-page-copy img {
    max-width: 100%;
}
/* --------------------------------------------------------------------------
   LISTING, PHONES: THE FILTER BUTTON AND THE RESULTS BAR ARE ONE CARD.

   They are two separate white cards in two different parents — the trigger sits
   in .page-layout, the sort bar inside .main-content — so they cannot be
   wrapped in one box. They are styled to read as one instead: the flex gap
   between them goes to zero, the trigger keeps only its top corners, the sort
   bar only its bottom ones, and the shared edge becomes a single hairline
   rather than two borders and two shadows meeting.
   -------------------------------------------------------------------------- */
@media (max-width: 1024px) {
    .mt-tours .page-layout {
        /* the two cards meet; nothing else is a sibling here (the filters aside
           is display:none while closed) */
        row-gap: 0;
    }

    .mt-tours .filters-trigger {
        border-radius: 10px 10px 0 0;
        border-bottom: 0;
        box-shadow: none;
        padding: 16px 18px;
    }

    .mt-tours .sort-bar {
        margin-top: 0;
        border-radius: 0 0 10px 10px;
        /* the hairline the two halves share */
        border-top: 1px solid #edf2f7;
        padding: 16px 18px;
    }
}
